@hpcc-js/other 3.1.1 → 3.2.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.map CHANGED
@@ -1,7 +1 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../node_modules/javascript-autocomplete/auto-complete.js", "../../../node_modules/simpleheat/simpleheat.js", "../src/__package__.ts", "../src/Audio.ts", "../../../node_modules/d3-timer/src/timer.js", "../src/AutoCompleteText.ts", "../src/AutoCompleteText.css", "../src/CalendarHeatMap.ts", "../../../node_modules/d3-time/src/interval.js", "../../../node_modules/d3-time/src/duration.js", "../../../node_modules/d3-time/src/day.js", "../../../node_modules/d3-time/src/week.js", "../../../node_modules/d3-time/src/month.js", "../../../node_modules/d3-time/src/year.js", "../src/CalendarHeatMap.css", "../src/Comms.ts", "../src/ESP.ts", "../src/HeatMap.ts", "../src/HPCCBadge.ts", "../src/Html.ts", "../src/Html.css", "../src/IconList.ts", "../src/IconList.css", "../src/Legend.ts", "../src/Table.ts", "../src/Paginator.ts", "../src/Paginator.css", "../src/Table.css", "../src/Legend.css", "../src/MorphText.ts", "../src/MorphText.css", "../src/NestedTable.ts", "../src/Opportunity.ts", "../src/Opportunity.css", "../src/Persist.ts", "../src/PropertyEditor.ts", "../src/PropertyEditor.css", "../src/RadioCheckbox.ts", "../src/RadioCheckbox.css", "../src/Select.ts", "../src/Select.css", "../src/ThemeEditor.ts", "../src/ThemeEditor.css"],
4
- "sourcesContent": ["/*\n JavaScript autoComplete v1.0.5\n Copyright (c) 2014 Simon Steinberger / Pixabay\n GitHub: https://github.com/Pixabay/JavaScript-autoComplete\n License: http://www.opensource.org/licenses/mit-license.php\n*/\n\nvar autoComplete = (function(){\n // \"use strict\";\n function autoComplete(options){\n if (!document.querySelector) return;\n\n // helpers\n function hasClass(el, className){ return el.classList ? el.classList.contains(className) : new RegExp('\\\\b'+ className+'\\\\b').test(el.className); }\n\n function addEvent(el, type, handler){\n if (el.attachEvent) el.attachEvent('on'+type, handler); else el.addEventListener(type, handler);\n }\n function removeEvent(el, type, handler){\n // if (el.removeEventListener) not working in IE11\n if (el.detachEvent) el.detachEvent('on'+type, handler); else el.removeEventListener(type, handler);\n }\n function live(elClass, event, cb, context){\n addEvent(context || document, event, function(e){\n var found, el = e.target || e.srcElement;\n while (el && !(found = hasClass(el, elClass))) el = el.parentElement;\n if (found) cb.call(el, e);\n });\n }\n\n var o = {\n selector: 0,\n source: 0,\n minChars: 3,\n delay: 150,\n offsetLeft: 0,\n offsetTop: 1,\n cache: 1,\n menuClass: '',\n renderItem: function (item, search){\n // escape special characters\n search = search.replace(/[-\\/\\\\^$*+?.()|[\\]{}]/g, '\\\\$&');\n var re = new RegExp(\"(\" + search.split(' ').join('|') + \")\", \"gi\");\n return '<div class=\"autocomplete-suggestion\" data-val=\"' + item + '\">' + item.replace(re, \"<b>$1</b>\") + '</div>';\n },\n onSelect: function(e, term, item){}\n };\n for (var k in options) { if (options.hasOwnProperty(k)) o[k] = options[k]; }\n\n // init\n var elems = typeof o.selector == 'object' ? [o.selector] : document.querySelectorAll(o.selector);\n for (var i=0; i<elems.length; i++) {\n var that = elems[i];\n\n // create suggestions container \"sc\"\n that.sc = document.createElement('div');\n that.sc.className = 'autocomplete-suggestions '+o.menuClass;\n\n that.autocompleteAttr = that.getAttribute('autocomplete');\n that.setAttribute('autocomplete', 'off');\n that.cache = {};\n that.last_val = '';\n\n that.updateSC = function(resize, next){\n var rect = that.getBoundingClientRect();\n that.sc.style.left = Math.round(rect.left + (window.pageXOffset || document.documentElement.scrollLeft) + o.offsetLeft) + 'px';\n that.sc.style.top = Math.round(rect.bottom + (window.pageYOffset || document.documentElement.scrollTop) + o.offsetTop) + 'px';\n that.sc.style.width = Math.round(rect.right - rect.left) + 'px'; // outerWidth\n if (!resize) {\n that.sc.style.display = 'block';\n that.sc.classList.remove('hide')\n if (!that.sc.maxHeight) { that.sc.maxHeight = parseInt((window.getComputedStyle ? getComputedStyle(that.sc, null) : that.sc.currentStyle).maxHeight); }\n if (!that.sc.suggestionHeight) that.sc.suggestionHeight = that.sc.querySelector('.autocomplete-suggestion').offsetHeight;\n if (that.sc.suggestionHeight)\n if (!next) that.sc.scrollTop = 0;\n else {\n var scrTop = that.sc.scrollTop, selTop = next.getBoundingClientRect().top - that.sc.getBoundingClientRect().top;\n if (selTop + that.sc.suggestionHeight - that.sc.maxHeight > 0)\n that.sc.scrollTop = selTop + that.sc.suggestionHeight + scrTop - that.sc.maxHeight;\n else if (selTop < 0)\n that.sc.scrollTop = selTop + scrTop;\n }\n }\n }\n addEvent(window, 'resize', that.updateSC);\n document.body.appendChild(that.sc);\n\n live('autocomplete-suggestion', 'mouseleave', function(e){\n var sel = that.sc.querySelector('.autocomplete-suggestion.selected');\n if (sel) setTimeout(function(){ sel.className = sel.className.replace('selected', ''); }, 20);\n }, that.sc);\n\n live('autocomplete-suggestion', 'mouseover', function(e){\n var sel = that.sc.querySelector('.autocomplete-suggestion.selected');\n if (sel) sel.className = sel.className.replace('selected', '');\n this.className += ' selected';\n }, that.sc);\n\n live('autocomplete-suggestion', 'mousedown', function(e){\n if (hasClass(this, 'autocomplete-suggestion')) { // else outside click\n var v = this.getAttribute('data-val');\n that.value = v;\n o.onSelect(e, v, this);\n that.sc.style.display = 'none';\n that.sc.classList.add(\"hide\");\n\n }\n }, that.sc);\n\n that.blurHandler = function(){\n try { var over_sb = document.querySelector('.autocomplete-suggestions:hover'); } catch(e){ var over_sb = 0; }\n if (!over_sb) {\n that.last_val = that.value;\n that.sc.style.display = 'none';\n that.sc.classList.add(\"hide\");\n setTimeout(function(){\n that.sc.style.display = 'none';\n that.sc.classList.add(\"hide\");\n }, 350); // hide suggestions on fast input\n } else if (that !== document.activeElement) setTimeout(function(){ that.focus(); }, 20);\n };\n addEvent(that, 'blur', that.blurHandler);\n\n var suggest = function(data, val){\n if (!val) {\n var val = that.value;\n }\n that.cache[val] = data;\n if (data.length && val.length >= o.minChars) {\n var s = '';\n for (var i=0;i<data.length;i++) s += o.renderItem(data[i], val);\n that.sc.innerHTML = s;\n that.updateSC(0);\n }\n else {\n that.sc.style.display = 'none';\n that.sc.classList.add(\"hide\");\n }\n }\n\n that.keydownHandler = function(e){\n var key = window.event ? e.keyCode : e.which;\n // down (40), up (38)\n if ((key == 40 || key == 38) && that.sc.innerHTML) {\n var next, sel = that.sc.querySelector('.autocomplete-suggestion.selected');\n if (!sel) {\n next = (key == 40) ? that.sc.querySelector('.autocomplete-suggestion') : that.sc.childNodes[that.sc.childNodes.length - 1]; // first : last\n next.className += ' selected';\n that.value = next.getAttribute('data-val');\n } else {\n next = (key == 40) ? sel.nextSibling : sel.previousSibling;\n if (next) {\n sel.className = sel.className.replace('selected', '');\n next.className += ' selected';\n that.value = next.getAttribute('data-val');\n }\n else { sel.className = sel.className.replace('selected', ''); that.value = that.last_val; next = 0; }\n }\n that.updateSC(0, next);\n return false;\n }\n // esc\n else if (key == 27) {\n that.value = that.last_val;\n that.sc.style.display = 'none';\n that.sc.classList.add(\"hide\");\n }\n // enter\n else if (key == 13 || key == 9) {\n if (that.sc.style.display !== 'none') {\n e.preventDefault();\n }\n var sel = that.sc.querySelector('.autocomplete-suggestion.selected');\n if (sel && that.sc.style.display != 'none') {\n o.onSelect(e, sel.getAttribute('data-val'), sel);\n setTimeout(function(){\n that.sc.style.display = 'none';\n that.sc.classList.add(\"hide\");\n }, 20); }\n }\n };\n addEvent(that, 'keydown', that.keydownHandler);\n\n that.keyupHandler = function(e){\n var key = window.event ? e.keyCode : e.which;\n if (!key || (key < 35 || key > 40) && key != 13 && key != 27) {\n var val = that.value;\n if (val.length >= o.minChars) {\n if (val != that.last_val) {\n that.last_val = val;\n clearTimeout(that.timer);\n if (o.cache) {\n if (val in that.cache) { suggest(that.cache[val]); return; }\n // no requests if previous suggestions were empty\n for (var i=1; i<val.length-o.minChars; i++) {\n var part = val.slice(0, val.length-i);\n if (part in that.cache && !that.cache[part].length) { suggest([]); return; }\n }\n }\n that.timer = setTimeout(function(){ o.source(val, suggest) }, o.delay);\n }\n } else {\n that.last_val = val;\n that.sc.style.display = 'none';\n that.sc.classList.add(\"hide\");\n }\n }\n };\n addEvent(that, 'keyup', that.keyupHandler);\n\n that.focusHandler = function(e){\n that.last_val = '\\n';\n that.keyupHandler(e)\n };\n if (!o.minChars) addEvent(that, 'focus', that.focusHandler);\n }\n\n // public destroy method\n this.destroy = function(){\n for (var i=0; i<elems.length; i++) {\n var that = elems[i];\n removeEvent(window, 'resize', that.updateSC);\n removeEvent(that, 'blur', that.blurHandler);\n removeEvent(that, 'focus', that.focusHandler);\n removeEvent(that, 'keydown', that.keydownHandler);\n removeEvent(that, 'keyup', that.keyupHandler);\n if (that.autocompleteAttr)\n that.setAttribute('autocomplete', that.autocompleteAttr);\n else\n that.removeAttribute('autocomplete');\n document.body.removeChild(that.sc);\n that = null;\n }\n };\n }\n return autoComplete;\n})();\n\n(function(){\n if (typeof define === 'function' && define.amd)\n define('autoComplete', function () { return autoComplete; });\n else if (typeof module !== 'undefined' && module.exports)\n module.exports = autoComplete;\n else\n window.autoComplete = autoComplete;\n})();\n", "'use strict';\n\nif (typeof module !== 'undefined') module.exports = simpleheat;\n\nfunction simpleheat(canvas) {\n if (!(this instanceof simpleheat)) return new simpleheat(canvas);\n\n this._canvas = canvas = typeof canvas === 'string' ? document.getElementById(canvas) : canvas;\n\n this._ctx = canvas.getContext('2d');\n this._width = canvas.width;\n this._height = canvas.height;\n\n this._max = 1;\n this._data = [];\n}\n\nsimpleheat.prototype = {\n\n defaultRadius: 25,\n\n defaultGradient: {\n 0.4: 'blue',\n 0.6: 'cyan',\n 0.7: 'lime',\n 0.8: 'yellow',\n 1.0: 'red'\n },\n\n data: function (data) {\n this._data = data;\n return this;\n },\n\n max: function (max) {\n this._max = max;\n return this;\n },\n\n add: function (point) {\n this._data.push(point);\n return this;\n },\n\n clear: function () {\n this._data = [];\n return this;\n },\n\n radius: function (r, blur) {\n blur = blur === undefined ? 15 : blur;\n\n // create a grayscale blurred circle image that we'll use for drawing points\n var circle = this._circle = this._createCanvas(),\n ctx = circle.getContext('2d'),\n r2 = this._r = r + blur;\n\n circle.width = circle.height = r2 * 2;\n\n ctx.shadowOffsetX = ctx.shadowOffsetY = r2 * 2;\n ctx.shadowBlur = blur;\n ctx.shadowColor = 'black';\n\n ctx.beginPath();\n ctx.arc(-r2, -r2, r, 0, Math.PI * 2, true);\n ctx.closePath();\n ctx.fill();\n\n return this;\n },\n\n resize: function () {\n this._width = this._canvas.width;\n this._height = this._canvas.height;\n },\n\n gradient: function (grad) {\n // create a 256x1 gradient that we'll use to turn a grayscale heatmap into a colored one\n var canvas = this._createCanvas(),\n ctx = canvas.getContext('2d'),\n gradient = ctx.createLinearGradient(0, 0, 0, 256);\n\n canvas.width = 1;\n canvas.height = 256;\n\n for (var i in grad) {\n gradient.addColorStop(+i, grad[i]);\n }\n\n ctx.fillStyle = gradient;\n ctx.fillRect(0, 0, 1, 256);\n\n this._grad = ctx.getImageData(0, 0, 1, 256).data;\n\n return this;\n },\n\n draw: function (minOpacity) {\n if (!this._circle) this.radius(this.defaultRadius);\n if (!this._grad) this.gradient(this.defaultGradient);\n\n var ctx = this._ctx;\n\n ctx.clearRect(0, 0, this._width, this._height);\n\n // draw a grayscale heatmap by putting a blurred circle at each data point\n for (var i = 0, len = this._data.length, p; i < len; i++) {\n p = this._data[i];\n ctx.globalAlpha = Math.max(p[2] / this._max, minOpacity === undefined ? 0.05 : minOpacity);\n ctx.drawImage(this._circle, p[0] - this._r, p[1] - this._r);\n }\n\n // colorize the heatmap, using opacity value of each pixel to get the right color from our gradient\n var colored = ctx.getImageData(0, 0, this._width, this._height);\n this._colorize(colored.data, this._grad);\n ctx.putImageData(colored, 0, 0);\n\n return this;\n },\n\n _colorize: function (pixels, gradient) {\n for (var i = 0, len = pixels.length, j; i < len; i += 4) {\n j = pixels[i + 3] * 4; // get gradient color from opacity value\n\n if (j) {\n pixels[i] = gradient[j];\n pixels[i + 1] = gradient[j + 1];\n pixels[i + 2] = gradient[j + 2];\n }\n }\n },\n\n _createCanvas: function () {\n if (typeof document !== 'undefined') {\n return document.createElement('canvas');\n } else {\n // create a new canvas instance in node.js\n // the canvas class needs to have a default constructor without any parameter\n return new this._canvas.constructor();\n }\n }\n};\n", "export const PKG_NAME = \"@hpcc-js/other\";\nexport const PKG_VERSION = \"3.1.1\";\nexport const BUILD_VERSION = \"3.2.1\";\n", "import { HTMLWidget } from \"@hpcc-js/common\";\nimport { timer as d3Timer } from \"d3-timer\";\n\nexport class Audio extends HTMLWidget {\n _sections;\n\n constructor() {\n super();\n this._tag = \"audio\";\n\n this._sections = {};\n }\n\n section(label, offset, beatLength, beatCount) {\n if (!arguments.length) return this._sections;\n if (arguments.length === 1) return this._sections[label];\n this._sections[label] = {\n label,\n offset,\n beatLength,\n beatCount,\n endOffset: offset + beatCount * beatLength\n };\n return this;\n }\n\n getType(fileExt) {\n switch (fileExt) {\n case \"mp3\":\n return \"audio/mpeg; codecs='mp3'\";\n case \"ogg\":\n return \"audio/ogg; codecs='vorbis'\";\n }\n return \"\";\n }\n\n enter(domNode, element) {\n const context = this;\n element.on(\"play\", function (d) { context.onPlay(d); });\n }\n\n update(domNode, element) {\n const source = element.selectAll(\"source\").data(this.source(), function (d) { return d; });\n source.enter().append(\"source\")\n .attr(\"src\", function (d) { return d; })\n ;\n }\n\n createTimer(params, startTime, beat) {\n const context = this;\n d3Timer(function () {\n context.onTick(params.label, beat, params);\n return true;\n }, beat * params.beatLength, startTime + params.offset);\n }\n\n onTick(label, beat, params) {\n }\n\n onPlay(d) {\n const startTime = Date.now();\n for (const key in this._sections) {\n const section = this._sections[key];\n for (let i = 0; i < section.beatCount; ++i) {\n this.createTimer(section, startTime, i);\n }\n }\n }\n\n play(d) {\n const context = this;\n this._element.on(\"canplaythrough\", function (d2) {\n context.node().play();\n });\n this.node().load();\n }\n}\nAudio.prototype._class += \" other_Audio\";\n\nexport interface Audio {\n source(): string;\n source(_: string): this;\n source_exists(): boolean;\n}\n\nAudio.prototype.publish(\"source\", \"\", \"string\", \"Audio Source\");\n", "var frame = 0, // is an animation frame pending?\n timeout = 0, // is a timeout pending?\n interval = 0, // are any timers active?\n pokeDelay = 1000, // how frequently we check for clock skew\n taskHead,\n taskTail,\n clockLast = 0,\n clockNow = 0,\n clockSkew = 0,\n clock = typeof performance === \"object\" && performance.now ? performance : Date,\n setFrame = typeof window === \"object\" && window.requestAnimationFrame ? window.requestAnimationFrame.bind(window) : function(f) { setTimeout(f, 17); };\n\nexport function now() {\n return clockNow || (setFrame(clearNow), clockNow = clock.now() + clockSkew);\n}\n\nfunction clearNow() {\n clockNow = 0;\n}\n\nexport function Timer() {\n this._call =\n this._time =\n this._next = null;\n}\n\nTimer.prototype = timer.prototype = {\n constructor: Timer,\n restart: function(callback, delay, time) {\n if (typeof callback !== \"function\") throw new TypeError(\"callback is not a function\");\n time = (time == null ? now() : +time) + (delay == null ? 0 : +delay);\n if (!this._next && taskTail !== this) {\n if (taskTail) taskTail._next = this;\n else taskHead = this;\n taskTail = this;\n }\n this._call = callback;\n this._time = time;\n sleep();\n },\n stop: function() {\n if (this._call) {\n this._call = null;\n this._time = Infinity;\n sleep();\n }\n }\n};\n\nexport function timer(callback, delay, time) {\n var t = new Timer;\n t.restart(callback, delay, time);\n return t;\n}\n\nexport function timerFlush() {\n now(); // Get the current time, if not already set.\n ++frame; // Pretend we\u2019ve set an alarm, if we haven\u2019t already.\n var t = taskHead, e;\n while (t) {\n if ((e = clockNow - t._time) >= 0) t._call.call(null, e);\n t = t._next;\n }\n --frame;\n}\n\nfunction wake() {\n clockNow = (clockLast = clock.now()) + clockSkew;\n frame = timeout = 0;\n try {\n timerFlush();\n } finally {\n frame = 0;\n nap();\n clockNow = 0;\n }\n}\n\nfunction poke() {\n var now = clock.now(), delay = now - clockLast;\n if (delay > pokeDelay) clockSkew -= delay, clockLast = now;\n}\n\nfunction nap() {\n var t0, t1 = taskHead, t2, time = Infinity;\n while (t1) {\n if (t1._call) {\n if (time > t1._time) time = t1._time;\n t0 = t1, t1 = t1._next;\n } else {\n t2 = t1._next, t1._next = null;\n t1 = t0 ? t0._next = t2 : taskHead = t2;\n }\n }\n taskTail = t0;\n sleep(time);\n}\n\nfunction sleep(time) {\n if (frame) return; // Soonest alarm already set, or will be.\n if (timeout) timeout = clearTimeout(timeout);\n var delay = time - clockNow; // Strictly less than if we recomputed clockNow.\n if (delay > 24) {\n if (time < Infinity) timeout = setTimeout(wake, time - clock.now() - clockSkew);\n if (interval) interval = clearInterval(interval);\n } else {\n if (!interval) clockLast = clock.now(), interval = setInterval(poke, pokeDelay);\n frame = 1, setFrame(wake);\n }\n}\n", "import { HTMLWidget } from \"@hpcc-js/common\";\nimport AutoComplete from \"javascript-autocomplete\";\n\nimport \"../src/AutoCompleteText.css\";\n\nexport class AutoCompleteText extends HTMLWidget {\n _span;\n _prompt;\n _input;\n _prevMinCharsText;\n _autoComplete;\n\n constructor() {\n super();\n this._tag = \"div\";\n }\n\n autoCompleteTextData() {\n if (this.data().length === 0) return [];\n const view = this._db.rollupView([this.textColumn(), this.valueColumn()]);\n return view.entries().map(function (row, idx) {\n return {\n idx,\n text: row.key,\n value: row.values.length ? row.values[0].key : \"\",\n origRow: row.values.length && row.values[0].value.length ? row.values[0].value[0] : []\n };\n }, this);\n }\n\n enter(domNode, element) {\n super.enter(domNode, element);\n this._span = element.append(\"span\");\n this._prompt = this._span.append(\"label\")\n .attr(\"for\", this.id() + \"_input\")\n ;\n this._input = this._span.append(\"input\")\n .attr(\"id\", this.id() + \"_input\")\n .attr(\"name\", this.id() + \"_input_name\")\n .attr(\"type\", \"text\")\n .attr(\"placeholder\", this.placeholder())\n ;\n }\n\n update(domNode, element) {\n super.update(domNode, element);\n\n this._prompt.text(this.label());\n this._input.style(\"width\", this.textboxWidth_exists() ? this.textboxWidth() + \"px\" : null);\n\n if (this._prevMinCharsText !== this.minCharsText()) {\n this._prevMinCharsText = this.minCharsText();\n\n if (this._autoComplete) {\n this._autoComplete.destroy();\n }\n const context = this;\n this._autoComplete = new AutoComplete({\n selector: \"#\" + this.id() + \"_input\",\n minChars: this.minCharsText(),\n delay: 150,\n offsetLeft: 0,\n offsetTop: 1,\n source: (term, suggest) => {\n const field = context._db.fieldByLabel(context.textColumn());\n if (field) {\n term = term.toLowerCase();\n const suggestions = context.autoCompleteTextData().filter(function (row) {\n return row.origRow[field.idx].toLowerCase().indexOf(term) >= 0;\n }).map(function (row) {\n return {\n text: row.origRow[field.idx],\n rowIdx: row.idx\n };\n });\n suggest(suggestions);\n }\n },\n renderItem: (item, search) => {\n search = search.replace(/[-\\/\\\\^$*+?.()|[\\]{}]/g, \"\\\\$&\");\n const re = new RegExp(\"(\" + search.split(\" \").join(\"|\") + \")\", \"gi\");\n return '<div class=\"autocomplete-suggestion\" data-val=\"' + item.text + '\" data-row-idx=\"' + item.rowIdx + '\">' + item.text.replace(re, \"<b>$1</b>\") + \"</div>\";\n },\n onSelect: (e, term, item) => {\n const rowIdx = +item.getAttribute(\"data-row-idx\");\n const row = context.autoCompleteTextData()[rowIdx];\n context.click(context.rowToObj(row.origRow), context.valueColumn(), true);\n }\n });\n }\n }\n\n exit(domNode, element) {\n if (this._autoComplete) {\n this._autoComplete.destroy();\n }\n this._span.remove();\n super.exit(domNode, element);\n }\n\n click(row, column, selected) {\n }\n}\nAutoCompleteText.prototype._class += \" other_AutoCompleteText\";\n\nexport interface AutoCompleteText {\n label(): string;\n label(_: string): this;\n label_exists(): boolean;\n textboxWidth(): number;\n textboxWidth(_: number): this;\n textboxWidth_exists(): boolean;\n placeholder(): string;\n placeholder(_: string): this;\n placeholder_exists(): boolean;\n valueColumn(): string;\n valueColumn(_: string): this;\n valueColumn_exists(): boolean;\n textColumn(): string;\n textColumn(_: string): this;\n textColumn_exists(): boolean;\n minCharsText(): number;\n minCharsText(_: number): this;\n minCharsText_exists(): boolean;\n}\n\nAutoCompleteText.prototype.publish(\"label\", \"Label: \", \"string\", \"Label for AutoCompleteText\");\nAutoCompleteText.prototype.publish(\"textboxWidth\", null, \"number\", \"width of textbox\", null, { optional: true });\nAutoCompleteText.prototype.publish(\"placeholder\", \"Search...\", \"string\", \"Placeholder for AutoCompleteText\");\nAutoCompleteText.prototype.publish(\"valueColumn\", null, \"set\", \"Select column for autocomplete\", function () { return this.columns(); }, { optional: true });\nAutoCompleteText.prototype.publish(\"textColumn\", null, \"set\", \"Select value(s)\", function () { return this.columns(); }, { optional: true });\nAutoCompleteText.prototype.publish(\"minCharsText\", 1, \"number\", \"Size of multiAutoCompleteText box\");\n", "(function(){\n if (!document.getElementById('eea6831e')) {\n var e = document.createElement('style');\n e.id = 'eea6831e';\n e.textContent = `.other_autoCompleteText label {\n display: inline-block;\n vertical-align: top;\n}\n\n.other_autoCompleteText input {\n width: 100%;\n max-width: 600px;\n outline: 0;\n border-radius: 100;\n}\n\n.autocomplete-suggestions {\n text-align: left; cursor: default; border: 1px solid #ccc; border-top: 0; background: #fff; box-shadow: -1px 1px 3px rgba(0,0,0,.1);\n /* core styles should not be changed */\n position: absolute; display: none; z-index: 9999; max-height: 254px; overflow: hidden; overflow-y: auto; box-sizing: border-box;\n}\n.autocomplete-suggestion { position: relative; padding: 0 .6em; line-height: 23px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; font-size: 1.02em; color: #333; }\n.autocomplete-suggestion b { font-weight: normal; color: #1f8dd6; }\n.autocomplete-suggestion.selected { background: #f0f0f0; }\n\n`;\n document.head.appendChild(e);\n }\n })();", "import { HTMLWidget, Palette, Utility } from \"@hpcc-js/common\";\nimport { extent as d3Extent, range as d3Range } from \"d3-array\";\nimport { map as d3Map } from \"d3-collection\";\nimport { format as d3Format } from \"d3-format\";\nimport { select as d3Select } from \"d3-selection\";\nimport { timeDays as d3TimeDays, timeMonths as d3TimeMonths, timeWeek as d3TimeWeek, timeYear as d3TimeYear } from \"d3-time\";\nimport { timeParse as d3TimeParse } from \"d3-time-format\";\n\nimport \"../src/CalendarHeatMap.css\";\n\nexport class CalendarHeatMap extends HTMLWidget {\n _prevDateColumn;\n _prevAggrType;\n _prevAggrColumn;\n _prevAggrDeltaColumn;\n _view;\n _parentNode;\n\n constructor() {\n super();\n\n Utility.SimpleSelectionMixin.call(this);\n }\n\n calendarData() {\n if (this.fields().length === 0 || this.data().length === 0) {\n return [];\n }\n const dateParser = d3TimeParse(this.datePattern());\n const valueFormatter = this.aggrDeltaColumn() ? d3Format(\".1%\") : d3Format(\"s\");\n if (this._prevDateColumn !== this.dateColumn() ||\n this._prevAggrType !== this.aggrType() ||\n this._prevAggrColumn !== this.aggrColumn() ||\n this._prevAggrDeltaColumn !== this.aggrDeltaColumn()) {\n this._prevDateColumn = this.dateColumn();\n this._prevAggrType = this.aggrType();\n this._prevAggrColumn = this.aggrColumn();\n this._prevAggrDeltaColumn = this.aggrDeltaColumn();\n this._view = this._db.aggregateView([this.dateColumn()], this.aggrType(), this.aggrColumn(), this.aggrDeltaColumn());\n }\n return this._view.entries().map(function (row) {\n row.dateKey = dateParser(row.key);\n row.formattedValues = valueFormatter(row.value.aggregate);\n row.origRows = row.value;\n return row;\n });\n }\n\n calcDelta(row) {\n return (row.Close - row.Open) / row.Open;\n }\n\n enter(domNode, element) {\n super.enter(domNode, element);\n d3Select(domNode.parentNode)\n .style(\"overflow-y\", \"scroll\")\n .style(\"overflow-x\", \"hidden\")\n .style(\"height\", \"100%\")\n .style(\"width\", \"100%\")\n ;\n this._selection.widgetElement(element);\n }\n\n update(domNode, element) {\n super.update(domNode, element);\n this._palette = this._palette.switch(this.paletteID());\n\n const width = this.width();\n const cellSize = (width / 12) / 5;\n const height = cellSize * 8;\n\n const data = this.calendarData();\n const mappedData = d3Map(data, function (d: any) { return d.dateKey; });\n const dateExtent = d3Extent(data, function (d: any) {\n return d.dateKey.getFullYear();\n });\n const context = this;\n const svg = element.selectAll(\"svg\").data(d3Range(+dateExtent[0], +dateExtent[1] + 1));\n const svgUpdate = svg.enter().append(\"svg\")\n .each(function (d) {\n const svgElement = d3Select(this);\n const g = svgElement.append(\"g\");\n g.append(\"text\")\n .style(\"text-anchor\", \"middle\")\n ;\n g.append(\"g\")\n .attr(\"class\", \"days\")\n ;\n\n const _d3TimeMonths = d3TimeMonths(new Date(d, 0, 1), new Date(d + 1, 0, 1));\n const _months = g.append(\"g\").attr(\"class\", \"months\");\n _d3TimeMonths.forEach(function (_m) {\n _months.append(\"path\")\n .attr(\"class\", \"month\")\n .attr(\"d\", calcMonthPath(_m))\n .style(\"stroke\", context.monthStrokeColor())\n .style(\"stroke-width\", context.monthStrokeWidth())\n ;\n });\n })\n .merge(svg)\n .attr(\"width\", width)\n .attr(\"height\", height)\n ;\n svgUpdate.select(\"g\")\n .attr(\"transform\", \"translate(\" + ((width - cellSize * 53) / 2) + \",\" + (height - cellSize * 7 - 1) + \")\")\n ;\n svgUpdate.select(\"text\")\n .attr(\"transform\", \"translate(-6,\" + cellSize * 3.5 + \")rotate(-90)\")\n .text(d => d)\n ;\n svg.exit().remove();\n\n let dataExtent: [any, any] = d3Extent<number>(data, function (d: any) {\n return d.value.aggregate;\n });\n if (this.aggrDeltaColumn()) {\n const max = Math.max(Math.abs(+dataExtent[0]), Math.abs(+dataExtent[1]));\n dataExtent = [-max, max];\n }\n const dayRect = svgUpdate.select(\".days\").selectAll(\".day\").data(function (d) { return d3TimeDays(new Date(d, 0, 1), new Date(d + 1, 0, 1)); });\n const dayRectUpdate = dayRect.enter().append(\"rect\")\n .attr(\"class\", \"day\")\n .call(this._selection.enter.bind(this._selection))\n .on(\"click\", function (d) {\n const data2 = mappedData.get(d);\n if (data2 && data2.value && data2.value && data2.value.length) {\n context.click(context.rowToObj(data2.value[0]), context.dateColumn(), context._selection.selected(this));\n }\n })\n .on(\"dblclick\", function (d) {\n const data2 = mappedData.get(d);\n if (data2 && data2.value && data2.value && data2.value.length) {\n context.dblclick(context.rowToObj(data2.value[0]), context.dateColumn(), context._selection.selected(this));\n }\n }).each(function (d) {\n const dayRectElement = d3Select(this);\n dayRectElement.append(\"title\");\n })\n .merge(dayRect)\n .attr(\"x\", function (d) { return d3TimeWeek.count(d3TimeYear(d), d) * cellSize; })\n .attr(\"y\", function (d) { return d.getDay() * cellSize; })\n .attr(\"width\", cellSize)\n .attr(\"height\", cellSize)\n .style(\"stroke\", this.dayStrokeColor())\n .style(\"stroke-width\", this.dayStrokeWidth())\n .style(\"fill\", null)\n ;\n dayRectUpdate.select(\"title\")\n .text(d => d)\n ;\n dayRectUpdate.filter(function (d) { return mappedData.has(d); })\n .style(\"fill\", function (d) {\n const row = mappedData.get(d);\n if (!row || !row.value || !row.value.aggregate) {\n return null;\n }\n return context._palette(row.value.aggregate, dataExtent[0], dataExtent[1]);\n })\n .select(\"title\")\n .text(function (d) {\n const data2 = mappedData.get(d);\n return data2.key + \": \" + data2.formattedValues;\n })\n ;\n dayRect.exit().remove();\n\n const monthPath = svg.select(\".months\").selectAll(\".month\").data(function (d) { return d3TimeMonths(new Date(d, 0, 1), new Date(d + 1, 0, 1)); });\n monthPath.enter().append(\"path\")\n .attr(\"class\", \"month\")\n .merge(monthPath)\n .attr(\"d\", calcMonthPath)\n .style(\"stroke\", this.monthStrokeColor())\n .style(\"stroke-width\", this.monthStrokeWidth())\n ;\n monthPath.exit().remove();\n\n function calcMonthPath(t0) {\n const t1 = new Date(t0.getFullYear(), t0.getMonth() + 1, 0);\n const d0 = t0.getDay();\n const w0 = d3TimeWeek.count(d3TimeYear(t0), t0);\n const d1 = t1.getDay();\n const w1 = d3TimeWeek.count(d3TimeYear(t1), t1);\n return \"M\" + (w0 + 1) * cellSize + \",\" + d0 * cellSize +\n \"H\" + w0 * cellSize + \"V\" + 7 * cellSize +\n \"H\" + w1 * cellSize + \"V\" + (d1 + 1) * cellSize +\n \"H\" + (w1 + 1) * cellSize + \"V\" + 0 +\n \"H\" + (w0 + 1) * cellSize + \"Z\";\n }\n }\n\n exit(domNode, element) {\n super.exit(domNode, element);\n }\n\n // Events ---\n click(row, column, selected) {\n }\n\n dblclick(row, column, selected) {\n }\n}\nCalendarHeatMap.prototype._class += \" other_CalendarHeatMap\";\nCalendarHeatMap.prototype.mixin(Utility.SimpleSelectionMixin);\nCalendarHeatMap.prototype._palette = Palette.rainbow(\"default\");\n\nexport interface CalendarHeatMap {\n _palette;\n\n // SimpleSelectionMixin ---\n _selection\n\n // Properties ---\n paletteID(): string;\n paletteID(_: string): this;\n paletteID_exists(): boolean;\n datePattern(): string;\n datePattern(_: string): this;\n datePattern_exists(): boolean;\n dayStrokeColor(): string;\n dayStrokeColor(_: string): this;\n monthStrokeColor(): string;\n monthStrokeColor(_: string): this;\n dayStrokeWidth(): number;\n dayStrokeWidth(_: number): this;\n monthStrokeWidth(): number;\n monthStrokeWidth(_: number): this;\n dateColumn(): string;\n dateColumn(_: string): this;\n dateColumn_exists(): boolean;\n aggrType(): string;\n aggrType(_: string): this;\n aggrType_exists(): boolean;\n aggrColumn(): string;\n aggrColumn(_: string): this;\n aggrColumn_exists(): boolean;\n aggrDeltaColumn(): string;\n aggrDeltaColumn(_: string): this;\n aggrDeltaColumn_exists(): boolean;\n}\nCalendarHeatMap.prototype.publish(\"paletteID\", \"YlOrRd\", \"set\", \"Color palette for this widget\", CalendarHeatMap.prototype._palette.switch(), { tags: [\"Basic\", \"Shared\"] });\nCalendarHeatMap.prototype.publish(\"dayStrokeColor\", \"#ccc\", \"html-color\", \"Color of day border\");\nCalendarHeatMap.prototype.publish(\"monthStrokeColor\", \"#000\", \"html-color\", \"Color of month border\");\nCalendarHeatMap.prototype.publish(\"dayStrokeWidth\", 1, \"number\", \"Pixel width of day border\");\nCalendarHeatMap.prototype.publish(\"monthStrokeWidth\", 2, \"number\", \"Pixel width of month border\");\nCalendarHeatMap.prototype.publish(\"dateColumn\", null, \"set\", \"Date Column\", function () { return this.columns(); }, { optional: true });\nCalendarHeatMap.prototype.publish(\"datePattern\", \"%Y-%m-%d\", \"string\", \"Date Pattern\");\nCalendarHeatMap.prototype.publish(\"aggrType\", null, \"set\", \"Aggregation Type\", [null, \"mean\", \"median\", \"sum\", \"min\", \"max\"], { optional: true });\nCalendarHeatMap.prototype.publish(\"aggrColumn\", null, \"set\", \"Aggregation Field\", function () { return this.columns(); }, { optional: true, disable: (w) => !w.aggrType() });\nCalendarHeatMap.prototype.publish(\"aggrDeltaColumn\", null, \"set\", \"Aggregation Field\", function () { return this.columns(); }, { optional: true, disable: (w) => !w.aggrType() });\n", "var t0 = new Date,\n t1 = new Date;\n\nexport default function newInterval(floori, offseti, count, field) {\n\n function interval(date) {\n return floori(date = arguments.length === 0 ? new Date : new Date(+date)), date;\n }\n\n interval.floor = function(date) {\n return floori(date = new Date(+date)), date;\n };\n\n interval.ceil = function(date) {\n return floori(date = new Date(date - 1)), offseti(date, 1), floori(date), date;\n };\n\n interval.round = function(date) {\n var d0 = interval(date),\n d1 = interval.ceil(date);\n return date - d0 < d1 - date ? d0 : d1;\n };\n\n interval.offset = function(date, step) {\n return offseti(date = new Date(+date), step == null ? 1 : Math.floor(step)), date;\n };\n\n interval.range = function(start, stop, step) {\n var range = [], previous;\n start = interval.ceil(start);\n step = step == null ? 1 : Math.floor(step);\n if (!(start < stop) || !(step > 0)) return range; // also handles Invalid Date\n do range.push(previous = new Date(+start)), offseti(start, step), floori(start);\n while (previous < start && start < stop);\n return range;\n };\n\n interval.filter = function(test) {\n return newInterval(function(date) {\n if (date >= date) while (floori(date), !test(date)) date.setTime(date - 1);\n }, function(date, step) {\n if (date >= date) {\n if (step < 0) while (++step <= 0) {\n while (offseti(date, -1), !test(date)) {} // eslint-disable-line no-empty\n } else while (--step >= 0) {\n while (offseti(date, +1), !test(date)) {} // eslint-disable-line no-empty\n }\n }\n });\n };\n\n if (count) {\n interval.count = function(start, end) {\n t0.setTime(+start), t1.setTime(+end);\n floori(t0), floori(t1);\n return Math.floor(count(t0, t1));\n };\n\n interval.every = function(step) {\n step = Math.floor(step);\n return !isFinite(step) || !(step > 0) ? null\n : !(step > 1) ? interval\n : interval.filter(field\n ? function(d) { return field(d) % step === 0; }\n : function(d) { return interval.count(0, d) % step === 0; });\n };\n }\n\n return interval;\n}\n", "export var durationSecond = 1e3;\nexport var durationMinute = 6e4;\nexport var durationHour = 36e5;\nexport var durationDay = 864e5;\nexport var durationWeek = 6048e5;\n", "import interval from \"./interval.js\";\nimport {durationDay, durationMinute} from \"./duration.js\";\n\nvar day = interval(function(date) {\n date.setHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setDate(date.getDate() + step);\n}, function(start, end) {\n return (end - start - (end.getTimezoneOffset() - start.getTimezoneOffset()) * durationMinute) / durationDay;\n}, function(date) {\n return date.getDate() - 1;\n});\n\nexport default day;\nexport var days = day.range;\n", "import interval from \"./interval.js\";\nimport {durationMinute, durationWeek} from \"./duration.js\";\n\nfunction weekday(i) {\n return interval(function(date) {\n date.setDate(date.getDate() - (date.getDay() + 7 - i) % 7);\n date.setHours(0, 0, 0, 0);\n }, function(date, step) {\n date.setDate(date.getDate() + step * 7);\n }, function(start, end) {\n return (end - start - (end.getTimezoneOffset() - start.getTimezoneOffset()) * durationMinute) / durationWeek;\n });\n}\n\nexport var sunday = weekday(0);\nexport var monday = weekday(1);\nexport var tuesday = weekday(2);\nexport var wednesday = weekday(3);\nexport var thursday = weekday(4);\nexport var friday = weekday(5);\nexport var saturday = weekday(6);\n\nexport var sundays = sunday.range;\nexport var mondays = monday.range;\nexport var tuesdays = tuesday.range;\nexport var wednesdays = wednesday.range;\nexport var thursdays = thursday.range;\nexport var fridays = friday.range;\nexport var saturdays = saturday.range;\n", "import interval from \"./interval.js\";\n\nvar month = interval(function(date) {\n date.setDate(1);\n date.setHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setMonth(date.getMonth() + step);\n}, function(start, end) {\n return end.getMonth() - start.getMonth() + (end.getFullYear() - start.getFullYear()) * 12;\n}, function(date) {\n return date.getMonth();\n});\n\nexport default month;\nexport var months = month.range;\n", "import interval from \"./interval.js\";\n\nvar year = interval(function(date) {\n date.setMonth(0, 1);\n date.setHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setFullYear(date.getFullYear() + step);\n}, function(start, end) {\n return end.getFullYear() - start.getFullYear();\n}, function(date) {\n return date.getFullYear();\n});\n\n// An optimized implementation for this simple case.\nyear.every = function(k) {\n return !isFinite(k = Math.floor(k)) || !(k > 0) ? null : interval(function(date) {\n date.setFullYear(Math.floor(date.getFullYear() / k) * k);\n date.setMonth(0, 1);\n date.setHours(0, 0, 0, 0);\n }, function(date, step) {\n date.setFullYear(date.getFullYear() + step * k);\n });\n};\n\nexport default year;\nexport var years = year.range;\n", "(function(){\n if (!document.getElementById('0901534f')) {\n var e = document.createElement('style');\n e.id = '0901534f';\n e.textContent = `.other_CalendarHeatMap {\n shape-rendering: crispEdges;\n}\n\n.other_CalendarHeatMap .day {\n fill: #fff;\n stroke: #ccc;\n}\n\n.other_CalendarHeatMap .day.selected {\n stroke: red;\n}\n\n.other_CalendarHeatMap .day.over {\n stroke: orange;\n}\n\n.other_CalendarHeatMap .day.selected.over {\n stroke: red;\n}\n\n.other_CalendarHeatMap .month {\n fill: none;\n stroke: #000;\n stroke-width: 2px;\n}\n`;\n document.head.appendChild(e);\n }\n })();", "import { Utility } from \"@hpcc-js/common\";\n\nconst TIMEOUT_DEFAULT = 60;\nfunction espValFix(val) {\n if (val === undefined || val === null) {\n return null;\n }\n if (!val.trim) {\n if (val.Row) {\n return espRowFix(val.Row);\n }\n return val;\n }\n const retVal = val.trim();\n if (retVal !== \"\" && !isNaN(retVal)) {\n if (retVal.length <= 1 || retVal[0] !== \"0\" || retVal[1] === \".\") {\n return Number(retVal);\n }\n }\n return retVal;\n}\n\nfunction espRowFix(row) {\n for (const key in row) {\n row[key] = espValFix(row[key]);\n }\n return row;\n}\n\nexport class ESPUrl {\n protected _protocol = \"http:\";\n protected _hostname = \"localhost\";\n protected _url;\n protected _port;\n protected _search;\n protected _pathname;\n protected _params;\n protected _hash;\n protected _host;\n\n constructor() {\n }\n\n url(_: string): this;\n url(): string;\n url(_?): string | this {\n if (!arguments.length) return this._url;\n this._url = _;\n const parser = document.createElement(\"a\");\n parser.href = this._url;\n // eslint-disable-next-line no-self-assign\n parser.href = parser.href; // This fixes an IE9/IE10 DOM value issue\n\n const params = {};\n if (parser.search.length) {\n let tmp: any = parser.search;\n if (tmp[0] === \"?\") {\n tmp = tmp.substring(1);\n }\n tmp = tmp.split(\"&\");\n tmp.map(function (item) {\n const tmpItem = item.split(\"=\");\n params[decodeURIComponent(tmpItem[0])] = decodeURIComponent(tmpItem[1]);\n });\n }\n this._protocol = parser.protocol;\n this._hostname = parser.hostname;\n this._port = parser.port;\n this._pathname = parser.pathname;\n while (this._pathname.length && this._pathname[0] === \"/\") {\n this._pathname = this._pathname.substring(1);\n }\n this._search = parser.search;\n this._params = params;\n this._hash = parser.hash;\n this._host = parser.host;\n\n return this;\n }\n\n protocol(_: string): this;\n protocol(): string;\n protocol(_?: string): string | this {\n if (!arguments.length) return this._protocol;\n this._protocol = _;\n return this;\n }\n\n hostname(_: string): this;\n hostname(): string;\n hostname(_?: string): string | this {\n if (!arguments.length) return this._hostname;\n this._hostname = _;\n return this;\n }\n\n port(_: string): this;\n port(): string;\n port(_?: string) {\n if (!arguments.length) return this._port;\n this._port = _;\n return this;\n }\n\n search(_: string): this;\n search(): string;\n search(_?: string) {\n if (!arguments.length) return this._search;\n this._search = _;\n return this;\n }\n\n pathname(_: string): this;\n pathname(): string;\n pathname(_?: string) {\n if (!arguments.length) return this._pathname;\n this._pathname = _;\n return this;\n }\n\n hash(_: string): this;\n hash(): string;\n hash(_?: string) {\n if (!arguments.length) return this._hash;\n this._hash = _;\n return this;\n }\n\n host(_: string): this;\n host(): string;\n host(_?: string) {\n if (!arguments.length) return this._host;\n this._host = _;\n return this;\n }\n\n params(_: string): this;\n params(): string;\n params(_?: string) {\n if (!arguments.length) return this._params;\n this._params = _;\n return this;\n }\n\n param(key: string) {\n return this._params[key];\n }\n\n isWsWorkunits() {\n return this._pathname.toLowerCase().indexOf(\"wsworkunits\") >= 0 || this._params[\"Wuid\"];\n }\n\n isWorkunitResult() {\n return this.isWsWorkunits() && (this._params[\"Sequence\"] || this._params[\"ResultName\"]);\n }\n\n isWsEcl() {\n return this._pathname.toLowerCase().indexOf(\"wsecl\") >= 0 || (this._params[\"QuerySetId\"] && this._params[\"Id\"]);\n }\n\n isWsWorkunits_GetStats() {\n return this._pathname.toLowerCase().indexOf(\"wsworkunits/wugetstats\") >= 0 && this._params[\"WUID\"];\n }\n\n getUrl(overrides) {\n overrides = overrides || {};\n return (overrides.protocol !== undefined ? overrides.protocol : this._protocol) + \"//\" +\n (overrides.hostname !== undefined ? overrides.hostname : this._hostname) + \":\" +\n (overrides.port !== undefined ? overrides.port : this._port) + \"/\" +\n (overrides.pathname !== undefined ? overrides.pathname : this._pathname);\n }\n}\n\nexport function ESPMappings(mappings) {\n this._mappings = mappings;\n this._reverseMappings = {};\n for (const resultName in this._mappings) {\n this._reverseMappings[resultName] = {};\n for (const key in this._mappings[resultName]) {\n this._reverseMappings[resultName][this._mappings[resultName][key]] = key;\n }\n }\n}\n\nESPMappings.prototype.contains = function (resultName, origField) {\n return Utility.exists(resultName + \".\" + origField, this._mappings);\n};\n\nESPMappings.prototype.mapResult = function (response, resultName) {\n const mapping = this._mappings[resultName];\n if (mapping) {\n response[resultName] = response[resultName].map(function (item) {\n let row = [];\n if (mapping.x && mapping.x instanceof Array) {\n // LINE Mapping ---\n row = [];\n for (let i = 0; i < mapping.x.length; ++i) {\n row.push(item[mapping.y[i]]);\n }\n } else {\n // Regular Mapping ---\n for (const key in mapping) {\n if (mapping[key] === \"label\") {\n row[0] = item[key];\n } else if (mapping[key] === \"weight\") {\n row[1] = item[key];\n }\n }\n }\n return row;\n }, this);\n }\n};\n\nESPMappings.prototype.mapResponse = function (response) {\n for (const key in response) {\n this.mapResult(response, key);\n }\n};\n\nconst serialize = function (obj) {\n const str = [];\n for (const key in obj) {\n if (obj.hasOwnProperty(key)) {\n const val = obj[key];\n if (val !== undefined && val !== null) {\n str.push(encodeURIComponent(key) + \"=\" + encodeURIComponent(val));\n }\n }\n }\n return str.join(\"&\");\n};\n\nlet jsonp = function (url, request, timeout) {\n return new Promise(function (resolve, reject) {\n let respondedTimeout = timeout * 1000;\n const respondedTick = 5000;\n const callbackName = \"jsonp_callback_\" + Math.round(Math.random() * 999999);\n window[callbackName] = function (response) {\n respondedTimeout = 0;\n doCallback();\n resolve(response);\n };\n const script = document.createElement(\"script\");\n script.src = url + (url.indexOf(\"?\") >= 0 ? \"&\" : \"?\") + \"jsonp=\" + callbackName + \"&\" + serialize(request);\n document.body.appendChild(script);\n const progress = setInterval(function () {\n if (respondedTimeout <= 0) {\n clearInterval(progress);\n } else {\n respondedTimeout -= respondedTick;\n if (respondedTimeout <= 0) {\n clearInterval(progress);\n doCallback();\n reject(Error(\"Request timeout: \" + script.src));\n }\n }\n }, respondedTick);\n\n function doCallback() {\n delete window[callbackName];\n document.body.removeChild(script);\n }\n });\n};\n\nexport class Comms extends ESPUrl {\n protected _proxyMappings;\n protected _mappings;\n protected _timeout;\n protected _hipieResults;\n protected _hipieResultsLength;\n\n constructor() {\n super();\n this._proxyMappings = {};\n this._mappings = new ESPMappings({});\n this._timeout = TIMEOUT_DEFAULT;\n this._hipieResults = {};\n }\n\n hipieResults(_) {\n if (!arguments.length) return this._hipieResults;\n this._hipieResultsLength = 0;\n this._hipieResults = {};\n const context = this;\n _.forEach(function (item) {\n context._hipieResultsLength++;\n context._hipieResults[item.id] = item;\n });\n return this;\n }\n\n jsonp(url, request) {\n for (const key in this._proxyMappings) {\n const newUrlParts = url.split(key);\n const newUrl = newUrlParts[0];\n if (newUrlParts.length > 1) {\n const espUrl = new ESPUrl()\n .url(url)\n ;\n url = newUrl + this._proxyMappings[key];\n request.IP = espUrl.hostname();\n request.PORT = espUrl.port();\n if (newUrlParts.length > 0) {\n request.PATH = newUrlParts[1];\n }\n break;\n }\n }\n return jsonp(url, request, this.timeout());\n }\n\n ajax(method, url, request?) {\n return new Promise(function (resolve, reject) {\n let uri = url;\n if (method === \"GET\" && request) {\n uri += \"?\" + serialize(request);\n }\n const xhr: any = new XMLHttpRequest();\n xhr.onload = function (e) {\n if (this.status >= 200 && this.status < 300) {\n resolve(JSON.parse(this.response));\n } else {\n reject(Error(this.statusText));\n }\n };\n xhr.onerror = function () {\n reject(Error(this.statusText));\n };\n xhr.open(method, uri);\n xhr.setRequestHeader(\"X-Requested-With\", \"XMLHttpRequest\");\n if (method === \"GET\") {\n xhr.send();\n } else {\n xhr.setRequestHeader(\"Content-Type\", \"application/x-www-form-urlencoded\");\n xhr.send(serialize(request));\n }\n });\n }\n\n get(url, request?) {\n return this.ajax(\"GET\", url, request);\n }\n\n post(url, request) {\n return this.ajax(\"POST\", url, request);\n }\n\n mappings(_?) {\n if (!arguments.length) return this._mappings;\n this._mappings = new ESPMappings(_);\n return this;\n }\n\n proxyMappings(_?) {\n if (!arguments.length) return this._proxyMappings;\n this._proxyMappings = _;\n return this;\n }\n\n timeout(_?) {\n if (!arguments.length) return this._timeout;\n this._timeout = _ || TIMEOUT_DEFAULT;\n return this;\n }\n}\n\nexport class Basic extends Comms {\n\n protected _cacheCalls;\n\n constructor() {\n super();\n }\n\n cacheCalls(_?) {\n if (!arguments.length) return this._cacheCalls;\n this._cacheCalls = _;\n return this;\n }\n\n call(request, callback) {\n const url = this._url + (this._url.indexOf(\"?\") >= 0 ? \"&\" : \"?\") + serialize(request);\n if (this._cacheCalls) {\n const context = this;\n return new Promise(function (resolve, reject) {\n const response = JSON.parse(localStorage.getItem(\"hpcc.viz.\" + url));\n if (!response) {\n throw Error(\"not cached\");\n }\n if (callback) {\n console.error(\"Deprecated: callback, use promise (Basic.prototype.call)\");\n callback(response);\n }\n resolve(response);\n }).catch(function (response) {\n return context.get(url).then(function (response2) {\n localStorage.setItem(\"hpcc.viz.\" + url, JSON.stringify(response2));\n if (callback) {\n console.error(\"Deprecated: callback, use promise (Basic.prototype.call)\");\n callback(response2);\n }\n return response2;\n });\n });\n } else {\n localStorage.removeItem(\"hpcc.viz.\" + url);\n return this.get(url).then(function (response) {\n if (callback) {\n console.error(\"Deprecated: callback, use promise (Basic.prototype.call)\");\n callback(response);\n }\n return response;\n });\n }\n }\n}\n\nfunction locateRoxieResponse(response): object {\n // v5 and v6 compatible ---\n for (const key in response) {\n if (response[key].Row && response[key].Row instanceof Array) {\n return response;\n }\n let retVal;\n if (typeof (response[key]) !== \"string\") {\n retVal = locateRoxieResponse(response[key]);\n }\n if (retVal) {\n return retVal;\n }\n }\n return null;\n}\n\nfunction locateRoxieException(response) {\n for (const key in response) {\n if (response[key].Exception && response[key].Exception instanceof Array) {\n return response[key];\n }\n const retVal = locateRoxieException(response[key]);\n if (retVal) {\n return retVal;\n }\n }\n return null;\n}\n\nexport class WsECL extends Comms {\n\n protected _target;\n protected _query;\n\n constructor() {\n super();\n\n this._port = \"8002\";\n this._target = \"\";\n this._query = \"\";\n }\n\n url(_?) {\n const retVal = super.url.apply(this, arguments);\n if (arguments.length) {\n // http://localhost:8010/esp/files/stub.htm?QuerySetId=roxie&Id=stock.3&Widget=QuerySetDetailsWidget\n this._port = this._port === \"8010\" ? \"8002\" : this._port; // Need a better way ---\n for (const key in this._params) {\n switch (key) {\n case \"QuerySetId\":\n this.target(this._params[key]);\n break;\n case \"Id\":\n this.query(this._params[key]);\n break;\n }\n }\n\n let pathParts;\n let queryParts;\n if (!this._target || !this._query) {\n // http://localhost:8002/WsEcl/forms/default/query/roxie/wecare\n pathParts = this._pathname.split(\"/query/\");\n if (pathParts.length >= 2) {\n queryParts = pathParts[1].split(\"/\");\n if (queryParts.length >= 2) {\n this.target(queryParts[0]);\n this.query(queryParts[1]);\n }\n }\n }\n }\n return retVal;\n }\n\n target(_?) {\n if (!arguments.length) return this._target;\n this._target = _;\n return this;\n }\n\n query(_?) {\n if (!arguments.length) return this._query;\n this._query = _;\n return this;\n }\n\n constructUrl() {\n return Comms.prototype.getUrl.call(this, {\n pathname: \"WsEcl/submit/query/\" + this._target + \"/\" + this._query + \"/json\"\n });\n }\n\n call(target, request, callback) {\n target = target || {};\n target.target = target.target || this._target;\n target.query = target.query || this._query;\n const context = this;\n const url = this.getUrl({\n pathname: \"WsEcl/submit/query/\" + target.target + \"/\" + target.query + \"/json\"\n });\n return this.jsonp(url, request).then(function (response: any) {\n let _response = locateRoxieResponse(response);\n if (!_response) {\n _response = locateRoxieException(response);\n }\n response = _response;\n\n // Check for exceptions\n if (response.Exception) {\n throw Error(response.Exception.reduce(function (previousValue, exception, index, array) {\n if (previousValue.length) {\n previousValue += \"\\n\";\n }\n return previousValue + exception.Source + \" \" + exception.Code + \": \" + exception.Message;\n }, \"\"));\n }\n // Remove \"response.result.Row\"\n for (const key in response) {\n if (response[key].Row) {\n response[key] = response[key].Row.map(espRowFix);\n }\n }\n context._mappings.mapResponse(response);\n if (callback) {\n console.error(\"Deprecated: callback, use promise (WsECL.prototype.call)\");\n callback(response);\n }\n return response;\n });\n }\n\n send(request, callback) {\n return this.call({ target: this._target, query: this._query }, request, callback);\n }\n}\n\nexport class WsWorkunits extends Comms {\n\n protected _wuid = \"\";\n protected _jobname = \"\";\n protected _sequence = null;\n protected _resultName = null;\n\n protected _fetchResultNamesPromise = null;\n protected _fetchResultPromise = {};\n protected _resultNameCache = {};\n protected _resultNameCacheCount = 0;\n protected _total;\n\n constructor() {\n super();\n this._port = \"8010\";\n }\n\n url(_?) {\n const retVal = Comms.prototype.url.apply(this, arguments);\n if (arguments.length) {\n // http://localhost:8010/WsWorkunit/WuResult?Wuid=xxx&ResultName=yyy\n for (const key in this._params) {\n switch (key) {\n case \"Wuid\":\n this.wuid(this._params[key]);\n break;\n case \"ResultName\":\n this.resultName(this._params[key]);\n break;\n case \"Sequence\":\n this.sequence(this._params[key]);\n break;\n }\n }\n if (!this._wuid) {\n // http://localhost:8010/WsWorkunits/res/W20140922-213329/c:/temp/index.html\n const urlParts = this._url.split(\"/res/\");\n if (urlParts.length >= 2) {\n const urlParts2 = urlParts[1].split(\"/\");\n this.wuid(urlParts2[0]);\n }\n }\n }\n return retVal;\n }\n\n wuid(_?) {\n if (!arguments.length) return this._wuid;\n this._wuid = _;\n return this;\n }\n\n jobname(_?) {\n if (!arguments.length) return this._jobname;\n this._jobname = _;\n return this;\n }\n\n sequence(_?) {\n if (!arguments.length) return this._sequence;\n this._sequence = _;\n return this;\n }\n\n resultName(_?) {\n if (!arguments.length) return this._resultName;\n this._resultName = _;\n return this;\n }\n\n appendParam(label, value, params) {\n if (value) {\n if (params) {\n params += \"&\";\n }\n return params + label + \"=\" + value;\n }\n return params;\n }\n\n constructUrl() {\n const url = Comms.prototype.getUrl.call(this, {\n pathname: \"WsWorkunits/res/\" + this._wuid + \"/\"\n });\n let params = \"\";\n params = this.appendParam(\"ResultName\", this._resultName, params);\n return url + (params ? \"?\" + params : \"\");\n }\n\n _fetchResult(target, callback, skipMapping) {\n target = target || {};\n if (!this._fetchResultPromise[target.resultname]) {\n target._start = target._start || 0;\n target._count = target._count || -1;\n const url = this.getUrl({\n pathname: \"WsWorkunits/WUResult.json\"\n });\n const request = {\n Wuid: target.wuid,\n ResultName: target.resultname,\n SuppressXmlSchema: true,\n Start: target._start,\n Count: target._count\n };\n this._resultNameCache[target.resultname] = {};\n const context = this;\n this._fetchResultPromise[target.resultname] = this.jsonp(url, request).then(function (response: any) {\n // Remove \"xxxResponse.Result\"\n for (const key in response) {\n if (!response[key].Result) {\n throw new Error(\"No result found.\");\n }\n context._total = response[key].Total;\n response = response[key].Result;\n for (const responseKey in response) {\n response = response[responseKey].Row.map(espRowFix);\n break;\n }\n break;\n }\n context._resultNameCache[target.resultname] = response;\n if (!skipMapping) {\n context._mappings.mapResult(context._resultNameCache, target.resultname);\n }\n if (callback) {\n console.error(\"Deprecated: callback, use promise (WsWorkunits.prototype._fetchResult)\");\n callback(context._resultNameCache[target.resultname]);\n }\n return context._resultNameCache[target.resultname];\n });\n }\n return this._fetchResultPromise[target.resultname];\n }\n\n fetchResult(target, callback, skipMapping) {\n if (target.wuid) {\n return this._fetchResult(target, callback, skipMapping);\n } else if (target.jobname) {\n const context = this;\n return this.WUQuery(target, function (response) {\n target.wuid = response[0].Wuid;\n return context._fetchResult(target, callback, skipMapping);\n });\n }\n }\n\n WUQuery(_request, callback) {\n const url = this.getUrl({\n pathname: \"WsWorkunits/WUQuery.json\"\n });\n const request = {\n Jobname: _request.jobname,\n Count: 1\n };\n\n this._resultNameCache = {};\n this._resultNameCacheCount = 0;\n return this.jsonp(url, request).then(function (response: any) {\n if (!Utility.exists(\"WUQueryResponse.Workunits.ECLWorkunit\", response)) {\n throw Error(\"No workunit found.\");\n }\n response = response.WUQueryResponse.Workunits.ECLWorkunit;\n if (callback) {\n console.error(\"Deprecated: callback, use promise (WsWorkunits.prototype.WUQuery)\");\n callback(response);\n }\n return response;\n });\n }\n\n fetchResultNames(callback?) {\n if (!this._fetchResultNamesPromise) {\n const url = this.getUrl({\n pathname: \"WsWorkunits/WUInfo.json\"\n });\n const request = {\n Wuid: this._wuid,\n TruncateEclTo64k: true,\n IncludeExceptions: false,\n IncludeGraphs: false,\n IncludeSourceFiles: false,\n IncludeResults: true,\n IncludeResultsViewNames: false,\n IncludeVariables: false,\n IncludeTimers: false,\n IncludeResourceURLs: false,\n IncludeDebugValues: false,\n IncludeApplicationValues: false,\n IncludeWorkflows: false,\n IncludeXmlSchemas: false,\n SuppressResultSchemas: true\n };\n\n this._resultNameCache = {};\n this._resultNameCacheCount = 0;\n const context = this;\n this._fetchResultNamesPromise = this.jsonp(url, request).then(function (response: any) {\n if (Utility.exists(\"WUInfoResponse.Workunit.Archived\", response) && response.WUInfoResponse.Workunit.Archived) {\n console.warn(\"WU is archived: \" + url + \" \" + JSON.stringify(request));\n }\n if (Utility.exists(\"WUInfoResponse.Workunit.Results.ECLResult\", response)) {\n response.WUInfoResponse.Workunit.Results.ECLResult.map(function (item) {\n context._resultNameCache[item.Name] = [];\n ++context._resultNameCacheCount;\n });\n }\n if (callback) {\n console.error(\"Deprecated: callback, use promise (WsWorkunits.prototype.fetchResultNames)\");\n callback(context._resultNameCache);\n }\n return context._resultNameCache;\n });\n }\n return this._fetchResultNamesPromise;\n }\n\n fetchResults(callback, skipMapping) {\n const context = this;\n return this.fetchResultNames().then(function (response) {\n const fetchArray = [];\n for (const key in context._resultNameCache) {\n fetchArray.push(context.fetchResult({ wuid: context._wuid, resultname: key }, null, skipMapping));\n }\n return Promise.all(fetchArray).then(function (responseArray) {\n if (callback) {\n console.error(\"Deprecated: callback, use promise (WsWorkunits.prototype.fetchResults)\");\n callback(context._resultNameCache);\n }\n return context._resultNameCache;\n });\n });\n }\n\n postFilter(request, response) {\n const retVal = {};\n for (const key in response) {\n retVal[key] = response[key].filter(function (row, idx) {\n for (const request_key in request) {\n if (row[request_key] !== undefined && request[request_key] !== undefined && row[request_key] != request[request_key]) {\n return false;\n }\n }\n return true;\n });\n }\n this._mappings.mapResponse(retVal);\n return retVal;\n }\n\n send(request, callback) {\n const context = this;\n if (!this._resultNameCacheCount) {\n this.fetchResults(function (response) {\n callback(context.postFilter(request, response));\n }, true);\n } else {\n callback(context.postFilter(request, this._resultNameCache));\n }\n }\n}\n\nfunction WsWorkunits_GetStats() {\n Comms.call(this);\n\n this._port = \"8010\";\n this._wuid = null;\n}\nWsWorkunits_GetStats.prototype = Object.create(Comms.prototype);\n\nWsWorkunits_GetStats.prototype.url = function (_) {\n const retVal = Comms.prototype.url.apply(this, arguments);\n if (arguments.length) {\n // http://localhost:8010/WsWorkunits/WUGetStats?WUID=\"xxx\"\n for (const key in this._params) {\n switch (key) {\n case \"WUID\":\n this.wuid(this._params[key]);\n break;\n }\n }\n }\n return retVal;\n};\n\nWsWorkunits_GetStats.prototype.wuid = function (_) {\n if (!arguments.length) return this._wuid;\n this._wuid = _;\n return this;\n};\n\nWsWorkunits_GetStats.prototype.constructUrl = function () {\n return Comms.prototype.getUrl.call(this, {\n pathname: \"WsWorkunits/WUGetStats?WUID=\" + this._wuid\n });\n};\n\nWsWorkunits_GetStats.prototype.send = function (request, callback) {\n const url = this.getUrl({\n pathname: \"WsWorkunits/WUGetStats.json?WUID=\" + this._wuid\n });\n return this.jsonp(url, request).then(function (response) {\n if (Utility.exists(\"WUGetStatsResponse.Statistics.WUStatisticItem\", response)) {\n if (callback) {\n console.error(\"Deprecated: callback, use promise (WsWorkunits_GetStats.prototype.send)\");\n callback(response.WUGetStatsResponse.Statistics.WUStatisticItem);\n }\n return response.WUGetStatsResponse.Statistics.WUStatisticItem;\n } else {\n if (callback) {\n console.error(\"Deprecated: callback, use promise (WsWorkunits_GetStats.prototype.send)\");\n callback([]);\n }\n return [];\n }\n });\n};\n\n// HIPIERoxie ---\nfunction HIPIERoxie() {\n Comms.call(this);\n}\nHIPIERoxie.prototype = Object.create(Comms.prototype);\n\nHIPIERoxie.prototype.fetchResults = function (request, callback) {\n const url = this.getUrl({});\n this._resultNameCache = {};\n this._resultNameCacheCount = 0;\n const context = this;\n return this.jsonp(url, request).then(function (response) {\n let _response = locateRoxieResponse(response);\n if (!_response) {\n _response = locateRoxieException(response);\n }\n response = _response;\n\n // Check for exceptions\n if (response.Exception) {\n throw Error(response.Exception.reduce(function (previousValue, exception, index, array) {\n if (previousValue.length) {\n previousValue += \"\\n\";\n }\n return previousValue + exception.Source + \" \" + exception.Code + \": \" + exception.Message;\n }, \"\"));\n }\n // Remove \"response.result.Row\"\n for (const key in response) {\n if (response[key].Row) {\n context._resultNameCache[key] = response[key].Row.map(espRowFix);\n ++context._resultNameCacheCount;\n }\n }\n if (callback) {\n console.error(\"Deprecated: callback, use promise (HIPIERoxie.prototype.fetchResults)\");\n callback(context._resultNameCache);\n }\n return context._resultNameCache;\n });\n};\n\nHIPIERoxie.prototype.fetchResult = function (name, callback) {\n const context = this;\n return new Promise(function (resolve, reject) {\n if (callback) {\n console.error(\"Deprecated: callback, use promise (HIPIERoxie.prototype.fetchResult)\");\n callback(context._resultNameCache[name]);\n }\n resolve(context._resultNameCache[name]);\n });\n};\n\nHIPIERoxie.prototype.call = function (request, callback) {\n const context = this;\n return this.fetchResults(request, callback).then(function (response) {\n const retVal = {};\n for (const hipieKey in context._hipieResults) {\n const item = context._hipieResults[hipieKey];\n retVal[item.id] = response[item.from];\n }\n return retVal;\n });\n};\n\n// HIPIEWorkunit ---\nfunction HIPIEWorkunit() {\n WsWorkunits.call(this);\n}\nHIPIEWorkunit.prototype = Object.create(WsWorkunits.prototype);\n\nHIPIEWorkunit.prototype.fetchResults = function (callback) {\n const context = this;\n return WsWorkunits.prototype.fetchResultNames.call(this).then(function (response) {\n const fetchArray = [];\n for (const key in context._hipieResults) {\n const item = context._hipieResults[key];\n fetchArray.push(context.fetchResult(item.from));\n }\n return Promise.all(fetchArray).then(function (response2) {\n if (callback) {\n console.error(\"Deprecated: callback, use promise (HIPIEWorkunit.prototype.fetchResults)\");\n callback(context._resultNameCache);\n }\n return context._resultNameCache;\n });\n });\n};\n\nHIPIEWorkunit.prototype.fetchResult = function (name, callback) {\n return WsWorkunits.prototype.fetchResult.call(this, { wuid: this._wuid, resultname: name }).then(function (response) {\n if (callback) {\n console.error(\"Deprecated: callback, use promise (HIPIEWorkunit.prototype.fetchResult)\");\n callback(response);\n }\n return response;\n });\n};\n\nHIPIEWorkunit.prototype.call = function (request, callback) {\n const context = this;\n if (request.refresh || !this._resultNameCache || !this._resultNameCacheCount) {\n return this.fetchResults(callback).then(function (response) {\n return filterResults(request);\n });\n } else {\n return new Promise(function (resolve, reject) {\n resolve(filterResults(request));\n });\n }\n\n function filterResults(request2) {\n const changedFilter = {};\n for (const key in request2) {\n if (request2[key + \"_changed\"] !== undefined) {\n changedFilter[key] = {\n value: request2[key]\n };\n }\n }\n const retVal = {};\n for (const hipieKey in context._hipieResults) {\n const hipieResult = context._hipieResults[hipieKey];\n const outputFilter = {};\n for (let i = 0; i < hipieResult.filters.length; ++i) {\n const filter = hipieResult.filters[i];\n if (!filter.isRange()) {\n outputFilter[filter.fieldid] = changedFilter[filter.fieldid] || { value: undefined };\n outputFilter[filter.fieldid].filter = filter;\n }\n }\n retVal[hipieResult.id] = context._resultNameCache[hipieResult.from].filter(function (row) {\n for (const key2 in outputFilter) {\n if (!outputFilter[key2].filter.matches(row, outputFilter[key2].value)) {\n return false;\n }\n }\n return true;\n });\n }\n return retVal;\n }\n};\n\n// HIPIEDatabomb ---\nfunction HIPIEDatabomb() {\n HIPIEWorkunit.call(this);\n}\nHIPIEDatabomb.prototype = Object.create(HIPIEWorkunit.prototype);\n\nHIPIEDatabomb.prototype.databomb = function (_) {\n if (!arguments.length) return this._databomb;\n this._databomb = _;\n return this;\n};\n\nHIPIEDatabomb.prototype.databombOutput = function (from, id) {\n if (!arguments.length) return undefined;\n this._resultNameCacheCount++;\n if (this._databomb instanceof Array) {\n this._resultNameCache[from] = this._databomb.map(espRowFix);\n } else {\n this._resultNameCache[from] = this._databomb[from].map(espRowFix);\n }\n return this;\n};\n\nHIPIEDatabomb.prototype.fetchResults = function (callback) {\n const context = this;\n return new Promise(function (resolve, reject) {\n if (callback) {\n console.error(\"Deprecated: callback, use promise (HIPIEDatabomb.prototype.fetchResults)\");\n callback(context._resultNameCache);\n }\n resolve(context._resultNameCache);\n });\n};\n\nexport function createESPConnection(url) {\n url = url || document.URL;\n const testURL = new ESPUrl()\n .url(url)\n ;\n if (testURL.isWsWorkunits_GetStats()) {\n return new WsWorkunits_GetStats()\n .url(url)\n ;\n }\n if (testURL.isWsWorkunits()) {\n return new WsWorkunits()\n .url(url)\n ;\n }\n if (testURL.isWsEcl()) {\n return new WsECL()\n .url(url)\n ;\n }\n return null;\n}\n\nexport function hookJsonp(func) {\n jsonp = func;\n}\n\nexport {\n HIPIEWorkunit,\n HIPIERoxie,\n HIPIEDatabomb\n};\n", "import { Utility } from \"@hpcc-js/common\";\nimport * as Comms from \"./Comms.ts\";\n\nfunction nestedRowFix(row) {\n if (row.Row && row.Row instanceof Array) {\n return row.Row.map(nestedRowFix);\n } else if (row instanceof Object) {\n for (const key in row) {\n row[key] = nestedRowFix(row[key]);\n }\n }\n return row;\n}\n\n// Basic Comms ---\nlet enableBasicCommsCache = false;\nlet basicCommsCache = {};\nfunction BasicComms() {\n Comms.Basic.call(this);\n}\nBasicComms.prototype = Object.create(Comms.Basic.prototype);\n\nBasicComms.prototype.jsonp = function (url, request) {\n const requestStr = JSON.stringify(request);\n if (enableBasicCommsCache && basicCommsCache[url] && basicCommsCache[url][requestStr]) {\n return Promise.resolve(basicCommsCache[url][requestStr]);\n }\n return Comms.Basic.prototype.jsonp.apply(this, arguments).then(function (response) {\n if (enableBasicCommsCache) {\n if (!basicCommsCache[url]) {\n basicCommsCache[url] = {};\n }\n basicCommsCache[url][requestStr] = response;\n }\n return response;\n });\n};\n\n// WsWorkunits ---\nfunction WsWorkunits(baseUrl) {\n BasicComms.call(this);\n\n this.url(baseUrl + \"WsWorkunits/\");\n}\nWsWorkunits.prototype = Object.create(BasicComms.prototype);\n\nWsWorkunits.prototype.wuQuery = function (options) {\n const url = this.getUrl({\n pathname: \"WsWorkunits/WUQuery.json\"\n });\n const request = {\n Wuid: \"\",\n Type: \"\",\n Cluster: \"\",\n RoxieCluster: \"\",\n Owner: \"\",\n State: \"\",\n StartDate: \"\",\n EndDate: \"\",\n ECL: \"\",\n Jobname: \"\",\n LogicalFile: \"\",\n LogicalFileSearchType: \"\",\n /*\n ApplicationValues>\n ApplicationValue>\n Application: \"\",\n Name: \"\",\n Value: \"\",\n /ApplicationValue>\n /ApplicationValues>\n */\n After: \"\",\n Before: \"\",\n Count: \"\",\n PageSize: 100,\n PageStartFrom: 0,\n PageEndAt: \"\",\n LastNDays: \"\",\n Sortby: \"\",\n Descending: 0,\n CacheHint: \"\"\n };\n for (const key in options) {\n request[key] = options[key];\n }\n return this.jsonp(url, request).then(function (response) {\n if (response.WUQueryResponse && response.WUQueryResponse.Workunits) {\n return response.WUQueryResponse.Workunits.ECLWorkunit;\n }\n return [];\n });\n};\n\n// Workunit ---\nfunction Workunit(baseUrl, wuid) {\n BasicComms.call(this);\n\n this.url(baseUrl + \"WsWorkunits/\");\n this._wuid = wuid;\n}\nWorkunit.prototype = Object.create(BasicComms.prototype);\n\nWorkunit.prototype.wuInfo = function (options) {\n const url = this.getUrl({\n pathname: \"WsWorkunits/WUInfo.json\"\n });\n const request = {\n Wuid: this._wuid,\n TruncateEclTo64k: true,\n IncludeExceptions: false,\n IncludeGraphs: false,\n IncludeSourceFiles: false,\n IncludeResults: false,\n IncludeResultsViewNames: false,\n IncludeVariables: false,\n IncludeTimers: false,\n IncludeResourceURLs: false,\n IncludeDebugValues: false,\n IncludeApplicationValues: false,\n IncludeWorkflows: false,\n IncludeXmlSchemas: false,\n SuppressResultSchemas: true\n };\n for (const key in options) {\n request[key] = options[key];\n }\n return this.jsonp(url, request).then(function (response) {\n if (enableBasicCommsCache) {\n const retVal = { WUInfoResponse: { Workunit: {} } };\n for (const key in options) {\n const includeKey = key.substring(7);\n retVal.WUInfoResponse.Workunit[includeKey] = response.WUInfoResponse.Workunit[includeKey];\n }\n basicCommsCache[url][JSON.stringify(request)] = retVal;\n }\n return response;\n });\n};\n\nWorkunit.prototype.wuUpdate = function (options) {\n const url = this.getUrl({\n pathname: \"WsWorkunits/WUUpdate.json\"\n });\n const request = {\n Wuid: this._wuid\n };\n for (const key in options) {\n request[key] = options[key];\n }\n return this.post(url, request);\n};\n\nWorkunit.prototype.appData = function (appID, key, _) {\n if (arguments.length === 2) {\n return this.wuInfo({\n IncludeApplicationValues: true\n }).then(function (response) {\n let persistString;\n if (response.WUInfoResponse && response.WUInfoResponse.Workunit && response.WUInfoResponse.Workunit.ApplicationValues && response.WUInfoResponse.Workunit.ApplicationValues.ApplicationValue) {\n response.WUInfoResponse.Workunit.ApplicationValues.ApplicationValue.filter(function (row) {\n return row.Application === appID && row.Name === key;\n }).forEach(function (row) {\n persistString = row.Value;\n });\n }\n return persistString;\n });\n } else if (arguments.length === 3) {\n return this.wuUpdate({\n \"ApplicationValues.ApplicationValue.0.Application\": appID,\n \"ApplicationValues.ApplicationValue.0.Name\": key,\n \"ApplicationValues.ApplicationValue.0.Value\": _,\n \"ApplicationValues.ApplicationValue.itemcount\": 1\n });\n }\n};\n\nWorkunit.prototype.results = function () {\n const context = this;\n return this.wuInfo({\n IncludeResults: true\n }).then(function (response) {\n let retVal = [];\n if (Utility.exists(\"WUInfoResponse.Workunit.Results.ECLResult\", response)) {\n retVal = response.WUInfoResponse.Workunit.Results.ECLResult.map(function (result) {\n return new WUResult(context.getUrl({ pathname: \"WsWorkunits/\" }), context._wuid, result.Name);\n });\n }\n return retVal;\n });\n};\n\nWorkunit.prototype.result = function (dataSource, resultName) {\n dataSource = dataSource || this._wuid;\n return createResult(dataSource, resultName);\n};\n\n// Workunit Result ---\nfunction WUResult(baseUrl, wuid, name) {\n BasicComms.call(this);\n this.url(baseUrl + \"WUResult.json\");\n this._wuid = wuid;\n this._name = name;\n this._xmlSchema = null;\n}\nWUResult.prototype = Object.create(BasicComms.prototype);\n\nWUResult.prototype.wuid = function (_) {\n if (!arguments.length) return this._wuid;\n this._wuid = _;\n return this;\n};\n\nWUResult.prototype.name = function (_) {\n if (!arguments.length) return this._name;\n this._name = _;\n return this;\n};\n\nWUResult.prototype.query = function (options, filter) {\n options = options || {};\n filter = filter || {};\n const request = {\n Wuid: this._wuid,\n ResultName: this._name,\n SuppressXmlSchema: true,\n Start: 0,\n Count: -1\n };\n for (const key in options) {\n request[key] = options[key];\n }\n let filterIdx = 0;\n for (const fKey in filter) {\n request[\"FilterBy.NamedValue.\" + filterIdx + \".Name\"] = fKey;\n request[\"FilterBy.NamedValue.\" + filterIdx + \".Value\"] = filter[fKey];\n ++filterIdx;\n }\n if (filterIdx) {\n request[\"FilterBy.NamedValue.itemcount\"] = filterIdx;\n }\n const context = this;\n return this.jsonp(this.url(), request).then(function (response) {\n if (response.WUResultResponse &&\n response.WUResultResponse.Result &&\n response.WUResultResponse.Result[context._name]) {\n if (enableBasicCommsCache) {\n basicCommsCache[context.url()][JSON.stringify(request)] = {\n WUResultResponse: {\n Result: response.WUResultResponse.Result\n }\n };\n }\n context._xmlSchema = response.WUResultResponse.Result.XmlSchema;\n return nestedRowFix(response.WUResultResponse.Result[context._name]);\n }\n return [];\n });\n};\n\n// Logical File ---\nfunction LogicalFile(baseUrl, logicalName) {\n BasicComms.call(this);\n this.url(baseUrl + \"WUResult.json\");\n this._logicalName = logicalName;\n this._xmlSchema = null;\n}\nLogicalFile.prototype = Object.create(BasicComms.prototype);\n\nLogicalFile.prototype.query = function (options, filter) {\n options = options || {};\n filter = filter || {};\n const request = {\n Cluster: \"hthor\", // TODO: Should not be needed ---\n LogicalName: this._logicalName,\n SuppressXmlSchema: this._xmlSchema !== null,\n Start: 0,\n Count: -1\n };\n for (const key in options) {\n request[key] = options[key];\n }\n let filterIdx = 0;\n for (const fKey in filter) {\n request[\"FilterBy.NamedValue.\" + filterIdx + \".Name\"] = fKey;\n request[\"FilterBy.NamedValue.\" + filterIdx + \".Value\"] = filter[fKey];\n ++filterIdx;\n }\n if (filterIdx) {\n request[\"FilterBy.NamedValue.itemcount\"] = filterIdx;\n }\n const context = this;\n return this.jsonp(this.url(), request).then(function (response) {\n if (response.WUResultResponse &&\n response.WUResultResponse.Result &&\n response.WUResultResponse.Result.Row) {\n context._xmlSchema = response.WUResultResponse.Result.XmlSchema;\n return nestedRowFix(response.WUResultResponse.Result.Row);\n }\n return [];\n });\n};\n\n// Roxie Query ---\nfunction RoxieQuery(baseUrl, resultName) {\n BasicComms.call(this);\n const urlParts = baseUrl.split(\"/\");\n let queryName = urlParts.pop();\n if (queryName.toLowerCase() === \"json\") {\n queryName = urlParts.pop();\n }\n this._queryName = queryName;\n this._resultName = resultName;\n this.url(urlParts.join(\"/\") + \"/\" + queryName + \"/json\");\n}\nRoxieQuery.prototype = Object.create(BasicComms.prototype);\n\nfunction trimRight(str) {\n if (str && str.replace) {\n return str.replace(/ +$/, \"\");\n }\n return str;\n}\n\nfunction postFilter(results, filter) {\n return results.filter(function (row) {\n for (const key in filter) {\n if (row[key] !== undefined && trimRight(filter[key]) !== trimRight(row[key])) {\n return false;\n }\n }\n return true;\n });\n}\n\nfunction locateRoxieResponse(response) {\n // v5 and v6 compatible ---\n for (const key in response) {\n if (response[key].Row && response[key].Row instanceof Array) {\n return response;\n }\n const retVal = locateRoxieResponse(response[key]);\n if (retVal) {\n return retVal;\n }\n }\n return null;\n}\n\nRoxieQuery.prototype.query = function (options, filter) {\n options = options || {};\n filter = filter || {};\n const request = {\n };\n for (const key in options) {\n request[key] = options[key];\n }\n for (const fKey in filter) {\n request[fKey] = filter[fKey];\n }\n const context = this;\n return this.jsonp(this.url(), request).then(function (response) {\n response = locateRoxieResponse(response);\n if (response) {\n if (context._resultName) {\n if (response && response[context._resultName] && response[context._resultName].Row) {\n return nestedRowFix(postFilter(response[context._resultName].Row, filter));\n }\n } else {\n for (const key in response) {\n if (response[key].Row) {\n return nestedRowFix(postFilter(response[key].Row, filter));\n }\n }\n }\n }\n return [];\n });\n};\n\nexport function createResult(_espUrl, dataSource, resultName?) {\n const espUrl = new Comms.ESPUrl()\n .url(_espUrl)\n ;\n if (dataSource.indexOf(\"http\") === 0) {\n return new RoxieQuery(dataSource, resultName);\n } else if (dataSource.indexOf(\"~\") === 0 || dataSource.indexOf(\"::\") >= 0) {\n return new LogicalFile(espUrl.getUrl({ pathname: \"WsWorkunits/\" }), dataSource);\n } else if (dataSource) {\n return new WUResult(espUrl.getUrl({ pathname: \"WsWorkunits/\" }), dataSource, resultName);\n }\n return null;\n}\n\nexport function enableCache(_?: any): any | undefined {\n if (!arguments.length) return enableBasicCommsCache;\n enableBasicCommsCache = _;\n if (!_) {\n basicCommsCache = {};\n }\n}\nexport function cache(_?: any): any | undefined {\n if (!arguments.length) return basicCommsCache;\n basicCommsCache = _;\n}\nexport function createConnection(url) {\n url = url || document.URL;\n const testURL = new Comms.ESPUrl()\n .url(url)\n ;\n if (testURL.isWsWorkunits()) {\n const espConnection = Comms.createESPConnection(url);\n if (espConnection instanceof Comms.WsWorkunits && espConnection.wuid()) {\n return new Workunit(espConnection.getUrl({ pathname: \"\" }), espConnection.wuid())\n .url(url)\n ;\n }\n }\n return null;\n}\nexport function flattenResult(result, mappings) {\n const retVal = {\n columns: [],\n data: []\n };\n if (result && result.length) {\n const colIdx = {};\n if (mappings && mappings.length) {\n mappings.forEach(function (mapping) {\n colIdx[mapping.value.toLowerCase()] = retVal.columns.length;\n retVal.columns.push(mapping.key);\n });\n } else {\n for (const key in result[0]) {\n colIdx[key.toLowerCase()] = retVal.columns.length;\n retVal.columns.push(key);\n }\n }\n result.forEach(function (row, rowIdx) {\n const rowArr = [];\n for (const key in row) {\n if (colIdx[key.toLowerCase()] !== undefined) {\n rowArr[colIdx[key.toLowerCase()]] = row[key];\n }\n }\n retVal.data.push(rowArr);\n });\n }\n return retVal;\n}\n", "import { CanvasWidget, Palette } from \"@hpcc-js/common\";\nimport * as _simpleheat from \"simpleheat\";\n\nconst simpleheat = (window as any).simpleheat || (_simpleheat && _simpleheat.default) || _simpleheat;\n\nexport class HeatMap extends CanvasWidget {\n _heat;\n\n constructor() {\n super();\n }\n\n enter(domNode, element) {\n super.enter(domNode, element);\n // canvas size needs to be set before render\n this.resize(this._size);\n this._heat = simpleheat(domNode);\n }\n\n update(domNode, element) {\n super.update(domNode, element);\n\n this._palette = this._palette.switch(this.paletteID());\n if (this.useClonedPalette()) {\n this._palette = this._palette.cloneNotExists(this.paletteID() + \"_\" + this.id());\n }\n\n if (this.topLeftX_exists() && this.topLeftY_exists() && this.bottomRightX_exists() && this.bottomRightY_exists()) {\n this._heat.data(this.skewedData());\n } else {\n this._heat.data(this.data());\n }\n\n if (this.radius()) {\n this._heat.radius(this.radius(), this.blur());\n }\n if (this.usePalette()) {\n const grad = {};\n for (let idx = 1; idx <= this.colorCount(); idx++) {\n const value = idx / this.colorCount();\n grad[value] = this._palette(idx, 1, this.colorCount());\n }\n this._heat.defaultGradient = grad;\n this._heat.gradient(grad);\n } else if (this.gradient()) {\n this._heat.defaultGradient = this.gradient();\n this._heat.gradient(this.gradient());\n }\n\n this._heat.draw();\n }\n\n exit(domNode, element) {\n delete this._heat;\n super.exit(domNode, element);\n }\n\n resize(size: any): this {\n const retVal = CanvasWidget.prototype.resize.apply(this, arguments);\n if (this._heat !== undefined) {\n this._heat.resize();\n }\n return retVal;\n }\n\n skewedData() {\n const context = this;\n const retArr = [];\n const arr = this.data();\n const box = this.size();\n\n const coordsWidth = this.bottomRightX() - this.topLeftX();\n const coordsHeight = this.bottomRightY() - this.topLeftY();\n\n const pixelValueX = coordsWidth / box.width;\n const pixelValueY = coordsHeight / box.height;\n\n arr.forEach(function (n) {\n const left = Math.abs(n[0] - context.topLeftX());\n const top = Math.abs(n[1] - context.topLeftY());\n\n const newX = left / pixelValueX;\n const newY = top / pixelValueY;\n\n retArr.push([newX, newY, n[2]]);\n });\n\n return retArr;\n }\n}\nHeatMap.prototype._class += \" other_HeatMap\";\nHeatMap.prototype._palette = Palette.rainbow(\"default\");\n\nexport interface HeatMap {\n _palette;\n\n radius(): number;\n radius(_: number): this;\n radius_exists(): boolean;\n blur(): number;\n blur(_: number): this;\n blur_exists(): boolean;\n max(): number;\n max(_: number): this;\n max_exists(): boolean;\n gradient(): object;\n gradient(_: object): this;\n gradient_exists(): boolean;\n usePalette(): boolean;\n usePalette(_: boolean): this;\n usePalette_exists(): boolean;\n colorCount(): number;\n colorCount(_: number): this;\n colorCount_exists(): boolean;\n paletteID(): string;\n paletteID(_: string): this;\n paletteID_exists(): boolean;\n useClonedPalette(): boolean;\n useClonedPalette(_: boolean): this;\n useClonedPalette_exists(): boolean;\n topLeftX(): number;\n topLeftX(_: number): this;\n topLeftX_exists(): boolean;\n topLeftY(): number;\n topLeftY(_: number): this;\n topLeftY_exists(): boolean;\n bottomRightX(): number;\n bottomRightX(_: number): this;\n bottomRightX_exists(): boolean;\n bottomRightY(): number;\n bottomRightY(_: number): this;\n bottomRightY_exists(): boolean;\n}\n\nHeatMap.prototype.publish(\"radius\", 15, \"number\", \"Set point radius\", null, { tags: [\"Basic\"] });\nHeatMap.prototype.publish(\"blur\", 15, \"number\", \"Set point blur\", null, { tags: [\"Basic\"] });\nHeatMap.prototype.publish(\"max\", 1, \"number\", \"Set max data value\", null, { tags: [\"Basic\"] });\n\nHeatMap.prototype.publish(\"gradient\", { 0.4: \"blue\", 0.6: \"cyan\", 0.7: \"lime\", 0.8: \"yellow\", 1.0: \"red\" }, \"object\", \"Set gradient colors\", null, { tags: [\"Basic\"] });\n\nHeatMap.prototype.publish(\"usePalette\", false, \"boolean\", \"If true, uses paletteID and colorCount to determine gradient\", null, { tags: [\"Basic\"] });\n\nHeatMap.prototype.publish(\"colorCount\", 10, \"number\", \"Top left x-value\", null, { tags: [\"Basic\"] });\nHeatMap.prototype.publish(\"paletteID\", \"default\", \"set\", \"Color palette for this widget\", HeatMap.prototype._palette.switch(), { tags: [\"Basic\"] });\nHeatMap.prototype.publish(\"useClonedPalette\", false, \"boolean\", \"Enable or disable using a cloned palette\", null, { tags: [\"Intermediate\", \"Shared\"] });\n\nHeatMap.prototype.publish(\"topLeftX\", null, \"number\", \"Top left x-value\", null, { tags: [\"Basic\"], optional: true });\nHeatMap.prototype.publish(\"topLeftY\", null, \"number\", \"Top left y-value\", null, { tags: [\"Basic\"], optional: true });\nHeatMap.prototype.publish(\"bottomRightX\", null, \"number\", \"Bottom right x-value\", null, { tags: [\"Basic\"], optional: true });\nHeatMap.prototype.publish(\"bottomRightY\", null, \"number\", \"Bottom right y-value\", null, { tags: [\"Basic\"], optional: true });\n", "import { SVGWidget } from \"@hpcc-js/common\";\n\nexport class HPCCBadge extends SVGWidget {\n protected root;\n protected logo;\n protected logo_accent;\n protected logo_circles;\n protected line;\n protected circle_1;\n protected circle_2;\n protected circle_3;\n protected circle_4;\n protected circle_5;\n protected circle_6;\n protected circle_7;\n protected circle_8;\n protected circle_accent;\n protected text;\n protected text_hpccsystems;\n protected text_r;\n protected text_tm;\n\n constructor() {\n super();\n }\n\n testData(domNode, element) {\n return this;\n }\n\n enter(domNode, element) {\n super.enter(domNode, element);\n\n this.root = element.append(\"g\");\n this.logo = this.root.append(\"g\");\n this.logo_accent = this.root.append(\"g\");\n this.line = this.logo_accent.append(\"path\")\n .attr(\"fill-rule\", \"evenodd\")\n .attr(\"clip-rule\", \"evenodd\")\n .attr(\"fill\", \"#179BD7\")\n .attr(\"d\", \"m 189.38849,364.55373 c 191.6,3.8 0,0 191.6,3.8 l 0.1,-4.2 c -191.7,0.4 0,0 -191.7,0.4 z\")\n ;\n this.circle_accent = this.logo_accent.append(\"path\")\n .attr(\"fill-rule\", \"evenodd\")\n .attr(\"clip-rule\", \"evenodd\")\n .attr(\"fill\", \"#6E6E73\")\n .attr(\"d\", \"M421.3,354.2c6.9,6.9,3.1,18.7-8.6,26.1c-11.8,7.4-26.3,6.9-32.1-0.6c-5.5-7.2-1.1-18.2,9.6-25C401,348,414.7,347.6,421.3,354.2z\")\n ;\n this.logo_circles = this.logo.append(\"g\");\n this.circle_1 = this.logo_circles.append(\"path\")\n .attr(\"fill-rule\", \"evenodd\")\n .attr(\"clip-rule\", \"evenodd\")\n .attr(\"fill\", \"#179BD7\")\n .attr(\"d\", \"m 258.9815,363.84947 c 1.3,-3 1.5,-5.9 0.4,-8.1 -2.6,-5.4 -11.8,-5.1 -20.6,0.4 -3.5,2.2 -6.5,4.9 -8.7,7.8 -0.11933,0.35821 -0.39477,0.60735 -0.6,0.9 -2.9,4.1 -4.2,8.3 -3,11.6 2.1,6 11.4,6.3 20.9,0.4 5,-3.2 8.9,-7.3 11,-11.4 -0.59813,0.54778 0.47385,-1.28911 0.6,-1.6 z\")\n ;\n this.circle_2 = this.logo_circles.append(\"path\")\n .attr(\"fill-rule\", \"evenodd\")\n .attr(\"clip-rule\", \"evenodd\")\n .attr(\"fill\", \"#179BD7\")\n .attr(\"d\", \"M291.3,349.3c9.5-5.9,14.1-15,10.5-20c-3.5-4.8-13.3-4.2-22.1,1.3c-8.8,5.5-13.7,14.1-10.9,19.3C271.7,355.4,281.9,355.2,291.3,349.3z\")\n ;\n this.circle_3 = this.logo_circles.append(\"path\")\n .attr(\"fill-rule\", \"evenodd\")\n .attr(\"clip-rule\", \"evenodd\")\n .attr(\"fill\", \"#179BD7\")\n .attr(\"d\", \"M335.3,321.7c9.5-5.9,13.3-14.5,8.9-19c-4.3-4.3-14.8-3.2-23.6,2.3c-8.8,5.5-13.1,13.7-9.4,18.4C315,328.3,325.9,327.7,335.3,321.7z\")\n ;\n this.circle_4 = this.logo_circles.append(\"path\")\n .attr(\"fill-rule\", \"evenodd\")\n .attr(\"clip-rule\", \"evenodd\")\n .attr(\"fill\", \"#179BD7\")\n .attr(\"d\", \"M273.2,384c-3.2-6.5-13.5-6.7-23.2-0.7c-9.7,6-15.6,16.4-13.2,23.4c2.5,7.3,13.1,8.2,23.6,1.7 C270.8,401.9,276.5,390.8,273.2,384z\")\n ;\n this.circle_5 = this.logo_circles.append(\"path\")\n .attr(\"fill-rule\", \"evenodd\")\n .attr(\"clip-rule\", \"evenodd\")\n .attr(\"fill\", \"#179BD7\")\n .attr(\"d\", \"m 320.84499,363.83119 c 1,-3.4 0.8,-6.6 -1,-9.1 -4.2,-5.9 -15.3,-5.6 -25,0.5 -3.89999,2.4 -7.09999,5.5 -9.19999,8.7 -1.18854,2.2092 -0.0404,-0.09 -1.2,2.2 -2.2,4.1 -2.7,8.3 -0.9,11.5 3.6,6.7 15.09999,7 25.59999,0.5 5,-3.2 8.7,-7.2 10.7,-11.3 0.95557,-2.97582 0.0423,0.0306 1,-3 z\")\n ;\n this.circle_6 = this.logo_circles.append(\"path\")\n .attr(\"fill-rule\", \"evenodd\")\n .attr(\"clip-rule\", \"evenodd\")\n .attr(\"fill\", \"#179BD7\")\n .attr(\"d\", \"M330.4,348.2c4.6,6,17,5.8,27.5-0.8c10.5-6.6,14.3-16.5,8.9-22c-5.2-5.3-17.1-4.4-26.8,1.6C330.3,333.1,325.9,342.4,330.4,348.2z\")\n ;\n this.circle_7 = this.logo_circles.append(\"path\")\n .attr(\"fill-rule\", \"evenodd\")\n .attr(\"clip-rule\", \"evenodd\")\n .attr(\"fill\", \"#179BD7\")\n .attr(\"d\", \"M264.1,417.4c-10.8,6.7-17.2,19-14.2,27.8c3.2,9.2,15.4,11.1,27.2,3.7c11.8-7.4,17.8-20.6,13.6-29.2C286.6,411.6,274.8,410.7,264.1,417.4z\")\n ;\n this.circle_8 = this.logo_circles.append(\"path\")\n .attr(\"fill-rule\", \"evenodd\")\n .attr(\"clip-rule\", \"evenodd\")\n .attr(\"fill\", \"#179BD7\")\n .attr(\"d\", \"M314.2,386.1c-10.8,6.7-16.2,18.4-11.9,26.4c4.5,8.4,17.8,9.5,29.6,2.2c11.8-7.4,16.6-19.9,11.1-27.7C337.7,379.6,324.9,379.3,314.2,386.1z\")\n ;\n\n // Text ---\n this.text = this.root.append(\"g\");\n this.text_hpccsystems = this.text.append(\"path\")\n .attr(\"fill\", \"#6E6E73\")\n .attr(\"d\", \"M224.2,476.3c0.1-1.3,0.1-2.7,0.2-4.1c-0.3,0-0.5,0.1-0.8,0.1c-0.3,0-0.5,0-0.8,0c-0.3,0-0.5,0-0.8,0c-0.3,0-0.5-0.1-0.8-0.1c0.1,1.4,0.1,2.8,0.2,4.1c0.1,1.3,0.1,2.7,0.1,4.1v1.1c-1.1,0-2.3,0-3.3,0.1c-1.1,0-2.2,0-3.3,0c-1.1,0-2.3,0-3.3,0c-1.1,0-2.2,0-3.3-0.1v-1.1c0-1.4,0-2.8,0.1-4.1c0.1-1.3,0.1-2.7,0.2-4.1c-0.3,0-0.5,0.1-0.8,0.1c-0.3,0-0.5,0-0.8,0c-0.3,0-0.5,0-0.8,0c-0.3,0-0.5-0.1-0.8-0.1c0.1,1.4,0.1,2.8,0.2,4.1c0.1,1.3,0.1,2.7,0.1,4.1v5.5c0,1.4,0,2.8-0.1,4.1c-0.1,1.4-0.1,2.7-0.2,4c0.5,0,1-0.1,1.6-0.1c0.6,0,1.1,0,1.6,0.1c-0.1-1.3-0.1-2.7-0.2-4c-0.1-1.4-0.1-2.7-0.1-4.1v-2.9c1.1,0,2.3,0,3.3,0c1.1,0,2.2,0,3.3,0c1.1,0,2.3,0,3.3,0c1.1,0,2.2,0,3.3,0v2.9c0,1.4,0,2.8-0.1,4.1c-0.1,1.4-0.1,2.7-0.2,4c0.5,0,1-0.1,1.6-0.1c0.6,0,1.1,0,1.6,0.1c-0.1-1.3-0.1-2.7-0.2-4c-0.1-1.4-0.1-2.7-0.1-4.1v-5.5C224.1,479,224.1,477.7,224.2,476.3z M242.7,473.8c-0.4-0.4-0.9-0.7-1.4-0.9c-0.5-0.2-1-0.4-1.5-0.5c-0.5-0.1-1-0.2-1.5-0.2c-0.5,0-0.9,0-1.2,0c-0.2,0-0.5,0-0.9,0c-0.3,0-0.7,0-1.1,0c-0.4,0-0.7,0-1.1,0c-0.4,0-0.7,0-0.9,0c-0.5,0-1,0-1.5,0c-0.5,0-1-0.1-1.5-0.1c0.1,1.4,0.1,2.8,0.2,4.1c0.1,1.3,0.1,2.7,0.1,4.1v5.5c0,1.4,0,2.8-0.1,4.1c-0.1,1.4-0.1,2.7-0.2,4c0.5,0,1-0.1,1.6-0.1c0.6,0,1.1,0,1.6,0.1c-0.1-1.3-0.1-2.7-0.2-4c-0.1-1.4-0.1-2.7-0.1-4.1v-1.8c0.4,0,0.8,0.1,1.2,0.1c0.4,0,0.8,0,1.3,0c0.8,0,1.6-0.1,2.6-0.3c1-0.2,1.9-0.5,2.8-1c0.9-0.5,1.6-1.2,2.2-2c0.6-0.9,0.9-2,0.9-3.4c0-0.9-0.1-1.6-0.4-2.2C243.5,474.7,243.1,474.2,242.7,473.8z M240.6,480.4c-0.4,0.7-0.9,1.2-1.4,1.6c-0.6,0.4-1.2,0.7-1.9,0.8c-0.7,0.1-1.4,0.2-2,0.2c-0.8,0-1.5-0.1-2.3-0.3v-9.5h2.9c0.8,0,1.6,0.1,2.2,0.2c0.7,0.1,1.2,0.3,1.7,0.7c0.5,0.3,0.8,0.8,1.1,1.3c0.3,0.6,0.4,1.3,0.4,2.2C241.2,478.8,241,479.7,240.6,480.4z M251.9,475.4c0.8-0.8,1.7-1.5,2.8-1.9c1.1-0.4,2.2-0.6,3.5-0.6c0.8,0,1.5,0.1,2.1,0.3c0.6,0.2,1.2,0.5,1.7,0.7c0.5,0.3,1,0.6,1.3,0.9c0.4,0.3,0.7,0.6,0.9,0.9l0.2-0.1c0.1-0.3,0.1-0.8,0.3-1.3c0.1-0.5,0.2-0.9,0.4-1.2c-0.9-0.4-1.9-0.7-3.1-1c-1.2-0.3-2.4-0.4-3.8-0.4c-1.8,0-3.4,0.3-4.8,0.8c-1.5,0.5-2.7,1.3-3.8,2.2c-1.1,1-1.9,2.2-2.5,3.6c-0.6,1.4-0.9,3-0.9,4.8c0,1.8,0.3,3.4,0.9,4.8c0.6,1.4,1.4,2.6,2.4,3.6c1,1,2.3,1.7,3.7,2.2c1.4,0.5,3,0.7,4.7,0.7c0.8,0,1.5-0.1,2.3-0.2c0.7-0.1,1.4-0.3,2-0.4c0.6-0.2,1.1-0.3,1.5-0.5c0.4-0.2,0.7-0.4,0.9-0.6l0.3-1.9l-0.1-0.1c-0.3,0.2-0.7,0.5-1.1,0.8c-0.4,0.3-0.9,0.6-1.5,0.9c-0.5,0.3-1.1,0.5-1.8,0.7c-0.6,0.2-1.4,0.3-2.1,0.3c-1.3,0-2.4-0.2-3.5-0.6c-1.1-0.4-2-1-2.8-1.9c-0.8-0.8-1.4-1.9-1.9-3.2c-0.4-1.3-0.7-2.8-0.7-4.6c0-1.8,0.2-3.3,0.7-4.6 C250.5,477.3,251.1,476.3,251.9,475.4z M273.2,475.4c0.8-0.8,1.7-1.5,2.8-1.9c1.1-0.4,2.2-0.6,3.5-0.6c0.8,0,1.5,0.1,2.1,0.3c0.6,0.2,1.2,0.5,1.7,0.7c0.5,0.3,1,0.6,1.3,0.9c0.4,0.3,0.7,0.6,0.9,0.9l0.2-0.1c0.1-0.3,0.1-0.8,0.3-1.3c0.1-0.5,0.2-0.9,0.4-1.2c-0.9-0.4-1.9-0.7-3.1-1c-1.2-0.3-2.4-0.4-3.8-0.4c-1.8,0-3.4,0.3-4.8,0.8c-1.5,0.5-2.7,1.3-3.8,2.2c-1.1,1-1.9,2.2-2.5,3.6c-0.6,1.4-0.9,3-0.9,4.8c0,1.8,0.3,3.4,0.9,4.8c0.6,1.4,1.4,2.6,2.4,3.6c1,1,2.3,1.7,3.7,2.2c1.4,0.5,3,0.7,4.7,0.7c0.8,0,1.5-0.1,2.3-0.2c0.7-0.1,1.4-0.3,2-0.4c0.6-0.2,1.1-0.3,1.5-0.5c0.4-0.2,0.7-0.4,0.9-0.6l0.3-1.9l-0.1-0.1c-0.3,0.2-0.7,0.5-1.1,0.8c-0.4,0.3-0.9,0.6-1.5,0.9c-0.5,0.3-1.1,0.5-1.8,0.7c-0.6,0.2-1.4,0.3-2.1,0.3c-1.3,0-2.4-0.2-3.5-0.6c-1.1-0.4-2-1-2.8-1.9c-0.8-0.8-1.4-1.9-1.9-3.2c-0.4-1.3-0.7-2.8-0.7-4.6c0-1.8,0.2-3.3,0.7-4.6 C271.8,477.3,272.4,476.3,273.2,475.4z M308.2,482.9c-0.7-0.4-1.5-0.8-2.4-1.1c-0.9-0.3-1.7-0.7-2.4-1.1c-0.7-0.4-1.4-0.9-1.9-1.5c-0.5-0.6-0.7-1.4-0.7-2.4c0-0.6,0.1-1.1,0.3-1.6c0.2-0.5,0.5-0.9,0.9-1.3c0.4-0.4,0.8-0.6,1.3-0.8c0.5-0.2,1-0.3,1.6-0.3c0.6,0,1.1,0.1,1.5,0.3c0.4,0.2,0.8,0.5,1.1,0.7c0.3,0.3,0.6,0.6,0.7,1c0.2,0.4,0.3,0.7,0.4,1h0.4c0.1-0.6,0.3-1.1,0.4-1.5c0.1-0.4,0.3-0.8,0.5-1.1c-0.6-0.5-1.3-0.9-2.1-1.1c-0.7-0.2-1.6-0.4-2.6-0.4c-1.1,0-2,0.1-2.9,0.4c-0.9,0.3-1.6,0.7-2.2,1.2c-0.6,0.5-1.1,1.2-1.4,1.9c-0.3,0.7-0.5,1.5-0.5,2.4c0,1.3,0.2,2.3,0.7,3c0.5,0.7,1.1,1.4,1.9,1.8c0.7,0.5,1.5,0.9,2.4,1.2c0.9,0.3,1.7,0.7,2.4,1.1c0.7,0.4,1.4,0.9,1.9,1.4c0.5,0.6,0.7,1.3,0.7,2.3c0,0.6-0.1,1.2-0.3,1.8c-0.2,0.6-0.5,1.1-0.9,1.5c-0.4,0.4-0.9,0.7-1.4,1c-0.6,0.2-1.2,0.4-1.9,0.4c-0.7,0-1.3-0.1-1.8-0.3c-0.6-0.2-1-0.5-1.5-0.8c-0.4-0.3-0.8-0.7-1.1-1.1c-0.3-0.4-0.5-0.8-0.7-1.2h-0.4c-0.1,0.6-0.1,1.1-0.2,1.5c-0.1,0.4-0.2,0.8-0.4,1.3c0.6,0.4,1.2,0.8,2.1,1.2c0.8,0.4,1.9,0.5,3.2,0.5c1.2,0,2.3-0.2,3.3-0.5c1-0.4,1.8-0.8,2.5-1.5c0.7-0.6,1.2-1.4,1.5-2.3c0.4-0.9,0.5-1.8,0.5-2.8c0-1.2-0.2-2.1-0.7-2.8C309.6,483.9,309,483.3,308.2,482.9z M328.6,472.2c-0.4,0.9-0.9,1.9-1.4,2.8c-0.5,1-1,1.9-1.5,2.9c-0.5,1-1.1,1.9-1.6,2.8c-0.5,0.9-1,1.8-1.5,2.5c-1.1-1.9-2.2-3.8-3.1-5.6c-1-1.8-2-3.6-2.9-5.5c-0.3,0-0.6,0.1-0.9,0.1c-0.3,0-0.6,0-0.9,0c-0.3,0-0.6,0-0.9,0c-0.3,0-0.6-0.1-0.9-0.1c0.2,0.3,0.5,0.8,0.9,1.5c0.4,0.7,0.9,1.4,1.4,2.3c0.5,0.8,1,1.7,1.6,2.6c0.6,0.9,1.1,1.8,1.6,2.6c0.5,0.8,1,1.6,1.4,2.3c0.4,0.7,0.7,1.2,0.9,1.6c0,1.7,0,3.4,0,4.9c0,1.6-0.1,2.9-0.2,4c0.5,0,1-0.1,1.6-0.1c0.6,0,1.1,0,1.6,0.1c0-0.4-0.1-1-0.1-1.8c0-0.7-0.1-1.5-0.1-2.4c0-0.9,0-1.7,0-2.6c0-0.9,0-1.7,0-2.5c0.3-0.7,0.7-1.4,1.2-2.2c0.5-0.8,1-1.7,1.6-2.8c0.6-1,1.3-2.2,2.1-3.4c0.8-1.3,1.7-2.7,2.7-4.2c-0.5,0.1-0.9,0.2-1.2,0.2C329.5,472.3,329.1,472.3,328.6,472.2z M343.6,482.9c-0.7-0.4-1.5-0.8-2.4-1.1c-0.9-0.3-1.7-0.7-2.4-1.1c-0.7-0.4-1.4-0.9-1.9-1.5c-0.5-0.6-0.7-1.4-0.7-2.4c0-0.6,0.1-1.1,0.3-1.6c0.2-0.5,0.5-0.9,0.9-1.3c0.4-0.4,0.8-0.6,1.3-0.8c0.5-0.2,1-0.3,1.6-0.3c0.6,0,1.1,0.1,1.5,0.3c0.4,0.2,0.8,0.5,1.1,0.7c0.3,0.3,0.6,0.6,0.7,1c0.2,0.4,0.3,0.7,0.4,1h0.4c0.1-0.6,0.3-1.1,0.4-1.5c0.1-0.4,0.3-0.8,0.5-1.1c-0.6-0.5-1.3-0.9-2.1-1.1c-0.7-0.2-1.6-0.4-2.6-0.4c-1.1,0-2,0.1-2.9,0.4c-0.9,0.3-1.6,0.7-2.2,1.2c-0.6,0.5-1.1,1.2-1.4,1.9c-0.3,0.7-0.5,1.5-0.5,2.4c0,1.3,0.2,2.3,0.7,3c0.5,0.7,1.1,1.4,1.9,1.8c0.7,0.5,1.5,0.9,2.4,1.2c0.9,0.3,1.7,0.7,2.4,1.1c0.7,0.4,1.4,0.9,1.9,1.4c0.5,0.6,0.7,1.3,0.7,2.3c0,0.6-0.1,1.2-0.3,1.8c-0.2,0.6-0.5,1.1-0.9,1.5c-0.4,0.4-0.9,0.7-1.4,1c-0.6,0.2-1.2,0.4-1.9,0.4c-0.7,0-1.3-0.1-1.8-0.3c-0.6-0.2-1-0.5-1.5-0.8c-0.4-0.3-0.8-0.7-1.1-1.1c-0.3-0.4-0.5-0.8-0.7-1.2h-0.4c-0.1,0.6-0.1,1.1-0.2,1.5c-0.1,0.4-0.2,0.8-0.4,1.3c0.6,0.4,1.2,0.8,2.1,1.2c0.8,0.4,1.9,0.5,3.2,0.5c1.2,0,2.3-0.2,3.3-0.5c1-0.4,1.8-0.8,2.5-1.5c0.7-0.6,1.2-1.4,1.5-2.3c0.4-0.9,0.5-1.8,0.5-2.8c0-1.2-0.2-2.1-0.7-2.8C345,483.9,344.4,483.3,343.6,482.9z M360.7,472.3c-1.3,0-2.7,0-4.1,0c-1.4,0-2.8,0-4.1,0c-1.3,0-2.7-0.1-4.1-0.1c0.1,0.4,0.2,0.8,0.2,1c0,0.3-0.1,0.6-0.2,1c0.4-0.1,1-0.1,1.5-0.2c0.6,0,1.1-0.1,1.8-0.1c0.6,0,1.2-0.1,1.8-0.1c0.6,0,1.2,0,1.7,0c0.1,2.2,0.1,4.4,0.1,6.6v5.5c0,1.4,0,2.8-0.1,4.1c-0.1,1.4-0.1,2.7-0.2,4c0.5,0,1-0.1,1.6-0.1c0.6,0,1.1,0,1.6,0.1c-0.1-1.3-0.1-2.7-0.2-4c-0.1-1.4-0.1-2.7-0.1-4.1v-5.5c0-2.2,0-4.4,0.1-6.6c0.6,0,1.1,0,1.7,0c0.6,0,1.2,0,1.8,0.1c0.6,0,1.2,0.1,1.8,0.1c0.6,0,1.1,0.1,1.5,0.2c-0.1-0.4-0.2-0.7-0.2-1c0-0.3,0.1-0.6,0.2-1C363.4,472.2,362,472.3,360.7,472.3z M379.8,492.3c-0.5,0.1-1.1,0.2-1.8,0.2c-0.7,0.1-1.4,0.1-2.2,0.1c-0.8,0-1.6,0-2.4,0h-2.2c0-0.4,0-1,0-1.8c0-0.8,0-1.8,0-3v-3.2c0-0.3,0-0.6,0-0.8c0-0.2,0-0.4,0-0.6c0.4,0,0.9,0,1.5,0c0.6,0,1.3,0,2.1,0c0.7,0,1.5,0,2.2,0.1c0.7,0,1.4,0.1,1.9,0.2c-0.1-0.3-0.1-0.6-0.1-1c0-0.3,0-0.7,0.1-1c-0.5,0-1,0.1-1.5,0.1c-0.5,0-1.1,0.1-1.7,0.1c-0.6,0-1.3,0.1-2,0.1c-0.7,0-1.6,0-2.5,0c0-0.4,0-1,0-1.8c0-0.8,0-1.6,0-2.4c0-0.8,0-1.5,0-2.1c0-0.6,0.1-1.3,0.1-1.9c1,0,1.9,0,2.7,0c0.7,0,1.4,0.1,2.1,0.1c0.6,0,1.2,0.1,1.8,0.1c0.6,0,1.2,0.1,1.9,0.1c-0.1-0.3-0.1-0.6-0.1-1c0-0.3,0-0.6,0.1-1c-1,0-1.9,0.1-2.8,0.1c-0.9,0-1.9,0-2.8,0c-1,0-1.9,0-2.9,0c-0.9,0-1.9-0.1-2.9-0.1c0.1,1.4,0.1,2.7,0.2,4.1c0.1,1.4,0.1,2.7,0.1,4.1v5.5c0,1.4,0,2.8-0.1,4.1c-0.1,1.4-0.1,2.7-0.2,4.1c1,0,1.9-0.1,2.9-0.1h5.8c0.9,0,1.9,0,2.9,0.1c-0.1-0.2-0.1-0.5-0.1-0.8c0-0.1,0-0.3,0-0.5C379.7,492.6,379.8,492.4,379.8,492.3z M406.8,483.3c-0.2-1.8-0.4-3.7-0.6-5.6c-0.2-1.9-0.4-3.9-0.7-5.9h-0.4c-0.5,1-1.1,2-1.7,3.2c-0.6,1.1-1.2,2.3-1.9,3.4c-0.6,1.2-1.2,2.3-1.8,3.5c-0.6,1.1-1.2,2.2-1.7,3.2c-0.5,1-1,1.8-1.4,2.6c-0.4,0.8-0.7,1.3-0.9,1.7c-1.6-3-3.2-5.9-4.7-8.8c-1.5-2.8-3-5.8-4.4-8.8H386c-0.2,1.7-0.4,3.5-0.6,5.4c-0.2,1.9-0.5,3.8-0.8,5.7c-0.3,1.9-0.6,3.9-0.9,5.8c-0.3,1.9-0.6,3.7-0.9,5.5c0.3,0,0.7-0.1,1.1-0.1c0.4,0,0.8,0,1.1,0.1c0-0.9,0.1-1.9,0.2-3.3c0.1-1.3,0.2-2.7,0.4-4.2c0.1-1.5,0.3-3,0.5-4.6c0.2-1.5,0.3-3,0.5-4.3h0.1c1.4,2.8,2.8,5.6,4.2,8.2c1.4,2.7,2.7,5.4,4,8h0.3c1.3-2.9,2.6-5.7,4-8.3c1.4-2.6,2.9-5.3,4.3-8h0.1c0.3,2.8,0.6,5.5,0.9,8.1c0.2,2.7,0.5,5.4,0.7,8.2c0.3,0,0.5-0.1,0.7-0.1h1.5c0.2,0,0.5,0,0.7,0.1c-0.3-1.8-0.5-3.5-0.7-5.3 C407.2,486.9,407,485.1,406.8,483.3z M423.4,484.6c-0.5-0.7-1.1-1.3-1.9-1.7c-0.7-0.4-1.5-0.8-2.4-1.1c-0.9-0.3-1.7-0.7-2.4-1.1c-0.7-0.4-1.4-0.9-1.9-1.5c-0.5-0.6-0.7-1.4-0.7-2.4c0-0.6,0.1-1.1,0.3-1.6c0.2-0.5,0.5-0.9,0.9-1.3c0.4-0.4,0.8-0.6,1.3-0.8c0.5-0.2,1-0.3,1.6-0.3c0.6,0,1.1,0.1,1.5,0.3c0.4,0.2,0.8,0.5,1.1,0.7c0.3,0.3,0.6,0.6,0.7,1c0.2,0.4,0.3,0.7,0.4,1h0.4c0.1-0.6,0.3-1.1,0.4-1.5c0.1-0.4,0.3-0.8,0.5-1.1c-0.6-0.5-1.3-0.9-2.1-1.1c-0.7-0.2-1.6-0.4-2.6-0.4c-1.1,0-2,0.1-2.9,0.4c-0.9,0.3-1.6,0.7-2.2,1.2c-0.6,0.5-1.1,1.2-1.4,1.9c-0.3,0.7-0.5,1.5-0.5,2.4c0,1.3,0.2,2.3,0.7,3c0.5,0.7,1.1,1.4,1.9,1.8c0.7,0.5,1.5,0.9,2.4,1.2c0.9,0.3,1.7,0.7,2.4,1.1c0.7,0.4,1.4,0.9,1.9,1.4c0.5,0.6,0.7,1.3,0.7,2.3c0,0.6-0.1,1.2-0.3,1.8c-0.2,0.6-0.5,1.1-0.9,1.5c-0.4,0.4-0.9,0.7-1.4,1c-0.6,0.2-1.2,0.4-1.9,0.4c-0.7,0-1.3-0.1-1.8-0.3c-0.6-0.2-1-0.5-1.5-0.8c-0.4-0.3-0.8-0.7-1.1-1.1c-0.3-0.4-0.5-0.8-0.7-1.2h-0.4c-0.1,0.6-0.1,1.1-0.2,1.5c-0.1,0.4-0.2,0.8-0.4,1.3c0.6,0.4,1.2,0.8,2.1,1.2c0.8,0.4,1.9,0.5,3.2,0.5c1.2,0,2.3-0.2,3.3-0.5c1-0.4,1.8-0.8,2.5-1.5c0.7-0.6,1.2-1.4,1.5-2.3c0.4-0.9,0.5-1.8,0.5-2.8 C424.2,486.3,423.9,485.3,423.4,484.6z\")\n ;\n this.text_r = this.text.append(\"path\")\n .attr(\"fill\", \"#6E6E73\")\n .attr(\"d\", \"M433.1,472.1c2.2,0,3.9,1.8,3.9,3.9c0,2.2-1.8,3.9-3.9,3.9c-2.2,0-3.9-1.8-3.9-3.9 C429.2,473.8,430.9,472.1,433.1,472.1z M433.1,479.5c1.9,0,3.5-1.6,3.5-3.5s-1.5-3.5-3.5-3.5s-3.5,1.6-3.5,3.5 S431.2,479.5,433.1,479.5z M431.7,475c0-0.5,0-1.1-0.1-1.5c0.3,0,0.6,0.1,0.9,0.1c0.3,0,0.6-0.1,0.9-0.1c0.8,0,1.4,0.4,1.4,1.1c0,0.9-1,1.3-1.5,1.4c0.6,0.7,1.5,2,1.9,2.4v0.1c-0.1,0-0.3-0.1-0.4-0.1c-0.1,0-0.3,0-0.4,0.1c-0.5-0.8-1.1-1.6-1.8-2.4h-0.4v0.8c0,0.5,0,1.1,0.1,1.6c-0.1,0-0.2-0.1-0.4-0.1c-0.1,0-0.2,0-0.4,0.1c0-0.5,0.1-1,0.1-1.5V475z M432.2,475.7c0.1,0,0.3,0,0.5,0c0.7,0,1.4-0.3,1.4-1.1c0-0.6-0.4-0.9-1-0.9c-0.3,0-0.5,0-0.8,0.1c0,0.3-0.1,0.7-0.1,1V475.7z\")\n ;\n this.text_tm = this.text.append(\"path\")\n .attr(\"fill\", \"#6E6E73\")\n .attr(\"d\", \"M376.1,322.1c0-0.6,0-1.2,0-1.9c-0.6,0-1.4,0-1.9,0.1c0-0.1,0-0.2,0-0.3c0-0.1,0-0.2,0-0.3c0.8,0,1.5,0,2.3,0s1.5,0,2.3,0c0,0.1,0,0.2,0,0.3c0,0.1,0,0.2,0,0.3c-0.5-0.1-1.3-0.1-1.9-0.1c0,0.6,0,1.2,0,1.9v1.5c0,0.8,0,1.6,0.1,2.3c-0.2,0-0.3,0-0.4,0c-0.1,0-0.3,0-0.4,0c0-0.8,0.1-1.6,0.1-2.3V322.1zM380.5,319.7c0.8,1.7,1.7,3.3,2.6,5c0.4-0.7,1.8-3.3,2.7-5h0.1c0.3,2.3,0.5,4.3,0.7,6.3c-0.1,0-0.3,0-0.4,0c-0.1,0-0.3,0-0.4,0c-0.1-1.6-0.3-3.1-0.4-4.6h0c-0.8,1.5-1.6,3-2.4,4.6h-0.1c-0.7-1.5-1.5-3-2.3-4.6h0c-0.2,1.5-0.4,3.6-0.4,4.6c-0.1,0-0.2,0-0.3,0c-0.1,0-0.2,0-0.3,0c0.3-2,0.7-4.4,0.9-6.3H380.5z\")\n ;\n\n const bbox = this.root.node().getBBox();\n const centerX = bbox.x + bbox.width / 2;\n const centerY = bbox.y + bbox.height / 2;\n const scale = Math.min(this.width(), this.height()) / Math.max(bbox.width, bbox.height);\n this.root\n .attr(\"transform\", \"translate(\" + (-centerX * scale) + \",\" + (-centerY * scale) + \")scale(\" + scale + \")\")\n ;\n }\n\n update(domNode, element) {\n super.update(domNode, element);\n\n switch (this.animation()) {\n case \"none\":\n break;\n case \"accentInOut\":\n this.logo.attr(\"opacity\", 0);\n this.logo_accent.attr(\"transform\", \"translate(-400, 0)\");\n this.text.attr(\"opacity\", 0);\n\n this.logo.transition().duration(1000)\n .attr(\"opacity\", 1)\n ;\n this.logo_accent.transition().delay(500).duration(1500)\n .attr(\"transform\", \"translate(0, 0)\")\n ;\n this.text.transition().delay(100).duration(1000)\n .attr(\"opacity\", 1)\n ;\n this.logo_accent.transition().ease(\"back\").delay(7000).duration(1500)\n .attr(\"transform\", \"translate(400, 0)\")\n ;\n this.text.transition().delay(8400).duration(1000)\n .attr(\"opacity\", 0)\n ;\n this.logo_accent.transition().delay(8500).duration(1000)\n .attr(\"opacity\", 0)\n ;\n this.logo.transition().delay(8500).duration(1000)\n .attr(\"opacity\", 0)\n ;\n break;\n case \"accentIn\":\n this.logo.attr(\"opacity\", 0);\n this.logo_accent.attr(\"transform\", \"translate(-400, 0)\");\n this.text.attr(\"opacity\", 0);\n\n this.logo.transition().duration(1000)\n .attr(\"opacity\", 1)\n ;\n this.logo_accent.transition().delay(500).duration(1500)\n .attr(\"transform\", \"translate(0, 0)\")\n ;\n this.text.transition().delay(100).duration(1000)\n .attr(\"opacity\", 1)\n ;\n break;\n case \"fade_in\":\n this.logo.attr(\"opacity\", 0);\n // this.logo_accent.attr(\"transform\", \"translate(-400, 0)\");\n this.logo_accent.attr(\"opacity\", 0);\n this.text.attr(\"opacity\", 0);\n\n this.logo.transition().duration(1000)\n .attr(\"opacity\", 1)\n ;\n /*\n this.logo_accent.transition().delay(500).duration(1500)\n .attr(\"transform\", \"translate(0, 0)\")\n ;\n */\n this.logo_accent.transition().duration(1000)\n .attr(\"opacity\", 1)\n ;\n this.text.transition().delay(100).duration(1000)\n .attr(\"opacity\", 1)\n ;\n /*\n this.logo_accent.transition().ease(\"back\").delay(7000).duration(1500)\n .attr(\"transform\", \"translate(400, 0)\")\n ;\n */\n /*\n this.text.transition().delay(8400).duration(1000)\n .attr(\"opacity\", 0)\n ;\n this.logo_accent.transition().delay(8500).duration(1000)\n .attr(\"opacity\", 0)\n ;\n this.logo.transition().delay(8500).duration(1000)\n .attr(\"opacity\", 0)\n ;\n */\n break;\n default:\n break;\n }\n }\n}\nHPCCBadge.prototype._class += \" other_HPCCBadge\";\n\nexport interface HPCCBadge {\n animation(): \"none\" | \"accentInOut\" | \"accentIn\" | \"fade_in\";\n animation(_: \"none\" | \"accentInOut\" | \"accentIn\" | \"fade_in\"): this;\n}\n\nHPCCBadge.prototype.publish(\"animation\", \"none\", \"set\", \"Animation Style\", [\"none\", \"accentInOut\", \"accentIn\", \"fade_in\"]);\n", "import { HTMLWidget } from \"@hpcc-js/common\";\n\nimport \"../src/Html.css\";\n\nexport class Html extends HTMLWidget {\n constructor() {\n super();\n\n this._tag = \"div\";\n }\n\n enter(domNode, element) {\n super.enter(domNode, element);\n }\n\n update(domNode, element) {\n super.update(domNode, element);\n\n element\n .style(\"overflow-x\", this.overflowX_exists() ? this.overflowX() : \"\")\n .style(\"overflow-y\", this.overflowY_exists() ? this.overflowY() : \"\")\n ;\n\n const html = element.selectAll(\".htmlWrapper\").data(this.data().length > 0 ? this.data() : [this.html()]);\n html.enter().append(\"div\")\n .attr(\"class\", \"htmlWrapper\")\n .merge(html)\n .html(function (d) { return d; })\n ;\n html.exit().remove();\n }\n}\nHtml.prototype._class += \" other_Html\";\n\nexport interface Html {\n html(): string;\n html(_: string): Html;\n overflowX(): string;\n overflowX(_: string): Html;\n overflowX_exists(): boolean;\n overflowY(): string;\n overflowY(_: string): Html;\n overflowY_exists(): boolean;\n}\n\nHtml.prototype.publish(\"html\", \"\", \"string\", \"Html to render\", null, { tags: [\"Basic\"] });\nHtml.prototype.publish(\"overflowX\", null, \"set\", \"CSS overflow-x\", [\"\", \"visible\", \"hidden\", \"scroll\", \"auto\", \"initial\", \"inherit\"], { tags: [\"Basic\"], optional: true });\nHtml.prototype.publish(\"overflowY\", null, \"set\", \"CSS overflow-y\", [\"\", \"visible\", \"hidden\", \"scroll\", \"auto\", \"initial\", \"inherit\"], { tags: [\"Basic\"], optional: true });\n", "(function(){\n if (!document.getElementById('aef0e5c9')) {\n var e = document.createElement('style');\n e.id = 'aef0e5c9';\n e.textContent = `.other_Html{\n height:100%;\n width:100%;\n overflow-x:auto;\n overflow-y:scroll;\n}`;\n document.head.appendChild(e);\n }\n })();", "import { Entity, HTMLWidget } from \"@hpcc-js/common\";\nimport { HorizontalList, VerticalList } from \"@hpcc-js/layout\";\nimport { select as d3Select } from \"d3-selection\";\nimport { Html } from \"./Html.ts\";\n\nimport \"../src/IconList.css\";\n\nexport class IconList extends HTMLWidget {\n protected _list;\n protected _entity_list = [];\n protected _content_list = [];\n constructor() {\n super();\n this._list = new HorizontalList()\n .orientation_default(\"horizontal\")\n .flexWrap_default(\"nowrap\")\n ;\n }\n enter(domNode, element) {\n super.enter(domNode, element);\n element\n .style(\"height\", \"100%\")\n .style(\"width\", \"100%\")\n ;\n d3Select(domNode.parentElement)\n .style(\"height\", \"100%\")\n .style(\"width\", \"100%\")\n ;\n this._list.target(domNode);\n }\n update(domNode, element) {\n super.update(domNode, element);\n const listWidgets = this._list.widgets();\n this.data().forEach((row, idx) => {\n if (!listWidgets[idx]) {\n listWidgets[idx] = this.updateListProperties(new VerticalList(), idx)\n .widgets([\n this.updateEntityProperties(new Entity(), idx),\n new Html().html(this.data()[idx][this.htmlColumnIndex_exists() ? this.htmlColumnIndex() : 1])\n ]);\n } else {\n listWidgets[idx] = this.updateListProperties(listWidgets[idx], idx);\n this.updateEntityProperties(listWidgets[idx].widgets()[0], idx);\n listWidgets[idx]\n .widgets()[1]\n .html(this.data()[idx][this.htmlColumnIndex_exists() ? this.htmlColumnIndex() : 1])\n ;\n }\n });\n this._list.widgets(listWidgets.slice(0, this.data().length));\n this._list.resize().render();\n }\n updateListProperties(list, idx) {\n return list\n .disableScroll(true)\n .widgetsFlexBasis([this.iconSize() + \"px\", `calc(100% - ${this.iconSize()}px)`])\n ;\n }\n updateEntityProperties(entity, idx) {\n return entity\n .icon(this.iconColumnIndex_exists() ? this.data()[idx][this.iconColumnIndex()] : \"?\")\n .iconColor(this.iconColorColumnIndex_exists() ? this.data()[idx][this.iconColorColumnIndex()] : \"#000\")\n .iconDiameter(this.iconSize())\n .iconPaddingPercent(0)\n ;\n }\n}\nIconList.prototype._class += \" other_IconList\";\n\nexport interface IconList {\n iconSize(): number;\n iconSize(_: number): this;\n iconColumnIndex(): number;\n iconColumnIndex(_: number): this;\n iconColumnIndex_exists(): boolean;\n iconColorColumnIndex(): number;\n iconColorColumnIndex(_: number): this;\n iconColorColumnIndex_exists(): boolean;\n htmlColumnIndex(): number;\n htmlColumnIndex(_: number): this;\n htmlColumnIndex_exists(): boolean;\n}\nIconList.prototype.publish(\"iconSize\", 72, \"number\", \"Size of icon (pixels)\");\nIconList.prototype.publish(\"iconColumnIndex\", 0, \"number\", \"Index of column containing icon character\");\nIconList.prototype.publish(\"iconColorColumnIndex\", 1, \"number\", \"Index of column containing icon color\");\nIconList.prototype.publish(\"htmlColumnIndex\", 2, \"number\", \"Index of column containing html string\");\n", "(function(){\n if (!document.getElementById('b0cb2053')) {\n var e = document.createElement('style');\n e.id = 'b0cb2053';\n e.textContent = `.other_IconList .other_Html{\n overflow-x: hidden;\n overflow-y: hidden;\n}`;\n document.head.appendChild(e);\n }\n })();", "import { Palette, Platform } from \"@hpcc-js/common\";\nimport { format as d3Format } from \"d3-format\";\nimport { select as d3Select } from \"d3-selection\";\nimport { Table } from \"./Table.ts\";\n\nimport \"../src/Legend.css\";\n\nfunction _htmlColorBlock(hexColor) {\n return \"<div class=\\\"colorBlock\\\" style=\\\"background-color:\" + hexColor + \";\\\"></div>\";\n}\n\nexport class Legend extends Table {\n _targetWidget;\n _targetWidgetMonitor;\n\n constructor() {\n super();\n\n this.showHeader(false);\n this.pagination(false);\n }\n\n isRainbow() {\n const widget = this.getWidget();\n return widget && widget._palette && widget._palette.type() === \"rainbow\";\n }\n\n targetWidget(): any;\n targetWidget(_: any): this;\n targetWidget(_?: any): any | this {\n if (!arguments.length) return this._targetWidget;\n this._targetWidget = _;\n if (this._targetWidgetMonitor) {\n this._targetWidgetMonitor.remove();\n delete this._targetWidgetMonitor;\n }\n const context = this;\n this._targetWidgetMonitor = this._targetWidget.monitor(function (key, newProp, oldProp, source) {\n switch (key) {\n case \"chart\":\n case \"columns\":\n case \"data\":\n case \"paletteID\":\n context.lazyRender();\n break;\n }\n });\n return this;\n }\n\n getWidget() {\n if (this._targetWidget) {\n switch (this._targetWidget.classID()) {\n case \"chart_MultiChart\":\n return this._targetWidget.chart();\n }\n }\n return this._targetWidget;\n }\n\n getPalette() {\n const widget = this.getWidget();\n if (widget && widget._palette) {\n switch (widget._palette.type()) {\n case \"ordinal\":\n return Palette.ordinal(widget._palette.id());\n case \"rainbow\":\n return Palette.rainbow(widget._palette.id());\n }\n }\n return Palette.ordinal(\"default\");\n }\n\n enter(domNode, element) {\n super.enter(domNode, element);\n d3Select(domNode.parentNode).style(\"overflow-y\", \"auto\");\n\n this.renderHtmlDataCells(true);\n this.fixedHeader(false);\n this.fixedSize(true);\n element.classed(\"other_Legend\", true);\n }\n\n update(domNode, element) {\n const colArr = [\"Key\", \"Label\"];\n let dataArr = [];\n if (this._targetWidget) {\n const _palette = this.getPalette();\n switch (_palette.type()) {\n case \"ordinal\":\n const oPalette = _palette as Palette.OrdinalPaletteFunc;\n switch (this.dataFamily()) {\n case \"2D\":\n dataArr = this._targetWidget.data().map(function (n) {\n return [_htmlColorBlock(oPalette(n[0])), n[0]];\n }, this);\n break;\n case \"ND\":\n const widgetColumns = this._targetWidget.columns();\n dataArr = widgetColumns.filter(function (n, i) { return i > 0; }).map(function (n) {\n return [_htmlColorBlock(oPalette(n)), n];\n }, this);\n break;\n }\n break;\n case \"rainbow\":\n const rPalette = _palette as Palette.RainbowPaletteFunc;\n const format = d3Format(this.rainbowFormat());\n const widget = this.getWidget();\n const steps = this.rainbowBins();\n const weightMin = widget._dataMinWeight;\n const weightMax = widget._dataMaxWeight;\n const stepWeightDiff = (weightMax - weightMin) / (steps - 1);\n dataArr.push([_htmlColorBlock(rPalette(weightMin, weightMin, weightMax)), format(weightMin)]);\n for (let x = 1; x < steps - 1; ++x) {\n const mid = stepWeightDiff * x;\n dataArr.push([_htmlColorBlock(rPalette(mid, weightMin, weightMax)), format(Math.floor(mid))]);\n }\n dataArr.push([_htmlColorBlock(rPalette(weightMax, weightMin, weightMax)), format(weightMax)]);\n break;\n }\n }\n this.columns(colArr);\n this.data(dataArr);\n super.update(domNode, element);\n\n element.classed(\"horiz-legend\", this.orientation() === \"horizontal\");\n\n const table = element.select(\".tableDiv > table\");\n const tableRect = table.node().getBoundingClientRect();\n const elementRect = this._placeholderElement.node().getBoundingClientRect();\n\n element.select(\".tableDiv\").style(\"overflow\", \"visible\");\n\n const top = elementRect.height / 2 - tableRect.height / 2;\n const left = elementRect.width / 2 - tableRect.width / 2;\n table\n .style(\"position\", \"absolute\")\n .style(\"top\", top + \"px\")\n .style(\"left\", left + \"px\")\n ;\n\n const startIndex = this.pageNumber() - 1;\n const itemsOnPage = this.itemsPerPage();\n\n const start = startIndex * itemsOnPage;\n const end = startIndex * parseInt(itemsOnPage) + parseInt(itemsOnPage);\n\n let tData = null;\n if (this.pagination()) {\n tData = this.data().slice(start, end);\n } else {\n tData = this.data();\n }\n\n const rows = this.tbody.selectAll(\"tr\").data(tData);\n const context = this;\n rows\n .on(\"click\", function (d, i) {\n context.onClick(d, i);\n })\n .on(\"dblclick\", function (d, i) {\n context.onDblClick(d, i);\n })\n .on(\"mouseover\", function (d, i) {\n context.onMouseOver(d, i);\n })\n ;\n }\n\n exit(domNode, element) {\n if (this._targetWidgetMonitor) {\n this._targetWidgetMonitor.remove();\n delete this._targetWidgetMonitor;\n }\n super.exit(domNode, element);\n }\n\n onClick(rowData, rowIdx) {\n }\n\n onDblClick(rowData, rowIdx) {\n }\n\n onMouseOver(rowData, rowIdx) {\n }\n\n}\nLegend.prototype._class += \" other_Legend\";\n\nexport interface Legend {\n dataFamily(): string;\n dataFamily(_: string): this;\n dataFamily_exists(): boolean;\n orientation(): string;\n orientation(_: string): this;\n orientation_exists(): boolean;\n rainbowFormat(): string;\n rainbowFormat(_: string): this;\n rainbowFormat_exists(): boolean;\n rainbowBins(): number;\n rainbowBins(_: number): this;\n rainbowBins_exists(): boolean;\n}\n\nLegend.prototype.publish(\"dataFamily\", \"ND\", \"set\", \"Type of data\", [\"1D\", \"2D\", \"ND\", \"map\", \"any\", \"other\"], { tags: [\"Private\"] });\nLegend.prototype.publish(\"orientation\", \"vertical\", \"set\", \"Orientation of Legend rows\", [\"vertical\", \"horizontal\"], { tags: [\"Private\"] });\nLegend.prototype.publish(\"rainbowFormat\", \",\", \"string\", \"Rainbow number formatting\", null, { tags: [\"Private\"], optional: true, disable: w => !w.isRainbow() });\nLegend.prototype.publish(\"rainbowBins\", 8, \"number\", \"Number of rainbow bins\", null, { tags: [\"Private\"], disable: w => !w.isRainbow() });\n\nconst origGetBBox = Table.prototype.getBBox;\nLegend.prototype.getBBox = function (refresh, round) {\n const retVal = origGetBBox.apply(this, arguments);\n const table = this.element().select(\".tableDiv > table\");\n if (!table.empty()) {\n const tableRect = table.node().getBoundingClientRect();\n const width = tableRect.width + 8 + (this.hasVScroll(this._placeholderElement) ? Platform.getScrollbarWidth() : 0);\n const height = tableRect.height + 8 + (this.hasHScroll(this._placeholderElement) ? Platform.getScrollbarWidth() : 0);\n return {\n x: retVal.x,\n y: retVal.y,\n width: (round ? Math.round(width) : width) * this._scale,\n height: (round ? Math.round(height) : height) * this._scale\n };\n }\n return retVal;\n};\n", "import { d3Event, HTMLWidget, Platform, select as d3Select, selectAll as d3SelectAll, Utility, Widget } from \"@hpcc-js/common\";\nimport { Paginator } from \"./Paginator.ts\";\n\nimport \"../src/Table.css\";\n\nexport class Table extends HTMLWidget {\n protected _paginator;\n protected _selectionBag;\n protected _selectionPrevClick;\n protected _paginatorTableSpacing;\n\n tableDiv;\n thead;\n table;\n fixedHead;\n fixedHeadTable;\n fixedThead;\n unfixedThead;\n tbody;\n tfoot;\n fixedCol;\n fixedColTable;\n fixedColHead;\n fixedColHeadRow;\n fixedColBody;\n fixedColFoot;\n fixedColFootRow;\n protected _prevDescending;\n protected _prevSortByFieldIndex;\n protected _hasChildWidgets;\n protected _tNumPages;\n protected _empty_col_idx_arr: any[];\n\n constructor() {\n super();\n this._tag = \"div\";\n this.columns([]);\n this._paginator = new Paginator();\n this._selectionBag = new Utility.Selection(this);\n this._selectionPrevClick = null;\n this._paginatorTableSpacing = 4;\n }\n\n size(): any;\n size(_): Widget;\n size(_?): any | Widget {\n const retVal = super.size.apply(this, arguments);\n if (arguments.length) {\n if (this.tableDiv) {\n const topMargin = this.showHeader() && this.fixedHeader() ? this.thead.property(\"offsetHeight\") : 0;\n this.tableDiv\n .style(\"width\", this._size.width + \"px\")\n .style(\"height\", this._size.height - topMargin + \"px\")\n ;\n this._element\n .style(\"width\", this._size.width + \"px\")\n .style(\"height\", this._size.height + \"px\")\n ;\n }\n }\n\n return retVal;\n }\n\n isHidden(colIdx) {\n if (this.pivot()) return false;\n if (this.hiddenColumns().indexOf(colIdx) !== -1) return true;\n const fields = this.fields();\n if (fields && fields[colIdx] && (fields[colIdx].type() === \"hidden\" || this._empty_col_idx_arr.indexOf(colIdx) !== -1)) {\n return true;\n }\n return false;\n }\n\n tableColumns(_?: string[]): string[] {\n const retVal = this.columns.apply(this, arguments);\n if (!arguments.length && this.pivot()) {\n return this._db.column(0);\n }\n return retVal;\n }\n\n tableData(_?) {\n const retVal = this.data.apply(this, arguments);\n if (!arguments.length && this.pivot()) {\n return this._db.columns().filter(function (col, idx) { return idx > 0; });\n }\n return retVal;\n }\n\n field(rowIdx, colIdx) {\n const noTransform = { transform: d => d };\n if (this.pivot()) {\n if (colIdx === 0) return noTransform;\n return this.fields()[rowIdx + 1];\n }\n if (rowIdx === -1) return noTransform;\n return this.fields()[colIdx];\n }\n\n calcFieldsIndex(colIdx) {\n let i = -1;\n let offset = 0;\n const colLen = this.columns().length;\n let visibleCount = 0;\n while (i < colLen && visibleCount <= colIdx) {\n i++;\n if (this.isHidden(i)) {\n offset++;\n } else {\n visibleCount++;\n }\n }\n return colIdx + offset;\n }\n\n getEmptyColumnIdxArr(columns, data) {\n const ret_arr = [];\n if (this.hideEmptyColumns()) {\n for (let col_idx = 0; col_idx < columns.length; col_idx++) {\n let column_is_empty = true;\n for (let row_idx = 0; row_idx < data.length; row_idx++) {\n if ([\"\", null, undefined].indexOf(data[row_idx][col_idx]) === -1) {\n column_is_empty = false;\n break;\n }\n }\n if (column_is_empty) {\n ret_arr.push(col_idx);\n }\n }\n }\n return ret_arr;\n }\n\n enter(domNode, element) {\n super.enter(domNode, element);\n this._placeholderElement.style(\"overflow\", \"hidden\");\n\n this.tableDiv = element.append(\"div\").attr(\"class\", \"tableDiv\");\n this.table = this.tableDiv.append(\"table\");\n this.fixedHead = element.append(\"div\").classed(\"header-wrapper\", true);\n this.fixedHeadTable = this.fixedHead.append(\"table\");\n this.fixedThead = this.fixedHeadTable.append(\"thead\").append(\"tr\");\n this.unfixedThead = this.table.append(\"thead\").append(\"tr\");\n this.tbody = this.table.append(\"tbody\");\n this.tfoot = this.table.append(\"tfoot\").append(\"tr\");\n this.fixedCol = element.append(\"div\").classed(\"rows-wrapper\", true);\n this.fixedColTable = this.fixedCol.append(\"table\");\n this.fixedColHead = this.fixedColTable.append(\"thead\");\n this.fixedColHeadRow = this.fixedColHead.append(\"tr\");\n this.fixedColBody = this.fixedColTable.append(\"tbody\");\n this.fixedColFoot = this.fixedColTable.append(\"tfoot\");\n this.fixedColFootRow = this.fixedColFoot.append(\"tr\");\n\n this.tableDiv\n .style(\"overflow\", \"auto\")\n ;\n }\n\n update(domNode, element) {\n super.update(domNode, element);\n const context = this;\n const columns = context.tableColumns();\n const data = context.tableData();\n const scrollLeft = this.tableDiv.node().scrollLeft;\n this._empty_col_idx_arr = this.getEmptyColumnIdxArr(columns, data);\n\n this.element().selectAll(\"table,tbody,th,td\").style(\"width\", null);\n\n if (this.sortByFieldIndex_exists() && (this._prevSortByFieldIndex !== this.sortByFieldIndex() || this._prevDescending !== this.descending())) {\n Utility.multiSort(data, [{ idx: this.sortByFieldIndex(), reverse: this.descending() }]);\n this._prevSortByFieldIndex = this.sortByFieldIndex();\n this._prevDescending = this.descending();\n }\n\n this._hasChildWidgets = false;\n\n if (this.fixedHeader()) {\n this.thead = this.fixedThead;\n } else {\n this.thead = this.unfixedThead;\n }\n this.fixedHead.style(\"display\", this.fixedHeader() ? \"table-row\" : \"none\");\n this.unfixedThead.style(\"display\", this.fixedHeader() ? \"none\" : \"table-row\");\n\n const thSel = this.thead.selectAll(\"th\").data(this.showHeader() ? columns.filter(function (col, idx) {\n return !context.isHidden(idx) && context._empty_col_idx_arr.indexOf(idx) === -1;\n }) : []);\n const thUpdate = thSel.enter().append(\"th\")\n .each(function (d) {\n const element2 = d3Select(this);\n element2\n .append(\"span\")\n .attr(\"class\", \"thText\")\n ;\n element2\n .append(\"span\")\n .attr(\"class\", \"thIcon\")\n ;\n })\n .on(\"click\", function (column, idx) {\n context.headerClick(column, idx);\n })\n .merge(thSel)\n .style(\"background-color\", this.theadRowBackgroundColor())\n .style(\"border-color\", this.theadCellBorderColor())\n .style(\"color\", this.theadFontColor())\n .style(\"font-size\", this.theadFontSize())\n ;\n thUpdate.select(\".thText\")\n .style(\"font-family\", this.theadFontFamily())\n .text(function (column, idx) {\n const fieldsIdx = context.calcFieldsIndex(idx);\n return context.field(-1, fieldsIdx).transform(column);\n })\n ;\n thUpdate.select(\".thIcon\")\n .text(function (column, idx) {\n if (context.descending()) {\n return context.sortByFieldIndex() === idx ? \"\\uf078\" : \"\";\n } else {\n return context.sortByFieldIndex() === idx ? \"\\uf077\" : \"\";\n }\n })\n ;\n thSel.exit()\n .remove()\n ;\n thUpdate.order();\n\n if (this.paginationLimit()) {\n this.pagination(data.length >= parseInt(this.paginationLimit()) ? true : false);\n }\n if (this.pagination()) {\n if (this._paginator.target() === null) {\n this._paginator.target(element.node());\n }\n\n const ipp = this._calcRowsPerPage(thUpdate);\n this.itemsPerPage(ipp);\n\n this._paginator.numItems(data.length);\n this._tNumPages = Math.ceil(this._paginator.numItems() / this.itemsPerPage()) || 1;\n if (this.pageNumber() > this._tNumPages || this.pageNumber() <= 0) { this.pageNumber(1); } // resets if current pagenum selected out of range\n\n this._paginator._onSelect = function (p, d) {\n context.pageNumber(p);\n context.render();\n return;\n };\n } else {\n this._paginator.numItems(0); // remove widget\n }\n\n // pageNumber starts at index 1\n const startIndex = this.pageNumber() - 1;\n const itemsOnPage = this.itemsPerPage();\n\n const start = startIndex * itemsOnPage;\n const end = startIndex * parseInt(itemsOnPage) + parseInt(itemsOnPage);\n\n let tData = null;\n\n if (this.topN()) {\n tData = data.slice(0, this.topN());\n } else if (this.pagination()) {\n tData = data.slice(start, end);\n } else {\n tData = data;\n }\n\n const totalRow: any[] = [this.totalledLabel() ? this.totalledLabel() : null];\n if (this.totalledColumns().length !== 0) {\n for (let i = 0; i < this.totalledColumns().length; i++) this.totalledColumns()[i] = +this.totalledColumns()[i];\n for (let j = 1; j < columns.length; j++) {\n let sum = 0;\n if (this.totalledColumns().indexOf(j) !== -1) {\n for (let k = 0; k < tData.length; k++) {\n sum = sum + tData[k][j];\n }\n totalRow.push(sum);\n } else {\n totalRow.push(\"\");\n }\n }\n\n const tfSel = this.tfoot.selectAll(\"td\").data(totalRow);\n tfSel.enter()\n .append(\"td\")\n .merge(tfSel)\n .style(\"background-color\", this.tfootRowBackgroundColor())\n .style(\"border-color\", this.tfootCellBorderColor())\n .style(\"color\", this.tfootFontColor())\n .style(\"font-size\", this.tfootFontSize())\n [this.renderHtmlDataCells() ? \"html\" : \"text\"](function (d, idx) {\n return context.fields()[idx].transform(d);\n });\n tfSel.exit()\n .remove()\n ;\n }\n\n const rowsSel = this.tbody.selectAll(\"tr.tr_\" + this.id()).data(tData.map(function (d, idx) {\n // TODO - Move fix closer to data source?\n for (let i = 0; i < d.length; ++i) {\n if (d[i] === undefined) {\n d[i] = null;\n }\n }\n return {\n rowIdx: idx,\n row: d\n };\n }));\n const rowsUpdate = rowsSel.enter().append(\"tr\")\n .attr(\"class\", \"tr_\" + this.id())\n .on(\"click.selectionBag\", function (_d) {\n if (_d.row) {\n const d = _d.row;\n const i = _d.rowIdx;\n context.selectionBagClick(d, i);\n context.applyRowStyles(context.getBodyRow(i));\n context.applyFirstColRowStyles(context.getFixedRow(i));\n }\n }, true) // capture=true: event is caught on the way down the DOM before the cell click.\n .on(\"mouseover\", function (_d) {\n if (_d.row) {\n const i = _d.rowIdx;\n const fixedLeftRows = context.getFixedRow(i);\n if (!fixedLeftRows.empty()) {\n fixedLeftRows.classed(\"hover\", true);\n }\n const tbodyRows = context.getBodyRow(i);\n tbodyRows.classed(\"hover\", true);\n context.applyStyleToRows(tbodyRows);\n context.applyFirstColRowStyles(fixedLeftRows);\n }\n })\n .on(\"mouseout\", function (_d) {\n if (_d.row) {\n const i = _d.rowIdx;\n const fixedLeftRows = context.getFixedRow(i);\n fixedLeftRows.classed(\"hover\", false);\n const tbodyRows = context.getBodyRow(i);\n tbodyRows.classed(\"hover\", false);\n context.applyStyleToRows(tbodyRows);\n context.applyFirstColRowStyles(fixedLeftRows);\n }\n })\n .merge(rowsSel)\n .classed(\"selected\", function (_d) {\n const d = _d.row;\n return context._selectionBag.isSelected(context._createSelectionObject(d));\n })\n .classed(\"trId\" + this._id, true)\n ;\n rowsSel.exit()\n .remove()\n ;\n this.applyStyleToRows(rowsUpdate);\n\n const cellsSel = rowsUpdate.selectAll(\".td_\" + this.id()).data(function (_d, _trIdx) {\n return _d.row.filter(function (cell, idx) {\n return idx < columns.length && !context.isHidden(idx) && context._empty_col_idx_arr.indexOf(idx) === -1;\n }).map(function (cell, idx) {\n return {\n rowInfo: _d,\n colIdx: idx,\n cell\n };\n });\n });\n cellsSel.enter()\n .append(\"td\")\n .attr(\"class\", \"td_\" + this.id())\n .on(\"click\", function (tdContents) {\n if (tdContents.rowInfo) {\n context.click(context.rowToObj(tdContents.rowInfo.row), context.columns()[tdContents.colIdx], context._selectionBag.isSelected(context._createSelectionObject(tdContents.rowInfo.row)));\n }\n })\n .on(\"dblclick\", function (tdContents, idx) {\n if (tdContents.rowInfo) {\n context.dblclick(context.rowToObj(tdContents.rowInfo.row), context.columns()[tdContents.colIdx], context._selectionBag.isSelected(context._createSelectionObject(tdContents.rowInfo.row)));\n }\n })\n .each(function (tdContents, tdIdx) {\n const alignment = context.getColumnAlignment(tdContents.rowInfo.rowIdx, tdContents.colIdx, tdContents.cell);\n const el = d3Select(this);\n el\n .style(\"height\", null)\n .style(\"text-align\", alignment)\n .style(\"vertical-align\", context.verticalAlign())\n .classed(\"tr-\" + tdContents.rowInfo.rowIdx + \"-td-\" + tdIdx, true)\n ;\n })\n .merge(cellsSel)\n .each(function (tdContents) {\n const el = d3Select(this);\n if (tdContents.cell instanceof Widget) {\n el[context.renderHtmlDataCells() ? \"html\" : \"text\"](null);\n const widgetDiv = el.selectAll(\".div_\" + context.id()).data([tdContents.cell], function (d: any) { return d.id(); });\n widgetDiv.exit()\n .each(function (d: any) {\n d.target(null);\n })\n .remove()\n ;\n widgetDiv.enter().append(\"div\")\n .attr(\"class\", \"div_\" + context.id())\n .style(\"width\", context.minWidgetWidth() + \"px\")\n .style(\"height\", context.minWidgetHeight() + \"px\")\n .each(function (d) {\n const widgetDiv2 = d3Select(this);\n d._parentWidget = context;\n if (d._class.indexOf(\"childWidget\") < 0) {\n d._class = \"childWidget \" + d._class;\n }\n d\n .target(null)\n .target(widgetDiv2.node())\n ;\n })\n .merge(widgetDiv as any)\n .each(function (d) {\n d\n .resize()\n .lazyRender()\n ;\n context._hasChildWidgets = true;\n })\n ;\n } else {\n el.selectAll(\".div_\" + context.id()).remove();\n const fieldsIdx = context.calcFieldsIndex(tdContents.colIdx);\n el[context.renderHtmlDataCells() ? \"html\" : \"text\"](\n context.field(tdContents.rowInfo.rowIdx, fieldsIdx).transform(tdContents.cell)\n );\n }\n })\n ;\n cellsSel.exit()\n .remove()\n ;\n const tableMarginHeight = parseInt(this.thead.node().offsetHeight);\n\n if (this.pagination() && this._hasChildWidgets) {\n this.tableDiv.style(\"overflow-y\", \"auto\");\n this.table.style(\"margin-bottom\", \"50px\");\n console.warn(\"Warning: displaying another widget in the table may cause problems with pagination\");\n } else {\n this.tableDiv.style(\"overflow-y\", null);\n this.table.style(\"margin-bottom\", null);\n\n }\n this.size(this._size);\n\n let fixedColWidth = 0;\n const fixedColThSel = this.fixedColHeadRow.selectAll(\"th\").data(this.fixedColumn() && this.showHeader() ? [columns[0]] : []);\n const fixedColThUpdate = fixedColThSel.enter().append(\"th\")\n .each(function (d) {\n const element2 = d3Select(this);\n element2\n .append(\"span\")\n .attr(\"class\", \"thText\")\n ;\n element2\n .append(\"span\")\n .attr(\"class\", \"thIcon\")\n ;\n })\n .on(\"click\", function (column, idx) {\n context.headerClick(column, idx);\n })\n .merge(fixedColThSel)\n .style(\"background-color\", this.theadRowBackgroundColor())\n .style(\"border-color\", this.theadCellBorderColor())\n .style(\"color\", this.theadFontColor())\n .style(\"font-size\", this.theadFontSize())\n ;\n fixedColThUpdate.select(\".thText\")\n .style(\"font-family\", this.theadFontFamily())\n .text(function (column) {\n return column;\n })\n ;\n fixedColThUpdate.select(\".thIcon\")\n .text(function (column, idx) {\n if (context.descending()) {\n return context.sortByFieldIndex() === idx ? \"\\uf078\" : \"\";\n } else {\n return context.sortByFieldIndex() === idx ? \"\\uf077\" : \"\";\n }\n })\n ;\n fixedColThSel.exit()\n .remove()\n ;\n\n const fixedColTrSel = this.fixedColBody.selectAll(\"tr\").data(this.fixedColumn() ? tData : []);\n const fixedColTrUpdate = fixedColTrSel.enter().append(\"tr\")\n .attr(\"class\", function () {\n return \"trId\" + context._id;\n })\n .merge(fixedColTrSel)\n .on(\"click\", function (d, i) {\n (d3Select(rowsUpdate[0][i]).on(\"click.selectionBag\") as any)(rowsUpdate.data()[i], i)\n ;\n })\n .on(\"mouseover\", function (d, i) {\n (d3Select(rowsUpdate[0][i]).on(\"mouseover\") as any)(rowsUpdate.data()[i], i)\n ;\n })\n .on(\"mouseout\", function (d, i) {\n (d3Select(rowsUpdate[0][i]).on(\"mouseout\") as any)(rowsUpdate.data()[i], i)\n ;\n })\n .classed(\"selected\", function (d) {\n return context._selectionBag.isSelected(context._createSelectionObject(d));\n })\n ;\n fixedColTrSel.exit()\n .remove()\n ;\n const fixedColTdSel = fixedColTrUpdate.selectAll(\"td\").data(function (d, i) {\n return [d[0]];\n });\n const fixedColTdUpdate = fixedColTdSel.enter().append(\"td\")\n .merge(fixedColTdSel)[this.renderHtmlDataCells() ? \"html\" : \"text\"](function (d): any {\n if (typeof (d) === \"string\") {\n return d.trim();\n } else if (typeof (d) === \"number\") {\n return d;\n }\n return \"\";\n });\n fixedColTdSel.exit()\n .remove()\n ;\n\n const fixedColFootTdSel = this.fixedColFootRow.selectAll(\"td\").data(this.fixedColumn() && this.totalledLabel() ? [this.totalledLabel()] : []);\n const fixedColFootTdUpdate = fixedColFootTdSel.enter().append(\"td\")\n .merge(fixedColFootTdSel)[this.renderHtmlDataCells() ? \"html\" : \"text\"](function (d): any {\n if (typeof (d) === \"string\") {\n return d.trim();\n } else if (typeof (d) === \"number\") {\n return d;\n }\n return \"\";\n });\n fixedColFootTdSel.exit()\n .remove()\n ;\n\n if (this.fixedColumn() && !this.fixedSize() && fixedColFootTdUpdate.length) {\n if (this.showHeader()) {\n fixedColWidth = fixedColFootTdUpdate.property(\"offsetWidth\") > fixedColFootTdUpdate.property(\"offsetWidth\") ? fixedColFootTdUpdate.property(\"offsetWidth\") : fixedColFootTdUpdate.property(\"offsetWidth\");\n } else {\n fixedColWidth = fixedColFootTdUpdate.property(\"offsetWidth\");\n }\n this.fixedCol\n .style(\"position\", \"absolute\")\n .style(\"margin-top\", -this.tableDiv.property(\"scrollTop\") + tableMarginHeight + \"px\")\n ;\n fixedColTdUpdate\n .style(\"width\", fixedColWidth + \"px\")\n ;\n this.fixedColHead\n .style(\"position\", \"absolute\")\n .style(\"margin-top\", (this.fixedHeader() ? this.tableDiv.property(\"scrollTop\") : 0) - tableMarginHeight + \"px\")\n ;\n fixedColThUpdate\n .style(\"width\", fixedColWidth + \"px\")\n ;\n rowsUpdate.each(function (d, i) {\n const height = d3Select(this).select(\"td\").property(\"offsetHeight\");\n d3Select(fixedColTdUpdate[i][0]).style(\"height\", height + \"px\");\n });\n }\n\n this.table\n .style(\"margin-left\", -fixedColWidth + \"px\")\n ;\n this.tableDiv\n .style(\"margin-left\", fixedColWidth + \"px\")\n .style(\"width\", this.width() - fixedColWidth + \"px\")\n ;\n\n if (!rowsUpdate.empty()) this.setColumnWidths(rowsUpdate);\n\n let box;\n let newTableHeight;\n let finalWidth;\n let maxWidth;\n if (this.fixedSize()) {\n const node = d3Select(\".tableDiv > table\").node();\n if (node) {\n box = (node as any).getBoundingClientRect();\n let newTableHeight;\n let finalWidth;\n if (box.width !== 0 && box.height !== 0) {\n calcWidth();\n calcHeight();\n } else {\n if (box.height - tableMarginHeight <= context.tableDiv.property(\"offsetHeight\")) {\n calcHeight();\n } else {\n if (context.fixedHeader()) {\n newTableHeight = context.tableDiv.property(\"offsetHeight\"); // is tableDiv correct?\n newTableHeight = newTableHeight + \"px\";\n } else {\n newTableHeight = \"100%\";\n }\n }\n if (box.width - fixedColWidth < context.tableDiv.property(\"offsetWidth\")) {\n calcWidth();\n } else {\n if (context.fixedColumn()) {\n finalWidth = context.tableDiv.property(\"offsetWidth\") - fixedColWidth; // is tableDiv correct?\n finalWidth = finalWidth + \"px\";\n } else {\n finalWidth = \"100%\";\n }\n }\n }\n if (element.classed(\"childWidget\")) {\n context._placeholderElement\n .style(\"width\", finalWidth + \"px\")\n .style(\"height\", newTableHeight + \"px\")\n ;\n context.tableDiv\n .style(\"overflow\", \"hidden\")\n ;\n }\n context.size({ width: finalWidth, height: newTableHeight });\n }\n }\n\n this.setOnScrollEvents(this.tableDiv.node(), tableMarginHeight);\n\n function calcWidth() {\n const newTableWidth = box.width;\n maxWidth = context.tbody.property(\"offsetWidth\") + 1;\n finalWidth = newTableWidth > maxWidth ? maxWidth : newTableWidth;\n finalWidth = finalWidth;\n }\n\n function calcHeight() {\n newTableHeight = context.tbody.property(\"offsetHeight\") + tableMarginHeight;\n newTableHeight = newTableHeight;\n }\n\n this._paginator.render();\n setTimeout(function () {\n context._paginator\n .right((context.hasVScroll(element) ? Platform.getScrollbarWidth() : 0) + context._paginatorTableSpacing)\n .bottom((context.hasHScroll(element) ? Platform.getScrollbarWidth() : 0) + context._paginatorTableSpacing)\n .render(function () {\n context.tableDiv.node().scrollLeft = scrollLeft;\n })\n ;\n }, 0);\n }\n\n exit(domNode, element) {\n this._paginator.target(null);\n super.exit(domNode, element);\n }\n\n setColumnWidths(rows) {\n const context = this;\n const firstRow = rows.filter(function (d, i) { return i === 0; });\n\n let tds = d3Select(null);\n firstRow.each(function (d) {\n tds = d3SelectAll(this.childNodes);\n });\n\n const tableMarginHeight = this.fixedHeader() ? this.thead.property(\"offsetHeight\") : 0;\n let totalWidth = 1;\n const tdWidths = {};\n\n tds.each(function (d, i) {\n tdWidths[i] = (this as any).offsetWidth;\n });\n\n const th = this.thead.selectAll(\"th\");\n th.each(function (d, i) {\n const thwidth = this.offsetWidth;\n const tdwidth = tds.empty() ? 0 : tdWidths[i];\n const usewidth = thwidth >= tdwidth ? thwidth : tdwidth;\n this.style.width = usewidth + \"px\";\n tds\n .filter((_d, idx) => idx === 0)\n .each(function () {\n d3Select(this).style(\"width\", usewidth + \"px\");\n })\n ;\n totalWidth += usewidth;\n });\n this.thead\n .style(\"position\", this.fixedHeader() ? \"absolute\" : \"relative\")\n .style(\"width\", totalWidth + \"px\")\n .style(\"margin-top\", \"0px\")\n ;\n this.table\n .style(\"width\", totalWidth + \"px\")\n ;\n this.tableDiv\n .style(\"margin-top\", (context.fixedHeader() ? tableMarginHeight : 0) + \"px\")\n ;\n this.tbody\n .style(\"width\", totalWidth + \"px\")\n ;\n }\n\n getBodyRow(i) {\n return this.table.selectAll(\"tbody tr.trId\" + this._id)\n .filter(function (d, idx) {\n return idx === i;\n })\n ;\n }\n\n getFixedRow(i) {\n return this._element.selectAll(\".rows-wrapper tbody tr\")\n .filter(function (d, idx) {\n return idx === i;\n })\n ;\n }\n\n setOnScrollEvents(scrollNode, margHeight) {\n const context = this;\n scrollNode.onscroll = function (e) {\n const topDelta = e.target.scrollTop;\n const leftDelta = e.target.scrollLeft;\n if (context.fixedHeader()) {\n context.thead\n .style(\"margin-left\", -leftDelta + \"px\")\n ;\n }\n if (context.fixedColumn()) {\n context.fixedCol\n .style(\"margin-top\", -topDelta + margHeight + \"px\")\n ;\n if (context.fixedHeader()) {\n context.fixedColHead\n .style(\"margin-top\", topDelta - margHeight + \"px\")\n ;\n }\n }\n };\n }\n\n _generateTempRow() {\n const trow = this.tbody.append(\"tr\");\n trow.append(\"td\").text(\"QQQ\");\n return trow;\n }\n\n _createSelectionObject(d) {\n const context = this;\n return {\n _id: d,\n element: () => context.tbody ? context.tbody.selectAll(\"tr\").filter(function (d2) { return d2 === d; }) : d3Select(null)\n };\n }\n\n _calcRowsPerPage(th) {\n if (this._paginator.numItems() === 0) { // only run on first render\n this._paginator.numItems(1);\n this.itemsPerPage(1);\n }\n this._paginator.render();\n\n const thHeight = this.thead.selectAll(\"th\").node() ? this.thead.selectAll(\"th\").node().clientHeight : 0;\n const tfootHeight = this.tfoot.selectAll(\"td\").node() ? this.tfoot.selectAll(\"td\").node().clientHeight : 0;\n const tmpRow = this._generateTempRow();\n const tcellHeight = tmpRow.node().clientHeight;\n tmpRow.remove();\n const paginatorHeight = this.calcHeight(this._paginator.element());\n let ipp = Math.floor((this.height() - thHeight - tfootHeight - paginatorHeight - (this.table.style(\"width\") >= this.table.style(\"width\") ? Platform.getScrollbarWidth() : 0) - this._paginatorTableSpacing * 2) / tcellHeight) || 1;\n if (this.totalledColumns().length !== 0) {\n ipp -= 1;\n }\n return ipp;\n }\n\n sort(idx) {\n if (this.sortByFieldIndex() !== idx) {\n this.descending(false);\n } else {\n this.descending(!this.descending());\n }\n this.sortByFieldIndex(idx);\n\n return this;\n }\n\n selection(_) {\n if (!arguments.length) return this._selectionBag.get().map(function (d) { return d._id; });\n this._selectionBag.set(_.map(function (row) {\n return this._createSelectionObject(row);\n }, this));\n return this;\n }\n\n selectionBagClick(d, i) {\n if (this.multiSelect() && d3Event().shiftKey && this._selectionPrevClick) {\n let inRange = false;\n const rows = [];\n const selection = this.tableData().filter(function (row, i2) {\n let lastInRangeRow = false;\n if (row === d || row === this._selectionPrevClick) {\n if (inRange) {\n lastInRangeRow = true;\n }\n inRange = !inRange;\n rows.push(i2);\n }\n return inRange || lastInRangeRow;\n }, this);\n this.selection(selection);\n } else if (this.multiSelect()) {\n this._selectionBag.click(this._createSelectionObject(d), d3Event);\n this._selectionPrevClick = d;\n } else {\n const selObj = this._createSelectionObject(d);\n this._selectionBag.click(selObj, { ctrlKey: this._selectionBag.isSelected(selObj) });\n this._selectionPrevClick = d;\n }\n this.render();\n }\n\n applyHoverRowStyles(row) {\n const context = this;\n row\n .style(\"color\", context.tbodyHoverRowFontColor())\n .style(\"background-color\", context.tbodyHoverRowBackgroundColor())\n ;\n }\n applySelectedRowStyles(row) {\n const context = this;\n row\n .style(\"color\", context.tbodySelectedRowFontColor())\n .style(\"background-color\", context.tbodySelectedRowBackgroundColor())\n ;\n }\n applyRowStyles(row, isFirstCol: boolean = false) {\n const dataRow = row.datum().row;\n row\n .style(\"color\", isFirstCol ? this.tbodyFirstColFontColor() : this.tbodyFontColor())\n .style(\"background-color\", isFirstCol ? this.tbodyFirstColBackgroundColor() : this.tableZebraColor_exists() && this.tableData().indexOf(dataRow) % 2 ? this.tbodyRowBackgroundColor() : this.tableZebraColor())\n ;\n }\n applyFirstColRowStyles(rows) {\n this.applyStyleToRows(rows, true);\n }\n applyStyleToRows(rows, isFirstCol: boolean = false) {\n isFirstCol = typeof isFirstCol !== \"undefined\" ? isFirstCol : false;\n const context = this;\n rows.each(function () {\n const tr = d3Select(this);\n if (tr.classed(\"hover\")) {\n context.applyHoverRowStyles(tr);\n } else if (tr.classed(\"selected\")) {\n context.applySelectedRowStyles(tr);\n } else {\n context.applyRowStyles(tr, isFirstCol);\n }\n })\n ;\n }\n\n getColumnAlignment(rowIdx, colIdx, cell) {\n const fieldsIdx = this.calcFieldsIndex(colIdx);\n const field = this.field(rowIdx, fieldsIdx);\n switch ((field as any).__prop_type) {\n case \"string\":\n return this.stringAlign();\n case \"number\":\n return this.numberAlign();\n case \"\":\n case undefined:\n switch (typeof cell) {\n case \"string\":\n return this.stringAlign();\n case \"number\":\n return this.numberAlign();\n }\n }\n return null;\n }\n\n serializeState() {\n return {\n selection: this._selectionBag.get().map(function (d) {\n return d._id;\n }),\n data: this.data()\n };\n }\n\n deserializeState(state) {\n if (state) {\n if (state.selection) {\n const context = this;\n this._selectionBag.set(state.selection.map(function (d) {\n return context._createSelectionObject(d);\n }));\n }\n if (state.data) {\n this.data(state.data);\n }\n }\n return this;\n }\n\n click(row, column, selected) {\n }\n\n dblclick(row, column, selected) {\n }\n\n headerClick(column, idx) {\n this\n .sort(idx)\n .render()\n ;\n }\n}\nTable.prototype._class += \" other_Table\";\n\nexport interface Table {\n renderHtmlDataCells(): boolean;\n renderHtmlDataCells(_: boolean): this;\n pagination(): boolean;\n pagination(_: boolean): this;\n paginationLimit(): any;\n paginationLimit(_: any): this;\n itemsPerPage(): any;\n itemsPerPage(_: any): this;\n pageNumber(): number;\n pageNumber(_: number): this;\n adjacentPages(): number;\n adjacentPages(_: number): this;\n topN(): number;\n topN(_: number): this;\n pivot(): boolean;\n pivot(_: boolean): this;\n showHeader(): boolean;\n showHeader(_: boolean): this;\n fixedHeader(): boolean;\n fixedHeader(_: boolean): this;\n fixedColumn(): boolean;\n fixedColumn(_: boolean): this;\n multiSelect(): boolean;\n multiSelect(_: boolean): this;\n\n fixedSize(): boolean;\n fixedSize(_: boolean): this;\n\n hideEmptyColumns(): boolean;\n hideEmptyColumns(_: boolean): this;\n\n theadFontSize(): string;\n theadFontSize(_: string): this;\n tbodyFontSize(): string;\n tbodyFontSize(_: string): this;\n tfootFontSize(): string;\n tfootFontSize(_: string): this;\n theadFontColor(): string;\n theadFontColor(_: string): this;\n tbodyFontColor(): string;\n tbodyFontColor(_: string): this;\n tfootFontColor(): string;\n tfootFontColor(_: string): this;\n theadFontFamily(): string;\n theadFontFamily(_: string): this;\n tbodyFontFamily(): string;\n tbodyFontFamily(_: string): this;\n tfootFontFamily(): string;\n tfootFontFamily(_: string): this;\n\n theadCellBorderColor(): string;\n theadCellBorderColor(_: string): this;\n tfootCellBorderColor(): string;\n tfootCellBorderColor(_: string): this;\n theadRowBackgroundColor(): string;\n theadRowBackgroundColor(_: string): this;\n tfootRowBackgroundColor(): string;\n tfootRowBackgroundColor(_: string): this;\n\n tbodyCellBorderColor(): string;\n tbodyCellBorderColor(_: string): this;\n\n tbodyRowBackgroundColor(): string;\n tbodyRowBackgroundColor(_: string): this;\n tbodyFirstColFontColor(): string;\n tbodyFirstColFontColor(_: string): this;\n tbodyFirstColBackgroundColor(): string;\n tbodyFirstColBackgroundColor(_: string): this;\n\n tbodyHoverRowFontColor(): string;\n tbodyHoverRowFontColor(_: string): this;\n tbodyHoverRowBackgroundColor(): string;\n tbodyHoverRowBackgroundColor(_: string): this;\n\n tbodySelectedRowFontColor(): string;\n tbodySelectedRowFontColor(_: string): this;\n tbodySelectedRowBackgroundColor(): string;\n tbodySelectedRowBackgroundColor(_: string): this;\n tableZebraColor(): string;\n tableZebraColor(_: string): this;\n tableZebraColor_exists(): boolean;\n totalledColumns(): any[];\n totalledColumns(_: any[]): this;\n totalledLabel(): string;\n totalledLabel(_: string): this;\n hiddenColumns(): any[];\n hiddenColumns(_: any[]): this;\n\n stringAlign(): string;\n stringAlign(_: string): this;\n numberAlign(): string;\n numberAlign(_: string): this;\n verticalAlign(): string;\n verticalAlign(_: string): this;\n\n minWidgetWidth(): number;\n minWidgetWidth(_: number): this;\n minWidgetHeight(): number;\n minWidgetHeight(_: number): this;\n\n sortByFieldIndex(): number;\n sortByFieldIndex(_: number): this;\n sortByFieldIndex_exists(): boolean;\n descending(): boolean;\n descending(_: boolean): this;\n}\n\nTable.prototype.publish(\"renderHtmlDataCells\", false, \"boolean\", \"enable or disable HTML within cells\", null, { tags: [\"Private\"] });\nTable.prototype.publish(\"pagination\", true, \"boolean\", \"Enable or disable pagination\", null, { tags: [\"Private\"] });\nTable.prototype.publish(\"paginationLimit\", null, \"number\", \"Maximum number of rows allowed before pagination defaults to on\", null, { tags: [\"Private\"] });\nTable.prototype.publishProxy(\"itemsPerPage\", \"_paginator\");\nTable.prototype.publishProxy(\"pageNumber\", \"_paginator\", \"pageNumber\", 1);\nTable.prototype.publishProxy(\"adjacentPages\", \"_paginator\");\nTable.prototype.publish(\"topN\", null, \"number\", \"Total number or rows of data to be displayed in the table\", null, { tags: [\"Private\"] });\nTable.prototype.publish(\"pivot\", false, \"boolean\", \"Pivot Table\");\nTable.prototype.publish(\"showHeader\", true, \"boolean\", \"Show or hide the table header\", null, { tags: [\"Private\"] });\nTable.prototype.publish(\"fixedHeader\", true, \"boolean\", \"Enable or disable fixed table header\", null, { tags: [\"Private\"] });\nTable.prototype.publish(\"fixedColumn\", false, \"boolean\", \"Enable or disable fixed first column\", null, { tags: [\"Private\"] });\nTable.prototype.publish(\"multiSelect\", false, \"boolean\", \"Multiple Selection\", null, { tags: [\"Basic\"] });\n\nTable.prototype.publish(\"fixedSize\", false, \"boolean\", \"Fix Size to Min Width/Height\");\n\nTable.prototype.publish(\"hideEmptyColumns\", false, \"boolean\", \"Hide columns with all empty cells\");\n\nTable.prototype.publish(\"theadFontSize\", null, \"string\", \"Table head font size\", null, { tags: [\"Basic\"], optional: true });\nTable.prototype.publish(\"tbodyFontSize\", null, \"string\", \"Table body font size\", null, { tags: [\"Basic\"], optional: true });\nTable.prototype.publish(\"tfootFontSize\", null, \"string\", \"Table body font size\", null, { tags: [\"Basic\"], optional: true });\nTable.prototype.publish(\"theadFontColor\", null, \"html-color\", \"Table head font color\", null, { tags: [\"Basic\"], optional: true });\nTable.prototype.publish(\"tbodyFontColor\", null, \"html-color\", \"Table body font color\", null, { tags: [\"Basic\"], optional: true });\nTable.prototype.publish(\"tfootFontColor\", null, \"html-color\", \"Table body font color\", null, { tags: [\"Basic\"], optional: true });\nTable.prototype.publish(\"theadFontFamily\", null, \"string\", \"Table head font family\", null, { tags: [\"Basic\"], optional: true });\nTable.prototype.publish(\"tbodyFontFamily\", null, \"string\", \"Table body font family\", null, { tags: [\"Basic\"], optional: true });\nTable.prototype.publish(\"tfootFontFamily\", null, \"string\", \"Table body font family\", null, { tags: [\"Basic\"], optional: true });\n\nTable.prototype.publish(\"theadCellBorderColor\", null, \"html-color\", \"Table head cell border color\", null, { tags: [\"Basic\"], optional: true });\nTable.prototype.publish(\"tfootCellBorderColor\", null, \"html-color\", \"Table head cell border color\", null, { tags: [\"Basic\"], optional: true });\nTable.prototype.publish(\"theadRowBackgroundColor\", null, \"html-color\", \"Table head row color\", null, { tags: [\"Basic\"], optional: true });\nTable.prototype.publish(\"tfootRowBackgroundColor\", null, \"html-color\", \"Table head row color\", null, { tags: [\"Basic\"], optional: true });\n\nTable.prototype.publish(\"tbodyCellBorderColor\", null, \"html-color\", \"Table body cell border color\", null, { tags: [\"Basic\"], optional: true });\n\nTable.prototype.publish(\"tbodyRowBackgroundColor\", null, \"html-color\", \"Table body row color\", null, { tags: [\"Basic\"], optional: true });\nTable.prototype.publish(\"tbodyFirstColFontColor\", null, \"html-color\", \"Table body first column font color\", null, { tags: [\"Basic\"], optional: true });\nTable.prototype.publish(\"tbodyFirstColBackgroundColor\", null, \"html-color\", \"Table body first column background color\", null, { tags: [\"Basic\"], optional: true });\n\nTable.prototype.publish(\"tbodyHoverRowFontColor\", null, \"html-color\", \"Table body hover row font color\", null, { tags: [\"Basic\"], optional: true });\nTable.prototype.publish(\"tbodyHoverRowBackgroundColor\", null, \"html-color\", \"Table body hover row background color\", null, { tags: [\"Basic\"], optional: true });\n\nTable.prototype.publish(\"tbodySelectedRowFontColor\", null, \"html-color\", \"Table body selected row color\", null, { tags: [\"Basic\"], optional: true });\nTable.prototype.publish(\"tbodySelectedRowBackgroundColor\", null, \"html-color\", \"Table body selected row color\", null, { tags: [\"Basic\"], optional: true });\nTable.prototype.publish(\"tableZebraColor\", null, \"html-color\", \"Table zebra row color\", null, { tags: [\"Basic\"], optional: true });\nTable.prototype.publish(\"totalledColumns\", [], \"array\", \"Array of indices of the columns to be totalled\", null, { tags: [\"Basic\"], optional: true, disable: (w: any) => w.pivot() });\nTable.prototype.publish(\"totalledLabel\", null, \"string\", \"Adds a label to the first column of the 'Totalled' row\", null, { tags: [\"Basic\"], optional: true, disable: (w: any) => w.pivot() });\nTable.prototype.publish(\"hiddenColumns\", [], \"array\", \"Array of indices of the columns to be hidden\", null, { tags: [\"Basic\"], optional: true, disable: (w) => w.pivot() });\n\nTable.prototype.publish(\"stringAlign\", \"left\", \"set\", \"Cell alignment for strings\", [\"left\", \"right\", \"center\"], { tags: [\"Basic\"], optional: true });\nTable.prototype.publish(\"numberAlign\", \"right\", \"set\", \"Cell alignment for numbers\", [\"left\", \"right\", \"center\"], { tags: [\"Basic\"], optional: true });\nTable.prototype.publish(\"verticalAlign\", null, \"set\", \"Cell vertical alignment\", [null, \"middle\", \"top\", \"bottom\"], { tags: [\"Basic\"], optional: true });\n\nTable.prototype.publish(\"minWidgetWidth\", 320, \"number\", \"Minimum width of a child widget\", null, { tags: [\"Basic\"], optional: true });\nTable.prototype.publish(\"minWidgetHeight\", 240, \"number\", \"Minimum height of a child widget\", null, { tags: [\"Basic\"], optional: true });\n\nTable.prototype.publish(\"sortByFieldIndex\", null, \"number\", \"Index for the field/column to sort the data\", null, { tags: [\"Basic\"], optional: true });\nTable.prototype.publish(\"descending\", false, \"boolean\", \"Direction for sorting the data: ascending (true) or descending (false)\", null, { tags: [\"Basic\"], optional: true });\n", "import { d3Event, HTMLWidget, select as d3Select } from \"@hpcc-js/common\";\n\nimport \"../src/Paginator.css\";\n\nexport class Paginator extends HTMLWidget {\n _tNumPages;\n _numList;\n paginator;\n side;\n _onSelect;\n\n constructor() {\n super();\n\n this._tag = \"div\";\n\n this._tNumPages = 1; // np\n\n this._numList = []; // pn\n }\n\n postUpdate(domNode, element) { }\n\n enter(domNode, element) {\n super.enter(domNode, element);\n const context = this;\n\n this.paginator = element.append(\"ul\").attr(\"class\", \"paginator pagination pagination-sm\");\n this.side = element.append(\"div\").attr(\"class\", \"paginator pagination side\");\n\n this.side.append(\"span\")\n .classed(\"side\", true)\n .text(\"Page \")\n ;\n\n this.side.append(\"input\")\n .attr(\"type\", \"number\")\n .attr(\"class\", \"currentPageNumber\")\n .property(\"value\", 1)\n .attr(\"min\", 1)\n .on(\"change\", function () {\n context.pageNumber(this.value);\n context._onSelect(this.value);\n })\n ;\n\n this.side.append(\"span\")\n .classed(\"side total\", true)\n .text(\" of 1\")\n ;\n }\n\n update(domNode, element) {\n const context = this;\n element\n .style(\"bottom\", this.bottom() + \"px\")\n .style(\"right\", this.right() + \"px\")\n ;\n\n this._tNumPages = Math.ceil(this.numItems() / this.itemsPerPage()) || 1;\n\n if (this.pageNumber() > this._tNumPages) { this.pageNumber(1); }\n\n this._numList = [];\n if (this.numItems()) {\n this._numList.push(\"first\");\n for (let x = -this.adjacentPages(); x <= this.adjacentPages(); x++) {\n if (this.pageNumber() + x > 0 && this.pageNumber() + x <= this._tNumPages) {\n this._numList.push(this.pageNumber() + x);\n }\n }\n this._numList.push(\"last\");\n }\n\n this.side.select(\".total\").text(\" of \" + this._tNumPages);\n this.side.select(\".currentPageNumber\").property(\"value\", this.pageNumber());\n this.side.select(\".currentPageNumber\").attr(\"max\", this._tNumPages);\n\n const page = this.paginator.selectAll(\"li\").data(this._numList, function (d) { return d; });\n page\n .enter()\n .append(function (d) {\n const li = document.createElement(\"li\");\n\n if (d !== context.pageNumber()) {\n const a = document.createElement(\"a\");\n const linkText = document.createTextNode(d);\n\n a.appendChild(linkText);\n a.href = \"#\";\n li.appendChild(a);\n\n return li;\n } else {\n const span = document.createElement(\"span\");\n span.innerHTML = d;\n\n li.appendChild(span);\n\n return li;\n }\n })\n .on(\"click\", function (d, i) {\n d3Event().preventDefault();\n context.side.select(\".currentPageNumber\").property(\"value\", context.pageNumber());\n switch (d) {\n case \"first\":\n if (context.pageNumber() !== 1) {\n context.pageNumber(1);\n context._onSelect(1, \"previous\");\n }\n break;\n case \"last\":\n if (context.pageNumber() !== context._tNumPages) {\n context.pageNumber(context._tNumPages);\n context._onSelect(context._tNumPages, \"previous\");\n }\n break;\n default:\n context.pageNumber(d);\n context._onSelect(d);\n }\n })\n ;\n\n page.classed(\"active\", function (e, j) { return e === context.pageNumber(); })\n .select(\"a\")\n .text(function (d) { return d; })\n ;\n\n page.exit().remove();\n page.order();\n\n if (this.numItems() === 0) {\n d3Select(domNode).remove();\n }\n }\n\n exit(domNode, element) {\n super.exit(domNode, element);\n }\n}\nPaginator.prototype._class += \" other_Paginator\";\n\nexport interface Paginator {\n itemsPerPage(): number;\n itemsPerPage(_: number): this;\n itemsPerPage_exists(): boolean;\n numItems(): number;\n numItems(_: number): this;\n numItems_exists(): boolean;\n pageNumber(): number;\n pageNumber(_: number): this;\n pageNumber_exists(): boolean;\n adjacentPages(): number;\n adjacentPages(_: number): this;\n adjacentPages_exists(): boolean\n bottom(): number;\n bottom(_: number): this;\n bottom_exists(): boolean;\n right(): number;\n right(_: number): this;\n right_exists(): boolean;\n}\n\nPaginator.prototype.publish(\"itemsPerPage\", 2, \"number\", \"Pagination items per page\", null, { tags: [\"Private\"] });\n\nPaginator.prototype.publish(\"numItems\", 10, \"number\", \"Pagination total number of items\", null, { tags: [\"Private\"] });\nPaginator.prototype.publish(\"pageNumber\", 1, \"number\", \"Pagination set or get the page number\", null, { tags: [\"Private\"] });\nPaginator.prototype.publish(\"adjacentPages\", 2, \"number\", \"Number of page indexes either side of current one\", null, { tags: [\"Private\"] });\nPaginator.prototype.publish(\"bottom\", 20, \"number\", \"Pagination bottom offset\", null, { tags: [\"Private\"] });\nPaginator.prototype.publish(\"right\", 20, \"number\", \"Pagination right offset\", null, { tags: [\"Private\"] });\n", "(function(){\n if (!document.getElementById('42c2a42e')) {\n var e = document.createElement('style');\n e.id = '42c2a42e';\n e.textContent = `.other_Paginator {\n display: block;\n position:absolute;\n white-space: nowrap;\n}\n\n.other_Paginator .pagination {\n display: inline-block;\n white-space: nowrap;\n margin: 0px;\n padding: 0px;\n}\n\n.other_Paginator .pagination > li {\n display: inline;\n}\n\n.other_Paginator input[type=\"number\"].currentPageNumber {\n border: 1px solid #ddd;\n outline: 0 none;\n position: relative;\n width: 37px;\n text-align: center;\n}\n\n.other_Paginator div.side {\n padding-top: 5px;\n padding-left: 8px;\n vertical-align: top;\n}\n\n.other_Paginator span.side {\n position: relative;\n color: #337ab7;\n}\n\n.other_Paginator .pagination > li > a,\n.other_Paginator .pagination > div,\n.other_Paginator .pagination > li > span {\n position: relative;\n float: left;\n padding: 6px 12px;\n margin-left: -1px;\n line-height: 1.42857143;\n color: #337ab7;\n text-decoration: none;\n background-color: #fff;\n border: 1px solid #ddd;\n}\n.other_Paginator .pagination > li:first-child > a,\n.other_Paginator .pagination > li:first-child > span {\n margin-left: 0;\n border-top-left-radius: 4px;\n border-bottom-left-radius: 4px;\n}\n.other_Paginator .pagination > li:last-child > a,\n.other_Paginator .pagination > li:last-child > span {\n border-top-right-radius: 4px;\n border-bottom-right-radius: 4px;\n}\n.other_Paginator .pagination > li > a:hover,\n.other_Paginator .pagination > li > span:hover,\n.other_Paginator .pagination > li > a:focus,\n.other_Paginator .pagination > li > span:focus {\n color: #23527c;\n background-color: #eee;\n border-color: #ddd;\n}\n.other_Paginator .pagination > .active > a,\n.other_Paginator .pagination > .active > span,\n.other_Paginator .pagination > .active > a:hover,\n.other_Paginator .pagination > .active > span:hover,\n.other_Paginator .pagination > .active > a:focus,\n.other_Paginator .pagination > .active > span:focus {\n z-index: 2;\n color: #fff;\n cursor: default;\n background-color: #337ab7;\n border-color: #337ab7;\n}\n.other_Paginator .pagination > .disabled > span,\n.other_Paginator .pagination > .disabled > span:hover,\n.other_Paginator .pagination > .disabled > span:focus,\n.other_Paginator .pagination > .disabled > a,\n.other_Paginator .pagination > .disabled > a:hover,\n.other_Paginator .pagination > .disabled > a:focus {\n color: #777;\n cursor: not-allowed;\n background-color: #fff;\n border-color: #ddd;\n}\n.other_Paginator .pagination-lg > li > a,\n.other_Paginator .pagination-lg > li > span {\n padding: 10px 16px;\n font-size: 18px;\n}\n.other_Paginator .pagination-lg > li:first-child > a,\n.other_Paginator .pagination-lg > li:first-child > span {\n border-top-left-radius: 6px;\n border-bottom-left-radius: 6px;\n}\n.other_Paginator .pagination-lg > li:last-child > a,\n.other_Paginator .pagination-lg > li:last-child > span {\n border-top-right-radius: 6px;\n border-bottom-right-radius: 6px;\n}\n.other_Paginator .pagination-sm > li > a,\n.other_Paginator .pagination-sm > li > span {\n padding: 5px 10px;\n font-size: 12px;\n}\n.other_Paginator .pagination-sm > li:first-child > a,\n.other_Paginator .pagination-sm > li:first-child > span {\n border-top-left-radius: 3px;\n border-bottom-left-radius: 3px;\n}\n.other_Paginator .pagination-sm > li:last-child > a,\n.other_Paginator .pagination-sm > li:last-child > span {\n border-top-right-radius: 3px;\n border-bottom-right-radius: 3px;\n}`;\n document.head.appendChild(e);\n }\n })();", "(function(){\n if (!document.getElementById('f7893629')) {\n var e = document.createElement('style');\n e.id = 'f7893629';\n e.textContent = `.other_Table {\n color:#333333;\n border-width: 1px;\n border-color: #999999;\n}\n\n.other_Table table {\n border-collapse: collapse;\n border-spacing: 0;\n}\n.other_Table .tableDiv {\n position: absolute;\n}\n\n.other_Table th, .labels-wrapper th {\n padding:5px 10px;\n border-width: 1px;\n border-style: solid;\n border-color: #a9c6c9;\n color:white;\n white-space: nowrap;\n cursor : pointer;\n box-sizing: border-box;\n}\n.other_Table thead > tr, .cols-wrapper tr {\n background-color:#1f77b4;\n}\n\n.other_Table .thIcon, .labels-wrapper .thIcon {\n font-family: FontAwesome;\n padding-left: 8px;\n}\n\n.other_Table .tableDiv tbody > tr:nth-child(odd) {\n background-color: #f3faff;\n color:black;\n}\n\n.other_Table .tableDiv tbody > tr:nth-child(even) {\n background-color: white;\n color:black;\n}\n.other_Table .tableDiv tbody > tr.selected {\n background-color:#f48a00;\n color: white;\n}\n\n.other_Table .rows-wrapper table > tbody > tr {\n background-color:#BCE1FB;\n color:black;\n}\n\n.other_Table .rows-wrapper .labels-wrapper {\n width: 100%;\n}\n.other_Table table tbody > tr.selected {\n background-color:#f48a00;\n color: white;\n}\n\n.other_Table .tableDiv tbody > tr:hover, .other_Table .tableDiv tbody > tr.hover, .rows-wrapper table tbody tr.hover {\n background-color: #bfd7e7;\n color: white;\n}\n.other_Table .tableDiv tbody > tr.selected:hover, .other_Table .tableDiv tbody > tr.selected.hover {\n background-color: #5ea8db;\n color: white;\n}\n.other_Table .rows-wrapper tbody tr.hover.selected {\n background-color:#5ea8db;\n color: white;\n}\n\n.other_Table tr.selected:hover, .other_Table tr.selected.hover {\n background-color:#5ea8db;\n color: white;\n}\n\n.other_Table td, .rows-wrapper td{\n border-width: 1px;\n padding:2px 5px;\n border-style: solid;\n border-color: #a9c6c9;\n white-space: nowrap;\n box-sizing:border-box;\n vertical-align: middle;\n}\n\n.other_Table tfoot td, .rows-wrapper tfoot td {\n background-color: #ADDFF3;\n font-weight: bold;\n}\n`;\n document.head.appendChild(e);\n }\n })();", "(function(){\n if (!document.getElementById('519e1ea0')) {\n var e = document.createElement('style');\n e.id = '519e1ea0';\n e.textContent = `.other_Legend .colorBlock{\n width:10px;\n height:10px;\n}\n.other_Legend > table, .other_Legend > table td,.other_Legend > table th {\n border-collapse: collapse;\n border-spacing: 0px;\n}\n.other_Table.other_Legend table {\n border-spacing: 0;\n}\n.other_Table.other_Legend th, .labels-wrapper th {\n padding: 2px 5px;\n background-color: transparent;\n border-width: 1px;\n border-style: solid;\n border-color: transparent;\n color: #333;\n white-space: nowrap;\n cursor: default;\n font-weight:normal;\n text-align:left;\n}\n.other_Table.other_Legend tr {\n background-color: transparent;\n color: #333;\n}\n\n.other_Table.other_Legend .tableDiv tbody > tr:nth-child(odd) {\n background-color: unset;\n color:black;\n}\n.other_Table.other_Legend .tableDiv tbody > tr:hover, \n.other_Table.other_Legend .tableDiv tbody > tr.hover, \n.rows-wrapper table tbody tr.hover {\n background-color: #bfd7e7;\n color: white;\n}\n\n\n.other_Table.other_Legend thead > tr:hover {\n background-color: transparent;\n}\n.other_Table.other_Legend tbody > tr:hover, .other_Table.other_Legend tbody > tr.hover, .rows-wrapper tbody tr.hover {\n background-color: #EEE;\n}\n.other_Table.other_Legend td, .rows-wrapper td {\n border-width: 0px;\n padding: 2px 5px;\n white-space: nowrap;\n box-sizing: border-box;\n}\n.other_Legend > .tableDiv > table > tbody > tr:hover{\n cursor:pointer;\n color:#000;\n background-color:#DDD;\n}\n.other_Legend.horiz-legend .tableDiv {\n width: 100%!important;\n text-align: left;\n}\n.other_Legend.horiz-legend .tableDiv > table {\n display:inline-block;\n width:100%!important;\n top:0px!important;\n left:0px!important;\n}\n.other_Legend.horiz-legend thead,\n.other_Legend.horiz-legend tbody,\n.other_Legend.horiz-legend tr\n{\n display: inline-block;\n}\n.other_Legend.horiz-legend td,\n.other_Legend.horiz-legend td > div {\n display:inline-block;\n white-space:nowrap;\n}\n.other_Legend.horiz-legend tr{\n white-space: nowrap;\n}\n.other_Legend.horiz-legend tbody{\n display:inline-block;\n width:100%!important;\n text-align:center;\n}`;\n document.head.appendChild(e);\n }\n })();", "import { SVGWidget } from \"@hpcc-js/common\";\n\nimport \"../src/MorphText.css\";\n\nexport class MorphText extends SVGWidget {\n _fontWidth;\n _textElement;\n\n constructor() {\n super();\n }\n\n enter(domNode, element) {\n if (!this.fontSize()) {\n const style = window.getComputedStyle(domNode, null);\n this.fontSize(parseInt(style.fontSize));\n }\n this._fontWidth = this.fontSize() * 32 / 48;\n this._textElement = element.append(\"g\")\n ;\n }\n\n dateTime() {\n const d = new Date();\n const seconds = d.getSeconds().toString().length === 1 ? \"0\" + d.getSeconds() : d.getSeconds();\n const minutes = d.getMinutes().toString().length === 1 ? \"0\" + d.getMinutes() : d.getMinutes();\n const hours = d.getHours().toString().length === 1 ? \"0\" + d.getHours() : d.getHours();\n const ampm = d.getHours() >= 12 ? \"pm\" : \"am\";\n const months = [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\"];\n const days = [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"];\n return days[d.getDay()] + \" \" + months[d.getMonth()] + \" \" + d.getDate() + \" \" + d.getFullYear() + \" \" + hours + \":\" + minutes + \":\" + seconds + ampm;\n }\n\n update(domNode, element) {\n const context = this;\n const text = this._textElement.selectAll(\"text\")\n .data(this.data(), function (d) { return d.id; })\n ;\n text\n .attr(\"class\", \"update\")\n ;\n this.transition.apply(text)\n .attr(\"x\", function (d, i) { return (-context.data().length / 2 + i) * context._fontWidth + context._fontWidth / 2; })\n ;\n\n const newText = text.enter().append(\"text\")\n .attr(\"class\", \"enter\")\n .attr(\"font-size\", this.fontSize())\n .attr(\"dy\", \".35em\")\n .attr(\"y\", (this.reverse() ? +1 : -1) * this._fontWidth * 2)\n .attr(\"x\", function (d, i) { return (-context.data().length / 2 + i) * context._fontWidth + context._fontWidth / 2; })\n .style(\"fill-opacity\", 1e-6)\n .style(\"text-anchor\", this.anchor())\n .text(function (d) { return d.text; })\n ;\n this.transition.apply(newText)\n .attr(\"y\", 0)\n .style(\"fill-opacity\", 1)\n ;\n\n text.exit()\n .attr(\"class\", \"exit\")\n ;\n this.transition.apply(text.exit())\n .attr(\"y\", (this.reverse() ? -1 : +1) * this._fontWidth * 2)\n .style(\"fill-opacity\", 1e-6)\n .remove()\n ;\n }\n}\nMorphText.prototype._class += \" other_MorphText\";\n\nexport interface MorphText {\n anchor(): string;\n anchor(_: string): this;\n anchor_exists(): boolean;\n fontSize(): number;\n fontSize(_: number): this;\n fontSize_exists(): boolean;\n reverse(): boolean;\n reverse(_: boolean): this;\n reverse_exists(): boolean;\n text(): string;\n text(_: string): this;\n text_exists(): boolean;\n}\n\nMorphText.prototype.publish(\"anchor\", \"middle\", \"set\", \"Sets anchor point\", [\"middle\"], { tags: [\"Basic\"] });\nMorphText.prototype.publish(\"fontSize\", 14, \"number\", \"Sets fontsize\", null, { tags: [\"Basic\"] });\nMorphText.prototype.publish(\"reverse\", false, \"boolean\", \"Reverse Animation\", null, { tags: [\"Basic\"] });\nMorphText.prototype.publish(\"text\", \"\", \"string\", \"Sets text/data of widget\", null, { tags: [\"Basic\"] });\n\nconst _origText = MorphText.prototype.text;\nMorphText.prototype.text = function (_?: string) {\n const retVal = _origText.apply(this, arguments);\n if (arguments.length) {\n const usedChars = {};\n const chars = _.split(\"\");\n this.data(chars.map(function (d) {\n const id = \"_\" + d;\n if (usedChars[id] === undefined) {\n usedChars[id] = 0;\n }\n usedChars[id]++;\n return { text: d, id: d.charCodeAt(0) + (1024 * usedChars[id]) };\n }));\n }\n return retVal;\n};\n", "(function(){\n if (!document.getElementById('df6615a2')) {\n var e = document.createElement('style');\n e.id = 'df6615a2';\n e.textContent = `.other_MorphText .enter {\n fill: green;\n}\n\n.other_MorphText .update {\n fill: #333;\n}\n\n.other_MorphText .exit {\n fill: brown;\n}\n`;\n document.head.appendChild(e);\n }\n })();", "\uFEFFimport { Table } from \"./Table.ts\";\n\nexport class NestedTable extends Table {\n constructor() {\n super();\n this.minWidgetHeight(240);\n this.minWidgetWidth(360);\n }\n}\nNestedTable.prototype._class += \" other_NestedTable\";\n\nconst origColumns = NestedTable.prototype.columns;\nNestedTable.prototype.columns = function (_?) {\n if (arguments.length) {\n this._columns = _;\n return origColumns.call(this, _.map(function (col) {\n if (typeof col === \"object\") {\n return col.label;\n }\n return col;\n }));\n }\n return origColumns.apply(this, arguments);\n};\n\nconst origData = NestedTable.prototype.data;\nNestedTable.prototype.data = function (_?: any): NestedTable | any {\n if (arguments.length) {\n const context = this;\n return origData.call(this, _.map(function (row) {\n return row.map(function (cell, idx) {\n if (cell instanceof Array) {\n let columns = [];\n if (typeof context._columns[idx] === \"object\" && context._columns[idx].columns) {\n columns = context._columns[idx].columns;\n } else {\n for (let i = 0; i < cell.length; ++i) {\n columns.push(context._columns[idx] + \".\" + i);\n }\n }\n return new Table()\n .columns(columns)\n .data(cell)\n ;\n }\n return cell;\n });\n }));\n }\n return origData.apply(this, arguments);\n};\n", "import { d3Event, PropertyExt, select as d3Select, selectAll as d3SelectAll, SVGWidget } from \"@hpcc-js/common\";\n\nimport \"../src/Opportunity.css\";\n\nexport class Column extends PropertyExt {\n _owner: Opportunity;\n\n constructor() {\n super();\n }\n\n owner(): Opportunity;\n owner(_: Opportunity): this;\n owner(_?: Opportunity): Opportunity | this {\n if (!arguments.length) return this._owner;\n this._owner = _;\n return this;\n }\n\n valid(): boolean {\n return !!this.headerLabel();\n }\n}\nColumn.prototype._class += \" other_Opportunity.Column\";\n\nexport interface Column {\n headerLabel(): string;\n headerLabel(_: string): this;\n}\nColumn.prototype.publish(\"headerLabel\", null, \"string\", \"Header value of a table\", function (this: Column) { return this._owner ? this._owner.columns() : []; }, { tags: [\"Basic\"], optional: true });\n\nexport class MouseHoverColumn extends PropertyExt {\n _owner: Opportunity;\n\n constructor() {\n super();\n }\n\n owner(): Opportunity;\n owner(_: Opportunity): this;\n owner(_?: Opportunity): Opportunity | this {\n if (!arguments.length) return this._owner;\n this._owner = _;\n return this;\n }\n\n valid(): boolean {\n return !!this.hoverValue() && !!this.hoverList();\n }\n}\nMouseHoverColumn.prototype._class += \" other_Opportunity.MouseHoverColumn\";\n\nexport interface MouseHoverColumn {\n hoverValue(): string;\n hoverValue(_: string): this;\n hoverList(): string;\n hoverList(_: string): this;\n}\nMouseHoverColumn.prototype.publish(\"hoverValue\", null, \"string\", \"Hover value of a table\", function () { return this._owner ? this._owner.columns() : []; }, { tags: [\"Basic\"], optional: true });\nMouseHoverColumn.prototype.publish(\"hoverList\", null, \"set\", \"Hover value of a table\", function () { return this._owner ? this._owner.getIds() : []; }, { tags: [\"Basic\"], optional: true });\n\nexport class ColumnDropdown extends PropertyExt {\n _owner: Opportunity;\n\n constructor() {\n super();\n }\n\n owner(): Opportunity;\n owner(_: Opportunity): this;\n owner(_?: Opportunity): Opportunity | this {\n if (!arguments.length) return this._owner;\n this._owner = _;\n return this;\n }\n\n valid(): boolean {\n return !!this.columnIndex() && !!this.ColumnDropdownList();\n }\n}\nColumnDropdown.prototype._class += \" other_Opportunity.ColumnDropdown\";\n\nexport interface ColumnDropdown {\n columnIndex(): number;\n columnIndex(_: number): this;\n ColumnDropdownList(): string;\n ColumnDropdownList(_: string): this;\n}\nColumnDropdown.prototype.publish(\"columnIndex\", null, \"number\", \"Column index for display context data based on column dropdown list selction\", {}, { tags: [\"Basic\", \"Shared\"] });\nColumnDropdown.prototype.publish(\"ColumnDropdownList\", null, \"set\", \"column value of a table\", function () { return this._owner ? this._owner.getIds() : []; }, { tags: [\"Basic\"], optional: true });\n\nexport class Opportunity extends SVGWidget {\n groupCount;\n svg;\n tooltipdiv;\n Column;\n MouseHoverColumn;\n ColumnDropdown;\n\n constructor() {\n super();\n this._drawStartPos = \"origin\";\n this.groupCount = 7;\n }\n enter(domNode, element) {\n super.enter(domNode, element);\n const paddingTop = 30;\n const nodeRectHeight = 14;\n const verticalPadding = 10;\n const h = (this.data().length + 1) * (nodeRectHeight + verticalPadding + 1) + paddingTop;\n this.svg = element.append(\"g\")\n .attr(\"width\", ((this.groupCount * 100) + 1))\n .attr(\"height\", h);\n this.svg.append(\"defs\").append(\"marker\")\n .classed(\"arrowhead\", true)\n .attr(\"id\", \"end-arrow\")\n .attr(\"viewBox\", \"0 -5 10 10\")\n .attr(\"refX\", 6)\n .attr(\"markerWidth\", 8)\n .attr(\"markerHeight\", 8)\n .attr(\"orient\", \"auto\")\n .append(\"svg:path\")\n .attr(\"d\", \"M0,-5L10,0L0,5\")\n .attr(\"fill\", \"rgb(100,100,100)\");\n this.tooltipdiv = d3Select(\"body\").append(\"div\")\n .attr(\"class\", \"other_Opportunity-tooltip tooltip\")\n .style(\"opacity\", 0);\n }\n update(domNode, element) {\n super.update(domNode, element);\n const context = this;\n const data = this.data();\n const dropDownOption = this.opportunityId();\n data.sort(function (a, b) {\n if (a.cur_group > b.cur_group) return 1;\n else if (a.cur_group < b.cur_group) return -1;\n else return 0;\n });\n const groups = [];\n for (let i = 1; i <= context.groupCount; i++) {\n groups.push(i);\n }\n const paddingTop = 30;\n const nodeRectHeight = 14;\n const verticalPadding = 10;\n const h = (data.length + 1) * (nodeRectHeight + verticalPadding + 1) + paddingTop;\n const w = this.width();\n const nodeRectWidthPadding = 30;\n const nodeRectWidth = ((w / context.groupCount) - nodeRectWidthPadding);\n // Groups ---\n const group = this.svg.selectAll(\".group\").data(groups);\n group.enter().append(\"rect\")\n .attr(\"class\", \"group\");\n group\n .attr(\"x\", function (d, i) {\n return (i * w / context.groupCount) + 1;\n })\n .attr(\"y\", paddingTop)\n .attr(\"width\", w / this.groupCount)\n .attr(\"height\", h - paddingTop);\n group.exit().remove();\n // Group Headings ---\n const groupHeadings = this.svg.selectAll(\".group_headings\").data(groups);\n groupHeadings.enter().append(\"text\")\n .attr(\"class\", \"group_headings\")\n .attr(\"y\", 20);\n groupHeadings\n .attr(\"x\", function (d, i) {\n return (i * w / context.groupCount) + ((w / context.groupCount) / context.groupCount);\n })\n .text(function (d, i) {\n if (context.headerLabels().length > 0) {\n if (context.headerLabels()[i] && (context.headerLabels()[i]).headerLabel()) {\n return (context.headerLabels()[i]).headerLabel();\n }\n }\n return \"\";\n });\n groupHeadings.exit().remove();\n if (this.previousGroup() === \"prev_group\" && this.currentGroup() === \"cur_group\") {\n // Node Date Change ---\n const node_date_change = this.svg.selectAll(\".node_date_change\").data(data);\n node_date_change.enter().append(\"g\")\n .attr(\"class\", \"node_date_change update\")\n .on(\"mouseover\", function (d) {\n context.tooltipdiv.transition()\n .duration(200)\n .style(\"opacity\", 0.9);\n let htmlInput = \"<span style='font-weight:bolder'>\" + \"Close Date Change \" + \"</span>\" + \"<br/>\";\n const mouseHoverMapping = context.mouseHover();\n mouseHoverMapping.forEach(function (obj, index) {\n if (obj.hoverValue() !== undefined) {\n htmlInput = htmlInput + \"<span style='font-weight:bold'>\" + obj.hoverValue() + \": \" + \"</span>\" + d[obj.hoverList()] + \"<br/>\";\n }\n });\n let prevDate = d.prevdate + \"\";\n prevDate = prevDate.replace(/(\\d\\d\\d\\d)(\\d\\d)(\\d\\d)/g, \"$3-$2-$1\");\n let fromDate = d.curdate + \"\";\n fromDate = fromDate.replace(/(\\d\\d\\d\\d)(\\d\\d)(\\d\\d)/g, \"$3-$2-$1\");\n htmlInput = htmlInput + \"<span style='font-weight:bold'>\" + \"From: \" + \"</span>\" + prevDate + \"<br/>\" + \"<span style='font-weight:bold'>\" + \"To: \" + \"</span>\" + fromDate + \"<br/>\";\n const event = d3Event();\n context.tooltipdiv.html(htmlInput)\n .style(\"left\", (event.pageX) + \"px\")\n .style(\"top\", (event.pageY - 50) + \"px\");\n })\n .on(\"mouseout\", function (d) {\n context.tooltipdiv.transition()\n .duration(500)\n .style(\"opacity\", 0);\n })\n .each(function (d) {\n const element2 = d3Select(this);\n element2.append(\"rect\")\n .attr(\"class\", \"node_date_change_rect\")\n .attr(\"width\", 5)\n .attr(\"height\", nodeRectHeight)\n .attr(\"rx\", 6)\n .attr(\"ry\", 6);\n });\n node_date_change\n .attr(\"transform\", function (d, i) {\n return \"translate(\" + ((9 * w / context.groupCount) + (nodeRectWidthPadding) - 80) + \",\" + ((i + (i * (nodeRectHeight + verticalPadding))) + 12 + paddingTop) + \")\";\n });\n node_date_change.exit().remove();\n // Node Prev Group ---\n const node_prev_group = this.svg.selectAll(\".node_prev_group\").data(data);\n node_prev_group.enter().append(\"g\")\n .attr(\"class\", \"node_prev_group\")\n .on(\"mouseover\", function (d, i) {\n context.tooltipdiv.transition()\n .duration(200)\n .style(\"opacity\", 0.9);\n let tooltipHtml = \"\";\n const mouseHoverMapping = context.mouseHover();\n mouseHoverMapping.forEach(function (obj, index) {\n if (obj.hoverValue() !== undefined) {\n tooltipHtml = tooltipHtml + \"<span style='font-weight:bold'>\" + obj.hoverValue() + \": \" + \"</span>\" + d[obj.hoverList()] + \"<br/>\";\n }\n });\n const event = d3Event();\n context.tooltipdiv.html(tooltipHtml)\n .style(\"left\", (event.pageX) + \"px\")\n .style(\"top\", (event.pageY - 100) + \"px\");\n })\n .on(\"mouseout\", function (d) {\n context.tooltipdiv.transition()\n .duration(500)\n .style(\"opacity\", 0);\n })\n .each(function (d) {\n const element2 = d3Select(this);\n element2.append(\"rect\")\n .attr(\"class\", \"node_prev_rect\")\n .attr(\"rx\", 6)\n .attr(\"ry\", 6);\n element2.append(\"text\")\n .attr(\"class\", \"node_prev_text\");\n });\n node_prev_group\n .classed(\"update\", true)\n .classed(\"changed\", function (d) {\n return d.delta !== 0;\n })\n .attr(\"transform\", function (d, i) {\n return \"translate(\" + ((((d.prev_group - 1)) * w / context.groupCount) + (nodeRectWidthPadding / 2)) + \",\" + ((i + (i * (nodeRectHeight + verticalPadding))) + 10 + paddingTop) + \")\";\n })\n .each(function (d) {\n const element2 = d3Select(this);\n // Change Lines ---\n const changeLines = element2.selectAll(\".arrow\").data(d.delta !== 0 ? [d] : []);\n changeLines.enter().append(\"line\")\n .attr(\"class\", \"arrow update\");\n changeLines\n .attr(\"x1\", function (d2) {\n return (d2.delta > 0) ? nodeRectWidth : 0;\n })\n .attr(\"y1\", nodeRectHeight / 2)\n .attr(\"x2\", function (d2) {\n return (d2.delta > 0) ? (nodeRectWidth + nodeRectWidthPadding - 4) + ((Math.abs(d2.delta) - 1)) * (w / context.groupCount) : ((-nodeRectWidthPadding - ((Math.abs(d2.delta) - 1)) * (w / context.groupCount)) + 4);\n })\n .attr(\"y2\", nodeRectHeight / 2)\n .style(\"stroke-dasharray\", (\"3, 3\"))\n .style(\"stroke\", \"rgb(100,100,100)\")\n .style(\"marker-end\", \"url(#end-arrow)\")\n .style(\"opacity\", \"1\");\n changeLines.exit().remove();\n });\n const node_previous_rect = node_prev_group.select(\".node_prev_rect\");\n node_previous_rect\n .attr(\"width\", nodeRectWidth)\n .attr(\"height\", nodeRectHeight);\n const node_previous_text = node_prev_group.select(\".node_prev_text\");\n node_previous_text\n .attr(\"dy\", (nodeRectHeight / 2) + 3)\n .attr(\"dx\", (nodeRectWidth / 4))\n .text(function (d) {\n if (typeof d[dropDownOption] === \"number\")\n return d[dropDownOption];\n else\n return d[dropDownOption].substring(0, 14);\n });\n node_prev_group.exit().remove();\n // Node Cur Group ---\n const node_cur_group = this.svg.selectAll(\".node_cur_group\").data(data);\n node_cur_group.enter().append(\"g\")\n .attr(\"class\", \"node_cur_group\")\n .attr(\"transform\", function (d, i) {\n return \"translate(\" + ((((d.prev_group - 1)) * w / context.groupCount) + (nodeRectWidthPadding / 2)) + \",\" + ((i + (i * (nodeRectHeight + verticalPadding))) + 10 + paddingTop) + \")\";\n })\n .on(\"mouseover\", function (d, i) {\n context.tooltipdiv.transition()\n .duration(200)\n .style(\"opacity\", 0.9);\n let tooltipHtml = \"\";\n const mouseHoverMapping = context.mouseHover();\n mouseHoverMapping.forEach(function (obj, index) {\n if (obj.hoverValue() !== undefined) {\n tooltipHtml = tooltipHtml + \"<span style='font-weight:bold'>\" + obj.hoverValue() + \": \" + \"</span>\" + d[obj.hoverList()] + \"<br/>\";\n }\n });\n const event = d3Event();\n context.tooltipdiv.html(tooltipHtml)\n .style(\"left\", (event.pageX) + \"px\")\n .style(\"top\", (event.pageY - 100) + \"px\");\n })\n .on(\"mouseout\", function (d) {\n context.tooltipdiv.transition()\n .duration(500)\n .style(\"opacity\", 0);\n })\n .each(function (d) {\n const element2 = d3Select(this);\n element2.append(\"rect\")\n .attr(\"class\", \"node_cur_rect\")\n .attr(\"fill\", function (d2: any) {\n let color;\n if (d2.delta < 0 || d2.cur_group === 7) {\n color = \"#F78181\";\n } else {\n color = \"#A9F5A9\";\n }\n return color;\n })\n .attr(\"rx\", 6)\n .attr(\"ry\", 6);\n element2.append(\"a\")\n .append(\"text\")\n .attr(\"class\", \"node_cur_text\");\n });\n node_cur_group\n .classed(\"update\", true)\n .classed(\"changed\", function (d) {\n return d.delta !== 0;\n })\n .transition().duration(800)\n .ease(\"linear\")\n .attr(\"transform\", function (d, i) {\n return \"translate(\" + ((((d.cur_group) - 1) * w / context.groupCount) + (nodeRectWidthPadding / 2)) + \",\" + ((i + (i * (nodeRectHeight + verticalPadding))) + 10 + paddingTop) + \")\";\n })\n .each(\"end\", function () {\n d3SelectAll(\".arrow\").style(\"opacity\", \"1\");\n });\n const node_current_anchor = node_cur_group.select(\".node_cur_group a\");\n node_current_anchor.classed(\"update\", true)\n .attr(\"xlink:href\", function (d) {\n return context.url() + d.id;\n })\n .attr(\"xlink:show\", \"new\");\n const node_current_rect = node_cur_group.select(\".node_cur_rect\");\n node_current_rect\n .attr(\"width\", nodeRectWidth)\n .attr(\"height\", nodeRectHeight);\n const node_current_text = node_cur_group.select(\".node_cur_text\");\n node_current_text\n .classed(\"update\", true)\n .attr(\"dy\", (nodeRectHeight / 2) + 3)\n .attr(\"dx\", (nodeRectWidth / 4))\n .style(\"fill\", \"blue\")\n .text(function (d) {\n if (typeof d[dropDownOption] === \"number\")\n return d[dropDownOption];\n else\n return d[dropDownOption].substring(0, 14);\n });\n node_cur_group.exit().remove();\n }\n for (let colIndex = 0; colIndex < context.columnData().length; colIndex++) {\n if ((context.columnData()[colIndex]) && (context.columnData()[colIndex]).ColumnDropdownList()) {\n const columnData = this.svg.selectAll(\".columnDataText_\" + colIndex).data(data);\n columnData.enter().append(\"g\")\n .attr(\"class\", \"columnDataText_\" + colIndex + \" update\")\n .each(function (d) {\n const element2 = d3Select(this);\n element2.append(\"text\");\n });\n columnData\n .attr(\"transform\", function (d, i) {\n return \"translate(\" + (((context.columnData()[colIndex]).columnIndex() * w / context.groupCount) + (nodeRectWidthPadding / 2)) + \",\" + ((i + (i * (nodeRectHeight + verticalPadding))) + 12 + paddingTop) + \")\";\n })\n .attr(\"width\", 5)\n .attr(\"height\", nodeRectHeight)\n .attr(\"rx\", 6)\n .attr(\"ry\", 6);\n const textLable = columnData.select(\"text\");\n textLable\n .attr(\"y\", -6)\n .attr(\"dy\", (nodeRectHeight) + 14)\n .attr(\"dx\", 0)\n .attr(\"height\", 20)\n .attr(\"width\", 29)\n .text(function (d, i) {\n return d[(context.columnData()[colIndex]).ColumnDropdownList()];\n });\n columnData.exit().remove();\n }\n }\n }\n exit(domNode, element) {\n super.exit(domNode, element);\n }\n\n getIds() {\n const dropdownList = this.columns();\n dropdownList.unshift(\"default\");\n return dropdownList;\n }\n}\nOpportunity.prototype._class += \" other_Opportunity\";\nOpportunity.prototype.Column = Column;\nOpportunity.prototype.MouseHoverColumn = MouseHoverColumn;\nOpportunity.prototype.ColumnDropdown = ColumnDropdown;\n\nexport interface Opportunity {\n previousGroup(): string;\n previousGroup(_: string): this;\n previousGroup_exists(): boolean;\n currentGroup(): string;\n currentGroup(_: string): this;\n currentGroup_exists(): boolean;\n opportunityId(): string;\n opportunityId(_: string): this;\n opportunityId_exists(): boolean\n url(): string;\n url(_: string): this;\n url_exists(): boolean;\n // width(): number;\n // width(_: number): this;\n addColumn(): string;\n addColumn(_: string): this;\n addColumn_exists(): boolean;\n removeColumn(): string;\n removeColumn(_: string): this;\n removeColumn_exists(): boolean;\n headerLabels(): any[];\n headerLabels(_: any[]): this;\n headerLabels_exists(): boolean;\n mouseHover(): any[];\n mouseHover(_: any[]): this;\n mouseHover_exists(): boolean;\n columnData(): any[];\n columnData(_: any[]): this;\n columnData_exists(): boolean;\n}\n\nOpportunity.prototype.publish(\"previousGroup\", \"\", \"set\", \"label in Opportunity\", function () { return this.getIds(); }, { tags: [\"Basic\", \"Shared\"] });\nOpportunity.prototype.publish(\"currentGroup\", \"\", \"set\", \"label in Opportunity\", function () { return this.getIds(); }, { tags: [\"Basic\", \"Shared\"] });\nOpportunity.prototype.publish(\"opportunityId\", \"id\", \"set\", \"Id for label in Opportunity\", function () { return this.getIds(); }, { tags: [\"Basic\", \"Shared\"] });\nOpportunity.prototype.publish(\"url\", null, \"string\", \"URL in Opportunity\", {}, { tags: [\"Basic\", \"Shared\"] });\nOpportunity.prototype.publish(\"width\", 1100, \"number\", \"label in Opportunity\", {}, { tags: [\"Basic\", \"Shared\"] });\nOpportunity.prototype.publish(\"addColumn\", null, \"string\", \"number of columns in a table\", {}, {\n tags: [\"Basic\", \"Shared\"],\n editor_input: (context, widget, cell, param) => {\n cell.append(\"button\")\n .attr(\"id\", context.id() + \"_addColumn\" + param.id)\n .classed(\"property-input custom-editor-input addColumn update\", true)\n .text(\"AddColumn\")\n .on(\"click\", function () {\n widget.groupCount = widget.groupCount + 1;\n const new_value_after_click = \"Added a new column\";\n context.setProperty(widget, param.id, new_value_after_click);\n });\n }\n});\nOpportunity.prototype.publish(\"removeColumn\", null, \"string\", \"number of columns in a table\", function () { return this.columns(); }, {\n tags: [\"Basic\", \"Shared\"],\n editor_input: (context, widget, cell, param) => {\n cell.append(\"button\")\n .attr(\"id\", context.id() + \"_removeColumn\" + param.id)\n .classed(\"property-input custom-editor-input removeColumn update\", true)\n .text(\"RemoveColumn\")\n .on(\"click\", function () {\n widget.groupCount = widget.groupCount - 1;\n const new_value_after_click = \"Removed a column\";\n context.setProperty(widget, param.id, new_value_after_click);\n });\n }\n});\nOpportunity.prototype.publish(\"headerLabels\", [], \"propertyArray\", \"Source Columns\", null, { autoExpand: Column });\nOpportunity.prototype.publish(\"mouseHover\", [], \"propertyArray\", \"mouse hover options\", null, { autoExpand: MouseHoverColumn });\nOpportunity.prototype.publish(\"columnData\", [], \"propertyArray\", \"column data\", null, { autoExpand: ColumnDropdown });\n", "(function(){\n if (!document.getElementById('3d42de83')) {\n var e = document.createElement('style');\n e.id = '3d42de83';\n e.textContent = `.graph_Opportunity {\n transform: translate(20px,20px)scale(1) !important;\n}\n\n.graph_Opportunity .group {\n stroke-width: 1.0;\n stroke:#555;\n fill:#FEFEFE;\n}\n\n.graph_Opportunity .group_headings {\n font-family: \"Helvetica\",\"Arial\",sans-serif;\n font-size: 14px;\n font-weight: 700;\n line-height: 20px;\n}\n\n.graph_Opportunity .node_prev_rect {\n fill:white;\n stroke-width:2;\n stroke:#000;\n stroke-dasharray:3,3;\n opacity:0.6;\n}\n\n.graph_Opportunity .node_rev_change {\n fill:white;\n}\n.graph_Opportunity .node_rev_change_text {\n font-size:18px;\n font-family:Arial;\n color: black;\n font-weight: bold;\n}\n\n.graph_Opportunity .node_date_change {\n fill:white;\n}\n\n.graph_Opportunity .node_date_change_text {\n font-size:18px;\n font-family:Arial;\n color: black;\n font-weight: bold;\n}\n\n.graph_Opportunity .node_prev_text {\n font-size:9px;\n font-family:Arial;\n opacity:0.6;\n}\n\n.graph_Opportunity .node_cur_rect {\n stroke-width:2;\n stroke:#000;\n}\n\n.graph_Opportunity .node_cur_text {\n font-size:9px;\n font-family:Arial;\n text-decoration: underline;\n}\n\n.graph_Opportunity .arrowhead {\n refX:6;\n}\n\n.graph_Opportunity-tooltip.tooltip {\n position: absolute;\n text-align: left;\n width:350px;\n height: 135px; \n padding: 10px;\n padding-top: 15px;\n font: 14px arial;\n background: #BDBDBD;\n border: 0px;\n border-radius: 8px;\n pointer-events: none;\n z-index: 1;\n}`;\n document.head.appendChild(e);\n }\n })();", "export function discover(widget) {\n return widget.publishedProperties(false, true);\n}\n\nexport function widgetArrayWalker(widgets, visitor) {\n if (!widgets)\n return;\n widgets.forEach(function (widget) {\n widget.widgetWalker(visitor);\n });\n}\n\nexport function widgetPropertyWalker(widget2, visitor, filter?) {\n widget2.widgetWalker(function (widget) {\n widget.propertyWalker(visitor, filter);\n });\n}\n\nexport function serializeTheme(widget, filter) {\n return JSON.stringify(serializeThemeToObject(widget, filter));\n}\n\nexport function serializeThemeToObject(widget2, filter?) {\n filter = filter || [\"surface\", \"Color\", \"Font\", \"palette\"];\n\n const propObj = {};\n widgetPropertyWalker(widget2, null, function (widget, item) {\n if (widget[item.id + \"_modified\"]() || widget.publishedProperty(item.id).origDefaultValue !== widget.publishedProperty(item.id).defaultValue) {\n if (_isFilterMatch(item.id, filter)) {\n const classParts = widget._class.trim().split(\" \");\n for (const i in classParts) {\n if (classParts.HasOwnProperty(i)) {\n if (propObj[classParts[i]] === undefined) {\n propObj[classParts[i]] = {};\n }\n if (propObj[classParts[i]][item.id] === undefined) {\n propObj[classParts[i]][item.id] = widget[item.id]();\n break;\n } else if (propObj[classParts[i]][item.id] === widget[item.id]()) {\n break;\n }\n }\n }\n }\n }\n });\n\n function _isFilterMatch(str, arr) {\n let ret = false;\n for (const i in arr) {\n if (str.indexOf(arr[i]) !== -1) {\n ret = true;\n break;\n }\n }\n return ret;\n }\n return propObj;\n}\nexport function removeTheme(widget2, callback) {\n widgetPropertyWalker(widget2, null, function (widget, item) {\n widget.publishedProperty(item.id).defaultValue = widget.publishedProperty(item.id).origDefaultValue;\n });\n\n if (typeof (callback) === \"function\") {\n callback.call(this);\n }\n}\nexport function applyTheme(widget2, themeObj, callback) {\n const context = this;\n widgetPropertyWalker(widget2, null, function (widget3, item) {\n switch (item.type) {\n case \"widget\":\n context.applyTheme(widget3[item.id](), themeObj);\n return true;\n case \"widgetArray\":\n const widgetArray = widget3[item.id]();\n widgetArray.forEach(function (widget) {\n context.applyTheme(widget, themeObj);\n }, this);\n return true;\n default:\n widget3.applyTheme(themeObj);\n break;\n }\n });\n if (typeof (callback) === \"function\") {\n callback.call(this);\n }\n}\n\nexport function serializeToObject(widget, filter?, includeData?, includeState?) {\n const retVal: any = {\n __class: widget.classID()\n };\n if (widget._id.indexOf(widget._idSeed) !== 0) {\n retVal.__id = widget._id;\n }\n if (widget.version) {\n retVal.__version = widget.version();\n }\n retVal.__properties = {};\n\n widget.propertyWalker((childWwidget2, item) => {\n if (childWwidget2[item.id + \"_modified\"]()) {\n switch (item.type) {\n case \"widget\":\n retVal.__properties[item.id] = serializeToObject(childWwidget2[item.id](), null, includeData, includeState && !widget.serializeState); // Only include state once\n return true;\n case \"widgetArray\":\n case \"propertyArray\":\n retVal.__properties[item.id] = [];\n const widgetArray = childWwidget2[item.id]();\n widgetArray.forEach((childWwidget) => {\n retVal.__properties[item.id].push(serializeToObject(childWwidget, null, includeData, includeState && !widget.serializeState)); // Only include state once\n });\n return true;\n default:\n retVal.__properties[item.id] = childWwidget2[item.id]();\n break;\n }\n }\n }, filter);\n\n if (widget.classID() === \"marshaller_Graph\") {\n const vertices = widget.data().vertices;\n if (vertices) {\n this.__vertices = vertices.map(item => {\n return serializeToObject(item, null, includeData, includeState && !widget.serializeState);\n });\n }\n }\n if (includeData && widget.data) {\n if (!retVal.__data) retVal.__data = {};\n retVal.__data.data = widget.data();\n }\n if (includeState) {\n if (widget.serializeState) {\n retVal.__state = widget.serializeState();\n } else if (widget.data) {\n retVal.__state = {\n data: widget.data()\n };\n }\n }\n return retVal;\n}\n\nexport function serialize(widget, filter?, includeData?, includeState?) {\n return JSON.stringify(serializeToObject(widget, filter, includeData, includeState));\n}\n", "import { HTMLWidget, Platform, PropertyExt, Widget } from \"@hpcc-js/common\";\nimport { Grid } from \"@hpcc-js/layout\";\nimport { local as d3Local, select as d3Select, selectAll as d3SelectAll } from \"d3-selection\";\nimport * as Persist from \"./Persist.ts\";\n\nimport \"../src/PropertyEditor.css\";\n\nfunction hasProperties(type) {\n switch (type) {\n case \"widget\":\n case \"widgetArray\":\n case \"propertyArray\":\n return true;\n default:\n }\n return false;\n}\n\nexport class PropertyEditor extends HTMLWidget {\n _widgetOrig;\n _parentPropertyEditor;\n _show_settings: boolean;\n _selectedItems;\n __meta_sorting;\n _watch;\n private _childPE = d3Local<PropertyEditor>();\n\n constructor() {\n super();\n this._parentPropertyEditor = null;\n\n this._tag = \"div\";\n this._show_settings = false;\n }\n\n parentPropertyEditor(_?: PropertyEditor): PropertyEditor {\n if (!arguments.length) return this._parentPropertyEditor;\n this._parentPropertyEditor = _;\n return this;\n }\n\n depth(): number {\n let retVal = 0;\n let parent = this.parentPropertyEditor();\n while (parent) {\n ++retVal;\n parent = parent.parentPropertyEditor();\n }\n return retVal;\n }\n\n _show_header = true;\n show_header(): boolean;\n show_header(_: boolean): PropertyEditor;\n show_header(_?: boolean): boolean | PropertyEditor {\n if (!arguments.length) {\n return this._show_header;\n }\n this._show_header = _;\n return this;\n }\n\n show_settings(): boolean;\n show_settings(_: boolean): PropertyEditor;\n show_settings(_?: boolean): boolean | PropertyEditor {\n if (!arguments.length) {\n return this._show_settings;\n }\n this._show_settings = _;\n return this;\n }\n\n rootWidgets() {\n if (this._selectedItems && this._selectedItems.length) {\n return this._selectedItems;\n }\n return this.show_settings() ? [this] : this.widget() ? [this.widget()] : [];\n }\n\n update(domNode, element) {\n super.update(domNode, element);\n\n const context = this;\n\n const rootWidgets = this.rootWidgets().filter(function (w) {\n if (w._owningWidget && w._owningWidget.excludeObjs instanceof Array) {\n if (w._owningWidget.excludeObjs.indexOf(w.classID()) !== -1) {\n return false;\n }\n }\n return true;\n });\n\n const table = element.selectAll(`table.property-table.table-${this.depth()}`).data(rootWidgets, function (d) {\n // We reuse the existing DOM Nodes and this node _might_ have been a regular Input previously ---\n if (typeof d.id !== \"function\") {\n return `meta-${d.id}`;\n }\n return d.id();\n });\n table.enter().append(\"table\")\n .attr(\"class\", `property-table table-${this.depth()}`)\n .each(function () {\n const tableElement = d3Select(this);\n\n // Header ---\n if (context._show_header && context.parentPropertyEditor() === null) {\n tableElement.append(\"thead\").append(\"tr\").append(\"th\")// .datum(tableElement)\n .attr(\"colspan\", \"2\")\n .each(function () {\n context.enterHeader(d3Select(this));\n })\n ;\n }\n\n // Body ---\n tableElement.append(\"tbody\");\n })\n .merge(table)\n .each(function (tableData) {\n const tableElement = d3Select(this);\n\n // Header ---\n if (context._show_header && context.parentPropertyEditor() === null) {\n context.updateHeader(tableElement.select(\"thead > tr > th\"));\n }\n\n // Body ---\n context.renderInputs(tableElement.select(\"tbody\"), tableData);\n })\n ;\n table.exit()\n .each(function () {\n context.renderInputs(element.select(\"tbody\"), null);\n })\n .remove()\n ;\n }\n\n exit(domNode, element) {\n super.exit(domNode, element);\n this.watchWidget(null);\n }\n\n private watchDepth = 0;\n watchWidget(widget) {\n if (this._watch) {\n if ((window as any).__hpcc_debug) {\n --this.watchDepth;\n console.info(\"watchDepth: \" + this.watchDepth);\n }\n this._watch.remove();\n delete this._watch;\n }\n if (widget) {\n const context = this;\n this._watch = widget.monitor(function (_paramId, newVal, oldVal) {\n if (oldVal !== newVal) {\n const propEditor = context.parentPropertyEditor() || context;\n propEditor.lazyRender();\n }\n });\n if ((window as any).__hpcc_debug) {\n ++this.watchDepth;\n console.info(\"watchDepth: \" + this.watchDepth);\n }\n }\n }\n\n enterHeader(th) {\n const context = this;\n\n th.append(\"span\");\n th.append(\"i\")\n .attr(\"class\", \"expandIcon fa\")\n .on(\"click\", function () {\n switch (context.peInputIcon()) {\n case \"fa-caret-up\":\n case \"fa-caret-right\":\n context.element().selectAll(`.table-${context.depth()} > tbody > tr > .headerRow > .peInput > .property-table-collapsed`)\n .classed(\"property-table-collapsed\", false)\n ;\n context.element().selectAll(`.table-${context.depth()} > tbody > tr > .headerRow > .peInput > i`)\n .classed(\"fa-minus-square-o\", true)\n .classed(\"fa-plus-square-o\", false)\n ;\n break;\n case \"fa-caret-down\":\n context.element().selectAll(`.table-${context.depth()} > tbody > tr > .headerRow > .peInput > div`)\n .classed(\"property-table-collapsed\", true)\n ;\n context.element().selectAll(`.table-${context.depth()} > tbody > tr > .headerRow > .peInput > i`)\n .classed(\"fa-minus-square-o\", false)\n .classed(\"fa-plus-square-o\", true)\n ;\n break;\n }\n context.refreshExpandIcon();\n })\n ;\n\n const sortIcon = th.append(\"i\")\n .attr(\"class\", \"sortIcon fa\")\n .on(\"click\", function () {\n context.refreshSortIcon(sortIcon, true);\n })\n ;\n\n th.append(\"i\")\n .attr(\"class\", \"hideParamsIcon fa\")\n .on(\"click\", function () {\n context.hideNonWidgets(!context.hideNonWidgets()).render();\n })\n ;\n }\n\n updateHeader(th) {\n const widget: any = this.widget();\n let spanText = \"\";\n if (widget) {\n if (widget.label) {\n spanText += widget.label();\n }\n if (widget.classID) {\n if (spanText) {\n spanText += \" - \";\n }\n spanText += widget.classID();\n }\n }\n th.select(\"span\")\n .text(spanText)\n ;\n this.refreshExpandIcon();\n this.refreshSortIcon(th.select(\".sortIcon\"));\n this.refreshHideParamsIcon(th.select(\".hideParamsIcon\"));\n }\n\n peInputCount() {\n return this.element().selectAll(`.table-${this.depth()} > tbody > tr > .headerRow > .peInput > div`).size();\n }\n\n peInputCollapsedCount() {\n return this.element().selectAll(`.table-${this.depth()} > tbody > tr > .headerRow > .peInput > div.property-table-collapsed`).size();\n }\n\n peInputIcon(): \"fa-caret-down\" | \"fa-caret-up\" | \"fa-caret-right\" {\n const collapsed = this.peInputCollapsedCount();\n if (collapsed === 0) {\n return \"fa-caret-down\";\n } else if (collapsed === this.peInputCount()) {\n return \"fa-caret-up\";\n }\n return \"fa-caret-right\";\n }\n\n refreshExpandIcon() {\n const newIcon = this.peInputIcon();\n this.element().select(`.table-${this.depth()} > thead > tr > th > .expandIcon`)\n .classed(\"fa-caret-up\", false)\n .classed(\"fa-caret-right\", false)\n .classed(\"fa-caret-down\", false)\n .classed(newIcon, true)\n ;\n }\n\n refreshSortIcon(sortIcon, increment = false) {\n const sort = this.sorting();\n const types = this.sorting_options();\n const icons = this.__meta_sorting.ext.icons;\n if (increment) {\n sortIcon.classed(icons[types.indexOf(sort)], false);\n this.sorting(types[(types.indexOf(sort) + 1) % types.length]).render();\n } else {\n sortIcon\n .classed(icons[(types.indexOf(sort)) % types.length], true)\n .attr(\"title\", sort)\n ;\n }\n }\n\n refreshHideParamsIcon(hideParamsIcon) {\n hideParamsIcon\n .classed(\"fa-eye\", !this.hideNonWidgets())\n .classed(\"fa-eye-slash\", this.hideNonWidgets())\n ;\n }\n\n gatherDataTree(widget) {\n if (!widget) return null;\n const retVal = {\n label: widget.id() + \" (\" + widget.classID() + \")\",\n children: []\n };\n const arr2 = Persist.discover(widget);\n arr2.forEach(function (prop) {\n const node = {\n label: prop.id,\n children: []\n };\n switch (prop.type) {\n case \"widget\":\n node.children.push(this.gatherDataTree(widget[prop.id]()));\n break;\n case \"widgetArray\":\n case \"propertyArray\":\n const arr = widget[prop.id]();\n if (arr) {\n arr.forEach(function (item) {\n node.children.push(this.gatherDataTree(item));\n }, this);\n }\n break;\n default:\n }\n retVal.children.push(node);\n }, this);\n return retVal;\n }\n\n getDataTree() {\n return this.gatherDataTree(this.widget());\n }\n\n _rowSorting(paramArr) {\n if (this.sorting() === \"type\") {\n const typeOrder = [\"boolean\", \"number\", \"string\", \"html-color\", \"array\", \"object\", \"widget\", \"widgetArray\", \"propertyArray\"];\n paramArr.sort(function (a, b) {\n if (a.type === b.type) {\n return a.id < b.id ? -1 : 1;\n } else {\n return typeOrder.indexOf(a.type) < typeOrder.indexOf(b.type) ? -1 : 1;\n }\n });\n } else if (this.sorting() === \"A-Z\") {\n paramArr.sort(function (a, b) { return a.id < b.id ? -1 : 1; });\n } else if (this.sorting() === \"Z-A\") {\n paramArr.sort(function (a, b) { return a.id > b.id ? -1 : 1; });\n }\n }\n\n filterInputs(d) {\n const discArr = Persist.discover(d);\n if ((this.filterTags() || this.excludeTags().length > 0 || this.excludeParams.length > 0) && d instanceof PropertyEditor === false) {\n const context = this;\n return discArr.filter(function (param, _idx) {\n if (d[param.id + \"_hidden\"] && d[param.id + \"_hidden\"]()) return false;\n for (const excludeParamItem of context.excludeParams()) {\n const arr = excludeParamItem.split(\".\");\n let widgetName;\n let excludeParam;\n if (arr.length > 2) {\n widgetName = arr[0];\n excludeParam = arr[2];\n } else {\n widgetName = arr[0];\n excludeParam = arr[1];\n }\n if (d.class().indexOf(widgetName) !== -1) {\n if (param.id === excludeParam) {\n return false;\n }\n return true;\n }\n }\n if (context.excludeTags().length > 0 && param.ext && param.ext.tags && param.ext.tags.some(function (item) { return (context.excludeTags().indexOf(item) > -1); })) {\n return false;\n }\n if ((context.filterTags() && param.ext && param.ext.tags && param.ext.tags.indexOf(context.filterTags()) !== -1) || !context.filterTags()) {\n return true;\n }\n return false;\n });\n }\n return discArr;\n }\n\n renderInputs(element, d) {\n const context = this;\n let discArr = [];\n const showFields = !this.show_settings() && this.showFields();\n if (d) {\n discArr = this.filterInputs(d).filter(function (prop) { return prop.id !== \"fields\" ? true : showFields; });\n if (!this.show_settings() && this.showData() && d.data) {\n discArr.push({ id: \"data\", type: \"array\" });\n }\n if (this.hideNonWidgets()) {\n discArr = discArr.filter(function (n) {\n return hasProperties(n.type);\n });\n }\n this._rowSorting(discArr);\n }\n\n const rows = element.selectAll(\"tr.prop\" + this.id()).data(discArr, function (d2) { return d2.id; });\n rows.enter().append(\"tr\")\n .attr(\"class\", \"property-wrapper prop\" + this.id())\n .each(function (param) {\n const tr = d3Select(this);\n if (hasProperties(param.type)) {\n tr.classed(\"property-widget-wrapper\", true);\n tr.append(\"td\")\n .attr(\"colspan\", \"2\")\n ;\n } else {\n tr.classed(\"property-input-wrapper\", true);\n tr.append(\"td\")\n .classed(\"property-label\", true)\n .text(param.id)\n ;\n const inputCell = tr.append(\"td\")\n .classed(\"property-input-cell\", true)\n ;\n context.enterInputs(d, inputCell, param);\n }\n }).merge(rows)\n .each(function (param) {\n const tr = d3Select(this);\n tr.classed(\"disabled\", d[param.id + \"_disabled\"] && d[param.id + \"_disabled\"]());\n tr.classed(\"invalid\", d[param.id + \"_valid\"] && !d[param.id + \"_valid\"]());\n tr.attr(\"title\", param.description);\n if (hasProperties(param.type)) {\n context.updateWidgetRow(d, tr.select(\"td\"), param);\n } else {\n context.updateInputs(d, param);\n }\n });\n rows.exit().each(function (param) {\n const tr = d3Select(this);\n if (hasProperties(param.type)) {\n context.updateWidgetRow(d, tr.select(\"td\"), null);\n }\n }).remove();\n rows.order();\n }\n\n updateWidgetRow(widget: PropertyExt, element, param) {\n let tmpWidget = [];\n if (widget && param) {\n tmpWidget = widget[param.id]() || [];\n }\n let widgetArr = tmpWidget instanceof Array ? tmpWidget : [tmpWidget];\n if (param && param.ext && param.ext.autoExpand) {\n // remove empties and ensure last row is an empty ---\n let lastModified = true;\n const noEmpties = widgetArr.filter(function (row, idx) {\n lastModified = row.valid();\n row._owner = widget;\n return lastModified || idx === widgetArr.length - 1;\n }, this);\n const widgetDisabled = widget[param.id + \"_disabled\"] && widget[param.id + \"_disabled\"]();\n let changed = !!(widgetArr.length - noEmpties.length);\n if (lastModified && !widgetDisabled) {\n changed = true;\n const autoExpandWidget = new param.ext.autoExpand()\n .owner(widget)\n ;\n // autoExpandWidget.monitor((id, newVal, oldVal, source) => {\n // widget.broadcast(param.id, newVal, oldVal, source);\n // });\n noEmpties.push(autoExpandWidget);\n }\n if (changed) {\n widget[param.id](noEmpties);\n widgetArr = noEmpties;\n }\n }\n\n const context = this;\n element.classed(\"headerRow\", true);\n const peInput = element.selectAll(`div.peInput-${this.depth()}`).data(widgetArr, function (d) { return d.id(); });\n peInput.enter().append(\"div\")\n .attr(\"class\", `peInput peInput-${this.depth()}`)\n .each(function (w) {\n const peInputElement = d3Select(this);\n\n // Header ---\n peInputElement.append(\"span\");\n peInputElement.append(\"i\")\n .attr(\"class\", \"fa\")\n .on(\"click\", function (d) {\n const clickTarget = peInputElement.select(\"div\");\n clickTarget\n .classed(\"property-table-collapsed\", !clickTarget.classed(\"property-table-collapsed\"))\n ;\n d3Select(this)\n .classed(\"fa-minus-square-o\", !clickTarget.classed(\"property-table-collapsed\"))\n .classed(\"fa-plus-square-o\", clickTarget.classed(\"property-table-collapsed\"))\n ;\n context.refreshExpandIcon();\n })\n ;\n\n // Body ---\n const peDiv = peInputElement.append(\"div\")\n // .attr(\"class\", `property- input - cell propEditor-${context.depth() }`)\n ;\n context._childPE.set(this, new PropertyEditor().label(param.id).target(peDiv.node() as HTMLElement));\n })\n .merge(peInput)\n .each(function (w) {\n const peInputElement = d3Select(this);\n const clickTarget = peInputElement.select(\"div\");\n\n // Header ---\n d3Select(this).select(\"span\")\n .text(`${param.id}`)\n ;\n\n d3Select(this).select(\"i\")\n .classed(\"fa-minus-square-o\", !clickTarget.classed(\"property-table-collapsed\"))\n .classed(\"fa-plus-square-o\", clickTarget.classed(\"property-table-collapsed\"))\n ;\n\n // Body ---\n context._childPE.get(this)\n .parentPropertyEditor(context)\n .showFields(context.showFields())\n .showData(context.showData())\n .sorting(context.sorting())\n .filterTags(context.filterTags())\n .excludeTags(context.excludeTags())\n .excludeParams(context.excludeParams())\n .hideNonWidgets(context.hideNonWidgets() && w._class.indexOf(\"layout_\") >= 0)\n .widget(w)\n .render()\n ;\n })\n ;\n peInput.exit()\n .each(function (w) {\n context._childPE.get(this)\n .widget(null)\n .render()\n .target(null)\n ;\n context._childPE.remove(this);\n })\n .remove()\n ;\n }\n\n setProperty(widget, id, value) {\n // With PropertyExt not all \"widgets\" have a render, if not use top most render...\n let topWidget: Widget;\n let topPropEditor: Widget;\n let propEditor: PropertyEditor = this;\n let oldValue;\n while (propEditor && widget) {\n if (propEditor === this) {\n oldValue = widget[id]();\n widget[id](value);\n }\n if (propEditor) {\n topPropEditor = propEditor;\n const w: PropertyExt = propEditor.widget();\n if (w instanceof Widget) {\n topWidget = w;\n }\n }\n propEditor = propEditor.parentPropertyEditor();\n }\n if (topWidget) {\n topWidget.render();\n }\n if (topPropEditor) {\n topPropEditor.broadcast(id, value, oldValue, widget);\n }\n }\n\n enterInputs(widget, cell, param) {\n cell.classed(param.type + \"-cell\", true);\n const context = this;\n if (typeof (param.ext.editor_input) === \"function\") {\n param.ext.editor_input(this, widget, cell, param);\n }\n switch (param.type) {\n case \"boolean\":\n cell.append(\"input\")\n .attr(\"id\", this.id() + \"_\" + param.id)\n .classed(\"property-input\", true)\n .attr(\"type\", \"checkbox\")\n .on(\"change\", function () {\n context.setProperty(widget, param.id, this.checked);\n })\n ;\n break;\n case \"set\":\n cell.append(\"select\")\n .attr(\"id\", this.id() + \"_\" + param.id)\n .classed(\"property-input\", true)\n .on(\"change\", function () {\n context.setProperty(widget, param.id, this.value);\n })\n ;\n break;\n case \"array\":\n case \"object\":\n cell.append(\"textarea\")\n .attr(\"id\", this.id() + \"_\" + param.id)\n .classed(\"property-input\", true)\n .attr(\"autocomplete\", \"off\")\n .attr(\"autocorrect\", \"off\")\n .attr(\"autocapitalize\", \"off\")\n .attr(\"spellcheck\", \"false\")\n .on(\"change\", function () {\n let value;\n try {\n value = JSON.parse(this.value);\n } catch (e) {\n value = this.value;\n }\n context.setProperty(widget, param.id, value);\n })\n ;\n break;\n default:\n if (param.ext && param.ext.range) {\n cell.append(\"span\")\n .classed(\"property-input-span\", true)\n .attr(\"id\", this.id() + \"_\" + param.id + \"_currentVal\")\n .text(param.defaultValue)\n ;\n cell.append(\"input\")\n .attr(\"type\", \"range\")\n .attr(\"step\", param.ext.range.step)\n .attr(\"min\", param.ext.range.min)\n .attr(\"max\", param.ext.range.max)\n .attr(\"id\", this.id() + \"_\" + param.id)\n .classed(\"property-input\", true)\n .on(\"input\", function () {\n context.setProperty(widget, param.id, this.value);\n d3Select(\"#\" + this.id + \"_currentVal\").text(\"Current Value: \" + this.value);\n })\n .on(\"change\", function () {\n context.setProperty(widget, param.id, this.value);\n d3Select(\"#\" + this.id + \"_currentVal\").text(\"Current Value: \" + this.value);\n })\n ;\n } else {\n cell.append(param.ext && param.ext.multiline ? \"textarea\" : \"input\")\n .attr(\"id\", this.id() + \"_\" + param.id)\n .classed(\"property-input\", true)\n .attr(\"autocomplete\", \"off\")\n .attr(\"autocorrect\", \"off\")\n .attr(\"autocapitalize\", \"off\")\n .attr(\"spellcheck\", \"false\")\n .on(\"change\", function () {\n context.setProperty(widget, param.id, this.value);\n })\n ;\n if (param.type === \"html-color\" && !Platform.isIE) {\n cell.append(\"input\")\n .attr(\"id\", this.id() + \"_\" + param.id + \"_2\")\n .classed(\"property-input\", true)\n .attr(\"type\", \"color\")\n .on(\"change\", function () {\n context.setProperty(widget, param.id, this.value);\n })\n ;\n }\n }\n break;\n }\n }\n\n updateInputs(widget, param) {\n const element = d3SelectAll(\"#\" + this.id() + \"_\" + param.id + \", #\" + this.id() + \"_\" + param.id + \"_2\");\n const val = widget ? widget[param.id]() : \"\";\n element.property(\"disabled\", widget[param.id + \"_disabled\"] && widget[param.id + \"_disabled\"]());\n element.property(\"invalid\", widget[param.id + \"_valid\"] && !widget[param.id + \"_valid\"]());\n switch (param.type) {\n case \"boolean\":\n element.property(\"checked\", val);\n break;\n case \"set\":\n const options = element.selectAll(\"option\").data<string | { value: string, text: string }>(widget[param.id + \"_options\"]());\n options.enter().append(\"option\")\n .merge(options as any)\n .attr(\"value\", (d: any) => (d && d.value !== undefined) ? d.value : d)\n .text((d: any) => (d && d.text !== undefined) ? d.text : d)\n ;\n options.exit().remove();\n element.property(\"value\", val);\n break;\n case \"array\":\n case \"object\":\n element.property(\"value\", JSON.stringify(val, function replacer(_key, value) {\n if (value instanceof Widget) {\n return Persist.serialize(value);\n }\n return value;\n }, \" \"));\n break;\n default:\n if (param.ext && param.ext.range) {\n d3Select(\"#\" + this.id() + \"_\" + param.id + \"_currentVal\").text(\"Current Value: \" + val);\n }\n element.property(\"value\", val && val.length && val.length > 100000 ? \"...too big to display...\" : val);\n break;\n }\n }\n}\nPropertyEditor.prototype._class += \" other_PropertyEditor\";\n\nexport interface PropertyEditor {\n showFields(): boolean;\n showFields(_: boolean): this;\n showData(): boolean;\n showData(_: boolean): this;\n\n sorting(): string;\n sorting(_: string): this;\n sorting_options(): string[];\n sorting_options(_: string[]): this;\n\n hideNonWidgets(): boolean;\n hideNonWidgets(_: boolean): this;\n\n label(): string;\n label(_: string): this;\n filterTags(): string;\n filterTags(_: string): this;\n excludeTags(): string[];\n excludeTags(_: string[]): this;\n excludeParams(): string[];\n excludeParams(_: string[]): this;\n\n widget(): PropertyExt;\n widget(_: PropertyExt): this;\n}\n\nPropertyEditor.prototype.publish(\"showFields\", false, \"boolean\", \"If true, widget.fields() will display as if it was a publish parameter.\", null, { tags: [\"Basic\"] });\nPropertyEditor.prototype.publish(\"showData\", false, \"boolean\", \"If true, widget.data() will display as if it was a publish parameter.\", null, { tags: [\"Basic\"] });\n\nPropertyEditor.prototype.publish(\"sorting\", \"none\", \"set\", \"Specify the sorting type\", [\"none\", \"A-Z\", \"Z-A\", \"type\"], { tags: [\"Basic\"], icons: [\"fa-sort\", \"fa-sort-alpha-asc\", \"fa-sort-alpha-desc\", \"fa-sort-amount-asc\"] });\n\nPropertyEditor.prototype.publish(\"hideNonWidgets\", false, \"boolean\", \"Hides non-widget params (at this tier only)\", null, { tags: [\"Basic\"] });\n\nPropertyEditor.prototype.publish(\"label\", \"\", \"string\", \"Label to display in header of property editor table\", null, { tags: [\"Basic\"] });\nPropertyEditor.prototype.publish(\"filterTags\", \"\", \"set\", \"Only show Publish Params of this type\", [\"Basic\", \"Intermediate\", \"Advance\", \"\"], {});\nPropertyEditor.prototype.publish(\"excludeTags\", [\"Private\"], \"array\", \"Exclude this array of tags\", null, {});\nPropertyEditor.prototype.publish(\"excludeParams\", [], \"array\", \"Exclude this array of params (widget.param)\", null, {});\n\nPropertyEditor.prototype.publish(\"widget\", null, \"widget\", \"Widget\", null, { tags: [\"Basic\"], render: false });\n\nconst _widgetOrig = PropertyEditor.prototype.widget;\n(PropertyEditor.prototype as any).widget = function (_?: Widget): Widget | PropertyEditor {\n if (arguments.length && _widgetOrig.call(this) === _) return this;\n const retVal = _widgetOrig.apply(this, arguments);\n if (arguments.length) {\n this.watchWidget(_);\n if (_ instanceof Grid) {\n const context = this;\n _.postSelectionChange = function () {\n context._selectedItems = _._selectionBag.get().map(function (item) { return item.widget; });\n context.lazyRender();\n };\n }\n }\n return retVal;\n};\n", "(function(){\n if (!document.getElementById('1aa8285d')) {\n var e = document.createElement('style');\n e.id = '1aa8285d';\n e.textContent = `.other_PropertyEditor{\n overflow-y:scroll;\n height:100%;\n width:100%;\n}\n.other_PropertyEditor .other_PropertyEditor{\n overflow:hidden;\n}\n.other_PropertyEditor .property-table{\n width:100%;\n border: 1px solid #ddd;\n border-width:0 0 0 1px;\n}\n.other_PropertyEditor thead > tr > th{background-color:#333;}\n.other_PropertyEditor .other_PropertyEditor th{background-color:#444;}\n.other_PropertyEditor .other_PropertyEditor .other_PropertyEditor th{background-color:#555;}\n.other_PropertyEditor .other_PropertyEditor .other_PropertyEditor .other_PropertyEditor th{background-color:#666;}\n.other_PropertyEditor .other_PropertyEditor .other_PropertyEditor .other_PropertyEditor .other_PropertyEditor th{background-color:#777;}\n\n.other_PropertyEditor .headerRow{background-color:#eee;}\n.other_PropertyEditor .other_PropertyEditor .headerRow{background-color:#ddd;}\n.other_PropertyEditor .other_PropertyEditor .other_PropertyEditor .headerRow{background-color:#ccc;}\n.other_PropertyEditor .other_PropertyEditor .other_PropertyEditor .other_PropertyEditor .headerRow{background-color:#bbb;}\n.other_PropertyEditor .other_PropertyEditor .other_PropertyEditor .other_PropertyEditor .other_PropertyEditor .headerRow{background-color:#aaa;}\n\n.other_PropertyEditor .fa {\n font-size:14px;\n width:14px\n}\n\n.other_PropertyEditor div.property-table-collapsed {\n display:none;\n}\n\n.other_PropertyEditor .headerRow > .peInput {\n padding-top:2px;\n}\n\n.other_PropertyEditor .headerRow > .peInput > span {\n font-weight: bold;\n padding-left: 2px;\n}\n\n.other_PropertyEditor .headerRow > .peInput > i {\n float:right;\n padding-top: 2px;\n padding-bottom: 2px;\n}\n\n.other_PropertyEditor .headerRow > span > i:hover {\n background-color: #555;\n cursor:pointer;\n}\n.other_PropertyEditor .property-table thead > tr > th {\n text-align:left;\n background-color:#333;\n color:#fff;\n padding-top:2px;\n padding-left:4px;\n}\n.other_PropertyEditor .property-table thead > tr > th > i {\n float:right;\n padding-top: 2px;\n padding-right: 4px;\n padding-bottom: 2px;\n}\n.other_PropertyEditor .property-table thead > tr > th > i:hover{\n background-color: #555;\n cursor:pointer;\n}\n.other_PropertyEditor .property-table tbody > tr:nth-child(even){\n background-color: #F9F9F9;\n}\n.other_PropertyEditor .property-table tbody > tr:nth-child(odd){\n background-color: #FFF;\n}\n.other_PropertyEditor .property-table tbody > tr > td{\n text-align:left;\n color:#333;\n padding:0 0 0 2px;\n}\n.other_PropertyEditor .property-table tbody > tr.disabled > td {\n color:gray;\n}\n.other_PropertyEditor .property-table tbody > tr.invalid > td {\n color:red;\n}\n.other_PropertyEditor .property-input-cell > div{\n padding-left: 8px;\n}\n.other_PropertyEditor .property-label{\n padding-right: 4px;\n box-sizing: border-box;\n height: 20px;\n}\n.other_PropertyEditor td.property-input-cell{\n text-align:left;\n height:20px;\n padding:1px 0;\n width:80%\n}\n.other_PropertyEditor .property-input-cell > input,\n.other_PropertyEditor .property-input-cell > textarea{\n width:100%;\n box-sizing: border-box;\n}\n.other_PropertyEditor .property-input-cell > input{\n height: 20px;\n}\n.other_PropertyEditor .property-input-cell > textarea{\n height: 120px;\n}\n.other_PropertyEditor .property-input-cell.boolean-cell{\n width:auto;\n margin:0;\n position:relative;\n}\n.other_PropertyEditor .property-input-cell > input[type=\"checkbox\"]{\n width:auto;\n margin:0;\n position:absolute;\n top: 0;\n}\n.other_PropertyEditor .html-color-cell > input{\n width:80%;\n}\n.other_PropertyEditor .html-color-cell > input[type=\"color\"]{\n width:20%;\n position: relative;\n top: -1px;\n}`;\n document.head.appendChild(e);\n }\n })();", "import { HTMLWidget } from \"@hpcc-js/common\";\nimport { select as d3Select } from \"d3-selection\";\n\nimport \"../src/RadioCheckbox.css\";\n\nexport class RadioCheckbox extends HTMLWidget {\n _span;\n _label;\n _Checkbox;\n\n constructor() {\n super();\n }\n\n rcData() {\n if (this.data().length === 0) return [];\n const view = this._db.rollupView([this.textColumn(), this.valueColumn()]);\n let retVal = [];\n retVal = retVal.concat(view.entries().map(function (row) {\n return {\n text: row.key,\n value: row.values.length ? row.values[0].key : \"\",\n origRow: row.values.length && row.values[0].values.length ? row.values[0].values[0] : []\n };\n }, this));\n if (this.sort_exists()) {\n const descending = this.sort() === \"descending\";\n retVal.sort(function (l, r) {\n if (l.text < r.text) return descending ? 1 : -1;\n if (l.text > r.text) return descending ? -1 : 1;\n return 0;\n });\n }\n return retVal;\n }\n\n enter(domNode, element) {\n super.enter(domNode, element);\n this._span = element.append(\"span\");\n this._label = this._span.append(\"label\")\n .attr(\"for\", this.id() + \"_radioCheckbox\")\n ;\n this._Checkbox = this._span.append(\"div\")\n .attr(\"id\", this.id() + \"_radioCheckbox\");\n }\n\n update(domNode, element) {\n super.update(domNode, element);\n const context = this;\n this._label\n .text(this.label())\n ;\n const radioCheckbox = this._Checkbox.selectAll(\".dataRow\").data(this.rcData());\n radioCheckbox.enter().append(\"div\")\n .attr(\"class\", \"dataRow\")\n .each(function (row, idx) {\n const checkboxDiv = d3Select(this);\n const id = context.id() + \"_checkbox_\" + idx;\n checkboxDiv.append(\"input\")\n .attr(\"id\", id)\n .attr(\"name\", context.id() + \"_radioCheckbox\")\n .on(\"change\", function (selectedData) {\n context.handleClick();\n });\n checkboxDiv.append(\"label\")\n .attr(\"for\", id);\n });\n radioCheckbox\n .each(function (row, idx) {\n const rcDiv = d3Select(this);\n rcDiv.select(\"input\")\n .attr(\"type\", context.multiple() ? \"checkbox\" : \"radio\")\n .attr(\"value\", row.value);\n rcDiv.select(\"label\")\n .text(row.text);\n });\n radioCheckbox.exit().remove();\n radioCheckbox.order();\n }\n\n exit(domNode, element) {\n this._span.remove();\n super.exit(domNode, element);\n }\n\n handleClick() {\n const options = [];\n this._Checkbox.selectAll(\".dataRow > input\")\n .each(function (row, idx) {\n const input = d3Select(this);\n if (input.property(\"checked\") && row && row.origRow) {\n options.push(row.origRow);\n }\n });\n if (options.length) {\n // TODO Handle Multiple Selections - part of 1.16.x\n this.click(this.rowToObj(options[0]), this.valueColumn(), true);\n } else {\n this.click([], this.valueColumn(), false);\n }\n }\n\n click(row, column, selected) {\n }\n}\nRadioCheckbox.prototype._class += \" other_RadioCheckbox\";\n\nexport interface RadioCheckbox {\n label(): string;\n label(_: string): this;\n label_exists(): boolean;\n valueColumn(): string;\n valueColumn(_: string): this;\n valueColumn_exists(): boolean;\n textColumn(): string;\n textColumn(_: string): this;\n textColumn_exists(): boolean;\n sort(): string;\n sort(_: string): this;\n sort_exists\n multiple(): boolean;\n multiple(_: boolean): this;\n multiple_exists(): boolean;\n}\n\nRadioCheckbox.prototype.publish(\"label\", null, \"string\", \"Label for RadioCheckbox\");\nRadioCheckbox.prototype.publish(\"valueColumn\", null, \"set\", \"RadioCheckbox display value\", function () { return this.columns(); }, { optional: true });\nRadioCheckbox.prototype.publish(\"textColumn\", null, \"set\", \"RadioCheckbox value(s)\", function () { return this.columns(); }, { optional: true });\nRadioCheckbox.prototype.publish(\"sort\", null, \"set\", \"Sort contents\", [\"\", \"ascending\", \"descending\"], { optional: true });\nRadioCheckbox.prototype.publish(\"multiple\", false, \"boolean\", \"Multiple selection\");\n", "(function(){\n if (!document.getElementById('423421df')) {\n var e = document.createElement('style');\n e.id = '423421df';\n e.textContent = `.other_RadioCheckbox input {\n}\n\n.other_RadioCheckbox span,\n.other_RadioCheckbox label {\n vertical-align: top;\n}`;\n document.head.appendChild(e);\n }\n })();", "import { HTMLWidget } from \"@hpcc-js/common\";\nimport { select as d3Select } from \"d3-selection\";\n\nimport \"../src/Select.css\";\n\nexport class Select extends HTMLWidget {\n _span;\n _prompt;\n _select;\n\n constructor() {\n super();\n }\n\n selectData() {\n if (this.data().length === 0) return [];\n const view = this._db.rollupView([this.textColumn(), this.valueColumn()]);\n let retVal = [];\n retVal = retVal.concat(view.entries().map(function (row) {\n return {\n text: row.key,\n value: row.values.length ? row.values[0].key : \"\",\n origRow: row.values.length && row.values[0].value.length ? row.values[0].value[0] : []\n };\n }, this));\n if (this.sort_exists()) {\n const descending = this.sort() === \"descending\";\n retVal.sort(function (l, r) {\n if (l.text < r.text) return descending ? 1 : -1;\n if (l.text > r.text) return descending ? -1 : 1;\n return 0;\n });\n }\n if (this.optional()) {\n retVal.unshift({ value: \"\", text: \"\" });\n }\n return retVal;\n }\n\n enter(domNode, element) {\n super.enter(domNode, element);\n this._span = element.append(\"span\");\n this._prompt = this._span.append(\"label\")\n .attr(\"for\", this.id() + \"_select\")\n ;\n\n const context = this;\n this._select = this._span.append(\"select\")\n .attr(\"id\", this.id() + \"_select\")\n .on(\"change\", function (d) {\n const options = [];\n const options_dom_node = context._select.node().options;\n for (let i = 0; i < options_dom_node.length; ++i) {\n const optionNode = options_dom_node[i];\n if (optionNode.selected) {\n options.push((d3Select(optionNode).datum() as any).origRow);\n }\n }\n if (options.length) {\n context.click(context.rowToObj(options[0]), context.valueColumn(), true); // TODO: Multiselect not support in HIPIE\n } else {\n context.click([], context.valueColumn(), false);\n }\n })\n ;\n }\n\n update(domNode, element) {\n super.update(domNode, element);\n\n this._prompt\n .text(this.label())\n ;\n this._select\n .attr(\"multiple\", this.multiple() ? this.multiple() : null)\n .attr(\"size\", this.multiple() && this.selectSize() ? this.selectSize() : null)\n ;\n\n const option = this._select.selectAll(\".dataRow\").data(this.selectData());\n const optionUpdate = option.enter().append(\"option\")\n .attr(\"class\", \"dataRow\")\n .merge(option)\n .attr(\"value\", function (row) { return row.value; })\n .text(function (row) { return row.text; })\n ;\n option.exit().remove();\n optionUpdate.order();\n }\n\n exit(domNode, element) {\n this._span.remove();\n super.exit(domNode, element);\n }\n\n click(row, column, selected) {\n }\n}\nSelect.prototype._class += \" other_Select\";\n\nexport interface Select {\n label(): string;\n label(_: string): this;\n label_exists(): boolean;\n valueColumn(): string;\n valueColumn(_: string): this;\n valueColumn_exists(): boolean;\n textColumn(): string;\n textColumn(_: string): this;\n textColumn_exists(): boolean;\n optional(): boolean;\n optional(_: boolean): this;\n optional_exists(): boolean;\n sort(): string;\n sort(_: string): this;\n sort_exists(): boolean;\n multiple(): boolean;\n multiple(_: boolean): this;\n multiple_exists(): boolean;\n selectSize(): number;\n selectSize(_: number): this;\n selectSize_exists(): boolean;\n}\n\nSelect.prototype.publish(\"label\", null, \"string\", \"Label for select\");\nSelect.prototype.publish(\"valueColumn\", null, \"set\", \"Select display value\", function () { return this.columns(); }, { optional: true });\nSelect.prototype.publish(\"textColumn\", null, \"set\", \"Select value(s)\", function () { return this.columns(); }, { optional: true });\nSelect.prototype.publish(\"optional\", true, \"boolean\", \"Optional Select\");\nSelect.prototype.publish(\"sort\", null, \"set\", \"Sort contents\", [\"\", \"ascending\", \"descending\"], { optional: true });\nSelect.prototype.publish(\"multiple\", false, \"boolean\", \"Multiple selection\");\nSelect.prototype.publish(\"selectSize\", 5, \"number\", \"Size of multiselect box\", null, { disable: w => !w.multiple() });\n", "(function(){\n if (!document.getElementById('81e09fcc')) {\n var e = document.createElement('style');\n e.id = '81e09fcc';\n e.textContent = `.other_Select select {\n}\n\n.other_Select span, \n.other_Select label {\n vertical-align:top;\n}\n`;\n document.head.appendChild(e);\n }\n })();", "import { HTMLWidget } from \"@hpcc-js/common\";\nimport * as Persist from \"./Persist.ts\";\n\nimport \"../src/ThemeEditor.css\";\n\nfunction hasLocalStorage(): boolean {\n const mod = \"@hpcc-js/other\";\n try {\n localStorage.setItem(mod, mod);\n localStorage.removeItem(mod);\n return true;\n } catch (e) {\n return false;\n }\n}\n\n// Polyfill for IE in file:// mode ----\nconst _localStorage: { getItem: (id: string) => any; } = hasLocalStorage() ? localStorage : {\n getItem(id: string): any {\n return undefined;\n }\n};\n\nconst getThemes = function (idx?) {\n if (typeof ((window as any).g_defaultThemes) === \"function\") {\n (window as any).g_defaultThemes(idx);\n }\n return JSON.parse(_localStorage.getItem(\"themeEditorThemes\") || \"{}\");\n};\nconst getSerials = function (idx?) {\n if (typeof ((window as any).g_defaultSerials) === \"function\") {\n (window as any).g_defaultSerials(idx);\n }\n return JSON.parse(_localStorage.getItem(\"themeEditorSerials\") || \"{}\");\n};\nconst getThemeNames = function (idx?) {\n const loadedThemes = getThemes();\n let themes = [];\n for (const themeName in loadedThemes) {\n themes.push(themeName);\n }\n if (typeof (idx) !== \"undefined\" && typeof (themes[idx]) !== \"undefined\") {\n themes = themes[idx];\n }\n return themes;\n};\nconst getSerialNames = function (idx?) {\n const loadedSerials = getSerials();\n let serials = [];\n for (const serialName in loadedSerials) {\n serials.push(serialName);\n }\n if (typeof (idx) !== \"undefined\" && typeof (serials[idx]) !== \"undefined\") {\n serials = serials[idx];\n }\n return serials;\n};\nconst tableNeedsRedraw = function (context) {\n let needsRedraw = false;\n if (typeof (context._current_grouping) === \"undefined\") {\n context._current_grouping = context._group_params_by;\n } else if (context._current_grouping !== context._group_params_by) {\n needsRedraw = true;\n }\n if (typeof (context._showing_columns) === \"undefined\") {\n context._showing_columns = context.showColumns();\n } else if (context._showing_columns !== context.showColumns()) {\n needsRedraw = true;\n }\n if (typeof (context._showing_data) === \"undefined\") {\n context._showing_data = context.showData();\n } else if (context._showing_data !== context.showData()) {\n needsRedraw = true;\n }\n return needsRedraw;\n};\nconst camelizeString = function (str) {\n const spacedText = str.split(/(?=[0-9A-Z])/).map(function (n) { return n.length > 1 ? n + \" \" : n; }).join(\"\");\n return spacedText.replace(/(?:^|\\s)\\S/g, function (a) { return a.toUpperCase(); });\n};\n\nconst tableInputHtml = function (rowObj, value, widgetArr, idSuffix) {\n let inputHtml = \"\";\n let id = \"te-input-\" + rowObj.id + \"-\" + idSuffix;\n\n let inputType;\n if (typeof (rowObj.ext) !== \"undefined\" && typeof (rowObj.ext.inputType) !== \"undefined\") {\n inputType = rowObj.ext.inputType;\n }\n\n if (typeof (rowObj.inputID) !== \"undefined\") {\n id = rowObj.inputID;\n }\n\n const dataWIDs = \"data-paramid='\" + rowObj.id + \"' data-wids='\" + widgetArr.map(function (w) {\n if (typeof (w.widget) === \"object\") {\n return w.widget._id;\n } else {\n return w;\n }\n }).join(\",\") + \"'\";\n switch (rowObj.type) {\n case \"boolean\":\n const checked = value ? \" checked\" : \"\";\n inputHtml = \"<input id='\" + id + \"' \" + dataWIDs + \" type='checkbox' class='te-checkbox te-input'\" + checked + \">\"; break;\n case \"number\":\n if (typeof (inputType) !== \"undefined\") {\n if (inputType === \"textarea\") {\n inputHtml = \"<textarea id='\" + id + \"' class='te-textarea te-input' \" + dataWIDs + \">\" + value + \"</textarea>\";\n } else if (inputType === \"range\") {\n inputHtml = \"<input id='\" + id + \"' class='te-input' type='range' \" + dataWIDs + \" value='\" + value + \"' min='\" + rowObj.ext.min + \"' max='\" + rowObj.ext.max + \"' step='\" + rowObj.ext.step + \"'>\";\n }\n } else {\n inputHtml = \"<input id='\" + id + \"' type='text' class='te-text te-input' \" + dataWIDs + \" value='\" + value + \"'>\";\n }\n break;\n case \"string\":\n if (typeof (inputType) !== \"undefined\") {\n if (inputType === \"textarea\") {\n inputHtml = \"<textarea id='\" + id + \"' class='te-textarea te-input' \" + dataWIDs + \">\" + value + \"</textarea>\";\n }\n } else {\n inputHtml = \"<input id='\" + id + \"' type='text' class='te-text te-input' value='\" + value + \"' \" + dataWIDs + \">\";\n }\n break;\n case \"html-color\":\n const valueAttr = value === \"\" ? \"\" : \" value='\" + value + \"'\";\n inputHtml = \"<input id='\" + id + \"' type='text' class='te-html-color-input te-input' \" + dataWIDs + \" \" + valueAttr + \">\";\n inputHtml += \"<input type='color' class='te-html-color-button te-input' \" + dataWIDs + \" \" + valueAttr + \">\";\n break;\n case \"set\":\n const options = _options(rowObj, value);\n inputHtml = \"<select id='\" + id + \"' class='te-select te-input'\" + dataWIDs + \">\" + options + \"</select>\";\n break;\n case \"array\":\n inputHtml = \"<textarea id='\" + id + \"' class='te-textarea te-input' data-type='array' \" + dataWIDs + \">\" + value + \"</textarea>\";\n break;\n default:\n break;\n }\n if (typeof (rowObj.ext.saveButton) !== \"undefined\") {\n inputHtml += \"<button id='\" + rowObj.ext.saveButtonID + \"'>\" + rowObj.ext.saveButton + \"</button>\";\n }\n return inputHtml;\n\n function _options(obj, val) {\n let options = \"\";\n obj.set.forEach(function (s) {\n const selected = s === val ? \" selected\" : \"\";\n options += \"<option value='\" + s + \"'\" + selected + \">\" + s + \"</option>\";\n });\n return options;\n }\n};\n\nexport class ThemeEditor extends HTMLWidget {\n _current_grouping;\n _showing_columns;\n _showing_data;\n _contentEditors;\n _showSettings;\n _defaultThemes;\n _widgetObjsById;\n _sharedProperties;\n getThemes;\n getSerials;\n getDefaultThemes;\n getDefaultSerials;\n\n constructor() {\n super();\n\n this._tag = \"div\";\n this._current_grouping = undefined;\n this._showing_columns = undefined;\n this._showing_data = undefined;\n this.columns([\"Key\", \"Value\"]);\n this._contentEditors = [];\n this._showSettings = true;\n\n this._defaultThemes = [];\n\n this._widgetObjsById = {};\n }\n\n showSettings(_?) {\n if (!arguments.length) {\n return this._showSettings;\n }\n this._showSettings = _;\n return this;\n }\n\n onChange(widget, propID) { }\n\n enter(domNode, element) {\n super.enter(domNode, element);\n this._placeholderElement.style(\"overflow\", \"auto\");\n }\n\n widgetProperty(widget, propID, _?) {\n if (_ === undefined) {\n return widget[propID]();\n }\n return widget[propID](_);\n }\n\n load(elmValue) { }\n\n save(themeName) { }\n\n needsPropTableRedraw() {\n const ret = document.getElementById(\"te-themeEditorOptions\") === null;\n return ret;\n }\n\n update(domNode, element) {\n super.update(domNode, element);\n if (tableNeedsRedraw(this)) {\n element.selectAll(\"#\" + this._id + \" > table\").remove();\n }\n this._current_grouping = this.paramGrouping();\n this._widgetObjsById[this._id] = this;\n this._sharedProperties = this.findSharedProperties(this.data());\n\n const needsPropertiesTableRedraw = this.needsPropTableRedraw();\n if (needsPropertiesTableRedraw && this.showSettings()) {\n const teParams = Persist.discover(this);\n for (const i in teParams) {\n if (teParams[i].ext.tags.indexOf(this.editorComplexity()) !== -1) {\n const teParamVal = this[teParams[i].id]();\n if (teParams[i].id === \"loadedTheme\" || teParams[i].id === \"loadedSerial\") {\n teParams[i].inputID = \"te-load-theme\";\n }\n teParams[i].input = tableInputHtml(teParams[i], teParamVal, [this._id], this._id);\n } else {\n delete teParams[i];\n }\n }\n domNode.innerHTML = this.propertiesTableHtml(teParams);\n const evt = document.createEvent(\"Events\");\n evt.initEvent(\"TE Properties Ready\", true, true);\n document.dispatchEvent(evt);\n }\n\n this.buildTableObjects(domNode, this._sharedProperties);\n\n this.initFunctionality(domNode);\n }\n\n exit(domNode, element) {\n super.exit(domNode, element);\n }\n\n click(d) {\n }\n\n propertiesTableHtml(editorParams) {\n const tableObj = {\n id: \"te-themeEditorOptions\",\n label: \"Editor Options\",\n rowArr: []\n };\n const modeTableObj = {\n id: \"te-tableModeOptions\",\n label: this.themeMode() ? \"Save/Load Theme\" : \"Save/Load Serial\",\n rowArr: []\n };\n for (const i in editorParams) {\n if (this.themeMode()) {\n if (editorParams[i].ext.tags.indexOf(\"Theme\") === -1 && editorParams[i].ext.tags.indexOf(\"Serial\") === -1) {\n tableObj.rowArr.push({\n th: camelizeString(editorParams[i].id),\n td: editorParams[i].input,\n trClass: \"propertyRow\"\n });\n } else if (editorParams[i].ext.tags.indexOf(\"Theme\") !== -1) {\n modeTableObj.rowArr.push({\n th: camelizeString(editorParams[i].id),\n td: editorParams[i].input,\n trClass: \"propertyRow\"\n });\n }\n } else {\n if (editorParams[i].ext.tags.indexOf(\"Serial\") === -1 && editorParams[i].ext.tags.indexOf(\"Theme\") === -1) {\n tableObj.rowArr.push({\n th: camelizeString(editorParams[i].id),\n td: editorParams[i].input,\n trClass: \"propertyRow\"\n });\n } else if (editorParams[i].ext.tags.indexOf(\"Serial\") !== -1) {\n modeTableObj.rowArr.push({\n th: camelizeString(editorParams[i].id),\n td: editorParams[i].input,\n trClass: \"propertyRow\"\n });\n }\n }\n\n }\n let html = \"\";\n if (tableObj.rowArr.length > 0) {\n html += this.tableObjHtml(tableObj);\n }\n if (modeTableObj.rowArr.length > 0) {\n html += this.tableObjHtml(modeTableObj);\n }\n return html;\n }\n buildTableObjects(targetElement, propObjs) {\n let sectionObjs = {};\n if (this.themeMode()) {\n sectionObjs = {\n chartColorSection: {\n id: \"te-colorOptions\",\n label: \"Chart Colors\",\n rowObjArr: []\n },\n surfaceSection: {\n id: \"te-containerOptions\",\n label: \"Container Styles/Colors\",\n rowObjArr: []\n },\n fontSection: {\n id: \"te-fontOptions\",\n label: \"Font Styles/Colors\",\n rowObjArr: []\n }\n };\n } else {\n sectionObjs = {\n nonSurfaceSection: {\n id: \"te-chartOptions\",\n label: \"Chart Properties\",\n rowObjArr: []\n }\n };\n }\n for (const p in propObjs) {\n if (this.themeMode()) {\n if (p.toUpperCase().indexOf(\"FONT\") !== -1 && !(propObjs[p].arr[0].widget._class.indexOf(\"layout_Surface\") !== -1 && p.toUpperCase().indexOf(\"COLOR\") !== -1)) {\n sectionObjs[\"fontSection\"].rowObjArr.push(propObjs[p]);\n } else if (p === \"paletteID\") {\n sectionObjs[\"chartColorSection\"].rowObjArr.push(propObjs[p]);\n } else if (propObjs[p].arr[0].widget._class.indexOf(\"layout_Surface\") !== -1) {\n sectionObjs[\"surfaceSection\"].rowObjArr.push(propObjs[p]);\n }\n } else {\n if (propObjs[p].arr[0].widget._class.indexOf(\"layout_Surface\") === -1) {\n sectionObjs[\"nonSurfaceSection\"].rowObjArr.push(propObjs[p]);\n }\n }\n }\n let html = \"\";\n for (const i in sectionObjs) {\n html += this.sharedPropertyTableHtml(sectionObjs[i]);\n }\n targetElement.innerHTML += html;\n }\n\n initFunctionality(elm) {\n const context = this;\n _expandCollapse(elm);\n _inputOnChange(elm);\n _inputOnClick(elm);\n function _inputOnClick(elm2) {\n if (context.showSettings()) {\n const saveBtn = document.getElementById(\"te-save-button\");\n saveBtn.onclick = function (e) {\n const clickedElm: any = e.target;\n const themeName = clickedElm.previousSibling.value;\n if (themeName.length > 1) {\n const loadSelect = document.getElementById(\"te-load-theme\");\n const loadOptions = loadSelect.getElementsByTagName(\"option\");\n let saveExists = false;\n for (const i in loadOptions) {\n const val = loadOptions[i].value;\n if (val === themeName) {\n saveExists = true;\n }\n }\n if (!saveExists) {\n loadSelect.innerHTML += \"<option value='\" + themeName + \"'>\" + themeName + \"</option>\";\n }\n clickedElm.previousSibling.value = \"\";\n (loadSelect as any).value = themeName;\n } else {\n alert(\"Save Name cannot be empty.\");\n }\n };\n }\n }\n function _inputOnChange(elm2) {\n const teInputs = elm2.getElementsByClassName(\"te-input\");\n for (const i in teInputs) {\n if (isNaN(parseInt(i))) break;\n const inputElm = teInputs[i];\n const inputID = inputElm.getAttribute(\"id\");\n if (inputID === \"te-load-theme\") {\n inputElm.onchange = function (e) {\n const elm3 = e.srcElement;\n context.load(elm3.value);\n };\n } else if (inputID !== null && inputID.indexOf(\"te-input-themeMode\") !== -1) {\n inputElm.onchange = function (e) {\n const elm3 = e.srcElement;\n context.themeMode(elm3.checked);\n\n const name = document.getElementById(\"te-load-theme\");\n const nameToLoad = name !== null ? (name as any).value : \"Default\";\n context.load(nameToLoad);\n };\n } else if (inputElm.tagName === \"INPUT\" || inputElm.tagName === \"SELECT\" || inputElm.tagName === \"TEXTAREA\") {\n inputElm.onchange = function (e) {\n const elm3 = e.srcElement;\n\n let id = elm3.getAttribute(\"id\");\n\n if (elm3.className.split(\" \").indexOf(\"te-html-color-button\") !== -1) {\n id = elm3.previousSibling.getAttribute(\"id\");\n elm3.previousSibling.value = elm3.value;\n }\n const elmType = elm3.getAttribute(\"type\");\n const splitId = id.split(\"-\");\n const genericId = splitId.slice(0, splitId.length - 1).join(\"-\") + \"-\";\n\n const widsStr = elm3.getAttribute(\"data-wids\");\n const paramId = elm3.getAttribute(\"data-paramid\");\n const widArr = widsStr.split(\",\");\n widArr.forEach(function (wid) {\n const individualId = genericId + wid;\n const indElm = document.getElementById(individualId);\n if (elmType === \"checkbox\") {\n (indElm as any).checked = elm3.checked;\n context._widgetObjsById[wid][paramId](elm3.checked);\n } else if (elm3.getAttribute(\"data-type\") === \"array\") {\n (indElm as any).value = elm3.value;\n try {\n context._widgetObjsById[wid][paramId](JSON.parse(elm3.value));\n } catch (e) { }\n } else {\n (indElm as any).value = elm3.value;\n context._widgetObjsById[wid][paramId](elm3.value);\n\n if (indElm.className.split(\" \").indexOf(\"te-html-color-input\") !== -1) {\n (indElm.nextSibling as any).value = elm3.value;\n } else if (indElm.className.split(\" \").indexOf(\"te-html-color-button\") !== -1) {\n (indElm.previousSibling as any).value = elm3.value;\n }\n }\n });\n context.data().forEach(function (d) {\n d.render();\n });\n };\n }\n }\n }\n function _expandCollapse(elm2) {\n const tableArr = elm2.getElementsByClassName(\"te-section-table\");\n for (const i in tableArr) {\n if (typeof (tableArr[i].getElementsByTagName) === \"function\") {\n const thead = tableArr[i].getElementsByTagName(\"thead\");\n thead[0].onclick = function (e) {\n let elm3 = e.toElement;\n if (elm3.tagName === \"TH\") {\n elm3 = elm3.parentElement.parentElement;\n }\n const parent = elm3.parentElement;\n let tbodyClass = \"\";\n if (parent.className.split(\" \").indexOf(\"expanded\") === -1) {\n parent.className = \"te-section-table expanded\";\n tbodyClass = \"shown\";\n } else {\n parent.className = \"te-section-table collapsed\";\n tbodyClass = \"hidden\";\n }\n const tbody = parent.getElementsByTagName(\"tbody\");\n tbody[0].className = tbodyClass;\n };\n }\n }\n const sharedRowArr = elm2.getElementsByClassName(\"sharedPropertyRow\");\n for (const n in sharedRowArr) {\n if (typeof (sharedRowArr[n].getElementsByClassName) === \"function\") {\n const label = sharedRowArr[n].getElementsByClassName(\"te-label\");\n label[0].onclick = function (e) {\n const elm3 = e.toElement;\n const parent = elm3.parentElement;\n let subRowClass = \"\";\n if (parent.className.split(\" \").indexOf(\"expanded\") === -1) {\n parent.className = \"sharedPropertyRow expanded\";\n subRowClass = \"shown\";\n } else {\n parent.className = \"sharedPropertyRow collapsed\";\n subRowClass = \"hidden\";\n }\n let nextSib = parent.nextSibling;\n while (nextSib !== null) {\n if (nextSib.className.split(\" \").indexOf(\"sharedPropertyRow\") === -1) {\n nextSib.className = \"propertyRow \" + subRowClass;\n nextSib = nextSib.nextSibling;\n } else {\n nextSib = null;\n }\n }\n };\n }\n }\n }\n }\n sharedPropertyTableHtml(sectionObj) {\n const tableObj = {\n id: sectionObj.id,\n label: sectionObj.label,\n rowArr: []\n };\n sectionObj.rowObjArr.forEach(function (rowObj) {\n rowObj.arr.forEach(function (widgetObj, widgetIdx) {\n if (widgetIdx === 0) {\n tableObj.rowArr.push({\n th: _sharedPropertyLabel(rowObj),\n td: _sharedPropertyInput(rowObj),\n trClass: \"sharedPropertyRow collapsed\"\n });\n }\n tableObj.rowArr.push({\n th: _propertyLabel(widgetObj),\n td: _propertyInput(rowObj, widgetIdx),\n trClass: \"propertyRow hidden\"\n });\n });\n });\n\n return this.tableObjHtml(tableObj);\n\n function _propertyLabel(widgetObj) {\n const splitClass = widgetObj.widget.classID().split(\"_\");\n const displayClass = splitClass.join(\"/\");\n return displayClass + \" <i>[\" + widgetObj.widget._id + \"]</i>\";\n }\n function _sharedPropertyLabel(rowObj) {\n return camelizeString(rowObj.id);\n }\n\n function _propertyInput(rowObj, idx) {\n const value = _value(rowObj, idx);\n const html = tableInputHtml(rowObj, value, [rowObj.arr[idx]], rowObj.arr[idx].widget._id);\n return html;\n\n function _value(rowObj2, idx2) {\n const value2 = rowObj2.arr[idx2].widget[rowObj2.id]();\n return value2 !== null ? value2 : \"\";\n }\n }\n function _sharedPropertyInput(rowObj) {\n const value = _sharedValue(rowObj);\n const html = tableInputHtml(rowObj, value, rowObj.arr, \"shared\");\n return html;\n\n function _sharedValue(rowObj2) {\n const value2 = rowObj2.arr[0].widget[rowObj2.id]();\n rowObj2.arr.forEach(function (w, i) {\n if (value2 !== w.widget[w.id]()) {\n return \"\";\n }\n });\n if (value2 !== null) {\n if (rowObj2.type === \"array\") {\n return JSON.stringify(value2);\n }\n return value2;\n }\n return \"\";\n }\n }\n }\n\n tableObjHtml(tableObj) {\n let html = \"<table id='\" + tableObj.id + \"' class='te-section-table expanded'>\";\n html += \"<thead><tr><th colspan='2'>\" + tableObj.label + \"</th></tr></thead>\";\n html += \"<tbody>\";\n tableObj.rowArr.forEach(function (rowObj) {\n html += this.tableRowObjHtml(rowObj);\n }, this);\n html += \"</tbody>\";\n return html + \"</table>\";\n }\n tableRowObjHtml(rowObj) {\n let html = typeof (rowObj.trClass) !== \"undefined\" ? \"<tr class='\" + rowObj.trClass + \"'>\" : \"<tr>\";\n html += \"<th class='te-label'>\" + rowObj.th + \"</th>\";\n html += \"<td>\" + rowObj.td + \"</td>\";\n return html + \"</tr>\";\n }\n\n setWidgetObjsById(widgetProp) {\n const context = this;\n const val = widgetProp.widget[widgetProp.id]();\n if (widgetProp.type === \"widgetArray\") {\n val.forEach(function (widget) {\n context._widgetObjsById[widget._id] = widget;\n });\n } else if (widgetProp.type === \"widget\" && val !== null) {\n this._widgetObjsById[val._id] = val;\n }\n }\n checkTagFilter(tagArr) {\n const allowTags = [\"Basic\"];\n let ret = false;\n tagArr.forEach(function (tag) {\n if (allowTags.indexOf(tag) !== -1) {\n ret = true;\n }\n });\n return ret;\n }\n findSharedProperties(data) {\n const context = this;\n let propsByID;\n if (typeof (data) !== \"undefined\" && data.length > 0) {\n let allProps = [];\n propsByID = {};\n const surfacePropsByID = {};\n const nonSurfacePropsByID = {};\n data.forEach(function (widget) {\n const gpResponse = _getParams(widget, 0);\n allProps = allProps.concat(gpResponse);\n });\n allProps.forEach(function (prop) {\n if ([\"widget\", \"widgetArray\"].indexOf(prop.type) !== -1) {\n context.setWidgetObjsById(prop);\n } else if (context.checkTagFilter(prop.ext.tags)) {\n const tempIdx = prop.id;\n if (prop.widget._class.indexOf(\"Surface\") !== -1) {\n if (typeof (surfacePropsByID[tempIdx]) === \"undefined\") {\n surfacePropsByID[tempIdx] = { arr: [] };\n }\n surfacePropsByID[tempIdx].id = prop.id;\n surfacePropsByID[tempIdx].description = prop.description;\n surfacePropsByID[tempIdx].type = prop.type;\n surfacePropsByID[tempIdx].set = prop.set;\n surfacePropsByID[tempIdx].ext = prop.ext;\n surfacePropsByID[tempIdx].arr.push(prop);\n } else {\n if (typeof (nonSurfacePropsByID[tempIdx]) === \"undefined\") {\n nonSurfacePropsByID[tempIdx] = { arr: [] };\n }\n nonSurfacePropsByID[tempIdx].id = prop.id;\n nonSurfacePropsByID[tempIdx].description = prop.description;\n nonSurfacePropsByID[tempIdx].type = prop.type;\n nonSurfacePropsByID[tempIdx].set = prop.set;\n nonSurfacePropsByID[tempIdx].ext = prop.ext;\n nonSurfacePropsByID[tempIdx].arr.push(prop);\n }\n if (typeof (propsByID[tempIdx]) === \"undefined\") {\n propsByID[tempIdx] = { arr: [] };\n }\n propsByID[tempIdx].id = prop.id;\n propsByID[tempIdx].description = prop.description;\n propsByID[tempIdx].type = prop.type;\n propsByID[tempIdx].set = prop.set;\n propsByID[tempIdx].ext = prop.ext;\n propsByID[tempIdx].arr.push(prop);\n }\n });\n }\n return propsByID;\n\n function _getParams(widgetObj, depth) {\n let retArr = [];\n if (widgetObj !== null) {\n const paramArr = Persist.discover(widgetObj);\n paramArr.forEach(function (param, i1) {\n if (typeof (param.ext.tags) !== \"undefined\") {\n retArr.push({\n id: param.id,\n type: param.type,\n description: param.description,\n set: param.set,\n ext: param.ext,\n widget: widgetObj\n });\n }\n if (param.type === \"widgetArray\") {\n const childWidgetArray = context.widgetProperty(widgetObj, param.id);\n childWidgetArray.forEach(function (childWidget) {\n const cwArr = _getParams(childWidget, depth + 1);\n retArr = retArr.concat(cwArr);\n });\n } else if (param.type === \"widget\") {\n const childWidget = context.widgetProperty(widgetObj, param.id);\n const temp = _getParams(childWidget, depth + 1);\n retArr = retArr.concat(temp);\n }\n });\n }\n return retArr;\n }\n }\n}\nThemeEditor.prototype._class += \" other_ThemeEditor\";\n\nexport interface ThemeEditor {\n themeMode(): boolean;\n themeMode(_: boolean): this;\n themeMode_exists(): boolean;\n saveTheme(): string;\n saveTheme(_: string): this;\n saveTheme_exists(): boolean;\n loadedTheme(): string;\n loadedTheme(_: string): this;\n loadedTheme_exists(): boolean;\n saveSerial(): string;\n saveSerial(_: string): this;\n saveSerial_exists(): boolean;\n loadedSerial(): string;\n loadedSerial(_: string): this;\n loadedSerial_exists(): boolean;\n showColumns(): boolean;\n showColumns(_: boolean): this;\n showColumns_exists(): boolean;\n showData(): boolean;\n showData(_: boolean): this;\n showData_exists(): boolean;\n shareCountMin(): number;\n shareCountMin(_: number): this;\n shareCountMin_exists(): boolean;\n paramGrouping(): string;\n paramGrouping(_: string): this;\n paramGrouping_exists(): boolean\n editorComplexity(): string;\n editorComplexity(_: string): this;\n editorComplexity_exists(): boolean;\n sectionTitle(): string;\n sectionTitle(_: string): this;\n sectionTitle_exists(): boolean;\n collapsibleSections(): boolean;\n collapsibleSections(_: boolean): this;\n collapsibleSections_exists(): boolean;\n}\n\nThemeEditor.prototype.publish(\"themeMode\", true, \"boolean\", \"Edit default values\", null, { tags: [\"Basic\"] });\nThemeEditor.prototype.publish(\"saveTheme\", \"\", \"string\", \"Save Theme\", null, { tags: [\"Basic\", \"Theme\"], saveButton: \"Save\", saveButtonID: \"te-save-button\" });\nThemeEditor.prototype.publish(\"loadedTheme\", getThemeNames(1), \"set\", \"Loaded Theme\", getThemeNames(), { tags: [\"Basic\", \"Theme\"] });\nThemeEditor.prototype.publish(\"saveSerial\", \"\", \"string\", \"Save Serial\", null, { tags: [\"Basic\", \"Serial\"], saveButton: \"Save\", saveButtonID: \"te-save-button\" });\nThemeEditor.prototype.publish(\"loadedSerial\", getSerialNames(0), \"set\", \"Loaded Serial\", getSerialNames(), { tags: [\"Basic\", \"Serial\"] });\nThemeEditor.prototype.publish(\"showColumns\", true, \"boolean\", \"Show Columns\", null, { tags: [\"Intermediate\"] });\nThemeEditor.prototype.publish(\"showData\", true, \"boolean\", \"Show Data\", null, { tags: [\"Intermediate\"] });\nThemeEditor.prototype.publish(\"shareCountMin\", 1, \"number\", \"Share Count Min\", null, { tags: [\"Private\"] });\nThemeEditor.prototype.publish(\"paramGrouping\", \"By Param\", \"set\", \"Param Grouping\", [\"By Param\", \"By Widget\"], { tags: [\"Private\"] });\nThemeEditor.prototype.publish(\"editorComplexity\", \"Basic\", \"set\", \"Choose what publish properties to display within the editor.\", [\"Basic\", \"Intermediate\", \"Advanced\", \"Private\"], { tags: [\"Private\"] });\nThemeEditor.prototype.publish(\"sectionTitle\", \"\", \"string\", \"Section Title\", null, { tags: [\"Private\"] });\nThemeEditor.prototype.publish(\"collapsibleSections\", true, \"boolean\", \"Collapsible Sections\", null, { tags: [\"Intermediate\"] });\n\nThemeEditor.prototype.getThemes = getThemes;\nThemeEditor.prototype.getSerials = getSerials;\nThemeEditor.prototype.getDefaultThemes = getThemeNames;\nThemeEditor.prototype.getDefaultSerials = getSerialNames;\n", "(function(){\n if (!document.getElementById('3785edb5')) {\n var e = document.createElement('style');\n e.id = '3785edb5';\n e.textContent = `.other_ThemeEditor *{\n box-sizing:border-box;\n}\n.other_ThemeEditor table{\n width:100%;\n margin-bottom:4px;\n}\n.other_ThemeEditor table:last-child{\n margin-bottom:0px;\n}\n.other_ThemeEditor thead > tr > th{\n text-align:left;\n}\n.other_ThemeEditor thead > tr > th > b{\n font-weight:bold;\n}\n.other_ThemeEditor thead > tr > th{\n background-color:#FAFAFA;\n}\n.other_ThemeEditor tbody > tr > th,\n.other_ThemeEditor tbody > tr > td{\n font-weight:normal;\n background-color:#FAFAFA;\n}\n.other_ThemeEditor thead > tr:first-child > th{\n background-color:#E5E5E5;\n}\n.other_ThemeEditor thead > tr.mm-content > th {\n padding: 0 4px;\n font-size: 12px;\n}\n.other_ThemeEditor th,\n.other_ThemeEditor td{\n padding:4px;\n white-space: nowrap;\n}\n.other_ThemeEditor thead.mm-label > tr:first-child > th{\n position:relative;\n padding-left: 29px;\n}\n.other_ThemeEditor thead.mm-label > tr:first-child > th::before{\n content:\"[+]\";\n position:absolute;\n left: 3px;\n top: 3px;\n color: #404040;\n height:15px;\n width:15px;\n font-family:monospace;\n}\n.other_ThemeEditor thead.mm-label.max > tr:first-child > th::before{\n content:\"[-]\";\n}\n.other_ThemeEditor tr.sharedPropertyRow > td.label::after{\n content:\"[+]\";\n position:absolute;\n right: 10px;\n top: 3px;\n color: #404040;\n height:15px;\n width:15px;\n font-family:monospace;\n}\n.other_ThemeEditor tr.sharedPropertyRow > td.label.expanded::after{\n content:\"[-]\";\n}\n.other_ThemeEditor tr.sharedPropertyRow > td.label{\n position:relative;\n padding-right:30px;\n text-decoration:underline;\n}\n.other_ThemeEditor tr.sharedPropertyRow > td.label:hover{\n text-decoration:none;\n cursor:pointer;\n}\n.other_ThemeEditor tr.propertyRow > th,\n.other_ThemeEditor tr.propertyRow > td{\n background-color:#F4F4F4;\n}\n.other_ThemeEditor tr.propertyRow > td.label{\n padding-left: 24px;\n}\n\n.other_ThemeEditor table,\n.other_ThemeEditor th,\n.other_ThemeEditor td{\n border:1px solid #e5e5e5;\n}\n.other_ThemeEditor .mm-label.min .mm-content,\n.other_ThemeEditor .mm-label.min + .mm-content {\n display:none;\n}\n.mm-label:hover {\n cursor:pointer;\n}\n\n.other_ThemeEditor .sharedPropertyRow > .te-label{\n cursor:pointer;\n}\n.other_ThemeEditor .sharedPropertyRow > .te-label:hover{\n text-decoration:none;\n}\n\n.other_ThemeEditor .propertyRow.shown > .te-label{\n padding-left:15px;\n}\n.other_ThemeEditor .propertyRow > td{\n background-color:#F4F4F4;\n}\n\n.other_ThemeEditor [class*=\" te-\"]{\n /*float:left;*/\n}\n.other_ThemeEditor input,\n.other_ThemeEditor textarea,\n.other_ThemeEditor select{\n height:30px;\n float:left;\n}\n.other_ThemeEditor input,\n.other_ThemeEditor select{\n width:150px;\n}\n.other_ThemeEditor .te-checkbox{\n width:20px;\n height:20px;\n margin:0;\n}\n\n.other_ThemeEditor .te-html-color-input{\n height:30px;\n width:120px;\n}\n\n.other_ThemeEditor .te-html-color-button{\n width:30px;\n}\n.other_ThemeEditor button,\n.other_ThemeEditor .te-html-color-button{\n background-color:#CCC;\n border:1px solid #A9A9A9;\n border-left:0;\n height:30px;\n float:left;\n padding:4px;\n}\n.other_ThemeEditor button,\n.other_ThemeEditor .te-html-color-button,\n.other_ThemeEditor .te-section-table thead{\n cursor:pointer;\n}\n.other_ThemeEditor button:hover,\n.other_ThemeEditor .te-html-color-button:hover{\n background-color:#BBB;\n}\n.other_ThemeEditor button:active,\n.other_ThemeEditor .te-html-color-button:active{\n background-color:#AAA;\n}\n\n.other_ThemeEditor .te-label{\n white-space: nowrap;\n width: 1%;\n vertical-align: top;\n}\n.other_ThemeEditor .te-section-table > tbody > tr:hover{\n background-color: #F8FF98;\n}\n.te-section-table thead th{\n font-weight:bold;\n}\n.te-section-table.expanded > thead > tr > th:after {\n font: normal normal normal 14px/1 FontAwesome;\n content: \"\u00EF\u2026\u2021\";\n float: right;\n margin-right: 6px;\n margin-top: 4px;\n}\n.te-section-table.collapsed > thead > tr > th:after {\n font: normal normal normal 14px/1 FontAwesome;\n content: \"\u00EF\u2020\u2013\";\n float: right;\n margin-right: 6px;\n margin-top: 4px;\n}\n#te-tableModeOptions thead > tr > th,\n#te-themeEditorOptions thead > tr > th{\n border:1px solid #6E6E73;\n background-color:#6E6E73;\n color:#FAFAFA;\n}\n/*\n.widget-property-hover{\n background-color: #F1C40F!important;\n border-color:#f39c12;\n}*/`;\n document.head.appendChild(e);\n }\n })();"],
5
- "mappings": "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",
6
- "names": ["require_auto_complete", "__commonJSMin", "exports", "module", "autoComplete", "options", "hasClass", "el", "className", "__name", "addEvent", "type", "handler", "removeEvent", "live", "elClass", "event", "cb", "context", "e", "found", "o", "item", "search", "re", "term", "k", "elems", "i", "that", "resize", "next", "rect", "scrTop", "selTop", "sel", "v", "over_sb", "suggest", "data", "val", "s", "key", "part", "require_simpleheat", "__commonJSMin", "exports", "module", "simpleheat", "canvas", "__name", "data", "max", "point", "blur", "circle", "ctx", "r2", "grad", "gradient", "minOpacity", "i", "len", "p", "colored", "pixels", "j", "PKG_NAME", "PKG_VERSION", "BUILD_VERSION", "HTMLWidget", "frame", "timeout", "interval", "pokeDelay", "taskHead", "taskTail", "clockLast", "clockNow", "clockSkew", "clock", "setFrame", "f", "now", "clearNow", "__name", "Timer", "timer", "callback", "delay", "time", "sleep", "t", "timerFlush", "e", "wake", "nap", "poke", "t0", "t1", "t2", "Audio", "HTMLWidget", "__name", "label", "offset", "beatLength", "beatCount", "fileExt", "domNode", "element", "context", "d", "params", "startTime", "beat", "timer", "key", "section", "i", "d2", "import_javascript_autocomplete", "HTMLWidget", "e", "AutoCompleteText", "HTMLWidget", "__name", "row", "idx", "domNode", "element", "context", "AutoComplete", "term", "suggest", "field", "suggestions", "item", "search", "re", "e", "rowIdx", "column", "selected", "HTMLWidget", "Palette", "Utility", "d3Extent", "d3Range", "d3Map", "d3Format", "d3Select", "t0", "t1", "newInterval", "floori", "offseti", "count", "field", "interval", "date", "__name", "d0", "d1", "step", "start", "stop", "range", "previous", "test", "end", "d", "durationMinute", "durationDay", "durationWeek", "day", "newInterval", "date", "step", "start", "end", "durationMinute", "durationDay", "days", "day", "weekday", "i", "newInterval", "date", "step", "start", "end", "durationMinute", "durationWeek", "__name", "sunday", "monday", "tuesday", "wednesday", "thursday", "friday", "saturday", "sundays", "mondays", "tuesdays", "wednesdays", "thursdays", "fridays", "saturdays", "month", "newInterval", "date", "step", "start", "end", "months", "month", "year", "newInterval", "date", "step", "start", "end", "k", "year_default", "years", "d3TimeParse", "e", "CalendarHeatMap", "HTMLWidget", "__name", "Utility", "dateParser", "d3TimeParse", "valueFormatter", "d3Format", "row", "domNode", "element", "d3Select", "width", "cellSize", "height", "data", "mappedData", "d3Map", "d", "dateExtent", "d3Extent", "context", "svg", "d3Range", "svgUpdate", "g", "_d3TimeMonths", "months", "_months", "_m", "calcMonthPath", "dataExtent", "max", "dayRect", "days", "dayRectUpdate", "data2", "sunday", "year_default", "monthPath", "t0", "t1", "d0", "w0", "d1", "w1", "column", "selected", "Palette", "w", "Comms_exports", "__export", "Basic", "Comms", "ESPMappings", "ESPUrl", "HIPIEDatabomb", "HIPIERoxie", "HIPIEWorkunit", "WsECL", "WsWorkunits", "createESPConnection", "hookJsonp", "Utility", "TIMEOUT_DEFAULT", "espValFix", "val", "espRowFix", "retVal", "__name", "row", "key", "ESPUrl", "_", "parser", "params", "tmp", "item", "tmpItem", "overrides", "ESPMappings", "mappings", "resultName", "origField", "Utility", "response", "mapping", "i", "serialize", "obj", "str", "jsonp", "url", "request", "timeout", "resolve", "reject", "respondedTimeout", "respondedTick", "callbackName", "doCallback", "script", "progress", "Comms", "context", "newUrlParts", "newUrl", "espUrl", "method", "uri", "xhr", "e", "Basic", "callback", "response2", "locateRoxieResponse", "locateRoxieException", "WsECL", "pathParts", "queryParts", "target", "_response", "previousValue", "exception", "index", "array", "WsWorkunits", "urlParts", "urlParts2", "label", "value", "skipMapping", "responseKey", "_request", "fetchArray", "responseArray", "idx", "request_key", "WsWorkunits_GetStats", "HIPIERoxie", "name", "hipieKey", "HIPIEWorkunit", "filterResults", "request2", "changedFilter", "hipieResult", "outputFilter", "filter", "key2", "HIPIEDatabomb", "from", "id", "createESPConnection", "testURL", "hookJsonp", "func", "Utility", "nestedRowFix", "row", "key", "__name", "enableBasicCommsCache", "basicCommsCache", "BasicComms", "Basic", "url", "request", "requestStr", "response", "WsWorkunits", "baseUrl", "options", "Workunit", "wuid", "retVal", "includeKey", "appID", "_", "persistString", "context", "Utility", "result", "WUResult", "dataSource", "resultName", "createResult", "name", "filter", "filterIdx", "fKey", "LogicalFile", "logicalName", "RoxieQuery", "urlParts", "queryName", "trimRight", "str", "postFilter", "results", "locateRoxieResponse", "_espUrl", "espUrl", "ESPUrl", "enableCache", "cache", "createConnection", "espConnection", "createESPConnection", "flattenResult", "mappings", "colIdx", "mapping", "rowIdx", "rowArr", "_simpleheat", "CanvasWidget", "Palette", "simpleheat", "_simpleheat", "HeatMap", "CanvasWidget", "__name", "domNode", "element", "grad", "idx", "value", "size", "retVal", "context", "retArr", "arr", "box", "coordsWidth", "coordsHeight", "pixelValueX", "pixelValueY", "n", "left", "top", "newX", "newY", "Palette", "SVGWidget", "HPCCBadge", "SVGWidget", "__name", "domNode", "element", "bbox", "centerX", "centerY", "scale", "HTMLWidget", "e", "Html", "HTMLWidget", "__name", "domNode", "element", "html", "d", "Entity", "HTMLWidget", "HorizontalList", "VerticalList", "d3Select", "e", "IconList", "HTMLWidget", "__name", "HorizontalList", "domNode", "element", "d3Select", "listWidgets", "row", "idx", "VerticalList", "Entity", "Html", "list", "entity", "Palette", "Platform", "d3Format", "d3Select", "d3Event", "HTMLWidget", "Platform", "d3Select", "d3SelectAll", "Utility", "Widget", "d3Event", "HTMLWidget", "d3Select", "e", "Paginator", "HTMLWidget", "__name", "domNode", "element", "context", "x", "page", "d", "li", "linkText", "span", "i", "d3Event", "e", "j", "d3Select", "e", "Table", "HTMLWidget", "__name", "Paginator", "Utility", "_", "retVal", "topMargin", "colIdx", "fields", "col", "idx", "rowIdx", "noTransform", "d", "i", "offset", "colLen", "visibleCount", "columns", "data", "ret_arr", "col_idx", "column_is_empty", "row_idx", "domNode", "element", "context", "scrollLeft", "thSel", "thUpdate", "element2", "d3Select", "column", "fieldsIdx", "ipp", "p", "startIndex", "itemsOnPage", "start", "end", "tData", "totalRow", "j", "sum", "k", "tfSel", "rowsSel", "rowsUpdate", "_d", "fixedLeftRows", "tbodyRows", "cellsSel", "_trIdx", "cell", "tdContents", "tdIdx", "alignment", "el", "Widget", "widgetDiv", "widgetDiv2", "tableMarginHeight", "fixedColWidth", "fixedColThSel", "fixedColThUpdate", "fixedColTrSel", "fixedColTrUpdate", "fixedColTdSel", "fixedColTdUpdate", "fixedColFootTdSel", "fixedColFootTdUpdate", "height", "box", "newTableHeight", "finalWidth", "maxWidth", "node", "calcWidth", "calcHeight", "newTableWidth", "Platform", "rows", "firstRow", "tds", "d3SelectAll", "totalWidth", "tdWidths", "thwidth", "tdwidth", "usewidth", "scrollNode", "margHeight", "e", "topDelta", "leftDelta", "trow", "d2", "th", "thHeight", "tfootHeight", "tmpRow", "tcellHeight", "paginatorHeight", "row", "d3Event", "inRange", "selection", "i2", "lastInRangeRow", "selObj", "isFirstCol", "dataRow", "tr", "state", "selected", "w", "e", "_htmlColorBlock", "hexColor", "__name", "Legend", "Table", "widget", "_", "context", "key", "newProp", "oldProp", "source", "Palette", "domNode", "element", "d3Select", "colArr", "dataArr", "_palette", "oPalette", "n", "i", "rPalette", "format", "d3Format", "steps", "weightMin", "weightMax", "stepWeightDiff", "x", "mid", "table", "tableRect", "elementRect", "top", "left", "startIndex", "itemsOnPage", "start", "end", "tData", "rows", "d", "rowData", "rowIdx", "w", "origGetBBox", "refresh", "round", "retVal", "width", "Platform", "height", "SVGWidget", "e", "MorphText", "SVGWidget", "__name", "domNode", "element", "style", "d", "seconds", "minutes", "hours", "ampm", "months", "context", "text", "i", "newText", "_origText", "_", "retVal", "usedChars", "chars", "id", "NestedTable", "Table", "__name", "origColumns", "_", "col", "origData", "context", "row", "cell", "idx", "columns", "i", "d3Event", "PropertyExt", "d3Select", "d3SelectAll", "SVGWidget", "e", "Column", "PropertyExt", "__name", "_", "MouseHoverColumn", "ColumnDropdown", "Opportunity", "SVGWidget", "domNode", "element", "h", "d3Select", "context", "data", "dropDownOption", "a", "b", "groups", "i", "paddingTop", "nodeRectHeight", "verticalPadding", "w", "nodeRectWidthPadding", "nodeRectWidth", "group", "d", "groupHeadings", "node_date_change", "htmlInput", "obj", "index", "prevDate", "fromDate", "event", "d3Event", "node_prev_group", "tooltipHtml", "element2", "changeLines", "d2", "node_cur_group", "color", "d3SelectAll", "colIndex", "columnData", "dropdownList", "widget", "cell", "param", "Persist_exports", "__export", "applyTheme", "discover", "removeTheme", "serialize", "serializeTheme", "serializeThemeToObject", "serializeToObject", "widgetArrayWalker", "widgetPropertyWalker", "discover", "widget", "__name", "widgetArrayWalker", "widgets", "visitor", "widgetPropertyWalker", "widget2", "filter", "serializeTheme", "serializeThemeToObject", "propObj", "item", "_isFilterMatch", "classParts", "i", "str", "arr", "ret", "removeTheme", "callback", "applyTheme", "themeObj", "context", "widget3", "serializeToObject", "includeData", "includeState", "retVal", "childWwidget2", "childWwidget", "vertices", "serialize", "HTMLWidget", "Platform", "Widget", "Grid", "d3Local", "d3Select", "d3SelectAll", "e", "hasProperties", "type", "__name", "PropertyEditor", "_PropertyEditor", "HTMLWidget", "d3Local", "_", "retVal", "parent", "domNode", "element", "context", "rootWidgets", "w", "table", "d", "tableElement", "d3Select", "tableData", "widget", "_paramId", "newVal", "oldVal", "th", "sortIcon", "spanText", "collapsed", "newIcon", "increment", "sort", "types", "icons", "hideParamsIcon", "discover", "prop", "node", "arr", "item", "paramArr", "typeOrder", "a", "b", "discArr", "param", "_idx", "excludeParamItem", "widgetName", "excludeParam", "showFields", "n", "rows", "d2", "tr", "inputCell", "tmpWidget", "widgetArr", "lastModified", "noEmpties", "row", "idx", "widgetDisabled", "changed", "autoExpandWidget", "peInput", "peInputElement", "clickTarget", "peDiv", "id", "value", "topWidget", "topPropEditor", "propEditor", "oldValue", "Widget", "cell", "Platform", "d3SelectAll", "val", "options", "_key", "serialize", "_widgetOrig", "Grid", "HTMLWidget", "d3Select", "e", "RadioCheckbox", "HTMLWidget", "__name", "view", "retVal", "row", "descending", "l", "r", "domNode", "element", "context", "radioCheckbox", "idx", "checkboxDiv", "d3Select", "id", "selectedData", "rcDiv", "options", "column", "selected", "HTMLWidget", "d3Select", "e", "Select", "HTMLWidget", "__name", "view", "retVal", "row", "descending", "l", "r", "domNode", "element", "context", "d", "options", "options_dom_node", "i", "optionNode", "d3Select", "option", "optionUpdate", "column", "selected", "w", "HTMLWidget", "e", "hasLocalStorage", "mod", "__name", "_localStorage", "id", "getThemes", "idx", "getSerials", "getThemeNames", "loadedThemes", "themes", "themeName", "getSerialNames", "loadedSerials", "serials", "serialName", "tableNeedsRedraw", "context", "needsRedraw", "camelizeString", "str", "n", "a", "tableInputHtml", "rowObj", "value", "widgetArr", "idSuffix", "inputHtml", "inputType", "dataWIDs", "w", "checked", "valueAttr", "options", "_options", "obj", "val", "s", "selected", "ThemeEditor", "HTMLWidget", "_", "widget", "propID", "domNode", "element", "elmValue", "teParams", "discover", "i", "teParamVal", "evt", "d", "editorParams", "tableObj", "modeTableObj", "html", "targetElement", "propObjs", "sectionObjs", "p", "elm", "_expandCollapse", "_inputOnChange", "_inputOnClick", "elm2", "saveBtn", "e", "clickedElm", "loadSelect", "loadOptions", "saveExists", "teInputs", "inputElm", "inputID", "elm3", "name", "nameToLoad", "elmType", "splitId", "genericId", "widsStr", "paramId", "wid", "individualId", "indElm", "tableArr", "thead", "parent", "tbodyClass", "tbody", "sharedRowArr", "label", "subRowClass", "nextSib", "sectionObj", "widgetObj", "widgetIdx", "_sharedPropertyLabel", "_sharedPropertyInput", "_propertyLabel", "_propertyInput", "_value", "rowObj2", "idx2", "value2", "_sharedValue", "widgetProp", "tagArr", "allowTags", "ret", "tag", "data", "propsByID", "allProps", "surfacePropsByID", "nonSurfacePropsByID", "gpResponse", "_getParams", "prop", "tempIdx", "depth", "retArr", "param", "i1", "childWidget", "cwArr", "temp"]
7
- }
1
+ {"version":3,"file":"index.js","sources":["../src/__package__.ts","../../../node_modules/d3-timer/src/timer.js","../src/Audio.ts","../../../node_modules/javascript-autocomplete/auto-complete.js","../src/AutoCompleteText.ts","../../../node_modules/d3-time/src/interval.js","../../../node_modules/d3-time/src/duration.js","../../../node_modules/d3-time/src/day.js","../../../node_modules/d3-time/src/week.js","../../../node_modules/d3-time/src/month.js","../../../node_modules/d3-time/src/year.js","../src/CalendarHeatMap.ts","../src/Comms.ts","../src/ESP.ts","../../../node_modules/simpleheat/simpleheat.js","../src/HeatMap.ts","../src/HPCCBadge.ts","../src/Html.ts","../src/IconList.ts","../src/Paginator.ts","../src/Table.ts","../src/Legend.ts","../src/MorphText.ts","../src/NestedTable.ts","../src/Opportunity.ts","../src/Persist.ts","../src/PropertyEditor.ts","../src/RadioCheckbox.ts","../src/Select.ts","../src/ThemeEditor.ts"],"sourcesContent":["export const PKG_NAME = \"@hpcc-js/other\";\nexport const PKG_VERSION = \"3.1.1\";\nexport const BUILD_VERSION = \"3.2.1\";\n","var frame = 0, // is an animation frame pending?\n timeout = 0, // is a timeout pending?\n interval = 0, // are any timers active?\n pokeDelay = 1000, // how frequently we check for clock skew\n taskHead,\n taskTail,\n clockLast = 0,\n clockNow = 0,\n clockSkew = 0,\n clock = typeof performance === \"object\" && performance.now ? performance : Date,\n setFrame = typeof window === \"object\" && window.requestAnimationFrame ? window.requestAnimationFrame.bind(window) : function(f) { setTimeout(f, 17); };\n\nexport function now() {\n return clockNow || (setFrame(clearNow), clockNow = clock.now() + clockSkew);\n}\n\nfunction clearNow() {\n clockNow = 0;\n}\n\nexport function Timer() {\n this._call =\n this._time =\n this._next = null;\n}\n\nTimer.prototype = timer.prototype = {\n constructor: Timer,\n restart: function(callback, delay, time) {\n if (typeof callback !== \"function\") throw new TypeError(\"callback is not a function\");\n time = (time == null ? now() : +time) + (delay == null ? 0 : +delay);\n if (!this._next && taskTail !== this) {\n if (taskTail) taskTail._next = this;\n else taskHead = this;\n taskTail = this;\n }\n this._call = callback;\n this._time = time;\n sleep();\n },\n stop: function() {\n if (this._call) {\n this._call = null;\n this._time = Infinity;\n sleep();\n }\n }\n};\n\nexport function timer(callback, delay, time) {\n var t = new Timer;\n t.restart(callback, delay, time);\n return t;\n}\n\nexport function timerFlush() {\n now(); // Get the current time, if not already set.\n ++frame; // Pretend we’ve set an alarm, if we haven’t already.\n var t = taskHead, e;\n while (t) {\n if ((e = clockNow - t._time) >= 0) t._call.call(null, e);\n t = t._next;\n }\n --frame;\n}\n\nfunction wake() {\n clockNow = (clockLast = clock.now()) + clockSkew;\n frame = timeout = 0;\n try {\n timerFlush();\n } finally {\n frame = 0;\n nap();\n clockNow = 0;\n }\n}\n\nfunction poke() {\n var now = clock.now(), delay = now - clockLast;\n if (delay > pokeDelay) clockSkew -= delay, clockLast = now;\n}\n\nfunction nap() {\n var t0, t1 = taskHead, t2, time = Infinity;\n while (t1) {\n if (t1._call) {\n if (time > t1._time) time = t1._time;\n t0 = t1, t1 = t1._next;\n } else {\n t2 = t1._next, t1._next = null;\n t1 = t0 ? t0._next = t2 : taskHead = t2;\n }\n }\n taskTail = t0;\n sleep(time);\n}\n\nfunction sleep(time) {\n if (frame) return; // Soonest alarm already set, or will be.\n if (timeout) timeout = clearTimeout(timeout);\n var delay = time - clockNow; // Strictly less than if we recomputed clockNow.\n if (delay > 24) {\n if (time < Infinity) timeout = setTimeout(wake, time - clock.now() - clockSkew);\n if (interval) interval = clearInterval(interval);\n } else {\n if (!interval) clockLast = clock.now(), interval = setInterval(poke, pokeDelay);\n frame = 1, setFrame(wake);\n }\n}\n","import { HTMLWidget } from \"@hpcc-js/common\";\nimport { timer as d3Timer } from \"d3-timer\";\n\nexport class Audio extends HTMLWidget {\n _sections;\n\n constructor() {\n super();\n this._tag = \"audio\";\n\n this._sections = {};\n }\n\n section(label, offset, beatLength, beatCount) {\n if (!arguments.length) return this._sections;\n if (arguments.length === 1) return this._sections[label];\n this._sections[label] = {\n label,\n offset,\n beatLength,\n beatCount,\n endOffset: offset + beatCount * beatLength\n };\n return this;\n }\n\n getType(fileExt) {\n switch (fileExt) {\n case \"mp3\":\n return \"audio/mpeg; codecs='mp3'\";\n case \"ogg\":\n return \"audio/ogg; codecs='vorbis'\";\n }\n return \"\";\n }\n\n enter(domNode, element) {\n const context = this;\n element.on(\"play\", function (d) { context.onPlay(d); });\n }\n\n update(domNode, element) {\n const source = element.selectAll(\"source\").data(this.source(), function (d) { return d; });\n source.enter().append(\"source\")\n .attr(\"src\", function (d) { return d; })\n ;\n }\n\n createTimer(params, startTime, beat) {\n const context = this;\n d3Timer(function () {\n context.onTick(params.label, beat, params);\n return true;\n }, beat * params.beatLength, startTime + params.offset);\n }\n\n onTick(label, beat, params) {\n }\n\n onPlay(d) {\n const startTime = Date.now();\n for (const key in this._sections) {\n const section = this._sections[key];\n for (let i = 0; i < section.beatCount; ++i) {\n this.createTimer(section, startTime, i);\n }\n }\n }\n\n play(d) {\n const context = this;\n this._element.on(\"canplaythrough\", function (d2) {\n context.node().play();\n });\n this.node().load();\n }\n}\nAudio.prototype._class += \" other_Audio\";\n\nexport interface Audio {\n source(): string;\n source(_: string): this;\n source_exists(): boolean;\n}\n\nAudio.prototype.publish(\"source\", \"\", \"string\", \"Audio Source\");\n","/*\n JavaScript autoComplete v1.0.5\n Copyright (c) 2014 Simon Steinberger / Pixabay\n GitHub: https://github.com/Pixabay/JavaScript-autoComplete\n License: http://www.opensource.org/licenses/mit-license.php\n*/\n\nvar autoComplete = (function(){\n // \"use strict\";\n function autoComplete(options){\n if (!document.querySelector) return;\n\n // helpers\n function hasClass(el, className){ return el.classList ? el.classList.contains(className) : new RegExp('\\\\b'+ className+'\\\\b').test(el.className); }\n\n function addEvent(el, type, handler){\n if (el.attachEvent) el.attachEvent('on'+type, handler); else el.addEventListener(type, handler);\n }\n function removeEvent(el, type, handler){\n // if (el.removeEventListener) not working in IE11\n if (el.detachEvent) el.detachEvent('on'+type, handler); else el.removeEventListener(type, handler);\n }\n function live(elClass, event, cb, context){\n addEvent(context || document, event, function(e){\n var found, el = e.target || e.srcElement;\n while (el && !(found = hasClass(el, elClass))) el = el.parentElement;\n if (found) cb.call(el, e);\n });\n }\n\n var o = {\n selector: 0,\n source: 0,\n minChars: 3,\n delay: 150,\n offsetLeft: 0,\n offsetTop: 1,\n cache: 1,\n menuClass: '',\n renderItem: function (item, search){\n // escape special characters\n search = search.replace(/[-\\/\\\\^$*+?.()|[\\]{}]/g, '\\\\$&');\n var re = new RegExp(\"(\" + search.split(' ').join('|') + \")\", \"gi\");\n return '<div class=\"autocomplete-suggestion\" data-val=\"' + item + '\">' + item.replace(re, \"<b>$1</b>\") + '</div>';\n },\n onSelect: function(e, term, item){}\n };\n for (var k in options) { if (options.hasOwnProperty(k)) o[k] = options[k]; }\n\n // init\n var elems = typeof o.selector == 'object' ? [o.selector] : document.querySelectorAll(o.selector);\n for (var i=0; i<elems.length; i++) {\n var that = elems[i];\n\n // create suggestions container \"sc\"\n that.sc = document.createElement('div');\n that.sc.className = 'autocomplete-suggestions '+o.menuClass;\n\n that.autocompleteAttr = that.getAttribute('autocomplete');\n that.setAttribute('autocomplete', 'off');\n that.cache = {};\n that.last_val = '';\n\n that.updateSC = function(resize, next){\n var rect = that.getBoundingClientRect();\n that.sc.style.left = Math.round(rect.left + (window.pageXOffset || document.documentElement.scrollLeft) + o.offsetLeft) + 'px';\n that.sc.style.top = Math.round(rect.bottom + (window.pageYOffset || document.documentElement.scrollTop) + o.offsetTop) + 'px';\n that.sc.style.width = Math.round(rect.right - rect.left) + 'px'; // outerWidth\n if (!resize) {\n that.sc.style.display = 'block';\n that.sc.classList.remove('hide')\n if (!that.sc.maxHeight) { that.sc.maxHeight = parseInt((window.getComputedStyle ? getComputedStyle(that.sc, null) : that.sc.currentStyle).maxHeight); }\n if (!that.sc.suggestionHeight) that.sc.suggestionHeight = that.sc.querySelector('.autocomplete-suggestion').offsetHeight;\n if (that.sc.suggestionHeight)\n if (!next) that.sc.scrollTop = 0;\n else {\n var scrTop = that.sc.scrollTop, selTop = next.getBoundingClientRect().top - that.sc.getBoundingClientRect().top;\n if (selTop + that.sc.suggestionHeight - that.sc.maxHeight > 0)\n that.sc.scrollTop = selTop + that.sc.suggestionHeight + scrTop - that.sc.maxHeight;\n else if (selTop < 0)\n that.sc.scrollTop = selTop + scrTop;\n }\n }\n }\n addEvent(window, 'resize', that.updateSC);\n document.body.appendChild(that.sc);\n\n live('autocomplete-suggestion', 'mouseleave', function(e){\n var sel = that.sc.querySelector('.autocomplete-suggestion.selected');\n if (sel) setTimeout(function(){ sel.className = sel.className.replace('selected', ''); }, 20);\n }, that.sc);\n\n live('autocomplete-suggestion', 'mouseover', function(e){\n var sel = that.sc.querySelector('.autocomplete-suggestion.selected');\n if (sel) sel.className = sel.className.replace('selected', '');\n this.className += ' selected';\n }, that.sc);\n\n live('autocomplete-suggestion', 'mousedown', function(e){\n if (hasClass(this, 'autocomplete-suggestion')) { // else outside click\n var v = this.getAttribute('data-val');\n that.value = v;\n o.onSelect(e, v, this);\n that.sc.style.display = 'none';\n that.sc.classList.add(\"hide\");\n\n }\n }, that.sc);\n\n that.blurHandler = function(){\n try { var over_sb = document.querySelector('.autocomplete-suggestions:hover'); } catch(e){ var over_sb = 0; }\n if (!over_sb) {\n that.last_val = that.value;\n that.sc.style.display = 'none';\n that.sc.classList.add(\"hide\");\n setTimeout(function(){\n that.sc.style.display = 'none';\n that.sc.classList.add(\"hide\");\n }, 350); // hide suggestions on fast input\n } else if (that !== document.activeElement) setTimeout(function(){ that.focus(); }, 20);\n };\n addEvent(that, 'blur', that.blurHandler);\n\n var suggest = function(data, val){\n if (!val) {\n var val = that.value;\n }\n that.cache[val] = data;\n if (data.length && val.length >= o.minChars) {\n var s = '';\n for (var i=0;i<data.length;i++) s += o.renderItem(data[i], val);\n that.sc.innerHTML = s;\n that.updateSC(0);\n }\n else {\n that.sc.style.display = 'none';\n that.sc.classList.add(\"hide\");\n }\n }\n\n that.keydownHandler = function(e){\n var key = window.event ? e.keyCode : e.which;\n // down (40), up (38)\n if ((key == 40 || key == 38) && that.sc.innerHTML) {\n var next, sel = that.sc.querySelector('.autocomplete-suggestion.selected');\n if (!sel) {\n next = (key == 40) ? that.sc.querySelector('.autocomplete-suggestion') : that.sc.childNodes[that.sc.childNodes.length - 1]; // first : last\n next.className += ' selected';\n that.value = next.getAttribute('data-val');\n } else {\n next = (key == 40) ? sel.nextSibling : sel.previousSibling;\n if (next) {\n sel.className = sel.className.replace('selected', '');\n next.className += ' selected';\n that.value = next.getAttribute('data-val');\n }\n else { sel.className = sel.className.replace('selected', ''); that.value = that.last_val; next = 0; }\n }\n that.updateSC(0, next);\n return false;\n }\n // esc\n else if (key == 27) {\n that.value = that.last_val;\n that.sc.style.display = 'none';\n that.sc.classList.add(\"hide\");\n }\n // enter\n else if (key == 13 || key == 9) {\n if (that.sc.style.display !== 'none') {\n e.preventDefault();\n }\n var sel = that.sc.querySelector('.autocomplete-suggestion.selected');\n if (sel && that.sc.style.display != 'none') {\n o.onSelect(e, sel.getAttribute('data-val'), sel);\n setTimeout(function(){\n that.sc.style.display = 'none';\n that.sc.classList.add(\"hide\");\n }, 20); }\n }\n };\n addEvent(that, 'keydown', that.keydownHandler);\n\n that.keyupHandler = function(e){\n var key = window.event ? e.keyCode : e.which;\n if (!key || (key < 35 || key > 40) && key != 13 && key != 27) {\n var val = that.value;\n if (val.length >= o.minChars) {\n if (val != that.last_val) {\n that.last_val = val;\n clearTimeout(that.timer);\n if (o.cache) {\n if (val in that.cache) { suggest(that.cache[val]); return; }\n // no requests if previous suggestions were empty\n for (var i=1; i<val.length-o.minChars; i++) {\n var part = val.slice(0, val.length-i);\n if (part in that.cache && !that.cache[part].length) { suggest([]); return; }\n }\n }\n that.timer = setTimeout(function(){ o.source(val, suggest) }, o.delay);\n }\n } else {\n that.last_val = val;\n that.sc.style.display = 'none';\n that.sc.classList.add(\"hide\");\n }\n }\n };\n addEvent(that, 'keyup', that.keyupHandler);\n\n that.focusHandler = function(e){\n that.last_val = '\\n';\n that.keyupHandler(e)\n };\n if (!o.minChars) addEvent(that, 'focus', that.focusHandler);\n }\n\n // public destroy method\n this.destroy = function(){\n for (var i=0; i<elems.length; i++) {\n var that = elems[i];\n removeEvent(window, 'resize', that.updateSC);\n removeEvent(that, 'blur', that.blurHandler);\n removeEvent(that, 'focus', that.focusHandler);\n removeEvent(that, 'keydown', that.keydownHandler);\n removeEvent(that, 'keyup', that.keyupHandler);\n if (that.autocompleteAttr)\n that.setAttribute('autocomplete', that.autocompleteAttr);\n else\n that.removeAttribute('autocomplete');\n document.body.removeChild(that.sc);\n that = null;\n }\n };\n }\n return autoComplete;\n})();\n\n(function(){\n if (typeof define === 'function' && define.amd)\n define('autoComplete', function () { return autoComplete; });\n else if (typeof module !== 'undefined' && module.exports)\n module.exports = autoComplete;\n else\n window.autoComplete = autoComplete;\n})();\n","import { HTMLWidget } from \"@hpcc-js/common\";\nimport AutoComplete from \"javascript-autocomplete\";\n\nimport \"../src/AutoCompleteText.css\";\n\nexport class AutoCompleteText extends HTMLWidget {\n _span;\n _prompt;\n _input;\n _prevMinCharsText;\n _autoComplete;\n\n constructor() {\n super();\n this._tag = \"div\";\n }\n\n autoCompleteTextData() {\n if (this.data().length === 0) return [];\n const view = this._db.rollupView([this.textColumn(), this.valueColumn()]);\n return view.entries().map(function (row, idx) {\n return {\n idx,\n text: row.key,\n value: row.values.length ? row.values[0].key : \"\",\n origRow: row.values.length && row.values[0].value.length ? row.values[0].value[0] : []\n };\n }, this);\n }\n\n enter(domNode, element) {\n super.enter(domNode, element);\n this._span = element.append(\"span\");\n this._prompt = this._span.append(\"label\")\n .attr(\"for\", this.id() + \"_input\")\n ;\n this._input = this._span.append(\"input\")\n .attr(\"id\", this.id() + \"_input\")\n .attr(\"name\", this.id() + \"_input_name\")\n .attr(\"type\", \"text\")\n .attr(\"placeholder\", this.placeholder())\n ;\n }\n\n update(domNode, element) {\n super.update(domNode, element);\n\n this._prompt.text(this.label());\n this._input.style(\"width\", this.textboxWidth_exists() ? this.textboxWidth() + \"px\" : null);\n\n if (this._prevMinCharsText !== this.minCharsText()) {\n this._prevMinCharsText = this.minCharsText();\n\n if (this._autoComplete) {\n this._autoComplete.destroy();\n }\n const context = this;\n this._autoComplete = new AutoComplete({\n selector: \"#\" + this.id() + \"_input\",\n minChars: this.minCharsText(),\n delay: 150,\n offsetLeft: 0,\n offsetTop: 1,\n source: (term, suggest) => {\n const field = context._db.fieldByLabel(context.textColumn());\n if (field) {\n term = term.toLowerCase();\n const suggestions = context.autoCompleteTextData().filter(function (row) {\n return row.origRow[field.idx].toLowerCase().indexOf(term) >= 0;\n }).map(function (row) {\n return {\n text: row.origRow[field.idx],\n rowIdx: row.idx\n };\n });\n suggest(suggestions);\n }\n },\n renderItem: (item, search) => {\n search = search.replace(/[-\\/\\\\^$*+?.()|[\\]{}]/g, \"\\\\$&\");\n const re = new RegExp(\"(\" + search.split(\" \").join(\"|\") + \")\", \"gi\");\n return '<div class=\"autocomplete-suggestion\" data-val=\"' + item.text + '\" data-row-idx=\"' + item.rowIdx + '\">' + item.text.replace(re, \"<b>$1</b>\") + \"</div>\";\n },\n onSelect: (e, term, item) => {\n const rowIdx = +item.getAttribute(\"data-row-idx\");\n const row = context.autoCompleteTextData()[rowIdx];\n context.click(context.rowToObj(row.origRow), context.valueColumn(), true);\n }\n });\n }\n }\n\n exit(domNode, element) {\n if (this._autoComplete) {\n this._autoComplete.destroy();\n }\n this._span.remove();\n super.exit(domNode, element);\n }\n\n click(row, column, selected) {\n }\n}\nAutoCompleteText.prototype._class += \" other_AutoCompleteText\";\n\nexport interface AutoCompleteText {\n label(): string;\n label(_: string): this;\n label_exists(): boolean;\n textboxWidth(): number;\n textboxWidth(_: number): this;\n textboxWidth_exists(): boolean;\n placeholder(): string;\n placeholder(_: string): this;\n placeholder_exists(): boolean;\n valueColumn(): string;\n valueColumn(_: string): this;\n valueColumn_exists(): boolean;\n textColumn(): string;\n textColumn(_: string): this;\n textColumn_exists(): boolean;\n minCharsText(): number;\n minCharsText(_: number): this;\n minCharsText_exists(): boolean;\n}\n\nAutoCompleteText.prototype.publish(\"label\", \"Label: \", \"string\", \"Label for AutoCompleteText\");\nAutoCompleteText.prototype.publish(\"textboxWidth\", null, \"number\", \"width of textbox\", null, { optional: true });\nAutoCompleteText.prototype.publish(\"placeholder\", \"Search...\", \"string\", \"Placeholder for AutoCompleteText\");\nAutoCompleteText.prototype.publish(\"valueColumn\", null, \"set\", \"Select column for autocomplete\", function () { return this.columns(); }, { optional: true });\nAutoCompleteText.prototype.publish(\"textColumn\", null, \"set\", \"Select value(s)\", function () { return this.columns(); }, { optional: true });\nAutoCompleteText.prototype.publish(\"minCharsText\", 1, \"number\", \"Size of multiAutoCompleteText box\");\n","var t0 = new Date,\n t1 = new Date;\n\nexport default function newInterval(floori, offseti, count, field) {\n\n function interval(date) {\n return floori(date = arguments.length === 0 ? new Date : new Date(+date)), date;\n }\n\n interval.floor = function(date) {\n return floori(date = new Date(+date)), date;\n };\n\n interval.ceil = function(date) {\n return floori(date = new Date(date - 1)), offseti(date, 1), floori(date), date;\n };\n\n interval.round = function(date) {\n var d0 = interval(date),\n d1 = interval.ceil(date);\n return date - d0 < d1 - date ? d0 : d1;\n };\n\n interval.offset = function(date, step) {\n return offseti(date = new Date(+date), step == null ? 1 : Math.floor(step)), date;\n };\n\n interval.range = function(start, stop, step) {\n var range = [], previous;\n start = interval.ceil(start);\n step = step == null ? 1 : Math.floor(step);\n if (!(start < stop) || !(step > 0)) return range; // also handles Invalid Date\n do range.push(previous = new Date(+start)), offseti(start, step), floori(start);\n while (previous < start && start < stop);\n return range;\n };\n\n interval.filter = function(test) {\n return newInterval(function(date) {\n if (date >= date) while (floori(date), !test(date)) date.setTime(date - 1);\n }, function(date, step) {\n if (date >= date) {\n if (step < 0) while (++step <= 0) {\n while (offseti(date, -1), !test(date)) {} // eslint-disable-line no-empty\n } else while (--step >= 0) {\n while (offseti(date, +1), !test(date)) {} // eslint-disable-line no-empty\n }\n }\n });\n };\n\n if (count) {\n interval.count = function(start, end) {\n t0.setTime(+start), t1.setTime(+end);\n floori(t0), floori(t1);\n return Math.floor(count(t0, t1));\n };\n\n interval.every = function(step) {\n step = Math.floor(step);\n return !isFinite(step) || !(step > 0) ? null\n : !(step > 1) ? interval\n : interval.filter(field\n ? function(d) { return field(d) % step === 0; }\n : function(d) { return interval.count(0, d) % step === 0; });\n };\n }\n\n return interval;\n}\n","export var durationSecond = 1e3;\nexport var durationMinute = 6e4;\nexport var durationHour = 36e5;\nexport var durationDay = 864e5;\nexport var durationWeek = 6048e5;\n","import interval from \"./interval.js\";\nimport {durationDay, durationMinute} from \"./duration.js\";\n\nvar day = interval(function(date) {\n date.setHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setDate(date.getDate() + step);\n}, function(start, end) {\n return (end - start - (end.getTimezoneOffset() - start.getTimezoneOffset()) * durationMinute) / durationDay;\n}, function(date) {\n return date.getDate() - 1;\n});\n\nexport default day;\nexport var days = day.range;\n","import interval from \"./interval.js\";\nimport {durationMinute, durationWeek} from \"./duration.js\";\n\nfunction weekday(i) {\n return interval(function(date) {\n date.setDate(date.getDate() - (date.getDay() + 7 - i) % 7);\n date.setHours(0, 0, 0, 0);\n }, function(date, step) {\n date.setDate(date.getDate() + step * 7);\n }, function(start, end) {\n return (end - start - (end.getTimezoneOffset() - start.getTimezoneOffset()) * durationMinute) / durationWeek;\n });\n}\n\nexport var sunday = weekday(0);\nexport var monday = weekday(1);\nexport var tuesday = weekday(2);\nexport var wednesday = weekday(3);\nexport var thursday = weekday(4);\nexport var friday = weekday(5);\nexport var saturday = weekday(6);\n\nexport var sundays = sunday.range;\nexport var mondays = monday.range;\nexport var tuesdays = tuesday.range;\nexport var wednesdays = wednesday.range;\nexport var thursdays = thursday.range;\nexport var fridays = friday.range;\nexport var saturdays = saturday.range;\n","import interval from \"./interval.js\";\n\nvar month = interval(function(date) {\n date.setDate(1);\n date.setHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setMonth(date.getMonth() + step);\n}, function(start, end) {\n return end.getMonth() - start.getMonth() + (end.getFullYear() - start.getFullYear()) * 12;\n}, function(date) {\n return date.getMonth();\n});\n\nexport default month;\nexport var months = month.range;\n","import interval from \"./interval.js\";\n\nvar year = interval(function(date) {\n date.setMonth(0, 1);\n date.setHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setFullYear(date.getFullYear() + step);\n}, function(start, end) {\n return end.getFullYear() - start.getFullYear();\n}, function(date) {\n return date.getFullYear();\n});\n\n// An optimized implementation for this simple case.\nyear.every = function(k) {\n return !isFinite(k = Math.floor(k)) || !(k > 0) ? null : interval(function(date) {\n date.setFullYear(Math.floor(date.getFullYear() / k) * k);\n date.setMonth(0, 1);\n date.setHours(0, 0, 0, 0);\n }, function(date, step) {\n date.setFullYear(date.getFullYear() + step * k);\n });\n};\n\nexport default year;\nexport var years = year.range;\n","import { HTMLWidget, Palette, Utility } from \"@hpcc-js/common\";\nimport { extent as d3Extent, range as d3Range } from \"d3-array\";\nimport { map as d3Map } from \"d3-collection\";\nimport { format as d3Format } from \"d3-format\";\nimport { select as d3Select } from \"d3-selection\";\nimport { timeDays as d3TimeDays, timeMonths as d3TimeMonths, timeWeek as d3TimeWeek, timeYear as d3TimeYear } from \"d3-time\";\nimport { timeParse as d3TimeParse } from \"d3-time-format\";\n\nimport \"../src/CalendarHeatMap.css\";\n\nexport class CalendarHeatMap extends HTMLWidget {\n _prevDateColumn;\n _prevAggrType;\n _prevAggrColumn;\n _prevAggrDeltaColumn;\n _view;\n _parentNode;\n\n constructor() {\n super();\n\n Utility.SimpleSelectionMixin.call(this);\n }\n\n calendarData() {\n if (this.fields().length === 0 || this.data().length === 0) {\n return [];\n }\n const dateParser = d3TimeParse(this.datePattern());\n const valueFormatter = this.aggrDeltaColumn() ? d3Format(\".1%\") : d3Format(\"s\");\n if (this._prevDateColumn !== this.dateColumn() ||\n this._prevAggrType !== this.aggrType() ||\n this._prevAggrColumn !== this.aggrColumn() ||\n this._prevAggrDeltaColumn !== this.aggrDeltaColumn()) {\n this._prevDateColumn = this.dateColumn();\n this._prevAggrType = this.aggrType();\n this._prevAggrColumn = this.aggrColumn();\n this._prevAggrDeltaColumn = this.aggrDeltaColumn();\n this._view = this._db.aggregateView([this.dateColumn()], this.aggrType(), this.aggrColumn(), this.aggrDeltaColumn());\n }\n return this._view.entries().map(function (row) {\n row.dateKey = dateParser(row.key);\n row.formattedValues = valueFormatter(row.value.aggregate);\n row.origRows = row.value;\n return row;\n });\n }\n\n calcDelta(row) {\n return (row.Close - row.Open) / row.Open;\n }\n\n enter(domNode, element) {\n super.enter(domNode, element);\n d3Select(domNode.parentNode)\n .style(\"overflow-y\", \"scroll\")\n .style(\"overflow-x\", \"hidden\")\n .style(\"height\", \"100%\")\n .style(\"width\", \"100%\")\n ;\n this._selection.widgetElement(element);\n }\n\n update(domNode, element) {\n super.update(domNode, element);\n this._palette = this._palette.switch(this.paletteID());\n\n const width = this.width();\n const cellSize = (width / 12) / 5;\n const height = cellSize * 8;\n\n const data = this.calendarData();\n const mappedData = d3Map(data, function (d: any) { return d.dateKey; });\n const dateExtent = d3Extent(data, function (d: any) {\n return d.dateKey.getFullYear();\n });\n const context = this;\n const svg = element.selectAll(\"svg\").data(d3Range(+dateExtent[0], +dateExtent[1] + 1));\n const svgUpdate = svg.enter().append(\"svg\")\n .each(function (d) {\n const svgElement = d3Select(this);\n const g = svgElement.append(\"g\");\n g.append(\"text\")\n .style(\"text-anchor\", \"middle\")\n ;\n g.append(\"g\")\n .attr(\"class\", \"days\")\n ;\n\n const _d3TimeMonths = d3TimeMonths(new Date(d, 0, 1), new Date(d + 1, 0, 1));\n const _months = g.append(\"g\").attr(\"class\", \"months\");\n _d3TimeMonths.forEach(function (_m) {\n _months.append(\"path\")\n .attr(\"class\", \"month\")\n .attr(\"d\", calcMonthPath(_m))\n .style(\"stroke\", context.monthStrokeColor())\n .style(\"stroke-width\", context.monthStrokeWidth())\n ;\n });\n })\n .merge(svg)\n .attr(\"width\", width)\n .attr(\"height\", height)\n ;\n svgUpdate.select(\"g\")\n .attr(\"transform\", \"translate(\" + ((width - cellSize * 53) / 2) + \",\" + (height - cellSize * 7 - 1) + \")\")\n ;\n svgUpdate.select(\"text\")\n .attr(\"transform\", \"translate(-6,\" + cellSize * 3.5 + \")rotate(-90)\")\n .text(d => d)\n ;\n svg.exit().remove();\n\n let dataExtent: [any, any] = d3Extent<number>(data, function (d: any) {\n return d.value.aggregate;\n });\n if (this.aggrDeltaColumn()) {\n const max = Math.max(Math.abs(+dataExtent[0]), Math.abs(+dataExtent[1]));\n dataExtent = [-max, max];\n }\n const dayRect = svgUpdate.select(\".days\").selectAll(\".day\").data(function (d) { return d3TimeDays(new Date(d, 0, 1), new Date(d + 1, 0, 1)); });\n const dayRectUpdate = dayRect.enter().append(\"rect\")\n .attr(\"class\", \"day\")\n .call(this._selection.enter.bind(this._selection))\n .on(\"click\", function (d) {\n const data2 = mappedData.get(d);\n if (data2 && data2.value && data2.value && data2.value.length) {\n context.click(context.rowToObj(data2.value[0]), context.dateColumn(), context._selection.selected(this));\n }\n })\n .on(\"dblclick\", function (d) {\n const data2 = mappedData.get(d);\n if (data2 && data2.value && data2.value && data2.value.length) {\n context.dblclick(context.rowToObj(data2.value[0]), context.dateColumn(), context._selection.selected(this));\n }\n }).each(function (d) {\n const dayRectElement = d3Select(this);\n dayRectElement.append(\"title\");\n })\n .merge(dayRect)\n .attr(\"x\", function (d) { return d3TimeWeek.count(d3TimeYear(d), d) * cellSize; })\n .attr(\"y\", function (d) { return d.getDay() * cellSize; })\n .attr(\"width\", cellSize)\n .attr(\"height\", cellSize)\n .style(\"stroke\", this.dayStrokeColor())\n .style(\"stroke-width\", this.dayStrokeWidth())\n .style(\"fill\", null)\n ;\n dayRectUpdate.select(\"title\")\n .text(d => d)\n ;\n dayRectUpdate.filter(function (d) { return mappedData.has(d); })\n .style(\"fill\", function (d) {\n const row = mappedData.get(d);\n if (!row || !row.value || !row.value.aggregate) {\n return null;\n }\n return context._palette(row.value.aggregate, dataExtent[0], dataExtent[1]);\n })\n .select(\"title\")\n .text(function (d) {\n const data2 = mappedData.get(d);\n return data2.key + \": \" + data2.formattedValues;\n })\n ;\n dayRect.exit().remove();\n\n const monthPath = svg.select(\".months\").selectAll(\".month\").data(function (d) { return d3TimeMonths(new Date(d, 0, 1), new Date(d + 1, 0, 1)); });\n monthPath.enter().append(\"path\")\n .attr(\"class\", \"month\")\n .merge(monthPath)\n .attr(\"d\", calcMonthPath)\n .style(\"stroke\", this.monthStrokeColor())\n .style(\"stroke-width\", this.monthStrokeWidth())\n ;\n monthPath.exit().remove();\n\n function calcMonthPath(t0) {\n const t1 = new Date(t0.getFullYear(), t0.getMonth() + 1, 0);\n const d0 = t0.getDay();\n const w0 = d3TimeWeek.count(d3TimeYear(t0), t0);\n const d1 = t1.getDay();\n const w1 = d3TimeWeek.count(d3TimeYear(t1), t1);\n return \"M\" + (w0 + 1) * cellSize + \",\" + d0 * cellSize +\n \"H\" + w0 * cellSize + \"V\" + 7 * cellSize +\n \"H\" + w1 * cellSize + \"V\" + (d1 + 1) * cellSize +\n \"H\" + (w1 + 1) * cellSize + \"V\" + 0 +\n \"H\" + (w0 + 1) * cellSize + \"Z\";\n }\n }\n\n exit(domNode, element) {\n super.exit(domNode, element);\n }\n\n // Events ---\n click(row, column, selected) {\n }\n\n dblclick(row, column, selected) {\n }\n}\nCalendarHeatMap.prototype._class += \" other_CalendarHeatMap\";\nCalendarHeatMap.prototype.mixin(Utility.SimpleSelectionMixin);\nCalendarHeatMap.prototype._palette = Palette.rainbow(\"default\");\n\nexport interface CalendarHeatMap {\n _palette;\n\n // SimpleSelectionMixin ---\n _selection\n\n // Properties ---\n paletteID(): string;\n paletteID(_: string): this;\n paletteID_exists(): boolean;\n datePattern(): string;\n datePattern(_: string): this;\n datePattern_exists(): boolean;\n dayStrokeColor(): string;\n dayStrokeColor(_: string): this;\n monthStrokeColor(): string;\n monthStrokeColor(_: string): this;\n dayStrokeWidth(): number;\n dayStrokeWidth(_: number): this;\n monthStrokeWidth(): number;\n monthStrokeWidth(_: number): this;\n dateColumn(): string;\n dateColumn(_: string): this;\n dateColumn_exists(): boolean;\n aggrType(): string;\n aggrType(_: string): this;\n aggrType_exists(): boolean;\n aggrColumn(): string;\n aggrColumn(_: string): this;\n aggrColumn_exists(): boolean;\n aggrDeltaColumn(): string;\n aggrDeltaColumn(_: string): this;\n aggrDeltaColumn_exists(): boolean;\n}\nCalendarHeatMap.prototype.publish(\"paletteID\", \"YlOrRd\", \"set\", \"Color palette for this widget\", CalendarHeatMap.prototype._palette.switch(), { tags: [\"Basic\", \"Shared\"] });\nCalendarHeatMap.prototype.publish(\"dayStrokeColor\", \"#ccc\", \"html-color\", \"Color of day border\");\nCalendarHeatMap.prototype.publish(\"monthStrokeColor\", \"#000\", \"html-color\", \"Color of month border\");\nCalendarHeatMap.prototype.publish(\"dayStrokeWidth\", 1, \"number\", \"Pixel width of day border\");\nCalendarHeatMap.prototype.publish(\"monthStrokeWidth\", 2, \"number\", \"Pixel width of month border\");\nCalendarHeatMap.prototype.publish(\"dateColumn\", null, \"set\", \"Date Column\", function () { return this.columns(); }, { optional: true });\nCalendarHeatMap.prototype.publish(\"datePattern\", \"%Y-%m-%d\", \"string\", \"Date Pattern\");\nCalendarHeatMap.prototype.publish(\"aggrType\", null, \"set\", \"Aggregation Type\", [null, \"mean\", \"median\", \"sum\", \"min\", \"max\"], { optional: true });\nCalendarHeatMap.prototype.publish(\"aggrColumn\", null, \"set\", \"Aggregation Field\", function () { return this.columns(); }, { optional: true, disable: (w) => !w.aggrType() });\nCalendarHeatMap.prototype.publish(\"aggrDeltaColumn\", null, \"set\", \"Aggregation Field\", function () { return this.columns(); }, { optional: true, disable: (w) => !w.aggrType() });\n","import { Utility } from \"@hpcc-js/common\";\n\nconst TIMEOUT_DEFAULT = 60;\nfunction espValFix(val) {\n if (val === undefined || val === null) {\n return null;\n }\n if (!val.trim) {\n if (val.Row) {\n return espRowFix(val.Row);\n }\n return val;\n }\n const retVal = val.trim();\n if (retVal !== \"\" && !isNaN(retVal)) {\n if (retVal.length <= 1 || retVal[0] !== \"0\" || retVal[1] === \".\") {\n return Number(retVal);\n }\n }\n return retVal;\n}\n\nfunction espRowFix(row) {\n for (const key in row) {\n row[key] = espValFix(row[key]);\n }\n return row;\n}\n\nexport class ESPUrl {\n protected _protocol = \"http:\";\n protected _hostname = \"localhost\";\n protected _url;\n protected _port;\n protected _search;\n protected _pathname;\n protected _params;\n protected _hash;\n protected _host;\n\n constructor() {\n }\n\n url(_: string): this;\n url(): string;\n url(_?): string | this {\n if (!arguments.length) return this._url;\n this._url = _;\n const parser = document.createElement(\"a\");\n parser.href = this._url;\n // eslint-disable-next-line no-self-assign\n parser.href = parser.href; // This fixes an IE9/IE10 DOM value issue\n\n const params = {};\n if (parser.search.length) {\n let tmp: any = parser.search;\n if (tmp[0] === \"?\") {\n tmp = tmp.substring(1);\n }\n tmp = tmp.split(\"&\");\n tmp.map(function (item) {\n const tmpItem = item.split(\"=\");\n params[decodeURIComponent(tmpItem[0])] = decodeURIComponent(tmpItem[1]);\n });\n }\n this._protocol = parser.protocol;\n this._hostname = parser.hostname;\n this._port = parser.port;\n this._pathname = parser.pathname;\n while (this._pathname.length && this._pathname[0] === \"/\") {\n this._pathname = this._pathname.substring(1);\n }\n this._search = parser.search;\n this._params = params;\n this._hash = parser.hash;\n this._host = parser.host;\n\n return this;\n }\n\n protocol(_: string): this;\n protocol(): string;\n protocol(_?: string): string | this {\n if (!arguments.length) return this._protocol;\n this._protocol = _;\n return this;\n }\n\n hostname(_: string): this;\n hostname(): string;\n hostname(_?: string): string | this {\n if (!arguments.length) return this._hostname;\n this._hostname = _;\n return this;\n }\n\n port(_: string): this;\n port(): string;\n port(_?: string) {\n if (!arguments.length) return this._port;\n this._port = _;\n return this;\n }\n\n search(_: string): this;\n search(): string;\n search(_?: string) {\n if (!arguments.length) return this._search;\n this._search = _;\n return this;\n }\n\n pathname(_: string): this;\n pathname(): string;\n pathname(_?: string) {\n if (!arguments.length) return this._pathname;\n this._pathname = _;\n return this;\n }\n\n hash(_: string): this;\n hash(): string;\n hash(_?: string) {\n if (!arguments.length) return this._hash;\n this._hash = _;\n return this;\n }\n\n host(_: string): this;\n host(): string;\n host(_?: string) {\n if (!arguments.length) return this._host;\n this._host = _;\n return this;\n }\n\n params(_: string): this;\n params(): string;\n params(_?: string) {\n if (!arguments.length) return this._params;\n this._params = _;\n return this;\n }\n\n param(key: string) {\n return this._params[key];\n }\n\n isWsWorkunits() {\n return this._pathname.toLowerCase().indexOf(\"wsworkunits\") >= 0 || this._params[\"Wuid\"];\n }\n\n isWorkunitResult() {\n return this.isWsWorkunits() && (this._params[\"Sequence\"] || this._params[\"ResultName\"]);\n }\n\n isWsEcl() {\n return this._pathname.toLowerCase().indexOf(\"wsecl\") >= 0 || (this._params[\"QuerySetId\"] && this._params[\"Id\"]);\n }\n\n isWsWorkunits_GetStats() {\n return this._pathname.toLowerCase().indexOf(\"wsworkunits/wugetstats\") >= 0 && this._params[\"WUID\"];\n }\n\n getUrl(overrides) {\n overrides = overrides || {};\n return (overrides.protocol !== undefined ? overrides.protocol : this._protocol) + \"//\" +\n (overrides.hostname !== undefined ? overrides.hostname : this._hostname) + \":\" +\n (overrides.port !== undefined ? overrides.port : this._port) + \"/\" +\n (overrides.pathname !== undefined ? overrides.pathname : this._pathname);\n }\n}\n\nexport function ESPMappings(mappings) {\n this._mappings = mappings;\n this._reverseMappings = {};\n for (const resultName in this._mappings) {\n this._reverseMappings[resultName] = {};\n for (const key in this._mappings[resultName]) {\n this._reverseMappings[resultName][this._mappings[resultName][key]] = key;\n }\n }\n}\n\nESPMappings.prototype.contains = function (resultName, origField) {\n return Utility.exists(resultName + \".\" + origField, this._mappings);\n};\n\nESPMappings.prototype.mapResult = function (response, resultName) {\n const mapping = this._mappings[resultName];\n if (mapping) {\n response[resultName] = response[resultName].map(function (item) {\n let row = [];\n if (mapping.x && mapping.x instanceof Array) {\n // LINE Mapping ---\n row = [];\n for (let i = 0; i < mapping.x.length; ++i) {\n row.push(item[mapping.y[i]]);\n }\n } else {\n // Regular Mapping ---\n for (const key in mapping) {\n if (mapping[key] === \"label\") {\n row[0] = item[key];\n } else if (mapping[key] === \"weight\") {\n row[1] = item[key];\n }\n }\n }\n return row;\n }, this);\n }\n};\n\nESPMappings.prototype.mapResponse = function (response) {\n for (const key in response) {\n this.mapResult(response, key);\n }\n};\n\nconst serialize = function (obj) {\n const str = [];\n for (const key in obj) {\n if (obj.hasOwnProperty(key)) {\n const val = obj[key];\n if (val !== undefined && val !== null) {\n str.push(encodeURIComponent(key) + \"=\" + encodeURIComponent(val));\n }\n }\n }\n return str.join(\"&\");\n};\n\nlet jsonp = function (url, request, timeout) {\n return new Promise(function (resolve, reject) {\n let respondedTimeout = timeout * 1000;\n const respondedTick = 5000;\n const callbackName = \"jsonp_callback_\" + Math.round(Math.random() * 999999);\n window[callbackName] = function (response) {\n respondedTimeout = 0;\n doCallback();\n resolve(response);\n };\n const script = document.createElement(\"script\");\n script.src = url + (url.indexOf(\"?\") >= 0 ? \"&\" : \"?\") + \"jsonp=\" + callbackName + \"&\" + serialize(request);\n document.body.appendChild(script);\n const progress = setInterval(function () {\n if (respondedTimeout <= 0) {\n clearInterval(progress);\n } else {\n respondedTimeout -= respondedTick;\n if (respondedTimeout <= 0) {\n clearInterval(progress);\n doCallback();\n reject(Error(\"Request timeout: \" + script.src));\n }\n }\n }, respondedTick);\n\n function doCallback() {\n delete window[callbackName];\n document.body.removeChild(script);\n }\n });\n};\n\nexport class Comms extends ESPUrl {\n protected _proxyMappings;\n protected _mappings;\n protected _timeout;\n protected _hipieResults;\n protected _hipieResultsLength;\n\n constructor() {\n super();\n this._proxyMappings = {};\n this._mappings = new ESPMappings({});\n this._timeout = TIMEOUT_DEFAULT;\n this._hipieResults = {};\n }\n\n hipieResults(_) {\n if (!arguments.length) return this._hipieResults;\n this._hipieResultsLength = 0;\n this._hipieResults = {};\n const context = this;\n _.forEach(function (item) {\n context._hipieResultsLength++;\n context._hipieResults[item.id] = item;\n });\n return this;\n }\n\n jsonp(url, request) {\n for (const key in this._proxyMappings) {\n const newUrlParts = url.split(key);\n const newUrl = newUrlParts[0];\n if (newUrlParts.length > 1) {\n const espUrl = new ESPUrl()\n .url(url)\n ;\n url = newUrl + this._proxyMappings[key];\n request.IP = espUrl.hostname();\n request.PORT = espUrl.port();\n if (newUrlParts.length > 0) {\n request.PATH = newUrlParts[1];\n }\n break;\n }\n }\n return jsonp(url, request, this.timeout());\n }\n\n ajax(method, url, request?) {\n return new Promise(function (resolve, reject) {\n let uri = url;\n if (method === \"GET\" && request) {\n uri += \"?\" + serialize(request);\n }\n const xhr: any = new XMLHttpRequest();\n xhr.onload = function (e) {\n if (this.status >= 200 && this.status < 300) {\n resolve(JSON.parse(this.response));\n } else {\n reject(Error(this.statusText));\n }\n };\n xhr.onerror = function () {\n reject(Error(this.statusText));\n };\n xhr.open(method, uri);\n xhr.setRequestHeader(\"X-Requested-With\", \"XMLHttpRequest\");\n if (method === \"GET\") {\n xhr.send();\n } else {\n xhr.setRequestHeader(\"Content-Type\", \"application/x-www-form-urlencoded\");\n xhr.send(serialize(request));\n }\n });\n }\n\n get(url, request?) {\n return this.ajax(\"GET\", url, request);\n }\n\n post(url, request) {\n return this.ajax(\"POST\", url, request);\n }\n\n mappings(_?) {\n if (!arguments.length) return this._mappings;\n this._mappings = new ESPMappings(_);\n return this;\n }\n\n proxyMappings(_?) {\n if (!arguments.length) return this._proxyMappings;\n this._proxyMappings = _;\n return this;\n }\n\n timeout(_?) {\n if (!arguments.length) return this._timeout;\n this._timeout = _ || TIMEOUT_DEFAULT;\n return this;\n }\n}\n\nexport class Basic extends Comms {\n\n protected _cacheCalls;\n\n constructor() {\n super();\n }\n\n cacheCalls(_?) {\n if (!arguments.length) return this._cacheCalls;\n this._cacheCalls = _;\n return this;\n }\n\n call(request, callback) {\n const url = this._url + (this._url.indexOf(\"?\") >= 0 ? \"&\" : \"?\") + serialize(request);\n if (this._cacheCalls) {\n const context = this;\n return new Promise(function (resolve, reject) {\n const response = JSON.parse(localStorage.getItem(\"hpcc.viz.\" + url));\n if (!response) {\n throw Error(\"not cached\");\n }\n if (callback) {\n console.error(\"Deprecated: callback, use promise (Basic.prototype.call)\");\n callback(response);\n }\n resolve(response);\n }).catch(function (response) {\n return context.get(url).then(function (response2) {\n localStorage.setItem(\"hpcc.viz.\" + url, JSON.stringify(response2));\n if (callback) {\n console.error(\"Deprecated: callback, use promise (Basic.prototype.call)\");\n callback(response2);\n }\n return response2;\n });\n });\n } else {\n localStorage.removeItem(\"hpcc.viz.\" + url);\n return this.get(url).then(function (response) {\n if (callback) {\n console.error(\"Deprecated: callback, use promise (Basic.prototype.call)\");\n callback(response);\n }\n return response;\n });\n }\n }\n}\n\nfunction locateRoxieResponse(response): object {\n // v5 and v6 compatible ---\n for (const key in response) {\n if (response[key].Row && response[key].Row instanceof Array) {\n return response;\n }\n let retVal;\n if (typeof (response[key]) !== \"string\") {\n retVal = locateRoxieResponse(response[key]);\n }\n if (retVal) {\n return retVal;\n }\n }\n return null;\n}\n\nfunction locateRoxieException(response) {\n for (const key in response) {\n if (response[key].Exception && response[key].Exception instanceof Array) {\n return response[key];\n }\n const retVal = locateRoxieException(response[key]);\n if (retVal) {\n return retVal;\n }\n }\n return null;\n}\n\nexport class WsECL extends Comms {\n\n protected _target;\n protected _query;\n\n constructor() {\n super();\n\n this._port = \"8002\";\n this._target = \"\";\n this._query = \"\";\n }\n\n url(_?) {\n const retVal = super.url.apply(this, arguments);\n if (arguments.length) {\n // http://localhost:8010/esp/files/stub.htm?QuerySetId=roxie&Id=stock.3&Widget=QuerySetDetailsWidget\n this._port = this._port === \"8010\" ? \"8002\" : this._port; // Need a better way ---\n for (const key in this._params) {\n switch (key) {\n case \"QuerySetId\":\n this.target(this._params[key]);\n break;\n case \"Id\":\n this.query(this._params[key]);\n break;\n }\n }\n\n let pathParts;\n let queryParts;\n if (!this._target || !this._query) {\n // http://localhost:8002/WsEcl/forms/default/query/roxie/wecare\n pathParts = this._pathname.split(\"/query/\");\n if (pathParts.length >= 2) {\n queryParts = pathParts[1].split(\"/\");\n if (queryParts.length >= 2) {\n this.target(queryParts[0]);\n this.query(queryParts[1]);\n }\n }\n }\n }\n return retVal;\n }\n\n target(_?) {\n if (!arguments.length) return this._target;\n this._target = _;\n return this;\n }\n\n query(_?) {\n if (!arguments.length) return this._query;\n this._query = _;\n return this;\n }\n\n constructUrl() {\n return Comms.prototype.getUrl.call(this, {\n pathname: \"WsEcl/submit/query/\" + this._target + \"/\" + this._query + \"/json\"\n });\n }\n\n call(target, request, callback) {\n target = target || {};\n target.target = target.target || this._target;\n target.query = target.query || this._query;\n const context = this;\n const url = this.getUrl({\n pathname: \"WsEcl/submit/query/\" + target.target + \"/\" + target.query + \"/json\"\n });\n return this.jsonp(url, request).then(function (response: any) {\n let _response = locateRoxieResponse(response);\n if (!_response) {\n _response = locateRoxieException(response);\n }\n response = _response;\n\n // Check for exceptions\n if (response.Exception) {\n throw Error(response.Exception.reduce(function (previousValue, exception, index, array) {\n if (previousValue.length) {\n previousValue += \"\\n\";\n }\n return previousValue + exception.Source + \" \" + exception.Code + \": \" + exception.Message;\n }, \"\"));\n }\n // Remove \"response.result.Row\"\n for (const key in response) {\n if (response[key].Row) {\n response[key] = response[key].Row.map(espRowFix);\n }\n }\n context._mappings.mapResponse(response);\n if (callback) {\n console.error(\"Deprecated: callback, use promise (WsECL.prototype.call)\");\n callback(response);\n }\n return response;\n });\n }\n\n send(request, callback) {\n return this.call({ target: this._target, query: this._query }, request, callback);\n }\n}\n\nexport class WsWorkunits extends Comms {\n\n protected _wuid = \"\";\n protected _jobname = \"\";\n protected _sequence = null;\n protected _resultName = null;\n\n protected _fetchResultNamesPromise = null;\n protected _fetchResultPromise = {};\n protected _resultNameCache = {};\n protected _resultNameCacheCount = 0;\n protected _total;\n\n constructor() {\n super();\n this._port = \"8010\";\n }\n\n url(_?) {\n const retVal = Comms.prototype.url.apply(this, arguments);\n if (arguments.length) {\n // http://localhost:8010/WsWorkunit/WuResult?Wuid=xxx&ResultName=yyy\n for (const key in this._params) {\n switch (key) {\n case \"Wuid\":\n this.wuid(this._params[key]);\n break;\n case \"ResultName\":\n this.resultName(this._params[key]);\n break;\n case \"Sequence\":\n this.sequence(this._params[key]);\n break;\n }\n }\n if (!this._wuid) {\n // http://localhost:8010/WsWorkunits/res/W20140922-213329/c:/temp/index.html\n const urlParts = this._url.split(\"/res/\");\n if (urlParts.length >= 2) {\n const urlParts2 = urlParts[1].split(\"/\");\n this.wuid(urlParts2[0]);\n }\n }\n }\n return retVal;\n }\n\n wuid(_?) {\n if (!arguments.length) return this._wuid;\n this._wuid = _;\n return this;\n }\n\n jobname(_?) {\n if (!arguments.length) return this._jobname;\n this._jobname = _;\n return this;\n }\n\n sequence(_?) {\n if (!arguments.length) return this._sequence;\n this._sequence = _;\n return this;\n }\n\n resultName(_?) {\n if (!arguments.length) return this._resultName;\n this._resultName = _;\n return this;\n }\n\n appendParam(label, value, params) {\n if (value) {\n if (params) {\n params += \"&\";\n }\n return params + label + \"=\" + value;\n }\n return params;\n }\n\n constructUrl() {\n const url = Comms.prototype.getUrl.call(this, {\n pathname: \"WsWorkunits/res/\" + this._wuid + \"/\"\n });\n let params = \"\";\n params = this.appendParam(\"ResultName\", this._resultName, params);\n return url + (params ? \"?\" + params : \"\");\n }\n\n _fetchResult(target, callback, skipMapping) {\n target = target || {};\n if (!this._fetchResultPromise[target.resultname]) {\n target._start = target._start || 0;\n target._count = target._count || -1;\n const url = this.getUrl({\n pathname: \"WsWorkunits/WUResult.json\"\n });\n const request = {\n Wuid: target.wuid,\n ResultName: target.resultname,\n SuppressXmlSchema: true,\n Start: target._start,\n Count: target._count\n };\n this._resultNameCache[target.resultname] = {};\n const context = this;\n this._fetchResultPromise[target.resultname] = this.jsonp(url, request).then(function (response: any) {\n // Remove \"xxxResponse.Result\"\n for (const key in response) {\n if (!response[key].Result) {\n throw new Error(\"No result found.\");\n }\n context._total = response[key].Total;\n response = response[key].Result;\n for (const responseKey in response) {\n response = response[responseKey].Row.map(espRowFix);\n break;\n }\n break;\n }\n context._resultNameCache[target.resultname] = response;\n if (!skipMapping) {\n context._mappings.mapResult(context._resultNameCache, target.resultname);\n }\n if (callback) {\n console.error(\"Deprecated: callback, use promise (WsWorkunits.prototype._fetchResult)\");\n callback(context._resultNameCache[target.resultname]);\n }\n return context._resultNameCache[target.resultname];\n });\n }\n return this._fetchResultPromise[target.resultname];\n }\n\n fetchResult(target, callback, skipMapping) {\n if (target.wuid) {\n return this._fetchResult(target, callback, skipMapping);\n } else if (target.jobname) {\n const context = this;\n return this.WUQuery(target, function (response) {\n target.wuid = response[0].Wuid;\n return context._fetchResult(target, callback, skipMapping);\n });\n }\n }\n\n WUQuery(_request, callback) {\n const url = this.getUrl({\n pathname: \"WsWorkunits/WUQuery.json\"\n });\n const request = {\n Jobname: _request.jobname,\n Count: 1\n };\n\n this._resultNameCache = {};\n this._resultNameCacheCount = 0;\n return this.jsonp(url, request).then(function (response: any) {\n if (!Utility.exists(\"WUQueryResponse.Workunits.ECLWorkunit\", response)) {\n throw Error(\"No workunit found.\");\n }\n response = response.WUQueryResponse.Workunits.ECLWorkunit;\n if (callback) {\n console.error(\"Deprecated: callback, use promise (WsWorkunits.prototype.WUQuery)\");\n callback(response);\n }\n return response;\n });\n }\n\n fetchResultNames(callback?) {\n if (!this._fetchResultNamesPromise) {\n const url = this.getUrl({\n pathname: \"WsWorkunits/WUInfo.json\"\n });\n const request = {\n Wuid: this._wuid,\n TruncateEclTo64k: true,\n IncludeExceptions: false,\n IncludeGraphs: false,\n IncludeSourceFiles: false,\n IncludeResults: true,\n IncludeResultsViewNames: false,\n IncludeVariables: false,\n IncludeTimers: false,\n IncludeResourceURLs: false,\n IncludeDebugValues: false,\n IncludeApplicationValues: false,\n IncludeWorkflows: false,\n IncludeXmlSchemas: false,\n SuppressResultSchemas: true\n };\n\n this._resultNameCache = {};\n this._resultNameCacheCount = 0;\n const context = this;\n this._fetchResultNamesPromise = this.jsonp(url, request).then(function (response: any) {\n if (Utility.exists(\"WUInfoResponse.Workunit.Archived\", response) && response.WUInfoResponse.Workunit.Archived) {\n console.warn(\"WU is archived: \" + url + \" \" + JSON.stringify(request));\n }\n if (Utility.exists(\"WUInfoResponse.Workunit.Results.ECLResult\", response)) {\n response.WUInfoResponse.Workunit.Results.ECLResult.map(function (item) {\n context._resultNameCache[item.Name] = [];\n ++context._resultNameCacheCount;\n });\n }\n if (callback) {\n console.error(\"Deprecated: callback, use promise (WsWorkunits.prototype.fetchResultNames)\");\n callback(context._resultNameCache);\n }\n return context._resultNameCache;\n });\n }\n return this._fetchResultNamesPromise;\n }\n\n fetchResults(callback, skipMapping) {\n const context = this;\n return this.fetchResultNames().then(function (response) {\n const fetchArray = [];\n for (const key in context._resultNameCache) {\n fetchArray.push(context.fetchResult({ wuid: context._wuid, resultname: key }, null, skipMapping));\n }\n return Promise.all(fetchArray).then(function (responseArray) {\n if (callback) {\n console.error(\"Deprecated: callback, use promise (WsWorkunits.prototype.fetchResults)\");\n callback(context._resultNameCache);\n }\n return context._resultNameCache;\n });\n });\n }\n\n postFilter(request, response) {\n const retVal = {};\n for (const key in response) {\n retVal[key] = response[key].filter(function (row, idx) {\n for (const request_key in request) {\n if (row[request_key] !== undefined && request[request_key] !== undefined && row[request_key] != request[request_key]) {\n return false;\n }\n }\n return true;\n });\n }\n this._mappings.mapResponse(retVal);\n return retVal;\n }\n\n send(request, callback) {\n const context = this;\n if (!this._resultNameCacheCount) {\n this.fetchResults(function (response) {\n callback(context.postFilter(request, response));\n }, true);\n } else {\n callback(context.postFilter(request, this._resultNameCache));\n }\n }\n}\n\nfunction WsWorkunits_GetStats() {\n Comms.call(this);\n\n this._port = \"8010\";\n this._wuid = null;\n}\nWsWorkunits_GetStats.prototype = Object.create(Comms.prototype);\n\nWsWorkunits_GetStats.prototype.url = function (_) {\n const retVal = Comms.prototype.url.apply(this, arguments);\n if (arguments.length) {\n // http://localhost:8010/WsWorkunits/WUGetStats?WUID=\"xxx\"\n for (const key in this._params) {\n switch (key) {\n case \"WUID\":\n this.wuid(this._params[key]);\n break;\n }\n }\n }\n return retVal;\n};\n\nWsWorkunits_GetStats.prototype.wuid = function (_) {\n if (!arguments.length) return this._wuid;\n this._wuid = _;\n return this;\n};\n\nWsWorkunits_GetStats.prototype.constructUrl = function () {\n return Comms.prototype.getUrl.call(this, {\n pathname: \"WsWorkunits/WUGetStats?WUID=\" + this._wuid\n });\n};\n\nWsWorkunits_GetStats.prototype.send = function (request, callback) {\n const url = this.getUrl({\n pathname: \"WsWorkunits/WUGetStats.json?WUID=\" + this._wuid\n });\n return this.jsonp(url, request).then(function (response) {\n if (Utility.exists(\"WUGetStatsResponse.Statistics.WUStatisticItem\", response)) {\n if (callback) {\n console.error(\"Deprecated: callback, use promise (WsWorkunits_GetStats.prototype.send)\");\n callback(response.WUGetStatsResponse.Statistics.WUStatisticItem);\n }\n return response.WUGetStatsResponse.Statistics.WUStatisticItem;\n } else {\n if (callback) {\n console.error(\"Deprecated: callback, use promise (WsWorkunits_GetStats.prototype.send)\");\n callback([]);\n }\n return [];\n }\n });\n};\n\n// HIPIERoxie ---\nfunction HIPIERoxie() {\n Comms.call(this);\n}\nHIPIERoxie.prototype = Object.create(Comms.prototype);\n\nHIPIERoxie.prototype.fetchResults = function (request, callback) {\n const url = this.getUrl({});\n this._resultNameCache = {};\n this._resultNameCacheCount = 0;\n const context = this;\n return this.jsonp(url, request).then(function (response) {\n let _response = locateRoxieResponse(response);\n if (!_response) {\n _response = locateRoxieException(response);\n }\n response = _response;\n\n // Check for exceptions\n if (response.Exception) {\n throw Error(response.Exception.reduce(function (previousValue, exception, index, array) {\n if (previousValue.length) {\n previousValue += \"\\n\";\n }\n return previousValue + exception.Source + \" \" + exception.Code + \": \" + exception.Message;\n }, \"\"));\n }\n // Remove \"response.result.Row\"\n for (const key in response) {\n if (response[key].Row) {\n context._resultNameCache[key] = response[key].Row.map(espRowFix);\n ++context._resultNameCacheCount;\n }\n }\n if (callback) {\n console.error(\"Deprecated: callback, use promise (HIPIERoxie.prototype.fetchResults)\");\n callback(context._resultNameCache);\n }\n return context._resultNameCache;\n });\n};\n\nHIPIERoxie.prototype.fetchResult = function (name, callback) {\n const context = this;\n return new Promise(function (resolve, reject) {\n if (callback) {\n console.error(\"Deprecated: callback, use promise (HIPIERoxie.prototype.fetchResult)\");\n callback(context._resultNameCache[name]);\n }\n resolve(context._resultNameCache[name]);\n });\n};\n\nHIPIERoxie.prototype.call = function (request, callback) {\n const context = this;\n return this.fetchResults(request, callback).then(function (response) {\n const retVal = {};\n for (const hipieKey in context._hipieResults) {\n const item = context._hipieResults[hipieKey];\n retVal[item.id] = response[item.from];\n }\n return retVal;\n });\n};\n\n// HIPIEWorkunit ---\nfunction HIPIEWorkunit() {\n WsWorkunits.call(this);\n}\nHIPIEWorkunit.prototype = Object.create(WsWorkunits.prototype);\n\nHIPIEWorkunit.prototype.fetchResults = function (callback) {\n const context = this;\n return WsWorkunits.prototype.fetchResultNames.call(this).then(function (response) {\n const fetchArray = [];\n for (const key in context._hipieResults) {\n const item = context._hipieResults[key];\n fetchArray.push(context.fetchResult(item.from));\n }\n return Promise.all(fetchArray).then(function (response2) {\n if (callback) {\n console.error(\"Deprecated: callback, use promise (HIPIEWorkunit.prototype.fetchResults)\");\n callback(context._resultNameCache);\n }\n return context._resultNameCache;\n });\n });\n};\n\nHIPIEWorkunit.prototype.fetchResult = function (name, callback) {\n return WsWorkunits.prototype.fetchResult.call(this, { wuid: this._wuid, resultname: name }).then(function (response) {\n if (callback) {\n console.error(\"Deprecated: callback, use promise (HIPIEWorkunit.prototype.fetchResult)\");\n callback(response);\n }\n return response;\n });\n};\n\nHIPIEWorkunit.prototype.call = function (request, callback) {\n const context = this;\n if (request.refresh || !this._resultNameCache || !this._resultNameCacheCount) {\n return this.fetchResults(callback).then(function (response) {\n return filterResults(request);\n });\n } else {\n return new Promise(function (resolve, reject) {\n resolve(filterResults(request));\n });\n }\n\n function filterResults(request2) {\n const changedFilter = {};\n for (const key in request2) {\n if (request2[key + \"_changed\"] !== undefined) {\n changedFilter[key] = {\n value: request2[key]\n };\n }\n }\n const retVal = {};\n for (const hipieKey in context._hipieResults) {\n const hipieResult = context._hipieResults[hipieKey];\n const outputFilter = {};\n for (let i = 0; i < hipieResult.filters.length; ++i) {\n const filter = hipieResult.filters[i];\n if (!filter.isRange()) {\n outputFilter[filter.fieldid] = changedFilter[filter.fieldid] || { value: undefined };\n outputFilter[filter.fieldid].filter = filter;\n }\n }\n retVal[hipieResult.id] = context._resultNameCache[hipieResult.from].filter(function (row) {\n for (const key2 in outputFilter) {\n if (!outputFilter[key2].filter.matches(row, outputFilter[key2].value)) {\n return false;\n }\n }\n return true;\n });\n }\n return retVal;\n }\n};\n\n// HIPIEDatabomb ---\nfunction HIPIEDatabomb() {\n HIPIEWorkunit.call(this);\n}\nHIPIEDatabomb.prototype = Object.create(HIPIEWorkunit.prototype);\n\nHIPIEDatabomb.prototype.databomb = function (_) {\n if (!arguments.length) return this._databomb;\n this._databomb = _;\n return this;\n};\n\nHIPIEDatabomb.prototype.databombOutput = function (from, id) {\n if (!arguments.length) return undefined;\n this._resultNameCacheCount++;\n if (this._databomb instanceof Array) {\n this._resultNameCache[from] = this._databomb.map(espRowFix);\n } else {\n this._resultNameCache[from] = this._databomb[from].map(espRowFix);\n }\n return this;\n};\n\nHIPIEDatabomb.prototype.fetchResults = function (callback) {\n const context = this;\n return new Promise(function (resolve, reject) {\n if (callback) {\n console.error(\"Deprecated: callback, use promise (HIPIEDatabomb.prototype.fetchResults)\");\n callback(context._resultNameCache);\n }\n resolve(context._resultNameCache);\n });\n};\n\nexport function createESPConnection(url) {\n url = url || document.URL;\n const testURL = new ESPUrl()\n .url(url)\n ;\n if (testURL.isWsWorkunits_GetStats()) {\n return new WsWorkunits_GetStats()\n .url(url)\n ;\n }\n if (testURL.isWsWorkunits()) {\n return new WsWorkunits()\n .url(url)\n ;\n }\n if (testURL.isWsEcl()) {\n return new WsECL()\n .url(url)\n ;\n }\n return null;\n}\n\nexport function hookJsonp(func) {\n jsonp = func;\n}\n\nexport {\n HIPIEWorkunit,\n HIPIERoxie,\n HIPIEDatabomb\n};\n","import { Utility } from \"@hpcc-js/common\";\nimport * as Comms from \"./Comms.ts\";\n\nfunction nestedRowFix(row) {\n if (row.Row && row.Row instanceof Array) {\n return row.Row.map(nestedRowFix);\n } else if (row instanceof Object) {\n for (const key in row) {\n row[key] = nestedRowFix(row[key]);\n }\n }\n return row;\n}\n\n// Basic Comms ---\nlet enableBasicCommsCache = false;\nlet basicCommsCache = {};\nfunction BasicComms() {\n Comms.Basic.call(this);\n}\nBasicComms.prototype = Object.create(Comms.Basic.prototype);\n\nBasicComms.prototype.jsonp = function (url, request) {\n const requestStr = JSON.stringify(request);\n if (enableBasicCommsCache && basicCommsCache[url] && basicCommsCache[url][requestStr]) {\n return Promise.resolve(basicCommsCache[url][requestStr]);\n }\n return Comms.Basic.prototype.jsonp.apply(this, arguments).then(function (response) {\n if (enableBasicCommsCache) {\n if (!basicCommsCache[url]) {\n basicCommsCache[url] = {};\n }\n basicCommsCache[url][requestStr] = response;\n }\n return response;\n });\n};\n\n// WsWorkunits ---\nfunction WsWorkunits(baseUrl) {\n BasicComms.call(this);\n\n this.url(baseUrl + \"WsWorkunits/\");\n}\nWsWorkunits.prototype = Object.create(BasicComms.prototype);\n\nWsWorkunits.prototype.wuQuery = function (options) {\n const url = this.getUrl({\n pathname: \"WsWorkunits/WUQuery.json\"\n });\n const request = {\n Wuid: \"\",\n Type: \"\",\n Cluster: \"\",\n RoxieCluster: \"\",\n Owner: \"\",\n State: \"\",\n StartDate: \"\",\n EndDate: \"\",\n ECL: \"\",\n Jobname: \"\",\n LogicalFile: \"\",\n LogicalFileSearchType: \"\",\n /*\n ApplicationValues>\n ApplicationValue>\n Application: \"\",\n Name: \"\",\n Value: \"\",\n /ApplicationValue>\n /ApplicationValues>\n */\n After: \"\",\n Before: \"\",\n Count: \"\",\n PageSize: 100,\n PageStartFrom: 0,\n PageEndAt: \"\",\n LastNDays: \"\",\n Sortby: \"\",\n Descending: 0,\n CacheHint: \"\"\n };\n for (const key in options) {\n request[key] = options[key];\n }\n return this.jsonp(url, request).then(function (response) {\n if (response.WUQueryResponse && response.WUQueryResponse.Workunits) {\n return response.WUQueryResponse.Workunits.ECLWorkunit;\n }\n return [];\n });\n};\n\n// Workunit ---\nfunction Workunit(baseUrl, wuid) {\n BasicComms.call(this);\n\n this.url(baseUrl + \"WsWorkunits/\");\n this._wuid = wuid;\n}\nWorkunit.prototype = Object.create(BasicComms.prototype);\n\nWorkunit.prototype.wuInfo = function (options) {\n const url = this.getUrl({\n pathname: \"WsWorkunits/WUInfo.json\"\n });\n const request = {\n Wuid: this._wuid,\n TruncateEclTo64k: true,\n IncludeExceptions: false,\n IncludeGraphs: false,\n IncludeSourceFiles: false,\n IncludeResults: false,\n IncludeResultsViewNames: false,\n IncludeVariables: false,\n IncludeTimers: false,\n IncludeResourceURLs: false,\n IncludeDebugValues: false,\n IncludeApplicationValues: false,\n IncludeWorkflows: false,\n IncludeXmlSchemas: false,\n SuppressResultSchemas: true\n };\n for (const key in options) {\n request[key] = options[key];\n }\n return this.jsonp(url, request).then(function (response) {\n if (enableBasicCommsCache) {\n const retVal = { WUInfoResponse: { Workunit: {} } };\n for (const key in options) {\n const includeKey = key.substring(7);\n retVal.WUInfoResponse.Workunit[includeKey] = response.WUInfoResponse.Workunit[includeKey];\n }\n basicCommsCache[url][JSON.stringify(request)] = retVal;\n }\n return response;\n });\n};\n\nWorkunit.prototype.wuUpdate = function (options) {\n const url = this.getUrl({\n pathname: \"WsWorkunits/WUUpdate.json\"\n });\n const request = {\n Wuid: this._wuid\n };\n for (const key in options) {\n request[key] = options[key];\n }\n return this.post(url, request);\n};\n\nWorkunit.prototype.appData = function (appID, key, _) {\n if (arguments.length === 2) {\n return this.wuInfo({\n IncludeApplicationValues: true\n }).then(function (response) {\n let persistString;\n if (response.WUInfoResponse && response.WUInfoResponse.Workunit && response.WUInfoResponse.Workunit.ApplicationValues && response.WUInfoResponse.Workunit.ApplicationValues.ApplicationValue) {\n response.WUInfoResponse.Workunit.ApplicationValues.ApplicationValue.filter(function (row) {\n return row.Application === appID && row.Name === key;\n }).forEach(function (row) {\n persistString = row.Value;\n });\n }\n return persistString;\n });\n } else if (arguments.length === 3) {\n return this.wuUpdate({\n \"ApplicationValues.ApplicationValue.0.Application\": appID,\n \"ApplicationValues.ApplicationValue.0.Name\": key,\n \"ApplicationValues.ApplicationValue.0.Value\": _,\n \"ApplicationValues.ApplicationValue.itemcount\": 1\n });\n }\n};\n\nWorkunit.prototype.results = function () {\n const context = this;\n return this.wuInfo({\n IncludeResults: true\n }).then(function (response) {\n let retVal = [];\n if (Utility.exists(\"WUInfoResponse.Workunit.Results.ECLResult\", response)) {\n retVal = response.WUInfoResponse.Workunit.Results.ECLResult.map(function (result) {\n return new WUResult(context.getUrl({ pathname: \"WsWorkunits/\" }), context._wuid, result.Name);\n });\n }\n return retVal;\n });\n};\n\nWorkunit.prototype.result = function (dataSource, resultName) {\n dataSource = dataSource || this._wuid;\n return createResult(dataSource, resultName);\n};\n\n// Workunit Result ---\nfunction WUResult(baseUrl, wuid, name) {\n BasicComms.call(this);\n this.url(baseUrl + \"WUResult.json\");\n this._wuid = wuid;\n this._name = name;\n this._xmlSchema = null;\n}\nWUResult.prototype = Object.create(BasicComms.prototype);\n\nWUResult.prototype.wuid = function (_) {\n if (!arguments.length) return this._wuid;\n this._wuid = _;\n return this;\n};\n\nWUResult.prototype.name = function (_) {\n if (!arguments.length) return this._name;\n this._name = _;\n return this;\n};\n\nWUResult.prototype.query = function (options, filter) {\n options = options || {};\n filter = filter || {};\n const request = {\n Wuid: this._wuid,\n ResultName: this._name,\n SuppressXmlSchema: true,\n Start: 0,\n Count: -1\n };\n for (const key in options) {\n request[key] = options[key];\n }\n let filterIdx = 0;\n for (const fKey in filter) {\n request[\"FilterBy.NamedValue.\" + filterIdx + \".Name\"] = fKey;\n request[\"FilterBy.NamedValue.\" + filterIdx + \".Value\"] = filter[fKey];\n ++filterIdx;\n }\n if (filterIdx) {\n request[\"FilterBy.NamedValue.itemcount\"] = filterIdx;\n }\n const context = this;\n return this.jsonp(this.url(), request).then(function (response) {\n if (response.WUResultResponse &&\n response.WUResultResponse.Result &&\n response.WUResultResponse.Result[context._name]) {\n if (enableBasicCommsCache) {\n basicCommsCache[context.url()][JSON.stringify(request)] = {\n WUResultResponse: {\n Result: response.WUResultResponse.Result\n }\n };\n }\n context._xmlSchema = response.WUResultResponse.Result.XmlSchema;\n return nestedRowFix(response.WUResultResponse.Result[context._name]);\n }\n return [];\n });\n};\n\n// Logical File ---\nfunction LogicalFile(baseUrl, logicalName) {\n BasicComms.call(this);\n this.url(baseUrl + \"WUResult.json\");\n this._logicalName = logicalName;\n this._xmlSchema = null;\n}\nLogicalFile.prototype = Object.create(BasicComms.prototype);\n\nLogicalFile.prototype.query = function (options, filter) {\n options = options || {};\n filter = filter || {};\n const request = {\n Cluster: \"hthor\", // TODO: Should not be needed ---\n LogicalName: this._logicalName,\n SuppressXmlSchema: this._xmlSchema !== null,\n Start: 0,\n Count: -1\n };\n for (const key in options) {\n request[key] = options[key];\n }\n let filterIdx = 0;\n for (const fKey in filter) {\n request[\"FilterBy.NamedValue.\" + filterIdx + \".Name\"] = fKey;\n request[\"FilterBy.NamedValue.\" + filterIdx + \".Value\"] = filter[fKey];\n ++filterIdx;\n }\n if (filterIdx) {\n request[\"FilterBy.NamedValue.itemcount\"] = filterIdx;\n }\n const context = this;\n return this.jsonp(this.url(), request).then(function (response) {\n if (response.WUResultResponse &&\n response.WUResultResponse.Result &&\n response.WUResultResponse.Result.Row) {\n context._xmlSchema = response.WUResultResponse.Result.XmlSchema;\n return nestedRowFix(response.WUResultResponse.Result.Row);\n }\n return [];\n });\n};\n\n// Roxie Query ---\nfunction RoxieQuery(baseUrl, resultName) {\n BasicComms.call(this);\n const urlParts = baseUrl.split(\"/\");\n let queryName = urlParts.pop();\n if (queryName.toLowerCase() === \"json\") {\n queryName = urlParts.pop();\n }\n this._queryName = queryName;\n this._resultName = resultName;\n this.url(urlParts.join(\"/\") + \"/\" + queryName + \"/json\");\n}\nRoxieQuery.prototype = Object.create(BasicComms.prototype);\n\nfunction trimRight(str) {\n if (str && str.replace) {\n return str.replace(/ +$/, \"\");\n }\n return str;\n}\n\nfunction postFilter(results, filter) {\n return results.filter(function (row) {\n for (const key in filter) {\n if (row[key] !== undefined && trimRight(filter[key]) !== trimRight(row[key])) {\n return false;\n }\n }\n return true;\n });\n}\n\nfunction locateRoxieResponse(response) {\n // v5 and v6 compatible ---\n for (const key in response) {\n if (response[key].Row && response[key].Row instanceof Array) {\n return response;\n }\n const retVal = locateRoxieResponse(response[key]);\n if (retVal) {\n return retVal;\n }\n }\n return null;\n}\n\nRoxieQuery.prototype.query = function (options, filter) {\n options = options || {};\n filter = filter || {};\n const request = {\n };\n for (const key in options) {\n request[key] = options[key];\n }\n for (const fKey in filter) {\n request[fKey] = filter[fKey];\n }\n const context = this;\n return this.jsonp(this.url(), request).then(function (response) {\n response = locateRoxieResponse(response);\n if (response) {\n if (context._resultName) {\n if (response && response[context._resultName] && response[context._resultName].Row) {\n return nestedRowFix(postFilter(response[context._resultName].Row, filter));\n }\n } else {\n for (const key in response) {\n if (response[key].Row) {\n return nestedRowFix(postFilter(response[key].Row, filter));\n }\n }\n }\n }\n return [];\n });\n};\n\nexport function createResult(_espUrl, dataSource, resultName?) {\n const espUrl = new Comms.ESPUrl()\n .url(_espUrl)\n ;\n if (dataSource.indexOf(\"http\") === 0) {\n return new RoxieQuery(dataSource, resultName);\n } else if (dataSource.indexOf(\"~\") === 0 || dataSource.indexOf(\"::\") >= 0) {\n return new LogicalFile(espUrl.getUrl({ pathname: \"WsWorkunits/\" }), dataSource);\n } else if (dataSource) {\n return new WUResult(espUrl.getUrl({ pathname: \"WsWorkunits/\" }), dataSource, resultName);\n }\n return null;\n}\n\nexport function enableCache(_?: any): any | undefined {\n if (!arguments.length) return enableBasicCommsCache;\n enableBasicCommsCache = _;\n if (!_) {\n basicCommsCache = {};\n }\n}\nexport function cache(_?: any): any | undefined {\n if (!arguments.length) return basicCommsCache;\n basicCommsCache = _;\n}\nexport function createConnection(url) {\n url = url || document.URL;\n const testURL = new Comms.ESPUrl()\n .url(url)\n ;\n if (testURL.isWsWorkunits()) {\n const espConnection = Comms.createESPConnection(url);\n if (espConnection instanceof Comms.WsWorkunits && espConnection.wuid()) {\n return new Workunit(espConnection.getUrl({ pathname: \"\" }), espConnection.wuid())\n .url(url)\n ;\n }\n }\n return null;\n}\nexport function flattenResult(result, mappings) {\n const retVal = {\n columns: [],\n data: []\n };\n if (result && result.length) {\n const colIdx = {};\n if (mappings && mappings.length) {\n mappings.forEach(function (mapping) {\n colIdx[mapping.value.toLowerCase()] = retVal.columns.length;\n retVal.columns.push(mapping.key);\n });\n } else {\n for (const key in result[0]) {\n colIdx[key.toLowerCase()] = retVal.columns.length;\n retVal.columns.push(key);\n }\n }\n result.forEach(function (row, rowIdx) {\n const rowArr = [];\n for (const key in row) {\n if (colIdx[key.toLowerCase()] !== undefined) {\n rowArr[colIdx[key.toLowerCase()]] = row[key];\n }\n }\n retVal.data.push(rowArr);\n });\n }\n return retVal;\n}\n","'use strict';\n\nif (typeof module !== 'undefined') module.exports = simpleheat;\n\nfunction simpleheat(canvas) {\n if (!(this instanceof simpleheat)) return new simpleheat(canvas);\n\n this._canvas = canvas = typeof canvas === 'string' ? document.getElementById(canvas) : canvas;\n\n this._ctx = canvas.getContext('2d');\n this._width = canvas.width;\n this._height = canvas.height;\n\n this._max = 1;\n this._data = [];\n}\n\nsimpleheat.prototype = {\n\n defaultRadius: 25,\n\n defaultGradient: {\n 0.4: 'blue',\n 0.6: 'cyan',\n 0.7: 'lime',\n 0.8: 'yellow',\n 1.0: 'red'\n },\n\n data: function (data) {\n this._data = data;\n return this;\n },\n\n max: function (max) {\n this._max = max;\n return this;\n },\n\n add: function (point) {\n this._data.push(point);\n return this;\n },\n\n clear: function () {\n this._data = [];\n return this;\n },\n\n radius: function (r, blur) {\n blur = blur === undefined ? 15 : blur;\n\n // create a grayscale blurred circle image that we'll use for drawing points\n var circle = this._circle = this._createCanvas(),\n ctx = circle.getContext('2d'),\n r2 = this._r = r + blur;\n\n circle.width = circle.height = r2 * 2;\n\n ctx.shadowOffsetX = ctx.shadowOffsetY = r2 * 2;\n ctx.shadowBlur = blur;\n ctx.shadowColor = 'black';\n\n ctx.beginPath();\n ctx.arc(-r2, -r2, r, 0, Math.PI * 2, true);\n ctx.closePath();\n ctx.fill();\n\n return this;\n },\n\n resize: function () {\n this._width = this._canvas.width;\n this._height = this._canvas.height;\n },\n\n gradient: function (grad) {\n // create a 256x1 gradient that we'll use to turn a grayscale heatmap into a colored one\n var canvas = this._createCanvas(),\n ctx = canvas.getContext('2d'),\n gradient = ctx.createLinearGradient(0, 0, 0, 256);\n\n canvas.width = 1;\n canvas.height = 256;\n\n for (var i in grad) {\n gradient.addColorStop(+i, grad[i]);\n }\n\n ctx.fillStyle = gradient;\n ctx.fillRect(0, 0, 1, 256);\n\n this._grad = ctx.getImageData(0, 0, 1, 256).data;\n\n return this;\n },\n\n draw: function (minOpacity) {\n if (!this._circle) this.radius(this.defaultRadius);\n if (!this._grad) this.gradient(this.defaultGradient);\n\n var ctx = this._ctx;\n\n ctx.clearRect(0, 0, this._width, this._height);\n\n // draw a grayscale heatmap by putting a blurred circle at each data point\n for (var i = 0, len = this._data.length, p; i < len; i++) {\n p = this._data[i];\n ctx.globalAlpha = Math.max(p[2] / this._max, minOpacity === undefined ? 0.05 : minOpacity);\n ctx.drawImage(this._circle, p[0] - this._r, p[1] - this._r);\n }\n\n // colorize the heatmap, using opacity value of each pixel to get the right color from our gradient\n var colored = ctx.getImageData(0, 0, this._width, this._height);\n this._colorize(colored.data, this._grad);\n ctx.putImageData(colored, 0, 0);\n\n return this;\n },\n\n _colorize: function (pixels, gradient) {\n for (var i = 0, len = pixels.length, j; i < len; i += 4) {\n j = pixels[i + 3] * 4; // get gradient color from opacity value\n\n if (j) {\n pixels[i] = gradient[j];\n pixels[i + 1] = gradient[j + 1];\n pixels[i + 2] = gradient[j + 2];\n }\n }\n },\n\n _createCanvas: function () {\n if (typeof document !== 'undefined') {\n return document.createElement('canvas');\n } else {\n // create a new canvas instance in node.js\n // the canvas class needs to have a default constructor without any parameter\n return new this._canvas.constructor();\n }\n }\n};\n","import { CanvasWidget, Palette } from \"@hpcc-js/common\";\nimport * as _simpleheat from \"simpleheat\";\n\nconst simpleheat = (window as any).simpleheat || (_simpleheat && _simpleheat.default) || _simpleheat;\n\nexport class HeatMap extends CanvasWidget {\n _heat;\n\n constructor() {\n super();\n }\n\n enter(domNode, element) {\n super.enter(domNode, element);\n // canvas size needs to be set before render\n this.resize(this._size);\n this._heat = simpleheat(domNode);\n }\n\n update(domNode, element) {\n super.update(domNode, element);\n\n this._palette = this._palette.switch(this.paletteID());\n if (this.useClonedPalette()) {\n this._palette = this._palette.cloneNotExists(this.paletteID() + \"_\" + this.id());\n }\n\n if (this.topLeftX_exists() && this.topLeftY_exists() && this.bottomRightX_exists() && this.bottomRightY_exists()) {\n this._heat.data(this.skewedData());\n } else {\n this._heat.data(this.data());\n }\n\n if (this.radius()) {\n this._heat.radius(this.radius(), this.blur());\n }\n if (this.usePalette()) {\n const grad = {};\n for (let idx = 1; idx <= this.colorCount(); idx++) {\n const value = idx / this.colorCount();\n grad[value] = this._palette(idx, 1, this.colorCount());\n }\n this._heat.defaultGradient = grad;\n this._heat.gradient(grad);\n } else if (this.gradient()) {\n this._heat.defaultGradient = this.gradient();\n this._heat.gradient(this.gradient());\n }\n\n this._heat.draw();\n }\n\n exit(domNode, element) {\n delete this._heat;\n super.exit(domNode, element);\n }\n\n resize(size: any): this {\n const retVal = CanvasWidget.prototype.resize.apply(this, arguments);\n if (this._heat !== undefined) {\n this._heat.resize();\n }\n return retVal;\n }\n\n skewedData() {\n const context = this;\n const retArr = [];\n const arr = this.data();\n const box = this.size();\n\n const coordsWidth = this.bottomRightX() - this.topLeftX();\n const coordsHeight = this.bottomRightY() - this.topLeftY();\n\n const pixelValueX = coordsWidth / box.width;\n const pixelValueY = coordsHeight / box.height;\n\n arr.forEach(function (n) {\n const left = Math.abs(n[0] - context.topLeftX());\n const top = Math.abs(n[1] - context.topLeftY());\n\n const newX = left / pixelValueX;\n const newY = top / pixelValueY;\n\n retArr.push([newX, newY, n[2]]);\n });\n\n return retArr;\n }\n}\nHeatMap.prototype._class += \" other_HeatMap\";\nHeatMap.prototype._palette = Palette.rainbow(\"default\");\n\nexport interface HeatMap {\n _palette;\n\n radius(): number;\n radius(_: number): this;\n radius_exists(): boolean;\n blur(): number;\n blur(_: number): this;\n blur_exists(): boolean;\n max(): number;\n max(_: number): this;\n max_exists(): boolean;\n gradient(): object;\n gradient(_: object): this;\n gradient_exists(): boolean;\n usePalette(): boolean;\n usePalette(_: boolean): this;\n usePalette_exists(): boolean;\n colorCount(): number;\n colorCount(_: number): this;\n colorCount_exists(): boolean;\n paletteID(): string;\n paletteID(_: string): this;\n paletteID_exists(): boolean;\n useClonedPalette(): boolean;\n useClonedPalette(_: boolean): this;\n useClonedPalette_exists(): boolean;\n topLeftX(): number;\n topLeftX(_: number): this;\n topLeftX_exists(): boolean;\n topLeftY(): number;\n topLeftY(_: number): this;\n topLeftY_exists(): boolean;\n bottomRightX(): number;\n bottomRightX(_: number): this;\n bottomRightX_exists(): boolean;\n bottomRightY(): number;\n bottomRightY(_: number): this;\n bottomRightY_exists(): boolean;\n}\n\nHeatMap.prototype.publish(\"radius\", 15, \"number\", \"Set point radius\", null, { tags: [\"Basic\"] });\nHeatMap.prototype.publish(\"blur\", 15, \"number\", \"Set point blur\", null, { tags: [\"Basic\"] });\nHeatMap.prototype.publish(\"max\", 1, \"number\", \"Set max data value\", null, { tags: [\"Basic\"] });\n\nHeatMap.prototype.publish(\"gradient\", { 0.4: \"blue\", 0.6: \"cyan\", 0.7: \"lime\", 0.8: \"yellow\", 1.0: \"red\" }, \"object\", \"Set gradient colors\", null, { tags: [\"Basic\"] });\n\nHeatMap.prototype.publish(\"usePalette\", false, \"boolean\", \"If true, uses paletteID and colorCount to determine gradient\", null, { tags: [\"Basic\"] });\n\nHeatMap.prototype.publish(\"colorCount\", 10, \"number\", \"Top left x-value\", null, { tags: [\"Basic\"] });\nHeatMap.prototype.publish(\"paletteID\", \"default\", \"set\", \"Color palette for this widget\", HeatMap.prototype._palette.switch(), { tags: [\"Basic\"] });\nHeatMap.prototype.publish(\"useClonedPalette\", false, \"boolean\", \"Enable or disable using a cloned palette\", null, { tags: [\"Intermediate\", \"Shared\"] });\n\nHeatMap.prototype.publish(\"topLeftX\", null, \"number\", \"Top left x-value\", null, { tags: [\"Basic\"], optional: true });\nHeatMap.prototype.publish(\"topLeftY\", null, \"number\", \"Top left y-value\", null, { tags: [\"Basic\"], optional: true });\nHeatMap.prototype.publish(\"bottomRightX\", null, \"number\", \"Bottom right x-value\", null, { tags: [\"Basic\"], optional: true });\nHeatMap.prototype.publish(\"bottomRightY\", null, \"number\", \"Bottom right y-value\", null, { tags: [\"Basic\"], optional: true });\n","import { SVGWidget } from \"@hpcc-js/common\";\n\nexport class HPCCBadge extends SVGWidget {\n protected root;\n protected logo;\n protected logo_accent;\n protected logo_circles;\n protected line;\n protected circle_1;\n protected circle_2;\n protected circle_3;\n protected circle_4;\n protected circle_5;\n protected circle_6;\n protected circle_7;\n protected circle_8;\n protected circle_accent;\n protected text;\n protected text_hpccsystems;\n protected text_r;\n protected text_tm;\n\n constructor() {\n super();\n }\n\n testData(domNode, element) {\n return this;\n }\n\n enter(domNode, element) {\n super.enter(domNode, element);\n\n this.root = element.append(\"g\");\n this.logo = this.root.append(\"g\");\n this.logo_accent = this.root.append(\"g\");\n this.line = this.logo_accent.append(\"path\")\n .attr(\"fill-rule\", \"evenodd\")\n .attr(\"clip-rule\", \"evenodd\")\n .attr(\"fill\", \"#179BD7\")\n .attr(\"d\", \"m 189.38849,364.55373 c 191.6,3.8 0,0 191.6,3.8 l 0.1,-4.2 c -191.7,0.4 0,0 -191.7,0.4 z\")\n ;\n this.circle_accent = this.logo_accent.append(\"path\")\n .attr(\"fill-rule\", \"evenodd\")\n .attr(\"clip-rule\", \"evenodd\")\n .attr(\"fill\", \"#6E6E73\")\n .attr(\"d\", \"M421.3,354.2c6.9,6.9,3.1,18.7-8.6,26.1c-11.8,7.4-26.3,6.9-32.1-0.6c-5.5-7.2-1.1-18.2,9.6-25C401,348,414.7,347.6,421.3,354.2z\")\n ;\n this.logo_circles = this.logo.append(\"g\");\n this.circle_1 = this.logo_circles.append(\"path\")\n .attr(\"fill-rule\", \"evenodd\")\n .attr(\"clip-rule\", \"evenodd\")\n .attr(\"fill\", \"#179BD7\")\n .attr(\"d\", \"m 258.9815,363.84947 c 1.3,-3 1.5,-5.9 0.4,-8.1 -2.6,-5.4 -11.8,-5.1 -20.6,0.4 -3.5,2.2 -6.5,4.9 -8.7,7.8 -0.11933,0.35821 -0.39477,0.60735 -0.6,0.9 -2.9,4.1 -4.2,8.3 -3,11.6 2.1,6 11.4,6.3 20.9,0.4 5,-3.2 8.9,-7.3 11,-11.4 -0.59813,0.54778 0.47385,-1.28911 0.6,-1.6 z\")\n ;\n this.circle_2 = this.logo_circles.append(\"path\")\n .attr(\"fill-rule\", \"evenodd\")\n .attr(\"clip-rule\", \"evenodd\")\n .attr(\"fill\", \"#179BD7\")\n .attr(\"d\", \"M291.3,349.3c9.5-5.9,14.1-15,10.5-20c-3.5-4.8-13.3-4.2-22.1,1.3c-8.8,5.5-13.7,14.1-10.9,19.3C271.7,355.4,281.9,355.2,291.3,349.3z\")\n ;\n this.circle_3 = this.logo_circles.append(\"path\")\n .attr(\"fill-rule\", \"evenodd\")\n .attr(\"clip-rule\", \"evenodd\")\n .attr(\"fill\", \"#179BD7\")\n .attr(\"d\", \"M335.3,321.7c9.5-5.9,13.3-14.5,8.9-19c-4.3-4.3-14.8-3.2-23.6,2.3c-8.8,5.5-13.1,13.7-9.4,18.4C315,328.3,325.9,327.7,335.3,321.7z\")\n ;\n this.circle_4 = this.logo_circles.append(\"path\")\n .attr(\"fill-rule\", \"evenodd\")\n .attr(\"clip-rule\", \"evenodd\")\n .attr(\"fill\", \"#179BD7\")\n .attr(\"d\", \"M273.2,384c-3.2-6.5-13.5-6.7-23.2-0.7c-9.7,6-15.6,16.4-13.2,23.4c2.5,7.3,13.1,8.2,23.6,1.7 C270.8,401.9,276.5,390.8,273.2,384z\")\n ;\n this.circle_5 = this.logo_circles.append(\"path\")\n .attr(\"fill-rule\", \"evenodd\")\n .attr(\"clip-rule\", \"evenodd\")\n .attr(\"fill\", \"#179BD7\")\n .attr(\"d\", \"m 320.84499,363.83119 c 1,-3.4 0.8,-6.6 -1,-9.1 -4.2,-5.9 -15.3,-5.6 -25,0.5 -3.89999,2.4 -7.09999,5.5 -9.19999,8.7 -1.18854,2.2092 -0.0404,-0.09 -1.2,2.2 -2.2,4.1 -2.7,8.3 -0.9,11.5 3.6,6.7 15.09999,7 25.59999,0.5 5,-3.2 8.7,-7.2 10.7,-11.3 0.95557,-2.97582 0.0423,0.0306 1,-3 z\")\n ;\n this.circle_6 = this.logo_circles.append(\"path\")\n .attr(\"fill-rule\", \"evenodd\")\n .attr(\"clip-rule\", \"evenodd\")\n .attr(\"fill\", \"#179BD7\")\n .attr(\"d\", \"M330.4,348.2c4.6,6,17,5.8,27.5-0.8c10.5-6.6,14.3-16.5,8.9-22c-5.2-5.3-17.1-4.4-26.8,1.6C330.3,333.1,325.9,342.4,330.4,348.2z\")\n ;\n this.circle_7 = this.logo_circles.append(\"path\")\n .attr(\"fill-rule\", \"evenodd\")\n .attr(\"clip-rule\", \"evenodd\")\n .attr(\"fill\", \"#179BD7\")\n .attr(\"d\", \"M264.1,417.4c-10.8,6.7-17.2,19-14.2,27.8c3.2,9.2,15.4,11.1,27.2,3.7c11.8-7.4,17.8-20.6,13.6-29.2C286.6,411.6,274.8,410.7,264.1,417.4z\")\n ;\n this.circle_8 = this.logo_circles.append(\"path\")\n .attr(\"fill-rule\", \"evenodd\")\n .attr(\"clip-rule\", \"evenodd\")\n .attr(\"fill\", \"#179BD7\")\n .attr(\"d\", \"M314.2,386.1c-10.8,6.7-16.2,18.4-11.9,26.4c4.5,8.4,17.8,9.5,29.6,2.2c11.8-7.4,16.6-19.9,11.1-27.7C337.7,379.6,324.9,379.3,314.2,386.1z\")\n ;\n\n // Text ---\n this.text = this.root.append(\"g\");\n this.text_hpccsystems = this.text.append(\"path\")\n .attr(\"fill\", \"#6E6E73\")\n .attr(\"d\", \"M224.2,476.3c0.1-1.3,0.1-2.7,0.2-4.1c-0.3,0-0.5,0.1-0.8,0.1c-0.3,0-0.5,0-0.8,0c-0.3,0-0.5,0-0.8,0c-0.3,0-0.5-0.1-0.8-0.1c0.1,1.4,0.1,2.8,0.2,4.1c0.1,1.3,0.1,2.7,0.1,4.1v1.1c-1.1,0-2.3,0-3.3,0.1c-1.1,0-2.2,0-3.3,0c-1.1,0-2.3,0-3.3,0c-1.1,0-2.2,0-3.3-0.1v-1.1c0-1.4,0-2.8,0.1-4.1c0.1-1.3,0.1-2.7,0.2-4.1c-0.3,0-0.5,0.1-0.8,0.1c-0.3,0-0.5,0-0.8,0c-0.3,0-0.5,0-0.8,0c-0.3,0-0.5-0.1-0.8-0.1c0.1,1.4,0.1,2.8,0.2,4.1c0.1,1.3,0.1,2.7,0.1,4.1v5.5c0,1.4,0,2.8-0.1,4.1c-0.1,1.4-0.1,2.7-0.2,4c0.5,0,1-0.1,1.6-0.1c0.6,0,1.1,0,1.6,0.1c-0.1-1.3-0.1-2.7-0.2-4c-0.1-1.4-0.1-2.7-0.1-4.1v-2.9c1.1,0,2.3,0,3.3,0c1.1,0,2.2,0,3.3,0c1.1,0,2.3,0,3.3,0c1.1,0,2.2,0,3.3,0v2.9c0,1.4,0,2.8-0.1,4.1c-0.1,1.4-0.1,2.7-0.2,4c0.5,0,1-0.1,1.6-0.1c0.6,0,1.1,0,1.6,0.1c-0.1-1.3-0.1-2.7-0.2-4c-0.1-1.4-0.1-2.7-0.1-4.1v-5.5C224.1,479,224.1,477.7,224.2,476.3z M242.7,473.8c-0.4-0.4-0.9-0.7-1.4-0.9c-0.5-0.2-1-0.4-1.5-0.5c-0.5-0.1-1-0.2-1.5-0.2c-0.5,0-0.9,0-1.2,0c-0.2,0-0.5,0-0.9,0c-0.3,0-0.7,0-1.1,0c-0.4,0-0.7,0-1.1,0c-0.4,0-0.7,0-0.9,0c-0.5,0-1,0-1.5,0c-0.5,0-1-0.1-1.5-0.1c0.1,1.4,0.1,2.8,0.2,4.1c0.1,1.3,0.1,2.7,0.1,4.1v5.5c0,1.4,0,2.8-0.1,4.1c-0.1,1.4-0.1,2.7-0.2,4c0.5,0,1-0.1,1.6-0.1c0.6,0,1.1,0,1.6,0.1c-0.1-1.3-0.1-2.7-0.2-4c-0.1-1.4-0.1-2.7-0.1-4.1v-1.8c0.4,0,0.8,0.1,1.2,0.1c0.4,0,0.8,0,1.3,0c0.8,0,1.6-0.1,2.6-0.3c1-0.2,1.9-0.5,2.8-1c0.9-0.5,1.6-1.2,2.2-2c0.6-0.9,0.9-2,0.9-3.4c0-0.9-0.1-1.6-0.4-2.2C243.5,474.7,243.1,474.2,242.7,473.8z M240.6,480.4c-0.4,0.7-0.9,1.2-1.4,1.6c-0.6,0.4-1.2,0.7-1.9,0.8c-0.7,0.1-1.4,0.2-2,0.2c-0.8,0-1.5-0.1-2.3-0.3v-9.5h2.9c0.8,0,1.6,0.1,2.2,0.2c0.7,0.1,1.2,0.3,1.7,0.7c0.5,0.3,0.8,0.8,1.1,1.3c0.3,0.6,0.4,1.3,0.4,2.2C241.2,478.8,241,479.7,240.6,480.4z M251.9,475.4c0.8-0.8,1.7-1.5,2.8-1.9c1.1-0.4,2.2-0.6,3.5-0.6c0.8,0,1.5,0.1,2.1,0.3c0.6,0.2,1.2,0.5,1.7,0.7c0.5,0.3,1,0.6,1.3,0.9c0.4,0.3,0.7,0.6,0.9,0.9l0.2-0.1c0.1-0.3,0.1-0.8,0.3-1.3c0.1-0.5,0.2-0.9,0.4-1.2c-0.9-0.4-1.9-0.7-3.1-1c-1.2-0.3-2.4-0.4-3.8-0.4c-1.8,0-3.4,0.3-4.8,0.8c-1.5,0.5-2.7,1.3-3.8,2.2c-1.1,1-1.9,2.2-2.5,3.6c-0.6,1.4-0.9,3-0.9,4.8c0,1.8,0.3,3.4,0.9,4.8c0.6,1.4,1.4,2.6,2.4,3.6c1,1,2.3,1.7,3.7,2.2c1.4,0.5,3,0.7,4.7,0.7c0.8,0,1.5-0.1,2.3-0.2c0.7-0.1,1.4-0.3,2-0.4c0.6-0.2,1.1-0.3,1.5-0.5c0.4-0.2,0.7-0.4,0.9-0.6l0.3-1.9l-0.1-0.1c-0.3,0.2-0.7,0.5-1.1,0.8c-0.4,0.3-0.9,0.6-1.5,0.9c-0.5,0.3-1.1,0.5-1.8,0.7c-0.6,0.2-1.4,0.3-2.1,0.3c-1.3,0-2.4-0.2-3.5-0.6c-1.1-0.4-2-1-2.8-1.9c-0.8-0.8-1.4-1.9-1.9-3.2c-0.4-1.3-0.7-2.8-0.7-4.6c0-1.8,0.2-3.3,0.7-4.6 C250.5,477.3,251.1,476.3,251.9,475.4z M273.2,475.4c0.8-0.8,1.7-1.5,2.8-1.9c1.1-0.4,2.2-0.6,3.5-0.6c0.8,0,1.5,0.1,2.1,0.3c0.6,0.2,1.2,0.5,1.7,0.7c0.5,0.3,1,0.6,1.3,0.9c0.4,0.3,0.7,0.6,0.9,0.9l0.2-0.1c0.1-0.3,0.1-0.8,0.3-1.3c0.1-0.5,0.2-0.9,0.4-1.2c-0.9-0.4-1.9-0.7-3.1-1c-1.2-0.3-2.4-0.4-3.8-0.4c-1.8,0-3.4,0.3-4.8,0.8c-1.5,0.5-2.7,1.3-3.8,2.2c-1.1,1-1.9,2.2-2.5,3.6c-0.6,1.4-0.9,3-0.9,4.8c0,1.8,0.3,3.4,0.9,4.8c0.6,1.4,1.4,2.6,2.4,3.6c1,1,2.3,1.7,3.7,2.2c1.4,0.5,3,0.7,4.7,0.7c0.8,0,1.5-0.1,2.3-0.2c0.7-0.1,1.4-0.3,2-0.4c0.6-0.2,1.1-0.3,1.5-0.5c0.4-0.2,0.7-0.4,0.9-0.6l0.3-1.9l-0.1-0.1c-0.3,0.2-0.7,0.5-1.1,0.8c-0.4,0.3-0.9,0.6-1.5,0.9c-0.5,0.3-1.1,0.5-1.8,0.7c-0.6,0.2-1.4,0.3-2.1,0.3c-1.3,0-2.4-0.2-3.5-0.6c-1.1-0.4-2-1-2.8-1.9c-0.8-0.8-1.4-1.9-1.9-3.2c-0.4-1.3-0.7-2.8-0.7-4.6c0-1.8,0.2-3.3,0.7-4.6 C271.8,477.3,272.4,476.3,273.2,475.4z M308.2,482.9c-0.7-0.4-1.5-0.8-2.4-1.1c-0.9-0.3-1.7-0.7-2.4-1.1c-0.7-0.4-1.4-0.9-1.9-1.5c-0.5-0.6-0.7-1.4-0.7-2.4c0-0.6,0.1-1.1,0.3-1.6c0.2-0.5,0.5-0.9,0.9-1.3c0.4-0.4,0.8-0.6,1.3-0.8c0.5-0.2,1-0.3,1.6-0.3c0.6,0,1.1,0.1,1.5,0.3c0.4,0.2,0.8,0.5,1.1,0.7c0.3,0.3,0.6,0.6,0.7,1c0.2,0.4,0.3,0.7,0.4,1h0.4c0.1-0.6,0.3-1.1,0.4-1.5c0.1-0.4,0.3-0.8,0.5-1.1c-0.6-0.5-1.3-0.9-2.1-1.1c-0.7-0.2-1.6-0.4-2.6-0.4c-1.1,0-2,0.1-2.9,0.4c-0.9,0.3-1.6,0.7-2.2,1.2c-0.6,0.5-1.1,1.2-1.4,1.9c-0.3,0.7-0.5,1.5-0.5,2.4c0,1.3,0.2,2.3,0.7,3c0.5,0.7,1.1,1.4,1.9,1.8c0.7,0.5,1.5,0.9,2.4,1.2c0.9,0.3,1.7,0.7,2.4,1.1c0.7,0.4,1.4,0.9,1.9,1.4c0.5,0.6,0.7,1.3,0.7,2.3c0,0.6-0.1,1.2-0.3,1.8c-0.2,0.6-0.5,1.1-0.9,1.5c-0.4,0.4-0.9,0.7-1.4,1c-0.6,0.2-1.2,0.4-1.9,0.4c-0.7,0-1.3-0.1-1.8-0.3c-0.6-0.2-1-0.5-1.5-0.8c-0.4-0.3-0.8-0.7-1.1-1.1c-0.3-0.4-0.5-0.8-0.7-1.2h-0.4c-0.1,0.6-0.1,1.1-0.2,1.5c-0.1,0.4-0.2,0.8-0.4,1.3c0.6,0.4,1.2,0.8,2.1,1.2c0.8,0.4,1.9,0.5,3.2,0.5c1.2,0,2.3-0.2,3.3-0.5c1-0.4,1.8-0.8,2.5-1.5c0.7-0.6,1.2-1.4,1.5-2.3c0.4-0.9,0.5-1.8,0.5-2.8c0-1.2-0.2-2.1-0.7-2.8C309.6,483.9,309,483.3,308.2,482.9z M328.6,472.2c-0.4,0.9-0.9,1.9-1.4,2.8c-0.5,1-1,1.9-1.5,2.9c-0.5,1-1.1,1.9-1.6,2.8c-0.5,0.9-1,1.8-1.5,2.5c-1.1-1.9-2.2-3.8-3.1-5.6c-1-1.8-2-3.6-2.9-5.5c-0.3,0-0.6,0.1-0.9,0.1c-0.3,0-0.6,0-0.9,0c-0.3,0-0.6,0-0.9,0c-0.3,0-0.6-0.1-0.9-0.1c0.2,0.3,0.5,0.8,0.9,1.5c0.4,0.7,0.9,1.4,1.4,2.3c0.5,0.8,1,1.7,1.6,2.6c0.6,0.9,1.1,1.8,1.6,2.6c0.5,0.8,1,1.6,1.4,2.3c0.4,0.7,0.7,1.2,0.9,1.6c0,1.7,0,3.4,0,4.9c0,1.6-0.1,2.9-0.2,4c0.5,0,1-0.1,1.6-0.1c0.6,0,1.1,0,1.6,0.1c0-0.4-0.1-1-0.1-1.8c0-0.7-0.1-1.5-0.1-2.4c0-0.9,0-1.7,0-2.6c0-0.9,0-1.7,0-2.5c0.3-0.7,0.7-1.4,1.2-2.2c0.5-0.8,1-1.7,1.6-2.8c0.6-1,1.3-2.2,2.1-3.4c0.8-1.3,1.7-2.7,2.7-4.2c-0.5,0.1-0.9,0.2-1.2,0.2C329.5,472.3,329.1,472.3,328.6,472.2z M343.6,482.9c-0.7-0.4-1.5-0.8-2.4-1.1c-0.9-0.3-1.7-0.7-2.4-1.1c-0.7-0.4-1.4-0.9-1.9-1.5c-0.5-0.6-0.7-1.4-0.7-2.4c0-0.6,0.1-1.1,0.3-1.6c0.2-0.5,0.5-0.9,0.9-1.3c0.4-0.4,0.8-0.6,1.3-0.8c0.5-0.2,1-0.3,1.6-0.3c0.6,0,1.1,0.1,1.5,0.3c0.4,0.2,0.8,0.5,1.1,0.7c0.3,0.3,0.6,0.6,0.7,1c0.2,0.4,0.3,0.7,0.4,1h0.4c0.1-0.6,0.3-1.1,0.4-1.5c0.1-0.4,0.3-0.8,0.5-1.1c-0.6-0.5-1.3-0.9-2.1-1.1c-0.7-0.2-1.6-0.4-2.6-0.4c-1.1,0-2,0.1-2.9,0.4c-0.9,0.3-1.6,0.7-2.2,1.2c-0.6,0.5-1.1,1.2-1.4,1.9c-0.3,0.7-0.5,1.5-0.5,2.4c0,1.3,0.2,2.3,0.7,3c0.5,0.7,1.1,1.4,1.9,1.8c0.7,0.5,1.5,0.9,2.4,1.2c0.9,0.3,1.7,0.7,2.4,1.1c0.7,0.4,1.4,0.9,1.9,1.4c0.5,0.6,0.7,1.3,0.7,2.3c0,0.6-0.1,1.2-0.3,1.8c-0.2,0.6-0.5,1.1-0.9,1.5c-0.4,0.4-0.9,0.7-1.4,1c-0.6,0.2-1.2,0.4-1.9,0.4c-0.7,0-1.3-0.1-1.8-0.3c-0.6-0.2-1-0.5-1.5-0.8c-0.4-0.3-0.8-0.7-1.1-1.1c-0.3-0.4-0.5-0.8-0.7-1.2h-0.4c-0.1,0.6-0.1,1.1-0.2,1.5c-0.1,0.4-0.2,0.8-0.4,1.3c0.6,0.4,1.2,0.8,2.1,1.2c0.8,0.4,1.9,0.5,3.2,0.5c1.2,0,2.3-0.2,3.3-0.5c1-0.4,1.8-0.8,2.5-1.5c0.7-0.6,1.2-1.4,1.5-2.3c0.4-0.9,0.5-1.8,0.5-2.8c0-1.2-0.2-2.1-0.7-2.8C345,483.9,344.4,483.3,343.6,482.9z M360.7,472.3c-1.3,0-2.7,0-4.1,0c-1.4,0-2.8,0-4.1,0c-1.3,0-2.7-0.1-4.1-0.1c0.1,0.4,0.2,0.8,0.2,1c0,0.3-0.1,0.6-0.2,1c0.4-0.1,1-0.1,1.5-0.2c0.6,0,1.1-0.1,1.8-0.1c0.6,0,1.2-0.1,1.8-0.1c0.6,0,1.2,0,1.7,0c0.1,2.2,0.1,4.4,0.1,6.6v5.5c0,1.4,0,2.8-0.1,4.1c-0.1,1.4-0.1,2.7-0.2,4c0.5,0,1-0.1,1.6-0.1c0.6,0,1.1,0,1.6,0.1c-0.1-1.3-0.1-2.7-0.2-4c-0.1-1.4-0.1-2.7-0.1-4.1v-5.5c0-2.2,0-4.4,0.1-6.6c0.6,0,1.1,0,1.7,0c0.6,0,1.2,0,1.8,0.1c0.6,0,1.2,0.1,1.8,0.1c0.6,0,1.1,0.1,1.5,0.2c-0.1-0.4-0.2-0.7-0.2-1c0-0.3,0.1-0.6,0.2-1C363.4,472.2,362,472.3,360.7,472.3z M379.8,492.3c-0.5,0.1-1.1,0.2-1.8,0.2c-0.7,0.1-1.4,0.1-2.2,0.1c-0.8,0-1.6,0-2.4,0h-2.2c0-0.4,0-1,0-1.8c0-0.8,0-1.8,0-3v-3.2c0-0.3,0-0.6,0-0.8c0-0.2,0-0.4,0-0.6c0.4,0,0.9,0,1.5,0c0.6,0,1.3,0,2.1,0c0.7,0,1.5,0,2.2,0.1c0.7,0,1.4,0.1,1.9,0.2c-0.1-0.3-0.1-0.6-0.1-1c0-0.3,0-0.7,0.1-1c-0.5,0-1,0.1-1.5,0.1c-0.5,0-1.1,0.1-1.7,0.1c-0.6,0-1.3,0.1-2,0.1c-0.7,0-1.6,0-2.5,0c0-0.4,0-1,0-1.8c0-0.8,0-1.6,0-2.4c0-0.8,0-1.5,0-2.1c0-0.6,0.1-1.3,0.1-1.9c1,0,1.9,0,2.7,0c0.7,0,1.4,0.1,2.1,0.1c0.6,0,1.2,0.1,1.8,0.1c0.6,0,1.2,0.1,1.9,0.1c-0.1-0.3-0.1-0.6-0.1-1c0-0.3,0-0.6,0.1-1c-1,0-1.9,0.1-2.8,0.1c-0.9,0-1.9,0-2.8,0c-1,0-1.9,0-2.9,0c-0.9,0-1.9-0.1-2.9-0.1c0.1,1.4,0.1,2.7,0.2,4.1c0.1,1.4,0.1,2.7,0.1,4.1v5.5c0,1.4,0,2.8-0.1,4.1c-0.1,1.4-0.1,2.7-0.2,4.1c1,0,1.9-0.1,2.9-0.1h5.8c0.9,0,1.9,0,2.9,0.1c-0.1-0.2-0.1-0.5-0.1-0.8c0-0.1,0-0.3,0-0.5C379.7,492.6,379.8,492.4,379.8,492.3z M406.8,483.3c-0.2-1.8-0.4-3.7-0.6-5.6c-0.2-1.9-0.4-3.9-0.7-5.9h-0.4c-0.5,1-1.1,2-1.7,3.2c-0.6,1.1-1.2,2.3-1.9,3.4c-0.6,1.2-1.2,2.3-1.8,3.5c-0.6,1.1-1.2,2.2-1.7,3.2c-0.5,1-1,1.8-1.4,2.6c-0.4,0.8-0.7,1.3-0.9,1.7c-1.6-3-3.2-5.9-4.7-8.8c-1.5-2.8-3-5.8-4.4-8.8H386c-0.2,1.7-0.4,3.5-0.6,5.4c-0.2,1.9-0.5,3.8-0.8,5.7c-0.3,1.9-0.6,3.9-0.9,5.8c-0.3,1.9-0.6,3.7-0.9,5.5c0.3,0,0.7-0.1,1.1-0.1c0.4,0,0.8,0,1.1,0.1c0-0.9,0.1-1.9,0.2-3.3c0.1-1.3,0.2-2.7,0.4-4.2c0.1-1.5,0.3-3,0.5-4.6c0.2-1.5,0.3-3,0.5-4.3h0.1c1.4,2.8,2.8,5.6,4.2,8.2c1.4,2.7,2.7,5.4,4,8h0.3c1.3-2.9,2.6-5.7,4-8.3c1.4-2.6,2.9-5.3,4.3-8h0.1c0.3,2.8,0.6,5.5,0.9,8.1c0.2,2.7,0.5,5.4,0.7,8.2c0.3,0,0.5-0.1,0.7-0.1h1.5c0.2,0,0.5,0,0.7,0.1c-0.3-1.8-0.5-3.5-0.7-5.3 C407.2,486.9,407,485.1,406.8,483.3z M423.4,484.6c-0.5-0.7-1.1-1.3-1.9-1.7c-0.7-0.4-1.5-0.8-2.4-1.1c-0.9-0.3-1.7-0.7-2.4-1.1c-0.7-0.4-1.4-0.9-1.9-1.5c-0.5-0.6-0.7-1.4-0.7-2.4c0-0.6,0.1-1.1,0.3-1.6c0.2-0.5,0.5-0.9,0.9-1.3c0.4-0.4,0.8-0.6,1.3-0.8c0.5-0.2,1-0.3,1.6-0.3c0.6,0,1.1,0.1,1.5,0.3c0.4,0.2,0.8,0.5,1.1,0.7c0.3,0.3,0.6,0.6,0.7,1c0.2,0.4,0.3,0.7,0.4,1h0.4c0.1-0.6,0.3-1.1,0.4-1.5c0.1-0.4,0.3-0.8,0.5-1.1c-0.6-0.5-1.3-0.9-2.1-1.1c-0.7-0.2-1.6-0.4-2.6-0.4c-1.1,0-2,0.1-2.9,0.4c-0.9,0.3-1.6,0.7-2.2,1.2c-0.6,0.5-1.1,1.2-1.4,1.9c-0.3,0.7-0.5,1.5-0.5,2.4c0,1.3,0.2,2.3,0.7,3c0.5,0.7,1.1,1.4,1.9,1.8c0.7,0.5,1.5,0.9,2.4,1.2c0.9,0.3,1.7,0.7,2.4,1.1c0.7,0.4,1.4,0.9,1.9,1.4c0.5,0.6,0.7,1.3,0.7,2.3c0,0.6-0.1,1.2-0.3,1.8c-0.2,0.6-0.5,1.1-0.9,1.5c-0.4,0.4-0.9,0.7-1.4,1c-0.6,0.2-1.2,0.4-1.9,0.4c-0.7,0-1.3-0.1-1.8-0.3c-0.6-0.2-1-0.5-1.5-0.8c-0.4-0.3-0.8-0.7-1.1-1.1c-0.3-0.4-0.5-0.8-0.7-1.2h-0.4c-0.1,0.6-0.1,1.1-0.2,1.5c-0.1,0.4-0.2,0.8-0.4,1.3c0.6,0.4,1.2,0.8,2.1,1.2c0.8,0.4,1.9,0.5,3.2,0.5c1.2,0,2.3-0.2,3.3-0.5c1-0.4,1.8-0.8,2.5-1.5c0.7-0.6,1.2-1.4,1.5-2.3c0.4-0.9,0.5-1.8,0.5-2.8 C424.2,486.3,423.9,485.3,423.4,484.6z\")\n ;\n this.text_r = this.text.append(\"path\")\n .attr(\"fill\", \"#6E6E73\")\n .attr(\"d\", \"M433.1,472.1c2.2,0,3.9,1.8,3.9,3.9c0,2.2-1.8,3.9-3.9,3.9c-2.2,0-3.9-1.8-3.9-3.9 C429.2,473.8,430.9,472.1,433.1,472.1z M433.1,479.5c1.9,0,3.5-1.6,3.5-3.5s-1.5-3.5-3.5-3.5s-3.5,1.6-3.5,3.5 S431.2,479.5,433.1,479.5z M431.7,475c0-0.5,0-1.1-0.1-1.5c0.3,0,0.6,0.1,0.9,0.1c0.3,0,0.6-0.1,0.9-0.1c0.8,0,1.4,0.4,1.4,1.1c0,0.9-1,1.3-1.5,1.4c0.6,0.7,1.5,2,1.9,2.4v0.1c-0.1,0-0.3-0.1-0.4-0.1c-0.1,0-0.3,0-0.4,0.1c-0.5-0.8-1.1-1.6-1.8-2.4h-0.4v0.8c0,0.5,0,1.1,0.1,1.6c-0.1,0-0.2-0.1-0.4-0.1c-0.1,0-0.2,0-0.4,0.1c0-0.5,0.1-1,0.1-1.5V475z M432.2,475.7c0.1,0,0.3,0,0.5,0c0.7,0,1.4-0.3,1.4-1.1c0-0.6-0.4-0.9-1-0.9c-0.3,0-0.5,0-0.8,0.1c0,0.3-0.1,0.7-0.1,1V475.7z\")\n ;\n this.text_tm = this.text.append(\"path\")\n .attr(\"fill\", \"#6E6E73\")\n .attr(\"d\", \"M376.1,322.1c0-0.6,0-1.2,0-1.9c-0.6,0-1.4,0-1.9,0.1c0-0.1,0-0.2,0-0.3c0-0.1,0-0.2,0-0.3c0.8,0,1.5,0,2.3,0s1.5,0,2.3,0c0,0.1,0,0.2,0,0.3c0,0.1,0,0.2,0,0.3c-0.5-0.1-1.3-0.1-1.9-0.1c0,0.6,0,1.2,0,1.9v1.5c0,0.8,0,1.6,0.1,2.3c-0.2,0-0.3,0-0.4,0c-0.1,0-0.3,0-0.4,0c0-0.8,0.1-1.6,0.1-2.3V322.1zM380.5,319.7c0.8,1.7,1.7,3.3,2.6,5c0.4-0.7,1.8-3.3,2.7-5h0.1c0.3,2.3,0.5,4.3,0.7,6.3c-0.1,0-0.3,0-0.4,0c-0.1,0-0.3,0-0.4,0c-0.1-1.6-0.3-3.1-0.4-4.6h0c-0.8,1.5-1.6,3-2.4,4.6h-0.1c-0.7-1.5-1.5-3-2.3-4.6h0c-0.2,1.5-0.4,3.6-0.4,4.6c-0.1,0-0.2,0-0.3,0c-0.1,0-0.2,0-0.3,0c0.3-2,0.7-4.4,0.9-6.3H380.5z\")\n ;\n\n const bbox = this.root.node().getBBox();\n const centerX = bbox.x + bbox.width / 2;\n const centerY = bbox.y + bbox.height / 2;\n const scale = Math.min(this.width(), this.height()) / Math.max(bbox.width, bbox.height);\n this.root\n .attr(\"transform\", \"translate(\" + (-centerX * scale) + \",\" + (-centerY * scale) + \")scale(\" + scale + \")\")\n ;\n }\n\n update(domNode, element) {\n super.update(domNode, element);\n\n switch (this.animation()) {\n case \"none\":\n break;\n case \"accentInOut\":\n this.logo.attr(\"opacity\", 0);\n this.logo_accent.attr(\"transform\", \"translate(-400, 0)\");\n this.text.attr(\"opacity\", 0);\n\n this.logo.transition().duration(1000)\n .attr(\"opacity\", 1)\n ;\n this.logo_accent.transition().delay(500).duration(1500)\n .attr(\"transform\", \"translate(0, 0)\")\n ;\n this.text.transition().delay(100).duration(1000)\n .attr(\"opacity\", 1)\n ;\n this.logo_accent.transition().ease(\"back\").delay(7000).duration(1500)\n .attr(\"transform\", \"translate(400, 0)\")\n ;\n this.text.transition().delay(8400).duration(1000)\n .attr(\"opacity\", 0)\n ;\n this.logo_accent.transition().delay(8500).duration(1000)\n .attr(\"opacity\", 0)\n ;\n this.logo.transition().delay(8500).duration(1000)\n .attr(\"opacity\", 0)\n ;\n break;\n case \"accentIn\":\n this.logo.attr(\"opacity\", 0);\n this.logo_accent.attr(\"transform\", \"translate(-400, 0)\");\n this.text.attr(\"opacity\", 0);\n\n this.logo.transition().duration(1000)\n .attr(\"opacity\", 1)\n ;\n this.logo_accent.transition().delay(500).duration(1500)\n .attr(\"transform\", \"translate(0, 0)\")\n ;\n this.text.transition().delay(100).duration(1000)\n .attr(\"opacity\", 1)\n ;\n break;\n case \"fade_in\":\n this.logo.attr(\"opacity\", 0);\n // this.logo_accent.attr(\"transform\", \"translate(-400, 0)\");\n this.logo_accent.attr(\"opacity\", 0);\n this.text.attr(\"opacity\", 0);\n\n this.logo.transition().duration(1000)\n .attr(\"opacity\", 1)\n ;\n /*\n this.logo_accent.transition().delay(500).duration(1500)\n .attr(\"transform\", \"translate(0, 0)\")\n ;\n */\n this.logo_accent.transition().duration(1000)\n .attr(\"opacity\", 1)\n ;\n this.text.transition().delay(100).duration(1000)\n .attr(\"opacity\", 1)\n ;\n /*\n this.logo_accent.transition().ease(\"back\").delay(7000).duration(1500)\n .attr(\"transform\", \"translate(400, 0)\")\n ;\n */\n /*\n this.text.transition().delay(8400).duration(1000)\n .attr(\"opacity\", 0)\n ;\n this.logo_accent.transition().delay(8500).duration(1000)\n .attr(\"opacity\", 0)\n ;\n this.logo.transition().delay(8500).duration(1000)\n .attr(\"opacity\", 0)\n ;\n */\n break;\n default:\n break;\n }\n }\n}\nHPCCBadge.prototype._class += \" other_HPCCBadge\";\n\nexport interface HPCCBadge {\n animation(): \"none\" | \"accentInOut\" | \"accentIn\" | \"fade_in\";\n animation(_: \"none\" | \"accentInOut\" | \"accentIn\" | \"fade_in\"): this;\n}\n\nHPCCBadge.prototype.publish(\"animation\", \"none\", \"set\", \"Animation Style\", [\"none\", \"accentInOut\", \"accentIn\", \"fade_in\"]);\n","import { HTMLWidget } from \"@hpcc-js/common\";\n\nimport \"../src/Html.css\";\n\nexport class Html extends HTMLWidget {\n constructor() {\n super();\n\n this._tag = \"div\";\n }\n\n enter(domNode, element) {\n super.enter(domNode, element);\n }\n\n update(domNode, element) {\n super.update(domNode, element);\n\n element\n .style(\"overflow-x\", this.overflowX_exists() ? this.overflowX() : \"\")\n .style(\"overflow-y\", this.overflowY_exists() ? this.overflowY() : \"\")\n ;\n\n const html = element.selectAll(\".htmlWrapper\").data(this.data().length > 0 ? this.data() : [this.html()]);\n html.enter().append(\"div\")\n .attr(\"class\", \"htmlWrapper\")\n .merge(html)\n .html(function (d) { return d; })\n ;\n html.exit().remove();\n }\n}\nHtml.prototype._class += \" other_Html\";\n\nexport interface Html {\n html(): string;\n html(_: string): Html;\n overflowX(): string;\n overflowX(_: string): Html;\n overflowX_exists(): boolean;\n overflowY(): string;\n overflowY(_: string): Html;\n overflowY_exists(): boolean;\n}\n\nHtml.prototype.publish(\"html\", \"\", \"string\", \"Html to render\", null, { tags: [\"Basic\"] });\nHtml.prototype.publish(\"overflowX\", null, \"set\", \"CSS overflow-x\", [\"\", \"visible\", \"hidden\", \"scroll\", \"auto\", \"initial\", \"inherit\"], { tags: [\"Basic\"], optional: true });\nHtml.prototype.publish(\"overflowY\", null, \"set\", \"CSS overflow-y\", [\"\", \"visible\", \"hidden\", \"scroll\", \"auto\", \"initial\", \"inherit\"], { tags: [\"Basic\"], optional: true });\n","import { Entity, HTMLWidget } from \"@hpcc-js/common\";\nimport { HorizontalList, VerticalList } from \"@hpcc-js/layout\";\nimport { select as d3Select } from \"d3-selection\";\nimport { Html } from \"./Html.ts\";\n\nimport \"../src/IconList.css\";\n\nexport class IconList extends HTMLWidget {\n protected _list;\n protected _entity_list = [];\n protected _content_list = [];\n constructor() {\n super();\n this._list = new HorizontalList()\n .orientation_default(\"horizontal\")\n .flexWrap_default(\"nowrap\")\n ;\n }\n enter(domNode, element) {\n super.enter(domNode, element);\n element\n .style(\"height\", \"100%\")\n .style(\"width\", \"100%\")\n ;\n d3Select(domNode.parentElement)\n .style(\"height\", \"100%\")\n .style(\"width\", \"100%\")\n ;\n this._list.target(domNode);\n }\n update(domNode, element) {\n super.update(domNode, element);\n const listWidgets = this._list.widgets();\n this.data().forEach((row, idx) => {\n if (!listWidgets[idx]) {\n listWidgets[idx] = this.updateListProperties(new VerticalList(), idx)\n .widgets([\n this.updateEntityProperties(new Entity(), idx),\n new Html().html(this.data()[idx][this.htmlColumnIndex_exists() ? this.htmlColumnIndex() : 1])\n ]);\n } else {\n listWidgets[idx] = this.updateListProperties(listWidgets[idx], idx);\n this.updateEntityProperties(listWidgets[idx].widgets()[0], idx);\n listWidgets[idx]\n .widgets()[1]\n .html(this.data()[idx][this.htmlColumnIndex_exists() ? this.htmlColumnIndex() : 1])\n ;\n }\n });\n this._list.widgets(listWidgets.slice(0, this.data().length));\n this._list.resize().render();\n }\n updateListProperties(list, idx) {\n return list\n .disableScroll(true)\n .widgetsFlexBasis([this.iconSize() + \"px\", `calc(100% - ${this.iconSize()}px)`])\n ;\n }\n updateEntityProperties(entity, idx) {\n return entity\n .icon(this.iconColumnIndex_exists() ? this.data()[idx][this.iconColumnIndex()] : \"?\")\n .iconColor(this.iconColorColumnIndex_exists() ? this.data()[idx][this.iconColorColumnIndex()] : \"#000\")\n .iconDiameter(this.iconSize())\n .iconPaddingPercent(0)\n ;\n }\n}\nIconList.prototype._class += \" other_IconList\";\n\nexport interface IconList {\n iconSize(): number;\n iconSize(_: number): this;\n iconColumnIndex(): number;\n iconColumnIndex(_: number): this;\n iconColumnIndex_exists(): boolean;\n iconColorColumnIndex(): number;\n iconColorColumnIndex(_: number): this;\n iconColorColumnIndex_exists(): boolean;\n htmlColumnIndex(): number;\n htmlColumnIndex(_: number): this;\n htmlColumnIndex_exists(): boolean;\n}\nIconList.prototype.publish(\"iconSize\", 72, \"number\", \"Size of icon (pixels)\");\nIconList.prototype.publish(\"iconColumnIndex\", 0, \"number\", \"Index of column containing icon character\");\nIconList.prototype.publish(\"iconColorColumnIndex\", 1, \"number\", \"Index of column containing icon color\");\nIconList.prototype.publish(\"htmlColumnIndex\", 2, \"number\", \"Index of column containing html string\");\n","import { d3Event, HTMLWidget, select as d3Select } from \"@hpcc-js/common\";\n\nimport \"../src/Paginator.css\";\n\nexport class Paginator extends HTMLWidget {\n _tNumPages;\n _numList;\n paginator;\n side;\n _onSelect;\n\n constructor() {\n super();\n\n this._tag = \"div\";\n\n this._tNumPages = 1; // np\n\n this._numList = []; // pn\n }\n\n postUpdate(domNode, element) { }\n\n enter(domNode, element) {\n super.enter(domNode, element);\n const context = this;\n\n this.paginator = element.append(\"ul\").attr(\"class\", \"paginator pagination pagination-sm\");\n this.side = element.append(\"div\").attr(\"class\", \"paginator pagination side\");\n\n this.side.append(\"span\")\n .classed(\"side\", true)\n .text(\"Page \")\n ;\n\n this.side.append(\"input\")\n .attr(\"type\", \"number\")\n .attr(\"class\", \"currentPageNumber\")\n .property(\"value\", 1)\n .attr(\"min\", 1)\n .on(\"change\", function () {\n context.pageNumber(this.value);\n context._onSelect(this.value);\n })\n ;\n\n this.side.append(\"span\")\n .classed(\"side total\", true)\n .text(\" of 1\")\n ;\n }\n\n update(domNode, element) {\n const context = this;\n element\n .style(\"bottom\", this.bottom() + \"px\")\n .style(\"right\", this.right() + \"px\")\n ;\n\n this._tNumPages = Math.ceil(this.numItems() / this.itemsPerPage()) || 1;\n\n if (this.pageNumber() > this._tNumPages) { this.pageNumber(1); }\n\n this._numList = [];\n if (this.numItems()) {\n this._numList.push(\"first\");\n for (let x = -this.adjacentPages(); x <= this.adjacentPages(); x++) {\n if (this.pageNumber() + x > 0 && this.pageNumber() + x <= this._tNumPages) {\n this._numList.push(this.pageNumber() + x);\n }\n }\n this._numList.push(\"last\");\n }\n\n this.side.select(\".total\").text(\" of \" + this._tNumPages);\n this.side.select(\".currentPageNumber\").property(\"value\", this.pageNumber());\n this.side.select(\".currentPageNumber\").attr(\"max\", this._tNumPages);\n\n const page = this.paginator.selectAll(\"li\").data(this._numList, function (d) { return d; });\n page\n .enter()\n .append(function (d) {\n const li = document.createElement(\"li\");\n\n if (d !== context.pageNumber()) {\n const a = document.createElement(\"a\");\n const linkText = document.createTextNode(d);\n\n a.appendChild(linkText);\n a.href = \"#\";\n li.appendChild(a);\n\n return li;\n } else {\n const span = document.createElement(\"span\");\n span.innerHTML = d;\n\n li.appendChild(span);\n\n return li;\n }\n })\n .on(\"click\", function (d, i) {\n d3Event().preventDefault();\n context.side.select(\".currentPageNumber\").property(\"value\", context.pageNumber());\n switch (d) {\n case \"first\":\n if (context.pageNumber() !== 1) {\n context.pageNumber(1);\n context._onSelect(1, \"previous\");\n }\n break;\n case \"last\":\n if (context.pageNumber() !== context._tNumPages) {\n context.pageNumber(context._tNumPages);\n context._onSelect(context._tNumPages, \"previous\");\n }\n break;\n default:\n context.pageNumber(d);\n context._onSelect(d);\n }\n })\n ;\n\n page.classed(\"active\", function (e, j) { return e === context.pageNumber(); })\n .select(\"a\")\n .text(function (d) { return d; })\n ;\n\n page.exit().remove();\n page.order();\n\n if (this.numItems() === 0) {\n d3Select(domNode).remove();\n }\n }\n\n exit(domNode, element) {\n super.exit(domNode, element);\n }\n}\nPaginator.prototype._class += \" other_Paginator\";\n\nexport interface Paginator {\n itemsPerPage(): number;\n itemsPerPage(_: number): this;\n itemsPerPage_exists(): boolean;\n numItems(): number;\n numItems(_: number): this;\n numItems_exists(): boolean;\n pageNumber(): number;\n pageNumber(_: number): this;\n pageNumber_exists(): boolean;\n adjacentPages(): number;\n adjacentPages(_: number): this;\n adjacentPages_exists(): boolean\n bottom(): number;\n bottom(_: number): this;\n bottom_exists(): boolean;\n right(): number;\n right(_: number): this;\n right_exists(): boolean;\n}\n\nPaginator.prototype.publish(\"itemsPerPage\", 2, \"number\", \"Pagination items per page\", null, { tags: [\"Private\"] });\n\nPaginator.prototype.publish(\"numItems\", 10, \"number\", \"Pagination total number of items\", null, { tags: [\"Private\"] });\nPaginator.prototype.publish(\"pageNumber\", 1, \"number\", \"Pagination set or get the page number\", null, { tags: [\"Private\"] });\nPaginator.prototype.publish(\"adjacentPages\", 2, \"number\", \"Number of page indexes either side of current one\", null, { tags: [\"Private\"] });\nPaginator.prototype.publish(\"bottom\", 20, \"number\", \"Pagination bottom offset\", null, { tags: [\"Private\"] });\nPaginator.prototype.publish(\"right\", 20, \"number\", \"Pagination right offset\", null, { tags: [\"Private\"] });\n","import { d3Event, HTMLWidget, Platform, select as d3Select, selectAll as d3SelectAll, Utility, Widget } from \"@hpcc-js/common\";\nimport { Paginator } from \"./Paginator.ts\";\n\nimport \"../src/Table.css\";\n\nexport class Table extends HTMLWidget {\n protected _paginator;\n protected _selectionBag;\n protected _selectionPrevClick;\n protected _paginatorTableSpacing;\n\n tableDiv;\n thead;\n table;\n fixedHead;\n fixedHeadTable;\n fixedThead;\n unfixedThead;\n tbody;\n tfoot;\n fixedCol;\n fixedColTable;\n fixedColHead;\n fixedColHeadRow;\n fixedColBody;\n fixedColFoot;\n fixedColFootRow;\n protected _prevDescending;\n protected _prevSortByFieldIndex;\n protected _hasChildWidgets;\n protected _tNumPages;\n protected _empty_col_idx_arr: any[];\n\n constructor() {\n super();\n this._tag = \"div\";\n this.columns([]);\n this._paginator = new Paginator();\n this._selectionBag = new Utility.Selection(this);\n this._selectionPrevClick = null;\n this._paginatorTableSpacing = 4;\n }\n\n size(): any;\n size(_): Widget;\n size(_?): any | Widget {\n const retVal = super.size.apply(this, arguments);\n if (arguments.length) {\n if (this.tableDiv) {\n const topMargin = this.showHeader() && this.fixedHeader() ? this.thead.property(\"offsetHeight\") : 0;\n this.tableDiv\n .style(\"width\", this._size.width + \"px\")\n .style(\"height\", this._size.height - topMargin + \"px\")\n ;\n this._element\n .style(\"width\", this._size.width + \"px\")\n .style(\"height\", this._size.height + \"px\")\n ;\n }\n }\n\n return retVal;\n }\n\n isHidden(colIdx) {\n if (this.pivot()) return false;\n if (this.hiddenColumns().indexOf(colIdx) !== -1) return true;\n const fields = this.fields();\n if (fields && fields[colIdx] && (fields[colIdx].type() === \"hidden\" || this._empty_col_idx_arr.indexOf(colIdx) !== -1)) {\n return true;\n }\n return false;\n }\n\n tableColumns(_?: string[]): string[] {\n const retVal = this.columns.apply(this, arguments);\n if (!arguments.length && this.pivot()) {\n return this._db.column(0);\n }\n return retVal;\n }\n\n tableData(_?) {\n const retVal = this.data.apply(this, arguments);\n if (!arguments.length && this.pivot()) {\n return this._db.columns().filter(function (col, idx) { return idx > 0; });\n }\n return retVal;\n }\n\n field(rowIdx, colIdx) {\n const noTransform = { transform: d => d };\n if (this.pivot()) {\n if (colIdx === 0) return noTransform;\n return this.fields()[rowIdx + 1];\n }\n if (rowIdx === -1) return noTransform;\n return this.fields()[colIdx];\n }\n\n calcFieldsIndex(colIdx) {\n let i = -1;\n let offset = 0;\n const colLen = this.columns().length;\n let visibleCount = 0;\n while (i < colLen && visibleCount <= colIdx) {\n i++;\n if (this.isHidden(i)) {\n offset++;\n } else {\n visibleCount++;\n }\n }\n return colIdx + offset;\n }\n\n getEmptyColumnIdxArr(columns, data) {\n const ret_arr = [];\n if (this.hideEmptyColumns()) {\n for (let col_idx = 0; col_idx < columns.length; col_idx++) {\n let column_is_empty = true;\n for (let row_idx = 0; row_idx < data.length; row_idx++) {\n if ([\"\", null, undefined].indexOf(data[row_idx][col_idx]) === -1) {\n column_is_empty = false;\n break;\n }\n }\n if (column_is_empty) {\n ret_arr.push(col_idx);\n }\n }\n }\n return ret_arr;\n }\n\n enter(domNode, element) {\n super.enter(domNode, element);\n this._placeholderElement.style(\"overflow\", \"hidden\");\n\n this.tableDiv = element.append(\"div\").attr(\"class\", \"tableDiv\");\n this.table = this.tableDiv.append(\"table\");\n this.fixedHead = element.append(\"div\").classed(\"header-wrapper\", true);\n this.fixedHeadTable = this.fixedHead.append(\"table\");\n this.fixedThead = this.fixedHeadTable.append(\"thead\").append(\"tr\");\n this.unfixedThead = this.table.append(\"thead\").append(\"tr\");\n this.tbody = this.table.append(\"tbody\");\n this.tfoot = this.table.append(\"tfoot\").append(\"tr\");\n this.fixedCol = element.append(\"div\").classed(\"rows-wrapper\", true);\n this.fixedColTable = this.fixedCol.append(\"table\");\n this.fixedColHead = this.fixedColTable.append(\"thead\");\n this.fixedColHeadRow = this.fixedColHead.append(\"tr\");\n this.fixedColBody = this.fixedColTable.append(\"tbody\");\n this.fixedColFoot = this.fixedColTable.append(\"tfoot\");\n this.fixedColFootRow = this.fixedColFoot.append(\"tr\");\n\n this.tableDiv\n .style(\"overflow\", \"auto\")\n ;\n }\n\n update(domNode, element) {\n super.update(domNode, element);\n const context = this;\n const columns = context.tableColumns();\n const data = context.tableData();\n const scrollLeft = this.tableDiv.node().scrollLeft;\n this._empty_col_idx_arr = this.getEmptyColumnIdxArr(columns, data);\n\n this.element().selectAll(\"table,tbody,th,td\").style(\"width\", null);\n\n if (this.sortByFieldIndex_exists() && (this._prevSortByFieldIndex !== this.sortByFieldIndex() || this._prevDescending !== this.descending())) {\n Utility.multiSort(data, [{ idx: this.sortByFieldIndex(), reverse: this.descending() }]);\n this._prevSortByFieldIndex = this.sortByFieldIndex();\n this._prevDescending = this.descending();\n }\n\n this._hasChildWidgets = false;\n\n if (this.fixedHeader()) {\n this.thead = this.fixedThead;\n } else {\n this.thead = this.unfixedThead;\n }\n this.fixedHead.style(\"display\", this.fixedHeader() ? \"table-row\" : \"none\");\n this.unfixedThead.style(\"display\", this.fixedHeader() ? \"none\" : \"table-row\");\n\n const thSel = this.thead.selectAll(\"th\").data(this.showHeader() ? columns.filter(function (col, idx) {\n return !context.isHidden(idx) && context._empty_col_idx_arr.indexOf(idx) === -1;\n }) : []);\n const thUpdate = thSel.enter().append(\"th\")\n .each(function (d) {\n const element2 = d3Select(this);\n element2\n .append(\"span\")\n .attr(\"class\", \"thText\")\n ;\n element2\n .append(\"span\")\n .attr(\"class\", \"thIcon\")\n ;\n })\n .on(\"click\", function (column, idx) {\n context.headerClick(column, idx);\n })\n .merge(thSel)\n .style(\"background-color\", this.theadRowBackgroundColor())\n .style(\"border-color\", this.theadCellBorderColor())\n .style(\"color\", this.theadFontColor())\n .style(\"font-size\", this.theadFontSize())\n ;\n thUpdate.select(\".thText\")\n .style(\"font-family\", this.theadFontFamily())\n .text(function (column, idx) {\n const fieldsIdx = context.calcFieldsIndex(idx);\n return context.field(-1, fieldsIdx).transform(column);\n })\n ;\n thUpdate.select(\".thIcon\")\n .text(function (column, idx) {\n if (context.descending()) {\n return context.sortByFieldIndex() === idx ? \"\\uf078\" : \"\";\n } else {\n return context.sortByFieldIndex() === idx ? \"\\uf077\" : \"\";\n }\n })\n ;\n thSel.exit()\n .remove()\n ;\n thUpdate.order();\n\n if (this.paginationLimit()) {\n this.pagination(data.length >= parseInt(this.paginationLimit()) ? true : false);\n }\n if (this.pagination()) {\n if (this._paginator.target() === null) {\n this._paginator.target(element.node());\n }\n\n const ipp = this._calcRowsPerPage(thUpdate);\n this.itemsPerPage(ipp);\n\n this._paginator.numItems(data.length);\n this._tNumPages = Math.ceil(this._paginator.numItems() / this.itemsPerPage()) || 1;\n if (this.pageNumber() > this._tNumPages || this.pageNumber() <= 0) { this.pageNumber(1); } // resets if current pagenum selected out of range\n\n this._paginator._onSelect = function (p, d) {\n context.pageNumber(p);\n context.render();\n return;\n };\n } else {\n this._paginator.numItems(0); // remove widget\n }\n\n // pageNumber starts at index 1\n const startIndex = this.pageNumber() - 1;\n const itemsOnPage = this.itemsPerPage();\n\n const start = startIndex * itemsOnPage;\n const end = startIndex * parseInt(itemsOnPage) + parseInt(itemsOnPage);\n\n let tData = null;\n\n if (this.topN()) {\n tData = data.slice(0, this.topN());\n } else if (this.pagination()) {\n tData = data.slice(start, end);\n } else {\n tData = data;\n }\n\n const totalRow: any[] = [this.totalledLabel() ? this.totalledLabel() : null];\n if (this.totalledColumns().length !== 0) {\n for (let i = 0; i < this.totalledColumns().length; i++) this.totalledColumns()[i] = +this.totalledColumns()[i];\n for (let j = 1; j < columns.length; j++) {\n let sum = 0;\n if (this.totalledColumns().indexOf(j) !== -1) {\n for (let k = 0; k < tData.length; k++) {\n sum = sum + tData[k][j];\n }\n totalRow.push(sum);\n } else {\n totalRow.push(\"\");\n }\n }\n\n const tfSel = this.tfoot.selectAll(\"td\").data(totalRow);\n tfSel.enter()\n .append(\"td\")\n .merge(tfSel)\n .style(\"background-color\", this.tfootRowBackgroundColor())\n .style(\"border-color\", this.tfootCellBorderColor())\n .style(\"color\", this.tfootFontColor())\n .style(\"font-size\", this.tfootFontSize())\n [this.renderHtmlDataCells() ? \"html\" : \"text\"](function (d, idx) {\n return context.fields()[idx].transform(d);\n });\n tfSel.exit()\n .remove()\n ;\n }\n\n const rowsSel = this.tbody.selectAll(\"tr.tr_\" + this.id()).data(tData.map(function (d, idx) {\n // TODO - Move fix closer to data source?\n for (let i = 0; i < d.length; ++i) {\n if (d[i] === undefined) {\n d[i] = null;\n }\n }\n return {\n rowIdx: idx,\n row: d\n };\n }));\n const rowsUpdate = rowsSel.enter().append(\"tr\")\n .attr(\"class\", \"tr_\" + this.id())\n .on(\"click.selectionBag\", function (_d) {\n if (_d.row) {\n const d = _d.row;\n const i = _d.rowIdx;\n context.selectionBagClick(d, i);\n context.applyRowStyles(context.getBodyRow(i));\n context.applyFirstColRowStyles(context.getFixedRow(i));\n }\n }, true) // capture=true: event is caught on the way down the DOM before the cell click.\n .on(\"mouseover\", function (_d) {\n if (_d.row) {\n const i = _d.rowIdx;\n const fixedLeftRows = context.getFixedRow(i);\n if (!fixedLeftRows.empty()) {\n fixedLeftRows.classed(\"hover\", true);\n }\n const tbodyRows = context.getBodyRow(i);\n tbodyRows.classed(\"hover\", true);\n context.applyStyleToRows(tbodyRows);\n context.applyFirstColRowStyles(fixedLeftRows);\n }\n })\n .on(\"mouseout\", function (_d) {\n if (_d.row) {\n const i = _d.rowIdx;\n const fixedLeftRows = context.getFixedRow(i);\n fixedLeftRows.classed(\"hover\", false);\n const tbodyRows = context.getBodyRow(i);\n tbodyRows.classed(\"hover\", false);\n context.applyStyleToRows(tbodyRows);\n context.applyFirstColRowStyles(fixedLeftRows);\n }\n })\n .merge(rowsSel)\n .classed(\"selected\", function (_d) {\n const d = _d.row;\n return context._selectionBag.isSelected(context._createSelectionObject(d));\n })\n .classed(\"trId\" + this._id, true)\n ;\n rowsSel.exit()\n .remove()\n ;\n this.applyStyleToRows(rowsUpdate);\n\n const cellsSel = rowsUpdate.selectAll(\".td_\" + this.id()).data(function (_d, _trIdx) {\n return _d.row.filter(function (cell, idx) {\n return idx < columns.length && !context.isHidden(idx) && context._empty_col_idx_arr.indexOf(idx) === -1;\n }).map(function (cell, idx) {\n return {\n rowInfo: _d,\n colIdx: idx,\n cell\n };\n });\n });\n cellsSel.enter()\n .append(\"td\")\n .attr(\"class\", \"td_\" + this.id())\n .on(\"click\", function (tdContents) {\n if (tdContents.rowInfo) {\n context.click(context.rowToObj(tdContents.rowInfo.row), context.columns()[tdContents.colIdx], context._selectionBag.isSelected(context._createSelectionObject(tdContents.rowInfo.row)));\n }\n })\n .on(\"dblclick\", function (tdContents, idx) {\n if (tdContents.rowInfo) {\n context.dblclick(context.rowToObj(tdContents.rowInfo.row), context.columns()[tdContents.colIdx], context._selectionBag.isSelected(context._createSelectionObject(tdContents.rowInfo.row)));\n }\n })\n .each(function (tdContents, tdIdx) {\n const alignment = context.getColumnAlignment(tdContents.rowInfo.rowIdx, tdContents.colIdx, tdContents.cell);\n const el = d3Select(this);\n el\n .style(\"height\", null)\n .style(\"text-align\", alignment)\n .style(\"vertical-align\", context.verticalAlign())\n .classed(\"tr-\" + tdContents.rowInfo.rowIdx + \"-td-\" + tdIdx, true)\n ;\n })\n .merge(cellsSel)\n .each(function (tdContents) {\n const el = d3Select(this);\n if (tdContents.cell instanceof Widget) {\n el[context.renderHtmlDataCells() ? \"html\" : \"text\"](null);\n const widgetDiv = el.selectAll(\".div_\" + context.id()).data([tdContents.cell], function (d: any) { return d.id(); });\n widgetDiv.exit()\n .each(function (d: any) {\n d.target(null);\n })\n .remove()\n ;\n widgetDiv.enter().append(\"div\")\n .attr(\"class\", \"div_\" + context.id())\n .style(\"width\", context.minWidgetWidth() + \"px\")\n .style(\"height\", context.minWidgetHeight() + \"px\")\n .each(function (d) {\n const widgetDiv2 = d3Select(this);\n d._parentWidget = context;\n if (d._class.indexOf(\"childWidget\") < 0) {\n d._class = \"childWidget \" + d._class;\n }\n d\n .target(null)\n .target(widgetDiv2.node())\n ;\n })\n .merge(widgetDiv as any)\n .each(function (d) {\n d\n .resize()\n .lazyRender()\n ;\n context._hasChildWidgets = true;\n })\n ;\n } else {\n el.selectAll(\".div_\" + context.id()).remove();\n const fieldsIdx = context.calcFieldsIndex(tdContents.colIdx);\n el[context.renderHtmlDataCells() ? \"html\" : \"text\"](\n context.field(tdContents.rowInfo.rowIdx, fieldsIdx).transform(tdContents.cell)\n );\n }\n })\n ;\n cellsSel.exit()\n .remove()\n ;\n const tableMarginHeight = parseInt(this.thead.node().offsetHeight);\n\n if (this.pagination() && this._hasChildWidgets) {\n this.tableDiv.style(\"overflow-y\", \"auto\");\n this.table.style(\"margin-bottom\", \"50px\");\n console.warn(\"Warning: displaying another widget in the table may cause problems with pagination\");\n } else {\n this.tableDiv.style(\"overflow-y\", null);\n this.table.style(\"margin-bottom\", null);\n\n }\n this.size(this._size);\n\n let fixedColWidth = 0;\n const fixedColThSel = this.fixedColHeadRow.selectAll(\"th\").data(this.fixedColumn() && this.showHeader() ? [columns[0]] : []);\n const fixedColThUpdate = fixedColThSel.enter().append(\"th\")\n .each(function (d) {\n const element2 = d3Select(this);\n element2\n .append(\"span\")\n .attr(\"class\", \"thText\")\n ;\n element2\n .append(\"span\")\n .attr(\"class\", \"thIcon\")\n ;\n })\n .on(\"click\", function (column, idx) {\n context.headerClick(column, idx);\n })\n .merge(fixedColThSel)\n .style(\"background-color\", this.theadRowBackgroundColor())\n .style(\"border-color\", this.theadCellBorderColor())\n .style(\"color\", this.theadFontColor())\n .style(\"font-size\", this.theadFontSize())\n ;\n fixedColThUpdate.select(\".thText\")\n .style(\"font-family\", this.theadFontFamily())\n .text(function (column) {\n return column;\n })\n ;\n fixedColThUpdate.select(\".thIcon\")\n .text(function (column, idx) {\n if (context.descending()) {\n return context.sortByFieldIndex() === idx ? \"\\uf078\" : \"\";\n } else {\n return context.sortByFieldIndex() === idx ? \"\\uf077\" : \"\";\n }\n })\n ;\n fixedColThSel.exit()\n .remove()\n ;\n\n const fixedColTrSel = this.fixedColBody.selectAll(\"tr\").data(this.fixedColumn() ? tData : []);\n const fixedColTrUpdate = fixedColTrSel.enter().append(\"tr\")\n .attr(\"class\", function () {\n return \"trId\" + context._id;\n })\n .merge(fixedColTrSel)\n .on(\"click\", function (d, i) {\n (d3Select(rowsUpdate[0][i]).on(\"click.selectionBag\") as any)(rowsUpdate.data()[i], i)\n ;\n })\n .on(\"mouseover\", function (d, i) {\n (d3Select(rowsUpdate[0][i]).on(\"mouseover\") as any)(rowsUpdate.data()[i], i)\n ;\n })\n .on(\"mouseout\", function (d, i) {\n (d3Select(rowsUpdate[0][i]).on(\"mouseout\") as any)(rowsUpdate.data()[i], i)\n ;\n })\n .classed(\"selected\", function (d) {\n return context._selectionBag.isSelected(context._createSelectionObject(d));\n })\n ;\n fixedColTrSel.exit()\n .remove()\n ;\n const fixedColTdSel = fixedColTrUpdate.selectAll(\"td\").data(function (d, i) {\n return [d[0]];\n });\n const fixedColTdUpdate = fixedColTdSel.enter().append(\"td\")\n .merge(fixedColTdSel)[this.renderHtmlDataCells() ? \"html\" : \"text\"](function (d): any {\n if (typeof (d) === \"string\") {\n return d.trim();\n } else if (typeof (d) === \"number\") {\n return d;\n }\n return \"\";\n });\n fixedColTdSel.exit()\n .remove()\n ;\n\n const fixedColFootTdSel = this.fixedColFootRow.selectAll(\"td\").data(this.fixedColumn() && this.totalledLabel() ? [this.totalledLabel()] : []);\n const fixedColFootTdUpdate = fixedColFootTdSel.enter().append(\"td\")\n .merge(fixedColFootTdSel)[this.renderHtmlDataCells() ? \"html\" : \"text\"](function (d): any {\n if (typeof (d) === \"string\") {\n return d.trim();\n } else if (typeof (d) === \"number\") {\n return d;\n }\n return \"\";\n });\n fixedColFootTdSel.exit()\n .remove()\n ;\n\n if (this.fixedColumn() && !this.fixedSize() && fixedColFootTdUpdate.length) {\n if (this.showHeader()) {\n fixedColWidth = fixedColFootTdUpdate.property(\"offsetWidth\") > fixedColFootTdUpdate.property(\"offsetWidth\") ? fixedColFootTdUpdate.property(\"offsetWidth\") : fixedColFootTdUpdate.property(\"offsetWidth\");\n } else {\n fixedColWidth = fixedColFootTdUpdate.property(\"offsetWidth\");\n }\n this.fixedCol\n .style(\"position\", \"absolute\")\n .style(\"margin-top\", -this.tableDiv.property(\"scrollTop\") + tableMarginHeight + \"px\")\n ;\n fixedColTdUpdate\n .style(\"width\", fixedColWidth + \"px\")\n ;\n this.fixedColHead\n .style(\"position\", \"absolute\")\n .style(\"margin-top\", (this.fixedHeader() ? this.tableDiv.property(\"scrollTop\") : 0) - tableMarginHeight + \"px\")\n ;\n fixedColThUpdate\n .style(\"width\", fixedColWidth + \"px\")\n ;\n rowsUpdate.each(function (d, i) {\n const height = d3Select(this).select(\"td\").property(\"offsetHeight\");\n d3Select(fixedColTdUpdate[i][0]).style(\"height\", height + \"px\");\n });\n }\n\n this.table\n .style(\"margin-left\", -fixedColWidth + \"px\")\n ;\n this.tableDiv\n .style(\"margin-left\", fixedColWidth + \"px\")\n .style(\"width\", this.width() - fixedColWidth + \"px\")\n ;\n\n if (!rowsUpdate.empty()) this.setColumnWidths(rowsUpdate);\n\n let box;\n let newTableHeight;\n let finalWidth;\n let maxWidth;\n if (this.fixedSize()) {\n const node = d3Select(\".tableDiv > table\").node();\n if (node) {\n box = (node as any).getBoundingClientRect();\n let newTableHeight;\n let finalWidth;\n if (box.width !== 0 && box.height !== 0) {\n calcWidth();\n calcHeight();\n } else {\n if (box.height - tableMarginHeight <= context.tableDiv.property(\"offsetHeight\")) {\n calcHeight();\n } else {\n if (context.fixedHeader()) {\n newTableHeight = context.tableDiv.property(\"offsetHeight\"); // is tableDiv correct?\n newTableHeight = newTableHeight + \"px\";\n } else {\n newTableHeight = \"100%\";\n }\n }\n if (box.width - fixedColWidth < context.tableDiv.property(\"offsetWidth\")) {\n calcWidth();\n } else {\n if (context.fixedColumn()) {\n finalWidth = context.tableDiv.property(\"offsetWidth\") - fixedColWidth; // is tableDiv correct?\n finalWidth = finalWidth + \"px\";\n } else {\n finalWidth = \"100%\";\n }\n }\n }\n if (element.classed(\"childWidget\")) {\n context._placeholderElement\n .style(\"width\", finalWidth + \"px\")\n .style(\"height\", newTableHeight + \"px\")\n ;\n context.tableDiv\n .style(\"overflow\", \"hidden\")\n ;\n }\n context.size({ width: finalWidth, height: newTableHeight });\n }\n }\n\n this.setOnScrollEvents(this.tableDiv.node(), tableMarginHeight);\n\n function calcWidth() {\n const newTableWidth = box.width;\n maxWidth = context.tbody.property(\"offsetWidth\") + 1;\n finalWidth = newTableWidth > maxWidth ? maxWidth : newTableWidth;\n finalWidth = finalWidth;\n }\n\n function calcHeight() {\n newTableHeight = context.tbody.property(\"offsetHeight\") + tableMarginHeight;\n newTableHeight = newTableHeight;\n }\n\n this._paginator.render();\n setTimeout(function () {\n context._paginator\n .right((context.hasVScroll(element) ? Platform.getScrollbarWidth() : 0) + context._paginatorTableSpacing)\n .bottom((context.hasHScroll(element) ? Platform.getScrollbarWidth() : 0) + context._paginatorTableSpacing)\n .render(function () {\n context.tableDiv.node().scrollLeft = scrollLeft;\n })\n ;\n }, 0);\n }\n\n exit(domNode, element) {\n this._paginator.target(null);\n super.exit(domNode, element);\n }\n\n setColumnWidths(rows) {\n const context = this;\n const firstRow = rows.filter(function (d, i) { return i === 0; });\n\n let tds = d3Select(null);\n firstRow.each(function (d) {\n tds = d3SelectAll(this.childNodes);\n });\n\n const tableMarginHeight = this.fixedHeader() ? this.thead.property(\"offsetHeight\") : 0;\n let totalWidth = 1;\n const tdWidths = {};\n\n tds.each(function (d, i) {\n tdWidths[i] = (this as any).offsetWidth;\n });\n\n const th = this.thead.selectAll(\"th\");\n th.each(function (d, i) {\n const thwidth = this.offsetWidth;\n const tdwidth = tds.empty() ? 0 : tdWidths[i];\n const usewidth = thwidth >= tdwidth ? thwidth : tdwidth;\n this.style.width = usewidth + \"px\";\n tds\n .filter((_d, idx) => idx === 0)\n .each(function () {\n d3Select(this).style(\"width\", usewidth + \"px\");\n })\n ;\n totalWidth += usewidth;\n });\n this.thead\n .style(\"position\", this.fixedHeader() ? \"absolute\" : \"relative\")\n .style(\"width\", totalWidth + \"px\")\n .style(\"margin-top\", \"0px\")\n ;\n this.table\n .style(\"width\", totalWidth + \"px\")\n ;\n this.tableDiv\n .style(\"margin-top\", (context.fixedHeader() ? tableMarginHeight : 0) + \"px\")\n ;\n this.tbody\n .style(\"width\", totalWidth + \"px\")\n ;\n }\n\n getBodyRow(i) {\n return this.table.selectAll(\"tbody tr.trId\" + this._id)\n .filter(function (d, idx) {\n return idx === i;\n })\n ;\n }\n\n getFixedRow(i) {\n return this._element.selectAll(\".rows-wrapper tbody tr\")\n .filter(function (d, idx) {\n return idx === i;\n })\n ;\n }\n\n setOnScrollEvents(scrollNode, margHeight) {\n const context = this;\n scrollNode.onscroll = function (e) {\n const topDelta = e.target.scrollTop;\n const leftDelta = e.target.scrollLeft;\n if (context.fixedHeader()) {\n context.thead\n .style(\"margin-left\", -leftDelta + \"px\")\n ;\n }\n if (context.fixedColumn()) {\n context.fixedCol\n .style(\"margin-top\", -topDelta + margHeight + \"px\")\n ;\n if (context.fixedHeader()) {\n context.fixedColHead\n .style(\"margin-top\", topDelta - margHeight + \"px\")\n ;\n }\n }\n };\n }\n\n _generateTempRow() {\n const trow = this.tbody.append(\"tr\");\n trow.append(\"td\").text(\"QQQ\");\n return trow;\n }\n\n _createSelectionObject(d) {\n const context = this;\n return {\n _id: d,\n element: () => context.tbody ? context.tbody.selectAll(\"tr\").filter(function (d2) { return d2 === d; }) : d3Select(null)\n };\n }\n\n _calcRowsPerPage(th) {\n if (this._paginator.numItems() === 0) { // only run on first render\n this._paginator.numItems(1);\n this.itemsPerPage(1);\n }\n this._paginator.render();\n\n const thHeight = this.thead.selectAll(\"th\").node() ? this.thead.selectAll(\"th\").node().clientHeight : 0;\n const tfootHeight = this.tfoot.selectAll(\"td\").node() ? this.tfoot.selectAll(\"td\").node().clientHeight : 0;\n const tmpRow = this._generateTempRow();\n const tcellHeight = tmpRow.node().clientHeight;\n tmpRow.remove();\n const paginatorHeight = this.calcHeight(this._paginator.element());\n let ipp = Math.floor((this.height() - thHeight - tfootHeight - paginatorHeight - (this.table.style(\"width\") >= this.table.style(\"width\") ? Platform.getScrollbarWidth() : 0) - this._paginatorTableSpacing * 2) / tcellHeight) || 1;\n if (this.totalledColumns().length !== 0) {\n ipp -= 1;\n }\n return ipp;\n }\n\n sort(idx) {\n if (this.sortByFieldIndex() !== idx) {\n this.descending(false);\n } else {\n this.descending(!this.descending());\n }\n this.sortByFieldIndex(idx);\n\n return this;\n }\n\n selection(_) {\n if (!arguments.length) return this._selectionBag.get().map(function (d) { return d._id; });\n this._selectionBag.set(_.map(function (row) {\n return this._createSelectionObject(row);\n }, this));\n return this;\n }\n\n selectionBagClick(d, i) {\n if (this.multiSelect() && d3Event().shiftKey && this._selectionPrevClick) {\n let inRange = false;\n const rows = [];\n const selection = this.tableData().filter(function (row, i2) {\n let lastInRangeRow = false;\n if (row === d || row === this._selectionPrevClick) {\n if (inRange) {\n lastInRangeRow = true;\n }\n inRange = !inRange;\n rows.push(i2);\n }\n return inRange || lastInRangeRow;\n }, this);\n this.selection(selection);\n } else if (this.multiSelect()) {\n this._selectionBag.click(this._createSelectionObject(d), d3Event);\n this._selectionPrevClick = d;\n } else {\n const selObj = this._createSelectionObject(d);\n this._selectionBag.click(selObj, { ctrlKey: this._selectionBag.isSelected(selObj) });\n this._selectionPrevClick = d;\n }\n this.render();\n }\n\n applyHoverRowStyles(row) {\n const context = this;\n row\n .style(\"color\", context.tbodyHoverRowFontColor())\n .style(\"background-color\", context.tbodyHoverRowBackgroundColor())\n ;\n }\n applySelectedRowStyles(row) {\n const context = this;\n row\n .style(\"color\", context.tbodySelectedRowFontColor())\n .style(\"background-color\", context.tbodySelectedRowBackgroundColor())\n ;\n }\n applyRowStyles(row, isFirstCol: boolean = false) {\n const dataRow = row.datum().row;\n row\n .style(\"color\", isFirstCol ? this.tbodyFirstColFontColor() : this.tbodyFontColor())\n .style(\"background-color\", isFirstCol ? this.tbodyFirstColBackgroundColor() : this.tableZebraColor_exists() && this.tableData().indexOf(dataRow) % 2 ? this.tbodyRowBackgroundColor() : this.tableZebraColor())\n ;\n }\n applyFirstColRowStyles(rows) {\n this.applyStyleToRows(rows, true);\n }\n applyStyleToRows(rows, isFirstCol: boolean = false) {\n isFirstCol = typeof isFirstCol !== \"undefined\" ? isFirstCol : false;\n const context = this;\n rows.each(function () {\n const tr = d3Select(this);\n if (tr.classed(\"hover\")) {\n context.applyHoverRowStyles(tr);\n } else if (tr.classed(\"selected\")) {\n context.applySelectedRowStyles(tr);\n } else {\n context.applyRowStyles(tr, isFirstCol);\n }\n })\n ;\n }\n\n getColumnAlignment(rowIdx, colIdx, cell) {\n const fieldsIdx = this.calcFieldsIndex(colIdx);\n const field = this.field(rowIdx, fieldsIdx);\n switch ((field as any).__prop_type) {\n case \"string\":\n return this.stringAlign();\n case \"number\":\n return this.numberAlign();\n case \"\":\n case undefined:\n switch (typeof cell) {\n case \"string\":\n return this.stringAlign();\n case \"number\":\n return this.numberAlign();\n }\n }\n return null;\n }\n\n serializeState() {\n return {\n selection: this._selectionBag.get().map(function (d) {\n return d._id;\n }),\n data: this.data()\n };\n }\n\n deserializeState(state) {\n if (state) {\n if (state.selection) {\n const context = this;\n this._selectionBag.set(state.selection.map(function (d) {\n return context._createSelectionObject(d);\n }));\n }\n if (state.data) {\n this.data(state.data);\n }\n }\n return this;\n }\n\n click(row, column, selected) {\n }\n\n dblclick(row, column, selected) {\n }\n\n headerClick(column, idx) {\n this\n .sort(idx)\n .render()\n ;\n }\n}\nTable.prototype._class += \" other_Table\";\n\nexport interface Table {\n renderHtmlDataCells(): boolean;\n renderHtmlDataCells(_: boolean): this;\n pagination(): boolean;\n pagination(_: boolean): this;\n paginationLimit(): any;\n paginationLimit(_: any): this;\n itemsPerPage(): any;\n itemsPerPage(_: any): this;\n pageNumber(): number;\n pageNumber(_: number): this;\n adjacentPages(): number;\n adjacentPages(_: number): this;\n topN(): number;\n topN(_: number): this;\n pivot(): boolean;\n pivot(_: boolean): this;\n showHeader(): boolean;\n showHeader(_: boolean): this;\n fixedHeader(): boolean;\n fixedHeader(_: boolean): this;\n fixedColumn(): boolean;\n fixedColumn(_: boolean): this;\n multiSelect(): boolean;\n multiSelect(_: boolean): this;\n\n fixedSize(): boolean;\n fixedSize(_: boolean): this;\n\n hideEmptyColumns(): boolean;\n hideEmptyColumns(_: boolean): this;\n\n theadFontSize(): string;\n theadFontSize(_: string): this;\n tbodyFontSize(): string;\n tbodyFontSize(_: string): this;\n tfootFontSize(): string;\n tfootFontSize(_: string): this;\n theadFontColor(): string;\n theadFontColor(_: string): this;\n tbodyFontColor(): string;\n tbodyFontColor(_: string): this;\n tfootFontColor(): string;\n tfootFontColor(_: string): this;\n theadFontFamily(): string;\n theadFontFamily(_: string): this;\n tbodyFontFamily(): string;\n tbodyFontFamily(_: string): this;\n tfootFontFamily(): string;\n tfootFontFamily(_: string): this;\n\n theadCellBorderColor(): string;\n theadCellBorderColor(_: string): this;\n tfootCellBorderColor(): string;\n tfootCellBorderColor(_: string): this;\n theadRowBackgroundColor(): string;\n theadRowBackgroundColor(_: string): this;\n tfootRowBackgroundColor(): string;\n tfootRowBackgroundColor(_: string): this;\n\n tbodyCellBorderColor(): string;\n tbodyCellBorderColor(_: string): this;\n\n tbodyRowBackgroundColor(): string;\n tbodyRowBackgroundColor(_: string): this;\n tbodyFirstColFontColor(): string;\n tbodyFirstColFontColor(_: string): this;\n tbodyFirstColBackgroundColor(): string;\n tbodyFirstColBackgroundColor(_: string): this;\n\n tbodyHoverRowFontColor(): string;\n tbodyHoverRowFontColor(_: string): this;\n tbodyHoverRowBackgroundColor(): string;\n tbodyHoverRowBackgroundColor(_: string): this;\n\n tbodySelectedRowFontColor(): string;\n tbodySelectedRowFontColor(_: string): this;\n tbodySelectedRowBackgroundColor(): string;\n tbodySelectedRowBackgroundColor(_: string): this;\n tableZebraColor(): string;\n tableZebraColor(_: string): this;\n tableZebraColor_exists(): boolean;\n totalledColumns(): any[];\n totalledColumns(_: any[]): this;\n totalledLabel(): string;\n totalledLabel(_: string): this;\n hiddenColumns(): any[];\n hiddenColumns(_: any[]): this;\n\n stringAlign(): string;\n stringAlign(_: string): this;\n numberAlign(): string;\n numberAlign(_: string): this;\n verticalAlign(): string;\n verticalAlign(_: string): this;\n\n minWidgetWidth(): number;\n minWidgetWidth(_: number): this;\n minWidgetHeight(): number;\n minWidgetHeight(_: number): this;\n\n sortByFieldIndex(): number;\n sortByFieldIndex(_: number): this;\n sortByFieldIndex_exists(): boolean;\n descending(): boolean;\n descending(_: boolean): this;\n}\n\nTable.prototype.publish(\"renderHtmlDataCells\", false, \"boolean\", \"enable or disable HTML within cells\", null, { tags: [\"Private\"] });\nTable.prototype.publish(\"pagination\", true, \"boolean\", \"Enable or disable pagination\", null, { tags: [\"Private\"] });\nTable.prototype.publish(\"paginationLimit\", null, \"number\", \"Maximum number of rows allowed before pagination defaults to on\", null, { tags: [\"Private\"] });\nTable.prototype.publishProxy(\"itemsPerPage\", \"_paginator\");\nTable.prototype.publishProxy(\"pageNumber\", \"_paginator\", \"pageNumber\", 1);\nTable.prototype.publishProxy(\"adjacentPages\", \"_paginator\");\nTable.prototype.publish(\"topN\", null, \"number\", \"Total number or rows of data to be displayed in the table\", null, { tags: [\"Private\"] });\nTable.prototype.publish(\"pivot\", false, \"boolean\", \"Pivot Table\");\nTable.prototype.publish(\"showHeader\", true, \"boolean\", \"Show or hide the table header\", null, { tags: [\"Private\"] });\nTable.prototype.publish(\"fixedHeader\", true, \"boolean\", \"Enable or disable fixed table header\", null, { tags: [\"Private\"] });\nTable.prototype.publish(\"fixedColumn\", false, \"boolean\", \"Enable or disable fixed first column\", null, { tags: [\"Private\"] });\nTable.prototype.publish(\"multiSelect\", false, \"boolean\", \"Multiple Selection\", null, { tags: [\"Basic\"] });\n\nTable.prototype.publish(\"fixedSize\", false, \"boolean\", \"Fix Size to Min Width/Height\");\n\nTable.prototype.publish(\"hideEmptyColumns\", false, \"boolean\", \"Hide columns with all empty cells\");\n\nTable.prototype.publish(\"theadFontSize\", null, \"string\", \"Table head font size\", null, { tags: [\"Basic\"], optional: true });\nTable.prototype.publish(\"tbodyFontSize\", null, \"string\", \"Table body font size\", null, { tags: [\"Basic\"], optional: true });\nTable.prototype.publish(\"tfootFontSize\", null, \"string\", \"Table body font size\", null, { tags: [\"Basic\"], optional: true });\nTable.prototype.publish(\"theadFontColor\", null, \"html-color\", \"Table head font color\", null, { tags: [\"Basic\"], optional: true });\nTable.prototype.publish(\"tbodyFontColor\", null, \"html-color\", \"Table body font color\", null, { tags: [\"Basic\"], optional: true });\nTable.prototype.publish(\"tfootFontColor\", null, \"html-color\", \"Table body font color\", null, { tags: [\"Basic\"], optional: true });\nTable.prototype.publish(\"theadFontFamily\", null, \"string\", \"Table head font family\", null, { tags: [\"Basic\"], optional: true });\nTable.prototype.publish(\"tbodyFontFamily\", null, \"string\", \"Table body font family\", null, { tags: [\"Basic\"], optional: true });\nTable.prototype.publish(\"tfootFontFamily\", null, \"string\", \"Table body font family\", null, { tags: [\"Basic\"], optional: true });\n\nTable.prototype.publish(\"theadCellBorderColor\", null, \"html-color\", \"Table head cell border color\", null, { tags: [\"Basic\"], optional: true });\nTable.prototype.publish(\"tfootCellBorderColor\", null, \"html-color\", \"Table head cell border color\", null, { tags: [\"Basic\"], optional: true });\nTable.prototype.publish(\"theadRowBackgroundColor\", null, \"html-color\", \"Table head row color\", null, { tags: [\"Basic\"], optional: true });\nTable.prototype.publish(\"tfootRowBackgroundColor\", null, \"html-color\", \"Table head row color\", null, { tags: [\"Basic\"], optional: true });\n\nTable.prototype.publish(\"tbodyCellBorderColor\", null, \"html-color\", \"Table body cell border color\", null, { tags: [\"Basic\"], optional: true });\n\nTable.prototype.publish(\"tbodyRowBackgroundColor\", null, \"html-color\", \"Table body row color\", null, { tags: [\"Basic\"], optional: true });\nTable.prototype.publish(\"tbodyFirstColFontColor\", null, \"html-color\", \"Table body first column font color\", null, { tags: [\"Basic\"], optional: true });\nTable.prototype.publish(\"tbodyFirstColBackgroundColor\", null, \"html-color\", \"Table body first column background color\", null, { tags: [\"Basic\"], optional: true });\n\nTable.prototype.publish(\"tbodyHoverRowFontColor\", null, \"html-color\", \"Table body hover row font color\", null, { tags: [\"Basic\"], optional: true });\nTable.prototype.publish(\"tbodyHoverRowBackgroundColor\", null, \"html-color\", \"Table body hover row background color\", null, { tags: [\"Basic\"], optional: true });\n\nTable.prototype.publish(\"tbodySelectedRowFontColor\", null, \"html-color\", \"Table body selected row color\", null, { tags: [\"Basic\"], optional: true });\nTable.prototype.publish(\"tbodySelectedRowBackgroundColor\", null, \"html-color\", \"Table body selected row color\", null, { tags: [\"Basic\"], optional: true });\nTable.prototype.publish(\"tableZebraColor\", null, \"html-color\", \"Table zebra row color\", null, { tags: [\"Basic\"], optional: true });\nTable.prototype.publish(\"totalledColumns\", [], \"array\", \"Array of indices of the columns to be totalled\", null, { tags: [\"Basic\"], optional: true, disable: (w: any) => w.pivot() });\nTable.prototype.publish(\"totalledLabel\", null, \"string\", \"Adds a label to the first column of the 'Totalled' row\", null, { tags: [\"Basic\"], optional: true, disable: (w: any) => w.pivot() });\nTable.prototype.publish(\"hiddenColumns\", [], \"array\", \"Array of indices of the columns to be hidden\", null, { tags: [\"Basic\"], optional: true, disable: (w) => w.pivot() });\n\nTable.prototype.publish(\"stringAlign\", \"left\", \"set\", \"Cell alignment for strings\", [\"left\", \"right\", \"center\"], { tags: [\"Basic\"], optional: true });\nTable.prototype.publish(\"numberAlign\", \"right\", \"set\", \"Cell alignment for numbers\", [\"left\", \"right\", \"center\"], { tags: [\"Basic\"], optional: true });\nTable.prototype.publish(\"verticalAlign\", null, \"set\", \"Cell vertical alignment\", [null, \"middle\", \"top\", \"bottom\"], { tags: [\"Basic\"], optional: true });\n\nTable.prototype.publish(\"minWidgetWidth\", 320, \"number\", \"Minimum width of a child widget\", null, { tags: [\"Basic\"], optional: true });\nTable.prototype.publish(\"minWidgetHeight\", 240, \"number\", \"Minimum height of a child widget\", null, { tags: [\"Basic\"], optional: true });\n\nTable.prototype.publish(\"sortByFieldIndex\", null, \"number\", \"Index for the field/column to sort the data\", null, { tags: [\"Basic\"], optional: true });\nTable.prototype.publish(\"descending\", false, \"boolean\", \"Direction for sorting the data: ascending (true) or descending (false)\", null, { tags: [\"Basic\"], optional: true });\n","import { Palette, Platform } from \"@hpcc-js/common\";\nimport { format as d3Format } from \"d3-format\";\nimport { select as d3Select } from \"d3-selection\";\nimport { Table } from \"./Table.ts\";\n\nimport \"../src/Legend.css\";\n\nfunction _htmlColorBlock(hexColor) {\n return \"<div class=\\\"colorBlock\\\" style=\\\"background-color:\" + hexColor + \";\\\"></div>\";\n}\n\nexport class Legend extends Table {\n _targetWidget;\n _targetWidgetMonitor;\n\n constructor() {\n super();\n\n this.showHeader(false);\n this.pagination(false);\n }\n\n isRainbow() {\n const widget = this.getWidget();\n return widget && widget._palette && widget._palette.type() === \"rainbow\";\n }\n\n targetWidget(): any;\n targetWidget(_: any): this;\n targetWidget(_?: any): any | this {\n if (!arguments.length) return this._targetWidget;\n this._targetWidget = _;\n if (this._targetWidgetMonitor) {\n this._targetWidgetMonitor.remove();\n delete this._targetWidgetMonitor;\n }\n const context = this;\n this._targetWidgetMonitor = this._targetWidget.monitor(function (key, newProp, oldProp, source) {\n switch (key) {\n case \"chart\":\n case \"columns\":\n case \"data\":\n case \"paletteID\":\n context.lazyRender();\n break;\n }\n });\n return this;\n }\n\n getWidget() {\n if (this._targetWidget) {\n switch (this._targetWidget.classID()) {\n case \"chart_MultiChart\":\n return this._targetWidget.chart();\n }\n }\n return this._targetWidget;\n }\n\n getPalette() {\n const widget = this.getWidget();\n if (widget && widget._palette) {\n switch (widget._palette.type()) {\n case \"ordinal\":\n return Palette.ordinal(widget._palette.id());\n case \"rainbow\":\n return Palette.rainbow(widget._palette.id());\n }\n }\n return Palette.ordinal(\"default\");\n }\n\n enter(domNode, element) {\n super.enter(domNode, element);\n d3Select(domNode.parentNode).style(\"overflow-y\", \"auto\");\n\n this.renderHtmlDataCells(true);\n this.fixedHeader(false);\n this.fixedSize(true);\n element.classed(\"other_Legend\", true);\n }\n\n update(domNode, element) {\n const colArr = [\"Key\", \"Label\"];\n let dataArr = [];\n if (this._targetWidget) {\n const _palette = this.getPalette();\n switch (_palette.type()) {\n case \"ordinal\":\n const oPalette = _palette as Palette.OrdinalPaletteFunc;\n switch (this.dataFamily()) {\n case \"2D\":\n dataArr = this._targetWidget.data().map(function (n) {\n return [_htmlColorBlock(oPalette(n[0])), n[0]];\n }, this);\n break;\n case \"ND\":\n const widgetColumns = this._targetWidget.columns();\n dataArr = widgetColumns.filter(function (n, i) { return i > 0; }).map(function (n) {\n return [_htmlColorBlock(oPalette(n)), n];\n }, this);\n break;\n }\n break;\n case \"rainbow\":\n const rPalette = _palette as Palette.RainbowPaletteFunc;\n const format = d3Format(this.rainbowFormat());\n const widget = this.getWidget();\n const steps = this.rainbowBins();\n const weightMin = widget._dataMinWeight;\n const weightMax = widget._dataMaxWeight;\n const stepWeightDiff = (weightMax - weightMin) / (steps - 1);\n dataArr.push([_htmlColorBlock(rPalette(weightMin, weightMin, weightMax)), format(weightMin)]);\n for (let x = 1; x < steps - 1; ++x) {\n const mid = stepWeightDiff * x;\n dataArr.push([_htmlColorBlock(rPalette(mid, weightMin, weightMax)), format(Math.floor(mid))]);\n }\n dataArr.push([_htmlColorBlock(rPalette(weightMax, weightMin, weightMax)), format(weightMax)]);\n break;\n }\n }\n this.columns(colArr);\n this.data(dataArr);\n super.update(domNode, element);\n\n element.classed(\"horiz-legend\", this.orientation() === \"horizontal\");\n\n const table = element.select(\".tableDiv > table\");\n const tableRect = table.node().getBoundingClientRect();\n const elementRect = this._placeholderElement.node().getBoundingClientRect();\n\n element.select(\".tableDiv\").style(\"overflow\", \"visible\");\n\n const top = elementRect.height / 2 - tableRect.height / 2;\n const left = elementRect.width / 2 - tableRect.width / 2;\n table\n .style(\"position\", \"absolute\")\n .style(\"top\", top + \"px\")\n .style(\"left\", left + \"px\")\n ;\n\n const startIndex = this.pageNumber() - 1;\n const itemsOnPage = this.itemsPerPage();\n\n const start = startIndex * itemsOnPage;\n const end = startIndex * parseInt(itemsOnPage) + parseInt(itemsOnPage);\n\n let tData = null;\n if (this.pagination()) {\n tData = this.data().slice(start, end);\n } else {\n tData = this.data();\n }\n\n const rows = this.tbody.selectAll(\"tr\").data(tData);\n const context = this;\n rows\n .on(\"click\", function (d, i) {\n context.onClick(d, i);\n })\n .on(\"dblclick\", function (d, i) {\n context.onDblClick(d, i);\n })\n .on(\"mouseover\", function (d, i) {\n context.onMouseOver(d, i);\n })\n ;\n }\n\n exit(domNode, element) {\n if (this._targetWidgetMonitor) {\n this._targetWidgetMonitor.remove();\n delete this._targetWidgetMonitor;\n }\n super.exit(domNode, element);\n }\n\n onClick(rowData, rowIdx) {\n }\n\n onDblClick(rowData, rowIdx) {\n }\n\n onMouseOver(rowData, rowIdx) {\n }\n\n}\nLegend.prototype._class += \" other_Legend\";\n\nexport interface Legend {\n dataFamily(): string;\n dataFamily(_: string): this;\n dataFamily_exists(): boolean;\n orientation(): string;\n orientation(_: string): this;\n orientation_exists(): boolean;\n rainbowFormat(): string;\n rainbowFormat(_: string): this;\n rainbowFormat_exists(): boolean;\n rainbowBins(): number;\n rainbowBins(_: number): this;\n rainbowBins_exists(): boolean;\n}\n\nLegend.prototype.publish(\"dataFamily\", \"ND\", \"set\", \"Type of data\", [\"1D\", \"2D\", \"ND\", \"map\", \"any\", \"other\"], { tags: [\"Private\"] });\nLegend.prototype.publish(\"orientation\", \"vertical\", \"set\", \"Orientation of Legend rows\", [\"vertical\", \"horizontal\"], { tags: [\"Private\"] });\nLegend.prototype.publish(\"rainbowFormat\", \",\", \"string\", \"Rainbow number formatting\", null, { tags: [\"Private\"], optional: true, disable: w => !w.isRainbow() });\nLegend.prototype.publish(\"rainbowBins\", 8, \"number\", \"Number of rainbow bins\", null, { tags: [\"Private\"], disable: w => !w.isRainbow() });\n\nconst origGetBBox = Table.prototype.getBBox;\nLegend.prototype.getBBox = function (refresh, round) {\n const retVal = origGetBBox.apply(this, arguments);\n const table = this.element().select(\".tableDiv > table\");\n if (!table.empty()) {\n const tableRect = table.node().getBoundingClientRect();\n const width = tableRect.width + 8 + (this.hasVScroll(this._placeholderElement) ? Platform.getScrollbarWidth() : 0);\n const height = tableRect.height + 8 + (this.hasHScroll(this._placeholderElement) ? Platform.getScrollbarWidth() : 0);\n return {\n x: retVal.x,\n y: retVal.y,\n width: (round ? Math.round(width) : width) * this._scale,\n height: (round ? Math.round(height) : height) * this._scale\n };\n }\n return retVal;\n};\n","import { SVGWidget } from \"@hpcc-js/common\";\n\nimport \"../src/MorphText.css\";\n\nexport class MorphText extends SVGWidget {\n _fontWidth;\n _textElement;\n\n constructor() {\n super();\n }\n\n enter(domNode, element) {\n if (!this.fontSize()) {\n const style = window.getComputedStyle(domNode, null);\n this.fontSize(parseInt(style.fontSize));\n }\n this._fontWidth = this.fontSize() * 32 / 48;\n this._textElement = element.append(\"g\")\n ;\n }\n\n dateTime() {\n const d = new Date();\n const seconds = d.getSeconds().toString().length === 1 ? \"0\" + d.getSeconds() : d.getSeconds();\n const minutes = d.getMinutes().toString().length === 1 ? \"0\" + d.getMinutes() : d.getMinutes();\n const hours = d.getHours().toString().length === 1 ? \"0\" + d.getHours() : d.getHours();\n const ampm = d.getHours() >= 12 ? \"pm\" : \"am\";\n const months = [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\"];\n const days = [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"];\n return days[d.getDay()] + \" \" + months[d.getMonth()] + \" \" + d.getDate() + \" \" + d.getFullYear() + \" \" + hours + \":\" + minutes + \":\" + seconds + ampm;\n }\n\n update(domNode, element) {\n const context = this;\n const text = this._textElement.selectAll(\"text\")\n .data(this.data(), function (d) { return d.id; })\n ;\n text\n .attr(\"class\", \"update\")\n ;\n this.transition.apply(text)\n .attr(\"x\", function (d, i) { return (-context.data().length / 2 + i) * context._fontWidth + context._fontWidth / 2; })\n ;\n\n const newText = text.enter().append(\"text\")\n .attr(\"class\", \"enter\")\n .attr(\"font-size\", this.fontSize())\n .attr(\"dy\", \".35em\")\n .attr(\"y\", (this.reverse() ? +1 : -1) * this._fontWidth * 2)\n .attr(\"x\", function (d, i) { return (-context.data().length / 2 + i) * context._fontWidth + context._fontWidth / 2; })\n .style(\"fill-opacity\", 1e-6)\n .style(\"text-anchor\", this.anchor())\n .text(function (d) { return d.text; })\n ;\n this.transition.apply(newText)\n .attr(\"y\", 0)\n .style(\"fill-opacity\", 1)\n ;\n\n text.exit()\n .attr(\"class\", \"exit\")\n ;\n this.transition.apply(text.exit())\n .attr(\"y\", (this.reverse() ? -1 : +1) * this._fontWidth * 2)\n .style(\"fill-opacity\", 1e-6)\n .remove()\n ;\n }\n}\nMorphText.prototype._class += \" other_MorphText\";\n\nexport interface MorphText {\n anchor(): string;\n anchor(_: string): this;\n anchor_exists(): boolean;\n fontSize(): number;\n fontSize(_: number): this;\n fontSize_exists(): boolean;\n reverse(): boolean;\n reverse(_: boolean): this;\n reverse_exists(): boolean;\n text(): string;\n text(_: string): this;\n text_exists(): boolean;\n}\n\nMorphText.prototype.publish(\"anchor\", \"middle\", \"set\", \"Sets anchor point\", [\"middle\"], { tags: [\"Basic\"] });\nMorphText.prototype.publish(\"fontSize\", 14, \"number\", \"Sets fontsize\", null, { tags: [\"Basic\"] });\nMorphText.prototype.publish(\"reverse\", false, \"boolean\", \"Reverse Animation\", null, { tags: [\"Basic\"] });\nMorphText.prototype.publish(\"text\", \"\", \"string\", \"Sets text/data of widget\", null, { tags: [\"Basic\"] });\n\nconst _origText = MorphText.prototype.text;\nMorphText.prototype.text = function (_?: string) {\n const retVal = _origText.apply(this, arguments);\n if (arguments.length) {\n const usedChars = {};\n const chars = _.split(\"\");\n this.data(chars.map(function (d) {\n const id = \"_\" + d;\n if (usedChars[id] === undefined) {\n usedChars[id] = 0;\n }\n usedChars[id]++;\n return { text: d, id: d.charCodeAt(0) + (1024 * usedChars[id]) };\n }));\n }\n return retVal;\n};\n","import { Table } from \"./Table.ts\";\n\nexport class NestedTable extends Table {\n constructor() {\n super();\n this.minWidgetHeight(240);\n this.minWidgetWidth(360);\n }\n}\nNestedTable.prototype._class += \" other_NestedTable\";\n\nconst origColumns = NestedTable.prototype.columns;\nNestedTable.prototype.columns = function (_?) {\n if (arguments.length) {\n this._columns = _;\n return origColumns.call(this, _.map(function (col) {\n if (typeof col === \"object\") {\n return col.label;\n }\n return col;\n }));\n }\n return origColumns.apply(this, arguments);\n};\n\nconst origData = NestedTable.prototype.data;\nNestedTable.prototype.data = function (_?: any): NestedTable | any {\n if (arguments.length) {\n const context = this;\n return origData.call(this, _.map(function (row) {\n return row.map(function (cell, idx) {\n if (cell instanceof Array) {\n let columns = [];\n if (typeof context._columns[idx] === \"object\" && context._columns[idx].columns) {\n columns = context._columns[idx].columns;\n } else {\n for (let i = 0; i < cell.length; ++i) {\n columns.push(context._columns[idx] + \".\" + i);\n }\n }\n return new Table()\n .columns(columns)\n .data(cell)\n ;\n }\n return cell;\n });\n }));\n }\n return origData.apply(this, arguments);\n};\n","import { d3Event, PropertyExt, select as d3Select, selectAll as d3SelectAll, SVGWidget } from \"@hpcc-js/common\";\n\nimport \"../src/Opportunity.css\";\n\nexport class Column extends PropertyExt {\n _owner: Opportunity;\n\n constructor() {\n super();\n }\n\n owner(): Opportunity;\n owner(_: Opportunity): this;\n owner(_?: Opportunity): Opportunity | this {\n if (!arguments.length) return this._owner;\n this._owner = _;\n return this;\n }\n\n valid(): boolean {\n return !!this.headerLabel();\n }\n}\nColumn.prototype._class += \" other_Opportunity.Column\";\n\nexport interface Column {\n headerLabel(): string;\n headerLabel(_: string): this;\n}\nColumn.prototype.publish(\"headerLabel\", null, \"string\", \"Header value of a table\", function (this: Column) { return this._owner ? this._owner.columns() : []; }, { tags: [\"Basic\"], optional: true });\n\nexport class MouseHoverColumn extends PropertyExt {\n _owner: Opportunity;\n\n constructor() {\n super();\n }\n\n owner(): Opportunity;\n owner(_: Opportunity): this;\n owner(_?: Opportunity): Opportunity | this {\n if (!arguments.length) return this._owner;\n this._owner = _;\n return this;\n }\n\n valid(): boolean {\n return !!this.hoverValue() && !!this.hoverList();\n }\n}\nMouseHoverColumn.prototype._class += \" other_Opportunity.MouseHoverColumn\";\n\nexport interface MouseHoverColumn {\n hoverValue(): string;\n hoverValue(_: string): this;\n hoverList(): string;\n hoverList(_: string): this;\n}\nMouseHoverColumn.prototype.publish(\"hoverValue\", null, \"string\", \"Hover value of a table\", function () { return this._owner ? this._owner.columns() : []; }, { tags: [\"Basic\"], optional: true });\nMouseHoverColumn.prototype.publish(\"hoverList\", null, \"set\", \"Hover value of a table\", function () { return this._owner ? this._owner.getIds() : []; }, { tags: [\"Basic\"], optional: true });\n\nexport class ColumnDropdown extends PropertyExt {\n _owner: Opportunity;\n\n constructor() {\n super();\n }\n\n owner(): Opportunity;\n owner(_: Opportunity): this;\n owner(_?: Opportunity): Opportunity | this {\n if (!arguments.length) return this._owner;\n this._owner = _;\n return this;\n }\n\n valid(): boolean {\n return !!this.columnIndex() && !!this.ColumnDropdownList();\n }\n}\nColumnDropdown.prototype._class += \" other_Opportunity.ColumnDropdown\";\n\nexport interface ColumnDropdown {\n columnIndex(): number;\n columnIndex(_: number): this;\n ColumnDropdownList(): string;\n ColumnDropdownList(_: string): this;\n}\nColumnDropdown.prototype.publish(\"columnIndex\", null, \"number\", \"Column index for display context data based on column dropdown list selction\", {}, { tags: [\"Basic\", \"Shared\"] });\nColumnDropdown.prototype.publish(\"ColumnDropdownList\", null, \"set\", \"column value of a table\", function () { return this._owner ? this._owner.getIds() : []; }, { tags: [\"Basic\"], optional: true });\n\nexport class Opportunity extends SVGWidget {\n groupCount;\n svg;\n tooltipdiv;\n Column;\n MouseHoverColumn;\n ColumnDropdown;\n\n constructor() {\n super();\n this._drawStartPos = \"origin\";\n this.groupCount = 7;\n }\n enter(domNode, element) {\n super.enter(domNode, element);\n const paddingTop = 30;\n const nodeRectHeight = 14;\n const verticalPadding = 10;\n const h = (this.data().length + 1) * (nodeRectHeight + verticalPadding + 1) + paddingTop;\n this.svg = element.append(\"g\")\n .attr(\"width\", ((this.groupCount * 100) + 1))\n .attr(\"height\", h);\n this.svg.append(\"defs\").append(\"marker\")\n .classed(\"arrowhead\", true)\n .attr(\"id\", \"end-arrow\")\n .attr(\"viewBox\", \"0 -5 10 10\")\n .attr(\"refX\", 6)\n .attr(\"markerWidth\", 8)\n .attr(\"markerHeight\", 8)\n .attr(\"orient\", \"auto\")\n .append(\"svg:path\")\n .attr(\"d\", \"M0,-5L10,0L0,5\")\n .attr(\"fill\", \"rgb(100,100,100)\");\n this.tooltipdiv = d3Select(\"body\").append(\"div\")\n .attr(\"class\", \"other_Opportunity-tooltip tooltip\")\n .style(\"opacity\", 0);\n }\n update(domNode, element) {\n super.update(domNode, element);\n const context = this;\n const data = this.data();\n const dropDownOption = this.opportunityId();\n data.sort(function (a, b) {\n if (a.cur_group > b.cur_group) return 1;\n else if (a.cur_group < b.cur_group) return -1;\n else return 0;\n });\n const groups = [];\n for (let i = 1; i <= context.groupCount; i++) {\n groups.push(i);\n }\n const paddingTop = 30;\n const nodeRectHeight = 14;\n const verticalPadding = 10;\n const h = (data.length + 1) * (nodeRectHeight + verticalPadding + 1) + paddingTop;\n const w = this.width();\n const nodeRectWidthPadding = 30;\n const nodeRectWidth = ((w / context.groupCount) - nodeRectWidthPadding);\n // Groups ---\n const group = this.svg.selectAll(\".group\").data(groups);\n group.enter().append(\"rect\")\n .attr(\"class\", \"group\");\n group\n .attr(\"x\", function (d, i) {\n return (i * w / context.groupCount) + 1;\n })\n .attr(\"y\", paddingTop)\n .attr(\"width\", w / this.groupCount)\n .attr(\"height\", h - paddingTop);\n group.exit().remove();\n // Group Headings ---\n const groupHeadings = this.svg.selectAll(\".group_headings\").data(groups);\n groupHeadings.enter().append(\"text\")\n .attr(\"class\", \"group_headings\")\n .attr(\"y\", 20);\n groupHeadings\n .attr(\"x\", function (d, i) {\n return (i * w / context.groupCount) + ((w / context.groupCount) / context.groupCount);\n })\n .text(function (d, i) {\n if (context.headerLabels().length > 0) {\n if (context.headerLabels()[i] && (context.headerLabels()[i]).headerLabel()) {\n return (context.headerLabels()[i]).headerLabel();\n }\n }\n return \"\";\n });\n groupHeadings.exit().remove();\n if (this.previousGroup() === \"prev_group\" && this.currentGroup() === \"cur_group\") {\n // Node Date Change ---\n const node_date_change = this.svg.selectAll(\".node_date_change\").data(data);\n node_date_change.enter().append(\"g\")\n .attr(\"class\", \"node_date_change update\")\n .on(\"mouseover\", function (d) {\n context.tooltipdiv.transition()\n .duration(200)\n .style(\"opacity\", 0.9);\n let htmlInput = \"<span style='font-weight:bolder'>\" + \"Close Date Change \" + \"</span>\" + \"<br/>\";\n const mouseHoverMapping = context.mouseHover();\n mouseHoverMapping.forEach(function (obj, index) {\n if (obj.hoverValue() !== undefined) {\n htmlInput = htmlInput + \"<span style='font-weight:bold'>\" + obj.hoverValue() + \": \" + \"</span>\" + d[obj.hoverList()] + \"<br/>\";\n }\n });\n let prevDate = d.prevdate + \"\";\n prevDate = prevDate.replace(/(\\d\\d\\d\\d)(\\d\\d)(\\d\\d)/g, \"$3-$2-$1\");\n let fromDate = d.curdate + \"\";\n fromDate = fromDate.replace(/(\\d\\d\\d\\d)(\\d\\d)(\\d\\d)/g, \"$3-$2-$1\");\n htmlInput = htmlInput + \"<span style='font-weight:bold'>\" + \"From: \" + \"</span>\" + prevDate + \"<br/>\" + \"<span style='font-weight:bold'>\" + \"To: \" + \"</span>\" + fromDate + \"<br/>\";\n const event = d3Event();\n context.tooltipdiv.html(htmlInput)\n .style(\"left\", (event.pageX) + \"px\")\n .style(\"top\", (event.pageY - 50) + \"px\");\n })\n .on(\"mouseout\", function (d) {\n context.tooltipdiv.transition()\n .duration(500)\n .style(\"opacity\", 0);\n })\n .each(function (d) {\n const element2 = d3Select(this);\n element2.append(\"rect\")\n .attr(\"class\", \"node_date_change_rect\")\n .attr(\"width\", 5)\n .attr(\"height\", nodeRectHeight)\n .attr(\"rx\", 6)\n .attr(\"ry\", 6);\n });\n node_date_change\n .attr(\"transform\", function (d, i) {\n return \"translate(\" + ((9 * w / context.groupCount) + (nodeRectWidthPadding) - 80) + \",\" + ((i + (i * (nodeRectHeight + verticalPadding))) + 12 + paddingTop) + \")\";\n });\n node_date_change.exit().remove();\n // Node Prev Group ---\n const node_prev_group = this.svg.selectAll(\".node_prev_group\").data(data);\n node_prev_group.enter().append(\"g\")\n .attr(\"class\", \"node_prev_group\")\n .on(\"mouseover\", function (d, i) {\n context.tooltipdiv.transition()\n .duration(200)\n .style(\"opacity\", 0.9);\n let tooltipHtml = \"\";\n const mouseHoverMapping = context.mouseHover();\n mouseHoverMapping.forEach(function (obj, index) {\n if (obj.hoverValue() !== undefined) {\n tooltipHtml = tooltipHtml + \"<span style='font-weight:bold'>\" + obj.hoverValue() + \": \" + \"</span>\" + d[obj.hoverList()] + \"<br/>\";\n }\n });\n const event = d3Event();\n context.tooltipdiv.html(tooltipHtml)\n .style(\"left\", (event.pageX) + \"px\")\n .style(\"top\", (event.pageY - 100) + \"px\");\n })\n .on(\"mouseout\", function (d) {\n context.tooltipdiv.transition()\n .duration(500)\n .style(\"opacity\", 0);\n })\n .each(function (d) {\n const element2 = d3Select(this);\n element2.append(\"rect\")\n .attr(\"class\", \"node_prev_rect\")\n .attr(\"rx\", 6)\n .attr(\"ry\", 6);\n element2.append(\"text\")\n .attr(\"class\", \"node_prev_text\");\n });\n node_prev_group\n .classed(\"update\", true)\n .classed(\"changed\", function (d) {\n return d.delta !== 0;\n })\n .attr(\"transform\", function (d, i) {\n return \"translate(\" + ((((d.prev_group - 1)) * w / context.groupCount) + (nodeRectWidthPadding / 2)) + \",\" + ((i + (i * (nodeRectHeight + verticalPadding))) + 10 + paddingTop) + \")\";\n })\n .each(function (d) {\n const element2 = d3Select(this);\n // Change Lines ---\n const changeLines = element2.selectAll(\".arrow\").data(d.delta !== 0 ? [d] : []);\n changeLines.enter().append(\"line\")\n .attr(\"class\", \"arrow update\");\n changeLines\n .attr(\"x1\", function (d2) {\n return (d2.delta > 0) ? nodeRectWidth : 0;\n })\n .attr(\"y1\", nodeRectHeight / 2)\n .attr(\"x2\", function (d2) {\n return (d2.delta > 0) ? (nodeRectWidth + nodeRectWidthPadding - 4) + ((Math.abs(d2.delta) - 1)) * (w / context.groupCount) : ((-nodeRectWidthPadding - ((Math.abs(d2.delta) - 1)) * (w / context.groupCount)) + 4);\n })\n .attr(\"y2\", nodeRectHeight / 2)\n .style(\"stroke-dasharray\", (\"3, 3\"))\n .style(\"stroke\", \"rgb(100,100,100)\")\n .style(\"marker-end\", \"url(#end-arrow)\")\n .style(\"opacity\", \"1\");\n changeLines.exit().remove();\n });\n const node_previous_rect = node_prev_group.select(\".node_prev_rect\");\n node_previous_rect\n .attr(\"width\", nodeRectWidth)\n .attr(\"height\", nodeRectHeight);\n const node_previous_text = node_prev_group.select(\".node_prev_text\");\n node_previous_text\n .attr(\"dy\", (nodeRectHeight / 2) + 3)\n .attr(\"dx\", (nodeRectWidth / 4))\n .text(function (d) {\n if (typeof d[dropDownOption] === \"number\")\n return d[dropDownOption];\n else\n return d[dropDownOption].substring(0, 14);\n });\n node_prev_group.exit().remove();\n // Node Cur Group ---\n const node_cur_group = this.svg.selectAll(\".node_cur_group\").data(data);\n node_cur_group.enter().append(\"g\")\n .attr(\"class\", \"node_cur_group\")\n .attr(\"transform\", function (d, i) {\n return \"translate(\" + ((((d.prev_group - 1)) * w / context.groupCount) + (nodeRectWidthPadding / 2)) + \",\" + ((i + (i * (nodeRectHeight + verticalPadding))) + 10 + paddingTop) + \")\";\n })\n .on(\"mouseover\", function (d, i) {\n context.tooltipdiv.transition()\n .duration(200)\n .style(\"opacity\", 0.9);\n let tooltipHtml = \"\";\n const mouseHoverMapping = context.mouseHover();\n mouseHoverMapping.forEach(function (obj, index) {\n if (obj.hoverValue() !== undefined) {\n tooltipHtml = tooltipHtml + \"<span style='font-weight:bold'>\" + obj.hoverValue() + \": \" + \"</span>\" + d[obj.hoverList()] + \"<br/>\";\n }\n });\n const event = d3Event();\n context.tooltipdiv.html(tooltipHtml)\n .style(\"left\", (event.pageX) + \"px\")\n .style(\"top\", (event.pageY - 100) + \"px\");\n })\n .on(\"mouseout\", function (d) {\n context.tooltipdiv.transition()\n .duration(500)\n .style(\"opacity\", 0);\n })\n .each(function (d) {\n const element2 = d3Select(this);\n element2.append(\"rect\")\n .attr(\"class\", \"node_cur_rect\")\n .attr(\"fill\", function (d2: any) {\n let color;\n if (d2.delta < 0 || d2.cur_group === 7) {\n color = \"#F78181\";\n } else {\n color = \"#A9F5A9\";\n }\n return color;\n })\n .attr(\"rx\", 6)\n .attr(\"ry\", 6);\n element2.append(\"a\")\n .append(\"text\")\n .attr(\"class\", \"node_cur_text\");\n });\n node_cur_group\n .classed(\"update\", true)\n .classed(\"changed\", function (d) {\n return d.delta !== 0;\n })\n .transition().duration(800)\n .ease(\"linear\")\n .attr(\"transform\", function (d, i) {\n return \"translate(\" + ((((d.cur_group) - 1) * w / context.groupCount) + (nodeRectWidthPadding / 2)) + \",\" + ((i + (i * (nodeRectHeight + verticalPadding))) + 10 + paddingTop) + \")\";\n })\n .each(\"end\", function () {\n d3SelectAll(\".arrow\").style(\"opacity\", \"1\");\n });\n const node_current_anchor = node_cur_group.select(\".node_cur_group a\");\n node_current_anchor.classed(\"update\", true)\n .attr(\"xlink:href\", function (d) {\n return context.url() + d.id;\n })\n .attr(\"xlink:show\", \"new\");\n const node_current_rect = node_cur_group.select(\".node_cur_rect\");\n node_current_rect\n .attr(\"width\", nodeRectWidth)\n .attr(\"height\", nodeRectHeight);\n const node_current_text = node_cur_group.select(\".node_cur_text\");\n node_current_text\n .classed(\"update\", true)\n .attr(\"dy\", (nodeRectHeight / 2) + 3)\n .attr(\"dx\", (nodeRectWidth / 4))\n .style(\"fill\", \"blue\")\n .text(function (d) {\n if (typeof d[dropDownOption] === \"number\")\n return d[dropDownOption];\n else\n return d[dropDownOption].substring(0, 14);\n });\n node_cur_group.exit().remove();\n }\n for (let colIndex = 0; colIndex < context.columnData().length; colIndex++) {\n if ((context.columnData()[colIndex]) && (context.columnData()[colIndex]).ColumnDropdownList()) {\n const columnData = this.svg.selectAll(\".columnDataText_\" + colIndex).data(data);\n columnData.enter().append(\"g\")\n .attr(\"class\", \"columnDataText_\" + colIndex + \" update\")\n .each(function (d) {\n const element2 = d3Select(this);\n element2.append(\"text\");\n });\n columnData\n .attr(\"transform\", function (d, i) {\n return \"translate(\" + (((context.columnData()[colIndex]).columnIndex() * w / context.groupCount) + (nodeRectWidthPadding / 2)) + \",\" + ((i + (i * (nodeRectHeight + verticalPadding))) + 12 + paddingTop) + \")\";\n })\n .attr(\"width\", 5)\n .attr(\"height\", nodeRectHeight)\n .attr(\"rx\", 6)\n .attr(\"ry\", 6);\n const textLable = columnData.select(\"text\");\n textLable\n .attr(\"y\", -6)\n .attr(\"dy\", (nodeRectHeight) + 14)\n .attr(\"dx\", 0)\n .attr(\"height\", 20)\n .attr(\"width\", 29)\n .text(function (d, i) {\n return d[(context.columnData()[colIndex]).ColumnDropdownList()];\n });\n columnData.exit().remove();\n }\n }\n }\n exit(domNode, element) {\n super.exit(domNode, element);\n }\n\n getIds() {\n const dropdownList = this.columns();\n dropdownList.unshift(\"default\");\n return dropdownList;\n }\n}\nOpportunity.prototype._class += \" other_Opportunity\";\nOpportunity.prototype.Column = Column;\nOpportunity.prototype.MouseHoverColumn = MouseHoverColumn;\nOpportunity.prototype.ColumnDropdown = ColumnDropdown;\n\nexport interface Opportunity {\n previousGroup(): string;\n previousGroup(_: string): this;\n previousGroup_exists(): boolean;\n currentGroup(): string;\n currentGroup(_: string): this;\n currentGroup_exists(): boolean;\n opportunityId(): string;\n opportunityId(_: string): this;\n opportunityId_exists(): boolean\n url(): string;\n url(_: string): this;\n url_exists(): boolean;\n // width(): number;\n // width(_: number): this;\n addColumn(): string;\n addColumn(_: string): this;\n addColumn_exists(): boolean;\n removeColumn(): string;\n removeColumn(_: string): this;\n removeColumn_exists(): boolean;\n headerLabels(): any[];\n headerLabels(_: any[]): this;\n headerLabels_exists(): boolean;\n mouseHover(): any[];\n mouseHover(_: any[]): this;\n mouseHover_exists(): boolean;\n columnData(): any[];\n columnData(_: any[]): this;\n columnData_exists(): boolean;\n}\n\nOpportunity.prototype.publish(\"previousGroup\", \"\", \"set\", \"label in Opportunity\", function () { return this.getIds(); }, { tags: [\"Basic\", \"Shared\"] });\nOpportunity.prototype.publish(\"currentGroup\", \"\", \"set\", \"label in Opportunity\", function () { return this.getIds(); }, { tags: [\"Basic\", \"Shared\"] });\nOpportunity.prototype.publish(\"opportunityId\", \"id\", \"set\", \"Id for label in Opportunity\", function () { return this.getIds(); }, { tags: [\"Basic\", \"Shared\"] });\nOpportunity.prototype.publish(\"url\", null, \"string\", \"URL in Opportunity\", {}, { tags: [\"Basic\", \"Shared\"] });\nOpportunity.prototype.publish(\"width\", 1100, \"number\", \"label in Opportunity\", {}, { tags: [\"Basic\", \"Shared\"] });\nOpportunity.prototype.publish(\"addColumn\", null, \"string\", \"number of columns in a table\", {}, {\n tags: [\"Basic\", \"Shared\"],\n editor_input: (context, widget, cell, param) => {\n cell.append(\"button\")\n .attr(\"id\", context.id() + \"_addColumn\" + param.id)\n .classed(\"property-input custom-editor-input addColumn update\", true)\n .text(\"AddColumn\")\n .on(\"click\", function () {\n widget.groupCount = widget.groupCount + 1;\n const new_value_after_click = \"Added a new column\";\n context.setProperty(widget, param.id, new_value_after_click);\n });\n }\n});\nOpportunity.prototype.publish(\"removeColumn\", null, \"string\", \"number of columns in a table\", function () { return this.columns(); }, {\n tags: [\"Basic\", \"Shared\"],\n editor_input: (context, widget, cell, param) => {\n cell.append(\"button\")\n .attr(\"id\", context.id() + \"_removeColumn\" + param.id)\n .classed(\"property-input custom-editor-input removeColumn update\", true)\n .text(\"RemoveColumn\")\n .on(\"click\", function () {\n widget.groupCount = widget.groupCount - 1;\n const new_value_after_click = \"Removed a column\";\n context.setProperty(widget, param.id, new_value_after_click);\n });\n }\n});\nOpportunity.prototype.publish(\"headerLabels\", [], \"propertyArray\", \"Source Columns\", null, { autoExpand: Column });\nOpportunity.prototype.publish(\"mouseHover\", [], \"propertyArray\", \"mouse hover options\", null, { autoExpand: MouseHoverColumn });\nOpportunity.prototype.publish(\"columnData\", [], \"propertyArray\", \"column data\", null, { autoExpand: ColumnDropdown });\n","export function discover(widget) {\n return widget.publishedProperties(false, true);\n}\n\nexport function widgetArrayWalker(widgets, visitor) {\n if (!widgets)\n return;\n widgets.forEach(function (widget) {\n widget.widgetWalker(visitor);\n });\n}\n\nexport function widgetPropertyWalker(widget2, visitor, filter?) {\n widget2.widgetWalker(function (widget) {\n widget.propertyWalker(visitor, filter);\n });\n}\n\nexport function serializeTheme(widget, filter) {\n return JSON.stringify(serializeThemeToObject(widget, filter));\n}\n\nexport function serializeThemeToObject(widget2, filter?) {\n filter = filter || [\"surface\", \"Color\", \"Font\", \"palette\"];\n\n const propObj = {};\n widgetPropertyWalker(widget2, null, function (widget, item) {\n if (widget[item.id + \"_modified\"]() || widget.publishedProperty(item.id).origDefaultValue !== widget.publishedProperty(item.id).defaultValue) {\n if (_isFilterMatch(item.id, filter)) {\n const classParts = widget._class.trim().split(\" \");\n for (const i in classParts) {\n if (classParts.HasOwnProperty(i)) {\n if (propObj[classParts[i]] === undefined) {\n propObj[classParts[i]] = {};\n }\n if (propObj[classParts[i]][item.id] === undefined) {\n propObj[classParts[i]][item.id] = widget[item.id]();\n break;\n } else if (propObj[classParts[i]][item.id] === widget[item.id]()) {\n break;\n }\n }\n }\n }\n }\n });\n\n function _isFilterMatch(str, arr) {\n let ret = false;\n for (const i in arr) {\n if (str.indexOf(arr[i]) !== -1) {\n ret = true;\n break;\n }\n }\n return ret;\n }\n return propObj;\n}\nexport function removeTheme(widget2, callback) {\n widgetPropertyWalker(widget2, null, function (widget, item) {\n widget.publishedProperty(item.id).defaultValue = widget.publishedProperty(item.id).origDefaultValue;\n });\n\n if (typeof (callback) === \"function\") {\n callback.call(this);\n }\n}\nexport function applyTheme(widget2, themeObj, callback) {\n const context = this;\n widgetPropertyWalker(widget2, null, function (widget3, item) {\n switch (item.type) {\n case \"widget\":\n context.applyTheme(widget3[item.id](), themeObj);\n return true;\n case \"widgetArray\":\n const widgetArray = widget3[item.id]();\n widgetArray.forEach(function (widget) {\n context.applyTheme(widget, themeObj);\n }, this);\n return true;\n default:\n widget3.applyTheme(themeObj);\n break;\n }\n });\n if (typeof (callback) === \"function\") {\n callback.call(this);\n }\n}\n\nexport function serializeToObject(widget, filter?, includeData?, includeState?) {\n const retVal: any = {\n __class: widget.classID()\n };\n if (widget._id.indexOf(widget._idSeed) !== 0) {\n retVal.__id = widget._id;\n }\n if (widget.version) {\n retVal.__version = widget.version();\n }\n retVal.__properties = {};\n\n widget.propertyWalker((childWwidget2, item) => {\n if (childWwidget2[item.id + \"_modified\"]()) {\n switch (item.type) {\n case \"widget\":\n retVal.__properties[item.id] = serializeToObject(childWwidget2[item.id](), null, includeData, includeState && !widget.serializeState); // Only include state once\n return true;\n case \"widgetArray\":\n case \"propertyArray\":\n retVal.__properties[item.id] = [];\n const widgetArray = childWwidget2[item.id]();\n widgetArray.forEach((childWwidget) => {\n retVal.__properties[item.id].push(serializeToObject(childWwidget, null, includeData, includeState && !widget.serializeState)); // Only include state once\n });\n return true;\n default:\n retVal.__properties[item.id] = childWwidget2[item.id]();\n break;\n }\n }\n }, filter);\n\n if (widget.classID() === \"marshaller_Graph\") {\n const vertices = widget.data().vertices;\n if (vertices) {\n this.__vertices = vertices.map(item => {\n return serializeToObject(item, null, includeData, includeState && !widget.serializeState);\n });\n }\n }\n if (includeData && widget.data) {\n if (!retVal.__data) retVal.__data = {};\n retVal.__data.data = widget.data();\n }\n if (includeState) {\n if (widget.serializeState) {\n retVal.__state = widget.serializeState();\n } else if (widget.data) {\n retVal.__state = {\n data: widget.data()\n };\n }\n }\n return retVal;\n}\n\nexport function serialize(widget, filter?, includeData?, includeState?) {\n return JSON.stringify(serializeToObject(widget, filter, includeData, includeState));\n}\n","import { HTMLWidget, Platform, PropertyExt, Widget } from \"@hpcc-js/common\";\nimport { Grid } from \"@hpcc-js/layout\";\nimport { local as d3Local, select as d3Select, selectAll as d3SelectAll } from \"d3-selection\";\nimport * as Persist from \"./Persist.ts\";\n\nimport \"../src/PropertyEditor.css\";\n\nfunction hasProperties(type) {\n switch (type) {\n case \"widget\":\n case \"widgetArray\":\n case \"propertyArray\":\n return true;\n default:\n }\n return false;\n}\n\nexport class PropertyEditor extends HTMLWidget {\n _widgetOrig;\n _parentPropertyEditor;\n _show_settings: boolean;\n _selectedItems;\n __meta_sorting;\n _watch;\n private _childPE = d3Local<PropertyEditor>();\n\n constructor() {\n super();\n this._parentPropertyEditor = null;\n\n this._tag = \"div\";\n this._show_settings = false;\n }\n\n parentPropertyEditor(_?: PropertyEditor): PropertyEditor {\n if (!arguments.length) return this._parentPropertyEditor;\n this._parentPropertyEditor = _;\n return this;\n }\n\n depth(): number {\n let retVal = 0;\n let parent = this.parentPropertyEditor();\n while (parent) {\n ++retVal;\n parent = parent.parentPropertyEditor();\n }\n return retVal;\n }\n\n _show_header = true;\n show_header(): boolean;\n show_header(_: boolean): PropertyEditor;\n show_header(_?: boolean): boolean | PropertyEditor {\n if (!arguments.length) {\n return this._show_header;\n }\n this._show_header = _;\n return this;\n }\n\n show_settings(): boolean;\n show_settings(_: boolean): PropertyEditor;\n show_settings(_?: boolean): boolean | PropertyEditor {\n if (!arguments.length) {\n return this._show_settings;\n }\n this._show_settings = _;\n return this;\n }\n\n rootWidgets() {\n if (this._selectedItems && this._selectedItems.length) {\n return this._selectedItems;\n }\n return this.show_settings() ? [this] : this.widget() ? [this.widget()] : [];\n }\n\n update(domNode, element) {\n super.update(domNode, element);\n\n const context = this;\n\n const rootWidgets = this.rootWidgets().filter(function (w) {\n if (w._owningWidget && w._owningWidget.excludeObjs instanceof Array) {\n if (w._owningWidget.excludeObjs.indexOf(w.classID()) !== -1) {\n return false;\n }\n }\n return true;\n });\n\n const table = element.selectAll(`table.property-table.table-${this.depth()}`).data(rootWidgets, function (d) {\n // We reuse the existing DOM Nodes and this node _might_ have been a regular Input previously ---\n if (typeof d.id !== \"function\") {\n return `meta-${d.id}`;\n }\n return d.id();\n });\n table.enter().append(\"table\")\n .attr(\"class\", `property-table table-${this.depth()}`)\n .each(function () {\n const tableElement = d3Select(this);\n\n // Header ---\n if (context._show_header && context.parentPropertyEditor() === null) {\n tableElement.append(\"thead\").append(\"tr\").append(\"th\")// .datum(tableElement)\n .attr(\"colspan\", \"2\")\n .each(function () {\n context.enterHeader(d3Select(this));\n })\n ;\n }\n\n // Body ---\n tableElement.append(\"tbody\");\n })\n .merge(table)\n .each(function (tableData) {\n const tableElement = d3Select(this);\n\n // Header ---\n if (context._show_header && context.parentPropertyEditor() === null) {\n context.updateHeader(tableElement.select(\"thead > tr > th\"));\n }\n\n // Body ---\n context.renderInputs(tableElement.select(\"tbody\"), tableData);\n })\n ;\n table.exit()\n .each(function () {\n context.renderInputs(element.select(\"tbody\"), null);\n })\n .remove()\n ;\n }\n\n exit(domNode, element) {\n super.exit(domNode, element);\n this.watchWidget(null);\n }\n\n private watchDepth = 0;\n watchWidget(widget) {\n if (this._watch) {\n if ((window as any).__hpcc_debug) {\n --this.watchDepth;\n console.info(\"watchDepth: \" + this.watchDepth);\n }\n this._watch.remove();\n delete this._watch;\n }\n if (widget) {\n const context = this;\n this._watch = widget.monitor(function (_paramId, newVal, oldVal) {\n if (oldVal !== newVal) {\n const propEditor = context.parentPropertyEditor() || context;\n propEditor.lazyRender();\n }\n });\n if ((window as any).__hpcc_debug) {\n ++this.watchDepth;\n console.info(\"watchDepth: \" + this.watchDepth);\n }\n }\n }\n\n enterHeader(th) {\n const context = this;\n\n th.append(\"span\");\n th.append(\"i\")\n .attr(\"class\", \"expandIcon fa\")\n .on(\"click\", function () {\n switch (context.peInputIcon()) {\n case \"fa-caret-up\":\n case \"fa-caret-right\":\n context.element().selectAll(`.table-${context.depth()} > tbody > tr > .headerRow > .peInput > .property-table-collapsed`)\n .classed(\"property-table-collapsed\", false)\n ;\n context.element().selectAll(`.table-${context.depth()} > tbody > tr > .headerRow > .peInput > i`)\n .classed(\"fa-minus-square-o\", true)\n .classed(\"fa-plus-square-o\", false)\n ;\n break;\n case \"fa-caret-down\":\n context.element().selectAll(`.table-${context.depth()} > tbody > tr > .headerRow > .peInput > div`)\n .classed(\"property-table-collapsed\", true)\n ;\n context.element().selectAll(`.table-${context.depth()} > tbody > tr > .headerRow > .peInput > i`)\n .classed(\"fa-minus-square-o\", false)\n .classed(\"fa-plus-square-o\", true)\n ;\n break;\n }\n context.refreshExpandIcon();\n })\n ;\n\n const sortIcon = th.append(\"i\")\n .attr(\"class\", \"sortIcon fa\")\n .on(\"click\", function () {\n context.refreshSortIcon(sortIcon, true);\n })\n ;\n\n th.append(\"i\")\n .attr(\"class\", \"hideParamsIcon fa\")\n .on(\"click\", function () {\n context.hideNonWidgets(!context.hideNonWidgets()).render();\n })\n ;\n }\n\n updateHeader(th) {\n const widget: any = this.widget();\n let spanText = \"\";\n if (widget) {\n if (widget.label) {\n spanText += widget.label();\n }\n if (widget.classID) {\n if (spanText) {\n spanText += \" - \";\n }\n spanText += widget.classID();\n }\n }\n th.select(\"span\")\n .text(spanText)\n ;\n this.refreshExpandIcon();\n this.refreshSortIcon(th.select(\".sortIcon\"));\n this.refreshHideParamsIcon(th.select(\".hideParamsIcon\"));\n }\n\n peInputCount() {\n return this.element().selectAll(`.table-${this.depth()} > tbody > tr > .headerRow > .peInput > div`).size();\n }\n\n peInputCollapsedCount() {\n return this.element().selectAll(`.table-${this.depth()} > tbody > tr > .headerRow > .peInput > div.property-table-collapsed`).size();\n }\n\n peInputIcon(): \"fa-caret-down\" | \"fa-caret-up\" | \"fa-caret-right\" {\n const collapsed = this.peInputCollapsedCount();\n if (collapsed === 0) {\n return \"fa-caret-down\";\n } else if (collapsed === this.peInputCount()) {\n return \"fa-caret-up\";\n }\n return \"fa-caret-right\";\n }\n\n refreshExpandIcon() {\n const newIcon = this.peInputIcon();\n this.element().select(`.table-${this.depth()} > thead > tr > th > .expandIcon`)\n .classed(\"fa-caret-up\", false)\n .classed(\"fa-caret-right\", false)\n .classed(\"fa-caret-down\", false)\n .classed(newIcon, true)\n ;\n }\n\n refreshSortIcon(sortIcon, increment = false) {\n const sort = this.sorting();\n const types = this.sorting_options();\n const icons = this.__meta_sorting.ext.icons;\n if (increment) {\n sortIcon.classed(icons[types.indexOf(sort)], false);\n this.sorting(types[(types.indexOf(sort) + 1) % types.length]).render();\n } else {\n sortIcon\n .classed(icons[(types.indexOf(sort)) % types.length], true)\n .attr(\"title\", sort)\n ;\n }\n }\n\n refreshHideParamsIcon(hideParamsIcon) {\n hideParamsIcon\n .classed(\"fa-eye\", !this.hideNonWidgets())\n .classed(\"fa-eye-slash\", this.hideNonWidgets())\n ;\n }\n\n gatherDataTree(widget) {\n if (!widget) return null;\n const retVal = {\n label: widget.id() + \" (\" + widget.classID() + \")\",\n children: []\n };\n const arr2 = Persist.discover(widget);\n arr2.forEach(function (prop) {\n const node = {\n label: prop.id,\n children: []\n };\n switch (prop.type) {\n case \"widget\":\n node.children.push(this.gatherDataTree(widget[prop.id]()));\n break;\n case \"widgetArray\":\n case \"propertyArray\":\n const arr = widget[prop.id]();\n if (arr) {\n arr.forEach(function (item) {\n node.children.push(this.gatherDataTree(item));\n }, this);\n }\n break;\n default:\n }\n retVal.children.push(node);\n }, this);\n return retVal;\n }\n\n getDataTree() {\n return this.gatherDataTree(this.widget());\n }\n\n _rowSorting(paramArr) {\n if (this.sorting() === \"type\") {\n const typeOrder = [\"boolean\", \"number\", \"string\", \"html-color\", \"array\", \"object\", \"widget\", \"widgetArray\", \"propertyArray\"];\n paramArr.sort(function (a, b) {\n if (a.type === b.type) {\n return a.id < b.id ? -1 : 1;\n } else {\n return typeOrder.indexOf(a.type) < typeOrder.indexOf(b.type) ? -1 : 1;\n }\n });\n } else if (this.sorting() === \"A-Z\") {\n paramArr.sort(function (a, b) { return a.id < b.id ? -1 : 1; });\n } else if (this.sorting() === \"Z-A\") {\n paramArr.sort(function (a, b) { return a.id > b.id ? -1 : 1; });\n }\n }\n\n filterInputs(d) {\n const discArr = Persist.discover(d);\n if ((this.filterTags() || this.excludeTags().length > 0 || this.excludeParams.length > 0) && d instanceof PropertyEditor === false) {\n const context = this;\n return discArr.filter(function (param, _idx) {\n if (d[param.id + \"_hidden\"] && d[param.id + \"_hidden\"]()) return false;\n for (const excludeParamItem of context.excludeParams()) {\n const arr = excludeParamItem.split(\".\");\n let widgetName;\n let excludeParam;\n if (arr.length > 2) {\n widgetName = arr[0];\n excludeParam = arr[2];\n } else {\n widgetName = arr[0];\n excludeParam = arr[1];\n }\n if (d.class().indexOf(widgetName) !== -1) {\n if (param.id === excludeParam) {\n return false;\n }\n return true;\n }\n }\n if (context.excludeTags().length > 0 && param.ext && param.ext.tags && param.ext.tags.some(function (item) { return (context.excludeTags().indexOf(item) > -1); })) {\n return false;\n }\n if ((context.filterTags() && param.ext && param.ext.tags && param.ext.tags.indexOf(context.filterTags()) !== -1) || !context.filterTags()) {\n return true;\n }\n return false;\n });\n }\n return discArr;\n }\n\n renderInputs(element, d) {\n const context = this;\n let discArr = [];\n const showFields = !this.show_settings() && this.showFields();\n if (d) {\n discArr = this.filterInputs(d).filter(function (prop) { return prop.id !== \"fields\" ? true : showFields; });\n if (!this.show_settings() && this.showData() && d.data) {\n discArr.push({ id: \"data\", type: \"array\" });\n }\n if (this.hideNonWidgets()) {\n discArr = discArr.filter(function (n) {\n return hasProperties(n.type);\n });\n }\n this._rowSorting(discArr);\n }\n\n const rows = element.selectAll(\"tr.prop\" + this.id()).data(discArr, function (d2) { return d2.id; });\n rows.enter().append(\"tr\")\n .attr(\"class\", \"property-wrapper prop\" + this.id())\n .each(function (param) {\n const tr = d3Select(this);\n if (hasProperties(param.type)) {\n tr.classed(\"property-widget-wrapper\", true);\n tr.append(\"td\")\n .attr(\"colspan\", \"2\")\n ;\n } else {\n tr.classed(\"property-input-wrapper\", true);\n tr.append(\"td\")\n .classed(\"property-label\", true)\n .text(param.id)\n ;\n const inputCell = tr.append(\"td\")\n .classed(\"property-input-cell\", true)\n ;\n context.enterInputs(d, inputCell, param);\n }\n }).merge(rows)\n .each(function (param) {\n const tr = d3Select(this);\n tr.classed(\"disabled\", d[param.id + \"_disabled\"] && d[param.id + \"_disabled\"]());\n tr.classed(\"invalid\", d[param.id + \"_valid\"] && !d[param.id + \"_valid\"]());\n tr.attr(\"title\", param.description);\n if (hasProperties(param.type)) {\n context.updateWidgetRow(d, tr.select(\"td\"), param);\n } else {\n context.updateInputs(d, param);\n }\n });\n rows.exit().each(function (param) {\n const tr = d3Select(this);\n if (hasProperties(param.type)) {\n context.updateWidgetRow(d, tr.select(\"td\"), null);\n }\n }).remove();\n rows.order();\n }\n\n updateWidgetRow(widget: PropertyExt, element, param) {\n let tmpWidget = [];\n if (widget && param) {\n tmpWidget = widget[param.id]() || [];\n }\n let widgetArr = tmpWidget instanceof Array ? tmpWidget : [tmpWidget];\n if (param && param.ext && param.ext.autoExpand) {\n // remove empties and ensure last row is an empty ---\n let lastModified = true;\n const noEmpties = widgetArr.filter(function (row, idx) {\n lastModified = row.valid();\n row._owner = widget;\n return lastModified || idx === widgetArr.length - 1;\n }, this);\n const widgetDisabled = widget[param.id + \"_disabled\"] && widget[param.id + \"_disabled\"]();\n let changed = !!(widgetArr.length - noEmpties.length);\n if (lastModified && !widgetDisabled) {\n changed = true;\n const autoExpandWidget = new param.ext.autoExpand()\n .owner(widget)\n ;\n // autoExpandWidget.monitor((id, newVal, oldVal, source) => {\n // widget.broadcast(param.id, newVal, oldVal, source);\n // });\n noEmpties.push(autoExpandWidget);\n }\n if (changed) {\n widget[param.id](noEmpties);\n widgetArr = noEmpties;\n }\n }\n\n const context = this;\n element.classed(\"headerRow\", true);\n const peInput = element.selectAll(`div.peInput-${this.depth()}`).data(widgetArr, function (d) { return d.id(); });\n peInput.enter().append(\"div\")\n .attr(\"class\", `peInput peInput-${this.depth()}`)\n .each(function (w) {\n const peInputElement = d3Select(this);\n\n // Header ---\n peInputElement.append(\"span\");\n peInputElement.append(\"i\")\n .attr(\"class\", \"fa\")\n .on(\"click\", function (d) {\n const clickTarget = peInputElement.select(\"div\");\n clickTarget\n .classed(\"property-table-collapsed\", !clickTarget.classed(\"property-table-collapsed\"))\n ;\n d3Select(this)\n .classed(\"fa-minus-square-o\", !clickTarget.classed(\"property-table-collapsed\"))\n .classed(\"fa-plus-square-o\", clickTarget.classed(\"property-table-collapsed\"))\n ;\n context.refreshExpandIcon();\n })\n ;\n\n // Body ---\n const peDiv = peInputElement.append(\"div\")\n // .attr(\"class\", `property- input - cell propEditor-${context.depth() }`)\n ;\n context._childPE.set(this, new PropertyEditor().label(param.id).target(peDiv.node() as HTMLElement));\n })\n .merge(peInput)\n .each(function (w) {\n const peInputElement = d3Select(this);\n const clickTarget = peInputElement.select(\"div\");\n\n // Header ---\n d3Select(this).select(\"span\")\n .text(`${param.id}`)\n ;\n\n d3Select(this).select(\"i\")\n .classed(\"fa-minus-square-o\", !clickTarget.classed(\"property-table-collapsed\"))\n .classed(\"fa-plus-square-o\", clickTarget.classed(\"property-table-collapsed\"))\n ;\n\n // Body ---\n context._childPE.get(this)\n .parentPropertyEditor(context)\n .showFields(context.showFields())\n .showData(context.showData())\n .sorting(context.sorting())\n .filterTags(context.filterTags())\n .excludeTags(context.excludeTags())\n .excludeParams(context.excludeParams())\n .hideNonWidgets(context.hideNonWidgets() && w._class.indexOf(\"layout_\") >= 0)\n .widget(w)\n .render()\n ;\n })\n ;\n peInput.exit()\n .each(function (w) {\n context._childPE.get(this)\n .widget(null)\n .render()\n .target(null)\n ;\n context._childPE.remove(this);\n })\n .remove()\n ;\n }\n\n setProperty(widget, id, value) {\n // With PropertyExt not all \"widgets\" have a render, if not use top most render...\n let topWidget: Widget;\n let topPropEditor: Widget;\n let propEditor: PropertyEditor = this;\n let oldValue;\n while (propEditor && widget) {\n if (propEditor === this) {\n oldValue = widget[id]();\n widget[id](value);\n }\n if (propEditor) {\n topPropEditor = propEditor;\n const w: PropertyExt = propEditor.widget();\n if (w instanceof Widget) {\n topWidget = w;\n }\n }\n propEditor = propEditor.parentPropertyEditor();\n }\n if (topWidget) {\n topWidget.render();\n }\n if (topPropEditor) {\n topPropEditor.broadcast(id, value, oldValue, widget);\n }\n }\n\n enterInputs(widget, cell, param) {\n cell.classed(param.type + \"-cell\", true);\n const context = this;\n if (typeof (param.ext.editor_input) === \"function\") {\n param.ext.editor_input(this, widget, cell, param);\n }\n switch (param.type) {\n case \"boolean\":\n cell.append(\"input\")\n .attr(\"id\", this.id() + \"_\" + param.id)\n .classed(\"property-input\", true)\n .attr(\"type\", \"checkbox\")\n .on(\"change\", function () {\n context.setProperty(widget, param.id, this.checked);\n })\n ;\n break;\n case \"set\":\n cell.append(\"select\")\n .attr(\"id\", this.id() + \"_\" + param.id)\n .classed(\"property-input\", true)\n .on(\"change\", function () {\n context.setProperty(widget, param.id, this.value);\n })\n ;\n break;\n case \"array\":\n case \"object\":\n cell.append(\"textarea\")\n .attr(\"id\", this.id() + \"_\" + param.id)\n .classed(\"property-input\", true)\n .attr(\"autocomplete\", \"off\")\n .attr(\"autocorrect\", \"off\")\n .attr(\"autocapitalize\", \"off\")\n .attr(\"spellcheck\", \"false\")\n .on(\"change\", function () {\n let value;\n try {\n value = JSON.parse(this.value);\n } catch (e) {\n value = this.value;\n }\n context.setProperty(widget, param.id, value);\n })\n ;\n break;\n default:\n if (param.ext && param.ext.range) {\n cell.append(\"span\")\n .classed(\"property-input-span\", true)\n .attr(\"id\", this.id() + \"_\" + param.id + \"_currentVal\")\n .text(param.defaultValue)\n ;\n cell.append(\"input\")\n .attr(\"type\", \"range\")\n .attr(\"step\", param.ext.range.step)\n .attr(\"min\", param.ext.range.min)\n .attr(\"max\", param.ext.range.max)\n .attr(\"id\", this.id() + \"_\" + param.id)\n .classed(\"property-input\", true)\n .on(\"input\", function () {\n context.setProperty(widget, param.id, this.value);\n d3Select(\"#\" + this.id + \"_currentVal\").text(\"Current Value: \" + this.value);\n })\n .on(\"change\", function () {\n context.setProperty(widget, param.id, this.value);\n d3Select(\"#\" + this.id + \"_currentVal\").text(\"Current Value: \" + this.value);\n })\n ;\n } else {\n cell.append(param.ext && param.ext.multiline ? \"textarea\" : \"input\")\n .attr(\"id\", this.id() + \"_\" + param.id)\n .classed(\"property-input\", true)\n .attr(\"autocomplete\", \"off\")\n .attr(\"autocorrect\", \"off\")\n .attr(\"autocapitalize\", \"off\")\n .attr(\"spellcheck\", \"false\")\n .on(\"change\", function () {\n context.setProperty(widget, param.id, this.value);\n })\n ;\n if (param.type === \"html-color\" && !Platform.isIE) {\n cell.append(\"input\")\n .attr(\"id\", this.id() + \"_\" + param.id + \"_2\")\n .classed(\"property-input\", true)\n .attr(\"type\", \"color\")\n .on(\"change\", function () {\n context.setProperty(widget, param.id, this.value);\n })\n ;\n }\n }\n break;\n }\n }\n\n updateInputs(widget, param) {\n const element = d3SelectAll(\"#\" + this.id() + \"_\" + param.id + \", #\" + this.id() + \"_\" + param.id + \"_2\");\n const val = widget ? widget[param.id]() : \"\";\n element.property(\"disabled\", widget[param.id + \"_disabled\"] && widget[param.id + \"_disabled\"]());\n element.property(\"invalid\", widget[param.id + \"_valid\"] && !widget[param.id + \"_valid\"]());\n switch (param.type) {\n case \"boolean\":\n element.property(\"checked\", val);\n break;\n case \"set\":\n const options = element.selectAll(\"option\").data<string | { value: string, text: string }>(widget[param.id + \"_options\"]());\n options.enter().append(\"option\")\n .merge(options as any)\n .attr(\"value\", (d: any) => (d && d.value !== undefined) ? d.value : d)\n .text((d: any) => (d && d.text !== undefined) ? d.text : d)\n ;\n options.exit().remove();\n element.property(\"value\", val);\n break;\n case \"array\":\n case \"object\":\n element.property(\"value\", JSON.stringify(val, function replacer(_key, value) {\n if (value instanceof Widget) {\n return Persist.serialize(value);\n }\n return value;\n }, \" \"));\n break;\n default:\n if (param.ext && param.ext.range) {\n d3Select(\"#\" + this.id() + \"_\" + param.id + \"_currentVal\").text(\"Current Value: \" + val);\n }\n element.property(\"value\", val && val.length && val.length > 100000 ? \"...too big to display...\" : val);\n break;\n }\n }\n}\nPropertyEditor.prototype._class += \" other_PropertyEditor\";\n\nexport interface PropertyEditor {\n showFields(): boolean;\n showFields(_: boolean): this;\n showData(): boolean;\n showData(_: boolean): this;\n\n sorting(): string;\n sorting(_: string): this;\n sorting_options(): string[];\n sorting_options(_: string[]): this;\n\n hideNonWidgets(): boolean;\n hideNonWidgets(_: boolean): this;\n\n label(): string;\n label(_: string): this;\n filterTags(): string;\n filterTags(_: string): this;\n excludeTags(): string[];\n excludeTags(_: string[]): this;\n excludeParams(): string[];\n excludeParams(_: string[]): this;\n\n widget(): PropertyExt;\n widget(_: PropertyExt): this;\n}\n\nPropertyEditor.prototype.publish(\"showFields\", false, \"boolean\", \"If true, widget.fields() will display as if it was a publish parameter.\", null, { tags: [\"Basic\"] });\nPropertyEditor.prototype.publish(\"showData\", false, \"boolean\", \"If true, widget.data() will display as if it was a publish parameter.\", null, { tags: [\"Basic\"] });\n\nPropertyEditor.prototype.publish(\"sorting\", \"none\", \"set\", \"Specify the sorting type\", [\"none\", \"A-Z\", \"Z-A\", \"type\"], { tags: [\"Basic\"], icons: [\"fa-sort\", \"fa-sort-alpha-asc\", \"fa-sort-alpha-desc\", \"fa-sort-amount-asc\"] });\n\nPropertyEditor.prototype.publish(\"hideNonWidgets\", false, \"boolean\", \"Hides non-widget params (at this tier only)\", null, { tags: [\"Basic\"] });\n\nPropertyEditor.prototype.publish(\"label\", \"\", \"string\", \"Label to display in header of property editor table\", null, { tags: [\"Basic\"] });\nPropertyEditor.prototype.publish(\"filterTags\", \"\", \"set\", \"Only show Publish Params of this type\", [\"Basic\", \"Intermediate\", \"Advance\", \"\"], {});\nPropertyEditor.prototype.publish(\"excludeTags\", [\"Private\"], \"array\", \"Exclude this array of tags\", null, {});\nPropertyEditor.prototype.publish(\"excludeParams\", [], \"array\", \"Exclude this array of params (widget.param)\", null, {});\n\nPropertyEditor.prototype.publish(\"widget\", null, \"widget\", \"Widget\", null, { tags: [\"Basic\"], render: false });\n\nconst _widgetOrig = PropertyEditor.prototype.widget;\n(PropertyEditor.prototype as any).widget = function (_?: Widget): Widget | PropertyEditor {\n if (arguments.length && _widgetOrig.call(this) === _) return this;\n const retVal = _widgetOrig.apply(this, arguments);\n if (arguments.length) {\n this.watchWidget(_);\n if (_ instanceof Grid) {\n const context = this;\n _.postSelectionChange = function () {\n context._selectedItems = _._selectionBag.get().map(function (item) { return item.widget; });\n context.lazyRender();\n };\n }\n }\n return retVal;\n};\n","import { HTMLWidget } from \"@hpcc-js/common\";\nimport { select as d3Select } from \"d3-selection\";\n\nimport \"../src/RadioCheckbox.css\";\n\nexport class RadioCheckbox extends HTMLWidget {\n _span;\n _label;\n _Checkbox;\n\n constructor() {\n super();\n }\n\n rcData() {\n if (this.data().length === 0) return [];\n const view = this._db.rollupView([this.textColumn(), this.valueColumn()]);\n let retVal = [];\n retVal = retVal.concat(view.entries().map(function (row) {\n return {\n text: row.key,\n value: row.values.length ? row.values[0].key : \"\",\n origRow: row.values.length && row.values[0].values.length ? row.values[0].values[0] : []\n };\n }, this));\n if (this.sort_exists()) {\n const descending = this.sort() === \"descending\";\n retVal.sort(function (l, r) {\n if (l.text < r.text) return descending ? 1 : -1;\n if (l.text > r.text) return descending ? -1 : 1;\n return 0;\n });\n }\n return retVal;\n }\n\n enter(domNode, element) {\n super.enter(domNode, element);\n this._span = element.append(\"span\");\n this._label = this._span.append(\"label\")\n .attr(\"for\", this.id() + \"_radioCheckbox\")\n ;\n this._Checkbox = this._span.append(\"div\")\n .attr(\"id\", this.id() + \"_radioCheckbox\");\n }\n\n update(domNode, element) {\n super.update(domNode, element);\n const context = this;\n this._label\n .text(this.label())\n ;\n const radioCheckbox = this._Checkbox.selectAll(\".dataRow\").data(this.rcData());\n radioCheckbox.enter().append(\"div\")\n .attr(\"class\", \"dataRow\")\n .each(function (row, idx) {\n const checkboxDiv = d3Select(this);\n const id = context.id() + \"_checkbox_\" + idx;\n checkboxDiv.append(\"input\")\n .attr(\"id\", id)\n .attr(\"name\", context.id() + \"_radioCheckbox\")\n .on(\"change\", function (selectedData) {\n context.handleClick();\n });\n checkboxDiv.append(\"label\")\n .attr(\"for\", id);\n });\n radioCheckbox\n .each(function (row, idx) {\n const rcDiv = d3Select(this);\n rcDiv.select(\"input\")\n .attr(\"type\", context.multiple() ? \"checkbox\" : \"radio\")\n .attr(\"value\", row.value);\n rcDiv.select(\"label\")\n .text(row.text);\n });\n radioCheckbox.exit().remove();\n radioCheckbox.order();\n }\n\n exit(domNode, element) {\n this._span.remove();\n super.exit(domNode, element);\n }\n\n handleClick() {\n const options = [];\n this._Checkbox.selectAll(\".dataRow > input\")\n .each(function (row, idx) {\n const input = d3Select(this);\n if (input.property(\"checked\") && row && row.origRow) {\n options.push(row.origRow);\n }\n });\n if (options.length) {\n // TODO Handle Multiple Selections - part of 1.16.x\n this.click(this.rowToObj(options[0]), this.valueColumn(), true);\n } else {\n this.click([], this.valueColumn(), false);\n }\n }\n\n click(row, column, selected) {\n }\n}\nRadioCheckbox.prototype._class += \" other_RadioCheckbox\";\n\nexport interface RadioCheckbox {\n label(): string;\n label(_: string): this;\n label_exists(): boolean;\n valueColumn(): string;\n valueColumn(_: string): this;\n valueColumn_exists(): boolean;\n textColumn(): string;\n textColumn(_: string): this;\n textColumn_exists(): boolean;\n sort(): string;\n sort(_: string): this;\n sort_exists\n multiple(): boolean;\n multiple(_: boolean): this;\n multiple_exists(): boolean;\n}\n\nRadioCheckbox.prototype.publish(\"label\", null, \"string\", \"Label for RadioCheckbox\");\nRadioCheckbox.prototype.publish(\"valueColumn\", null, \"set\", \"RadioCheckbox display value\", function () { return this.columns(); }, { optional: true });\nRadioCheckbox.prototype.publish(\"textColumn\", null, \"set\", \"RadioCheckbox value(s)\", function () { return this.columns(); }, { optional: true });\nRadioCheckbox.prototype.publish(\"sort\", null, \"set\", \"Sort contents\", [\"\", \"ascending\", \"descending\"], { optional: true });\nRadioCheckbox.prototype.publish(\"multiple\", false, \"boolean\", \"Multiple selection\");\n","import { HTMLWidget } from \"@hpcc-js/common\";\nimport { select as d3Select } from \"d3-selection\";\n\nimport \"../src/Select.css\";\n\nexport class Select extends HTMLWidget {\n _span;\n _prompt;\n _select;\n\n constructor() {\n super();\n }\n\n selectData() {\n if (this.data().length === 0) return [];\n const view = this._db.rollupView([this.textColumn(), this.valueColumn()]);\n let retVal = [];\n retVal = retVal.concat(view.entries().map(function (row) {\n return {\n text: row.key,\n value: row.values.length ? row.values[0].key : \"\",\n origRow: row.values.length && row.values[0].value.length ? row.values[0].value[0] : []\n };\n }, this));\n if (this.sort_exists()) {\n const descending = this.sort() === \"descending\";\n retVal.sort(function (l, r) {\n if (l.text < r.text) return descending ? 1 : -1;\n if (l.text > r.text) return descending ? -1 : 1;\n return 0;\n });\n }\n if (this.optional()) {\n retVal.unshift({ value: \"\", text: \"\" });\n }\n return retVal;\n }\n\n enter(domNode, element) {\n super.enter(domNode, element);\n this._span = element.append(\"span\");\n this._prompt = this._span.append(\"label\")\n .attr(\"for\", this.id() + \"_select\")\n ;\n\n const context = this;\n this._select = this._span.append(\"select\")\n .attr(\"id\", this.id() + \"_select\")\n .on(\"change\", function (d) {\n const options = [];\n const options_dom_node = context._select.node().options;\n for (let i = 0; i < options_dom_node.length; ++i) {\n const optionNode = options_dom_node[i];\n if (optionNode.selected) {\n options.push((d3Select(optionNode).datum() as any).origRow);\n }\n }\n if (options.length) {\n context.click(context.rowToObj(options[0]), context.valueColumn(), true); // TODO: Multiselect not support in HIPIE\n } else {\n context.click([], context.valueColumn(), false);\n }\n })\n ;\n }\n\n update(domNode, element) {\n super.update(domNode, element);\n\n this._prompt\n .text(this.label())\n ;\n this._select\n .attr(\"multiple\", this.multiple() ? this.multiple() : null)\n .attr(\"size\", this.multiple() && this.selectSize() ? this.selectSize() : null)\n ;\n\n const option = this._select.selectAll(\".dataRow\").data(this.selectData());\n const optionUpdate = option.enter().append(\"option\")\n .attr(\"class\", \"dataRow\")\n .merge(option)\n .attr(\"value\", function (row) { return row.value; })\n .text(function (row) { return row.text; })\n ;\n option.exit().remove();\n optionUpdate.order();\n }\n\n exit(domNode, element) {\n this._span.remove();\n super.exit(domNode, element);\n }\n\n click(row, column, selected) {\n }\n}\nSelect.prototype._class += \" other_Select\";\n\nexport interface Select {\n label(): string;\n label(_: string): this;\n label_exists(): boolean;\n valueColumn(): string;\n valueColumn(_: string): this;\n valueColumn_exists(): boolean;\n textColumn(): string;\n textColumn(_: string): this;\n textColumn_exists(): boolean;\n optional(): boolean;\n optional(_: boolean): this;\n optional_exists(): boolean;\n sort(): string;\n sort(_: string): this;\n sort_exists(): boolean;\n multiple(): boolean;\n multiple(_: boolean): this;\n multiple_exists(): boolean;\n selectSize(): number;\n selectSize(_: number): this;\n selectSize_exists(): boolean;\n}\n\nSelect.prototype.publish(\"label\", null, \"string\", \"Label for select\");\nSelect.prototype.publish(\"valueColumn\", null, \"set\", \"Select display value\", function () { return this.columns(); }, { optional: true });\nSelect.prototype.publish(\"textColumn\", null, \"set\", \"Select value(s)\", function () { return this.columns(); }, { optional: true });\nSelect.prototype.publish(\"optional\", true, \"boolean\", \"Optional Select\");\nSelect.prototype.publish(\"sort\", null, \"set\", \"Sort contents\", [\"\", \"ascending\", \"descending\"], { optional: true });\nSelect.prototype.publish(\"multiple\", false, \"boolean\", \"Multiple selection\");\nSelect.prototype.publish(\"selectSize\", 5, \"number\", \"Size of multiselect box\", null, { disable: w => !w.multiple() });\n","import { HTMLWidget } from \"@hpcc-js/common\";\nimport * as Persist from \"./Persist.ts\";\n\nimport \"../src/ThemeEditor.css\";\n\nfunction hasLocalStorage(): boolean {\n const mod = \"@hpcc-js/other\";\n try {\n localStorage.setItem(mod, mod);\n localStorage.removeItem(mod);\n return true;\n } catch (e) {\n return false;\n }\n}\n\n// Polyfill for IE in file:// mode ----\nconst _localStorage: { getItem: (id: string) => any; } = hasLocalStorage() ? localStorage : {\n getItem(id: string): any {\n return undefined;\n }\n};\n\nconst getThemes = function (idx?) {\n if (typeof ((window as any).g_defaultThemes) === \"function\") {\n (window as any).g_defaultThemes(idx);\n }\n return JSON.parse(_localStorage.getItem(\"themeEditorThemes\") || \"{}\");\n};\nconst getSerials = function (idx?) {\n if (typeof ((window as any).g_defaultSerials) === \"function\") {\n (window as any).g_defaultSerials(idx);\n }\n return JSON.parse(_localStorage.getItem(\"themeEditorSerials\") || \"{}\");\n};\nconst getThemeNames = function (idx?) {\n const loadedThemes = getThemes();\n let themes = [];\n for (const themeName in loadedThemes) {\n themes.push(themeName);\n }\n if (typeof (idx) !== \"undefined\" && typeof (themes[idx]) !== \"undefined\") {\n themes = themes[idx];\n }\n return themes;\n};\nconst getSerialNames = function (idx?) {\n const loadedSerials = getSerials();\n let serials = [];\n for (const serialName in loadedSerials) {\n serials.push(serialName);\n }\n if (typeof (idx) !== \"undefined\" && typeof (serials[idx]) !== \"undefined\") {\n serials = serials[idx];\n }\n return serials;\n};\nconst tableNeedsRedraw = function (context) {\n let needsRedraw = false;\n if (typeof (context._current_grouping) === \"undefined\") {\n context._current_grouping = context._group_params_by;\n } else if (context._current_grouping !== context._group_params_by) {\n needsRedraw = true;\n }\n if (typeof (context._showing_columns) === \"undefined\") {\n context._showing_columns = context.showColumns();\n } else if (context._showing_columns !== context.showColumns()) {\n needsRedraw = true;\n }\n if (typeof (context._showing_data) === \"undefined\") {\n context._showing_data = context.showData();\n } else if (context._showing_data !== context.showData()) {\n needsRedraw = true;\n }\n return needsRedraw;\n};\nconst camelizeString = function (str) {\n const spacedText = str.split(/(?=[0-9A-Z])/).map(function (n) { return n.length > 1 ? n + \" \" : n; }).join(\"\");\n return spacedText.replace(/(?:^|\\s)\\S/g, function (a) { return a.toUpperCase(); });\n};\n\nconst tableInputHtml = function (rowObj, value, widgetArr, idSuffix) {\n let inputHtml = \"\";\n let id = \"te-input-\" + rowObj.id + \"-\" + idSuffix;\n\n let inputType;\n if (typeof (rowObj.ext) !== \"undefined\" && typeof (rowObj.ext.inputType) !== \"undefined\") {\n inputType = rowObj.ext.inputType;\n }\n\n if (typeof (rowObj.inputID) !== \"undefined\") {\n id = rowObj.inputID;\n }\n\n const dataWIDs = \"data-paramid='\" + rowObj.id + \"' data-wids='\" + widgetArr.map(function (w) {\n if (typeof (w.widget) === \"object\") {\n return w.widget._id;\n } else {\n return w;\n }\n }).join(\",\") + \"'\";\n switch (rowObj.type) {\n case \"boolean\":\n const checked = value ? \" checked\" : \"\";\n inputHtml = \"<input id='\" + id + \"' \" + dataWIDs + \" type='checkbox' class='te-checkbox te-input'\" + checked + \">\"; break;\n case \"number\":\n if (typeof (inputType) !== \"undefined\") {\n if (inputType === \"textarea\") {\n inputHtml = \"<textarea id='\" + id + \"' class='te-textarea te-input' \" + dataWIDs + \">\" + value + \"</textarea>\";\n } else if (inputType === \"range\") {\n inputHtml = \"<input id='\" + id + \"' class='te-input' type='range' \" + dataWIDs + \" value='\" + value + \"' min='\" + rowObj.ext.min + \"' max='\" + rowObj.ext.max + \"' step='\" + rowObj.ext.step + \"'>\";\n }\n } else {\n inputHtml = \"<input id='\" + id + \"' type='text' class='te-text te-input' \" + dataWIDs + \" value='\" + value + \"'>\";\n }\n break;\n case \"string\":\n if (typeof (inputType) !== \"undefined\") {\n if (inputType === \"textarea\") {\n inputHtml = \"<textarea id='\" + id + \"' class='te-textarea te-input' \" + dataWIDs + \">\" + value + \"</textarea>\";\n }\n } else {\n inputHtml = \"<input id='\" + id + \"' type='text' class='te-text te-input' value='\" + value + \"' \" + dataWIDs + \">\";\n }\n break;\n case \"html-color\":\n const valueAttr = value === \"\" ? \"\" : \" value='\" + value + \"'\";\n inputHtml = \"<input id='\" + id + \"' type='text' class='te-html-color-input te-input' \" + dataWIDs + \" \" + valueAttr + \">\";\n inputHtml += \"<input type='color' class='te-html-color-button te-input' \" + dataWIDs + \" \" + valueAttr + \">\";\n break;\n case \"set\":\n const options = _options(rowObj, value);\n inputHtml = \"<select id='\" + id + \"' class='te-select te-input'\" + dataWIDs + \">\" + options + \"</select>\";\n break;\n case \"array\":\n inputHtml = \"<textarea id='\" + id + \"' class='te-textarea te-input' data-type='array' \" + dataWIDs + \">\" + value + \"</textarea>\";\n break;\n default:\n break;\n }\n if (typeof (rowObj.ext.saveButton) !== \"undefined\") {\n inputHtml += \"<button id='\" + rowObj.ext.saveButtonID + \"'>\" + rowObj.ext.saveButton + \"</button>\";\n }\n return inputHtml;\n\n function _options(obj, val) {\n let options = \"\";\n obj.set.forEach(function (s) {\n const selected = s === val ? \" selected\" : \"\";\n options += \"<option value='\" + s + \"'\" + selected + \">\" + s + \"</option>\";\n });\n return options;\n }\n};\n\nexport class ThemeEditor extends HTMLWidget {\n _current_grouping;\n _showing_columns;\n _showing_data;\n _contentEditors;\n _showSettings;\n _defaultThemes;\n _widgetObjsById;\n _sharedProperties;\n getThemes;\n getSerials;\n getDefaultThemes;\n getDefaultSerials;\n\n constructor() {\n super();\n\n this._tag = \"div\";\n this._current_grouping = undefined;\n this._showing_columns = undefined;\n this._showing_data = undefined;\n this.columns([\"Key\", \"Value\"]);\n this._contentEditors = [];\n this._showSettings = true;\n\n this._defaultThemes = [];\n\n this._widgetObjsById = {};\n }\n\n showSettings(_?) {\n if (!arguments.length) {\n return this._showSettings;\n }\n this._showSettings = _;\n return this;\n }\n\n onChange(widget, propID) { }\n\n enter(domNode, element) {\n super.enter(domNode, element);\n this._placeholderElement.style(\"overflow\", \"auto\");\n }\n\n widgetProperty(widget, propID, _?) {\n if (_ === undefined) {\n return widget[propID]();\n }\n return widget[propID](_);\n }\n\n load(elmValue) { }\n\n save(themeName) { }\n\n needsPropTableRedraw() {\n const ret = document.getElementById(\"te-themeEditorOptions\") === null;\n return ret;\n }\n\n update(domNode, element) {\n super.update(domNode, element);\n if (tableNeedsRedraw(this)) {\n element.selectAll(\"#\" + this._id + \" > table\").remove();\n }\n this._current_grouping = this.paramGrouping();\n this._widgetObjsById[this._id] = this;\n this._sharedProperties = this.findSharedProperties(this.data());\n\n const needsPropertiesTableRedraw = this.needsPropTableRedraw();\n if (needsPropertiesTableRedraw && this.showSettings()) {\n const teParams = Persist.discover(this);\n for (const i in teParams) {\n if (teParams[i].ext.tags.indexOf(this.editorComplexity()) !== -1) {\n const teParamVal = this[teParams[i].id]();\n if (teParams[i].id === \"loadedTheme\" || teParams[i].id === \"loadedSerial\") {\n teParams[i].inputID = \"te-load-theme\";\n }\n teParams[i].input = tableInputHtml(teParams[i], teParamVal, [this._id], this._id);\n } else {\n delete teParams[i];\n }\n }\n domNode.innerHTML = this.propertiesTableHtml(teParams);\n const evt = document.createEvent(\"Events\");\n evt.initEvent(\"TE Properties Ready\", true, true);\n document.dispatchEvent(evt);\n }\n\n this.buildTableObjects(domNode, this._sharedProperties);\n\n this.initFunctionality(domNode);\n }\n\n exit(domNode, element) {\n super.exit(domNode, element);\n }\n\n click(d) {\n }\n\n propertiesTableHtml(editorParams) {\n const tableObj = {\n id: \"te-themeEditorOptions\",\n label: \"Editor Options\",\n rowArr: []\n };\n const modeTableObj = {\n id: \"te-tableModeOptions\",\n label: this.themeMode() ? \"Save/Load Theme\" : \"Save/Load Serial\",\n rowArr: []\n };\n for (const i in editorParams) {\n if (this.themeMode()) {\n if (editorParams[i].ext.tags.indexOf(\"Theme\") === -1 && editorParams[i].ext.tags.indexOf(\"Serial\") === -1) {\n tableObj.rowArr.push({\n th: camelizeString(editorParams[i].id),\n td: editorParams[i].input,\n trClass: \"propertyRow\"\n });\n } else if (editorParams[i].ext.tags.indexOf(\"Theme\") !== -1) {\n modeTableObj.rowArr.push({\n th: camelizeString(editorParams[i].id),\n td: editorParams[i].input,\n trClass: \"propertyRow\"\n });\n }\n } else {\n if (editorParams[i].ext.tags.indexOf(\"Serial\") === -1 && editorParams[i].ext.tags.indexOf(\"Theme\") === -1) {\n tableObj.rowArr.push({\n th: camelizeString(editorParams[i].id),\n td: editorParams[i].input,\n trClass: \"propertyRow\"\n });\n } else if (editorParams[i].ext.tags.indexOf(\"Serial\") !== -1) {\n modeTableObj.rowArr.push({\n th: camelizeString(editorParams[i].id),\n td: editorParams[i].input,\n trClass: \"propertyRow\"\n });\n }\n }\n\n }\n let html = \"\";\n if (tableObj.rowArr.length > 0) {\n html += this.tableObjHtml(tableObj);\n }\n if (modeTableObj.rowArr.length > 0) {\n html += this.tableObjHtml(modeTableObj);\n }\n return html;\n }\n buildTableObjects(targetElement, propObjs) {\n let sectionObjs = {};\n if (this.themeMode()) {\n sectionObjs = {\n chartColorSection: {\n id: \"te-colorOptions\",\n label: \"Chart Colors\",\n rowObjArr: []\n },\n surfaceSection: {\n id: \"te-containerOptions\",\n label: \"Container Styles/Colors\",\n rowObjArr: []\n },\n fontSection: {\n id: \"te-fontOptions\",\n label: \"Font Styles/Colors\",\n rowObjArr: []\n }\n };\n } else {\n sectionObjs = {\n nonSurfaceSection: {\n id: \"te-chartOptions\",\n label: \"Chart Properties\",\n rowObjArr: []\n }\n };\n }\n for (const p in propObjs) {\n if (this.themeMode()) {\n if (p.toUpperCase().indexOf(\"FONT\") !== -1 && !(propObjs[p].arr[0].widget._class.indexOf(\"layout_Surface\") !== -1 && p.toUpperCase().indexOf(\"COLOR\") !== -1)) {\n sectionObjs[\"fontSection\"].rowObjArr.push(propObjs[p]);\n } else if (p === \"paletteID\") {\n sectionObjs[\"chartColorSection\"].rowObjArr.push(propObjs[p]);\n } else if (propObjs[p].arr[0].widget._class.indexOf(\"layout_Surface\") !== -1) {\n sectionObjs[\"surfaceSection\"].rowObjArr.push(propObjs[p]);\n }\n } else {\n if (propObjs[p].arr[0].widget._class.indexOf(\"layout_Surface\") === -1) {\n sectionObjs[\"nonSurfaceSection\"].rowObjArr.push(propObjs[p]);\n }\n }\n }\n let html = \"\";\n for (const i in sectionObjs) {\n html += this.sharedPropertyTableHtml(sectionObjs[i]);\n }\n targetElement.innerHTML += html;\n }\n\n initFunctionality(elm) {\n const context = this;\n _expandCollapse(elm);\n _inputOnChange(elm);\n _inputOnClick(elm);\n function _inputOnClick(elm2) {\n if (context.showSettings()) {\n const saveBtn = document.getElementById(\"te-save-button\");\n saveBtn.onclick = function (e) {\n const clickedElm: any = e.target;\n const themeName = clickedElm.previousSibling.value;\n if (themeName.length > 1) {\n const loadSelect = document.getElementById(\"te-load-theme\");\n const loadOptions = loadSelect.getElementsByTagName(\"option\");\n let saveExists = false;\n for (const i in loadOptions) {\n const val = loadOptions[i].value;\n if (val === themeName) {\n saveExists = true;\n }\n }\n if (!saveExists) {\n loadSelect.innerHTML += \"<option value='\" + themeName + \"'>\" + themeName + \"</option>\";\n }\n clickedElm.previousSibling.value = \"\";\n (loadSelect as any).value = themeName;\n } else {\n alert(\"Save Name cannot be empty.\");\n }\n };\n }\n }\n function _inputOnChange(elm2) {\n const teInputs = elm2.getElementsByClassName(\"te-input\");\n for (const i in teInputs) {\n if (isNaN(parseInt(i))) break;\n const inputElm = teInputs[i];\n const inputID = inputElm.getAttribute(\"id\");\n if (inputID === \"te-load-theme\") {\n inputElm.onchange = function (e) {\n const elm3 = e.srcElement;\n context.load(elm3.value);\n };\n } else if (inputID !== null && inputID.indexOf(\"te-input-themeMode\") !== -1) {\n inputElm.onchange = function (e) {\n const elm3 = e.srcElement;\n context.themeMode(elm3.checked);\n\n const name = document.getElementById(\"te-load-theme\");\n const nameToLoad = name !== null ? (name as any).value : \"Default\";\n context.load(nameToLoad);\n };\n } else if (inputElm.tagName === \"INPUT\" || inputElm.tagName === \"SELECT\" || inputElm.tagName === \"TEXTAREA\") {\n inputElm.onchange = function (e) {\n const elm3 = e.srcElement;\n\n let id = elm3.getAttribute(\"id\");\n\n if (elm3.className.split(\" \").indexOf(\"te-html-color-button\") !== -1) {\n id = elm3.previousSibling.getAttribute(\"id\");\n elm3.previousSibling.value = elm3.value;\n }\n const elmType = elm3.getAttribute(\"type\");\n const splitId = id.split(\"-\");\n const genericId = splitId.slice(0, splitId.length - 1).join(\"-\") + \"-\";\n\n const widsStr = elm3.getAttribute(\"data-wids\");\n const paramId = elm3.getAttribute(\"data-paramid\");\n const widArr = widsStr.split(\",\");\n widArr.forEach(function (wid) {\n const individualId = genericId + wid;\n const indElm = document.getElementById(individualId);\n if (elmType === \"checkbox\") {\n (indElm as any).checked = elm3.checked;\n context._widgetObjsById[wid][paramId](elm3.checked);\n } else if (elm3.getAttribute(\"data-type\") === \"array\") {\n (indElm as any).value = elm3.value;\n try {\n context._widgetObjsById[wid][paramId](JSON.parse(elm3.value));\n } catch (e) { }\n } else {\n (indElm as any).value = elm3.value;\n context._widgetObjsById[wid][paramId](elm3.value);\n\n if (indElm.className.split(\" \").indexOf(\"te-html-color-input\") !== -1) {\n (indElm.nextSibling as any).value = elm3.value;\n } else if (indElm.className.split(\" \").indexOf(\"te-html-color-button\") !== -1) {\n (indElm.previousSibling as any).value = elm3.value;\n }\n }\n });\n context.data().forEach(function (d) {\n d.render();\n });\n };\n }\n }\n }\n function _expandCollapse(elm2) {\n const tableArr = elm2.getElementsByClassName(\"te-section-table\");\n for (const i in tableArr) {\n if (typeof (tableArr[i].getElementsByTagName) === \"function\") {\n const thead = tableArr[i].getElementsByTagName(\"thead\");\n thead[0].onclick = function (e) {\n let elm3 = e.toElement;\n if (elm3.tagName === \"TH\") {\n elm3 = elm3.parentElement.parentElement;\n }\n const parent = elm3.parentElement;\n let tbodyClass = \"\";\n if (parent.className.split(\" \").indexOf(\"expanded\") === -1) {\n parent.className = \"te-section-table expanded\";\n tbodyClass = \"shown\";\n } else {\n parent.className = \"te-section-table collapsed\";\n tbodyClass = \"hidden\";\n }\n const tbody = parent.getElementsByTagName(\"tbody\");\n tbody[0].className = tbodyClass;\n };\n }\n }\n const sharedRowArr = elm2.getElementsByClassName(\"sharedPropertyRow\");\n for (const n in sharedRowArr) {\n if (typeof (sharedRowArr[n].getElementsByClassName) === \"function\") {\n const label = sharedRowArr[n].getElementsByClassName(\"te-label\");\n label[0].onclick = function (e) {\n const elm3 = e.toElement;\n const parent = elm3.parentElement;\n let subRowClass = \"\";\n if (parent.className.split(\" \").indexOf(\"expanded\") === -1) {\n parent.className = \"sharedPropertyRow expanded\";\n subRowClass = \"shown\";\n } else {\n parent.className = \"sharedPropertyRow collapsed\";\n subRowClass = \"hidden\";\n }\n let nextSib = parent.nextSibling;\n while (nextSib !== null) {\n if (nextSib.className.split(\" \").indexOf(\"sharedPropertyRow\") === -1) {\n nextSib.className = \"propertyRow \" + subRowClass;\n nextSib = nextSib.nextSibling;\n } else {\n nextSib = null;\n }\n }\n };\n }\n }\n }\n }\n sharedPropertyTableHtml(sectionObj) {\n const tableObj = {\n id: sectionObj.id,\n label: sectionObj.label,\n rowArr: []\n };\n sectionObj.rowObjArr.forEach(function (rowObj) {\n rowObj.arr.forEach(function (widgetObj, widgetIdx) {\n if (widgetIdx === 0) {\n tableObj.rowArr.push({\n th: _sharedPropertyLabel(rowObj),\n td: _sharedPropertyInput(rowObj),\n trClass: \"sharedPropertyRow collapsed\"\n });\n }\n tableObj.rowArr.push({\n th: _propertyLabel(widgetObj),\n td: _propertyInput(rowObj, widgetIdx),\n trClass: \"propertyRow hidden\"\n });\n });\n });\n\n return this.tableObjHtml(tableObj);\n\n function _propertyLabel(widgetObj) {\n const splitClass = widgetObj.widget.classID().split(\"_\");\n const displayClass = splitClass.join(\"/\");\n return displayClass + \" <i>[\" + widgetObj.widget._id + \"]</i>\";\n }\n function _sharedPropertyLabel(rowObj) {\n return camelizeString(rowObj.id);\n }\n\n function _propertyInput(rowObj, idx) {\n const value = _value(rowObj, idx);\n const html = tableInputHtml(rowObj, value, [rowObj.arr[idx]], rowObj.arr[idx].widget._id);\n return html;\n\n function _value(rowObj2, idx2) {\n const value2 = rowObj2.arr[idx2].widget[rowObj2.id]();\n return value2 !== null ? value2 : \"\";\n }\n }\n function _sharedPropertyInput(rowObj) {\n const value = _sharedValue(rowObj);\n const html = tableInputHtml(rowObj, value, rowObj.arr, \"shared\");\n return html;\n\n function _sharedValue(rowObj2) {\n const value2 = rowObj2.arr[0].widget[rowObj2.id]();\n rowObj2.arr.forEach(function (w, i) {\n if (value2 !== w.widget[w.id]()) {\n return \"\";\n }\n });\n if (value2 !== null) {\n if (rowObj2.type === \"array\") {\n return JSON.stringify(value2);\n }\n return value2;\n }\n return \"\";\n }\n }\n }\n\n tableObjHtml(tableObj) {\n let html = \"<table id='\" + tableObj.id + \"' class='te-section-table expanded'>\";\n html += \"<thead><tr><th colspan='2'>\" + tableObj.label + \"</th></tr></thead>\";\n html += \"<tbody>\";\n tableObj.rowArr.forEach(function (rowObj) {\n html += this.tableRowObjHtml(rowObj);\n }, this);\n html += \"</tbody>\";\n return html + \"</table>\";\n }\n tableRowObjHtml(rowObj) {\n let html = typeof (rowObj.trClass) !== \"undefined\" ? \"<tr class='\" + rowObj.trClass + \"'>\" : \"<tr>\";\n html += \"<th class='te-label'>\" + rowObj.th + \"</th>\";\n html += \"<td>\" + rowObj.td + \"</td>\";\n return html + \"</tr>\";\n }\n\n setWidgetObjsById(widgetProp) {\n const context = this;\n const val = widgetProp.widget[widgetProp.id]();\n if (widgetProp.type === \"widgetArray\") {\n val.forEach(function (widget) {\n context._widgetObjsById[widget._id] = widget;\n });\n } else if (widgetProp.type === \"widget\" && val !== null) {\n this._widgetObjsById[val._id] = val;\n }\n }\n checkTagFilter(tagArr) {\n const allowTags = [\"Basic\"];\n let ret = false;\n tagArr.forEach(function (tag) {\n if (allowTags.indexOf(tag) !== -1) {\n ret = true;\n }\n });\n return ret;\n }\n findSharedProperties(data) {\n const context = this;\n let propsByID;\n if (typeof (data) !== \"undefined\" && data.length > 0) {\n let allProps = [];\n propsByID = {};\n const surfacePropsByID = {};\n const nonSurfacePropsByID = {};\n data.forEach(function (widget) {\n const gpResponse = _getParams(widget, 0);\n allProps = allProps.concat(gpResponse);\n });\n allProps.forEach(function (prop) {\n if ([\"widget\", \"widgetArray\"].indexOf(prop.type) !== -1) {\n context.setWidgetObjsById(prop);\n } else if (context.checkTagFilter(prop.ext.tags)) {\n const tempIdx = prop.id;\n if (prop.widget._class.indexOf(\"Surface\") !== -1) {\n if (typeof (surfacePropsByID[tempIdx]) === \"undefined\") {\n surfacePropsByID[tempIdx] = { arr: [] };\n }\n surfacePropsByID[tempIdx].id = prop.id;\n surfacePropsByID[tempIdx].description = prop.description;\n surfacePropsByID[tempIdx].type = prop.type;\n surfacePropsByID[tempIdx].set = prop.set;\n surfacePropsByID[tempIdx].ext = prop.ext;\n surfacePropsByID[tempIdx].arr.push(prop);\n } else {\n if (typeof (nonSurfacePropsByID[tempIdx]) === \"undefined\") {\n nonSurfacePropsByID[tempIdx] = { arr: [] };\n }\n nonSurfacePropsByID[tempIdx].id = prop.id;\n nonSurfacePropsByID[tempIdx].description = prop.description;\n nonSurfacePropsByID[tempIdx].type = prop.type;\n nonSurfacePropsByID[tempIdx].set = prop.set;\n nonSurfacePropsByID[tempIdx].ext = prop.ext;\n nonSurfacePropsByID[tempIdx].arr.push(prop);\n }\n if (typeof (propsByID[tempIdx]) === \"undefined\") {\n propsByID[tempIdx] = { arr: [] };\n }\n propsByID[tempIdx].id = prop.id;\n propsByID[tempIdx].description = prop.description;\n propsByID[tempIdx].type = prop.type;\n propsByID[tempIdx].set = prop.set;\n propsByID[tempIdx].ext = prop.ext;\n propsByID[tempIdx].arr.push(prop);\n }\n });\n }\n return propsByID;\n\n function _getParams(widgetObj, depth) {\n let retArr = [];\n if (widgetObj !== null) {\n const paramArr = Persist.discover(widgetObj);\n paramArr.forEach(function (param, i1) {\n if (typeof (param.ext.tags) !== \"undefined\") {\n retArr.push({\n id: param.id,\n type: param.type,\n description: param.description,\n set: param.set,\n ext: param.ext,\n widget: widgetObj\n });\n }\n if (param.type === \"widgetArray\") {\n const childWidgetArray = context.widgetProperty(widgetObj, param.id);\n childWidgetArray.forEach(function (childWidget) {\n const cwArr = _getParams(childWidget, depth + 1);\n retArr = retArr.concat(cwArr);\n });\n } else if (param.type === \"widget\") {\n const childWidget = context.widgetProperty(widgetObj, param.id);\n const temp = _getParams(childWidget, depth + 1);\n retArr = retArr.concat(temp);\n }\n });\n }\n return retArr;\n }\n }\n}\nThemeEditor.prototype._class += \" other_ThemeEditor\";\n\nexport interface ThemeEditor {\n themeMode(): boolean;\n themeMode(_: boolean): this;\n themeMode_exists(): boolean;\n saveTheme(): string;\n saveTheme(_: string): this;\n saveTheme_exists(): boolean;\n loadedTheme(): string;\n loadedTheme(_: string): this;\n loadedTheme_exists(): boolean;\n saveSerial(): string;\n saveSerial(_: string): this;\n saveSerial_exists(): boolean;\n loadedSerial(): string;\n loadedSerial(_: string): this;\n loadedSerial_exists(): boolean;\n showColumns(): boolean;\n showColumns(_: boolean): this;\n showColumns_exists(): boolean;\n showData(): boolean;\n showData(_: boolean): this;\n showData_exists(): boolean;\n shareCountMin(): number;\n shareCountMin(_: number): this;\n shareCountMin_exists(): boolean;\n paramGrouping(): string;\n paramGrouping(_: string): this;\n paramGrouping_exists(): boolean\n editorComplexity(): string;\n editorComplexity(_: string): this;\n editorComplexity_exists(): boolean;\n sectionTitle(): string;\n sectionTitle(_: string): this;\n sectionTitle_exists(): boolean;\n collapsibleSections(): boolean;\n collapsibleSections(_: boolean): this;\n collapsibleSections_exists(): boolean;\n}\n\nThemeEditor.prototype.publish(\"themeMode\", true, \"boolean\", \"Edit default values\", null, { tags: [\"Basic\"] });\nThemeEditor.prototype.publish(\"saveTheme\", \"\", \"string\", \"Save Theme\", null, { tags: [\"Basic\", \"Theme\"], saveButton: \"Save\", saveButtonID: \"te-save-button\" });\nThemeEditor.prototype.publish(\"loadedTheme\", getThemeNames(1), \"set\", \"Loaded Theme\", getThemeNames(), { tags: [\"Basic\", \"Theme\"] });\nThemeEditor.prototype.publish(\"saveSerial\", \"\", \"string\", \"Save Serial\", null, { tags: [\"Basic\", \"Serial\"], saveButton: \"Save\", saveButtonID: \"te-save-button\" });\nThemeEditor.prototype.publish(\"loadedSerial\", getSerialNames(0), \"set\", \"Loaded Serial\", getSerialNames(), { tags: [\"Basic\", \"Serial\"] });\nThemeEditor.prototype.publish(\"showColumns\", true, \"boolean\", \"Show Columns\", null, { tags: [\"Intermediate\"] });\nThemeEditor.prototype.publish(\"showData\", true, \"boolean\", \"Show Data\", null, { tags: [\"Intermediate\"] });\nThemeEditor.prototype.publish(\"shareCountMin\", 1, \"number\", \"Share Count Min\", null, { tags: [\"Private\"] });\nThemeEditor.prototype.publish(\"paramGrouping\", \"By Param\", \"set\", \"Param Grouping\", [\"By Param\", \"By Widget\"], { tags: [\"Private\"] });\nThemeEditor.prototype.publish(\"editorComplexity\", \"Basic\", \"set\", \"Choose what publish properties to display within the editor.\", [\"Basic\", \"Intermediate\", \"Advanced\", \"Private\"], { tags: [\"Private\"] });\nThemeEditor.prototype.publish(\"sectionTitle\", \"\", \"string\", \"Section Title\", null, { tags: [\"Private\"] });\nThemeEditor.prototype.publish(\"collapsibleSections\", true, \"boolean\", \"Collapsible Sections\", null, { tags: [\"Intermediate\"] });\n\nThemeEditor.prototype.getThemes = getThemes;\nThemeEditor.prototype.getSerials = getSerials;\nThemeEditor.prototype.getDefaultThemes = getThemeNames;\nThemeEditor.prototype.getDefaultSerials = getSerialNames;\n"],"names":["now","t0","t1","d3Timer","autoComplete","i","that","interval","range","d3TimeParse","d3Format","d3Select","d3Map","d3Extent","d3Range","d3TimeMonths","d3TimeDays","d3TimeWeek","d3TimeYear","serialize","timeout","locateRoxieResponse","WsWorkunits","Comms.Basic","Comms.ESPUrl","Comms.createESPConnection","Comms.WsWorkunits","simpleheat","_simpleheat.default","newTableHeight","finalWidth","d3SelectAll","format","months","d3Local","Persist.discover","Persist.serialize"],"mappings":"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","x_google_ignoreList":[1,3,5,6,7,8,9,10,14]}