@hpcc-js/eclwatch 3.2.20 → 3.3.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 +122 -88
- package/dist/index.js.map +1 -1
- package/dist/index.umd.cjs +1 -1
- package/dist/index.umd.cjs.map +1 -1
- package/package.json +11 -11
- package/src/WUResult.ts +8 -0
- package/types/WUResult.d.ts +2 -0
package/dist/index.umd.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.umd.cjs","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 { Exception, 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, \"&\").replace(/</g, \"<\").replace(/>/g, \">\").replace(/\"/g, \""\");\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 private onError?: (msg: string) => void;\n\n constructor(wuResult: Result, schema: XSDSchema, renderHtml: boolean, filter: ResultFilter = {}, onError?: (msg: string) => void) {\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 this.onError = onError;\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, \" \").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 }).catch((err: Exception) => {\n this.onError(err.Message || \"An exception has occurred\");\n return { totalLength: 0, data: [] };\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(), (msg) => {\n if (this._dgrid) {\n this._dgrid.noDataMessage = `<span class='dojoxGridNoData'>${msg}</span>`;\n this._dgrid.refresh();\n }\n });\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":["_ECLArchiveViewer","SplitPanel","constructor","super","__publicField","this","DirectoryTree","Editor","text","_directoryPane","rowClick","_fileEditorPane","render","transformArchiveTreeData","json","ret","label","name","children","_children","map","transformNode","filter","n","content","JSON","stringify","node","_node","key","length","trim","updateDirectoryPane","contentStr","parse","e","xml2json","_data","data","enter","domNode","element","addWidget","update","hash","hashSum","baseUrl","wuid","_prevHash","_contentStr","Workunit","attach","fetchArchive","then","resp","relativeSizes","directoryWidthRatio","__name","ECLArchiveViewer","prototype","_class","publish","publishProxy","_LegendVertex","Vertex","_icon","on","click","kind","LegendVertex","_WUGraphLegend","Legend","arguments","d3Local","disabled","_","retVal","_disabled2","push","forEach","toggle","context","items","_g","selectAll","d","append","attr","each","icon","set","target","textbox_shape_colorStroke","textbox_shape_colorFill","iconAnchor","faChar","count","tooltip","mouseover","mouseout","merge","i","bbox","get","icon_shape_colorFill","getBBox","d3Select","width","exit","remove","height","WUGraphLegend","faCharFactory","_WUScopeController","clear","subgraphsMap","rSubgraphsMap","verticesMap","rVerticesMap","edgesMap","rEdgesMap","masterGraph","graphDB","graphGui","kindMap","walk","item","UtilSubgraph","UtilVertex","RawValue","_disabled","subgraphs","vertices","edges","hierarchy","subgraph","appendSubgraph","showMinMax","minState","appendVertex","UtilEdge","appendEdge","format","labelTpl","obj","lpos","indexOf","rpos","substring","console","warn","split","join","createSubgraph","sg","Id","Subgraph","title","minClick","id","createVertex","vertex","v","attrs","rawAttrs","ScopeType","parent","Icon","shape_colorFill","shape_colorStroke","image_colorFill","icon_image_colorFill","annotations","hasAttr","annotationIcons","isSpill","edge","sourceKind","source","targetKind","spansSubgraph","createEdge","sourceV","targetV","strokeDasharray","weight","Edge","sourceVertex","targetVertex","sourceMarker","targetMarker","child","filterLegend","BaseScope","ScopeName","Properties","Property","Notes","Note","SinkActivity","filterPartial","childVertices","vShow","vHide","inEdges","some","outEdges","dummyDetails","Name","Formatted","Measure","Creator","CreatorType","dummyScope","dummyVertex","dummyEdgeScope","filterEmptySubgraphs","emptySubgraphs","removeObsoleteSubgraphs","graphData","clone","calcLegend","parseInt","formatRow","columns","row","formattedAttrs","idx","activityData","edgeData","subgraphData","calcGraphTooltip","scope","parentScope","calcTooltip","WUScopeController","_WUGraph","ChartPanel","Button","stateClick","_partialAll","_maxAll","ToggleButton","selected","viewClick","_toggleGraph","_toggleActivities","_toggleEdges","_toggleSubgraphs","GraphWidget","layout","applyScaleOnLayout","showToolbar","allowDragging","Table","pagination","_gc","_graph","highlightVerticies","Carousel","widgets","_activities","_edges","_subgraphs","topOverlay","widget","_view","buttons","Spacer","iconBarButtons","concat","loadGraph","w","selection","centerOnItem","tooltipHTML","sourceB","sourceTB","active","fetchScopeGraph","graphID","subgraphID","_prevScopeGraph","_prevHashSum","startProgress","fetchGraphs","graphs","graph","finishProgress","scopeGraph","Promise","resolve","_element","_legend","callback","scopedGraph","WUGraph","entitiesEncode","str","String","replace","safeEncode","Object","toString","call","_Store","wuResult","schema","renderHtml","onError","_columns","schema2Columns","root","rowFormatter","RowFormatter","_filter","parentNode","prefix","keyed","column","field","leafID","className","sortable","isSet","reduce","prev","childNode","charWidth","formatter","cell","html","isChildDataset","propCount","firstPropType","rowToTable","__row","table","domConstruct","create","border","cellspacing","tr","innerHTML","tr1","tr2","td","val","getIdentity","__hpcc_id","_request","start","end","totalLength","cacheKey","_cache","fetchRows","rows","Total","formattedRow","__hpcc_orig","catch","err","Message","fetchRange","options","Deferred","response","QueryResults","Store","_WUResult","Common","opts","resultName","sequence","nodeGroup","logicalFile","userID","user","password","calcResult","resultHash","_prevResultHash","_result","Result","attachLogicalFile","fetch","abortController","AbortController","result","signal","storeHash","_prevStoreHash","fetchXMLSchema","_localStore","msg","_dgrid","noDataMessage","refresh","_a","_b","col","sel","WUResult","STATUS","STATUS_ACTIVE","_WUStatus","Graph","zoomable","zoomToFitLimit","hierarchyRankDirection","attachWorkunit","_wu","_wuHandle","release","watch","changes","lazyRender","icon_diameter","icon_shape_colorStroke","textbox_text_colorFill","updateVertex","color","updateVertexStatus","level","completeColor","isFailed","_create","_compile","_execute","_complete","strokeColor","showArc","e1","e2","e3","StateID","WUStateID","Blocked","Wait","Scheduled","UploadingFiled","Compiling","Submitted","Compiled","Aborting","Running","Aborted","Archived","Completed","Failed","DebugPaused","DebugRunning","Paused","Unknown","zoomToFit","WUStatus","_WUTimeline","ReactTimelineSeries","Palette","ordinal","titleColumn","iconColumn","colorColumn","seriesColumn","timePattern","tickFormat","tooltipTimeFormat","fetchScopes","request","fetchDetails","scopes","whenStarted","timeElapsed","Date","toISOString","_palette","slice","WUTimeline","ScopeFilter","MaxDepth","ScopeTypes","NestedFilter","Depth","PropertiesToReturn","AllProperties","AllStatistics","AllHints","ScopeOptions","IncludeId","IncludeScope","IncludeScopeType","PropertyOptions","IncludeName","IncludeRawValue","IncludeFormatted","IncludeMeasure","IncludeCreator","IncludeCreatorType"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.umd.cjs","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 { Exception, 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, \"&\").replace(/</g, \"<\").replace(/>/g, \">\").replace(/\"/g, \""\");\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 private onError?: (msg: string) => void;\n\n constructor(wuResult: Result, schema: XSDSchema, renderHtml: boolean, filter: ResultFilter = {}, onError?: (msg: string) => void) {\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 this.onError = onError;\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, \" \").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 }).catch((err: Exception) => {\n this.onError(err.Message || \"An exception has occurred\");\n return { totalLength: 0, data: [] };\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 bypassCache: this.bypassCache(),\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 if (this._result && this.bypassCache()) {\n this._result.bypassCache(this.bypassCache());\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(), (msg) => {\n if (this._dgrid) {\n this._dgrid.noDataMessage = `<span class='dojoxGridNoData'>${msg}</span>`;\n this._dgrid.refresh();\n }\n });\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 bypassCache(): boolean;\n bypassCache(_: boolean): 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\");\nWUResult.prototype.publish(\"bypassCache\", false, \"boolean\", \"Bypass cached results\");\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":["_ECLArchiveViewer","SplitPanel","_prevHash","_contentStr","_directoryPane","DirectoryTree","_fileEditorPane","Editor","text","constructor","super","this","rowClick","render","transformArchiveTreeData","json","ret","label","name","children","_children","map","transformNode","filter","n","content","JSON","stringify","node","_node","key","length","trim","updateDirectoryPane","contentStr","parse","e","xml2json","_data","data","enter","domNode","element","addWidget","update","hash","hashSum","baseUrl","wuid","Workunit","attach","fetchArchive","then","resp","relativeSizes","directoryWidthRatio","__name","ECLArchiveViewer","prototype","_class","publish","publishProxy","_LegendVertex","Vertex","_icon","on","click","kind","LegendVertex","_WUGraphLegend","Legend","icon","d3Local","_disabled2","disabled","_","arguments","retVal","push","forEach","toggle","context","items","_g","selectAll","d","append","attr","each","set","target","textbox_shape_colorStroke","textbox_shape_colorFill","iconAnchor","faChar","count","tooltip","mouseover","mouseout","merge","i","bbox","get","icon_shape_colorFill","getBBox","d3Select","width","exit","remove","height","WUGraphLegend","faCharFactory","_WUScopeController","graphDB","subgraphsMap","rSubgraphsMap","verticesMap","rVerticesMap","edgesMap","rEdgesMap","kindMap","_disabled","clear","masterGraph","graphGui","walk","item","UtilSubgraph","UtilVertex","RawValue","subgraphs","vertices","edges","hierarchy","subgraph","appendSubgraph","showMinMax","minState","appendVertex","UtilEdge","appendEdge","format","labelTpl","obj","lpos","indexOf","rpos","substring","console","warn","split","join","createSubgraph","sg","Id","Subgraph","title","minClick","id","createVertex","vertex","v","attrs","rawAttrs","ScopeType","parent","Icon","shape_colorFill","shape_colorStroke","image_colorFill","icon_image_colorFill","annotations","hasAttr","annotationIcons","isSpill","edge","sourceKind","source","targetKind","spansSubgraph","createEdge","sourceV","targetV","strokeDasharray","weight","Edge","sourceVertex","targetVertex","sourceMarker","targetMarker","child","filterLegend","BaseScope","ScopeName","Properties","Property","Notes","Note","SinkActivity","filterPartial","childVertices","vShow","vHide","inEdges","some","outEdges","dummyDetails","Name","Formatted","Measure","Creator","CreatorType","dummyScope","dummyVertex","dummyEdgeScope","filterEmptySubgraphs","emptySubgraphs","removeObsoleteSubgraphs","graphData","clone","calcLegend","parseInt","formatRow","columns","row","formattedAttrs","idx","activityData","edgeData","subgraphData","calcGraphTooltip","scope","parentScope","calcTooltip","WUScopeController","_WUGraph","ChartPanel","_partialAll","Button","stateClick","_maxAll","_toggleGraph","ToggleButton","selected","viewClick","_toggleActivities","_toggleEdges","_toggleSubgraphs","_graph","GraphWidget","layout","applyScaleOnLayout","showToolbar","allowDragging","_activities","Table","pagination","_edges","_subgraphs","_legend","_gc","highlightVerticies","_view","Carousel","widgets","topOverlay","widget","buttons","Spacer","iconBarButtons","concat","loadGraph","w","selection","centerOnItem","tooltipHTML","sourceB","sourceTB","active","_prevHashSum","_prevScopeGraph","fetchScopeGraph","graphID","subgraphID","startProgress","fetchGraphs","graphs","graph","finishProgress","scopeGraph","Promise","resolve","_element","callback","scopedGraph","WUGraph","entitiesEncode","str","String","replace","safeEncode","Object","toString","call","_Store","wuResult","schema","_columns","_cache","rowFormatter","_filter","onError","renderHtml","schema2Columns","root","RowFormatter","parentNode","prefix","keyed","column","field","leafID","className","sortable","isSet","reduce","prev","childNode","charWidth","formatter","cell","html","isChildDataset","propCount","firstPropType","rowToTable","__row","table","domConstruct","create","border","cellspacing","tr","innerHTML","tr1","tr2","td","val","getIdentity","__hpcc_id","_request","start","end","totalLength","cacheKey","fetchRows","rows","Total","formattedRow","__hpcc_orig","catch","err","Message","fetchRange","options","Deferred","response","QueryResults","Store","_WUResult","Common","_result","_localStore","opts","resultName","sequence","nodeGroup","logicalFile","userID","user","password","bypassCache","_prevResultHash","calcResult","resultHash","Result","attachLogicalFile","fetch","abortController","AbortController","result","signal","_prevStoreHash","_prevQueryHash","storeHash","fetchXMLSchema","msg","_dgrid","noDataMessage","refresh","col","sel","WUResult","STATUS","STATUS_ACTIVE","_WUStatus","Graph","_wu","_wuHandle","_create","_compile","_execute","_complete","zoomable","zoomToFitLimit","hierarchyRankDirection","attachWorkunit","release","watch","changes","lazyRender","icon_diameter","icon_shape_colorStroke","textbox_text_colorFill","updateVertex","color","updateVertexStatus","level","completeColor","isFailed","strokeColor","showArc","e1","e2","e3","StateID","WUStateID","Blocked","Wait","Scheduled","UploadingFiled","Compiling","Submitted","Compiled","Aborting","Running","Aborted","Archived","Completed","Failed","DebugPaused","DebugRunning","Paused","Unknown","zoomToFit","WUStatus","_WUTimeline","ReactTimelineSeries","_palette","Palette","ordinal","titleColumn","iconColumn","colorColumn","seriesColumn","timePattern","tickFormat","tooltipTimeFormat","fetchScopes","request","fetchDetails","scopes","whenStarted","timeElapsed","Date","toISOString","slice","WUTimeline","ScopeFilter","MaxDepth","ScopeTypes","NestedFilter","Depth","PropertiesToReturn","AllProperties","AllStatistics","AllHints","ScopeOptions","IncludeId","IncludeScope","IncludeScopeType","PropertyOptions","IncludeName","IncludeRawValue","IncludeFormatted","IncludeMeasure","IncludeCreator","IncludeCreatorType"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@hpcc-js/eclwatch",
|
|
3
|
-
"version": "3.
|
|
3
|
+
"version": "3.3.0",
|
|
4
4
|
"description": "hpcc-js - ECL Watch",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.umd.cjs",
|
|
@@ -37,19 +37,19 @@
|
|
|
37
37
|
"update-major": "npx --yes npm-check-updates -u"
|
|
38
38
|
},
|
|
39
39
|
"dependencies": {
|
|
40
|
-
"@hpcc-js/codemirror": "^3.
|
|
41
|
-
"@hpcc-js/common": "^3.
|
|
42
|
-
"@hpcc-js/comms": "^3.
|
|
43
|
-
"@hpcc-js/dgrid": "^3.
|
|
44
|
-
"@hpcc-js/graph": "^3.
|
|
45
|
-
"@hpcc-js/layout": "^3.2.
|
|
46
|
-
"@hpcc-js/phosphor": "^3.2.
|
|
40
|
+
"@hpcc-js/codemirror": "^3.5.0",
|
|
41
|
+
"@hpcc-js/common": "^3.4.0",
|
|
42
|
+
"@hpcc-js/comms": "^3.8.0",
|
|
43
|
+
"@hpcc-js/dgrid": "^3.3.0",
|
|
44
|
+
"@hpcc-js/graph": "^3.4.0",
|
|
45
|
+
"@hpcc-js/layout": "^3.2.11",
|
|
46
|
+
"@hpcc-js/phosphor": "^3.2.11",
|
|
47
47
|
"@hpcc-js/timeline": "^3.0.0",
|
|
48
48
|
"@hpcc-js/tree": "^3.0.0",
|
|
49
|
-
"@hpcc-js/util": "^3.3.
|
|
49
|
+
"@hpcc-js/util": "^3.3.10"
|
|
50
50
|
},
|
|
51
51
|
"devDependencies": {
|
|
52
|
-
"@hpcc-js/esbuild-plugins": "^1.
|
|
52
|
+
"@hpcc-js/esbuild-plugins": "^1.5.0",
|
|
53
53
|
"d3-selection": "^1"
|
|
54
54
|
},
|
|
55
55
|
"repository": {
|
|
@@ -63,5 +63,5 @@
|
|
|
63
63
|
"url": "https://github.com/hpcc-systems/Visualization/issues"
|
|
64
64
|
},
|
|
65
65
|
"homepage": "https://github.com/hpcc-systems/Visualization",
|
|
66
|
-
"gitHead": "
|
|
66
|
+
"gitHead": "e0dd2c2201ba3d9bd92665026ef38e3220065a9c"
|
|
67
67
|
}
|
package/src/WUResult.ts
CHANGED
|
@@ -23,6 +23,7 @@ export class WUResult extends Common {
|
|
|
23
23
|
logicalFile: this.logicalFile(),
|
|
24
24
|
userID: this.user(),
|
|
25
25
|
password: this.password(),
|
|
26
|
+
bypassCache: this.bypassCache(),
|
|
26
27
|
...opts
|
|
27
28
|
});
|
|
28
29
|
}
|
|
@@ -47,6 +48,10 @@ export class WUResult extends Common {
|
|
|
47
48
|
} else if (this.logicalFile()) {
|
|
48
49
|
this._result = Result.attachLogicalFile(opts, "", this.logicalFile());
|
|
49
50
|
}
|
|
51
|
+
|
|
52
|
+
if (this._result && this.bypassCache()) {
|
|
53
|
+
this._result.bypassCache(this.bypassCache());
|
|
54
|
+
}
|
|
50
55
|
}
|
|
51
56
|
return this._result;
|
|
52
57
|
}
|
|
@@ -109,6 +114,8 @@ export interface WUResult {
|
|
|
109
114
|
logicalFile(_: string): this;
|
|
110
115
|
filter(): ResultFilter;
|
|
111
116
|
filter(_: ResultFilter): this;
|
|
117
|
+
bypassCache(): boolean;
|
|
118
|
+
bypassCache(_: boolean): this;
|
|
112
119
|
}
|
|
113
120
|
|
|
114
121
|
WUResult.prototype.publish("baseUrl", "", "string", "URL to WsWorkunits");
|
|
@@ -120,3 +127,4 @@ WUResult.prototype.publish("sequence", undefined, "number", "Sequence Number");
|
|
|
120
127
|
WUResult.prototype.publish("nodeGroup", "", "string", "NodeGroup");
|
|
121
128
|
WUResult.prototype.publish("logicalFile", "", "string", "Logical File Name");
|
|
122
129
|
WUResult.prototype.publish("filter", {}, "object", "Filter");
|
|
130
|
+
WUResult.prototype.publish("bypassCache", false, "boolean", "Bypass cached results");
|