@hpcc-js/other 3.5.8 → 3.5.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../src/__package__.ts","../../../node_modules/d3-timer/src/timer.js","../src/Audio.ts","../../../node_modules/javascript-autocomplete/auto-complete.js","../src/AutoCompleteText.ts","../../../node_modules/d3-time/src/interval.js","../../../node_modules/d3-time/src/duration.js","../../../node_modules/d3-time/src/day.js","../../../node_modules/d3-time/src/week.js","../../../node_modules/d3-time/src/month.js","../../../node_modules/d3-time/src/year.js","../src/CalendarHeatMap.ts","../src/Comms.ts","../src/ESP.ts","../../../node_modules/simpleheat/simpleheat.js","../src/HeatMap.ts","../src/HPCCBadge.ts","../src/Html.ts","../src/IconList.ts","../src/Paginator.ts","../src/Table.ts","../src/Legend.ts","../src/MorphText.ts","../src/NestedTable.ts","../src/Opportunity.ts","../src/Persist.ts","../src/PropertyEditor.ts","../src/RadioCheckbox.ts","../src/Select.ts","../src/ThemeEditor.ts"],"sourcesContent":["export const PKG_NAME = \"__PACKAGE_NAME__\";\nexport const PKG_VERSION = \"__PACKAGE_VERSION__\";\nexport const BUILD_VERSION = \"__BUILD_VERSION__\";\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;\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;\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":["PKG_NAME","PKG_VERSION","BUILD_VERSION","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","_sections","super","_tag","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","_span","_prompt","_input","_prevMinCharsText","_autoComplete","autoCompleteTextData","_db","rollupView","textColumn","valueColumn","entries","map","row","idx","text","values","origRow","id","placeholder","textboxWidth_exists","textboxWidth","minCharsText","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","_prevDateColumn","_prevAggrType","_prevAggrColumn","_prevAggrDeltaColumn","_view","_parentNode","Utility","SimpleSelectionMixin","calendarData","fields","dateParser","d3TimeParse","datePattern","valueFormatter","aggrDeltaColumn","d3Format","dateColumn","aggrType","aggrColumn","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","_protocol","_hostname","_url","_port","_search","_pathname","_params","_hash","_host","url","_","parser","href","tmp","substring","tmpItem","decodeURIComponent","protocol","hostname","port","pathname","hash","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","_hipieResultsLength","hipieResults","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","_jobname","_sequence","_resultName","_fetchResultNamesPromise","_fetchResultPromise","_resultNameCache","_resultNameCacheCount","_total","wuid","sequence","urlParts","urlParts2","jobname","appendParam","_fetchResult","skipMapping","resultname","_start","_count","Wuid","ResultName","SuppressXmlSchema","Start","Count","Result","Total","responseKey","fetchResult","WUQuery","_request","Jobname","WUQueryResponse","Workunits","ECLWorkunit","fetchResultNames","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","_heat","_size","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","root","logo","logo_accent","logo_circles","line","circle_1","circle_2","circle_3","circle_4","circle_5","circle_6","circle_7","circle_8","circle_accent","text_hpccsystems","text_r","text_tm","testData","bbox","getBBox","centerX","centerY","scale","min","animation","transition","duration","ease","HPCCBadge","_Html","overflowX_exists","overflowX","overflowY_exists","overflowY","html","Html","_IconList","_list","_entity_list","_content_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","paginator","side","_onSelect","postUpdate","classed","property","pageNumber","numItems","itemsPerPage","adjacentPages","page","li","a","linkText","createTextNode","span","d3Event","order","Paginator","_Table","_paginator","_selectionBag","_selectionPrevClick","_paginatorTableSpacing","tableDiv","thead","table","fixedHead","fixedHeadTable","fixedThead","unfixedThead","tbody","tfoot","fixedCol","fixedColTable","fixedColHead","fixedColHeadRow","fixedColBody","fixedColFoot","fixedColFootRow","_prevDescending","_prevSortByFieldIndex","_hasChildWidgets","_empty_col_idx_arr","Selection","topMargin","showHeader","fixedHeader","isHidden","pivot","hiddenColumns","tableColumns","tableData","col","noTransform","transform","calcFieldsIndex","colLen","visibleCount","getEmptyColumnIdxArr","ret_arr","hideEmptyColumns","col_idx","column_is_empty","row_idx","_placeholderElement","sortByFieldIndex_exists","sortByFieldIndex","descending","multiSort","reverse","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","_targetWidget","_targetWidgetMonitor","isRainbow","widget","getWidget","targetWidget","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","_fontWidth","_textElement","fontSize","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","groupCount","tooltipdiv","_drawStartPos","h","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","_widgetOrig","_parentPropertyEditor","_show_settings","_selectedItems","__meta_sorting","_watch","_childPE","d3Local","parentPropertyEditor","depth","parent","_show_header","show_header","show_settings","rootWidgets","_owningWidget","excludeObjs","tableElement","enterHeader","updateHeader","renderInputs","watchWidget","watchDepth","__hpcc_debug","info","_paramId","newVal","oldVal","peInputIcon","refreshExpandIcon","sortIcon","refreshSortIcon","hideNonWidgets","spanText","refreshHideParamsIcon","peInputCount","peInputCollapsedCount","collapsed","newIcon","increment","sorting","types","sorting_options","icons","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","topWidget","topPropEditor","oldValue","propEditor","broadcast","checked","multiline","isIE","_key","Persist.serialize","PropertyEditor","Grid","postSelectionChange","_RadioCheckbox","_label","_Checkbox","rcData","view","concat","sort_exists","l","radioCheckbox","checkboxDiv","selectedData","handleClick","rcDiv","multiple","RadioCheckbox","_Select","_select","selectData","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","_sharedProperties","getDefaultThemes","getDefaultSerials","showSettings","onChange","propID","widgetProperty","elmValue","save","needsPropTableRedraw","paramGrouping","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"],"mappings":"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","x_google_ignoreList":[1,3,5,6,7,8,9,10,14]}
1
+ {"version":3,"file":"index.js","names":["interval","interval","interval","interval"],"sources":["../src/__package__.ts","../../../node_modules/d3-timer/src/timer.js","../src/Audio.ts","../../../node_modules/javascript-autocomplete/auto-complete.js","../src/AutoCompleteText.css","../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 = \"__PACKAGE_NAME__\";\nexport const PKG_VERSION = \"__PACKAGE_VERSION__\";\nexport const BUILD_VERSION = \"__BUILD_VERSION__\";\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",".other_autoCompleteText label {\n display: inline-block;\n vertical-align: top;\n}\n\n.other_autoCompleteText input {\n width: 100%;\n max-width: 600px;\n outline: 0;\n border-radius: 100;\n}\n\n.autocomplete-suggestions {\n text-align: left;\n cursor: default;\n border: 1px solid #ccc;\n border-top: 0;\n background: #fff;\n box-shadow: -1px 1px 3px rgba(0, 0, 0, .1);\n /* core styles should not be changed */\n position: absolute;\n display: none;\n z-index: 9999;\n max-height: 254px;\n overflow: hidden;\n overflow-y: auto;\n box-sizing: border-box;\n}\n\n.autocomplete-suggestion {\n position: relative;\n padding: 0 .6em;\n line-height: 23px;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n font-size: 1.02em;\n color: #333;\n}\n\n.autocomplete-suggestion b {\n font-weight: normal;\n color: #1f8dd6;\n}\n\n.autocomplete-suggestion.selected {\n background: #f0f0f0;\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;\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;\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"],"x_google_ignoreList":[1,3,6,7,8,9,10,11,15],"mappings":"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"}