PortaleOrdiniGruppo/PortalStudio/portalstudio/keysvalues_edit.html
2025-03-24 15:28:26 +01:00

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>&nbsp;&nbsp;
<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>