-
-
Save HDevine/2dc23a3315165475daa7ac4cec207947 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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