@hpcc-js/timeline 2.51.23 → 2.51.24
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.es6.js +2 -2
- package/dist/index.es6.js.map +1 -1
- package/dist/index.js +2 -2
- package/dist/index.js.map +1 -1
- package/dist/index.min.js +1 -1
- package/dist/index.min.js.map +1 -1
- package/package.json +8 -8
- package/src/__package__.ts +2 -2
- package/types/__package__.d.ts +2 -2
- package/types-3.4/__package__.d.ts +2 -2
package/dist/index.min.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["extendStatics","d","b","Object","setPrototypeOf","__proto__","Array","p","prototype","hasOwnProperty","call","__extends","TypeError","String","__","this","constructor","create","__assign","assign","t","s","i","n","arguments","length","apply","__spreadArray","to","from","pack","ar","l","slice","concat","SuppressedError","css","ref","insertAt","document","head","getElementsByTagName","style","createElement","type","firstChild","insertBefore","appendChild","styleSheet","cssText","createTextNode","MiniGantt","_super","_this","localRect","d3Local","localEntityPin","_title_idx","_startDate_idx","_endDate_idx","_icon_idx","_color_idx","_yoffset_idx","ITooltip","Utility","SimpleSelectionMixin","_drawStartPos","tooltipHTML","tooltipFormatter","brAxis","parse","tlAxis","Axis","verticalBands","d3ScaleBand","paddingOuter","paddingInner","isHorizontal","orientation","fullExtent","data","map","filter","d3Extent","extent","rootExtent","undefined","centerOnMostRecent","parser","d3TimeParse","timePattern","formatter","d3TimeFormat","date1","date2","Date","setFullYear","getFullYear","time1","getTime","timeDiff","dataStartPos","_dateCache","pos","scalePos","dataEndPos","dataWidth","resetZoom","_zoom","transform","element","d3ZoomIdentity","translate","height","zoomed","d3Event","render","enter","domNode","d3Zoom","scaleExtent","maxZoom","on","background","append","attr","stopPropagation","gUpperContent","gUpperAxis","gMiddleContent","gLowerAxis","gLowerContent","target","node","tickFormat","guideTarget","shrinkToFit","overlapMode","tickFormat_exists","extend","_selection","widgetElement","update","titleColumn","columns","indexOf","startDateColumn","endDateColumn","iconColumn","colorColumn","yOffsetColumn","_prevIsHorizontal","tooltipTimeFormat","width","x","reverse","low","high","updateScale","y","hi","parseInvert","invert","invertX","invertY","sort","r","retVal","localeCompare","events","ranges","brAxisBBox","getBBox","upperContentHeight","updateEntityPins","lowerAxisHeight","lowerHeight","minYOffset","Math","min","row","isNaN","visible","y_offset","upperContentYOffset","lowerAxisYOffset","halfMinYOffset","tlAxisBBox","bucketData","bucketIndex","_i","ranges_1","range","bucket","endPos","overlapTolerence","push","vbLower","vbHigher","domain","_d","updateEventRanges","event_height","context","entityPins","selectAll","eventFontColor_idx","eventFontColorColumn","eventBorderColor_idx","eventBorderColorColumn","eventBackgroundColor_idx","eventBackgroundColorColumn","title_counts","events_1","title_types","keys","title_group_offset","eventGroupOffset","entityPinsEnter","d3Select","raise","each","entityPin","EntityPin","icon","iconOnlyShowOnHover","hideIconWhenCollapsed","titleOnlyShowOnHover","hideTitleWhenCollapsed","descriptionOnlyShowOnHover","hideDescriptionWhenCollapsed","annotationOnlyShowOnHover","hideAnnotationsWhenCollapsed","iconDiameter","iconPaddingPercent","titleFontSize","descriptionColor","descriptionFontSize","iconColor","titleColor","backgroundShape","backgroundColorFill","backgroundColorStroke","cornerRadius","arrowHeight","arrowWidth","set","merge","get","_title","title","x_offset","eventGroupMod","description","parsed_start_time","formatted_start_time","animationFrameRender","move","calc_height","calcHeight","exit","remove","event_offset","abs","eventRangeHeight","lines","buckets","bind","entityRect","EntityRect","rangeFontColor","enterEntityRect","click","rowToObj","selected","dblclick","tooltip","hide","show","textBox","bandwidth","rectWidth","max","rectHeight","paddingSize","fontSize","iconSize","fixedHeight","fixedWidth","padding","updateEntityRect","col","sel","textbox","SVGWidget","_class","implements","mixin","publish","optional","ReactGantt","drawStartPosition","Selection","_series_idx","_bucket_idx","_rangeOptions","rangePadding","fontFamily","fill","stroke","textFill","strokeWidth","_rangeRenderer","LabelledRect","_transform","k","showToolbar_default","_tooltip","HTMLTooltip","followCursor","rangeRenderer","_","clear","zoomExtent","seriesColumn","bucketColumn","w","x1","_interpolateX","d3ScaleLinear","_minStart","_maxEnd","a","_origIdxMap","_dataBySeries","_bucketsBySeries","forEach","dataRow","origIdx","seriesKey","gutter_1","gutter","bucketOffset_1","seriesKeys","calcBuckets","bucketHeight","bucketOffset","maxBucket","_seriesBackgrounds","_renderElement","key","join","props","hidden","oddSeriesBackground","evenSeriesBackground","_buckets","interpedStart","zoomTo","setRangeOptions","_maxFontScale","measureDataText","itemSelection","borderOffset1","borderOffset2","_id","id","isSelected","selectionChanged","classed","__lparam","highlightItem","mousein","d3evt","_triggerElement","_cursorLoc","clientX","clientY","fitContent","mouseover","mouseout","that","endX","bucketMap","interpolateY","text","renderRangeElement","x2","xScale","transformEach","options","setAttribute","bucketScale","truncateText","_maxY","_maxX","renderMode","_zoomScale","_zoomTranslate","_zoomG","options_1","zoomedHook","startKey","endKey","bucketKey","bucketKeyMap","tol","end","Infinity","i2","_a","_b","forceMeasure","textWidths","characterWidths","_prevFontFamily","_prevFontSize","textSize","split","char","_textWidths","_characterWidths","scale","ret","sum","_width","text_1","resize","_size","fitWidthToContent","fitHeightToContent","_element","_col","SVGZoomWidget","ReactAxisGantt","_topAxis","_gantt","_bottomAxis","resizeWrappers","h","axisHeight","contentHeight","_topRect","_topAxisElement","_contentRect","_contentElement","_bottomRect","_bottomAxisElement","onzoom","wpp","nextLow","floor","nextHigh","ceil","axisFontFamily","axisFontSize","tickLength","axisTickLength","ganttData","Number","publishProxy","ReactAxisGanttSeries","centerOverflowX_default","centerOverflowY_default","bottomHeight","_topWA","_centerWA","_bottomWA","top","bottom","center","lazyRender","d3Min","d3Max","Border2","ReactTimeline","startTime","endTime","timePattern_exists","minTimestamp_1","maxTimestamp_1","lowDateStr_1","highDateStr_1","start","_axisLabelFormatter","callback","_tooltipHTML","parseAxisValue","v","parsedTime","parseTime","formatTime","ReactTimelineSeries"],"sources":["../src/__package__.ts","../../../node_modules/tslib/tslib.es6.mjs","../../../node_modules/style-inject/dist/style-inject.es.js","../src/MiniGantt.ts","../src/ReactGantt.ts","../src/ReactAxisGantt.ts","../src/ReactAxisGanttSeries.ts","../src/ReactTimeline.ts","../src/ReactTimelineSeries.ts"],"sourcesContent":["export const PKG_NAME = \"@hpcc-js/timeline\";\nexport const PKG_VERSION = \"2.51.23\";\nexport const BUILD_VERSION = \"2.105.5\";\n","/******************************************************************************\nCopyright (c) Microsoft Corporation.\n\nPermission to use, copy, modify, and/or distribute this software for any\npurpose with or without fee is hereby granted.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\nPERFORMANCE OF THIS SOFTWARE.\n***************************************************************************** */\n/* global Reflect, Promise, SuppressedError, Symbol */\n\nvar extendStatics = function(d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n};\n\nexport function __extends(d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n}\n\nexport var __assign = function() {\n __assign = Object.assign || function __assign(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n return t;\n }\n return __assign.apply(this, arguments);\n}\n\nexport function __rest(s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n}\n\nexport function __decorate(decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n}\n\nexport function __param(paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n}\n\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\n function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\n var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\n var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\n var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\n var _, done = false;\n for (var i = decorators.length - 1; i >= 0; i--) {\n var context = {};\n for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\n for (var p in contextIn.access) context.access[p] = contextIn.access[p];\n context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\n var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\n if (kind === \"accessor\") {\n if (result === void 0) continue;\n if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\n if (_ = accept(result.get)) descriptor.get = _;\n if (_ = accept(result.set)) descriptor.set = _;\n if (_ = accept(result.init)) initializers.unshift(_);\n }\n else if (_ = accept(result)) {\n if (kind === \"field\") initializers.unshift(_);\n else descriptor[key] = _;\n }\n }\n if (target) Object.defineProperty(target, contextIn.name, descriptor);\n done = true;\n};\n\nexport function __runInitializers(thisArg, initializers, value) {\n var useValue = arguments.length > 2;\n for (var i = 0; i < initializers.length; i++) {\n value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\n }\n return useValue ? value : void 0;\n};\n\nexport function __propKey(x) {\n return typeof x === \"symbol\" ? x : \"\".concat(x);\n};\n\nexport function __setFunctionName(f, name, prefix) {\n if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\n return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\n};\n\nexport function __metadata(metadataKey, metadataValue) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\n}\n\nexport function __awaiter(thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n}\n\nexport function __generator(thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n}\n\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n});\n\nexport function __exportStar(m, o) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\n}\n\nexport function __values(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n}\n\nexport function __read(o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n}\n\n/** @deprecated */\nexport function __spread() {\n for (var ar = [], i = 0; i < arguments.length; i++)\n ar = ar.concat(__read(arguments[i]));\n return ar;\n}\n\n/** @deprecated */\nexport function __spreadArrays() {\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\n r[k] = a[j];\n return r;\n}\n\nexport function __spreadArray(to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n}\n\nexport function __await(v) {\n return this instanceof __await ? (this.v = v, this) : new __await(v);\n}\n\nexport function __asyncGenerator(thisArg, _arguments, generator) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\n function fulfill(value) { resume(\"next\", value); }\n function reject(value) { resume(\"throw\", value); }\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\n}\n\nexport function __asyncDelegator(o) {\n var i, p;\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\n}\n\nexport function __asyncValues(o) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var m = o[Symbol.asyncIterator], i;\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\n}\n\nexport function __makeTemplateObject(cooked, raw) {\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\n return cooked;\n};\n\nvar __setModuleDefault = Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n};\n\nexport function __importStar(mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n}\n\nexport function __importDefault(mod) {\n return (mod && mod.__esModule) ? mod : { default: mod };\n}\n\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n}\n\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n}\n\nexport function __classPrivateFieldIn(state, receiver) {\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\n}\n\nexport function __addDisposableResource(env, value, async) {\n if (value !== null && value !== void 0) {\n if (typeof value !== \"object\" && typeof value !== \"function\") throw new TypeError(\"Object expected.\");\n var dispose;\n if (async) {\n if (!Symbol.asyncDispose) throw new TypeError(\"Symbol.asyncDispose is not defined.\");\n dispose = value[Symbol.asyncDispose];\n }\n if (dispose === void 0) {\n if (!Symbol.dispose) throw new TypeError(\"Symbol.dispose is not defined.\");\n dispose = value[Symbol.dispose];\n }\n if (typeof dispose !== \"function\") throw new TypeError(\"Object not disposable.\");\n env.stack.push({ value: value, dispose: dispose, async: async });\n }\n else if (async) {\n env.stack.push({ async: true });\n }\n return value;\n}\n\nvar _SuppressedError = typeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\n var e = new Error(message);\n return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\n};\n\nexport function __disposeResources(env) {\n function fail(e) {\n env.error = env.hasError ? new _SuppressedError(e, env.error, \"An error was suppressed during disposal.\") : e;\n env.hasError = true;\n }\n function next() {\n while (env.stack.length) {\n var rec = env.stack.pop();\n try {\n var result = rec.dispose && rec.dispose.call(rec.value);\n if (rec.async) return Promise.resolve(result).then(next, function(e) { fail(e); return next(); });\n }\n catch (e) {\n fail(e);\n }\n }\n if (env.hasError) throw env.error;\n }\n return next();\n}\n\nexport default {\n __extends,\n __assign,\n __rest,\n __decorate,\n __param,\n __metadata,\n __awaiter,\n __generator,\n __createBinding,\n __exportStar,\n __values,\n __read,\n __spread,\n __spreadArrays,\n __spreadArray,\n __await,\n __asyncGenerator,\n __asyncDelegator,\n __asyncValues,\n __makeTemplateObject,\n __importStar,\n __importDefault,\n __classPrivateFieldGet,\n __classPrivateFieldSet,\n __classPrivateFieldIn,\n __addDisposableResource,\n __disposeResources,\n};\n","function styleInject(css, ref) {\n if ( ref === void 0 ) ref = {};\n var insertAt = ref.insertAt;\n\n if (!css || typeof document === 'undefined') { return; }\n\n var head = document.head || document.getElementsByTagName('head')[0];\n var style = document.createElement('style');\n style.type = 'text/css';\n\n if (insertAt === 'top') {\n if (head.firstChild) {\n head.insertBefore(style, head.firstChild);\n } else {\n head.appendChild(style);\n }\n } else {\n head.appendChild(style);\n }\n\n if (style.styleSheet) {\n style.styleSheet.cssText = css;\n } else {\n style.appendChild(document.createTextNode(css));\n }\n}\n\nexport default styleInject;\n","import { ITooltip } from \"@hpcc-js/api\";\nimport { Axis } from \"@hpcc-js/chart\";\nimport { d3Event, EntityPin, EntityRect, local as d3Local, select as d3Select, SVGWidget, Utility } from \"@hpcc-js/common\";\nimport { extent as d3Extent } from \"d3-array\";\nimport { scaleBand as d3ScaleBand } from \"d3-scale\";\nimport { timeFormat as d3TimeFormat, timeParse as d3TimeParse } from \"d3-time-format\";\nimport { zoom as d3Zoom, zoomIdentity as d3ZoomIdentity } from \"d3-zoom\";\n\nimport \"../src/MiniGantt.css\";\n\nexport class MiniGantt extends SVGWidget {\n protected tlAxis: Axis;\n protected brAxis: Axis;\n protected verticalBands;\n protected _zoom;\n protected gUpperContent;\n protected gUpperAxis;\n protected gMiddleContent;\n protected gLowerAxis;\n protected gLowerContent;\n private localRect = d3Local<EntityRect>();\n private localEntityPin = d3Local<EntityPin>();\n private tooltipFormatter: (date: Date) => string;\n private _dateCache;\n\n protected rootExtent;\n protected _title_idx = 0;\n protected _startDate_idx = 1;\n protected _endDate_idx = 2;\n protected _icon_idx = -1;\n protected _color_idx = -1;\n protected _yoffset_idx = -1;\n\n constructor() {\n super();\n ITooltip.call(this);\n Utility.SimpleSelectionMixin.call(this);\n\n this._drawStartPos = \"origin\";\n this.tooltipHTML((d: any) => `<center>${d[this._title_idx]}</center><br>${this.tooltipFormatter(this.brAxis.parse(d[this._startDate_idx]))} -> ${this.tooltipFormatter(this.brAxis.parse(d[this._endDate_idx]))}`);\n\n this.tlAxis = new Axis()\n .type(\"time\")\n ;\n this.brAxis = new Axis()\n .type(\"time\")\n ;\n this.verticalBands = d3ScaleBand()\n .paddingOuter(0.2)\n .paddingInner(0.2)\n ;\n }\n\n isHorizontal(): boolean {\n return this.orientation() === \"horizontal\";\n }\n\n fullExtent() {\n const data = [...this.data().map(d => d[this._startDate_idx]), ...this.data().filter(d => !!d[this._endDate_idx]).map(d => d[this._endDate_idx])];\n return d3Extent(data);\n }\n\n extent() {\n const extent = this.rootExtent ? [this.rootExtent[1], this.rootExtent[2]] : this.fullExtent();\n if (extent[0] !== undefined && extent[1] !== undefined) {\n if (extent[0] === extent[1] || this.centerOnMostRecent()) {\n const parser = d3TimeParse(this.timePattern());\n const formatter = d3TimeFormat(this.timePattern());\n const date1 = parser(extent[0]);\n const date2 = parser(extent[1]);\n if (extent[0] === extent[1]) {\n extent[0] = formatter(new Date(date1.setFullYear(date1.getFullYear() - 1)));\n extent[1] = formatter(new Date(date1.setFullYear(date1.getFullYear() + 2)));\n } else {\n const time1 = date1.getTime();\n const timeDiff = date2.getTime() - time1;\n extent[0] = formatter(date1);\n extent[1] = formatter(new Date(time1 + (timeDiff * 2)));\n }\n }\n }\n return extent;\n }\n\n dataStartPos(d) {\n if(typeof this._dateCache[d[this._startDate_idx]] !== \"undefined\"){\n return this._dateCache[d[this._startDate_idx]];\n }\n const pos = this.brAxis.scalePos(d[this._startDate_idx]);\n this._dateCache[d[this._startDate_idx]] = pos;\n return pos;\n }\n\n dataEndPos(d) {\n if(typeof this._dateCache[d[this._endDate_idx]] !== \"undefined\"){\n return this._dateCache[d[this._endDate_idx]];\n }\n const pos = this.brAxis.scalePos(d[this._endDate_idx]);\n this._dateCache[d[this._endDate_idx]] = pos;\n return pos;\n }\n\n dataWidth(d) {\n return this.dataEndPos(d) - this.dataStartPos(d);\n }\n\n private transform;\n resetZoom() {\n // Triggers a \"zoomed\" event ---\n this._zoom.transform(this.element(), d3ZoomIdentity.translate(0, this.isHorizontal() ? 0 : this.height()));\n }\n\n zoomed() {\n this.transform = d3Event().transform;\n this.render();\n }\n\n private background;\n enter(domNode, element) {\n super.enter(domNode, element);\n this._zoom = d3Zoom()\n .scaleExtent([0, this.maxZoom()])\n .on(\"zoom\", () => {\n this.zoomed();\n })\n ;\n\n this.background = element.append(\"rect\")\n .attr(\"fill\", \"white\")\n .attr(\"opacity\", 0)\n .on(\"dblclick\", () => {\n d3Event().stopPropagation();\n delete this.rootExtent;\n this.resetZoom();\n })\n ;\n this.gUpperContent = element.append(\"g\").attr(\"class\", \"gUpperContent\");\n this.gUpperAxis = element.append(\"g\").attr(\"class\", \"gUpperAxis\");\n this.gMiddleContent = element.append(\"g\").attr(\"class\", \"gMiddleContent\");\n this.gLowerAxis = element.append(\"g\").attr(\"class\", \"gLowerAxis\");\n this.gLowerContent = element.append(\"g\").attr(\"class\", \"gLowerContent\");\n this.tlAxis\n .target(this.gUpperAxis.node())\n .tickFormat(this.tickFormat())\n .guideTarget(this.gUpperAxis.append(\"g\").node())\n .shrinkToFit(\"none\")\n .overlapMode(this.tickFormat_exists() ? \"stagger\" : \"none\")\n .extend(0.1)\n ;\n this.brAxis\n .target(this.gLowerAxis.node())\n .tickFormat(this.tickFormat())\n .guideTarget(this.gLowerAxis.append(\"g\").node())\n .shrinkToFit(\"none\")\n .overlapMode(this.tickFormat_exists() ? \"stagger\" : \"none\")\n .extend(0.1)\n ;\n\n element.call(this._zoom);\n this._selection.widgetElement(this.gMiddleContent);\n }\n\n private _prevIsHorizontal;\n update(domNode, element) {\n super.update(domNode, element);\n\n this._dateCache = {};\n\n this._title_idx = this.titleColumn() !== null ? this.columns().indexOf(this.titleColumn()) : this._title_idx;\n this._startDate_idx = this.startDateColumn() !== null ? this.columns().indexOf(this.startDateColumn()) : this._startDate_idx;\n this._endDate_idx = this.endDateColumn() !== null ? this.columns().indexOf(this.endDateColumn()) : this._endDate_idx;\n this._icon_idx = this.iconColumn() !== null ? this.columns().indexOf(this.iconColumn()) : this._icon_idx;\n this._color_idx = this.colorColumn() !== null ? this.columns().indexOf(this.colorColumn()) : this._color_idx;\n this._yoffset_idx = this.yOffsetColumn() !== null ? this.columns().indexOf(this.yOffsetColumn()) : this._yoffset_idx;\n\n if (this._prevIsHorizontal !== this.isHorizontal()) {\n this._prevIsHorizontal = this.isHorizontal();\n this.resetZoom();\n return;\n }\n\n this.tooltipFormatter = d3TimeFormat(this.tooltipTimeFormat());\n\n const width = this.width();\n const height = this.height();\n\n this.background\n .attr(\"x\", 0)\n .attr(\"y\", 0)\n .attr(\"width\", width)\n .attr(\"height\", height)\n ;\n\n const extent = this.extent();\n this.tlAxis\n .x(width / 2)\n .orientation(this.isHorizontal() ? \"top\" : \"left\")\n .reverse(!this.isHorizontal())\n .timePattern(this.timePattern()) // \"%Y-%m-%dT%H:%M:%S.%LZ\"\n .width(width - 1)\n .low(extent[0])\n .high(extent[1])\n .updateScale()\n ;\n\n this.brAxis\n .x(width / 2)\n .y(height / 2)\n .orientation(this.isHorizontal() ? \"bottom\" : \"right\")\n .reverse(!this.isHorizontal())\n .timePattern(this.timePattern()) // \"%Y-%m-%dT%H:%M:%S.%LZ\"\n .width(width - 1)\n .height(height)\n .low(extent[0])\n .high(extent[1])\n .updateScale()\n ;\n\n if (this.transform) {\n let low;\n let hi;\n if (this.isHorizontal()) {\n low = this.tlAxis.parseInvert(this.tlAxis.invert(this.transform.invertX(0)));\n hi = this.tlAxis.parseInvert(this.tlAxis.invert(this.transform.invertX(width - 1)));\n } else {\n low = this.tlAxis.parseInvert(this.tlAxis.invert(- this.transform.invertY(0)));\n hi = this.tlAxis.parseInvert(this.tlAxis.invert(- this.transform.invertY(height - 1)));\n }\n this.tlAxis\n .low(low)\n .high(hi)\n .updateScale()\n ;\n this.brAxis\n .low(low)\n .high(hi)\n .updateScale()\n ;\n }\n\n const data = this.data().sort(this.isHorizontal() ? (l, r) => {\n const retVal = this.brAxis.scalePos(l[1]) - this.brAxis.scalePos(r[1]);\n if (retVal === 0) {\n return (\"\" + l[0]).localeCompare(\"\" + r[0]);\n }\n return retVal;\n } : (l, r) => {\n return this.brAxis.scalePos(r[1]) - this.brAxis.scalePos(l[1]);\n });\n const events = data.filter(d => !d[this._endDate_idx]);\n const ranges = data.filter(d => !!d[this._endDate_idx]);\n\n this.tlAxis\n .render()\n ;\n this.brAxis\n .render()\n ;\n const brAxisBBox = this.brAxis.getBBox();\n\n let upperContentHeight = this.updateEntityPins(events);\n const lowerAxisHeight = brAxisBBox.height;\n let lowerHeight = height - upperContentHeight;\n const minYOffset = this._yoffset_idx !== -1 ? Math.min.apply(undefined, this.data().filter(row => !isNaN(row[this._yoffset_idx])).map(row => row[this._yoffset_idx])) : 0;\n if (events.length > 0 && ranges.length === 0) {\n // ONLY EVENTS\n this.tlAxis.visible(false);\n let y_offset = upperContentHeight / 4;\n if (y_offset > (height / 2) - lowerAxisHeight) {\n y_offset = (height / 2) - lowerAxisHeight;\n }\n const upperContentYOffset = (height / 2) + y_offset;\n const lowerAxisYOffset = ((height / 2) - lowerAxisHeight - y_offset) * -1;\n const halfMinYOffset = minYOffset !== 0 ? minYOffset / 2 : 0;\n this.gUpperContent.attr(\"transform\", `translate(0, ${upperContentYOffset - halfMinYOffset})`);\n this.gLowerAxis.attr(\"transform\", `translate(0, ${lowerAxisYOffset - halfMinYOffset})`);\n } else if (events.length === 0 && ranges.length > 0) {\n // ONLY RANGES\n this.tlAxis.visible(true);\n this.gUpperContent.attr(\"transform\", `translate(0, ${upperContentHeight})`);\n this.gUpperAxis.attr(\"transform\", `translate(0, ${upperContentHeight})`);\n } else {\n upperContentHeight -= minYOffset;\n lowerHeight += minYOffset;\n // BOTH\n this.tlAxis.visible(true);\n this.gUpperContent.attr(\"transform\", `translate(0, ${upperContentHeight})`);\n this.gUpperAxis.attr(\"transform\", `translate(0, ${upperContentHeight})`);\n this.gMiddleContent.attr(\"transform\", `translate(0, ${upperContentHeight})`);\n }\n this.tlAxis\n .render()\n ;\n const tlAxisBBox = this.tlAxis.getBBox();\n interface BucketInfo {\n endPos: number;\n }\n const bucketData: BucketInfo[] = [];\n const bucketIndex = {};\n for (const range of ranges) {\n for (let i = 0; i < bucketData.length; ++i) {\n const bucket = bucketData[i];\n if (bucket.endPos + this.overlapTolerence() <= this.dataStartPos(range)) {\n bucketIndex[range] = i;\n bucket.endPos = this.dataEndPos(range);\n break;\n }\n }\n\n if (bucketIndex[range] === undefined) {\n bucketIndex[range] = bucketData.length;\n bucketData.push({\n endPos: this.dataEndPos(range)\n });\n }\n }\n\n const vbLower = this.isHorizontal() ? 0 + tlAxisBBox.height : 0 + tlAxisBBox.width;\n const vbHigher = this.isHorizontal() ? lowerHeight - brAxisBBox.height : width - brAxisBBox.width;\n this.verticalBands\n .range([vbLower, vbHigher])\n .domain(bucketData.map((_d, i) => i))\n ;\n\n if (ranges.length > 0) {\n this.updateEventRanges(events, ranges, bucketIndex, lowerHeight, tlAxisBBox, brAxisBBox, width);\n }\n }\n\n updateEntityPins(events) {\n let event_height = 0;\n const context = this;\n const entityPins = this.gUpperContent.selectAll(\".entity_pin\").data(events, d => d[0] + \":\" + d[1]);\n const eventFontColor_idx = this.eventFontColorColumn() ? this.columns().indexOf(this.eventFontColorColumn()) : -1;\n const eventBorderColor_idx = this.eventBorderColorColumn() ? this.columns().indexOf(this.eventBorderColorColumn()) : -1;\n const eventBackgroundColor_idx = this.eventBackgroundColorColumn() ? this.columns().indexOf(this.eventBackgroundColorColumn()) : -1;\n const title_counts = {};\n for (const d of events) {\n const type = typeof d[context._title_idx] !== \"undefined\" ? d[context._title_idx] : d[0];\n title_counts[type] = title_counts[type] ? title_counts[type] + 1 : 1;\n }\n const title_types = Object.keys(title_counts);\n const title_group_offset = context.eventGroupOffset();\n const entityPinsEnter = entityPins.enter().append(\"g\")\n .attr(\"class\", \"entity_pin\");\n entityPinsEnter.append(\"line\")\n .attr(\"class\", \"entity_line\");\n\n entityPinsEnter\n .on(\"mouseover\", function (d) {\n d3Select(this).raise();\n })\n .each(function (d, i) {\n const entityPin = new EntityPin()\n .target(this)\n .icon(\"\")\n .iconOnlyShowOnHover(context.hideIconWhenCollapsed())\n .titleOnlyShowOnHover(context.hideTitleWhenCollapsed())\n .descriptionOnlyShowOnHover(context.hideDescriptionWhenCollapsed())\n .annotationOnlyShowOnHover(context.hideAnnotationsWhenCollapsed())\n .iconDiameter(18)\n .iconPaddingPercent(1)\n .titleFontSize(14)\n .descriptionColor(\"#333\")\n .descriptionFontSize(15)\n .iconColor(eventFontColor_idx === -1 ? \"#333\" : d[eventFontColor_idx])\n .titleColor(eventFontColor_idx === -1 ? \"#333\" : d[eventFontColor_idx])\n .descriptionColor(eventFontColor_idx === -1 ? \"#333\" : d[eventFontColor_idx])\n .backgroundShape(\"pin\")\n .backgroundColorFill(eventFontColor_idx === -1 ? \"#f8f8f8\" : d[eventBackgroundColor_idx])\n .backgroundColorStroke(eventFontColor_idx === -1 ? \"#ccc\" : d[eventBorderColor_idx])\n .cornerRadius(5)\n .arrowHeight(10)\n .arrowWidth(16)\n ;\n context.localEntityPin.set(this, entityPin);\n })\n .merge(entityPins)\n .each(function (d, i) {\n const entityPin = context.localEntityPin.get(this);\n const _title = typeof d[context._title_idx] !== \"undefined\" ? d[context._title_idx] : entityPin.title();\n const x_offset = context.dataStartPos(d) - 0;\n let y_offset = ((title_types.indexOf(_title) % context.eventGroupMod()) * title_group_offset) - 5;\n if (typeof d[context._yoffset_idx] !== \"undefined\") y_offset += d[context._yoffset_idx] ? d[context._yoffset_idx] : 0;\n if (d[context._title_idx] !== entityPin.title() && d[context._startDate_idx] !== entityPin.description()) {\n const parsed_start_time = context.brAxis.parse(d[context._startDate_idx]);\n const formatted_start_time = context.tooltipFormatter(parsed_start_time);\n entityPin\n .x(x_offset)\n .y(y_offset)\n .iconOnlyShowOnHover(context.hideIconWhenCollapsed())\n .titleOnlyShowOnHover(context.hideTitleWhenCollapsed())\n .descriptionOnlyShowOnHover(context.hideDescriptionWhenCollapsed())\n .annotationOnlyShowOnHover(context.hideAnnotationsWhenCollapsed())\n .icon(typeof d[context._icon_idx] !== \"undefined\" ? d[context._icon_idx] : entityPin.icon())\n .title(_title)\n .description(formatted_start_time)\n .animationFrameRender()\n ;\n } else {\n entityPin.move({ x: x_offset, y: y_offset });\n }\n const calc_height = entityPin.calcHeight();\n if (event_height < calc_height) event_height = calc_height;\n\n d3Select(this).selectAll(\".entity_line\")\n .attr(\"x1\", x_offset)\n .attr(\"x2\", x_offset)\n .attr(\"y1\", 0)\n .attr(\"y2\", y_offset)\n .style(\"stroke\", eventFontColor_idx === -1 ? \"#ccc\" : d[eventBorderColor_idx])\n .style(\"stroke-width\", 1)\n ;\n })\n ;\n entityPins.exit()\n .each(function (d, i) {\n const entityPin = context.localEntityPin.get(this);\n entityPin.target(null);\n\n })\n .remove();\n const event_offset = Math.abs(Math.min(events.length, context.eventGroupMod()) * context.eventGroupOffset());\n return event_height + event_offset;\n }\n\n updateEventRanges(events, ranges, bucketIndex, eventRangeHeight, tlAxisBBox, brAxisBBox, width) {\n const context = this;\n\n const lines = this.gMiddleContent.selectAll(\".line\").data(events, d => {\n return d[context._title_idx];\n });\n lines.enter().append(\"line\")\n .attr(\"class\", \"line\")\n .merge(lines)\n .attr(this.isHorizontal() ? \"x1\" : \"y1\", d => this.dataStartPos(d) - 0)\n .attr(this.isHorizontal() ? \"x2\" : \"y2\", d => this.dataStartPos(d) - 0)\n .attr(this.isHorizontal() ? \"y1\" : \"x1\", this.isHorizontal() ? tlAxisBBox.height : tlAxisBBox.width)\n .attr(this.isHorizontal() ? \"y2\" : \"x2\", this.isHorizontal() ? eventRangeHeight - brAxisBBox.height : width - brAxisBBox.width)\n ;\n lines.exit().remove();\n const buckets = this.gMiddleContent.selectAll(\".buckets\").data(ranges, d => d[context._title_idx]);\n buckets.enter().append(\"g\")\n .attr(\"class\", \"buckets\")\n .call(this._selection.enter.bind(this._selection))\n .each(function (d) {\n const entityRect = new EntityRect()\n .target(this)\n .iconDiameter(28)\n .iconPaddingPercent(0)\n .titleFontSize(28)\n .titleColor(context.rangeFontColor())\n .descriptionColor(context.rangeFontColor())\n .iconColor(context.rangeFontColor())\n .backgroundShape(\"rect\")\n .backgroundColorFill(d[context._color_idx])\n ;\n context.localRect.set(this, entityRect);\n context.enterEntityRect(entityRect, d);\n })\n .on(\"click\", function (d) {\n context.click(context.rowToObj(d), \"range\", context._selection.selected(this));\n }, false)\n .on(\"dblclick\", function (d) {\n context.rootExtent = d;\n context.resetZoom();\n context.dblclick(context.rowToObj(d), \"range\", context._selection.selected(this));\n }, true)\n .on(\"mouseout.tooltip\", this.tooltip.hide)\n .on(\"mousemove.tooltip\", this.tooltip.show)\n .merge(buckets)\n .attr(\"transform\", d => context.isHorizontal() ?\n `translate(${this.dataStartPos(d)}, ${this.verticalBands(bucketIndex[d])}) ` :\n `translate(${this.verticalBands(bucketIndex[d])}, ${this.dataStartPos(d)}) `)\n .each(function (d) {\n const textBox = context.localRect.get(this);\n const x = context.dataWidth(d) / 2;\n const y = context.verticalBands.bandwidth() / 2;\n const rectWidth = Math.max(context.dataWidth(d), 2);\n const rectHeight = Math.max(context.verticalBands.bandwidth(), 2);\n const fontHeightRatio = 0.618;\n const paddingRatio = ((1 - fontHeightRatio) / 2);\n const paddingSize = paddingRatio * rectHeight;\n const fontSize = rectHeight * fontHeightRatio;\n const iconSize = fontSize;\n textBox\n .pos(context.isHorizontal() ? { x, y } : { x: y, y: x })\n .fixedHeight(context.isHorizontal() ? rectHeight : rectWidth)\n .fixedWidth(context.isHorizontal() ? rectWidth : rectHeight)\n .icon(typeof d[context._icon_idx] !== \"undefined\" ? d[context._icon_idx] : \"\")\n .title(typeof d[context._title_idx] !== \"undefined\" ? d[context._title_idx] : \"\")\n .padding(paddingSize)\n .iconDiameter(iconSize)\n .titleFontSize(fontSize)\n ;\n if (iconSize * 1.5 > rectWidth) {\n textBox.icon(null);\n }\n context.updateEntityRect(textBox, d[context._icon_idx]);\n textBox\n .render()\n ;\n });\n buckets.exit().remove();\n }\n\n exit(domNode, element) {\n this.brAxis.target(null);\n this.tlAxis.target(null);\n super.exit(domNode, element);\n }\n\n // Events ---\n click(row, col, sel) {\n }\n\n dblclick(row, col, sel) {\n }\n\n enterEntityRect(textbox: EntityRect, d) {\n }\n\n updateEntityRect(textbox: EntityRect, d) {\n }\n\n // ITooltip ---\n tooltip;\n tooltipHTML: (_) => string;\n tooltipFormat: (_) => string;\n\n // SimpleSelectionMixin\n _selection;\n}\nMiniGantt.prototype._class += \" timeline_MiniGantt\";\nMiniGantt.prototype.implements(ITooltip.prototype);\nMiniGantt.prototype.mixin(Utility.SimpleSelectionMixin);\n\nexport interface MiniGantt {\n timePattern(): string;\n timePattern(_: string): this;\n tickFormat(): string;\n tickFormat(_: string): this;\n tickFormat_exists(): boolean;\n tooltipTimeFormat(): string;\n tooltipTimeFormat(_: string): this;\n overlapTolerence(): number;\n overlapTolerence(_: number): this;\n orientation(): string;\n orientation(_: string): this;\n rangeFontColor(): string;\n rangeFontColor(_: string): this;\n titleColumn(): string;\n titleColumn(_: string): this;\n startDateColumn(): string;\n startDateColumn(_: string): this;\n endDateColumn(): string;\n endDateColumn(_: string): this;\n iconColumn(): string;\n iconColumn(_: string): this;\n colorColumn(): string;\n colorColumn(_: string): this;\n yOffsetColumn(): string;\n yOffsetColumn(_: string): this;\n maxZoom(): number;\n maxZoom(_: number): this;\n eventGroupMod(): number;\n eventGroupMod(_: number): this;\n eventGroupOffset(): number;\n eventGroupOffset(_: number): this;\n eventFontColorColumn(): string;\n eventFontColorColumn(_: string): this;\n eventBorderColorColumn(): string;\n eventBorderColorColumn(_: string): this;\n eventBackgroundColorColumn(): string;\n eventBackgroundColorColumn(_: string): this;\n hideIconWhenCollapsed(): boolean;\n hideIconWhenCollapsed(_: boolean): this;\n hideTitleWhenCollapsed(): boolean;\n hideTitleWhenCollapsed(_: boolean): this;\n hideDescriptionWhenCollapsed(): boolean;\n hideDescriptionWhenCollapsed(_: boolean): this;\n hideAnnotationsWhenCollapsed(): boolean;\n hideAnnotationsWhenCollapsed(_: boolean): this;\n centerOnMostRecent(): boolean;\n centerOnMostRecent(_: boolean): this;\n\n}\n\nMiniGantt.prototype.publish(\"timePattern\", \"%Y-%m-%d\", \"string\", \"timePattern\");\nMiniGantt.prototype.publish(\"tickFormat\", null, \"string\", \"tickFormat\", undefined, { optional: true });\nMiniGantt.prototype.publish(\"tooltipTimeFormat\", \"%Y-%m-%d\", \"string\", \"tooltipTimeFormat\");\nMiniGantt.prototype.publish(\"overlapTolerence\", 2, \"number\", \"overlapTolerence\");\nMiniGantt.prototype.publish(\"orientation\", \"horizontal\", \"set\", \"orientation\", [\"horizontal\", \"vertical\"]);\nMiniGantt.prototype.publish(\"rangeFontColor\", \"#ecf0f1\", \"html-color\", \"rangeFontColor\");\nMiniGantt.prototype.publish(\"titleColumn\", null, \"string\", \"titleColumn\");\nMiniGantt.prototype.publish(\"startDateColumn\", null, \"string\", \"startDateColumn\");\nMiniGantt.prototype.publish(\"endDateColumn\", null, \"string\", \"endDateColumn\");\nMiniGantt.prototype.publish(\"iconColumn\", null, \"string\", \"iconColumn\");\nMiniGantt.prototype.publish(\"colorColumn\", null, \"string\", \"colorColumn\");\nMiniGantt.prototype.publish(\"yOffsetColumn\", null, \"string\", \"yOffsetColumn\");\nMiniGantt.prototype.publish(\"maxZoom\", 16, \"number\", \"maxZoom\");\nMiniGantt.prototype.publish(\"eventGroupOffset\", -50, \"number\", \"eventGroupOffset\");\nMiniGantt.prototype.publish(\"eventGroupMod\", 5, \"number\", \"eventGroupMod\");\nMiniGantt.prototype.publish(\"eventFontColorColumn\", null, \"string\", \"eventFontColorColumn\");\nMiniGantt.prototype.publish(\"eventBorderColorColumn\", null, \"string\", \"eventBorderColorColumn\");\nMiniGantt.prototype.publish(\"eventBackgroundColorColumn\", null, \"string\", \"eventBackgroundColorColumn\");\nMiniGantt.prototype.publish(\"hideIconWhenCollapsed\", false, \"boolean\", \"hideIconWhenCollapsed\");\nMiniGantt.prototype.publish(\"hideTitleWhenCollapsed\", false, \"boolean\", \"hideTitleWhenCollapsed\");\nMiniGantt.prototype.publish(\"hideDescriptionWhenCollapsed\", false, \"boolean\", \"hideDescriptionWhenCollapsed\");\nMiniGantt.prototype.publish(\"hideAnnotationsWhenCollapsed\", true, \"boolean\", \"hideAnnotationsWhenCollapsed\");\nMiniGantt.prototype.publish(\"centerOnMostRecent\", false, \"boolean\", \"If true, the timeline will be centered on the most recent data point\");\n","import { d3Event, select as d3Select, SVGZoomWidget, Utility } from \"@hpcc-js/common\";\nimport { HTMLTooltip } from \"@hpcc-js/html\";\nimport { scaleLinear as d3ScaleLinear } from \"d3-scale\";\nimport { React, render, LabelledRect } from \"@hpcc-js/react\";\n\nexport type IGanttData = [ string, number, number, any? ];\n\nexport interface IRangeOptions {\n rangePadding: number;\n fontFamily: string;\n fontSize: number;\n strokeWidth?: number;\n fill: string;\n stroke: string;\n textFill: string;\n cornerRadius: number;\n}\n\nexport class ReactGantt extends SVGZoomWidget {\n\n protected _selection = new Utility.Selection(this);\n\n protected _buckets;\n protected _interpolateX;\n protected _interpolateY;\n \n protected _bucketsBySeries;\n protected _dataBySeries;\n protected _origIdxMap;\n private _seriesBackgrounds;\n\n protected _maxFontSize;\n\n public _tooltip;\n\n public _minStart: number;\n public _maxEnd: number;\n\n protected _title_idx = 0;\n protected _startDate_idx = 1;\n protected _endDate_idx = 2;\n protected _icon_idx = -1;\n protected _color_idx = -1;\n protected _series_idx = -1;\n protected _bucket_idx = -1;\n protected _yoffset_idx = -1;\n\n protected _maxX: number;\n protected _maxY: number;\n\n private _rangeOptions: IRangeOptions = {\n rangePadding: 2,\n fontFamily: \"Verdana\",\n fontSize: 12,\n fill: \"white\",\n stroke: \"black\",\n textFill: \"black\",\n cornerRadius: 3,\n strokeWidth: 0\n };\n \n constructor(drawStartPosition: \"origin\" | \"center\" = \"origin\") {\n super();\n this._drawStartPos = drawStartPosition;\n\n this.showToolbar_default(false);\n\n this._tooltip = new HTMLTooltip();\n this._tooltip\n .tooltipHTML(d => {\n return `<div style=\"text-align:center;\">${d[0]}<br/><br/>${d[1]} -> ${d[2]}</div>`;\n });\n this._tooltip\n .followCursor(true)\n ;\n }\n\n private _rangeRenderer: React.FunctionComponent = LabelledRect;\n rangeRenderer(): React.FunctionComponent;\n rangeRenderer(_: React.FunctionComponent): this;\n rangeRenderer(_?: React.FunctionComponent): this | React.FunctionComponent {\n if (!arguments.length) return this._rangeRenderer;\n this._rangeRenderer = _;\n return this._rangeRenderer;\n }\n\n enter(domNode, element){\n super.enter(domNode, element);\n\n const context = this;\n element\n .on(\"click\", function (this: SVGElement, d) {\n context._selection.clear();\n });\n\n this._tooltip.target(domNode);\n }\n update(domNode, element){\n super.update(domNode, element);\n\n this.zoomExtent([0.05, this.maxZoom()]);\n\n this._title_idx = this.titleColumn() !== null ? this.columns().indexOf(this.titleColumn()) : this._title_idx;\n this._startDate_idx = this.startDateColumn() !== null ? this.columns().indexOf(this.startDateColumn()) : this._startDate_idx;\n this._endDate_idx = this.endDateColumn() !== null ? this.columns().indexOf(this.endDateColumn()) : this._endDate_idx;\n this._icon_idx = this.iconColumn() !== null ? this.columns().indexOf(this.iconColumn()) : this._icon_idx;\n this._color_idx = this.colorColumn() !== null ? this.columns().indexOf(this.colorColumn()) : this._color_idx;\n this._series_idx = this.seriesColumn() !== null ? this.columns().indexOf(this.seriesColumn()) : this._series_idx;\n this._bucket_idx = this.bucketColumn() !== null ? this.columns().indexOf(this.bucketColumn()) : -1;\n\n const context = this;\n const w = this.width();\n\n const x0 = 0;\n const x1 = w;\n\n this._interpolateX = d3ScaleLinear()\n .domain([this._minStart, this._maxEnd])\n .range([x0, x1])\n ;\n \n this.data().sort((a, b)=>a[1]-b[1]);\n \n if(this._series_idx > -1) {\n this._origIdxMap = {};\n this._dataBySeries = {};\n this._bucketsBySeries = {};\n this.data().forEach((dataRow, origIdx)=>{\n const seriesKey = dataRow[this._series_idx];\n if(!this._dataBySeries[seriesKey]) {\n this._origIdxMap[seriesKey] = {};\n this._dataBySeries[seriesKey] = [];\n }\n this._dataBySeries[seriesKey].push({\n dataRow,\n origIdx\n });\n });\n const gutter = this.gutter();\n let bucketOffset = 0;\n const seriesKeys = Object.keys(this._dataBySeries);\n seriesKeys.forEach(seriesKey=>{\n this._dataBySeries[seriesKey].sort((a, b)=>a.dataRow[1]-b.dataRow[1]);\n this._bucketsBySeries[seriesKey] = this.calcBuckets(this._dataBySeries[seriesKey].map(n=>n.dataRow), 1, 2);\n this._bucketsBySeries[seriesKey].bucketHeight = this.bucketHeight();\n this._bucketsBySeries[seriesKey].bucketOffset = bucketOffset;\n bucketOffset += (this._bucketsBySeries[seriesKey].bucketHeight + this.strokeWidth() + this.gutter()) * (this._bucketsBySeries[seriesKey].maxBucket+1);\n this._dataBySeries[seriesKey].forEach((n, i) => {\n this._origIdxMap[seriesKey][n.origIdx] = i;\n });\n });\n this._seriesBackgrounds = this._renderElement.selectAll(\".series-background\")\n .data(seriesKeys.map(key=>{\n return this._bucketsBySeries[key];\n }))\n ;\n this._seriesBackgrounds\n .join(\n enter => enter.append(\"rect\")\n .attr(\"class\", \"series-background\"),\n update => update,\n exit => exit\n .each(function (d) {\n delete d.element;\n })\n .remove()\n )\n .attr(\"opacity\", d => d.props && d.props.hidden ? 0 : 1)\n .each(function (this: SVGGElement, d, i) {\n d3Select(this)\n .attr(\"x\", 0)\n .attr(\"y\", d.bucketOffset - (gutter/2))\n .attr(\"width\", w)\n .attr(\"height\", ((d.bucketHeight + gutter) * (d.maxBucket + 1)) + gutter)\n .attr(\"fill\", i%2 ? context.oddSeriesBackground() : context.evenSeriesBackground())\n ;\n });\n } else {\n if(this._bucket_idx !== -1){\n this._buckets = this.calcBuckets(this.data(), this._startDate_idx, this._endDate_idx, this._bucket_idx);\n } else {\n this._buckets = this.calcBuckets(this.data(), this._startDate_idx, this._endDate_idx);\n }\n }\n const interpedStart = this._interpolateX(this._minStart);\n \n this.zoomTo(\n [interpedStart, 0],\n 1\n );\n\n const bucketHeight = this.bucketHeight();\n\n this.setRangeOptions();\n\n this._maxFontScale = (bucketHeight - (this.rangePadding() * 2));\n this.measureDataText();\n\n const itemSelection = this._renderElement.selectAll(\".item\")\n .data(this.data())\n ;\n const borderOffset1 = this.strokeWidth();\n const borderOffset2 = borderOffset1 * 2;\n itemSelection\n .join(\n enter => enter.append(\"g\")\n .attr(\"class\", \"item\")\n .on(\"click.selectionBag\", function (d, i) {\n const _id = d.id === undefined ? i : d.id;\n if(context._selection.isSelected({_id, element: d.element})){\n context._selection.clear();\n } else {\n context._selection.click(\n {\n _id,\n element: () => d.element\n }, \n d3Event\n );\n }\n context.selectionChanged();\n d3Event().stopPropagation();\n })\n .on(\"click\", function (this: SVGElement, d) {\n const selected = d.element.classed(\"selected\");\n if(d[context.columns().length]){\n d.__lparam = d[context.columns().length];\n }\n context.click(d, \"\", selected);\n })\n .on(\"dblclick\", function (this: SVGElement, d) {\n const selected = d.element.classed(\"selected\");\n if(d[context.columns().length]){\n d.__lparam = d[context.columns().length];\n }\n context.click(d, \"\", selected);\n })\n .on(\"mousein\", function (d) {\n context.highlightItem(d3Select(this), d);\n const selected = d.element.classed(\"selected\");\n context.mousein(d, \"\", selected);\n })\n .on(\"mouseover\", function (d) {\n const d3evt = d3Event();\n context._tooltip._triggerElement = d.element;\n context._tooltip._cursorLoc = [\n d3evt.clientX,\n d3evt.clientY\n ];\n context._tooltip\n .data(d)\n .visible(true)\n .fitContent(true)\n .render()\n ;\n context.highlightItem(d3Select(this), d);\n const selected = d.element.classed(\"selected\");\n context.mouseover(d, \"\", selected);\n })\n .on(\"mouseout\", function (d) {\n context._tooltip\n .visible(false)\n .render()\n ;\n context.highlightItem(null, null);\n const selected = d.element.classed(\"selected\");\n context.mouseout(d, \"\", selected);\n })\n .each(function (d, i) {\n d.that = this;\n d.element = d3Select(this);\n d.x = context._interpolateX(d[1]);\n const endX = context._interpolateX(d[2]);\n if(context._series_idx > -1) {\n const seriesKey = d[context._series_idx];\n const bucket = context._bucketsBySeries[seriesKey].bucketMap[context._origIdxMap[seriesKey][i]];\n d.y = context._bucketsBySeries[seriesKey].interpolateY(bucket) + context._bucketsBySeries[seriesKey].bucketOffset;\n } else {\n const _i = context._bucket_idx === -1 ? i : d[context._bucket_idx];\n d.y = context._buckets.interpolateY(context._buckets.bucketMap[_i]);\n }\n d.props={\n ...d[3],\n text: d[0]\n };\n d.props.width = endX - d.x;\n d.props.height = bucketHeight;\n d.x += borderOffset1;\n d.y += borderOffset1;\n d.props.width -= borderOffset2;\n d.props.height -= borderOffset2;\n d.element.attr(\"transform\", `translate(${d.x+(d.props.width/2)} ${d.y+(d.props.height/2)})`);\n }),\n update => update,\n exit => exit\n .each(function (d) {\n delete d.element;\n })\n .remove()\n )\n .attr(\"opacity\", d => d.props && d.props.hidden ? 0 : 1)\n .each(function (this: SVGGElement, d, i) {\n d.that = this;\n if(context._series_idx > -1){\n const seriesKey = d[context._series_idx];\n d.x = context.renderRangeElement(d, i, false, context._rangeOptions, seriesKey);\n } else {\n d.x = context.renderRangeElement(d, i, false, context._rangeOptions);\n }\n })\n .on(\"dblclick.zoom\", d => {\n const x1 = this._interpolateX(d[1]);\n const x2 = this._interpolateX(d[2]);\n const xRange = x2 - x1;\n const xScale = w / xRange;\n this.zoomTo(\n [\n -x1 * xScale,\n 0\n ],\n xScale\n );\n })\n ;\n element.on(\"dblclick.zoom\", null);\n }\n renderRangeElement(d, i, transformEach = false, options: any = {}, seriesKey?: string) {\n const borderOffset1 = options.strokeWidth;\n const borderOffset2 = borderOffset1 * 2;\n const padding = options.rangePadding;\n let endX;\n const x = isNaN(this._transform.x) ? 0 : this._transform.x;\n const k = isNaN(this._transform.k) ? 1 : this._transform.k;\n let b;\n const bucketHeight = this.bucketHeight();\n d.that.setAttribute(\"data-series\", seriesKey);\n\n if(this._color_idx > -1){\n d.that.setAttribute(\"data-color\", d[this._color_idx]);\n }\n \n if(seriesKey !== undefined) {\n b = this._bucketsBySeries[seriesKey].bucketMap[this._origIdxMap[seriesKey][i]];\n d.that.setAttribute(\"data-b\", b);\n d.that.setAttribute(\"data-bucketOffset\", this._bucketsBySeries[seriesKey].bucketOffset);\n d.y = this._bucketsBySeries[seriesKey].interpolateY(b) + this._bucketsBySeries[seriesKey].bucketOffset;\n d.that.setAttribute(\"data-dy\", d.y);\n } else {\n b = this._buckets.bucketMap[i];\n d.y = this._buckets.interpolateY(b);\n }\n if(this._color_idx > -1) {\n options.fill = d[this._color_idx];\n }\n if (!transformEach) {\n d.x = this._interpolateX(d[1]);\n endX = this._interpolateX(d[2]);\n d.props={\n ...d[3],\n text: d[0]\n };\n d.props.width = (endX - d.x) / k;\n } else {\n d.x = this._interpolateX(d[1]) * k;\n endX = this._interpolateX(d[2]) * k;\n d.props={\n ...d[3],\n text: d[0]\n };\n d.props.width = (endX - d.x)/k;\n d.x += x;\n d.props.width *= k;\n }\n d.props.height = bucketHeight;\n if(seriesKey === undefined && this._buckets.bucketScale < 1) {\n d.props.height = this._buckets.bucketScale * bucketHeight;\n }\n if(d.element === undefined && d.that){\n d.element = d3Select(d.that);\n }\n d.element.attr(\"transform\", `translate(${d.x+(d.props.width/2)} ${d.y+(d.props.height/2)})`);\n \n d.x += borderOffset1;\n d.y += borderOffset1;\n d.props.width -= borderOffset2;\n d.props.height -= borderOffset2;\n d.props.width = d.props.width < 1 ? 1 : d.props.width;\n d.props.height = d.props.height < 1 ? 1 : d.props.height;\n\n let text = this.truncateText(d.props.text, d.props.width - padding, this._maxFontScale);\n \n if(text !== d.props.text){\n text = this.truncateText(d.props.text, d.props.width - padding);\n } else {\n d.props.fontSize = this._maxFontScale * options.fontSize;\n }\n if(seriesKey === undefined && this._buckets.bucketScale < 1) {\n d.props.fontSize = Math.min(this._maxFontScale, this._buckets.bucketScale) * options.fontSize;\n }\n if(!this._maxY || this._maxY < d.y + d.props.height) {\n this._maxY = d.y + d.props.height;\n }\n if(!this._maxX || this._maxX < d.x + d.props.width) {\n this._maxX = d.x + d.props.width;\n }\n render(\n this._rangeRenderer,\n {\n ...options,\n ...d.props,\n text,\n },\n d.that\n );\n }\n\n setRangeOptions(){\n this._rangeOptions = {\n rangePadding: this.rangePadding(),\n fontFamily: this.fontFamily(),\n fontSize: this.fontSize(),\n strokeWidth: this.strokeWidth(),\n fill: this.fill(),\n stroke: this.stroke(),\n textFill: this.rangeFontColor(),\n cornerRadius: this.cornerRadius(),\n };\n }\n \n public _transform = {k:1, x:0, y:0};\n zoomed(transform) {\n this._transform = transform;\n switch(this.renderMode()){\n case \"scale-all\": \n this._zoomScale = transform.k;\n this._zoomTranslate = [transform.x, 0];\n this._zoomG.attr(\"transform\", `translate(${transform.x} ${0})scale(${transform.k} 1)`);\n break;\n default:\n const options = this._rangeOptions;\n this.data().forEach((d, i)=>{\n if(this._color_idx > -1){\n options.fill = d[this._color_idx];\n }\n if(this._series_idx > -1){\n const seriesKey = d[this._series_idx];\n this.renderRangeElement(d, i, true, options, seriesKey);\n } else {\n this.renderRangeElement(d, i, true, options);\n }\n });\n }\n\n this.zoomedHook(transform);\n }\n\n zoomedHook(transform) {\n\n }\n\n private calcBuckets(data, startKey: string | number, endKey: string | number, bucketKey?: string | number) {\n const bucketMap = {};\n const bucketKeyMap = {};\n const tol = this.overlapTolerence();\n const buckets = [{end:-Infinity}];\n let maxBucket = 0;\n if(bucketKey !== undefined) {\n data.forEach((d, i)=>{\n bucketMap[i] = d[bucketKey];\n bucketKeyMap[d[bucketKey]] = true;\n });\n maxBucket = Object.keys(bucketKeyMap).length;\n } else {\n data.forEach((d, i)=>{\n for (let i2 = 0; i2 < buckets.length; ++i2) {\n if (i === 0 || buckets[i2][endKey] + tol <= d[startKey]) {\n bucketMap[i] = i2;\n if(maxBucket < i2)maxBucket = i2;\n buckets[i2][endKey] = d[endKey];\n break;\n }\n }\n if(bucketMap[i] === undefined){\n bucketMap[i] = buckets.length;\n const b = {};\n b[endKey] = d[endKey];\n buckets.push(b as any);\n }\n \n if(maxBucket < bucketMap[i])maxBucket = bucketMap[i];\n });\n }\n const height = (maxBucket+1) * (this.bucketHeight() + this.gutter());\n return {\n bucketMap,\n maxBucket,\n bucketScale: this.height() / height,\n interpolateY: d3ScaleLinear()\n .domain([0, maxBucket+1])\n .range([0, Math.min(this.height(), height)])\n };\n }\n\n data(): IGanttData[];\n data(_: IGanttData[]): this;\n data(_?: IGanttData[]): this | IGanttData[] {\n const retVal = super.data.apply(this, arguments);\n if(arguments.length > 0) {\n this._minStart = Math.min(...this.data().map(n=>n[1])) ?? 0;\n this._maxEnd = Math.max(...this.data().map(n=>n[2])) ?? 1;\n this.measureDataText(true);\n }\n return retVal;\n }\n \n protected _textWidths;\n protected _maxFontScale;\n protected _characterWidths;\n protected _prevFontFamily;\n protected _prevFontSize;\n measureDataText(forceMeasure = false) {\n const textWidths = {};\n const characterWidths = {};\n const fontFamily = this.fontFamily();\n const fontSize = this.fontSize();\n const bucketHeight = this.bucketHeight();\n\n if(bucketHeight){\n this._maxFontScale = (bucketHeight - (this.rangePadding() * 2)) / fontSize;\n }\n\n if(forceMeasure || this._prevFontFamily !== fontFamily || this._prevFontSize !== fontSize) {\n characterWidths[\".\"] = Utility.textSize(\".\", fontFamily, fontSize).width;\n this.data().forEach(d=>{\n if(!textWidths[d[0]]){\n textWidths[d[0]] = Utility.textSize(d[0], fontFamily, fontSize).width;\n }\n d[0].split(\"\").forEach(char=>{\n if(!characterWidths[char]){\n characterWidths[char] = Utility.textSize(char, fontFamily, fontSize).width;\n }\n });\n });\n this._textWidths = textWidths;\n this._characterWidths = characterWidths;\n }\n this._prevFontFamily = fontFamily;\n this._prevFontSize = fontSize;\n }\n\n truncateText(text, width, scale = 1) {\n const textFits = this._textWidths[text] * scale < width;\n if(textFits){\n return text;\n }\n let ret = \"\";\n let sum = 0;\n const _width = width - (this._characterWidths[\".\"] * 3);\n for(const char of text){\n sum += this._characterWidths[char];\n if(sum < _width){\n ret += char;\n } else {\n break;\n }\n }\n return _width < 0 ? \"\" : ret + \"...\";\n }\n\n resize(_size?: { width: number, height: number }) {\n let retVal;\n if(this.fitWidthToContent() || this.fitHeightToContent()) {\n retVal = super.resize.call(this, {\n width: _size.width,\n height: this._maxY\n });\n } else {\n retVal = super.resize.apply(this, arguments);\n }\n return retVal;\n }\n\n selectionChanged() {\n \n }\n \n highlightItem(_element, d) {\n \n }\n\n click(row, _col, sel) {\n \n }\n\n dblclick(row, _col, sel) {\n \n }\n\n mousein(row, _col, sel) {\n }\n\n mouseover(row, _col, sel) {\n }\n\n mouseout(row, _col, sel) {\n }\n}\nReactGantt.prototype._class += \" timeline_ReactGantt\";\n\nexport interface ReactGantt {\n titleColumn(): string;\n titleColumn(_: string): this;\n startDateColumn(): string;\n startDateColumn(_: string): this;\n endDateColumn(): string;\n endDateColumn(_: string): this;\n iconColumn(): string;\n iconColumn(_: string): this;\n colorColumn(): string;\n colorColumn(_: string): this;\n seriesColumn(): string;\n seriesColumn(_: string): this;\n bucketColumn(): string;\n bucketColumn(_: string): this;\n overlapTolerence(): number;\n overlapTolerence(_: number): this;\n smallestRangeWidth(): number;\n smallestRangeWidth(_: number): this;\n bucketHeight(): number;\n bucketHeight(_: number): this;\n gutter(): number;\n gutter(_: number): this;\n showToolbar_default(_: boolean): this;\n fontSize(): number;\n fontSize(_: number): this;\n fontFamily(): string;\n fontFamily(_: string): this;\n strokeWidth(): number;\n strokeWidth(_: number): this;\n stroke(): string;\n stroke(_: string): this;\n cornerRadius(): number;\n cornerRadius(_: number): this;\n fill(): string;\n fill(_: string): this;\n rangeFontColor(): string;\n rangeFontColor(_: string): this;\n rangePadding(): number;\n rangePadding(_: number): this;\n renderMode(): \"default\" | \"scale-all\";\n renderMode(_: \"default\" | \"scale-all\"): this;\n maxZoom(): number;\n maxZoom(_: number): this;\n fitWidthToContent(): boolean;\n fitWidthToContent(_: boolean): this;\n fitHeightToContent(): boolean;\n fitHeightToContent(_: boolean): this;\n evenSeriesBackground(): string;\n evenSeriesBackground(_: string): this;\n oddSeriesBackground(): string;\n oddSeriesBackground(_: string): this;\n}\n\nReactGantt.prototype.publish(\"fitWidthToContent\", false, \"boolean\", \"If true, resize will simply reapply the bounding box width\");\nReactGantt.prototype.publish(\"fitHeightToContent\", false, \"boolean\", \"If true, resize will simply reapply the bounding box height\");\nReactGantt.prototype.publish(\"titleColumn\", null, \"string\", \"Column name to for the title\");\nReactGantt.prototype.publish(\"startDateColumn\", null, \"string\", \"Column name to for the start date\");\nReactGantt.prototype.publish(\"endDateColumn\", null, \"string\", \"Column name to for the end date\");\nReactGantt.prototype.publish(\"iconColumn\", null, \"string\", \"Column name to for the icon\");\nReactGantt.prototype.publish(\"colorColumn\", null, \"string\", \"Column name to for the color\");\nReactGantt.prototype.publish(\"seriesColumn\", null, \"string\", \"Column name to for the series identifier\");\nReactGantt.prototype.publish(\"bucketColumn\", null, \"string\", \"Column name to for the bucket identifier\");\nReactGantt.prototype.publish(\"renderMode\", \"default\", \"set\", \"Render modes vary in features and performance\", [\"default\", \"scale-all\"]);\nReactGantt.prototype.publish(\"rangePadding\", 3, \"number\", \"Padding within each range rectangle (pixels)\");\nReactGantt.prototype.publish(\"fill\", \"#1f77b4\", \"string\", \"Background color of range rectangle\");\nReactGantt.prototype.publish(\"stroke\", null, \"string\", \"Color of range rectangle border\");\nReactGantt.prototype.publish(\"strokeWidth\", null, \"number\", \"Width of range rectangle border (pixels)\");\nReactGantt.prototype.publish(\"cornerRadius\", 3, \"number\", \"Space between range buckets (pixels)\");\nReactGantt.prototype.publish(\"fontFamily\", null, \"string\", \"Font family within range rectangle\", null, {optional:true});\nReactGantt.prototype.publish(\"fontSize\", 10, \"number\", \"Size of font within range rectangle (pixels)\");\nReactGantt.prototype.publish(\"rangeFontColor\", \"#ecf0f1\", \"html-color\", \"rangeFontColor\");\nReactGantt.prototype.publish(\"overlapTolerence\", 2, \"number\", \"overlapTolerence\");\nReactGantt.prototype.publish(\"smallestRangeWidth\", 10, \"number\", \"Width of the shortest range (pixels)\");\nReactGantt.prototype.publish(\"bucketHeight\", 100, \"number\", \"Max height of range element (pixels)\");\nReactGantt.prototype.publish(\"gutter\", 2, \"number\", \"Space between range buckets (pixels)\");\nReactGantt.prototype.publish(\"maxZoom\", 16, \"number\", \"Maximum zoom\");\nReactGantt.prototype.publish(\"evenSeriesBackground\", \"#FFFFFF\", \"html-color\", \"Background color of even series rows\");\nReactGantt.prototype.publish(\"oddSeriesBackground\", \"#DDDDDD\", \"html-color\", \"Background color of odd series rows\");\n","import { Axis } from \"@hpcc-js/chart\";\nimport { SVGWidget } from \"@hpcc-js/common\";\nimport { ReactGantt } from \"./ReactGantt\";\n\nexport type IAxisGanttData = [ string, number | string, number | string, any? ] | any[];\n\nexport class ReactAxisGantt extends SVGWidget {\n\n protected _topAxis: Axis = new Axis(\"center\")\n .orientation(\"top\")\n .type(\"linear\")\n .shrinkToFit(\"none\")\n .overlapMode(\"hide\")\n .extend(0)\n .tickFormat(\"d\")\n ;\n protected _gantt: ReactGantt = new ReactGantt(\"center\")\n .stroke(\"#000000\")\n ;\n protected _bottomAxis: Axis = new Axis(\"center\")\n .orientation(\"bottom\")\n .type(\"linear\")\n .shrinkToFit(\"none\")\n .overlapMode(\"hide\")\n .extend(0)\n .tickFormat(\"d\")\n ;\n \n protected _topAxisElement;\n protected _contentElement;\n protected _bottomAxisElement;\n protected _topRect;\n protected _contentRect;\n protected _bottomRect;\n\n protected rangeRenderer;\n\n constructor(){\n super();\n this._drawStartPos = \"origin\";\n this.rangeRenderer = function () {\n const ret = this._gantt.rangeRenderer.apply(this._gantt, arguments);\n if(!arguments.length)return ret;\n return this;\n };\n }\n\n resizeWrappers() {\n\n const w = this.width();\n const h = this.height();\n\n const axisHeight = this.axisHeight(); //TODO: Dynamic scaling to allow for small resolutions?\n \n const contentHeight = (h - (axisHeight * 2));\n const borderOffset1 = this.strokeWidth();\n this._topRect\n .attr(\"height\", axisHeight)\n .attr(\"width\", w)\n .attr(\"fill\", \"transparent\")\n ;\n this._topAxisElement.attr(\"transform\", \"translate(0 0)\");\n this._topAxis.resize({height:axisHeight, width:w});\n this._contentRect\n .attr(\"height\", contentHeight)\n .attr(\"width\", w)\n .attr(\"fill\", \"transparent\")\n ;\n this._contentElement.attr(\"transform\", `translate(0 ${axisHeight + borderOffset1})`);\n this._gantt.resize({height:contentHeight, width:w});\n this._bottomRect\n .attr(\"height\", axisHeight)\n .attr(\"width\", w)\n .attr(\"fill\", \"transparent\")\n ;\n this._bottomAxisElement.attr(\"transform\", `translate(0 ${axisHeight + contentHeight + borderOffset1})`);\n this._bottomAxis.resize({height:axisHeight, width:w});\n }\n\n enter(domNode, element){\n super.enter(domNode, element);\n\n this._gantt.click = (row, col, sel) => {\n this.click(row, col, sel);\n };\n\n this._gantt.dblclick = (row, col, sel) => {\n this.dblclick(row, col, sel);\n };\n\n this._topAxisElement = element.append(\"g\")\n .attr(\"class\", \"top-axis-wrapper\")\n ;\n this._topRect = this._topAxisElement.append(\"rect\")\n .attr(\"class\", \"top-axis-rect\")\n ;\n this._contentElement = element.append(\"g\")\n .attr(\"class\", \"content-wrapper\")\n ;\n this._contentRect = this._contentElement.append(\"rect\")\n .attr(\"class\", \"content-rect\")\n ;\n this._bottomAxisElement = element.append(\"g\")\n .attr(\"class\", \"bottom-axis-wrapper\")\n ;\n this._bottomRect = this._bottomAxisElement.append(\"rect\")\n .attr(\"class\", \"top-axis-rect\")\n ;\n this._topAxis.target(this._topAxisElement.node());\n this._gantt.target(this._contentElement.node()).bucketHeight(30);\n this._bottomAxis.target(this._bottomAxisElement.node());\n\n this.resizeWrappers();\n\n this._gantt.zoomedHook = (transform) => {\n this.onzoom(transform);\n };\n }\n\n onzoom(transform) {\n\n const w = this.width();\n const low = this._gantt._minStart;\n const high = this._gantt._maxEnd;\n const range = high - low;\n const wpp = range / w;\n const nextLow = Math.floor(low - (wpp * (transform.x / transform.k)));\n const nextHigh = Math.ceil((range / transform.k) + nextLow);\n\n this._topAxis\n .fontFamily(this.axisFontFamily())\n .fontSize(this.axisFontSize())\n .tickLength(this.axisTickLength())\n .low(nextLow)\n .high(nextHigh)\n .render()\n ;\n this._bottomAxis\n .fontFamily(this.axisFontFamily())\n .fontSize(this.axisFontSize())\n .tickLength(this.axisTickLength())\n .low(nextLow)\n .high(nextHigh)\n .render()\n ;\n }\n\n update(domNode, element){\n super.update(domNode, element);\n this._topAxis.tickFormat(this.tickFormat()).render();\n this._bottomAxis.tickFormat(this.tickFormat()).render();\n this._gantt.render();\n }\n\n columns(): string[];\n columns(_: string[]): this;\n columns(_?: string[]): this | string[] {\n const retVal = super.columns.apply(this, arguments);\n if(arguments.length > 0) {\n this._gantt.columns(_);\n }\n return retVal;\n }\n\n data(): IAxisGanttData[];\n data(_: IAxisGanttData[]): this;\n data(_?: IAxisGanttData[]): this | IAxisGanttData[] {\n const retVal = super.data.apply(this, arguments);\n if(arguments.length > 0) {\n const ganttData: any[] = this.data().map(n=>{\n const ret = [...n];\n ret[1] = isNaN(n[1] as any) ? new Date(n[1]).getTime() : Number(n[1]);\n ret[2] = isNaN(n[2] as any) ? new Date(n[2]).getTime() : Number(n[2]);\n return ret;\n });\n this._gantt._minStart = Math.min(...ganttData.map(n=>n[1])) ?? 0;\n this._gantt._maxEnd = Math.max(...ganttData.map(n=>n[2])) ?? 1;\n this._gantt.data(ganttData);\n }\n return retVal;\n }\n\n resize(_size?: { width: number, height: number }) {\n const retVal = super.resize.apply(this, arguments);\n\n if(this._topAxisElement){\n this.resizeWrappers();\n }\n\n return retVal;\n }\n\n click(row, col, sel) {\n\n }\n\n dblclick(row, col, sel) {\n \n }\n \n tooltip() {\n return this._gantt._tooltip;\n }\n}\nReactAxisGantt.prototype._class += \" timeline_ReactAxisGantt\";\n\nexport interface ReactAxisGantt {\n tickFormat(): string;\n tickFormat(_: string): this;\n tickFormat_exists(): boolean;\n overlapTolerence(): number;\n overlapTolerence(_: number): this;\n smallestRangeWidth(): number;\n smallestRangeWidth(_: number): this;\n scaleMode(): boolean;\n scaleMode(_: boolean): this;\n fontSize(): number;\n fontSize(_: number): this;\n fontFamily(): string;\n fontFamily(_: string): this;\n strokeWidth(): number;\n strokeWidth(_: number): this;\n stroke(): string;\n stroke(_: string): this;\n cornerRadius(): number;\n cornerRadius(_: number): this;\n axisFontSize(): number;\n axisFontSize(_: number): this;\n axisFontFamily(): string;\n axisFontFamily(_: string): this;\n axisTickLength(): number;\n axisTickLength(_: number): this;\n axisHeight(): number;\n axisHeight(_: number): this;\n titleColumn(): string;\n titleColumn(_: string): this;\n startDateColumn(): string;\n startDateColumn(_: string): this;\n endDateColumn(): string;\n endDateColumn(_: string): this;\n iconColumn(): string;\n iconColumn(_: string): this;\n colorColumn(): string;\n colorColumn(_: string): this;\n bucketColumn(): string;\n bucketColumn(_: string): this;\n maxZoom(): number;\n maxZoom(_: number): this;\n}\nReactAxisGantt.prototype.publish(\"tickFormat\", null, \"string\", \"Format rule applied to axis tick labels\", undefined, { optional: true });\nReactAxisGantt.prototype.publish(\"axisHeight\", 22, \"number\", \"Height of axes (pixels)\");\nReactAxisGantt.prototype.publish(\"overlapTolerence\", 2, \"number\", \"overlapTolerence\");\nReactAxisGantt.prototype.publish(\"smallestRangeWidth\", 10, \"number\", \"Width of the shortest range (pixels)\");\nReactAxisGantt.prototype.publish(\"axisFontSize\", null, \"number\", \"Font size of axis tick labels\");\nReactAxisGantt.prototype.publish(\"axisFontFamily\", null, \"string\", \"Font family of axis tick labels\");\nReactAxisGantt.prototype.publish(\"axisTickLength\", null, \"number\", \"Length of axis ticks\");\nReactAxisGantt.prototype.publishProxy(\"gutter\", \"_gantt\");\nReactAxisGantt.prototype.publishProxy(\"renderMode\", \"_gantt\");\nReactAxisGantt.prototype.publishProxy(\"strokeWidth\", \"_gantt\");\nReactAxisGantt.prototype.publishProxy(\"fontSize\", \"_gantt\");\nReactAxisGantt.prototype.publishProxy(\"fontFamily\", \"_gantt\");\nReactAxisGantt.prototype.publishProxy(\"stroke\", \"_gantt\");\nReactAxisGantt.prototype.publishProxy(\"cornerRadius\", \"_gantt\");\nReactAxisGantt.prototype.publishProxy(\"titleColumn\", \"_gantt\");\nReactAxisGantt.prototype.publishProxy(\"startDateColumn\", \"_gantt\");\nReactAxisGantt.prototype.publishProxy(\"endDateColumn\", \"_gantt\");\nReactAxisGantt.prototype.publishProxy(\"iconColumn\", \"_gantt\");\nReactAxisGantt.prototype.publishProxy(\"colorColumn\", \"_gantt\");\nReactAxisGantt.prototype.publishProxy(\"bucketColumn\", \"_gantt\");\nReactAxisGantt.prototype.publishProxy(\"maxZoom\", \"_gantt\");\nReactAxisGantt.prototype.publishProxy(\"bucketHeight\", \"_gantt\");\n","import { min as d3Min, max as d3Max } from \"d3-array\";\nimport { Axis } from \"@hpcc-js/chart\";\nimport { Border2 } from \"@hpcc-js/layout\";\nimport { ReactGantt } from \"./ReactGantt\";\nimport { IAxisGanttData } from \"./ReactAxisGantt\";\nimport { React } from \"@hpcc-js/react\";\n\nexport class ReactAxisGanttSeries extends Border2 {\n\n protected _topAxis: Axis = new Axis(\"origin\")\n .orientation(\"top\")\n .type(\"linear\")\n .shrinkToFit(\"none\")\n .overlapMode(\"hide\")\n .extend(0)\n .tickFormat(\"d\")\n ;\n protected _gantt: ReactGantt = new ReactGantt(\"origin\")\n .stroke(\"#000000\")\n .fitHeightToContent(true)\n ;\n protected _bottomAxis: Axis = new Axis(\"origin\")\n .orientation(\"bottom\")\n .type(\"linear\")\n .shrinkToFit(\"none\")\n .overlapMode(\"hide\")\n .extend(0)\n .tickFormat(\"d\")\n ;\n\n protected _topAxisElement;\n protected _contentElement;\n protected _bottomAxisElement;\n protected _topRect;\n protected _contentRect;\n protected _bottomRect;\n\n constructor() {\n super();\n this.centerOverflowX_default(\"hidden\");\n this.centerOverflowY_default(\"auto\");\n }\n\n rangeRenderer(): React.FunctionComponent;\n rangeRenderer(_: React.FunctionComponent): this;\n rangeRenderer(_?: React.FunctionComponent): this | React.FunctionComponent {\n const ret = this._gantt.rangeRenderer.apply(this._gantt, arguments);\n if (!arguments.length) return ret;\n return this;\n }\n\n resizeWrappers() {\n\n const w = this.width();\n const h = this.height();\n\n const axisHeight = this.axisHeight(); //TODO: Dynamic scaling to allow for small resolutions?\n const contentHeight = (h - (axisHeight * 2));\n\n this.bottomHeight(axisHeight);\n\n this._topWA.resize({\n width: w,\n height: axisHeight\n });\n this._centerWA.resize({\n width: w,\n height: contentHeight\n });\n this._bottomWA.resize({\n width: w,\n height: axisHeight\n });\n this.top().render();\n this.bottom().render();\n this.center().render();\n }\n\n enter(domNode, element) {\n super.enter(domNode, element);\n\n this._gantt.click = (row, col, sel) => {\n this.click(row, col, sel);\n };\n\n this._gantt.dblclick = (row, col, sel) => {\n this.dblclick(row, col, sel);\n };\n\n this.top(this._topAxis);\n this.center(this._gantt);\n this.bottom(this._bottomAxis);\n\n this.resizeWrappers();\n\n this._gantt.zoomedHook = (transform) => {\n this.onzoom(transform);\n };\n }\n\n onzoom(transform) {\n const w = this.width();\n const low = this._gantt._minStart;\n const high = this._gantt._maxEnd;\n const range = high - low;\n const wpp = range / w;\n const nextLow = Math.floor(low - (wpp * (transform.x / transform.k)));\n const nextHigh = Math.ceil((range / transform.k) + nextLow);\n\n this._topAxis\n .fontFamily(this.axisFontFamily())\n .fontSize(this.axisFontSize())\n .tickLength(this.axisTickLength())\n .low(nextLow)\n .high(nextHigh)\n .lazyRender()\n ;\n this._bottomAxis\n .fontFamily(this.axisFontFamily())\n .fontSize(this.axisFontSize())\n .tickLength(this.axisTickLength())\n .low(nextLow)\n .high(nextHigh)\n .lazyRender()\n ;\n }\n\n update(domNode, element) {\n super.update(domNode, element);\n this._topAxis.tickFormat(this.tickFormat()).render();\n this._bottomAxis.tickFormat(this.tickFormat()).render();\n this._gantt.render();\n }\n\n columns(): string[];\n columns(_: string[]): this;\n columns(_?: string[]): this | string[] {\n const retVal = super.columns.apply(this, arguments);\n if (arguments.length > 0) {\n this._gantt.columns(_);\n }\n return retVal;\n }\n\n data(): IAxisGanttData[];\n data(_: IAxisGanttData[]): this;\n data(_?: IAxisGanttData[]): this | IAxisGanttData[] {\n const retVal = super.data.apply(this, arguments);\n if (arguments.length > 0) {\n const ganttData: any[] = this.data().map(n => {\n const ret = [...n];\n ret[1] = isNaN(n[1] as any) ? new Date(n[1]).getTime() : Number(n[1]);\n ret[2] = isNaN(n[2] as any) ? new Date(n[2]).getTime() : Number(n[2]);\n return ret;\n });\n\n this._gantt._minStart = d3Min(ganttData, n => n[1]);\n this._gantt._maxEnd = d3Max(ganttData, n => n[2]);\n this._gantt.data(ganttData);\n }\n return retVal;\n }\n\n resize(_size?: { width: number, height: number }) {\n const retVal = super.resize.apply(this, arguments);\n\n if (this._topAxisElement) {\n this.resizeWrappers();\n }\n\n return retVal;\n }\n\n click(row, col, sel) {\n\n }\n\n dblclick(row, col, sel) {\n\n }\n\n tooltip() {\n return this._gantt._tooltip;\n }\n}\nReactAxisGanttSeries.prototype._class += \" timeline_ReactAxisGanttSeries\";\n\nexport interface ReactAxisGanttSeries {\n tickFormat(): string;\n tickFormat(_: string): this;\n tickFormat_exists(): boolean;\n overlapTolerence(): number;\n overlapTolerence(_: number): this;\n smallestRangeWidth(): number;\n smallestRangeWidth(_: number): this;\n scaleMode(): boolean;\n scaleMode(_: boolean): this;\n fontSize(): number;\n fontSize(_: number): this;\n fontFamily(): string;\n fontFamily(_: string): this;\n strokeWidth(): number;\n strokeWidth(_: number): this;\n stroke(): string;\n stroke(_: string): this;\n cornerRadius(): number;\n cornerRadius(_: number): this;\n axisFontSize(): number;\n axisFontSize(_: number): this;\n axisFontFamily(): string;\n axisFontFamily(_: string): this;\n axisTickLength(): number;\n axisTickLength(_: number): this;\n axisHeight(): number;\n axisHeight(_: number): this;\n titleColumn(): string;\n titleColumn(_: string): this;\n startDateColumn(): string;\n startDateColumn(_: string): this;\n endDateColumn(): string;\n endDateColumn(_: string): this;\n iconColumn(): string;\n iconColumn(_: string): this;\n colorColumn(): string;\n colorColumn(_: string): this;\n seriesColumn(): string;\n seriesColumn(_: string): this;\n bucketColumn(): string;\n bucketColumn(_: string): this;\n maxZoom(): number;\n maxZoom(_: number): this;\n}\nReactAxisGanttSeries.prototype.publish(\"tickFormat\", null, \"string\", \"Format rule applied to axis tick labels\", undefined, { optional: true });\nReactAxisGanttSeries.prototype.publish(\"axisHeight\", 22, \"number\", \"Height of axes (pixels)\");\nReactAxisGanttSeries.prototype.publish(\"overlapTolerence\", 2, \"number\", \"overlapTolerence\");\nReactAxisGanttSeries.prototype.publish(\"smallestRangeWidth\", 10, \"number\", \"Width of the shortest range (pixels)\");\nReactAxisGanttSeries.prototype.publish(\"axisFontSize\", null, \"number\", \"Font size of axis tick labels\");\nReactAxisGanttSeries.prototype.publish(\"axisFontFamily\", null, \"string\", \"Font family of axis tick labels\");\nReactAxisGanttSeries.prototype.publish(\"axisTickLength\", null, \"number\", \"Length of axis ticks\");\nReactAxisGanttSeries.prototype.publishProxy(\"gutter\", \"_gantt\");\nReactAxisGanttSeries.prototype.publishProxy(\"renderMode\", \"_gantt\");\nReactAxisGanttSeries.prototype.publishProxy(\"strokeWidth\", \"_gantt\");\nReactAxisGanttSeries.prototype.publishProxy(\"fontSize\", \"_gantt\");\nReactAxisGanttSeries.prototype.publishProxy(\"fontFamily\", \"_gantt\");\nReactAxisGanttSeries.prototype.publishProxy(\"stroke\", \"_gantt\");\nReactAxisGanttSeries.prototype.publishProxy(\"cornerRadius\", \"_gantt\");\nReactAxisGanttSeries.prototype.publishProxy(\"titleColumn\", \"_gantt\");\nReactAxisGanttSeries.prototype.publishProxy(\"startDateColumn\", \"_gantt\");\nReactAxisGanttSeries.prototype.publishProxy(\"endDateColumn\", \"_gantt\");\nReactAxisGanttSeries.prototype.publishProxy(\"iconColumn\", \"_gantt\");\nReactAxisGanttSeries.prototype.publishProxy(\"colorColumn\", \"_gantt\");\nReactAxisGanttSeries.prototype.publishProxy(\"seriesColumn\", \"_gantt\");\nReactAxisGanttSeries.prototype.publishProxy(\"bucketColumn\", \"_gantt\");\nReactAxisGanttSeries.prototype.publishProxy(\"maxZoom\", \"_gantt\");\nReactAxisGanttSeries.prototype.publishProxy(\"evenSeriesBackground\", \"_gantt\");\nReactAxisGanttSeries.prototype.publishProxy(\"oddSeriesBackground\", \"_gantt\");\nReactAxisGanttSeries.prototype.publishProxy(\"bucketHeight\", \"_gantt\");\n","import { timeFormat as d3TimeFormat, timeParse as d3TimeParse } from \"d3-time-format\";\nimport { ReactAxisGantt } from \"./ReactAxisGantt\";\n\nexport class ReactTimeline extends ReactAxisGantt {\n\n protected _axisLabelFormatter;//TODO: add a type to this? d3 time formatting function type?\n\n constructor(){\n super();\n this._drawStartPos = \"origin\";\n this._topAxis.type(\"time\");\n this._bottomAxis.type(\"time\");\n\n this.tooltipHTML((d: any) => {\n const parser = d3TimeParse(\"%Q\");\n const startTime = parser(d[1]);\n const endTime = parser(d[2]);\n\n const formatter = d3TimeFormat(this.tooltipTimeFormat());\n return `<div style=\"text-align:center;\">${d[0]}<br/><br/>${formatter(startTime)} -> ${formatter(endTime)}</div>`;\n });\n }\n\n update(domNode, element) {\n super.update(domNode, element);\n\n if(this.timePattern_exists()) {\n\n let minTimestamp = Infinity;\n let maxTimestamp = -Infinity;\n let lowDateStr = \"\";\n let highDateStr = \"\";\n this.data().map(n=>{\n const start = new Date(n[1]).getTime();\n const end = new Date(n[2]).getTime();\n if(minTimestamp > start){\n minTimestamp = start;\n lowDateStr = \"\" + n[1];\n }\n if(maxTimestamp < end){\n maxTimestamp = end;\n highDateStr = \"\" + n[2];\n }\n });\n this._topAxis\n .type(\"time\")\n .timePattern(this.timePattern())\n .overlapMode(\"none\")\n .tickFormat(this._axisLabelFormatter)\n .low(lowDateStr)\n .high(highDateStr)\n ;\n this._bottomAxis\n .type(\"time\")\n .timePattern(this.timePattern())\n .overlapMode(\"none\")\n .tickFormat(this._axisLabelFormatter)\n .low(lowDateStr)\n .high(highDateStr)\n ;\n this._gantt._minStart = minTimestamp;\n this._gantt._maxEnd = maxTimestamp;\n }\n }\n\n tooltipHTML(callback) {\n this._tooltipHTML = callback;\n this.tooltip().tooltipHTML(this._tooltipHTML);\n return this;\n }\n\n parseAxisValue(v) {\n const parseTime = d3TimeParse(\"%Q\");\n const parsedTime = parseTime(v);\n\n const formatTime = d3TimeFormat(this.timePattern());\n return formatTime(parsedTime);\n }\n\n onzoom(transform) {\n \n const w = this.width();\n const low = this._gantt._minStart;\n const high = this._gantt._maxEnd;\n const range = high - low;\n const wpp = range / w;\n const nextLow = Math.floor(low - (wpp * (transform.x / transform.k)));\n const nextHigh = Math.ceil((range / transform.k) + nextLow);\n\n this._topAxis\n .low(this.parseAxisValue(nextLow))\n .high(this.parseAxisValue(nextHigh))\n .render()\n ;\n this._bottomAxis\n .low(this.parseAxisValue(nextLow))\n .high(this.parseAxisValue(nextHigh))\n .render()\n ;\n }\n\n _tooltipHTML: (_) => string;\n}\nReactTimeline.prototype._class += \" timeline_ReactTimeline\";\n\nexport interface ReactTimeline {\n timePattern(): string;\n timePattern(_: string): this;\n timePattern_exists(): boolean;\n tooltipTimeFormat(): string;\n tooltipTimeFormat(_: string): this;\n}\nReactTimeline.prototype.publish(\"timePattern\", \"%Y-%m-%d\", \"string\", \"Time pattern used for parsing datetime strings on each data row\", null, {optional:true});\nReactTimeline.prototype.publish(\"tooltipTimeFormat\", \"%Y-%m-%d\", \"string\", \"Time format used in the default html tooltip\");\n\n","import { timeFormat as d3TimeFormat, timeParse as d3TimeParse } from \"d3-time-format\";\nimport { ReactAxisGanttSeries } from \"./ReactAxisGanttSeries\";\n\nconst parseTime = d3TimeParse(\"%Q\");\nexport class ReactTimelineSeries extends ReactAxisGanttSeries {\n\n protected _axisLabelFormatter;//TODO: add a type to this? d3 time formatting function type?\n\n constructor(){\n super();\n this._topAxis.type(\"time\");\n this._bottomAxis.type(\"time\");\n\n this.tooltipHTML((d: any) => {\n const startTime = parseTime(d[1]);\n const endTime = parseTime(d[2]);\n\n const formatter = d3TimeFormat(this.tooltipTimeFormat());\n return `<div style=\"text-align:center;\">${d[0]}<br/><br/>${formatter(startTime)} -> ${formatter(endTime)}</div>`;\n });\n }\n\n update(domNode, element) {\n super.update(domNode, element);\n\n if(this.timePattern_exists()) {\n\n let minTimestamp = Infinity;\n let maxTimestamp = -Infinity;\n let lowDateStr = \"\";\n let highDateStr = \"\";\n this.data().forEach(n=>{\n const start = new Date(n[1]).getTime();\n const end = new Date(n[2]).getTime();\n if(minTimestamp > start){\n minTimestamp = start;\n lowDateStr = \"\" + n[1];\n }\n if(maxTimestamp < end){\n maxTimestamp = end;\n highDateStr = \"\" + n[2];\n }\n });\n this._topAxis\n .type(\"time\")\n .timePattern(this.timePattern())\n .overlapMode(\"none\")\n .tickFormat(this._axisLabelFormatter)\n .low(lowDateStr)\n .high(highDateStr)\n ;\n this._bottomAxis\n .type(\"time\")\n .timePattern(this.timePattern())\n .overlapMode(\"none\")\n .tickFormat(this._axisLabelFormatter)\n .low(lowDateStr)\n .high(highDateStr)\n ;\n this._gantt._minStart = minTimestamp;\n this._gantt._maxEnd = maxTimestamp;\n }\n }\n\n tooltipHTML(callback) {\n this._tooltipHTML = callback;\n this.tooltip().tooltipHTML(this._tooltipHTML);\n return this;\n }\n\n parseAxisValue(v) {\n const parsedTime = parseTime(v);\n\n const formatTime = d3TimeFormat(this.timePattern());\n return formatTime(parsedTime);\n }\n\n onzoom(transform) {\n \n const w = this.width();\n const low = this._gantt._minStart;\n const high = this._gantt._maxEnd;\n const range = high - low;\n const wpp = range / w;\n const nextLow = Math.floor(low - (wpp * (transform.x / transform.k)));\n const nextHigh = Math.ceil((range / transform.k) + nextLow);\n\n this._topAxis\n .low(this.parseAxisValue(nextLow))\n .high(this.parseAxisValue(nextHigh))\n .render()\n ;\n this._bottomAxis\n .low(this.parseAxisValue(nextLow))\n .high(this.parseAxisValue(nextHigh))\n .render()\n ;\n }\n\n _tooltipHTML: (_) => string;\n}\nReactTimelineSeries.prototype._class += \" timeline_ReactTimelineSeries\";\n\nexport interface ReactTimelineSeries {\n timePattern(): string;\n timePattern(_: string): this;\n timePattern_exists(): boolean;\n tooltipTimeFormat(): string;\n tooltipTimeFormat(_: string): this;\n}\nReactTimelineSeries.prototype.publish(\"timePattern\", \"%Y-%m-%d\", \"string\", \"Time pattern used for parsing datetime strings on each data row\", null, {optional:true});\nReactTimelineSeries.prototype.publish(\"tooltipTimeFormat\", \"%Y-%m-%d\", \"string\", \"Time format used in the default html tooltip\");\n\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"names":["extendStatics","d","b","Object","setPrototypeOf","__proto__","Array","p","prototype","hasOwnProperty","call","__extends","TypeError","String","__","this","constructor","create","__assign","assign","t","s","i","n","arguments","length","apply","__spreadArray","to","from","pack","ar","l","slice","concat","SuppressedError","css","ref","insertAt","document","head","getElementsByTagName","style","createElement","type","firstChild","insertBefore","appendChild","styleSheet","cssText","createTextNode","MiniGantt","_super","_this","localRect","d3Local","localEntityPin","_title_idx","_startDate_idx","_endDate_idx","_icon_idx","_color_idx","_yoffset_idx","ITooltip","Utility","SimpleSelectionMixin","_drawStartPos","tooltipHTML","tooltipFormatter","brAxis","parse","tlAxis","Axis","verticalBands","d3ScaleBand","paddingOuter","paddingInner","isHorizontal","orientation","fullExtent","data","map","filter","d3Extent","extent","rootExtent","undefined","centerOnMostRecent","parser","d3TimeParse","timePattern","formatter","d3TimeFormat","date1","date2","Date","setFullYear","getFullYear","time1","getTime","timeDiff","dataStartPos","_dateCache","pos","scalePos","dataEndPos","dataWidth","resetZoom","_zoom","transform","element","d3ZoomIdentity","translate","height","zoomed","d3Event","render","enter","domNode","d3Zoom","scaleExtent","maxZoom","on","background","append","attr","stopPropagation","gUpperContent","gUpperAxis","gMiddleContent","gLowerAxis","gLowerContent","target","node","tickFormat","guideTarget","shrinkToFit","overlapMode","tickFormat_exists","extend","_selection","widgetElement","update","titleColumn","columns","indexOf","startDateColumn","endDateColumn","iconColumn","colorColumn","yOffsetColumn","_prevIsHorizontal","tooltipTimeFormat","width","x","reverse","low","high","updateScale","y","hi","parseInvert","invert","invertX","invertY","sort","r","retVal","localeCompare","events","ranges","brAxisBBox","getBBox","upperContentHeight","updateEntityPins","lowerAxisHeight","lowerHeight","minYOffset","Math","min","row","isNaN","visible","y_offset","upperContentYOffset","lowerAxisYOffset","halfMinYOffset","tlAxisBBox","bucketData","bucketIndex","_i","ranges_1","range","bucket","endPos","overlapTolerence","push","vbLower","vbHigher","domain","_d","updateEventRanges","event_height","context","entityPins","selectAll","eventFontColor_idx","eventFontColorColumn","eventBorderColor_idx","eventBorderColorColumn","eventBackgroundColor_idx","eventBackgroundColorColumn","title_counts","events_1","title_types","keys","title_group_offset","eventGroupOffset","entityPinsEnter","d3Select","raise","each","entityPin","EntityPin","icon","iconOnlyShowOnHover","hideIconWhenCollapsed","titleOnlyShowOnHover","hideTitleWhenCollapsed","descriptionOnlyShowOnHover","hideDescriptionWhenCollapsed","annotationOnlyShowOnHover","hideAnnotationsWhenCollapsed","iconDiameter","iconPaddingPercent","titleFontSize","descriptionColor","descriptionFontSize","iconColor","titleColor","backgroundShape","backgroundColorFill","backgroundColorStroke","cornerRadius","arrowHeight","arrowWidth","set","merge","get","_title","title","x_offset","eventGroupMod","description","parsed_start_time","formatted_start_time","animationFrameRender","move","calc_height","calcHeight","exit","remove","event_offset","abs","eventRangeHeight","lines","buckets","bind","entityRect","EntityRect","rangeFontColor","enterEntityRect","click","rowToObj","selected","dblclick","tooltip","hide","show","textBox","bandwidth","rectWidth","max","rectHeight","paddingSize","fontSize","iconSize","fixedHeight","fixedWidth","padding","updateEntityRect","col","sel","textbox","SVGWidget","_class","implements","mixin","publish","optional","ReactGantt","drawStartPosition","Selection","_series_idx","_bucket_idx","_rangeOptions","rangePadding","fontFamily","fill","stroke","textFill","strokeWidth","_rangeRenderer","LabelledRect","_transform","k","showToolbar_default","_tooltip","HTMLTooltip","followCursor","rangeRenderer","_","clear","zoomExtent","seriesColumn","bucketColumn","w","x1","_interpolateX","d3ScaleLinear","_minStart","_maxEnd","a","_origIdxMap","_dataBySeries","_bucketsBySeries","forEach","dataRow","origIdx","seriesKey","gutter_1","gutter","bucketOffset_1","seriesKeys","calcBuckets","bucketHeight","bucketOffset","maxBucket","_seriesBackgrounds","_renderElement","key","join","props","hidden","oddSeriesBackground","evenSeriesBackground","_buckets","interpedStart","zoomTo","setRangeOptions","_maxFontScale","measureDataText","itemSelection","borderOffset1","borderOffset2","_id","id","isSelected","selectionChanged","classed","__lparam","highlightItem","mousein","d3evt","_triggerElement","_cursorLoc","clientX","clientY","fitContent","mouseover","mouseout","that","endX","bucketMap","interpolateY","text","renderRangeElement","x2","xScale","transformEach","options","setAttribute","bucketScale","truncateText","_maxY","_maxX","renderMode","_zoomScale","_zoomTranslate","_zoomG","options_1","zoomedHook","startKey","endKey","bucketKey","bucketKeyMap","tol","end","Infinity","i2","_a","_b","forceMeasure","textWidths","characterWidths","_prevFontFamily","_prevFontSize","textSize","split","char","_textWidths","_characterWidths","scale","ret","sum","_width","text_1","resize","_size","fitWidthToContent","fitHeightToContent","_element","_col","SVGZoomWidget","ReactAxisGantt","_topAxis","_gantt","_bottomAxis","resizeWrappers","h","axisHeight","contentHeight","_topRect","_topAxisElement","_contentRect","_contentElement","_bottomRect","_bottomAxisElement","onzoom","wpp","nextLow","floor","nextHigh","ceil","axisFontFamily","axisFontSize","tickLength","axisTickLength","ganttData","Number","publishProxy","ReactAxisGanttSeries","centerOverflowX_default","centerOverflowY_default","bottomHeight","_topWA","_centerWA","_bottomWA","top","bottom","center","lazyRender","d3Min","d3Max","Border2","ReactTimeline","startTime","endTime","timePattern_exists","minTimestamp_1","maxTimestamp_1","lowDateStr_1","highDateStr_1","start","_axisLabelFormatter","callback","_tooltipHTML","parseAxisValue","v","parsedTime","parseTime","formatTime","ReactTimelineSeries"],"sources":["../src/__package__.ts","../../../node_modules/tslib/tslib.es6.mjs","../../../node_modules/style-inject/dist/style-inject.es.js","../src/MiniGantt.ts","../src/ReactGantt.ts","../src/ReactAxisGantt.ts","../src/ReactAxisGanttSeries.ts","../src/ReactTimeline.ts","../src/ReactTimelineSeries.ts"],"sourcesContent":["export const PKG_NAME = \"@hpcc-js/timeline\";\nexport const PKG_VERSION = \"2.51.24\";\nexport const BUILD_VERSION = \"2.105.6\";\n","/******************************************************************************\nCopyright (c) Microsoft Corporation.\n\nPermission to use, copy, modify, and/or distribute this software for any\npurpose with or without fee is hereby granted.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\nPERFORMANCE OF THIS SOFTWARE.\n***************************************************************************** */\n/* global Reflect, Promise, SuppressedError, Symbol */\n\nvar extendStatics = function(d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n};\n\nexport function __extends(d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n}\n\nexport var __assign = function() {\n __assign = Object.assign || function __assign(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n return t;\n }\n return __assign.apply(this, arguments);\n}\n\nexport function __rest(s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n}\n\nexport function __decorate(decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n}\n\nexport function __param(paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n}\n\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\n function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\n var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\n var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\n var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\n var _, done = false;\n for (var i = decorators.length - 1; i >= 0; i--) {\n var context = {};\n for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\n for (var p in contextIn.access) context.access[p] = contextIn.access[p];\n context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\n var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\n if (kind === \"accessor\") {\n if (result === void 0) continue;\n if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\n if (_ = accept(result.get)) descriptor.get = _;\n if (_ = accept(result.set)) descriptor.set = _;\n if (_ = accept(result.init)) initializers.unshift(_);\n }\n else if (_ = accept(result)) {\n if (kind === \"field\") initializers.unshift(_);\n else descriptor[key] = _;\n }\n }\n if (target) Object.defineProperty(target, contextIn.name, descriptor);\n done = true;\n};\n\nexport function __runInitializers(thisArg, initializers, value) {\n var useValue = arguments.length > 2;\n for (var i = 0; i < initializers.length; i++) {\n value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\n }\n return useValue ? value : void 0;\n};\n\nexport function __propKey(x) {\n return typeof x === \"symbol\" ? x : \"\".concat(x);\n};\n\nexport function __setFunctionName(f, name, prefix) {\n if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\n return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\n};\n\nexport function __metadata(metadataKey, metadataValue) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\n}\n\nexport function __awaiter(thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n}\n\nexport function __generator(thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n}\n\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n});\n\nexport function __exportStar(m, o) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\n}\n\nexport function __values(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n}\n\nexport function __read(o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n}\n\n/** @deprecated */\nexport function __spread() {\n for (var ar = [], i = 0; i < arguments.length; i++)\n ar = ar.concat(__read(arguments[i]));\n return ar;\n}\n\n/** @deprecated */\nexport function __spreadArrays() {\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\n r[k] = a[j];\n return r;\n}\n\nexport function __spreadArray(to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n}\n\nexport function __await(v) {\n return this instanceof __await ? (this.v = v, this) : new __await(v);\n}\n\nexport function __asyncGenerator(thisArg, _arguments, generator) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\n function fulfill(value) { resume(\"next\", value); }\n function reject(value) { resume(\"throw\", value); }\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\n}\n\nexport function __asyncDelegator(o) {\n var i, p;\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\n}\n\nexport function __asyncValues(o) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var m = o[Symbol.asyncIterator], i;\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\n}\n\nexport function __makeTemplateObject(cooked, raw) {\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\n return cooked;\n};\n\nvar __setModuleDefault = Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n};\n\nexport function __importStar(mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n}\n\nexport function __importDefault(mod) {\n return (mod && mod.__esModule) ? mod : { default: mod };\n}\n\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n}\n\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n}\n\nexport function __classPrivateFieldIn(state, receiver) {\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\n}\n\nexport function __addDisposableResource(env, value, async) {\n if (value !== null && value !== void 0) {\n if (typeof value !== \"object\" && typeof value !== \"function\") throw new TypeError(\"Object expected.\");\n var dispose;\n if (async) {\n if (!Symbol.asyncDispose) throw new TypeError(\"Symbol.asyncDispose is not defined.\");\n dispose = value[Symbol.asyncDispose];\n }\n if (dispose === void 0) {\n if (!Symbol.dispose) throw new TypeError(\"Symbol.dispose is not defined.\");\n dispose = value[Symbol.dispose];\n }\n if (typeof dispose !== \"function\") throw new TypeError(\"Object not disposable.\");\n env.stack.push({ value: value, dispose: dispose, async: async });\n }\n else if (async) {\n env.stack.push({ async: true });\n }\n return value;\n}\n\nvar _SuppressedError = typeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\n var e = new Error(message);\n return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\n};\n\nexport function __disposeResources(env) {\n function fail(e) {\n env.error = env.hasError ? new _SuppressedError(e, env.error, \"An error was suppressed during disposal.\") : e;\n env.hasError = true;\n }\n function next() {\n while (env.stack.length) {\n var rec = env.stack.pop();\n try {\n var result = rec.dispose && rec.dispose.call(rec.value);\n if (rec.async) return Promise.resolve(result).then(next, function(e) { fail(e); return next(); });\n }\n catch (e) {\n fail(e);\n }\n }\n if (env.hasError) throw env.error;\n }\n return next();\n}\n\nexport default {\n __extends,\n __assign,\n __rest,\n __decorate,\n __param,\n __metadata,\n __awaiter,\n __generator,\n __createBinding,\n __exportStar,\n __values,\n __read,\n __spread,\n __spreadArrays,\n __spreadArray,\n __await,\n __asyncGenerator,\n __asyncDelegator,\n __asyncValues,\n __makeTemplateObject,\n __importStar,\n __importDefault,\n __classPrivateFieldGet,\n __classPrivateFieldSet,\n __classPrivateFieldIn,\n __addDisposableResource,\n __disposeResources,\n};\n","function styleInject(css, ref) {\n if ( ref === void 0 ) ref = {};\n var insertAt = ref.insertAt;\n\n if (!css || typeof document === 'undefined') { return; }\n\n var head = document.head || document.getElementsByTagName('head')[0];\n var style = document.createElement('style');\n style.type = 'text/css';\n\n if (insertAt === 'top') {\n if (head.firstChild) {\n head.insertBefore(style, head.firstChild);\n } else {\n head.appendChild(style);\n }\n } else {\n head.appendChild(style);\n }\n\n if (style.styleSheet) {\n style.styleSheet.cssText = css;\n } else {\n style.appendChild(document.createTextNode(css));\n }\n}\n\nexport default styleInject;\n","import { ITooltip } from \"@hpcc-js/api\";\nimport { Axis } from \"@hpcc-js/chart\";\nimport { d3Event, EntityPin, EntityRect, local as d3Local, select as d3Select, SVGWidget, Utility } from \"@hpcc-js/common\";\nimport { extent as d3Extent } from \"d3-array\";\nimport { scaleBand as d3ScaleBand } from \"d3-scale\";\nimport { timeFormat as d3TimeFormat, timeParse as d3TimeParse } from \"d3-time-format\";\nimport { zoom as d3Zoom, zoomIdentity as d3ZoomIdentity } from \"d3-zoom\";\n\nimport \"../src/MiniGantt.css\";\n\nexport class MiniGantt extends SVGWidget {\n protected tlAxis: Axis;\n protected brAxis: Axis;\n protected verticalBands;\n protected _zoom;\n protected gUpperContent;\n protected gUpperAxis;\n protected gMiddleContent;\n protected gLowerAxis;\n protected gLowerContent;\n private localRect = d3Local<EntityRect>();\n private localEntityPin = d3Local<EntityPin>();\n private tooltipFormatter: (date: Date) => string;\n private _dateCache;\n\n protected rootExtent;\n protected _title_idx = 0;\n protected _startDate_idx = 1;\n protected _endDate_idx = 2;\n protected _icon_idx = -1;\n protected _color_idx = -1;\n protected _yoffset_idx = -1;\n\n constructor() {\n super();\n ITooltip.call(this);\n Utility.SimpleSelectionMixin.call(this);\n\n this._drawStartPos = \"origin\";\n this.tooltipHTML((d: any) => `<center>${d[this._title_idx]}</center><br>${this.tooltipFormatter(this.brAxis.parse(d[this._startDate_idx]))} -> ${this.tooltipFormatter(this.brAxis.parse(d[this._endDate_idx]))}`);\n\n this.tlAxis = new Axis()\n .type(\"time\")\n ;\n this.brAxis = new Axis()\n .type(\"time\")\n ;\n this.verticalBands = d3ScaleBand()\n .paddingOuter(0.2)\n .paddingInner(0.2)\n ;\n }\n\n isHorizontal(): boolean {\n return this.orientation() === \"horizontal\";\n }\n\n fullExtent() {\n const data = [...this.data().map(d => d[this._startDate_idx]), ...this.data().filter(d => !!d[this._endDate_idx]).map(d => d[this._endDate_idx])];\n return d3Extent(data);\n }\n\n extent() {\n const extent = this.rootExtent ? [this.rootExtent[1], this.rootExtent[2]] : this.fullExtent();\n if (extent[0] !== undefined && extent[1] !== undefined) {\n if (extent[0] === extent[1] || this.centerOnMostRecent()) {\n const parser = d3TimeParse(this.timePattern());\n const formatter = d3TimeFormat(this.timePattern());\n const date1 = parser(extent[0]);\n const date2 = parser(extent[1]);\n if (extent[0] === extent[1]) {\n extent[0] = formatter(new Date(date1.setFullYear(date1.getFullYear() - 1)));\n extent[1] = formatter(new Date(date1.setFullYear(date1.getFullYear() + 2)));\n } else {\n const time1 = date1.getTime();\n const timeDiff = date2.getTime() - time1;\n extent[0] = formatter(date1);\n extent[1] = formatter(new Date(time1 + (timeDiff * 2)));\n }\n }\n }\n return extent;\n }\n\n dataStartPos(d) {\n if(typeof this._dateCache[d[this._startDate_idx]] !== \"undefined\"){\n return this._dateCache[d[this._startDate_idx]];\n }\n const pos = this.brAxis.scalePos(d[this._startDate_idx]);\n this._dateCache[d[this._startDate_idx]] = pos;\n return pos;\n }\n\n dataEndPos(d) {\n if(typeof this._dateCache[d[this._endDate_idx]] !== \"undefined\"){\n return this._dateCache[d[this._endDate_idx]];\n }\n const pos = this.brAxis.scalePos(d[this._endDate_idx]);\n this._dateCache[d[this._endDate_idx]] = pos;\n return pos;\n }\n\n dataWidth(d) {\n return this.dataEndPos(d) - this.dataStartPos(d);\n }\n\n private transform;\n resetZoom() {\n // Triggers a \"zoomed\" event ---\n this._zoom.transform(this.element(), d3ZoomIdentity.translate(0, this.isHorizontal() ? 0 : this.height()));\n }\n\n zoomed() {\n this.transform = d3Event().transform;\n this.render();\n }\n\n private background;\n enter(domNode, element) {\n super.enter(domNode, element);\n this._zoom = d3Zoom()\n .scaleExtent([0, this.maxZoom()])\n .on(\"zoom\", () => {\n this.zoomed();\n })\n ;\n\n this.background = element.append(\"rect\")\n .attr(\"fill\", \"white\")\n .attr(\"opacity\", 0)\n .on(\"dblclick\", () => {\n d3Event().stopPropagation();\n delete this.rootExtent;\n this.resetZoom();\n })\n ;\n this.gUpperContent = element.append(\"g\").attr(\"class\", \"gUpperContent\");\n this.gUpperAxis = element.append(\"g\").attr(\"class\", \"gUpperAxis\");\n this.gMiddleContent = element.append(\"g\").attr(\"class\", \"gMiddleContent\");\n this.gLowerAxis = element.append(\"g\").attr(\"class\", \"gLowerAxis\");\n this.gLowerContent = element.append(\"g\").attr(\"class\", \"gLowerContent\");\n this.tlAxis\n .target(this.gUpperAxis.node())\n .tickFormat(this.tickFormat())\n .guideTarget(this.gUpperAxis.append(\"g\").node())\n .shrinkToFit(\"none\")\n .overlapMode(this.tickFormat_exists() ? \"stagger\" : \"none\")\n .extend(0.1)\n ;\n this.brAxis\n .target(this.gLowerAxis.node())\n .tickFormat(this.tickFormat())\n .guideTarget(this.gLowerAxis.append(\"g\").node())\n .shrinkToFit(\"none\")\n .overlapMode(this.tickFormat_exists() ? \"stagger\" : \"none\")\n .extend(0.1)\n ;\n\n element.call(this._zoom);\n this._selection.widgetElement(this.gMiddleContent);\n }\n\n private _prevIsHorizontal;\n update(domNode, element) {\n super.update(domNode, element);\n\n this._dateCache = {};\n\n this._title_idx = this.titleColumn() !== null ? this.columns().indexOf(this.titleColumn()) : this._title_idx;\n this._startDate_idx = this.startDateColumn() !== null ? this.columns().indexOf(this.startDateColumn()) : this._startDate_idx;\n this._endDate_idx = this.endDateColumn() !== null ? this.columns().indexOf(this.endDateColumn()) : this._endDate_idx;\n this._icon_idx = this.iconColumn() !== null ? this.columns().indexOf(this.iconColumn()) : this._icon_idx;\n this._color_idx = this.colorColumn() !== null ? this.columns().indexOf(this.colorColumn()) : this._color_idx;\n this._yoffset_idx = this.yOffsetColumn() !== null ? this.columns().indexOf(this.yOffsetColumn()) : this._yoffset_idx;\n\n if (this._prevIsHorizontal !== this.isHorizontal()) {\n this._prevIsHorizontal = this.isHorizontal();\n this.resetZoom();\n return;\n }\n\n this.tooltipFormatter = d3TimeFormat(this.tooltipTimeFormat());\n\n const width = this.width();\n const height = this.height();\n\n this.background\n .attr(\"x\", 0)\n .attr(\"y\", 0)\n .attr(\"width\", width)\n .attr(\"height\", height)\n ;\n\n const extent = this.extent();\n this.tlAxis\n .x(width / 2)\n .orientation(this.isHorizontal() ? \"top\" : \"left\")\n .reverse(!this.isHorizontal())\n .timePattern(this.timePattern()) // \"%Y-%m-%dT%H:%M:%S.%LZ\"\n .width(width - 1)\n .low(extent[0])\n .high(extent[1])\n .updateScale()\n ;\n\n this.brAxis\n .x(width / 2)\n .y(height / 2)\n .orientation(this.isHorizontal() ? \"bottom\" : \"right\")\n .reverse(!this.isHorizontal())\n .timePattern(this.timePattern()) // \"%Y-%m-%dT%H:%M:%S.%LZ\"\n .width(width - 1)\n .height(height)\n .low(extent[0])\n .high(extent[1])\n .updateScale()\n ;\n\n if (this.transform) {\n let low;\n let hi;\n if (this.isHorizontal()) {\n low = this.tlAxis.parseInvert(this.tlAxis.invert(this.transform.invertX(0)));\n hi = this.tlAxis.parseInvert(this.tlAxis.invert(this.transform.invertX(width - 1)));\n } else {\n low = this.tlAxis.parseInvert(this.tlAxis.invert(- this.transform.invertY(0)));\n hi = this.tlAxis.parseInvert(this.tlAxis.invert(- this.transform.invertY(height - 1)));\n }\n this.tlAxis\n .low(low)\n .high(hi)\n .updateScale()\n ;\n this.brAxis\n .low(low)\n .high(hi)\n .updateScale()\n ;\n }\n\n const data = this.data().sort(this.isHorizontal() ? (l, r) => {\n const retVal = this.brAxis.scalePos(l[1]) - this.brAxis.scalePos(r[1]);\n if (retVal === 0) {\n return (\"\" + l[0]).localeCompare(\"\" + r[0]);\n }\n return retVal;\n } : (l, r) => {\n return this.brAxis.scalePos(r[1]) - this.brAxis.scalePos(l[1]);\n });\n const events = data.filter(d => !d[this._endDate_idx]);\n const ranges = data.filter(d => !!d[this._endDate_idx]);\n\n this.tlAxis\n .render()\n ;\n this.brAxis\n .render()\n ;\n const brAxisBBox = this.brAxis.getBBox();\n\n let upperContentHeight = this.updateEntityPins(events);\n const lowerAxisHeight = brAxisBBox.height;\n let lowerHeight = height - upperContentHeight;\n const minYOffset = this._yoffset_idx !== -1 ? Math.min.apply(undefined, this.data().filter(row => !isNaN(row[this._yoffset_idx])).map(row => row[this._yoffset_idx])) : 0;\n if (events.length > 0 && ranges.length === 0) {\n // ONLY EVENTS\n this.tlAxis.visible(false);\n let y_offset = upperContentHeight / 4;\n if (y_offset > (height / 2) - lowerAxisHeight) {\n y_offset = (height / 2) - lowerAxisHeight;\n }\n const upperContentYOffset = (height / 2) + y_offset;\n const lowerAxisYOffset = ((height / 2) - lowerAxisHeight - y_offset) * -1;\n const halfMinYOffset = minYOffset !== 0 ? minYOffset / 2 : 0;\n this.gUpperContent.attr(\"transform\", `translate(0, ${upperContentYOffset - halfMinYOffset})`);\n this.gLowerAxis.attr(\"transform\", `translate(0, ${lowerAxisYOffset - halfMinYOffset})`);\n } else if (events.length === 0 && ranges.length > 0) {\n // ONLY RANGES\n this.tlAxis.visible(true);\n this.gUpperContent.attr(\"transform\", `translate(0, ${upperContentHeight})`);\n this.gUpperAxis.attr(\"transform\", `translate(0, ${upperContentHeight})`);\n } else {\n upperContentHeight -= minYOffset;\n lowerHeight += minYOffset;\n // BOTH\n this.tlAxis.visible(true);\n this.gUpperContent.attr(\"transform\", `translate(0, ${upperContentHeight})`);\n this.gUpperAxis.attr(\"transform\", `translate(0, ${upperContentHeight})`);\n this.gMiddleContent.attr(\"transform\", `translate(0, ${upperContentHeight})`);\n }\n this.tlAxis\n .render()\n ;\n const tlAxisBBox = this.tlAxis.getBBox();\n interface BucketInfo {\n endPos: number;\n }\n const bucketData: BucketInfo[] = [];\n const bucketIndex = {};\n for (const range of ranges) {\n for (let i = 0; i < bucketData.length; ++i) {\n const bucket = bucketData[i];\n if (bucket.endPos + this.overlapTolerence() <= this.dataStartPos(range)) {\n bucketIndex[range] = i;\n bucket.endPos = this.dataEndPos(range);\n break;\n }\n }\n\n if (bucketIndex[range] === undefined) {\n bucketIndex[range] = bucketData.length;\n bucketData.push({\n endPos: this.dataEndPos(range)\n });\n }\n }\n\n const vbLower = this.isHorizontal() ? 0 + tlAxisBBox.height : 0 + tlAxisBBox.width;\n const vbHigher = this.isHorizontal() ? lowerHeight - brAxisBBox.height : width - brAxisBBox.width;\n this.verticalBands\n .range([vbLower, vbHigher])\n .domain(bucketData.map((_d, i) => i))\n ;\n\n if (ranges.length > 0) {\n this.updateEventRanges(events, ranges, bucketIndex, lowerHeight, tlAxisBBox, brAxisBBox, width);\n }\n }\n\n updateEntityPins(events) {\n let event_height = 0;\n const context = this;\n const entityPins = this.gUpperContent.selectAll(\".entity_pin\").data(events, d => d[0] + \":\" + d[1]);\n const eventFontColor_idx = this.eventFontColorColumn() ? this.columns().indexOf(this.eventFontColorColumn()) : -1;\n const eventBorderColor_idx = this.eventBorderColorColumn() ? this.columns().indexOf(this.eventBorderColorColumn()) : -1;\n const eventBackgroundColor_idx = this.eventBackgroundColorColumn() ? this.columns().indexOf(this.eventBackgroundColorColumn()) : -1;\n const title_counts = {};\n for (const d of events) {\n const type = typeof d[context._title_idx] !== \"undefined\" ? d[context._title_idx] : d[0];\n title_counts[type] = title_counts[type] ? title_counts[type] + 1 : 1;\n }\n const title_types = Object.keys(title_counts);\n const title_group_offset = context.eventGroupOffset();\n const entityPinsEnter = entityPins.enter().append(\"g\")\n .attr(\"class\", \"entity_pin\");\n entityPinsEnter.append(\"line\")\n .attr(\"class\", \"entity_line\");\n\n entityPinsEnter\n .on(\"mouseover\", function (d) {\n d3Select(this).raise();\n })\n .each(function (d, i) {\n const entityPin = new EntityPin()\n .target(this)\n .icon(\"\")\n .iconOnlyShowOnHover(context.hideIconWhenCollapsed())\n .titleOnlyShowOnHover(context.hideTitleWhenCollapsed())\n .descriptionOnlyShowOnHover(context.hideDescriptionWhenCollapsed())\n .annotationOnlyShowOnHover(context.hideAnnotationsWhenCollapsed())\n .iconDiameter(18)\n .iconPaddingPercent(1)\n .titleFontSize(14)\n .descriptionColor(\"#333\")\n .descriptionFontSize(15)\n .iconColor(eventFontColor_idx === -1 ? \"#333\" : d[eventFontColor_idx])\n .titleColor(eventFontColor_idx === -1 ? \"#333\" : d[eventFontColor_idx])\n .descriptionColor(eventFontColor_idx === -1 ? \"#333\" : d[eventFontColor_idx])\n .backgroundShape(\"pin\")\n .backgroundColorFill(eventFontColor_idx === -1 ? \"#f8f8f8\" : d[eventBackgroundColor_idx])\n .backgroundColorStroke(eventFontColor_idx === -1 ? \"#ccc\" : d[eventBorderColor_idx])\n .cornerRadius(5)\n .arrowHeight(10)\n .arrowWidth(16)\n ;\n context.localEntityPin.set(this, entityPin);\n })\n .merge(entityPins)\n .each(function (d, i) {\n const entityPin = context.localEntityPin.get(this);\n const _title = typeof d[context._title_idx] !== \"undefined\" ? d[context._title_idx] : entityPin.title();\n const x_offset = context.dataStartPos(d) - 0;\n let y_offset = ((title_types.indexOf(_title) % context.eventGroupMod()) * title_group_offset) - 5;\n if (typeof d[context._yoffset_idx] !== \"undefined\") y_offset += d[context._yoffset_idx] ? d[context._yoffset_idx] : 0;\n if (d[context._title_idx] !== entityPin.title() && d[context._startDate_idx] !== entityPin.description()) {\n const parsed_start_time = context.brAxis.parse(d[context._startDate_idx]);\n const formatted_start_time = context.tooltipFormatter(parsed_start_time);\n entityPin\n .x(x_offset)\n .y(y_offset)\n .iconOnlyShowOnHover(context.hideIconWhenCollapsed())\n .titleOnlyShowOnHover(context.hideTitleWhenCollapsed())\n .descriptionOnlyShowOnHover(context.hideDescriptionWhenCollapsed())\n .annotationOnlyShowOnHover(context.hideAnnotationsWhenCollapsed())\n .icon(typeof d[context._icon_idx] !== \"undefined\" ? d[context._icon_idx] : entityPin.icon())\n .title(_title)\n .description(formatted_start_time)\n .animationFrameRender()\n ;\n } else {\n entityPin.move({ x: x_offset, y: y_offset });\n }\n const calc_height = entityPin.calcHeight();\n if (event_height < calc_height) event_height = calc_height;\n\n d3Select(this).selectAll(\".entity_line\")\n .attr(\"x1\", x_offset)\n .attr(\"x2\", x_offset)\n .attr(\"y1\", 0)\n .attr(\"y2\", y_offset)\n .style(\"stroke\", eventFontColor_idx === -1 ? \"#ccc\" : d[eventBorderColor_idx])\n .style(\"stroke-width\", 1)\n ;\n })\n ;\n entityPins.exit()\n .each(function (d, i) {\n const entityPin = context.localEntityPin.get(this);\n entityPin.target(null);\n\n })\n .remove();\n const event_offset = Math.abs(Math.min(events.length, context.eventGroupMod()) * context.eventGroupOffset());\n return event_height + event_offset;\n }\n\n updateEventRanges(events, ranges, bucketIndex, eventRangeHeight, tlAxisBBox, brAxisBBox, width) {\n const context = this;\n\n const lines = this.gMiddleContent.selectAll(\".line\").data(events, d => {\n return d[context._title_idx];\n });\n lines.enter().append(\"line\")\n .attr(\"class\", \"line\")\n .merge(lines)\n .attr(this.isHorizontal() ? \"x1\" : \"y1\", d => this.dataStartPos(d) - 0)\n .attr(this.isHorizontal() ? \"x2\" : \"y2\", d => this.dataStartPos(d) - 0)\n .attr(this.isHorizontal() ? \"y1\" : \"x1\", this.isHorizontal() ? tlAxisBBox.height : tlAxisBBox.width)\n .attr(this.isHorizontal() ? \"y2\" : \"x2\", this.isHorizontal() ? eventRangeHeight - brAxisBBox.height : width - brAxisBBox.width)\n ;\n lines.exit().remove();\n const buckets = this.gMiddleContent.selectAll(\".buckets\").data(ranges, d => d[context._title_idx]);\n buckets.enter().append(\"g\")\n .attr(\"class\", \"buckets\")\n .call(this._selection.enter.bind(this._selection))\n .each(function (d) {\n const entityRect = new EntityRect()\n .target(this)\n .iconDiameter(28)\n .iconPaddingPercent(0)\n .titleFontSize(28)\n .titleColor(context.rangeFontColor())\n .descriptionColor(context.rangeFontColor())\n .iconColor(context.rangeFontColor())\n .backgroundShape(\"rect\")\n .backgroundColorFill(d[context._color_idx])\n ;\n context.localRect.set(this, entityRect);\n context.enterEntityRect(entityRect, d);\n })\n .on(\"click\", function (d) {\n context.click(context.rowToObj(d), \"range\", context._selection.selected(this));\n }, false)\n .on(\"dblclick\", function (d) {\n context.rootExtent = d;\n context.resetZoom();\n context.dblclick(context.rowToObj(d), \"range\", context._selection.selected(this));\n }, true)\n .on(\"mouseout.tooltip\", this.tooltip.hide)\n .on(\"mousemove.tooltip\", this.tooltip.show)\n .merge(buckets)\n .attr(\"transform\", d => context.isHorizontal() ?\n `translate(${this.dataStartPos(d)}, ${this.verticalBands(bucketIndex[d])}) ` :\n `translate(${this.verticalBands(bucketIndex[d])}, ${this.dataStartPos(d)}) `)\n .each(function (d) {\n const textBox = context.localRect.get(this);\n const x = context.dataWidth(d) / 2;\n const y = context.verticalBands.bandwidth() / 2;\n const rectWidth = Math.max(context.dataWidth(d), 2);\n const rectHeight = Math.max(context.verticalBands.bandwidth(), 2);\n const fontHeightRatio = 0.618;\n const paddingRatio = ((1 - fontHeightRatio) / 2);\n const paddingSize = paddingRatio * rectHeight;\n const fontSize = rectHeight * fontHeightRatio;\n const iconSize = fontSize;\n textBox\n .pos(context.isHorizontal() ? { x, y } : { x: y, y: x })\n .fixedHeight(context.isHorizontal() ? rectHeight : rectWidth)\n .fixedWidth(context.isHorizontal() ? rectWidth : rectHeight)\n .icon(typeof d[context._icon_idx] !== \"undefined\" ? d[context._icon_idx] : \"\")\n .title(typeof d[context._title_idx] !== \"undefined\" ? d[context._title_idx] : \"\")\n .padding(paddingSize)\n .iconDiameter(iconSize)\n .titleFontSize(fontSize)\n ;\n if (iconSize * 1.5 > rectWidth) {\n textBox.icon(null);\n }\n context.updateEntityRect(textBox, d[context._icon_idx]);\n textBox\n .render()\n ;\n });\n buckets.exit().remove();\n }\n\n exit(domNode, element) {\n this.brAxis.target(null);\n this.tlAxis.target(null);\n super.exit(domNode, element);\n }\n\n // Events ---\n click(row, col, sel) {\n }\n\n dblclick(row, col, sel) {\n }\n\n enterEntityRect(textbox: EntityRect, d) {\n }\n\n updateEntityRect(textbox: EntityRect, d) {\n }\n\n // ITooltip ---\n tooltip;\n tooltipHTML: (_) => string;\n tooltipFormat: (_) => string;\n\n // SimpleSelectionMixin\n _selection;\n}\nMiniGantt.prototype._class += \" timeline_MiniGantt\";\nMiniGantt.prototype.implements(ITooltip.prototype);\nMiniGantt.prototype.mixin(Utility.SimpleSelectionMixin);\n\nexport interface MiniGantt {\n timePattern(): string;\n timePattern(_: string): this;\n tickFormat(): string;\n tickFormat(_: string): this;\n tickFormat_exists(): boolean;\n tooltipTimeFormat(): string;\n tooltipTimeFormat(_: string): this;\n overlapTolerence(): number;\n overlapTolerence(_: number): this;\n orientation(): string;\n orientation(_: string): this;\n rangeFontColor(): string;\n rangeFontColor(_: string): this;\n titleColumn(): string;\n titleColumn(_: string): this;\n startDateColumn(): string;\n startDateColumn(_: string): this;\n endDateColumn(): string;\n endDateColumn(_: string): this;\n iconColumn(): string;\n iconColumn(_: string): this;\n colorColumn(): string;\n colorColumn(_: string): this;\n yOffsetColumn(): string;\n yOffsetColumn(_: string): this;\n maxZoom(): number;\n maxZoom(_: number): this;\n eventGroupMod(): number;\n eventGroupMod(_: number): this;\n eventGroupOffset(): number;\n eventGroupOffset(_: number): this;\n eventFontColorColumn(): string;\n eventFontColorColumn(_: string): this;\n eventBorderColorColumn(): string;\n eventBorderColorColumn(_: string): this;\n eventBackgroundColorColumn(): string;\n eventBackgroundColorColumn(_: string): this;\n hideIconWhenCollapsed(): boolean;\n hideIconWhenCollapsed(_: boolean): this;\n hideTitleWhenCollapsed(): boolean;\n hideTitleWhenCollapsed(_: boolean): this;\n hideDescriptionWhenCollapsed(): boolean;\n hideDescriptionWhenCollapsed(_: boolean): this;\n hideAnnotationsWhenCollapsed(): boolean;\n hideAnnotationsWhenCollapsed(_: boolean): this;\n centerOnMostRecent(): boolean;\n centerOnMostRecent(_: boolean): this;\n\n}\n\nMiniGantt.prototype.publish(\"timePattern\", \"%Y-%m-%d\", \"string\", \"timePattern\");\nMiniGantt.prototype.publish(\"tickFormat\", null, \"string\", \"tickFormat\", undefined, { optional: true });\nMiniGantt.prototype.publish(\"tooltipTimeFormat\", \"%Y-%m-%d\", \"string\", \"tooltipTimeFormat\");\nMiniGantt.prototype.publish(\"overlapTolerence\", 2, \"number\", \"overlapTolerence\");\nMiniGantt.prototype.publish(\"orientation\", \"horizontal\", \"set\", \"orientation\", [\"horizontal\", \"vertical\"]);\nMiniGantt.prototype.publish(\"rangeFontColor\", \"#ecf0f1\", \"html-color\", \"rangeFontColor\");\nMiniGantt.prototype.publish(\"titleColumn\", null, \"string\", \"titleColumn\");\nMiniGantt.prototype.publish(\"startDateColumn\", null, \"string\", \"startDateColumn\");\nMiniGantt.prototype.publish(\"endDateColumn\", null, \"string\", \"endDateColumn\");\nMiniGantt.prototype.publish(\"iconColumn\", null, \"string\", \"iconColumn\");\nMiniGantt.prototype.publish(\"colorColumn\", null, \"string\", \"colorColumn\");\nMiniGantt.prototype.publish(\"yOffsetColumn\", null, \"string\", \"yOffsetColumn\");\nMiniGantt.prototype.publish(\"maxZoom\", 16, \"number\", \"maxZoom\");\nMiniGantt.prototype.publish(\"eventGroupOffset\", -50, \"number\", \"eventGroupOffset\");\nMiniGantt.prototype.publish(\"eventGroupMod\", 5, \"number\", \"eventGroupMod\");\nMiniGantt.prototype.publish(\"eventFontColorColumn\", null, \"string\", \"eventFontColorColumn\");\nMiniGantt.prototype.publish(\"eventBorderColorColumn\", null, \"string\", \"eventBorderColorColumn\");\nMiniGantt.prototype.publish(\"eventBackgroundColorColumn\", null, \"string\", \"eventBackgroundColorColumn\");\nMiniGantt.prototype.publish(\"hideIconWhenCollapsed\", false, \"boolean\", \"hideIconWhenCollapsed\");\nMiniGantt.prototype.publish(\"hideTitleWhenCollapsed\", false, \"boolean\", \"hideTitleWhenCollapsed\");\nMiniGantt.prototype.publish(\"hideDescriptionWhenCollapsed\", false, \"boolean\", \"hideDescriptionWhenCollapsed\");\nMiniGantt.prototype.publish(\"hideAnnotationsWhenCollapsed\", true, \"boolean\", \"hideAnnotationsWhenCollapsed\");\nMiniGantt.prototype.publish(\"centerOnMostRecent\", false, \"boolean\", \"If true, the timeline will be centered on the most recent data point\");\n","import { d3Event, select as d3Select, SVGZoomWidget, Utility } from \"@hpcc-js/common\";\nimport { HTMLTooltip } from \"@hpcc-js/html\";\nimport { scaleLinear as d3ScaleLinear } from \"d3-scale\";\nimport { React, render, LabelledRect } from \"@hpcc-js/react\";\n\nexport type IGanttData = [ string, number, number, any? ];\n\nexport interface IRangeOptions {\n rangePadding: number;\n fontFamily: string;\n fontSize: number;\n strokeWidth?: number;\n fill: string;\n stroke: string;\n textFill: string;\n cornerRadius: number;\n}\n\nexport class ReactGantt extends SVGZoomWidget {\n\n protected _selection = new Utility.Selection(this);\n\n protected _buckets;\n protected _interpolateX;\n protected _interpolateY;\n \n protected _bucketsBySeries;\n protected _dataBySeries;\n protected _origIdxMap;\n private _seriesBackgrounds;\n\n protected _maxFontSize;\n\n public _tooltip;\n\n public _minStart: number;\n public _maxEnd: number;\n\n protected _title_idx = 0;\n protected _startDate_idx = 1;\n protected _endDate_idx = 2;\n protected _icon_idx = -1;\n protected _color_idx = -1;\n protected _series_idx = -1;\n protected _bucket_idx = -1;\n protected _yoffset_idx = -1;\n\n protected _maxX: number;\n protected _maxY: number;\n\n private _rangeOptions: IRangeOptions = {\n rangePadding: 2,\n fontFamily: \"Verdana\",\n fontSize: 12,\n fill: \"white\",\n stroke: \"black\",\n textFill: \"black\",\n cornerRadius: 3,\n strokeWidth: 0\n };\n \n constructor(drawStartPosition: \"origin\" | \"center\" = \"origin\") {\n super();\n this._drawStartPos = drawStartPosition;\n\n this.showToolbar_default(false);\n\n this._tooltip = new HTMLTooltip();\n this._tooltip\n .tooltipHTML(d => {\n return `<div style=\"text-align:center;\">${d[0]}<br/><br/>${d[1]} -> ${d[2]}</div>`;\n });\n this._tooltip\n .followCursor(true)\n ;\n }\n\n private _rangeRenderer: React.FunctionComponent = LabelledRect;\n rangeRenderer(): React.FunctionComponent;\n rangeRenderer(_: React.FunctionComponent): this;\n rangeRenderer(_?: React.FunctionComponent): this | React.FunctionComponent {\n if (!arguments.length) return this._rangeRenderer;\n this._rangeRenderer = _;\n return this._rangeRenderer;\n }\n\n enter(domNode, element){\n super.enter(domNode, element);\n\n const context = this;\n element\n .on(\"click\", function (this: SVGElement, d) {\n context._selection.clear();\n });\n\n this._tooltip.target(domNode);\n }\n update(domNode, element){\n super.update(domNode, element);\n\n this.zoomExtent([0.05, this.maxZoom()]);\n\n this._title_idx = this.titleColumn() !== null ? this.columns().indexOf(this.titleColumn()) : this._title_idx;\n this._startDate_idx = this.startDateColumn() !== null ? this.columns().indexOf(this.startDateColumn()) : this._startDate_idx;\n this._endDate_idx = this.endDateColumn() !== null ? this.columns().indexOf(this.endDateColumn()) : this._endDate_idx;\n this._icon_idx = this.iconColumn() !== null ? this.columns().indexOf(this.iconColumn()) : this._icon_idx;\n this._color_idx = this.colorColumn() !== null ? this.columns().indexOf(this.colorColumn()) : this._color_idx;\n this._series_idx = this.seriesColumn() !== null ? this.columns().indexOf(this.seriesColumn()) : this._series_idx;\n this._bucket_idx = this.bucketColumn() !== null ? this.columns().indexOf(this.bucketColumn()) : -1;\n\n const context = this;\n const w = this.width();\n\n const x0 = 0;\n const x1 = w;\n\n this._interpolateX = d3ScaleLinear()\n .domain([this._minStart, this._maxEnd])\n .range([x0, x1])\n ;\n \n this.data().sort((a, b)=>a[1]-b[1]);\n \n if(this._series_idx > -1) {\n this._origIdxMap = {};\n this._dataBySeries = {};\n this._bucketsBySeries = {};\n this.data().forEach((dataRow, origIdx)=>{\n const seriesKey = dataRow[this._series_idx];\n if(!this._dataBySeries[seriesKey]) {\n this._origIdxMap[seriesKey] = {};\n this._dataBySeries[seriesKey] = [];\n }\n this._dataBySeries[seriesKey].push({\n dataRow,\n origIdx\n });\n });\n const gutter = this.gutter();\n let bucketOffset = 0;\n const seriesKeys = Object.keys(this._dataBySeries);\n seriesKeys.forEach(seriesKey=>{\n this._dataBySeries[seriesKey].sort((a, b)=>a.dataRow[1]-b.dataRow[1]);\n this._bucketsBySeries[seriesKey] = this.calcBuckets(this._dataBySeries[seriesKey].map(n=>n.dataRow), 1, 2);\n this._bucketsBySeries[seriesKey].bucketHeight = this.bucketHeight();\n this._bucketsBySeries[seriesKey].bucketOffset = bucketOffset;\n bucketOffset += (this._bucketsBySeries[seriesKey].bucketHeight + this.strokeWidth() + this.gutter()) * (this._bucketsBySeries[seriesKey].maxBucket+1);\n this._dataBySeries[seriesKey].forEach((n, i) => {\n this._origIdxMap[seriesKey][n.origIdx] = i;\n });\n });\n this._seriesBackgrounds = this._renderElement.selectAll(\".series-background\")\n .data(seriesKeys.map(key=>{\n return this._bucketsBySeries[key];\n }))\n ;\n this._seriesBackgrounds\n .join(\n enter => enter.append(\"rect\")\n .attr(\"class\", \"series-background\"),\n update => update,\n exit => exit\n .each(function (d) {\n delete d.element;\n })\n .remove()\n )\n .attr(\"opacity\", d => d.props && d.props.hidden ? 0 : 1)\n .each(function (this: SVGGElement, d, i) {\n d3Select(this)\n .attr(\"x\", 0)\n .attr(\"y\", d.bucketOffset - (gutter/2))\n .attr(\"width\", w)\n .attr(\"height\", ((d.bucketHeight + gutter) * (d.maxBucket + 1)) + gutter)\n .attr(\"fill\", i%2 ? context.oddSeriesBackground() : context.evenSeriesBackground())\n ;\n });\n } else {\n if(this._bucket_idx !== -1){\n this._buckets = this.calcBuckets(this.data(), this._startDate_idx, this._endDate_idx, this._bucket_idx);\n } else {\n this._buckets = this.calcBuckets(this.data(), this._startDate_idx, this._endDate_idx);\n }\n }\n const interpedStart = this._interpolateX(this._minStart);\n \n this.zoomTo(\n [interpedStart, 0],\n 1\n );\n\n const bucketHeight = this.bucketHeight();\n\n this.setRangeOptions();\n\n this._maxFontScale = (bucketHeight - (this.rangePadding() * 2));\n this.measureDataText();\n\n const itemSelection = this._renderElement.selectAll(\".item\")\n .data(this.data())\n ;\n const borderOffset1 = this.strokeWidth();\n const borderOffset2 = borderOffset1 * 2;\n itemSelection\n .join(\n enter => enter.append(\"g\")\n .attr(\"class\", \"item\")\n .on(\"click.selectionBag\", function (d, i) {\n const _id = d.id === undefined ? i : d.id;\n if(context._selection.isSelected({_id, element: d.element})){\n context._selection.clear();\n } else {\n context._selection.click(\n {\n _id,\n element: () => d.element\n }, \n d3Event\n );\n }\n context.selectionChanged();\n d3Event().stopPropagation();\n })\n .on(\"click\", function (this: SVGElement, d) {\n const selected = d.element.classed(\"selected\");\n if(d[context.columns().length]){\n d.__lparam = d[context.columns().length];\n }\n context.click(d, \"\", selected);\n })\n .on(\"dblclick\", function (this: SVGElement, d) {\n const selected = d.element.classed(\"selected\");\n if(d[context.columns().length]){\n d.__lparam = d[context.columns().length];\n }\n context.click(d, \"\", selected);\n })\n .on(\"mousein\", function (d) {\n context.highlightItem(d3Select(this), d);\n const selected = d.element.classed(\"selected\");\n context.mousein(d, \"\", selected);\n })\n .on(\"mouseover\", function (d) {\n const d3evt = d3Event();\n context._tooltip._triggerElement = d.element;\n context._tooltip._cursorLoc = [\n d3evt.clientX,\n d3evt.clientY\n ];\n context._tooltip\n .data(d)\n .visible(true)\n .fitContent(true)\n .render()\n ;\n context.highlightItem(d3Select(this), d);\n const selected = d.element.classed(\"selected\");\n context.mouseover(d, \"\", selected);\n })\n .on(\"mouseout\", function (d) {\n context._tooltip\n .visible(false)\n .render()\n ;\n context.highlightItem(null, null);\n const selected = d.element.classed(\"selected\");\n context.mouseout(d, \"\", selected);\n })\n .each(function (d, i) {\n d.that = this;\n d.element = d3Select(this);\n d.x = context._interpolateX(d[1]);\n const endX = context._interpolateX(d[2]);\n if(context._series_idx > -1) {\n const seriesKey = d[context._series_idx];\n const bucket = context._bucketsBySeries[seriesKey].bucketMap[context._origIdxMap[seriesKey][i]];\n d.y = context._bucketsBySeries[seriesKey].interpolateY(bucket) + context._bucketsBySeries[seriesKey].bucketOffset;\n } else {\n const _i = context._bucket_idx === -1 ? i : d[context._bucket_idx];\n d.y = context._buckets.interpolateY(context._buckets.bucketMap[_i]);\n }\n d.props={\n ...d[3],\n text: d[0]\n };\n d.props.width = endX - d.x;\n d.props.height = bucketHeight;\n d.x += borderOffset1;\n d.y += borderOffset1;\n d.props.width -= borderOffset2;\n d.props.height -= borderOffset2;\n d.element.attr(\"transform\", `translate(${d.x+(d.props.width/2)} ${d.y+(d.props.height/2)})`);\n }),\n update => update,\n exit => exit\n .each(function (d) {\n delete d.element;\n })\n .remove()\n )\n .attr(\"opacity\", d => d.props && d.props.hidden ? 0 : 1)\n .each(function (this: SVGGElement, d, i) {\n d.that = this;\n if(context._series_idx > -1){\n const seriesKey = d[context._series_idx];\n d.x = context.renderRangeElement(d, i, false, context._rangeOptions, seriesKey);\n } else {\n d.x = context.renderRangeElement(d, i, false, context._rangeOptions);\n }\n })\n .on(\"dblclick.zoom\", d => {\n const x1 = this._interpolateX(d[1]);\n const x2 = this._interpolateX(d[2]);\n const xRange = x2 - x1;\n const xScale = w / xRange;\n this.zoomTo(\n [\n -x1 * xScale,\n 0\n ],\n xScale\n );\n })\n ;\n element.on(\"dblclick.zoom\", null);\n }\n renderRangeElement(d, i, transformEach = false, options: any = {}, seriesKey?: string) {\n const borderOffset1 = options.strokeWidth;\n const borderOffset2 = borderOffset1 * 2;\n const padding = options.rangePadding;\n let endX;\n const x = isNaN(this._transform.x) ? 0 : this._transform.x;\n const k = isNaN(this._transform.k) ? 1 : this._transform.k;\n let b;\n const bucketHeight = this.bucketHeight();\n d.that.setAttribute(\"data-series\", seriesKey);\n\n if(this._color_idx > -1){\n d.that.setAttribute(\"data-color\", d[this._color_idx]);\n }\n \n if(seriesKey !== undefined) {\n b = this._bucketsBySeries[seriesKey].bucketMap[this._origIdxMap[seriesKey][i]];\n d.that.setAttribute(\"data-b\", b);\n d.that.setAttribute(\"data-bucketOffset\", this._bucketsBySeries[seriesKey].bucketOffset);\n d.y = this._bucketsBySeries[seriesKey].interpolateY(b) + this._bucketsBySeries[seriesKey].bucketOffset;\n d.that.setAttribute(\"data-dy\", d.y);\n } else {\n b = this._buckets.bucketMap[i];\n d.y = this._buckets.interpolateY(b);\n }\n if(this._color_idx > -1) {\n options.fill = d[this._color_idx];\n }\n if (!transformEach) {\n d.x = this._interpolateX(d[1]);\n endX = this._interpolateX(d[2]);\n d.props={\n ...d[3],\n text: d[0]\n };\n d.props.width = (endX - d.x) / k;\n } else {\n d.x = this._interpolateX(d[1]) * k;\n endX = this._interpolateX(d[2]) * k;\n d.props={\n ...d[3],\n text: d[0]\n };\n d.props.width = (endX - d.x)/k;\n d.x += x;\n d.props.width *= k;\n }\n d.props.height = bucketHeight;\n if(seriesKey === undefined && this._buckets.bucketScale < 1) {\n d.props.height = this._buckets.bucketScale * bucketHeight;\n }\n if(d.element === undefined && d.that){\n d.element = d3Select(d.that);\n }\n d.element.attr(\"transform\", `translate(${d.x+(d.props.width/2)} ${d.y+(d.props.height/2)})`);\n \n d.x += borderOffset1;\n d.y += borderOffset1;\n d.props.width -= borderOffset2;\n d.props.height -= borderOffset2;\n d.props.width = d.props.width < 1 ? 1 : d.props.width;\n d.props.height = d.props.height < 1 ? 1 : d.props.height;\n\n let text = this.truncateText(d.props.text, d.props.width - padding, this._maxFontScale);\n \n if(text !== d.props.text){\n text = this.truncateText(d.props.text, d.props.width - padding);\n } else {\n d.props.fontSize = this._maxFontScale * options.fontSize;\n }\n if(seriesKey === undefined && this._buckets.bucketScale < 1) {\n d.props.fontSize = Math.min(this._maxFontScale, this._buckets.bucketScale) * options.fontSize;\n }\n if(!this._maxY || this._maxY < d.y + d.props.height) {\n this._maxY = d.y + d.props.height;\n }\n if(!this._maxX || this._maxX < d.x + d.props.width) {\n this._maxX = d.x + d.props.width;\n }\n render(\n this._rangeRenderer,\n {\n ...options,\n ...d.props,\n text,\n },\n d.that\n );\n }\n\n setRangeOptions(){\n this._rangeOptions = {\n rangePadding: this.rangePadding(),\n fontFamily: this.fontFamily(),\n fontSize: this.fontSize(),\n strokeWidth: this.strokeWidth(),\n fill: this.fill(),\n stroke: this.stroke(),\n textFill: this.rangeFontColor(),\n cornerRadius: this.cornerRadius(),\n };\n }\n \n public _transform = {k:1, x:0, y:0};\n zoomed(transform) {\n this._transform = transform;\n switch(this.renderMode()){\n case \"scale-all\": \n this._zoomScale = transform.k;\n this._zoomTranslate = [transform.x, 0];\n this._zoomG.attr(\"transform\", `translate(${transform.x} ${0})scale(${transform.k} 1)`);\n break;\n default:\n const options = this._rangeOptions;\n this.data().forEach((d, i)=>{\n if(this._color_idx > -1){\n options.fill = d[this._color_idx];\n }\n if(this._series_idx > -1){\n const seriesKey = d[this._series_idx];\n this.renderRangeElement(d, i, true, options, seriesKey);\n } else {\n this.renderRangeElement(d, i, true, options);\n }\n });\n }\n\n this.zoomedHook(transform);\n }\n\n zoomedHook(transform) {\n\n }\n\n private calcBuckets(data, startKey: string | number, endKey: string | number, bucketKey?: string | number) {\n const bucketMap = {};\n const bucketKeyMap = {};\n const tol = this.overlapTolerence();\n const buckets = [{end:-Infinity}];\n let maxBucket = 0;\n if(bucketKey !== undefined) {\n data.forEach((d, i)=>{\n bucketMap[i] = d[bucketKey];\n bucketKeyMap[d[bucketKey]] = true;\n });\n maxBucket = Object.keys(bucketKeyMap).length;\n } else {\n data.forEach((d, i)=>{\n for (let i2 = 0; i2 < buckets.length; ++i2) {\n if (i === 0 || buckets[i2][endKey] + tol <= d[startKey]) {\n bucketMap[i] = i2;\n if(maxBucket < i2)maxBucket = i2;\n buckets[i2][endKey] = d[endKey];\n break;\n }\n }\n if(bucketMap[i] === undefined){\n bucketMap[i] = buckets.length;\n const b = {};\n b[endKey] = d[endKey];\n buckets.push(b as any);\n }\n \n if(maxBucket < bucketMap[i])maxBucket = bucketMap[i];\n });\n }\n const height = (maxBucket+1) * (this.bucketHeight() + this.gutter());\n return {\n bucketMap,\n maxBucket,\n bucketScale: this.height() / height,\n interpolateY: d3ScaleLinear()\n .domain([0, maxBucket+1])\n .range([0, Math.min(this.height(), height)])\n };\n }\n\n data(): IGanttData[];\n data(_: IGanttData[]): this;\n data(_?: IGanttData[]): this | IGanttData[] {\n const retVal = super.data.apply(this, arguments);\n if(arguments.length > 0) {\n this._minStart = Math.min(...this.data().map(n=>n[1])) ?? 0;\n this._maxEnd = Math.max(...this.data().map(n=>n[2])) ?? 1;\n this.measureDataText(true);\n }\n return retVal;\n }\n \n protected _textWidths;\n protected _maxFontScale;\n protected _characterWidths;\n protected _prevFontFamily;\n protected _prevFontSize;\n measureDataText(forceMeasure = false) {\n const textWidths = {};\n const characterWidths = {};\n const fontFamily = this.fontFamily();\n const fontSize = this.fontSize();\n const bucketHeight = this.bucketHeight();\n\n if(bucketHeight){\n this._maxFontScale = (bucketHeight - (this.rangePadding() * 2)) / fontSize;\n }\n\n if(forceMeasure || this._prevFontFamily !== fontFamily || this._prevFontSize !== fontSize) {\n characterWidths[\".\"] = Utility.textSize(\".\", fontFamily, fontSize).width;\n this.data().forEach(d=>{\n if(!textWidths[d[0]]){\n textWidths[d[0]] = Utility.textSize(d[0], fontFamily, fontSize).width;\n }\n d[0].split(\"\").forEach(char=>{\n if(!characterWidths[char]){\n characterWidths[char] = Utility.textSize(char, fontFamily, fontSize).width;\n }\n });\n });\n this._textWidths = textWidths;\n this._characterWidths = characterWidths;\n }\n this._prevFontFamily = fontFamily;\n this._prevFontSize = fontSize;\n }\n\n truncateText(text, width, scale = 1) {\n const textFits = this._textWidths[text] * scale < width;\n if(textFits){\n return text;\n }\n let ret = \"\";\n let sum = 0;\n const _width = width - (this._characterWidths[\".\"] * 3);\n for(const char of text){\n sum += this._characterWidths[char];\n if(sum < _width){\n ret += char;\n } else {\n break;\n }\n }\n return _width < 0 ? \"\" : ret + \"...\";\n }\n\n resize(_size?: { width: number, height: number }) {\n let retVal;\n if(this.fitWidthToContent() || this.fitHeightToContent()) {\n retVal = super.resize.call(this, {\n width: _size.width,\n height: this._maxY\n });\n } else {\n retVal = super.resize.apply(this, arguments);\n }\n return retVal;\n }\n\n selectionChanged() {\n \n }\n \n highlightItem(_element, d) {\n \n }\n\n click(row, _col, sel) {\n \n }\n\n dblclick(row, _col, sel) {\n \n }\n\n mousein(row, _col, sel) {\n }\n\n mouseover(row, _col, sel) {\n }\n\n mouseout(row, _col, sel) {\n }\n}\nReactGantt.prototype._class += \" timeline_ReactGantt\";\n\nexport interface ReactGantt {\n titleColumn(): string;\n titleColumn(_: string): this;\n startDateColumn(): string;\n startDateColumn(_: string): this;\n endDateColumn(): string;\n endDateColumn(_: string): this;\n iconColumn(): string;\n iconColumn(_: string): this;\n colorColumn(): string;\n colorColumn(_: string): this;\n seriesColumn(): string;\n seriesColumn(_: string): this;\n bucketColumn(): string;\n bucketColumn(_: string): this;\n overlapTolerence(): number;\n overlapTolerence(_: number): this;\n smallestRangeWidth(): number;\n smallestRangeWidth(_: number): this;\n bucketHeight(): number;\n bucketHeight(_: number): this;\n gutter(): number;\n gutter(_: number): this;\n showToolbar_default(_: boolean): this;\n fontSize(): number;\n fontSize(_: number): this;\n fontFamily(): string;\n fontFamily(_: string): this;\n strokeWidth(): number;\n strokeWidth(_: number): this;\n stroke(): string;\n stroke(_: string): this;\n cornerRadius(): number;\n cornerRadius(_: number): this;\n fill(): string;\n fill(_: string): this;\n rangeFontColor(): string;\n rangeFontColor(_: string): this;\n rangePadding(): number;\n rangePadding(_: number): this;\n renderMode(): \"default\" | \"scale-all\";\n renderMode(_: \"default\" | \"scale-all\"): this;\n maxZoom(): number;\n maxZoom(_: number): this;\n fitWidthToContent(): boolean;\n fitWidthToContent(_: boolean): this;\n fitHeightToContent(): boolean;\n fitHeightToContent(_: boolean): this;\n evenSeriesBackground(): string;\n evenSeriesBackground(_: string): this;\n oddSeriesBackground(): string;\n oddSeriesBackground(_: string): this;\n}\n\nReactGantt.prototype.publish(\"fitWidthToContent\", false, \"boolean\", \"If true, resize will simply reapply the bounding box width\");\nReactGantt.prototype.publish(\"fitHeightToContent\", false, \"boolean\", \"If true, resize will simply reapply the bounding box height\");\nReactGantt.prototype.publish(\"titleColumn\", null, \"string\", \"Column name to for the title\");\nReactGantt.prototype.publish(\"startDateColumn\", null, \"string\", \"Column name to for the start date\");\nReactGantt.prototype.publish(\"endDateColumn\", null, \"string\", \"Column name to for the end date\");\nReactGantt.prototype.publish(\"iconColumn\", null, \"string\", \"Column name to for the icon\");\nReactGantt.prototype.publish(\"colorColumn\", null, \"string\", \"Column name to for the color\");\nReactGantt.prototype.publish(\"seriesColumn\", null, \"string\", \"Column name to for the series identifier\");\nReactGantt.prototype.publish(\"bucketColumn\", null, \"string\", \"Column name to for the bucket identifier\");\nReactGantt.prototype.publish(\"renderMode\", \"default\", \"set\", \"Render modes vary in features and performance\", [\"default\", \"scale-all\"]);\nReactGantt.prototype.publish(\"rangePadding\", 3, \"number\", \"Padding within each range rectangle (pixels)\");\nReactGantt.prototype.publish(\"fill\", \"#1f77b4\", \"string\", \"Background color of range rectangle\");\nReactGantt.prototype.publish(\"stroke\", null, \"string\", \"Color of range rectangle border\");\nReactGantt.prototype.publish(\"strokeWidth\", null, \"number\", \"Width of range rectangle border (pixels)\");\nReactGantt.prototype.publish(\"cornerRadius\", 3, \"number\", \"Space between range buckets (pixels)\");\nReactGantt.prototype.publish(\"fontFamily\", null, \"string\", \"Font family within range rectangle\", null, {optional:true});\nReactGantt.prototype.publish(\"fontSize\", 10, \"number\", \"Size of font within range rectangle (pixels)\");\nReactGantt.prototype.publish(\"rangeFontColor\", \"#ecf0f1\", \"html-color\", \"rangeFontColor\");\nReactGantt.prototype.publish(\"overlapTolerence\", 2, \"number\", \"overlapTolerence\");\nReactGantt.prototype.publish(\"smallestRangeWidth\", 10, \"number\", \"Width of the shortest range (pixels)\");\nReactGantt.prototype.publish(\"bucketHeight\", 100, \"number\", \"Max height of range element (pixels)\");\nReactGantt.prototype.publish(\"gutter\", 2, \"number\", \"Space between range buckets (pixels)\");\nReactGantt.prototype.publish(\"maxZoom\", 16, \"number\", \"Maximum zoom\");\nReactGantt.prototype.publish(\"evenSeriesBackground\", \"#FFFFFF\", \"html-color\", \"Background color of even series rows\");\nReactGantt.prototype.publish(\"oddSeriesBackground\", \"#DDDDDD\", \"html-color\", \"Background color of odd series rows\");\n","import { Axis } from \"@hpcc-js/chart\";\nimport { SVGWidget } from \"@hpcc-js/common\";\nimport { ReactGantt } from \"./ReactGantt\";\n\nexport type IAxisGanttData = [ string, number | string, number | string, any? ] | any[];\n\nexport class ReactAxisGantt extends SVGWidget {\n\n protected _topAxis: Axis = new Axis(\"center\")\n .orientation(\"top\")\n .type(\"linear\")\n .shrinkToFit(\"none\")\n .overlapMode(\"hide\")\n .extend(0)\n .tickFormat(\"d\")\n ;\n protected _gantt: ReactGantt = new ReactGantt(\"center\")\n .stroke(\"#000000\")\n ;\n protected _bottomAxis: Axis = new Axis(\"center\")\n .orientation(\"bottom\")\n .type(\"linear\")\n .shrinkToFit(\"none\")\n .overlapMode(\"hide\")\n .extend(0)\n .tickFormat(\"d\")\n ;\n \n protected _topAxisElement;\n protected _contentElement;\n protected _bottomAxisElement;\n protected _topRect;\n protected _contentRect;\n protected _bottomRect;\n\n protected rangeRenderer;\n\n constructor(){\n super();\n this._drawStartPos = \"origin\";\n this.rangeRenderer = function () {\n const ret = this._gantt.rangeRenderer.apply(this._gantt, arguments);\n if(!arguments.length)return ret;\n return this;\n };\n }\n\n resizeWrappers() {\n\n const w = this.width();\n const h = this.height();\n\n const axisHeight = this.axisHeight(); //TODO: Dynamic scaling to allow for small resolutions?\n \n const contentHeight = (h - (axisHeight * 2));\n const borderOffset1 = this.strokeWidth();\n this._topRect\n .attr(\"height\", axisHeight)\n .attr(\"width\", w)\n .attr(\"fill\", \"transparent\")\n ;\n this._topAxisElement.attr(\"transform\", \"translate(0 0)\");\n this._topAxis.resize({height:axisHeight, width:w});\n this._contentRect\n .attr(\"height\", contentHeight)\n .attr(\"width\", w)\n .attr(\"fill\", \"transparent\")\n ;\n this._contentElement.attr(\"transform\", `translate(0 ${axisHeight + borderOffset1})`);\n this._gantt.resize({height:contentHeight, width:w});\n this._bottomRect\n .attr(\"height\", axisHeight)\n .attr(\"width\", w)\n .attr(\"fill\", \"transparent\")\n ;\n this._bottomAxisElement.attr(\"transform\", `translate(0 ${axisHeight + contentHeight + borderOffset1})`);\n this._bottomAxis.resize({height:axisHeight, width:w});\n }\n\n enter(domNode, element){\n super.enter(domNode, element);\n\n this._gantt.click = (row, col, sel) => {\n this.click(row, col, sel);\n };\n\n this._gantt.dblclick = (row, col, sel) => {\n this.dblclick(row, col, sel);\n };\n\n this._topAxisElement = element.append(\"g\")\n .attr(\"class\", \"top-axis-wrapper\")\n ;\n this._topRect = this._topAxisElement.append(\"rect\")\n .attr(\"class\", \"top-axis-rect\")\n ;\n this._contentElement = element.append(\"g\")\n .attr(\"class\", \"content-wrapper\")\n ;\n this._contentRect = this._contentElement.append(\"rect\")\n .attr(\"class\", \"content-rect\")\n ;\n this._bottomAxisElement = element.append(\"g\")\n .attr(\"class\", \"bottom-axis-wrapper\")\n ;\n this._bottomRect = this._bottomAxisElement.append(\"rect\")\n .attr(\"class\", \"top-axis-rect\")\n ;\n this._topAxis.target(this._topAxisElement.node());\n this._gantt.target(this._contentElement.node()).bucketHeight(30);\n this._bottomAxis.target(this._bottomAxisElement.node());\n\n this.resizeWrappers();\n\n this._gantt.zoomedHook = (transform) => {\n this.onzoom(transform);\n };\n }\n\n onzoom(transform) {\n\n const w = this.width();\n const low = this._gantt._minStart;\n const high = this._gantt._maxEnd;\n const range = high - low;\n const wpp = range / w;\n const nextLow = Math.floor(low - (wpp * (transform.x / transform.k)));\n const nextHigh = Math.ceil((range / transform.k) + nextLow);\n\n this._topAxis\n .fontFamily(this.axisFontFamily())\n .fontSize(this.axisFontSize())\n .tickLength(this.axisTickLength())\n .low(nextLow)\n .high(nextHigh)\n .render()\n ;\n this._bottomAxis\n .fontFamily(this.axisFontFamily())\n .fontSize(this.axisFontSize())\n .tickLength(this.axisTickLength())\n .low(nextLow)\n .high(nextHigh)\n .render()\n ;\n }\n\n update(domNode, element){\n super.update(domNode, element);\n this._topAxis.tickFormat(this.tickFormat()).render();\n this._bottomAxis.tickFormat(this.tickFormat()).render();\n this._gantt.render();\n }\n\n columns(): string[];\n columns(_: string[]): this;\n columns(_?: string[]): this | string[] {\n const retVal = super.columns.apply(this, arguments);\n if(arguments.length > 0) {\n this._gantt.columns(_);\n }\n return retVal;\n }\n\n data(): IAxisGanttData[];\n data(_: IAxisGanttData[]): this;\n data(_?: IAxisGanttData[]): this | IAxisGanttData[] {\n const retVal = super.data.apply(this, arguments);\n if(arguments.length > 0) {\n const ganttData: any[] = this.data().map(n=>{\n const ret = [...n];\n ret[1] = isNaN(n[1] as any) ? new Date(n[1]).getTime() : Number(n[1]);\n ret[2] = isNaN(n[2] as any) ? new Date(n[2]).getTime() : Number(n[2]);\n return ret;\n });\n this._gantt._minStart = Math.min(...ganttData.map(n=>n[1])) ?? 0;\n this._gantt._maxEnd = Math.max(...ganttData.map(n=>n[2])) ?? 1;\n this._gantt.data(ganttData);\n }\n return retVal;\n }\n\n resize(_size?: { width: number, height: number }) {\n const retVal = super.resize.apply(this, arguments);\n\n if(this._topAxisElement){\n this.resizeWrappers();\n }\n\n return retVal;\n }\n\n click(row, col, sel) {\n\n }\n\n dblclick(row, col, sel) {\n \n }\n \n tooltip() {\n return this._gantt._tooltip;\n }\n}\nReactAxisGantt.prototype._class += \" timeline_ReactAxisGantt\";\n\nexport interface ReactAxisGantt {\n tickFormat(): string;\n tickFormat(_: string): this;\n tickFormat_exists(): boolean;\n overlapTolerence(): number;\n overlapTolerence(_: number): this;\n smallestRangeWidth(): number;\n smallestRangeWidth(_: number): this;\n scaleMode(): boolean;\n scaleMode(_: boolean): this;\n fontSize(): number;\n fontSize(_: number): this;\n fontFamily(): string;\n fontFamily(_: string): this;\n strokeWidth(): number;\n strokeWidth(_: number): this;\n stroke(): string;\n stroke(_: string): this;\n cornerRadius(): number;\n cornerRadius(_: number): this;\n axisFontSize(): number;\n axisFontSize(_: number): this;\n axisFontFamily(): string;\n axisFontFamily(_: string): this;\n axisTickLength(): number;\n axisTickLength(_: number): this;\n axisHeight(): number;\n axisHeight(_: number): this;\n titleColumn(): string;\n titleColumn(_: string): this;\n startDateColumn(): string;\n startDateColumn(_: string): this;\n endDateColumn(): string;\n endDateColumn(_: string): this;\n iconColumn(): string;\n iconColumn(_: string): this;\n colorColumn(): string;\n colorColumn(_: string): this;\n bucketColumn(): string;\n bucketColumn(_: string): this;\n maxZoom(): number;\n maxZoom(_: number): this;\n}\nReactAxisGantt.prototype.publish(\"tickFormat\", null, \"string\", \"Format rule applied to axis tick labels\", undefined, { optional: true });\nReactAxisGantt.prototype.publish(\"axisHeight\", 22, \"number\", \"Height of axes (pixels)\");\nReactAxisGantt.prototype.publish(\"overlapTolerence\", 2, \"number\", \"overlapTolerence\");\nReactAxisGantt.prototype.publish(\"smallestRangeWidth\", 10, \"number\", \"Width of the shortest range (pixels)\");\nReactAxisGantt.prototype.publish(\"axisFontSize\", null, \"number\", \"Font size of axis tick labels\");\nReactAxisGantt.prototype.publish(\"axisFontFamily\", null, \"string\", \"Font family of axis tick labels\");\nReactAxisGantt.prototype.publish(\"axisTickLength\", null, \"number\", \"Length of axis ticks\");\nReactAxisGantt.prototype.publishProxy(\"gutter\", \"_gantt\");\nReactAxisGantt.prototype.publishProxy(\"renderMode\", \"_gantt\");\nReactAxisGantt.prototype.publishProxy(\"strokeWidth\", \"_gantt\");\nReactAxisGantt.prototype.publishProxy(\"fontSize\", \"_gantt\");\nReactAxisGantt.prototype.publishProxy(\"fontFamily\", \"_gantt\");\nReactAxisGantt.prototype.publishProxy(\"stroke\", \"_gantt\");\nReactAxisGantt.prototype.publishProxy(\"cornerRadius\", \"_gantt\");\nReactAxisGantt.prototype.publishProxy(\"titleColumn\", \"_gantt\");\nReactAxisGantt.prototype.publishProxy(\"startDateColumn\", \"_gantt\");\nReactAxisGantt.prototype.publishProxy(\"endDateColumn\", \"_gantt\");\nReactAxisGantt.prototype.publishProxy(\"iconColumn\", \"_gantt\");\nReactAxisGantt.prototype.publishProxy(\"colorColumn\", \"_gantt\");\nReactAxisGantt.prototype.publishProxy(\"bucketColumn\", \"_gantt\");\nReactAxisGantt.prototype.publishProxy(\"maxZoom\", \"_gantt\");\nReactAxisGantt.prototype.publishProxy(\"bucketHeight\", \"_gantt\");\n","import { min as d3Min, max as d3Max } from \"d3-array\";\nimport { Axis } from \"@hpcc-js/chart\";\nimport { Border2 } from \"@hpcc-js/layout\";\nimport { ReactGantt } from \"./ReactGantt\";\nimport { IAxisGanttData } from \"./ReactAxisGantt\";\nimport { React } from \"@hpcc-js/react\";\n\nexport class ReactAxisGanttSeries extends Border2 {\n\n protected _topAxis: Axis = new Axis(\"origin\")\n .orientation(\"top\")\n .type(\"linear\")\n .shrinkToFit(\"none\")\n .overlapMode(\"hide\")\n .extend(0)\n .tickFormat(\"d\")\n ;\n protected _gantt: ReactGantt = new ReactGantt(\"origin\")\n .stroke(\"#000000\")\n .fitHeightToContent(true)\n ;\n protected _bottomAxis: Axis = new Axis(\"origin\")\n .orientation(\"bottom\")\n .type(\"linear\")\n .shrinkToFit(\"none\")\n .overlapMode(\"hide\")\n .extend(0)\n .tickFormat(\"d\")\n ;\n\n protected _topAxisElement;\n protected _contentElement;\n protected _bottomAxisElement;\n protected _topRect;\n protected _contentRect;\n protected _bottomRect;\n\n constructor() {\n super();\n this.centerOverflowX_default(\"hidden\");\n this.centerOverflowY_default(\"auto\");\n }\n\n rangeRenderer(): React.FunctionComponent;\n rangeRenderer(_: React.FunctionComponent): this;\n rangeRenderer(_?: React.FunctionComponent): this | React.FunctionComponent {\n const ret = this._gantt.rangeRenderer.apply(this._gantt, arguments);\n if (!arguments.length) return ret;\n return this;\n }\n\n resizeWrappers() {\n\n const w = this.width();\n const h = this.height();\n\n const axisHeight = this.axisHeight(); //TODO: Dynamic scaling to allow for small resolutions?\n const contentHeight = (h - (axisHeight * 2));\n\n this.bottomHeight(axisHeight);\n\n this._topWA.resize({\n width: w,\n height: axisHeight\n });\n this._centerWA.resize({\n width: w,\n height: contentHeight\n });\n this._bottomWA.resize({\n width: w,\n height: axisHeight\n });\n this.top().render();\n this.bottom().render();\n this.center().render();\n }\n\n enter(domNode, element) {\n super.enter(domNode, element);\n\n this._gantt.click = (row, col, sel) => {\n this.click(row, col, sel);\n };\n\n this._gantt.dblclick = (row, col, sel) => {\n this.dblclick(row, col, sel);\n };\n\n this.top(this._topAxis);\n this.center(this._gantt);\n this.bottom(this._bottomAxis);\n\n this.resizeWrappers();\n\n this._gantt.zoomedHook = (transform) => {\n this.onzoom(transform);\n };\n }\n\n onzoom(transform) {\n const w = this.width();\n const low = this._gantt._minStart;\n const high = this._gantt._maxEnd;\n const range = high - low;\n const wpp = range / w;\n const nextLow = Math.floor(low - (wpp * (transform.x / transform.k)));\n const nextHigh = Math.ceil((range / transform.k) + nextLow);\n\n this._topAxis\n .fontFamily(this.axisFontFamily())\n .fontSize(this.axisFontSize())\n .tickLength(this.axisTickLength())\n .low(nextLow)\n .high(nextHigh)\n .lazyRender()\n ;\n this._bottomAxis\n .fontFamily(this.axisFontFamily())\n .fontSize(this.axisFontSize())\n .tickLength(this.axisTickLength())\n .low(nextLow)\n .high(nextHigh)\n .lazyRender()\n ;\n }\n\n update(domNode, element) {\n super.update(domNode, element);\n this._topAxis.tickFormat(this.tickFormat()).render();\n this._bottomAxis.tickFormat(this.tickFormat()).render();\n this._gantt.render();\n }\n\n columns(): string[];\n columns(_: string[]): this;\n columns(_?: string[]): this | string[] {\n const retVal = super.columns.apply(this, arguments);\n if (arguments.length > 0) {\n this._gantt.columns(_);\n }\n return retVal;\n }\n\n data(): IAxisGanttData[];\n data(_: IAxisGanttData[]): this;\n data(_?: IAxisGanttData[]): this | IAxisGanttData[] {\n const retVal = super.data.apply(this, arguments);\n if (arguments.length > 0) {\n const ganttData: any[] = this.data().map(n => {\n const ret = [...n];\n ret[1] = isNaN(n[1] as any) ? new Date(n[1]).getTime() : Number(n[1]);\n ret[2] = isNaN(n[2] as any) ? new Date(n[2]).getTime() : Number(n[2]);\n return ret;\n });\n\n this._gantt._minStart = d3Min(ganttData, n => n[1]);\n this._gantt._maxEnd = d3Max(ganttData, n => n[2]);\n this._gantt.data(ganttData);\n }\n return retVal;\n }\n\n resize(_size?: { width: number, height: number }) {\n const retVal = super.resize.apply(this, arguments);\n\n if (this._topAxisElement) {\n this.resizeWrappers();\n }\n\n return retVal;\n }\n\n click(row, col, sel) {\n\n }\n\n dblclick(row, col, sel) {\n\n }\n\n tooltip() {\n return this._gantt._tooltip;\n }\n}\nReactAxisGanttSeries.prototype._class += \" timeline_ReactAxisGanttSeries\";\n\nexport interface ReactAxisGanttSeries {\n tickFormat(): string;\n tickFormat(_: string): this;\n tickFormat_exists(): boolean;\n overlapTolerence(): number;\n overlapTolerence(_: number): this;\n smallestRangeWidth(): number;\n smallestRangeWidth(_: number): this;\n scaleMode(): boolean;\n scaleMode(_: boolean): this;\n fontSize(): number;\n fontSize(_: number): this;\n fontFamily(): string;\n fontFamily(_: string): this;\n strokeWidth(): number;\n strokeWidth(_: number): this;\n stroke(): string;\n stroke(_: string): this;\n cornerRadius(): number;\n cornerRadius(_: number): this;\n axisFontSize(): number;\n axisFontSize(_: number): this;\n axisFontFamily(): string;\n axisFontFamily(_: string): this;\n axisTickLength(): number;\n axisTickLength(_: number): this;\n axisHeight(): number;\n axisHeight(_: number): this;\n titleColumn(): string;\n titleColumn(_: string): this;\n startDateColumn(): string;\n startDateColumn(_: string): this;\n endDateColumn(): string;\n endDateColumn(_: string): this;\n iconColumn(): string;\n iconColumn(_: string): this;\n colorColumn(): string;\n colorColumn(_: string): this;\n seriesColumn(): string;\n seriesColumn(_: string): this;\n bucketColumn(): string;\n bucketColumn(_: string): this;\n maxZoom(): number;\n maxZoom(_: number): this;\n}\nReactAxisGanttSeries.prototype.publish(\"tickFormat\", null, \"string\", \"Format rule applied to axis tick labels\", undefined, { optional: true });\nReactAxisGanttSeries.prototype.publish(\"axisHeight\", 22, \"number\", \"Height of axes (pixels)\");\nReactAxisGanttSeries.prototype.publish(\"overlapTolerence\", 2, \"number\", \"overlapTolerence\");\nReactAxisGanttSeries.prototype.publish(\"smallestRangeWidth\", 10, \"number\", \"Width of the shortest range (pixels)\");\nReactAxisGanttSeries.prototype.publish(\"axisFontSize\", null, \"number\", \"Font size of axis tick labels\");\nReactAxisGanttSeries.prototype.publish(\"axisFontFamily\", null, \"string\", \"Font family of axis tick labels\");\nReactAxisGanttSeries.prototype.publish(\"axisTickLength\", null, \"number\", \"Length of axis ticks\");\nReactAxisGanttSeries.prototype.publishProxy(\"gutter\", \"_gantt\");\nReactAxisGanttSeries.prototype.publishProxy(\"renderMode\", \"_gantt\");\nReactAxisGanttSeries.prototype.publishProxy(\"strokeWidth\", \"_gantt\");\nReactAxisGanttSeries.prototype.publishProxy(\"fontSize\", \"_gantt\");\nReactAxisGanttSeries.prototype.publishProxy(\"fontFamily\", \"_gantt\");\nReactAxisGanttSeries.prototype.publishProxy(\"stroke\", \"_gantt\");\nReactAxisGanttSeries.prototype.publishProxy(\"cornerRadius\", \"_gantt\");\nReactAxisGanttSeries.prototype.publishProxy(\"titleColumn\", \"_gantt\");\nReactAxisGanttSeries.prototype.publishProxy(\"startDateColumn\", \"_gantt\");\nReactAxisGanttSeries.prototype.publishProxy(\"endDateColumn\", \"_gantt\");\nReactAxisGanttSeries.prototype.publishProxy(\"iconColumn\", \"_gantt\");\nReactAxisGanttSeries.prototype.publishProxy(\"colorColumn\", \"_gantt\");\nReactAxisGanttSeries.prototype.publishProxy(\"seriesColumn\", \"_gantt\");\nReactAxisGanttSeries.prototype.publishProxy(\"bucketColumn\", \"_gantt\");\nReactAxisGanttSeries.prototype.publishProxy(\"maxZoom\", \"_gantt\");\nReactAxisGanttSeries.prototype.publishProxy(\"evenSeriesBackground\", \"_gantt\");\nReactAxisGanttSeries.prototype.publishProxy(\"oddSeriesBackground\", \"_gantt\");\nReactAxisGanttSeries.prototype.publishProxy(\"bucketHeight\", \"_gantt\");\n","import { timeFormat as d3TimeFormat, timeParse as d3TimeParse } from \"d3-time-format\";\nimport { ReactAxisGantt } from \"./ReactAxisGantt\";\n\nexport class ReactTimeline extends ReactAxisGantt {\n\n protected _axisLabelFormatter;//TODO: add a type to this? d3 time formatting function type?\n\n constructor(){\n super();\n this._drawStartPos = \"origin\";\n this._topAxis.type(\"time\");\n this._bottomAxis.type(\"time\");\n\n this.tooltipHTML((d: any) => {\n const parser = d3TimeParse(\"%Q\");\n const startTime = parser(d[1]);\n const endTime = parser(d[2]);\n\n const formatter = d3TimeFormat(this.tooltipTimeFormat());\n return `<div style=\"text-align:center;\">${d[0]}<br/><br/>${formatter(startTime)} -> ${formatter(endTime)}</div>`;\n });\n }\n\n update(domNode, element) {\n super.update(domNode, element);\n\n if(this.timePattern_exists()) {\n\n let minTimestamp = Infinity;\n let maxTimestamp = -Infinity;\n let lowDateStr = \"\";\n let highDateStr = \"\";\n this.data().map(n=>{\n const start = new Date(n[1]).getTime();\n const end = new Date(n[2]).getTime();\n if(minTimestamp > start){\n minTimestamp = start;\n lowDateStr = \"\" + n[1];\n }\n if(maxTimestamp < end){\n maxTimestamp = end;\n highDateStr = \"\" + n[2];\n }\n });\n this._topAxis\n .type(\"time\")\n .timePattern(this.timePattern())\n .overlapMode(\"none\")\n .tickFormat(this._axisLabelFormatter)\n .low(lowDateStr)\n .high(highDateStr)\n ;\n this._bottomAxis\n .type(\"time\")\n .timePattern(this.timePattern())\n .overlapMode(\"none\")\n .tickFormat(this._axisLabelFormatter)\n .low(lowDateStr)\n .high(highDateStr)\n ;\n this._gantt._minStart = minTimestamp;\n this._gantt._maxEnd = maxTimestamp;\n }\n }\n\n tooltipHTML(callback) {\n this._tooltipHTML = callback;\n this.tooltip().tooltipHTML(this._tooltipHTML);\n return this;\n }\n\n parseAxisValue(v) {\n const parseTime = d3TimeParse(\"%Q\");\n const parsedTime = parseTime(v);\n\n const formatTime = d3TimeFormat(this.timePattern());\n return formatTime(parsedTime);\n }\n\n onzoom(transform) {\n \n const w = this.width();\n const low = this._gantt._minStart;\n const high = this._gantt._maxEnd;\n const range = high - low;\n const wpp = range / w;\n const nextLow = Math.floor(low - (wpp * (transform.x / transform.k)));\n const nextHigh = Math.ceil((range / transform.k) + nextLow);\n\n this._topAxis\n .low(this.parseAxisValue(nextLow))\n .high(this.parseAxisValue(nextHigh))\n .render()\n ;\n this._bottomAxis\n .low(this.parseAxisValue(nextLow))\n .high(this.parseAxisValue(nextHigh))\n .render()\n ;\n }\n\n _tooltipHTML: (_) => string;\n}\nReactTimeline.prototype._class += \" timeline_ReactTimeline\";\n\nexport interface ReactTimeline {\n timePattern(): string;\n timePattern(_: string): this;\n timePattern_exists(): boolean;\n tooltipTimeFormat(): string;\n tooltipTimeFormat(_: string): this;\n}\nReactTimeline.prototype.publish(\"timePattern\", \"%Y-%m-%d\", \"string\", \"Time pattern used for parsing datetime strings on each data row\", null, {optional:true});\nReactTimeline.prototype.publish(\"tooltipTimeFormat\", \"%Y-%m-%d\", \"string\", \"Time format used in the default html tooltip\");\n\n","import { timeFormat as d3TimeFormat, timeParse as d3TimeParse } from \"d3-time-format\";\nimport { ReactAxisGanttSeries } from \"./ReactAxisGanttSeries\";\n\nconst parseTime = d3TimeParse(\"%Q\");\nexport class ReactTimelineSeries extends ReactAxisGanttSeries {\n\n protected _axisLabelFormatter;//TODO: add a type to this? d3 time formatting function type?\n\n constructor(){\n super();\n this._topAxis.type(\"time\");\n this._bottomAxis.type(\"time\");\n\n this.tooltipHTML((d: any) => {\n const startTime = parseTime(d[1]);\n const endTime = parseTime(d[2]);\n\n const formatter = d3TimeFormat(this.tooltipTimeFormat());\n return `<div style=\"text-align:center;\">${d[0]}<br/><br/>${formatter(startTime)} -> ${formatter(endTime)}</div>`;\n });\n }\n\n update(domNode, element) {\n super.update(domNode, element);\n\n if(this.timePattern_exists()) {\n\n let minTimestamp = Infinity;\n let maxTimestamp = -Infinity;\n let lowDateStr = \"\";\n let highDateStr = \"\";\n this.data().forEach(n=>{\n const start = new Date(n[1]).getTime();\n const end = new Date(n[2]).getTime();\n if(minTimestamp > start){\n minTimestamp = start;\n lowDateStr = \"\" + n[1];\n }\n if(maxTimestamp < end){\n maxTimestamp = end;\n highDateStr = \"\" + n[2];\n }\n });\n this._topAxis\n .type(\"time\")\n .timePattern(this.timePattern())\n .overlapMode(\"none\")\n .tickFormat(this._axisLabelFormatter)\n .low(lowDateStr)\n .high(highDateStr)\n ;\n this._bottomAxis\n .type(\"time\")\n .timePattern(this.timePattern())\n .overlapMode(\"none\")\n .tickFormat(this._axisLabelFormatter)\n .low(lowDateStr)\n .high(highDateStr)\n ;\n this._gantt._minStart = minTimestamp;\n this._gantt._maxEnd = maxTimestamp;\n }\n }\n\n tooltipHTML(callback) {\n this._tooltipHTML = callback;\n this.tooltip().tooltipHTML(this._tooltipHTML);\n return this;\n }\n\n parseAxisValue(v) {\n const parsedTime = parseTime(v);\n\n const formatTime = d3TimeFormat(this.timePattern());\n return formatTime(parsedTime);\n }\n\n onzoom(transform) {\n \n const w = this.width();\n const low = this._gantt._minStart;\n const high = this._gantt._maxEnd;\n const range = high - low;\n const wpp = range / w;\n const nextLow = Math.floor(low - (wpp * (transform.x / transform.k)));\n const nextHigh = Math.ceil((range / transform.k) + nextLow);\n\n this._topAxis\n .low(this.parseAxisValue(nextLow))\n .high(this.parseAxisValue(nextHigh))\n .render()\n ;\n this._bottomAxis\n .low(this.parseAxisValue(nextLow))\n .high(this.parseAxisValue(nextHigh))\n .render()\n ;\n }\n\n _tooltipHTML: (_) => string;\n}\nReactTimelineSeries.prototype._class += \" timeline_ReactTimelineSeries\";\n\nexport interface ReactTimelineSeries {\n timePattern(): string;\n timePattern(_: string): this;\n timePattern_exists(): boolean;\n tooltipTimeFormat(): string;\n tooltipTimeFormat(_: string): this;\n}\nReactTimelineSeries.prototype.publish(\"timePattern\", \"%Y-%m-%d\", \"string\", \"Time pattern used for parsing datetime strings on each data row\", null, {optional:true});\nReactTimelineSeries.prototype.publish(\"tooltipTimeFormat\", \"%Y-%m-%d\", \"string\", \"Time format used in the default html tooltip\");\n\n"],"mappings":"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"}
|