Skip to content

Instantly share code, notes, and snippets.

@HDevine

HDevine/msaw.js Secret

Created May 9, 2017 14:17
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save HDevine/2dc23a3315165475daa7ac4cec207947 to your computer and use it in GitHub Desktop.
Save HDevine/2dc23a3315165475daa7ac4cec207947 to your computer and use it in GitHub Desktop.
define([
"dojo/_base/declare",
"dojo/on",
"dojo/dom-attr",
"dojo/request",
"dojo/_base/lang",
"dijit/registry",
"dijit/form/Button",
"dijit/form/ComboBox",
"dijit/form/DateTextBox",
"dijit/form/Textarea",
"dijit/form/TextBox",
"dijit/Menu",
"dijit/MenuItem",
"dijit/ConfirmDialog",
"dstore/Memory",
"dstore/RequestMemory",
"dstore/Trackable",
"dstore/legacy/DstoreAdapter",
"dstore/Tree",
"dgrid1/OnDemandGrid",
"dgrid1/Tree",
"dgrid1/extensions/Pagination",
"dgrid1/extensions/ColumnResizer",
"dgrid1/extensions/DijitRegistry",
"dgrid1/Selection",
"dgrid1/Editor",
"dgrid1/Selector",
"dgrid1/extensions/ColumnHider"
], function(declare, on, domAttr, request, lang, registry, Button, ComboBox, DateTextBox, Textarea, Textbox, Menu, MenuItem, ConfirmDialog,
Memory, RequestMemory, Trackable, DstoreAdapter, TreeStore, Grid, Tree, Pagination, ColumnResizer, DijitRegistry,Selection, Editor,
Selector, ColumnHider) {
return {
msawGrid: null,
approachStore: null,
populateMainPage: function() {
var mod=this;
var StandardGrid = declare([Grid, Tree, Selection, Pagination, ColumnResizer, DijitRegistry]);
var TreeMemory = declare([RequestMemory, TreeStore]);
mod.approachStore = new TreeMemory({target: "msawGetApproachControls.php", idProperty: 'id',
month: null,
getChildren: function(object) {
return this.root.filter({parent: this.getIdentity(object), month: this.month});
},
mayHaveChildren: function(item) {
return item.hasChildren == true;
}
});
/* Define the MSAW Approaches Grid */
if (!registry.byId("approachGrid")) {
mod.msawGrid = new StandardGrid({
columns: {
site: {label: "LOCID", renderExpando: true, field: "site", width: 100 },
month: {label: "QA Annual Month", field: "month", width: 100, renderCell:mod.formatQAMonth },
lastqa: {label: "Date", field: "lastqa"},
review: {label: "Pass/Fail", field: "review"},
comments: {label: "Comments", field: "comments"}
},
loadingMessage: "Loading MSAW Approaches...",
errorMessage: "Error loading MSAW Approaches...",
collection: mod.approachStore.filter(o=>o.parent == undefined),
sort: [{property: "site", decending: true}],
rowsPerPage: 50
}, "approachGrid");
}
/* Create a menu to allow the user to add QA Annual Review mods */
var activeItem;
on(mod.msawGrid, ".dgrid-row:contextmenu", function(evt){
evt.preventDefault(); // prevent default browser context menu
var row = mod.msawGrid.row(evt);
activeItem = row && row.data;
if (activeItem.type == "site") {
registry.byId("menuAddQA").set("disabled", false);
}
if (activeItem.type == "review") {
registry.byId("menuAddQA").set("disabled", true);
}
});
mod.msawGrid.on("dgrid-refresh-complete", function(evt) {
registry.byId("sdsStandby").hide();
});
var menu = new Menu({
targetNodeIds: [mod.msawGrid.domNode],
selector: '.dgrid-content .dgrid-row'
});
menu.addChild(new MenuItem({
id: "menuAddQAAnnual",
label: "Add QA Annual Review",
iconClass: "msawAddQA",
onClick: function() {
mod.showAddQAReviewDialog(activeItem.site);
}
}));
menu.addChild(new MenuItem({
id: "menuAddQARoutine",
label: "Add QA Routine Review",
iconClass: "msawAddQA",
onClick: function() {
alert("QA Routine Review here....");
}
}));
/* Create QA Annual Review Button */
var btnQAReview = new Button({
id: "qa_annual_review_button",
label: "QA Annual Review",
onClick: function() {
mod.showQADueDialog();
}
}, "qa_annual_review_button");
/* Create Reset Approaches Grid Button */
var btnApproachesReset = new Button({
id: "reset_approaches_button",
label: "Reset Approaches Grid",
onClick: function() {
mod.resetApproachesGrid();
}
}, "reset_approaches_button");
/* Create Site Filter Button */
var btnSiteFilter = new Button({
id: "site_filter_button",
label: "Filter by Site",
onClick: function() {
mod.siteFilter();
}
}, "site_filter_button");
},
showQADueDialog: function() {
var mod=this;
var monthData = [
{"value": 0, "label": "No QA Date"},
{"value": 1, "label": "January"},
{"value": 2, "label": "February"},
{"value": 3, "label": "March"},
{"value": 4, "label": "April"},
{"value": 5, "label": "May"},
{"value": 6, "label": "June"},
{"value": 7, "label": "July"},
{"value": 8, "label": "August"},
{"value": 9, "label": "September"},
{"value": 10, "label": "Octorber"},
{"value": 11, "label": "November"},
{"value": 12, "label": "December"},
];
var monthStore = new DstoreAdapter(new Memory({data: monthData, idProperty: 'month'}));
/* Create the month list */
if (!registry.byId("qaDueMonth")) {
qaMonth = new ComboBox({
id: "qaDueMonth",
name: "qaDueMonth",
value: "",
store: monthStore,
labelAttr: "label",
searchAttr: "label",
style: "width: 100px;"
}, "qaDueMonth");
}
else {
qaMonth.reset();
qaMonth.set("store", monthStore);
}
/* Handler for the Get QAs Due button */
on(registry.byId("qaDueMonthOK"), "click", function() {
var month = registry.byId("qaDueMonth").get("value");
switch (month) {
case "No QA Date":
intMonth = "0";
break;
case "January":
intMonth = "1";
break;
case "February":
intMonth = "2";
break;
case "March":
intMonth = "3";
break;
case "April":
intMonth = "4";
break;
case "May":
intMonth = "5";
break;
case "June":
intMonth = "6";
break;
case "July":
intMonth = "7";
break;
case "August":
intMonth = "8";
break;
case "September":
intMonth = "9";
break;
case "October":
intMonth = "10";
break;
case "November":
intMonth = "11";
break;
case "December":
intMonth = "12";
break;
}
if (intMonth == "0") {
// mod.msawGrid.set('collection', mod.approachStore.filter({month: "---"}));
mod.approachStore.month = null;
}
else {
// mod.msawGrid.set('collection', mod.approachStore.filter({month: intMonth}));
mod.approachStore.month = intMonth;
}
registry.byId("qaDueDlg").hide();
});
/* Show the dialog */
registry.byId("qaDueDlg").show();
},
siteFilter: function() {
var mod=this;
var content = "<table><tr><td>Enter the Site ID to seach for: </td><tr><td><input id=\"siteSearch\" data-dojo-type=\"dijit/form/TextBox\" data-dojo-id=\"siteSearch\" data-dojo-props=\"type:'text',name:'siteSearch'\" id=\"siteSearch\"></td></table>"
confirmDialog = new ConfirmDialog({
title: "Site Search",
content: content,
style: "width: 250px"
});
confirmDialog.show();
confirmDialog.on("execute", lang.hitch(mod, "performSiteSearch"));
},
performSiteSearch: function() {
var mod=this;
var sitesearch = registry.byId("siteSearch");
var siteid = sitesearch.get("value");
mod.msawGrid.set('collection', mod.approachStore.filter({site: RegExp(siteid, "i")}));
sitesearch.destroyRecursive();
},
resetApproachesGrid: function() {
var mod=this;
mod.msawGrid.set('collection', mod.approachStore.filter(o=>o.parent == undefined));
},
showAddQAReviewDialog: function (site) {
/* Populate the Site/Approach name */
domAttr.set("qaSiteName", "innerHTML", site);
/* Create the QA Review Date DateTextBox control */
if (!registry.byId("qaAddDate")) {
qaAddDate = new DateTextBox({
value: new Date(),
name: "qaAddDate",
id: "qaAddDate",
style: "width: 100px;"
}, "qaAddDate");
}
else {
qaAddDate.set("value", new Date());
}
/* Pass/Fail radio button initialization */
registry.byId("qaAddPass").set("checked", true);
/* Create the QA Review comments area */
if (!registry.byId("qaAddComments")) {
qaComments = new Textarea({
name: "qaAddComments",
value: "",
style: "width: 125px;"
}, "qaAddComments");
}
else {
qaComments.set("value", "");
}
qaComments.startup();
/* Handler for the QA Review Save button */
on.once(registry.byId("qaAddReviewOK"), "click", function(evt) {
var date = registry.byId("qaAddDate").get("value");
var pass = registry.byId("qaAddPass").get("checked");
var comments = registry.byId("qaAddComments").get("value");
var results;
if (pass == true) {
results = "pass";
}
else {
results = "fail";
}
alert("Add new QA result for " + site + " with values: date= " + date + "; results= " + results + "; comments= " + comments);
registry.byId("qaAddReviewDlg").hide();
});
/* Show the dialog */
registry.byId("qaAddReviewDlg").show();
},
formatQAMonth: function(object, value, node, options) {
switch (object.month) {
case "1":
node.innerHTML = object.month + ": January";
break;
case "2":
node.innerHTML = object.month + ": February";
break;
case "3":
node.innerHTML = object.month + ": March";
break;
case "4":
node.innerHTML = object.month + ": April";
break;
case "5":
node.innerHTML = object.month + ": May";
break;
case "6":
node.innerHTML = object.month + ": June";
break;
case "7":
node.innerHTML = object.month + ": July";
break;
case "8":
node.innerHTML = object.month + ": August";
break;
case "9":
node.innerHTML = object.month + ": September";
break;
case "10":
node.innerHTML = object.month + ": October";
break;
case "11":
node.innerHTML = object.month + ": November";
break;
case "12":
node.innerHTML = object.month + ": December";
break;
}
}
}
});
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment