// --------------------------------------------------------------- // SqlCtlDialog // --------------------------------------------------------------- function SqlCtlDialog(wrkfolder) { require(["dojo/text!desktop/text/sqlctldialog.html", "dijit/layout/ContentPane", "dijit/Dialog", "dijit/registry", "dijit/form/TextBox", "dijit/form/Button", "dojo/dom-construct", "dojo/dom"], function(snippet, ContentPane, Dialog, registry, TextBox, Button, domConstruct, dom) { //console.log ("SqlCtlDiqalog text: ", snippet); if (registry.byId("sqlCtlDialog")) { registry.byId("sqlCtlDialog").show(); return; } var sqlCtlDialog = new Dialog({ id: "sqlCtlDialog", title: "SQL Controls", style: "width: 1000px; height: 700px;", content: snippet }); sqlCtlDialog.show(); SqlCtlLoad(wrkfolder); }); } // --------------------------------------------------------------- // SqlCtlLoad: // --------------------------------------------------------------- function SqlCtlLoad(wrkfolder) { console.log ("SqlCtlLoad wrkfolder: ", wrkfolder); require(["dojo/ready", "dojo/_base/json", "dojo/request/xhr", "dijit/registry"], function(ready, dojo, xhr, registry){ var urlString = wrkfolder.sqlctlpath; xhr(urlString, { handleAs: "text", method: "GET" }).then(function(data){ var jsonResponse = dojo.fromJson(data); console.log("SqlCtlLoad jsonResponse: ", jsonResponse); SqlCtlNav(registry, jsonResponse); }, function(err){ // Handle the error condition }, function(evt){ // XHR2 events }); }); } // ----------------------------------------------------------- // // ----------------------------------------------------------- function SqlCtlNav(registry, jsonResponse) { var sql = jsonResponse; hugmarSettings.sql = sql; //console.log ("SqlCtl sql", sql); require(["dojo/dom", "dojo/dom-construct"], function(dom, domConstruct){ if (sql.env.cltype == "SUBFILE") { domConstruct.destroy("hdmSqlCtlGrpBy"); domConstruct.destroy("hdmSqlCtlHaving"); SqlCtlWhere(sql); // Where SqlCtlOrdBy(sql); // Order By SqlCtlButtons(sql); } if (sql.env.cltype == "SUBFGROUP") { SqlCtlWhere(sql); // Where SqlCtlGrpBy(sql); // Group By SqlCtlOrdBy(sql); // Order By SqlCtlHaving(sql); // Having SqlCtlButtons(sql); } return; }); } // ----------------------------------------------------------- // // ----------------------------------------------------------- function SqlCtlButtons(sql) { //console.log ("SqlCtlButtons I am here: "); require(["dojo/dom", "dojo/dom-construct", "dijit/registry"], function(dom, domConstruct, registry){ var sqlButton = registry.byId("hdmSqlCtlBut0"); if (sqlButton) { sqlButton.destroyRecursive(true); } var sqlButton = registry.byId("hdmSqlCtlBut1"); if (sqlButton) { sqlButton.destroyRecursive(true); } var sqlButton = registry.byId("hdmSqlCtlBut2"); if (sqlButton) { sqlButton.destroyRecursive(true); } var parNode = dom.byId("hdmSqlCtlButtons"); // Confirm parNode.appendChild(domConstruct.create("div", {id: "hdmSqlCtlBut0"})); SqlCtlOneBut("hdmSqlCtlBut0", "Confirm", "gif38", "confirm", "Confirm Sql Changes", sql); // Cancel parNode.appendChild(domConstruct.create("div", {id: "hdmSqlCtlBut1"})); SqlCtlOneBut("hdmSqlCtlBut1", "Cancel", "gif33", "cancel", "Cancel Sql Changes", sql); // Refresh //parNode.appendChild(domConstruct.create("div", {id: "hdmSqlCtlBut2"})); //SqlCtlOneBut("hdmSqlCtlBut2", "Refresh", "gif42", "refresh", "Refresh Sql Edit Panes", sql); return; }); } // ----------------------------------------------------------- // // ----------------------------------------------------------- function SqlCtlOneBut(domID, label, icon, action, title, sql) { require(["dojo/dom", "dijit/registry", "dijit/form/Button"], function(dom, registry, Button){ //console.log ("SqlCtlOneBut I am here: "); var sqlButton = registry.byId(domID); if (sqlButton) { sqlButton.destroyRecursive(true); } var dom = dom.byId(domID); var sqlButton = new Button({ label: label, iconClass: icon, jsId: action, sqlEnv: sql.env, onClick: function(evt) { var butNode = dijit.getEnclosingWidget(evt.target); //console.log("SqlCtlOneBut onClick butNode: ", butNode); switch (butNode.jsId) { case 'cancel': SqlCtlCancel(butNode.jsId, butNode.sqlEnv); break; case 'confirm': SqlCtlConfirm(butNode.jsId, butNode.sqlEnv); break; case 'refresh': SqlCtlWhere(sql); break; } }, title: title }, dom); }); } // ----------------------------------------------------------- // Remove Sql Tab // ----------------------------------------------------------- function SqlCtlCancel(sqlType, sqlEnv) { require(["dojo/ready", "dojo/_base/json", "dojo/request/xhr", "dijit/registry"], function(ready, dojo, xhr, registry){ console.log ("SqlCtlCancel: hdmSqlCtl ", hugmarSettings); var jsCaller = "SqlCtlCancel"; var jsonObj = SqlCtlSetJsonObj(jsCaller,"HWEBNAFB2","sqlcancel", hugmarSettings); jsonObj.procparm = sqlType; jsonObj.sqlrow.type = sqlType; var jsonString = dojo.toJson(jsonObj); var urlString = hugmarSettings.host.pgmdir + "/hwebhtp120.pgm?json=" + jsonString; dojo.xhrGet({ url: urlString, handleAs: "json", load: function(jsonResponse, ioArgs) { console.log("SqlCtlCancel jsonResponse: ", jsonResponse); if (registry.byId("sqlCtlDialog")) { registry.byId("sqlCtlDialog").destroyRecursive(false); return jsonResponse; } return jsonResponse; }, error: function(jsonResponse, ioArgs) { SqlCtlXhrGetError("SqlCtlCancel", ioArgs); return jsonResponse; } }); return; }); return; } // ----------------------------------------------------------- // SqlCtlConfirm: function to Confirm Sql Control Change // ----------------------------------------------------------- function SqlCtlConfirm(sqlType, sqlEnv) { require(["dojo/ready", "dojo/dom", "dojo/_base/json", "dojo/request/xhr", "dijit/registry"], function(ready, dom, dojo, xhr, registry){ console.log ("SqlCtlConfirm: hdmSqlCtl ", hugmarSettings); var jsCaller = "SqlCtlConfirm"; var jsonObj = SqlCtlSetJsonObj(jsCaller,"HWEBNAFB2","sqlconfirm", hugmarSettings); jsonObj.gridenv = sqlEnv; jsonObj.procparm = "sqlconfirm"; jsonObj.sqlrow.type = sqlType; var jsonString = dojo.toJson(jsonObj); var urlString = hugmarSettings.host.pgmdir + "/hwebhtp120.pgm?json=" + jsonString; if (registry.byId("sqlCtlDialog")) { registry.byId("sqlCtlDialog").destroyRecursive(false); } registry.byId("hdmMainStandby").show(); dojo.xhrGet({ url: urlString, handleAs: "json", load: function(jsonResponse, ioArgs) { //console.log("SqlCtlConfirm jsonResponse: ", jsonResponse); SqlCtlConfirmRsp(registry, dom, jsonResponse, sqlEnv); return jsonResponse; }, error: function(jsonResponse, ioArgs) { SqlCtlXhrGetError("SqlCtlConfirm", ioArgs); return jsonResponse; } }); return; }); } // ----------------------------------------------------------- // Sql Control Confirm Response // ----------------------------------------------------------- function SqlCtlConfirmRsp(registry, dom, jsonResponse, sqlEnv) { console.log ("SqlCtlConfirmRsp: jsonResponse ", jsonResponse); //alert("Send Refresh Here") jsonResponse.javascript = "hdfTopToolServer"; hdfiServerRsp(jsonResponse) return; } // ----------------------------------------------------------- // Set Standard JSON URL Parameters // ----------------------------------------------------------- function SqlCtlSetJsonObj(jsCaller, procId, docName, hugmarSettings) { var jsonObj = { javascript: jsCaller, procid: procId, procparm: " ", handle: hugmarSettings.host.handle, userid: hugmarSettings.nav.username, usercls: hugmarSettings.host.userclass, docfolder: hugmarSettings.host.wrkfolder, docname: docName + ".json", format: "json", sqlrow: {}, sqlenv: {}, gridenv: {}, webid: new Date().getTime() }; return jsonObj; } // ----------------------------------------------------------- // SqlCtl HTTP Error // ----------------------------------------------------------- function SqlCtlXhrGetError(origin, ioArgs) { var message = ""; switch(ioArgs.xhr.status){ case 200: message = origin + ": The IBM server responded normally, but an error occurred on the JavaScript client"; break; case 404: message = origin + ": The requested page on the IBM server was not found"; break; case 500: message = origin + ": The IBM server reported an error."; break; case 407: message = origin + ": You need to authenticate with a proxy."; break; default: message = origin + ": Unknown error."; } require(["dojo/ready", "dijit/Dialog"], function(ready, Dialog){ var dialog = new Dialog({ title: "SqlCtlXhrGet HTTP Server Error: ", style: "width: 400px", content: message + " " + "Please Contact IT"}); dialog.show(); }); return; } // ----------------------------------------------------------- // SqlCtlWhere: // ---------------------------------------------------------- function SqlCtlWhere(sql) { //console.log("SqlCtlWhere sql.whedata: ", sql.whedata); require(["dojo/dom", "dojo/dom-construct", "dijit/layout/ContentPane", "dijit/registry"], function(dom, domConstruct, ContentPane, registry){ if (registry.byId("hdmSqlCtlWhereGrid")) { registry.byId("hdmSqlCtlWhereGrid").destroyRecursive(true); } var dgridDomNode = domConstruct.create("div", {id: "hdmSqlCtlWhereGrid"}); domConstruct.place(dgridDomNode, "hdmSqlCtlWherePane"); SqlCtlWhereGrid(sql); // Grid }); return; } // ---------------------------------------------------------- // SqlCtlWhereGrid: // ---------------------------------------------------------- function SqlCtlWhereGrid(sql) { //console.log("SqlCtlWhereGrid sql: ", sql); require(["dgrid/OnDemandGrid", "dgrid/Selection", "dgrid/Keyboard", "dgrid/selector", "dgrid/Editor", "dgrid/extensions/ColumnHider", "dgrid/extensions/DijitRegistry", "dijit/form/FilteringSelect", "dijit/registry", "dstore/Memory", "dstore/Trackable", "dojo/store/Memory", "dojo/store/Observable", "dojo/data/ObjectStore", "dojo/dom", "dojo/dom-style", "dojo/_base/declare", "dojo/_base/lang", "dojo/domReady!"], function(Grid, Selection, Keyboard, selector, Editor, ColumnHider, DijitRegistry, FilteringSelect, registry, Memory, Trackable, DojoMemory, Observable, ObjectStore, dom, domStyle, declare, lang){ var whereCol = SqlCtlWhereCol(sql); var TrackableMemory = declare([Memory, Trackable]); whereStore = new TrackableMemory({ data: sql.whedata, idProperty: 'id' }); if (registry.byId("hdmSqlCtlWhereGrid")) { grid = registry.byId("hdmSqlCtlWhereGrid"); //console.log("grid.refresh: " + grid); grid.refresh(); return; } else { var grid = new (declare([Grid, Selection, Editor, DijitRegistry, Keyboard]))({ id : "hdmSqlCtlWhereGrid", collection: whereStore, columns: whereCol, selectionMode: "none" }, "hdmSqlCtlWhereGrid"); } //console.log("SqlCtlWhereGrid grid: ", grid); grid.on("dgrid-datachange", function(evt){ var rowid = grid.cell(evt).row.data.id; var colid = grid.cell(evt).column.id; var rowInt = parseInt(rowid); var wheData = hugmarSettings.sql.whedata[rowInt-1]; switch (colid) { case 'andor': wheData.andor = evt.value; break; case 'brck1': wheData.brck1 = evt.value; break; case 'fldname': wheData.fldname = evt.value; break; case 'oper': wheData.oper = evt.value; break; case 'opand': wheData.opand = evt.value; break; case 'brck2': wheData.brck2 = evt.value; break; default: console.log("SqlCtlWhereEdit Unknown Column ID: ", colid); } wheData.confirm = 'x'; hugmarSettings.sql.whedata[rowInt-1] = wheData; SqlCtlWhereGrid(hugmarSettings.sql); return; }); grid.on(".dgrid-cell:click", function(evt) { evt.preventDefault(); // prevent default browser context menu var selectedRow = grid.cell(evt).row.data; var selectedCell = grid.cell(evt).column; var rowId = selectedRow.id; if (selectedCell.field == "confirm" && selectedRow.confirm == "x") { //console.log("cell clicked: evt: ", evt); //console.log("cell clicked: selectedCell.field: ", selectedCell.field); console.log("cell clicked: selectedRow: ", selectedRow); SqlCtlWhereEdit("where", selectedRow, sql.env); return; } }); }); return; } // ----------------------------------------------------------- // Edit and Error Check Where Cell // ----------------------------------------------------------- function SqlCtlWhereEdit(sqlType, selectedRow, sqlEnv) { require(["dojo/ready", "dojo/_base/json", "dojo/request/xhr", "dijit/registry"], function(ready, dojo, xhr, registry){ var rowInt = parseInt(selectedRow.id); var wheData = hugmarSettings.sql.whedata[rowInt-1]; //console.log("SqlCtlWhereEdit wheData Before Replace: ", wheData); wheData.opand = globalModifyCell(wheData.opand); //console.log("SqlCtlWhereEdit wheData After Replace: ", wheData); var jsCaller = "SqlCtlWhereEdit"; var jsonObj = SqlCtlSetJsonObj(jsCaller,"HWEBNAFB2", "SqlCtl", hugmarSettings); jsonObj.procparm = "sqlchange"; jsonObj.sqlenv = sqlEnv; jsonObj.sqlrow = wheData; jsonObj.sqlrow.sqltype = sqlType; jsonObj.sqlrow.rrn = selectedRow.id; jsonObj.sqlrow.filler = " "; var jsonString = dojo.toJson(jsonObj); //console.log("SqlCtlWhereEdit jsonString: ", jsonString); var urlString = hugmarSettings.host.pgmdir + "/hwebhtp120.pgm?json=" + jsonString; dojo.xhrGet({ url: urlString, handleAs: "json", load: function(jsonResponse, ioArgs) { hugmarSettings.sql.whedata = jsonResponse.whedata; console.log("SqlCtlWhereEdit hugmarSettings.sql: ", hugmarSettings.sql); SqlCtlWhere(hugmarSettings.sql); return jsonResponse; }, error: function(jsonResponse, ioArgs) { SqlCtlXhrGetError("SqlCtlWhereEdit", ioArgs); return jsonResponse; } }); }); return; } // ----------------------------------------------------------- // Get Sql Where Columns: // ----------------------------------------------------------- function SqlCtlWhereCol(sql) { var whereCol = []; require(["dgrid/Editor", "dijit/form/CheckBox", "dijit/form/ComboBox", "dijit/form/FilteringSelect", "dojo/store/Memory", "dojo/store/Observable" ], function(Editor, CheckBox, ComboBox, FilteringSelect, DojoMemory, Observable ){ whereCol = [ {field: "id", id: "id", label: "", className: ["dgsshidden"]}, {field: "confirm", id: "confirm", label: " ", className: ["dgss40px"], sortable: false, formatter: function(val){ switch (val) { case '1': image = '1"; break; // Blank case '2': image = '"; break; // Confirmed case 'x': image = '"; break; // Dirty } return image; } }, {field: "andor", id: "andor", label: "and/or", className: ["dgss60px"], sortable: false, editor: FilteringSelect, editOn: 'click', editorArgs: { store: Observable(new DojoMemory({ idProperty: "id", data: [ {"id": "", "name": ""}, {"id": "and", "name": "and"}, {"id": "or", "name": "or"} ] })), maxHeight: 120, style: "width:50px;" }}, {field: "brck1", id: "brck1",label: " ", className: ["dgss40px"], sortable: false, editor: FilteringSelect, editOn: 'click', editorArgs: { store: Observable(new DojoMemory({ idProperty: "id", data: [ {"id": "", "name": ""}, {"id": "(", "name": "("} ] })), maxHeight: 120, style: "width:30px;" } }, {field: "fldname", id: "fldname", label: "field name", className: ["dgss160px"], sortable: false, editor: FilteringSelect, editorArgs: { store: Observable(new DojoMemory({ idProperty: "id", data: sql.whefld })), maxHeight: 400, style: "width:150px;" } }, {field: "oper", id: "oper", label: "operation", className: ["dgss110px"], sortable: false, editor: FilteringSelect, editorArgs: { store: Observable(new DojoMemory({ idProperty: "id", data: [ {id: "", name: ""}, {id: "equal", name: "equal"}, {id: "less than", name: "less than"}, {id: "less equal", name: "less equal"}, {id: "greater than", name: "greater than"}, {id: "greater equal", name: "greater equal"}, {id: "not equal", name: "not equal"}, {id: "in", name: "in"}, {id: "like", name: "like"}, {id: "between", name: "between"}, {id: "not in", name: "not in"}, {id: "not like", name: "not like"}, {id: "not between", name: "not between"} ] })), maxHeight: 210, style: "width:100px;" } }, {field: "opand", id: "opand", label: "Operand", className: ["dgss200px"], sortable: false, editor: "text" }, {field: "brck2", id: "brck2", label: " ", className: ["dgss40px"], sortable: false, editor: FilteringSelect, editOn: 'click', editorArgs: { store: Observable(new DojoMemory({ idProperty: "id", data: [ {"id": "", "name": ""}, {"id": ")", "name": ")"} ] })), maxHeight: 210, style: "width:30px;" } } ]; }); return whereCol; } // ----------------------------------------------------------- // SqlCtlGrpBy: // ---------------------------------------------------------- function SqlCtlGrpBy(sql) { require(["dojo/dom", "dojo/dom-construct", "dijit/registry", "dojo/domReady!"], function(dom, domConstruct, registry){ if (registry.byId("hdmSqlCtlGrpByGrid")) { registry.byId("hdmSqlCtlGrpByGrid").destroyRecursive(true); } var dgridDomNode = domConstruct.create("div", {id: "hdmSqlCtlGrpByGrid"}); domConstruct.place(dgridDomNode, "hdmSqlCtlGrpByPane"); SqlCtlGrpByGrid(sql); // Grid }); return; } // ----------------------------------------------------------- // Load Group By Grid // ----------------------------------------------------------- function SqlCtlGrpByGrid(sql) { //console.log("SqlCtlGrpBy sql: ", sql); require(["dgrid/OnDemandGrid", "dgrid/Selection", "dgrid/Keyboard", "dgrid/selector", "dgrid/Editor", "dgrid/extensions/ColumnHider", "dgrid/extensions/DijitRegistry", "dijit/form/ComboBox", "dijit/form/FilteringSelect", "dijit/registry", "dstore/Memory", "dojo/store/Memory", "dojo/store/Observable", "dojo/data/ObjectStore", "dojo/dom", "dojo/dom-style", "dojo/_base/declare", "dojo/_base/lang", "dojo/domReady!"], function(Grid, Selection, Keyboard, selector, Editor, ColumnHider, DijitRegistry, ComboBox, FilteringSelect, registry, Memory, DojoMemory, Observable, ObjectStore, dom, domStyle, declare, lang){ var grpByCol = SqlCtlGrpByCol(sql); //console.log("SqlCtlGrpBy grpByCol: ", grpByCol); //var dgridDomNode = dom.byId("hdmSqlCtlGrpByGrid"); //console.log("SqlCtlGrpBy dgridDomNode: ", dgridDomNode); if (registry.byId("hdmSqlCtlGrpByGrid")) { grid = registry.byId("hdmSqlCtlGrpByGrid"); console.log("SqlCtlGrpBy refresh: ", grid); grid.refresh(); return; } else { var grid = new (declare([Grid, Selection, Editor, DijitRegistry, Keyboard]))({ id : "hdmSqlCtlGrpByGrid", collection: Observable(new Memory({data: sql.grpdata})), columns: grpByCol, selectionMode: "none" }, "hdmSqlCtlGrpByGrid"); } grid.on("dgrid-datachange", function(evt){ var rowid = grid.cell(evt).row.data.id; var colid = grid.cell(evt).column.id; var rowInt = parseInt(rowid); var grpData = hugmarSettings.sql.grpdata[rowInt-1]; switch (colid) { case 'fldname': grpData.fldname = evt.value; break; case 'grpflag': grpData.grpflag = evt.value; break; default: console.log("SqlCtlGrpByEdit Unknown Column ID: ", colid); } grpData.confirm = 'x'; hugmarSettings.sql.grpdata[rowInt-1] = grpData; SqlCtlGrpByGrid(hugmarSettings.sql); }); grid.on(".dgrid-row .dgrid-cell:click", function(evt){ evt.preventDefault(); // prevent default browser context menu var selectedRow = grid.cell(evt).row.data; var selectedCell = grid.cell(evt).column; if (selectedCell.field === "confirm" && selectedRow.confirm == "x") { console.log("cell clicked: selectedRow ", selectedRow); SqlCtlGrpByEdit("grpby", selectedRow, sql.env); } }); }); } // ----------------------------------------------------------- // Edit and Error Check Where Cell // ----------------------------------------------------------- function SqlCtlGrpByEdit(sqlType, selectedRow, sqlEnv) { require(["dojo/ready", "dojo/_base/json", "dojo/request/xhr", "dijit/registry"], function(ready, dojo, xhr, registry){ var rowInt = parseInt(selectedRow.id); var grpData = hugmarSettings.sql.grpdata[rowInt-1]; console.log("SqlCtlGrpByEdit grpData: ", grpData); var jsCaller = "SqlCtlGrpByEdit"; var jsonObj = SqlCtlSetJsonObj(jsCaller,"HWEBNAFB2", "SqlCtl", hugmarSettings); jsonObj.procparm = "sqlchange"; jsonObj.sqlenv = sqlEnv; jsonObj.sqlrow = grpData; jsonObj.sqlrow.sqltype = sqlType; jsonObj.sqlrow.rrn = selectedRow.id; jsonObj.sqlrow.filler = " "; var jsonString = dojo.toJson(jsonObj); //console.log("SqlCtlGrpByEdit jsonString: ", jsonString); var urlString = hugmarSettings.host.pgmdir + "/hwebhtp120.pgm?json=" + jsonString; dojo.xhrGet({ url: urlString, handleAs: "json", load: function(jsonResponse, ioArgs) { console.log("SqlCtlGrpByEdit jsonResponse: ", jsonResponse); hugmarSettings.sql.grpdata = jsonResponse.grpdata; hugmarSettings.sql.orddata = jsonResponse.orddata; hugmarSettings.sql.ordfld = jsonResponse.ordfld; SqlCtlGrpBy(hugmarSettings.sql); SqlCtlOrdBy(hugmarSettings.sql); return jsonResponse; }, error: function(jsonResponse, ioArgs) { SqlCtlXhrGetError("SqlCtlGrpByEdit", ioArgs); return jsonResponse; } }); }); return; } // ----------------------------------------------------------- // Get Sql GrpBy Columns: // ----------------------------------------------------------- function SqlCtlGrpByCol(sql) { var grpByCol = []; require(["dgrid/Editor", "dijit/form/CheckBox", "dijit/form/ComboBox", "dijit/form/FilteringSelect", "dojo/store/Memory", "dojo/store/Observable" ], function(Editor, CheckBox, ComboBox, FilteringSelect, DojoMemory, Observable ){ grpByCol = [ {field: "id", id: "id", label: "", className: ["dgsshidden"]}, {field: "confirm", id: "confirm", label: " ", className: ["dgss40px"], sortable: false, formatter: function(val){ switch (val) { case '1': image = '1"; break; // Blank case '2': image = '"; break; // Confirmed case 'x': image = '"; break; // Dirty } return image; } }, {field: "fldname", id: "fldname", label: "field name", className: ["dgss180px"], sortable: false, editor: FilteringSelect, //editOn: 'click', editorArgs: { store: Observable(new DojoMemory({ idProperty: "id", data: sql.grpfld })), maxHeight: 400, style: "width:180px;" } }, {field: "grpflag", id: "grpflag", label: "Grouping", className: ["dgss120px"], sortable: false, editor: FilteringSelect, //editOn: 'click', editorArgs: { store: Observable(new DojoMemory({ idProperty: "id", data: [ {"id": "", "name": ""}, {"id": "C", "name": "Combined"}, {"id": "D", "name": "Description Only"}, {"id": "F", "name": "Field Only"}, {"id": "S", "name": "Split Columns"} ] })), maxHeight: 120, style: "width:120px;" } } ]; }); return grpByCol; } // ----------------------------------------------------------- // SqlCtlOrdBy: // ---------------------------------------------------------- function SqlCtlOrdBy(sql) { require(["dojo/dom", "dojo/dom-construct", "dijit/registry"], function(dom, domConstruct, registry){ if (registry.byId("hdmSqlCtlOrdByGrid")) { registry.byId("hdmSqlCtlOrdByGrid").destroyRecursive(true); } var dgridDomNode = domConstruct.create("div", {id: "hdmSqlCtlOrdByGrid"}); domConstruct.place(dgridDomNode, "hdmSqlCtlOrdByPane"); SqlCtlOrdByGrid(sql); // Grid }); return; } // ----------------------------------------------------------- // SqlCtlOrdBy: // ---------------------------------------------------------- function SqlCtlOrdByGrid(sql) { //console.log("SqlCtlOrdBy sql: ", sql); require(["dgrid/OnDemandGrid", "dgrid/Selection", "dgrid/Keyboard", "dgrid/selector", "dgrid/Editor", "dgrid/extensions/ColumnHider", "dgrid/extensions/DijitRegistry", "dijit/form/CheckBox", "dijit/form/ComboBox", "dijit/form/FilteringSelect", "dijit/registry", "dstore/Memory", "dojo/store/Memory", "dojo/store/Observable", "dojo/data/ObjectStore", "dojo/dom", "dojo/dom-style", "dojo/_base/declare", "dojo/_base/lang", "dojo/domReady!"], function(Grid, Selection, Keyboard, selector, Editor, ColumnHider, DijitRegistry, CheckBox, ComboBox, FilteringSelect, registry, Memory, DojoMemory, Observable, ObjectStore, dom, domStyle, declare, lang){ var ordByCol = SqlCtlOrdByCol(sql); //console.log("SqlCtlOrdBy ordByCol: ", ordByCol); if (registry.byId("hdmSqlCtlOrdByGrid")) { grid = registry.byId("hdmSqlCtlOrdByGrid"); grid.refresh(); return; } else { var grid = new (declare([Grid, Selection, Editor, DijitRegistry, Keyboard]))({ id : "hdmSqlCtlOrdByGrid", collection: Observable(new Memory({data: sql.orddata})), columns: ordByCol, selectionMode: "none" }, "hdmSqlCtlOrdByGrid"); } grid.on("dgrid-datachange", function(evt){ var rowid = grid.cell(evt).row.data.id; var colid = grid.cell(evt).column.id; var rowInt = parseInt(rowid); var ordData = hugmarSettings.sql.orddata[rowInt-1]; switch (colid) { case 'fldname': ordData.fldname = evt.value; break; case 'fldsort': ordData.fldsort = evt.value; break; case 'subtot': { console.log("SqlCtlOrdBy subtot changed: ", evt.value); ordData.subtot = evt.value; } break; default: console.log("SqlCtlOrdByEdit Unknown Column ID: ", colid); } ordData.confirm = 'x'; hugmarSettings.sql.orddata[rowInt-1] = ordData; SqlCtlOrdByGrid(hugmarSettings.sql); }); grid.on(".dgrid-row .dgrid-cell:click", function(evt){ evt.preventDefault(); // prevent default browser context menu var selectedRow = grid.cell(evt).row.data; var selectedCell = grid.cell(evt).column; if (selectedCell.field == "confirm" && selectedRow.confirm == "x") { console.log("cell clicked: selectedRow ", selectedRow); SqlCtlOrdByEdit("ordby", selectedRow, sql.env); } }); }); return; } // ----------------------------------------------------------- // Edit and Error Check OrdBy Cell // ----------------------------------------------------------- function SqlCtlOrdByEdit(sqlType, selectedRow, sqlEnv) { require(["dojo/ready", "dojo/_base/json", "dojo/request/xhr", "dijit/registry"], function(ready, dojo, xhr, registry){ var rowInt = parseInt(selectedRow.id); var ordData = hugmarSettings.sql.orddata[rowInt-1]; console.log("SqlCtlOrdByEdit ordData: ", ordData); var jsCaller = "SqlCtlOrdByEdit"; var jsonObj = SqlCtlSetJsonObj(jsCaller,"HWEBNAFB2", "SqlCtl", hugmarSettings); jsonObj.procparm = "sqlchange"; jsonObj.sqlenv = sqlEnv; jsonObj.sqlrow = ordData; jsonObj.sqlrow.sqltype = sqlType; jsonObj.sqlrow.rrn = selectedRow.id; jsonObj.sqlrow.filler = " "; var jsonString = dojo.toJson(jsonObj); console.log("SqlCtlOrdByEdit jsonString: ", jsonString); var urlString = hugmarSettings.host.pgmdir + "/hwebhtp120.pgm?json=" + jsonString; dojo.xhrGet({ url: urlString, handleAs: "json", load: function(jsonResponse, ioArgs) { console.log("SqlCtlOrdByEdit jsonResponse: ", jsonResponse); hugmarSettings.sql.orddata = jsonResponse.orddata; SqlCtlOrdBy(hugmarSettings.sql); return jsonResponse; }, error: function(jsonResponse, ioArgs) { SqlCtlXhrGetError("SqlCtlOrdByEdit", ioArgs); return jsonResponse; } }); }); return; } // ----------------------------------------------------------- // Get Sql OrdBy Columns: // ----------------------------------------------------------- function SqlCtlOrdByCol(sql) { var ordByCol = []; require(["dgrid/Editor", "dijit/form/CheckBox", "dijit/form/ComboBox", "dijit/form/FilteringSelect", "dojo/store/Memory", "dojo/store/Observable" ], function(Editor, CheckBox, ComboBox, FilteringSelect, DojoMemory, Observable ){ if (sql.env.cltype == "SUBFILE") { ordByCol = [ {field: "id", id: "id", label: "", className: ["dgsshidden"]}, {field: "confirm", id: "confirm", label: " ", className: ["dgss40px"], sortable: false, formatter: function(val){ switch (val) { case '1': image = '1"; break; // Blank case '2': image = '"; break; // Confirmed case 'x': image = '"; break; // Dirty } return image; } }, {field: "fldname", id: "fldname", label: "field name", className: ["dgss180px"], sortable: false, editor: FilteringSelect, editorArgs: { store: Observable(new DojoMemory({ idProperty: "id", data: sql.ordfld })), maxHeight: 400, style: "width:180px;" } }, {field: "fldsort", id: "fldsort", label: "Sort", className: ["dgss80px"], sortable: false, editor: FilteringSelect, editorArgs: { store: Observable(new DojoMemory({ idProperty: "id", data: [ {"id": "blank", "name": ""}, {"id": "A", "name": "Ascend"}, {"id": "D", "name": "Descend"} ] })), maxHeight: 200, style: "width:80px;" } } ]; } if (sql.env.cltype == "SUBFGROUP") { ordByCol = [ {field: "id", id: "id", label: "", className: ["dgsshidden"]}, {field: "confirm", id: "confirm", label: " ", className: ["dgss40px"], sortable: false, formatter: function(val){ switch (val) { case '1': image = '1"; break; // Blank case '2': image = '"; break; // Confirmed case 'x': image = '"; break; // Dirty } return image; } }, {field: "fldname", id: "fldname", label: "field name", className: ["dgss180px"], sortable: false, editor: FilteringSelect, editorArgs: { store: Observable(new DojoMemory({ idProperty: "id", data: sql.ordfld })), maxHeight: 400, style: "width:180px;" } }, {field: "fldsort", id: "fldsort", label: "Sort", className: ["dgss60px"], sortable: false, editor: FilteringSelect, editorArgs: { store: Observable(new DojoMemory({ idProperty: "id", data: [ {"id": "blank", "name": ""}, {"id": "A", "name": "Ascend"}, {"id": "D", "name": "Descend"} ] })), maxHeight: 200, style: "width:80px;" } }, {field: "subtot", id: "subtot", label: "Total", className: ["dgss30px"], sortable: false, editor: CheckBox, get: function(item){ //console.log("get: ", item); if (item.subtot == "on") {return true;} else {return false;}}, set: function(item){ //console.log("set: ", item); return item.subtot == false;}, editorArgs: { } } ]; } }); return ordByCol; } // ----------------------------------------------------------- // SqlCtlHaving: // ---------------------------------------------------------- function SqlCtlHaving(sql) { //console.log("SqlCtlHaving sql: ", sql); require(["dojo/dom", "dojo/dom-construct", "dijit/layout/ContentPane", "dijit/registry"], function(dom, domConstruct, ContentPane, registry){ if (registry.byId("hdmSqlCtlHavingGrid")) { registry.byId("hdmSqlCtlHavingGrid").destroyRecursive(true); } var dgridDomNode = domConstruct.create("div", {id: "hdmSqlCtlHavingGrid"}); domConstruct.place(dgridDomNode, "hdmSqlCtlHavingPane"); SqlCtlHavingGrid(sql); // Grid }); return; } // ----------------------------------------------------------- // SqlCtlHavingGrid: // ---------------------------------------------------------- function SqlCtlHavingGrid(sql) { //console.log("SqlCtlHaving sql: ", sql); require(["dgrid/OnDemandGrid", "dgrid/Selection", "dgrid/Keyboard", "dgrid/selector", "dgrid/Editor", "dgrid/extensions/ColumnHider", "dgrid/extensions/DijitRegistry", "dijit/form/FilteringSelect", "dijit/registry", "dstore/Memory", "dojo/store/Memory", "dojo/store/Observable", "dojo/data/ObjectStore", "dojo/dom", "dojo/dom-style", "dojo/_base/declare", "dojo/_base/lang", "dojo/domReady!"], function(Grid, Selection, Keyboard, selector, Editor, ColumnHider, DijitRegistry, FilteringSelect, registry, Memory, DojoMemory, Observable, ObjectStore, dom, domStyle, declare, lang){ //registry.byId("hdmSqlCtl").havingData = havingData; var havingCol = SqlCtlHavingCol(sql); //console.log("SqlCtlHaving havingCol: ", havingCol); if (registry.byId("hdmSqlCtlHavingGrid")) { grid = registry.byId("hdmSqlCtlHavingGrid"); //console.log("grid.refresh: " + grid); grid.refresh(); return; } else { var grid = new (declare([Grid, Selection, Editor, DijitRegistry, Keyboard]))({ id : "hdmSqlCtlHavingGrid", collection: Observable(new Memory({data: sql.havdata})), columns: havingCol, selectionMode: "none" }, "hdmSqlCtlHavingGrid"); } grid.on("dgrid-datachange", function(evt){ var rowid = grid.cell(evt).row.data.id; var colid = grid.cell(evt).column.id; var rowInt = parseInt(rowid); var havData = hugmarSettings.sql.havdata[rowInt-1]; switch (colid) { case 'andor': havData.andor = evt.value; break; case 'brck1': havData.brck1 = evt.value; break; case 'fldname': havData.fldname = evt.value; break; case 'oper': havData.oper = evt.value; break; case 'opand': havData.opand = evt.value; break; case 'brck2': wheData.brck2 = evt.value; break; default: console.log("SqlCtlHavingEdit Unknown Column ID: ", colid); } havData.confirm = 'x'; hugmarSettings.sql.havdata[rowInt-1] = havData; SqlCtlHavingGrid(hugmarSettings.sql); }); grid.on(".dgrid-row .dgrid-cell:click", function(evt){ evt.preventDefault(); // prevent default browser context menu var selectedRow = grid.cell(evt).row.data; var selectedCell = grid.cell(evt).column; if (selectedCell.field === "confirm") { console.log("cell clicked: selectedRow ", selectedRow); SqlCtlHavingEdit("having", selectedRow, sql.env); } }); }); return; } // ----------------------------------------------------------- // Edit and Error Check Having Cell // ----------------------------------------------------------- function SqlCtlHavingEdit(sqlType, selectedRow, sqlEnv) { require(["dojo/ready", "dojo/_base/json", "dojo/request/xhr", "dijit/registry"], function(ready, dojo, xhr, registry){ var rowInt = parseInt(selectedRow.id); var havData = hugmarSettings.sql.havdata[rowInt-1]; console.log("SqlCtlHavingEdit havData: ", havData); var jsCaller = "SqlCtlHavingEdit"; var jsonObj = SqlCtlSetJsonObj(jsCaller,"HWEBNAFB2", "SqlCtl", hugmarSettings); jsonObj.procparm = "sqlchange"; jsonObj.sqlenv = sqlEnv; jsonObj.sqlrow = havData; jsonObj.sqlrow.sqltype = sqlType; jsonObj.sqlrow.rrn = selectedRow.id; jsonObj.sqlrow.filler = " "; var jsonString = dojo.toJson(jsonObj); console.log("SqlCtlHavingEdit jsonString: ", jsonString); var urlString = hugmarSettings.host.pgmdir + "/hwebhtp120.pgm?json=" + jsonString; dojo.xhrGet({ url: urlString, handleAs: "json", load: function(jsonResponse, ioArgs) { console.log("SqlCtlHavingEdit jsonResponse: ", jsonResponse); hugmarSettings.sql.havdata = jsonResponse.havdata; SqlCtlWhere(hugmarSettings.sql); return jsonResponse; }, error: function(jsonResponse, ioArgs) { SqlCtlXhrGetError("SqlCtlHavingEdit", ioArgs); return jsonResponse; } }); /* xhr(urlString, { handleAs: "text", method: "GET" }).then(function(data){ console.log("SqlCtlHavingEdit data: ", data); }, function(err){ // Handle the error condition }, function(evt){ // XHR2 console.log("SqlCtlHavingEdit XHR2 evt: ", evt); }); */ }); return; } // ----------------------------------------------------------- // Get Sql Having Columns: // ----------------------------------------------------------- function SqlCtlHavingCol(sql) { var havingCol = []; require(["dgrid/Editor", "dijit/form/CheckBox", "dijit/form/ComboBox", "dijit/form/FilteringSelect", "dojo/store/Memory", "dojo/store/Observable" ], function(Editor, CheckBox, ComboBox, FilteringSelect, DojoMemory, Observable ){ havingCol = [ {field: "id", id: "id", label: "", className: ["dgsshidden"]}, {field: "confirm", id: "confirm", label: " ", className: ["dgss40px"], sortable: false, formatter: function(val){ switch (val) { case '1': image = '1"; break; // Blank case '2': image = '"; break; // Confirmed case 'x': image = '"; break; // Dirty } //console.log("Having Column confirm image: ", image); return image; } }, {field: "andor", id: "andor", label: "and/or", className: ["dgss60px"], sortable: false, editor: FilteringSelect, editOn: 'click', editorArgs: { store: Observable(new DojoMemory({ idProperty: "id", data: [ {"id": "", "name": ""}, {"id": "and", "name": "and"}, {"id": "or", "name": "or"} ] })), maxHeight: 120, style: "width:50px;" }}, {field: "brck1", id: "brck1",label: " ", className: ["dgss40px"], sortable: false, editor: FilteringSelect, editOn: 'click', editorArgs: { store: Observable(new DojoMemory({ idProperty: "id", data: [ {"id": "", "name": ""}, {"id": "(", "name": "("} ] })), maxHeight: 120, style: "width:30px;" } }, {field: "fldname", id: "fldname", label: "field name", className: ["dgss160px"], sortable: false, editor: FilteringSelect, editorArgs: { store: Observable(new DojoMemory({ idProperty: "id", data: sql.havfld })), maxHeight: 400, style: "width:150px;" } }, {field: "oper", id: "oper", label: "operation", className: ["dgss110px"], sortable: false, editor: FilteringSelect, editorArgs: { store: Observable(new DojoMemory({ idProperty: "id", data: [ {id: "blank", name: ""}, {id: "equal", name: "equal"}, {id: "lessthan", name: "less than"}, {id: "lessequal", name: "less equal"}, {id: "greaterthan", name: "greater than"}, {id: "greaterequal", name: "greater equal"}, {id: "notequal", name: "not equal"}, {id: "in", name: "in"}, {id: "like", name: "like"}, {id: "between", name: "between"}, {id: "not in", name: "not in"}, {id: "not like", name: "not like"}, {id: "not between", name: "not between"} ] })), maxHeight: 210, style: "width:100px;" } }, {field: "opand", id: "opand", label: "Operand", className: ["dgss200px"], sortable: false, editor: "text" }, {field: "brck2", id: "brck2", label: " ", className: ["dgss40px"], sortable: false, editor: FilteringSelect, editOn: 'click', editorArgs: { store: Observable(new DojoMemory({ idProperty: "id", data: [ {"id": "", "name": ""}, {"id": ")", "name": ")"} ] })), maxHeight: 210, style: "width:30px;" } } ]; }); return havingCol; }