354 lines
11 KiB
HTML
354 lines
11 KiB
HTML
<!DOCTYPE html>
|
|
<html>
|
|
<head>
|
|
<SCRIPT src="../Base.js" type='text/javascript'></SCRIPT>
|
|
<SCRIPT src="../stdFunctions.js" type='text/javascript'></SCRIPT>
|
|
<SCRIPT src="../controls.js" type='text/javascript'></SCRIPT>
|
|
<SCRIPT src="../zdnd_commons.js" type='text/javascript'></SCRIPT>
|
|
<SCRIPT src="../visualweb/EditableGridCtrl.js" type='text/javascript'></SCRIPT>
|
|
<script src="../portalstudio/styleVariables.js" type='text/javascript'></script>
|
|
<script src="../spModalLayer.js"></script>
|
|
<link rel="stylesheet" type="text/css" media="screen" title="default" href="../filewindow.css"></link>
|
|
<script>
|
|
|
|
var currentSPModalLayer = null;
|
|
|
|
var GET_DATA=(function() {
|
|
var res = {};
|
|
var getDataString = new String(window.location);
|
|
var questionMarkLocation = getDataString.search(/\?/);
|
|
if (questionMarkLocation != -1) {
|
|
getDataString = getDataString.substr(questionMarkLocation+1);
|
|
var getDataArray = getDataString.split(/&/g);
|
|
var nameValuePair;
|
|
for (var i = 0; i < getDataArray.length; i++) {
|
|
nameValuePair = getDataArray[i].split(/=/);
|
|
res[unescape(nameValuePair[0])] = unescape(nameValuePair[1]);
|
|
}
|
|
}
|
|
return res;
|
|
})();
|
|
function getInternetExplorerVersion() {
|
|
var rv = -1; // Return value assumes failure.
|
|
if (navigator.appName == 'Microsoft Internet Explorer') {
|
|
var ua = navigator.userAgent;
|
|
var re = new RegExp("MSIE ([0-9]{1,}[\.0-9]{0,})");
|
|
if (re.exec(ua) != null) {
|
|
rv = parseFloat( RegExp.$1 );
|
|
}
|
|
}
|
|
return rv;
|
|
}
|
|
function getOpener() {
|
|
//if (window.parent.spModalLayer )return window.parent.spModalLayer[window.frameElement.id].getOpenerRef();
|
|
return (GetOpener()?GetOpener():(window.caller?window.caller:window.parent));
|
|
}
|
|
|
|
function CloseWindow() {
|
|
if (window.parent.spModalLayer && window.frameElement && window.parent.spModalLayer[window.frameElement.id]) {
|
|
window.parent.spModalLayer[window.frameElement.id].close();
|
|
}
|
|
else if (typeof(GET_DATA.SPModalLayerId) != 'undefined') {
|
|
openerWindow.closeSPModalLayer();
|
|
}
|
|
else {
|
|
window.close();
|
|
}
|
|
}
|
|
|
|
var openerWindow = getOpener();
|
|
|
|
var receiverObj;
|
|
if (GET_DATA.objIdx == "null") GET_DATA.objIdx = null;
|
|
if (GET_DATA.objIdx != null) {
|
|
receiverObj = openerWindow.itemsHTML[GET_DATA.objIdx];
|
|
}
|
|
else {
|
|
receiverObj = openerWindow.formProp;
|
|
}
|
|
|
|
var separator = GET_DATA.separator;
|
|
var callerFunction = GET_DATA.callerFunction;
|
|
var keyFunc = GET_DATA.keyFunc;
|
|
var valFunc = GET_DATA.valFunc;
|
|
var varray = [];
|
|
if (openerWindow.getkeyslist) {
|
|
varray = openerWindow.getkeyslist(GET_DATA.objIdx);
|
|
}
|
|
|
|
if (varray.length > 0) {
|
|
var parameters = {
|
|
id: 'parameters',
|
|
titles: [ 'Key', 'Value'],
|
|
options:[ {type:'combobox', values:varray}, {type:'textbox'}],
|
|
blank: [ '', '']
|
|
};
|
|
}
|
|
else {
|
|
var parameters = {
|
|
id: 'parameters',
|
|
titles: [ 'Key', 'Value'],
|
|
options:[ {type:'textbox'}, {type:'textbox'}],
|
|
blank: [ '', '']
|
|
};
|
|
}
|
|
|
|
Z.Dict = function() {
|
|
var newkey = function() {
|
|
var res = "";
|
|
for (var i = 0; i++ < 9; res += String.fromCharCode(Math.floor(Math.random() * 26 + 97)));
|
|
return res;
|
|
}
|
|
var keys = {};
|
|
this.Add = function(data) {
|
|
var k = newkey();
|
|
while (k in this) {
|
|
k = this.newkey();
|
|
}
|
|
this[k] = data;
|
|
keys[k] = null;
|
|
return k;
|
|
}
|
|
this.Remove = function(key) {
|
|
return delete this[key] && delete keys[key];
|
|
}
|
|
this.Keys = function() {
|
|
return Z.Merge({}, keys);
|
|
}
|
|
}
|
|
|
|
function centerresizeWnd() {
|
|
var maindiv = Ctrl('maindiv');
|
|
var nWidth = maindiv.offsetWidth;
|
|
var nHeight = maindiv.offsetHeight + 120;
|
|
window.resizeTo(nWidth,nHeight);
|
|
//window.moveTo((screen.availWidth-nWidth)/2>0 ? (screen.availWidth-nWidth)/2 : 0, (screen.availHeight-nHeight)/2>0 ? (screen.availHeight-nHeight)/2 : 0);
|
|
}
|
|
|
|
function SelectParameter(id) {
|
|
var height = 400;
|
|
var width = 400;
|
|
var left = 0;//(screen.width)?(screen.width-width)/2:100;
|
|
var top = 0;//(screen.height)?(screen.height-height-(height/4))/2:100;
|
|
|
|
if (IsNetscape() || IsMozilla()) {
|
|
width += 5; //Per Netscape e Mozilla, il width e height sono leggermente diversi
|
|
height += 4;
|
|
}
|
|
//window.open("../portalstudio/expression_builder.jsp?ExpressionID="+URLenc(id)+"&callerFunction=ExpressionBuilderReturn","expression","height="+height+",width="+width+",left="+left+",top="+top+",resizable=yes");
|
|
var url = "../portalstudio/expression_builder.jsp?ExpressionID=" + URLenc(id) + "&callerFunction=ExpressionBuilderReturn";
|
|
if ((IsIE() && getInternetExplorerVersion() <= 8) || (typeof(GET_DATA.SPModalLayerId) == 'undefined')) {
|
|
window.open(url, "expression", "height=" + height + ",width=" + width + ",left=" + left + ",top=" + top + ",resizable=yes");
|
|
}
|
|
else {
|
|
url += "&expression&SPModalLayerId=kvExpBuildSPModalLayer";
|
|
openSPModalLayer(url, top, left, width, height, true, 1, window, false, false);
|
|
}
|
|
}
|
|
|
|
function ExpressionBuilderReturn(id, value) {
|
|
if (id) {
|
|
var el = document.getElementById(id);
|
|
if (el) {
|
|
el.value = value;
|
|
el.focus();
|
|
}
|
|
}
|
|
}
|
|
|
|
function GetFunctionsForExpBuilder() {
|
|
if (openerWindow.GetFunctionsForExpBuilder) { return openerWindow.GetFunctionsForExpBuilder(); }
|
|
}
|
|
|
|
function getFieldsOfTables() {
|
|
if (openerWindow.getFieldsOfTables) { return openerWindow.getFieldsOfTables(); }
|
|
}
|
|
|
|
function getParametersOfQueries() {
|
|
if (openerWindow.getParametersOfQueries) { return openerWindow.getParametersOfQueries(); }
|
|
}
|
|
|
|
function GetVariablesForExpBuilder() {
|
|
if (openerWindow.GetVariablesForExpBuilder) { return openerWindow.GetVariablesForExpBuilder(); }
|
|
}
|
|
|
|
function getQPValues() {
|
|
if (openerWindow.getQPValues) { return openerWindow.getQPValues(); }
|
|
}
|
|
|
|
function getQPKeys() {
|
|
if (openerWindow.getQPKeys) { return openerWindow.getQPKeys(); }
|
|
}
|
|
|
|
function GetExpressionFromId(id) {
|
|
if (id) {
|
|
var el = document.getElementById(id);
|
|
if (el) {
|
|
return el.value;
|
|
}
|
|
}
|
|
return "";
|
|
}
|
|
|
|
Z.ParametersEditableGrid = Z.EditableGrid.extend({
|
|
constructor: function(configuration, data) {
|
|
this.inherit(configuration, data);
|
|
},
|
|
inputizeCell: function(srcElem) {
|
|
var objInput = document.createElement("INPUT");
|
|
var objInputEdit = document.createElement("INPUT");
|
|
var datarow;
|
|
if (srcElem.parentNode.getAttribute('datarow') in this.data.rows) {
|
|
datarow = this.data.rows[srcElem.parentNode.getAttribute('datarow')];
|
|
}
|
|
else {
|
|
datarow = [].concat(this.data.blank);
|
|
srcElem.parentNode.setAttribute('datarow', this.data.rows.Add(datarow));
|
|
}
|
|
var optIdx = srcElem.getAttribute("dataoptions");
|
|
var optRow = srcElem.parentNode.getAttribute('datarow');
|
|
var txtOld = datarow[optIdx];
|
|
srcElem.innerHTML = "";
|
|
|
|
switch (srcElem.getAttribute("TCType")) {
|
|
case 'combobox':
|
|
objInput = document.createElement('SELECT');
|
|
var selIdx = 0;
|
|
var px;
|
|
for (var i = 0, opt, optv, opts = this.data.options[optIdx].values, l = opts.length; i < l; i++ ) {
|
|
opt = opts[i];
|
|
px = ('' + opt).indexOf(":");
|
|
if (px >= 0) {
|
|
optv = opt.substring(0, px);
|
|
opt = opt.substring(px + 1);
|
|
}
|
|
else {
|
|
optv = opt;
|
|
}
|
|
if (optv == txtOld || opt == txtOld) {
|
|
selIdx = objInput.options.length;
|
|
}
|
|
objInput.options[objInput.options.length] = new Option(opt, optv);
|
|
}
|
|
objInput.selectedIndex = selIdx;
|
|
break;
|
|
case 'textbox':
|
|
default:
|
|
objInput.setAttribute ("id", "input_" + optRow + "_" + optIdx);
|
|
objInput.setAttribute ("type", "TEXT");
|
|
objInput.setAttribute ("value", txtOld);
|
|
objInputEdit.setAttribute ("id", "btn_" + optRow + "_" + optIdx);
|
|
objInputEdit.setAttribute ("type", "BUTTON");
|
|
objInputEdit.setAttribute ("class", "bottoni");
|
|
objInputEdit.setAttribute ("value", "E");
|
|
if (window.SelectParameter) {
|
|
LibJavascript.Events.addEvent(objInputEdit, 'click', new Function("","SelectParameter('" + "input_" + optRow + "_" + optIdx + "')"));
|
|
}
|
|
break;
|
|
}
|
|
LibJavascript.Events.addEvent(objInput, 'keydown', this.checkForEnterEsc.closure(this));
|
|
objInput.style.width = "100%";
|
|
objInput.style.boxSizing = 'border-box';
|
|
objInput.style.MozBoxSizing = 'border-box';
|
|
objInput.style.webkitBoxSizing = 'border-box';
|
|
srcElem.appendChild(objInput);
|
|
if (window.SelectParameter && this.data.id == 'parameters' && optIdx == 1) {
|
|
objInput.style.width = "90%";
|
|
objInputEdit.style.width = "7%";
|
|
srcElem.appendChild(objInputEdit);
|
|
}
|
|
}
|
|
});
|
|
</script>
|
|
<title>Keys Values Edit</title>
|
|
</head>
|
|
<body bgcolor="#E4E4E4" topmargin="0" leftmargin="0" marginwidth="0" marginheight="0" scroll="yes" style="border:0px;overflow:auto;margin:0pt" onload='centerresizeWnd()'>
|
|
<div id='maindiv'>
|
|
<table valign='top' class="contenuto" style="width:100%;">
|
|
<tr class="titoli" style="width:100%;display:none">
|
|
<td align="center" class="titoli" style="width:50%;"><b>Keys Values</b></td>
|
|
</tr>
|
|
<tr style="width:100%;">
|
|
<td id="parametersDiv" valign="top">
|
|
</td>
|
|
</tr>
|
|
<tr style="width:100%;">
|
|
<td valign="top">
|
|
<INPUT id="btn_addParameters" class="bottoni" value="+" title="Add" type="button" onclick="javascript:onBtnAdd(parametersCtrl);">
|
|
<INPUT id="btn_deleteParameters" class="bottoni" value="-" title="Remove selection" type="button" onclick="javascript:parametersCtrl.deleteRow();">
|
|
</td>
|
|
</tr>
|
|
</table>
|
|
|
|
<table style="width:100%;">
|
|
<tr><td valign="middle" align="right" nowrap>
|
|
<button onclick="javascript:onOk();" accesskey="o" class="bottoni" style="width:40px;"><u>O</u>k</button>
|
|
<button onclick="javascript:onCancel();" accesskey="c" class="bottoni"><u>C</u>ancel</button>
|
|
</td></tr>
|
|
</table>
|
|
</div>
|
|
<script>
|
|
function onBtnAdd(obj) {
|
|
obj.addRow();
|
|
obj.selectLastRow();
|
|
obj.editSelectedRow();
|
|
}
|
|
|
|
function onBtnMoveUp(obj) {
|
|
if (obj.objRowSelected && obj.objRowSelected.rowIndex > 2) {
|
|
obj.SaveRow(obj.objRowSelected, true);
|
|
obj.MoveUp();
|
|
}
|
|
}
|
|
|
|
function onBtnMoveDown(obj) {
|
|
if (obj.objRowSelected && obj.objRowSelected.rowIndex > 2) {
|
|
obj.SaveRow(obj.objRowSelected, true);
|
|
obj.MoveDown();
|
|
}
|
|
}
|
|
|
|
parameters.rows = (function() {
|
|
var res = new Z.Dict();
|
|
var keys = receiverObj[keyFunc]().split(separator);
|
|
var values = receiverObj[valFunc]().split(separator);
|
|
for (var i = 0, name, value, l = keys.length; i < l; i++) {
|
|
name = Trim(keys[i]);
|
|
value = Trim(values[i]);
|
|
if (!(name == '')) {
|
|
res.Add([name, value]);
|
|
}
|
|
}
|
|
return res;
|
|
})();
|
|
|
|
var configuration = { blnPointToSelect: false };
|
|
var parametersCtrl = new Z.ParametersEditableGrid(configuration, parameters);
|
|
Ctrl('parametersDiv').insertBefore(parametersCtrl.buildTable(), Ctrl('parametersDiv').firstChild);
|
|
parametersCtrl.init();
|
|
|
|
function onOk() {
|
|
//salva eventuali righe
|
|
if (parametersCtrl.objRowSelected) {
|
|
parametersCtrl.saveRow(parametersCtrl.objRowSelected, true);
|
|
}
|
|
|
|
var parms = {keys:[], values:[] };
|
|
var row, rows = parametersCtrl.data.rows;
|
|
for (var k_row in rows.Keys()) {
|
|
row = rows[k_row];
|
|
parms.keys.push(row[0]);
|
|
parms.values.push(row[1]);
|
|
}
|
|
var returnkeys = parms.keys.join(separator);
|
|
var returnvalues = parms.values.join(separator);
|
|
openerWindow[callerFunction](GET_DATA.objIdx, returnkeys, returnvalues);
|
|
CloseWindow();
|
|
}
|
|
function onCancel() {
|
|
//check for changes: to do
|
|
CloseWindow();
|
|
}
|
|
</script>
|
|
</body>
|
|
</html> |