@hpcc-js/other 3.2.9 → 3.2.10
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 +3106 -1190
- package/dist/index.js.map +1 -1
- package/dist/index.umd.cjs +2 -5
- package/dist/index.umd.cjs.map +1 -1
- package/package.json +6 -6
package/dist/index.umd.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.umd.cjs","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\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","HTMLWidget","d3Timer","autoComplete","i","that","module","interval","Utility","d3TimeParse","d3Format","d3Select","d3Map","d3Extent","d3Range","d3TimeMonths","d3TimeDays","d3TimeWeek","d3TimeYear","Palette","serialize","timeout","locateRoxieResponse","WsWorkunits","Comms.Basic","Comms.ESPUrl","Comms.createESPConnection","Comms.WsWorkunits","simpleheat","_simpleheat.default","CanvasWidget","SVGWidget","HorizontalList","VerticalList","Entity","d3Event","Widget","newTableHeight","finalWidth","Platform","d3SelectAll","months","PropertyExt","d3Local","Persist.discover","Persist.serialize","Grid"],"mappings":"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","x_google_ignoreList":[1,3,5,6,7,8,9,10,14]}
|
|
1
|
+
{"version":3,"file":"index.umd.cjs","sources":["../../../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","../src/__package__.ts"],"sourcesContent":["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\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","export const PKG_NAME = \"@hpcc-js/other\";\nexport const PKG_VERSION = \"3.1.1\";\nexport const BUILD_VERSION = \"3.2.1\";\n"],"names":["taskHead","taskTail","frame","timeout","interval","clockLast","clockNow","clockSkew","clock","performance","now","Date","setFrame","window","requestAnimationFrame","bind","f","setTimeout","clearNow","Timer","this","_call","_time","_next","timer","callback","delay","time","t","restart","timerFlush","e","call","wake","nap","poke","t0","t2","t1","Infinity","sleep","clearTimeout","clearInterval","setInterval","__name","prototype","constructor","TypeError","stop","_Audio","HTMLWidget","super","__publicField","_tag","_sections","section","label","offset","beatLength","beatCount","arguments","length","endOffset","getType","fileExt","enter","domNode","element","context","on","d","onPlay","update","selectAll","data","source","append","attr","createTimer","params","startTime","beat","d3Timer","onTick","key","i","play","_element","d2","node","load","Audio","_class","publish","autoComplete","options","document","querySelector","hasClass","addEvent","removeEvent","live","o","selector","minChars","offsetLeft","offsetTop","cache","menuClass","renderItem","item","search","replace","re","RegExp","split","join","onSelect","term","k","hasOwnProperty","elems","querySelectorAll","that","sc","createElement","className","autocompleteAttr","getAttribute","setAttribute","last_val","updateSC","resize","next","rect","getBoundingClientRect","style","left","Math","round","pageXOffset","documentElement","scrollLeft","top","bottom","pageYOffset","scrollTop","width","right","display","classList","remove","maxHeight","parseInt","getComputedStyle","currentStyle","suggestionHeight","offsetHeight","scrTop","selTop","body","appendChild","sel","v","value","add","blurHandler","over_sb","activeElement","focus","suggest","val","s","innerHTML","keydownHandler","event","keyCode","which","nextSibling","previousSibling","childNodes","preventDefault","keyupHandler","part","slice","focusHandler","destroy","removeAttribute","removeChild","el","contains","test","type","handler","attachEvent","addEventListener","detachEvent","removeEventListener","elClass","cb","found","target","srcElement","parentElement","module","exports","_AutoCompleteText","autoCompleteTextData","_db","rollupView","textColumn","valueColumn","entries","map","row","idx","text","values","origRow","_span","_prompt","id","_input","placeholder","textboxWidth_exists","textboxWidth","_prevMinCharsText","minCharsText","_autoComplete","AutoComplete","field","fieldByLabel","toLowerCase","filter","indexOf","rowIdx","click","rowToObj","exit","column","selected","AutoCompleteText","optional","columns","newInterval","floori","offseti","count","date","floor","ceil","d0","d1","step","range","start","previous","push","setTime","end","every","isFinite","days","setHours","setDate","getDate","getTimezoneOffset","weekday","getDay","sunday","monday","tuesday","wednesday","thursday","friday","saturday","months","setMonth","getMonth","getFullYear","year","setFullYear","_CalendarHeatMap","Utility","SimpleSelectionMixin","calendarData","fields","dateParser","d3TimeParse","datePattern","valueFormatter","aggrDeltaColumn","d3Format","_prevDateColumn","dateColumn","_prevAggrType","aggrType","_prevAggrColumn","aggrColumn","_prevAggrDeltaColumn","_view","aggregateView","dateKey","formattedValues","aggregate","origRows","calcDelta","Close","Open","d3Select","parentNode","_selection","widgetElement","_palette","switch","paletteID","cellSize","height","mappedData","d3Map","dateExtent","d3Extent","svg","d3Range","svgUpdate","each","g","_d3TimeMonths","d3TimeMonths","_months","forEach","_m","calcMonthPath","monthStrokeColor","monthStrokeWidth","merge","select","dataExtent","max","abs","dayRect","d3TimeDays","dayRectUpdate","data2","get","dblclick","d3TimeWeek","d3TimeYear","dayStrokeColor","dayStrokeWidth","has","monthPath","w0","w1","CalendarHeatMap","mixin","Palette","rainbow","tags","disable","w","espValFix","trim","Row","espRowFix","retVal","isNaN","Number","_ESPUrl","url","_","_url","parser","href","tmp","substring","tmpItem","decodeURIComponent","_protocol","protocol","_hostname","hostname","_port","port","_pathname","pathname","_search","_params","_hash","hash","_host","host","param","isWsWorkunits","isWorkunitResult","isWsEcl","isWsWorkunits_GetStats","getUrl","overrides","ESPUrl","ESPMappings","mappings","_mappings","_reverseMappings","resultName","origField","exists","mapResult","response","mapping","x","Array","y","mapResponse","serialize","obj","str","encodeURIComponent","jsonp","request","Promise","resolve","reject","respondedTimeout","callbackName","random","doCallback","script","src","progress","Error","_Comms","_proxyMappings","_timeout","_hipieResults","hipieResults","_hipieResultsLength","newUrlParts","newUrl","espUrl","IP","PORT","PATH","ajax","method","uri","xhr","XMLHttpRequest","onload","status","JSON","parse","statusText","onerror","open","setRequestHeader","send","post","proxyMappings","Comms","_Basic","cacheCalls","_cacheCalls","localStorage","getItem","console","error","catch","then","response2","setItem","stringify","removeItem","Basic","locateRoxieResponse","locateRoxieException","Exception","_WsECL","_target","_query","apply","query","pathParts","queryParts","constructUrl","_response","reduce","previousValue","exception","index","array","Source","Code","Message","WsECL","_a","wuid","sequence","_wuid","urlParts","urlParts2","jobname","_jobname","_sequence","_resultName","appendParam","_fetchResult","skipMapping","_fetchResultPromise","resultname","_start","_count","Wuid","ResultName","SuppressXmlSchema","Start","Count","_resultNameCache","Result","_total","Total","responseKey","fetchResult","WUQuery","_request","Jobname","_resultNameCacheCount","WUQueryResponse","Workunits","ECLWorkunit","fetchResultNames","_fetchResultNamesPromise","TruncateEclTo64k","IncludeExceptions","IncludeGraphs","IncludeSourceFiles","IncludeResults","IncludeResultsViewNames","IncludeVariables","IncludeTimers","IncludeResourceURLs","IncludeDebugValues","IncludeApplicationValues","IncludeWorkflows","IncludeXmlSchemas","SuppressResultSchemas","WUInfoResponse","Workunit","Archived","warn","Results","ECLResult","Name","fetchResults","fetchArray","all","responseArray","postFilter","request_key","WsWorkunits_GetStats","HIPIERoxie","HIPIEWorkunit","WsWorkunits","HIPIEDatabomb","createESPConnection","URL","testURL","hookJsonp","func","Object","create","WUGetStatsResponse","Statistics","WUStatisticItem","name","hipieKey","from","refresh","filterResults","request2","changedFilter","hipieResult","outputFilter","filters","isRange","fieldid","key2","matches","databomb","_databomb","databombOutput","nestedRowFix","enableBasicCommsCache","basicCommsCache","BasicComms","Comms.Basic","baseUrl","WUResult","_name","_xmlSchema","LogicalFile","logicalName","_logicalName","RoxieQuery","queryName","pop","_queryName","trimRight","results","createResult","_espUrl","dataSource","Comms.ESPUrl","enableCache","createConnection","espConnection","Comms.createESPConnection","Comms.WsWorkunits","flattenResult","result","colIdx","rowArr","requestStr","wuQuery","Type","Cluster","RoxieCluster","Owner","State","StartDate","EndDate","ECL","LogicalFileSearchType","After","Before","PageSize","PageStartFrom","PageEndAt","LastNDays","Sortby","Descending","CacheHint","wuInfo","includeKey","wuUpdate","appData","appID","persistString","ApplicationValues","ApplicationValue","Application","Value","filterIdx","fKey","WUResultResponse","XmlSchema","LogicalName","simpleheat","canvas","_canvas","getElementById","_ctx","getContext","_width","_height","_max","_data","defaultRadius","defaultGradient","point","clear","radius","r","blur","circle","_circle","_createCanvas","ctx","r2","_r","shadowOffsetX","shadowOffsetY","shadowBlur","shadowColor","beginPath","arc","PI","closePath","fill","gradient","grad","createLinearGradient","addColorStop","fillStyle","fillRect","_grad","getImageData","draw","minOpacity","clearRect","p","len","globalAlpha","drawImage","colored","_colorize","putImageData","pixels","j","_simpleheat","_simpleheat.default","_HeatMap","CanvasWidget","_size","_heat","useClonedPalette","cloneNotExists","topLeftX_exists","topLeftY_exists","bottomRightX_exists","bottomRightY_exists","skewedData","usePalette","colorCount","size","retArr","arr","box","coordsWidth","bottomRightX","topLeftX","coordsHeight","bottomRightY","topLeftY","pixelValueX","pixelValueY","n","newX","newY","HeatMap","_HPCCBadge","SVGWidget","testData","root","logo","logo_accent","line","circle_accent","logo_circles","circle_1","circle_2","circle_3","circle_4","circle_5","circle_6","circle_7","circle_8","text_hpccsystems","text_r","text_tm","bbox","getBBox","centerX","centerY","scale","min","animation","transition","duration","ease","HPCCBadge","_Html","overflowX_exists","overflowX","overflowY_exists","overflowY","html","Html","_IconList","_list","HorizontalList","orientation_default","flexWrap_default","listWidgets","widgets","updateListProperties","updateEntityProperties","htmlColumnIndex_exists","htmlColumnIndex","VerticalList","Entity","render","list","disableScroll","widgetsFlexBasis","iconSize","entity","icon","iconColumnIndex_exists","iconColumnIndex","iconColor","iconColorColumnIndex_exists","iconColorColumnIndex","iconDiameter","iconPaddingPercent","IconList","_Paginator","_tNumPages","_numList","postUpdate","paginator","side","classed","property","pageNumber","_onSelect","numItems","itemsPerPage","adjacentPages","page","li","a","linkText","createTextNode","span","d3Event","order","Paginator","_Table","_paginator","_selectionBag","Selection","_selectionPrevClick","_paginatorTableSpacing","tableDiv","topMargin","showHeader","fixedHeader","thead","isHidden","pivot","hiddenColumns","_empty_col_idx_arr","tableColumns","tableData","col","noTransform","transform","calcFieldsIndex","colLen","visibleCount","getEmptyColumnIdxArr","ret_arr","hideEmptyColumns","col_idx","column_is_empty","row_idx","_placeholderElement","table","fixedHead","fixedHeadTable","fixedThead","unfixedThead","tbody","tfoot","fixedCol","fixedColTable","fixedColHead","fixedColHeadRow","fixedColBody","fixedColFoot","fixedColFootRow","sortByFieldIndex_exists","_prevSortByFieldIndex","sortByFieldIndex","_prevDescending","descending","multiSort","reverse","_hasChildWidgets","thSel","thUpdate","element2","headerClick","theadRowBackgroundColor","theadCellBorderColor","theadFontColor","theadFontSize","theadFontFamily","fieldsIdx","paginationLimit","pagination","ipp","_calcRowsPerPage","startIndex","itemsOnPage","tData","topN","totalRow","totalledLabel","totalledColumns","sum","tfSel","tfootRowBackgroundColor","tfootCellBorderColor","tfootFontColor","tfootFontSize","renderHtmlDataCells","rowsSel","rowsUpdate","_d","selectionBagClick","applyRowStyles","getBodyRow","applyFirstColRowStyles","getFixedRow","fixedLeftRows","empty","tbodyRows","applyStyleToRows","isSelected","_createSelectionObject","_id","cellsSel","_trIdx","cell","rowInfo","tdContents","tdIdx","alignment","getColumnAlignment","verticalAlign","Widget","widgetDiv","minWidgetWidth","minWidgetHeight","widgetDiv2","_parentWidget","lazyRender","tableMarginHeight","fixedColWidth","fixedColThSel","fixedColumn","fixedColThUpdate","fixedColTrSel","fixedColTrUpdate","fixedColTdSel","fixedColTdUpdate","fixedColFootTdSel","fixedColFootTdUpdate","fixedSize","setColumnWidths","newTableHeight","finalWidth","calcWidth","calcHeight","setOnScrollEvents","hasVScroll","Platform","getScrollbarWidth","hasHScroll","rows","firstRow","tds","d3SelectAll","totalWidth","tdWidths","offsetWidth","thwidth","tdwidth","usewidth","scrollNode","margHeight","onscroll","topDelta","leftDelta","_generateTempRow","trow","th","thHeight","clientHeight","tfootHeight","tmpRow","tcellHeight","paginatorHeight","sort","selection","set","multiSelect","shiftKey","inRange","i2","lastInRangeRow","selObj","ctrlKey","applyHoverRowStyles","tbodyHoverRowFontColor","tbodyHoverRowBackgroundColor","applySelectedRowStyles","tbodySelectedRowFontColor","tbodySelectedRowBackgroundColor","isFirstCol","dataRow","datum","tbodyFirstColFontColor","tbodyFontColor","tbodyFirstColBackgroundColor","tableZebraColor_exists","tbodyRowBackgroundColor","tableZebraColor","tr","__prop_type","stringAlign","numberAlign","serializeState","deserializeState","state","Table","_htmlColorBlock","hexColor","publishProxy","_Legend","isRainbow","widget","getWidget","targetWidget","_targetWidget","_targetWidgetMonitor","monitor","newProp","oldProp","classID","chart","getPalette","ordinal","dataArr","oPalette","dataFamily","rPalette","format","rainbowFormat","steps","rainbowBins","weightMin","_dataMinWeight","weightMax","_dataMaxWeight","stepWeightDiff","mid","orientation","tableRect","elementRect","onClick","onDblClick","onMouseOver","rowData","Legend","origGetBBox","_scale","_MorphText","fontSize","_fontWidth","_textElement","dateTime","seconds","getSeconds","toString","minutes","getMinutes","hours","getHours","ampm","newText","anchor","MorphText","_origText","usedChars","chars","charCodeAt","_NestedTable","NestedTable","origColumns","_columns","origData","_Column","PropertyExt","owner","_owner","valid","headerLabel","Column","_MouseHoverColumn","hoverValue","hoverList","MouseHoverColumn","getIds","_ColumnDropdown","columnIndex","ColumnDropdownList","ColumnDropdown","_Opportunity","_drawStartPos","groupCount","h","tooltipdiv","dropDownOption","opportunityId","b","cur_group","groups","paddingTop","nodeRectHeight","nodeRectWidthPadding","nodeRectWidth","group","groupHeadings","headerLabels","previousGroup","currentGroup","node_date_change","htmlInput","mouseHover","prevDate","prevdate","fromDate","curdate","pageX","pageY","node_prev_group","tooltipHtml","delta","prev_group","changeLines","node_cur_group","color","colIndex","columnData","dropdownList","unshift","Opportunity","discover","publishedProperties","widgetArrayWalker","visitor","widgetWalker","widgetPropertyWalker","widget2","propertyWalker","serializeTheme","serializeThemeToObject","propObj","_isFilterMatch","ret","publishedProperty","origDefaultValue","defaultValue","classParts","HasOwnProperty","removeTheme","applyTheme","themeObj","widget3","serializeToObject","includeData","includeState","__class","_idSeed","__id","version","__version","__properties","childWwidget2","childWwidget","vertices","__vertices","__data","__state","editor_input","setProperty","autoExpand","hasProperties","_PropertyEditor","d3Local","_parentPropertyEditor","_show_settings","parentPropertyEditor","depth","parent","show_header","_show_header","show_settings","rootWidgets","_selectedItems","_owningWidget","excludeObjs","tableElement","enterHeader","updateHeader","renderInputs","watchWidget","_watch","__hpcc_debug","watchDepth","info","_paramId","newVal","oldVal","peInputIcon","refreshExpandIcon","sortIcon","refreshSortIcon","hideNonWidgets","spanText","refreshHideParamsIcon","peInputCount","peInputCollapsedCount","collapsed","newIcon","increment","sorting","types","sorting_options","icons","__meta_sorting","ext","hideParamsIcon","gatherDataTree","children","Persist.discover","prop","getDataTree","_rowSorting","paramArr","typeOrder","filterInputs","discArr","filterTags","excludeTags","excludeParams","_idx","excludeParamItem","widgetName","excludeParam","class","some","showFields","showData","inputCell","enterInputs","description","updateWidgetRow","updateInputs","tmpWidget","widgetArr","lastModified","noEmpties","widgetDisabled","changed","autoExpandWidget","peInput","peInputElement","clickTarget","peDiv","_childPE","topWidget","topPropEditor","oldValue","propEditor","broadcast","checked","multiline","isIE","_key","Persist.serialize","PropertyEditor","_widgetOrig","Grid","postSelectionChange","_RadioCheckbox","rcData","view","concat","sort_exists","l","_label","_Checkbox","radioCheckbox","checkboxDiv","selectedData","handleClick","rcDiv","multiple","RadioCheckbox","_Select","selectData","_select","options_dom_node","optionNode","selectSize","option","optionUpdate","Select","hasLocalStorage","mod","_localStorage","getThemes","g_defaultThemes","getSerials","g_defaultSerials","getThemeNames","loadedThemes","themes","themeName","getSerialNames","loadedSerials","serials","serialName","tableNeedsRedraw","needsRedraw","_current_grouping","_group_params_by","_showing_columns","showColumns","_showing_data","camelizeString","toUpperCase","tableInputHtml","rowObj","idSuffix","inputType","inputHtml","inputID","dataWIDs","valueAttr","_options","saveButton","saveButtonID","_ThemeEditor","_contentEditors","_showSettings","_defaultThemes","_widgetObjsById","showSettings","onChange","propID","widgetProperty","elmValue","save","needsPropTableRedraw","paramGrouping","_sharedProperties","findSharedProperties","teParams","editorComplexity","teParamVal","input","propertiesTableHtml","evt","createEvent","initEvent","dispatchEvent","buildTableObjects","initFunctionality","editorParams","tableObj","modeTableObj","themeMode","td","trClass","tableObjHtml","targetElement","propObjs","sectionObjs","chartColorSection","rowObjArr","surfaceSection","fontSection","nonSurfaceSection","sharedPropertyTableHtml","elm","_inputOnClick","elm2","onclick","clickedElm","loadSelect","loadOptions","getElementsByTagName","saveExists","alert","_inputOnChange","teInputs","getElementsByClassName","inputElm","onchange","elm3","nameToLoad","tagName","elmType","splitId","genericId","widsStr","paramId","wid","individualId","indElm","_expandCollapse","tableArr","toElement","tbodyClass","sharedRowArr","subRowClass","nextSib","sectionObj","widgetObj","widgetIdx","_sharedPropertyLabel","_sharedPropertyInput","_propertyLabel","_propertyInput","_value","rowObj2","idx2","value2","_sharedValue","tableRowObjHtml","setWidgetObjsById","widgetProp","checkTagFilter","tagArr","allowTags","tag","propsByID","allProps","surfacePropsByID","nonSurfacePropsByID","gpResponse","_getParams","tempIdx","i1","childWidget","cwArr","temp","ThemeEditor","getDefaultThemes","getDefaultSerials"],"mappings":"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","x_google_ignoreList":[0,2,4,5,6,7,8,9,13]}
|