瀏覽代碼

Merge pull request #13981 from GordonSmith/HPCC-24347

HPCC-24347 ECL Watch improve "function" timings

Reviewed-By: Kunal Aswani <kunal.aswani@lexisnexis.com>
Reviewed-By: Richard Chapman <rchapman@hpccsystems.com>
Richard Chapman 4 年之前
父節點
當前提交
3821c20716
共有 2 個文件被更改,包括 32 次插入0 次删除
  1. 8 0
      esp/src/eclwatch/TimingPageWidget.js
  2. 24 0
      esp/src/src/Timings.ts

+ 8 - 0
esp/src/eclwatch/TimingPageWidget.js

@@ -163,6 +163,9 @@ define([
                                 case "activity":
                                 case "edge":
                                     return "<a href='#" + cell + "' class='dgrid-row-url'>" + cell + "</a>";
+                                case "function":
+                                    const activityScopeID = context._timings.activityScopeID(cell);
+                                    return "<a href='#" + cell + "' class='dgrid-row-url'>" + activityScopeID + "</a>" + cell.substring(activityScopeID.length);
                             }
                             return cell;
                         }
@@ -198,6 +201,11 @@ define([
                             SubGraphId = context._timings.subgraphID(row.name);
                             ActivityId = row.id;
                             break;
+                        case "function":
+                            GraphName = context._timings.graphID(row.name);
+                            SubGraphId = context._timings.subgraphID(row.name);
+                            ActivityId = context._timings.activityID(row.name);
+                            break;
                         case "edge":
                             GraphName = context._timings.graphID(row.name);
                             SubGraphId = context._timings.subgraphID(row.name);

+ 24 - 0
esp/src/src/Timings.ts

@@ -147,12 +147,34 @@ export class Timings {
         return retVal;
     }
 
+    activityID(id: string): string {
+        let retVal: string;
+        this.walkScopeName(id, partialID => {
+            retVal = this._activityLookup[partialID];
+            if (retVal) return true;
+        });
+        return retVal;
+    }
+
+    activityScopeID(id: string): string {
+        let retVal: string;
+        this.walkScopeName(id, partialID => {
+            retVal = this._activityLookup[partialID];
+            if (retVal) {
+                retVal = partialID;
+                return true;
+            }
+        });
+        return retVal;
+    }
+
     _rawColumns = {};
     _scopeFilter: string = "";
     _metricSelectLabel: string = "";
     _metricSelectValues: string[] = ["TimeElapsed"];
     _graphLookup: { [id: string]: string } = {};
     _subgraphLookup: { [id: string]: string } = {};
+    _activityLookup: { [id: string]: string } = {};
     fetchDetailsNormalizedPromise;
     refresh(force: boolean = false) {
         if (force) {
@@ -268,9 +290,11 @@ export class Timings {
             this._rawColumns = response.columns;
             this._graphLookup = {};
             this._subgraphLookup = {};
+            this._activityLookup = {};
             const rawData = response.data.filter(row => {
                 if (row.type === "graph") this._graphLookup[row.name] = row.id;
                 if (row.type === "subgraph") this._subgraphLookup[row.name] = row.id;
+                if (row.type === "activity") this._activityLookup[row.name] = row.id;
                 if (!row.id) return false;
                 if (this._scopeFilter && row.name !== this._scopeFilter && row.name.indexOf(`${this._scopeFilter}:`) !== 0) return false;
                 if (this._metricSelectValues.every(m => row[m] === undefined)) return false;