PortaleOrdiniGruppo/PortalStudio/pageleteditor/properties.js
2025-03-24 15:28:26 +01:00

573 lines
21 KiB
JavaScript
Raw Permalink Blame History

/* exported
ps_currTab ps_TabAnimation
updateProperties HideProperties selectColor BuildExpression Properties ListObj
rgbToHex editPortlet NewQuery EditQuery NewDef EditDef EditEventEmitter EditEventReceiver
checkAlpha selectPortlet SelectQuery SelectDef checkVLine IsNumericInput IsObligatory IsColor
getPreviewLayoutStep editLayoutStep delLayoutStep addLayoutStep editDesc addPage
PickParameters
*/
//Scrive la properties
var formProp = new ZTPageletObjects.pageletObj();
var v_line=" ";
var ps_currTab = null;
var ps_TabAnimation = false;
var ps_props;
var newPropObj = null;
var newFormPropObj = null;
var last_index;
if(Empty(localStorage.getItem('zucchetti_pageleteditor_properties'))){
ps_props = {'width':240,'top':150,'left':550,'opened':true,'opacity':1,'expandedToColumn':false,'columnSide':'none','form_closed':false}
localStorage.setItem('zucchetti_pageleteditor_properties', JSON.stringify(ps_props));
}else{
ps_props = JSON.parse(localStorage.getItem('zucchetti_pageleteditor_properties'));
}
function FormProperties(force_render,force_open){
index=null;mainitem=null;
if(!Empty(newPropObj))newPropObj.HideProperties();
var mainobj=formProp
if(Empty(newFormPropObj) || force_render)
newFormPropObj = new propertiesObj({
m_obj : mainobj
, isForm : true
, canExpandToColumn : false
, divcontainer : 'formproperties'
, moveDiv : false
, afterRender : resizeGadgetsPane
});
else
newFormPropObj.updatePropertiesFromPaint(mainobj);
if(force_open && ps_props.form_closed == true) {togglePane();}
}
function Properties(){
if(index!=null){
var mainobj=itemsHTML[index];
if(newPropObj && !Empty(last_index) && last_index==index){
newPropObj.updatePropertiesFromPaint(mainobj);
if(ShowProperties) ShowProperties('properties');
}else{
newPropObj = new propertiesObj({m_obj:mainobj,canExpandToColumn:true,tabindex:100});
newPropObj.re_openColumn()
}
// if(mainobj.objClass.notifications)
// mainobj.objClass["notifications"](mainobj);
// if(mainobj.notifications && mainobj.notifications.length>0) {
// document.getElementById('properties_notifics').addClass('toggler_notifics_on');
// if(document.getElementById('n_nofitcs'))document.getElementById('properties_notifics').removeChild(document.getElementById('n_nofitcs'));
// var n_nofitcs=new Element('div',{'id':'n_nofitcs','class':'toggler_notifics_n','text':mainobj.notifications.length}).inject(document.getElementById('properties_notifics'));
// if(last_index==null || last_index!=index || document.getElementById('NotificsContainer')){
// hideNotifics();
// renderNotifics();
// }
// }
// if(mainobj.notifications && mainobj.notifications.length==0){
// document.getElementById('properties_notifics').removeClass('toggler_notifics_on');
// if(document.getElementById('n_nofitcs'))document.getElementById('properties_notifics').removeChild(document.getElementById('n_nofitcs'));
// }
last_index=index;
}
}
/* function togglePane(){
var morphEl= new Fx.Morph($('formproperties'),{ 'duration':'300', link:'cancel',transition:Fx.Transitions.Bounce.easeOut});
var morphTlb= new Fx.Morph($('toolbar'),{ 'duration':'300', link:'cancel',transition:Fx.Transitions.Bounce.easeOut});
if(ps_props.form_closed == false){
morphEl.start({'left': -$('formproperties').offsetWidth});
morphTlb.start({'padding-left': 0})
//$('formproperties').opened = false;
$('formproperties_openclose').setStyle('background-position','center right') ;
ps_props_hide_left = $('backcanvas').offsetLeft-$('formproperties').offsetWidth;
$('backcanvas').setStyle('left',$('backcanvas').offsetLeft-$('formproperties').offsetWidth);
$('backcanvasBorder').setStyle('left',$('backcanvasBorder').offsetLeft-$('formproperties').offsetWidth);
$('v_line').setStyle('left',$('v_line').offsetLeft-$('formproperties').offsetWidth);
$('h_ruler').setStyle('left',$('h_ruler').offsetLeft-$('formproperties').offsetWidth);
$('v_ruler').setStyle('left',$('v_ruler').offsetLeft-$('formproperties').offsetWidth);
ps_props.form_closed = true;
$('toolbar').setStyle('width',$('canvas').getSize().x)
}else{
morphEl.start({'left': 0}).chain(function(){
morphTlb.start({'padding-left': $('formproperties').offsetWidth});
//$('formproperties').opened = true;
$('formproperties_openclose').setStyle('background-position','center left') ;
ps_props_hide_left = $('backcanvas').offsetLeft+$('formproperties').offsetWidth;
$('backcanvas').setStyle('left',$('backcanvas').offsetLeft+$('formproperties').offsetWidth);
$('backcanvasBorder').setStyle('left',$('backcanvasBorder').offsetLeft+$('formproperties').offsetWidth);
$('v_line').setStyle('left',$('v_line').offsetLeft+$('formproperties').offsetWidth);
$('h_ruler').setStyle('left',$('h_ruler').offsetLeft+$('formproperties').offsetWidth);
$('v_ruler').setStyle('left',$('v_ruler').offsetLeft+$('formproperties').getSize().x);
$('toolbar').setStyle('width',$('canvas').getSize().x - $('formproperties').getSize().x)
});
ps_props.form_closed = false;
}
} */
function updateProperties(input,the_property,propertyType,isForm,value,updateHTML,reconvertFunc,validFunc){
updateHTML = (typeof(updateHTML) == "undefined") ? true : updateHTML;
m_bUpdated=true;
var arrayProp;
switch(the_property){
case "x": case "y": case "h": case "w": case "name":
if(EmptyString(value)) {PSAlert.alert("Obligatory data input");input.focus();input.select();return;}
}
if(reconvertFunc){
eval("value="+reconvertFunc+"(value)")
}
if(validFunc){
eval("var r="+validFunc+"(value)")
if(r!=true){ // eslint-disable-line no-undef
input.focus();
input.select()
return;
}
}
if(isForm)
arrayProp=formProp;
else
arrayProp=itemsHTML[index];
switch(propertyType){
case 'int': //solo valori numerici
if(!Empty(value)){
if(isNaN(value)){
PSAlert.alert('Not a numeric value !');
input.focus();
input.select()
return;
}else{
arrayProp[the_property]=value;
if(updateHTML)
writeHTML();
}
}else{
arrayProp[the_property]=value;
if(updateHTML)
writeHTML();
}
break;
case 'checkbox':
if (typeof(value)=="boolean") value=(value?"true":"false");
arrayProp[the_property]=value;
case 'pages':
arrayProp[the_property]=value;
if(updateHTML)
writeHTML(true);
break;
default:
//case 'str': case 'data': case 'select': case 'xmldata'://valori stringa
if(the_property=='maxlength' && Trim(value)!='') arrayProp.w=Math.floor(value*7.5)
arrayProp[the_property]=value;
if(updateHTML)
writeHTML();
}
}
function HideProperties(){
if( newPropObj && newPropObj.divcontainer)
document.getElementById(newPropObj.divcontainer).hide();
}
function ShowProperties(){
if( newPropObj && newPropObj.divcontainer)
document.getElementById(newPropObj.divcontainer).show();
}
function ListObj(obj) {
if(obj.value!=''){
removeAllHandlers()
for(var i=0;i<itemsHTML.length;i++)
if(itemsHTML[i].id=="item"+obj.value){
var obk=itemsHTML[i];
break;
}
if(obk){
var str=addHandlers(obk.id.substr(4))
obk.shadow='shadow'+obk.id.substr(4)
Ctrl("canvashandlers").innerHTML=Ctrl("canvashandlers").innerHTML+str
selectItem(Ctrl(obk.shadow))
}else{
FormProperties(false,true)
}
}
}
function editDesc(id,isFormProp){
window.open("../portalstudio/insert_desc.html?isFormProp="+isFormProp+"&id="+id, "description", "height=250,width=400,left=350,top=200,status=no,toolbar=no,menubar=no,location=no,resizable=yes");
}
function addPage(){
formProp.npages++;
formProp.page=formProp.npages;
FormProperties(true,false);
index=null;
mainitem=null;
writeHTML(true);
}
function toHex(dec){
var result= (parseInt(dec).toString(16));
if(result.length ==1) result= ("0" +result);
return result.toUpperCase();
}
var rgbPattern = /\brgb\(\s*([\d]{1,3})\s*\,\s*([\d]{1,3})\s*\,\s*([\d]{1,3})\s*\)/i;
// to convert rgb(xx, yy, zz) into #aabbcc (in mozilla/netscape)
function rgbToHex(inp){
for(var rgb; (rgb=inp.match(rgbPattern))!=null; ){
var hex="#";
for(var j=1; j<rgb.length; j++)
if(isNaN(parseInt(rgb[j])));
else
if(j+2<rgb.length && rgb[j+1]=="%")
hex+=toHex(255 * parseInt(rgb[j])/100);
else
hex+=toHex(rgb[j]);
inp = inp.replace(rgb[0], hex);
}
return inp;
}
var TempArray = null;
function GetQueryFields(queryname,retDesc){
var res=[];
var types=[];
var i, row;
if(retDesc==true)
var desc=[];
var AllField = new JSURL("../servlet/SPVQRProxy?action=fields&filename="+queryname, true);
AllField = AllField.Response();
if(Left(AllField,9)=="BO_QUERY:"){
AllField = Substr(AllField,10);
var CSV_SEP="#!$";
row, rows = AllField.split(CSV_SEP);
for (i=0; i<rows.length; i++){
row=rows[i].split("|");
res.push(row[0]);
if(retDesc==true)
desc.push(row[2]);
}
}
else {
var l_oFields = new TrsJavascript();
l_oFields.reset();
l_oFields.SetRow(0);
l_oFields.BuildProperties(AllField);
var rows = GetProperty(l_oFields,'Rows','N');
for (i=0; i<rows; i++){
l_oFields.SetRow(i);
res.push(GetProperty(l_oFields,'alias','C'));
if(retDesc==true)
desc.push(GetProperty(l_oFields,'desc','C'));
types.push(GetProperty(l_oFields,'type','C'));
}
}
return retDesc?[res,desc,types]:[res,types];
}
function BuildExpression(PortletItemIndex,the_property){
TempArray = [];
var PortletItemDataObj = itemsHTML[PortletItemIndex].dataobj;
var PortletItemDataObjQuery = null;
var PortletItemDataObjAlias = null;//SQLTotalizer
var PortletItemDataObjGB = null;//SQLTotalizer
var i=0;
while (i<itemsHTML.length && PortletItemDataObjQuery == null){
if (itemsHTML[i].name == PortletItemDataObj) {
PortletItemDataObjQuery = itemsHTML[i].query;
PortletItemDataObjAlias = itemsHTML[i]["alias"];
PortletItemDataObjGB = itemsHTML[i]["groupby_fields"];
}
i++;
}
if (PortletItemDataObjQuery != null){
TempArray=GetQueryFields(PortletItemDataObjQuery,the_property!='field');
if(the_property=='field')
window.open("select_fields.html?for=" + PortletItemIndex, "SelectField", "height=196,width=350,left=350,top=200,status=no,toolbar=no,menubar=no,location=no");
//else if(itemsHTML[PortletItemIndex].columnformat.indexOf(";")==-1)
// else
// window.open("expression_builder.html?for="+PortletItemIndex+"&prop="+the_property, "exp_builder", "height=560,width=670,left=300,top=200,status=no,toolbar=no,menubar=no,location=no,resizable=no");
}else if(PortletItemDataObjAlias!=null){
var SQLTotalizer_flds;
if(PortletItemDataObjGB!=null && Trim(PortletItemDataObjGB)!='')
SQLTotalizer_flds=PortletItemDataObjGB+','+PortletItemDataObjAlias;
else
SQLTotalizer_flds =PortletItemDataObjAlias;
if(the_property=='field'){
TempArray=[SQLTotalizer_flds.split(','),[]];
window.open("select_fields.html?for=" + PortletItemIndex, "SelectField", "height=196,width=350,left=350,top=200,status=no,toolbar=no,menubar=no,location=no");
//else if(itemsHTML[PortletItemIndex].columnformat.indexOf(";")==-1)
}else{
// TempArray=[SQLTotalizer_flds.split(','),SQLTotalizer_flds.split(','),[]];
// window.open("expression_builder.html?for="+PortletItemIndex+"&prop="+the_property, "exp_builder", "height=560,width=670,left=300,top=200,status=no,toolbar=no,menubar=no,location=no,resizable=no");
}
}else{
PSAlert.alert("Select a data object");
}
}
function editPortlet(ref){
var url=document.getElementById(ref).value;
if(url&&url.indexOf("_portlet.jsp")>-1){
url=Strtran(url,"_portlet.jsp","");
if(url.indexOf("?")>-1){
url = url.substring(0,url.indexOf("?"));
}
if(parent.newCurrentObj!=null)
window.parent.newCurrentObj(url,"portlet",{});
else
window.open("editor.jsp?id="+url, "portleteditor", "resizable=yes,status=no,toolbar=no,menubar=no,location=no");
}
}
function selectPortlet(retTo) {
window.layerOpenForeground('insert.jsp?for=' + retTo, 'SelectPortlet', '', 500, 600, true, 1);
// window.open("insert.jsp?for="+retTo, "SelectPortlet", "width=350,height=358,top=300,left=300,scroll=no,status=no,toolbar=no,resizable=yes");
}
function SelectQuery(PortletItemIndex){
//TempArray = new JSURL("../servlet/SPVQRProxy?action=vqr");
//TempArray = TempArray.Response();
TempArray = new JSURL("../servlet/SPVQRProxy?action=vqr").Response().replace(/\.vqr/gi, '');
//if(At("ACCESS DENIED",TempArray)>0){
if(TempArray.match("ACCESS DENIED")){
window.open("../servlet/SPVQRProxy?action=vqr", "SelectQuery", "height=100,width=350,left=350,top=200,status=no,toolbar=no,menubar=no,location=no");
}
else {
//TempArray = Strtran(TempArray, ".vqr", "")
//TempArray = Strtran(TempArray, ".VQR", "")
//TempArray = TempArray.split(',')
eval('TempArray = '+TempArray);
window.open("select_fields.html?rtrnobj=query&for=" + PortletItemIndex, "SelectQuery", "height=347,width=350,left=350,top=200,status=no,toolbar=no,menubar=no,location=no,resizable=yes");
}
}
function EditQuery(index) {
if(LRTrim(itemsHTML[index].query)=="")
PSAlert.alert("No query selected.");
else if(parent.newCurrentObj!=null)
parent.newCurrentObj(itemsHTML[index].query,"visualquery");
else
window.open("../visualquery/index.jsp?filename="+itemsHTML[index].query,"visualquery","resizable=yes,status=no,toolbar=no,menubar=no,location=no");
}
function NewQuery() {
if(parent.newCurrentObj!=null)
parent.newCurrentObj('New','visualquery');
else
window.open("../visualquery/index.jsp","visualquery","resizable=yes,status=no,toolbar=no,menubar=no,location=no");
}
function SelectDef(PortletItemIndex){
var TempArray2 = new JSURL("../servlet/SPChartServlet");
TempArray2 = TempArray2.Response();
TempArray2 = TempArray2.split(',');
TempArray = new Array();
for(var i=0;i<TempArray2.length;i++)
if (TempArray2[i].indexOf("__temp") < 0) TempArray.push(TempArray2[i])
window.open("select_fields.html?rtrnobj=def&for="+PortletItemIndex, "SelectField", "height=250,width=350,left=350,top=200,status=no,toolbar=no,menubar=no,location=no,resizable=yes");
}
function NewDef(/*index*/) {
if(parent.newCurrentObj!=null)
parent.newCurrentObj('New','chart',{});
}
function EditDef(index) {
if(LRTrim(itemsHTML[index].def)=="")
PSAlert.alert("No chart selected.");
else if(parent.newCurrentObj!=null)
parent.newCurrentObj(itemsHTML[index].def,"chart");
else
window.open("../chart/index.jsp?onpopup=true&filename="+itemsHTML[index].def,"Chartdef","height=600,width=780,resizable=yes,status=no,toolbar=no,menubar=no,location=no");
}
function EditEventEmitter(index) {
window.open("../visualweb/eventemitter_edit.html?objIdx="+index+"", "eventemitter_editor","height=450,width=600,resizable=yes,status=yes,toolbar=no,menubar=no,location=no");
}
function EditEventReceiver(index) {
window.open("../visualweb/eventreceiver_edit.html?objIdx="+index+"", "eventreceiver_editor","height=450,width=600,resizable=yes,status=yes,toolbar=no,menubar=no,location=no");
}
function checkAlpha(id){
var ctrl=Ctrl(id)
var ww;if(v_line!=" ") ww=parseInt(v_line);else ww=formProp.w;
try{
if(ctrl.offsetLeft<parseInt(ww)+80 && ctrl.offsetTop<parseInt(formProp.h)+60){
ctrl.style.MozOpacity=0.4;
//ctrl.style.filter="alpha(opacity=40)";
}else{
ctrl.style.MozOpacity=1;
//ctrl.style.filter="alpha(opacity=100)";
}
}catch(e){}
}
//Alcune Funzioni di controllo
function checkVLine(v){
if(!Empty(v) && formProp.w.indexOf('%')==-1)
PSAlert.alert('Width must be in % !');
return true;
}
function IsNumericInput(v){
if(isNaN(v)){
PSAlert.alert('Not a numeric value!')
return false;
}else
return true;
}
function IsObligatory(v){
if(Empty(v)){
PSAlert.alert('Obligatory input value!')
return false;
}else
return true;
}
function IsColor(v){
return true;
if(Empty(v)) return true;
var Hex=/^(#[A-Fa-f0-9]{6})$/;
if(!Hex.test(v)){
PSAlert.alert('Invalid Hex color');
return false;
}else
return true;
}
function getPreviewLayoutStep(){
// prendo il successivo
if( formProp.layout_step != '' ){
var Steps=formProp.steps.split(',');
var i = Steps.indexOf(formProp.layout_step);
if( i+1 < Steps.length)
return Steps[i+1]-1;
else
return null;
}
}
function addLayoutStep(obj){
if(document.getElementById(obj.refId+'_add')) return;
var propInput_add = new Element('input',{'id':obj.refId+'_add','name':obj.refId+'_add','class':'properties_input'});
propInput_add.setStyles(Object.append(Object.subset($(obj.refId).getCoordinates(),['left','width']),{'position':'absolute'}));
// propInput_add.setStyles({'position':'absolute','width':'70%','left':'13px'});
propInput_add.inject(document.querySelector("#"+obj.refId).parentNode);
propInput_add.addEvents({
'focus': function(){SetOnEditProp(true);},
'blur':function(){
if(Empty(this.value)) {
propInput_add.destroy();
SetOnEditProp(false);
return;
}
/* Se <20> il primo step inserisco i segmento 0-layout laout-default */
if( Empty(formProp.steps) ){ //aggiungo lo 0
formProp.steps="0,"+this.value;
updateLayoutSteps("0",this.value);
} else {
formProp.steps = formProp.steps + ',' + this.value;
//ordinamento
formProp.steps = formProp.steps.split(",").sort(function(a, b){ return parseInt(a) > parseInt(b) ? 1 : -1; }).join(",");
updateLayoutSteps(formProp.layout_step,this.value);
}
formProp.layout_step=this.value;
SetOnEditProp(false);
FormProperties(true);
writeHTML(true);
propInput_add.destroy();
},
'keydown':function(event){
if (event.key == 'enter') this.blur();
if (event.key == 'esc') {
propInput_add.destroy();
SetOnEditProp(false);
}
}
});
propInput_add.focus();
}
function delLayoutStep(/*obj*/){
if(Empty(formProp.layout_step)) return;
var Steps=formProp.steps.split(',');
var ind = LibJavascript.Array.indexOf(Steps,formProp.layout_step);
LibJavascript.Array.remove(Steps,ind);
formProp.steps=Steps.join(',');
if(ind>0)
formProp.layout_step=Steps[ind-1];
else if(Steps.length>0)
formProp.layout_step=Steps[0];
else
formProp.layout_step='';
updateLayoutSteps(-1,formProp.layout_step);
FormProperties(true);
writeHTML(true);
}
function editLayoutStep(obj){
if(document.getElementById(obj.refId+'_add')) return;
var propInput_add = new Element('input',{'id':obj.refId+'_add','name':obj.refId+'_add','class':'properties_input'});
propInput_add.setStyles({'position':'absolute','top':'0','width':'90%','height':'90%','left':'0'});
propInput_add.inject(document.querySelector("#"+obj.refId).parentNode);
propInput_add.value=formProp.layout_step;
var Steps=formProp.steps.split(',');
var ind = LibJavascript.Array.indexOf(Steps,formProp.layout_step);
propInput_add.addEvents({
'focus': function(){SetOnEditProp(true);},
'blur':function(){
if(Empty(this.value)) return;
Steps[ind]=this.value;
formProp.steps=Steps.join(',');
updateLayoutSteps('',formProp.layout_step);
formProp.layout_step=this.value;
SetOnEditProp(false);
FormProperties(true);
writeHTML(true);
propInput_add.destroy();
},
'keydown':function(event){
if (event.key == 'enter') this.blur();
}
});
propInput_add.focus();
}
function updateLayoutSteps(oldStep,newStep){
var i;
if(Empty(newStep) && Empty(oldStep)) {
for(i=0;i<itemsHTML.length;i++){
if(itemsHTML[i].layout_steps_values)
itemsHTML[i].layout_steps_values={};//svuoto tutti gli step eventualmente rimasti
}
return;
}
if(typeof(oldStep) == 'undefined' || EmptyString(oldStep))
oldStep=newStep;//nel caso di primo step
for(i=0;i<itemsHTML.length;i++){
var ctrl=itemsHTML[i];
//salvo le prop nell oggetto multiplo
if(ctrl.layout_steps_values){
if(oldStep!=-1){
if(!ctrl.layout_steps_values[oldStep])
ctrl.layout_steps_values[oldStep]={};
setStepProp(ctrl, oldStep);
}
//Cancello gli step in disuso
var formSteps=formProp.steps.split(',');
var ctrlSteps=Object.keys(ctrl.layout_steps_values);
for(var ii=0;ii<ctrlSteps.length;ii++){
if(LibJavascript.Array.indexOf(formSteps,ctrlSteps[ii])==-1)
delete ctrl.layout_steps_values[ctrlSteps[ii]];
}
if(typeof(newStep) != 'undefined' && ctrl.layout_steps_values[newStep]){
//recupero le prop dall'oggetto multiplo
getStepProp(ctrl, newStep);
}
}
}
writeHTML();
}
function PickParameters(idx,the_property,idProp) {
window.layerOpenForeground('../portalstudio/parameter_edit.html?idx=' + idProp + '&filename=' + itemsHTML[index].name, 'parameters', '', 600, 300, true, 1);
}
function setStepProp(ctrl, step){
for( var i=0; i < ctrl.steppable_prop.length; i++){
ctrl.layout_steps_values[step][ctrl.steppable_prop[i]] = ctrl[ctrl.steppable_prop[i]];
}
}
function getStepProp(ctrl, step){
for( var i=0; i < ctrl.steppable_prop.length; i++){
ctrl[ctrl.steppable_prop[i]] = ctrl.layout_steps_values[step][ctrl.steppable_prop[i]];
}
}