瀏覽代碼

Merge pull request #4977 from GordonSmith/HPCC-9803

HPCC-9803 New ECL Watch does not support existing visualisations

Reviewed-By: Miguel Vazquez <miguel.vazquez@lexisnexis.com>
Reviewed-By: Richard Chapman <rchapman@hpccsystems.com>
Richard Chapman 11 年之前
父節點
當前提交
04d271e0a9
共有 3 個文件被更改,包括 70 次插入8 次删除
  1. 11 2
      esp/files/scripts/ESPWorkunit.js
  2. 2 2
      esp/files/scripts/GridDetailsWidget.js
  3. 57 4
      esp/files/scripts/ResultsWidget.js

+ 11 - 2
esp/files/scripts/ESPWorkunit.js

@@ -94,7 +94,11 @@ define([
             var sequenceResults = [];
             var namedResults = {};
             for (var i = 0; i < Results.ECLResult.length; ++i) {
-                var espResult = ESPResult.Get(lang.mixin({ wu: this.wu, Wuid: this.Wuid }, Results.ECLResult[i]));
+                var espResult = ESPResult.Get(lang.mixin({
+                    wu: this.wu,
+                    Wuid: this.Wuid,
+                    ResultViews: lang.exists("ResultViews.View", Results) ? Results.ResultViews.View : []
+                }, Results.ECLResult[i]));
                 results.push(espResult);
                 sequenceResults[Results.ECLResult[i].Sequence] = espResult;
                 if (Results.ECLResult[i].Name) {
@@ -327,7 +331,7 @@ define([
                     IncludeGraphs: args.onGetGraphs ? true : false,
                     IncludeSourceFiles: args.onGetSourceFiles ? true : false,
                     IncludeResults: (args.onGetResults || args.onGetSequenceResults) ? true : false,
-                    IncludeResultsViewNames: false,
+                    IncludeResultsViewNames: (args.onGetResults || args.onGetSequenceResults) ? true : false,
                     IncludeVariables: args.onGetVariables ? true : false,
                     IncludeTimers: args.onGetTimers ? true : false,
                     IncludeDebugValues: false,
@@ -342,6 +346,11 @@ define([
                         //  A truncated version of ECL just causes issues  ---
                         delete response.WUInfoResponse.Workunit.Query;
                     }
+                    if (lang.exists("WUInfoResponse.ResultViews", response) && lang.exists("WUInfoResponse.Workunit.Results", response)) {
+                        lang.mixin(response.WUInfoResponse.Workunit.Results, {
+                            ResultViews: response.WUInfoResponse.ResultViews
+                        });
+                    }
                     context.updateData(response.WUInfoResponse.Workunit);
 
                     if (args.onGetText && lang.exists("Query.Text", context)) {

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

@@ -159,11 +159,11 @@ define([
             var currSel = this.getSelectedChild();
             if (currSel) {
                 if (!currSel.initalized) {
-                    if (currSel.hpcc) {
+                    if (currSel.init && currSel.hpcc) {
                         currSel.init(currSel.hpcc.params);
                     }
                     currSel.initalized = true;
-                } else if (currSel.refresh) {
+                } else if (currSel.refresh && !currSel.noRefresh) {
                     currSel.refresh(currSel.hpcc.refreshParams);
                 }
             }

+ 57 - 4
esp/files/scripts/ResultsWidget.js

@@ -15,9 +15,12 @@
 ############################################################################## */
 define([
     "dojo/_base/declare",
+    "dojo/_base/array",
     "dojo/_base/lang",
     "dojo/on",
 
+    "dijit/layout/ContentPane",
+
     "dgrid/OnDemandGrid",
     "dgrid/Keyboard",
     "dgrid/Selection",
@@ -26,15 +29,17 @@ define([
     "dgrid/extensions/DijitRegistry",
 
     "hpcc/GridDetailsWidget",
+    "hpcc/ESPRequest",
     "hpcc/ESPWorkunit",
     "hpcc/ResultWidget",
     "hpcc/LFDetailsWidget",
     "hpcc/SFDetailsWidget",
     "hpcc/ESPUtil"
 
-], function (declare, lang, on,
+], function (declare, arrayUtil, lang, on,
+                ContentPane,
                 OnDemandGrid, Keyboard, Selection, selector, ColumnResizer, DijitRegistry,
-                GridDetailsWidget, ESPWorkunit, ResultWidget, LFDetailsWidget, SFDetailsWidget, ESPUtil) {
+                GridDetailsWidget, ESPRequest, ESPWorkunit, ResultWidget, LFDetailsWidget, SFDetailsWidget, ESPUtil) {
     return declare("ResultsWidget", [GridDetailsWidget], {
         gridTitle: "Outputs",
         idProperty: "Sequence",
@@ -48,6 +53,14 @@ define([
             this.selectChild(tab);
         },
 
+        _onRowDblClickView: function (row, viewName) {
+            var tab = this.ensurePane(row, {
+                resultView: true,
+                viewName: viewName
+            });
+            this.selectChild(tab);
+        },
+
         init: function (params) {
             if (this.inherited(arguments))
                 return;
@@ -82,12 +95,26 @@ define([
                         }
                     },
                     FileName: {
-                        label: "FileName", sortable: true,
+                        label: "File Name", sortable: true,
                         formatter: function (FileName, idx) {
                             return "<a href='#' rowIndex=" + idx + " class='" + context.id + "FileClick'>" + FileName + "</a>";
                         }
                     },
-                    Value: { label: "Value", width: 360, sortable: true }
+                    Value: {
+                        label: "Value",
+                        width: 360,
+                        sortable: true
+                    },
+                    ResultViews: {
+                        label: "Views", sortable: true,
+                        formatter: function (ResultViews, idx) {
+                            var retVal = "";
+                            arrayUtil.forEach(ResultViews, function (item, idx) {
+                                retVal += "<a href='#' viewName=" + encodeURIComponent(item) + " class='" + context.id + "ViewClick'>" + item + "</a>&nbsp;";
+                            });
+                            return retVal;
+                        }
+                    }
                 }
             }, domID);
 
@@ -104,12 +131,20 @@ define([
                     context._onRowDblClickFile(row);
                 }
             });
+            on(document, "." + this.id + "ViewClick:click", function (evt) {
+                if (context._onRowDblClick) {
+                    var row = context.grid.row(evt).data;
+                    context._onRowDblClickView(row, evt.srcElement.getAttribute("viewName"));
+                }
+            });
             return retVal;
         },
 
         getDetailID: function (row, params) {
             if (row.FileName && params && params.logicalFile) {
                 return this.id + "_" + "File" + row[this.idProperty];
+            } else if (params && params.resultView && params.viewName) {
+                return this.id + "_" + params.viewName + row[this.idProperty];
             }
             return this.inherited(arguments);
         },
@@ -127,6 +162,24 @@ define([
                         }
                     }
                 });
+            } else if (params && params.resultView && params.viewName) {
+                return new ContentPane({
+                    id: id,
+                    title: row.Name + " [" + decodeURIComponent(params.viewName) + "]",
+                    closable: true,
+                    content: dojo.create("iframe", {
+                        src: ESPRequest.getBaseURL("WsWorkunits") + "/WUResultView?Wuid=" + row.Wuid + "&ResultName=" + row.Name + "&ViewName=" + params.viewName,
+                        style: "border: 0; width: 100%; height: 100%"
+                    }),
+                    hpcc: {
+                        type: "ContentPane",
+                        params: {
+                            Name: row.Name,
+                            viewName: params.viewName
+                        }
+                    },
+                    noRefresh: true
+                });
             } else {
                 return new ResultWidget({
                     id: id,