瀏覽代碼

EclWatch: Issues displaying incomplete results.

Removed individual result "Show" link.
If results are not available (yet/ever), display WU state instead of
Loading/Calculating animation.
Update state as it changes.
Handle possible non XML from the server.

Fixes gh-2439

Signed-off-by: Gordon Smith <gordon.smith@lexisnexis.com>
Gordon Smith 13 年之前
父節點
當前提交
a3425f140e
共有 3 個文件被更改,包括 29 次插入7 次删除
  1. 1 3
      esp/eclwatch/ws_XSLT/wuidcommon.xslt
  2. 18 3
      esp/files/scripts/ResultsControl.js
  3. 10 1
      esp/files/scripts/WsWorkunits.js

+ 1 - 3
esp/eclwatch/ws_XSLT/wuidcommon.xslt

@@ -400,7 +400,7 @@
                   Results: (<xsl:value-of select="ResultCount"/>)
                 </A>
                 &nbsp;-&nbsp;
-                <a href="/esp/iframe?esp_iframe_title=ECL Playground (Results) - {$wuid}&amp;inner=/esp/files/ECLPlaygroundResults.htm%3fWuid%3d{$wuid}" >Show</a>
+                <a href="/esp/iframe?esp_iframe_title=Results - {$wuid}&amp;inner=/esp/files/ECLPlaygroundResults.htm%3fWuid%3d{$wuid}" >Show</a>
               </div>
             </div>
             <div id="Results" class="wusectioncontent">
@@ -1046,8 +1046,6 @@
           </xsl:otherwise>
         </xsl:choose>
         <xsl:if test="number(IsSupplied)"> supplied</xsl:if>
-        &nbsp;-&nbsp;
-        <a href="javascript:void(0);" onclick="getLink(document.getElementById('ECL_Result_{position()}'), '/esp/files/ECLPlaygroundResults.htm?Wuid={$wuid}&amp;Sequence={Link}');return false;">Show</a>
       </td>
      <xsl:choose>
        <xsl:when test="number(ShowFileContent) and string-length(Link)">

+ 18 - 3
esp/files/scripts/ResultsControl.js

@@ -32,6 +32,7 @@ define([
 		resultsSheetID: "",
 		resultSheet: {},
 		sequenceResultStoreMap: [],
+		sequenceResultGridMap: [],
 		delayLoad: [],
 
 		//  Callbacks
@@ -46,6 +47,10 @@ define([
 			var context = this;
 			this.resultSheet.watch("selectedChildWidget", function (name, oval, nval) {
 				if (nval.id in context.delayLoad) {
+					var result = context.workunit.results[context.delayLoad[nval.id].resultIndex];
+					if (!result.isComplete()) {
+						context.delayLoad[nval.id].loadingMessage = context.getLoadingMessage();
+					}
 					context.delayLoad[nval.id].placeAt(nval.containerNode, "last");
 					context.delayLoad[nval.id].startup();
 					nval.resize();
@@ -57,6 +62,7 @@ define([
 		clear: function () {
 			this.delayLoad = [];
 			this.sequenceResultStoreMap = [];
+			this.sequenceResultGridMap = [];
 			var tabs = this.resultSheet.getChildren();
 			for (var i = 0; i < tabs.length; ++i) {
 				this.resultSheet.removeChild(tabs[i]);
@@ -84,16 +90,17 @@ define([
 			return pane;
 		},
 
-		addResultTab: function (result) {
+		addResultTab: function (resultIndex) {
+			var result = this.workunit.results[resultIndex];
 			var paneID = this.getNextPaneID();
 			var grid = EnhancedGrid({
+				resultIndex: resultIndex,
 				store: result.getObjectStore(),
 				query: { id: "*" },
 				structure: result.getStructure(),
 				canSort: function (col) {
 					return false;
 				},
-				loadingMessage: result.isComplete() ? "<span class=\'dojoxGridLoading\'>Loading...</span>" : "<span class=\'dojoxGridLoading\'>Calculating...</span>",
 				plugins: {
 					//					nestedSorting: true,
 					pagination: {
@@ -110,6 +117,7 @@ define([
 			});
 			this.delayLoad[paneID] = grid;
 			this.sequenceResultStoreMap[result.Sequence] = result.store;
+			this.sequenceResultGridMap[result.Sequence] = grid;
 			return this.addTab(result.getName(), paneID);
 		},
 
@@ -128,14 +136,21 @@ define([
 				if (result.Sequence in this.sequenceResultStoreMap) {
 					this.sequenceResultStoreMap[result.Sequence].isComplete = result.isComplete();
 				} else {
-					pane = this.addResultTab(result);
+					pane = this.addResultTab(i);
 					if (this.sequence && this.sequence == result.Sequence) {
 						this.resultSheet.selectChild(pane);
 					}
 				}
+				if (!result.isComplete()) {
+					this.sequenceResultGridMap[result.Sequence].showMessage(this.getLoadingMessage());
+				}
 			}
 		},
 
+		getLoadingMessage: function () {
+			return "<span class=\'dojoxGridWating\'>[" + this.workunit.state + "]</span>";
+		},
+
 		addExceptionTab: function (exceptions) {
 			if (exceptions.length) {
 				var resultNode = this.addTab("Error/Warning(s)");

+ 10 - 1
esp/files/scripts/WsWorkunits.js

@@ -103,7 +103,16 @@ define([
 							rows[i].myInjectedRowNum = options.start + i + 1;
 						}
 						rows.total = context.getValue(domXml, "Total");
-						deferredResults.resolve(rows);
+						//  TODO - Need to check why this happens only sometimes  (Suspect non XML from the server) ---
+						if (rows.total == null) {
+							var debug = context.flattenXml(domXml);
+							setTimeout(function () {
+								context.queryWhenComplete(query, options, deferredResults);
+							}, 100);
+						}
+						else {
+							deferredResults.resolve(rows);
+						}
 					}
 				});
 			} else {