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