// This array holds all table data | // index field info | // 0 table logical name | // 1 table physical name | // 2 table comment | // 3 check | // 4 company | // 5 extender type | // 6 array of all fields | // |~> | // 1 field name | // 0 field description | // 2 field type | // 3 field len | // 4 field dec | // 5 extender type | // 7 array of all relation | // 0 Description | // 1 Linked Field | // 2 Linked Table | // 3 Linked Table Field | // 4 Join Type | // 5 Relation Type | // 6 extender type | // 8 array of all indexes | // 0 index expression | // 1 unique | // 2 extender type | // 9 external table | var allTables = new Array(); // This array holds all table data | // index field info | // 0 table logical name | // 1 table physical name | // 2 extender type | // 3 check | // 4 company | // 5 table date | // 6 array of extender fields | // 0 field name | // 1 field type | // 2 field len | // 3 field dec | // 4 field comment | // 5 field check | // 6 field default | // 7 field not null | // 8 field key | // 7 array of extender relations| // 0 Description | // 1 Linked Field | // 2 Linked Table | // 3 Linked Table Field | // 4 Join Type | // 5 Relation Type | // 8 array of extender indexes | // 0 expression | // 1 unique | // 9 external table | // 10 server esterno | var extendedItems; //var extendedTables=","; var m_bUpdated; //Lo stato della query: modificato o meno var m_cAction=""; var associateServer=false; var tempFilename = ""; //Il nome del file selezionato var CSV_SEP = "#!$"; var selectedItem; var m_cProgName="spadministration_table_extender"; function DoLoad(){ GetTables(); //Richiede la lista delle tabelle al server e li salva nell'array "allTables" OpenExtenderXDC(); //Carica i dati dell'estensione for (var i=0; i0){ alert("Access Denied."); } else if (At("ClassNotFoundException: SPXDCProxy", tables_prop)>0){ alert("Installation incomplete: PortalStudio required to use SitePainter Extender."); } else { var l_oXdc = new TrsJavascript(); l_oXdc.reset(); l_oXdc.SetRow(0); l_oXdc.BuildProperties(tables_prop); var numTables = GetProperty(l_oXdc,'Rows','N'); for(var i=0;i bb) return 1; if (aa < bb) return -1; return 0; } function SelectDictionaryTable(table){ for (var i=0;i-1){ document.getElementById("lbl_fields").innerHTML = "Fields of " + "" + allTables[parseInt(o_dictTables.getSelectedIndexes())][2] + ""; document.getElementById("lbl_indexes").innerHTML = "Indexes of " + "" + allTables[parseInt(o_dictTables.getSelectedIndexes())][2] + ""; document.getElementById("lbl_relations").innerHTML = "Relations of " + "" + allTables[parseInt(o_dictTables.getSelectedIndexes())][2] + ""; GetFieldsIndexesRelations(parseInt(o_dictTables.getSelectedIndexes())); } } function GetFieldsIndexesRelations(ofTable){ FetchData(ofTable); var mytable = document.getElementById("dictFields"); var numRows = mytable.rows.length; for(var i=0; i-1 && allTables[ofTable][6]==null){ var oField; //Fields response = new JSURL("../servlet/SPXDCProxy?action=fields&table=" + allTables[ofTable][0], true); response = response.Response(); oFields = response.split(CSV_SEP); allTables[ofTable][6] = new Array(); if (oFields[0]=="* --- Visual Query Fields 1.0 ---*") { for (var i=1; i0; i++){ oIndex = oIndexes[i].split("|"); unique = (Lower(Left(oIndex[0],6))=="unique" ? true : false); allIndexes[i-1] = new Array ((unique ? Substr(oIndex[0], 8) : oIndex[0]), unique, oIndex[1]); } } else { allIndexes[0] = new Array("Server Error","",""); } //Relations response = new JSURL("../servlet/SPXDCProxy?action=relations&table=" + allTables[ofTable][0], true); response = response.Response(); oRelations = response.split(CSV_SEP); allTables[ofTable][7] = new Array(); allRelations = allTables[ofTable][7]; if (oRelations[0]=="* --- Visual Query Relations 1.0 ---*") { for (var i=1; i0; i++){ oRelation = oRelations[i].split("|"); allRelations[i-1] = new Array (oRelation[0],oRelation[1],oRelation[2],oRelation[3],oRelation[4],oRelation[5],oRelation[6]); } } else { allRelations[0] = new Array("Server Error","","","","","",""); } } } function MoveUpDownDictTables(){ var keyCode = GetKeyCode((IsIE())?event:e); if (keyCode==38 || keyCode==40){ var currentPos = parseInt(o_dictTables.getSelectedIndexes()); moveOffset=0; if (keyCode==38){ if (currentPos>0) moveOffset=-1; //UP } else if (keyCode==40){ if (currentPos+1-1 && moveOffset!=0) o_dictTables.setItemSelected(o_dictTables.getItem(currentPos+moveOffset), true); } else if (keyCode==35){ //End = 35 o_dictTables.setItemSelected(o_dictTables.getItem(document.getElementById("dictTables").rows.length-1), true); } else if (keyCode==36){ //Home = 36 o_dictTables.setItemSelected(o_dictTables.getItem(0), true); } } function MoveUpDownDictFields(){ var keyCode = GetKeyCode((IsIE())?event:e); if (keyCode==38 || keyCode==40){ var currentPos = parseInt(o_dictFields.getSelectedIndexes()); moveOffset=0; if (keyCode==38){ if (currentPos>0) moveOffset=-1; //UP } else if (keyCode==40){ if (currentPos+1-1 && moveOffset!=0) o_dictFields.setItemSelected(o_dictFields.getItem(currentPos+moveOffset), true); } else if (keyCode==35){ //End=35 o_dictFields.setItemSelected(o_dictFields.getItem(document.getElementById("dictFields").rows.length-1), true); } else if (keyCode==36){ //Home=36 o_dictFields.setItemSelected(o_dictFields.getItem(0), true); } else if (keyCode==13){ EditField(); } } function MoveUpDownDictIndexes(){ var keyCode = GetKeyCode((IsIE())?event:e); if (keyCode==38 || keyCode==40){ var currentPos = parseInt(o_dictIndexes.getSelectedIndexes()); moveOffset=0; if (keyCode==38){ if (currentPos>0) moveOffset=-1; //UP } else if (keyCode==40){ if (currentPos+1-1 && moveOffset!=0) o_dictIndexes.setItemSelected(o_dictIndexes.getItem(currentPos+moveOffset), true); } else if (keyCode==35){ //End=35 o_dictIndexes.setItemSelected(o_dictIndexes.getItem(document.getElementById("dictIndexes").rows.length-1), true); } else if (keyCode==36){ //Home=36 o_dictIndexes.setItemSelected(o_dictIndexes.getItem(0), true); } else if (keyCode==13){ EditField(); } } function MoveUpDownDictRelations(){ var keyCode = GetKeyCode((IsIE())?event:e); if (keyCode==38 || keyCode==40){ var currentPos = parseInt(o_dictRelations.getSelectedIndexes()); moveOffset=0; if (keyCode==38){ if (currentPos>0) moveOffset=-1; //UP } else if (keyCode==40){ if (currentPos+1-1 && moveOffset!=0) o_dictRelations.setItemSelected(o_dictRelations.getItem(currentPos+moveOffset), true); } else if (keyCode==35){ //End=35 o_dictRelations.setItemSelected(o_dictRelations.getItem(document.getElementById("dictRelations").rows.length-1), true); } else if (keyCode==36){ //Home=36 o_dictRelations.setItemSelected(o_dictRelations.getItem(0), true); } else if (keyCode==13){ EditField(); } } function LoadExtenderTables(prop){ var numTables, numFields, numIndexes, numRelations, idx; var l_oXdc = new TrsJavascript(); l_oXdc.reset(); l_oXdc.SetRow(0); var l_oFields = new TrsJavascript(); l_oFields.reset(); l_oFields.SetRow(0); var l_oIndexes = new TrsJavascript(); l_oIndexes.reset(); l_oIndexes.SetRow(0); var l_oRelations = new TrsJavascript(); l_oRelations.reset(); l_oRelations.SetRow(0); extendedItems = new Array(); l_oXdc.BuildProperties(prop); numTables = GetProperty(l_oXdc,'Rows','N'); for (var i=0; i-1) { var tableName = allTables[tblIdx][0]; var eTblIdx=-1; var stop = false; for (var i=0; i-1) { var tableName = allTables[tblIdx][0]; var eTblIdx=-1, eIdxIdx=-1; var stop = false; for (var i=0; i-1) { var tableName = allTables[tblIdx][0]; var eTblIdx=-1, eIdxIdx=-1; var stop = false; for (var i=0; i-1) { var tableName = allTables[tblIdx][0]; var fieldName = allTables[tblIdx][6][fldIdx][0]; var stop = false; var eTblIdx, eFldIdx; if(FieldIsExtender(tableName, fieldName)) { for (var i=0; i-1) { var tableName = allTables[tblIdx][0]; var indexExp = allTables[tblIdx][8][indexIdx][0]; var stop = false; var eTblIdx, eIndexIdx; if(IndexIsExtender(tableName, indexExp)) { for (var i=0; i-1) { var tableName = allTables[tblIdx][0]; var relDesc = allTables[tblIdx][7][relationIdx][0]; var stop = false; var eTblIdx, eRelationIdx; if(RelationIsExtender(tableName, relDesc)) { for (var i=0; i-1) extendedItems[et][6].splice(eFldIdx,1); } else idx++; } // posso fare il merge MergeFields(fields, et, ef, t, f) } } function UpdateIndex(action, exp, unique, et, eidx, t, idx) { if (action=="edit") { extendedItems[et][5]=DateTimeToChar(DateTime()); //Bisogna mettere qui la data del server allTables[t][8][idx][0]=extendedItems[et][8][eidx][0]=exp; allTables[t][8][idx][1]=extendedItems[et][8][eidx][1]=unique; } else if (action=="add"){ if (et==-1) { et=AddEmptyExtentionTable(); } idx=allTables[t][8].length; allTables[t][8][idx]=new Array(); eidx=extendedItems[et][8].length; extendedItems[et][0]=allTables[t][0]; extendedItems[et][5]=DateTimeToChar(DateTime()); //Bisogna mettere qui la data del server extendedItems[et][8][eidx]=new Array(); allTables[t][8][idx][0]=extendedItems[et][8][eidx][0]=exp; allTables[t][8][idx][1]=extendedItems[et][8][eidx][1]=unique; allTables[t][8][idx][2]="C"; } UpdateFields(); m_bUpdated=true; } function UpdateRelation(action, linkedTable, linkedTableDesc, fieldString, fkFieldString, fieldDescString, et, er, t, r) { if (action=="edit") { extendedItems[et][5]=DateTimeToChar(DateTime()); //Bisogna mettere qui la data del server allTables[t][7][r][0]=extendedItems[et][7][er][0]=linkedTableDesc+"("+fieldDescString+")"; allTables[t][7][r][1]=extendedItems[et][7][er][1]=fieldString; allTables[t][7][r][2]=extendedItems[et][7][er][2]=linkedTable; allTables[t][7][r][3]=extendedItems[et][7][er][3]=fkFieldString; allTables[t][7][r][4]=extendedItems[et][7][er][4]=1; } else if (action=="add"){ if (et==-1) { et=AddEmptyExtentionTable(); } r=allTables[t][7].length; allTables[t][7][r]=new Array(); er=extendedItems[et][7].length; extendedItems[et][0]=allTables[t][0]; extendedItems[et][5]=DateTimeToChar(DateTime()); //Bisogna mettere qui la data del server extendedItems[et][7][er]=new Array(); allTables[t][7][r][0]=extendedItems[et][7][er][0]=linkedTableDesc+"("+fieldDescString+")"; allTables[t][7][r][1]=extendedItems[et][7][er][1]=fieldString; allTables[t][7][r][2]=extendedItems[et][7][er][2]=linkedTable; allTables[t][7][r][3]=extendedItems[et][7][er][3]=fkFieldString; allTables[t][7][r][4]=extendedItems[et][7][er][4]=1; allTables[t][7][r][6]="C"; } UpdateFields(); m_bUpdated=true; } function AddEmptyExtentionTable(){ var et=extendedItems.length; extendedItems[et]=new Array(); extendedItems[et][6]=new Array(); extendedItems[et][7]=new Array(); extendedItems[et][8]=new Array(); return et; } function DeleteElement(type, et, eElm, t, elm) { switch(type) { case "table": allTables.splice(t,1); extendedItems.splice(et,1); break; case "field": allTables[t][6].splice(elm,1); extendedItems[et][6].splice(eElm,1); break; case "index": allTables[t][8].splice(elm,1); extendedItems[et][8].splice(eElm,1); break; case "relation": allTables[t][7].splice(elm,1); extendedItems[et][7].splice(eElm,1); break; } if(eElm==null){ document.getElementById("dictTables").deleteRow(t); if(t>0) o_dictTables.setItemSelected(o_dictTables.getItem(t-1), true); } else { if(extendedItems[et][6].length==0 && extendedItems[et][8].length==0 && extendedItems[et][7].length==0) { extendedItems.splice(et, 1); } } UpdateFields(); m_bUpdated=true; } function FieldIsExtender(t,f) { var result=false; for (var i=0; i