123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525 |
- /*##############################################################################
- # HPCC SYSTEMS software Copyright (C) 2013 HPCC Systems.
- #
- # Licensed under the Apache License, Version 2.0 (the "License");
- # you may not use this file except in compliance with the License.
- # You may obtain a copy of the License at
- #
- # http://www.apache.org/licenses/LICENSE-2.0
- #
- # Unless required by applicable law or agreed to in writing, software
- # distributed under the License is distributed on an "AS IS" BASIS,
- # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- # See the License for the specific language governing permissions and
- # limitations under the License.
- ############################################################################## */
- define([
- "dojo/_base/declare",
- "dojo/_base/lang",
- "dojo/_base/array",
- "dojo/dom",
- "dojo/dom-construct",
- "dojo/dom-form",
- "dojo/data/ObjectStore",
- "dojo/on",
- "dojo/topic",
- "dijit/layout/_LayoutWidget",
- "dijit/_TemplatedMixin",
- "dijit/_WidgetsInTemplateMixin",
- "dijit/registry",
- "dojox/form/Uploader",
- "dojox/form/uploader/FileList",
- "dojox/form/uploader/plugins/Flash",
- "dojox/grid/EnhancedGrid",
- "dojox/grid/enhanced/plugins/Pagination",
- "dojox/grid/enhanced/plugins/IndirectSelection",
- "dojo/data/ItemFileWriteStore",
- "hpcc/PackageMapDetailsWidget",
- "hpcc/PackageMapValidateWidget",
- "hpcc/WsPackageMaps",
- "hpcc/ESPPackageProcess",
- "hpcc/SFDetailsWidget",
- "dojo/text!../templates/PackageMapQueryWidget.html",
- "dojox/layout/TableContainer",
- "dijit/layout/BorderContainer",
- "dijit/layout/TabContainer",
- "dijit/layout/ContentPane",
- "dijit/form/Button",
- "dijit/form/DropDownButton",
- "dijit/form/Select",
- "dijit/Toolbar",
- "dijit/TooltipDialog"
- ], function (declare, lang, arrayUtil, dom, domConstruct, domForm, ObjectStore, on, topic,
- _LayoutWidget, _TemplatedMixin, _WidgetsInTemplateMixin, registry,
- Uploader, FileUploader, Flash, EnhancedGrid, Pagination, IndirectSelection, ItemFileWriteStore,
- PackageMapDetailsWidget, PackageMapValidateWidget,
- WsPackageMaps, ESPPackageProcess, SFDetailsWidget,
- template) {
- return declare("PackageMapQueryWidget", [_LayoutWidget, _TemplatedMixin, _WidgetsInTemplateMixin], {
- templateString: template,
- baseClass: "PackageMapQueryWidget",
- packagesTab: null,
- packagesGrid: null,
- tabMap: [],
- targets: null,
- processesToList: new Array(),
- processesToAdd: new Array(),
- targetSelected: '',
- processSelected: '',
- processFilters: null,
- addPackageMapDialog: null,
- validateTab: null,
- buildRendering: function (args) {
- this.inherited(arguments);
- },
- postCreate: function (args) {
- this.inherited(arguments);
- this.borderContainer = registry.byId(this.id + "BorderContainer");
- this.tabContainer = registry.byId(this.id + "TabContainer");
- this.packagesTab = registry.byId(this.id + "Packages");
- this.packagesGrid = registry.byId(this.id + "PackagesGrid");
- //this.packagesGrid.canSort = function(col){return false;};
- this.targetSelect = registry.byId(this.id + "TargetSelect");
- this.processSelect = registry.byId(this.id + "ProcessSelect");
- //this.processFilterSelect = registry.byId(this.id + "ProcessFilterSelect");
- this.addPackageMapDialog = registry.byId(this.id+"AddProcessMapDialog");
- this.addPackageMapTargetSelect = registry.byId(this.id + "AddProcessMapTargetSelect");
- this.addPackageMapProcessSelect = registry.byId(this.id + "AddProcessMapProcessSelect");
- var context = this;
- this.tabContainer.watch("selectedChildWidget", function (name, oval, nval) {
- if ((nval.id != context.id + "Packages") && (!nval.initalized)) {
- nval.init(nval.params);
- }
- context.selectedTab = nval;
- });
- },
- startup: function (args) {
- this.inherited(arguments);
- this.refreshActionState();
- this.getSelections();
- },
- resize: function (args) {
- this.inherited(arguments);
- this.borderContainer.resize();
- },
- layout: function (args) {
- this.inherited(arguments);
- },
- destroy: function (args) {
- this.inherited(arguments);
- },
- onRowDblClick: function (item) {
- var tab = this.showPackageMapDetails(this.id + "_" + item.Id, {
- target: item.Target,
- process: item.Process,
- active: item.Active,
- packageMap: item.Id
- });
- this.tabContainer.selectChild(tab);
- },
- _onChangeTarget: function (event) {
- this.updateProcessSelections(this.processSelect, this.processesToList, this.targetSelect.getValue());
- },
- _onChangeAddProcessMapTarget: function (event) {
- this.updateProcessSelections(this.addPackageMapProcessSelect, this.processesToAdd, this.addPackageMapTargetSelect.getValue());
- },
- _onRefresh: function (event) {
- this.packagesGrid.rowSelectCell.toggleAllSelection(false);
- this.refreshGrid();
- },
- _onOpen: function (event) {
- var selections = this.packagesGrid.selection.getSelected();
- var firstTab = null;
- for (var i = selections.length - 1; i >= 0; --i) {
- var tab = this.showPackageMapDetails(this.id + "_" + selections[i].Id, {
- target: selections[i].Target,
- process: selections[i].Process,
- active: selections[i].Active,
- packageMap: selections[i].Id
- });
- if (i == 0) {
- firstTab = tab;
- }
- }
- if (firstTab) {
- this.tabContainer.selectChild(firstTab, true);
- }
- },
- _onAdd: function (event) {
- this.initAddProcessMapInput();
- this.addPackageMapDialog.show();
- var context = this;
- var addPackageMapUploader = registry.byId(this.id+"AddProcessMapFileUploader");
- dojo.connect(addPackageMapUploader, "onComplete", this, function(e) {
- registry.byId(this.id+"AddProcessMapDialogSubmit").set('disabled', false);
- return context.addPackageMapCallback();
- });
- dojo.connect(addPackageMapUploader, "onBegin", this, function(e) {
- registry.byId(this.id+"AddProcessMapDialogSubmit").set('disabled', true);
- return;
- });
- var addPackageMapSubmitButton = registry.byId(this.id+"AddProcessMapDialogSubmit");
- dojo.connect(addPackageMapSubmitButton, "onClick", this, function(e) {
- return context._onAddPackageMapSubmit();
- });
- var addPackageMapCloseButton = registry.byId(this.id+"AddProcessMapDialogClose");
- dojo.connect(addPackageMapCloseButton, "onClick", this, function(e) {
- this.addPackageMapDialog.onCancel();
- });
- },
- initAddProcessMapInput: function () {
- var defaultTarget = null;
- for (var i = 0; i < this.targets.length; ++i) {
- var target = this.targets[i];
- if (target.Type == 'roxie') {//only roxie has package map for now.
- this.addPackageMapTargetSelect.options.push({label: target.Name, value: target.Name});
- if (defaultTarget == null)
- defaultTarget = target;
- }
- }
- if (defaultTarget != null) {
- this.addPackageMapTargetSelect.set("value", defaultTarget.Name);
- if (defaultTarget.Processes != undefined)
- this.addProcessSelections(this.addPackageMapProcessSelect, this.processesToAdd, defaultTarget.Processes.Item);
- }
- registry.byId(this.id+"AddProcessMapId").set('value', '');
- registry.byId(this.id+"AddProcessMapDaliIP").set('value', '');
- registry.byId(this.id+"AddProcessMapActivate").set('checked', 'checked');
- registry.byId(this.id+"AddProcessMapOverWrite").set('checked', '');
- registry.byId(this.id+"AddProcessMapFileUploader").reset();
- registry.byId(this.id+"AddProcessMapFileUploader").set('url', '');
- registry.byId(this.id+"AddProcessMapForm").set('action', '');
- registry.byId(this.id+"AddProcessMapDialogSubmit").set('disabled', true);
- },
- _onAddProcessMapIdKeyUp: function () {
- this._onCheckAddProcessMapInput();
- },
- _onCheckAddProcessMapInput: function () {
- var id = registry.byId(this.id+"AddProcessMapId").get('value');
- var files = registry.byId(this.id+"AddProcessMapFileUploader").getFileList();
- if (files.length > 1) {
- alert('Only one package file allowed');
- return;
- }
- var fileName = '';
- if (files.length > 0)
- fileName = files[0].name;
- if ((fileName != '') && (id == '')) {
- registry.byId(this.id+"AddProcessMapId").set('value', fileName);
- registry.byId(this.id+"AddProcessMapDialogSubmit").set('disabled', false);
- } else if ((id == '') || (files.length < 1))
- registry.byId(this.id+"AddProcessMapDialogSubmit").set('disabled', true);
- else
- registry.byId(this.id+"AddProcessMapDialogSubmit").set('disabled', false);
- },
- _onAddPackageMapSubmit: function () {
- var target = this.addPackageMapTargetSelect.getValue();
- var id = registry.byId(this.id+"AddProcessMapId").get('value');
- //var process = registry.byId(this.id+"AddProcessMapProcess").get('value');
- var process = this.addPackageMapProcessSelect.getValue();
- var daliIp = registry.byId(this.id+"AddProcessMapDaliIP").get('value');
- var activate = registry.byId(this.id+"AddProcessMapActivate").get('checked');
- var overwrite = registry.byId(this.id+"AddProcessMapOverWrite").get('checked');
- if ((id == '') || (target == ''))
- return false;
- if ((process == '') || (process == 'ANY'))
- process = '*';
- var action = "/WsPackageProcess/AddPackage?upload_&PackageMap="+id+"&Target="+target;
- if (process != '')
- action += "&Process="+process;
- if (daliIp != '')
- action += "&DaliIp="+daliIp;
- if (activate)
- action += "&Activate=1";
- else
- action += "&Activate=0";
- if (overwrite)
- action += "&OverWrite=1";
- else
- action += "&OverWrite=0";
- var theForm = registry.byId(this.id+"AddProcessMapForm");
- if (theForm == undefined)
- return false;
- theForm.set('action', action);
- return true;
- },
- _onDelete: function (event) {
- if (confirm('Delete selected packages?')) {
- var context = this;
- WsPackageMaps.deletePackageMap(this.packagesGrid.selection.getSelected(), {
- load: function (response) {
- context.packagesGrid.rowSelectCell.toggleAllSelection(false);
- context.refreshGrid(response);
- },
- error: function (errMsg, errStack) {
- context.showErrors(errMsg, errStack);
- }
- });
- }
- },
- _onActivate: function (event) {
- var context = this;
- WsPackageMaps.activatePackageMap(this.packagesGrid.selection.getSelected(), {
- load: function (response) {
- context.packagesGrid.rowSelectCell.toggleAllSelection(false);
- context.refreshGrid();
- },
- error: function (errMsg, errStack) {
- context.showErrors(errMsg, errStack);
- }
- });
- },
- _onDeactivate: function (event) {
- var context = this;
- WsPackageMaps.deactivatePackageMap(this.packagesGrid.selection.getSelected(), {
- load: function (response) {
- context.packagesGrid.rowSelectCell.toggleAllSelection(false);
- context.refreshGrid();
- },
- error: function (errMsg, errStack) {
- context.showErrors(errMsg, errStack);
- }
- });
- },
- showErrors: function (errMsg, errStack) {
- dojo.publish("hpcc/brToaster", {
- Severity: "Error",
- Source: errMsg,
- Exceptions: [{ Message: errStack }]
- });
- },
- getSelections: function () {
- this.targets = new Array();
- ///this.processes = new Array();
- this.processFilters = new Array();
- var context = this;
- WsPackageMaps.GetPackageMapSelectOptions({
- includeTargets: true,
- IncludeProcesses: true,
- IncludeProcessFilters: true
- }, {
- load: function (response) {
- context.targetSelect.options.push({label: 'ANY', value: '' });
- context.processSelect.options.push({label: 'ANY', value: '' });
- if (lang.exists("Targets.TargetData", response)) {
- context.targets = response.Targets.TargetData;
- context.initSelections();
- }
- context.targetSelect.set("value", '');
- context.processSelect.set("value", '');
- if (lang.exists("ProcessFilters.Item", response)) {
- context.processFilters = response.ProcessFilters.Item;
- // context.setSelections(context.processFilterSelect, context.processFilters, '*');
- }
- context.initPackagesGrid();
- },
- error: function (errMsg, errStack) {
- context.showErrors(errMsg, errStack);
- }
- });
- },
- addProcessSelections: function (processSelect, processes, processData) {
- for (var i = 0; i < processData.length; ++i) {
- var process = processData[i];
- if ((processes != null) && (processes.indexOf(process) != -1))
- continue;
- processes.push(process);
- processSelect.options.push({label: process, value: process});
- }
- },
- updateProcessSelections: function (processSelect, processes, targetName) {
- var options = processSelect.getOptions();
- for (var ii = 0; ii < options.length; ++ii) {
- var value = options[ii].value;
- processSelect.removeOption(value);
- }
- ///processSelect.removeOption(processSelect.getOptions());
- processSelect.options.push({label: 'ANY', value: '' });
- processes.length = 0;
- for (var i = 0; i < this.targets.length; ++i) {
- var target = this.targets[i];
- if ((target.Processes != undefined) && ((targetName == '') || (targetName == target.Name)))
- this.addProcessSelections(processSelect, processes, target.Processes.Item);
- }
- processSelect.set("value", '');
- },
- initSelections: function () {
- if (this.targets.length < 1)
- return;
- for (var i = 0; i < this.targets.length; ++i) {
- var target = this.targets[i];
- this.targetSelect.options.push({label: target.Name, value: target.Name});
- if (target.Processes != undefined)
- this.addProcessSelections(this.processSelect, this.processesToList, target.Processes.Item);
- }
- if (this.validateTab != null)
- this.validateTab.initSelections(this.targets);
- },
- init: function (params) {
- if (this.initalized)
- return;
- this.initalized = true;
- this.validateTab = new PackageMapValidateWidget({
- id: this.id + "_ValidatePackageMap",
- title: 'Validate PackageMap',
- params: params
- });
- //this.tabMap[this.id + "_ValidatePackageMap"] = this.validateTab;
- this.tabContainer.addChild(this.validateTab, 1);
- this.tabContainer.selectChild(this.packagesTab);
- },
- initPackagesGrid: function() {
- this.packagesGrid.setStructure([
- { name: "Package Map", field: "Id", width: "40%" },
- { name: "Target", field: "Target", width: "15%" },
- { name: "Process Filter", field: "Process", width: "15%" },
- {
- name: "Active",
- field: "Active",
- width: "10%",
- formatter: function (active) {
- if (active == true) {
- return "A";
- }
- return "";
- }
- },
- { name: "Description", field: "Description", width: "20%" }
- ]);
- var objStore = ESPPackageProcess.CreatePackageMapQueryObjectStore();
- this.packagesGrid.setStore(objStore);
- this.packagesGrid.setQuery(this.getFilter());
- var context = this;
- this.packagesGrid.on("RowDblClick", function (evt) {
- if (context.onRowDblClick) {
- var idx = evt.rowIndex;
- var item = this.getItem(idx);
- context.onRowDblClick(item);
- }
- }, true);
- dojo.connect(this.packagesGrid.selection, 'onSelected', function (idx) {
- context.refreshActionState();
- });
- dojo.connect(this.packagesGrid.selection, 'onDeselected', function (idx) {
- context.refreshActionState();
- });
- this.packagesGrid.startup();
- },
- getFilter: function () {
- this.targetSelected = this.targetSelect.getValue();
- this.processSelected = this.processSelect.getValue();
- //var processFilterSelected = this.processFilterSelect.getValue();
- var processFilterSelected = "*";
- if (this.targetSelected == " ")
- this.targetSelected = "";
- if (this.processSelected == " ")
- this.processSelected = "";
- if (processFilterSelected == "")
- processFilterSelected = "*";
- return {Target: this.targetSelected, Process: this.processSelected, ProcessFilter: processFilterSelected};
- },
- refreshGrid: function (args) {
- this.packagesGrid.setQuery(this.getFilter());
- var context = this;
- setTimeout(function () {
- context.refreshActionState()
- }, 200);
- },
- refreshActionState: function () {
- var selection = this.packagesGrid.selection.getSelected();
- var hasSelection = (selection.length > 0);
- registry.byId(this.id + "Open").set("disabled", !hasSelection);
- registry.byId(this.id + "Delete").set("disabled", !hasSelection);
- registry.byId(this.id + "Activate").set("disabled", selection.length != 1);
- registry.byId(this.id + "Deactivate").set("disabled", selection.length != 1);
- },
- showPackageMapDetails: function (id, params) {
- var obj = id.split(".");
- id = obj.join("");
- params.tabId = id;
- var retVal = this.tabMap[id];
- if (retVal)
- return retVal;
- var context = this;
- retVal = new PackageMapDetailsWidget({
- id: id,
- title: params.packageMap,
- closable: true,
- onClose: function () {
- delete context.tabMap[id];
- return true;
- },
- params: params
- });
- this.tabMap[id] = retVal;
- this.tabContainer.addChild(retVal, 2);
- var handle = topic.subscribe("packageMapDeleted", function(tabId){
- context.packageMapDeleted(tabId);
- handle.remove();
- });
- return retVal;
- },
- packageMapDeleted: function (tabId) {
- if (this.tabMap[tabId] == null)
- return;
- this.tabContainer.removeChild(this.tabMap[tabId]);
- this.tabMap[tabId].destroyRecursive();
- delete this.tabMap[tabId];
- this.tabContainer.selectChild(this.packagesTab);
- this.packagesGrid.rowSelectCell.toggleAllSelection(false);
- this.refreshGrid();
- },
- addPackageMapCallback: function (event) {
- //var processFilter = this.addPackageMapProcessSelect.getValue();
- this.addPackageMapDialog.onCancel();
- this.packagesGrid.rowSelectCell.toggleAllSelection(false);
- this.refreshGrid();
- }
- });
- });
|