/* exported currentTableIndex showAll vdmObj curtbl openQueryFile openUnionQuery OpenCorrespondingQry callResizeFunction inputs_setOnFocus SortTableList SortFieldList GetFunctionsForExpBuilder getFieldsOfTables GetFunctionsForExpBuilder GetVariablesForExpBuilder getParametersOfQueries EditQuery loadValue DoOperation AddListQuery AddTempTable SelectConfigurationFileName AddBOTable AddBO DoLoad RemoteServer_change RefreshRemoteParameters Help FocusAliasTable SetTableValues DeleteTable AddBlankField AddBlankCalculatedField changeCustom SetFieldCombo AddBlankJoin AddBlankFilter FilterExampleAction AddBlankParameter SetNameParamValue FocusNameParam DeleteParam SetParamCombo ExpressionBuilderReturn GetExpressionFromId getOfflineModule closePreview Find setFading compareQuery AddStoredProcedure HelpQuery setJDEF getJDEF */ // This array holds all table data | // index field info | // 0 table name | // 1 table desc | // 2 array of all fields | // |~> | // 0 field name | // 1 field description | // 2 field type | // 3 field len | // 4 field dec | // 5 index (0 se non ? indice) | // 6 privacy | // 7 identifier | // 3 array of all relation | // 0 Description | // 1 Linked Field | // 2 Linked Table | // 3 Linked Table Field | // 4 Join Type | // 5 Relation Type | // 4 table physical name | var allTables=new Array(); var currentTableIndex=-1; var currentFieldId=''; var currentParmId=''; var timeout; var vqr_regexp = new RegExp("(.+)\\.VQR(\\?(.*))?",'i') var vqr_regexp_without_vqr = new RegExp("([^?]+)(\\?(.*))?",'i') // This array holds tables selected for query | // index field info | // 0 table index in allTables | // 1 table name | // 2 table desc | // 3 table alias | // 4 table internal id | // 5 temp table option | //var tables=new Array(); // This array takes orderby field indexes | // **** GENERATED WHILE DRAWING ONLY **** | // index field info | // 0 index in selectedFields | // 1 order to sort (asc/desc) | //var orderby=new Array(); // This array takes orderby field indexes | // **** GENERATED WHILE DRAWING ONLY **** | // index field info | // 0 index in selectedfields | //var groupby=new Array(); // This array holds selected fields as: | // 0 table index in tables (old)| // 1 field name | // 2 field description | // 3 field type | // 4 field len | // 5 field dec | // 6 field alias | // 7 orderby position | // 8 orderby order(0=asc,1=desc)| // 9 groupby position | //var selectedFields=new Array(); // Array to hold join variables | // 0 Description | // 1 Expression | // 2 Type | // 3 Table 1 | // 4 Table 2 | // 5 Table Idx | // 6 Relation Idx | //var join=new Array(); // Array to hold filter variables | // 0 Field name | // 1 Not | // 2 Operation | // 3 Const | // 4 Logic operation | // 5 Having | //var filter=new Array(); // Array to hold parameter variables | // 0 Field name | // 1 Description | // 2 Type | // 3 Length | // 4 Decimal length | // 5 Remove on empty | // 6 Default on Empty | // 7 Keep spaces //var parameter=new Array(); var iid=-1; //Starts 0 for first table and increases //var currentTable=-1; //L'indice della tabelle selezionata nella sezione TABLES //var currentField=-1; //L'indice del campo selezionato nella sezione FIELDS //var currentJoin=-1; //L'indice della relazione selezionata nella sezione JOIN //var currentFilter=-1; //L'indice del filtro selezionato nella sezione FILTERS //var currentParam=-1; //L'indice del parametro selezionato nella sezione PARAMETERS var m_bUpdated=false; //Lo stato della query: modificato o meno var m_cFilename=null; var m_cQueryToCompare=null; var m_nFileVersion=null; var m_nFrontendPort=null; var m_bOfflineMode=false; var addingRelations=false; var closeAfterSave=false; var dictionaryopen=true; var previewOpen=false; //var allVqrFiles = ""; var tempFilename=""; //Il nome del file selezionato var tempRemote_server=""; //Il nome del server da cui leggere la query da importare var tempRemote_user=""; //Il nome dell'utente con cui loggarsi sul server remoto var tempRemote_password=""; //La password per loggarsi sul server remoto var tempRemote_company=""; //la company da usare sul server remoto var tempRemote_instance=""; //L'istanza su cui loggarsi sul server remotot var tempRemote_mode=""; //Il modo di serializzazione della query var fileDialogOperation=""; //L'oprazione da eseguire dopo la selezione di un file var sqlOperation, showAll, parametersValue={}, vdmObj; //variabili per la funzione di ricerca var lastFoundTableIdx=-1,lastFoundFieldIdx=-1; var tableDesc="",tableName="",fieldDesc="",fieldName=""; var CSV_SEP="#!$"; var exampleInput; var sort_all; var TabPanel; var TabPanelGroupPivot; var o_dictTables, o_dictFields, o_dictRelations; var fieldsOf="",lastTableAlias=""; var changedCustom=false; var sitepainterSqlFunctions=[ ["30DAYSBEFORE","(varname)","Restituisce la data di 30 giorni prima rispetto a oggi o, se specificato, della data contenuta della variabile globale con nome varname."], ["30DAYSAFTER","(varname)","Restituisce la data di 30 giorni dopo rispetto a oggi o, se specificato, della data contenuta della variabile globale con nome varname."], ["60DAYSBEFORE","(varname)","Restituisce la data di 60 giorni prima rispetto a oggi o, se specificato, della data contenuta della variabile globale con nome varname."], ["60DAYSAFTER","(varname)","Restituisce la data di 60 giorni dopo rispetto a oggi o, se specificato, della data contenuta della variabile globale con nome varname."], ["90DAYSBEFORE","(varname)","Restituisce la data di 90 giorni prima rispetto a oggi o, se specificato, della data contenuta della variabile globale con nome varname."], ["90DAYSAFTER","(varname)","Restituisce la data di 90 giorni dopo rispetto a oggi o, se specificato, della data contenuta della variabile globale con nome varname."], ["AT","(what,string)","Restituisce la posizione della stringa what nella stringa string."], ["CASE","(exp, when, then, ..., else)","Corrisponde al costrutto:
CASE
 WHEN exp=when THEN then
 ...
 ELSE else"], ["CASE2","(exp, then, exp, then, ..., else)","Corrisponde al costrutto:
CASE
 WHEN (exp) THEN then
 WHEN (exp) THEN then
 ...
 ELSE else"], ["CASTTOCHAR","(exp, length)","Effettua il cast a tipo CHAR del valore exp. Se non specificato la lunghezza di default \xe8 20.
Nel caso in cui la lunghezza sia minore di quella effettiva il database potrebbe generare un errore di conversione."], ["CASTTOVARCHAR","(exp, length)","Effettua il cast a tipo VARCHAR del valore exp. Se non specificato la lunghezza di default \xe8 20.
Nel caso in cui la lunghezza sia minore di quella effettiva il database potrebbe generare un errore di conversione."], ["CEIL","(numeric)","Restituisce il pi\xf9 piccolo intero maggiore o uguale del numero indicato."], ["CHR","(numeric)","Ritorna il carattere corrispondente al valore specificato secondo la codifica ASCII."], ["COMPANYCODE","()","Restituisce il codice dell'azienda (carattere di 10)."], ["COMMUNICATIONGROUPS","()","Restituisce una stringa con l'elenco dei codici dei gruppi di comunicazione, separato da virgola, a cui appartiene l'utente loggato."], ["CONCAT","","Concatena due stringhe o campi che siano comunque di tipo carattere. La funzione deve essere scritta nella seguente forma:
exp1[CONCAT()]exp2"], ["CURRENTDATE","()","Restituisce la data corrente."], ["CURRENTDATETIME","()","Restituisce la data e ora corrente."], ["DATE","('YYYY-MM-DD')","Converte il parametro in una costante data; il parametro deve essere una stringa racchiusa tra apici singoli della seguente forma:
cExp = 'YYYY-MM-DD' o 'DD-MM-YYYY'.
I segni (-) possono eventualmente sostituiti dal segno (/).
Nel caso in cui il parametro sia una espressione calcolata il risultato deve essere nella forma 'YYYY-MM-DD'."], ["DATEADD","(datepart,numeric,date)","Restituisce la somma della data specificata in date con l'intervallo specificato in numeric. La parte che si intende sommare deve essere specificata con il parametro datepart.
Il parametro datepart riconosce i seguenti parametri: second, minute, hour, day, week, month, year."], ["DATETIME","('YYYY-MM-DD hh:mm:ss')","Converte il parametro in una costante timestamp; il parametro deve essere una stringa racchiusa tra apici singoli della seguente forma:
cExp = 'YYYY-MM-DD hh:mm:ss' o 'DD-MM-YYYY hh:mm:ss'.
I segni (-) possono eventualmente sostituiti dal segno (/).
Nel caso in cui il parametro sia una espressione calcolata il risultato deve essere nella forma 'YYYY-MM-DD hh:mm:ss'."], ["DAY","(date)","Restituisce il valore numerico del giorno espresso in date."], ["DAYOFWEEK","(date,weekdaystart)","Restituisce il valore numerico del giorno della settimana (1=Luned\xec,...7=Domenica) espresso in date.Se si vuole far partire la settimana da un giorno diverso si imposta il valore di weekdaystart con 2=Martedi',3=Mercoledi',..."], ["DIFFDAY","(date,date)","Restituisce il numero di giorni di differenza tra le 2 date passate come parametri."], ["DTOC","(date)","Trasforma un campo Date date in una stringa con formato DD-MM-YYYY"], ["FIRSTDAYCURRENTYEAR","()","Restituisce la data del primo giorno dell'anno della data corrente."], ["FIRSTDAYNEXTYEAR","()","Restituisce la data del primo giorno dell'anno successivo rispetto alla data corrente."], ["FIRSTDAYPREVYEAR","()","Restituisce la data del primo giorno dell'anno precedente rispetto alla data corrente."], ["FIRSTDAYCURRENTMONTH","()","Restituisce la data del primo giorno del mese della data corrente."], ["FIRSTDAYNEXTMONTH","()","Restituisce la data del primo giorno del mese successivo alla data corrente."], ["FIRSTDAYPREVMONTH","()","Restituisce la data del primo giorno del mese precedente alla data corrente."], ["FIRSTDAYYEAROF","(varname)","Restituisce la data del primo giorno dell'anno della data contenuta nella globale con nome varname o nel parametro di query ?varname."], ["FIRSTDAYNEXTYEAROF","(varname)","Restituisce la data del primo giorno dell'anno successivo rispetto alla data contenuta nella globale con nome varname o nel parametro di query ?varname."], ["FIRSTDAYPREVYEAROF","(varname)","Restituisce la data del primo giorno dell'anno precedente rispetto alla data contenuta nella globale con nome varname o nel parametro di query ?varname."], ["FIRSTDAYMONTHOF","(varname)","Restituisce la data del primo giorno del mese della data contenuta nella globale con nome varname o nel parametro di query ?varname."], ["FIRSTDAYNEXTMONTHOF","(varname)","Restituisce la data del primo giorno del mese successivo alla data contenuta nella globale con nome varname o nel parametro di query ?varname."], ["FIRSTDAYPREVMONTHOF","(varname)","Restituisce la data del primo giorno del mese precedente alla data contenuta nella globale con nome varname o nel parametro di query ?varname."], ["FLOOR","(numeric)","Restituisce il pi\xf9 grande intero minore o uguale del numero indicato."], ["FUEXTCATEGORY","(urlmodel,webpath,language,pagealias,categoryid,categoryalias,pathalias,parameters)","Crea un link ad una categoria nel modello di navigazione indicato in urlmodel."], ["FUEXTCONTENT","(urlmodel,webpath,language,pagealias,categoryid,categoryalias,contentid,contentalias,pathalias,parameters)","Crea un link ad un contenuto o articolo nel modello di navigazione indicato in urlmodel."], ["FUEXTPAGE","(urlmodel,webpath,language,pagealias,pathalias,parameters)","Crea un link ad una pagina nel modello di navigazione indicato in urlmodel."], ["GLOBALMACRO","(varname)","Effettua la macro sostituzione del valore della variabile globale varname."], ["GLOBALVAR","(varname)","Restituisce il valore della variabile globale varname."], ["IIF","(exp, then, exp, then, ..., else)","Corrisponde al costrutto:
CASE
 WHEN (exp) THEN then
 WHEN (exp) THEN then
 ...
 ELSE else"], ["J","(json_field,attribute)","Ritorna il valore dell'attributo attribute letto dal campo json_field."], ["JSON","(key,value,key,value..)","Restituisce un oggetto JSON composto dalle coppie key : value"], ["LEFT","(char,numeric)","Estrae da char un numero numeric di caratteri a partire dall'inizio della stringa."], ["LEN","(any)","Ritorna la lunghezza di any."], ["LTRIM","(char)","Elimina gli spazi iniziali da char."], ["LOWER","(str)","Rende la stringa str minuscola."], ["MACRO","(any)","Effettua la macro sostituzione del parametro any nel punto dove viene inserita."], ["MACROROUTINE","(routineName,parameters)","Ritorna il risultato della routine routineName.
La routine deve essere di tipo funzione e deve ritornare una stringa."], ["UNSAFEMACRO","(any)","Effettua la macro sostituzione del parametro any nel punto dove viene inserita.
Utilizzando questo metodo non vengono effettuati controlli di sicurezza, se utilizzato ci si apre ad eventuali vulnerabilit\xe0 per possibili attacchi all'applicativo."], ["MONTH","(date)","Restituisce il valore numerico del mese espresso in date."], ["NOTEMPTYSTR","(char)","Verifica se char \xe8 una stringa vuota."], ["NOTEMPTYNUM","(numeric)","Verifica se numeric \xe8 nullo."], ["NOTEMPTYDATE","(date)","Verifica se date \xe8 una data vuota."], ["NVL","(any,any)","Restituisce il primo argomento non NULL (da sinistra a destra); ammette solo due argomenti."], ["PARAM2IN","(?param)","Effettua la macro sostituzione del parametro param controllando che il valore sia valido per una lista di valori per l'operatore IN.
param pu\xf2 assumere due tipologie di valori:"], ["PARAM2TBL","(?param, admittedList ... )","Effettua la macro sostituzione del parametro param controllando che il valore sia valido per un nome di tabella. E' possibile aggiungere una lista (separata da virgola) di elementi ammissibili per il valore passato, e' possibile inserire come elemento ammesso anche una espressione regolare che deve essere inserita tra slash (es. /PREFISSOTABELLA.*/"], ["RANDOM","()","Restituisce un numero casuale."], ["REPLACE","(string,string,string,numeric)","Sostituisce nel primo parametro tutte le occorrenze del secondo parametro con il terzo parametro.
Se viene specificato il quarto parametro la stringa viene tagliata in modo automatico alla lunghezza specificata.
Attenzione: alcuni database trasformano il risultato della REPLACE in un varchar/text di massima lunghezza causando rallentamenti in caso di operazioni che coinvolgono tabelle temporanee. Si consiglia quindi di specificare la lunghezza desiderata."], ["RIGHT","(char,numeric)","Estrae da char un numero numeric di caratteri a partire dalla fine della stringa."], ["ROUND","(numeric,numeric)","Esegue l'approssimazione di un numero per x cifre decimali."], ["RTRIM","(char)","Elimina gli spazi finali da char."], ["SPACE0","()","Restituisce una costante stringa vuota indipendentemente dal database."], ["SPACES","(numeric)","Restituisce una stringa di numeric spazi."], ["STOREDPROCEDURE","(function_name,param1,param2)","Richiama la funzione function_name passando i parametri specificati."], ["STR","(numeric)","Converte numeric in stringa."], // ["STUFF","(string,start,length,replaceWith_string)","Inserisce una stringa in una altra elimando un numero di caratteri specificato nella posizione inziale della prima stringa e inserendo la seconda in tale posizione."], ["SUBSTR","(string,numeric1,numeric2)","Estrae da string un numero numeric2 di caratteri a partire dall'numeric1-esimo; se numeric2 viene omesso, vengono estratti tutti i caratteri dall'numeric1-esimo alla fine (destra) di string."], ["T","(fieldname)","Nel caso siano presenti dei campi multilingua, seleziona il campo fieldname nella lingua dell'utente corrente, se il campo \xe8 vuoto restituisce il campo base."], ["T2","(fieldname)","Nel caso siano presenti dei campi multilingua, seleziona il campo fieldname nella lingua dell'utente corrente."], ["T!","(fieldname,fieldlanguage)","Nel caso siano presenti dei campi multilingua, seleziona il campo fieldname nella lingua specificata in fieldlanguage."], ["TRANSLATE","(string)","Traduce string, applicando la traduzione impostata per il valore passato come parametro nel Translation Manager di SITEPAINTER."], ["TRIM","(char)","Elimina gli spazi iniziali e finali da char."], ["TTOC","(date)","Trasforma un campo DateTime date in una stringa con formato DD-MM-YYYY hh:mm:ss"], ["UPPER","(str)","Rende la stringa str maiuscola."], ["USERCODE","()","Restituisce il codice utente (numerico di 4)."], ["USERGROUPS","()","Restituisce una stringa con l'elenco dei codici dei gruppi, separato da virgola, a cui appartiene l'utente loggato.
Se l'utente non ha gruppi associati oppure non \xe8 loggato, la funzione restituisce la stringa \"-1\" (gruppo non valido)."], ["USERROLES","()","Restituisce una stringa con l'elenco delle descrizioni dei ruoli, separato da virgola, assegnati all'utente loggato.
Se l'utente non ha ruoli assegnati oppure non \xe8 loggato, la funzione restituisce la stringa vuota \"\" (ruolo non valido)."], ["VAL","(char)","Ritorna il valore numerico di char come float."], ["WEEK","(date)","Ritorna il numero della settimana dell'anno della data specificata."], ["X","(xml_field,attribute)","Ritorna il valore dell'attributo attribute letto dal campo xml_field."], ["XM","(xml_field,attribute)","Ritorna il valori multipli dell'attributo attribute letto dal campo xml_field."], ["XP","(xml_field,path)","Ritorna il valore dell'attributo dal percorso XML path letto dal campo xml_field."], ["YEAR","(date)","Restituisce il valore numerico dell'anno espresso in date."], ["ZEROFILL","(num,string)","Il valore string viene riempito a sinistra con degli 0 per arrivare alla lunghezza di num (default 10)."] ]; var aggregateSqlFunctions=[ ["AVG","(expression)","Restituisce la media dei valori presenti nel campo passato."], ["COUNT","(expression)","Restituisce il numero di record presenti."], ["JSON_AGG","(key,value,key,value..)","Crea un array di oggetti."], ["MAX","(expression)","Restituisce il valore massimo tra i presenti."], ["MIN","(expression)","Restituisce il valore minimo tra i presenti."], ["SUM","(expression)","Restituisce la somma di tutti i valori presenti"], ["STRING_AGG","(expression, separator [order_by_clause])","Concatena una lista di stringhe separandole con la stringa specificata. La lista viene ordinata in base all'ordinamento espresso."] ]; var variablesSync=[ ["p_CPSyncTimestamp","","p_CPSyncTimestamp : Synchronization parameter - T(14,0)
Consente di recuperare le tuple per cui il valore di modifica cpupdtms ? maggiore o uguale al valore del parametro p_CPSyncTimestamp passato.
Es: .cpupdtms>=?p_CPSyncTimestamp<\i>"] ]; var randomKey=LibJavascript.AlfaKeyGen(10); // chiave casuale utilizzata per il nome da dare alle pagine sql.jsp var toolbars={} var unionQuery=''; var lastTableSelected=null; var tool = "visualquery"; /** * Ridefinizione di JSURL */ var oldJSURL = JSURL; JSURL = function (srv, p_bNoCache, callback){ let response; if(callback){ new oldJSURL(srv, p_bNoCache, function (response){ //if(response.includes("ACCESS DENIED")){ //if(window.parent.location.href.indexOf("portalstudio.jsp") < 0){ // accessDeniedStandaloneRefresh({ name : m_cFilename}); //} else { // m_nFileVersion--; // parent.jsonConfirmAccessDenied({ name : m_cFilename}); //} //} else { callback(response); //} }); } else { let old = new oldJSURL(srv, p_bNoCache); response = old.Response(); let urlAction = new URLSearchParams(old.prm); let whichAction = urlAction.get('m_cAction'); if(response.includes("ACCESS DENIED")){ if(window.parent.location.href.indexOf("portalstudio.jsp") < 0){ if(whichAction === 'save'){ m_nFileVersion--; } accessDeniedStandaloneRefresh({ name : m_cFilename}); } else { if(whichAction === 'save'){ m_nFileVersion--; } parent.jsonConfirmAccessDenied({ name : m_cFilename}); } } this.Response = () => { return response;} } } Object.keys(oldJSURL).forEach( p => JSURL[p] = oldJSURL[p]); function GetFunctionsForExpBuilder(){ //[{name:"sitepainterSqlFunctions",desc:"SitePAINTER SQL Functions",prefix:"[",postfix:"()]",functions:[["nome","parametri","descrizione lunga"],["nome2","parametri2","descrizione lunga"]]}] var functions=[]; functions.push({name:"sitepainterSqlFunctions",desc:"SitePAINTER SQL Functions",prefix:"[",postfix:"()]",functions:sitepainterSqlFunctions}); functions.push({name:"aggregateSqlFunctions",desc:"Aggregate SQL Functions",prefix:"[",postfix:"()]",functions:aggregateSqlFunctions}); return functions; } function getFieldsOfTables(){ //[{name:"tabella",desc:"tabellina",prefix:"tabella.",postfix:"",fields:[["nome","descrizione","tipo(lunghezza,decimali)"],["nome2","descrizione2","tipo2(lunghezza2,decimali2)"]]}}] var fieldsOfTable=[]; //richiede al server i campi delle tabelle coinvonte nella query $$('#tables_ul li').each(function (el) { var tblIdx = el.get("idxTable") if (tblIdx!=-1){ FetchData(tblIdx); var tblName = el.getElement("input[name=alias]").get('value'); var curTable = {name:tblName,desc:el.getElement("input[name=desc]").get('value'),prefix:tblName+".",postfix:"",fields:[]}; var tblFields=allTables[tblIdx][2].slice(); //Tabella dei campi della tabella selezionata tblFields.sort(function(e1,e2){return(e1[0]<=e2[0]?-1:1);}); tblFields.each(function (fld) { curTable.fields.push([fld[0],fld[1],fld[2] + "(" + fld[3] + "," + fld[4] + ")",fld[5]]); }); fieldsOfTable.push(curTable); } }); //ordina in base alla descrizione fieldsOfTable.sort(function(e1,e2){return(e1.desc<=e2.desc?-1:1);}); return fieldsOfTable; } function GetVariablesForExpBuilder(){ var variables=[]; variables.push({name:"variablesSync",desc:"Synchronization variable",prefix:"",postfix:"",functions:variablesSync}); return variables; } function getParametersOfQueries(){ } function New(){ CheckQueryModified(); BlankAllLists(); Ctrl("chk_distinct").checked = false; Ctrl("chk_union_all").checked = false; Ctrl("chk_multi_company").checked = false; Ctrl("chk_public").checked = false; Ctrl("chk_batch").checked = false; Ctrl("chk_cache").selectedIndex = 0; Ctrl("cache_duration").value = "10"; Ctrl("security_roles").value = ""; Ctrl("security_key").value = ""; Ctrl("remote_server").value = ""; Ctrl("remote_vqr_name").value = ""; SetRemoteUser(""); SetRemotePassword(""); Ctrl("remote_company").value = ""; Ctrl("remote_instance").value = ""; Ctrl("remote_mode").value = "native"; Ctrl("chk_remove_filter").checked = false; Ctrl("chk_use_orderby").checked = true; Ctrl("notes").value = ""; window.location = "index.jsp"+(offlinemode?"?offlinemode=true":''); } function Open(){ CheckQueryModified(); var height = 500; var width = 950; var left = (screen.width)?(screen.width-width)/2:100; var top = (screen.height)?(screen.height-height-100)/2:100; openSPModalLayer("../portalstudio/open.jsp?tool=visualquery&onetool=true&callerFunction=openQueryFile&SPModalLayerId=visualquerySPModalLayer", top, left, width, height, false, 1, false,false) } function openQueryFile(a,queryname,parameters){ m_cFilename = queryname; OpenFile(parameters); } function Save(then){ if (m_bUpdated){ old_name=m_cFilename; SaveFile(then); } else PSAlert.alert('Query not modified.') } function CheckQueryModified(){ if (m_bUpdated){ var askSave = confirm("Query has been modified.\nClick OK to save it.\nClick Cancel to ignore changes."); if (askSave){ old_name=m_cFilename; SaveFile(); } } } function EditQuery() { var i; var vqr_union_name = Ctrl("union_file").value; if (!vqr_union_name) PSAlert.alert("No query selected."); else { vqr_union_name=vqr_union_name.trim().split(/ *; */); if (vqr_union_name.length==1) openQuery(-1,vqr_union_name[0]); else { var table=Ctrl("unionQueryTable"),inner=''; var vqrs = {}; for (i=0; i"; } table.innerHTML=inner; toggleMaskUnion(); } } } function selectUnionQuery(el){ if (unionQuery) unionQuery.removeClass('selected') unionQuery=el; unionQuery.addClass('selected') } function openUnionQuery(_query){ unionQuery=_query||unionQuery if (unionQuery) openQuery(-1,unionQuery.innerText) toggleMaskUnion() } function toggleMaskUnion(){ var mask=Ctrl('unionQueryDiv'); if (mask.style.visibility=='visible'){ mask.style.visibility='hidden' } else { unionQuery=''; selectUnionQuery(Ctrl("unionQueryTable").getElementsByTagName("td")[0]) mask.style.visibility='visible' mask.style.bottom='12px'; mask.style.left='240px'; } } function GetMultiCompany(){ return Ctrl("chk_multi_company").checked; } function GetFilename(operation){ fileDialogOperation = operation; tempRemote_server = Ctrl("remote_server").value; tempRemote_user = GetRemoteUser(); tempRemote_password = Ctrl("remote_password").value; tempRemote_company = Ctrl("remote_company").value; tempRemote_instance = Ctrl("remote_instance").value; tempRemote_mode = Ctrl("remote_mode").value; var height = 500; var width = 500; var left = (screen.width)?(screen.width-width)/2:100; var top = (screen.height)?(screen.height-height-100)/2:100; if (operation=='import' || operation=='testconfiguration') openSPModalLayer("../visualquery/filelist.htm", top, left, width, height, true, 1, false,false) else openSPModalLayer("../maskparameters/SPMaskParametersConfigurator_list.jsp?action=queryName&SPModalLayerId=querySPModalLayer"+(offlinemode?"&offlinemode=true":""), top, left, width, height, false, 1, false,false) } function loadValue(action,value){ tempFilename=value; switch (fileDialogOperation){ case "open": m_cFilename = tempFilename; OpenFile(); break; case "saveas": old_name= m_cFilename; m_cFilename = tempFilename; currentname = m_cFilename; SaveFile() break; case "union": SetUnionFile(); break; case "filters": GetFiltersFile(); break; case "temptable": SetTempTable(); break; case "listQuery": Ctrl("listQuery").value=tempFilename; break; case "queryToCompare": Ctrl("queryToCompare").value=tempFilename; break; } currentname=m_cFilename; } function DoOperation(){ switch (fileDialogOperation){ case "import": ImportFile(); break; case "testconfiguration": Ctrl("configurationFileName").value=tempFilename; break; } } function AddListQuery(){ GetFilename("listQuery"); } /* Apre un file VQR e lo visualizza */ function OpenFile(parameters){ if (m_cFilename!=null){ m_cFilename = LTrim(m_cFilename, '/'); currentname=m_cFilename; var updateTable=false; if (parameters){ updateTable=offlinemode!=parameters.offlinemode offlinemode=parameters.offlinemode; document.getElementById('customQry').checked=parameters.custom; } let PrevSimpleMode = simplemode; let vqr; let isJson; if( c_ripristino && sessionStorage.getItem(c_ripristino)){ /** * parent.is_Saving a False, perchè se fosse True i vari tab * non sarebbero più cliccabili e quindi non si potrebbe lavorare * sugli altri Tab */ vqr = JSON.parse(sessionStorage.getItem(c_ripristino))["def"]; currentname = JSON.parse(sessionStorage.getItem(c_ripristino))["name"]; m_cFilename = currentname; var m_nFileVersione = JSON.parse(sessionStorage.getItem(c_ripristino))["fileVersione"]; parent.is_Saving = false; isJson = 'json'; simplemode = true; SetUpdated(); sessionStorage.removeItem(c_ripristino); if(window.parent.location.href.indexOf("portalstudio.jsp") < 0){ m_nFileVersion = m_nFileVersion ? m_nFileVersion : m_nFileVersione; if(currentname){ Save(); } else if(!currentname){ Save(); } } } else if(window.frameElement?.jdef || window.frameElement?.m_nFileVersione){ vqr = JSON.parse(window.frameElement.jdef); m_nFileVersione = window.frameElement.m_nFileVersione; parent.is_Saving = false; isJson = 'json'; simplemode = true; SetUpdated(); window.frameElement.m_nFileVersione = undefined; window.frameElement.jdef = undefined; } else { vqr = new JSURL("../servlet/SPVQRProxy?action=open&filename="+m_cFilename+(offlinemode?"&offlinemode=true":'')+"&custom="+document.getElementById('customQry').checked, true).Response(); isJson = undefined; } if (Empty(vqr)) PSAlert.alert('Query not found') if (updateTable) addTables(); BlankAllLists(); FillVQRVariables('open', vqr, isJson); m_nFileVersion = m_nFileVersione ? m_nFileVersione : m_nFileVersion ; Public_Modified(); Cache_Modified(); simplemode = PrevSimpleMode; } } var old_name; function SaveFile(then){ if (m_cFilename){ m_cFilename=Trim(m_cFilename); currentname=m_cFilename; var ProceedSave=false; var forceSave=false; if (changedCustom) forceSave=true; if(fileDialogOperation=="saveas"){ if(!EmptyString(m_cFilename)){ var found = parseInt((new JSURL("../servlet/SPVQRProxy?action=exists&m_cFilename="+m_cFilename+(offlinemode?"&offlinemode=true":'')+"&custom="+document.getElementById('customQry').checked,true)).Response()) if(found!=-1){ if (found){ ProceedSave=confirm("File already exists, overwrite?") forceSave=true; } else ProceedSave=true; // ProceedSave = found ? confirm("File already exists, overwrite?") : true; }else{ PSAlert.alert("Server side error."); } fileDialogOperation=""; }else{ PSAlert.alert("Empty VQR name: please choose a valid name.") } } else { ProceedSave=true; } if(ProceedSave){ SavingAlert(true,'saving vqr...'); if(parent) parent.is_Saving=true; //Salvataggio a seguito di un CLOSE if (then=="close"){ closeAfterSave=true; } SaveFile2.delay(200,window,forceSave); }else m_cFilename=old_name; currentname=m_cFilename; } else { GetFilename.delay(1,window,"saveas"); } } function SaveFile2(forceSave){ var output=''; var url = new JSURL("../servlet/SPVQRProxy?m_cFilename="+m_cFilename+(m_nFrontendPort?"&frontendport="+m_nFrontendPort:"") + (m_bOfflineMode?'&offlinemode=true':'') + "&m_cAction=save" + "&m_cWv=" + URLenc(FillVQRVariables('save',null,null,true)) + "&forceSave=" + forceSave + "&custom="+document.getElementById('customQry').checked + "&m_cID=" + cmdhash ,true); output=url.Response(); if(output){ if (output.indexOf('ok')!=-1){ NotifySave('ok') } } if (output.indexOf('ok')==-1){ PSAlert.alert(output); } else{ // Se salvataggio va a buon fine ritorna numero di versione m_nFileVersion=parseInt(Right(output,output.length-15)) } if(parent) parent.is_Saving=false; if(Empty(old_name) || old_name!=m_cFilename){ if (window.history.pushState) { window.history.pushState(m_nFileVersion, m_cFilename+" - VisualQuery", "index.jsp?filename="+m_cFilename+(offlinemode?"&offlinemode=true":'')); } else window.location.href=SPWebRootURL+'/visualquery/index.jsp?filename='+m_cFilename+(offlinemode?"&offlinemode=true":''); } } function ImportFile(){ Ctrl("remote_server").value = tempRemote_server; SetRemoteUser(tempRemote_user); SetRemotePassword(tempRemote_password); Ctrl("remote_company").value = tempRemote_company; Ctrl("remote_instance").value = tempRemote_instance; Ctrl("remote_mode").value = tempRemote_mode; Ctrl("remote_vqr_name").value = tempFilename; SetUpdated(); } var notimooManager; function NotifySave(result) { switch(result) { case 'ok': m_bUpdated=false; if(closeAfterSave) window.parent.closeCurrentObj(); else { if(window.parent.changeName) window.parent.changeName(m_cFilename,{custom:document.getElementById('customQry').checked,offlinemode:offlinemode},Strtran(window.frameElement.id,'portalstudioframe','')); } if(window.parent.AddRecentOpen) window.parent.AddRecentOpen("visualquery",m_cFilename,{custom:document.getElementById('customQry').checked,offlinemode:offlinemode}) SavingAlert(false); notimooManager.show({ title:'Notification message', message: 'vqr saved!', visibleTime: 2000, width:200 }); break; case 'no_filename': SavingAlert(false); m_nFileVersion--; break; case 'error': SavingAlert(false); m_nFileVersion--; PSAlert.alert("Error: unable to save file."); break; default: SavingAlert(false); m_nFileVersion--; break; } } function ToggleSearchPanel(e){ e = (e)? e: window.event; Ctrl("searchPanel").style.visibility=(Ctrl("searchPanel").style.visibility=="hidden"?"visible":"hidden"); Ctrl("searchPanel").style.left=e.clientX+'px'; Ctrl("searchPanel").style.top=(e.clientY+30)+'px'; } function AddTempTable(){ GetFilename("temptable"); } function SelectConfigurationFileName(){ GetFilename("testconfiguration"); } function AddBOTable(){ tempRemote_server = Ctrl("remote_server").value; tempRemote_user = GetRemoteUser(); tempRemote_password = Ctrl("remote_password").value; tempRemote_company = Ctrl("remote_company").value; tempRemote_instance = Ctrl("remote_instance").value; tempRemote_mode = Ctrl("remote_mode").value; var height = 510; var width = 450; var left = (screen.width)?(screen.width-width)/2:100; var top = (screen.height)?(screen.height-height)/2:100; openSPModalLayer("../jsp-system/SPVQREditorSelectBO_portlet.jsp?callerFunction=AddBO"+(offlinemode?"&offlinemode=true":''), top, left, width, height, true, 1, false,false) } function AddBO(BO,module){ tempFilename=BO; SetTempTable(module); } function updateFieldsQuery(idx){ allTables[idx][2]=null; o_dictTables.setSelectedRow(idx); } function openQuery(idx,queryName){ if (idx!=-1) queryName=allTables[idx][0]; if(parent && parent.newCurrentObj!=null && window.parent.location.href.indexOf("portalstudio.jsp") != -1){ var found = parseInt((new JSURL("../servlet/SPVQRProxy?action=exists&m_cFilename="+Lower(queryName)+(offlinemode?"&offlinemode=true":'')+"&custom=true",true)).Response()) parent.newCurrentObj(Lower(queryName),"visualquery",{custom:found!=0,offlinemode:offlinemode}); } else window.open("../visualquery/index.jsp?filename="+queryName+(offlinemode?"&offlinemode=true":''),"visualquery","resizable=yes,status=no,toolbar=no,menubar=no,location=no"); } function SetTempTable(module,dontAlert){ var idx=-1; if(Upper(Left(tempFilename,3))!="BO:" && Upper(Left(tempFilename,16))!="STOREDPROCEDURE:") tempFilename=Upper(tempFilename); for(var i=0;i24) Ctrl('tabPanelGroupPivot').style.height=(Ctrl('tabPanelGroupPivot').offsetHeight-24)+'px'; else Ctrl('tabPanelGroupPivot').style.height='0px'; var dictPanelH=GetWindowSize().h-Ctrl("queryPanel").offsetHeight-40; if (dictPanelH>0) Ctrl("dictionaryPanel").style.height=dictPanelH+'px'; Ctrl("dictionaryPanel").style.minHeight='192px'; Ctrl("dictPanelRelDiv").style.height = 62+'px'; Ctrl("dictPanelRelTr").style.height = 62+'px'; var dictPanelCaptionH = 30; // dictionary var dictPanelTableTitleH = Ctrl("dictPanelTitleTr").offsetHeight; //tables var dictPanelRelTitleH = Ctrl("dictPanelRelTitleTr").offsetHeight; //relations var dictPanelRelDivH = Ctrl("dictPanelRelDiv").offsetHeight;//relazioni var dictPanelTableTitDiv = Ctrl("dictFieldsDivTit").offsetHeight; //desc name module var tlbopencloseDiv = Ctrl("tableopenclose").offsetHeight;//openclose var dictPanelTableDivH = dictPanelH-(dictPanelCaptionH+dictPanelTableTitleH+dictPanelRelTitleH+dictPanelRelDivH+dictPanelTableTitDiv+tlbopencloseDiv); if(dictPanelTableDivH>30){//basta restringere la lista delle tabelle Ctrl("dictTablesDiv").style.height = dictPanelTableDivH+'px'; Ctrl("dictFieldsDiv").style.height = dictPanelTableDivH+'px'; } else { Ctrl("dictTablesDiv").style.height='30px' Ctrl("dictFieldsDiv").style.height='30px' var totalHeight=dictPanelCaptionH+dictPanelTableTitleH+30+62+dictPanelRelTitleH+dictPanelTableTitDiv+tlbopencloseDiv+Ctrl("queryPanel").offsetHeight+10; if (totalHeight-GetWindowSize().h>0){ if (totalHeight-GetWindowSize().h<=32){ Ctrl("dictPanelRelDiv").style.height=(dictPanelRelDivH-(totalHeight-GetWindowSize().h))+'px'; Ctrl("dictPanelRelTr").style.height=(dictPanelRelDivH-(totalHeight-GetWindowSize().h))+'px'; } else { Ctrl("dictPanelRelDiv").style.height='30px'; Ctrl("dictPanelRelTr").style.height='30px'; totalHeight-=32; if (totalHeight-GetWindowSize().h>0){ // si restringe il queryPanel ulContainerH=Max(203-(totalHeight-GetWindowSize().h),86) $$(".ulContainer").each(function(el){ el.style.height=ulContainerH+'px'; }); $$(".tabContainer").each(function(el) { el.style.height=(ulContainerH+20+32)+'px'; }); ulMiddleContainerH=ulContainerH-20; ulMiddleContainerH=(ulMiddleContainerH/2)-2; $$(".ulMiddleContainer").each(function(el){ el.style.height=ulMiddleContainerH+'px'; }) $$(".queryPanelTable").each(function(el){ el.style.height=(230-(203-ulContainerH))+'px'; }); } } } } } else { Ctrl('tabPanelGroupPivot').style.left=(Ctrl('FieldsContainer').offsetWidth+2)+'px'; Ctrl('tabPanelGroupPivot').style.height='auto'; ulContainerH=Max(GetWindowSize().h-200,86); $$(".ulContainer").each(function(el) { el.style.height=ulContainerH+'px'; }); $$(".tabContainer").each(function(el) { el.style.height=(ulContainerH+20+32)+'px'; }); ulMiddleContainerH=Max(GetWindowSize().h-200,86)-20; ulMiddleContainerH=(ulMiddleContainerH/2)-2; $$(".ulMiddleContainer").each(function(el) { el.style.height=ulMiddleContainerH+'px'; }); if (Ctrl('tabPanelGroupPivot').offsetHeight>24) Ctrl('tabPanelGroupPivot').style.height=(Ctrl('tabPanelGroupPivot').offsetHeight-24)+'px'; else Ctrl('tabPanelGroupPivot').style.height='0px'; } //sistemo la posizione della maschera dei tipi se visibile var maskType=document.getElementById('maskType') if (maskType.style.visibility=='visible'){ var position=maskType.getPosition() if ((position.x+maskType.getSize().x)>window.getSize().x) position.x=window.getSize().x-maskType.getSize().x if ((position.y+maskType.getSize().y)>window.getSize().y) position.y=window.getSize().y-maskType.getSize().y maskType.setStyles({ top:position.y, left:position.x }) } var maskTestConf=document.getElementById('maskTestConf'); if (maskTestConf){ if (maskTestConf.style.visibility=='visible') maskTestConf.style.left=Ctrl("dictPanelCaptionTr").offsetWidth-maskTestConf.offsetWidth+13+'px'; } if (Ctrl('NoteTab').offsetHeight>5) Ctrl('notes').style.height=(Ctrl('NoteTab').offsetHeight-5)+'px'; } // var saving, savingpic; function SavingAlert(show,msg){ if(show){ notimooManager = new Notimoo({}); notimooManager.show({ title:'Notification message', message: msg||'saving vqr...', sticky : true, width:200, height:40 }); }else{ notimooManager.close(notimooManager.elements[0]); } } function GetTables(){ var oTable; var tablesCSV = new JSURL("../servlet/SPXDCProxy?action=tables&tmptbl=true&offlinemode="+offlinemode, true); tablesCSV = tablesCSV.Response(); //Se mancano le librerie sul server if (At("ACCESS DENIED", tablesCSV)>0){ //PSAlert.alert("Access Denied."); } else if (At("ClassNotFoundException: SPXDCProxy", tablesCSV)>0){ PSAlert.alert("Installation incomplete."); } else { var oTables = tablesCSV.split(CSV_SEP); if (oTables[0]=="* --- Visual Query Tables 1.0 ---*") { for (var i=1; i bb) return 1; if (aa < bb) return -1; return 0; } function UpdateFieldsAndRelations(){ if (o_dictTables.getSelectedRow()>-1){ Ctrl("lbl_fields").innerHTML = "Fields of " + allTables[o_dictTables.getSelectedRow()][1]; fieldsOf=allTables[o_dictTables.getSelectedRow()][1]; lastTableAlias="" Ctrl("lbl_relations").innerHTML = "Relations of " + allTables[o_dictTables.getSelectedRow()][1]; GetFieldsAndRelations(o_dictTables.getSelectedRow()); } } function GetFieldsAndRelations(ofTable){ var i; FetchData(ofTable); o_dictFields.deleteAllItem(); for (i=0; i-1 && allTables[ofTable][2]==null){ var oField, oRelation, i, rows; if(RAt(".VQR", allTables[ofTable][1])){ allTables[ofTable][2] = new Array(); oField = new JSURL("../servlet/SPVQRProxy?action=fields&filename="+allTables[ofTable][0]+(offlinemode?"&offlinemode=true":''), true); oField = oField.Response(); var l_oFields = new TrsJavascript(); l_oFields.reset(); l_oFields.SetRow(0); l_oFields.BuildProperties(oField); var errorMsg=GetProperty(l_oFields,'errorMsg','C') if (errorMsg!="") alert(errorMsg) rows = GetProperty(l_oFields,'Rows','N'); for(i=0;i 0; i++){ oRelation = oRelations[i].split("|"); allRelations2[i-1] = new Array (oRelation[0],oRelation[1],oRelation[2],oRelation[3],oRelation[4],oRelation[5]); } } else { allRelations2[0] = new Array("Server Error","","","","",""); } } } } //------------------------- TABLES ---------------------------------- /* Aggiunge una tabella da quelle nella lista alla query */ function AddTable(){ AddTableByIdx(o_dictTables.getSelectedRow()); if (TabPanel.getSelectedTab()!=0) TabPanel.setSelectedTab(0); //Seleziono la sezione TABLES } function AddTableByIdx(dictTableIdx){ var tblDesc="", tblAlias=""; var tblsNum=0; $$('#tables_ul li input[name=name]').each(function(el) { if (el.value==allTables[dictTableIdx][0]) tblsNum++; if (tblsNum > 0){ tblDesc="("+tblsNum+")"; tblAlias=tblsNum; } }); var tblName=allTables[dictTableIdx][0], _tblName=tblName; tblDesc=allTables[dictTableIdx][1]+(Lower(Right(allTables[dictTableIdx][1],4))=='.vqr'?'':tblDesc); if(Upper(Left(allTables[dictTableIdx][0],3))=="BO:"){ tblAlias=Substr(allTables[dictTableIdx][0],4).split("->")[0]+tblAlias; } else if (Upper(Left(allTables[dictTableIdx][0],16))=="STOREDPROCEDURE:"){ tblAlias=Substr(tblName,17); tblDesc=tblName; tblName="[STOREDPROCEDURE("+tblAlias+")]"; } else { tblAlias=allTables[dictTableIdx][0]+tblAlias; } var curtbl = new Array(dictTableIdx, tblName, tblDesc, tblAlias, ++iid, "*") DrawTable(curtbl); if (!addingRelations) //?? AddRelatedTables(_tblName); if (! (Browser.ie && Browser.version<9)) document.getElementById("tables_ul").nanoScrollerMT(); // devo aggiornare le combo delle join esistenti $$('#joins_ul li').each(function(el) { var insert=true; var options=el.getElement("select[name=tb1]").options; for (var i=0; i"; //Table Alias liHtml += ""; //Table Name liHtml += ""; //TempTable option liHtml += DrawTempTableTypeCombo(dataForTable); //Table Del Icon liHtml += ""; li.set('html',liHtml); li.addEvent('click', function() { lastTableSelected=this; SelectDictionaryTable(this.get('idxTable'),this.get('totalid')); }); myul.adopt(li); sort_all.addItems(li); } function FocusAliasTable(el) { el=document.id(el); el.set('oldValue',el.get('value')); SelectTable(el); } function SetTableValues(el) { el = document.id(el); var oldValue = el.get('oldValue'); var sel = new Element('select').setStyles({width:90}); $$('#tables_ul li input[name=alias]').each(function(inp) { sel.adopt(new Element('option',{value:inp.value,text:inp.value})); }); $$("#joins_ul li select").each(function(oldsel){ if (oldsel.get('name')=='tb1' || oldsel.get('name')=='tb2') { var newvalue = oldsel.getSelected()[0].get('value'); if (newvalue == oldValue) newvalue = el.get('value'); var newselect = sel.clone().addEvent('change',SetUpdated).set('name',oldsel.get('name')).set('value',newvalue); newselect.replaces(oldsel); } }); lastTableAlias=el.get('value'); $$("#fields_ul li input[name=name]").each(function(field){ if (field.get("value").indexOf(oldValue+".")==0) field.set("value",field.get("value").replace(oldValue,lastTableAlias)); }) $$("#filters_ul li input[name=field]").each(function(field){ if (field.get("value").indexOf(oldValue+".")==0) field.set("value",field.get("value").replace(oldValue,lastTableAlias)); }) el.set('oldValue',lastTableAlias); Ctrl("lbl_fields").innerHTML="Fields of "+fieldsOf+" alias "+lastTableAlias; SetUpdated(); } function SelectTable(t) { var item=t; while(item.tagName.toLowerCase()!='li') item=item.parentNode; document.id(item).fireEvent('click'); } function DrawTempTableTypeCombo(table){ var types1 = new Array("", "Use Temporary Table (CTE)", "Use Routine", "CTE MATERIALIZED", "CTE NOT MATERIALIZED"); var types2 = new Array("*", "" , "+" , "#" , "$" ); var selRet=" "; if (table[2].match(vqr_regexp)!=null) { selRet=""; } else { selRet = ""; } return selRet; } /* Rimuove una tabella dalla sezione TABLES rimuovendo tutte le sue presenze nelle altre sezioni */ function DeleteTable(key){ var fieldPrefix, i; var curTable = document.getElementById('table_'+key); if (curTable === lastTableSelected) { lastTableSelected = null; } var curAlias = curTable.getElement("input[name=alias]").get('value'); var itemsToDelete=[]; $$('.FieldsValue').each(function(el) { var fieldvalue = el.get('value'); if(Left(fieldvalue,3)=="[X(") fieldPrefix="[X("; else if(Left(fieldvalue,3)=="[J(") fieldPrefix="[J("; else fieldPrefix=""; if((fieldvalue).split(".")[0]==fieldPrefix+curAlias){ itemsToDelete.push(el.id); } }); for (i=0;imaxiid) { alias = el.getElement("input[name=alias]").get('value'); maxiid = parseInt(el.get('totalid')); } }); return alias; } function addAllFields(){ let tblIdx = o_dictTables.getSelectedRow(); //Indice della tabella selezionata if(tblIdx != -1){ let fldInfo = allTables[tblIdx][2]; for(let i = 0; i < fldInfo.length; i++){ AddField(null, i); } } else { PSAlert.alert('No Table Selected'); } } //------------------------ FIELDS ----------------------------------- function AddField(table, field){ var tblIdx = table ?? o_dictTables.getSelectedRow(); //Indice della tabella selezionata var fldIdx = field ?? o_dictFields.getSelectedRow(); //Indice del campo selezionato if(TabPanel.getSelectedTab()==4){ //Filter AddFieldToFilter(tblIdx,fldIdx); return; } if(TabPanel.getSelectedTab()==5){ //Parameter AddFieldToParam(tblIdx,fldIdx); return; } var fldName,fldAlias; var fldInfo=allTables[tblIdx][2][fldIdx]; // fldInfo | // 0 field name | // 1 field description | // 2 field type | // 3 field size | // 4 decimal size | // 5 index | // 6 privacy | // 7 identifier | var aliasTable; if(!CheckTableUsed(allTables[tblIdx][0])){ aliasTable = AddTableByIdx(tblIdx)[3]; } else { aliasTable = GetLastTableAlias(allTables[tblIdx][0]); } if (fldInfo[0].startsWith('[J(') || fldInfo[0].startsWith('[X(')) { fldName = fldInfo[0]; fldAlias = fldName.substring(fldName.indexOf(',') +1, fldName.length-2); } else { fldAlias=fldInfo[0]; fldName = aliasTable + "." + (/* simplemode ? Lower(fldAlias) : */ fldAlias); } var find=false; var findValue=''; document.querySelectorAll('.FieldsValue').forEach(function(el) { if (Lower(fldName) == Lower(el.getAttribute('value'))){ find=true; findValue=el.getAttribute('value'); return } }); if(find){ var addFieldAgain=confirm("Field " + findValue + " already exist, add again?"); if(!addFieldAgain) return; } var listAlias=[],i=0 $$('.floatRight input[name="alias"]').each(function(el) { listAlias[i]=Lower(el.get('value')); i++; }); i=1; var tmpFldAlias=fldAlias; while (LibJavascript.Array.indexOf(listAlias,Lower(fldAlias))!=-1){ fldAlias=tmpFldAlias+i; i++; } DrawField(new Array(0,fldName,fldInfo[1],fldInfo[2],fldInfo[3],fldInfo[4],fldAlias,fldInfo[6],fldInfo[7],"","",fldIdx,false)); if (TabPanel.getSelectedTab()!=1) TabPanel.setSelectedTab(1); SetUpdated(); } function AddBlankField(){ DrawField(new Array(-1,"","New Field","C","10","0","",0,false,"","",-1,false)); SetUpdated(); } function AddBlankCalculatedField(){ DrawField(new Array(-1,"","New Field","C","10","0","",0,false,"","",-1,true)); SetUpdated(); } function SetUpdated() { m_bUpdated=true; } function changeCustom(){ changedCustom=!changedCustom; SetUpdated(); } function DrawField(dataForField){ // 1: exp, 2: desc, 3:type, 4:len, 5:dec, 6:alias, 7:privacy, 8: identifier, 9:default value, 10:use default when, 11:index, 12:calculated field var myul = dataForField[12]?document.getElementById("calculatedFields_ul"):document.getElementById("fields_ul"); var key = LibJavascript.AlfaKeyGen(10); var li = new Element('li', {id:'field_'+key}); var NameColumnWidth = 190; var liHtml = "move"; //Field Description liHtml += ""; //Field Name liHtml += "
"; liHtml += "
"; if (!dataForField[12]){ //Field Name Expression Builder Button liHtml += ""; } var w=dataForField[12]?173:120; //Field Alias liHtml += ""; // Field Type liHtml+="
"+ ToHTML(dataForField[3])+"("+dataForField[4]+","+ToHTML(dataForField[5])+")
"; //Default value liHtml+=""; //Use default when liHtml+=""; // Data sensibility liHtml+=""; // Data identifier liHtml += ""; // Data index liHtml += ""; if (!dataForField[12]){ //Fields Open mask liHtml += ""; } //Fields Del Icon liHtml += ""; if (!dataForField[12]) liHtml += "" liHtml += "
"; liHtml += "
" li.set('html',liHtml); var alias = li.getElement('input[name=alias]'); var expr = li.getElementById("fld_name_"+key); if (!dataForField[12]){ expr.addEvent('change', function() { ModifyOBGBExpr(key,this.get('value'),alias.get('value'),'groupby'); ModifyOBGBExpr(key,this.get('value'),alias.get('value'),'orderby'); ModifyOBGBExpr(key,this.get('value'),alias.get('value'),'pivotFields'); ModifyOBGBExpr(key,this.get('value'),alias.get('value'),'pivotData'); }); alias.addEvent('change', function() { ModifyOBGBExpr(key,expr.get('value'),this.get('value'),'groupby'); ModifyOBGBExpr(key,expr.get('value'),this.get('value'),'orderby'); ModifyOBGBExpr(key,expr.get('value'),this.get('value'),'pivotFields'); ModifyOBGBExpr(key,expr.get('value'),this.get('value'),'pivotData'); }); li.getElementById("fld_descr_"+key).addEvent('change', function() { ModifyOBGBDescr(key,this.get('value'),'groupby'); ModifyOBGBDescr(key,this.get('value'),'orderby'); ModifyOBGBDescr(key,this.get('value'),'pivotData'); ModifyOBGBDescr(key,this.get('value'),'pivotFields'); }); var mover = li.getElement("span.mover"); mover.addEvent("mousedown", function(event) { event.stop(); var pos = this.getCoordinates(); var clone = new Element('span',{'class':'dragged'}).setStyles({'z-index':999,'top':pos.top,'left':pos.left+10,'cursor':'default'}).set('text',alias.get('value')); clone.inject(document.body); var elementsDrop = [document.getElementById('orderby_ul'),document.getElementById('groupby_ul'),document.getElementById('pivotFields_ul'),document.getElementById('pivotData_ul')]; var drag = new Drag.Move(clone, { droppables: elementsDrop, onBeforeStart: function() { elementsDrop.each(function(el) { el.addClass('droppable'); }) }, onDrop: function(dragging, drop){ dragging.destroy(); elementsDrop.each(function(el) { el.removeClass('droppable'); }); if (drop != null){ if (drop.get('id')=='orderby_ul') DrawSingleOrderBy(key); else if (drop.get('id')=='groupby_ul') DrawSingleGroupBy(key); else if (drop.get('id')=='pivotFields_ul') DrawSinglePivotFields(key); else if (drop.get('id')=='pivotData_ul') DrawSinglePivotData(key); drop.removeClass('selectedDrop'); drop.highlight('#7389AE', '#FFF'); SetUpdated(); } }, onEnter: function(dragging, drop){ drop.addClass('selectedDrop'); }, onLeave: function(dragging, drop){ drop.removeClass('selectedDrop'); }, onCancel: function (/*dragging*/) { clone.destroy(); elementsDrop.each(function(el) { el.removeClass('droppable'); }); } }); drag.start(event); }); } myul.adopt(li); sort_all.addItems(li); if (! (Browser.ie && Browser.version<9)) myul.nanoScrollerMT(); } var ChangeTypeField =function (){ Ctrl('fld_type_'+currentFieldId).innerHTML=document.getElementById('mask_type').getElement('select').getSelected()[0].get('value'); Ctrl('fld_len_'+currentFieldId).innerHTML=document.getElementById('mask_fld_len_'+currentFieldId).get('value'); Ctrl('fld_dec_'+currentFieldId).innerHTML=document.getElementById('mask_fld_dec_'+currentFieldId).get('value'); Ctrl('fld_def_value_'+currentFieldId).value=document.getElementById('mask_fld_default_value_'+currentFieldId).get('value'); Ctrl('fld_use_def_when_'+currentFieldId).value=document.getElementById('mask_fld_use_default_when_'+currentFieldId).get('value'); Ctrl('fld_privacy_'+currentFieldId).value=document.getElementById('mask_privacy_'+currentFieldId).get('value'); Ctrl('fld_identifier_'+currentFieldId).value=document.getElementById('mask_fld_identifier_'+currentFieldId).get('checked'); toggleMaskType(); } var ChangeTypeParm =function (){ Ctrl('parm_type_'+currentParmId).innerHTML=document.getElementById('mask_type').getElement('select').getSelected()[0].get('value'); Ctrl('parm_len_'+currentParmId).innerHTML=document.getElementById('mask_parm_len_'+currentParmId).get('value'); Ctrl('parm_dec_'+currentParmId).innerHTML=document.getElementById('mask_parm_dec_'+currentParmId).get('value'); Ctrl('keep_spaces_'+currentParmId).value=document.getElementById('mask_param_keep_spaces_'+currentParmId).get('checked'); toggleMaskType(); } function tabMaskType(tabName){ document.getElementById('content_tab_type').style.display=tabName=='type'?'block':'none'; document.getElementById('content_tab_default').style.display=tabName=='default'?'block':'none'; document.getElementById('content_tab_privacy').style.display=tabName=='privacy'?'block':'none'; document.getElementById('tab_type').className='prop_tab'; document.getElementById('tab_default').className='prop_tab'; document.getElementById('tab_privacy').className='prop_tab'; document.getElementById('tab_'+tabName).addClass('selected') } function toggleMaskType(name,key){ var type, lenDisabled, decDisabled, positionDivType, position; var btn=document.getElementById('btnChangeType'); btn.removeEvent('click',ChangeTypeField) btn.removeEvent('click',ChangeTypeParm) var maskType=document.getElementById('maskType'); if (name=='Field' || name=='CalculatedField'){ if (maskType.style.visibility=='visible' && (!key || key==currentFieldId)){ maskType.style.visibility='hidden'; maskType.setStyles({ top:0, left:0 }) } else{ currentFieldId=key; if (name=='Field'){ Ctrl('mask_privacy_tr').style.display=''; Ctrl('mask_identifier_tr').style.display=''; Ctrl('mask_default_value_div').style.display=''; Ctrl('mask_use_default_when_div').style.display=''; Ctrl('maskTypeTab').style.display=''; Ctrl('mask_keep_spaces_tr').style.display='none'; } else { Ctrl('mask_privacy_tr').style.display='none'; Ctrl('mask_identifier_tr').style.display='none'; Ctrl('mask_use_default_when_div').style.display='none'; Ctrl('maskTypeTab').style.display='none'; Ctrl('mask_keep_spaces_tr').style.display='none'; } maskType.style.visibility='visible'; Ctrl('maskTypeTitle').innerHTML=document.getElementById('field_'+currentFieldId).getElement('[name=alias]').get('value'); //Field Type type=document.getElementById('fld_type_'+currentFieldId).get('text'); Ctrl('mask_type').innerHTML = DrawTypeCombo(type, "Field", key); lenDisabled=(type=="D"||type=="L"||type=="T") Ctrl('mask_len').innerHTML=""; decDisabled=(type!="N") Ctrl('mask_dec').innerHTML= ""; btn.addEvent('click',ChangeTypeField) Ctrl('mask_default_value').innerHTML= ""; Ctrl('mask_use_default_when').innerHTML= ""; Ctrl('mask_privacy').innerHTML = DrawDataSensibilityCombo(document.getElementById('fld_privacy_'+currentFieldId).value, key); Ctrl('mask_identifier').innerHTML = ""; //posizionamento maschera positionDivType=document.getElementById('fld_type_'+currentFieldId).getPosition(); position=positionDivType; position.x-=(maskType.getSize().x+10) if (position.y+maskType.getSize().y>window.getSize().y) position.y=window.getSize().y-maskType.getSize().y maskType.setStyles({ top:position.y, left:position.x }) } tabMaskType('type'); } else if (name=='Param'){ if (maskType.style.visibility=='visible' && (!key || key==currentParmId)){ maskType.style.visibility='hidden'; maskType.setStyles({ top:0, left:0 }) } else{ currentParmId=key; Ctrl('mask_privacy_tr').style.display='none'; Ctrl('mask_identifier_tr').style.display='none'; Ctrl('mask_default_value_div').style.display='none'; Ctrl('mask_use_default_when_div').style.display='none'; Ctrl('maskTypeTab').style.display='none'; Ctrl('mask_keep_spaces_tr').style.display=''; maskType.style.visibility='visible'; Ctrl('maskTypeTitle').innerHTML=document.getElementById('param_'+currentParmId).getElement('[name=name]').get('value'); //Param Type type=document.getElementById('parm_type_'+currentParmId).get('text'); Ctrl('mask_type').innerHTML = DrawTypeCombo(type, name, key); lenDisabled=(type=="D"||type=="L"||type=="T") Ctrl('mask_len').innerHTML=""; decDisabled=(type!="N") Ctrl('mask_dec').innerHTML= ""; Ctrl('mask_keep_spaces').innerHTML = ""; btn.addEvent('click',ChangeTypeParm) //posizionamento maschera positionDivType=document.getElementById('parm_type_'+currentParmId).getPosition(); position=positionDivType; position.x-=(maskType.getSize().x+10) if (position.y+maskType.getSize().y>window.getSize().y) position.y=window.getSize().y-maskType.getSize().y maskType.setStyles({ top:position.y, left:position.x }) tabMaskType('type'); } } else { // ho premuto la 'x' maskType.style.visibility='hidden'; maskType.setStyles({ top:0, left:0 }) } } function DrawDataSensibilityCombo(preselected,id){ var sel = ""; return sel; } function DrawTypeCombo(preselected, returnFunc, id, cssClass){ if (!cssClass) cssClass=""; var selRet = ""; return selRet; } function DeleteField(id, notAskConfirm){ if (notAskConfirm || confirm("Do you want delete field?")) { var curField = document.getElementById('field_'+id); DeleteItem(curField); if (! (Browser.ie && Browser.version<9)) document.getElementById("fields_ul").nanoScrollerMT(); DeleteOrderBy(id); DeleteGroupBy(id); DeletePivotData(id); DeletePivotFields(id); } } /* La chiamata viene costruita in DrawTypeCombo */ function SetFieldCombo(id){ var cboValue = document.getElementById("mask_type_"+id).getSelected()[0].get('value'); var lenObj = Ctrl("mask_fld_len_"+id) var decObj = Ctrl("mask_fld_dec_"+id) switch (cboValue) { case 'M': case 'C': decObj.value="0"; lenObj.readOnly=false; decObj.readOnly="true" break; case 'N': lenObj.readOnly=false; decObj.readOnly=false; break; case 'D': lenObj.value="8"; decObj.value="0"; lenObj.readOnly="true"; decObj.readOnly="true"; break; case 'L': lenObj.value="1"; decObj.value="0"; lenObj.readOnly="true"; decObj.readOnly="true"; break; case 'T': lenObj.value="14"; decObj.value="0"; lenObj.readOnly="true"; decObj.readOnly="true"; break; } SetUpdated(); } function ModifyOBGBDescr(key,value,zoneType) { var el = document.getElementById(zoneType+'_'+key); if (el) { var span = el.getElement("span.desc"); span.set('text',value); } } function ModifyOBGBExpr(key,name,alias,zoneType) { var el = document.getElementById(zoneType+'_'+key); if (el) { var span = el.getElement("div.field"); span.set('text',GetFieldAlias(name, alias)); } } function DrawSinglePivotFields(key){ var myul=document.getElementById("pivotFields_ul"); var curPivotField=myul.getElement('li[id=pivotFields_'+key+']'); if (curPivotField!=null) return; var curPivotData=document.getElementById("pivotData_ul").getElement('li[id=pivotData_'+key+']'); if (curPivotData!=null) return; // non posso avere gli stessi campi nel pivotField e pivotData var field=document.getElementById('field_'+key); var li=new Element('li',{id:'pivotFields_'+key}); var liHtml = "move"; liHtml+=""+field.getElement('input[name=desc]').get('value')+"" liHtml += "
"+GetFieldAlias(field.getElement('input[name=name]').get('value'), field.getElement('input[name=alias]').get('value'))+"
" liHtml += ""; liHtml += "
" li.set('html',liHtml); myul.adopt(li); sort_all.addItems(li); if (! (Browser.ie && Browser.version<9)) myul.nanoScrollerMT(); } function DeletePivotFields(key){ var curPivotField = document.getElementById('pivotFields_'+key); if (curPivotField) { DeleteItem(curPivotField); if (! (Browser.ie && Browser.version<9)) document.getElementById("pivotFields_ul").nanoScrollerMT(); } } function DrawSinglePivotData(key, aggregateFunc){ if (!aggregateFunc) aggregateFunc = 'SUM'; var myul=document.getElementById("pivotData_ul"); var curPivotData=myul.getElement('li[id=pivotData_'+key+']'); if (curPivotData!=null) return; var curPivotField=document.getElementById("pivotFields_ul").getElement('li[id=pivotFields_'+key+']'); if (curPivotField!=null) return; //non posso avere gli stessi campi nel pivot field e pivot data var field=document.getElementById('field_'+key); var li=new Element('li',{id:'pivotData_'+key}); var liHtml = "move"; liHtml+=""+field.getElement('input[name=desc]').get('value')+"" liHtml += "
"+GetFieldAlias(field.getElement('input[name=name]').get('value'), field.getElement('input[name=alias]').get('value'))+"
" liHtml += "
"; liHtml += ""; liHtml += ""; liHtml += "
"; liHtml += "
" li.set('html',liHtml); myul.adopt(li); sort_all.addItems(li); if (! (Browser.ie && Browser.version<9)) myul.nanoScrollerMT(); } function DeletePivotData(key){ var curPivotData = document.getElementById('pivotData_'+key); if (curPivotData) { DeleteItem(curPivotData); if (! (Browser.ie && Browser.version<9)) document.getElementById("pivotData_ul").nanoScrollerMT(); } } function DrawSingleOrderBy(key, orderby){ if (!orderby) orderby = "Ascending"; var myul = document.getElementById("orderby_ul"); var curOrderBy = myul.getElement('li[id=orderby_'+key+']'); if (curOrderBy != null) return; var field = document.getElementById('field_'+key); var li = new Element('li', {id:'orderby_'+key}); var liHtml = "move"; //OrderBy Description liHtml += ""+field.getElement('input[name=desc]').get('value')+"" //OrderBy tablename.fieldname liHtml += "
"+GetFieldAlias(field.getElement('input[name=name]').get('value'), field.getElement('input[name=alias]').get('value'))+"
" liHtml += "
"; //Order liHtml += ""; //Order By Del liHtml += ""; liHtml += "
"; liHtml += "
" li.set('html',liHtml); myul.adopt(li); sort_all.addItems(li); if (! (Browser.ie && Browser.version<9)) myul.nanoScrollerMT(); } function GetFieldAlias(fldName, fldAlias){ if (Empty(fldAlias)) return fldName; else return fldAlias; } function DeleteOrderBy(key){ var curOrderby = document.getElementById('orderby_'+key); if (curOrderby) { DeleteItem(curOrderby); if (! (Browser.ie && Browser.version<9)) document.getElementById("orderby_ul").nanoScrollerMT(); } } function DrawSingleGroupBy(key) { var myul = document.getElementById("groupby_ul"); var curGroupBy = myul.getElement('li[id=groupby_'+key+']'); if (curGroupBy != null) return; var field = document.getElementById('field_'+key); var li = new Element('li', {id:'groupby_'+key}); var liHtml = "move"; //GroupBy Description liHtml += ""+field.getElement('input[name=desc]').get('value')+"" //GroupBy tablename.fieldname liHtml += "
"+GetFieldAlias(field.getElement('input[name=name]').get('value'), field.getElement('input[name=alias]').get('value'))+"
" //Group By Del liHtml += ""; liHtml += "
" li.set('html',liHtml); myul.adopt(li); sort_all.addItems(li); if (! (Browser.ie && Browser.version<9)) myul.nanoScrollerMT(); } function DeleteGroupBy(key){ var curGroupby = document.getElementById('groupby_'+key); if (curGroupby) { DeleteItem(curGroupby); if (! (Browser.ie && Browser.version<9)) document.getElementById("groupby_ul").nanoScrollerMT(); } } function GetFieldUsedKey(fldName){ var idFound = null $$('#fields_ul li').each(function(li) { if (li.getElement('input[name=name]').get('value') == fldName || li.getElement('input[name=alias]').get('value') == fldName) { idFound = Right(li.id,Len(li.id)-6); return; } }); return idFound; } //------------------------ JOIN ----------------------------------- function AddBlankJoin(){ DrawSingleJoin(new Array("","","Left outer","","","","")); SetUpdated(); } function AddJoin(){ var relIdx=parseInt(o_dictRelations.getSelectedRow()); if (relIdx<0) return; var tblIdx = parseInt(o_dictTables.getSelectedRow()); AddJoin2(relIdx, tblIdx, true); TabPanel.setSelectedTab(3); SetUpdated(); } function AddJoin2(relIdx, tblIdx, addTables){ var relatedTableIdx = -1; var relationInfo = allTables[tblIdx][3][relIdx]; var tbl1Alias, tbl2Alias, expression; if (addTables){ if (!CheckTableUsed(relationInfo[2])){ relatedTableIdx=GetTableIdx(relationInfo[2]); AddTableByIdx(relatedTableIdx); } if (!CheckTableUsed(allTables[tblIdx][0])){ AddTableByIdx(tblIdx); } } if (relatedTableIdx==-1) relatedTableIdx=GetTableIdx(relationInfo[2]); if (relationInfo[5]==1){ tbl1Alias = GetLastTableAlias(relationInfo[2]); tbl2Alias = GetLastTableAlias(allTables[tblIdx][0]); expression = CreateJoinExp(relationInfo[3], relationInfo[1], tbl1Alias, tbl2Alias); } else { tbl1Alias = GetLastTableAlias(allTables[tblIdx][0]); tbl2Alias = GetLastTableAlias(relationInfo[2]); expression = CreateJoinExp(relationInfo[1], relationInfo[3], tbl1Alias, tbl2Alias); } var addJoin = true; $$('#joins_ul li').each(function (el) { var tb1 = el.getElement("select[name=tb1]").getSelected()[0].get('value'); var tb2 = el.getElement("select[name=tb2]").getSelected()[0].get('value'); if (Upper(tbl1Alias)==Upper(tbl2Alias) || (Upper(tb1)==Upper(tbl1Alias) && Upper(tb2)==Upper(tbl2Alias)) || (Upper(tb1)==Upper(tbl2Alias) && Upper(tb2)==Upper(tbl1Alias))){ addJoin = false; } }); if (addJoin) { var relationDesc=""; for(var i=0; i0){ fld1=Left(tbl1Fields,posVir1-1); fld2=Left(tbl2Fields,posVir2-1); tbl1Fields=Substr(tbl1Fields,posVir1+1) tbl2Fields=Substr(tbl2Fields,posVir2+1) if(!Empty(res)) res+=" and "; res+=tbl1Alias+"."+fld1+"="+tbl2Alias+"."+fld2; posVir1 = At(',',tbl1Fields); posVir2 = At(',',tbl2Fields); } return res; } function DeleteJoin(id){ var curJoin = document.getElementById('join_'+id); DeleteItem(curJoin); if (! (Browser.ie && Browser.version<9)) document.getElementById("joins_ul").nanoScrollerMT(); } function DrawSingleJoin(currentJoin){ var myul = document.getElementById("joins_ul"); var key = LibJavascript.AlfaKeyGen(10); var li = new Element('li', {id:'join_'+key}); var DescColumnWidth = 232 var ExprColumnWidth = 358 var liHtml = "move"; //Join Description liHtml += ""; //Join Expression liHtml += "
"; liHtml += "
"; //Join Expression Expression Builder Button liHtml += ""; //Join Type liHtml += DrawJoinTypeCombo(currentJoin[2]); //Join Table 1 liHtml += DrawTableCombo(currentJoin[3], "tb1"); //Join Table 2 liHtml += DrawTableCombo(currentJoin[4], "tb2"); //Join Del liHtml += ""; liHtml += "
"; li.set('html',liHtml); myul.adopt(li); sort_all.addItems(li); if (! (Browser.ie && Browser.version<9)) myul.nanoScrollerMT(); } function DrawTableCombo(preselected, wTbl){ var selRet = ""; return selRet; } function DrawJoinTypeCombo(preselected){ var selRet = ""; return selRet; } //------------------------ FILTERS ----------------------------------- function AddBlankFilter(){ DrawSingleFilter(new Array("", false, "=", "", "AND", false,"")); SetUpdated(); } function AddFieldToFilter(tblIdx,fldIdx){ var fldInfo,fldName; var aliasTable; if(!CheckTableUsed(allTables[tblIdx][0])){ aliasTable = AddTableByIdx(tblIdx)[3]; } else { aliasTable = GetLastTableAlias(allTables[tblIdx][0]); } fldInfo=allTables[tblIdx][2][fldIdx]; if (fldInfo[0].startsWith('[J(') || fldInfo[0].startsWith('[X(')) { fldName = fldInfo[0]; } else { fldName=aliasTable+"."+(/* simplemode ? Lower(fldInfo[0]) : */ fldInfo[0]); } DrawSingleFilter(new Array(fldName,false,"=","","AND",false,"")); SetUpdated(); } function DrawSingleFilter(filterData){ var myul = document.getElementById("filters_ul"); var key = LibJavascript.AlfaKeyGen(10); var li = new Element('li', {id:'filter_'+key}); var NameColumnWidth = 232; var SampColumnWidth = 280; var liHtml = "move"; //Filter Field Name liHtml += ""; //Filter Field Name Expression Builder button liHtml += ""; //Filter NOT var notChecked = (filterData[1] == true) ? " checked":""; liHtml += "
Not
"; //Filter criteria liHtml += DrawCriteriaCombo(filterData[2]); //Filter example liHtml += "
"; liHtml += "
"; //Filter example Expression Builder button liHtml += " "; //Use filter when liHtml += ""; //Filter logical var andChecked = (filterData[4]== "AND") ? " selected":""; var orChecked = (filterData[4]== "OR") ? " selected":""; liHtml += ""; //Filter having var havingChecked = (filterData[5]==true) ? " checked":"" liHtml += "Having" //Filter Del liHtml += ""; liHtml += "
"; li.set('html',liHtml); myul.adopt(li); sort_all.addItems(li); if (! (Browser.ie && Browser.version<9)) myul.nanoScrollerMT(); } function FilterExampleAction(key) { var curFilter = document.getElementById("filter_"+key); if (FilterUsesFile(curFilter.getElement("select[name=criteria]").getSelected()[0].get('value'),curFilter.getElement("input[name=example]").get('value'))) { exampleInput = 'filter_example_'+key; GetFilename('filters'); } else { ExpressionBuilder('filter_example_'+key) } } function FilterUsesFile(criteria,value){ var criterias = new Array("in", "not in", "exists", "not exists", "> all", "> any", "< all", "< any", ">= all", ">= any", "<= all", "<= any", "<> all", "<> any"); return LibJavascript.Array.indexOf(criterias,criteria)>=0 && Left(value,1)!="("; } function DrawCriteriaCombo(preselected){ var selRet = ""; return selRet; } function DeleteFilter(id){ var curFilter = document.getElementById('filter_'+id); DeleteItem(curFilter); if (! (Browser.ie && Browser.version<9)) document.getElementById("filters_ul").nanoScrollerMT(); } function GetFiltersFile(){ document.id(exampleInput).value = tempFilename; } //------------------------ PARAMETERS ----------------------------------- function AddBlankParameter(){ DrawSingleParameter(new Array("", "", "C", "0", "0", false,"","",false)); SetUpdated(); } function AddFieldToParam(tblIdx,fldIdx){ var fldInfo; var fldName,fldAlias,pname; var aliasTable; if(!CheckTableUsed(allTables[tblIdx][0])){ aliasTable = AddTableByIdx(tblIdx)[3]; } else { aliasTable = GetLastTableAlias(allTables[tblIdx][0]); } fldInfo=allTables[tblIdx][2][fldIdx]; // 0 Field name | // 1 Description | // 2 Type | // 3 Length | // 4 Decimal length | // 5 Remove on empty | if (fldInfo[0].startsWith('[J(') || fldInfo[0].startsWith('[X(')) { fldName = fldInfo[0]; fldAlias = fldName.substring(fldName.indexOf(',') +1, fldName.length-2); } else { fldAlias=fldInfo[0]; fldName = aliasTable + "." + (/* simplemode ? Lower(fldAlias) : */ fldAlias); } pname="p"+fldAlias; /* Controllo se il campo era stato aggiunto in precedenza, in questo caso, aggiungo il numero */ var numPar=0; var paramSuffix; $$('#parameters_ul input[name=name]').each(function(el) { if(Substr(el.get('value'),1,Len(pname))==pname) { paramSuffix=Substr(el.get('value'),Len(pname)+1); //caso: CodArt e CodArtOrd hanno lo stesso inizio if(Empty(paramSuffix) || paramSuffix>0) numPar++; } }); if(numPar>0) pname+=numPar; DrawSingleParameter(new Array(pname,fldInfo[1],fldInfo[2],fldInfo[3],fldInfo[4],false,"","",false)); DrawSingleFilter(new Array(fldName,false,"=","?"+pname,"AND",false,"")); SetUpdated(); } function DrawSingleParameter(currentParam){ var myul = document.getElementById("parameters_ul"); var key = LibJavascript.AlfaKeyGen(10); var li = new Element('li', {id:'param_'+key}); var NameColumnWidth = 220, DescColumnWidth = 250; var liHtml = "move"; //Param Field Name liHtml += ""; //Param desc liHtml += ""; //Param type liHtml+="
"+currentParam[2]+"("+currentParam[3]+","+currentParam[4]+")
" liHtml += "
"; //Check expression liHtml+=""; //Default on empty liHtml+=""; liHtml+="
" liHtml += "
"; liHtml += " "; //Param remove on empty var havingChecked = (currentParam[5] == true) ? " checked":""; liHtml += ""; // Keep spaces liHtml+=""; //Param Del liHtml += ""; liHtml += "
"; li.set('html',liHtml); myul.adopt(li); sort_all.addItems(li); if (! (Browser.ie && Browser.version<9)) myul.nanoScrollerMT(); } function SetNameParamValue(el) { var oldValue = el.get('oldValue'); var newValue = el.get('value'); $$('#filters_ul input[name=example]').each(function(el) { if (el.get('value')=="?"+oldValue) el.value = "?"+newValue; }); el.set('oldValue',newValue); SetUpdated(); } function FocusNameParam(el) { el.set('oldValue',el.get('value')); } function DeleteParam(key){ var curParam = document.getElementById('param_'+key); var pname = "?"+curParam.getElement("input[name=name]").get('value'); $$('#filters_ul input[name=example]').each(function(el) { if (el.get('value')==pname) DeleteFilter(Right(el.id,Len(el.id)-Len('filter_example_'))); }); DeleteItem(curParam); if (! (Browser.ie && Browser.version<9)) document.getElementById("parameters_ul").nanoScrollerMT(); } function SetParamCombo(id){ var cboValue = document.getElementById("mask_type_"+id).getSelected()[0].get('value'); var lenObj = Ctrl("mask_parm_len_"+id) var decObj = Ctrl("mask_parm_dec_"+id) switch (cboValue) { case 'M': case 'C': decObj.value="0"; lenObj.readOnly=false; decObj.readOnly="true" break; case 'N': lenObj.readOnly=false; decObj.readOnly=false; break; case 'D': lenObj.value="8"; decObj.value="0"; lenObj.readOnly="true"; decObj.readOnly="true"; break; case 'L': lenObj.value="1"; decObj.value="0"; lenObj.readOnly="true"; decObj.readOnly="true"; break; case 'T': lenObj.value="14"; decObj.value="0"; lenObj.readOnly="true"; decObj.readOnly="true"; break; } SetUpdated(); } function AppendQueryParameter(parameters,queryname,ignore) { var url = new JSURL("../servlet/SPVQRProxy?action=vqrparameters&filename="+URLenc(queryname)+ "&offlinemode="+URLenc(offlinemode) + (ignore ? '&ignoreparameters='+URLenc(ignore): ''),true); var output=url.Response(); output = JSON.parse(output); var bExists, i , j; for (i=0;i255 && str.match(/%[a-f0-9]{2}/i); } function SetRemoteUser(user) { var ctrl = Ctrl("remote_user"); if ( IsA(user, 'C') ) { if ( GuessIsObfuscated(user) ) { ctrl.value = OBF_REMOTEUSER; } else { ctrl.value = user; } ctrl.setAttribute("remote_user", user); } else { ctrl.value = ""; ctrl.setAttribute("remote_user", ""); } } function GetRemoteUser(){ var ctrl = Ctrl("remote_user"); if ( ctrl.value!=OBF_REMOTEUSER ) { return ctrl.value; } return ctrl.getAttribute("remote_user"); } function IsAParameter(str) { return str.match(/^\?/) && !GuessIsObfuscated(str); } function SetRemotePassword(password) { var ctrl = Ctrl("remote_password"); ctrl.value = password || ""; if ( SetRemotePassword.QueryChangeType(ctrl.value) ) { SetRemotePassword.SetType(IsAParameter(ctrl.value) ? "text" : "password"); } } SetRemotePassword.QueryChangeType = function(password){ return (IsAParameter(password) && Ctrl("remote_password").type!="text") || (!IsAParameter(password) && Ctrl("remote_password").type=="text"); }; SetRemotePassword.SetType = function(type) { try { Ctrl("remote_password").type = type; } catch(e) { //IE //aggiunge il pulsante per rivelare la pwd var revealer = document.createElement("input"); revealer.id = "remote_password_revealer"; revealer.type = "button"; revealer.className = "bottoni"; revealer.style.height = "22px"; revealer.style.width = "18px"; revealer.value = "?"; revealer.title = "Reveal password parameter"; Ctrl("remote_password").parentNode.appendChild(revealer); //ridefinisce le funzioni SetRemotePassword.SetType = function(type) { var revealer = Ctrl("remote_password_revealer"); revealer.onclick = type=='text' ? new Function("PSAlert.alert('Parameter used for remote password: '+Ctrl('remote_password').value)") : ''; revealer.style.display = type=='text' ? '' : 'none'; }; SetRemotePassword.QueryChangeType = function(password) { var revealer = Ctrl("remote_password_revealer"); return (IsAParameter(password) && revealer.style.display=='none') || (!IsAParameter(password) && revealer.style.display!='none'); }; //esegue nuova versione SetRemotePassword.SetType(type); } }; function openPreview(text){ var preview=document.getElementById('preview'); var preview_wrapper=document.getElementById('preview_wrapper'); var iframe_wrapper=document.getElementById('iframe_wrapper'); var morphP; if (! (Browser.ie && Browser.version<9)) morphP= new Fx.Morph(preview_wrapper,{ 'duration':'400',transition:Fx.Transitions.easeOut}); function showPreview(){ preview_wrapper.setStyles({'width': window.getSize().x-8,'height':window.getSize().y-10,'left':4,'top':4}); iframe_wrapper.setStyles({'height': window.getSize().y-40,'width':window.getSize().x-18}); preview.setStyles({'height': window.getSize().y-50,'width':window.getSize().x-28}); preview.src="./sql.jsp"; preview_wrapper.style.display='block'; if ((! (Browser.ie && Browser.version<9)) && (!previewOpen)){ morphP.start({'left':4}); preview_wrapper.style.display='block' } else preview_wrapper.style.left=4+'px' preview.style.display='block'; if (! (Browser.ie && Browser.version<9)){ preview.style.opacity=0; } previewOpen=true; } if (previewOpen){ showPreview(); preview.style.opacity=1; document.getElementById('dictionaryTitle').set('text',text); } else { showPreview() if (!(Browser.ie && Browser.version<9)) preview.morph({opacity:1}) else{ preview.style.opacity=1; preview.style.visibility='visible'; } document.getElementById('dictionaryTitle').set('text',text); } } function closePreview(){ var preview=document.getElementById('preview'); var preview_wrapper=document.getElementById('preview_wrapper'); var morphP; if (!(Browser.ie && Browser.version<9)){ morphP= new Fx.Morph(preview_wrapper,{ 'duration':'400',transition:Fx.Transitions.easeOut}); morphP.start({'left': window.getSize().x}).chain(function (){preview_wrapper.style.display='none';preview.src='';}); } else { preview_wrapper.style.display='none'; preview.src=''; } document.getElementById('dictionaryTitle').set('text','Dictionary') previewOpen=false; } function ShowSQL(popup){ if($$('#tables_ul li').length==0 && Empty(Ctrl("remote_server").value) ){ PSAlert.alert("Query empty!") } else { sqlOperation = "sqlPhrase"; if (popup){ var height = 580; var width = 515; var left = (screen.width)?(screen.width-width)/2:100; var top = (screen.height)?(screen.height-height)/2:100; window.open("sql.jsp",randomKey+'_'+sqlOperation,"height="+height+",width="+width+",left="+left+",top="+top+",resizable=yes,scrollbars=yes"); } else { openPreview('SQL phrase'); } } } function AnalyzeSQL(popup){ if($$('#tables_ul li').length==0 && Empty(Ctrl("remote_server").value) ){ PSAlert.alert("Query empty!") } else { sqlOperation = "sqlAnalyze"; if (popup){ var height = 580; var width = 515; var left = (screen.width)?(screen.width-width)/2:100; var top = (screen.height)?(screen.height-height)/2:100; window.open("sql.jsp",randomKey+'_'+sqlOperation,"height="+height+",width="+width+",left="+left+",top="+top+",resizable=yes,scrollbars=yes"); } else { openPreview('SQL analyze'); } } } function toggleTestConfiguration(){ var maskTestConf=Ctrl("maskTestConf"); var modifyParValue=document.getElementById("modifyParValue"); var saveParametersTr= Ctrl("saveParametersTr") if (maskTestConf.style.visibility=="hidden"){ var parameters=this.GetParametersArray() maskTestConf.style.visibility="visible"; maskTestConf.style.left=Ctrl("dictPanelCaptionTr").offsetWidth-maskTestConf.offsetWidth+13+'px'; if (parameters.length==0) saveParametersTr.style.visibility="hidden"; else { saveParametersTr.style.visibility="visible"; document.getElementById("saveParameters").set('checked',false) } } else{ maskTestConf.style.visibility="hidden"; modifyParValue.style.visibility="hidden"; saveParametersTr.style.visibility="hidden"; } } function ExecuteSQL(p_lShowAll,popup){ if( $$('#tables_ul li').length==0 && Empty(Ctrl("remote_server").value) ) { PSAlert.alert("Query empty!") } else { sqlOperation = "sqlQuery"; showAll = p_lShowAll; if (popup){ var height = 580; var width = 515; var left = (screen.width)?(screen.width-width)/2:100; var top = (screen.height)?(screen.height-height)/2:100; window.open("../visualquery/sql.jsp", randomKey+'_'+sqlOperation, "height="+height+",width="+width+",left="+left+",top="+top+",resizable=yes,scrollbars=yes"); } else { openPreview('Execute SQL') } } } function Find(findNext){ var tablesStop, i, reName, reDesc; if(typeof(findNext)=="undefined"){ tableDesc=Ctrl("tableDesc").value; tableName=Ctrl("tableName").value; fieldDesc=Ctrl("fieldDesc").value; fieldName=Ctrl("fieldName").value; lastFoundTableIdx=-1; lastFoundFieldIdx=-1; } if(lastFoundFieldIdx==-1){ try { reName = new RegExp(tableName); } catch (e) { reName = null; } try { reDesc = new RegExp(tableDesc); } catch (e) { reDesc = null; } if(tableDesc!=""){ tablesStop=false; for(i=lastFoundTableIdx+1;i-1){ tableToSearch=o_dictTables.getSelectedRow(); var fieldFound=false; try { reName = new RegExp(fieldName); } catch (e) { reName = null; } try { reDesc = new RegExp(fieldDesc); } catch (e) { reDesc = null; } for(i=lastFoundFieldIdx+1;i"; // fadeout block if supported this.b=b; if(this.t)clearTimeout(this.t); if(FadingId)clearInterval(FadingId); this.t=setTimeout("setFading(PSAlert.b,80,0,700,'function(){PSAlert.main.document.body.removeChild(PSAlert.b);}')",1200); } , init: function(w,s){ // save window this.main=w; this.classname=s||''; } // shutdown Alert object /* shut: function(){ // if redifine set if(this._alert!=null){ // restore old alert function this.main.alert=this._alert; // unset placeholder this._alert=null; } } */ }; }; // apply a fading effect to an object // by applying changes to its style // @o = object style // @b = begin opacity // @e = end opacity // @d = duration (millisec) // @f = function (optional) var FadingId=null; function setFading(o,b,e,d,f){ //setOpacity(o,0); FadingId=setInterval( function(){ b=stepFX(b,e,2); setOpacity(o,b/100); if(b==e){ if(FadingId){clearInterval(FadingId);FadingId=null;} if(typeof f=='function'){f();} o.style.display='none'; } },d/50 ); } // set opacity for element // @e element // @o opacity function setOpacity(e,o){ // for IE e.style.filter='alpha(opacity='+o*100+')'; // for others e.style.opacity=o; } // increment/decrement value in steps // checking for begin and end limits //@b begin //@e end //@s step function stepFX(b,e,s){ return b>e?b-s>e?b-s:e:b