@hpcc-js/eclwatch 3.1.1 → 3.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js.map CHANGED
@@ -1,7 +1 @@
1
- {
2
- "version": 3,
3
- "sources": ["../src/__package__.ts", "../src/ECLArchiveViewer.ts", "../src/WUGraph.ts", "../src/WUGraphLegend.ts", "../src/WUGraphLegend.css", "../src/WUScopeController.ts", "../src/WUGraph.css", "../src/WUResult.ts", "../src/WUResultStore.ts", "../src/WUStatus.ts", "../src/WUTimeline.ts"],
4
- "sourcesContent": ["export const PKG_NAME = \"@hpcc-js/eclwatch\";\nexport const PKG_VERSION = \"3.1.1\";\nexport const BUILD_VERSION = \"3.2.1\";\n", "import { Editor } from \"@hpcc-js/codemirror\";\nimport { Workunit } from \"@hpcc-js/comms\";\nimport { SplitPanel } from \"@hpcc-js/phosphor\";\nimport { DirectoryTree } from \"@hpcc-js/tree\";\nimport { hashSum, xml2json } from \"@hpcc-js/util\";\n\nexport class ECLArchiveViewer extends SplitPanel {\n private _prevHash;\n private _contentStr;\n public _directoryPane = new DirectoryTree();\n public _fileEditorPane = new Editor()\n .text(\"\")\n ;\n\n constructor() {\n super(\"horizontal\");\n this._directoryPane.rowClick = (text) => {\n this._fileEditorPane\n .text(text)\n .render()\n ;\n };\n }\n\n protected transformArchiveTreeData(json) {\n const ret = {\n label: json.name,\n children: json._children.map(transformNode).filter(n => n)\n };\n\n if (ret.children && ret.children[0] && ret.children[0].label === \"html\") {\n // must be parsererror\n return {\n label: \"root\",\n children: [\n {\n label: \"error\",\n content: JSON.stringify(ret, null, 4)\n }\n ]\n };\n }\n return ret;\n\n function transformNode(node) {\n const _node: any = {};\n _node.label = node.name + (node[\"$\"] && node[\"$\"].key ? ` (${node[\"$\"].key})` : \"\");\n if (node._children && node._children.length > 0) {\n _node.children = node._children.map(_node => {\n return transformNode(_node);\n })\n .filter(n => n)\n ;\n } else if (typeof node.content === \"string\" && node.content.trim()) {\n _node.content = node.content;\n } else {\n return false;\n }\n return _node;\n }\n }\n\n updateDirectoryPane(contentStr) {\n let json;\n if (contentStr) {\n try {\n json = JSON.parse(contentStr);\n } catch (e) {\n json = xml2json(contentStr);\n }\n }\n if (json) {\n const _data = this.transformArchiveTreeData(json);\n this._directoryPane\n .data(_data)\n .render()\n ;\n }\n }\n\n enter(domNode, element) {\n super.enter(domNode, element);\n this\n .addWidget(this._directoryPane)\n .addWidget(this._fileEditorPane)\n ;\n }\n\n update(domNode, element) {\n super.update(domNode, element);\n\n const hash = hashSum({\n baseUrl: this.baseUrl(),\n wuid: this.wuid()\n });\n\n if (this._prevHash !== hash || typeof this._contentStr === \"undefined\") {\n Workunit.attach({ baseUrl: this.baseUrl() }, this.wuid())\n .fetchArchive()\n .then(resp => {\n\n this._contentStr = resp;\n this.updateDirectoryPane(this._contentStr);\n\n this._prevHash = hash;\n });\n } else {\n this.updateDirectoryPane(this._contentStr);\n }\n\n this.relativeSizes([this.directoryWidthRatio(), 1 - this.directoryWidthRatio()]);\n }\n}\nECLArchiveViewer.prototype._class += \" eclwatch_ECLArchiveViewer\";\n\nexport interface ECLArchiveViewer {\n directoryPaneColor(): string;\n directoryPaneColor(_: string): this;\n directoryPaneHoverColor(): string;\n directoryPaneHoverColor(_: string): this;\n fontColor(): string;\n fontColor(_: string): this;\n fontFamily(): string;\n fontFamily(_: string): this;\n fontSize(): number;\n fontSize(_: number): this;\n fileIconSize(): number;\n fileIconSize(_: number): this;\n folderIconOpen(): string;\n folderIconOpen(_: string): this;\n folderIconClosed(): string;\n folderIconClosed(_: string): this;\n textFileIcon(): string;\n textFileIcon(_: string): this;\n codeFileIcon(): string;\n codeFileIcon(_: string): this;\n verticalScroll(): boolean;\n verticalScroll(_: boolean): this;\n directoryWidthRatio(): number;\n directoryWidthRatio(_: number): this;\n baseUrl(): string;\n baseUrl(_: string): this;\n wuid(): string;\n wuid(_: string): this;\n}\nECLArchiveViewer.prototype.publish(\"baseUrl\", \"\", \"string\", \"HPCC Platform Base URL\");\nECLArchiveViewer.prototype.publish(\"wuid\", \"\", \"string\", \"Workunit ID\");\nECLArchiveViewer.prototype.publish(\"directoryWidthRatio\", 0.38, \"number\", \"Default directory panel width ratio relative to the full width\");\nECLArchiveViewer.prototype.publish(\"contentString\", null, \"string\", \"XML/JSON archive content string\");\nECLArchiveViewer.prototype.publishProxy(\"directoryPaneColor\", \"_directoryPane\", \"backgroundColor\");\nECLArchiveViewer.prototype.publishProxy(\"directoryPaneHoverColor\", \"_directoryPane\", \"hoverBackgroundColor\");\nECLArchiveViewer.prototype.publishProxy(\"iconSize\", \"_directoryPane\");\nECLArchiveViewer.prototype.publishProxy(\"fontColor\", \"_directoryPane\");\nECLArchiveViewer.prototype.publishProxy(\"fontFamily\", \"_directoryPane\");\nECLArchiveViewer.prototype.publishProxy(\"fontSize\", \"_directoryPane\");\nECLArchiveViewer.prototype.publishProxy(\"folderIconOpen\", \"_directoryPane\");\nECLArchiveViewer.prototype.publishProxy(\"folderIconClosed\", \"_directoryPane\");\nECLArchiveViewer.prototype.publishProxy(\"textFileIcon\", \"_directoryPane\");\nECLArchiveViewer.prototype.publishProxy(\"codeFileIcon\", \"_directoryPane\");\nECLArchiveViewer.prototype.publishProxy(\"verticalScroll\", \"_directoryPane\");\n", "\uFEFFimport { Button, Spacer, ToggleButton, Widget } from \"@hpcc-js/common\";\nimport { ScopeGraph, Workunit } from \"@hpcc-js/comms\";\nimport { Table } from \"@hpcc-js/dgrid\";\nimport { Graph as GraphWidget, Subgraph, Vertex } from \"@hpcc-js/graph\";\nimport { Carousel, ChartPanel } from \"@hpcc-js/layout\";\nimport { hashSum } from \"@hpcc-js/util\";\nimport { WUGraphLegend } from \"./WUGraphLegend.ts\";\nimport { WUScopeController } from \"./WUScopeController.ts\";\n\nimport \"../src/WUGraph.css\";\n\nexport class WUGraph extends ChartPanel {\n\n private _partialAll = new Button().faChar(\"fa-window-restore\").tooltip(\"Partial All\")\n .on(\"click\", () => {\n this.stateClick(this._partialAll);\n });\n\n private _maxAll = new Button().faChar(\"fa-window-maximize\").tooltip(\"Max All\")\n .on(\"click\", () => {\n this.stateClick(this._maxAll);\n });\n\n private _toggleGraph = new ToggleButton().faChar(\"fa-chain\").tooltip(\"Graph\")\n .selected(true)\n .on(\"click\", () => {\n this.viewClick(this._toggleGraph);\n });\n\n private _toggleActivities = new ToggleButton().faChar(\"fa-table\").tooltip(\"Activitiies\")\n .selected(false)\n .on(\"click\", () => {\n this.viewClick(this._toggleActivities);\n });\n\n private _toggleEdges = new ToggleButton().faChar(\"fa-table\").tooltip(\"Edges\")\n .selected(false)\n .on(\"click\", () => {\n this.viewClick(this._toggleEdges);\n });\n\n private _toggleSubgraphs = new ToggleButton().faChar(\"fa-table\").tooltip(\"Subgraphs\")\n .selected(false)\n .on(\"click\", () => {\n this.viewClick(this._toggleSubgraphs);\n });\n\n protected _graph = new GraphWidget()\n .layout(\"Hierarchy\")\n .applyScaleOnLayout(true)\n .showToolbar(false)\n .allowDragging(false)\n ;\n\n private _activities = new Table()\n .pagination(false)\n ;\n\n private _edges = new Table()\n .pagination(false)\n ;\n\n private _subgraphs = new Table()\n .pagination(false)\n ;\n\n protected _legend = new WUGraphLegend(this)\n .on(\"click\", kind => {\n this.render();\n })\n .on(\"mouseover\", kind => {\n const verticesMap: { [id: string]: boolean } = {};\n for (const vertex of this._gc.vertices(kind)) {\n verticesMap[vertex.id()] = true;\n }\n this._graph.highlightVerticies(verticesMap);\n })\n .on(\"mouseout\", kind => {\n this._graph.highlightVerticies();\n })\n ;\n\n protected _view = new Carousel().widgets([this._graph, this._activities, this._edges, this._subgraphs]);\n\n protected _gc = new WUScopeController();\n\n constructor() {\n super();\n this.topOverlay(false);\n this.widget(this._view);\n const buttons: Widget[] = [\n this._toggleGraph,\n this._toggleActivities,\n this._toggleEdges,\n this._toggleSubgraphs,\n new Spacer(),\n this._partialAll,\n this._maxAll,\n new Spacer(),\n ...this._graph.iconBarButtons(),\n new Spacer()];\n this.buttons(buttons.concat(this.buttons()));\n this._gc.minClick = (sg: Subgraph) => {\n this.loadGraph();\n this._graph.render(w => {\n this._graph\n .selection([sg])\n .centerOnItem(sg)\n ;\n });\n };\n\n this._graph.tooltipHTML((v: Vertex) => {\n return this._gc.calcGraphTooltip(v);\n });\n }\n\n stateClick(sourceB: Button) {\n switch (sourceB) {\n case this._partialAll:\n this._graph.data().subgraphs.forEach((sg: Subgraph) => {\n sg.minState(\"partial\");\n });\n break;\n case this._maxAll:\n this._graph.data().subgraphs.forEach((sg: Subgraph) => {\n sg.minState(\"normal\");\n });\n break;\n }\n this.render();\n }\n\n viewClick(sourceTB: ToggleButton) {\n this._toggleGraph.selected(sourceTB === this._toggleGraph);\n this._toggleActivities.selected(sourceTB === this._toggleActivities);\n this._toggleEdges.selected(sourceTB === this._toggleEdges);\n this._toggleSubgraphs.selected(sourceTB === this._toggleSubgraphs);\n switch (sourceTB) {\n case this._toggleGraph:\n this._view.active(0);\n break;\n case this._toggleActivities:\n this._view.active(1);\n break;\n case this._toggleEdges:\n this._view.active(2);\n break;\n case this._toggleSubgraphs:\n this._view.active(3);\n break;\n }\n this.render(w => {\n });\n }\n\n private _prevHashSum;\n private _prevScopeGraph: ScopeGraph;\n fetchScopeGraph(): Promise<ScopeGraph> {\n const hash = hashSum({\n baseUrl: this.baseUrl(),\n wuid: this.wuid(),\n graphID: this.graphID(),\n subgraphID: this.subgraphID()\n });\n if (!this._prevScopeGraph || this._prevHashSum !== hash) {\n this.startProgress();\n this._prevHashSum = hash;\n this._gc.clear();\n const wu = Workunit.attach({ baseUrl: this.baseUrl() }, this.wuid());\n return wu.fetchGraphs().then(graphs => {\n for (const graph of graphs) {\n if (graph.Name === this.graphID()) {\n this.finishProgress();\n return graph.fetchScopeGraph(this.subgraphID());\n }\n }\n }).then(scopeGraph => {\n this._prevScopeGraph = scopeGraph;\n return this._prevScopeGraph;\n });\n }\n return Promise.resolve(this._prevScopeGraph);\n }\n\n enter(domNode, _element) {\n super.enter(domNode, _element);\n }\n\n update(domNode, element) {\n super.update(domNode, element);\n }\n\n exit(domNode, element) {\n super.exit(domNode, element);\n }\n\n loadGraph() {\n this._gc.disabled(this._legend.disabled());\n this._graph\n .data(this._gc.graphData(), true)\n ;\n {\n const { columns, data } = this._gc.activityData();\n this._activities\n .columns(columns)\n .data(data)\n ;\n }\n {\n const { columns, data } = this._gc.edgeData();\n this._edges\n .columns(columns)\n .data(data)\n ;\n }\n {\n const { columns, data } = this._gc.subgraphData();\n this._subgraphs\n .columns(columns)\n .data(data)\n ;\n }\n }\n\n render(callback?: (w: Widget) => void): this {\n if (this.wuid() && this.graphID()) {\n this.fetchScopeGraph().then(scopedGraph => {\n this._gc.set(scopedGraph);\n this._legend.data(this._gc.calcLegend());\n this.loadGraph();\n super.render(callback);\n });\n } else {\n super.render(callback);\n }\n return this;\n }\n\n selection(_?) {\n if (!arguments.length) return this._graph.selection();\n const item = this._gc.vertex(_) || this._gc.edge(_) || this._gc.subgraph(_);\n if (item) {\n this._graph.selection([item]);\n }\n return this;\n }\n}\nWUGraph.prototype._class += \" eclwatch_WUGraph\";\n\nexport interface WUGraph {\n baseUrl(): string;\n baseUrl(_: string): this;\n wuid(): string;\n wuid(_: string): this;\n graphID(): string;\n graphID(_: string): this;\n subgraphID(): string;\n subgraphID(_: string): this;\n}\n\nWUGraph.prototype.publish(\"baseUrl\", \"\", \"string\", \"HPCC Platform Base URL\");\nWUGraph.prototype.publish(\"wuid\", \"\", \"string\", \"Workunit ID\");\nWUGraph.prototype.publish(\"graphID\", \"\", \"string\", \"Graph ID\");\nWUGraph.prototype.publish(\"subgraphID\", \"\", \"string\", \"Subgraph ID\");\n", "import { Vertex } from \"@hpcc-js/graph\";\nimport { Legend } from \"@hpcc-js/layout\";\nimport { local as d3Local, select as d3Select } from \"d3-selection\";\n\nimport \"../src/WUGraphLegend.css\";\n\nexport interface WUGraphLegendData {\n kind: number;\n faChar: string;\n label: string;\n count: number;\n}\n\nclass LegendVertex extends Vertex {\n\n constructor() {\n super();\n }\n\n enter(domNode, element) {\n super.enter(domNode, element);\n this._icon.on(\"click\", () => {\n this.click(this.data());\n });\n }\n\n click(kind: number) {\n }\n}\n\nexport class WUGraphLegend extends Legend {\n\n private icon = d3Local<Vertex>();\n protected _disabled2: { [kind: number]: boolean } = {\n /* TODO: Default some to disabled?\n 43: true,\n 71: true,\n 82: true,\n 88: true\n */\n };\n\n disabled(): number[];\n disabled(_: number[]): this;\n disabled(_?: number[]): number[] | this {\n if (!arguments.length) {\n const retVal = [];\n for (const key in this._disabled2) {\n if (this._disabled2[key]) {\n retVal.push(key);\n }\n }\n return retVal;\n }\n this._disabled2 = {};\n _.forEach(kind => this._disabled2[kind] = true);\n return this;\n }\n\n toggle(kind: number) {\n this._disabled2[kind] = !this._disabled2[kind];\n }\n\n update(domNode, element) {\n super.update(domNode, element);\n\n const context = this;\n const items = this._g.selectAll(\".legendItem\").data(this.data(), (d: any) => d.kind);\n items.enter().append(\"g\")\n .attr(\"class\", \"legendItem\")\n .each(function (this: HTMLElement, d) {\n context.icon.set(this, new LegendVertex()\n .target(this)\n .data(d.kind)\n .textbox_shape_colorStroke(\"none\")\n .textbox_shape_colorFill(\"none\")\n .iconAnchor(\"left\")\n .faChar(d.faChar)\n .text(`${d.label} (${d.count})`)\n .tooltip(`${d.kind} - ${d.label}`)\n .on(\"click\", kind => {\n context.toggle(kind);\n context.render();\n context.click(kind);\n })\n .on(\"mouseover\", kind => {\n context.mouseover(kind);\n })\n .on(\"mouseout\", kind => {\n context.mouseout(kind);\n })\n );\n })\n .merge(items)\n .each(function (this: HTMLElement, d, i) {\n const bbox = context.icon.get(this)\n .icon_shape_colorFill(context._disabled2[d.kind] ? \"gray\" : null)\n .render().getBBox();\n\n d3Select(this)\n .attr(\"transform\", `translate(${+bbox.width / 2}, ${i * 30})`)\n ;\n })\n ;\n items.exit()\n .each(function (this: HTMLElement, d) {\n context.icon.get(this)\n .target(null)\n .render();\n })\n .remove();\n const bbox = this.getBBox(true, true);\n this._g.attr(\"transform\", `translate(16, ${this.height() / 2 - bbox.height / 2})`);\n }\n\n // Events ---\n click(kind: number) {\n }\n\n mouseover(kind: number) {\n }\n\n mouseout(kind: number) {\n }\n}\nWUGraphLegend.prototype._class += \" eclwatch_WUGraphLegend\";\n", "(function(){\n if (!document.getElementById('9b8733e7')) {\n var e = document.createElement('style');\n e.id = '9b8733e7';\n e.textContent = `.eclwatch_WUGraphLegend .graph_Vertex {\n cursor: auto;\n}\n\n.eclwatch_WUGraphLegend .graph_Vertex .common_Icon {\n cursor: pointer;\n}\n`;\n document.head.appendChild(e);\n }\n })();", "import { Icon } from \"@hpcc-js/common\";\nimport { BaseScope, ScopeEdge, ScopeGraph, ScopeSubgraph, ScopeVertex } from \"@hpcc-js/comms\";\nimport { Edge, IGraphData, Lineage, Subgraph, Vertex } from \"@hpcc-js/graph\";\nimport { Edge as UtilEdge, Subgraph as UtilSubgraph, Vertex as UtilVertex } from \"@hpcc-js/util\";\nimport { WUGraphLegendData } from \"./WUGraphLegend.ts\";\n\nexport type VertexType = Vertex | Icon;\n\nexport interface MyGraphData {\n subgraphs: Subgraph[];\n vertices: VertexType[];\n edges: Edge[];\n hierarchy: Lineage[];\n}\n\nfunction faCharFactory(kind): string {\n switch (kind) {\n case \"2\": return \"\\uf0c7\"; // Disk Write\n case \"3\": return \"\\uf15d\"; // sort\n case \"5\": return \"\\uf0b0\"; // Filter\n case \"6\": return \"\\uf1e0\"; // Split\n case \"12\": return \"\\uf039\"; // First N\n case \"15\": return \"\\uf126\"; // Lightweight Join\n case \"17\": return \"\\uf126\"; // Lookup Join\n case \"22\": return \"\\uf1e6\"; // Pipe Output\n case \"23\": return \"\\uf078\"; // Funnel\n case \"25\": return \"\\uf0ce\"; // Inline Dataset\n case \"26\": return \"\\uf074\"; // distribute\n case \"29\": return \"\\uf005\"; // Store Internal Result\n case \"36\": return \"\\uf128\"; // If\n case \"44\": return \"\\uf0c7\"; // write csv\n case \"47\": return \"\\uf0c7\"; // write\n case \"54\": return \"\\uf013\"; // Workunit Read\n case \"56\": return \"\\uf0c7\"; // Spill\n case \"59\": return \"\\uf126\"; // Merge\n case \"61\": return \"\\uf0c7\"; // write xml\n case \"82\": return \"\\uf1c0\"; // Projected Disk Read Spill\n case \"88\": return \"\\uf1c0\"; // Projected Disk Read Spill\n case \"92\": return \"\\uf129\"; // Limted Index Read\n case \"93\": return \"\\uf129\"; // Limted Index Read\n case \"99\": return \"\\uf1c0\"; // CSV Read\n case \"105\": return \"\\uf1c0\"; // CSV Read\n\n case \"7\": return \"\\uf090\"; // Project\n case \"9\": return \"\\uf0e2\"; // Local Iterate\n case \"16\": return \"\\uf005\"; // Output Internal\n case \"19\": return \"\\uf074\"; // Hash Distribute\n case \"21\": return \"\\uf275\"; // Normalize\n case \"35\": return \"\\uf0c7\"; // CSV Write\n case \"37\": return \"\\uf0c7\"; // Index Write\n case \"71\": return \"\\uf1c0\"; // Disk Read Spill\n case \"133\": return \"\\uf0ce\"; // Inline Dataset\n case \"148\": return \"\\uf0ce\"; // Inline Dataset\n case \"168\": return \"\\uf275\"; // Local Denormalize\n }\n return \"\\uf063\";\n}\n\nexport class WUScopeController {\n private graphDB: ScopeGraph;\n private subgraphsMap: { [id: string]: Subgraph } = {};\n private rSubgraphsMap: { [id: string]: ScopeSubgraph } = {};\n private verticesMap: { [id: string]: VertexType } = {};\n private rVerticesMap: { [id: string]: ScopeVertex } = {};\n private edgesMap: { [id: string]: Edge } = {};\n private rEdgesMap: { [id: string]: ScopeEdge } = {};\n private kindMap: { [id: string]: ScopeVertex[] } = {};\n\n protected _disabled: { [kind: number]: boolean } = {};\n\n constructor() {\n }\n\n clear() {\n this.subgraphsMap = {};\n this.rSubgraphsMap = {};\n this.verticesMap = {};\n this.rVerticesMap = {};\n this.edgesMap = {};\n this.rEdgesMap = {};\n }\n\n set(masterGraph: ScopeGraph) {\n this.graphDB = masterGraph;\n this.graphGui(this.graphDB);\n\n this.kindMap = {};\n this.graphDB.walk(item => {\n if (item instanceof UtilSubgraph) {\n } else if (item instanceof UtilVertex) {\n const kind = item._.attr(\"Kind\").RawValue;\n if (!this.kindMap[kind]) {\n this.kindMap[kind] = [];\n }\n this.kindMap[kind].push(item);\n } else if (item instanceof UtilEdge) {\n }\n });\n }\n\n disabled(): number[];\n disabled(_: number[]): this;\n disabled(_?: number[]): number[] | this {\n if (!arguments.length) {\n const retVal = [];\n for (const key in this._disabled) {\n if (this._disabled[key]) {\n retVal.push(key);\n }\n }\n return retVal;\n }\n this._disabled = {};\n _.forEach(kind => this._disabled[kind] = true);\n return this;\n }\n\n graphGui(graphDB: ScopeGraph): IGraphData {\n const graphGui: MyGraphData = {\n subgraphs: [],\n vertices: [],\n edges: [],\n hierarchy: []\n };\n\n graphDB.walk((item) => {\n if (item instanceof UtilSubgraph) {\n const subgraph = this.appendSubgraph(item, graphGui.hierarchy, graphGui.subgraphs);\n subgraph.showMinMax(item.vertices.length > 3 || subgraph.minState() !== \"normal\");\n } else if (item instanceof UtilVertex) {\n this.appendVertex(item, graphGui.hierarchy, graphGui.vertices);\n } else if (item instanceof UtilEdge) {\n this.appendEdge(item, graphGui.edges);\n }\n });\n\n return graphGui;\n }\n\n format(labelTpl, obj) {\n let retVal = \"\";\n let lpos = labelTpl.indexOf(\"%\");\n let rpos = -1;\n while (lpos >= 0) {\n retVal += labelTpl.substring(rpos + 1, lpos);\n rpos = labelTpl.indexOf(\"%\", lpos + 1);\n if (rpos < 0) {\n console.warn(\"Invalid Label Template\");\n break;\n }\n const key = labelTpl.substring(lpos + 1, rpos);\n retVal += !key ? \"%\" : (obj[labelTpl.substring(lpos + 1, rpos)] || \"\");\n lpos = labelTpl.indexOf(\"%\", rpos + 1);\n }\n retVal += labelTpl.substring(rpos + 1, labelTpl.length);\n return retVal.split(\"\\\\n\").join(\"\\n\");\n }\n\n createSubgraph(subgraph: ScopeSubgraph): Subgraph {\n let sg = this.subgraphsMap[subgraph._.Id];\n if (!sg) {\n sg = new Subgraph()\n .title(subgraph._.Id)\n .on(\"minClick\", () => {\n this.minClick(sg);\n })\n ;\n this.subgraphsMap[subgraph._.Id] = sg;\n this.rSubgraphsMap[sg.id()] = subgraph;\n }\n return sg;\n }\n\n createVertex(vertex: ScopeVertex): VertexType {\n let v = this.verticesMap[vertex._.Id];\n if (!v) {\n const attrs = vertex._.rawAttrs();\n if (vertex._.ScopeType === \"dummy\") {\n const parent = this.subgraphsMap[vertex.parent._.Id];\n v = new Icon()\n .shape_colorFill(\"darkred\")\n .shape_colorStroke(\"darkred\")\n .image_colorFill(\"white\")\n .faChar(\"\\uf067\")\n .on(\"click\", () => {\n parent.minState(\"normal\");\n this.minClick(parent);\n })\n ;\n } else {\n v = new Vertex()\n .icon_shape_colorFill(\"#1f77b4\")\n .icon_image_colorFill(\"white\")\n .faChar(faCharFactory(attrs[\"Kind\"]))\n .text(attrs[\"Label\"])\n ;\n const annotations = [];\n if (vertex._.hasAttr(\"Definition\")) {\n annotations.push({\n faChar: \"\\uf036\",\n tooltip: \"Definition\",\n shape_colorFill: \"lightgray\",\n shape_colorStroke: \"lightgray\",\n image_colorFill: \"black\"\n });\n }\n if (vertex._.hasAttr(\"IsInternal\")) {\n annotations.push({\n faChar: \"\\uf085\",\n tooltip: \"IsInternal\",\n shape_colorFill: \"red\",\n shape_colorStroke: \"red\",\n image_colorFill: \"white\"\n });\n }\n v.annotationIcons(annotations);\n }\n this.verticesMap[vertex._.Id] = v;\n this.rVerticesMap[v.id()] = vertex;\n }\n return v;\n }\n\n isSpill(edge: ScopeEdge): boolean {\n const sourceKind = edge.source._.attr(\"Kind\").RawValue;\n const targetKind = edge.target._.attr(\"Kind\").RawValue;\n return sourceKind === \"2\" || targetKind === \"71\";\n }\n\n spansSubgraph(edge: ScopeEdge): boolean {\n return edge.source.parent._.Id !== edge.target.parent._.Id;\n }\n\n createEdge(edge: ScopeEdge): Edge | undefined {\n let e = this.edgesMap[edge._.Id];\n if (!e) {\n const attrs = edge._.rawAttrs();\n const sourceV = this.verticesMap[edge.source._.Id];\n const targetV = this.verticesMap[edge.target._.Id];\n if (sourceV && targetV) {\n const isSpill = this.isSpill(edge);\n const spansSubgraph = this.spansSubgraph(edge);\n\n const label = this.format(\"%Label%\\n%NumRowsProcessed%\", attrs);\n /* TODO: Add extra annotations once WUDetails is fixed...\n const numSlaves = parseInt(attrs[\"NumSlaves\"]);\n const numStarts = parseInt(attrs[\"NumStarts\"]);\n const numStops = parseInt(attrs[\"NumStops\"]);\n const started = numStarts > 0;\n const finished = numStops === numSlaves;\n const active = started && !finished;\n */\n\n let strokeDasharray = null;\n let weight = 100;\n if (attrs[\"IsDependency\"]) {\n weight = 10;\n strokeDasharray = \"1,5\";\n } else if (attrs[\"_childGraph\"]) {\n strokeDasharray = \"5,5\";\n } else if (isSpill) {\n weight = 25;\n strokeDasharray = \"5,5,10,5\";\n } else if (spansSubgraph) {\n weight = 5;\n strokeDasharray = \"5,5\";\n }\n e = new Edge()\n .sourceVertex(sourceV)\n .targetVertex(targetV)\n .sourceMarker(\"circle\")\n .targetMarker(\"arrow\")\n .weight(weight)\n .strokeDasharray(strokeDasharray)\n .text(label)\n ;\n this.edgesMap[edge._.Id] = e;\n this.rEdgesMap[e.id()] = edge;\n }\n }\n return e;\n }\n\n appendSubgraph(subgraph: ScopeSubgraph, hierarchy: Lineage[], subgraphs: Subgraph[]): Subgraph {\n const sg = this.createSubgraph(subgraph);\n subgraphs.push(sg);\n const parent = this.subgraphsMap[subgraph.parent._.Id];\n if (parent) {\n hierarchy.push({ parent, child: sg });\n }\n return sg;\n }\n\n appendVertex(vertex: ScopeVertex, hierarchy: Lineage[], vertices: VertexType[]): VertexType {\n const v = this.createVertex(vertex);\n vertices.push(v);\n const parent = this.subgraphsMap[vertex.parent._.Id];\n if (parent) {\n hierarchy.push({ parent, child: v });\n }\n return v;\n }\n\n appendEdge(edge: ScopeEdge, edges: Edge[]): Edge {\n const e = this.createEdge(edge);\n if (e) {\n edges.push(e);\n }\n return e;\n }\n\n filterLegend(graphDB: ScopeGraph) {\n for (let i = graphDB.vertices.length - 1; i >= 0; --i) {\n const vertex = graphDB.vertices[i];\n const kind = vertex._.attr(\"Kind\").RawValue;\n if (this._disabled[kind]) {\n vertex.remove(false, (source: BaseScope, target: BaseScope) => {\n return new BaseScope({\n ScopeName: vertex._.ScopeName + \":in\",\n Id: source.Id + \"->\" + target.Id,\n ScopeType: \"dummy-edge\",\n Properties: {\n Property: [vertex._.attr(\"Label\")]\n },\n Notes: {\n Note: []\n },\n SinkActivity: \"\"\n });\n });\n }\n }\n }\n\n filterPartial(graphDB: ScopeGraph) {\n for (const subgraph of graphDB.subgraphs) {\n const sg = this.subgraphsMap[subgraph._.Id];\n switch (sg.minState()) {\n case \"partial\":\n const childVertices: ReadonlyArray<ScopeVertex> = subgraph.vertices;\n const vShow: ScopeVertex[] = [];\n const vHide: ScopeVertex[] = [];\n\n for (const vertex of childVertices) {\n if (vertex.inEdges.length === 0 || vertex.inEdges.some(edge => edge.source.parent !== edge.target.parent) ||\n vertex.outEdges.length === 0 || vertex.outEdges.some(edge => edge.source.parent !== edge.target.parent)) {\n vShow.push(vertex);\n } else {\n vHide.push(vertex);\n }\n }\n\n if (vHide.length > 1) {\n const dummyDetails = {\n ScopeName: subgraph._.ScopeName,\n Id: subgraph._.Id + \":dummy\",\n ScopeType: \"dummy\",\n Properties: {\n Property: [{\n Name: \"Activities\",\n RawValue: \"\" + vHide.length,\n Formatted: \"\" + vHide.length,\n Measure: \"count\",\n Creator: \"\",\n CreatorType: \"\"\n }]\n },\n Notes: {\n Note: []\n },\n SinkActivity: \"\"\n };\n const dummyScope = new BaseScope(dummyDetails);\n const dummyVertex = subgraph.createVertex(dummyScope);\n\n for (const vertex of vHide) {\n for (const edge of vertex.inEdges) {\n if (vShow.indexOf(edge.source) >= 0) {\n const dummyEdgeScope = new BaseScope({\n ScopeName: edge.source._.ScopeName,\n Id: edge.source._.Id + \"->\" + dummyVertex._.Id,\n ScopeType: \"dummy-in\",\n Properties: {\n Property: []\n },\n Notes: {\n Note: []\n },\n SinkActivity: \"\"\n });\n subgraph.createEdge(edge.source, dummyVertex, dummyEdgeScope);\n }\n }\n for (const edge of vertex.outEdges) {\n if (vShow.indexOf(edge.target) >= 0) {\n const dummyEdgeScope = new BaseScope({\n ScopeName: edge.target._.ScopeName,\n Id: dummyVertex._.Id + \"->\" + edge.target._.Id,\n ScopeType: \"dummy-out\",\n Properties: {\n Property: []\n },\n Notes: {\n Note: []\n },\n SinkActivity: \"\"\n });\n subgraph.createEdge(dummyVertex, edge.target, dummyEdgeScope);\n }\n }\n }\n vHide.forEach(vertex => vertex.remove(true));\n }\n break;\n }\n }\n }\n\n filterEmptySubgraphs(graphDB: ScopeGraph) {\n while (true) {\n const emptySubgraphs = graphDB.subgraphs.filter(subgraph => subgraph.subgraphs.length === 0 && subgraph.vertices.length === 0);\n if (emptySubgraphs.length === 0) break;\n emptySubgraphs.forEach(subgraph => subgraph.remove(true));\n }\n }\n\n removeObsoleteSubgraphs(graphDB: ScopeGraph) {\n for (const subgraph of [...graphDB.subgraphs]) {\n if (subgraph.vertices.length === 0) {\n subgraph.remove(false);\n }\n }\n }\n\n graphData(): IGraphData {\n const graphDB = this.graphDB.clone();\n this.filterLegend(graphDB);\n this.filterPartial(graphDB);\n this.filterEmptySubgraphs(graphDB);\n this.removeObsoleteSubgraphs(graphDB);\n return this.graphGui(graphDB);\n }\n\n calcLegend(): WUGraphLegendData[] {\n const retVal: WUGraphLegendData[] = [];\n for (const kind in this.kindMap) {\n retVal.push({\n kind: parseInt(kind),\n faChar: faCharFactory(kind),\n label: this.kindMap[kind][0]._.attr(\"Label\").RawValue.split(\"\\n\")[0],\n count: this.kindMap[kind].length\n });\n }\n return retVal;\n }\n\n vertices(kind: number): VertexType[] {\n const retVal: VertexType[] = [];\n for (const v of this.kindMap[kind]) {\n retVal.push(this.verticesMap[v._.Id]);\n }\n return retVal;\n }\n\n formatRow(item: ScopeEdge | ScopeSubgraph | ScopeVertex, columns, row) {\n const attrs = item._.formattedAttrs();\n for (const key in attrs) {\n const idx = columns.indexOf(key);\n if (idx === -1) {\n columns.push(key);\n row.push(attrs[key]);\n } else {\n row[idx] = attrs[key];\n }\n }\n for (let i = 0; i < 100; ++i) {\n if (row[i] === undefined) {\n row[i] = \"\";\n }\n }\n return row;\n }\n\n activityData(): { columns: string[], data: any[][] } {\n const columns = [\"Id\", \"Kind\", \"Label\"];\n const data = this.graphDB.vertices.map(v => {\n const row = [parseInt(v._.Id.split(\"a\")[1])];\n return this.formatRow(v, columns, row);\n });\n return { columns, data };\n }\n\n edgeData(): { columns: string[], data: any[][] } {\n const columns = [\"Id\", \"Label\"];\n const data = this.graphDB.edges.map(e => {\n const row = [e._.Id];\n return this.formatRow(e, columns, row);\n });\n return { columns, data };\n }\n\n subgraphData(): { columns: string[], data: any[][] } {\n const columns = [\"Id\", \"Label\"];\n const data = this.graphDB.subgraphs.map(sg => {\n const row = [sg._.Id];\n return this.formatRow(sg, columns, row);\n });\n return { columns, data };\n }\n\n calcGraphTooltip(item: VertexType | Edge) {\n let scope;\n let parentScope;\n if (item instanceof Subgraph) {\n const subgraph = this.rSubgraphsMap[item.id()];\n scope = subgraph._;\n parentScope = subgraph.parent._;\n } else if (item instanceof Vertex || item instanceof Icon) {\n const vertex = this.rVerticesMap[item.id()];\n scope = vertex._;\n parentScope = vertex.parent._;\n } else if (item instanceof Edge) {\n const edge = this.rEdgesMap[item.id()];\n scope = edge._;\n parentScope = edge.parent._;\n }\n if (scope) {\n return scope.calcTooltip(parentScope);\n }\n return \"\";\n }\n\n subgraph(id: string): Subgraph | undefined {\n return this.subgraphsMap[id];\n }\n\n vertex(id: string): VertexType | undefined {\n return this.verticesMap[id];\n }\n\n edge(id: string): Edge {\n return this.edgesMap[id];\n }\n\n // Events ---\n minClick(sg: Subgraph) {\n }\n}\n", "(function(){\n if (!document.getElementById('641d6c4b')) {\n var e = document.createElement('style');\n e.id = '641d6c4b';\n e.textContent = `.eclwatch_WUGraph .graph_Vertex {\n cursor: auto;\n}\n\n.eclwatch_WUGraph .marker {\n fill: #656565;\n stroke: none;\n stroke-width: 1.0px;\n}\n\n.eclwatch_WUGraph .zoom {\n fill: none;\n pointer-events: all;\n}\n\n.eclwatch_WUGraph .selectionBrush {\n fill: none;\n stroke: darkgray;\n}\n\n.d3-tip .eclwatch_WUGraph_Tooltip h3 {\n margin:0px;\n}\n\n.d3-tip .eclwatch_WUGraph_Tooltip h4 {\n margin:0px;\n}\n\n.d3-tip .eclwatch_WUGraph_Tooltip table {\n border-collapse: separate;\n border-spacing: 5px;\n}\n\n.d3-tip .eclwatch_WUGraph_Tooltip table .key {\n font-weight: bold;\n}\n\n.d3-tip .eclwatch_WUGraph_Tooltip table .value {\n font-weight: normal;\n}\n`;\n document.head.appendChild(e);\n }\n })();", "import { ResultFilter, IOptions, Result } from \"@hpcc-js/comms\";\nimport { Common } from \"@hpcc-js/dgrid\";\nimport { hashSum } from \"@hpcc-js/util\";\nimport { Store } from \"./WUResultStore.ts\";\n\nexport class WUResult extends Common {\n\n protected _result: Result;\n protected _localStore: Store;\n\n constructor() {\n super();\n this.renderHtml(false);\n }\n\n hashSum(opts: any = {}) {\n return hashSum({\n baseUrl: this.baseUrl(),\n wuid: this.wuid(),\n resultName: this.resultName(),\n sequence: this.sequence(),\n nodeGroup: this.nodeGroup(),\n logicalFile: this.logicalFile(),\n userID: this.user(),\n password: this.password(),\n ...opts\n });\n }\n\n protected _prevResultHash: string;\n calcResult(): Result | null {\n const resultHash = this.hashSum();\n if (this._prevResultHash !== resultHash) {\n this._prevResultHash = resultHash;\n\n const opts: IOptions = {\n baseUrl: this.baseUrl(),\n userID: this.user(),\n password: this.password()\n };\n if (this.wuid() && this.resultName()) {\n this._result = Result.attach(opts, this.wuid(), this.resultName());\n } else if (this.wuid() && this.sequence() !== undefined) {\n this._result = Result.attach(opts, this.wuid(), this.sequence());\n } else if (this.logicalFile() && this.nodeGroup()) {\n this._result = Result.attachLogicalFile(opts, this.nodeGroup(), this.logicalFile());\n } else if (this.logicalFile()) {\n this._result = Result.attachLogicalFile(opts, \"\", this.logicalFile());\n }\n }\n return this._result;\n }\n\n fetch(row, count, abortController = new AbortController()): Promise<object[]> {\n const result = this.calcResult();\n if (result) {\n return result.fetchRows(row, count, false, {}, abortController.signal);\n }\n return Promise.resolve([]);\n }\n\n protected _prevStoreHash: string;\n protected _prevQueryHash: string;\n update(domNode, element) {\n super.update(domNode, element);\n const storeHash = this.hashSum({\n renderHtml: this.renderHtml(),\n filter: this.filter()\n });\n if (this._prevStoreHash !== storeHash) {\n this._prevStoreHash = storeHash;\n const result = this.calcResult();\n if (result) {\n result.fetchXMLSchema().then(schema => {\n this._localStore = new Store(result, schema, this.renderHtml(), this.filter());\n this._dgrid?.set(\"columns\", this._localStore.columns());\n this._dgrid?.set(\"collection\", this._localStore);\n });\n }\n }\n }\n\n click(row, col, sel) {\n }\n}\nWUResult.prototype._class += \" eclwatch_WUResult\";\n\nexport interface WUResult {\n baseUrl(): string;\n baseUrl(_: string): this;\n user(): string;\n user(_: string): this;\n password(): string;\n password(_: string): this;\n wuid(): string;\n wuid(_: string): this;\n resultName(): string;\n resultName(_: string): this;\n sequence(): number;\n sequence(_: number): this;\n nodeGroup(): string;\n nodeGroup(_: string): this;\n logicalFile(): string;\n logicalFile(_: string): this;\n filter(): ResultFilter;\n filter(_: ResultFilter): this;\n}\n\nWUResult.prototype.publish(\"baseUrl\", \"\", \"string\", \"URL to WsWorkunits\");\nWUResult.prototype.publish(\"user\", \"\", \"string\", \"User ID\");\nWUResult.prototype.publish(\"password\", \"\", \"string\", \"Password\");\nWUResult.prototype.publish(\"wuid\", \"\", \"string\", \"Workunit ID\");\nWUResult.prototype.publish(\"resultName\", \"\", \"string\", \"Result Name\");\nWUResult.prototype.publish(\"sequence\", undefined, \"number\", \"Sequence Number\");\nWUResult.prototype.publish(\"nodeGroup\", \"\", \"string\", \"NodeGroup\");\nWUResult.prototype.publish(\"logicalFile\", \"\", \"string\", \"Logical File Name\");\nWUResult.prototype.publish(\"filter\", {}, \"object\", \"Filter\");\n", "import { ResultFilter, Result, XSDSchema, XSDXMLNode } from \"@hpcc-js/comms\";\nimport { ColumnType, Deferred, domConstruct, QueryResults, RowFormatter } from \"@hpcc-js/dgrid\";\n\nfunction entitiesEncode(str) {\n return String(str).replace(/&/g, \"&amp;\").replace(/</g, \"&lt;\").replace(/>/g, \"&gt;\").replace(/\"/g, \"&quot;\");\n}\n\nfunction safeEncode(item) {\n switch (Object.prototype.toString.call(item)) {\n case \"[object Undefined]\":\n case \"[object Boolean]\":\n case \"[object Number]\":\n return item;\n case \"[object String]\":\n return entitiesEncode(item);\n default:\n console.warn(\"Unknown cell type: \" + Object.prototype.toString.call(item)); \n }\n return item;\n}\n\nexport class Store {\n protected wuResult: Result;\n protected schema: XSDSchema;\n protected _columns: any[];\n protected _cache: { [key: string]: Promise<{ totalLength: number, data: any[] }> } = {};\n private rowFormatter: RowFormatter;\n protected _filter: ResultFilter = {};\n\n constructor(wuResult: Result, schema: XSDSchema, renderHtml: boolean, filter: ResultFilter = {}) {\n this.wuResult = wuResult;\n this.schema = schema;\n this._columns = this.schema2Columns(this.schema.root);\n this.rowFormatter = new RowFormatter(this._columns, renderHtml);\n this._filter = filter;\n }\n\n columns() {\n return this._columns;\n }\n\n schema2Columns(parentNode: XSDXMLNode, prefix: string = \"\"): ColumnType[] {\n if (!parentNode) return [];\n return parentNode.children().filter(node => node.name.indexOf(\"__hidden\", node.name.length - \"__hidden\".length) === -1).map((node, idx) => {\n const label = node.name;\n const keyed = node.attrs[\"hpcc:keyed\"];\n const column: ColumnType = {\n field: prefix + label,\n leafID: label,\n idx,\n label: label + (keyed ? \" (i)\" : \"\"),\n className: \"resultGridCell\",\n sortable: false,\n width: keyed ? 16 : 0,\n isSet: node.isSet\n };\n const children = this.schema2Columns(node, prefix + label + \"_\");\n if (children.length) {\n column.width += 10 + children.reduce((prev: number, childNode: ColumnType) => {\n return prev + childNode.width!;\n }, 0);\n column.children = children;\n } else {\n column.width += node.charWidth() * 9;\n column.formatter = (cell, row) => {\n switch (typeof cell) {\n case \"string\":\n return {\n html: cell.replace(/\\t/g, \"&nbsp;&nbsp;&nbsp;&nbsp;\").trim()\n };\n case \"undefined\":\n return \"\";\n }\n return cell;\n };\n }\n return column;\n });\n }\n\n isChildDataset(cell) {\n if (Object.prototype.toString.call(cell) !== \"[object Object]\") {\n return false;\n }\n let propCount = 0;\n let firstPropType = null;\n for (const key in cell) {\n if (!firstPropType) {\n firstPropType = Object.prototype.toString.call(cell[key]);\n }\n propCount++;\n }\n return propCount === 1 && firstPropType === \"[object Array]\";\n }\n\n rowToTable(cell, __row, node) {\n if (this.isChildDataset(cell)) { // Don't display \"Row\" as a header ---\n for (const key in cell) {\n this.rowToTable(cell[key], __row, node);\n }\n return;\n }\n\n const table = domConstruct.create(\"table\", { border: 1, cellspacing: 0, width: \"100%\" }, node);\n switch (Object.prototype.toString.call(cell)) {\n case \"[object Object]\":\n let tr = domConstruct.create(\"tr\", null, table);\n for (const key in cell) {\n domConstruct.create(\"th\", { innerHTML: safeEncode(key) }, tr);\n }\n tr = domConstruct.create(\"tr\", null, table);\n for (const key in cell) {\n switch (Object.prototype.toString.call(cell[key])) {\n case \"[object Object]\":\n case \"[object Array]\":\n this.rowToTable(cell[key], __row, node);\n break;\n default:\n domConstruct.create(\"td\", { innerHTML: safeEncode(cell[key]) }, tr);\n break;\n }\n }\n break;\n case \"[object Array]\":\n for (let i = 0; i < cell.length; ++i) {\n switch (Object.prototype.toString.call(cell[i])) {\n case \"[object Boolean]\":\n case \"[object Number]\":\n case \"[object String]\":\n // Item in Scalar ---\n const tr1 = domConstruct.create(\"tr\", null, table);\n domConstruct.create(\"td\", { innerHTML: safeEncode(cell[i]) }, tr1);\n break;\n default:\n // Child Dataset ---\n if (i === 0) {\n const tr2 = domConstruct.create(\"tr\", null, table);\n for (const key in cell[i]) {\n domConstruct.create(\"th\", { innerHTML: safeEncode(key) }, tr2);\n }\n }\n domConstruct.create(\"tr\", null, table);\n for (const key in cell[i]) {\n if (cell[i][key]) {\n if (Object.prototype.toString.call(cell[i][key]) === \"[object Object]\" || Object.prototype.toString.call(cell[i][key]) === \"[object Array]\") {\n const td = domConstruct.create(\"td\", null, tr1);\n this.rowToTable(cell[i][key], cell[i], td);\n } else if (key.indexOf(\"__html\", key.length - \"__html\".length) !== -1) {\n domConstruct.create(\"td\", { innerHTML: cell[i][key] }, tr1);\n } else if (key.indexOf(\"__javascript\", key.length - \"__javascript\".length) !== -1) {\n /*const td = */ domConstruct.create(\"td\", null, tr1);\n // this.injectJavascript(cell[i][key], cell[i], td);\n } else {\n const val = cell[i][key];\n domConstruct.create(\"td\", { innerHTML: safeEncode(val) }, tr1);\n }\n } else {\n domConstruct.create(\"td\", { innerHTML: \"\" }, tr1);\n }\n }\n }\n }\n break;\n }\n }\n\n getIdentity(row) {\n return row.__hpcc_id;\n }\n\n _request(start, end): Promise<{ totalLength: number, data: any[] }> {\n if (!this.wuResult) return Promise.resolve({ totalLength: 0, data: [] });\n const cacheKey = `${start}->${end}`;\n if (this._cache[cacheKey]) return this._cache[cacheKey];\n const retVal = this.wuResult.fetchRows(start, end - start, false, this._filter).then((rows: any[]) => {\n return {\n totalLength: this.wuResult.Total,\n data: rows.map((row, idx) => {\n const formattedRow: any = this.rowFormatter.format(row);\n formattedRow.__hpcc_id = start + idx;\n formattedRow.__hpcc_orig = row;\n return formattedRow;\n })\n };\n });\n this._cache[cacheKey] = retVal;\n return retVal;\n }\n\n fetchRange(options): Promise<any[]> {\n const retVal = new Deferred();\n this._request(options.start, options.end).then(response => retVal.resolve(response));\n return new QueryResults(retVal.then(response => response.data), {\n totalLength: retVal.then(response => response.totalLength)\n });\n }\n}\n", "import { Workunit, WUStateID } from \"@hpcc-js/comms\";\nimport { Edge, Graph, Vertex } from \"@hpcc-js/graph\";\nimport { hashSum, IObserverHandle } from \"@hpcc-js/util\";\n\nexport enum STATUS {\n CREATE = \"Created\",\n COMPILE = \"Compiled\",\n EXECUTE = \"Executed\",\n COMPLETE = \"Completed\"\n}\n\nexport enum STATUS_ACTIVE {\n CREATE = \"Creating\",\n COMPILE = \"Compiling\",\n EXECUTE = \"Executing\",\n COMPLETE = \"Completed\"\n}\n\nexport class WUStatus extends Graph {\n\n protected _wu: Workunit;\n protected _wuHandle: IObserverHandle;\n\n protected _create: Vertex;\n protected _compile: Vertex;\n protected _execute: Vertex;\n protected _complete: Vertex;\n\n constructor() {\n super();\n this\n .zoomable(false)\n .zoomToFitLimit(1)\n .layout(\"Hierarchy\")\n .hierarchyRankDirection(\"LR\")\n .showToolbar(false)\n .allowDragging(false)\n ;\n }\n\n private _prevHash;\n attachWorkunit() {\n const hash = hashSum({\n baseUrl: this.baseUrl(),\n wuid: this.wuid()\n });\n if (this._prevHash !== hash) {\n this._prevHash = hash;\n this._wu = Workunit.attach({ baseUrl: this.baseUrl() }, this.wuid());\n if (this._wuHandle) {\n this._wuHandle.release();\n }\n this._wuHandle = this._wu.watch(changes => {\n this.lazyRender();\n });\n }\n }\n\n createVertex(faChar: string) {\n return new Vertex()\n .icon_diameter(32)\n .icon_shape_colorFill(\"none\")\n .icon_shape_colorStroke(\"none\")\n .icon_image_colorFill(\"darkgray\")\n .iconAnchor(\"middle\")\n .textbox_shape_colorFill(\"none\")\n .textbox_shape_colorStroke(\"none\")\n .textbox_text_colorFill(\"darkgray\")\n .faChar(faChar)\n ;\n }\n\n updateVertex(vertex: Vertex, color: string) {\n vertex\n .icon_image_colorFill(color)\n .textbox_text_colorFill(color)\n ;\n }\n\n updateVertexStatus(level: 0 | 1 | 2 | 3 | 4, active: boolean = false) {\n const completeColor = this._wu.isFailed() ? \"darkred\" : \"darkgreen\";\n this._create.text(STATUS.CREATE);\n this._compile.text(STATUS.COMPILE);\n this._execute.text(STATUS.EXECUTE);\n this._complete.text(STATUS.COMPLETE);\n switch (level) {\n case 0:\n this.updateVertex(this._create, \"darkgray\");\n this.updateVertex(this._compile, \"darkgray\");\n this.updateVertex(this._execute, \"darkgray\");\n this.updateVertex(this._complete, \"darkgray\");\n break;\n case 1:\n this._create.text(STATUS_ACTIVE.CREATE);\n this.updateVertex(this._create, active ? \"orange\" : completeColor);\n this.updateVertex(this._compile, \"darkgray\");\n this.updateVertex(this._execute, \"darkgray\");\n this.updateVertex(this._complete, \"darkgray\");\n break;\n case 2:\n this._compile.text(STATUS_ACTIVE.COMPILE);\n this.updateVertex(this._create, completeColor);\n this.updateVertex(this._compile, active ? \"orange\" : completeColor);\n this.updateVertex(this._execute, completeColor);\n this.updateVertex(this._complete, \"darkgray\");\n break;\n case 3:\n this._execute.text(STATUS_ACTIVE.EXECUTE);\n this.updateVertex(this._create, completeColor);\n this.updateVertex(this._compile, completeColor);\n this.updateVertex(this._execute, active ? \"orange\" : completeColor);\n this.updateVertex(this._complete, \"darkgray\");\n break;\n case 4:\n this.updateVertex(this._create, completeColor);\n this.updateVertex(this._compile, completeColor);\n this.updateVertex(this._execute, completeColor);\n this.updateVertex(this._complete, completeColor);\n break;\n }\n }\n\n createEdge(source, target) {\n return new Edge()\n .sourceVertex(source)\n .targetVertex(target)\n .strokeColor(\"black\")\n .showArc(false)\n ;\n }\n\n enter(domNode, element) {\n super.enter(domNode, element);\n this._create = this.createVertex(\"\\uf11d\");\n this._compile = this.createVertex(\"\\uf085\");\n this._execute = this.createVertex(\"\\uf275\");\n this._complete = this.createVertex(\"\\uf11e\");\n const e1 = this.createEdge(this._create, this._compile);\n const e2 = this.createEdge(this._compile, this._execute);\n const e3 = this.createEdge(this._execute, this._complete);\n this.data({\n vertices: [this._create, this._compile, this._execute, this._complete],\n edges: [e1, e2, e3]\n });\n }\n\n update(domNode, element) {\n this.attachWorkunit();\n switch (this._wu.StateID) {\n case WUStateID.Blocked:\n case WUStateID.Wait:\n case WUStateID.Scheduled:\n case WUStateID.UploadingFiled:\n this.updateVertexStatus(1);\n break;\n case WUStateID.Compiling:\n this.updateVertexStatus(2, true);\n break;\n case WUStateID.Submitted:\n this.updateVertexStatus(1, true);\n break;\n case WUStateID.Compiled:\n this.updateVertexStatus(2);\n break;\n case WUStateID.Aborting:\n case WUStateID.Running:\n this.updateVertexStatus(3, true);\n break;\n case WUStateID.Aborted:\n case WUStateID.Archived:\n case WUStateID.Completed:\n this.updateVertexStatus(4);\n break;\n case WUStateID.Failed:\n this.updateVertexStatus(4, false);\n break;\n case WUStateID.DebugPaused:\n case WUStateID.DebugRunning:\n case WUStateID.Paused:\n case WUStateID.Unknown:\n default:\n this.updateVertexStatus(0);\n break;\n }\n super.update(domNode, element);\n this.zoomToFit();\n }\n\n exit(domNode, element) {\n if (this._wuHandle) {\n this._wuHandle.release();\n }\n super.exit(domNode, element);\n }\n}\nWUStatus.prototype._class += \" eclwatch_WUStatus\";\n\nexport interface WUStatus {\n baseUrl(): string;\n baseUrl(_: string): this;\n wuid(): string;\n wuid(_: string): this;\n}\n\nWUStatus.prototype.publish(\"baseUrl\", \"\", \"string\", \"HPCC Platform Base URL\");\nWUStatus.prototype.publish(\"wuid\", \"\", \"string\", \"Workunit ID\");\n", "\uFEFFimport { Palette } from \"@hpcc-js/common\";\nimport { Scope, Workunit, WsWorkunits } from \"@hpcc-js/comms\";\nimport { ReactTimelineSeries } from \"@hpcc-js/timeline\";\nimport { hashSum, RecursivePartial } from \"@hpcc-js/util\";\n\nimport \"../src/WUGraph.css\";\n\nconst columns = [\"label\", \"start\", \"end\", \"icon\", \"color\", \"series\"];\n\nexport class WUTimeline extends ReactTimelineSeries {\n\n protected _palette = Palette.ordinal(\"default\");\n\n constructor() {\n super();\n this\n .columns(columns)\n .titleColumn(\"label\")\n .iconColumn(\"icon\")\n .colorColumn(\"color\")\n .seriesColumn(\"series\")\n .timePattern(\"%Y-%m-%dT%H:%M:%S.%LZ\")\n .tickFormat(\"%H:%M\")\n .tooltipTimeFormat(\"%H:%M:%S.%L\")\n .tooltipHTML(d => {\n return d[columns.length].calcTooltip();\n })\n ;\n }\n\n private _prevHashSum;\n clear(): this {\n delete this._prevHashSum;\n return this;\n }\n fetchScopes() {\n const hash = hashSum({\n baseUrl: this.baseUrl(),\n wuid: this.wuid(),\n request: this.request()\n });\n if (this._prevHashSum !== hash) {\n this._prevHashSum = hash;\n const wu = Workunit.attach({ baseUrl: this.baseUrl() }, this.wuid());\n wu.fetchDetails(this.request()).then(scopes => {\n return scopes.filter(scope => scope.Id && scope.attr(\"WhenStarted\").RawValue).map((scope: Scope) => {\n const whenStarted = +scope.attr(\"WhenStarted\").RawValue / 1000;\n const timeElapsed = +scope.attr(\"TimeElapsed\").RawValue / 1000000;\n return [\n scope.Id,\n new Date(whenStarted).toISOString(),\n timeElapsed ? new Date(whenStarted + timeElapsed).toISOString() : undefined,\n null,\n this._palette(scope.ScopeType),\n scope.ScopeName.split(\"::\").join(\":\").split(\":\").slice(0, 1),\n scope\n ];\n });\n }).then(scopes => {\n this\n .data(scopes)\n .render()\n ;\n });\n }\n }\n\n enter(domNode, _element) {\n super.enter(domNode, _element);\n }\n\n update(domNode, element) {\n this.fetchScopes();\n super.update(domNode, element);\n }\n\n exit(domNode, element) {\n super.exit(domNode, element);\n }\n}\nWUTimeline.prototype._class += \" eclwatch_WUTimeline\";\n\nexport interface WUTimeline {\n baseUrl(): string;\n baseUrl(_: string): this;\n wuid(): string;\n wuid(_: string): this;\n request(): Partial<WsWorkunits.WUDetails>;\n request(_: RecursivePartial<WsWorkunits.WUDetails>): this;\n}\n\nWUTimeline.prototype.publish(\"baseUrl\", \"\", \"string\", \"HPCC Platform Base URL\");\nWUTimeline.prototype.publish(\"wuid\", \"\", \"string\", \"Workunit ID\");\nWUTimeline.prototype.publish(\"request\", {\n ScopeFilter: {\n MaxDepth: 3,\n ScopeTypes: [\"graph\", \"subgraph\"]\n },\n NestedFilter: {\n Depth: 0,\n ScopeTypes: []\n },\n PropertiesToReturn: {\n AllProperties: false,\n AllStatistics: true,\n AllHints: false,\n Properties: [\"WhenStarted\", \"TimeElapsed\"]\n },\n ScopeOptions: {\n IncludeId: true,\n IncludeScope: true,\n IncludeScopeType: true\n },\n PropertyOptions: {\n IncludeName: true,\n IncludeRawValue: true,\n IncludeFormatted: true,\n IncludeMeasure: true,\n IncludeCreator: false,\n IncludeCreatorType: false\n }\n}, \"object\", \"WUDetails Request\");\n"],
5
- "mappings": "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",
6
- "names": ["PKG_NAME", "PKG_VERSION", "BUILD_VERSION", "Editor", "Workunit", "SplitPanel", "DirectoryTree", "hashSum", "xml2json", "ECLArchiveViewer", "SplitPanel", "__name", "DirectoryTree", "Editor", "text", "json", "ret", "transformNode", "n", "node", "_node", "contentStr", "xml2json", "_data", "domNode", "element", "hash", "hashSum", "Workunit", "resp", "Button", "Spacer", "ToggleButton", "Workunit", "Table", "GraphWidget", "Carousel", "ChartPanel", "hashSum", "Vertex", "Legend", "d3Local", "d3Select", "e", "LegendVertex", "Vertex", "__name", "domNode", "element", "kind", "WUGraphLegend", "Legend", "d3Local", "_", "retVal", "key", "context", "items", "d", "i", "bbox", "d3Select", "Icon", "BaseScope", "Edge", "Subgraph", "Vertex", "UtilEdge", "UtilSubgraph", "UtilVertex", "faCharFactory", "kind", "__name", "WUScopeController", "masterGraph", "item", "UtilSubgraph", "UtilVertex", "UtilEdge", "_", "retVal", "key", "graphDB", "graphGui", "subgraph", "labelTpl", "obj", "lpos", "rpos", "sg", "Subgraph", "vertex", "v", "attrs", "parent", "Icon", "Vertex", "annotations", "edge", "sourceKind", "targetKind", "e", "sourceV", "targetV", "isSpill", "spansSubgraph", "label", "strokeDasharray", "weight", "Edge", "hierarchy", "subgraphs", "vertices", "edges", "i", "source", "target", "BaseScope", "childVertices", "vShow", "vHide", "dummyDetails", "dummyScope", "dummyVertex", "dummyEdgeScope", "emptySubgraphs", "columns", "row", "idx", "data", "scope", "parentScope", "id", "e", "WUGraph", "ChartPanel", "__name", "Button", "ToggleButton", "GraphWidget", "Table", "WUGraphLegend", "kind", "verticesMap", "vertex", "Carousel", "WUScopeController", "buttons", "Spacer", "sg", "w", "v", "sourceB", "sourceTB", "hash", "hashSum", "Workunit", "graphs", "graph", "scopeGraph", "domNode", "_element", "element", "columns", "data", "callback", "scopedGraph", "_", "item", "Result", "Common", "hashSum", "Deferred", "domConstruct", "QueryResults", "RowFormatter", "entitiesEncode", "str", "__name", "safeEncode", "item", "Store", "wuResult", "schema", "renderHtml", "filter", "RowFormatter", "parentNode", "prefix", "node", "idx", "label", "keyed", "column", "children", "prev", "childNode", "cell", "row", "propCount", "firstPropType", "key", "__row", "table", "domConstruct", "tr", "tr1", "tr2", "td", "val", "start", "end", "cacheKey", "retVal", "rows", "formattedRow", "options", "Deferred", "response", "QueryResults", "WUResult", "Common", "__name", "opts", "hashSum", "resultHash", "Result", "row", "count", "abortController", "result", "domNode", "element", "storeHash", "schema", "Store", "col", "sel", "Workunit", "WUStateID", "Edge", "Graph", "Vertex", "hashSum", "STATUS", "STATUS_ACTIVE", "WUStatus", "Graph", "__name", "hash", "hashSum", "Workunit", "changes", "faChar", "Vertex", "vertex", "color", "level", "active", "completeColor", "source", "target", "Edge", "domNode", "element", "e1", "e2", "e3", "WUStateID", "Palette", "Workunit", "ReactTimelineSeries", "hashSum", "columns", "WUTimeline", "ReactTimelineSeries", "__name", "Palette", "d", "hash", "hashSum", "Workunit", "scopes", "scope", "whenStarted", "timeElapsed", "domNode", "_element", "element"]
7
- }
1
+ {"version":3,"file":"index.js","sources":["../src/__package__.ts","../src/ECLArchiveViewer.ts","../src/WUGraphLegend.ts","../src/WUScopeController.ts","../src/WUGraph.ts","../src/WUResultStore.ts","../src/WUResult.ts","../src/WUStatus.ts","../src/WUTimeline.ts"],"sourcesContent":["export const PKG_NAME = \"@hpcc-js/eclwatch\";\nexport const PKG_VERSION = \"3.1.1\";\nexport const BUILD_VERSION = \"3.2.1\";\n","import { Editor } from \"@hpcc-js/codemirror\";\nimport { Workunit } from \"@hpcc-js/comms\";\nimport { SplitPanel } from \"@hpcc-js/phosphor\";\nimport { DirectoryTree } from \"@hpcc-js/tree\";\nimport { hashSum, xml2json } from \"@hpcc-js/util\";\n\nexport class ECLArchiveViewer extends SplitPanel {\n private _prevHash;\n private _contentStr;\n public _directoryPane = new DirectoryTree();\n public _fileEditorPane = new Editor()\n .text(\"\")\n ;\n\n constructor() {\n super(\"horizontal\");\n this._directoryPane.rowClick = (text) => {\n this._fileEditorPane\n .text(text)\n .render()\n ;\n };\n }\n\n protected transformArchiveTreeData(json) {\n const ret = {\n label: json.name,\n children: json._children.map(transformNode).filter(n => n)\n };\n\n if (ret.children && ret.children[0] && ret.children[0].label === \"html\") {\n // must be parsererror\n return {\n label: \"root\",\n children: [\n {\n label: \"error\",\n content: JSON.stringify(ret, null, 4)\n }\n ]\n };\n }\n return ret;\n\n function transformNode(node) {\n const _node: any = {};\n _node.label = node.name + (node[\"$\"] && node[\"$\"].key ? ` (${node[\"$\"].key})` : \"\");\n if (node._children && node._children.length > 0) {\n _node.children = node._children.map(_node => {\n return transformNode(_node);\n })\n .filter(n => n)\n ;\n } else if (typeof node.content === \"string\" && node.content.trim()) {\n _node.content = node.content;\n } else {\n return false;\n }\n return _node;\n }\n }\n\n updateDirectoryPane(contentStr) {\n let json;\n if (contentStr) {\n try {\n json = JSON.parse(contentStr);\n } catch (e) {\n json = xml2json(contentStr);\n }\n }\n if (json) {\n const _data = this.transformArchiveTreeData(json);\n this._directoryPane\n .data(_data)\n .render()\n ;\n }\n }\n\n enter(domNode, element) {\n super.enter(domNode, element);\n this\n .addWidget(this._directoryPane)\n .addWidget(this._fileEditorPane)\n ;\n }\n\n update(domNode, element) {\n super.update(domNode, element);\n\n const hash = hashSum({\n baseUrl: this.baseUrl(),\n wuid: this.wuid()\n });\n\n if (this._prevHash !== hash || typeof this._contentStr === \"undefined\") {\n Workunit.attach({ baseUrl: this.baseUrl() }, this.wuid())\n .fetchArchive()\n .then(resp => {\n\n this._contentStr = resp;\n this.updateDirectoryPane(this._contentStr);\n\n this._prevHash = hash;\n });\n } else {\n this.updateDirectoryPane(this._contentStr);\n }\n\n this.relativeSizes([this.directoryWidthRatio(), 1 - this.directoryWidthRatio()]);\n }\n}\nECLArchiveViewer.prototype._class += \" eclwatch_ECLArchiveViewer\";\n\nexport interface ECLArchiveViewer {\n directoryPaneColor(): string;\n directoryPaneColor(_: string): this;\n directoryPaneHoverColor(): string;\n directoryPaneHoverColor(_: string): this;\n fontColor(): string;\n fontColor(_: string): this;\n fontFamily(): string;\n fontFamily(_: string): this;\n fontSize(): number;\n fontSize(_: number): this;\n fileIconSize(): number;\n fileIconSize(_: number): this;\n folderIconOpen(): string;\n folderIconOpen(_: string): this;\n folderIconClosed(): string;\n folderIconClosed(_: string): this;\n textFileIcon(): string;\n textFileIcon(_: string): this;\n codeFileIcon(): string;\n codeFileIcon(_: string): this;\n verticalScroll(): boolean;\n verticalScroll(_: boolean): this;\n directoryWidthRatio(): number;\n directoryWidthRatio(_: number): this;\n baseUrl(): string;\n baseUrl(_: string): this;\n wuid(): string;\n wuid(_: string): this;\n}\nECLArchiveViewer.prototype.publish(\"baseUrl\", \"\", \"string\", \"HPCC Platform Base URL\");\nECLArchiveViewer.prototype.publish(\"wuid\", \"\", \"string\", \"Workunit ID\");\nECLArchiveViewer.prototype.publish(\"directoryWidthRatio\", 0.38, \"number\", \"Default directory panel width ratio relative to the full width\");\nECLArchiveViewer.prototype.publish(\"contentString\", null, \"string\", \"XML/JSON archive content string\");\nECLArchiveViewer.prototype.publishProxy(\"directoryPaneColor\", \"_directoryPane\", \"backgroundColor\");\nECLArchiveViewer.prototype.publishProxy(\"directoryPaneHoverColor\", \"_directoryPane\", \"hoverBackgroundColor\");\nECLArchiveViewer.prototype.publishProxy(\"iconSize\", \"_directoryPane\");\nECLArchiveViewer.prototype.publishProxy(\"fontColor\", \"_directoryPane\");\nECLArchiveViewer.prototype.publishProxy(\"fontFamily\", \"_directoryPane\");\nECLArchiveViewer.prototype.publishProxy(\"fontSize\", \"_directoryPane\");\nECLArchiveViewer.prototype.publishProxy(\"folderIconOpen\", \"_directoryPane\");\nECLArchiveViewer.prototype.publishProxy(\"folderIconClosed\", \"_directoryPane\");\nECLArchiveViewer.prototype.publishProxy(\"textFileIcon\", \"_directoryPane\");\nECLArchiveViewer.prototype.publishProxy(\"codeFileIcon\", \"_directoryPane\");\nECLArchiveViewer.prototype.publishProxy(\"verticalScroll\", \"_directoryPane\");\n","import { Vertex } from \"@hpcc-js/graph\";\nimport { Legend } from \"@hpcc-js/layout\";\nimport { local as d3Local, select as d3Select } from \"d3-selection\";\n\nimport \"../src/WUGraphLegend.css\";\n\nexport interface WUGraphLegendData {\n kind: number;\n faChar: string;\n label: string;\n count: number;\n}\n\nclass LegendVertex extends Vertex {\n\n constructor() {\n super();\n }\n\n enter(domNode, element) {\n super.enter(domNode, element);\n this._icon.on(\"click\", () => {\n this.click(this.data());\n });\n }\n\n click(kind: number) {\n }\n}\n\nexport class WUGraphLegend extends Legend {\n\n private icon = d3Local<Vertex>();\n protected _disabled2: { [kind: number]: boolean } = {\n /* TODO: Default some to disabled?\n 43: true,\n 71: true,\n 82: true,\n 88: true\n */\n };\n\n disabled(): number[];\n disabled(_: number[]): this;\n disabled(_?: number[]): number[] | this {\n if (!arguments.length) {\n const retVal = [];\n for (const key in this._disabled2) {\n if (this._disabled2[key]) {\n retVal.push(key);\n }\n }\n return retVal;\n }\n this._disabled2 = {};\n _.forEach(kind => this._disabled2[kind] = true);\n return this;\n }\n\n toggle(kind: number) {\n this._disabled2[kind] = !this._disabled2[kind];\n }\n\n update(domNode, element) {\n super.update(domNode, element);\n\n const context = this;\n const items = this._g.selectAll(\".legendItem\").data(this.data(), (d: any) => d.kind);\n items.enter().append(\"g\")\n .attr(\"class\", \"legendItem\")\n .each(function (this: HTMLElement, d) {\n context.icon.set(this, new LegendVertex()\n .target(this)\n .data(d.kind)\n .textbox_shape_colorStroke(\"none\")\n .textbox_shape_colorFill(\"none\")\n .iconAnchor(\"left\")\n .faChar(d.faChar)\n .text(`${d.label} (${d.count})`)\n .tooltip(`${d.kind} - ${d.label}`)\n .on(\"click\", kind => {\n context.toggle(kind);\n context.render();\n context.click(kind);\n })\n .on(\"mouseover\", kind => {\n context.mouseover(kind);\n })\n .on(\"mouseout\", kind => {\n context.mouseout(kind);\n })\n );\n })\n .merge(items)\n .each(function (this: HTMLElement, d, i) {\n const bbox = context.icon.get(this)\n .icon_shape_colorFill(context._disabled2[d.kind] ? \"gray\" : null)\n .render().getBBox();\n\n d3Select(this)\n .attr(\"transform\", `translate(${+bbox.width / 2}, ${i * 30})`)\n ;\n })\n ;\n items.exit()\n .each(function (this: HTMLElement, d) {\n context.icon.get(this)\n .target(null)\n .render();\n })\n .remove();\n const bbox = this.getBBox(true, true);\n this._g.attr(\"transform\", `translate(16, ${this.height() / 2 - bbox.height / 2})`);\n }\n\n // Events ---\n click(kind: number) {\n }\n\n mouseover(kind: number) {\n }\n\n mouseout(kind: number) {\n }\n}\nWUGraphLegend.prototype._class += \" eclwatch_WUGraphLegend\";\n","import { Icon } from \"@hpcc-js/common\";\nimport { BaseScope, ScopeEdge, ScopeGraph, ScopeSubgraph, ScopeVertex } from \"@hpcc-js/comms\";\nimport { Edge, IGraphData, Lineage, Subgraph, Vertex } from \"@hpcc-js/graph\";\nimport { Edge as UtilEdge, Subgraph as UtilSubgraph, Vertex as UtilVertex } from \"@hpcc-js/util\";\nimport { WUGraphLegendData } from \"./WUGraphLegend.ts\";\n\nexport type VertexType = Vertex | Icon;\n\nexport interface MyGraphData {\n subgraphs: Subgraph[];\n vertices: VertexType[];\n edges: Edge[];\n hierarchy: Lineage[];\n}\n\nfunction faCharFactory(kind): string {\n switch (kind) {\n case \"2\": return \"\\uf0c7\"; // Disk Write\n case \"3\": return \"\\uf15d\"; // sort\n case \"5\": return \"\\uf0b0\"; // Filter\n case \"6\": return \"\\uf1e0\"; // Split\n case \"12\": return \"\\uf039\"; // First N\n case \"15\": return \"\\uf126\"; // Lightweight Join\n case \"17\": return \"\\uf126\"; // Lookup Join\n case \"22\": return \"\\uf1e6\"; // Pipe Output\n case \"23\": return \"\\uf078\"; // Funnel\n case \"25\": return \"\\uf0ce\"; // Inline Dataset\n case \"26\": return \"\\uf074\"; // distribute\n case \"29\": return \"\\uf005\"; // Store Internal Result\n case \"36\": return \"\\uf128\"; // If\n case \"44\": return \"\\uf0c7\"; // write csv\n case \"47\": return \"\\uf0c7\"; // write\n case \"54\": return \"\\uf013\"; // Workunit Read\n case \"56\": return \"\\uf0c7\"; // Spill\n case \"59\": return \"\\uf126\"; // Merge\n case \"61\": return \"\\uf0c7\"; // write xml\n case \"82\": return \"\\uf1c0\"; // Projected Disk Read Spill\n case \"88\": return \"\\uf1c0\"; // Projected Disk Read Spill\n case \"92\": return \"\\uf129\"; // Limted Index Read\n case \"93\": return \"\\uf129\"; // Limted Index Read\n case \"99\": return \"\\uf1c0\"; // CSV Read\n case \"105\": return \"\\uf1c0\"; // CSV Read\n\n case \"7\": return \"\\uf090\"; // Project\n case \"9\": return \"\\uf0e2\"; // Local Iterate\n case \"16\": return \"\\uf005\"; // Output Internal\n case \"19\": return \"\\uf074\"; // Hash Distribute\n case \"21\": return \"\\uf275\"; // Normalize\n case \"35\": return \"\\uf0c7\"; // CSV Write\n case \"37\": return \"\\uf0c7\"; // Index Write\n case \"71\": return \"\\uf1c0\"; // Disk Read Spill\n case \"133\": return \"\\uf0ce\"; // Inline Dataset\n case \"148\": return \"\\uf0ce\"; // Inline Dataset\n case \"168\": return \"\\uf275\"; // Local Denormalize\n }\n return \"\\uf063\";\n}\n\nexport class WUScopeController {\n private graphDB: ScopeGraph;\n private subgraphsMap: { [id: string]: Subgraph } = {};\n private rSubgraphsMap: { [id: string]: ScopeSubgraph } = {};\n private verticesMap: { [id: string]: VertexType } = {};\n private rVerticesMap: { [id: string]: ScopeVertex } = {};\n private edgesMap: { [id: string]: Edge } = {};\n private rEdgesMap: { [id: string]: ScopeEdge } = {};\n private kindMap: { [id: string]: ScopeVertex[] } = {};\n\n protected _disabled: { [kind: number]: boolean } = {};\n\n constructor() {\n }\n\n clear() {\n this.subgraphsMap = {};\n this.rSubgraphsMap = {};\n this.verticesMap = {};\n this.rVerticesMap = {};\n this.edgesMap = {};\n this.rEdgesMap = {};\n }\n\n set(masterGraph: ScopeGraph) {\n this.graphDB = masterGraph;\n this.graphGui(this.graphDB);\n\n this.kindMap = {};\n this.graphDB.walk(item => {\n if (item instanceof UtilSubgraph) {\n } else if (item instanceof UtilVertex) {\n const kind = item._.attr(\"Kind\").RawValue;\n if (!this.kindMap[kind]) {\n this.kindMap[kind] = [];\n }\n this.kindMap[kind].push(item);\n } else if (item instanceof UtilEdge) {\n }\n });\n }\n\n disabled(): number[];\n disabled(_: number[]): this;\n disabled(_?: number[]): number[] | this {\n if (!arguments.length) {\n const retVal = [];\n for (const key in this._disabled) {\n if (this._disabled[key]) {\n retVal.push(key);\n }\n }\n return retVal;\n }\n this._disabled = {};\n _.forEach(kind => this._disabled[kind] = true);\n return this;\n }\n\n graphGui(graphDB: ScopeGraph): IGraphData {\n const graphGui: MyGraphData = {\n subgraphs: [],\n vertices: [],\n edges: [],\n hierarchy: []\n };\n\n graphDB.walk((item) => {\n if (item instanceof UtilSubgraph) {\n const subgraph = this.appendSubgraph(item, graphGui.hierarchy, graphGui.subgraphs);\n subgraph.showMinMax(item.vertices.length > 3 || subgraph.minState() !== \"normal\");\n } else if (item instanceof UtilVertex) {\n this.appendVertex(item, graphGui.hierarchy, graphGui.vertices);\n } else if (item instanceof UtilEdge) {\n this.appendEdge(item, graphGui.edges);\n }\n });\n\n return graphGui;\n }\n\n format(labelTpl, obj) {\n let retVal = \"\";\n let lpos = labelTpl.indexOf(\"%\");\n let rpos = -1;\n while (lpos >= 0) {\n retVal += labelTpl.substring(rpos + 1, lpos);\n rpos = labelTpl.indexOf(\"%\", lpos + 1);\n if (rpos < 0) {\n console.warn(\"Invalid Label Template\");\n break;\n }\n const key = labelTpl.substring(lpos + 1, rpos);\n retVal += !key ? \"%\" : (obj[labelTpl.substring(lpos + 1, rpos)] || \"\");\n lpos = labelTpl.indexOf(\"%\", rpos + 1);\n }\n retVal += labelTpl.substring(rpos + 1, labelTpl.length);\n return retVal.split(\"\\\\n\").join(\"\\n\");\n }\n\n createSubgraph(subgraph: ScopeSubgraph): Subgraph {\n let sg = this.subgraphsMap[subgraph._.Id];\n if (!sg) {\n sg = new Subgraph()\n .title(subgraph._.Id)\n .on(\"minClick\", () => {\n this.minClick(sg);\n })\n ;\n this.subgraphsMap[subgraph._.Id] = sg;\n this.rSubgraphsMap[sg.id()] = subgraph;\n }\n return sg;\n }\n\n createVertex(vertex: ScopeVertex): VertexType {\n let v = this.verticesMap[vertex._.Id];\n if (!v) {\n const attrs = vertex._.rawAttrs();\n if (vertex._.ScopeType === \"dummy\") {\n const parent = this.subgraphsMap[vertex.parent._.Id];\n v = new Icon()\n .shape_colorFill(\"darkred\")\n .shape_colorStroke(\"darkred\")\n .image_colorFill(\"white\")\n .faChar(\"\\uf067\")\n .on(\"click\", () => {\n parent.minState(\"normal\");\n this.minClick(parent);\n })\n ;\n } else {\n v = new Vertex()\n .icon_shape_colorFill(\"#1f77b4\")\n .icon_image_colorFill(\"white\")\n .faChar(faCharFactory(attrs[\"Kind\"]))\n .text(attrs[\"Label\"])\n ;\n const annotations = [];\n if (vertex._.hasAttr(\"Definition\")) {\n annotations.push({\n faChar: \"\\uf036\",\n tooltip: \"Definition\",\n shape_colorFill: \"lightgray\",\n shape_colorStroke: \"lightgray\",\n image_colorFill: \"black\"\n });\n }\n if (vertex._.hasAttr(\"IsInternal\")) {\n annotations.push({\n faChar: \"\\uf085\",\n tooltip: \"IsInternal\",\n shape_colorFill: \"red\",\n shape_colorStroke: \"red\",\n image_colorFill: \"white\"\n });\n }\n v.annotationIcons(annotations);\n }\n this.verticesMap[vertex._.Id] = v;\n this.rVerticesMap[v.id()] = vertex;\n }\n return v;\n }\n\n isSpill(edge: ScopeEdge): boolean {\n const sourceKind = edge.source._.attr(\"Kind\").RawValue;\n const targetKind = edge.target._.attr(\"Kind\").RawValue;\n return sourceKind === \"2\" || targetKind === \"71\";\n }\n\n spansSubgraph(edge: ScopeEdge): boolean {\n return edge.source.parent._.Id !== edge.target.parent._.Id;\n }\n\n createEdge(edge: ScopeEdge): Edge | undefined {\n let e = this.edgesMap[edge._.Id];\n if (!e) {\n const attrs = edge._.rawAttrs();\n const sourceV = this.verticesMap[edge.source._.Id];\n const targetV = this.verticesMap[edge.target._.Id];\n if (sourceV && targetV) {\n const isSpill = this.isSpill(edge);\n const spansSubgraph = this.spansSubgraph(edge);\n\n const label = this.format(\"%Label%\\n%NumRowsProcessed%\", attrs);\n /* TODO: Add extra annotations once WUDetails is fixed...\n const numSlaves = parseInt(attrs[\"NumSlaves\"]);\n const numStarts = parseInt(attrs[\"NumStarts\"]);\n const numStops = parseInt(attrs[\"NumStops\"]);\n const started = numStarts > 0;\n const finished = numStops === numSlaves;\n const active = started && !finished;\n */\n\n let strokeDasharray = null;\n let weight = 100;\n if (attrs[\"IsDependency\"]) {\n weight = 10;\n strokeDasharray = \"1,5\";\n } else if (attrs[\"_childGraph\"]) {\n strokeDasharray = \"5,5\";\n } else if (isSpill) {\n weight = 25;\n strokeDasharray = \"5,5,10,5\";\n } else if (spansSubgraph) {\n weight = 5;\n strokeDasharray = \"5,5\";\n }\n e = new Edge()\n .sourceVertex(sourceV)\n .targetVertex(targetV)\n .sourceMarker(\"circle\")\n .targetMarker(\"arrow\")\n .weight(weight)\n .strokeDasharray(strokeDasharray)\n .text(label)\n ;\n this.edgesMap[edge._.Id] = e;\n this.rEdgesMap[e.id()] = edge;\n }\n }\n return e;\n }\n\n appendSubgraph(subgraph: ScopeSubgraph, hierarchy: Lineage[], subgraphs: Subgraph[]): Subgraph {\n const sg = this.createSubgraph(subgraph);\n subgraphs.push(sg);\n const parent = this.subgraphsMap[subgraph.parent._.Id];\n if (parent) {\n hierarchy.push({ parent, child: sg });\n }\n return sg;\n }\n\n appendVertex(vertex: ScopeVertex, hierarchy: Lineage[], vertices: VertexType[]): VertexType {\n const v = this.createVertex(vertex);\n vertices.push(v);\n const parent = this.subgraphsMap[vertex.parent._.Id];\n if (parent) {\n hierarchy.push({ parent, child: v });\n }\n return v;\n }\n\n appendEdge(edge: ScopeEdge, edges: Edge[]): Edge {\n const e = this.createEdge(edge);\n if (e) {\n edges.push(e);\n }\n return e;\n }\n\n filterLegend(graphDB: ScopeGraph) {\n for (let i = graphDB.vertices.length - 1; i >= 0; --i) {\n const vertex = graphDB.vertices[i];\n const kind = vertex._.attr(\"Kind\").RawValue;\n if (this._disabled[kind]) {\n vertex.remove(false, (source: BaseScope, target: BaseScope) => {\n return new BaseScope({\n ScopeName: vertex._.ScopeName + \":in\",\n Id: source.Id + \"->\" + target.Id,\n ScopeType: \"dummy-edge\",\n Properties: {\n Property: [vertex._.attr(\"Label\")]\n },\n Notes: {\n Note: []\n },\n SinkActivity: \"\"\n });\n });\n }\n }\n }\n\n filterPartial(graphDB: ScopeGraph) {\n for (const subgraph of graphDB.subgraphs) {\n const sg = this.subgraphsMap[subgraph._.Id];\n switch (sg.minState()) {\n case \"partial\":\n const childVertices: ReadonlyArray<ScopeVertex> = subgraph.vertices;\n const vShow: ScopeVertex[] = [];\n const vHide: ScopeVertex[] = [];\n\n for (const vertex of childVertices) {\n if (vertex.inEdges.length === 0 || vertex.inEdges.some(edge => edge.source.parent !== edge.target.parent) ||\n vertex.outEdges.length === 0 || vertex.outEdges.some(edge => edge.source.parent !== edge.target.parent)) {\n vShow.push(vertex);\n } else {\n vHide.push(vertex);\n }\n }\n\n if (vHide.length > 1) {\n const dummyDetails = {\n ScopeName: subgraph._.ScopeName,\n Id: subgraph._.Id + \":dummy\",\n ScopeType: \"dummy\",\n Properties: {\n Property: [{\n Name: \"Activities\",\n RawValue: \"\" + vHide.length,\n Formatted: \"\" + vHide.length,\n Measure: \"count\",\n Creator: \"\",\n CreatorType: \"\"\n }]\n },\n Notes: {\n Note: []\n },\n SinkActivity: \"\"\n };\n const dummyScope = new BaseScope(dummyDetails);\n const dummyVertex = subgraph.createVertex(dummyScope);\n\n for (const vertex of vHide) {\n for (const edge of vertex.inEdges) {\n if (vShow.indexOf(edge.source) >= 0) {\n const dummyEdgeScope = new BaseScope({\n ScopeName: edge.source._.ScopeName,\n Id: edge.source._.Id + \"->\" + dummyVertex._.Id,\n ScopeType: \"dummy-in\",\n Properties: {\n Property: []\n },\n Notes: {\n Note: []\n },\n SinkActivity: \"\"\n });\n subgraph.createEdge(edge.source, dummyVertex, dummyEdgeScope);\n }\n }\n for (const edge of vertex.outEdges) {\n if (vShow.indexOf(edge.target) >= 0) {\n const dummyEdgeScope = new BaseScope({\n ScopeName: edge.target._.ScopeName,\n Id: dummyVertex._.Id + \"->\" + edge.target._.Id,\n ScopeType: \"dummy-out\",\n Properties: {\n Property: []\n },\n Notes: {\n Note: []\n },\n SinkActivity: \"\"\n });\n subgraph.createEdge(dummyVertex, edge.target, dummyEdgeScope);\n }\n }\n }\n vHide.forEach(vertex => vertex.remove(true));\n }\n break;\n }\n }\n }\n\n filterEmptySubgraphs(graphDB: ScopeGraph) {\n while (true) {\n const emptySubgraphs = graphDB.subgraphs.filter(subgraph => subgraph.subgraphs.length === 0 && subgraph.vertices.length === 0);\n if (emptySubgraphs.length === 0) break;\n emptySubgraphs.forEach(subgraph => subgraph.remove(true));\n }\n }\n\n removeObsoleteSubgraphs(graphDB: ScopeGraph) {\n for (const subgraph of [...graphDB.subgraphs]) {\n if (subgraph.vertices.length === 0) {\n subgraph.remove(false);\n }\n }\n }\n\n graphData(): IGraphData {\n const graphDB = this.graphDB.clone();\n this.filterLegend(graphDB);\n this.filterPartial(graphDB);\n this.filterEmptySubgraphs(graphDB);\n this.removeObsoleteSubgraphs(graphDB);\n return this.graphGui(graphDB);\n }\n\n calcLegend(): WUGraphLegendData[] {\n const retVal: WUGraphLegendData[] = [];\n for (const kind in this.kindMap) {\n retVal.push({\n kind: parseInt(kind),\n faChar: faCharFactory(kind),\n label: this.kindMap[kind][0]._.attr(\"Label\").RawValue.split(\"\\n\")[0],\n count: this.kindMap[kind].length\n });\n }\n return retVal;\n }\n\n vertices(kind: number): VertexType[] {\n const retVal: VertexType[] = [];\n for (const v of this.kindMap[kind]) {\n retVal.push(this.verticesMap[v._.Id]);\n }\n return retVal;\n }\n\n formatRow(item: ScopeEdge | ScopeSubgraph | ScopeVertex, columns, row) {\n const attrs = item._.formattedAttrs();\n for (const key in attrs) {\n const idx = columns.indexOf(key);\n if (idx === -1) {\n columns.push(key);\n row.push(attrs[key]);\n } else {\n row[idx] = attrs[key];\n }\n }\n for (let i = 0; i < 100; ++i) {\n if (row[i] === undefined) {\n row[i] = \"\";\n }\n }\n return row;\n }\n\n activityData(): { columns: string[], data: any[][] } {\n const columns = [\"Id\", \"Kind\", \"Label\"];\n const data = this.graphDB.vertices.map(v => {\n const row = [parseInt(v._.Id.split(\"a\")[1])];\n return this.formatRow(v, columns, row);\n });\n return { columns, data };\n }\n\n edgeData(): { columns: string[], data: any[][] } {\n const columns = [\"Id\", \"Label\"];\n const data = this.graphDB.edges.map(e => {\n const row = [e._.Id];\n return this.formatRow(e, columns, row);\n });\n return { columns, data };\n }\n\n subgraphData(): { columns: string[], data: any[][] } {\n const columns = [\"Id\", \"Label\"];\n const data = this.graphDB.subgraphs.map(sg => {\n const row = [sg._.Id];\n return this.formatRow(sg, columns, row);\n });\n return { columns, data };\n }\n\n calcGraphTooltip(item: VertexType | Edge) {\n let scope;\n let parentScope;\n if (item instanceof Subgraph) {\n const subgraph = this.rSubgraphsMap[item.id()];\n scope = subgraph._;\n parentScope = subgraph.parent._;\n } else if (item instanceof Vertex || item instanceof Icon) {\n const vertex = this.rVerticesMap[item.id()];\n scope = vertex._;\n parentScope = vertex.parent._;\n } else if (item instanceof Edge) {\n const edge = this.rEdgesMap[item.id()];\n scope = edge._;\n parentScope = edge.parent._;\n }\n if (scope) {\n return scope.calcTooltip(parentScope);\n }\n return \"\";\n }\n\n subgraph(id: string): Subgraph | undefined {\n return this.subgraphsMap[id];\n }\n\n vertex(id: string): VertexType | undefined {\n return this.verticesMap[id];\n }\n\n edge(id: string): Edge {\n return this.edgesMap[id];\n }\n\n // Events ---\n minClick(sg: Subgraph) {\n }\n}\n","import { Button, Spacer, ToggleButton, Widget } from \"@hpcc-js/common\";\nimport { ScopeGraph, Workunit } from \"@hpcc-js/comms\";\nimport { Table } from \"@hpcc-js/dgrid\";\nimport { Graph as GraphWidget, Subgraph, Vertex } from \"@hpcc-js/graph\";\nimport { Carousel, ChartPanel } from \"@hpcc-js/layout\";\nimport { hashSum } from \"@hpcc-js/util\";\nimport { WUGraphLegend } from \"./WUGraphLegend.ts\";\nimport { WUScopeController } from \"./WUScopeController.ts\";\n\nimport \"../src/WUGraph.css\";\n\nexport class WUGraph extends ChartPanel {\n\n private _partialAll = new Button().faChar(\"fa-window-restore\").tooltip(\"Partial All\")\n .on(\"click\", () => {\n this.stateClick(this._partialAll);\n });\n\n private _maxAll = new Button().faChar(\"fa-window-maximize\").tooltip(\"Max All\")\n .on(\"click\", () => {\n this.stateClick(this._maxAll);\n });\n\n private _toggleGraph = new ToggleButton().faChar(\"fa-chain\").tooltip(\"Graph\")\n .selected(true)\n .on(\"click\", () => {\n this.viewClick(this._toggleGraph);\n });\n\n private _toggleActivities = new ToggleButton().faChar(\"fa-table\").tooltip(\"Activitiies\")\n .selected(false)\n .on(\"click\", () => {\n this.viewClick(this._toggleActivities);\n });\n\n private _toggleEdges = new ToggleButton().faChar(\"fa-table\").tooltip(\"Edges\")\n .selected(false)\n .on(\"click\", () => {\n this.viewClick(this._toggleEdges);\n });\n\n private _toggleSubgraphs = new ToggleButton().faChar(\"fa-table\").tooltip(\"Subgraphs\")\n .selected(false)\n .on(\"click\", () => {\n this.viewClick(this._toggleSubgraphs);\n });\n\n protected _graph = new GraphWidget()\n .layout(\"Hierarchy\")\n .applyScaleOnLayout(true)\n .showToolbar(false)\n .allowDragging(false)\n ;\n\n private _activities = new Table()\n .pagination(false)\n ;\n\n private _edges = new Table()\n .pagination(false)\n ;\n\n private _subgraphs = new Table()\n .pagination(false)\n ;\n\n protected _legend = new WUGraphLegend(this)\n .on(\"click\", kind => {\n this.render();\n })\n .on(\"mouseover\", kind => {\n const verticesMap: { [id: string]: boolean } = {};\n for (const vertex of this._gc.vertices(kind)) {\n verticesMap[vertex.id()] = true;\n }\n this._graph.highlightVerticies(verticesMap);\n })\n .on(\"mouseout\", kind => {\n this._graph.highlightVerticies();\n })\n ;\n\n protected _view = new Carousel().widgets([this._graph, this._activities, this._edges, this._subgraphs]);\n\n protected _gc = new WUScopeController();\n\n constructor() {\n super();\n this.topOverlay(false);\n this.widget(this._view);\n const buttons: Widget[] = [\n this._toggleGraph,\n this._toggleActivities,\n this._toggleEdges,\n this._toggleSubgraphs,\n new Spacer(),\n this._partialAll,\n this._maxAll,\n new Spacer(),\n ...this._graph.iconBarButtons(),\n new Spacer()];\n this.buttons(buttons.concat(this.buttons()));\n this._gc.minClick = (sg: Subgraph) => {\n this.loadGraph();\n this._graph.render(w => {\n this._graph\n .selection([sg])\n .centerOnItem(sg)\n ;\n });\n };\n\n this._graph.tooltipHTML((v: Vertex) => {\n return this._gc.calcGraphTooltip(v);\n });\n }\n\n stateClick(sourceB: Button) {\n switch (sourceB) {\n case this._partialAll:\n this._graph.data().subgraphs.forEach((sg: Subgraph) => {\n sg.minState(\"partial\");\n });\n break;\n case this._maxAll:\n this._graph.data().subgraphs.forEach((sg: Subgraph) => {\n sg.minState(\"normal\");\n });\n break;\n }\n this.render();\n }\n\n viewClick(sourceTB: ToggleButton) {\n this._toggleGraph.selected(sourceTB === this._toggleGraph);\n this._toggleActivities.selected(sourceTB === this._toggleActivities);\n this._toggleEdges.selected(sourceTB === this._toggleEdges);\n this._toggleSubgraphs.selected(sourceTB === this._toggleSubgraphs);\n switch (sourceTB) {\n case this._toggleGraph:\n this._view.active(0);\n break;\n case this._toggleActivities:\n this._view.active(1);\n break;\n case this._toggleEdges:\n this._view.active(2);\n break;\n case this._toggleSubgraphs:\n this._view.active(3);\n break;\n }\n this.render(w => {\n });\n }\n\n private _prevHashSum;\n private _prevScopeGraph: ScopeGraph;\n fetchScopeGraph(): Promise<ScopeGraph> {\n const hash = hashSum({\n baseUrl: this.baseUrl(),\n wuid: this.wuid(),\n graphID: this.graphID(),\n subgraphID: this.subgraphID()\n });\n if (!this._prevScopeGraph || this._prevHashSum !== hash) {\n this.startProgress();\n this._prevHashSum = hash;\n this._gc.clear();\n const wu = Workunit.attach({ baseUrl: this.baseUrl() }, this.wuid());\n return wu.fetchGraphs().then(graphs => {\n for (const graph of graphs) {\n if (graph.Name === this.graphID()) {\n this.finishProgress();\n return graph.fetchScopeGraph(this.subgraphID());\n }\n }\n }).then(scopeGraph => {\n this._prevScopeGraph = scopeGraph;\n return this._prevScopeGraph;\n });\n }\n return Promise.resolve(this._prevScopeGraph);\n }\n\n enter(domNode, _element) {\n super.enter(domNode, _element);\n }\n\n update(domNode, element) {\n super.update(domNode, element);\n }\n\n exit(domNode, element) {\n super.exit(domNode, element);\n }\n\n loadGraph() {\n this._gc.disabled(this._legend.disabled());\n this._graph\n .data(this._gc.graphData(), true)\n ;\n {\n const { columns, data } = this._gc.activityData();\n this._activities\n .columns(columns)\n .data(data)\n ;\n }\n {\n const { columns, data } = this._gc.edgeData();\n this._edges\n .columns(columns)\n .data(data)\n ;\n }\n {\n const { columns, data } = this._gc.subgraphData();\n this._subgraphs\n .columns(columns)\n .data(data)\n ;\n }\n }\n\n render(callback?: (w: Widget) => void): this {\n if (this.wuid() && this.graphID()) {\n this.fetchScopeGraph().then(scopedGraph => {\n this._gc.set(scopedGraph);\n this._legend.data(this._gc.calcLegend());\n this.loadGraph();\n super.render(callback);\n });\n } else {\n super.render(callback);\n }\n return this;\n }\n\n selection(_?) {\n if (!arguments.length) return this._graph.selection();\n const item = this._gc.vertex(_) || this._gc.edge(_) || this._gc.subgraph(_);\n if (item) {\n this._graph.selection([item]);\n }\n return this;\n }\n}\nWUGraph.prototype._class += \" eclwatch_WUGraph\";\n\nexport interface WUGraph {\n baseUrl(): string;\n baseUrl(_: string): this;\n wuid(): string;\n wuid(_: string): this;\n graphID(): string;\n graphID(_: string): this;\n subgraphID(): string;\n subgraphID(_: string): this;\n}\n\nWUGraph.prototype.publish(\"baseUrl\", \"\", \"string\", \"HPCC Platform Base URL\");\nWUGraph.prototype.publish(\"wuid\", \"\", \"string\", \"Workunit ID\");\nWUGraph.prototype.publish(\"graphID\", \"\", \"string\", \"Graph ID\");\nWUGraph.prototype.publish(\"subgraphID\", \"\", \"string\", \"Subgraph ID\");\n","import { ResultFilter, Result, XSDSchema, XSDXMLNode } from \"@hpcc-js/comms\";\nimport { ColumnType, Deferred, domConstruct, QueryResults, RowFormatter } from \"@hpcc-js/dgrid\";\n\nfunction entitiesEncode(str) {\n return String(str).replace(/&/g, \"&amp;\").replace(/</g, \"&lt;\").replace(/>/g, \"&gt;\").replace(/\"/g, \"&quot;\");\n}\n\nfunction safeEncode(item) {\n switch (Object.prototype.toString.call(item)) {\n case \"[object Undefined]\":\n case \"[object Boolean]\":\n case \"[object Number]\":\n return item;\n case \"[object String]\":\n return entitiesEncode(item);\n default:\n console.warn(\"Unknown cell type: \" + Object.prototype.toString.call(item)); \n }\n return item;\n}\n\nexport class Store {\n protected wuResult: Result;\n protected schema: XSDSchema;\n protected _columns: any[];\n protected _cache: { [key: string]: Promise<{ totalLength: number, data: any[] }> } = {};\n private rowFormatter: RowFormatter;\n protected _filter: ResultFilter = {};\n\n constructor(wuResult: Result, schema: XSDSchema, renderHtml: boolean, filter: ResultFilter = {}) {\n this.wuResult = wuResult;\n this.schema = schema;\n this._columns = this.schema2Columns(this.schema.root);\n this.rowFormatter = new RowFormatter(this._columns, renderHtml);\n this._filter = filter;\n }\n\n columns() {\n return this._columns;\n }\n\n schema2Columns(parentNode: XSDXMLNode, prefix: string = \"\"): ColumnType[] {\n if (!parentNode) return [];\n return parentNode.children().filter(node => node.name.indexOf(\"__hidden\", node.name.length - \"__hidden\".length) === -1).map((node, idx) => {\n const label = node.name;\n const keyed = node.attrs[\"hpcc:keyed\"];\n const column: ColumnType = {\n field: prefix + label,\n leafID: label,\n idx,\n label: label + (keyed ? \" (i)\" : \"\"),\n className: \"resultGridCell\",\n sortable: false,\n width: keyed ? 16 : 0,\n isSet: node.isSet\n };\n const children = this.schema2Columns(node, prefix + label + \"_\");\n if (children.length) {\n column.width += 10 + children.reduce((prev: number, childNode: ColumnType) => {\n return prev + childNode.width!;\n }, 0);\n column.children = children;\n } else {\n column.width += node.charWidth() * 9;\n column.formatter = (cell, row) => {\n switch (typeof cell) {\n case \"string\":\n return {\n html: cell.replace(/\\t/g, \"&nbsp;&nbsp;&nbsp;&nbsp;\").trim()\n };\n case \"undefined\":\n return \"\";\n }\n return cell;\n };\n }\n return column;\n });\n }\n\n isChildDataset(cell) {\n if (Object.prototype.toString.call(cell) !== \"[object Object]\") {\n return false;\n }\n let propCount = 0;\n let firstPropType = null;\n for (const key in cell) {\n if (!firstPropType) {\n firstPropType = Object.prototype.toString.call(cell[key]);\n }\n propCount++;\n }\n return propCount === 1 && firstPropType === \"[object Array]\";\n }\n\n rowToTable(cell, __row, node) {\n if (this.isChildDataset(cell)) { // Don't display \"Row\" as a header ---\n for (const key in cell) {\n this.rowToTable(cell[key], __row, node);\n }\n return;\n }\n\n const table = domConstruct.create(\"table\", { border: 1, cellspacing: 0, width: \"100%\" }, node);\n switch (Object.prototype.toString.call(cell)) {\n case \"[object Object]\":\n let tr = domConstruct.create(\"tr\", null, table);\n for (const key in cell) {\n domConstruct.create(\"th\", { innerHTML: safeEncode(key) }, tr);\n }\n tr = domConstruct.create(\"tr\", null, table);\n for (const key in cell) {\n switch (Object.prototype.toString.call(cell[key])) {\n case \"[object Object]\":\n case \"[object Array]\":\n this.rowToTable(cell[key], __row, node);\n break;\n default:\n domConstruct.create(\"td\", { innerHTML: safeEncode(cell[key]) }, tr);\n break;\n }\n }\n break;\n case \"[object Array]\":\n for (let i = 0; i < cell.length; ++i) {\n switch (Object.prototype.toString.call(cell[i])) {\n case \"[object Boolean]\":\n case \"[object Number]\":\n case \"[object String]\":\n // Item in Scalar ---\n const tr1 = domConstruct.create(\"tr\", null, table);\n domConstruct.create(\"td\", { innerHTML: safeEncode(cell[i]) }, tr1);\n break;\n default:\n // Child Dataset ---\n if (i === 0) {\n const tr2 = domConstruct.create(\"tr\", null, table);\n for (const key in cell[i]) {\n domConstruct.create(\"th\", { innerHTML: safeEncode(key) }, tr2);\n }\n }\n domConstruct.create(\"tr\", null, table);\n for (const key in cell[i]) {\n if (cell[i][key]) {\n if (Object.prototype.toString.call(cell[i][key]) === \"[object Object]\" || Object.prototype.toString.call(cell[i][key]) === \"[object Array]\") {\n const td = domConstruct.create(\"td\", null, tr1);\n this.rowToTable(cell[i][key], cell[i], td);\n } else if (key.indexOf(\"__html\", key.length - \"__html\".length) !== -1) {\n domConstruct.create(\"td\", { innerHTML: cell[i][key] }, tr1);\n } else if (key.indexOf(\"__javascript\", key.length - \"__javascript\".length) !== -1) {\n /*const td = */ domConstruct.create(\"td\", null, tr1);\n // this.injectJavascript(cell[i][key], cell[i], td);\n } else {\n const val = cell[i][key];\n domConstruct.create(\"td\", { innerHTML: safeEncode(val) }, tr1);\n }\n } else {\n domConstruct.create(\"td\", { innerHTML: \"\" }, tr1);\n }\n }\n }\n }\n break;\n }\n }\n\n getIdentity(row) {\n return row.__hpcc_id;\n }\n\n _request(start, end): Promise<{ totalLength: number, data: any[] }> {\n if (!this.wuResult) return Promise.resolve({ totalLength: 0, data: [] });\n const cacheKey = `${start}->${end}`;\n if (this._cache[cacheKey]) return this._cache[cacheKey];\n const retVal = this.wuResult.fetchRows(start, end - start, false, this._filter).then((rows: any[]) => {\n return {\n totalLength: this.wuResult.Total,\n data: rows.map((row, idx) => {\n const formattedRow: any = this.rowFormatter.format(row);\n formattedRow.__hpcc_id = start + idx;\n formattedRow.__hpcc_orig = row;\n return formattedRow;\n })\n };\n });\n this._cache[cacheKey] = retVal;\n return retVal;\n }\n\n fetchRange(options): Promise<any[]> {\n const retVal = new Deferred();\n this._request(options.start, options.end).then(response => retVal.resolve(response));\n return new QueryResults(retVal.then(response => response.data), {\n totalLength: retVal.then(response => response.totalLength)\n });\n }\n}\n","import { ResultFilter, IOptions, Result } from \"@hpcc-js/comms\";\nimport { Common } from \"@hpcc-js/dgrid\";\nimport { hashSum } from \"@hpcc-js/util\";\nimport { Store } from \"./WUResultStore.ts\";\n\nexport class WUResult extends Common {\n\n protected _result: Result;\n protected _localStore: Store;\n\n constructor() {\n super();\n this.renderHtml(false);\n }\n\n hashSum(opts: any = {}) {\n return hashSum({\n baseUrl: this.baseUrl(),\n wuid: this.wuid(),\n resultName: this.resultName(),\n sequence: this.sequence(),\n nodeGroup: this.nodeGroup(),\n logicalFile: this.logicalFile(),\n userID: this.user(),\n password: this.password(),\n ...opts\n });\n }\n\n protected _prevResultHash: string;\n calcResult(): Result | null {\n const resultHash = this.hashSum();\n if (this._prevResultHash !== resultHash) {\n this._prevResultHash = resultHash;\n\n const opts: IOptions = {\n baseUrl: this.baseUrl(),\n userID: this.user(),\n password: this.password()\n };\n if (this.wuid() && this.resultName()) {\n this._result = Result.attach(opts, this.wuid(), this.resultName());\n } else if (this.wuid() && this.sequence() !== undefined) {\n this._result = Result.attach(opts, this.wuid(), this.sequence());\n } else if (this.logicalFile() && this.nodeGroup()) {\n this._result = Result.attachLogicalFile(opts, this.nodeGroup(), this.logicalFile());\n } else if (this.logicalFile()) {\n this._result = Result.attachLogicalFile(opts, \"\", this.logicalFile());\n }\n }\n return this._result;\n }\n\n fetch(row, count, abortController = new AbortController()): Promise<object[]> {\n const result = this.calcResult();\n if (result) {\n return result.fetchRows(row, count, false, {}, abortController.signal);\n }\n return Promise.resolve([]);\n }\n\n protected _prevStoreHash: string;\n protected _prevQueryHash: string;\n update(domNode, element) {\n super.update(domNode, element);\n const storeHash = this.hashSum({\n renderHtml: this.renderHtml(),\n filter: this.filter()\n });\n if (this._prevStoreHash !== storeHash) {\n this._prevStoreHash = storeHash;\n const result = this.calcResult();\n if (result) {\n result.fetchXMLSchema().then(schema => {\n this._localStore = new Store(result, schema, this.renderHtml(), this.filter());\n this._dgrid?.set(\"columns\", this._localStore.columns());\n this._dgrid?.set(\"collection\", this._localStore);\n });\n }\n }\n }\n\n click(row, col, sel) {\n }\n}\nWUResult.prototype._class += \" eclwatch_WUResult\";\n\nexport interface WUResult {\n baseUrl(): string;\n baseUrl(_: string): this;\n user(): string;\n user(_: string): this;\n password(): string;\n password(_: string): this;\n wuid(): string;\n wuid(_: string): this;\n resultName(): string;\n resultName(_: string): this;\n sequence(): number;\n sequence(_: number): this;\n nodeGroup(): string;\n nodeGroup(_: string): this;\n logicalFile(): string;\n logicalFile(_: string): this;\n filter(): ResultFilter;\n filter(_: ResultFilter): this;\n}\n\nWUResult.prototype.publish(\"baseUrl\", \"\", \"string\", \"URL to WsWorkunits\");\nWUResult.prototype.publish(\"user\", \"\", \"string\", \"User ID\");\nWUResult.prototype.publish(\"password\", \"\", \"string\", \"Password\");\nWUResult.prototype.publish(\"wuid\", \"\", \"string\", \"Workunit ID\");\nWUResult.prototype.publish(\"resultName\", \"\", \"string\", \"Result Name\");\nWUResult.prototype.publish(\"sequence\", undefined, \"number\", \"Sequence Number\");\nWUResult.prototype.publish(\"nodeGroup\", \"\", \"string\", \"NodeGroup\");\nWUResult.prototype.publish(\"logicalFile\", \"\", \"string\", \"Logical File Name\");\nWUResult.prototype.publish(\"filter\", {}, \"object\", \"Filter\");\n","import { Workunit, WUStateID } from \"@hpcc-js/comms\";\nimport { Edge, Graph, Vertex } from \"@hpcc-js/graph\";\nimport { hashSum, IObserverHandle } from \"@hpcc-js/util\";\n\nexport enum STATUS {\n CREATE = \"Created\",\n COMPILE = \"Compiled\",\n EXECUTE = \"Executed\",\n COMPLETE = \"Completed\"\n}\n\nexport enum STATUS_ACTIVE {\n CREATE = \"Creating\",\n COMPILE = \"Compiling\",\n EXECUTE = \"Executing\",\n COMPLETE = \"Completed\"\n}\n\nexport class WUStatus extends Graph {\n\n protected _wu: Workunit;\n protected _wuHandle: IObserverHandle;\n\n protected _create: Vertex;\n protected _compile: Vertex;\n protected _execute: Vertex;\n protected _complete: Vertex;\n\n constructor() {\n super();\n this\n .zoomable(false)\n .zoomToFitLimit(1)\n .layout(\"Hierarchy\")\n .hierarchyRankDirection(\"LR\")\n .showToolbar(false)\n .allowDragging(false)\n ;\n }\n\n private _prevHash;\n attachWorkunit() {\n const hash = hashSum({\n baseUrl: this.baseUrl(),\n wuid: this.wuid()\n });\n if (this._prevHash !== hash) {\n this._prevHash = hash;\n this._wu = Workunit.attach({ baseUrl: this.baseUrl() }, this.wuid());\n if (this._wuHandle) {\n this._wuHandle.release();\n }\n this._wuHandle = this._wu.watch(changes => {\n this.lazyRender();\n });\n }\n }\n\n createVertex(faChar: string) {\n return new Vertex()\n .icon_diameter(32)\n .icon_shape_colorFill(\"none\")\n .icon_shape_colorStroke(\"none\")\n .icon_image_colorFill(\"darkgray\")\n .iconAnchor(\"middle\")\n .textbox_shape_colorFill(\"none\")\n .textbox_shape_colorStroke(\"none\")\n .textbox_text_colorFill(\"darkgray\")\n .faChar(faChar)\n ;\n }\n\n updateVertex(vertex: Vertex, color: string) {\n vertex\n .icon_image_colorFill(color)\n .textbox_text_colorFill(color)\n ;\n }\n\n updateVertexStatus(level: 0 | 1 | 2 | 3 | 4, active: boolean = false) {\n const completeColor = this._wu.isFailed() ? \"darkred\" : \"darkgreen\";\n this._create.text(STATUS.CREATE);\n this._compile.text(STATUS.COMPILE);\n this._execute.text(STATUS.EXECUTE);\n this._complete.text(STATUS.COMPLETE);\n switch (level) {\n case 0:\n this.updateVertex(this._create, \"darkgray\");\n this.updateVertex(this._compile, \"darkgray\");\n this.updateVertex(this._execute, \"darkgray\");\n this.updateVertex(this._complete, \"darkgray\");\n break;\n case 1:\n this._create.text(STATUS_ACTIVE.CREATE);\n this.updateVertex(this._create, active ? \"orange\" : completeColor);\n this.updateVertex(this._compile, \"darkgray\");\n this.updateVertex(this._execute, \"darkgray\");\n this.updateVertex(this._complete, \"darkgray\");\n break;\n case 2:\n this._compile.text(STATUS_ACTIVE.COMPILE);\n this.updateVertex(this._create, completeColor);\n this.updateVertex(this._compile, active ? \"orange\" : completeColor);\n this.updateVertex(this._execute, completeColor);\n this.updateVertex(this._complete, \"darkgray\");\n break;\n case 3:\n this._execute.text(STATUS_ACTIVE.EXECUTE);\n this.updateVertex(this._create, completeColor);\n this.updateVertex(this._compile, completeColor);\n this.updateVertex(this._execute, active ? \"orange\" : completeColor);\n this.updateVertex(this._complete, \"darkgray\");\n break;\n case 4:\n this.updateVertex(this._create, completeColor);\n this.updateVertex(this._compile, completeColor);\n this.updateVertex(this._execute, completeColor);\n this.updateVertex(this._complete, completeColor);\n break;\n }\n }\n\n createEdge(source, target) {\n return new Edge()\n .sourceVertex(source)\n .targetVertex(target)\n .strokeColor(\"black\")\n .showArc(false)\n ;\n }\n\n enter(domNode, element) {\n super.enter(domNode, element);\n this._create = this.createVertex(\"\\uf11d\");\n this._compile = this.createVertex(\"\\uf085\");\n this._execute = this.createVertex(\"\\uf275\");\n this._complete = this.createVertex(\"\\uf11e\");\n const e1 = this.createEdge(this._create, this._compile);\n const e2 = this.createEdge(this._compile, this._execute);\n const e3 = this.createEdge(this._execute, this._complete);\n this.data({\n vertices: [this._create, this._compile, this._execute, this._complete],\n edges: [e1, e2, e3]\n });\n }\n\n update(domNode, element) {\n this.attachWorkunit();\n switch (this._wu.StateID) {\n case WUStateID.Blocked:\n case WUStateID.Wait:\n case WUStateID.Scheduled:\n case WUStateID.UploadingFiled:\n this.updateVertexStatus(1);\n break;\n case WUStateID.Compiling:\n this.updateVertexStatus(2, true);\n break;\n case WUStateID.Submitted:\n this.updateVertexStatus(1, true);\n break;\n case WUStateID.Compiled:\n this.updateVertexStatus(2);\n break;\n case WUStateID.Aborting:\n case WUStateID.Running:\n this.updateVertexStatus(3, true);\n break;\n case WUStateID.Aborted:\n case WUStateID.Archived:\n case WUStateID.Completed:\n this.updateVertexStatus(4);\n break;\n case WUStateID.Failed:\n this.updateVertexStatus(4, false);\n break;\n case WUStateID.DebugPaused:\n case WUStateID.DebugRunning:\n case WUStateID.Paused:\n case WUStateID.Unknown:\n default:\n this.updateVertexStatus(0);\n break;\n }\n super.update(domNode, element);\n this.zoomToFit();\n }\n\n exit(domNode, element) {\n if (this._wuHandle) {\n this._wuHandle.release();\n }\n super.exit(domNode, element);\n }\n}\nWUStatus.prototype._class += \" eclwatch_WUStatus\";\n\nexport interface WUStatus {\n baseUrl(): string;\n baseUrl(_: string): this;\n wuid(): string;\n wuid(_: string): this;\n}\n\nWUStatus.prototype.publish(\"baseUrl\", \"\", \"string\", \"HPCC Platform Base URL\");\nWUStatus.prototype.publish(\"wuid\", \"\", \"string\", \"Workunit ID\");\n","import { Palette } from \"@hpcc-js/common\";\nimport { Scope, Workunit, WsWorkunits } from \"@hpcc-js/comms\";\nimport { ReactTimelineSeries } from \"@hpcc-js/timeline\";\nimport { hashSum, RecursivePartial } from \"@hpcc-js/util\";\n\nimport \"../src/WUGraph.css\";\n\nconst columns = [\"label\", \"start\", \"end\", \"icon\", \"color\", \"series\"];\n\nexport class WUTimeline extends ReactTimelineSeries {\n\n protected _palette = Palette.ordinal(\"default\");\n\n constructor() {\n super();\n this\n .columns(columns)\n .titleColumn(\"label\")\n .iconColumn(\"icon\")\n .colorColumn(\"color\")\n .seriesColumn(\"series\")\n .timePattern(\"%Y-%m-%dT%H:%M:%S.%LZ\")\n .tickFormat(\"%H:%M\")\n .tooltipTimeFormat(\"%H:%M:%S.%L\")\n .tooltipHTML(d => {\n return d[columns.length].calcTooltip();\n })\n ;\n }\n\n private _prevHashSum;\n clear(): this {\n delete this._prevHashSum;\n return this;\n }\n fetchScopes() {\n const hash = hashSum({\n baseUrl: this.baseUrl(),\n wuid: this.wuid(),\n request: this.request()\n });\n if (this._prevHashSum !== hash) {\n this._prevHashSum = hash;\n const wu = Workunit.attach({ baseUrl: this.baseUrl() }, this.wuid());\n wu.fetchDetails(this.request()).then(scopes => {\n return scopes.filter(scope => scope.Id && scope.attr(\"WhenStarted\").RawValue).map((scope: Scope) => {\n const whenStarted = +scope.attr(\"WhenStarted\").RawValue / 1000;\n const timeElapsed = +scope.attr(\"TimeElapsed\").RawValue / 1000000;\n return [\n scope.Id,\n new Date(whenStarted).toISOString(),\n timeElapsed ? new Date(whenStarted + timeElapsed).toISOString() : undefined,\n null,\n this._palette(scope.ScopeType),\n scope.ScopeName.split(\"::\").join(\":\").split(\":\").slice(0, 1),\n scope\n ];\n });\n }).then(scopes => {\n this\n .data(scopes)\n .render()\n ;\n });\n }\n }\n\n enter(domNode, _element) {\n super.enter(domNode, _element);\n }\n\n update(domNode, element) {\n this.fetchScopes();\n super.update(domNode, element);\n }\n\n exit(domNode, element) {\n super.exit(domNode, element);\n }\n}\nWUTimeline.prototype._class += \" eclwatch_WUTimeline\";\n\nexport interface WUTimeline {\n baseUrl(): string;\n baseUrl(_: string): this;\n wuid(): string;\n wuid(_: string): this;\n request(): Partial<WsWorkunits.WUDetails>;\n request(_: RecursivePartial<WsWorkunits.WUDetails>): this;\n}\n\nWUTimeline.prototype.publish(\"baseUrl\", \"\", \"string\", \"HPCC Platform Base URL\");\nWUTimeline.prototype.publish(\"wuid\", \"\", \"string\", \"Workunit ID\");\nWUTimeline.prototype.publish(\"request\", {\n ScopeFilter: {\n MaxDepth: 3,\n ScopeTypes: [\"graph\", \"subgraph\"]\n },\n NestedFilter: {\n Depth: 0,\n ScopeTypes: []\n },\n PropertiesToReturn: {\n AllProperties: false,\n AllStatistics: true,\n AllHints: false,\n Properties: [\"WhenStarted\", \"TimeElapsed\"]\n },\n ScopeOptions: {\n IncludeId: true,\n IncludeScope: true,\n IncludeScopeType: true\n },\n PropertyOptions: {\n IncludeName: true,\n IncludeRawValue: true,\n IncludeFormatted: true,\n IncludeMeasure: true,\n IncludeCreator: false,\n IncludeCreatorType: false\n }\n}, \"object\", \"WUDetails Request\");\n"],"names":["_node","d3Local","bbox","d3Select","UtilSubgraph","UtilVertex","UtilEdge","Subgraph","Edge","columns","GraphWidget","STATUS","STATUS_ACTIVE"],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ (function(){"use strict";try{if(typeof document<"u"){var e=document.createElement("style");e.appendChild(document.createTextNode(".eclwatch_WUGraphLegend .graph_Vertex{cursor:auto}.eclwatch_WUGraphLegend .graph_Vertex .common_Icon{cursor:pointer}.eclwatch_WUGraph .graph_Vertex{cursor:auto}.eclwatch_WUGraph .marker{fill:#656565;stroke:none;stroke-width:1px}.eclwatch_WUGraph .zoom{fill:none;pointer-events:all}.eclwatch_WUGraph .selectionBrush{fill:none;stroke:#a9a9a9}.d3-tip .eclwatch_WUGraph_Tooltip h3,.d3-tip .eclwatch_WUGraph_Tooltip h4{margin:0}.d3-tip .eclwatch_WUGraph_Tooltip table{border-collapse:separate;border-spacing:5px}.d3-tip .eclwatch_WUGraph_Tooltip table .key{font-weight:700}.d3-tip .eclwatch_WUGraph_Tooltip table .value{font-weight:400}")),document.head.appendChild(e)}}catch(t){console.error("vite-plugin-css-injected-by-js",t)}})();
2
+ (function(global,factory){typeof exports=="object"&&typeof module<"u"?factory(exports,require("@hpcc-js/codemirror"),require("@hpcc-js/comms"),require("@hpcc-js/phosphor"),require("@hpcc-js/tree"),require("@hpcc-js/util"),require("@hpcc-js/common"),require("@hpcc-js/dgrid"),require("@hpcc-js/graph"),require("@hpcc-js/layout"),require("@hpcc-js/timeline")):typeof define=="function"&&define.amd?define(["exports","@hpcc-js/codemirror","@hpcc-js/comms","@hpcc-js/phosphor","@hpcc-js/tree","@hpcc-js/util","@hpcc-js/common","@hpcc-js/dgrid","@hpcc-js/graph","@hpcc-js/layout","@hpcc-js/timeline"],factory):(global=typeof globalThis<"u"?globalThis:global||self,factory(global["@hpcc-js/eclwatch"]={},global["@hpcc-js/codemirror"],global["@hpcc-js/comms"],global["@hpcc-js/phosphor"],global["@hpcc-js/tree"],global["@hpcc-js/util"],global["@hpcc-js/common"],global["@hpcc-js/dgrid"],global["@hpcc-js/graph"],global["@hpcc-js/layout"],global["@hpcc-js/timeline"]))})(this,function(exports2,codemirror,comms,phosphor,tree,util,common,dgrid,graph,layout,timeline){"use strict";var __defProp=Object.defineProperty;var __defNormalProp=(obj,key,value)=>key in obj?__defProp(obj,key,{enumerable:!0,configurable:!0,writable:!0,value}):obj[key]=value;var __publicField=(obj,key,value)=>__defNormalProp(obj,typeof key!="symbol"?key+"":key,value);const PKG_NAME="@hpcc-js/eclwatch",PKG_VERSION="3.1.1",BUILD_VERSION="3.2.1";class ECLArchiveViewer extends phosphor.SplitPanel{constructor(){super("horizontal");__publicField(this,"_prevHash");__publicField(this,"_contentStr");__publicField(this,"_directoryPane",new tree.DirectoryTree);__publicField(this,"_fileEditorPane",new codemirror.Editor().text(""));this._directoryPane.rowClick=text=>{this._fileEditorPane.text(text).render()}}transformArchiveTreeData(json){const ret={label:json.name,children:json._children.map(transformNode).filter(n=>n)};if(ret.children&&ret.children[0]&&ret.children[0].label==="html")return{label:"root",children:[{label:"error",content:JSON.stringify(ret,null,4)}]};return ret;function transformNode(node){const _node={};if(_node.label=node.name+(node.$&&node.$.key?` (${node.$.key})`:""),node._children&&node._children.length>0)_node.children=node._children.map(_node2=>transformNode(_node2)).filter(n=>n);else if(typeof node.content=="string"&&node.content.trim())_node.content=node.content;else return!1;return _node}}updateDirectoryPane(contentStr){let json;if(contentStr)try{json=JSON.parse(contentStr)}catch{json=util.xml2json(contentStr)}if(json){const _data=this.transformArchiveTreeData(json);this._directoryPane.data(_data).render()}}enter(domNode,element){super.enter(domNode,element),this.addWidget(this._directoryPane).addWidget(this._fileEditorPane)}update(domNode,element){super.update(domNode,element);const hash=util.hashSum({baseUrl:this.baseUrl(),wuid:this.wuid()});this._prevHash!==hash||typeof this._contentStr>"u"?comms.Workunit.attach({baseUrl:this.baseUrl()},this.wuid()).fetchArchive().then(resp=>{this._contentStr=resp,this.updateDirectoryPane(this._contentStr),this._prevHash=hash}):this.updateDirectoryPane(this._contentStr),this.relativeSizes([this.directoryWidthRatio(),1-this.directoryWidthRatio()])}}ECLArchiveViewer.prototype._class+=" eclwatch_ECLArchiveViewer",ECLArchiveViewer.prototype.publish("baseUrl","","string","HPCC Platform Base URL"),ECLArchiveViewer.prototype.publish("wuid","","string","Workunit ID"),ECLArchiveViewer.prototype.publish("directoryWidthRatio",.38,"number","Default directory panel width ratio relative to the full width"),ECLArchiveViewer.prototype.publish("contentString",null,"string","XML/JSON archive content string"),ECLArchiveViewer.prototype.publishProxy("directoryPaneColor","_directoryPane","backgroundColor"),ECLArchiveViewer.prototype.publishProxy("directoryPaneHoverColor","_directoryPane","hoverBackgroundColor"),ECLArchiveViewer.prototype.publishProxy("iconSize","_directoryPane"),ECLArchiveViewer.prototype.publishProxy("fontColor","_directoryPane"),ECLArchiveViewer.prototype.publishProxy("fontFamily","_directoryPane"),ECLArchiveViewer.prototype.publishProxy("fontSize","_directoryPane"),ECLArchiveViewer.prototype.publishProxy("folderIconOpen","_directoryPane"),ECLArchiveViewer.prototype.publishProxy("folderIconClosed","_directoryPane"),ECLArchiveViewer.prototype.publishProxy("textFileIcon","_directoryPane"),ECLArchiveViewer.prototype.publishProxy("codeFileIcon","_directoryPane"),ECLArchiveViewer.prototype.publishProxy("verticalScroll","_directoryPane");class LegendVertex extends graph.Vertex{constructor(){super()}enter(domNode,element){super.enter(domNode,element),this._icon.on("click",()=>{this.click(this.data())})}click(kind){}}class WUGraphLegend extends layout.Legend{constructor(){super(...arguments);__publicField(this,"icon",common.local());__publicField(this,"_disabled2",{})}disabled(_){if(!arguments.length){const retVal=[];for(const key in this._disabled2)this._disabled2[key]&&retVal.push(key);return retVal}return this._disabled2={},_.forEach(kind=>this._disabled2[kind]=!0),this}toggle(kind){this._disabled2[kind]=!this._disabled2[kind]}update(domNode,element){super.update(domNode,element);const context=this,items=this._g.selectAll(".legendItem").data(this.data(),d=>d.kind);items.enter().append("g").attr("class","legendItem").each(function(d){context.icon.set(this,new LegendVertex().target(this).data(d.kind).textbox_shape_colorStroke("none").textbox_shape_colorFill("none").iconAnchor("left").faChar(d.faChar).text(`${d.label} (${d.count})`).tooltip(`${d.kind} - ${d.label}`).on("click",kind=>{context.toggle(kind),context.render(),context.click(kind)}).on("mouseover",kind=>{context.mouseover(kind)}).on("mouseout",kind=>{context.mouseout(kind)}))}).merge(items).each(function(d,i){const bbox2=context.icon.get(this).icon_shape_colorFill(context._disabled2[d.kind]?"gray":null).render().getBBox();common.select(this).attr("transform",`translate(${+bbox2.width/2}, ${i*30})`)}),items.exit().each(function(d){context.icon.get(this).target(null).render()}).remove();const bbox=this.getBBox(!0,!0);this._g.attr("transform",`translate(16, ${this.height()/2-bbox.height/2})`)}click(kind){}mouseover(kind){}mouseout(kind){}}WUGraphLegend.prototype._class+=" eclwatch_WUGraphLegend";function faCharFactory(kind){switch(kind){case"2":return"";case"3":return"";case"5":return"";case"6":return"";case"12":return"";case"15":return"";case"17":return"";case"22":return"";case"23":return"";case"25":return"";case"26":return"";case"29":return"";case"36":return"";case"44":return"";case"47":return"";case"54":return"";case"56":return"";case"59":return"";case"61":return"";case"82":return"";case"88":return"";case"92":return"";case"93":return"";case"99":return"";case"105":return"";case"7":return"";case"9":return"";case"16":return"";case"19":return"";case"21":return"";case"35":return"";case"37":return"";case"71":return"";case"133":return"";case"148":return"";case"168":return""}return""}class WUScopeController{constructor(){__publicField(this,"graphDB");__publicField(this,"subgraphsMap",{});__publicField(this,"rSubgraphsMap",{});__publicField(this,"verticesMap",{});__publicField(this,"rVerticesMap",{});__publicField(this,"edgesMap",{});__publicField(this,"rEdgesMap",{});__publicField(this,"kindMap",{});__publicField(this,"_disabled",{})}clear(){this.subgraphsMap={},this.rSubgraphsMap={},this.verticesMap={},this.rVerticesMap={},this.edgesMap={},this.rEdgesMap={}}set(masterGraph){this.graphDB=masterGraph,this.graphGui(this.graphDB),this.kindMap={},this.graphDB.walk(item=>{if(!(item instanceof util.Subgraph)){if(item instanceof util.Vertex){const kind=item._.attr("Kind").RawValue;this.kindMap[kind]||(this.kindMap[kind]=[]),this.kindMap[kind].push(item)}}})}disabled(_){if(!arguments.length){const retVal=[];for(const key in this._disabled)this._disabled[key]&&retVal.push(key);return retVal}return this._disabled={},_.forEach(kind=>this._disabled[kind]=!0),this}graphGui(graphDB){const graphGui={subgraphs:[],vertices:[],edges:[],hierarchy:[]};return graphDB.walk(item=>{if(item instanceof util.Subgraph){const subgraph=this.appendSubgraph(item,graphGui.hierarchy,graphGui.subgraphs);subgraph.showMinMax(item.vertices.length>3||subgraph.minState()!=="normal")}else item instanceof util.Vertex?this.appendVertex(item,graphGui.hierarchy,graphGui.vertices):item instanceof util.Edge&&this.appendEdge(item,graphGui.edges)}),graphGui}format(labelTpl,obj){let retVal="",lpos=labelTpl.indexOf("%"),rpos=-1;for(;lpos>=0;){if(retVal+=labelTpl.substring(rpos+1,lpos),rpos=labelTpl.indexOf("%",lpos+1),rpos<0){console.warn("Invalid Label Template");break}const key=labelTpl.substring(lpos+1,rpos);retVal+=key?obj[labelTpl.substring(lpos+1,rpos)]||"":"%",lpos=labelTpl.indexOf("%",rpos+1)}return retVal+=labelTpl.substring(rpos+1,labelTpl.length),retVal.split("\\n").join(`
3
+ `)}createSubgraph(subgraph){let sg=this.subgraphsMap[subgraph._.Id];return sg||(sg=new graph.Subgraph().title(subgraph._.Id).on("minClick",()=>{this.minClick(sg)}),this.subgraphsMap[subgraph._.Id]=sg,this.rSubgraphsMap[sg.id()]=subgraph),sg}createVertex(vertex){let v=this.verticesMap[vertex._.Id];if(!v){const attrs=vertex._.rawAttrs();if(vertex._.ScopeType==="dummy"){const parent=this.subgraphsMap[vertex.parent._.Id];v=new common.Icon().shape_colorFill("darkred").shape_colorStroke("darkred").image_colorFill("white").faChar("").on("click",()=>{parent.minState("normal"),this.minClick(parent)})}else{v=new graph.Vertex().icon_shape_colorFill("#1f77b4").icon_image_colorFill("white").faChar(faCharFactory(attrs.Kind)).text(attrs.Label);const annotations=[];vertex._.hasAttr("Definition")&&annotations.push({faChar:"",tooltip:"Definition",shape_colorFill:"lightgray",shape_colorStroke:"lightgray",image_colorFill:"black"}),vertex._.hasAttr("IsInternal")&&annotations.push({faChar:"",tooltip:"IsInternal",shape_colorFill:"red",shape_colorStroke:"red",image_colorFill:"white"}),v.annotationIcons(annotations)}this.verticesMap[vertex._.Id]=v,this.rVerticesMap[v.id()]=vertex}return v}isSpill(edge){const sourceKind=edge.source._.attr("Kind").RawValue,targetKind=edge.target._.attr("Kind").RawValue;return sourceKind==="2"||targetKind==="71"}spansSubgraph(edge){return edge.source.parent._.Id!==edge.target.parent._.Id}createEdge(edge){let e=this.edgesMap[edge._.Id];if(!e){const attrs=edge._.rawAttrs(),sourceV=this.verticesMap[edge.source._.Id],targetV=this.verticesMap[edge.target._.Id];if(sourceV&&targetV){const isSpill=this.isSpill(edge),spansSubgraph=this.spansSubgraph(edge),label=this.format(`%Label%
4
+ %NumRowsProcessed%`,attrs);let strokeDasharray=null,weight=100;attrs.IsDependency?(weight=10,strokeDasharray="1,5"):attrs._childGraph?strokeDasharray="5,5":isSpill?(weight=25,strokeDasharray="5,5,10,5"):spansSubgraph&&(weight=5,strokeDasharray="5,5"),e=new graph.Edge().sourceVertex(sourceV).targetVertex(targetV).sourceMarker("circle").targetMarker("arrow").weight(weight).strokeDasharray(strokeDasharray).text(label),this.edgesMap[edge._.Id]=e,this.rEdgesMap[e.id()]=edge}}return e}appendSubgraph(subgraph,hierarchy,subgraphs){const sg=this.createSubgraph(subgraph);subgraphs.push(sg);const parent=this.subgraphsMap[subgraph.parent._.Id];return parent&&hierarchy.push({parent,child:sg}),sg}appendVertex(vertex,hierarchy,vertices){const v=this.createVertex(vertex);vertices.push(v);const parent=this.subgraphsMap[vertex.parent._.Id];return parent&&hierarchy.push({parent,child:v}),v}appendEdge(edge,edges){const e=this.createEdge(edge);return e&&edges.push(e),e}filterLegend(graphDB){for(let i=graphDB.vertices.length-1;i>=0;--i){const vertex=graphDB.vertices[i],kind=vertex._.attr("Kind").RawValue;this._disabled[kind]&&vertex.remove(!1,(source,target)=>new comms.BaseScope({ScopeName:vertex._.ScopeName+":in",Id:source.Id+"->"+target.Id,ScopeType:"dummy-edge",Properties:{Property:[vertex._.attr("Label")]},Notes:{Note:[]},SinkActivity:""}))}}filterPartial(graphDB){for(const subgraph of graphDB.subgraphs)switch(this.subgraphsMap[subgraph._.Id].minState()){case"partial":const childVertices=subgraph.vertices,vShow=[],vHide=[];for(const vertex of childVertices)vertex.inEdges.length===0||vertex.inEdges.some(edge=>edge.source.parent!==edge.target.parent)||vertex.outEdges.length===0||vertex.outEdges.some(edge=>edge.source.parent!==edge.target.parent)?vShow.push(vertex):vHide.push(vertex);if(vHide.length>1){const dummyDetails={ScopeName:subgraph._.ScopeName,Id:subgraph._.Id+":dummy",ScopeType:"dummy",Properties:{Property:[{Name:"Activities",RawValue:""+vHide.length,Formatted:""+vHide.length,Measure:"count",Creator:"",CreatorType:""}]},Notes:{Note:[]},SinkActivity:""},dummyScope=new comms.BaseScope(dummyDetails),dummyVertex=subgraph.createVertex(dummyScope);for(const vertex of vHide){for(const edge of vertex.inEdges)if(vShow.indexOf(edge.source)>=0){const dummyEdgeScope=new comms.BaseScope({ScopeName:edge.source._.ScopeName,Id:edge.source._.Id+"->"+dummyVertex._.Id,ScopeType:"dummy-in",Properties:{Property:[]},Notes:{Note:[]},SinkActivity:""});subgraph.createEdge(edge.source,dummyVertex,dummyEdgeScope)}for(const edge of vertex.outEdges)if(vShow.indexOf(edge.target)>=0){const dummyEdgeScope=new comms.BaseScope({ScopeName:edge.target._.ScopeName,Id:dummyVertex._.Id+"->"+edge.target._.Id,ScopeType:"dummy-out",Properties:{Property:[]},Notes:{Note:[]},SinkActivity:""});subgraph.createEdge(dummyVertex,edge.target,dummyEdgeScope)}}vHide.forEach(vertex=>vertex.remove(!0))}break}}filterEmptySubgraphs(graphDB){for(;;){const emptySubgraphs=graphDB.subgraphs.filter(subgraph=>subgraph.subgraphs.length===0&&subgraph.vertices.length===0);if(emptySubgraphs.length===0)break;emptySubgraphs.forEach(subgraph=>subgraph.remove(!0))}}removeObsoleteSubgraphs(graphDB){for(const subgraph of[...graphDB.subgraphs])subgraph.vertices.length===0&&subgraph.remove(!1)}graphData(){const graphDB=this.graphDB.clone();return this.filterLegend(graphDB),this.filterPartial(graphDB),this.filterEmptySubgraphs(graphDB),this.removeObsoleteSubgraphs(graphDB),this.graphGui(graphDB)}calcLegend(){const retVal=[];for(const kind in this.kindMap)retVal.push({kind:parseInt(kind),faChar:faCharFactory(kind),label:this.kindMap[kind][0]._.attr("Label").RawValue.split(`
5
+ `)[0],count:this.kindMap[kind].length});return retVal}vertices(kind){const retVal=[];for(const v of this.kindMap[kind])retVal.push(this.verticesMap[v._.Id]);return retVal}formatRow(item,columns2,row){const attrs=item._.formattedAttrs();for(const key in attrs){const idx=columns2.indexOf(key);idx===-1?(columns2.push(key),row.push(attrs[key])):row[idx]=attrs[key]}for(let i=0;i<100;++i)row[i]===void 0&&(row[i]="");return row}activityData(){const columns2=["Id","Kind","Label"],data=this.graphDB.vertices.map(v=>{const row=[parseInt(v._.Id.split("a")[1])];return this.formatRow(v,columns2,row)});return{columns:columns2,data}}edgeData(){const columns2=["Id","Label"],data=this.graphDB.edges.map(e=>{const row=[e._.Id];return this.formatRow(e,columns2,row)});return{columns:columns2,data}}subgraphData(){const columns2=["Id","Label"],data=this.graphDB.subgraphs.map(sg=>{const row=[sg._.Id];return this.formatRow(sg,columns2,row)});return{columns:columns2,data}}calcGraphTooltip(item){let scope,parentScope;if(item instanceof graph.Subgraph){const subgraph=this.rSubgraphsMap[item.id()];scope=subgraph._,parentScope=subgraph.parent._}else if(item instanceof graph.Vertex||item instanceof common.Icon){const vertex=this.rVerticesMap[item.id()];scope=vertex._,parentScope=vertex.parent._}else if(item instanceof graph.Edge){const edge=this.rEdgesMap[item.id()];scope=edge._,parentScope=edge.parent._}return scope?scope.calcTooltip(parentScope):""}subgraph(id){return this.subgraphsMap[id]}vertex(id){return this.verticesMap[id]}edge(id){return this.edgesMap[id]}minClick(sg){}}class WUGraph extends layout.ChartPanel{constructor(){super();__publicField(this,"_partialAll",new common.Button().faChar("fa-window-restore").tooltip("Partial All").on("click",()=>{this.stateClick(this._partialAll)}));__publicField(this,"_maxAll",new common.Button().faChar("fa-window-maximize").tooltip("Max All").on("click",()=>{this.stateClick(this._maxAll)}));__publicField(this,"_toggleGraph",new common.ToggleButton().faChar("fa-chain").tooltip("Graph").selected(!0).on("click",()=>{this.viewClick(this._toggleGraph)}));__publicField(this,"_toggleActivities",new common.ToggleButton().faChar("fa-table").tooltip("Activitiies").selected(!1).on("click",()=>{this.viewClick(this._toggleActivities)}));__publicField(this,"_toggleEdges",new common.ToggleButton().faChar("fa-table").tooltip("Edges").selected(!1).on("click",()=>{this.viewClick(this._toggleEdges)}));__publicField(this,"_toggleSubgraphs",new common.ToggleButton().faChar("fa-table").tooltip("Subgraphs").selected(!1).on("click",()=>{this.viewClick(this._toggleSubgraphs)}));__publicField(this,"_graph",new graph.Graph().layout("Hierarchy").applyScaleOnLayout(!0).showToolbar(!1).allowDragging(!1));__publicField(this,"_activities",new dgrid.Table().pagination(!1));__publicField(this,"_edges",new dgrid.Table().pagination(!1));__publicField(this,"_subgraphs",new dgrid.Table().pagination(!1));__publicField(this,"_legend",new WUGraphLegend(this).on("click",kind=>{this.render()}).on("mouseover",kind=>{const verticesMap={};for(const vertex of this._gc.vertices(kind))verticesMap[vertex.id()]=!0;this._graph.highlightVerticies(verticesMap)}).on("mouseout",kind=>{this._graph.highlightVerticies()}));__publicField(this,"_view",new layout.Carousel().widgets([this._graph,this._activities,this._edges,this._subgraphs]));__publicField(this,"_gc",new WUScopeController);__publicField(this,"_prevHashSum");__publicField(this,"_prevScopeGraph");this.topOverlay(!1),this.widget(this._view);const buttons=[this._toggleGraph,this._toggleActivities,this._toggleEdges,this._toggleSubgraphs,new common.Spacer,this._partialAll,this._maxAll,new common.Spacer,...this._graph.iconBarButtons(),new common.Spacer];this.buttons(buttons.concat(this.buttons())),this._gc.minClick=sg=>{this.loadGraph(),this._graph.render(w=>{this._graph.selection([sg]).centerOnItem(sg)})},this._graph.tooltipHTML(v=>this._gc.calcGraphTooltip(v))}stateClick(sourceB){switch(sourceB){case this._partialAll:this._graph.data().subgraphs.forEach(sg=>{sg.minState("partial")});break;case this._maxAll:this._graph.data().subgraphs.forEach(sg=>{sg.minState("normal")});break}this.render()}viewClick(sourceTB){switch(this._toggleGraph.selected(sourceTB===this._toggleGraph),this._toggleActivities.selected(sourceTB===this._toggleActivities),this._toggleEdges.selected(sourceTB===this._toggleEdges),this._toggleSubgraphs.selected(sourceTB===this._toggleSubgraphs),sourceTB){case this._toggleGraph:this._view.active(0);break;case this._toggleActivities:this._view.active(1);break;case this._toggleEdges:this._view.active(2);break;case this._toggleSubgraphs:this._view.active(3);break}this.render(w=>{})}fetchScopeGraph(){const hash=util.hashSum({baseUrl:this.baseUrl(),wuid:this.wuid(),graphID:this.graphID(),subgraphID:this.subgraphID()});return!this._prevScopeGraph||this._prevHashSum!==hash?(this.startProgress(),this._prevHashSum=hash,this._gc.clear(),comms.Workunit.attach({baseUrl:this.baseUrl()},this.wuid()).fetchGraphs().then(graphs=>{for(const graph2 of graphs)if(graph2.Name===this.graphID())return this.finishProgress(),graph2.fetchScopeGraph(this.subgraphID())}).then(scopeGraph=>(this._prevScopeGraph=scopeGraph,this._prevScopeGraph))):Promise.resolve(this._prevScopeGraph)}enter(domNode,_element){super.enter(domNode,_element)}update(domNode,element){super.update(domNode,element)}exit(domNode,element){super.exit(domNode,element)}loadGraph(){this._gc.disabled(this._legend.disabled()),this._graph.data(this._gc.graphData(),!0);{const{columns:columns2,data}=this._gc.activityData();this._activities.columns(columns2).data(data)}{const{columns:columns2,data}=this._gc.edgeData();this._edges.columns(columns2).data(data)}{const{columns:columns2,data}=this._gc.subgraphData();this._subgraphs.columns(columns2).data(data)}}render(callback){return this.wuid()&&this.graphID()?this.fetchScopeGraph().then(scopedGraph=>{this._gc.set(scopedGraph),this._legend.data(this._gc.calcLegend()),this.loadGraph(),super.render(callback)}):super.render(callback),this}selection(_){if(!arguments.length)return this._graph.selection();const item=this._gc.vertex(_)||this._gc.edge(_)||this._gc.subgraph(_);return item&&this._graph.selection([item]),this}}WUGraph.prototype._class+=" eclwatch_WUGraph",WUGraph.prototype.publish("baseUrl","","string","HPCC Platform Base URL"),WUGraph.prototype.publish("wuid","","string","Workunit ID"),WUGraph.prototype.publish("graphID","","string","Graph ID"),WUGraph.prototype.publish("subgraphID","","string","Subgraph ID");function entitiesEncode(str){return String(str).replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;")}function safeEncode(item){switch(Object.prototype.toString.call(item)){case"[object Undefined]":case"[object Boolean]":case"[object Number]":return item;case"[object String]":return entitiesEncode(item);default:console.warn("Unknown cell type: "+Object.prototype.toString.call(item))}return item}class Store{constructor(wuResult,schema,renderHtml,filter={}){__publicField(this,"wuResult");__publicField(this,"schema");__publicField(this,"_columns");__publicField(this,"_cache",{});__publicField(this,"rowFormatter");__publicField(this,"_filter",{});this.wuResult=wuResult,this.schema=schema,this._columns=this.schema2Columns(this.schema.root),this.rowFormatter=new dgrid.RowFormatter(this._columns,renderHtml),this._filter=filter}columns(){return this._columns}schema2Columns(parentNode,prefix=""){return parentNode?parentNode.children().filter(node=>node.name.indexOf("__hidden",node.name.length-8)===-1).map((node,idx)=>{const label=node.name,keyed=node.attrs["hpcc:keyed"],column={field:prefix+label,leafID:label,idx,label:label+(keyed?" (i)":""),className:"resultGridCell",sortable:!1,width:keyed?16:0,isSet:node.isSet},children=this.schema2Columns(node,prefix+label+"_");return children.length?(column.width+=10+children.reduce((prev,childNode)=>prev+childNode.width,0),column.children=children):(column.width+=node.charWidth()*9,column.formatter=(cell,row)=>{switch(typeof cell){case"string":return{html:cell.replace(/\t/g,"&nbsp;&nbsp;&nbsp;&nbsp;").trim()};case"undefined":return""}return cell}),column}):[]}isChildDataset(cell){if(Object.prototype.toString.call(cell)!=="[object Object]")return!1;let propCount=0,firstPropType=null;for(const key in cell)firstPropType||(firstPropType=Object.prototype.toString.call(cell[key])),propCount++;return propCount===1&&firstPropType==="[object Array]"}rowToTable(cell,__row,node){if(this.isChildDataset(cell)){for(const key in cell)this.rowToTable(cell[key],__row,node);return}const table=dgrid.domConstruct.create("table",{border:1,cellspacing:0,width:"100%"},node);switch(Object.prototype.toString.call(cell)){case"[object Object]":let tr=dgrid.domConstruct.create("tr",null,table);for(const key in cell)dgrid.domConstruct.create("th",{innerHTML:safeEncode(key)},tr);tr=dgrid.domConstruct.create("tr",null,table);for(const key in cell)switch(Object.prototype.toString.call(cell[key])){case"[object Object]":case"[object Array]":this.rowToTable(cell[key],__row,node);break;default:dgrid.domConstruct.create("td",{innerHTML:safeEncode(cell[key])},tr);break}break;case"[object Array]":for(let i=0;i<cell.length;++i)switch(Object.prototype.toString.call(cell[i])){case"[object Boolean]":case"[object Number]":case"[object String]":const tr1=dgrid.domConstruct.create("tr",null,table);dgrid.domConstruct.create("td",{innerHTML:safeEncode(cell[i])},tr1);break;default:if(i===0){const tr2=dgrid.domConstruct.create("tr",null,table);for(const key in cell[i])dgrid.domConstruct.create("th",{innerHTML:safeEncode(key)},tr2)}dgrid.domConstruct.create("tr",null,table);for(const key in cell[i])if(cell[i][key])if(Object.prototype.toString.call(cell[i][key])==="[object Object]"||Object.prototype.toString.call(cell[i][key])==="[object Array]"){const td=dgrid.domConstruct.create("td",null,tr1);this.rowToTable(cell[i][key],cell[i],td)}else if(key.indexOf("__html",key.length-6)!==-1)dgrid.domConstruct.create("td",{innerHTML:cell[i][key]},tr1);else if(key.indexOf("__javascript",key.length-12)!==-1)dgrid.domConstruct.create("td",null,tr1);else{const val=cell[i][key];dgrid.domConstruct.create("td",{innerHTML:safeEncode(val)},tr1)}else dgrid.domConstruct.create("td",{innerHTML:""},tr1)}break}}getIdentity(row){return row.__hpcc_id}_request(start,end){if(!this.wuResult)return Promise.resolve({totalLength:0,data:[]});const cacheKey=`${start}->${end}`;if(this._cache[cacheKey])return this._cache[cacheKey];const retVal=this.wuResult.fetchRows(start,end-start,!1,this._filter).then(rows=>({totalLength:this.wuResult.Total,data:rows.map((row,idx)=>{const formattedRow=this.rowFormatter.format(row);return formattedRow.__hpcc_id=start+idx,formattedRow.__hpcc_orig=row,formattedRow})}));return this._cache[cacheKey]=retVal,retVal}fetchRange(options){const retVal=new dgrid.Deferred;return this._request(options.start,options.end).then(response=>retVal.resolve(response)),new dgrid.QueryResults(retVal.then(response=>response.data),{totalLength:retVal.then(response=>response.totalLength)})}}class WUResult extends dgrid.Common{constructor(){super();__publicField(this,"_result");__publicField(this,"_localStore");__publicField(this,"_prevResultHash");__publicField(this,"_prevStoreHash");__publicField(this,"_prevQueryHash");this.renderHtml(!1)}hashSum(opts={}){return util.hashSum({baseUrl:this.baseUrl(),wuid:this.wuid(),resultName:this.resultName(),sequence:this.sequence(),nodeGroup:this.nodeGroup(),logicalFile:this.logicalFile(),userID:this.user(),password:this.password(),...opts})}calcResult(){const resultHash=this.hashSum();if(this._prevResultHash!==resultHash){this._prevResultHash=resultHash;const opts={baseUrl:this.baseUrl(),userID:this.user(),password:this.password()};this.wuid()&&this.resultName()?this._result=comms.Result.attach(opts,this.wuid(),this.resultName()):this.wuid()&&this.sequence()!==void 0?this._result=comms.Result.attach(opts,this.wuid(),this.sequence()):this.logicalFile()&&this.nodeGroup()?this._result=comms.Result.attachLogicalFile(opts,this.nodeGroup(),this.logicalFile()):this.logicalFile()&&(this._result=comms.Result.attachLogicalFile(opts,"",this.logicalFile()))}return this._result}fetch(row,count,abortController=new AbortController){const result=this.calcResult();return result?result.fetchRows(row,count,!1,{},abortController.signal):Promise.resolve([])}update(domNode,element){super.update(domNode,element);const storeHash=this.hashSum({renderHtml:this.renderHtml(),filter:this.filter()});if(this._prevStoreHash!==storeHash){this._prevStoreHash=storeHash;const result=this.calcResult();result&&result.fetchXMLSchema().then(schema=>{var _a,_b;this._localStore=new Store(result,schema,this.renderHtml(),this.filter()),(_a=this._dgrid)==null||_a.set("columns",this._localStore.columns()),(_b=this._dgrid)==null||_b.set("collection",this._localStore)})}}click(row,col,sel){}}WUResult.prototype._class+=" eclwatch_WUResult",WUResult.prototype.publish("baseUrl","","string","URL to WsWorkunits"),WUResult.prototype.publish("user","","string","User ID"),WUResult.prototype.publish("password","","string","Password"),WUResult.prototype.publish("wuid","","string","Workunit ID"),WUResult.prototype.publish("resultName","","string","Result Name"),WUResult.prototype.publish("sequence",void 0,"number","Sequence Number"),WUResult.prototype.publish("nodeGroup","","string","NodeGroup"),WUResult.prototype.publish("logicalFile","","string","Logical File Name"),WUResult.prototype.publish("filter",{},"object","Filter");var STATUS=(STATUS2=>(STATUS2.CREATE="Created",STATUS2.COMPILE="Compiled",STATUS2.EXECUTE="Executed",STATUS2.COMPLETE="Completed",STATUS2))(STATUS||{}),STATUS_ACTIVE=(STATUS_ACTIVE2=>(STATUS_ACTIVE2.CREATE="Creating",STATUS_ACTIVE2.COMPILE="Compiling",STATUS_ACTIVE2.EXECUTE="Executing",STATUS_ACTIVE2.COMPLETE="Completed",STATUS_ACTIVE2))(STATUS_ACTIVE||{});class WUStatus extends graph.Graph{constructor(){super();__publicField(this,"_wu");__publicField(this,"_wuHandle");__publicField(this,"_create");__publicField(this,"_compile");__publicField(this,"_execute");__publicField(this,"_complete");__publicField(this,"_prevHash");this.zoomable(!1).zoomToFitLimit(1).layout("Hierarchy").hierarchyRankDirection("LR").showToolbar(!1).allowDragging(!1)}attachWorkunit(){const hash=util.hashSum({baseUrl:this.baseUrl(),wuid:this.wuid()});this._prevHash!==hash&&(this._prevHash=hash,this._wu=comms.Workunit.attach({baseUrl:this.baseUrl()},this.wuid()),this._wuHandle&&this._wuHandle.release(),this._wuHandle=this._wu.watch(changes=>{this.lazyRender()}))}createVertex(faChar){return new graph.Vertex().icon_diameter(32).icon_shape_colorFill("none").icon_shape_colorStroke("none").icon_image_colorFill("darkgray").iconAnchor("middle").textbox_shape_colorFill("none").textbox_shape_colorStroke("none").textbox_text_colorFill("darkgray").faChar(faChar)}updateVertex(vertex,color){vertex.icon_image_colorFill(color).textbox_text_colorFill(color)}updateVertexStatus(level,active=!1){const completeColor=this._wu.isFailed()?"darkred":"darkgreen";switch(this._create.text("Created"),this._compile.text("Compiled"),this._execute.text("Executed"),this._complete.text("Completed"),level){case 0:this.updateVertex(this._create,"darkgray"),this.updateVertex(this._compile,"darkgray"),this.updateVertex(this._execute,"darkgray"),this.updateVertex(this._complete,"darkgray");break;case 1:this._create.text("Creating"),this.updateVertex(this._create,active?"orange":completeColor),this.updateVertex(this._compile,"darkgray"),this.updateVertex(this._execute,"darkgray"),this.updateVertex(this._complete,"darkgray");break;case 2:this._compile.text("Compiling"),this.updateVertex(this._create,completeColor),this.updateVertex(this._compile,active?"orange":completeColor),this.updateVertex(this._execute,completeColor),this.updateVertex(this._complete,"darkgray");break;case 3:this._execute.text("Executing"),this.updateVertex(this._create,completeColor),this.updateVertex(this._compile,completeColor),this.updateVertex(this._execute,active?"orange":completeColor),this.updateVertex(this._complete,"darkgray");break;case 4:this.updateVertex(this._create,completeColor),this.updateVertex(this._compile,completeColor),this.updateVertex(this._execute,completeColor),this.updateVertex(this._complete,completeColor);break}}createEdge(source,target){return new graph.Edge().sourceVertex(source).targetVertex(target).strokeColor("black").showArc(!1)}enter(domNode,element){super.enter(domNode,element),this._create=this.createVertex(""),this._compile=this.createVertex(""),this._execute=this.createVertex(""),this._complete=this.createVertex("");const e1=this.createEdge(this._create,this._compile),e2=this.createEdge(this._compile,this._execute),e3=this.createEdge(this._execute,this._complete);this.data({vertices:[this._create,this._compile,this._execute,this._complete],edges:[e1,e2,e3]})}update(domNode,element){switch(this.attachWorkunit(),this._wu.StateID){case comms.WUStateID.Blocked:case comms.WUStateID.Wait:case comms.WUStateID.Scheduled:case comms.WUStateID.UploadingFiled:this.updateVertexStatus(1);break;case comms.WUStateID.Compiling:this.updateVertexStatus(2,!0);break;case comms.WUStateID.Submitted:this.updateVertexStatus(1,!0);break;case comms.WUStateID.Compiled:this.updateVertexStatus(2);break;case comms.WUStateID.Aborting:case comms.WUStateID.Running:this.updateVertexStatus(3,!0);break;case comms.WUStateID.Aborted:case comms.WUStateID.Archived:case comms.WUStateID.Completed:this.updateVertexStatus(4);break;case comms.WUStateID.Failed:this.updateVertexStatus(4,!1);break;case comms.WUStateID.DebugPaused:case comms.WUStateID.DebugRunning:case comms.WUStateID.Paused:case comms.WUStateID.Unknown:default:this.updateVertexStatus(0);break}super.update(domNode,element),this.zoomToFit()}exit(domNode,element){this._wuHandle&&this._wuHandle.release(),super.exit(domNode,element)}}WUStatus.prototype._class+=" eclwatch_WUStatus",WUStatus.prototype.publish("baseUrl","","string","HPCC Platform Base URL"),WUStatus.prototype.publish("wuid","","string","Workunit ID");const columns=["label","start","end","icon","color","series"];class WUTimeline extends timeline.ReactTimelineSeries{constructor(){super();__publicField(this,"_palette",common.Palette.ordinal("default"));__publicField(this,"_prevHashSum");this.columns(columns).titleColumn("label").iconColumn("icon").colorColumn("color").seriesColumn("series").timePattern("%Y-%m-%dT%H:%M:%S.%LZ").tickFormat("%H:%M").tooltipTimeFormat("%H:%M:%S.%L").tooltipHTML(d=>d[columns.length].calcTooltip())}clear(){return delete this._prevHashSum,this}fetchScopes(){const hash=util.hashSum({baseUrl:this.baseUrl(),wuid:this.wuid(),request:this.request()});this._prevHashSum!==hash&&(this._prevHashSum=hash,comms.Workunit.attach({baseUrl:this.baseUrl()},this.wuid()).fetchDetails(this.request()).then(scopes=>scopes.filter(scope=>scope.Id&&scope.attr("WhenStarted").RawValue).map(scope=>{const whenStarted=+scope.attr("WhenStarted").RawValue/1e3,timeElapsed=+scope.attr("TimeElapsed").RawValue/1e6;return[scope.Id,new Date(whenStarted).toISOString(),timeElapsed?new Date(whenStarted+timeElapsed).toISOString():void 0,null,this._palette(scope.ScopeType),scope.ScopeName.split("::").join(":").split(":").slice(0,1),scope]})).then(scopes=>{this.data(scopes).render()}))}enter(domNode,_element){super.enter(domNode,_element)}update(domNode,element){this.fetchScopes(),super.update(domNode,element)}exit(domNode,element){super.exit(domNode,element)}}WUTimeline.prototype._class+=" eclwatch_WUTimeline",WUTimeline.prototype.publish("baseUrl","","string","HPCC Platform Base URL"),WUTimeline.prototype.publish("wuid","","string","Workunit ID"),WUTimeline.prototype.publish("request",{ScopeFilter:{MaxDepth:3,ScopeTypes:["graph","subgraph"]},NestedFilter:{Depth:0,ScopeTypes:[]},PropertiesToReturn:{AllProperties:!1,AllStatistics:!0,AllHints:!1,Properties:["WhenStarted","TimeElapsed"]},ScopeOptions:{IncludeId:!0,IncludeScope:!0,IncludeScopeType:!0},PropertyOptions:{IncludeName:!0,IncludeRawValue:!0,IncludeFormatted:!0,IncludeMeasure:!0,IncludeCreator:!1,IncludeCreatorType:!1}},"object","WUDetails Request"),exports2.BUILD_VERSION=BUILD_VERSION,exports2.ECLArchiveViewer=ECLArchiveViewer,exports2.PKG_NAME=PKG_NAME,exports2.PKG_VERSION=PKG_VERSION,exports2.STATUS=STATUS,exports2.STATUS_ACTIVE=STATUS_ACTIVE,exports2.WUGraph=WUGraph,exports2.WUResult=WUResult,exports2.WUScopeController=WUScopeController,exports2.WUStatus=WUStatus,exports2.WUTimeline=WUTimeline,Object.defineProperty(exports2,Symbol.toStringTag,{value:"Module"})});
6
+ //# sourceMappingURL=index.umd.cjs.map