Преглед изворни кода

HPCC-9840 Allow "Open in New Page" for each details page.

Fixes HPCC-9840

Signed-off-by: Gordon Smith <gordon.smith@lexisnexis.com>
Gordon Smith пре 11 година
родитељ
комит
c632ebc1e4
47 измењених фајлова са 196 додато и 229 уклоњено
  1. 6 0
      esp/files/css/hpcc.css
  2. BIN
      esp/files/img/openNewPage.png
  3. 2 2
      esp/files/scripts/ActivityWidget.js
  4. 4 6
      esp/files/scripts/DFUQueryWidget.js
  5. 5 8
      esp/files/scripts/DFUSearchWidget.js
  6. 3 6
      esp/files/scripts/DFUWUDetailsWidget.js
  7. 13 15
      esp/files/scripts/ECLPlaygroundResultsWidget.js
  8. 5 8
      esp/files/scripts/ECLPlaygroundWidget.js
  9. 5 8
      esp/files/scripts/ECLSourceWidget.js
  10. 6 8
      esp/files/scripts/FilePartsWidget.js
  11. 3 6
      esp/files/scripts/GetDFUWorkunitsWidget.js
  12. 6 15
      esp/files/scripts/GraphPageWidget.js
  13. 5 0
      esp/files/scripts/GraphWidget.js
  14. 1 2
      esp/files/scripts/GraphsWidget.js
  15. 2 4
      esp/files/scripts/GridDetailsWidget.js
  16. 4 7
      esp/files/scripts/HPCCPlatformECLWidget.js
  17. 4 6
      esp/files/scripts/HPCCPlatformFilesWidget.js
  18. 4 6
      esp/files/scripts/HPCCPlatformMainWidget.js
  19. 4 6
      esp/files/scripts/HPCCPlatformOpsWidget.js
  20. 4 6
      esp/files/scripts/HPCCPlatformRoxieWidget.js
  21. 3 6
      esp/files/scripts/HPCCPlatformWidget.js
  22. 5 8
      esp/files/scripts/HexViewWidget.js
  23. 5 8
      esp/files/scripts/InfoGridWidget.js
  24. 3 7
      esp/files/scripts/LFDetailsWidget.js
  25. 4 6
      esp/files/scripts/LZBrowseWidget.js
  26. 5 8
      esp/files/scripts/LogsWidget.js
  27. 5 10
      esp/files/scripts/ResultWidget.js
  28. 5 3
      esp/files/scripts/ResultsWidget.js
  29. 3 7
      esp/files/scripts/SFDetailsWidget.js
  30. 1 2
      esp/files/scripts/SearchResultsWidget.js
  31. 1 2
      esp/files/scripts/SourceFilesWidget.js
  32. 5 8
      esp/files/scripts/TimingGridWidget.js
  33. 5 8
      esp/files/scripts/TimingPageWidget.js
  34. 5 8
      esp/files/scripts/TimingTreeMapWidget.js
  35. 3 7
      esp/files/scripts/WUDetailsWidget.js
  36. 3 6
      esp/files/scripts/WUQueryWidget.js
  37. 6 4
      esp/files/scripts/_TabContainerWidget.js
  38. 32 0
      esp/files/scripts/_Widget.js
  39. 1 0
      esp/files/templates/DFUQueryWidget.html
  40. 1 0
      esp/files/templates/DFUWUDetailsWidget.html
  41. 1 0
      esp/files/templates/GetDFUWorkunitsWidget.html
  42. 3 2
      esp/files/templates/GraphPageWidget.html
  43. 1 0
      esp/files/templates/GraphWidget.html
  44. 1 0
      esp/files/templates/GridDetailsWidget.html
  45. 1 0
      esp/files/templates/ResultWidget.html
  46. 1 0
      esp/files/templates/WUDetailsWidget.html
  47. 1 0
      esp/files/templates/WUQueryWidget.html

+ 6 - 0
esp/files/css/hpcc.css

@@ -639,6 +639,12 @@ margin-left:-20px;
     height: 16px;
 }
 
+.iconNewPage {
+    background-image: url("../img/openNewPage.png"); 
+    width: 16px;
+    height: 16px;
+}
+
 .iconZoomOrig {
     background-image: url("../img/zoomOrig.png");
     width: 16px;

BIN
esp/files/img/openNewPage.png


+ 2 - 2
esp/files/scripts/ActivityWidget.js

@@ -52,9 +52,9 @@ define([
         },
 
         init: function (params) {
-            if (this.initalized)
+            if (this.inherited(arguments))
                 return;
-            this.initalized = true;
+
             this.refreshGrid();
             this._refreshActionState();
         },

+ 4 - 6
esp/files/scripts/DFUQueryWidget.js

@@ -25,8 +25,6 @@ define([
     "dojo/date",
     "dojo/on",
 
-    "dijit/_TemplatedMixin",
-    "dijit/_WidgetsInTemplateMixin",
     "dijit/registry",
     "dijit/Dialog",
     "dijit/Menu",
@@ -69,11 +67,11 @@ define([
     "dojox/layout/TableContainer"
 
 ], function (declare, lang, arrayUtil, dom, domAttr, domConstruct, domClass, domForm, date, on,
-                _TemplatedMixin, _WidgetsInTemplateMixin, registry, Dialog, Menu, MenuItem, MenuSeparator, PopupMenuItem, Textarea,
+                registry, Dialog, Menu, MenuItem, MenuSeparator, PopupMenuItem, Textarea,
                 Grid, Keyboard, Selection, selector, ColumnResizer, DijitRegistry, Pagination,
                 _TabContainerWidget, WsDfu, ESPUtil, ESPLogicalFile, ESPDFUWorkunit, LFDetailsWidget, SFDetailsWidget, DFUWUDetailsWidget, TargetSelectWidget,
                 template) {
-    return declare("DFUQueryWidget", [_TabContainerWidget, _TemplatedMixin, _WidgetsInTemplateMixin, ESPUtil.FormHelper], {
+    return declare("DFUQueryWidget", [_TabContainerWidget, ESPUtil.FormHelper], {
         templateString: template,
         baseClass: "DFUQueryWidget",
 
@@ -257,9 +255,9 @@ define([
 
         //  Implementation  ---
         init: function (params) {
-            if (this.initalized)
+            if (this.inherited(arguments))
                 return;
-            this.initalized = true;
+
             this.clusterTargetSelect.init({
                 Groups: true,
                 includeBlank: true

+ 5 - 8
esp/files/scripts/DFUSearchWidget.js

@@ -18,9 +18,6 @@ define([
     "dojo/_base/xhr",
     "dojo/dom",
 
-    "dijit/layout/_LayoutWidget",
-    "dijit/_TemplatedMixin",
-    "dijit/_WidgetsInTemplateMixin",
     "dijit/layout/BorderContainer",
     "dijit/layout/TabContainer",
     "dijit/layout/ContentPane",
@@ -29,6 +26,7 @@ define([
     "dijit/TitlePane",
     "dijit/registry",
 
+    "hpcc/_Widget",
     "hpcc/ECLSourceWidget",
     "hpcc/TargetSelectWidget",
     "hpcc/GraphWidget",
@@ -38,10 +36,10 @@ define([
 
     "dojo/text!../templates/DFUSearchWidget.html"
 ], function (declare, xhr, dom,
-                _LayoutWidget, _TemplatedMixin, _WidgetsInTemplateMixin, BorderContainer, TabContainer, ContentPane, Toolbar, Textarea, TitlePane, registry,
-                EclSourceWidget, TargetSelectWidget, GraphWidget, ResultsWidget, InfoGridWidget, Workunit,
+                BorderContainer, TabContainer, ContentPane, Toolbar, Textarea, TitlePane, registry,
+                _Widget, EclSourceWidget, TargetSelectWidget, GraphWidget, ResultsWidget, InfoGridWidget, Workunit,
                 template) {
-    return declare("DFUSearchWidget", [_LayoutWidget, _TemplatedMixin, _WidgetsInTemplateMixin], {
+    return declare("DFUSearchWidget", [_Widget], {
         templateString: template,
         baseClass: "DFUSearchWidget",
         borderContainer: null,
@@ -157,9 +155,8 @@ define([
 
         //  Implementation  ---
         init: function (params) {
-            if (this.initalized)
+            if (this.inherited(arguments))
                 return;
-            this.initalized = true;
 
             //dom.byId("showWuid").innerHTML = params.Wuid;
             if (params.Wuid) {

+ 3 - 6
esp/files/scripts/DFUWUDetailsWidget.js

@@ -23,8 +23,6 @@ define([
     "dojo/dom-style",
     "dojo/query",
 
-    "dijit/_TemplatedMixin",
-    "dijit/_WidgetsInTemplateMixin",
     "dijit/layout/BorderContainer",
     "dijit/layout/TabContainer",
     "dijit/layout/ContentPane",
@@ -45,10 +43,10 @@ define([
     "dojox/layout/TableContainer"
 
 ], function (exports, declare, arrayUtil, dom, domAttr, domClass, domStyle, query,
-                _TemplatedMixin, _WidgetsInTemplateMixin, BorderContainer, TabContainer, ContentPane, Toolbar, Textarea, TitlePane, registry, ProgressBar,
+                BorderContainer, TabContainer, ContentPane, Toolbar, Textarea, TitlePane, registry, ProgressBar,
                 _TabContainerWidget, FileSpray, ESPDFUWorkunit, ECLSourceWidget, LFDetailsWidget,
                 template) {
-    exports.fixCircularDependency = declare("DFUWUDetailsWidget", [_TabContainerWidget, _TemplatedMixin, _WidgetsInTemplateMixin], {
+    exports.fixCircularDependency = declare("DFUWUDetailsWidget", [_TabContainerWidget], {
         templateString: template,
         baseClass: "DFUWUDetailsWidget",
         summaryWidget: null,
@@ -108,9 +106,8 @@ define([
 
         //  Implementation  ---
         init: function (params) {
-            if (this.initalized)
+            if (this.inherited(arguments))
                 return;
-            this.initalized = true;
 
             //dom.byId("showWuid").innerHTML = params.Wuid;
             if (params.Wuid) {

+ 13 - 15
esp/files/scripts/ECLPlaygroundResultsWidget.js

@@ -18,8 +18,6 @@ define([
     "dojo/_base/lang",
     "dojo/dom",
 
-    "dijit/_TemplatedMixin",
-    "dijit/_WidgetsInTemplateMixin",
     "dijit/registry",
 
     "hpcc/_TabContainerWidget",
@@ -31,10 +29,10 @@ define([
 
     "dijit/layout/TabContainer"
 ], function (declare, lang, dom, 
-                _TemplatedMixin, _WidgetsInTemplateMixin, registry,
+                registry,
                 _TabContainerWidget, ESPWorkunit, ResultWidget, LFDetailsWidget,
                 template) {
-    return declare("ECLPlaygroundResultsWidget", [_TabContainerWidget, _TemplatedMixin, _WidgetsInTemplateMixin], {
+    return declare("ECLPlaygroundResultsWidget", [_TabContainerWidget], {
         templateString: template,
         baseClass: "ECLPlaygroundResultsWidget",
 
@@ -51,25 +49,25 @@ define([
             }
         },
 
-        ensurePane: function (id, params) {
+        ensurePane: function (id, title, params) {
             var retVal = registry.byId(id);
             if (!retVal) {
                 if (lang.exists("Name", params) && lang.exists("Cluster", params)) {
                     retVal = new LFDetailsWidget.fixCircularDependency({
                         id: id,
-                        title: params.Name,
+                        title: title,
                         params: params
                     });
                 } else if (lang.exists("Wuid", params) && lang.exists("exceptions", params)) {
                     retVal = new InfoGridWidget({
                         id: id,
-                        title: "Errors/Warnings",
+                        title: title,
                         params: params
                     });
-                } else if (lang.exists("result", params)) {
+                } else if (lang.exists("Wuid", params) && lang.exists("Sequence", params)) {
                     retVal = new ResultWidget({
                         id: id,
-                        title: params.result.Name,
+                        title: title,
                         params: params
                     });
                 }
@@ -79,9 +77,8 @@ define([
         },
 
         init: function (params) {
-            if (this.initalized)
+            if (this.inherited(arguments))
                 return;
-            this.initalized = true;
 
             if (params.Wuid) {
                 this.wu = ESPWorkunit.Get(params.Wuid);
@@ -93,7 +90,7 @@ define([
                         context.wu.getInfo({
                             onGetWUExceptions: function (exceptions) {
                                 if (params.ShowErrors && exceptions.length) {
-                                    context.ensurePane(context.id + "_exceptions", {
+                                    context.ensurePane(context.id + "_exceptions", "Errors/Warnings", {
                                         Wuid: params.Wuid,
                                         onErrorClick: context.onErrorClick,
                                         exceptions: exceptions
@@ -104,7 +101,7 @@ define([
                             onGetSourceFiles: function (sourceFiles) {
                                 if (params.SourceFiles) {
                                     for (var i = 0; i < sourceFiles.length; ++i) {
-                                        var tab = context.ensurePane(context.id + "_logicalFile" + i, {
+                                        var tab = context.ensurePane(context.id + "_logicalFile" + i, sourceFiles[i].Name, {
                                             Name: sourceFiles[i].Name,
                                             Cluster: sourceFiles[i].FileCluster
                                         });
@@ -117,8 +114,9 @@ define([
                             onGetResults: function (results) {
                                 if (!params.SourceFiles) {
                                     for (var i = 0; i < results.length; ++i) {
-                                        var tab = context.ensurePane(context.id + "_result" + i, {
-                                            result: results[i]
+                                        var tab = context.ensurePane(context.id + "_result" + i, results[i].Name, {
+                                            Wuid: results[i].Wuid,
+                                            Sequence: results[i].Sequence
                                         });
                                         if (i == 0) {
                                             context.initTab();

+ 5 - 8
esp/files/scripts/ECLPlaygroundWidget.js

@@ -20,14 +20,12 @@ define([
     "dojo/dom",
     "dojo/query",
 
-    "dijit/layout/_LayoutWidget",
-    "dijit/_TemplatedMixin",
-    "dijit/_WidgetsInTemplateMixin",
     "dijit/layout/BorderContainer",
     "dijit/layout/TabContainer",
     "dijit/layout/ContentPane",
     "dijit/registry",
 
+    "hpcc/_Widget",
     "hpcc/ECLSourceWidget",
     "hpcc/TargetSelectWidget",
     "hpcc/GraphWidget",
@@ -36,10 +34,10 @@ define([
 
     "dojo/text!../templates/ECLPlaygroundWidget.html"
 ], function (declare, xhr, lang, dom, query,
-                _LayoutWidget, _TemplatedMixin, _WidgetsInTemplateMixin, BorderContainer, TabContainer, ContentPane, registry,
-                EclSourceWidget, TargetSelectWidget, GraphWidget, ResultsWidget, ESPWorkunit,
+                BorderContainer, TabContainer, ContentPane, registry,
+                _Widget, EclSourceWidget, TargetSelectWidget, GraphWidget, ResultsWidget, ESPWorkunit,
                 template) {
-    return declare("ECLPlaygroundWidget", [_LayoutWidget, _TemplatedMixin, _WidgetsInTemplateMixin], {
+    return declare("ECLPlaygroundWidget", [_Widget], {
         templateString: template,
         baseClass: "ECLPlaygroundWidget",
         wu: null,
@@ -89,9 +87,8 @@ define([
         },
 
         init: function (params) {
-            if (this.initalized)
+            if (this.inherited(arguments))
                 return;
-            this.initalized = true;
 
             if (params.Wuid) {
                 this.hideTitle();

+ 5 - 8
esp/files/scripts/ECLSourceWidget.js

@@ -17,13 +17,11 @@ define([
     "dojo/_base/declare",
     "dojo/dom",
 
-    "dijit/layout/_LayoutWidget",
-    "dijit/_TemplatedMixin",
-    "dijit/_WidgetsInTemplateMixin",
     "dijit/layout/BorderContainer",
     "dijit/layout/ContentPane",
     "dijit/registry",
 
+    "hpcc/_Widget",
     "hpcc/ESPWorkunit",
 
     "dojo/text!../templates/ECLSourceWidget.html",
@@ -31,10 +29,10 @@ define([
     "dijit/Toolbar", "dijit/ToolbarSeparator", "dijit/form/Button"
 ],
     function (declare, dom,
-            _LayoutWidget, _TemplatedMixin, _WidgetsInTemplateMixin, BorderContainer, ContentPane, registry,
-            ESPWorkunit,
+            BorderContainer, ContentPane, registry,
+            _Widget, ESPWorkunit,
             template) {
-        return declare("ECLSourceWidget", [_LayoutWidget, _TemplatedMixin, _WidgetsInTemplateMixin], {
+        return declare("ECLSourceWidget", [_Widget], {
             templateString: template,
             baseClass: "ECLSourceWidget",
             borderContainer: null,
@@ -69,9 +67,8 @@ define([
 
             //  Plugin wrapper  ---
             init: function (params) {
-                if (this.initalized)
+                if (this.inherited(arguments))
                     return;
-                this.initalized = true;
 
                 var mode = "ecl";
                 if (params.sourceMode !== undefined) {

+ 6 - 8
esp/files/scripts/FilePartsWidget.js

@@ -21,9 +21,6 @@ define([
     "dojo/store/Observable",
 
     "dijit/registry",
-    "dijit/layout/_LayoutWidget",
-    "dijit/_TemplatedMixin",
-    "dijit/_WidgetsInTemplateMixin",
 
     "dgrid/OnDemandGrid",
     "dgrid/Keyboard",
@@ -32,14 +29,16 @@ define([
     "dgrid/extensions/ColumnResizer",
     "dgrid/extensions/DijitRegistry",
 
-    "dojo/text!../templates/FilePartsWidget.html"
+    "hpcc/_Widget",
 
+    "dojo/text!../templates/FilePartsWidget.html"
 ],
     function (declare, array, Memory, Observable,
-            registry, _LayoutWidget, _TemplatedMixin, _WidgetsInTemplateMixin,
+            registry,
             OnDemandGrid, Keyboard, Selection, selector, ColumnResizer, DijitRegistry,
+            _Widget,
             template) {
-        return declare("FilePartsWidget", [_LayoutWidget, _TemplatedMixin, _WidgetsInTemplateMixin], {
+        return declare("FilePartsWidget", [_Widget], {
             templateString: template,
             baseClass: "FilePartsWidget",
             filePartsGrid: null,
@@ -88,9 +87,8 @@ define([
 
             //  Plugin wrapper  ---
             init: function (params) {
-                if (this.initalized)
+                if (this.inherited(arguments))
                     return;
-                this.initalized = true;
 
                 this.filePartsStore.setData(params.fileParts);
                 this.filePartsGrid.set("query", {

+ 3 - 6
esp/files/scripts/GetDFUWorkunitsWidget.js

@@ -22,8 +22,6 @@ define([
     "dojo/date",
     "dojo/on",
 
-    "dijit/_TemplatedMixin",
-    "dijit/_WidgetsInTemplateMixin",
     "dijit/registry",
     "dijit/Dialog",
     "dijit/Menu",
@@ -62,11 +60,11 @@ define([
     "dojox/layout/TableContainer"
 
 ], function (declare, arrayUtil,dom, domClass, domForm, date, on,
-                _TemplatedMixin, _WidgetsInTemplateMixin, registry, Dialog, Menu, MenuItem, MenuSeparator, PopupMenuItem,
+                registry, Dialog, Menu, MenuItem, MenuSeparator, PopupMenuItem,
                 Grid, Keyboard, Selection, selector, ColumnResizer, DijitRegistry, Pagination,
                 _TabContainerWidget, ESPUtil, ESPDFUWorkunit, FileSpray, DFUWUDetailsWidget, TargetSelectWidget,
                 template) {
-    return declare("GetDFUWorkunitsWidget", [_TabContainerWidget, _TemplatedMixin, _WidgetsInTemplateMixin], {
+    return declare("GetDFUWorkunitsWidget", [_TabContainerWidget], {
         templateString: template,
         baseClass: "GetDFUWorkunitsWidget",
 
@@ -214,9 +212,8 @@ define([
 
         //  Implementation  ---
         init: function (params) {
-            if (this.initalized)
+            if (this.inherited(arguments))
                 return;
-            this.initalized = true;
 
             if (params.ClusterName) {
                 registry.byId(this.id + "Cluster").set("value", params.ClusterName);

+ 6 - 15
esp/files/scripts/GraphPageWidget.js

@@ -24,9 +24,6 @@ define([
     "dojo/store/Memory",
     "dojo/store/Observable",
 
-    "dijit/layout/_LayoutWidget",
-    "dijit/_TemplatedMixin",
-    "dijit/_WidgetsInTemplateMixin",
     "dijit/layout/BorderContainer",
     "dijit/layout/TabContainer",
     "dijit/layout/ContentPane",
@@ -42,6 +39,7 @@ define([
     "dgrid/extensions/ColumnResizer",
     "dgrid/extensions/DijitRegistry",
 
+    "hpcc/_Widget",
     "hpcc/GraphWidget",
     "hpcc/ESPUtil",
     "hpcc/ESPWorkunit",
@@ -60,12 +58,12 @@ define([
     "dijit/form/NumberSpinner",
     "dijit/form/DropDownButton"
 ], function (declare, lang, arrayUtil, dom, domConstruct, on, html, Memory, Observable,
-            _LayoutWidget, _TemplatedMixin, _WidgetsInTemplateMixin, BorderContainer, TabContainer, ContentPane, registry, Dialog,
+            BorderContainer, TabContainer, ContentPane, registry, Dialog,
             entities,
             OnDemandGrid, Keyboard, Selection, selector, ColumnResizer, DijitRegistry,
-            GraphWidget, ESPUtil, ESPWorkunit, TimingGridWidget, TimingTreeMapWidget,
+            _Widget, GraphWidget, ESPUtil, ESPWorkunit, TimingGridWidget, TimingTreeMapWidget,
             template) {
-    return declare("GraphPageWidget", [_LayoutWidget, _TemplatedMixin, _WidgetsInTemplateMixin], {
+    return declare("GraphPageWidget", [_Widget], {
         templateString: template,
         baseClass: "GraphPageWidget",
         borderContainer: null,
@@ -91,7 +89,6 @@ define([
         overviewDepth: null,
         localDepth: null,
         localDistance: null,
-        initalized: false,
 
         buildRendering: function (args) {
             this.inherited(arguments);
@@ -289,11 +286,6 @@ define([
             this._initItemGrid(this.edgesGrid);
         },
 
-        _onMainRefresh: function () {
-            this.main.setMessage("Performing Layout...");
-            this.main.startLayout("dot");
-        },
-
         _onLocalRefresh: function () {
             this.refreshLocal(this.local.getSelectionAsGlobalID());
         },
@@ -390,10 +382,9 @@ define([
         },
 
         init: function (params) {
-            if (this.initalized) {
+            if (this.inherited(arguments))
                 return;
-            }
-            this.initalized = true;
+
             if (params.SafeMode) {
                 this.overviewDepth.set("value", 0)
                 this.mainDepth.set("value", 1)

+ 5 - 0
esp/files/scripts/GraphWidget.js

@@ -49,6 +49,11 @@ require([
             //  Known control properties  ---
             DOT_META_ATTR: "DOT_META_ATTR",
 
+            _onClickRefresh: function () {
+                this.setMessage("Performing Layout...");
+                this.startLayout("dot");
+            },
+
             _onClickZoomOrig: function (args) {
                 this.setScale(100);
                 this.centerOnItem(0);

+ 1 - 2
esp/files/scripts/GraphsWidget.js

@@ -43,9 +43,8 @@ define([
         wu: null,
 
         init: function (params) {
-            if (this.initalized)
+            if (this.inherited(arguments))
                 return;
-            this.initalized = true;
 
             if (params.Wuid) {
                 this.wu = ESPWorkunit.Get(params.Wuid);

+ 2 - 4
esp/files/scripts/GridDetailsWidget.js

@@ -18,8 +18,6 @@ define([
     "dojo/store/Memory",
     "dojo/store/Observable",
 
-    "dijit/_TemplatedMixin",
-    "dijit/_WidgetsInTemplateMixin",
     "dijit/registry",
 
     "hpcc/_TabContainerWidget",
@@ -34,10 +32,10 @@ define([
     "dijit/layout/ContentPane"
 
 ], function (declare, Memory, Observable,
-                _TemplatedMixin, _WidgetsInTemplateMixin, registry,
+                registry,
                 _TabContainerWidget,
                 template) {
-    return declare("GridDetailsWidget", [_TabContainerWidget, _TemplatedMixin, _WidgetsInTemplateMixin], {
+    return declare("GridDetailsWidget", [_TabContainerWidget], {
         templateString: template,
         baseClass: "GridDetailsWidget",
 

+ 4 - 7
esp/files/scripts/HPCCPlatformECLWidget.js

@@ -16,8 +16,6 @@
 define([
     "dojo/_base/declare",
 
-    "dijit/_TemplatedMixin",
-    "dijit/_WidgetsInTemplateMixin",
     "dijit/registry",
 
     "hpcc/_TabContainerWidget",
@@ -31,10 +29,10 @@ define([
     "dijit/layout/ContentPane"
 
 ], function (declare,
-                _TemplatedMixin, _WidgetsInTemplateMixin, registry,
+                registry,
                 _TabContainerWidget, WUQueryWidget, ECLPlaygroundWidget,
                 template) {
-    return declare("HPCCPlatformECLWidget", [_TabContainerWidget, _TemplatedMixin, _WidgetsInTemplateMixin], {
+    return declare("HPCCPlatformECLWidget", [_TabContainerWidget], {
         templateString: template,
         baseClass: "HPCCPlatformECLWidget",
 
@@ -54,9 +52,8 @@ define([
 
         //  Implementation  ---
         init: function (params) {
-            if (this.initalized)
-                return;
-            this.initalized = true;
+                if (this.inherited(arguments))
+                    return;
             this.initTab();
         },
 

+ 4 - 6
esp/files/scripts/HPCCPlatformFilesWidget.js

@@ -16,8 +16,6 @@
 define([
     "dojo/_base/declare",
 
-    "dijit/_TemplatedMixin",
-    "dijit/_WidgetsInTemplateMixin",
     "dijit/registry",
 
     "hpcc/_TabContainerWidget",
@@ -33,10 +31,10 @@ define([
     "dijit/layout/ContentPane"
 
 ], function (declare,
-                _TemplatedMixin, _WidgetsInTemplateMixin, registry,
+                registry,
                 _TabContainerWidget, ESPRequest, GetDFUWorkunitsWidget, DFUQueryWidget, LZBrowseWidget,
                 template) {
-    return declare("HPCCPlatformFilesWidget", [_TabContainerWidget, _TemplatedMixin, _WidgetsInTemplateMixin], {
+    return declare("HPCCPlatformFilesWidget", [_TabContainerWidget], {
         templateString: template,
         baseClass: "HPCCPlatformFilesWidget",
 
@@ -55,9 +53,9 @@ define([
 
         //  Implementation  ---
         init: function (params) {
-            if (this.initalized)
+            if (this.inherited(arguments))
                 return;
-            this.initalized = true;
+
             this.initTab();
         },
 

+ 4 - 6
esp/files/scripts/HPCCPlatformMainWidget.js

@@ -16,8 +16,6 @@
 define([
     "dojo/_base/declare",
 
-    "dijit/_TemplatedMixin",
-    "dijit/_WidgetsInTemplateMixin",
     "dijit/registry",
 
     "hpcc/_TabContainerWidget",
@@ -32,10 +30,10 @@ define([
     "hpcc/SearchResultsWidget"
 
 ], function (declare,
-                _TemplatedMixin, _WidgetsInTemplateMixin, registry,
+                registry,
                 _TabContainerWidget,
                 template) {
-    return declare("HPCCPlatformMainWidget", [_TabContainerWidget, _TemplatedMixin, _WidgetsInTemplateMixin], {
+    return declare("HPCCPlatformMainWidget", [_TabContainerWidget], {
         templateString: template,
         baseClass: "HPCCPlatformMainWidget",
 
@@ -55,9 +53,9 @@ define([
 
         //  Implementation  ---
         init: function (params) {
-            if (this.initalized)
+            if (this.inherited(arguments))
                 return;
-            this.initalized = true;
+
             this.initTab();
         },
 

+ 4 - 6
esp/files/scripts/HPCCPlatformOpsWidget.js

@@ -16,8 +16,6 @@
 define([
     "dojo/_base/declare",
 
-    "dijit/_TemplatedMixin",
-    "dijit/_WidgetsInTemplateMixin",
     "dijit/registry",
 
     "hpcc/_TabContainerWidget",
@@ -30,10 +28,10 @@ define([
     "dijit/layout/ContentPane"
 
 ], function (declare,
-                _TemplatedMixin, _WidgetsInTemplateMixin, registry,
+                registry,
                 _TabContainerWidget, ESPRequest,
                 template) {
-    return declare("HPCCPlatformOpsWidget", [_TabContainerWidget, _TemplatedMixin, _WidgetsInTemplateMixin], {
+    return declare("HPCCPlatformOpsWidget", [_TabContainerWidget], {
         templateString: template,
         baseClass: "HPCCPlatformOpsWidget",
 
@@ -53,9 +51,9 @@ define([
 
         //  Implementation  ---
         init: function (params) {
-            if (this.initalized)
+            if (this.inherited(arguments))
                 return;
-            this.initalized = true;
+
             this.initTab();
         },
 

+ 4 - 6
esp/files/scripts/HPCCPlatformRoxieWidget.js

@@ -16,8 +16,6 @@
 define([
     "dojo/_base/declare",
 
-    "dijit/_TemplatedMixin",
-    "dijit/_WidgetsInTemplateMixin",
     "dijit/registry",
 
     "hpcc/_TabContainerWidget",
@@ -30,10 +28,10 @@ define([
     "dijit/layout/ContentPane"
 
 ], function (declare,
-                _TemplatedMixin, _WidgetsInTemplateMixin, registry,
+                registry,
                 _TabContainerWidget, ESPRequest,
                 template) {
-    return declare("HPCCPlatformRoxieWidget", [_TabContainerWidget, _TemplatedMixin, _WidgetsInTemplateMixin], {
+    return declare("HPCCPlatformRoxieWidget", [_TabContainerWidget], {
         templateString: template,
         baseClass: "HPCCPlatformRoxieWidget",
 
@@ -53,9 +51,9 @@ define([
 
         //  Implementation  ---
         init: function (params) {
-            if (this.initalized)
+            if (this.inherited(arguments))
                 return;
-            this.initalized = true;
+
             this.initTab();
         },
 

+ 3 - 6
esp/files/scripts/HPCCPlatformWidget.js

@@ -18,8 +18,6 @@ define([
     "dojo/_base/lang",
     "dojo/dom",
 
-    "dijit/_TemplatedMixin",
-    "dijit/_WidgetsInTemplateMixin",
     "dijit/registry",
     "dijit/Tooltip",
 
@@ -49,10 +47,10 @@ define([
     "hpcc/HPCCPlatformOpsWidget"
 
 ], function (declare, lang, dom,
-                _TemplatedMixin, _WidgetsInTemplateMixin, registry, Tooltip,
+                registry, Tooltip,
                 _TabContainerWidget, ESPRequest, WsAccount,
                 template) {
-    return declare("HPCCPlatformWidget", [_TabContainerWidget, _TemplatedMixin, _WidgetsInTemplateMixin], {
+    return declare("HPCCPlatformWidget", [_TabContainerWidget], {
         templateString: template,
         baseClass: "HPCCPlatformWidget",
 
@@ -100,9 +98,8 @@ define([
 
         //  Implementation  ---
         init: function (params) {
-            if (this.initalized)
+             if (this.inherited(arguments))
                 return;
-            this.initalized = true;
 
             var context = this;
             WsAccount.MyAccount({

+ 5 - 8
esp/files/scripts/HexViewWidget.js

@@ -23,10 +23,8 @@ define([
     "dojo/request/iframe",
 
     "dijit/registry",
-    "dijit/layout/_LayoutWidget",
-    "dijit/_TemplatedMixin",
-    "dijit/_WidgetsInTemplateMixin",
 
+    "hpcc/_Widget",
     "hpcc/ESPWorkunit",
     "hpcc/ECLSourceWidget",
 
@@ -36,10 +34,10 @@ define([
     "dijit/form/CheckBox"
 ],
     function (declare, arrayUtil, lang, Memory, Observable, iframe,
-            registry, _LayoutWidget, _TemplatedMixin, _WidgetsInTemplateMixin,
-            ESPWorkunit, ECLSourceWidget,
+            registry,
+            _Widget, ESPWorkunit, ECLSourceWidget,
             template) {
-        return declare("HexViewWidget", [_LayoutWidget, _TemplatedMixin, _WidgetsInTemplateMixin], {
+        return declare("HexViewWidget", [_Widget], {
             templateString: template,
             baseClass: "HexViewWidget",
 
@@ -91,9 +89,8 @@ define([
             },
 
             init: function (params) {
-                if (this.initalized)
+                if (this.inherited(arguments))
                     return;
-                this.initalized = true;
 
                 this.logicalFile = params.logicalFile;
 

+ 5 - 8
esp/files/scripts/InfoGridWidget.js

@@ -23,9 +23,6 @@ define([
     "dojo/store/Observable",
 
     "dijit/registry",
-    "dijit/layout/_LayoutWidget",
-    "dijit/_TemplatedMixin",
-    "dijit/_WidgetsInTemplateMixin",
 
     "dojox/data/AndOrReadStore",
 
@@ -35,6 +32,7 @@ define([
     "dgrid/extensions/ColumnResizer",
     "dgrid/extensions/DijitRegistry",
 
+    "hpcc/_Widget",
     "hpcc/ESPUtil",
     "hpcc/ESPWorkunit",
 
@@ -45,12 +43,12 @@ define([
     "dijit/form/CheckBox"
 ],
     function (declare, lang, arrayUtil, domClass, Memory, Observable,
-            registry, _LayoutWidget, _TemplatedMixin, _WidgetsInTemplateMixin, 
+            registry, 
             AndOrReadStore,
             OnDemandGrid, Keyboard, Selection, ColumnResizer, DijitRegistry,
-            ESPUtil, ESPWorkunit,
+            _Widget, ESPUtil, ESPWorkunit,
             template) {
-        return declare("InfoGridWidget", [_LayoutWidget, _TemplatedMixin, _WidgetsInTemplateMixin], {
+        return declare("InfoGridWidget", [_Widget], {
             templateString: template,
             baseClass: "InfoGridWidget",
             borderContainer: null,
@@ -161,9 +159,8 @@ define([
             },
 
             init: function (params) {
-                if (this.initalized)
+                if (this.inherited(arguments))
                     return;
-                this.initalized = true;
 
                 if (params.onErrorClick) {
                     this.onErrorClick = params.onErrorClick;

+ 3 - 7
esp/files/scripts/LFDetailsWidget.js

@@ -24,8 +24,6 @@ define([
     "dojo/dom-form",
     "dojo/query",
 
-    "dijit/_TemplatedMixin",
-    "dijit/_WidgetsInTemplateMixin",
     "dijit/layout/BorderContainer",
     "dijit/layout/TabContainer",
     "dijit/layout/ContentPane",
@@ -53,10 +51,10 @@ define([
 
     "dijit/TooltipDialog"
 ], function (exports, declare, lang, arrayUtil, dom, domAttr, domClass, domForm, query,
-                _TemplatedMixin, _WidgetsInTemplateMixin, BorderContainer, TabContainer, ContentPane, Toolbar, TooltipDialog, Form, SimpleTextarea, TextBox, Button, DropDownButton, TitlePane, registry,
+                BorderContainer, TabContainer, ContentPane, Toolbar, TooltipDialog, Form, SimpleTextarea, TextBox, Button, DropDownButton, TitlePane, registry,
                 _TabContainerWidget, ResultWidget, EclSourceWidget, FilePartsWidget, WUDetailsWidget, DFUWUDetailsWidget, TargetSelectWidget, ESPLogicalFile, ESPDFUWorkunit,
                 template) {
-    exports.fixCircularDependency = declare("LFDetailsWidget", [_TabContainerWidget, _TemplatedMixin, _WidgetsInTemplateMixin], {
+    exports.fixCircularDependency = declare("LFDetailsWidget", [_TabContainerWidget], {
         templateString: template,
         baseClass: "LFDetailsWidget",
         borderContainer: null,
@@ -72,7 +70,6 @@ define([
 
         logicalFile: null,
         prevState: "",
-        initalized: false,
 
         postCreate: function (args) {
             this.inherited(arguments);
@@ -158,9 +155,8 @@ define([
 
         //  Implementation  ---
         init: function (params) {
-            if (this.initalized)
+            if (this.inherited(arguments))
                 return;
-            this.initalized = true;
 
             var context = this;
             if (params.Name) {

+ 4 - 6
esp/files/scripts/LZBrowseWidget.js

@@ -25,8 +25,6 @@ define([
     "dojo/date",
     "dojo/on",
 
-    "dijit/_TemplatedMixin",
-    "dijit/_WidgetsInTemplateMixin",
     "dijit/registry",
     "dijit/Dialog",
     "dijit/Menu",
@@ -74,11 +72,11 @@ define([
     "dojox/form/uploader/FileList"
 
 ], function (declare, lang, arrayUtil, dom, domAttr, domClass, domForm, iframe, date, on,
-                _TemplatedMixin, _WidgetsInTemplateMixin, registry, Dialog, Menu, MenuItem, MenuSeparator, PopupMenuItem,
+                registry, Dialog, Menu, MenuItem, MenuSeparator, PopupMenuItem,
                 OnDemandGrid, tree, Keyboard, Selection, selector, ColumnResizer, DijitRegistry, Pagination,
                 _TabContainerWidget, FileSpray, ESPUtil, ESPRequest, ESPDFUWorkunit, HexViewWidget, DFUWUDetailsWidget, TargetSelectWidget,
                 template) {
-    return declare("LZBrowseWidget", [_TabContainerWidget, _TemplatedMixin, _WidgetsInTemplateMixin, ESPUtil.FormHelper], {
+    return declare("LZBrowseWidget", [_TabContainerWidget, ESPUtil.FormHelper], {
         templateString: template,
         baseClass: "LZBrowseWidget",
 
@@ -284,9 +282,9 @@ define([
 
         //  Implementation  ---
         init: function (params) {
-            if (this.initalized)
+            if (this.inherited(arguments))
                 return;
-            this.initalized = true;
+
             this.initLandingZonesGrid();
             this.selectChild(this.landingZonesTab, true);
             var context = this;

+ 5 - 8
esp/files/scripts/LogsWidget.js

@@ -23,9 +23,6 @@ define([
     "dojo/request/iframe",
 
     "dijit/registry",
-    "dijit/layout/_LayoutWidget",
-    "dijit/_TemplatedMixin",
-    "dijit/_WidgetsInTemplateMixin",
 
     "dgrid/OnDemandGrid",
     "dgrid/Keyboard",
@@ -34,6 +31,7 @@ define([
     "dgrid/extensions/ColumnResizer",
     "dgrid/extensions/DijitRegistry",
 
+    "hpcc/_Widget",
     "hpcc/ESPUtil",
     "hpcc/ESPRequest",
     "hpcc/ESPWorkunit",
@@ -41,11 +39,11 @@ define([
     "dojo/text!../templates/LogsWidget.html"
 ],
     function (declare, array, lang, Memory, Observable, iframe,
-            registry, _LayoutWidget, _TemplatedMixin, _WidgetsInTemplateMixin,
+            registry,
             OnDemandGrid, Keyboard, Selection, selector, ColumnResizer, DijitRegistry,
-            ESPUtil, ESPRequest, ESPWorkunit,
+            _Widget, ESPUtil, ESPRequest, ESPWorkunit,
             template) {
-        return declare("LogsWidget", [_LayoutWidget, _TemplatedMixin, _WidgetsInTemplateMixin], {
+        return declare("LogsWidget", [_Widget], {
             templateString: template,
             baseClass: "LogsWidget",
             borderContainer: null,
@@ -148,9 +146,8 @@ define([
             },
             //  Plugin wrapper  ---
             init: function (params) {
-                if (this.initalized)
+                if (this.inherited(arguments))
                     return;
-                this.initalized = true;
 
                 this.logData = [];
                 var context = this;

+ 5 - 10
esp/files/scripts/ResultWidget.js

@@ -19,9 +19,6 @@ define([
     "dojo/dom",
     "dojo/request/iframe",
 
-    "dijit/layout/_LayoutWidget",
-    "dijit/_TemplatedMixin",
-    "dijit/_WidgetsInTemplateMixin",
     "dijit/registry",
 
     "dgrid/Grid",
@@ -32,6 +29,7 @@ define([
     "dgrid/extensions/DijitRegistry",
     "dgrid/extensions/Pagination",
 
+    "hpcc/_Widget",
     "hpcc/ESPBase",
     "hpcc/ESPWorkunit",
     "hpcc/ESPLogicalFile",
@@ -44,18 +42,17 @@ define([
     "dijit/form/Button",
     "dijit/ToolbarSeparator"
 ], function (declare, lang, dom, iframe,
-                _LayoutWidget, _TemplatedMixin, _WidgetsInTemplateMixin, registry,
+                registry,
                 Grid, Keyboard, Selection, selector, ColumnResizer, DijitRegistry, Pagination,
-                ESPBase, ESPWorkunit, ESPLogicalFile,
+                _Widget, ESPBase, ESPWorkunit, ESPLogicalFile,
                 template) {
-    return declare("ResultWidget", [_LayoutWidget, _TemplatedMixin, _WidgetsInTemplateMixin], {
+    return declare("ResultWidget", [_Widget], {
         templateString: template,
         baseClass: "ResultWidget",
 
         borderContainer: null,
         grid: null,
 
-        initalized: false,
         loaded: false,
 
         buildRendering: function (args) {
@@ -124,10 +121,8 @@ define([
         },
 
         init: function (params) {
-            if (this.initalized) {
+            if (this.inherited(arguments))
                 return;
-            }
-            this.initalized = true;
 
             this.result = params.result;
             //TODO:  Encapsulate this IF into ESPResult.js

+ 5 - 3
esp/files/scripts/ResultsWidget.js

@@ -49,9 +49,8 @@ define([
         },
 
         init: function (params) {
-            if (this.initalized)
+            if (this.inherited(arguments))
                 return;
-            this.initalized = true;
 
             if (params.Wuid) {
                 this.wu = ESPWorkunit.Get(params.Wuid);
@@ -136,7 +135,10 @@ define([
                     style: "padding: 0px; overflow: hidden",
                     hpcc: {
                         type: "ResultWidget",
-                        params: row
+                        params: {
+                            Wuid: row.Wuid,
+                            Sequence: row.Sequence
+                        }
                     }
                 });
             }

+ 3 - 7
esp/files/scripts/SFDetailsWidget.js

@@ -26,8 +26,6 @@ define([
     "dojo/store/Memory",
     "dojo/store/Observable",
 
-    "dijit/_TemplatedMixin",
-    "dijit/_WidgetsInTemplateMixin",
     "dijit/layout/BorderContainer",
     "dijit/layout/TabContainer",
     "dijit/layout/ContentPane",
@@ -62,12 +60,12 @@ define([
 
     "dijit/TooltipDialog"
 ], function (exports, declare, lang, arrayUtil, dom, domAttr, domClass, domForm, query, Memory, Observable,
-                _TemplatedMixin, _WidgetsInTemplateMixin, BorderContainer, TabContainer, ContentPane, Toolbar, TooltipDialog, Form, SimpleTextarea, TextBox, Button, DropDownButton, TitlePane, registry,
+                BorderContainer, TabContainer, ContentPane, Toolbar, TooltipDialog, Form, SimpleTextarea, TextBox, Button, DropDownButton, TitlePane, registry,
                 OnDemandGrid, Keyboard, Selection, selector, ColumnResizer, DijitRegistry,
                 _TabContainerWidget, ResultWidget, EclSourceWidget, FilePartsWidget, WUDetailsWidget, DFUWUDetailsWidget, TargetSelectWidget,
                 ESPUtil, ESPLogicalFile,
                 template) {
-    exports.fixCircularDependency = declare("SFDetailsWidget", [_TabContainerWidget, _TemplatedMixin, _WidgetsInTemplateMixin], {
+    exports.fixCircularDependency = declare("SFDetailsWidget", [_TabContainerWidget], {
         templateString: template,
         baseClass: "SFDetailsWidget",
         borderContainer: null,
@@ -77,7 +75,6 @@ define([
 
         logicalFile: null,
         prevState: "",
-        initalized: false,
 
         postCreate: function (args) {
             this.inherited(arguments);
@@ -135,9 +132,8 @@ define([
 
         //  Implementation  ---
         init: function (params) {
-            if (this.initalized)
+            if (this.inherited(arguments))
                 return;
-            this.initalized = true;
 
             var context = this;
             if (params.Name) {

+ 1 - 2
esp/files/scripts/SearchResultsWidget.js

@@ -54,9 +54,8 @@ define([
         },
 
         init: function (params) {
-            if (this.initalized)
+            if (this.inherited(arguments))
                 return;
-            this.initalized = true;
 
             this._refreshActionState();
         },

+ 1 - 2
esp/files/scripts/SourceFilesWidget.js

@@ -44,9 +44,8 @@ define([
         wu: null,
 
         init: function (params) {
-            if (this.initalized)
+            if (this.inherited(arguments))
                 return;
-            this.initalized = true;
 
             if (params.Wuid) {
                 this.wu = ESPWorkunit.Get(params.Wuid);

+ 5 - 8
esp/files/scripts/TimingGridWidget.js

@@ -22,9 +22,6 @@ define([
     "dojo/store/Observable",
 
     "dijit/registry",
-    "dijit/layout/_LayoutWidget",
-    "dijit/_TemplatedMixin",
-    "dijit/_WidgetsInTemplateMixin",
 
     "dgrid/OnDemandGrid",
     "dgrid/Keyboard",
@@ -33,17 +30,18 @@ define([
     "dgrid/extensions/ColumnResizer",
     "dgrid/extensions/DijitRegistry",
 
+    "hpcc/_Widget",
     "hpcc/ESPUtil",
     "hpcc/ESPWorkunit",
 
     "dojo/text!../templates/TimingGridWidget.html"
 ],
     function (declare, lang, arrayUtil, Memory, Observable,
-            registry, _LayoutWidget, _TemplatedMixin, _WidgetsInTemplateMixin,
+            registry,
             OnDemandGrid, Keyboard, Selection, selector, ColumnResizer, DijitRegistry,
-            ESPUtil, ESPWorkunit,
+            _Widget, ESPUtil, ESPWorkunit,
             template) {
-        return declare("TimingGridWidget", [_LayoutWidget, _TemplatedMixin, _WidgetsInTemplateMixin], {
+        return declare("TimingGridWidget", [_Widget], {
             templateString: template,
             baseClass: "TimingGridWidget",
             timingGrid: null,
@@ -106,9 +104,8 @@ define([
             },
 
             init: function (params) {
-                if (this.initalized)
+                if (this.inherited(arguments))
                     return;
-                this.initalized = true;
 
                 this.defaultQuery = "*";
                 if (params.query) {

+ 5 - 8
esp/files/scripts/TimingPageWidget.js

@@ -18,21 +18,19 @@ define([
     "dojo/_base/declare",
 
     "dijit/registry",
-    "dijit/layout/_LayoutWidget",
-    "dijit/_TemplatedMixin",
-    "dijit/_WidgetsInTemplateMixin",
     "dijit/layout/BorderContainer",
 
+    "hpcc/_Widget",
     "hpcc/TimingGridWidget",
     "hpcc/TimingTreeMapWidget",
 
     "dojo/text!../templates/TimingPageWidget.html"
 ],
     function (declare,
-            registry, _LayoutWidget, _TemplatedMixin, _WidgetsInTemplateMixin, BorderContainer,
-            TimingGridWidget, TimingTreeMapWidget,
+            registry, BorderContainer,
+            _Widget, TimingGridWidget, TimingTreeMapWidget,
             template) {
-        return declare("TimingPageWidget", [_LayoutWidget, _TemplatedMixin, _WidgetsInTemplateMixin], {
+        return declare("TimingPageWidget", [_Widget], {
             templateString: template,
             baseClass: "TimingPageWidget",
             borderContainer: null,
@@ -65,9 +63,8 @@ define([
 
             //  Plugin wrapper  ---
             init: function (params) {
-                if (this.initalized)
+                if (this.inherited(arguments))
                     return;
-                this.initalized = true;
 
                 var context = this;
                 this.timingGrid.init(params);

+ 5 - 8
esp/files/scripts/TimingTreeMapWidget.js

@@ -20,22 +20,20 @@ define([
     "dojo/store/Memory",
 
     "dijit/registry",
-    "dijit/layout/_LayoutWidget",
-    "dijit/_TemplatedMixin",
-    "dijit/_WidgetsInTemplateMixin",
 
     "dojox/treemap/TreeMap",
 
+    "hpcc/_Widget",
     "hpcc/ESPWorkunit",
 
     "dojo/text!../templates/TimingTreeMapWidget.html"
 ],
     function (declare, lang, Memory,
-            registry, _LayoutWidget, _TemplatedMixin, _WidgetsInTemplateMixin, 
+            registry, 
             TreeMap,
-            ESPWorkunit,
+            _Widget, ESPWorkunit,
             template) {
-        return declare("TimingTreeMapWidget", [_LayoutWidget, _TemplatedMixin, _WidgetsInTemplateMixin], {
+        return declare("TimingTreeMapWidget", [_Widget], {
             templateString: template,
             baseClass: "TimingTreeMapWidget",
             treeMap: null,
@@ -81,9 +79,8 @@ define([
             },
 
             init: function (params) {
-                if (this.initalized)
+                if (this.inherited(arguments))
                     return;
-                this.initalized = true;
 
                 this.defaultQuery = "*";
                 if (params.query) {

+ 3 - 7
esp/files/scripts/WUDetailsWidget.js

@@ -22,8 +22,6 @@ define([
     "dojo/store/Memory",
     "dojo/store/Observable",
 
-    "dijit/_TemplatedMixin",
-    "dijit/_WidgetsInTemplateMixin",
     "dijit/registry",
 
     "dgrid/OnDemandGrid",
@@ -56,11 +54,11 @@ define([
     "dijit/TooltipDialog",
     "dijit/TitlePane"
 ], function (declare, dom, domAttr, domClass, query, Memory, Observable,
-                _TemplatedMixin, _WidgetsInTemplateMixin, registry,
+                registry,
                 OnDemandGrid, Keyboard, Selection, selector, ColumnResizer, DijitRegistry,
                 _TabContainerWidget, ESPWorkunit, EclSourceWidget, TargetSelectWidget, GraphsWidget, ResultsWidget, SourceFilesWidget, InfoGridWidget, LogsWidget, TimingPageWidget, ECLPlaygroundWidget,
                 template) {
-    return declare("WUDetailsWidget", [_TabContainerWidget, _TemplatedMixin, _WidgetsInTemplateMixin], {
+    return declare("WUDetailsWidget", [_TabContainerWidget], {
         templateString: template,
         baseClass: "WUDetailsWidget",
         summaryWidget: null,
@@ -81,7 +79,6 @@ define([
         xmlWidget: null,
         xmlWidgetLoaded: false,
 
-        initalized: false,
         wu: null,
         prevState: "",
 
@@ -162,9 +159,8 @@ define([
 
         //  Implementation  ---
         init: function (params) {
-            if (this.initalized)
+            if (this.inherited(arguments))
                 return;
-            this.initalized = true;
 
             if (params.Wuid) {
                 this.summaryWidget.set("title", params.Wuid);

+ 3 - 6
esp/files/scripts/WUQueryWidget.js

@@ -23,8 +23,6 @@ define([
     "dojo/date",
     "dojo/on",
 
-    "dijit/_TemplatedMixin",
-    "dijit/_WidgetsInTemplateMixin",
     "dijit/registry",
     "dijit/Dialog",
     "dijit/Menu",
@@ -64,11 +62,11 @@ define([
     "dojox/layout/TableContainer"
 
 ], function (declare, lang, arrayUtil, dom, domClass, domForm, date, on,
-                _TemplatedMixin, _WidgetsInTemplateMixin, registry, Dialog, Menu, MenuItem, MenuSeparator, PopupMenuItem,
+                registry, Dialog, Menu, MenuItem, MenuSeparator, PopupMenuItem,
                 Grid, Keyboard, Selection, selector, ColumnResizer, DijitRegistry, Pagination,
                 _TabContainerWidget, WsWorkunits, ESPUtil, ESPWorkunit, WUDetailsWidget, TargetSelectWidget,
                 template) {
-    return declare("WUQueryWidget", [_TabContainerWidget, _TemplatedMixin, _WidgetsInTemplateMixin, ESPUtil.FormHelper], {
+    return declare("WUQueryWidget", [_TabContainerWidget, ESPUtil.FormHelper], {
         templateString: template,
         baseClass: "WUQueryWidget",
 
@@ -248,9 +246,8 @@ define([
 
         //  Implementation  ---
         init: function (params) {
-            if (this.initalized)
+            if (this.inherited(arguments))
                 return;
-            this.initalized = true;
 
             this.clusterTargetSelect.init({
                 Targets: true,

+ 6 - 4
esp/files/scripts/_TabContainerWidget.js

@@ -5,12 +5,14 @@ define([
     "dojo/hash",
     "dojo/router",
 
-    "dijit/registry",
-    "dijit/layout/_LayoutWidget"
+    "hpcc/_Widget",
+
+    "dijit/registry"
 ], function (declare, lang, dom, hash, router,
-    registry, _LayoutWidget) {
+    _Widget,
+    registry) {
 
-    return declare("_TabContainerWidget", [_LayoutWidget], {
+    return declare("_TabContainerWidget", [_Widget], {
         //  Assumptions:
         //    this.id + "BorderContainer" may exist.
         //    this.id + "TabContainer" exits.

+ 32 - 0
esp/files/scripts/_Widget.js

@@ -0,0 +1,32 @@
+define([
+    "dojo/_base/declare", // declare
+    "dojo/io-query",
+
+    "dijit/layout/_LayoutWidget",
+    "dijit/_TemplatedMixin",
+    "dijit/_WidgetsInTemplateMixin"
+], function (declare, ioQuery,
+    _LayoutWidget, _TemplatedMixin, _WidgetsInTemplateMixin) {
+
+    return declare("_Widget", [_LayoutWidget, _TemplatedMixin, _WidgetsInTemplateMixin], {
+        baseClass: "_Widget",
+        
+        initalized: false,
+
+        _onNewPage: function (event) {
+            var baseUrl = document.URL.split("?")[0];
+            var paramsString = ioQuery.objectToQuery(this.params);
+            var win = window.open(baseUrl + "?Widget=" + this.declaredClass + "&" + paramsString, "_blank");
+            win.focus();
+        },
+
+        init: function (params) {
+            if (this.initalized)
+                return true;
+            this.initalized = true;
+            this.params = params;
+            
+            return false;
+        }
+    });
+});

+ 1 - 0
esp/files/templates/DFUQueryWidget.html

@@ -67,6 +67,7 @@
                         </div>
                     </div>
                     <span data-dojo-type="dijit.ToolbarSeparator"></span>
+                    <div id="${id}NewPage" class="right" data-dojo-attach-event="onClick:_onNewPage" data-dojo-props="iconClass:'iconNewPage', showLabel:false" data-dojo-type="dijit.form.Button">Open in New Page</div>
                 </div>
                 <div id="${id}WorkunitsGridCP" style="border:0px; padding: 0px; border-color:none" data-dojo-props="region: 'center'" data-dojo-type="dijit.layout.ContentPane">
                     <div id="${id}WorkunitsGrid">

+ 1 - 0
esp/files/templates/DFUWUDetailsWidget.html

@@ -13,6 +13,7 @@
                     <div id="${id}Resubmit" data-dojo-attach-event="onClick:_onResubmit" data-dojo-type="dijit.form.Button">Resubmit</div>
                     <div id="${id}Modify" data-dojo-attach-event="onClick:_onModify" data-dojo-type="dijit.form.Button">Modify</div>
                     <span data-dojo-type="dijit.ToolbarSeparator"></span>
+                    <div id="${id}NewPage" class="right" data-dojo-attach-event="onClick:_onNewPage" data-dojo-props="iconClass:'iconNewPage', showLabel:false" data-dojo-type="dijit.form.Button">Open in New Page</div>
                 </div>
                 <div data-dojo-props="region: 'center'" data-dojo-type="dijit.layout.ContentPane">
                         <h2>

+ 1 - 0
esp/files/templates/GetDFUWorkunitsWidget.html

@@ -30,6 +30,7 @@
                         </div>
                     </div>
                     <span data-dojo-type="dijit.ToolbarSeparator"></span>
+                    <div id="${id}NewPage" class="right" data-dojo-attach-event="onClick:_onNewPage" data-dojo-props="iconClass:'iconNewPage', showLabel:false" data-dojo-type="dijit.form.Button">Open in New Page</div>
                 </div>
                 <div id="${id}WorkunitsGridCP" style="border:0px; padding: 0px; border-color:none" data-dojo-props="region: 'center'" data-dojo-type="dijit.layout.ContentPane">
                     <div id="${id}WorkunitsGrid">

+ 3 - 2
esp/files/templates/GraphPageWidget.html

@@ -8,7 +8,6 @@
             <span data-dojo-type="dijit.ToolbarSeparator"></span>
             <label for="${id}MainDepth">Depth:</label>
             <input id="${id}MainDepth" style="width: 60px" value="2" data-dojo-attach-event="onChange:_onMainDepthChange" data-dojo-props="placeHolder:'Depth', constraints:{min:0,max:1000}" data-dojo-type="dijit.form.NumberSpinner" />
-            <div id="${id}MainRefresh" data-dojo-attach-event="onClick:_onMainRefresh" data-dojo-props="iconClass:'iconRefresh'" data-dojo-type="dijit.form.Button">Refresh</div>
             <span data-dojo-type="dijit.ToolbarSeparator"></span>
             <div id="${id}AdvancedMenu" data-dojo-type="dijit.form.DropDownButton">
                 <span>Advanced</span>
@@ -23,6 +22,7 @@
                     <div id="${id}About" data-dojo-attach-event="onClick:_onAbout" data-dojo-type="dijit.MenuItem">About Graph Control</div>
                 </div>
             </div>
+            <div id="${id}NewPage" class="right" data-dojo-attach-event="onClick:_onNewPage" data-dojo-props="iconClass:'iconNewPage', showLabel:false" data-dojo-type="dijit.form.Button">Open in New Page</div>
         </div>
         <div id="${id}RightBorderContainer" style="width: 33%; padding: 0px; overflow: hidden" data-dojo-props="region: 'right', splitter:true, minSize: 120" data-dojo-type="dijit.layout.BorderContainer">
             <div id="${id}OverviewTabContainer" data-dojo-props="region: 'center', tabPosition: 'bottom'" data-dojo-type="dijit.layout.TabContainer">
@@ -53,7 +53,8 @@
                     <input id="${id}LocalDepth" style="width: 60px" value="3" data-dojo-attach-event="onChange:_onLocalDepthChange" data-dojo-props="placeHolder:'Depth', constraints:{min:0,max:1000}" data-dojo-type="dijit.form.NumberSpinner" />
                     <label for="${id}LocalDistance">Distance:</label>
                     <input id="${id}LocalDistance" style="width: 60px" value="3" data-dojo-attach-event="onChange:_onLocalDistanceChange" data-dojo-props="placeHolder:'Depth', constraints:{min:0,max:1000}" data-dojo-type="dijit.form.NumberSpinner" />
-                    <div id="${id}LocalRefresh" data-dojo-attach-event="onClick:_onLocalRefresh" data-dojo-props="iconClass:'iconRefresh'" data-dojo-type="dijit.form.Button">Refresh</div>
+                    <span data-dojo-type="dijit.ToolbarSeparator"></span>
+                    <div id="${id}LocalRefresh" data-dojo-attach-event="onClick:_onLocalRefresh" data-dojo-props="iconClass:'iconRefresh'" data-dojo-type="dijit.form.Button">Sync</div>
                 </div>
                 <div id="${id}Properties" title="Properties" data-dojo-type="dijit.layout.ContentPane">
                 </div>

+ 1 - 0
esp/files/templates/GraphWidget.html

@@ -2,6 +2,7 @@
     <div id="${id}BorderContainer" class="${baseClass}BorderContainer" style="width: 100%; height: 100%; padding: 0px; overflow: hidden" data-dojo-props="splitter: false, gutters:false" data-dojo-type="dijit.layout.BorderContainer">
         <div id="${id}ToolbarContentPane" class="${baseClass}ToolbarContentPane" style="padding: 0px; overflow: hidden" data-dojo-props="region: 'top'" data-dojo-type="dijit.layout.ContentPane">
             <div class="topPanel dijit dijitToolbar" role="toolbar">
+                <div data-dojo-attach-event="onClick:_onClickRefresh" data-dojo-props="iconClass:'iconRefresh', showLabel:false" data-dojo-type="dijit.form.Button">Refresh</div>
                 <div data-dojo-attach-event="onClick:_onClickZoomOrig" data-dojo-props="iconClass:'iconZoomOrig', showLabel:false" data-dojo-type="dijit.form.Button">Zoom 100%</div>
                 <div data-dojo-attach-event="onClick:_onClickZoomAll" data-dojo-props="iconClass:'iconZoomAll', showLabel:false" data-dojo-type="dijit.form.Button">Zoom All</div>
                 <div data-dojo-attach-event="onClick:_onClickZoomWidth" data-dojo-props="iconClass:'iconZoomWidth', showLabel:false" data-dojo-type="dijit.form.Button">Zoom Width</div>

+ 1 - 0
esp/files/templates/GridDetailsWidget.html

@@ -8,6 +8,7 @@
                     <div id="${id}Open" data-dojo-attach-event="onClick:_onOpen" data-dojo-type="dijit.form.Button">Open</div>
                     <span id="${id}ContainerNode" data-dojo-attach-point="containerNode"></span>
                     <span data-dojo-type="dijit.ToolbarSeparator"></span>
+                    <div id="${id}NewPage" class="right" data-dojo-attach-event="onClick:_onNewPage" data-dojo-props="iconClass:'iconNewPage', showLabel:false" data-dojo-type="dijit.form.Button">Open in New Page</div>
                 </div>
                 <div id="${id}GridCP" style="border:0px; padding: 0px; border-color:none" data-dojo-props="region: 'center'" data-dojo-type="dijit.layout.ContentPane">
                     <div id="${id}Grid">

+ 1 - 0
esp/files/templates/ResultWidget.html

@@ -6,6 +6,7 @@
             <div data-dojo-attach-event="onClick:_onDownloadGZip" data-dojo-type="dijit.form.Button">GZip</div>
             <div data-dojo-attach-event="onClick:_onDownloadXLS" data-dojo-type="dijit.form.Button">XLS</div>
             <span data-dojo-type="dijit.ToolbarSeparator"></span>
+            <div id="${id}NewPage" class="right" data-dojo-attach-event="onClick:_onNewPage" data-dojo-props="iconClass:'iconNewPage', showLabel:false" data-dojo-type="dijit.form.Button">Open in New Page</div>
         </div>
         <div id="${id}GridCP" style="padding: 0px; border:0px; border-color:none" data-dojo-props="region: 'center'" data-dojo-type="dijit.layout.ContentPane">
             <div id="${id}Grid">

+ 1 - 0
esp/files/templates/WUDetailsWidget.html

@@ -24,6 +24,7 @@
                         </div>
                     </div>
                     <span data-dojo-type="dijit.ToolbarSeparator"></span>
+                    <div id="${id}NewPage" class="right" data-dojo-attach-event="onClick:_onNewPage" data-dojo-props="iconClass:'iconNewPage', showLabel:false" data-dojo-type="dijit.form.Button">Open in New Page</div>
                 </div>
                 <div data-dojo-props="region: 'center'" data-dojo-type="dijit.layout.ContentPane">
                     <h2>

+ 1 - 0
esp/files/templates/WUQueryWidget.html

@@ -43,6 +43,7 @@
                         </div>
                     </div>
                     <span data-dojo-type="dijit.ToolbarSeparator"></span>
+                    <div id="${id}NewPage" class="right" data-dojo-attach-event="onClick:_onNewPage" data-dojo-props="iconClass:'iconNewPage', showLabel:false" data-dojo-type="dijit.form.Button">Open in New Page</div>
                 </div>
                 <div id="${id}WorkunitsGridCP" style="border:0px; padding: 0px; border-color:none" data-dojo-props="region: 'center'" data-dojo-type="dijit.layout.ContentPane">
                     <div id="${id}WorkunitsGrid">