UNPKG

910 kBSource Map (JSON)View Raw
1{"version":3,"file":"swimlane-ngx-charts.umd.js","sources":["../../../../node_modules/tslib/tslib.es6.js","../../../../projects/swimlane/ngx-charts/src/lib/common/tooltip/injection.service.ts","../../../../projects/swimlane/ngx-charts/src/lib/utils/throttle.ts","../../../../projects/swimlane/ngx-charts/src/lib/common/tooltip/position/placement-type.enum.ts","../../../../projects/swimlane/ngx-charts/src/lib/common/tooltip/position/position.ts","../../../../projects/swimlane/ngx-charts/src/lib/common/tooltip/tooltip.component.ts","../../../../projects/swimlane/ngx-charts/src/lib/common/tooltip/injection-registery.service.ts","../../../../projects/swimlane/ngx-charts/src/lib/common/tooltip/tooltip.service.ts","../../../../projects/swimlane/ngx-charts/src/lib/common/types/legend.model.ts","../../../../projects/swimlane/ngx-charts/src/lib/common/types/scale-type.enum.ts","../../../../projects/swimlane/ngx-charts/src/lib/common/charts/chart.component.ts","../../../../projects/swimlane/ngx-charts/src/lib/utils/visibility-observer.ts","../../../../projects/swimlane/ngx-charts/src/lib/utils/types.ts","../../../../projects/swimlane/ngx-charts/src/lib/common/base-chart.component.ts","../../../../projects/swimlane/ngx-charts/src/lib/common/types/orientation.enum.ts","../../../../projects/swimlane/ngx-charts/src/lib/common/axes/axis-label.component.ts","../../../../projects/swimlane/ngx-charts/src/lib/common/trim-label.helper.ts","../../../../projects/swimlane/ngx-charts/src/lib/common/axes/ticks.helper.ts","../../../../projects/swimlane/ngx-charts/src/lib/common/types/text-anchor.enum.ts","../../../../projects/swimlane/ngx-charts/src/lib/common/axes/x-axis-ticks.component.ts","../../../../projects/swimlane/ngx-charts/src/lib/common/axes/x-axis.component.ts","../../../../projects/swimlane/ngx-charts/src/lib/common/shape.helper.ts","../../../../projects/swimlane/ngx-charts/src/lib/common/axes/y-axis-ticks.component.ts","../../../../projects/swimlane/ngx-charts/src/lib/common/axes/y-axis.component.ts","../../../../projects/swimlane/ngx-charts/src/lib/common/axes/axes.module.ts","../../../../projects/swimlane/ngx-charts/src/lib/common/tooltip/style.type.ts","../../../../projects/swimlane/ngx-charts/src/lib/common/tooltip/show.type.ts","../../../../projects/swimlane/ngx-charts/src/lib/common/tooltip/tooltip.directive.ts","../../../../projects/swimlane/ngx-charts/src/lib/common/tooltip/tooltip.module.ts","../../../../projects/swimlane/ngx-charts/src/lib/common/label.helper.ts","../../../../projects/swimlane/ngx-charts/src/lib/utils/id.ts","../../../../projects/swimlane/ngx-charts/src/lib/common/types/bar-orientation.enum.ts","../../../../projects/swimlane/ngx-charts/src/lib/common/circle-series.component.ts","../../../../projects/swimlane/ngx-charts/src/lib/common/circle.component.ts","../../../../projects/swimlane/ngx-charts/src/lib/common/grid-panel.component.ts","../../../../projects/swimlane/ngx-charts/src/lib/common/grid-panel-series.component.ts","../../../../projects/swimlane/ngx-charts/src/lib/common/svg-linear-gradient.component.ts","../../../../projects/swimlane/ngx-charts/src/lib/common/svg-radial-gradient.component.ts","../../../../projects/swimlane/ngx-charts/src/lib/common/area.component.ts","../../../../projects/swimlane/ngx-charts/src/lib/common/count/count.helper.ts","../../../../projects/swimlane/ngx-charts/src/lib/common/count/count.directive.ts","../../../../projects/swimlane/ngx-charts/src/lib/events.ts","../../../../projects/swimlane/ngx-charts/src/lib/common/tooltip-area.component.ts","../../../../projects/swimlane/ngx-charts/src/lib/common/timeline/timeline.component.ts","../../../../projects/swimlane/ngx-charts/src/lib/common/legend/legend.component.ts","../../../../projects/swimlane/ngx-charts/src/lib/common/legend/legend-entry.component.ts","../../../../projects/swimlane/ngx-charts/src/lib/common/legend/scale-legend.component.ts","../../../../projects/swimlane/ngx-charts/src/lib/common/legend/advanced-legend.component.ts","../../../../projects/swimlane/ngx-charts/src/lib/common/chart-common.module.ts","../../../../projects/swimlane/ngx-charts/src/lib/common/view-dimensions.helper.ts","../../../../projects/swimlane/ngx-charts/src/lib/utils/color-sets.ts","../../../../projects/swimlane/ngx-charts/src/lib/common/color.helper.ts","../../../../projects/swimlane/ngx-charts/src/lib/common/domain.helper.ts","../../../../projects/swimlane/ngx-charts/src/lib/area-chart/area-chart.component.ts","../../../../projects/swimlane/ngx-charts/src/lib/area-chart/area-chart-normalized.component.ts","../../../../projects/swimlane/ngx-charts/src/lib/area-chart/area-chart-stacked.component.ts","../../../../projects/swimlane/ngx-charts/src/lib/utils/sort.ts","../../../../projects/swimlane/ngx-charts/src/lib/area-chart/area-series.component.ts","../../../../projects/swimlane/ngx-charts/src/lib/area-chart/area-chart.module.ts","../../../../projects/swimlane/ngx-charts/src/lib/bar-chart/bar.component.ts","../../../../projects/swimlane/ngx-charts/src/lib/bar-chart/bar-horizontal.component.ts","../../../../projects/swimlane/ngx-charts/src/lib/bar-chart/bar-horizontal-2d.component.ts","../../../../projects/swimlane/ngx-charts/src/lib/bar-chart/types/bar-chart-type.enum.ts","../../../../projects/swimlane/ngx-charts/src/lib/bar-chart/bar-horizontal-normalized.component.ts","../../../../projects/swimlane/ngx-charts/src/lib/bar-chart/bar-horizontal-stacked.component.ts","../../../../projects/swimlane/ngx-charts/src/lib/bar-chart/bar-vertical.component.ts","../../../../projects/swimlane/ngx-charts/src/lib/bar-chart/bar-vertical-2d.component.ts","../../../../projects/swimlane/ngx-charts/src/lib/bar-chart/bar-vertical-normalized.component.ts","../../../../projects/swimlane/ngx-charts/src/lib/bar-chart/bar-vertical-stacked.component.ts","../../../../projects/swimlane/ngx-charts/src/lib/bar-chart/types/d0-type.enum.ts","../../../../projects/swimlane/ngx-charts/src/lib/bar-chart/series-horizontal.component.ts","../../../../projects/swimlane/ngx-charts/src/lib/bar-chart/series-vertical.component.ts","../../../../projects/swimlane/ngx-charts/src/lib/bar-chart/bar-label.component.ts","../../../../projects/swimlane/ngx-charts/src/lib/bar-chart/bar-chart.module.ts","../../../../projects/swimlane/ngx-charts/src/lib/box-chart/box-chart.component.ts","../../../../projects/swimlane/ngx-charts/src/lib/box-chart/box-series.component.ts","../../../../projects/swimlane/ngx-charts/src/lib/box-chart/box.component.ts","../../../../projects/swimlane/ngx-charts/src/lib/box-chart/box-chart.module.ts","../../../../projects/swimlane/ngx-charts/src/lib/bubble-chart/bubble-chart.utils.ts","../../../../projects/swimlane/ngx-charts/src/lib/bubble-chart/bubble-chart.component.ts","../../../../projects/swimlane/ngx-charts/src/lib/bubble-chart/bubble-series.component.ts","../../../../projects/swimlane/ngx-charts/src/lib/bubble-chart/bubble-chart.module.ts","../../../../projects/swimlane/ngx-charts/src/lib/heat-map/heat-map-cell.component.ts","../../../../projects/swimlane/ngx-charts/src/lib/heat-map/heat-map-cell-series.component.ts","../../../../projects/swimlane/ngx-charts/src/lib/heat-map/heat-map.component.ts","../../../../projects/swimlane/ngx-charts/src/lib/heat-map/heat-map.module.ts","../../../../projects/swimlane/ngx-charts/src/lib/line-chart/line.component.ts","../../../../projects/swimlane/ngx-charts/src/lib/line-chart/line-chart.component.ts","../../../../projects/swimlane/ngx-charts/src/lib/line-chart/line-series.component.ts","../../../../projects/swimlane/ngx-charts/src/lib/line-chart/line-chart.module.ts","../../../../projects/swimlane/ngx-charts/src/lib/polar-chart/polar-chart.component.ts","../../../../projects/swimlane/ngx-charts/src/lib/polar-chart/polar-series.component.ts","../../../../projects/swimlane/ngx-charts/src/lib/pie-chart/advanced-pie-chart.component.ts","../../../../projects/swimlane/ngx-charts/src/lib/pie-chart/pie-label.component.ts","../../../../projects/swimlane/ngx-charts/src/lib/pie-chart/pie-arc.component.ts","../../../../projects/swimlane/ngx-charts/src/lib/pie-chart/pie-chart.component.ts","../../../../projects/swimlane/ngx-charts/src/lib/common/grid-layout.helper.ts","../../../../projects/swimlane/ngx-charts/src/lib/pie-chart/pie-grid.component.ts","../../../../projects/swimlane/ngx-charts/src/lib/pie-chart/pie-grid-series.component.ts","../../../../projects/swimlane/ngx-charts/src/lib/pie-chart/pie-series.component.ts","../../../../projects/swimlane/ngx-charts/src/lib/pie-chart/pie-chart.module.ts","../../../../projects/swimlane/ngx-charts/src/lib/polar-chart/polar-chart.module.ts","../../../../projects/swimlane/ngx-charts/src/lib/utils/calculate-width.ts","../../../../projects/swimlane/ngx-charts/src/lib/common/constants/font-widths.ts","../../../../projects/swimlane/ngx-charts/src/lib/number-card/card.component.ts","../../../../projects/swimlane/ngx-charts/src/lib/utils/color-utils.ts","../../../../projects/swimlane/ngx-charts/src/lib/number-card/card-series.component.ts","../../../../projects/swimlane/ngx-charts/src/lib/number-card/number-card.component.ts","../../../../projects/swimlane/ngx-charts/src/lib/number-card/number-card.module.ts","../../../../projects/swimlane/ngx-charts/src/lib/tree-map/tree-map-cell.component.ts","../../../../projects/swimlane/ngx-charts/src/lib/tree-map/tree-map-cell-series.component.ts","../../../../projects/swimlane/ngx-charts/src/lib/tree-map/tree-map.component.ts","../../../../projects/swimlane/ngx-charts/src/lib/tree-map/tree-map.module.ts","../../../../projects/swimlane/ngx-charts/src/lib/gauge/linear-gauge.component.ts","../../../../projects/swimlane/ngx-charts/src/lib/gauge/gauge.component.ts","../../../../projects/swimlane/ngx-charts/src/lib/gauge/gauge-arc.component.ts","../../../../projects/swimlane/ngx-charts/src/lib/gauge/gauge-axis.component.ts","../../../../projects/swimlane/ngx-charts/src/lib/gauge/gauge.module.ts","../../../../projects/swimlane/ngx-charts/src/lib/polyfills.ts","../../../../projects/swimlane/ngx-charts/src/lib/ngx-charts.module.ts","../../../../projects/swimlane/ngx-charts/src/lib/common/tick-format.helper.ts","../../../../projects/swimlane/ngx-charts/src/public-api.ts","../../../../projects/swimlane/ngx-charts/src/swimlane-ngx-charts.ts"],"sourcesContent":["/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\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;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\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;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\r\n\r\nexport function __spreadArray(to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || Array.prototype.slice.call(from));\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\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); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\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);\r\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); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\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\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\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\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n","import {\n ApplicationRef,\n ComponentFactoryResolver,\n ComponentRef,\n Injectable,\n Injector,\n ViewContainerRef,\n EmbeddedViewRef,\n Type\n} from '@angular/core';\nimport { DomPortalOutlet, ComponentPortal } from '@angular/cdk/portal';\n\nfunction isViewContainerRef(x: any): x is ViewContainerRef {\n return x.element;\n}\n\n/**\n * Injection service is a helper to append components\n * dynamically to a known location in the DOM, most\n * noteably for dialogs/tooltips appending to body.\n *\n * @export\n */\n@Injectable()\nexport class InjectionService {\n static globalRootViewContainer: ViewContainerRef = null;\n\n /**\n * Sets a default global root view container. This is useful for\n * things like ngUpgrade that doesn't have a ApplicationRef root.\n *\n * @param container\n */\n static setGlobalRootViewContainer(container: ViewContainerRef): void {\n InjectionService.globalRootViewContainer = container;\n }\n\n private _container: ViewContainerRef;\n\n constructor(\n private applicationRef: ApplicationRef,\n private componentFactoryResolver: ComponentFactoryResolver,\n private injector: Injector\n ) {}\n\n /**\n * Gets the root view container to inject the component to.\n *\n * @memberOf InjectionService\n */\n getRootViewContainer(): ViewContainerRef | ComponentRef<any> {\n if (this._container) return this._container;\n if (InjectionService.globalRootViewContainer) return InjectionService.globalRootViewContainer;\n\n if (this.applicationRef.components.length) return this.applicationRef.components[0];\n\n throw new Error(\n 'View Container not found! ngUpgrade needs to manually set this via setRootViewContainer or setGlobalRootViewContainer.'\n );\n }\n\n /**\n * Overrides the default root view container. This is useful for\n * things like ngUpgrade that doesn't have a ApplicationRef root.\n *\n * @param container\n *\n * @memberOf InjectionService\n */\n setRootViewContainer(container: ViewContainerRef): void {\n this._container = container;\n }\n\n /**\n * Gets the html element for a component ref.\n *\n * @param componentRef\n *\n * @memberOf InjectionService\n */\n getComponentRootNode(component: ViewContainerRef | ComponentRef<any>): HTMLElement {\n if (isViewContainerRef(component)) {\n return component.element.nativeElement;\n }\n if (component.hostView && (component.hostView as EmbeddedViewRef<any>).rootNodes.length > 0) {\n return (component.hostView as EmbeddedViewRef<any>).rootNodes[0] as HTMLElement;\n }\n\n // the top most component root node has no `hostView`\n return component.location.nativeElement;\n }\n\n /**\n * Gets the root component container html element.\n *\n * @memberOf InjectionService\n */\n getRootViewContainerNode(component: ViewContainerRef | ComponentRef<any>): HTMLElement {\n return this.getComponentRootNode(component);\n }\n\n /**\n * Projects the bindings onto the component\n *\n * @param component\n * @param options\n *\n * @memberOf InjectionService\n */\n projectComponentBindings(component: ComponentRef<any>, bindings: any): ComponentRef<any> {\n if (bindings) {\n if (bindings.inputs !== undefined) {\n const bindingKeys = Object.getOwnPropertyNames(bindings.inputs);\n for (const bindingName of bindingKeys) {\n component.instance[bindingName] = bindings.inputs[bindingName];\n }\n }\n\n if (bindings.outputs !== undefined) {\n const eventKeys = Object.getOwnPropertyNames(bindings.outputs);\n for (const eventName of eventKeys) {\n component.instance[eventName] = bindings.outputs[eventName];\n }\n }\n }\n\n return component;\n }\n\n /**\n * Appends a component to a adjacent location\n *\n * @param componentClass\n * @param [options={}]\n * @param [location]\n *\n * @memberOf InjectionService\n */\n appendComponent<T>(componentClass: Type<T>, bindings: any = {}, location?: any): ComponentRef<any> {\n if (!location) location = this.getRootViewContainer();\n const appendLocation = this.getComponentRootNode(location);\n\n const portalHost = new DomPortalOutlet(\n appendLocation,\n this.componentFactoryResolver,\n this.applicationRef,\n this.injector\n );\n\n const portal = new ComponentPortal(componentClass);\n\n const componentRef = portalHost.attach(portal);\n this.projectComponentBindings(componentRef, bindings);\n return componentRef;\n }\n}\n","/**\n * Throttle a function\n *\n */\nexport function throttle(func: any, wait: number, options?: any) {\n options = options || {};\n let context;\n let args;\n let result;\n let timeout = null;\n let previous = 0;\n\n function later() {\n previous = options.leading === false ? 0 : +new Date();\n timeout = null;\n result = func.apply(context, args);\n }\n\n return function () {\n const now = +new Date();\n\n if (!previous && options.leading === false) {\n previous = now;\n }\n\n const remaining = wait - (now - previous);\n context = this;\n args = arguments;\n\n if (remaining <= 0) {\n clearTimeout(timeout);\n timeout = null;\n previous = now;\n result = func.apply(context, args);\n } else if (!timeout && options.trailing !== false) {\n timeout = setTimeout(later, remaining);\n }\n\n return result;\n };\n}\n\n/**\n * Throttle decorator\n *\n * class MyClass {\n * throttleable(10)\n * myFn() { ... }\n * }\n */\nexport function throttleable(duration: number, options?: any) {\n return function innerDecorator(target, key, descriptor) {\n return {\n configurable: true,\n enumerable: descriptor.enumerable,\n get: function getter() {\n Object.defineProperty(this, key, {\n configurable: true,\n enumerable: descriptor.enumerable,\n value: throttle(descriptor.value, duration, options)\n });\n\n return this[key];\n }\n };\n };\n}\n","export enum PlacementTypes {\n Top = 'top',\n Bottom = 'bottom',\n Left = 'left',\n Right = 'right',\n Center = 'center'\n}\n","import { PlacementTypes } from './placement-type.enum';\n\nconst caretOffset = 7;\n\nfunction verticalPosition(elDimensions: DOMRect, popoverDimensions: DOMRect, alignment: PlacementTypes): number {\n if (alignment === PlacementTypes.Top) {\n return elDimensions.top - caretOffset;\n }\n\n if (alignment === PlacementTypes.Bottom) {\n return elDimensions.top + elDimensions.height - popoverDimensions.height + caretOffset;\n }\n\n if (alignment === PlacementTypes.Center) {\n return elDimensions.top + elDimensions.height / 2 - popoverDimensions.height / 2;\n }\n\n return undefined;\n}\n\nfunction horizontalPosition(elDimensions: DOMRect, popoverDimensions: DOMRect, alignment: PlacementTypes): number {\n if (alignment === PlacementTypes.Left) {\n return elDimensions.left - caretOffset;\n }\n\n if (alignment === PlacementTypes.Right) {\n return elDimensions.left + elDimensions.width - popoverDimensions.width + caretOffset;\n }\n\n if (alignment === PlacementTypes.Center) {\n return elDimensions.left + elDimensions.width / 2 - popoverDimensions.width / 2;\n }\n\n return undefined;\n}\n\n/**\n * Position helper for the popover directive.\n *\n * @export\n */\nexport class PositionHelper {\n /**\n * Calculate vertical alignment position\n *\n * @memberOf PositionHelper\n */\n static calculateVerticalAlignment(\n elDimensions: DOMRect,\n popoverDimensions: DOMRect,\n alignment: PlacementTypes\n ): number {\n let result = verticalPosition(elDimensions, popoverDimensions, alignment);\n\n if (result + popoverDimensions.height > window.innerHeight) {\n result = window.innerHeight - popoverDimensions.height;\n }\n\n return result;\n }\n\n /**\n * Calculate vertical caret position\n *\n * @memberOf PositionHelper\n */\n static calculateVerticalCaret(\n elDimensions: DOMRect,\n popoverDimensions: DOMRect,\n caretDimensions: DOMRect,\n alignment: PlacementTypes\n ): number {\n let result;\n\n if (alignment === PlacementTypes.Top) {\n result = elDimensions.height / 2 - caretDimensions.height / 2 + caretOffset;\n }\n\n if (alignment === PlacementTypes.Bottom) {\n result = popoverDimensions.height - elDimensions.height / 2 - caretDimensions.height / 2 - caretOffset;\n }\n\n if (alignment === PlacementTypes.Center) {\n result = popoverDimensions.height / 2 - caretDimensions.height / 2;\n }\n\n const popoverPosition = verticalPosition(elDimensions, popoverDimensions, alignment);\n if (popoverPosition + popoverDimensions.height > window.innerHeight) {\n result += popoverPosition + popoverDimensions.height - window.innerHeight;\n }\n\n return result;\n }\n\n /**\n * Calculate horz alignment position\n *\n * @memberOf PositionHelper\n */\n static calculateHorizontalAlignment(\n elDimensions: DOMRect,\n popoverDimensions: DOMRect,\n alignment: PlacementTypes\n ): number {\n let result = horizontalPosition(elDimensions, popoverDimensions, alignment);\n\n if (result + popoverDimensions.width > window.innerWidth) {\n result = window.innerWidth - popoverDimensions.width;\n }\n\n return result;\n }\n\n /**\n * Calculate horz caret position\n *\n * @memberOf PositionHelper\n */\n static calculateHorizontalCaret(\n elDimensions: DOMRect,\n popoverDimensions: DOMRect,\n caretDimensions: DOMRect,\n alignment: PlacementTypes\n ): number {\n let result;\n\n if (alignment === PlacementTypes.Left) {\n result = elDimensions.width / 2 - caretDimensions.width / 2 + caretOffset;\n }\n\n if (alignment === PlacementTypes.Right) {\n result = popoverDimensions.width - elDimensions.width / 2 - caretDimensions.width / 2 - caretOffset;\n }\n\n if (alignment === PlacementTypes.Center) {\n result = popoverDimensions.width / 2 - caretDimensions.width / 2;\n }\n\n const popoverPosition = horizontalPosition(elDimensions, popoverDimensions, alignment);\n if (popoverPosition + popoverDimensions.width > window.innerWidth) {\n result += popoverPosition + popoverDimensions.width - window.innerWidth;\n }\n\n return result;\n }\n\n /**\n * Checks if the element's position should be flipped\n *\n * @memberOf PositionHelper\n */\n static shouldFlip(\n elDimensions: DOMRect,\n popoverDimensions: DOMRect,\n placement: PlacementTypes,\n spacing: number\n ): boolean {\n let flip = false;\n\n if (placement === PlacementTypes.Right) {\n if (elDimensions.left + elDimensions.width + popoverDimensions.width + spacing > window.innerWidth) {\n flip = true;\n }\n }\n\n if (placement === PlacementTypes.Left) {\n if (elDimensions.left - popoverDimensions.width - spacing < 0) {\n flip = true;\n }\n }\n\n if (placement === PlacementTypes.Top) {\n if (elDimensions.top - popoverDimensions.height - spacing < 0) {\n flip = true;\n }\n }\n\n if (placement === PlacementTypes.Bottom) {\n if (elDimensions.top + elDimensions.height + popoverDimensions.height + spacing > window.innerHeight) {\n flip = true;\n }\n }\n\n return flip;\n }\n\n /**\n * Position caret\n *\n * @memberOf PositionHelper\n */\n static positionCaret(placement, elmDim, hostDim, caretDimensions, alignment: PlacementTypes): any {\n let top = 0;\n let left = 0;\n\n if (placement === PlacementTypes.Right) {\n left = -7;\n top = PositionHelper.calculateVerticalCaret(hostDim, elmDim, caretDimensions, alignment);\n } else if (placement === PlacementTypes.Left) {\n left = elmDim.width;\n top = PositionHelper.calculateVerticalCaret(hostDim, elmDim, caretDimensions, alignment);\n } else if (placement === PlacementTypes.Top) {\n top = elmDim.height;\n left = PositionHelper.calculateHorizontalCaret(hostDim, elmDim, caretDimensions, alignment);\n } else if (placement === PlacementTypes.Bottom) {\n top = -7;\n left = PositionHelper.calculateHorizontalCaret(hostDim, elmDim, caretDimensions, alignment);\n }\n\n return { top, left };\n }\n\n /**\n * Position content\n *\n * @memberOf PositionHelper\n */\n static positionContent(placement, elmDim, hostDim, spacing, alignment): any {\n let top = 0;\n let left = 0;\n\n if (placement === PlacementTypes.Right) {\n left = hostDim.left + hostDim.width + spacing;\n top = PositionHelper.calculateVerticalAlignment(hostDim, elmDim, alignment);\n } else if (placement === PlacementTypes.Left) {\n left = hostDim.left - elmDim.width - spacing;\n top = PositionHelper.calculateVerticalAlignment(hostDim, elmDim, alignment);\n } else if (placement === PlacementTypes.Top) {\n top = hostDim.top - elmDim.height - spacing;\n left = PositionHelper.calculateHorizontalAlignment(hostDim, elmDim, alignment);\n } else if (placement === PlacementTypes.Bottom) {\n top = hostDim.top + hostDim.height + spacing;\n left = PositionHelper.calculateHorizontalAlignment(hostDim, elmDim, alignment);\n }\n\n return { top, left };\n }\n\n /**\n * Determine placement based on flip\n *\n * @memberOf PositionHelper\n */\n static determinePlacement(placement: PlacementTypes, elmDim: DOMRect, hostDim: DOMRect, spacing: number): any {\n const shouldFlip = PositionHelper.shouldFlip(hostDim, elmDim, placement, spacing);\n\n if (shouldFlip) {\n if (placement === PlacementTypes.Right) {\n return PlacementTypes.Left;\n } else if (placement === PlacementTypes.Left) {\n return PlacementTypes.Right;\n } else if (placement === PlacementTypes.Top) {\n return PlacementTypes.Bottom;\n } else if (placement === PlacementTypes.Bottom) {\n return PlacementTypes.Top;\n }\n }\n\n return placement;\n }\n}\n","import {\n Input,\n Component,\n ElementRef,\n AfterViewInit,\n ViewEncapsulation,\n HostListener,\n ViewChild,\n HostBinding,\n Renderer2,\n PLATFORM_ID,\n Inject,\n TemplateRef\n} from '@angular/core';\n\nimport { throttleable } from '../../utils/throttle';\nimport { PositionHelper, PlacementTypes } from './position';\n\nimport { StyleTypes } from './style.type';\nimport { isPlatformBrowser } from '@angular/common';\n\n@Component({\n selector: 'ngx-tooltip-content',\n template: `\n <div>\n <span #caretElm [hidden]=\"!showCaret\" class=\"tooltip-caret position-{{ this.placement }}\"> </span>\n <div class=\"tooltip-content\">\n <span *ngIf=\"!title\">\n <ng-template [ngTemplateOutlet]=\"template\" [ngTemplateOutletContext]=\"{ model: context }\"> </ng-template>\n </span>\n <span *ngIf=\"title\" [innerHTML]=\"title\"> </span>\n </div>\n </div>\n `,\n encapsulation: ViewEncapsulation.None,\n styleUrls: ['./tooltip.component.scss']\n})\nexport class TooltipContentComponent implements AfterViewInit {\n @Input() host: ElementRef;\n @Input() showCaret: boolean;\n @Input() type: StyleTypes;\n @Input() placement: PlacementTypes;\n @Input() alignment: PlacementTypes;\n @Input() spacing: number;\n @Input() cssClass: string;\n @Input() title: string;\n @Input() template: TemplateRef<any>;\n @Input() context: any;\n\n @ViewChild('caretElm') caretElm: ElementRef;\n\n @HostBinding('class')\n get cssClasses(): string {\n let clz = 'ngx-charts-tooltip-content';\n clz += ` position-${this.placement}`;\n clz += ` type-${this.type}`;\n clz += ` ${this.cssClass}`;\n return clz;\n }\n\n constructor(public element: ElementRef, private renderer: Renderer2, @Inject(PLATFORM_ID) private platformId: any) {}\n\n ngAfterViewInit(): void {\n setTimeout(this.position.bind(this));\n }\n\n position(): void {\n if (!isPlatformBrowser(this.platformId)) {\n return;\n }\n\n const nativeElm = this.element.nativeElement;\n const hostDim = this.host.nativeElement.getBoundingClientRect();\n\n // if no dims were found, never show\n if (!hostDim.height && !hostDim.width) return;\n\n const elmDim = nativeElm.getBoundingClientRect();\n this.checkFlip(hostDim, elmDim);\n this.positionContent(nativeElm, hostDim, elmDim);\n\n if (this.showCaret) {\n this.positionCaret(hostDim, elmDim);\n }\n\n // animate its entry\n setTimeout(() => this.renderer.addClass(nativeElm, 'animate'), 1);\n }\n\n positionContent(nativeElm: HTMLElement, hostDim: DOMRect, elmDim: DOMRect): void {\n const { top, left } = PositionHelper.positionContent(this.placement, elmDim, hostDim, this.spacing, this.alignment);\n\n this.renderer.setStyle(nativeElm, 'top', `${top}px`);\n this.renderer.setStyle(nativeElm, 'left', `${left}px`);\n }\n\n positionCaret(hostDim: DOMRect, elmDim: DOMRect): void {\n const caretElm = this.caretElm.nativeElement;\n const caretDimensions = caretElm.getBoundingClientRect();\n const { top, left } = PositionHelper.positionCaret(\n this.placement,\n elmDim,\n hostDim,\n caretDimensions,\n this.alignment\n );\n\n this.renderer.setStyle(caretElm, 'top', `${top}px`);\n this.renderer.setStyle(caretElm, 'left', `${left}px`);\n }\n\n checkFlip(hostDim: DOMRect, elmDim: DOMRect): void {\n this.placement = PositionHelper.determinePlacement(this.placement, elmDim, hostDim, this.spacing);\n }\n\n @HostListener('window:resize')\n @throttleable(100)\n onWindowResize(): void {\n this.position();\n }\n}\n","import { ComponentRef, Type } from '@angular/core';\nimport { InjectionService } from './injection.service';\n\nexport interface PartialBindings {\n inputs?: object;\n outputs?: object;\n}\n\nexport abstract class InjectionRegisteryService<T = any> {\n protected abstract type: Type<T>;\n\n protected defaults: PartialBindings = {};\n protected components: Map<any, Array<ComponentRef<T>>> = new Map();\n\n constructor(public injectionService: InjectionService) {}\n\n getByType(type: Type<T> = this.type) {\n return this.components.get(type);\n }\n\n create(bindings: object): ComponentRef<T> {\n return this.createByType(this.type, bindings);\n }\n\n createByType(type: Type<T>, bindings: PartialBindings): ComponentRef<T> {\n bindings = this.assignDefaults(bindings);\n\n const component = this.injectComponent(type, bindings);\n this.register(type, component);\n\n return component;\n }\n\n destroy(instance: ComponentRef<T>): void {\n const compsByType = this.components.get(instance.componentType);\n\n if (compsByType && compsByType.length) {\n const idx = compsByType.indexOf(instance);\n\n if (idx > -1) {\n const component = compsByType[idx];\n component.destroy();\n compsByType.splice(idx, 1);\n }\n }\n }\n\n destroyAll(): void {\n this.destroyByType(this.type);\n }\n\n destroyByType(type: Type<T>): void {\n const comps = this.components.get(type);\n\n if (comps && comps.length) {\n let i = comps.length - 1;\n while (i >= 0) {\n this.destroy(comps[i--]);\n }\n }\n }\n\n protected injectComponent(type: Type<T>, bindings: PartialBindings): ComponentRef<T> {\n return this.injectionService.appendComponent(type, bindings);\n }\n\n protected assignDefaults(bindings: PartialBindings): PartialBindings {\n const inputs = { ...this.defaults.inputs };\n const outputs = { ...this.defaults.outputs };\n\n if (!bindings.inputs && !bindings.outputs) {\n bindings = { inputs: bindings };\n }\n\n if (inputs) {\n bindings.inputs = { ...inputs, ...bindings.inputs };\n }\n\n if (outputs) {\n bindings.outputs = { ...outputs, ...bindings.outputs };\n }\n\n return bindings;\n }\n\n protected register(type: Type<T>, component: ComponentRef<T>): void {\n if (!this.components.has(type)) {\n this.components.set(type, []);\n }\n\n const types = this.components.get(type);\n types.push(component);\n }\n}\n","import { Injectable } from '@angular/core';\nimport { InjectionService } from './injection.service';\nimport { TooltipContentComponent } from './tooltip.component';\nimport { InjectionRegisteryService } from './injection-registery.service';\n@Injectable()\nexport class TooltipService extends InjectionRegisteryService<TooltipContentComponent> {\n type: any = TooltipContentComponent;\n\n constructor(injectionService: InjectionService) {\n super(injectionService);\n }\n}\n","import { ScaleType } from './scale-type.enum';\n\nexport interface LegendOptions {\n colors: any;\n domain: any[];\n position: LegendPosition;\n title: string;\n scaleType: ScaleType;\n}\n\nexport enum LegendPosition {\n Right = 'right',\n Below = 'below'\n}\n\nexport enum LegendType {\n ScaleLegend = 'scaleLegend',\n Legend = 'legend'\n}\n","export enum ScaleType {\n Time = 'time',\n Linear = 'linear',\n Ordinal = 'ordinal',\n Quantile = 'quantile'\n}\n","import {\n Component,\n Input,\n OnChanges,\n ChangeDetectionStrategy,\n EventEmitter,\n Output,\n SimpleChanges\n} from '@angular/core';\nimport { trigger, style, animate, transition } from '@angular/animations';\nimport { TooltipService } from '../tooltip/tooltip.service';\nimport { LegendOptions, LegendType, LegendPosition } from '../types/legend.model';\nimport { ScaleType } from '../types/scale-type.enum';\n\n@Component({\n providers: [TooltipService],\n selector: 'ngx-charts-chart',\n template: `\n <div class=\"ngx-charts-outer\" [style.width.px]=\"view[0]\" [@animationState]=\"'active'\" [@.disabled]=\"!animations\">\n <svg class=\"ngx-charts\" [attr.width]=\"chartWidth\" [attr.height]=\"view[1]\">\n <ng-content></ng-content>\n </svg>\n <ngx-charts-scale-legend\n *ngIf=\"showLegend && legendType === LegendType.ScaleLegend\"\n class=\"chart-legend\"\n [horizontal]=\"legendOptions && legendOptions.position === LegendPosition.Below\"\n [valueRange]=\"legendOptions.domain\"\n [colors]=\"legendOptions.colors\"\n [height]=\"view[1]\"\n [width]=\"legendWidth\"\n >\n </ngx-charts-scale-legend>\n <ngx-charts-legend\n *ngIf=\"showLegend && legendType === LegendType.Legend\"\n class=\"chart-legend\"\n [horizontal]=\"legendOptions && legendOptions.position === LegendPosition.Below\"\n [data]=\"legendOptions.domain\"\n [title]=\"legendOptions.title\"\n [colors]=\"legendOptions.colors\"\n [height]=\"view[1]\"\n [width]=\"legendWidth\"\n [activeEntries]=\"activeEntries\"\n (labelClick)=\"legendLabelClick.emit($event)\"\n (labelActivate)=\"legendLabelActivate.emit($event)\"\n (labelDeactivate)=\"legendLabelDeactivate.emit($event)\"\n >\n </ngx-charts-legend>\n </div>\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n animations: [\n trigger('animationState', [\n transition(':enter', [style({ opacity: 0 }), animate('500ms 100ms', style({ opacity: 1 }))])\n ])\n ]\n})\nexport class ChartComponent implements OnChanges {\n @Input() view: [number, number];\n @Input() showLegend: boolean = false;\n @Input() legendOptions: LegendOptions;\n @Input() legendType: LegendType;\n @Input() activeEntries: any[];\n @Input() animations: boolean = true;\n\n @Output() legendLabelClick = new EventEmitter<string>();\n @Output() legendLabelActivate = new EventEmitter<{ name: string }>();\n @Output() legendLabelDeactivate = new EventEmitter<{ name: string }>();\n\n chartWidth: number;\n title: string;\n legendWidth: number;\n\n readonly LegendPosition = LegendPosition;\n readonly LegendType = LegendType;\n\n ngOnChanges(changes: SimpleChanges): void {\n this.update();\n }\n\n update(): void {\n let legendColumns = 0;\n if (this.showLegend) {\n this.legendType = this.getLegendType();\n\n if (!this.legendOptions || this.legendOptions.position === LegendPosition.Right) {\n if (this.legendType === LegendType.ScaleLegend) {\n legendColumns = 1;\n } else {\n legendColumns = 2;\n }\n }\n }\n\n const chartColumns = 12 - legendColumns;\n\n this.chartWidth = Math.floor((this.view[0] * chartColumns) / 12.0);\n this.legendWidth =\n !this.legendOptions || this.legendOptions.position === LegendPosition.Right\n ? Math.floor((this.view[0] * legendColumns) / 12.0)\n : this.chartWidth;\n }\n\n getLegendType(): LegendType {\n return this.legendOptions.scaleType === ScaleType.Linear ? LegendType.ScaleLegend : LegendType.Legend;\n }\n}\n","import { Output, EventEmitter, NgZone, Directive, ElementRef } from '@angular/core';\n\n/**\n * Visibility Observer\n */\n@Directive({\n selector: 'visibility-observer'\n})\nexport class VisibilityObserver {\n @Output() visible: EventEmitter<any> = new EventEmitter();\n\n timeout: any;\n isVisible: boolean = false;\n\n constructor(private element: ElementRef, private zone: NgZone) {\n this.runCheck();\n }\n\n destroy(): void {\n clearTimeout(this.timeout);\n }\n\n onVisibilityChange(): void {\n // trigger zone recalc for columns\n this.zone.run(() => {\n this.isVisible = true;\n this.visible.emit(true);\n });\n }\n\n runCheck(): void {\n const check = () => {\n if (!this.element) {\n return;\n }\n\n // https://davidwalsh.name/offsetheight-visibility\n const { offsetHeight, offsetWidth } = this.element.nativeElement;\n\n if (offsetHeight && offsetWidth) {\n clearTimeout(this.timeout);\n this.onVisibilityChange();\n } else {\n clearTimeout(this.timeout);\n this.zone.runOutsideAngular(() => {\n this.timeout = setTimeout(() => check(), 100);\n });\n }\n };\n\n this.zone.runOutsideAngular(() => {\n this.timeout = setTimeout(() => check());\n });\n }\n}\n","export function isDate(value): boolean {\n return toString.call(value) === '[object Date]';\n}\n\nexport function isNumber(value): boolean {\n return typeof value === 'number';\n}\n","import { isPlatformBrowser, isPlatformServer } from '@angular/common';\nimport {\n ElementRef,\n NgZone,\n ChangeDetectorRef,\n Component,\n Input,\n Output,\n EventEmitter,\n AfterViewInit,\n OnDestroy,\n OnChanges,\n SimpleChanges,\n PLATFORM_ID,\n Inject\n} from '@angular/core';\n\nimport { fromEvent as observableFromEvent } from 'rxjs';\nimport { debounceTime } from 'rxjs/operators';\nimport { VisibilityObserver } from '../utils/visibility-observer';\nimport { isDate } from '../utils/types';\nimport { Color } from '../utils/color-sets';\nimport { ScaleType } from './types/scale-type.enum';\nimport { ViewDimensions } from './types/view-dimension.interface';\n\n@Component({\n selector: 'base-chart',\n template: ` <div></div> `\n})\nexport class BaseChartComponent implements OnChanges, AfterViewInit, OnDestroy {\n @Input() results: any;\n @Input() view: [number, number];\n @Input() scheme: string | Color = 'cool';\n @Input() schemeType: ScaleType = ScaleType.Ordinal;\n @Input() customColors: any;\n @Input() animations: boolean = true;\n\n @Output() select = new EventEmitter();\n\n width: number;\n height: number;\n resizeSubscription: any;\n visibilityObserver: VisibilityObserver;\n\n constructor(\n protected chartElement: ElementRef,\n protected zone: NgZone,\n protected cd: ChangeDetectorRef,\n @Inject(PLATFORM_ID) public platformId: any\n ) {}\n\n ngOnInit() {\n if (isPlatformServer(this.platformId)) {\n this.animations = false;\n }\n }\n\n ngAfterViewInit(): void {\n this.bindWindowResizeEvent();\n\n // listen for visibility of the element for hidden by default scenario\n this.visibilityObserver = new VisibilityObserver(this.chartElement, this.zone);\n this.visibilityObserver.visible.subscribe(this.update.bind(this));\n }\n\n ngOnDestroy(): void {\n this.unbindEvents();\n if (this.visibilityObserver) {\n this.visibilityObserver.visible.unsubscribe();\n this.visibilityObserver.destroy();\n }\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n this.update();\n }\n\n update(): void {\n if (this.results) {\n this.results = this.cloneData(this.results);\n } else {\n this.results = [];\n }\n\n if (this.view) {\n this.width = this.view[0];\n this.height = this.view[1];\n } else {\n const dims = this.getContainerDims();\n if (dims) {\n this.width = dims.width;\n this.height = dims.height;\n }\n }\n\n // default values if width or height are 0 or undefined\n if (!this.width) {\n this.width = 600;\n }\n\n if (!this.height) {\n this.height = 400;\n }\n\n this.width = Math.floor(this.width);\n this.height = Math.floor(this.height);\n\n if (this.cd) {\n this.cd.markForCheck();\n }\n }\n\n getContainerDims(): ViewDimensions {\n let width;\n let height;\n const hostElem = this.chartElement.nativeElement;\n\n if (isPlatformBrowser(this.platformId) && hostElem.parentNode !== null) {\n // Get the container dimensions\n const dims = hostElem.parentNode.getBoundingClientRect();\n width = dims.width;\n height = dims.height;\n }\n\n if (width && height) {\n return { width, height };\n }\n\n return null;\n }\n\n /**\n * Converts all date objects that appear as name\n * into formatted date strings\n */\n formatDates(): void {\n for (let i = 0; i < this.results.length; i++) {\n const g = this.results[i];\n g.label = g.name;\n if (isDate(g.label)) {\n g.label = g.label.toLocaleDateString();\n }\n\n if (g.series) {\n for (let j = 0; j < g.series.length; j++) {\n const d = g.series[j];\n d.label = d.name;\n if (isDate(d.label)) {\n d.label = d.label.toLocaleDateString();\n }\n }\n }\n }\n }\n\n protected unbindEvents(): void {\n if (this.resizeSubscription) {\n this.resizeSubscription.unsubscribe();\n }\n }\n\n private bindWindowResizeEvent(): void {\n if (!isPlatformBrowser(this.platformId)) {\n return;\n }\n\n const source = observableFromEvent(window, 'resize');\n const subscription = source.pipe(debounceTime(200)).subscribe(e => {\n this.update();\n if (this.cd) {\n this.cd.markForCheck();\n }\n });\n this.resizeSubscription = subscription;\n }\n\n /**\n * Clones the data into a new object\n *\n * @memberOf BaseChart\n */\n private cloneData(data): any {\n const results = [];\n\n for (const item of data) {\n const copy = {\n name: item['name']\n };\n\n if (item['value'] !== undefined) {\n copy['value'] = item['value'];\n }\n\n if (item['series'] !== undefined) {\n copy['series'] = [];\n for (const seriesItem of item['series']) {\n const seriesItemCopy = Object.assign({}, seriesItem);\n copy['series'].push(seriesItemCopy);\n }\n }\n\n if (item['extra'] !== undefined) {\n copy['extra'] = JSON.parse(JSON.stringify(item['extra']));\n }\n\n results.push(copy);\n }\n\n return results;\n }\n}\n","export enum Orientation {\n Top = 'top',\n Bottom = 'bottom',\n Left = 'left',\n Right = 'right'\n}\n","import { Component, Input, ElementRef, OnChanges, SimpleChanges, ChangeDetectionStrategy } from '@angular/core';\nimport { Orientation } from '../types/orientation.enum';\n\n@Component({\n selector: 'g[ngx-charts-axis-label]',\n template: `\n <svg:text\n [attr.stroke-width]=\"strokeWidth\"\n [attr.x]=\"x\"\n [attr.y]=\"y\"\n [attr.text-anchor]=\"textAnchor\"\n [attr.transform]=\"transform\"\n >\n {{ label }}\n </svg:text>\n `,\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class AxisLabelComponent implements OnChanges {\n @Input() orient: Orientation;\n @Input() label: string;\n @Input() offset: number;\n @Input() width: number;\n @Input() height: number;\n\n x: number;\n y: number;\n transform: string;\n strokeWidth: string;\n textAnchor: string;\n element: ElementRef;\n textHeight = 25;\n margin = 5;\n\n constructor(element: ElementRef) {\n this.element = element.nativeElement;\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n this.update();\n }\n\n update(): void {\n this.strokeWidth = '0.01';\n this.textAnchor = 'middle';\n this.transform = '';\n\n switch (this.orient) {\n case Orientation.Top:\n this.y = this.offset;\n this.x = this.width / 2;\n break;\n case Orientation.Bottom:\n this.y = this.offset;\n this.x = this.width / 2;\n break;\n case Orientation.Left:\n this.y = -(this.offset + this.textHeight + this.margin);\n this.x = -this.height / 2;\n this.transform = 'rotate(270)';\n break;\n case Orientation.Right:\n this.y = this.offset + this.margin;\n this.x = -this.height / 2;\n this.transform = 'rotate(270)';\n break;\n default:\n }\n }\n}\n","export function trimLabel(s: any, max: number = 16): string {\n if (typeof s !== 'string') {\n if (typeof s === 'number') {\n return s + '';\n } else {\n return '';\n }\n }\n\n s = s.trim();\n if (s.length <= max) {\n return s;\n } else {\n return `${s.slice(0, max)}...`;\n }\n}\n","export function reduceTicks(ticks: any[], maxTicks: number): any[] {\n if (ticks.length > maxTicks) {\n const reduced = [];\n const modulus = Math.floor(ticks.length / maxTicks);\n for (let i = 0; i < ticks.length; i++) {\n if (i % modulus === 0) {\n reduced.push(ticks[i]);\n }\n }\n ticks = reduced;\n }\n\n return ticks;\n}\n","export enum TextAnchor {\n Start = 'start',\n Middle = 'middle',\n End = 'end'\n}\n","import { isPlatformBrowser } from '@angular/common';\nimport {\n Component,\n Input,\n Output,\n EventEmitter,\n OnChanges,\n ElementRef,\n ViewChild,\n SimpleChanges,\n AfterViewInit,\n ChangeDetectionStrategy,\n Inject,\n PLATFORM_ID\n} from '@angular/core';\nimport { trimLabel } from '../trim-label.helper';\nimport { reduceTicks } from './ticks.helper';\nimport { Orientation } from '../types/orientation.enum';\nimport { TextAnchor } from '../types/text-anchor.enum';\n\n@Component({\n selector: 'g[ngx-charts-x-axis-ticks]',\n template: `\n <svg:g #ticksel>\n <svg:g *ngFor=\"let tick of ticks\" class=\"tick\" [attr.transform]=\"tickTransform(tick)\">\n <title>{{ tickFormat(tick) }}</title>\n <svg:text\n stroke-width=\"0.01\"\n [attr.text-anchor]=\"textAnchor\"\n [attr.transform]=\"textTransform\"\n [style.font-size]=\"'12px'\"\n >\n {{ tickTrim(tickFormat(tick)) }}\n </svg:text>\n </svg:g>\n </svg:g>\n\n <svg:g *ngFor=\"let tick of ticks\" [attr.transform]=\"tickTransform(tick)\">\n <svg:g *ngIf=\"showGridLines\" [attr.transform]=\"gridLineTransform()\">\n <svg:line class=\"gridline-path gridline-path-vertical\" [attr.y1]=\"-gridLineHeight\" y2=\"0\" />\n </svg:g>\n </svg:g>\n `,\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class XAxisTicksComponent implements OnChanges, AfterViewInit {\n @Input() scale;\n @Input() orient: Orientation;\n @Input() tickArguments: number[] = [5];\n @Input() tickValues: string[] | number[];\n @Input() tickStroke: string = '#ccc';\n @Input() trimTicks: boolean = true;\n @Input() maxTickLength: number = 16;\n @Input() tickFormatting;\n @Input() showGridLines = false;\n @Input() gridLineHeight: number;\n @Input() width: number;\n @Input() rotateTicks: boolean = true;\n\n @Output() dimensionsChanged = new EventEmitter();\n\n verticalSpacing: number = 20;\n rotateLabels: boolean = false;\n innerTickSize: number = 6;\n outerTickSize: number = 6;\n tickPadding: number = 3;\n textAnchor: TextAnchor = TextAnchor.Middle;\n maxTicksLength: number = 0;\n maxAllowedLength: number = 16;\n adjustedScale: any;\n textTransform: string;\n ticks: any[];\n tickFormat: (o: any) => any;\n height: number = 0;\n approxHeight: number = 10;\n\n @ViewChild('ticksel') ticksElement: ElementRef;\n\n constructor(@Inject(PLATFORM_ID) private platformId: any) {}\n\n ngOnChanges(changes: SimpleChanges): void {\n this.update();\n }\n\n ngAfterViewInit(): void {\n setTimeout(() => this.updateDims());\n }\n\n updateDims(): void {\n if (!isPlatformBrowser(this.platformId)) {\n // for SSR, use approximate value instead of measured\n this.dimensionsChanged.emit({ height: this.approxHeight });\n return;\n }\n\n const height = parseInt(this.ticksElement.nativeElement.getBoundingClientRect().height, 10);\n if (height !== this.height) {\n this.height = height;\n this.dimensionsChanged.emit({ height: this.height });\n setTimeout(() => this.updateDims());\n }\n }\n\n update(): void {\n const scale = this.scale;\n this.ticks = this.getTicks();\n\n if (this.tickFormatting) {\n this.tickFormat = this.tickFormatting;\n } else if (scale.tickFormat) {\n this.tickFormat = scale.tickFormat.apply(scale, this.tickArguments);\n } else {\n this.tickFormat = function (d) {\n if (d.constructor.name === 'Date') {\n return d.toLocaleDateString();\n }\n return d.toLocaleString();\n };\n }\n\n const angle = this.rotateTicks ? this.getRotationAngle(this.ticks) : null;\n\n this.adjustedScale = this.scale.bandwidth\n ? function (d) {\n return this.scale(d) + this.scale.bandwidth() * 0.5;\n }\n : this.scale;\n\n this.textTransform = '';\n if (angle && angle !== 0) {\n this.textTransform = `rotate(${angle})`;\n this.textAnchor = TextAnchor.End;\n this.verticalSpacing = 10;\n } else {\n this.textAnchor = TextAnchor.Middle;\n }\n\n setTimeout(() => this.updateDims());\n }\n\n getRotationAngle(ticks: any[]): number {\n let angle = 0;\n this.maxTicksLength = 0;\n for (let i = 0; i < ticks.length; i++) {\n const tick = this.tickFormat(ticks[i]).toString();\n let tickLength = tick.length;\n if (this.trimTicks) {\n tickLength = this.tickTrim(tick).length;\n }\n\n if (tickLength > this.maxTicksLength) {\n this.maxTicksLength = tickLength;\n }\n }\n\n const len = Math.min(this.maxTicksLength, this.maxAllowedLength);\n const charWidth = 7; // need to measure this\n const wordWidth = len * charWidth;\n\n let baseWidth = wordWidth;\n const maxBaseWidth = Math.floor(this.width / ticks.length);\n\n // calculate optimal angle\n while (baseWidth > maxBaseWidth && angle > -90) {\n angle -= 30;\n baseWidth = Math.cos(angle * (Math.PI / 180)) * wordWidth;\n }\n\n this.approxHeight = Math.max(Math.abs(Math.sin(angle * (Math.PI / 180)) * wordWidth), 10);\n\n return angle;\n }\n\n getTicks(): any[] {\n let ticks;\n const maxTicks = this.getMaxTicks(20);\n const maxScaleTicks = this.getMaxTicks(100);\n\n if (this.tickValues) {\n ticks = this.tickValues;\n } else if (this.scale.ticks) {\n ticks = this.scale.ticks.apply(this.scale, [maxScaleTicks]);\n } else {\n ticks = this.scale.domain();\n ticks = reduceTicks(ticks, maxTicks);\n }\n\n return ticks;\n }\n\n getMaxTicks(tickWidth: number): number {\n return Math.floor(this.width / tickWidth);\n }\n\n tickTransform(tick: number): string {\n return 'translate(' + this.adjustedScale(tick) + ',' + this.verticalSpacing + ')';\n }\n\n gridLineTransform(): string {\n return `translate(0,${-this.verticalSpacing - 5})`;\n }\n\n tickTrim(label: string): string {\n return this.trimTicks ? trimLabel(label, this.maxTickLength) : label;\n }\n}\n","import {\n Component,\n Input,\n SimpleChanges,\n Output,\n EventEmitter,\n OnChanges,\n ViewChild,\n ChangeDetectionStrategy\n} from '@angular/core';\n\nimport { XAxisTicksComponent } from './x-axis-ticks.component';\nimport { Orientation } from '../types/orientation.enum';\nimport { ViewDimensions } from '../types/view-dimension.interface';\n\n@Component({\n selector: 'g[ngx-charts-x-axis]',\n template: `\n <svg:g [attr.class]=\"xAxisClassName\" [attr.transform]=\"transform\">\n <svg:g\n ngx-charts-x-axis-ticks\n *ngIf=\"xScale\"\n [trimTicks]=\"trimTicks\"\n [rotateTicks]=\"rotateTicks\"\n [maxTickLength]=\"maxTickLength\"\n [tickFormatting]=\"tickFormatting\"\n [tickArguments]=\"tickArguments\"\n [tickStroke]=\"tickStroke\"\n [scale]=\"xScale\"\n [orient]=\"xOrient\"\n [showGridLines]=\"showGridLines\"\n [gridLineHeight]=\"dims.height\"\n [width]=\"dims.width\"\n [tickValues]=\"ticks\"\n (dimensionsChanged)=\"emitTicksHeight($event)\"\n />\n <svg:g\n ngx-charts-axis-label\n *ngIf=\"showLabel\"\n [label]=\"labelText\"\n [offset]=\"labelOffset\"\n [orient]=\"orientation.Bottom\"\n [height]=\"dims.height\"\n [width]=\"dims.width\"\n ></svg:g>\n </svg:g>\n `,\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class XAxisComponent implements OnChanges {\n @Input() xScale;\n @Input() dims: ViewDimensions;\n @Input() trimTicks: boolean;\n @Input() rotateTicks: boolean = true;\n @Input() maxTickLength: number;\n @Input() tickFormatting;\n @Input() showGridLines = false;\n @Input() showLabel: boolean;\n @Input() labelText: string;\n @Input() ticks: any[];\n @Input() xAxisTickCount: number;\n @Input() xOrient: Orientation = Orientation.Bottom;\n @Input() xAxisOffset: number = 0;\n\n @Output() dimensionsChanged = new EventEmitter();\n\n xAxisClassName: string = 'x axis';\n\n tickArguments: number[];\n transform: string;\n labelOffset: number = 0;\n fill: string = 'none';\n stroke: string = 'stroke';\n tickStroke: string = '#ccc';\n strokeWidth: string = 'none';\n padding: number = 5;\n\n readonly orientation = Orientation;\n\n @ViewChild(XAxisTicksComponent) ticksComponent: XAxisTicksComponent;\n\n ngOnChanges(changes: SimpleChanges): void {\n this.update();\n }\n\n update(): void {\n this.transform = `translate(0,${this.xAxisOffset + this.padding + this.dims.height})`;\n\n if (typeof this.xAxisTickCount !== 'undefined') {\n this.tickArguments = [this.xAxisTickCount];\n }\n }\n\n emitTicksHeight({ height }): void {\n const newLabelOffset = height + 25 + 5;\n if (newLabelOffset !== this.labelOffset) {\n this.labelOffset = newLabelOffset;\n setTimeout(() => {\n this.dimensionsChanged.emit({ height });\n }, 0);\n }\n }\n}\n","/**\n * Generates a rounded rectanglar path\n *\n * @export\n * @param x, y, w, h, r, tl, tr, bl, br\n */\nexport function roundedRect(\n x: number,\n y: number,\n w: number,\n h: number,\n r: number,\n [tl, tr, bl, br]: boolean[]\n): string {\n let retval = '';\n\n w = Math.floor(w);\n h = Math.floor(h);\n\n w = w === 0 ? 1 : w;\n h = h === 0 ? 1 : h;\n\n retval = `M${[x + r, y]}`;\n retval += `h${w - 2 * r}`;\n\n if (tr) {\n retval += `a${[r, r]} 0 0 1 ${[r, r]}`;\n } else {\n retval += `h${r}v${r}`;\n }\n\n retval += `v${h - 2 * r}`;\n\n if (br) {\n retval += `a${[r, r]} 0 0 1 ${[-r, r]}`;\n } else {\n retval += `v${r}h${-r}`;\n }\n\n retval += `h${2 * r - w}`;\n\n if (bl) {\n retval += `a${[r, r]} 0 0 1 ${[-r, -r]}`;\n } else {\n retval += `h${-r}v${-r}`;\n }\n\n retval += `v${2 * r - h}`;\n\n if (tl) {\n retval += `a${[r, r]} 0 0 1 ${[r, -r]}`;\n } else {\n retval += `v${-r}h${r}`;\n }\n\n retval += `z`;\n\n return retval;\n}\n","import {\n Component,\n Input,\n Output,\n OnChanges,\n ElementRef,\n ViewChild,\n EventEmitter,\n AfterViewInit,\n ChangeDetectionStrategy,\n SimpleChanges,\n PLATFORM_ID,\n Inject\n} from '@angular/core';\nimport { trimLabel } from '../trim-label.helper';\nimport { reduceTicks } from './ticks.helper';\nimport { roundedRect } from '../../common/shape.helper';\nimport { isPlatformBrowser } from '@angular/common';\nimport { Orientation } from '../types/orientation.enum';\nimport { TextAnchor } from '../types/text-anchor.enum';\n\n@Component({\n selector: 'g[ngx-charts-y-axis-ticks]',\n template: `\n <svg:g #ticksel>\n <svg:g *ngFor=\"let tick of ticks\" class=\"tick\" [attr.transform]=\"transform(tick)\">\n <title>{{ tickFormat(tick) }}</title>\n <svg:text\n stroke-width=\"0.01\"\n [attr.dy]=\"dy\"\n [attr.x]=\"x1\"\n [attr.y]=\"y1\"\n [attr.text-anchor]=\"textAnchor\"\n [style.font-size]=\"'12px'\"\n >\n {{ tickTrim(tickFormat(tick)) }}\n </svg:text>\n </svg:g>\n </svg:g>\n\n <svg:path\n *ngIf=\"referenceLineLength > 1 && refMax && refMin && showRefLines\"\n class=\"reference-area\"\n [attr.d]=\"referenceAreaPath\"\n [attr.transform]=\"gridLineTransform()\"\n />\n <svg:g *ngFor=\"let tick of ticks\" [attr.transform]=\"transform(tick)\">\n <svg:g *ngIf=\"showGridLines\" [attr.transform]=\"gridLineTransform()\">\n <svg:line\n *ngIf=\"orient === Orientation.Left\"\n class=\"gridline-path gridline-path-horizontal\"\n x1=\"0\"\n [attr.x2]=\"gridLineWidth\"\n />\n <svg:line\n *ngIf=\"orient === Orientation.Right\"\n class=\"gridline-path gridline-path-horizontal\"\n x1=\"0\"\n [attr.x2]=\"-gridLineWidth\"\n />\n </svg:g>\n </svg:g>\n\n <svg:g *ngFor=\"let refLine of referenceLines\">\n <svg:g *ngIf=\"showRefLines\" [attr.transform]=\"transform(refLine.value)\">\n <svg:line\n class=\"refline-path gridline-path-horizontal\"\n x1=\"0\"\n [attr.x2]=\"gridLineWidth\"\n [attr.transform]=\"gridLineTransform()\"\n />\n <svg:g *ngIf=\"showRefLabels\">\n <title>{{ tickTrim(tickFormat(refLine.value)) }}</title>\n <svg:text\n class=\"refline-label\"\n [attr.dy]=\"dy\"\n [attr.y]=\"-6\"\n [attr.x]=\"gridLineWidth\"\n [attr.text-anchor]=\"textAnchor\"\n >\n {{ refLine.name }}\n </svg:text>\n </svg:g>\n </svg:g>\n </svg:g>\n `,\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class YAxisTicksComponent implements OnChanges, AfterViewInit {\n @Input() scale;\n @Input() orient: Orientation;\n @Input() tickArguments: number[] = [5];\n @Input() tickValues: string[] | number[];\n @Input() tickStroke = '#ccc';\n @Input() trimTicks: boolean = true;\n @Input() maxTickLength: number = 16;\n @Input() tickFormatting;\n @Input() showGridLines: boolean = false;\n @Input() gridLineWidth: number;\n @Input() height: number;\n @Input() referenceLines;\n @Input() showRefLabels: boolean = false;\n @Input() showRefLines: boolean = false;\n\n @Output() dimensionsChanged = new EventEmitter();\n\n innerTickSize: number = 6;\n tickPadding: number = 3;\n tickSpacing: number;\n verticalSpacing: number = 20;\n textAnchor: TextAnchor = TextAnchor.Middle;\n dy: string;\n x1: number;\n x2: number;\n y1: number;\n y2: number;\n adjustedScale: any;\n transform: (o: any) => string;\n tickFormat: (o: any) => string;\n ticks: any[];\n width: number = 0;\n outerTickSize: number = 6;\n rotateLabels: boolean = false;\n refMax: number;\n refMin: number;\n referenceLineLength: number = 0;\n referenceAreaPath: string;\n\n readonly Orientation = Orientation;\n\n @ViewChild('ticksel') ticksElement: ElementRef;\n\n constructor(@Inject(PLATFORM_ID) private platformId: any) {}\n\n ngOnChanges(changes: SimpleChanges): void {\n this.update();\n }\n\n ngAfterViewInit(): void {\n setTimeout(() => this.updateDims());\n }\n\n updateDims(): void {\n if (!isPlatformBrowser(this.platformId)) {\n // for SSR, use approximate value instead of measured\n this.width = this.getApproximateAxisWidth();\n this.dimensionsChanged.emit({ width: this.width });\n return;\n }\n\n const width = parseInt(this.ticksElement.nativeElement.getBoundingClientRect().width, 10);\n if (width !== this.width) {\n this.width = width;\n this.dimensionsChanged.emit({ width });\n setTimeout(() => this.updateDims());\n }\n }\n\n update(): void {\n let scale;\n const sign = this.orient === Orientation.Top || this.orient === Orientation.Right ? -1 : 1;\n this.tickSpacing = Math.max(this.innerTickSize, 0) + this.tickPadding;\n\n scale = this.scale;\n this.ticks = this.getTicks();\n\n if (this.tickFormatting) {\n this.tickFormat = this.tickFormatting;\n } else if (scale.tickFormat) {\n this.tickFormat = scale.tickFormat.apply(scale, this.tickArguments);\n } else {\n this.tickFormat = function (d) {\n if (d.constructor.name === 'Date') {\n return d.toLocaleDateString();\n }\n return d.toLocaleString();\n };\n }\n\n this.adjustedScale = scale.bandwidth\n ? function (d) {\n return scale(d) + scale.bandwidth() * 0.5;\n }\n : scale;\n\n if (this.showRefLines && this.referenceLines) {\n this.setReferencelines();\n }\n\n switch (this.orient) {\n case Orientation.Top:\n this.transform = function (tick) {\n return 'translate(' + this.adjustedScale(tick) + ',0)';\n };\n this.textAnchor = TextAnchor.Middle;\n this.y2 = this.innerTickSize * sign;\n this.y1 = this.tickSpacing * sign;\n this.dy = sign < 0 ? '0em' : '.71em';\n break;\n case Orientation.Bottom:\n this.transform = function (tick) {\n return 'translate(' + this.adjustedScale(tick) + ',0)';\n };\n this.textAnchor = TextAnchor.Middle;\n this.y2 = this.innerTickSize * sign;\n this.y1 = this.tickSpacing * sign;\n this.dy = sign < 0 ? '0em' : '.71em';\n break;\n case Orientation.Left:\n this.transform = function (tick) {\n return 'translate(0,' + this.adjustedScale(tick) + ')';\n };\n this.textAnchor = TextAnchor.End;\n this.x2 = this.innerTickSize * -sign;\n this.x1 = this.tickSpacing * -sign;\n this.dy = '.32em';\n break;\n case Orientation.Right:\n this.transform = function (tick) {\n return 'translate(0,' + this.adjustedScale(tick) + ')';\n };\n this.textAnchor = TextAnchor.Start;\n this.x2 = this.innerTickSize * -sign;\n this.x1 = this.tickSpacing * -sign;\n this.dy = '.32em';\n break;\n default:\n }\n setTimeout(() => this.updateDims());\n }\n\n setReferencelines(): void {\n this.refMin = this.adjustedScale(\n Math.min.apply(\n null,\n this.referenceLines.map(item => item.value)\n )\n );\n this.refMax = this.adjustedScale(\n Math.max.apply(\n null,\n this.referenceLines.map(item => item.value)\n )\n );\n this.referenceLineLength = this.referenceLines.length;\n\n this.referenceAreaPath = roundedRect(0, this.refMax, this.gridLineWidth, this.refMin - this.refMax, 0, [\n false,\n false,\n false,\n false\n ]);\n }\n\n getTicks(): any[] {\n let ticks;\n const maxTicks = this.getMaxTicks(20);\n const maxScaleTicks = this.getMaxTicks(50);\n\n if (this.tickValues) {\n ticks = this.tickValues;\n } else if (this.scale.ticks) {\n ticks = this.scale.ticks.apply(this.scale, [maxScaleTicks]);\n } else {\n ticks = this.scale.domain();\n ticks = reduceTicks(ticks, maxTicks);\n }\n\n return ticks;\n }\n\n getMaxTicks(tickHeight: number): number {\n return Math.floor(this.height / tickHeight);\n }\n\n tickTransform(tick: number): string {\n return `translate(${this.adjustedScale(tick)},${this.verticalSpacing})`;\n }\n\n gridLineTransform(): string {\n return `translate(5,0)`;\n }\n\n tickTrim(label: string): string {\n return this.trimTicks ? trimLabel(label, this.maxTickLength) : label;\n }\n\n getApproximateAxisWidth(): number {\n const maxChars = Math.max(...this.ticks.map(t => this.tickTrim(this.tickFormat(t)).length));\n const charWidth = 7;\n return maxChars * charWidth;\n }\n}\n","import {\n Component,\n Input,\n Output,\n EventEmitter,\n OnChanges,\n ViewChild,\n SimpleChanges,\n ChangeDetectionStrategy\n} from '@angular/core';\nimport { YAxisTicksComponent } from './y-axis-ticks.component';\nimport { Orientation } from '../types/orientation.enum';\nimport { ViewDimensions } from '../types/view-dimension.interface';\n\n@Component({\n selector: 'g[ngx-charts-y-axis]',\n template: `\n <svg:g [attr.class]=\"yAxisClassName\" [attr.transform]=\"transform\">\n <svg:g\n ngx-charts-y-axis-ticks\n *ngIf=\"yScale\"\n [trimTicks]=\"trimTicks\"\n [maxTickLength]=\"maxTickLength\"\n [tickFormatting]=\"tickFormatting\"\n [tickArguments]=\"tickArguments\"\n [tickValues]=\"ticks\"\n [tickStroke]=\"tickStroke\"\n [scale]=\"yScale\"\n [orient]=\"yOrient\"\n [showGridLines]=\"showGridLines\"\n [gridLineWidth]=\"dims.width\"\n [referenceLines]=\"referenceLines\"\n [showRefLines]=\"showRefLines\"\n [showRefLabels]=\"showRefLabels\"\n [height]=\"dims.height\"\n (dimensionsChanged)=\"emitTicksWidth($event)\"\n />\n\n <svg:g\n ngx-charts-axis-label\n *ngIf=\"showLabel\"\n [label]=\"labelText\"\n [offset]=\"labelOffset\"\n [orient]=\"yOrient\"\n [height]=\"dims.height\"\n [width]=\"dims.width\"\n ></svg:g>\n </svg:g>\n `,\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class YAxisComponent implements OnChanges {\n @Input() yScale;\n @Input() dims: ViewDimensions;\n @Input() trimTicks: boolean;\n @Input() maxTickLength: number;\n @Input() tickFormatting;\n @Input() ticks: any[];\n @Input() showGridLines: boolean = false;\n @Input() showLabel: boolean;\n @Input() labelText: string;\n @Input() yAxisTickCount: any;\n @Input() yOrient: Orientation = Orientation.Left;\n @Input() referenceLines;\n @Input() showRefLines: boolean;\n @Input() showRefLabels: boolean;\n @Input() yAxisOffset: number = 0;\n @Output() dimensionsChanged = new EventEmitter();\n\n yAxisClassName: string = 'y axis';\n tickArguments: number[];\n offset: number;\n transform: string;\n labelOffset: number = 15;\n fill: string = 'none';\n stroke: string = '#CCC';\n tickStroke: string = '#CCC';\n strokeWidth: number = 1;\n padding: number = 5;\n\n @ViewChild(YAxisTicksComponent) ticksComponent: YAxisTicksComponent;\n\n ngOnChanges(changes: SimpleChanges): void {\n this.update();\n }\n\n update(): void {\n this.offset = -(this.yAxisOffset + this.padding);\n if (this.yOrient === Orientation.Right) {\n this.labelOffset = 65;\n this.transform = `translate(${this.offset + this.dims.width} , 0)`;\n } else {\n this.offset = this.offset;\n this.transform = `translate(${this.offset} , 0)`;\n }\n\n if (this.yAxisTickCount !== undefined) {\n this.tickArguments = [this.yAxisTickCount];\n }\n }\n\n emitTicksWidth({ width }): void {\n if (width !== this.labelOffset && this.yOrient === Orientation.Right) {\n this.labelOffset = width + this.labelOffset;\n setTimeout(() => {\n this.dimensionsChanged.emit({ width });\n }, 0);\n } else if (width !== this.labelOffset) {\n this.labelOffset = width;\n setTimeout(() => {\n this.dimensionsChanged.emit({ width });\n }, 0);\n }\n }\n}\n","import { NgModule } from '@angular/core';\nimport { AxisLabelComponent } from './axis-label.component';\nimport { XAxisComponent } from './x-axis.component';\nimport { XAxisTicksComponent } from './x-axis-ticks.component';\nimport { YAxisComponent } from './y-axis.component';\nimport { YAxisTicksComponent } from './y-axis-ticks.component';\nimport { CommonModule } from '@angular/common';\n\n@NgModule({\n imports: [CommonModule],\n declarations: [AxisLabelComponent, XAxisComponent, XAxisTicksComponent, YAxisComponent, YAxisTicksComponent],\n exports: [AxisLabelComponent, XAxisComponent, XAxisTicksComponent, YAxisComponent, YAxisTicksComponent]\n})\nexport class AxesModule {}\n","export enum StyleTypes {\n popover = 'popover',\n tooltip = 'tooltip'\n}\n","export enum ShowTypes {\n all = 'all' as any,\n focus = 'focus' as any,\n mouseover = 'mouseover' as any\n}\n","import {\n Directive,\n Input,\n Output,\n EventEmitter,\n HostListener,\n ViewContainerRef,\n Renderer2,\n OnDestroy,\n TemplateRef,\n ComponentRef\n} from '@angular/core';\n\nimport { PlacementTypes } from './position';\nimport { StyleTypes } from './style.type';\nimport { ShowTypes } from './show.type';\n\nimport { TooltipService } from './tooltip.service';\n\n@Directive({ selector: '[ngx-tooltip]' })\nexport class TooltipDirective implements OnDestroy {\n @Input() tooltipCssClass: string = '';\n @Input() tooltipTitle?: string;\n @Input() tooltipAppendToBody: boolean = true;\n @Input() tooltipSpacing: number = 10;\n @Input() tooltipDisabled: boolean = false;\n @Input() tooltipShowCaret: boolean = true;\n @Input() tooltipPlacement: PlacementTypes = PlacementTypes.Top;\n @Input() tooltipAlignment: PlacementTypes = PlacementTypes.Center;\n @Input() tooltipType: StyleTypes = StyleTypes.popover;\n @Input() tooltipCloseOnClickOutside: boolean = true;\n @Input() tooltipCloseOnMouseLeave: boolean = true;\n @Input() tooltipHideTimeout: number = 300;\n @Input() tooltipShowTimeout: number = 100;\n @Input() tooltipTemplate: TemplateRef<any>;\n @Input() tooltipShowEvent: ShowTypes = ShowTypes.all;\n @Input() tooltipContext: any;\n @Input() tooltipImmediateExit: boolean = false;\n\n @Output() show: EventEmitter<boolean> = new EventEmitter();\n @Output() hide: EventEmitter<boolean> = new EventEmitter();\n\n private get listensForFocus(): boolean {\n return this.tooltipShowEvent === ShowTypes.all || this.tooltipShowEvent === ShowTypes.focus;\n }\n\n private get listensForHover(): boolean {\n return this.tooltipShowEvent === ShowTypes.all || this.tooltipShowEvent === ShowTypes.mouseover;\n }\n\n private component: ComponentRef<any>;\n private timeout: ReturnType<typeof setTimeout>;\n private mouseLeaveContentEvent: any;\n private mouseEnterContentEvent: any;\n private documentClickEvent: any;\n\n constructor(\n private tooltipService: TooltipService,\n private viewContainerRef: ViewContainerRef,\n private renderer: Renderer2\n ) {}\n\n ngOnDestroy(): void {\n this.hideTooltip(true);\n }\n\n @HostListener('focusin')\n onFocus(): void {\n if (this.listensForFocus) {\n this.showTooltip();\n }\n }\n\n @HostListener('blur')\n onBlur(): void {\n if (this.listensForFocus) {\n this.hideTooltip(true);\n }\n }\n\n @HostListener('mouseenter')\n onMouseEnter(): void {\n if (this.listensForHover) {\n this.showTooltip();\n }\n }\n\n @HostListener('mouseleave', ['$event.target'])\n onMouseLeave(target): void {\n if (this.listensForHover && this.tooltipCloseOnMouseLeave) {\n clearTimeout(this.timeout);\n\n if (this.component) {\n const contentDom = this.component.instance.element.nativeElement;\n const contains = contentDom.contains(target);\n if (contains) return;\n }\n\n this.hideTooltip(this.tooltipImmediateExit);\n }\n }\n\n @HostListener('click')\n onMouseClick() {\n if (this.listensForHover) {\n this.hideTooltip(true);\n }\n }\n\n showTooltip(immediate?: boolean): void {\n if (this.component || this.tooltipDisabled) return;\n\n const time = immediate\n ? 0\n : this.tooltipShowTimeout + (navigator.userAgent.match(/\\(i[^;]+;( U;)? CPU.+Mac OS X/) ? 300 : 0);\n\n clearTimeout(this.timeout);\n this.timeout = setTimeout(() => {\n this.tooltipService.destroyAll();\n\n const options = this.createBoundOptions();\n this.component = this.tooltipService.create(options);\n\n // add a tiny timeout to avoid event re-triggers\n setTimeout(() => {\n if (this.component) {\n this.addHideListeners(this.component.instance.element.nativeElement);\n }\n }, 10);\n\n this.show.emit(true);\n }, time);\n }\n\n addHideListeners(tooltip: HTMLElement): void {\n // on mouse enter, cancel the hide triggered by the leave\n this.mouseEnterContentEvent = this.renderer.listen(tooltip, 'mouseenter', () => {\n clearTimeout(this.timeout);\n });\n\n // content mouse leave listener\n if (this.tooltipCloseOnMouseLeave) {\n this.mouseLeaveContentEvent = this.renderer.listen(tooltip, 'mouseleave', () => {\n this.hideTooltip(this.tooltipImmediateExit);\n });\n }\n\n // content close on click outside\n if (this.tooltipCloseOnClickOutside) {\n this.documentClickEvent = this.renderer.listen('window', 'click', event => {\n const contains = tooltip.contains(event.target);\n if (!contains) this.hideTooltip();\n });\n }\n }\n\n hideTooltip(immediate: boolean = false): void {\n if (!this.component) return;\n\n const destroyFn = () => {\n // remove events\n if (this.mouseLeaveContentEvent) this.mouseLeaveContentEvent();\n if (this.mouseEnterContentEvent) this.mouseEnterContentEvent();\n if (this.documentClickEvent) this.documentClickEvent();\n\n // emit events\n this.hide.emit(true);\n\n // destroy component\n this.tooltipService.destroy(this.component);\n this.component = undefined;\n };\n\n clearTimeout(this.timeout);\n if (!immediate) {\n this.timeout = setTimeout(destroyFn, this.tooltipHideTimeout);\n } else {\n destroyFn();\n }\n }\n\n private createBoundOptions(): any {\n return {\n title: this.tooltipTitle,\n template: this.tooltipTemplate,\n host: this.viewContainerRef.element,\n placement: this.tooltipPlacement,\n alignment: this.tooltipAlignment,\n type: this.tooltipType,\n showCaret: this.tooltipShowCaret,\n cssClass: this.tooltipCssClass,\n spacing: this.tooltipSpacing,\n context: this.tooltipContext\n };\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nimport { TooltipDirective } from './tooltip.directive';\nimport { TooltipContentComponent } from './tooltip.component';\nimport { TooltipService } from './tooltip.service';\n\nimport { InjectionService } from './injection.service';\n\n@NgModule({\n declarations: [TooltipContentComponent, TooltipDirective],\n providers: [InjectionService, TooltipService],\n exports: [TooltipContentComponent, TooltipDirective],\n imports: [CommonModule],\n entryComponents: [TooltipContentComponent]\n})\nexport class TooltipModule {}\n","/**\n * Formats a label given a date, number or string.\n *\n * @export\n */\nexport function formatLabel(label: any): string {\n if (label instanceof Date) {\n label = label.toLocaleDateString();\n } else {\n label = label.toLocaleString();\n }\n\n return label;\n}\n\n/**\n * Escapes a label.\n *\n * @export\n */\nexport function escapeLabel(label: any): string {\n return label.toLocaleString().replace(/[&'`\"<>]/g, match => {\n return {\n '&': '&amp;',\n // tslint:disable-next-line: quotemark\n \"'\": '&#x27;',\n '`': '&#x60;',\n '\"': '&quot;',\n '<': '&lt;',\n '>': '&gt;'\n }[match];\n });\n}\n","const cache = {};\n\n/**\n * Generates a short id.\n *\n * Description:\n * A 4-character alphanumeric sequence (364 = 1.6 million)\n * This should only be used for JavaScript specific models.\n * http://stackoverflow.com/questions/6248666/how-to-generate-short-uid-like-ax4j9z-in-js\n *\n * Example: `ebgf`\n */\nexport function id(): string {\n let newId = ('0000' + ((Math.random() * Math.pow(36, 4)) << 0).toString(36)).slice(-4);\n\n // append a 'a' because neo gets mad\n newId = `a${newId}`;\n\n // ensure not already used\n if (!cache[newId]) {\n cache[newId] = true;\n return newId;\n }\n\n return id();\n}\n","export enum BarOrientation {\n Vertical = 'vertical',\n Horizontal = 'horizontal'\n}\n","import {\n Component,\n Input,\n Output,\n EventEmitter,\n OnChanges,\n OnInit,\n ChangeDetectionStrategy,\n TemplateRef\n} from '@angular/core';\nimport { trigger, style, animate, transition } from '@angular/animations';\nimport { formatLabel, escapeLabel } from './label.helper';\nimport { id } from '../utils/id';\nimport { ColorHelper } from './color.helper';\nimport { DataItem, Series, StringOrNumberOrDate } from '../models/chart-data.model';\nimport { PlacementTypes } from './tooltip/position';\nimport { StyleTypes } from './tooltip/style.type';\nimport { BarOrientation } from './types/bar-orientation.enum';\nimport { Gradient } from './types/gradient.interface';\nimport { ScaleType } from './types/scale-type.enum';\n\nexport enum SeriesType {\n Standard = 'standard',\n Stacked = 'stacked'\n}\n\nexport interface Circle {\n classNames: string[];\n value: string | number;\n label: string;\n data: DataItem;\n cx: number;\n cy: number;\n radius: number;\n height: number;\n tooltipLabel: string;\n color: string;\n opacity: number;\n seriesName: string;\n gradientStops: Gradient[];\n min: number;\n max: number;\n}\n\n@Component({\n selector: 'g[ngx-charts-circle-series]',\n template: `\n <svg:g *ngIf=\"circle\">\n <defs>\n <svg:g\n ngx-charts-svg-linear-gradient\n [orientation]=\"barOrientation.Vertical\"\n [name]=\"gradientId\"\n [stops]=\"circle.gradientStops\"\n />\n </defs>\n <svg:rect\n *ngIf=\"barVisible && type === 'standard'\"\n [@animationState]=\"'active'\"\n [attr.x]=\"circle.cx - circle.radius\"\n [attr.y]=\"circle.cy\"\n [attr.width]=\"circle.radius * 2\"\n [attr.height]=\"circle.height\"\n [attr.fill]=\"gradientFill\"\n class=\"tooltip-bar\"\n />\n <svg:g\n ngx-charts-circle\n class=\"circle\"\n [cx]=\"circle.cx\"\n [cy]=\"circle.cy\"\n [r]=\"circle.radius\"\n [fill]=\"circle.color\"\n [class.active]=\"isActive({ name: circle.seriesName })\"\n [pointerEvents]=\"circle.value === 0 ? 'none' : 'all'\"\n [data]=\"circle.value\"\n [classNames]=\"circle.classNames\"\n (select)=\"onClick(circle.data)\"\n (activate)=\"activateCircle()\"\n (deactivate)=\"deactivateCircle()\"\n ngx-tooltip\n [tooltipDisabled]=\"tooltipDisabled\"\n [tooltipPlacement]=\"placementTypes.Top\"\n [tooltipType]=\"styleTypes.tooltip\"\n [tooltipTitle]=\"tooltipTemplate ? undefined : getTooltipText(circle)\"\n [tooltipTemplate]=\"tooltipTemplate\"\n [tooltipContext]=\"circle.data\"\n />\n </svg:g>\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n animations: [\n trigger('animationState', [\n transition(':enter', [\n style({\n opacity: 0\n }),\n animate(250, style({ opacity: 1 }))\n ])\n ])\n ]\n})\nexport class CircleSeriesComponent implements OnChanges, OnInit {\n @Input() data: Series;\n @Input() type: SeriesType = SeriesType.Standard;\n @Input() xScale;\n @Input() yScale;\n @Input() colors: ColorHelper;\n @Input() scaleType: ScaleType;\n @Input() visibleValue: boolean;\n @Input() activeEntries: any[];\n @Input() tooltipDisabled: boolean = false;\n @Input() tooltipTemplate: TemplateRef<any>;\n\n @Output() select: EventEmitter<DataItem> = new EventEmitter();\n @Output() activate: EventEmitter<{ name: StringOrNumberOrDate }> = new EventEmitter();\n @Output() deactivate: EventEmitter<{ name: StringOrNumberOrDate }> = new EventEmitter();\n\n areaPath: any;\n circle: Circle; // active circle\n barVisible: boolean = false;\n gradientId: string;\n gradientFill: string;\n\n barOrientation = BarOrientation;\n placementTypes = PlacementTypes;\n styleTypes = StyleTypes;\n\n ngOnInit() {\n this.gradientId = 'grad' + id().toString();\n this.gradientFill = `url(#${this.gradientId})`;\n }\n\n ngOnChanges(): void {\n this.update();\n }\n\n update(): void {\n this.circle = this.getActiveCircle();\n }\n\n getActiveCircle(): Circle {\n const indexActiveDataPoint = this.data.series.findIndex(d => {\n const label = d.name;\n return label && this.visibleValue && label.toString() === this.visibleValue.toString() && d.value !== undefined;\n });\n\n if (indexActiveDataPoint === -1) {\n // No valid point is 'active/hovered over' at this moment.\n return undefined;\n }\n\n return this.mapDataPointToCircle(this.data.series[indexActiveDataPoint], indexActiveDataPoint);\n }\n\n mapDataPointToCircle(d: any, i: number): Circle {\n const seriesName = this.data.name as string;\n\n const value = d.value;\n const label = d.name;\n const tooltipLabel = formatLabel(label);\n\n let cx;\n if (this.scaleType === ScaleType.Time) {\n cx = this.xScale(label);\n } else if (this.scaleType === ScaleType.Linear) {\n cx = this.xScale(Number(label));\n } else {\n cx = this.xScale(label);\n }\n\n const cy = this.yScale(this.type === SeriesType.Standard ? value : d.d1);\n const radius = 5;\n const height = this.yScale.range()[0] - cy;\n const opacity = 1;\n\n let color;\n if (this.colors.scaleType === ScaleType.Linear) {\n if (this.type === SeriesType.Standard) {\n color = this.colors.getColor(value);\n } else {\n color = this.colors.getColor(d.d1);\n }\n } else {\n color = this.colors.getColor(seriesName);\n }\n\n const data = Object.assign({}, d, {\n series: seriesName,\n value,\n name: label\n });\n\n return {\n classNames: [`circle-data-${i}`],\n value,\n label,\n data,\n cx,\n cy,\n radius,\n height,\n tooltipLabel,\n color,\n opacity,\n seriesName,\n gradientStops: this.getGradientStops(color),\n min: d.min,\n max: d.max\n };\n }\n\n getTooltipText({\n tooltipLabel,\n value,\n seriesName,\n min,\n max\n }: {\n tooltipLabel: string;\n value: any;\n seriesName: string;\n min: number;\n max: number;\n }): string {\n return `\n <span class=\"tooltip-label\">${escapeLabel(seriesName)} • ${escapeLabel(tooltipLabel)}</span>\n <span class=\"tooltip-val\">${value.toLocaleString()}${this.getTooltipMinMaxText(min, max)}</span>\n `;\n }\n\n getTooltipMinMaxText(min: number, max: number): string {\n if (min !== undefined || max !== undefined) {\n let result = ' (';\n if (min !== undefined) {\n if (max === undefined) {\n result += '≥';\n }\n result += min.toLocaleString();\n if (max !== undefined) {\n result += ' - ';\n }\n } else if (max !== undefined) {\n result += '≤';\n }\n if (max !== undefined) {\n result += max.toLocaleString();\n }\n result += ')';\n return result;\n } else {\n return '';\n }\n }\n\n getGradientStops(color: string): Gradient[] {\n return [\n {\n offset: 0,\n color,\n opacity: 0.2\n },\n {\n offset: 100,\n color,\n opacity: 1\n }\n ];\n }\n\n onClick(data: DataItem): void {\n this.select.emit(data);\n }\n\n isActive(entry): boolean {\n if (!this.activeEntries) return false;\n const item = this.activeEntries.find(d => {\n return entry.name === d.name;\n });\n return item !== undefined;\n }\n\n activateCircle(): void {\n this.barVisible = true;\n this.activate.emit({ name: this.data.name });\n }\n\n deactivateCircle(): void {\n this.barVisible = false;\n this.circle.opacity = 0;\n this.deactivate.emit({ name: this.data.name });\n }\n}\n","import {\n Component,\n Input,\n SimpleChanges,\n Output,\n EventEmitter,\n OnChanges,\n ChangeDetectionStrategy,\n HostListener\n} from '@angular/core';\n\n@Component({\n selector: 'g[ngx-charts-circle]',\n template: `\n <svg:circle\n [attr.cx]=\"cx\"\n [attr.cy]=\"cy\"\n [attr.r]=\"r\"\n [attr.fill]=\"fill\"\n [attr.stroke]=\"stroke\"\n [attr.opacity]=\"circleOpacity\"\n [attr.class]=\"classNames\"\n [attr.pointer-events]=\"pointerEvents\"\n />\n `,\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class CircleComponent implements OnChanges {\n @Input() cx: number;\n @Input() cy: number;\n @Input() r: number;\n @Input() fill: string;\n @Input() stroke: string;\n @Input() data: number | string;\n @Input() classNames: string[] | string;\n @Input() circleOpacity: number;\n @Input() pointerEvents: string;\n\n @Output() select: EventEmitter<number | string> = new EventEmitter();\n @Output() activate: EventEmitter<number | string> = new EventEmitter();\n @Output() deactivate: EventEmitter<number | string> = new EventEmitter();\n\n @HostListener('click')\n onClick() {\n this.select.emit(this.data);\n }\n\n @HostListener('mouseenter')\n onMouseEnter(): void {\n this.activate.emit(this.data);\n }\n\n @HostListener('mouseleave')\n onMouseLeave(): void {\n this.deactivate.emit(this.data);\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n this.classNames = Array.isArray(this.classNames) ? this.classNames.join(' ') : '';\n this.classNames += 'circle';\n }\n}\n","import { Component, Input, ChangeDetectionStrategy } from '@angular/core';\n\n@Component({\n selector: 'g[ngx-charts-grid-panel]',\n template: `\n <svg:rect [attr.height]=\"height\" [attr.width]=\"width\" [attr.x]=\"x\" [attr.y]=\"y\" stroke=\"none\" class=\"gridpanel\" />\n `,\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class GridPanelComponent {\n @Input() width: number;\n @Input() height: number;\n @Input() x: number;\n @Input() y: number;\n}\n","import { Component, SimpleChanges, Input, OnChanges, ChangeDetectionStrategy } from '@angular/core';\nimport { BarOrientation } from './types/bar-orientation.enum';\nimport { ViewDimensions } from './types/view-dimension.interface';\n\ninterface GridPanel {\n class: ClassEnum;\n height: number;\n name: string;\n width: number;\n x: number;\n y: number;\n}\n\nenum ClassEnum {\n Odd = 'odd',\n Even = 'even'\n}\n\n@Component({\n selector: 'g[ngx-charts-grid-panel-series]',\n template: `\n <svg:g\n ngx-charts-grid-panel\n *ngFor=\"let gridPanel of gridPanels\"\n [height]=\"gridPanel.height\"\n [width]=\"gridPanel.width\"\n [x]=\"gridPanel.x\"\n [y]=\"gridPanel.y\"\n [class.grid-panel]=\"true\"\n [class.odd]=\"gridPanel.class === 'odd'\"\n [class.even]=\"gridPanel.class === 'even'\"\n ></svg:g>\n `,\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class GridPanelSeriesComponent implements OnChanges {\n gridPanels: GridPanel[];\n\n @Input() data: any[];\n\n @Input() dims: ViewDimensions;\n\n @Input() xScale: any;\n\n @Input() yScale: any;\n\n @Input() orient: BarOrientation;\n\n ngOnChanges(changes: SimpleChanges): void {\n this.update();\n }\n\n update(): void {\n this.gridPanels = this.getGridPanels();\n }\n\n getGridPanels(): GridPanel[] {\n return this.data.map(d => {\n let offset;\n let width;\n let height;\n let x;\n let y;\n let className = ClassEnum.Odd;\n\n if (this.orient === BarOrientation.Vertical) {\n const position: number = this.xScale(d.name);\n const positionIndex = Number.parseInt((position / this.xScale.step()).toString(), 10);\n\n if (positionIndex % 2 === 1) {\n className = ClassEnum.Even;\n }\n offset = this.xScale.bandwidth() * this.xScale.paddingInner();\n width = this.xScale.bandwidth() + offset;\n height = this.dims.height;\n x = this.xScale(d.name) - offset / 2;\n y = 0;\n } else if (this.orient === BarOrientation.Horizontal) {\n const position = this.yScale(d.name);\n const positionIndex = Number.parseInt((position / this.yScale.step()).toString(), 10);\n\n if (positionIndex % 2 === 1) {\n className = ClassEnum.Even;\n }\n offset = this.yScale.bandwidth() * this.yScale.paddingInner();\n\n width = this.dims.width;\n height = this.yScale.bandwidth() + offset;\n x = 0;\n y = this.yScale(d.name) - offset / 2;\n }\n\n return {\n name: d.name,\n class: className,\n height,\n width,\n x,\n y\n };\n });\n }\n}\n","import { Component, Input, OnChanges, SimpleChanges, ChangeDetectionStrategy } from '@angular/core';\nimport { BarOrientation } from './types/bar-orientation.enum';\nimport { Gradient } from './types/gradient.interface';\n\n@Component({\n selector: 'g[ngx-charts-svg-linear-gradient]',\n template: `\n <svg:linearGradient [id]=\"name\" [attr.x1]=\"x1\" [attr.y1]=\"y1\" [attr.x2]=\"x2\" [attr.y2]=\"y2\">\n <svg:stop\n *ngFor=\"let stop of stops\"\n [attr.offset]=\"stop.offset + '%'\"\n [style.stop-color]=\"stop.color\"\n [style.stop-opacity]=\"stop.opacity\"\n />\n </svg:linearGradient>\n `,\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class SvgLinearGradientComponent implements OnChanges {\n @Input() orientation = BarOrientation.Vertical;\n @Input() name: string;\n @Input() stops: Gradient[];\n\n x1: string;\n x2: string;\n y1: string;\n y2: string;\n\n ngOnChanges(changes: SimpleChanges): void {\n this.x1 = '0%';\n this.x2 = '0%';\n this.y1 = '0%';\n this.y2 = '0%';\n\n if (this.orientation === BarOrientation.Horizontal) {\n this.x2 = '100%';\n } else if (this.orientation === BarOrientation.Vertical) {\n this.y1 = '100%';\n }\n }\n}\n","import { Component, Input, OnChanges, ChangeDetectionStrategy, SimpleChanges } from '@angular/core';\nimport { Gradient } from './types/gradient.interface';\n\n@Component({\n selector: 'g[ngx-charts-svg-radial-gradient]',\n template: `\n <svg:radialGradient [id]=\"name\" [attr.cx]=\"cx\" [attr.cy]=\"cy\" [attr.r]=\"r\" gradientUnits=\"userSpaceOnUse\">\n <svg:stop\n *ngFor=\"let stop of stops\"\n [attr.offset]=\"stop.offset + '%'\"\n [style.stop-color]=\"stop.color\"\n [style.stop-opacity]=\"stop.opacity\"\n />\n </svg:radialGradient>\n `,\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class SvgRadialGradientComponent implements OnChanges {\n @Input() color: string;\n @Input() name: string;\n @Input() startOpacity: number;\n @Input() endOpacity = 1;\n @Input() cx: number = 0;\n @Input() cy: number = 0;\n\n @Input()\n get stops(): Gradient[] {\n return this.stopsInput || this.stopsDefault;\n }\n\n set stops(value: Gradient[]) {\n this.stopsInput = value;\n }\n\n r: string;\n\n private stopsInput: Gradient[];\n private stopsDefault: Gradient[];\n\n ngOnChanges(changes: SimpleChanges): void {\n this.r = '30%';\n if ('color' in changes || 'startOpacity' in changes || 'endOpacity' in changes) {\n this.stopsDefault = [\n {\n offset: 0,\n color: this.color,\n opacity: this.startOpacity\n },\n {\n offset: 100,\n color: this.color,\n opacity: this.endOpacity\n }\n ];\n }\n }\n}\n","import { Component, Input, Output, EventEmitter, ElementRef, OnChanges, ChangeDetectionStrategy } from '@angular/core';\nimport { select } from 'd3-selection';\nimport { id } from '../utils/id';\nimport { AreaChartSeries } from '../models/chart-data.model';\nimport { BarOrientation } from './types/bar-orientation.enum';\nimport { Gradient } from './types/gradient.interface';\n\n@Component({\n selector: 'g[ngx-charts-area]',\n template: `\n <svg:defs *ngIf=\"gradient\">\n <svg:g\n ngx-charts-svg-linear-gradient\n [orientation]=\"barOrientation.Vertical\"\n [name]=\"gradientId\"\n [stops]=\"gradientStops\"\n />\n </svg:defs>\n <svg:path class=\"area\" [attr.d]=\"areaPath\" [attr.fill]=\"gradient ? gradientFill : fill\" [style.opacity]=\"opacity\" />\n `,\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class AreaComponent implements OnChanges {\n @Input() data: AreaChartSeries;\n @Input() path: string;\n @Input() startingPath: string;\n @Input() fill: string;\n @Input() opacity: number = 1;\n @Input() startOpacity: number = 0.5;\n @Input() endOpacity: number = 1;\n @Input() gradient: boolean = false;\n @Input() stops: Gradient[];\n @Input() animations: boolean = true;\n\n @Output() select = new EventEmitter();\n\n element: HTMLElement;\n gradientId: string;\n gradientFill: string;\n areaPath: string;\n animationsLoaded: boolean = false;\n gradientStops: Gradient[];\n hasGradient: boolean = false;\n\n barOrientation = BarOrientation;\n\n constructor(element: ElementRef) {\n this.element = element.nativeElement;\n }\n\n ngOnChanges(): void {\n this.update();\n\n if (!this.animationsLoaded) {\n this.loadAnimation();\n this.animationsLoaded = true;\n }\n }\n\n update(): void {\n this.gradientId = 'grad' + id().toString();\n this.gradientFill = `url(#${this.gradientId})`;\n\n if (this.gradient || this.stops) {\n this.gradientStops = this.getGradient();\n this.hasGradient = true;\n } else {\n this.hasGradient = false;\n }\n\n this.updatePathEl();\n }\n\n loadAnimation(): void {\n this.areaPath = this.startingPath;\n setTimeout(this.updatePathEl.bind(this), 100);\n }\n\n updatePathEl(): void {\n const node = select(this.element).select('.area');\n\n if (this.animations) {\n node.transition().duration(750).attr('d', this.path);\n } else {\n node.attr('d', this.path);\n }\n }\n\n getGradient(): Gradient[] {\n if (this.stops) {\n return this.stops;\n }\n\n return [\n {\n offset: 0,\n color: this.fill,\n opacity: this.startOpacity\n },\n {\n offset: 100,\n color: this.fill,\n opacity: this.endOpacity\n }\n ];\n }\n}\n","// Robert Penner's easeOutExpo\nfunction easeOutExpo(t, b, c, d): number {\n return (c * (-Math.pow(2, (-10 * t) / d) + 1) * 1024) / 1023 + b;\n}\n\n/**\n * Counts from a number to the end incrementally.\n */\nexport function count(countFrom: number, countTo: number, countDecimals: number, countDuration: number, callback: any) {\n const startVal = Number(countFrom);\n const endVal = Number(countTo);\n const countDown = startVal > endVal;\n const decimals = Math.max(0, countDecimals);\n const dec = Math.pow(10, decimals);\n const duration = Number(countDuration) * 1000;\n let startTime;\n\n function runCount(timestamp: number) {\n let frameVal;\n const progress = timestamp - startTime;\n\n if (countDown) {\n frameVal = startVal - easeOutExpo(progress, 0, startVal - endVal, duration);\n } else {\n frameVal = easeOutExpo(progress, startVal, endVal - startVal, duration);\n }\n\n if (countDown) {\n frameVal = frameVal < endVal ? endVal : frameVal;\n } else {\n frameVal = frameVal > endVal ? endVal : frameVal;\n }\n\n frameVal = Math.round(frameVal * dec) / dec;\n\n const tick = progress < duration;\n callback({\n value: frameVal,\n progress,\n timestamp,\n finished: !tick\n });\n\n if (tick) {\n return requestAnimationFrame(val => runCount(val));\n }\n }\n\n return requestAnimationFrame(timestamp => {\n startTime = timestamp;\n return runCount(timestamp);\n });\n}\n\n/**\n * Determine decimals places\n *\n * @export\n */\nexport function decimalChecker(countTo: number): number {\n const endVal = Number(countTo);\n\n if (endVal % 1 !== 0 && Math.abs(endVal) <= 10) {\n return 2;\n }\n\n return 0;\n}\n","import { Component, Input, Output, EventEmitter, ChangeDetectorRef, OnDestroy, ElementRef } from '@angular/core';\nimport { count, decimalChecker } from './count.helper';\n\n/**\n * Count up component\n *\n * Loosely inspired by:\n * - https://github.com/izupet/angular2-counto\n * - https://inorganik.github.io/countUp.js/\n *\n * @export\n */\n@Component({\n selector: '[ngx-charts-count-up]',\n template: ` {{ value }} `\n})\nexport class CountUpDirective implements OnDestroy {\n @Input() countDuration: number = 1;\n @Input() countPrefix: string = '';\n @Input() countSuffix: string = '';\n @Input() valueFormatting: any;\n\n @Input()\n set countDecimals(val: number) {\n this._countDecimals = val;\n }\n\n get countDecimals(): number {\n if (this._countDecimals) return this._countDecimals;\n return decimalChecker(this.countTo);\n }\n\n @Input()\n set countTo(val) {\n this._countTo = parseFloat(val);\n this.start();\n }\n\n get countTo(): any {\n return this._countTo;\n }\n\n @Input()\n set countFrom(val) {\n this._countFrom = parseFloat(val);\n this.start();\n }\n\n get countFrom(): any {\n return this._countFrom;\n }\n\n @Output() countChange = new EventEmitter();\n @Output() countFinish = new EventEmitter();\n\n nativeElement: any;\n\n value: any = '';\n formattedValue: string;\n\n private animationReq: any;\n\n private _countDecimals: number = 0;\n private _countTo: number = 0;\n private _countFrom: number = 0;\n\n constructor(private cd: ChangeDetectorRef, element: ElementRef) {\n this.nativeElement = element.nativeElement;\n }\n\n ngOnDestroy(): void {\n cancelAnimationFrame(this.animationReq);\n }\n\n start(): void {\n cancelAnimationFrame(this.animationReq);\n\n const valueFormatting =\n this.valueFormatting || (value => `${this.countPrefix}${value.toLocaleString()}${this.countSuffix}`);\n\n const callback = ({ value, progress, finished }) => {\n this.value = valueFormatting(value);\n this.cd.markForCheck();\n if (!finished) this.countChange.emit({ value: this.value, progress });\n if (finished) this.countFinish.emit({ value: this.value, progress });\n };\n\n this.animationReq = count(this.countFrom, this.countTo, this.countDecimals, this.countDuration, callback);\n }\n}\n","declare let global: any;\n\n// If we don't check whether 'window' and 'global' variables are defined,\n// code will fail in browser/node with 'variable is undefined' error.\nlet root: any;\nif (typeof window !== 'undefined') {\n root = window;\n} else if (typeof global !== 'undefined') {\n root = global;\n}\n\n// tslint:disable-next-line:variable-name\nexport const MouseEvent = root.MouseEvent as any & {\n prototype?: MouseEvent;\n new (typeArg: string, eventInitDict?: MouseEventInit): MouseEvent;\n};\n\nexport function createMouseEvent(name: string, bubbles: boolean = false, cancelable: boolean = true): MouseEvent {\n // Calling new of an event does not work correctly on IE. The following is a tested workaround\n // See https://stackoverflow.com/questions/27176983/dispatchevent-not-working-in-ie11\n if (typeof MouseEvent === 'function') {\n // Sane browsers\n return new MouseEvent(name, { bubbles, cancelable });\n } else {\n // IE\n const event = document.createEvent('MouseEvent');\n event.initEvent(name, bubbles, cancelable);\n return event;\n }\n}\n","import {\n Component,\n Input,\n Output,\n EventEmitter,\n ViewChild,\n ChangeDetectionStrategy,\n TemplateRef,\n PLATFORM_ID,\n Inject\n} from '@angular/core';\nimport { trigger, style, animate, transition } from '@angular/animations';\nimport { createMouseEvent } from '../events';\nimport { isPlatformBrowser } from '@angular/common';\nimport { ColorHelper } from '../common/color.helper';\nimport { PlacementTypes } from './tooltip/position';\nimport { StyleTypes } from './tooltip/style.type';\nimport { ViewDimensions } from './types/view-dimension.interface';\nimport { ScaleType } from './types/scale-type.enum';\n\nexport interface Tooltip {\n color: string;\n d0: number;\n d1: number;\n max: number;\n min: number;\n name: any;\n series: any;\n value: any;\n}\n\n@Component({\n selector: 'g[ngx-charts-tooltip-area]',\n template: `\n <svg:g>\n <svg:rect\n class=\"tooltip-area\"\n [attr.x]=\"0\"\n y=\"0\"\n [attr.width]=\"dims.width\"\n [attr.height]=\"dims.height\"\n style=\"opacity: 0; cursor: 'auto';\"\n (mousemove)=\"mouseMove($event)\"\n (mouseleave)=\"hideTooltip()\"\n />\n <ng-template #defaultTooltipTemplate let-model=\"model\">\n <xhtml:div class=\"area-tooltip-container\">\n <xhtml:div *ngFor=\"let tooltipItem of model\" class=\"tooltip-item\">\n <xhtml:span class=\"tooltip-item-color\" [style.background-color]=\"tooltipItem.color\"></xhtml:span>\n {{ getToolTipText(tooltipItem) }}\n </xhtml:div>\n </xhtml:div>\n </ng-template>\n <svg:rect\n #tooltipAnchor\n [@animationState]=\"anchorOpacity !== 0 ? 'active' : 'inactive'\"\n class=\"tooltip-anchor\"\n [attr.x]=\"anchorPos\"\n y=\"0\"\n [attr.width]=\"1\"\n [attr.height]=\"dims.height\"\n [style.opacity]=\"anchorOpacity\"\n [style.pointer-events]=\"'none'\"\n ngx-tooltip\n [tooltipDisabled]=\"tooltipDisabled\"\n [tooltipPlacement]=\"placementTypes.Right\"\n [tooltipType]=\"styleTypes.tooltip\"\n [tooltipSpacing]=\"15\"\n [tooltipTemplate]=\"tooltipTemplate ? tooltipTemplate : defaultTooltipTemplate\"\n [tooltipContext]=\"anchorValues\"\n [tooltipImmediateExit]=\"true\"\n />\n </svg:g>\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n animations: [\n trigger('animationState', [\n transition('inactive => active', [\n style({\n opacity: 0\n }),\n animate(250, style({ opacity: 0.7 }))\n ]),\n transition('active => inactive', [\n style({\n opacity: 0.7\n }),\n animate(250, style({ opacity: 0 }))\n ])\n ])\n ]\n})\nexport class TooltipArea {\n anchorOpacity: number = 0;\n anchorPos: number = -1;\n anchorValues: Tooltip[] = [];\n lastAnchorPos: number;\n\n placementTypes = PlacementTypes;\n styleTypes = StyleTypes;\n\n @Input() dims: ViewDimensions;\n @Input() xSet: any[];\n @Input() xScale;\n @Input() yScale;\n @Input() results: any[];\n @Input() colors: ColorHelper;\n @Input() showPercentage: boolean = false;\n @Input() tooltipDisabled: boolean = false;\n @Input() tooltipTemplate: TemplateRef<any>;\n\n @Output() hover: EventEmitter<{ value: any }> = new EventEmitter();\n\n @ViewChild('tooltipAnchor', { static: false }) tooltipAnchor;\n\n constructor(@Inject(PLATFORM_ID) private platformId: any) {}\n\n getValues(xVal): Tooltip[] {\n const results = [];\n\n for (const group of this.results) {\n const item = group.series.find(d => d.name.toString() === xVal.toString());\n let groupName = group.name;\n if (groupName instanceof Date) {\n groupName = groupName.toLocaleDateString();\n }\n\n if (item) {\n const label = item.name;\n let val = item.value;\n if (this.showPercentage) {\n val = (item.d1 - item.d0).toFixed(2) + '%';\n }\n let color;\n if (this.colors.scaleType === ScaleType.Linear) {\n let v = val;\n if (item.d1) {\n v = item.d1;\n }\n color = this.colors.getColor(v);\n } else {\n color = this.colors.getColor(group.name);\n }\n\n const data = Object.assign({}, item, {\n value: val,\n name: label,\n series: groupName,\n min: item.min,\n max: item.max,\n color\n });\n\n results.push(data);\n }\n }\n\n return results;\n }\n\n mouseMove(event) {\n if (!isPlatformBrowser(this.platformId)) {\n return;\n }\n\n const xPos = event.pageX - event.target.getBoundingClientRect().left;\n\n const closestIndex = this.findClosestPointIndex(xPos);\n const closestPoint = this.xSet[closestIndex];\n this.anchorPos = this.xScale(closestPoint);\n this.anchorPos = Math.max(0, this.anchorPos);\n this.anchorPos = Math.min(this.dims.width, this.anchorPos);\n\n this.anchorValues = this.getValues(closestPoint);\n if (this.anchorPos !== this.lastAnchorPos) {\n const ev = createMouseEvent('mouseleave');\n this.tooltipAnchor.nativeElement.dispatchEvent(ev);\n this.anchorOpacity = 0.7;\n this.hover.emit({\n value: closestPoint\n });\n this.showTooltip();\n\n this.lastAnchorPos = this.anchorPos;\n }\n }\n\n findClosestPointIndex(xPos: number): number {\n let minIndex = 0;\n let maxIndex = this.xSet.length - 1;\n let minDiff = Number.MAX_VALUE;\n let closestIndex = 0;\n\n while (minIndex <= maxIndex) {\n const currentIndex = ((minIndex + maxIndex) / 2) | 0;\n const currentElement = this.xScale(this.xSet[currentIndex]);\n\n const curDiff = Math.abs(currentElement - xPos);\n\n if (curDiff < minDiff) {\n minDiff = curDiff;\n closestIndex = currentIndex;\n }\n\n if (currentElement < xPos) {\n minIndex = currentIndex + 1;\n } else if (currentElement > xPos) {\n maxIndex = currentIndex - 1;\n } else {\n minDiff = 0;\n closestIndex = currentIndex;\n break;\n }\n }\n\n return closestIndex;\n }\n\n showTooltip(): void {\n const event = createMouseEvent('mouseenter');\n this.tooltipAnchor.nativeElement.dispatchEvent(event);\n }\n\n hideTooltip(): void {\n const event = createMouseEvent('mouseleave');\n this.tooltipAnchor.nativeElement.dispatchEvent(event);\n this.anchorOpacity = 0;\n this.lastAnchorPos = -1;\n }\n\n getToolTipText(tooltipItem: Tooltip): string {\n let result: string = '';\n if (tooltipItem.series !== undefined) {\n result += tooltipItem.series;\n } else {\n result += '???';\n }\n result += ': ';\n if (tooltipItem.value !== undefined) {\n result += tooltipItem.value.toLocaleString();\n }\n if (tooltipItem.min !== undefined || tooltipItem.max !== undefined) {\n result += ' (';\n if (tooltipItem.min !== undefined) {\n if (tooltipItem.max === undefined) {\n result += '≥';\n }\n result += tooltipItem.min.toLocaleString();\n if (tooltipItem.max !== undefined) {\n result += ' - ';\n }\n } else if (tooltipItem.max !== undefined) {\n result += '≤';\n }\n if (tooltipItem.max !== undefined) {\n result += tooltipItem.max.toLocaleString();\n }\n result += ')';\n }\n return result;\n }\n}\n","import {\n Component,\n Input,\n Output,\n EventEmitter,\n ElementRef,\n OnChanges,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n SimpleChanges,\n ViewEncapsulation\n} from '@angular/core';\nimport { brushX } from 'd3-brush';\nimport { scaleLinear, scaleTime, scalePoint } from 'd3-scale';\nimport { select } from 'd3-selection';\nimport { id } from '../../utils/id';\nimport { ScaleType } from '../types/scale-type.enum';\nimport { ViewDimensions } from '../types/view-dimension.interface';\n\n@Component({\n selector: 'g[ngx-charts-timeline]',\n template: `\n <svg:g class=\"timeline\" [attr.transform]=\"transform\">\n <svg:filter [attr.id]=\"filterId\">\n <svg:feColorMatrix\n in=\"SourceGraphic\"\n type=\"matrix\"\n values=\"0.3333 0.3333 0.3333 0 0 0.3333 0.3333 0.3333 0 0 0.3333 0.3333 0.3333 0 0 0 0 0 1 0\"\n />\n </svg:filter>\n <svg:g class=\"embedded-chart\">\n <ng-content></ng-content>\n </svg:g>\n <svg:rect x=\"0\" [attr.width]=\"view[0]\" y=\"0\" [attr.height]=\"height\" class=\"brush-background\" />\n <svg:g class=\"brush\"></svg:g>\n </svg:g>\n `,\n styleUrls: ['./timeline.component.scss'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class Timeline implements OnChanges {\n @Input() view: [number, number];\n @Input() results; // type this\n @Input() scheme; // type this\n @Input() customColors; // type this\n @Input() legend: boolean;\n @Input() autoScale: boolean;\n @Input() scaleType: ScaleType;\n @Input() height: number = 50;\n\n @Output() select = new EventEmitter();\n @Output() onDomainChange = new EventEmitter();\n\n element: HTMLElement;\n dims: ViewDimensions;\n xDomain: any[];\n xScale: any;\n brush: any;\n transform: string;\n initialized: boolean = false;\n filterId: string;\n filter: string;\n\n constructor(element: ElementRef, private cd: ChangeDetectorRef) {\n this.element = element.nativeElement;\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n this.update();\n\n if (!this.initialized) {\n this.addBrush();\n this.initialized = true;\n }\n }\n\n update(): void {\n this.dims = this.getDims();\n this.height = this.dims.height;\n const offsetY = this.view[1] - this.height;\n\n this.xDomain = this.getXDomain();\n this.xScale = this.getXScale();\n\n if (this.brush) {\n this.updateBrush();\n }\n\n this.transform = `translate(0 , ${offsetY})`;\n\n this.filterId = 'filter' + id().toString();\n this.filter = `url(#${this.filterId})`;\n\n this.cd.markForCheck();\n }\n\n getXDomain(): any[] {\n let values = [];\n\n for (const results of this.results) {\n for (const d of results.series) {\n if (!values.includes(d.name)) {\n values.push(d.name);\n }\n }\n }\n\n let domain = [];\n if (this.scaleType === ScaleType.Time) {\n const min = Math.min(...values);\n const max = Math.max(...values);\n domain = [min, max];\n } else if (this.scaleType === ScaleType.Linear) {\n values = values.map(v => Number(v));\n const min = Math.min(...values);\n const max = Math.max(...values);\n domain = [min, max];\n } else {\n domain = values;\n }\n\n return domain;\n }\n\n getXScale() {\n let scale;\n\n if (this.scaleType === ScaleType.Time) {\n scale = scaleTime().range([0, this.dims.width]).domain(this.xDomain);\n } else if (this.scaleType === ScaleType.Linear) {\n scale = scaleLinear().range([0, this.dims.width]).domain(this.xDomain);\n } else if (this.scaleType === ScaleType.Ordinal) {\n scale = scalePoint().range([0, this.dims.width]).padding(0.1).domain(this.xDomain);\n }\n\n return scale;\n }\n\n addBrush(): void {\n if (this.brush) return;\n\n const height = this.height;\n const width = this.view[0];\n\n this.brush = brushX()\n .extent([\n [0, 0],\n [width, height]\n ])\n .on('brush end', ({ selection }) => {\n const newSelection = selection || this.xScale.range();\n const newDomain = newSelection.map(this.xScale.invert);\n\n this.onDomainChange.emit(newDomain);\n this.cd.markForCheck();\n });\n\n select(this.element).select('.brush').call(this.brush);\n }\n\n updateBrush(): void {\n if (!this.brush) return;\n\n const height = this.height;\n const width = this.view[0];\n\n this.brush.extent([\n [0, 0],\n [width, height]\n ]);\n select(this.element).select('.brush').call(this.brush);\n\n // clear hardcoded properties so they can be defined by CSS\n select(this.element)\n .select('.selection')\n .attr('fill', undefined)\n .attr('stroke', undefined)\n .attr('fill-opacity', undefined);\n\n this.cd.markForCheck();\n }\n\n getDims(): ViewDimensions {\n const width = this.view[0];\n\n const dims = {\n width,\n height: this.height\n };\n\n return dims;\n }\n}\n","import {\n Component,\n Input,\n ChangeDetectionStrategy,\n Output,\n EventEmitter,\n SimpleChanges,\n OnChanges,\n ChangeDetectorRef,\n ViewEncapsulation\n} from '@angular/core';\nimport { formatLabel } from '../label.helper';\nimport { ColorHelper } from '../color.helper';\n\nexport interface LegendEntry {\n color: string;\n formattedLabel: string;\n label: string;\n}\n\n@Component({\n selector: 'ngx-charts-legend',\n template: `\n <div [style.width.px]=\"width\">\n <header class=\"legend-title\" *ngIf=\"title?.length > 0\">\n <span class=\"legend-title-text\">{{ title }}</span>\n </header>\n <div class=\"legend-wrap\">\n <ul class=\"legend-labels\" [class.horizontal-legend]=\"horizontal\" [style.max-height.px]=\"height - 45\">\n <li *ngFor=\"let entry of legendEntries; trackBy: trackBy\" class=\"legend-label\">\n <ngx-charts-legend-entry\n [label]=\"entry.label\"\n [formattedLabel]=\"entry.formattedLabel\"\n [color]=\"entry.color\"\n [isActive]=\"isActive(entry)\"\n (select)=\"labelClick.emit($event)\"\n (activate)=\"activate($event)\"\n (deactivate)=\"deactivate($event)\"\n >\n </ngx-charts-legend-entry>\n </li>\n </ul>\n </div>\n </div>\n `,\n styleUrls: ['./legend.component.scss'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class LegendComponent implements OnChanges {\n @Input() data: string[];\n @Input() title: string;\n @Input() colors: ColorHelper;\n @Input() height: number;\n @Input() width: number;\n @Input() activeEntries;\n @Input() horizontal = false;\n\n @Output() labelClick: EventEmitter<string> = new EventEmitter();\n @Output() labelActivate: EventEmitter<{ name: string }> = new EventEmitter();\n @Output() labelDeactivate: EventEmitter<{ name: string }> = new EventEmitter();\n\n legendEntries: LegendEntry[] = [];\n\n constructor(private cd: ChangeDetectorRef) {}\n\n ngOnChanges(changes: SimpleChanges): void {\n this.update();\n }\n\n update(): void {\n this.cd.markForCheck();\n this.legendEntries = this.getLegendEntries();\n }\n\n getLegendEntries(): LegendEntry[] {\n const items = [];\n for (const label of this.data) {\n const formattedLabel = formatLabel(label);\n\n const idx = items.findIndex(i => {\n return i.label === formattedLabel;\n });\n\n if (idx === -1) {\n items.push({\n label,\n formattedLabel,\n color: this.colors.getColor(label)\n });\n }\n }\n\n return items;\n }\n\n isActive(entry: LegendEntry): boolean {\n if (!this.activeEntries) return false;\n const item = this.activeEntries.find(d => {\n return entry.label === d.name;\n });\n return item !== undefined;\n }\n\n activate(item: { name: string }) {\n this.labelActivate.emit(item);\n }\n\n deactivate(item: { name: string }) {\n this.labelDeactivate.emit(item);\n }\n\n trackBy(index: number, item: LegendEntry): string {\n return item.label;\n }\n}\n","import { Component, Input, Output, ChangeDetectionStrategy, HostListener, EventEmitter } from '@angular/core';\n\n@Component({\n selector: 'ngx-charts-legend-entry',\n template: `\n <span [title]=\"formattedLabel\" tabindex=\"-1\" [class.active]=\"isActive\" (click)=\"select.emit(formattedLabel)\">\n <span class=\"legend-label-color\" [style.background-color]=\"color\" (click)=\"toggle.emit(formattedLabel)\"> </span>\n <span class=\"legend-label-text\">\n {{ trimmedLabel }}\n </span>\n </span>\n `,\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class LegendEntryComponent {\n @Input() color: string;\n @Input() label: string;\n @Input() formattedLabel: string;\n @Input() isActive: boolean = false;\n\n @Output() select: EventEmitter<string> = new EventEmitter();\n @Output() activate: EventEmitter<{ name: string }> = new EventEmitter();\n @Output() deactivate: EventEmitter<{ name: string }> = new EventEmitter();\n @Output() toggle: EventEmitter<string> = new EventEmitter();\n\n get trimmedLabel(): string {\n return this.formattedLabel || '(empty)';\n }\n\n @HostListener('mouseenter')\n onMouseEnter(): void {\n this.activate.emit({ name: this.label });\n }\n\n @HostListener('mouseleave')\n onMouseLeave(): void {\n this.deactivate.emit({ name: this.label });\n }\n}\n","import { Component, Input, OnChanges, ChangeDetectionStrategy, SimpleChanges, ViewEncapsulation } from '@angular/core';\n\n@Component({\n selector: 'ngx-charts-scale-legend',\n template: `\n <div\n class=\"scale-legend\"\n [class.horizontal-legend]=\"horizontal\"\n [style.height.px]=\"horizontal ? undefined : height\"\n [style.width.px]=\"width\"\n >\n <div class=\"scale-legend-label\">\n <span>{{ valueRange[1].toLocaleString() }}</span>\n </div>\n <div class=\"scale-legend-wrap\" [style.background]=\"gradient\"></div>\n <div class=\"scale-legend-label\">\n <span>{{ valueRange[0].toLocaleString() }}</span>\n </div>\n </div>\n `,\n styleUrls: ['./scale-legend.component.scss'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class ScaleLegendComponent implements OnChanges {\n @Input() valueRange: number[];\n @Input() colors: any;\n @Input() height: number;\n @Input() width: number;\n @Input() horizontal: boolean = false;\n\n gradient: string;\n\n ngOnChanges(changes: SimpleChanges): void {\n const gradientValues = this.gradientString(this.colors.range(), this.colors.domain());\n const direction = this.horizontal ? 'right' : 'bottom';\n this.gradient = `linear-gradient(to ${direction}, ${gradientValues})`;\n }\n\n /**\n * Generates the string used in the gradient stylesheet properties\n * @param colors array of colors\n * @param splits array of splits on a scale of (0, 1)\n */\n gradientString(colors: string[], splits: number[]): string {\n // add the 100%\n splits.push(1);\n const pairs = [];\n colors.reverse().forEach((c, i) => {\n pairs.push(`${c} ${Math.round(splits[i] * 100)}%`);\n });\n\n return pairs.join(', ');\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n Input,\n OnChanges,\n Output,\n SimpleChanges,\n ViewEncapsulation\n} from '@angular/core';\nimport { trimLabel } from '../trim-label.helper';\nimport { formatLabel } from '../label.helper';\nimport { DataItem, StringOrNumberOrDate } from '../../models/chart-data.model';\nimport { ColorHelper } from '../color.helper';\n\nexport interface AdvancedLegendItem {\n value: StringOrNumberOrDate;\n _value: StringOrNumberOrDate;\n color: string;\n data: DataItem;\n label: string;\n displayLabel: string;\n originalLabel: string;\n percentage: string;\n}\n\n@Component({\n selector: 'ngx-charts-advanced-legend',\n template: `\n <div class=\"advanced-pie-legend\" [style.width.px]=\"width\">\n <div\n *ngIf=\"animations\"\n class=\"total-value\"\n ngx-charts-count-up\n [countTo]=\"roundedTotal\"\n [valueFormatting]=\"valueFormatting\"\n ></div>\n <div class=\"total-value\" *ngIf=\"!animations\">\n {{ valueFormatting ? valueFormatting(roundedTotal) : defaultValueFormatting(roundedTotal) }}\n </div>\n <div class=\"total-label\">\n {{ label }}\n </div>\n <div class=\"legend-items-container\">\n <div class=\"legend-items\">\n <div\n *ngFor=\"let legendItem of legendItems; trackBy: trackBy\"\n tabindex=\"-1\"\n class=\"legend-item\"\n (mouseenter)=\"activate.emit(legendItem.data)\"\n (mouseleave)=\"deactivate.emit(legendItem.data)\"\n (click)=\"select.emit(legendItem.data)\"\n >\n <div class=\"item-color\" [style.border-left-color]=\"legendItem.color\"></div>\n <div\n *ngIf=\"animations\"\n class=\"item-value\"\n ngx-charts-count-up\n [countTo]=\"legendItem._value\"\n [valueFormatting]=\"valueFormatting\"\n ></div>\n <div *ngIf=\"!animations\" class=\"item-value\">\n {{ valueFormatting ? valueFormatting(legendItem.value) : defaultValueFormatting(legendItem.value) }}\n </div>\n <div class=\"item-label\">{{ legendItem.displayLabel }}</div>\n <div\n *ngIf=\"animations\"\n class=\"item-percent\"\n ngx-charts-count-up\n [countTo]=\"legendItem.percentage\"\n [countSuffix]=\"'%'\"\n ></div>\n <div *ngIf=\"!animations\" class=\"item-percent\">{{ legendItem.percentage.toLocaleString() }}%</div>\n </div>\n </div>\n </div>\n </div>\n `,\n styleUrls: ['./advanced-legend.component.scss'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class AdvancedLegendComponent implements OnChanges {\n @Input() width: number;\n @Input() data: DataItem[];\n @Input() colors: ColorHelper;\n @Input() label: string = 'Total';\n @Input() animations: boolean = true;\n\n @Output() select: EventEmitter<DataItem> = new EventEmitter();\n @Output() activate: EventEmitter<DataItem> = new EventEmitter();\n @Output() deactivate: EventEmitter<DataItem> = new EventEmitter();\n\n legendItems: AdvancedLegendItem[] = [];\n total: number;\n roundedTotal: number;\n\n @Input() valueFormatting: (value: StringOrNumberOrDate) => any;\n @Input() labelFormatting: (value: string) => string = label => label;\n @Input() percentageFormatting: (value: number) => number = percentage => percentage;\n\n defaultValueFormatting: (value: StringOrNumberOrDate) => string = value => value.toLocaleString();\n\n ngOnChanges(changes: SimpleChanges): void {\n this.update();\n }\n\n getTotal(): number {\n return this.data.map(d => Number(d.value)).reduce((sum, d) => sum + d, 0);\n }\n\n update(): void {\n this.total = this.getTotal();\n this.roundedTotal = this.total;\n\n this.legendItems = this.getLegendItems();\n }\n\n getLegendItems(): AdvancedLegendItem[] {\n return (this.data as any).map(d => {\n const label = formatLabel(d.name);\n const value = d.value;\n const color = this.colors.getColor(label);\n const percentage = this.total > 0 ? (value / this.total) * 100 : 0;\n const formattedLabel = typeof this.labelFormatting === 'function' ? this.labelFormatting(label) : label;\n\n return {\n _value: value,\n data: d,\n value,\n color,\n label: formattedLabel,\n displayLabel: trimLabel(formattedLabel, 20),\n origialLabel: d.name,\n percentage: this.percentageFormatting ? this.percentageFormatting(percentage) : percentage.toLocaleString()\n };\n });\n }\n\n trackBy(index: number, item: AdvancedLegendItem) {\n return item.label;\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nimport { ChartComponent } from './charts/chart.component';\nimport { BaseChartComponent } from './base-chart.component';\nimport { AxesModule } from './axes/axes.module';\nimport { TooltipModule } from './tooltip/tooltip.module';\nimport { CircleSeriesComponent } from './circle-series.component';\nimport { CircleComponent } from './circle.component';\nimport { GridPanelComponent } from './grid-panel.component';\nimport { GridPanelSeriesComponent } from './grid-panel-series.component';\nimport { SvgLinearGradientComponent } from './svg-linear-gradient.component';\nimport { SvgRadialGradientComponent } from './svg-radial-gradient.component';\nimport { AreaComponent } from './area.component';\nimport { CountUpDirective } from './count/count.directive';\nimport { TooltipArea } from './tooltip-area.component';\nimport { Timeline } from './timeline/timeline.component';\nimport { VisibilityObserver } from '../utils/visibility-observer';\nimport { LegendComponent } from './legend/legend.component';\nimport { LegendEntryComponent } from './legend/legend-entry.component';\nimport { ScaleLegendComponent } from './legend/scale-legend.component';\nimport { AdvancedLegendComponent } from './legend/advanced-legend.component';\n\nconst COMPONENTS = [\n AreaComponent,\n BaseChartComponent,\n CountUpDirective,\n TooltipArea,\n ChartComponent,\n LegendComponent,\n LegendEntryComponent,\n ScaleLegendComponent,\n CircleComponent,\n CircleSeriesComponent,\n GridPanelComponent,\n GridPanelSeriesComponent,\n SvgLinearGradientComponent,\n SvgRadialGradientComponent,\n Timeline,\n AdvancedLegendComponent\n];\n\n@NgModule({\n imports: [CommonModule, AxesModule, TooltipModule],\n declarations: [...COMPONENTS, VisibilityObserver],\n exports: [CommonModule, AxesModule, TooltipModule, ...COMPONENTS, VisibilityObserver]\n})\nexport class ChartCommonModule {}\n","import { LegendPosition } from './types/legend.model';\nimport { ScaleType } from './types/scale-type.enum';\nimport { ViewDimensions } from './types/view-dimension.interface';\n\nexport function calculateViewDimensions({\n width,\n height,\n margins,\n showXAxis = false,\n showYAxis = false,\n xAxisHeight = 0,\n yAxisWidth = 0,\n showXLabel = false,\n showYLabel = false,\n showLegend = false,\n legendType = ScaleType.Ordinal,\n legendPosition = LegendPosition.Right,\n columns = 12\n}): ViewDimensions {\n let xOffset = margins[3];\n let chartWidth = width;\n let chartHeight = height - margins[0] - margins[2];\n\n if (showLegend && legendPosition === LegendPosition.Right) {\n if (legendType === ScaleType.Ordinal) {\n columns -= 2;\n } else {\n columns -= 1;\n }\n }\n\n chartWidth = (chartWidth * columns) / 12;\n\n chartWidth = chartWidth - margins[1] - margins[3];\n\n if (showXAxis) {\n chartHeight -= 5;\n chartHeight -= xAxisHeight;\n\n if (showXLabel) {\n // text height + spacing between axis label and tick labels\n const offset = 25 + 5;\n chartHeight -= offset;\n }\n }\n\n if (showYAxis) {\n chartWidth -= 5;\n chartWidth -= yAxisWidth;\n xOffset += yAxisWidth;\n xOffset += 10;\n\n if (showYLabel) {\n // text height + spacing between axis label and tick labels\n const offset = 25 + 5;\n chartWidth -= offset;\n xOffset += offset;\n }\n }\n\n chartWidth = Math.max(0, chartWidth);\n chartHeight = Math.max(0, chartHeight);\n\n return {\n width: Math.floor(chartWidth),\n height: Math.floor(chartHeight),\n xOffset: Math.floor(xOffset)\n };\n}\n","import { ScaleType } from '../common/types/scale-type.enum';\n\nexport interface Color {\n name: string;\n selectable: boolean;\n group: ScaleType;\n domain: string[];\n}\n\nexport let colorSets: Color[] = [\n {\n name: 'vivid',\n selectable: true,\n group: ScaleType.Ordinal,\n domain: [\n '#647c8a',\n '#3f51b5',\n '#2196f3',\n '#00b862',\n '#afdf0a',\n '#a7b61a',\n '#f3e562',\n '#ff9800',\n '#ff5722',\n '#ff4514'\n ]\n },\n {\n name: 'natural',\n selectable: true,\n group: ScaleType.Ordinal,\n domain: [\n '#bf9d76',\n '#e99450',\n '#d89f59',\n '#f2dfa7',\n '#a5d7c6',\n '#7794b1',\n '#afafaf',\n '#707160',\n '#ba9383',\n '#d9d5c3'\n ]\n },\n {\n name: 'cool',\n selectable: true,\n group: ScaleType.Ordinal,\n domain: [\n '#a8385d',\n '#7aa3e5',\n '#a27ea8',\n '#aae3f5',\n '#adcded',\n '#a95963',\n '#8796c0',\n '#7ed3ed',\n '#50abcc',\n '#ad6886'\n ]\n },\n {\n name: 'fire',\n selectable: true,\n group: ScaleType.Ordinal,\n domain: ['#ff3d00', '#bf360c', '#ff8f00', '#ff6f00', '#ff5722', '#e65100', '#ffca28', '#ffab00']\n },\n {\n name: 'solar',\n selectable: true,\n group: ScaleType.Linear,\n domain: [\n '#fff8e1',\n '#ffecb3',\n '#ffe082',\n '#ffd54f',\n '#ffca28',\n '#ffc107',\n '#ffb300',\n '#ffa000',\n '#ff8f00',\n '#ff6f00'\n ]\n },\n {\n name: 'air',\n selectable: true,\n group: ScaleType.Linear,\n domain: [\n '#e1f5fe',\n '#b3e5fc',\n '#81d4fa',\n '#4fc3f7',\n '#29b6f6',\n '#03a9f4',\n '#039be5',\n '#0288d1',\n '#0277bd',\n '#01579b'\n ]\n },\n {\n name: 'aqua',\n selectable: true,\n group: ScaleType.Linear,\n domain: [\n '#e0f7fa',\n '#b2ebf2',\n '#80deea',\n '#4dd0e1',\n '#26c6da',\n '#00bcd4',\n '#00acc1',\n '#0097a7',\n '#00838f',\n '#006064'\n ]\n },\n {\n name: 'flame',\n selectable: false,\n group: ScaleType.Ordinal,\n domain: [\n '#A10A28',\n '#D3342D',\n '#EF6D49',\n '#FAAD67',\n '#FDDE90',\n '#DBED91',\n '#A9D770',\n '#6CBA67',\n '#2C9653',\n '#146738'\n ]\n },\n {\n name: 'ocean',\n selectable: false,\n group: ScaleType.Ordinal,\n domain: [\n '#1D68FB',\n '#33C0FC',\n '#4AFFFE',\n '#AFFFFF',\n '#FFFC63',\n '#FDBD2D',\n '#FC8A25',\n '#FA4F1E',\n '#FA141B',\n '#BA38D1'\n ]\n },\n {\n name: 'forest',\n selectable: false,\n group: ScaleType.Ordinal,\n domain: [\n '#55C22D',\n '#C1F33D',\n '#3CC099',\n '#AFFFFF',\n '#8CFC9D',\n '#76CFFA',\n '#BA60FB',\n '#EE6490',\n '#C42A1C',\n '#FC9F32'\n ]\n },\n {\n name: 'horizon',\n selectable: false,\n group: ScaleType.Ordinal,\n domain: [\n '#2597FB',\n '#65EBFD',\n '#99FDD0',\n '#FCEE4B',\n '#FEFCFA',\n '#FDD6E3',\n '#FCB1A8',\n '#EF6F7B',\n '#CB96E8',\n '#EFDEE0'\n ]\n },\n {\n name: 'neons',\n selectable: false,\n group: ScaleType.Ordinal,\n domain: [\n '#FF3333',\n '#FF33FF',\n '#CC33FF',\n '#0000FF',\n '#33CCFF',\n '#33FFFF',\n '#33FF66',\n '#CCFF33',\n '#FFCC00',\n '#FF6600'\n ]\n },\n {\n name: 'picnic',\n selectable: false,\n group: ScaleType.Ordinal,\n domain: [\n '#FAC51D',\n '#66BD6D',\n '#FAA026',\n '#29BB9C',\n '#E96B56',\n '#55ACD2',\n '#B7332F',\n '#2C83C9',\n '#9166B8',\n '#92E7E8'\n ]\n },\n {\n name: 'night',\n selectable: false,\n group: ScaleType.Ordinal,\n domain: [\n '#2B1B5A',\n '#501356',\n '#183356',\n '#28203F',\n '#391B3C',\n '#1E2B3C',\n '#120634',\n '#2D0432',\n '#051932',\n '#453080',\n '#75267D',\n '#2C507D',\n '#4B3880',\n '#752F7D',\n '#35547D'\n ]\n },\n {\n name: 'nightLights',\n selectable: false,\n group: ScaleType.Ordinal,\n domain: [\n '#4e31a5',\n '#9c25a7',\n '#3065ab',\n '#57468b',\n '#904497',\n '#46648b',\n '#32118d',\n '#a00fb3',\n '#1052a2',\n '#6e51bd',\n '#b63cc3',\n '#6c97cb',\n '#8671c1',\n '#b455be',\n '#7496c3'\n ]\n }\n];\n","import { range } from 'd3-array';\nimport {\n scaleBand,\n ScaleLinear,\n scaleLinear,\n ScaleOrdinal,\n scaleOrdinal,\n ScaleQuantile,\n scaleQuantile\n} from 'd3-scale';\n\nimport { Color, colorSets } from '../utils/color-sets';\nimport { StringOrNumberOrDate } from '../models/chart-data.model';\nimport { ScaleType } from './types/scale-type.enum';\nimport { Gradient } from './types/gradient.interface';\n\nexport class ColorHelper {\n scale: any;\n scaleType: ScaleType;\n colorDomain: string[];\n domain: number[] | string[];\n customColors: any;\n\n constructor(scheme: string | Color, type: ScaleType, domain: number[] | string[], customColors?) {\n if (typeof scheme === 'string') {\n scheme = colorSets.find(cs => {\n return cs.name === scheme;\n });\n }\n this.colorDomain = scheme.domain;\n this.scaleType = type;\n this.domain = domain;\n this.customColors = customColors;\n\n this.scale = this.generateColorScheme(scheme, type, this.domain);\n }\n\n generateColorScheme(scheme: string | Color, type: ScaleType, domain: number[] | string[]): any {\n if (typeof scheme === 'string') {\n scheme = colorSets.find(cs => {\n return cs.name === scheme;\n });\n }\n\n let colorScale: ScaleQuantile<number> | ScaleOrdinal<string, unknown> | ScaleLinear<number, number>;\n switch (type) {\n case ScaleType.Quantile:\n colorScale = scaleQuantile()\n .range(scheme.domain as any)\n .domain(domain as number[]);\n break;\n case ScaleType.Ordinal:\n colorScale = scaleOrdinal()\n .range(scheme.domain)\n .domain(domain as string[]);\n break;\n case ScaleType.Linear:\n {\n const colorDomain = [...scheme.domain];\n if (colorDomain.length === 1) {\n colorDomain.push(colorDomain[0]);\n this.colorDomain = colorDomain;\n }\n\n const points = range(0, 1, 1.0 / colorDomain.length);\n colorScale = scaleLinear()\n .range(colorDomain as any)\n .domain(points);\n }\n break;\n default:\n break;\n }\n\n return colorScale;\n }\n\n getColor(value: StringOrNumberOrDate): string {\n if (value === undefined || value === null) {\n throw new Error('Value can not be null');\n }\n if (this.scaleType === ScaleType.Linear) {\n const valueScale = scaleLinear()\n .domain(this.domain as number[])\n .range([0, 1]);\n\n return this.scale(valueScale(value as number));\n } else {\n if (typeof this.customColors === 'function') {\n return this.customColors(value);\n }\n\n const formattedValue = value.toString();\n let found: any; // todo type customColors\n if (this.customColors && this.customColors.length > 0) {\n found = this.customColors.find(mapping => {\n return mapping.name.toLowerCase() === formattedValue.toLowerCase();\n });\n }\n\n if (found) {\n return found.value;\n } else {\n return this.scale(value);\n }\n }\n }\n\n getLinearGradientStops(value: number | string, start?: number | string): Gradient[] {\n if (start === undefined) {\n start = this.domain[0];\n }\n const valueScale = scaleLinear()\n .domain(this.domain as number[])\n .range([0, 1]);\n\n const colorValueScale = scaleBand().domain(this.colorDomain).range([0, 1]);\n\n const endColor = this.getColor(value);\n\n // generate the stops\n const startVal = valueScale(start as number);\n const startColor = this.getColor(start);\n\n const endVal = valueScale(value as number);\n let i = 1;\n let currentVal = startVal;\n const stops: Gradient[] = [];\n\n stops.push({\n color: startColor,\n offset: startVal,\n originalOffset: startVal,\n opacity: 1\n });\n\n while (currentVal < endVal && i < this.colorDomain.length) {\n const color = this.colorDomain[i];\n const offset = colorValueScale(color);\n if (offset <= startVal) {\n i++;\n continue;\n }\n\n if (offset.toFixed(4) >= (endVal - colorValueScale.bandwidth()).toFixed(4)) {\n break;\n }\n\n stops.push({\n color,\n offset,\n opacity: 1\n });\n currentVal = offset;\n i++;\n }\n\n if (stops[stops.length - 1].offset < 100) {\n stops.push({\n color: endColor,\n offset: endVal,\n opacity: 1\n });\n }\n\n if (endVal === startVal) {\n stops[0].offset = 0;\n stops[1].offset = 100;\n } else {\n // normalize the offsets into percentages\n if (stops[stops.length - 1].offset !== 100) {\n for (const s of stops) {\n s.offset = ((s.offset - startVal) / (endVal - startVal)) * 100;\n }\n }\n }\n\n return stops;\n }\n}\n","import { ScaleType } from './types/scale-type.enum';\nimport { StringOrNumberOrDate } from '../models/chart-data.model';\n/**\n * Based on the data, return an array with unique values.\n *\n * @export\n * @returns array\n */\nexport function getUniqueXDomainValues(results: any[]): any[] {\n const valueSet = new Set();\n for (const result of results) {\n for (const d of result.series) {\n valueSet.add(d.name);\n }\n }\n return Array.from(valueSet);\n}\n\n/**\n * Get the scaleType of enumerable of values.\n * @returns 'time', 'linear' or 'ordinal'\n */\nexport function getScaleType(values: any[], checkDateType: boolean = true): ScaleType {\n if (checkDateType) {\n const allDates = values.every(value => value instanceof Date);\n if (allDates) {\n return ScaleType.Time;\n }\n }\n\n const allNumbers = values.every(value => typeof value === 'number');\n if (allNumbers) {\n return ScaleType.Linear;\n }\n\n return ScaleType.Ordinal;\n}\n\nexport function getXDomainArray(\n values: Array<string | number | Date>,\n xScaleMin?: number,\n xScaleMax?: number\n): { domain: any[]; xSet: any[]; scaleType: string } {\n const scaleType = getScaleType(values);\n let xSet: StringOrNumberOrDate[] = [];\n let domain: StringOrNumberOrDate[] = [];\n\n if (scaleType === ScaleType.Linear) {\n values = values.map(v => Number(v));\n }\n\n let min: number;\n let max: number;\n if (scaleType === ScaleType.Time || scaleType === ScaleType.Linear) {\n const mappedValues = values.map(v => Number(v));\n min = xScaleMin ? xScaleMin : Math.min(...mappedValues);\n max = xScaleMax ? xScaleMax : Math.max(...mappedValues);\n }\n\n if (scaleType === ScaleType.Time) {\n domain = [new Date(min), new Date(max)];\n xSet = [...values].sort((a: Date, b: Date) => {\n const aDate = a.getTime();\n const bDate = b.getTime();\n if (aDate > bDate) return 1;\n if (bDate > aDate) return -1;\n return 0;\n });\n } else if (scaleType === ScaleType.Linear) {\n domain = [min, max];\n // Use compare function to sort numbers numerically\n xSet = [...values].sort((a: number, b: number) => a - b);\n } else {\n domain = values;\n xSet = values;\n }\n\n return { domain, xSet, scaleType };\n}\n","import {\n Component,\n Input,\n Output,\n EventEmitter,\n ViewEncapsulation,\n HostListener,\n ChangeDetectionStrategy,\n ContentChild,\n TemplateRef,\n TrackByFunction\n} from '@angular/core';\nimport { scaleLinear, scalePoint, scaleTime } from 'd3-scale';\nimport { CurveFactory, curveLinear } from 'd3-shape';\n\nimport { calculateViewDimensions } from '../common/view-dimensions.helper';\nimport { ColorHelper } from '../common/color.helper';\nimport { BaseChartComponent } from '../common/base-chart.component';\nimport { id } from '../utils/id';\nimport { getUniqueXDomainValues, getScaleType } from '../common/domain.helper';\nimport { isDate, isNumber } from '../utils/types';\nimport { Series } from '../models/chart-data.model';\nimport { LegendOptions, LegendPosition } from '../common/types/legend.model';\nimport { ViewDimensions } from '../common/types/view-dimension.interface';\nimport { ScaleType } from '../common/types/scale-type.enum';\n\n@Component({\n selector: 'ngx-charts-area-chart',\n template: `\n <ngx-charts-chart\n [view]=\"[width, height]\"\n [showLegend]=\"legend\"\n [legendOptions]=\"legendOptions\"\n [activeEntries]=\"activeEntries\"\n [animations]=\"animations\"\n (legendLabelClick)=\"onClick($event)\"\n (legendLabelActivate)=\"onActivate($event)\"\n (legendLabelDeactivate)=\"onDeactivate($event)\"\n >\n <svg:defs>\n <svg:clipPath [attr.id]=\"clipPathId\">\n <svg:rect\n [attr.width]=\"dims.width + 10\"\n [attr.height]=\"dims.height + 10\"\n [attr.transform]=\"'translate(-5, -5)'\"\n />\n </svg:clipPath>\n </svg:defs>\n <svg:g [attr.transform]=\"transform\" class=\"area-chart chart\">\n <svg:g\n ngx-charts-x-axis\n *ngIf=\"xAxis\"\n [xScale]=\"xScale\"\n [dims]=\"dims\"\n [showGridLines]=\"showGridLines\"\n [showLabel]=\"showXAxisLabel\"\n [labelText]=\"xAxisLabel\"\n [trimTicks]=\"trimXAxisTicks\"\n [rotateTicks]=\"rotateXAxisTicks\"\n [maxTickLength]=\"maxXAxisTickLength\"\n [tickFormatting]=\"xAxisTickFormatting\"\n [ticks]=\"xAxisTicks\"\n (dimensionsChanged)=\"updateXAxisHeight($event)\"\n ></svg:g>\n <svg:g\n ngx-charts-y-axis\n *ngIf=\"yAxis\"\n [yScale]=\"yScale\"\n [dims]=\"dims\"\n [showGridLines]=\"showGridLines\"\n [showLabel]=\"showYAxisLabel\"\n [labelText]=\"yAxisLabel\"\n [trimTicks]=\"trimYAxisTicks\"\n [maxTickLength]=\"maxYAxisTickLength\"\n [tickFormatting]=\"yAxisTickFormatting\"\n [ticks]=\"yAxisTicks\"\n (dimensionsChanged)=\"updateYAxisWidth($event)\"\n ></svg:g>\n <svg:g [attr.clip-path]=\"clipPath\">\n <svg:g *ngFor=\"let series of results; trackBy: trackBy\">\n <svg:g\n ngx-charts-area-series\n [xScale]=\"xScale\"\n [yScale]=\"yScale\"\n [baseValue]=\"baseValue\"\n [colors]=\"colors\"\n [data]=\"series\"\n [activeEntries]=\"activeEntries\"\n [scaleType]=\"scaleType\"\n [gradient]=\"gradient\"\n [curve]=\"curve\"\n [animations]=\"animations\"\n />\n </svg:g>\n\n <svg:g *ngIf=\"!tooltipDisabled\" (mouseleave)=\"hideCircles()\">\n <svg:g\n ngx-charts-tooltip-area\n [dims]=\"dims\"\n [xSet]=\"xSet\"\n [xScale]=\"xScale\"\n [yScale]=\"yScale\"\n [results]=\"results\"\n [colors]=\"colors\"\n [tooltipDisabled]=\"tooltipDisabled\"\n [tooltipTemplate]=\"seriesTooltipTemplate\"\n (hover)=\"updateHoveredVertical($event)\"\n />\n\n <svg:g *ngFor=\"let series of results\">\n <svg:g\n ngx-charts-circle-series\n [xScale]=\"xScale\"\n [yScale]=\"yScale\"\n [colors]=\"colors\"\n [activeEntries]=\"activeEntries\"\n [data]=\"series\"\n [scaleType]=\"scaleType\"\n [visibleValue]=\"hoveredVertical\"\n [tooltipDisabled]=\"tooltipDisabled\"\n [tooltipTemplate]=\"tooltipTemplate\"\n (select)=\"onClick($event, series)\"\n (activate)=\"onActivate($event)\"\n (deactivate)=\"onDeactivate($event)\"\n />\n </svg:g>\n </svg:g>\n </svg:g>\n </svg:g>\n <svg:g\n ngx-charts-timeline\n *ngIf=\"timeline && scaleType != 'ordinal'\"\n [attr.transform]=\"timelineTransform\"\n [results]=\"results\"\n [view]=\"[timelineWidth, height]\"\n [height]=\"timelineHeight\"\n [scheme]=\"scheme\"\n [customColors]=\"customColors\"\n [legend]=\"legend\"\n [scaleType]=\"scaleType\"\n (onDomainChange)=\"updateDomain($event)\"\n >\n <svg:g *ngFor=\"let series of results; trackBy: trackBy\">\n <svg:g\n ngx-charts-area-series\n [xScale]=\"timelineXScale\"\n [yScale]=\"timelineYScale\"\n [baseValue]=\"baseValue\"\n [colors]=\"colors\"\n [data]=\"series\"\n [scaleType]=\"scaleType\"\n [gradient]=\"gradient\"\n [curve]=\"curve\"\n [animations]=\"animations\"\n />\n </svg:g>\n </svg:g>\n </ngx-charts-chart>\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n styleUrls: ['../common/base-chart.component.scss'],\n encapsulation: ViewEncapsulation.None\n})\nexport class AreaChartComponent extends BaseChartComponent {\n @Input() legend: boolean = false;\n @Input() legendTitle: string = 'Legend';\n @Input() legendPosition: LegendPosition = LegendPosition.Right;\n @Input() xAxis: boolean = false;\n @Input() yAxis: boolean = false;\n @Input() baseValue: any = 'auto';\n @Input() autoScale: boolean = false;\n @Input() showXAxisLabel: boolean;\n @Input() showYAxisLabel: boolean;\n @Input() xAxisLabel: string;\n @Input() yAxisLabel: string;\n @Input() timeline: boolean = false;\n @Input() gradient: boolean;\n @Input() showGridLines: boolean = true;\n @Input() curve: CurveFactory = curveLinear;\n @Input() activeEntries: any[] = [];\n @Input() schemeType: ScaleType;\n @Input() trimXAxisTicks: boolean = true;\n @Input() trimYAxisTicks: boolean = true;\n @Input() rotateXAxisTicks: boolean = true;\n @Input() maxXAxisTickLength: number = 16;\n @Input() maxYAxisTickLength: number = 16;\n @Input() xAxisTickFormatting: any;\n @Input() yAxisTickFormatting: any;\n @Input() xAxisTicks: any[];\n @Input() yAxisTicks: any[];\n @Input() roundDomains: boolean = false;\n @Input() tooltipDisabled: boolean = false;\n @Input() xScaleMin: any;\n @Input() xScaleMax: any;\n @Input() yScaleMin: number;\n @Input() yScaleMax: number;\n\n @Output() activate: EventEmitter<any> = new EventEmitter();\n @Output() deactivate: EventEmitter<any> = new EventEmitter();\n\n @ContentChild('tooltipTemplate') tooltipTemplate: TemplateRef<any>;\n @ContentChild('seriesTooltipTemplate') seriesTooltipTemplate: TemplateRef<any>;\n\n dims: ViewDimensions;\n xSet: any;\n xDomain: any[];\n yDomain: [number, number];\n seriesDomain: string[];\n xScale: any;\n yScale: any;\n transform: string;\n colors: ColorHelper;\n clipPathId: string;\n clipPath: string;\n scaleType: ScaleType;\n series: Series;\n margin: number[] = [10, 20, 10, 20];\n hoveredVertical: any; // the value of the x axis that is hovered over\n xAxisHeight: number = 0;\n yAxisWidth: number = 0;\n filteredDomain: any;\n legendOptions: LegendOptions;\n\n timelineWidth: number;\n timelineHeight: number = 50;\n timelineXScale: any;\n timelineYScale: any;\n timelineXDomain: any[];\n timelineTransform: any;\n timelinePadding: number = 10;\n\n update(): void {\n super.update();\n\n this.dims = calculateViewDimensions({\n width: this.width,\n height: this.height,\n margins: this.margin,\n showXAxis: this.xAxis,\n showYAxis: this.yAxis,\n xAxisHeight: this.xAxisHeight,\n yAxisWidth: this.yAxisWidth,\n showXLabel: this.showXAxisLabel,\n showYLabel: this.showYAxisLabel,\n showLegend: this.legend,\n legendType: this.schemeType,\n legendPosition: this.legendPosition\n });\n\n if (this.timeline) {\n this.dims.height -= this.timelineHeight + this.margin[2] + this.timelinePadding;\n }\n\n this.xDomain = this.getXDomain();\n if (this.filteredDomain) {\n this.xDomain = this.filteredDomain;\n }\n\n this.yDomain = this.getYDomain();\n this.seriesDomain = this.getSeriesDomain();\n\n this.xScale = this.getXScale(this.xDomain, this.dims.width);\n this.yScale = this.getYScale(this.yDomain, this.dims.height);\n\n this.updateTimeline();\n\n this.setColors();\n this.legendOptions = this.getLegendOptions();\n\n this.transform = `translate(${this.dims.xOffset}, ${this.margin[0]})`;\n\n this.clipPathId = 'clip' + id().toString();\n this.clipPath = `url(#${this.clipPathId})`;\n }\n\n updateTimeline(): void {\n if (this.timeline) {\n this.timelineWidth = this.dims.width;\n this.timelineXDomain = this.getXDomain();\n this.timelineXScale = this.getXScale(this.timelineXDomain, this.timelineWidth);\n this.timelineYScale = this.getYScale(this.yDomain, this.timelineHeight);\n this.timelineTransform = `translate(${this.dims.xOffset}, ${-this.margin[2]})`;\n }\n }\n\n getXDomain(): any[] {\n let values = getUniqueXDomainValues(this.results);\n\n this.scaleType = getScaleType(values);\n let domain = [];\n\n if (this.scaleType === ScaleType.Linear) {\n values = values.map(v => Number(v));\n }\n\n let min;\n let max;\n if (this.scaleType === ScaleType.Time || this.scaleType === ScaleType.Linear) {\n min = this.xScaleMin ? this.xScaleMin : Math.min(...values);\n\n max = this.xScaleMax ? this.xScaleMax : Math.max(...values);\n }\n\n if (this.scaleType === ScaleType.Time) {\n domain = [new Date(min), new Date(max)];\n this.xSet = [...values].sort((a, b) => {\n const aDate = a.getTime();\n const bDate = b.getTime();\n if (aDate > bDate) return 1;\n if (bDate > aDate) return -1;\n return 0;\n });\n } else if (this.scaleType === ScaleType.Linear) {\n domain = [min, max];\n // Use compare function to sort numbers numerically\n this.xSet = [...values].sort((a, b) => a - b);\n } else {\n domain = values;\n this.xSet = values;\n }\n\n return domain;\n }\n\n getYDomain(): [number, number] {\n const domain = [];\n\n for (const results of this.results) {\n for (const d of results.series) {\n if (!domain.includes(d.value)) {\n domain.push(d.value);\n }\n }\n }\n\n const values = [...domain];\n if (!this.autoScale) {\n values.push(0);\n }\n if (this.baseValue !== 'auto') {\n values.push(this.baseValue);\n }\n\n const min = this.yScaleMin ? this.yScaleMin : Math.min(...values);\n\n const max = this.yScaleMax ? this.yScaleMax : Math.max(...values);\n\n return [min, max];\n }\n\n getSeriesDomain(): string[] {\n return this.results.map(d => d.name);\n }\n\n getXScale(domain, width: number): number {\n let scale;\n\n if (this.scaleType === ScaleType.Time) {\n scale = scaleTime();\n } else if (this.scaleType === ScaleType.Linear) {\n scale = scaleLinear();\n } else if (this.scaleType === ScaleType.Ordinal) {\n scale = scalePoint().padding(0.1);\n }\n\n scale.range([0, width]).domain(domain);\n\n return this.roundDomains ? scale.nice() : scale;\n }\n\n getYScale(domain: [number, number], height: number): any {\n const scale = scaleLinear().range([height, 0]).domain(domain);\n return this.roundDomains ? scale.nice() : scale;\n }\n\n getScaleType(values): ScaleType {\n let date = true;\n let num = true;\n for (const value of values) {\n if (isDate(value)) {\n date = false;\n }\n if (isNumber(value)) {\n num = false;\n }\n }\n\n if (date) {\n return ScaleType.Time;\n }\n\n if (num) {\n return ScaleType.Linear;\n }\n\n return ScaleType.Ordinal;\n }\n\n updateDomain(domain): void {\n this.filteredDomain = domain;\n this.xDomain = this.filteredDomain;\n this.xScale = this.getXScale(this.xDomain, this.dims.width);\n }\n\n updateHoveredVertical(item): void {\n this.hoveredVertical = item.value;\n this.deactivateAll();\n }\n\n @HostListener('mouseleave')\n hideCircles(): void {\n this.hoveredVertical = null;\n this.deactivateAll();\n }\n\n onClick(data, series?: Series): void {\n if (series) {\n data.series = series.name;\n }\n\n this.select.emit(data);\n }\n\n trackBy: TrackByFunction<Series> = (index: number, item: Series) => {\n return item.name;\n };\n\n setColors(): void {\n let domain;\n if (this.schemeType === ScaleType.Ordinal) {\n domain = this.seriesDomain;\n } else {\n domain = this.yDomain;\n }\n\n this.colors = new ColorHelper(this.scheme, this.schemeType, domain, this.customColors);\n }\n\n getLegendOptions(): LegendOptions {\n const opts: LegendOptions = {\n scaleType: this.schemeType as any,\n colors: undefined,\n domain: [],\n title: undefined,\n position: this.legendPosition\n };\n if (opts.scaleType === ScaleType.Ordinal) {\n opts.domain = this.seriesDomain;\n opts.colors = this.colors;\n opts.title = this.legendTitle;\n } else {\n opts.domain = this.yDomain;\n opts.colors = this.colors.scale;\n }\n return opts;\n }\n\n updateYAxisWidth({ width }: { width: number }): void {\n this.yAxisWidth = width;\n this.update();\n }\n\n updateXAxisHeight({ height }: { height: number }): void {\n this.xAxisHeight = height;\n this.update();\n }\n\n onActivate(item): void {\n const idx = this.activeEntries.findIndex(d => {\n return d.name === item.name && d.value === item.value;\n });\n if (idx > -1) {\n return;\n }\n\n this.activeEntries = [item, ...this.activeEntries];\n this.activate.emit({ value: item, entries: this.activeEntries });\n }\n\n onDeactivate(item): void {\n const idx = this.activeEntries.findIndex(d => {\n return d.name === item.name && d.value === item.value;\n });\n\n this.activeEntries.splice(idx, 1);\n this.activeEntries = [...this.activeEntries];\n\n this.deactivate.emit({ value: item, entries: this.activeEntries });\n }\n\n deactivateAll(): void {\n this.activeEntries = [...this.activeEntries];\n for (const entry of this.activeEntries) {\n this.deactivate.emit({ value: entry, entries: [] });\n }\n this.activeEntries = [];\n }\n}\n","import {\n Component,\n Input,\n Output,\n EventEmitter,\n HostListener,\n ViewEncapsulation,\n ChangeDetectionStrategy,\n ContentChild,\n TemplateRef,\n TrackByFunction\n} from '@angular/core';\nimport { scaleLinear, scalePoint, scaleTime } from 'd3-scale';\nimport { curveLinear } from 'd3-shape';\n\nimport { calculateViewDimensions } from '../common/view-dimensions.helper';\nimport { ColorHelper } from '../common/color.helper';\nimport { BaseChartComponent } from '../common/base-chart.component';\nimport { id } from '../utils/id';\nimport { getUniqueXDomainValues, getScaleType } from '../common/domain.helper';\nimport { Series } from '../models/chart-data.model';\nimport { SeriesType } from '../common/circle-series.component';\nimport { LegendOptions, LegendPosition } from '../common/types/legend.model';\nimport { ScaleType } from '../common/types/scale-type.enum';\nimport { ViewDimensions } from '../common/types/view-dimension.interface';\n\n@Component({\n selector: 'ngx-charts-area-chart-normalized',\n template: `\n <ngx-charts-chart\n [view]=\"[width, height]\"\n [showLegend]=\"legend\"\n [legendOptions]=\"legendOptions\"\n [activeEntries]=\"activeEntries\"\n [animations]=\"animations\"\n (legendLabelClick)=\"onClick($event)\"\n (legendLabelActivate)=\"onActivate($event)\"\n (legendLabelDeactivate)=\"onDeactivate($event)\"\n >\n <svg:defs>\n <svg:clipPath [attr.id]=\"clipPathId\">\n <svg:rect\n [attr.width]=\"dims.width + 10\"\n [attr.height]=\"dims.height + 10\"\n [attr.transform]=\"'translate(-5, -5)'\"\n />\n </svg:clipPath>\n </svg:defs>\n <svg:g [attr.transform]=\"transform\" class=\"area-chart chart\">\n <svg:g\n ngx-charts-x-axis\n *ngIf=\"xAxis\"\n [xScale]=\"xScale\"\n [dims]=\"dims\"\n [showGridLines]=\"showGridLines\"\n [showLabel]=\"showXAxisLabel\"\n [labelText]=\"xAxisLabel\"\n [trimTicks]=\"trimXAxisTicks\"\n [rotateTicks]=\"rotateXAxisTicks\"\n [maxTickLength]=\"maxXAxisTickLength\"\n [tickFormatting]=\"xAxisTickFormatting\"\n [ticks]=\"xAxisTicks\"\n (dimensionsChanged)=\"updateXAxisHeight($event)\"\n ></svg:g>\n <svg:g\n ngx-charts-y-axis\n *ngIf=\"yAxis\"\n [yScale]=\"yScale\"\n [dims]=\"dims\"\n [showGridLines]=\"showGridLines\"\n [showLabel]=\"showYAxisLabel\"\n [labelText]=\"yAxisLabel\"\n [trimTicks]=\"trimYAxisTicks\"\n [maxTickLength]=\"maxYAxisTickLength\"\n [tickFormatting]=\"yAxisTickFormatting\"\n [ticks]=\"yAxisTicks\"\n (dimensionsChanged)=\"updateYAxisWidth($event)\"\n ></svg:g>\n <svg:g [attr.clip-path]=\"clipPath\">\n <svg:g *ngFor=\"let series of results; trackBy: trackBy\">\n <svg:g\n ngx-charts-area-series\n [xScale]=\"xScale\"\n [yScale]=\"yScale\"\n [colors]=\"colors\"\n [data]=\"series\"\n [scaleType]=\"scaleType\"\n [activeEntries]=\"activeEntries\"\n [gradient]=\"gradient\"\n [normalized]=\"true\"\n [curve]=\"curve\"\n [animations]=\"animations\"\n />\n </svg:g>\n\n <svg:g *ngIf=\"!tooltipDisabled\" (mouseleave)=\"hideCircles()\">\n <svg:g\n ngx-charts-tooltip-area\n [dims]=\"dims\"\n [xSet]=\"xSet\"\n [xScale]=\"xScale\"\n [yScale]=\"yScale\"\n [results]=\"results\"\n [colors]=\"colors\"\n [showPercentage]=\"true\"\n [tooltipDisabled]=\"tooltipDisabled\"\n [tooltipTemplate]=\"seriesTooltipTemplate\"\n (hover)=\"updateHoveredVertical($event)\"\n />\n\n <svg:g *ngFor=\"let series of results\">\n <svg:g\n ngx-charts-circle-series\n [type]=\"seriesType.Stacked\"\n [xScale]=\"xScale\"\n [yScale]=\"yScale\"\n [colors]=\"colors\"\n [activeEntries]=\"activeEntries\"\n [data]=\"series\"\n [scaleType]=\"scaleType\"\n [visibleValue]=\"hoveredVertical\"\n [tooltipDisabled]=\"tooltipDisabled\"\n [tooltipTemplate]=\"tooltipTemplate\"\n (select)=\"onClick($event, series)\"\n (activate)=\"onActivate($event)\"\n (deactivate)=\"onDeactivate($event)\"\n />\n </svg:g>\n </svg:g>\n </svg:g>\n </svg:g>\n <svg:g\n ngx-charts-timeline\n *ngIf=\"timeline && scaleType != 'ordinal'\"\n [attr.transform]=\"timelineTransform\"\n [results]=\"results\"\n [view]=\"[timelineWidth, height]\"\n [height]=\"timelineHeight\"\n [scheme]=\"scheme\"\n [customColors]=\"customColors\"\n [legend]=\"legend\"\n [scaleType]=\"scaleType\"\n (onDomainChange)=\"updateDomain($event)\"\n >\n <svg:g *ngFor=\"let series of results; trackBy: trackBy\">\n <svg:g\n ngx-charts-area-series\n [xScale]=\"timelineXScale\"\n [yScale]=\"timelineYScale\"\n [colors]=\"colors\"\n [data]=\"series\"\n [scaleType]=\"scaleType\"\n [gradient]=\"gradient\"\n [normalized]=\"true\"\n [curve]=\"curve\"\n [animations]=\"animations\"\n />\n </svg:g>\n </svg:g>\n </ngx-charts-chart>\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n styleUrls: ['../common/base-chart.component.scss'],\n encapsulation: ViewEncapsulation.None\n})\nexport class AreaChartNormalizedComponent extends BaseChartComponent {\n @Input() legend = false;\n @Input() legendTitle: string = 'Legend';\n @Input() legendPosition: LegendPosition = LegendPosition.Right;\n @Input() xAxis: boolean;\n @Input() yAxis: boolean;\n @Input() showXAxisLabel: boolean = false;\n @Input() showYAxisLabel: boolean = false;\n @Input() xAxisLabel: string;\n @Input() yAxisLabel: string;\n @Input() timeline;\n @Input() gradient;\n @Input() showGridLines: boolean = true;\n @Input() curve: any = curveLinear;\n @Input() activeEntries: any[] = [];\n @Input() schemeType: ScaleType;\n @Input() trimXAxisTicks: boolean = true;\n @Input() trimYAxisTicks: boolean = true;\n @Input() rotateXAxisTicks: boolean = true;\n @Input() maxXAxisTickLength: number = 16;\n @Input() maxYAxisTickLength: number = 16;\n @Input() xAxisTickFormatting: any;\n @Input() yAxisTickFormatting: any;\n @Input() xAxisTicks: any[];\n @Input() yAxisTicks: any[];\n @Input() roundDomains: boolean = false;\n @Input() tooltipDisabled: boolean = false;\n\n @Output() activate: EventEmitter<any> = new EventEmitter();\n @Output() deactivate: EventEmitter<any> = new EventEmitter();\n\n @ContentChild('tooltipTemplate') tooltipTemplate: TemplateRef<any>;\n @ContentChild('seriesTooltipTemplate') seriesTooltipTemplate: TemplateRef<any>;\n\n dims: ViewDimensions;\n scaleType: ScaleType;\n xDomain: any[];\n xSet: any[]; // the set of all values on the X Axis\n yDomain: [number, number] = [0, 100];\n seriesDomain: any;\n xScale: any;\n yScale: any;\n transform: string;\n clipPathId: string;\n clipPath: string;\n colors: ColorHelper;\n margin: number[] = [10, 20, 10, 20];\n tooltipAreas: any[];\n hoveredVertical: any; // the value of the x axis that is hovered over\n xAxisHeight: number = 0;\n yAxisWidth: number = 0;\n filteredDomain: any;\n legendOptions: LegendOptions;\n\n seriesType = SeriesType;\n\n timelineWidth: any;\n timelineHeight: number = 50;\n timelineXScale: any;\n timelineYScale: any;\n timelineXDomain: any;\n timelineTransform: any;\n timelinePadding: number = 10;\n\n update(): void {\n super.update();\n\n this.dims = calculateViewDimensions({\n width: this.width,\n height: this.height,\n margins: this.margin,\n showXAxis: this.xAxis,\n showYAxis: this.yAxis,\n xAxisHeight: this.xAxisHeight,\n yAxisWidth: this.yAxisWidth,\n showXLabel: this.showXAxisLabel,\n showYLabel: this.showYAxisLabel,\n showLegend: this.legend,\n legendType: this.schemeType,\n legendPosition: this.legendPosition\n });\n\n if (this.timeline) {\n this.dims.height -= this.timelineHeight + this.margin[2] + this.timelinePadding;\n }\n\n this.xDomain = this.getXDomain();\n if (this.filteredDomain) {\n this.xDomain = this.filteredDomain;\n }\n\n this.seriesDomain = this.getSeriesDomain();\n\n this.xScale = this.getXScale(this.xDomain, this.dims.width);\n this.yScale = this.getYScale(this.yDomain, this.dims.height);\n\n for (let i = 0; i < this.xSet.length; i++) {\n const val = this.xSet[i];\n let d0 = 0;\n\n let total = 0;\n for (const group of this.results) {\n const d = group.series.find(item => {\n let a = item.name;\n let b = val;\n if (this.scaleType === ScaleType.Time) {\n a = a.valueOf();\n b = b.valueOf();\n }\n return a === b;\n });\n if (d) {\n total += d.value;\n }\n }\n\n for (const group of this.results) {\n let d = group.series.find(item => {\n let a = item.name;\n let b = val;\n if (this.scaleType === ScaleType.Time) {\n a = a.valueOf();\n b = b.valueOf();\n }\n return a === b;\n });\n\n if (d) {\n d.d0 = d0;\n d.d1 = d0 + d.value;\n d0 += d.value;\n } else {\n d = {\n name: val,\n value: 0,\n d0,\n d1: d0\n };\n group.series.push(d);\n }\n\n if (total > 0) {\n d.d0 = (d.d0 * 100) / total;\n d.d1 = (d.d1 * 100) / total;\n } else {\n d.d0 = 0;\n d.d1 = 0;\n }\n }\n }\n\n this.updateTimeline();\n\n this.setColors();\n this.legendOptions = this.getLegendOptions();\n\n this.transform = `translate(${this.dims.xOffset} , ${this.margin[0]})`;\n\n this.clipPathId = 'clip' + id().toString();\n this.clipPath = `url(#${this.clipPathId})`;\n }\n\n updateTimeline(): void {\n if (this.timeline) {\n this.timelineWidth = this.dims.width;\n this.timelineXDomain = this.getXDomain();\n this.timelineXScale = this.getXScale(this.timelineXDomain, this.timelineWidth);\n this.timelineYScale = this.getYScale(this.yDomain, this.timelineHeight);\n this.timelineTransform = `translate(${this.dims.xOffset}, ${-this.margin[2]})`;\n }\n }\n\n getXDomain(): any[] {\n let values = getUniqueXDomainValues(this.results);\n\n this.scaleType = getScaleType(values);\n let domain = [];\n\n if (this.scaleType === ScaleType.Time) {\n const min = Math.min(...values);\n const max = Math.max(...values);\n domain = [new Date(min), new Date(max)];\n this.xSet = [...values].sort((a, b) => {\n const aDate = a.getTime();\n const bDate = b.getTime();\n if (aDate > bDate) return 1;\n if (bDate > aDate) return -1;\n return 0;\n });\n } else if (this.scaleType === ScaleType.Linear) {\n values = values.map(v => Number(v));\n const min = Math.min(...values);\n const max = Math.max(...values);\n domain = [min, max];\n // Use compare function to sort numbers numerically\n this.xSet = [...values].sort((a, b) => a - b);\n } else {\n domain = values;\n this.xSet = values;\n }\n\n return domain;\n }\n\n getSeriesDomain(): string[] {\n return this.results.map(d => d.name);\n }\n\n getXScale(domain, width: number): any {\n let scale;\n\n if (this.scaleType === ScaleType.Time) {\n scale = scaleTime();\n } else if (this.scaleType === ScaleType.Linear) {\n scale = scaleLinear();\n } else if (this.scaleType === ScaleType.Ordinal) {\n scale = scalePoint().padding(0.1);\n }\n\n scale.range([0, width]).domain(domain);\n\n return this.roundDomains ? scale.nice() : scale;\n }\n\n getYScale(domain, height: number): any {\n const scale = scaleLinear().range([height, 0]).domain(domain);\n return this.roundDomains ? scale.nice() : scale;\n }\n\n updateDomain(domain): void {\n this.filteredDomain = domain;\n this.xDomain = this.filteredDomain;\n this.xScale = this.getXScale(this.xDomain, this.dims.width);\n }\n\n updateHoveredVertical(item): void {\n this.hoveredVertical = item.value;\n this.deactivateAll();\n }\n\n @HostListener('mouseleave')\n hideCircles(): void {\n this.hoveredVertical = null;\n this.deactivateAll();\n }\n\n onClick(data, series?): void {\n if (series) {\n data.series = series.name;\n }\n\n this.select.emit(data);\n }\n\n trackBy: TrackByFunction<Series> = (index: number, item: Series) => {\n return item.name;\n };\n\n setColors(): void {\n let domain;\n if (this.schemeType === ScaleType.Ordinal) {\n domain = this.seriesDomain;\n } else {\n domain = this.yDomain;\n }\n\n this.colors = new ColorHelper(this.scheme, this.schemeType, domain, this.customColors);\n }\n\n getLegendOptions(): LegendOptions {\n const opts: LegendOptions = {\n scaleType: this.schemeType as any,\n colors: undefined,\n domain: [],\n title: undefined,\n position: this.legendPosition\n };\n if (opts.scaleType === ScaleType.Ordinal) {\n opts.domain = this.seriesDomain;\n opts.colors = this.colors;\n opts.title = this.legendTitle;\n } else {\n opts.domain = this.yDomain;\n opts.colors = this.colors.scale;\n }\n return opts;\n }\n\n updateYAxisWidth({ width }: { width: number }): void {\n this.yAxisWidth = width;\n this.update();\n }\n\n updateXAxisHeight({ height }: { height: number }): void {\n this.xAxisHeight = height;\n this.update();\n }\n\n onActivate(item): void {\n const idx = this.activeEntries.findIndex(d => {\n return d.name === item.name && d.value === item.value;\n });\n if (idx > -1) {\n return;\n }\n\n this.activeEntries = [item, ...this.activeEntries];\n this.activate.emit({ value: item, entries: this.activeEntries });\n }\n\n onDeactivate(item): void {\n const idx = this.activeEntries.findIndex(d => {\n return d.name === item.name && d.value === item.value;\n });\n\n this.activeEntries.splice(idx, 1);\n this.activeEntries = [...this.activeEntries];\n\n this.deactivate.emit({ value: item, entries: this.activeEntries });\n }\n\n deactivateAll(): void {\n this.activeEntries = [...this.activeEntries];\n for (const entry of this.activeEntries) {\n this.deactivate.emit({ value: entry, entries: [] });\n }\n this.activeEntries = [];\n }\n}\n","import {\n Component,\n Input,\n Output,\n EventEmitter,\n ViewEncapsulation,\n HostListener,\n ChangeDetectionStrategy,\n ContentChild,\n TemplateRef\n} from '@angular/core';\nimport { scaleLinear, scalePoint, scaleTime } from 'd3-scale';\nimport { curveLinear } from 'd3-shape';\n\nimport { calculateViewDimensions } from '../common/view-dimensions.helper';\nimport { ColorHelper } from '../common/color.helper';\nimport { BaseChartComponent } from '../common/base-chart.component';\nimport { id } from '../utils/id';\nimport { getUniqueXDomainValues, getScaleType } from '../common/domain.helper';\nimport { SeriesType } from '../common/circle-series.component';\nimport { LegendOptions, LegendPosition } from '../common/types/legend.model';\nimport { ViewDimensions } from '../common/types/view-dimension.interface';\nimport { ScaleType } from '../common/types/scale-type.enum';\n\n@Component({\n selector: 'ngx-charts-area-chart-stacked',\n template: `\n <ngx-charts-chart\n [view]=\"[width, height]\"\n [showLegend]=\"legend\"\n [legendOptions]=\"legendOptions\"\n [activeEntries]=\"activeEntries\"\n [animations]=\"animations\"\n (legendLabelClick)=\"onClick($event)\"\n (legendLabelActivate)=\"onActivate($event)\"\n (legendLabelDeactivate)=\"onDeactivate($event)\"\n >\n <svg:defs>\n <svg:clipPath [attr.id]=\"clipPathId\">\n <svg:rect\n [attr.width]=\"dims.width + 10\"\n [attr.height]=\"dims.height + 10\"\n [attr.transform]=\"'translate(-5, -5)'\"\n />\n </svg:clipPath>\n </svg:defs>\n <svg:g [attr.transform]=\"transform\" class=\"area-chart chart\">\n <svg:g\n ngx-charts-x-axis\n *ngIf=\"xAxis\"\n [xScale]=\"xScale\"\n [dims]=\"dims\"\n [showGridLines]=\"showGridLines\"\n [showLabel]=\"showXAxisLabel\"\n [labelText]=\"xAxisLabel\"\n [trimTicks]=\"trimXAxisTicks\"\n [rotateTicks]=\"rotateXAxisTicks\"\n [maxTickLength]=\"maxXAxisTickLength\"\n [tickFormatting]=\"xAxisTickFormatting\"\n [ticks]=\"xAxisTicks\"\n (dimensionsChanged)=\"updateXAxisHeight($event)\"\n ></svg:g>\n <svg:g\n ngx-charts-y-axis\n *ngIf=\"yAxis\"\n [yScale]=\"yScale\"\n [dims]=\"dims\"\n [showGridLines]=\"showGridLines\"\n [showLabel]=\"showYAxisLabel\"\n [labelText]=\"yAxisLabel\"\n [trimTicks]=\"trimYAxisTicks\"\n [maxTickLength]=\"maxYAxisTickLength\"\n [tickFormatting]=\"yAxisTickFormatting\"\n [ticks]=\"yAxisTicks\"\n (dimensionsChanged)=\"updateYAxisWidth($event)\"\n ></svg:g>\n <svg:g [attr.clip-path]=\"clipPath\">\n <svg:g *ngFor=\"let series of results; trackBy: trackBy\">\n <svg:g\n ngx-charts-area-series\n [xScale]=\"xScale\"\n [yScale]=\"yScale\"\n [colors]=\"colors\"\n [data]=\"series\"\n [scaleType]=\"scaleType\"\n [gradient]=\"gradient\"\n [activeEntries]=\"activeEntries\"\n [stacked]=\"true\"\n [curve]=\"curve\"\n [animations]=\"animations\"\n />\n </svg:g>\n\n <svg:g *ngIf=\"!tooltipDisabled\" (mouseleave)=\"hideCircles()\">\n <svg:g\n ngx-charts-tooltip-area\n [dims]=\"dims\"\n [xSet]=\"xSet\"\n [xScale]=\"xScale\"\n [yScale]=\"yScale\"\n [results]=\"results\"\n [colors]=\"colors\"\n [tooltipDisabled]=\"tooltipDisabled\"\n [tooltipTemplate]=\"seriesTooltipTemplate\"\n (hover)=\"updateHoveredVertical($event)\"\n />\n\n <svg:g *ngFor=\"let series of results; trackBy: trackBy\">\n <svg:g\n ngx-charts-circle-series\n [type]=\"seriesType.Stacked\"\n [xScale]=\"xScale\"\n [yScale]=\"yScale\"\n [colors]=\"colors\"\n [activeEntries]=\"activeEntries\"\n [data]=\"series\"\n [scaleType]=\"scaleType\"\n [visibleValue]=\"hoveredVertical\"\n [tooltipDisabled]=\"tooltipDisabled\"\n [tooltipTemplate]=\"tooltipTemplate\"\n (select)=\"onClick($event, series)\"\n (activate)=\"onActivate($event)\"\n (deactivate)=\"onDeactivate($event)\"\n />\n </svg:g>\n </svg:g>\n </svg:g>\n </svg:g>\n <svg:g\n ngx-charts-timeline\n *ngIf=\"timeline && scaleType != 'ordinal'\"\n [attr.transform]=\"timelineTransform\"\n [results]=\"results\"\n [view]=\"[timelineWidth, height]\"\n [height]=\"timelineHeight\"\n [scheme]=\"scheme\"\n [customColors]=\"customColors\"\n [legend]=\"legend\"\n [scaleType]=\"scaleType\"\n (onDomainChange)=\"updateDomain($event)\"\n >\n <svg:g *ngFor=\"let series of results; trackBy: trackBy\">\n <svg:g\n ngx-charts-area-series\n [xScale]=\"timelineXScale\"\n [yScale]=\"timelineYScale\"\n [colors]=\"colors\"\n [data]=\"series\"\n [scaleType]=\"scaleType\"\n [gradient]=\"gradient\"\n [stacked]=\"true\"\n [curve]=\"curve\"\n [animations]=\"animations\"\n />\n </svg:g>\n </svg:g>\n </ngx-charts-chart>\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n styleUrls: ['../common/base-chart.component.scss'],\n encapsulation: ViewEncapsulation.None\n})\nexport class AreaChartStackedComponent extends BaseChartComponent {\n @Input() legend: boolean = false;\n @Input() legendTitle: string = 'Legend';\n @Input() legendPosition: LegendPosition = LegendPosition.Right;\n @Input() xAxis: boolean = false;\n @Input() yAxis: boolean = false;\n @Input() showXAxisLabel: boolean;\n @Input() showYAxisLabel: boolean;\n @Input() xAxisLabel: string;\n @Input() yAxisLabel: string;\n @Input() timeline: boolean = false;\n @Input() gradient: boolean;\n @Input() showGridLines: boolean = true;\n @Input() curve: any = curveLinear;\n @Input() activeEntries: any[] = [];\n @Input() schemeType: ScaleType;\n @Input() trimXAxisTicks: boolean = true;\n @Input() trimYAxisTicks: boolean = true;\n @Input() rotateXAxisTicks: boolean = true;\n @Input() maxXAxisTickLength: number = 16;\n @Input() maxYAxisTickLength: number = 16;\n @Input() xAxisTickFormatting: any;\n @Input() yAxisTickFormatting: any;\n @Input() xAxisTicks: any[];\n @Input() yAxisTicks: any[];\n @Input() roundDomains: boolean = false;\n @Input() tooltipDisabled: boolean = false;\n @Input() xScaleMin: any;\n @Input() xScaleMax: any;\n @Input() yScaleMin: number;\n @Input() yScaleMax: number;\n\n @Output() activate: EventEmitter<any> = new EventEmitter();\n @Output() deactivate: EventEmitter<any> = new EventEmitter();\n\n @ContentChild('tooltipTemplate') tooltipTemplate: TemplateRef<any>;\n @ContentChild('seriesTooltipTemplate') seriesTooltipTemplate: TemplateRef<any>;\n\n dims: ViewDimensions;\n scaleType: ScaleType;\n xDomain: any[];\n xSet: any[]; // the set of all values on the X Axis\n yDomain: [number, number];\n seriesDomain: any;\n xScale: any;\n yScale: any;\n transform: string;\n clipPathId: string;\n clipPath: string;\n colors: ColorHelper;\n margin: number[] = [10, 20, 10, 20];\n hoveredVertical: any; // the value of the x axis that is hovered over\n xAxisHeight: number = 0;\n yAxisWidth: number = 0;\n filteredDomain: any;\n legendOptions: any;\n\n timelineWidth: number;\n timelineHeight: number = 50;\n timelineXScale: any;\n timelineYScale: any;\n timelineXDomain: any;\n timelineTransform: any;\n timelinePadding: number = 10;\n\n seriesType = SeriesType;\n\n update(): void {\n super.update();\n\n this.dims = calculateViewDimensions({\n width: this.width,\n height: this.height,\n margins: this.margin,\n showXAxis: this.xAxis,\n showYAxis: this.yAxis,\n xAxisHeight: this.xAxisHeight,\n yAxisWidth: this.yAxisWidth,\n showXLabel: this.showXAxisLabel,\n showYLabel: this.showYAxisLabel,\n showLegend: this.legend,\n legendType: this.schemeType,\n legendPosition: this.legendPosition\n });\n\n if (this.timeline) {\n this.dims.height -= this.timelineHeight + this.margin[2] + this.timelinePadding;\n }\n\n this.xDomain = this.getXDomain();\n if (this.filteredDomain) {\n this.xDomain = this.filteredDomain;\n }\n\n this.yDomain = this.getYDomain();\n this.seriesDomain = this.getSeriesDomain();\n\n this.xScale = this.getXScale(this.xDomain, this.dims.width);\n this.yScale = this.getYScale(this.yDomain, this.dims.height);\n\n for (let i = 0; i < this.xSet.length; i++) {\n const val = this.xSet[i];\n let d0 = 0;\n for (const group of this.results) {\n let d = group.series.find(item => {\n let a = item.name;\n let b = val;\n if (this.scaleType === ScaleType.Time) {\n a = a.valueOf();\n b = b.valueOf();\n }\n return a === b;\n });\n\n if (d) {\n d.d0 = d0;\n d.d1 = d0 + d.value;\n d0 += d.value;\n } else {\n d = {\n name: val,\n value: 0,\n d0,\n d1: d0\n };\n group.series.push(d);\n }\n }\n }\n\n this.updateTimeline();\n\n this.setColors();\n this.legendOptions = this.getLegendOptions();\n\n this.transform = `translate(${this.dims.xOffset} , ${this.margin[0]})`;\n\n this.clipPathId = 'clip' + id().toString();\n this.clipPath = `url(#${this.clipPathId})`;\n }\n\n updateTimeline(): void {\n if (this.timeline) {\n this.timelineWidth = this.dims.width;\n this.timelineXDomain = this.getXDomain();\n this.timelineXScale = this.getXScale(this.timelineXDomain, this.timelineWidth);\n this.timelineYScale = this.getYScale(this.yDomain, this.timelineHeight);\n this.timelineTransform = `translate(${this.dims.xOffset}, ${-this.margin[2]})`;\n }\n }\n\n getXDomain(): any[] {\n let values = getUniqueXDomainValues(this.results);\n\n this.scaleType = getScaleType(values);\n let domain = [];\n\n if (this.scaleType === ScaleType.Linear) {\n values = values.map(v => Number(v));\n }\n\n let min;\n let max;\n if (this.scaleType === ScaleType.Time || this.scaleType === ScaleType.Linear) {\n min = this.xScaleMin ? this.xScaleMin : Math.min(...values);\n\n max = this.xScaleMax ? this.xScaleMax : Math.max(...values);\n }\n\n if (this.scaleType === ScaleType.Time) {\n domain = [new Date(min), new Date(max)];\n this.xSet = [...values].sort((a, b) => {\n const aDate = a.getTime();\n const bDate = b.getTime();\n if (aDate > bDate) return 1;\n if (bDate > aDate) return -1;\n return 0;\n });\n } else if (this.scaleType === ScaleType.Linear) {\n domain = [min, max];\n // Use compare function to sort numbers numerically\n this.xSet = [...values].sort((a, b) => a - b);\n } else {\n domain = values;\n this.xSet = values;\n }\n\n return domain;\n }\n\n getYDomain(): [number, number] {\n const domain = [];\n\n for (let i = 0; i < this.xSet.length; i++) {\n const val = this.xSet[i];\n let sum = 0;\n for (const group of this.results) {\n const d = group.series.find(item => {\n let a = item.name;\n let b = val;\n if (this.scaleType === ScaleType.Time) {\n a = a.valueOf();\n b = b.valueOf();\n }\n return a === b;\n });\n\n if (d) {\n sum += d.value;\n }\n }\n\n domain.push(sum);\n }\n\n const min = this.yScaleMin ? this.yScaleMin : Math.min(0, ...domain);\n\n const max = this.yScaleMax ? this.yScaleMax : Math.max(...domain);\n return [min, max];\n }\n\n getSeriesDomain(): string[] {\n return this.results.map(d => d.name);\n }\n\n getXScale(domain, width: number): any {\n let scale;\n\n if (this.scaleType === ScaleType.Time) {\n scale = scaleTime();\n } else if (this.scaleType === ScaleType.Linear) {\n scale = scaleLinear();\n } else if (this.scaleType === ScaleType.Ordinal) {\n scale = scalePoint().padding(0.1);\n }\n\n scale.range([0, width]).domain(domain);\n\n return this.roundDomains ? scale.nice() : scale;\n }\n\n getYScale(domain, height: number): any {\n const scale = scaleLinear().range([height, 0]).domain(domain);\n return this.roundDomains ? scale.nice() : scale;\n }\n\n updateDomain(domain): void {\n this.filteredDomain = domain;\n this.xDomain = this.filteredDomain;\n this.xScale = this.getXScale(this.xDomain, this.dims.width);\n }\n\n updateHoveredVertical(item) {\n this.hoveredVertical = item.value;\n this.deactivateAll();\n }\n\n @HostListener('mouseleave')\n hideCircles(): void {\n this.hoveredVertical = null;\n this.deactivateAll();\n }\n\n onClick(data, series?): void {\n if (series) {\n data.series = series.name;\n }\n\n this.select.emit(data);\n }\n\n trackBy(index, item): string {\n return `${item.name}`;\n }\n\n setColors(): void {\n let domain;\n if (this.schemeType === ScaleType.Ordinal) {\n domain = this.seriesDomain;\n } else {\n domain = this.yDomain;\n }\n\n this.colors = new ColorHelper(this.scheme, this.schemeType, domain, this.customColors);\n }\n\n getLegendOptions(): LegendOptions {\n const opts = {\n scaleType: this.schemeType as any,\n colors: undefined,\n domain: [],\n title: undefined,\n position: this.legendPosition\n };\n if (opts.scaleType === ScaleType.Ordinal) {\n opts.domain = this.seriesDomain;\n opts.colors = this.colors;\n opts.title = this.legendTitle;\n } else {\n opts.domain = this.yDomain;\n opts.colors = this.colors.scale;\n }\n return opts;\n }\n\n updateYAxisWidth({ width }: { width: number }): void {\n this.yAxisWidth = width;\n this.update();\n }\n\n updateXAxisHeight({ height }: { height: number }): void {\n this.xAxisHeight = height;\n this.update();\n }\n\n onActivate(item): void {\n const idx = this.activeEntries.findIndex(d => {\n return d.name === item.name && d.value === item.value;\n });\n if (idx > -1) {\n return;\n }\n\n this.activeEntries = [item, ...this.activeEntries];\n this.activate.emit({ value: item, entries: this.activeEntries });\n }\n\n onDeactivate(item): void {\n const idx = this.activeEntries.findIndex(d => {\n return d.name === item.name && d.value === item.value;\n });\n\n this.activeEntries.splice(idx, 1);\n this.activeEntries = [...this.activeEntries];\n\n this.deactivate.emit({ value: item, entries: this.activeEntries });\n }\n\n deactivateAll() {\n this.activeEntries = [...this.activeEntries];\n for (const entry of this.activeEntries) {\n this.deactivate.emit({ value: entry, entries: [] });\n }\n this.activeEntries = [];\n }\n}\n","export function sortLinear(data, property: string, direction = 'asc'): any[] {\n return data.sort((a, b) => {\n if (direction === 'asc') {\n return a[property] - b[property];\n } else {\n return b[property] - a[property];\n }\n });\n}\n\nexport function sortByDomain(data, property: string, direction = 'asc', domain): any[] {\n return data.sort((a, b) => {\n const aVal = a[property];\n const bVal = b[property];\n\n const aIdx = domain.indexOf(aVal);\n const bIdx = domain.indexOf(bVal);\n\n if (direction === 'asc') {\n return aIdx - bIdx;\n } else {\n return bIdx - aIdx;\n }\n });\n}\n\nexport function sortByTime(data, property: string, direction = 'asc'): any[] {\n return data.sort((a, b) => {\n const aDate = a[property].getTime();\n const bDate = b[property].getTime();\n\n if (direction === 'asc') {\n if (aDate > bDate) return 1;\n if (bDate > aDate) return -1;\n return 0;\n } else {\n if (aDate > bDate) return -1;\n if (bDate > aDate) return 1;\n return 0;\n }\n });\n}\n","import {\n Component,\n Input,\n Output,\n EventEmitter,\n OnChanges,\n SimpleChanges,\n ChangeDetectionStrategy\n} from '@angular/core';\nimport { area } from 'd3-shape';\nimport { ColorHelper } from '../common/color.helper';\nimport { Gradient } from '../common/types/gradient.interface';\nimport { ScaleType } from '../common/types/scale-type.enum';\nimport { AreaChartSeries } from '../models/chart-data.model';\nimport { sortLinear, sortByTime, sortByDomain } from '../utils/sort';\n\n@Component({\n selector: 'g[ngx-charts-area-series]',\n template: `\n <svg:g\n ngx-charts-area\n class=\"area-series\"\n [data]=\"data\"\n [path]=\"path\"\n [fill]=\"colors.getColor(data.name)\"\n [stops]=\"gradientStops\"\n [startingPath]=\"startingPath\"\n [opacity]=\"opacity\"\n [gradient]=\"gradient || hasGradient\"\n [animations]=\"animations\"\n [class.active]=\"isActive(data)\"\n [class.inactive]=\"isInactive(data)\"\n />\n `,\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class AreaSeriesComponent implements OnChanges {\n @Input() data: AreaChartSeries;\n @Input() xScale: any;\n @Input() yScale: any;\n @Input() baseValue: any = 'auto';\n @Input() colors: ColorHelper;\n @Input() scaleType: ScaleType;\n @Input() stacked: boolean = false;\n @Input() normalized: boolean = false;\n @Input() gradient: boolean;\n @Input() curve: any;\n @Input() activeEntries: any[];\n @Input() animations: boolean = true;\n\n @Output() select = new EventEmitter();\n\n opacity: number;\n path: string;\n startingPath: string;\n\n hasGradient: boolean;\n gradientStops: Gradient[];\n\n ngOnChanges(changes: SimpleChanges): void {\n this.update();\n }\n\n update(): void {\n this.updateGradient();\n\n let currentArea;\n let startingArea;\n\n const xProperty = d => {\n const label = d.name;\n return this.xScale(label);\n };\n\n if (this.stacked || this.normalized) {\n currentArea = area<any>()\n .x(xProperty)\n .y0((d, i) => this.yScale(d.d0))\n .y1((d, i) => this.yScale(d.d1));\n\n startingArea = area<any>()\n .x(xProperty)\n .y0(d => this.yScale.range()[0])\n .y1(d => this.yScale.range()[0]);\n } else {\n currentArea = area<any>()\n .x(xProperty)\n .y0(() => (this.baseValue === 'auto' ? this.yScale.range()[0] : this.yScale(this.baseValue)))\n .y1(d => this.yScale(d.value));\n\n startingArea = area<any>()\n .x(xProperty)\n .y0(d => (this.baseValue === 'auto' ? this.yScale.range()[0] : this.yScale(this.baseValue)))\n .y1(d => (this.baseValue === 'auto' ? this.yScale.range()[0] : this.yScale(this.baseValue)));\n }\n\n currentArea.curve(this.curve);\n startingArea.curve(this.curve);\n\n this.opacity = 0.8;\n\n let data = this.data.series;\n if (this.scaleType === ScaleType.Linear) {\n data = sortLinear(data, 'name');\n } else if (this.scaleType === ScaleType.Time) {\n data = sortByTime(data, 'name');\n } else {\n data = sortByDomain(data, 'name', 'asc', this.xScale.domain());\n }\n\n this.path = currentArea(data);\n this.startingPath = startingArea(data);\n }\n\n updateGradient() {\n if (this.colors.scaleType === ScaleType.Linear) {\n this.hasGradient = true;\n if (this.stacked || this.normalized) {\n const d0values = this.data.series.map(d => d.d0);\n const d1values = this.data.series.map(d => d.d1);\n const max = Math.max(...d1values);\n const min = Math.min(...d0values);\n this.gradientStops = this.colors.getLinearGradientStops(max, min);\n } else {\n const values = this.data.series.map(d => d.value);\n const max = Math.max(...values);\n this.gradientStops = this.colors.getLinearGradientStops(max);\n }\n } else {\n this.hasGradient = false;\n this.gradientStops = undefined;\n }\n }\n\n isActive(entry): boolean {\n if (!this.activeEntries) return false;\n const item = this.activeEntries.find(d => {\n return entry.name === d.name;\n });\n return item !== undefined;\n }\n\n isInactive(entry): boolean {\n if (!this.activeEntries || this.activeEntries.length === 0) return false;\n const item = this.activeEntries.find(d => {\n return entry.name === d.name;\n });\n return item === undefined;\n }\n}\n","import { NgModule } from '@angular/core';\nimport { AreaChartComponent } from './area-chart.component';\nimport { AreaChartNormalizedComponent } from './area-chart-normalized.component';\nimport { AreaChartStackedComponent } from './area-chart-stacked.component';\nimport { AreaSeriesComponent } from './area-series.component';\nimport { ChartCommonModule } from '../common/chart-common.module';\n\n@NgModule({\n imports: [ChartCommonModule],\n declarations: [AreaChartComponent, AreaChartNormalizedComponent, AreaChartStackedComponent, AreaSeriesComponent],\n exports: [AreaChartComponent, AreaChartNormalizedComponent, AreaChartStackedComponent, AreaSeriesComponent]\n})\nexport class AreaChartModule {}\n","import {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n EventEmitter,\n HostListener,\n Input,\n OnChanges,\n Output,\n SimpleChanges\n} from '@angular/core';\nimport { select } from 'd3-selection';\nimport { roundedRect } from '../common/shape.helper';\nimport { id } from '../utils/id';\nimport { DataItem } from '../models/chart-data.model';\nimport { BarOrientation } from '../common/types/bar-orientation.enum';\nimport { Gradient } from '../common/types/gradient.interface';\n\n@Component({\n selector: 'g[ngx-charts-bar]',\n template: `\n <svg:defs *ngIf=\"hasGradient\">\n <svg:g ngx-charts-svg-linear-gradient [orientation]=\"orientation\" [name]=\"gradientId\" [stops]=\"gradientStops\" />\n </svg:defs>\n <svg:path\n class=\"bar\"\n stroke=\"none\"\n role=\"img\"\n tabIndex=\"-1\"\n [class.active]=\"isActive\"\n [class.hidden]=\"hideBar\"\n [attr.d]=\"path\"\n [attr.aria-label]=\"ariaLabel\"\n [attr.fill]=\"hasGradient ? gradientFill : fill\"\n (click)=\"select.emit(data)\"\n />\n `,\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class BarComponent implements OnChanges {\n @Input() fill: string;\n @Input() data: DataItem;\n @Input() width: number;\n @Input() height: number;\n @Input() x: number;\n @Input() y: number;\n @Input() orientation: BarOrientation;\n @Input() roundEdges: boolean = true;\n @Input() gradient: boolean = false;\n @Input() offset: number = 0;\n @Input() isActive: boolean = false;\n @Input() stops: Gradient[];\n @Input() animations: boolean = true;\n @Input() ariaLabel: string;\n @Input() noBarWhenZero: boolean = true;\n\n @Output() select: EventEmitter<DataItem> = new EventEmitter();\n @Output() activate: EventEmitter<DataItem> = new EventEmitter();\n @Output() deactivate: EventEmitter<DataItem> = new EventEmitter();\n\n element: HTMLElement;\n path: string;\n gradientId: string;\n gradientFill: string;\n gradientStops: Gradient[];\n hasGradient: boolean = false;\n hideBar: boolean = false;\n\n constructor(element: ElementRef) {\n this.element = element.nativeElement;\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes.roundEdges) {\n this.loadAnimation();\n }\n this.update();\n }\n\n update(): void {\n this.gradientId = 'grad' + id().toString();\n this.gradientFill = `url(#${this.gradientId})`;\n\n if (this.gradient || this.stops) {\n this.gradientStops = this.getGradient();\n this.hasGradient = true;\n } else {\n this.hasGradient = false;\n }\n\n this.updatePathEl();\n this.checkToHideBar();\n }\n\n loadAnimation(): void {\n this.path = this.getStartingPath();\n setTimeout(this.update.bind(this), 100);\n }\n\n updatePathEl(): void {\n const node = select(this.element).select('.bar');\n const path = this.getPath();\n if (this.animations) {\n node.transition().duration(500).attr('d', path);\n } else {\n node.attr('d', path);\n }\n }\n\n getGradient(): Gradient[] {\n if (this.stops) {\n return this.stops;\n }\n\n return [\n {\n offset: 0,\n color: this.fill,\n opacity: this.getStartOpacity()\n },\n {\n offset: 100,\n color: this.fill,\n opacity: 1\n }\n ];\n }\n\n getStartingPath(): string {\n if (!this.animations) {\n return this.getPath();\n }\n\n let radius = this.getRadius();\n let path;\n\n if (this.roundEdges) {\n if (this.orientation === BarOrientation.Vertical) {\n radius = Math.min(this.height, radius);\n path = roundedRect(this.x, this.y + this.height, this.width, 1, 0, this.edges);\n } else if (this.orientation === BarOrientation.Horizontal) {\n radius = Math.min(this.width, radius);\n path = roundedRect(this.x, this.y, 1, this.height, 0, this.edges);\n }\n } else {\n if (this.orientation === BarOrientation.Vertical) {\n path = roundedRect(this.x, this.y + this.height, this.width, 1, 0, this.edges);\n } else if (this.orientation === BarOrientation.Horizontal) {\n path = roundedRect(this.x, this.y, 1, this.height, 0, this.edges);\n }\n }\n\n return path;\n }\n\n getPath(): string {\n let radius = this.getRadius();\n let path;\n\n if (this.roundEdges) {\n if (this.orientation === BarOrientation.Vertical) {\n radius = Math.min(this.height, radius);\n path = roundedRect(this.x, this.y, this.width, this.height, radius, this.edges);\n } else if (this.orientation === BarOrientation.Horizontal) {\n radius = Math.min(this.width, radius);\n path = roundedRect(this.x, this.y, this.width, this.height, radius, this.edges);\n }\n } else {\n path = roundedRect(this.x, this.y, this.width, this.height, radius, this.edges);\n }\n\n return path;\n }\n\n getRadius(): number {\n let radius = 0;\n\n if (this.roundEdges && this.height > 5 && this.width > 5) {\n radius = Math.floor(Math.min(5, this.height / 2, this.width / 2));\n }\n\n return radius;\n }\n\n getStartOpacity(): number {\n if (this.roundEdges) {\n return 0.2;\n } else {\n return 0.5;\n }\n }\n\n get edges(): boolean[] {\n let edges = [false, false, false, false];\n if (this.roundEdges) {\n if (this.orientation === BarOrientation.Vertical) {\n if (this.data.value > 0) {\n edges = [true, true, false, false];\n } else {\n edges = [false, false, true, true];\n }\n } else if (this.orientation === BarOrientation.Horizontal) {\n if (this.data.value > 0) {\n edges = [false, true, false, true];\n } else {\n edges = [true, false, true, false];\n }\n }\n }\n return edges;\n }\n\n @HostListener('mouseenter')\n onMouseEnter(): void {\n this.activate.emit(this.data);\n }\n\n @HostListener('mouseleave')\n onMouseLeave(): void {\n this.deactivate.emit(this.data);\n }\n\n private checkToHideBar(): void {\n this.hideBar =\n this.noBarWhenZero &&\n ((this.orientation === BarOrientation.Vertical && this.height === 0) ||\n (this.orientation === BarOrientation.Horizontal && this.width === 0));\n }\n}\n","import {\n Component,\n Input,\n Output,\n EventEmitter,\n ViewEncapsulation,\n ChangeDetectionStrategy,\n ContentChild,\n TemplateRef\n} from '@angular/core';\nimport { scaleBand, scaleLinear } from 'd3-scale';\n\nimport { calculateViewDimensions } from '../common/view-dimensions.helper';\nimport { ColorHelper } from '../common/color.helper';\nimport { BaseChartComponent } from '../common/base-chart.component';\nimport { LegendOptions, LegendPosition } from '../common/types/legend.model';\nimport { ScaleType } from '../common/types/scale-type.enum';\nimport { ViewDimensions } from '../common/types/view-dimension.interface';\n\n@Component({\n selector: 'ngx-charts-bar-horizontal',\n template: `\n <ngx-charts-chart\n [view]=\"[width, height]\"\n [showLegend]=\"legend\"\n [legendOptions]=\"legendOptions\"\n [activeEntries]=\"activeEntries\"\n [animations]=\"animations\"\n (legendLabelClick)=\"onClick($event)\"\n (legendLabelActivate)=\"onActivate($event, true)\"\n (legendLabelDeactivate)=\"onDeactivate($event, true)\"\n >\n <svg:g [attr.transform]=\"transform\" class=\"bar-chart chart\">\n <svg:g\n ngx-charts-x-axis\n *ngIf=\"xAxis\"\n [xScale]=\"xScale\"\n [dims]=\"dims\"\n [showGridLines]=\"showGridLines\"\n [showLabel]=\"showXAxisLabel\"\n [labelText]=\"xAxisLabel\"\n [trimTicks]=\"trimXAxisTicks\"\n [rotateTicks]=\"rotateXAxisTicks\"\n [maxTickLength]=\"maxXAxisTickLength\"\n [tickFormatting]=\"xAxisTickFormatting\"\n [ticks]=\"xAxisTicks\"\n (dimensionsChanged)=\"updateXAxisHeight($event)\"\n ></svg:g>\n <svg:g\n ngx-charts-y-axis\n *ngIf=\"yAxis\"\n [yScale]=\"yScale\"\n [dims]=\"dims\"\n [showLabel]=\"showYAxisLabel\"\n [labelText]=\"yAxisLabel\"\n [trimTicks]=\"trimYAxisTicks\"\n [maxTickLength]=\"maxYAxisTickLength\"\n [tickFormatting]=\"yAxisTickFormatting\"\n [ticks]=\"yAxisTicks\"\n [yAxisOffset]=\"dataLabelMaxWidth.negative\"\n (dimensionsChanged)=\"updateYAxisWidth($event)\"\n ></svg:g>\n <svg:g\n ngx-charts-series-horizontal\n [xScale]=\"xScale\"\n [yScale]=\"yScale\"\n [colors]=\"colors\"\n [series]=\"results\"\n [dims]=\"dims\"\n [gradient]=\"gradient\"\n [tooltipDisabled]=\"tooltipDisabled\"\n [tooltipTemplate]=\"tooltipTemplate\"\n [activeEntries]=\"activeEntries\"\n [roundEdges]=\"roundEdges\"\n [animations]=\"animations\"\n [showDataLabel]=\"showDataLabel\"\n [dataLabelFormatting]=\"dataLabelFormatting\"\n [noBarWhenZero]=\"noBarWhenZero\"\n (select)=\"onClick($event)\"\n (activate)=\"onActivate($event)\"\n (deactivate)=\"onDeactivate($event)\"\n (dataLabelWidthChanged)=\"onDataLabelMaxWidthChanged($event)\"\n ></svg:g>\n </svg:g>\n </ngx-charts-chart>\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n styleUrls: ['../common/base-chart.component.scss'],\n encapsulation: ViewEncapsulation.None\n})\nexport class BarHorizontalComponent extends BaseChartComponent {\n @Input() legend = false;\n @Input() legendTitle: string = 'Legend';\n @Input() legendPosition: LegendPosition = LegendPosition.Right;\n @Input() xAxis;\n @Input() yAxis;\n @Input() showXAxisLabel: boolean;\n @Input() showYAxisLabel: boolean;\n @Input() xAxisLabel: string;\n @Input() yAxisLabel: string;\n @Input() tooltipDisabled: boolean = false;\n @Input() gradient: boolean;\n @Input() showGridLines: boolean = true;\n @Input() activeEntries: any[] = [];\n @Input() schemeType: ScaleType;\n @Input() trimXAxisTicks: boolean = true;\n @Input() trimYAxisTicks: boolean = true;\n @Input() rotateXAxisTicks: boolean = true;\n @Input() maxXAxisTickLength: number = 16;\n @Input() maxYAxisTickLength: number = 16;\n @Input() xAxisTickFormatting: any;\n @Input() yAxisTickFormatting: any;\n @Input() xAxisTicks: any[];\n @Input() yAxisTicks: any[];\n @Input() barPadding: number = 8;\n @Input() roundDomains: boolean = false;\n @Input() roundEdges: boolean = true;\n @Input() xScaleMax: number;\n @Input() xScaleMin: number;\n @Input() showDataLabel: boolean = false;\n @Input() dataLabelFormatting: any;\n @Input() noBarWhenZero: boolean = true;\n\n @Output() activate: EventEmitter<any> = new EventEmitter();\n @Output() deactivate: EventEmitter<any> = new EventEmitter();\n\n @ContentChild('tooltipTemplate') tooltipTemplate: TemplateRef<any>;\n\n dims: ViewDimensions;\n yScale: any;\n xScale: any;\n xDomain: [number, number];\n yDomain: string[];\n transform: string;\n colors: ColorHelper;\n margin: number[] = [10, 20, 10, 20];\n xAxisHeight: number = 0;\n yAxisWidth: number = 0;\n legendOptions: LegendOptions;\n dataLabelMaxWidth: any = { negative: 0, positive: 0 };\n\n update(): void {\n super.update();\n\n if (!this.showDataLabel) {\n this.dataLabelMaxWidth = { negative: 0, positive: 0 };\n }\n\n this.margin = [10, 20 + this.dataLabelMaxWidth.positive, 10, 20 + this.dataLabelMaxWidth.negative];\n\n this.dims = calculateViewDimensions({\n width: this.width,\n height: this.height,\n margins: this.margin,\n showXAxis: this.xAxis,\n showYAxis: this.yAxis,\n xAxisHeight: this.xAxisHeight,\n yAxisWidth: this.yAxisWidth,\n showXLabel: this.showXAxisLabel,\n showYLabel: this.showYAxisLabel,\n showLegend: this.legend,\n legendType: this.schemeType,\n legendPosition: this.legendPosition\n });\n\n this.formatDates();\n\n this.xScale = this.getXScale();\n this.yScale = this.getYScale();\n\n this.setColors();\n this.legendOptions = this.getLegendOptions();\n\n this.transform = `translate(${this.dims.xOffset} , ${this.margin[0]})`;\n }\n\n getXScale(): any {\n this.xDomain = this.getXDomain();\n\n const scale = scaleLinear().range([0, this.dims.width]).domain(this.xDomain);\n\n return this.roundDomains ? scale.nice() : scale;\n }\n\n getYScale(): any {\n this.yDomain = this.getYDomain();\n const spacing = this.yDomain.length / (this.dims.height / this.barPadding + 1);\n\n return scaleBand().rangeRound([0, this.dims.height]).paddingInner(spacing).domain(this.yDomain);\n }\n\n getXDomain(): [number, number] {\n const values = this.results.map(d => d.value);\n const min = this.xScaleMin ? Math.min(this.xScaleMin, ...values) : Math.min(0, ...values);\n\n const max = this.xScaleMax ? Math.max(this.xScaleMax, ...values) : Math.max(0, ...values);\n return [min, max];\n }\n\n getYDomain(): string[] {\n return this.results.map(d => d.label);\n }\n\n onClick(data): void {\n this.select.emit(data);\n }\n\n setColors(): void {\n let domain;\n if (this.schemeType === ScaleType.Ordinal) {\n domain = this.yDomain;\n } else {\n domain = this.xDomain;\n }\n\n this.colors = new ColorHelper(this.scheme, this.schemeType, domain, this.customColors);\n }\n\n getLegendOptions(): LegendOptions {\n const opts = {\n scaleType: this.schemeType as any,\n colors: undefined,\n domain: [],\n title: undefined,\n position: this.legendPosition\n };\n if (opts.scaleType === 'ordinal') {\n opts.domain = this.yDomain;\n opts.colors = this.colors;\n opts.title = this.legendTitle;\n } else {\n opts.domain = this.xDomain;\n opts.colors = this.colors.scale;\n }\n\n return opts;\n }\n\n updateYAxisWidth({ width }: { width: number }): void {\n this.yAxisWidth = width;\n this.update();\n }\n\n updateXAxisHeight({ height }: { height: number }): void {\n this.xAxisHeight = height;\n this.update();\n }\n\n onDataLabelMaxWidthChanged(event) {\n if (event.size.negative) {\n this.dataLabelMaxWidth.negative = Math.max(this.dataLabelMaxWidth.negative, event.size.width);\n } else {\n this.dataLabelMaxWidth.positive = Math.max(this.dataLabelMaxWidth.positive, event.size.width);\n }\n if (event.index === this.results.length - 1) {\n setTimeout(() => this.update());\n }\n }\n\n onActivate(item, fromLegend: boolean = false) {\n item = this.results.find(d => {\n if (fromLegend) {\n return d.label === item.name;\n } else {\n return d.name === item.name;\n }\n });\n\n const idx = this.activeEntries.findIndex(d => {\n return d.name === item.name && d.value === item.value && d.series === item.series;\n });\n if (idx > -1) {\n return;\n }\n\n this.activeEntries = [item, ...this.activeEntries];\n this.activate.emit({ value: item, entries: this.activeEntries });\n }\n\n onDeactivate(item, fromLegend: boolean = false) {\n item = this.results.find(d => {\n if (fromLegend) {\n return d.label === item.name;\n } else {\n return d.name === item.name;\n }\n });\n\n const idx = this.activeEntries.findIndex(d => {\n return d.name === item.name && d.value === item.value && d.series === item.series;\n });\n\n this.activeEntries.splice(idx, 1);\n this.activeEntries = [...this.activeEntries];\n\n this.deactivate.emit({ value: item, entries: this.activeEntries });\n }\n}\n","import {\n Component,\n Input,\n ViewEncapsulation,\n Output,\n EventEmitter,\n ChangeDetectionStrategy,\n ContentChild,\n TemplateRef,\n TrackByFunction\n} from '@angular/core';\nimport { trigger, style, animate, transition } from '@angular/animations';\n\nimport { scaleBand, scaleLinear } from 'd3-scale';\n\nimport { calculateViewDimensions } from '../common/view-dimensions.helper';\nimport { ColorHelper } from '../common/color.helper';\nimport { DataItem } from '../models/chart-data.model';\n\nimport { BaseChartComponent } from '../common/base-chart.component';\nimport { ScaleType } from '../common/types/scale-type.enum';\nimport { LegendOptions, LegendPosition } from '../common/types/legend.model';\nimport { ViewDimensions } from '../common/types/view-dimension.interface';\nimport { BarOrientation } from '../common/types/bar-orientation.enum';\n\n@Component({\n selector: 'ngx-charts-bar-horizontal-2d',\n template: `\n <ngx-charts-chart\n [view]=\"[width, height]\"\n [showLegend]=\"legend\"\n [legendOptions]=\"legendOptions\"\n [activeEntries]=\"activeEntries\"\n [animations]=\"animations\"\n (legendLabelActivate)=\"onActivate($event, undefined, true)\"\n (legendLabelDeactivate)=\"onDeactivate($event, undefined, true)\"\n (legendLabelClick)=\"onClick($event)\"\n >\n <svg:g [attr.transform]=\"transform\" class=\"bar-chart chart\">\n <svg:g\n ngx-charts-grid-panel-series\n [xScale]=\"valueScale\"\n [yScale]=\"groupScale\"\n [data]=\"results\"\n [dims]=\"dims\"\n [orient]=\"barOrientation.Horizontal\"\n ></svg:g>\n <svg:g\n ngx-charts-x-axis\n *ngIf=\"xAxis\"\n [xScale]=\"valueScale\"\n [dims]=\"dims\"\n [showGridLines]=\"showGridLines\"\n [showLabel]=\"showXAxisLabel\"\n [labelText]=\"xAxisLabel\"\n [trimTicks]=\"trimXAxisTicks\"\n [rotateTicks]=\"rotateXAxisTicks\"\n [maxTickLength]=\"maxXAxisTickLength\"\n [tickFormatting]=\"xAxisTickFormatting\"\n [ticks]=\"xAxisTicks\"\n (dimensionsChanged)=\"updateXAxisHeight($event)\"\n ></svg:g>\n <svg:g\n ngx-charts-y-axis\n *ngIf=\"yAxis\"\n [yScale]=\"groupScale\"\n [dims]=\"dims\"\n [showLabel]=\"showYAxisLabel\"\n [labelText]=\"yAxisLabel\"\n [trimTicks]=\"trimYAxisTicks\"\n [maxTickLength]=\"maxYAxisTickLength\"\n [tickFormatting]=\"yAxisTickFormatting\"\n [ticks]=\"yAxisTicks\"\n [yAxisOffset]=\"dataLabelMaxWidth.negative\"\n (dimensionsChanged)=\"updateYAxisWidth($event)\"\n ></svg:g>\n <svg:g\n *ngFor=\"let group of results; let index = index; trackBy: trackBy\"\n [@animationState]=\"'active'\"\n [attr.transform]=\"groupTransform(group)\"\n >\n <svg:g\n ngx-charts-series-horizontal\n [xScale]=\"valueScale\"\n [activeEntries]=\"activeEntries\"\n [yScale]=\"innerScale\"\n [colors]=\"colors\"\n [series]=\"group.series\"\n [dims]=\"dims\"\n [gradient]=\"gradient\"\n [tooltipDisabled]=\"tooltipDisabled\"\n [tooltipTemplate]=\"tooltipTemplate\"\n [seriesName]=\"group.name\"\n [roundEdges]=\"roundEdges\"\n [animations]=\"animations\"\n [showDataLabel]=\"showDataLabel\"\n [dataLabelFormatting]=\"dataLabelFormatting\"\n [noBarWhenZero]=\"noBarWhenZero\"\n (select)=\"onClick($event, group)\"\n (activate)=\"onActivate($event, group)\"\n (deactivate)=\"onDeactivate($event, group)\"\n (dataLabelWidthChanged)=\"onDataLabelMaxWidthChanged($event, index)\"\n />\n </svg:g>\n </svg:g>\n </ngx-charts-chart>\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n styleUrls: ['../common/base-chart.component.scss'],\n encapsulation: ViewEncapsulation.None,\n animations: [\n trigger('animationState', [\n transition(':leave', [\n style({\n opacity: 1,\n transform: '*'\n }),\n animate(500, style({ opacity: 0, transform: 'scale(0)' }))\n ])\n ])\n ]\n})\nexport class BarHorizontal2DComponent extends BaseChartComponent {\n @Input() legend: boolean = false;\n @Input() legendTitle: string = 'Legend';\n @Input() legendPosition: LegendPosition = LegendPosition.Right;\n @Input() xAxis;\n @Input() yAxis;\n @Input() showXAxisLabel: boolean;\n @Input() showYAxisLabel: boolean;\n @Input() xAxisLabel: string;\n @Input() yAxisLabel: string;\n @Input() tooltipDisabled: boolean = false;\n @Input() gradient: boolean;\n @Input() showGridLines: boolean = true;\n @Input() activeEntries: any[] = [];\n @Input() schemeType: ScaleType;\n @Input() trimXAxisTicks: boolean = true;\n @Input() trimYAxisTicks: boolean = true;\n @Input() rotateXAxisTicks: boolean = true;\n @Input() maxXAxisTickLength: number = 16;\n @Input() maxYAxisTickLength: number = 16;\n @Input() xAxisTickFormatting: any;\n @Input() yAxisTickFormatting: any;\n @Input() xAxisTicks: any[];\n @Input() yAxisTicks: any[];\n @Input() groupPadding: number = 16;\n @Input() barPadding: number = 8;\n @Input() roundDomains: boolean = false;\n @Input() roundEdges: boolean = true;\n @Input() xScaleMax: number;\n @Input() showDataLabel: boolean = false;\n @Input() dataLabelFormatting: any;\n @Input() noBarWhenZero: boolean = true;\n\n @Output() activate: EventEmitter<any> = new EventEmitter();\n @Output() deactivate: EventEmitter<any> = new EventEmitter();\n\n @ContentChild('tooltipTemplate') tooltipTemplate: TemplateRef<any>;\n\n dims: ViewDimensions;\n groupDomain: string[];\n innerDomain: string[];\n valueDomain: [number, number];\n groupScale: any;\n innerScale: any;\n valueScale: any;\n transform: string;\n colors: ColorHelper;\n margin: number[] = [10, 20, 10, 20];\n xAxisHeight: number = 0;\n yAxisWidth: number = 0;\n legendOptions: LegendOptions;\n dataLabelMaxWidth: any = { negative: 0, positive: 0 };\n\n barOrientation = BarOrientation;\n\n update(): void {\n super.update();\n\n if (!this.showDataLabel) {\n this.dataLabelMaxWidth = { negative: 0, positive: 0 };\n }\n\n this.margin = [10, 20 + this.dataLabelMaxWidth.positive, 10, 20 + this.dataLabelMaxWidth.negative];\n\n this.dims = calculateViewDimensions({\n width: this.width,\n height: this.height,\n margins: this.margin,\n showXAxis: this.xAxis,\n showYAxis: this.yAxis,\n xAxisHeight: this.xAxisHeight,\n yAxisWidth: this.yAxisWidth,\n showXLabel: this.showXAxisLabel,\n showYLabel: this.showYAxisLabel,\n showLegend: this.legend,\n legendType: this.schemeType,\n legendPosition: this.legendPosition\n });\n\n this.formatDates();\n\n this.groupDomain = this.getGroupDomain();\n this.innerDomain = this.getInnerDomain();\n this.valueDomain = this.getValueDomain();\n\n this.groupScale = this.getGroupScale();\n this.innerScale = this.getInnerScale();\n this.valueScale = this.getValueScale();\n\n this.setColors();\n this.legendOptions = this.getLegendOptions();\n\n this.transform = `translate(${this.dims.xOffset} , ${this.margin[0]})`;\n }\n\n getGroupScale(): any {\n const spacing = this.groupDomain.length / (this.dims.height / this.groupPadding + 1);\n\n return scaleBand()\n .rangeRound([0, this.dims.height])\n .paddingInner(spacing)\n .paddingOuter(spacing / 2)\n .domain(this.groupDomain);\n }\n\n getInnerScale(): any {\n const height = this.groupScale.bandwidth();\n const spacing = this.innerDomain.length / (height / this.barPadding + 1);\n\n return scaleBand().rangeRound([0, height]).paddingInner(spacing).domain(this.innerDomain);\n }\n\n getValueScale(): any {\n const scale = scaleLinear().range([0, this.dims.width]).domain(this.valueDomain);\n\n return this.roundDomains ? scale.nice() : scale;\n }\n\n getGroupDomain(): string[] {\n const domain = [];\n\n for (const group of this.results) {\n if (!domain.includes(group.label)) {\n domain.push(group.label);\n }\n }\n\n return domain;\n }\n\n getInnerDomain(): string[] {\n const domain = [];\n\n for (const group of this.results) {\n for (const d of group.series) {\n if (!domain.includes(d.label)) {\n domain.push(d.label);\n }\n }\n }\n\n return domain;\n }\n\n getValueDomain(): [number, number] {\n const domain = [];\n\n for (const group of this.results) {\n for (const d of group.series) {\n if (!domain.includes(d.value)) {\n domain.push(d.value);\n }\n }\n }\n\n const min = Math.min(0, ...domain);\n const max = this.xScaleMax ? Math.max(this.xScaleMax, ...domain) : Math.max(0, ...domain);\n return [min, max];\n }\n\n groupTransform(group: DataItem): string {\n return `translate(0, ${this.groupScale(group.label)})`;\n }\n\n onClick(data, group?: DataItem): void {\n if (group) {\n data.series = group.name;\n }\n\n this.select.emit(data);\n }\n\n trackBy: TrackByFunction<DataItem> = (index: number, item: DataItem) => {\n return item.name;\n };\n\n setColors(): void {\n let domain;\n if (this.schemeType === ScaleType.Ordinal) {\n domain = this.innerDomain;\n } else {\n domain = this.valueDomain;\n }\n\n this.colors = new ColorHelper(this.scheme, this.schemeType, domain, this.customColors);\n }\n\n getLegendOptions(): LegendOptions {\n const opts = {\n scaleType: this.schemeType as any,\n colors: undefined,\n domain: [],\n title: undefined,\n position: this.legendPosition\n };\n if (opts.scaleType === ScaleType.Ordinal) {\n opts.domain = this.innerDomain;\n opts.colors = this.colors;\n opts.title = this.legendTitle;\n } else {\n opts.domain = this.valueDomain;\n opts.colors = this.colors.scale;\n }\n\n return opts;\n }\n\n updateYAxisWidth({ width }: { width: number }): void {\n this.yAxisWidth = width;\n this.update();\n }\n\n updateXAxisHeight({ height }: { height: number }): void {\n this.xAxisHeight = height;\n this.update();\n }\n\n onDataLabelMaxWidthChanged(event, groupIndex: number): void {\n if (event.size.negative) {\n this.dataLabelMaxWidth.negative = Math.max(this.dataLabelMaxWidth.negative, event.size.width);\n } else {\n this.dataLabelMaxWidth.positive = Math.max(this.dataLabelMaxWidth.positive, event.size.width);\n }\n if (groupIndex === this.results.length - 1) {\n setTimeout(() => this.update());\n }\n }\n\n onActivate(event, group: DataItem, fromLegend: boolean = false): void {\n const item = Object.assign({}, event);\n if (group) {\n item.series = group.name;\n }\n\n const items = this.results\n .map(g => g.series)\n .flat()\n .filter(i => {\n if (fromLegend) {\n return i.label === item.name;\n } else {\n return i.name === item.name && i.series === item.series;\n }\n });\n\n this.activeEntries = [...items];\n this.activate.emit({ value: item, entries: this.activeEntries });\n }\n\n onDeactivate(event, group: DataItem, fromLegend: boolean = false): void {\n const item = Object.assign({}, event);\n if (group) {\n item.series = group.name;\n }\n\n this.activeEntries = this.activeEntries.filter(i => {\n if (fromLegend) {\n return i.label !== item.name;\n } else {\n return !(i.name === item.name && i.series === item.series);\n }\n });\n\n this.deactivate.emit({ value: item, entries: this.activeEntries });\n }\n}\n","export enum BarChartType {\n Standard = 'standard',\n Normalized = 'normalized',\n Stacked = 'stacked'\n}\n","import {\n Component,\n Input,\n Output,\n ViewEncapsulation,\n EventEmitter,\n ChangeDetectionStrategy,\n ContentChild,\n TemplateRef,\n TrackByFunction\n} from '@angular/core';\nimport { trigger, style, animate, transition } from '@angular/animations';\n\nimport { scaleBand, scaleLinear } from 'd3-scale';\n\nimport { calculateViewDimensions } from '../common/view-dimensions.helper';\nimport { ColorHelper } from '../common/color.helper';\nimport { Series } from '../models/chart-data.model';\n\nimport { BaseChartComponent } from '../common/base-chart.component';\nimport { BarChartType } from './types/bar-chart-type.enum';\nimport { ScaleType } from '../common/types/scale-type.enum';\nimport { LegendOptions, LegendPosition } from '../common/types/legend.model';\nimport { ViewDimensions } from '../common/types/view-dimension.interface';\n\n@Component({\n selector: 'ngx-charts-bar-horizontal-normalized',\n template: `\n <ngx-charts-chart\n [view]=\"[width, height]\"\n [showLegend]=\"legend\"\n [legendOptions]=\"legendOptions\"\n [activeEntries]=\"activeEntries\"\n [animations]=\"animations\"\n (legendLabelActivate)=\"onActivate($event, undefined, true)\"\n (legendLabelDeactivate)=\"onDeactivate($event, undefined, true)\"\n (legendLabelClick)=\"onClick($event)\"\n >\n <svg:g [attr.transform]=\"transform\" class=\"bar-chart chart\">\n <svg:g\n ngx-charts-x-axis\n *ngIf=\"xAxis\"\n [xScale]=\"xScale\"\n [dims]=\"dims\"\n [showGridLines]=\"showGridLines\"\n [showLabel]=\"showXAxisLabel\"\n [labelText]=\"xAxisLabel\"\n [trimTicks]=\"trimXAxisTicks\"\n [rotateTicks]=\"rotateXAxisTicks\"\n [maxTickLength]=\"maxXAxisTickLength\"\n [tickFormatting]=\"xAxisTickFormatting\"\n [ticks]=\"xAxisTicks\"\n (dimensionsChanged)=\"updateXAxisHeight($event)\"\n ></svg:g>\n <svg:g\n ngx-charts-y-axis\n *ngIf=\"yAxis\"\n [yScale]=\"yScale\"\n [dims]=\"dims\"\n [showLabel]=\"showYAxisLabel\"\n [labelText]=\"yAxisLabel\"\n [trimTicks]=\"trimYAxisTicks\"\n [maxTickLength]=\"maxYAxisTickLength\"\n [tickFormatting]=\"yAxisTickFormatting\"\n [ticks]=\"yAxisTicks\"\n (dimensionsChanged)=\"updateYAxisWidth($event)\"\n ></svg:g>\n <svg:g\n *ngFor=\"let group of results; trackBy: trackBy\"\n [@animationState]=\"'active'\"\n [attr.transform]=\"groupTransform(group)\"\n >\n <svg:g\n ngx-charts-series-horizontal\n [type]=\"barChartType.Normalized\"\n [xScale]=\"xScale\"\n [yScale]=\"yScale\"\n [activeEntries]=\"activeEntries\"\n [colors]=\"colors\"\n [series]=\"group.series\"\n [dims]=\"dims\"\n [gradient]=\"gradient\"\n [tooltipDisabled]=\"tooltipDisabled\"\n [tooltipTemplate]=\"tooltipTemplate\"\n [seriesName]=\"group.name\"\n [animations]=\"animations\"\n (select)=\"onClick($event, group)\"\n (activate)=\"onActivate($event, group)\"\n (deactivate)=\"onDeactivate($event, group)\"\n [noBarWhenZero]=\"noBarWhenZero\"\n />\n </svg:g>\n </svg:g>\n </ngx-charts-chart>\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n styleUrls: ['../common/base-chart.component.scss'],\n encapsulation: ViewEncapsulation.None,\n animations: [\n trigger('animationState', [\n transition(':leave', [\n style({\n opacity: 1,\n transform: '*'\n }),\n animate(500, style({ opacity: 0, transform: 'scale(0)' }))\n ])\n ])\n ]\n})\nexport class BarHorizontalNormalizedComponent extends BaseChartComponent {\n @Input() legend: boolean = false;\n @Input() legendTitle: string = 'Legend';\n @Input() legendPosition: LegendPosition = LegendPosition.Right;\n @Input() xAxis;\n @Input() yAxis;\n @Input() showXAxisLabel: boolean;\n @Input() showYAxisLabel: boolean;\n @Input() xAxisLabel: string;\n @Input() yAxisLabel: string;\n @Input() tooltipDisabled: boolean = false;\n @Input() gradient: boolean;\n @Input() showGridLines: boolean = true;\n @Input() activeEntries: any[] = [];\n @Input() schemeType: ScaleType;\n @Input() trimXAxisTicks: boolean = true;\n @Input() trimYAxisTicks: boolean = true;\n @Input() rotateXAxisTicks: boolean = true;\n @Input() maxXAxisTickLength: number = 16;\n @Input() maxYAxisTickLength: number = 16;\n @Input() xAxisTickFormatting: any;\n @Input() yAxisTickFormatting: any;\n @Input() xAxisTicks: any[];\n @Input() yAxisTicks: any[];\n @Input() barPadding: number = 8;\n @Input() roundDomains: boolean = false;\n @Input() noBarWhenZero: boolean = true;\n\n @Output() activate: EventEmitter<any> = new EventEmitter();\n @Output() deactivate: EventEmitter<any> = new EventEmitter();\n\n @ContentChild('tooltipTemplate') tooltipTemplate: TemplateRef<any>;\n\n dims: ViewDimensions;\n groupDomain: string[];\n innerDomain: string[];\n valueDomain: [number, number] = [0, 100];\n xScale: any;\n yScale: any;\n transform: string;\n colors: ColorHelper;\n margin: number[] = [10, 20, 10, 20];\n xAxisHeight: number = 0;\n yAxisWidth: number = 0;\n legendOptions: LegendOptions;\n barChartType = BarChartType;\n\n update(): void {\n super.update();\n\n this.dims = calculateViewDimensions({\n width: this.width,\n height: this.height,\n margins: this.margin,\n showXAxis: this.xAxis,\n showYAxis: this.yAxis,\n xAxisHeight: this.xAxisHeight,\n yAxisWidth: this.yAxisWidth,\n showXLabel: this.showXAxisLabel,\n showYLabel: this.showYAxisLabel,\n showLegend: this.legend,\n legendType: this.schemeType,\n legendPosition: this.legendPosition\n });\n\n this.formatDates();\n\n this.groupDomain = this.getGroupDomain();\n this.innerDomain = this.getInnerDomain();\n\n this.xScale = this.getXScale();\n this.yScale = this.getYScale();\n\n this.setColors();\n this.legendOptions = this.getLegendOptions();\n\n this.transform = `translate(${this.dims.xOffset} , ${this.margin[0]})`;\n }\n\n getGroupDomain(): string[] {\n const domain = [];\n\n for (const group of this.results) {\n if (!domain.includes(group.label)) {\n domain.push(group.label);\n }\n }\n\n return domain;\n }\n\n getInnerDomain(): string[] {\n const domain = [];\n\n for (const group of this.results) {\n for (const d of group.series) {\n if (!domain.includes(d.label)) {\n domain.push(d.label);\n }\n }\n }\n\n return domain;\n }\n\n getYScale(): any {\n const spacing = this.groupDomain.length / (this.dims.height / this.barPadding + 1);\n\n return scaleBand().rangeRound([0, this.dims.height]).paddingInner(spacing).domain(this.groupDomain);\n }\n\n getXScale(): any {\n const scale = scaleLinear().range([0, this.dims.width]).domain(this.valueDomain);\n return this.roundDomains ? scale.nice() : scale;\n }\n\n groupTransform(group: Series): string {\n return `translate(0, ${this.yScale(group.name)})`;\n }\n\n onClick(data, group?: Series): void {\n if (group) {\n data.series = group.name;\n }\n\n this.select.emit(data);\n }\n\n trackBy: TrackByFunction<Series> = (index: number, item: Series) => {\n return item.name;\n };\n\n setColors(): void {\n let domain;\n if (this.schemeType === ScaleType.Ordinal) {\n domain = this.innerDomain;\n } else {\n domain = this.valueDomain;\n }\n\n this.colors = new ColorHelper(this.scheme, this.schemeType, domain, this.customColors);\n }\n\n getLegendOptions(): LegendOptions {\n const opts = {\n scaleType: this.schemeType as any,\n colors: undefined,\n domain: [],\n title: undefined,\n position: this.legendPosition\n };\n if (opts.scaleType === ScaleType.Ordinal) {\n opts.domain = this.innerDomain;\n opts.colors = this.colors;\n opts.title = this.legendTitle;\n } else {\n opts.domain = this.valueDomain;\n opts.colors = this.colors.scale;\n }\n\n return opts;\n }\n\n updateYAxisWidth({ width }: { width: number }): void {\n this.yAxisWidth = width;\n this.update();\n }\n\n updateXAxisHeight({ height }: { height: number }): void {\n this.xAxisHeight = height;\n this.update();\n }\n\n onActivate(event, group: Series, fromLegend: boolean = false) {\n const item = Object.assign({}, event);\n if (group) {\n item.series = group.name;\n }\n\n const items = this.results\n .map(g => g.series)\n .flat()\n .filter(i => {\n if (fromLegend) {\n return i.label === item.name;\n } else {\n return i.name === item.name && i.series === item.series;\n }\n });\n\n this.activeEntries = [...items];\n this.activate.emit({ value: item, entries: this.activeEntries });\n }\n\n onDeactivate(event, group: Series, fromLegend: boolean = false) {\n const item = Object.assign({}, event);\n if (group) {\n item.series = group.name;\n }\n\n this.activeEntries = this.activeEntries.filter(i => {\n if (fromLegend) {\n return i.label !== item.name;\n } else {\n return !(i.name === item.name && i.series === item.series);\n }\n });\n\n this.deactivate.emit({ value: item, entries: this.activeEntries });\n }\n}\n","import {\n Component,\n Input,\n Output,\n EventEmitter,\n ViewEncapsulation,\n ChangeDetectionStrategy,\n ContentChild,\n TemplateRef,\n TrackByFunction\n} from '@angular/core';\nimport { trigger, style, animate, transition } from '@angular/animations';\n\nimport { scaleBand, scaleLinear } from 'd3-scale';\n\nimport { calculateViewDimensions } from '../common/view-dimensions.helper';\nimport { ColorHelper } from '../common/color.helper';\nimport { Series } from '../models/chart-data.model';\nimport { BaseChartComponent } from '../common/base-chart.component';\nimport { BarChartType } from './types/bar-chart-type.enum';\nimport { LegendOptions, LegendPosition } from '../common/types/legend.model';\nimport { ScaleType } from '../common/types/scale-type.enum';\nimport { ViewDimensions } from '../common/types/view-dimension.interface';\n\n@Component({\n selector: 'ngx-charts-bar-horizontal-stacked',\n template: `\n <ngx-charts-chart\n [view]=\"[width, height]\"\n [showLegend]=\"legend\"\n [legendOptions]=\"legendOptions\"\n [activeEntries]=\"activeEntries\"\n [animations]=\"animations\"\n (legendLabelActivate)=\"onActivate($event, undefined, true)\"\n (legendLabelDeactivate)=\"onDeactivate($event, undefined, true)\"\n (legendLabelClick)=\"onClick($event)\"\n >\n <svg:g [attr.transform]=\"transform\" class=\"bar-chart chart\">\n <svg:g\n ngx-charts-x-axis\n *ngIf=\"xAxis\"\n [xScale]=\"xScale\"\n [dims]=\"dims\"\n [showGridLines]=\"showGridLines\"\n [showLabel]=\"showXAxisLabel\"\n [labelText]=\"xAxisLabel\"\n [trimTicks]=\"trimXAxisTicks\"\n [rotateTicks]=\"rotateXAxisTicks\"\n [maxTickLength]=\"maxXAxisTickLength\"\n [tickFormatting]=\"xAxisTickFormatting\"\n [ticks]=\"xAxisTicks\"\n (dimensionsChanged)=\"updateXAxisHeight($event)\"\n ></svg:g>\n <svg:g\n ngx-charts-y-axis\n *ngIf=\"yAxis\"\n [yScale]=\"yScale\"\n [dims]=\"dims\"\n [showLabel]=\"showYAxisLabel\"\n [labelText]=\"yAxisLabel\"\n [trimTicks]=\"trimYAxisTicks\"\n [maxTickLength]=\"maxYAxisTickLength\"\n [tickFormatting]=\"yAxisTickFormatting\"\n [ticks]=\"yAxisTicks\"\n [yAxisOffset]=\"dataLabelMaxWidth.negative\"\n (dimensionsChanged)=\"updateYAxisWidth($event)\"\n ></svg:g>\n <svg:g\n *ngFor=\"let group of results; let index = index; trackBy: trackBy\"\n [@animationState]=\"'active'\"\n [attr.transform]=\"groupTransform(group)\"\n >\n <svg:g\n ngx-charts-series-horizontal\n [type]=\"barChartType.Stacked\"\n [xScale]=\"xScale\"\n [yScale]=\"yScale\"\n [colors]=\"colors\"\n [series]=\"group.series\"\n [activeEntries]=\"activeEntries\"\n [dims]=\"dims\"\n [gradient]=\"gradient\"\n [tooltipDisabled]=\"tooltipDisabled\"\n [tooltipTemplate]=\"tooltipTemplate\"\n [seriesName]=\"group.name\"\n [animations]=\"animations\"\n [showDataLabel]=\"showDataLabel\"\n [dataLabelFormatting]=\"dataLabelFormatting\"\n [noBarWhenZero]=\"noBarWhenZero\"\n (select)=\"onClick($event, group)\"\n (activate)=\"onActivate($event, group)\"\n (deactivate)=\"onDeactivate($event, group)\"\n (dataLabelWidthChanged)=\"onDataLabelMaxWidthChanged($event, index)\"\n />\n </svg:g>\n </svg:g>\n </ngx-charts-chart>\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n styleUrls: ['../common/base-chart.component.scss'],\n encapsulation: ViewEncapsulation.None,\n animations: [\n trigger('animationState', [\n transition(':leave', [\n style({\n opacity: 1,\n transform: '*'\n }),\n animate(500, style({ opacity: 0, transform: 'scale(0)' }))\n ])\n ])\n ]\n})\nexport class BarHorizontalStackedComponent extends BaseChartComponent {\n @Input() legend: boolean = false;\n @Input() legendTitle: string = 'Legend';\n @Input() legendPosition: LegendPosition = LegendPosition.Right;\n @Input() xAxis;\n @Input() yAxis;\n @Input() showXAxisLabel: boolean;\n @Input() showYAxisLabel: boolean;\n @Input() xAxisLabel: string;\n @Input() yAxisLabel: string;\n @Input() tooltipDisabled: boolean = false;\n @Input() gradient: boolean;\n @Input() showGridLines: boolean = true;\n @Input() activeEntries: any[] = [];\n @Input() schemeType: ScaleType;\n @Input() trimXAxisTicks: boolean = true;\n @Input() trimYAxisTicks: boolean = true;\n @Input() rotateXAxisTicks: boolean = true;\n @Input() maxXAxisTickLength: number = 16;\n @Input() maxYAxisTickLength: number = 16;\n @Input() xAxisTickFormatting: any;\n @Input() yAxisTickFormatting: any;\n @Input() xAxisTicks: any[];\n @Input() yAxisTicks: any[];\n @Input() barPadding: number = 8;\n @Input() roundDomains: boolean = false;\n @Input() xScaleMax: number;\n @Input() showDataLabel: boolean = false;\n @Input() dataLabelFormatting: any;\n @Input() noBarWhenZero: boolean = true;\n\n @Output() activate: EventEmitter<any> = new EventEmitter();\n @Output() deactivate: EventEmitter<any> = new EventEmitter();\n\n @ContentChild('tooltipTemplate') tooltipTemplate: TemplateRef<any>;\n\n dims: ViewDimensions;\n groupDomain: string[];\n innerDomain: string[];\n valueDomain: [number, number];\n xScale: any;\n yScale: any;\n transform: string;\n colors: ColorHelper;\n margin = [10, 20, 10, 20];\n xAxisHeight: number = 0;\n yAxisWidth: number = 0;\n legendOptions: LegendOptions;\n dataLabelMaxWidth: any = { negative: 0, positive: 0 };\n\n barChartType = BarChartType;\n\n update(): void {\n super.update();\n\n if (!this.showDataLabel) {\n this.dataLabelMaxWidth = { negative: 0, positive: 0 };\n }\n\n this.margin = [10, 20 + this.dataLabelMaxWidth.positive, 10, 20 + this.dataLabelMaxWidth.negative];\n\n this.dims = calculateViewDimensions({\n width: this.width,\n height: this.height,\n margins: this.margin,\n showXAxis: this.xAxis,\n showYAxis: this.yAxis,\n xAxisHeight: this.xAxisHeight,\n yAxisWidth: this.yAxisWidth,\n showXLabel: this.showXAxisLabel,\n showYLabel: this.showYAxisLabel,\n showLegend: this.legend,\n legendType: this.schemeType,\n legendPosition: this.legendPosition\n });\n\n this.formatDates();\n\n this.groupDomain = this.getGroupDomain();\n this.innerDomain = this.getInnerDomain();\n this.valueDomain = this.getValueDomain();\n\n this.xScale = this.getXScale();\n this.yScale = this.getYScale();\n\n this.setColors();\n this.legendOptions = this.getLegendOptions();\n\n this.transform = `translate(${this.dims.xOffset} , ${this.margin[0]})`;\n }\n\n getGroupDomain(): string[] {\n const domain = [];\n\n for (const group of this.results) {\n if (!domain.includes(group.label)) {\n domain.push(group.label);\n }\n }\n\n return domain;\n }\n\n getInnerDomain(): string[] {\n const domain = [];\n\n for (const group of this.results) {\n for (const d of group.series) {\n if (!domain.includes(d.label)) {\n domain.push(d.label);\n }\n }\n }\n\n return domain;\n }\n\n getValueDomain(): [number, number] {\n const domain = [];\n let smallest = 0;\n let biggest = 0;\n for (const group of this.results) {\n let smallestSum = 0;\n let biggestSum = 0;\n for (const d of group.series) {\n if (d.value < 0) {\n smallestSum += d.value;\n } else {\n biggestSum += d.value;\n }\n smallest = d.value < smallest ? d.value : smallest;\n biggest = d.value > biggest ? d.value : biggest;\n }\n domain.push(smallestSum);\n domain.push(biggestSum);\n }\n domain.push(smallest);\n domain.push(biggest);\n\n const min = Math.min(0, ...domain);\n const max = this.xScaleMax ? Math.max(this.xScaleMax, ...domain) : Math.max(...domain);\n return [min, max];\n }\n\n getYScale(): any {\n const spacing = this.groupDomain.length / (this.dims.height / this.barPadding + 1);\n\n return scaleBand().rangeRound([0, this.dims.height]).paddingInner(spacing).domain(this.groupDomain);\n }\n\n getXScale(): any {\n const scale = scaleLinear().range([0, this.dims.width]).domain(this.valueDomain);\n return this.roundDomains ? scale.nice() : scale;\n }\n\n groupTransform(group: Series): string {\n return `translate(0, ${this.yScale(group.name)})`;\n }\n\n onClick(data, group?: Series): void {\n if (group) {\n data.series = group.name;\n }\n\n this.select.emit(data);\n }\n\n trackBy: TrackByFunction<Series> = (index: number, item: Series) => {\n return item.name;\n };\n\n setColors(): void {\n let domain;\n if (this.schemeType === ScaleType.Ordinal) {\n domain = this.innerDomain;\n } else {\n domain = this.valueDomain;\n }\n\n this.colors = new ColorHelper(this.scheme, this.schemeType, domain, this.customColors);\n }\n\n getLegendOptions(): LegendOptions {\n const opts = {\n scaleType: this.schemeType as any,\n colors: undefined,\n domain: [],\n title: undefined,\n position: this.legendPosition\n };\n if (opts.scaleType === ScaleType.Ordinal) {\n opts.domain = this.innerDomain;\n opts.colors = this.colors;\n opts.title = this.legendTitle;\n } else {\n opts.domain = this.valueDomain;\n opts.colors = this.colors.scale;\n }\n\n return opts;\n }\n\n updateYAxisWidth({ width }: { width: number }): void {\n this.yAxisWidth = width;\n this.update();\n }\n\n updateXAxisHeight({ height }: { height: number }): void {\n this.xAxisHeight = height;\n this.update();\n }\n\n onDataLabelMaxWidthChanged(event, groupIndex: number) {\n if (event.size.negative) {\n this.dataLabelMaxWidth.negative = Math.max(this.dataLabelMaxWidth.negative, event.size.width);\n } else {\n this.dataLabelMaxWidth.positive = Math.max(this.dataLabelMaxWidth.positive, event.size.width);\n }\n if (groupIndex === this.results.length - 1) {\n setTimeout(() => this.update());\n }\n }\n\n onActivate(event, group: Series, fromLegend: boolean = false) {\n const item = Object.assign({}, event);\n if (group) {\n item.series = group.name;\n }\n\n const items = this.results\n .map(g => g.series)\n .flat()\n .filter(i => {\n if (fromLegend) {\n return i.label === item.name;\n } else {\n return i.name === item.name && i.series === item.series;\n }\n });\n\n this.activeEntries = [...items];\n this.activate.emit({ value: item, entries: this.activeEntries });\n }\n\n onDeactivate(event, group: Series, fromLegend: boolean = false) {\n const item = Object.assign({}, event);\n if (group) {\n item.series = group.name;\n }\n\n this.activeEntries = this.activeEntries.filter(i => {\n if (fromLegend) {\n return i.label !== item.name;\n } else {\n return !(i.name === item.name && i.series === item.series);\n }\n });\n\n this.deactivate.emit({ value: item, entries: this.activeEntries });\n }\n}\n","import {\n Component,\n Input,\n ViewEncapsulation,\n Output,\n EventEmitter,\n ChangeDetectionStrategy,\n ContentChild,\n TemplateRef\n} from '@angular/core';\nimport { scaleBand, scaleLinear } from 'd3-scale';\n\nimport { calculateViewDimensions } from '../common/view-dimensions.helper';\nimport { ColorHelper } from '../common/color.helper';\nimport { BaseChartComponent } from '../common/base-chart.component';\nimport { DataItem } from '../models/chart-data.model';\nimport { LegendOptions, LegendPosition } from '../common/types/legend.model';\nimport { ScaleType } from '../common/types/scale-type.enum';\nimport { ViewDimensions } from '../common/types/view-dimension.interface';\n\n@Component({\n selector: 'ngx-charts-bar-vertical',\n template: `\n <ngx-charts-chart\n [view]=\"[width, height]\"\n [showLegend]=\"legend\"\n [legendOptions]=\"legendOptions\"\n [activeEntries]=\"activeEntries\"\n [animations]=\"animations\"\n (legendLabelClick)=\"onClick($event)\"\n (legendLabelActivate)=\"onActivate($event, true)\"\n (legendLabelDeactivate)=\"onDeactivate($event, true)\"\n >\n <svg:g [attr.transform]=\"transform\" class=\"bar-chart chart\">\n <svg:g\n ngx-charts-x-axis\n *ngIf=\"xAxis\"\n [xScale]=\"xScale\"\n [dims]=\"dims\"\n [showGridLines]=\"showGridLines\"\n [showLabel]=\"showXAxisLabel\"\n [labelText]=\"xAxisLabel\"\n [trimTicks]=\"trimXAxisTicks\"\n [rotateTicks]=\"rotateXAxisTicks\"\n [maxTickLength]=\"maxXAxisTickLength\"\n [tickFormatting]=\"xAxisTickFormatting\"\n [ticks]=\"xAxisTicks\"\n [xAxisOffset]=\"dataLabelMaxHeight.negative\"\n (dimensionsChanged)=\"updateXAxisHeight($event)\"\n ></svg:g>\n <svg:g\n ngx-charts-y-axis\n *ngIf=\"yAxis\"\n [yScale]=\"yScale\"\n [dims]=\"dims\"\n [showGridLines]=\"showGridLines\"\n [showLabel]=\"showYAxisLabel\"\n [labelText]=\"yAxisLabel\"\n [trimTicks]=\"trimYAxisTicks\"\n [maxTickLength]=\"maxYAxisTickLength\"\n [tickFormatting]=\"yAxisTickFormatting\"\n [ticks]=\"yAxisTicks\"\n (dimensionsChanged)=\"updateYAxisWidth($event)\"\n ></svg:g>\n <svg:g\n ngx-charts-series-vertical\n [xScale]=\"xScale\"\n [yScale]=\"yScale\"\n [colors]=\"colors\"\n [series]=\"results\"\n [dims]=\"dims\"\n [gradient]=\"gradient\"\n [tooltipDisabled]=\"tooltipDisabled\"\n [tooltipTemplate]=\"tooltipTemplate\"\n [showDataLabel]=\"showDataLabel\"\n [dataLabelFormatting]=\"dataLabelFormatting\"\n [activeEntries]=\"activeEntries\"\n [roundEdges]=\"roundEdges\"\n [animations]=\"animations\"\n [noBarWhenZero]=\"noBarWhenZero\"\n (activate)=\"onActivate($event)\"\n (deactivate)=\"onDeactivate($event)\"\n (select)=\"onClick($event)\"\n (dataLabelHeightChanged)=\"onDataLabelMaxHeightChanged($event)\"\n ></svg:g>\n </svg:g>\n </ngx-charts-chart>\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n styleUrls: ['../common/base-chart.component.scss'],\n encapsulation: ViewEncapsulation.None\n})\nexport class BarVerticalComponent extends BaseChartComponent {\n @Input() legend = false;\n @Input() legendTitle: string = 'Legend';\n @Input() legendPosition: LegendPosition = LegendPosition.Right;\n @Input() xAxis;\n @Input() yAxis;\n @Input() showXAxisLabel: boolean;\n @Input() showYAxisLabel: boolean;\n @Input() xAxisLabel: string;\n @Input() yAxisLabel: string;\n @Input() tooltipDisabled: boolean = false;\n @Input() gradient: boolean;\n @Input() showGridLines: boolean = true;\n @Input() activeEntries: any[] = [];\n @Input() schemeType: ScaleType;\n @Input() trimXAxisTicks: boolean = true;\n @Input() trimYAxisTicks: boolean = true;\n @Input() rotateXAxisTicks: boolean = true;\n @Input() maxXAxisTickLength: number = 16;\n @Input() maxYAxisTickLength: number = 16;\n @Input() xAxisTickFormatting: any;\n @Input() yAxisTickFormatting: any;\n @Input() xAxisTicks: any[];\n @Input() yAxisTicks: any[];\n @Input() barPadding = 8;\n @Input() roundDomains: boolean = false;\n @Input() roundEdges: boolean = true;\n @Input() yScaleMax: number;\n @Input() yScaleMin: number;\n @Input() showDataLabel: boolean = false;\n @Input() dataLabelFormatting: any;\n @Input() noBarWhenZero: boolean = true;\n\n @Output() activate: EventEmitter<any> = new EventEmitter();\n @Output() deactivate: EventEmitter<any> = new EventEmitter();\n\n @ContentChild('tooltipTemplate') tooltipTemplate: TemplateRef<any>;\n\n dims: ViewDimensions;\n xScale: any;\n yScale: any;\n xDomain: any;\n yDomain: any;\n transform: string;\n colors: ColorHelper;\n margin: number[] = [10, 20, 10, 20];\n xAxisHeight: number = 0;\n yAxisWidth: number = 0;\n legendOptions: LegendOptions;\n dataLabelMaxHeight: any = { negative: 0, positive: 0 };\n\n update(): void {\n super.update();\n\n if (!this.showDataLabel) {\n this.dataLabelMaxHeight = { negative: 0, positive: 0 };\n }\n this.margin = [10 + this.dataLabelMaxHeight.positive, 20, 10 + this.dataLabelMaxHeight.negative, 20];\n\n this.dims = calculateViewDimensions({\n width: this.width,\n height: this.height,\n margins: this.margin,\n showXAxis: this.xAxis,\n showYAxis: this.yAxis,\n xAxisHeight: this.xAxisHeight,\n yAxisWidth: this.yAxisWidth,\n showXLabel: this.showXAxisLabel,\n showYLabel: this.showYAxisLabel,\n showLegend: this.legend,\n legendType: this.schemeType,\n legendPosition: this.legendPosition\n });\n\n this.formatDates();\n\n if (this.showDataLabel) {\n this.dims.height -= this.dataLabelMaxHeight.negative;\n }\n this.xScale = this.getXScale();\n this.yScale = this.getYScale();\n\n this.setColors();\n this.legendOptions = this.getLegendOptions();\n\n this.transform = `translate(${this.dims.xOffset} , ${this.margin[0] + this.dataLabelMaxHeight.negative})`;\n }\n\n getXScale(): any {\n this.xDomain = this.getXDomain();\n const spacing = this.xDomain.length / (this.dims.width / this.barPadding + 1);\n return scaleBand().range([0, this.dims.width]).paddingInner(spacing).domain(this.xDomain);\n }\n\n getYScale(): any {\n this.yDomain = this.getYDomain();\n const scale = scaleLinear().range([this.dims.height, 0]).domain(this.yDomain);\n return this.roundDomains ? scale.nice() : scale;\n }\n\n getXDomain(): any[] {\n return this.results.map(d => d.label);\n }\n\n getYDomain(): [number, number] {\n const values = this.results.map(d => d.value);\n\n let min = this.yScaleMin ? Math.min(this.yScaleMin, ...values) : Math.min(0, ...values);\n if (this.yAxisTicks && !this.yAxisTicks.some(isNaN)) {\n min = Math.min(min, ...this.yAxisTicks);\n }\n\n let max = this.yScaleMax ? Math.max(this.yScaleMax, ...values) : Math.max(0, ...values);\n if (this.yAxisTicks && !this.yAxisTicks.some(isNaN)) {\n max = Math.max(max, ...this.yAxisTicks);\n }\n return [min, max];\n }\n\n onClick(data: DataItem | string) {\n this.select.emit(data);\n }\n\n setColors(): void {\n let domain;\n if (this.schemeType === ScaleType.Ordinal) {\n domain = this.xDomain;\n } else {\n domain = this.yDomain;\n }\n\n this.colors = new ColorHelper(this.scheme, this.schemeType, domain, this.customColors);\n }\n\n getLegendOptions() {\n const opts = {\n scaleType: this.schemeType as any,\n colors: undefined,\n domain: [],\n title: undefined,\n position: this.legendPosition\n };\n if (opts.scaleType === ScaleType.Ordinal) {\n opts.domain = this.xDomain;\n opts.colors = this.colors;\n opts.title = this.legendTitle;\n } else {\n opts.domain = this.yDomain;\n opts.colors = this.colors.scale;\n }\n return opts;\n }\n\n updateYAxisWidth({ width }): void {\n this.yAxisWidth = width;\n this.update();\n }\n\n updateXAxisHeight({ height }): void {\n this.xAxisHeight = height;\n this.update();\n }\n\n onDataLabelMaxHeightChanged(event) {\n if (event.size.negative) {\n this.dataLabelMaxHeight.negative = Math.max(this.dataLabelMaxHeight.negative, event.size.height);\n } else {\n this.dataLabelMaxHeight.positive = Math.max(this.dataLabelMaxHeight.positive, event.size.height);\n }\n if (event.index === this.results.length - 1) {\n setTimeout(() => this.update());\n }\n }\n\n onActivate(item, fromLegend = false) {\n item = this.results.find(d => {\n if (fromLegend) {\n return d.label === item.name;\n } else {\n return d.name === item.name;\n }\n });\n\n const idx = this.activeEntries.findIndex(d => {\n return d.name === item.name && d.value === item.value && d.series === item.series;\n });\n if (idx > -1) {\n return;\n }\n\n this.activeEntries = [item, ...this.activeEntries];\n this.activate.emit({ value: item, entries: this.activeEntries });\n }\n\n onDeactivate(item, fromLegend = false) {\n item = this.results.find(d => {\n if (fromLegend) {\n return d.label === item.name;\n } else {\n return d.name === item.name;\n }\n });\n\n const idx = this.activeEntries.findIndex(d => {\n return d.name === item.name && d.value === item.value && d.series === item.series;\n });\n\n this.activeEntries.splice(idx, 1);\n this.activeEntries = [...this.activeEntries];\n\n this.deactivate.emit({ value: item, entries: this.activeEntries });\n }\n}\n","import {\n Component,\n Input,\n Output,\n ViewEncapsulation,\n EventEmitter,\n ChangeDetectionStrategy,\n ContentChild,\n TemplateRef,\n TrackByFunction\n} from '@angular/core';\nimport { trigger, style, animate, transition } from '@angular/animations';\nimport { scaleBand, scaleLinear } from 'd3-scale';\n\nimport { calculateViewDimensions } from '../common/view-dimensions.helper';\nimport { ColorHelper } from '../common/color.helper';\nimport { DataItem } from '../models/chart-data.model';\n\nimport { BaseChartComponent } from '../common/base-chart.component';\nimport { LegendOptions, LegendPosition } from '../common/types/legend.model';\nimport { ScaleType } from '../common/types/scale-type.enum';\nimport { ViewDimensions } from '../common/types/view-dimension.interface';\nimport { BarOrientation } from '../common/types/bar-orientation.enum';\n\n@Component({\n selector: 'ngx-charts-bar-vertical-2d',\n template: `\n <ngx-charts-chart\n [view]=\"[width, height]\"\n [showLegend]=\"legend\"\n [legendOptions]=\"legendOptions\"\n [activeEntries]=\"activeEntries\"\n [animations]=\"animations\"\n (legendLabelActivate)=\"onActivate($event, undefined, true)\"\n (legendLabelDeactivate)=\"onDeactivate($event, undefined, true)\"\n (legendLabelClick)=\"onClick($event)\"\n >\n <svg:g [attr.transform]=\"transform\" class=\"bar-chart chart\">\n <svg:g\n ngx-charts-grid-panel-series\n [xScale]=\"groupScale\"\n [yScale]=\"valueScale\"\n [data]=\"results\"\n [dims]=\"dims\"\n [orient]=\"barOrientation.Vertical\"\n ></svg:g>\n <svg:g\n ngx-charts-x-axis\n *ngIf=\"xAxis\"\n [xScale]=\"groupScale\"\n [dims]=\"dims\"\n [showLabel]=\"showXAxisLabel\"\n [labelText]=\"xAxisLabel\"\n [trimTicks]=\"trimXAxisTicks\"\n [rotateTicks]=\"rotateXAxisTicks\"\n [maxTickLength]=\"maxXAxisTickLength\"\n [tickFormatting]=\"xAxisTickFormatting\"\n [ticks]=\"xAxisTicks\"\n [xAxisOffset]=\"dataLabelMaxHeight.negative\"\n (dimensionsChanged)=\"updateXAxisHeight($event)\"\n ></svg:g>\n <svg:g\n ngx-charts-y-axis\n *ngIf=\"yAxis\"\n [yScale]=\"valueScale\"\n [dims]=\"dims\"\n [showGridLines]=\"showGridLines\"\n [showLabel]=\"showYAxisLabel\"\n [labelText]=\"yAxisLabel\"\n [trimTicks]=\"trimYAxisTicks\"\n [maxTickLength]=\"maxYAxisTickLength\"\n [tickFormatting]=\"yAxisTickFormatting\"\n [ticks]=\"yAxisTicks\"\n (dimensionsChanged)=\"updateYAxisWidth($event)\"\n ></svg:g>\n <svg:g\n ngx-charts-series-vertical\n *ngFor=\"let group of results; let index = index; trackBy: trackBy\"\n [@animationState]=\"'active'\"\n [attr.transform]=\"groupTransform(group)\"\n [activeEntries]=\"activeEntries\"\n [xScale]=\"innerScale\"\n [yScale]=\"valueScale\"\n [colors]=\"colors\"\n [series]=\"group.series\"\n [dims]=\"dims\"\n [gradient]=\"gradient\"\n [tooltipDisabled]=\"tooltipDisabled\"\n [tooltipTemplate]=\"tooltipTemplate\"\n [showDataLabel]=\"showDataLabel\"\n [dataLabelFormatting]=\"dataLabelFormatting\"\n [seriesName]=\"group.name\"\n [roundEdges]=\"roundEdges\"\n [animations]=\"animations\"\n [noBarWhenZero]=\"noBarWhenZero\"\n (select)=\"onClick($event, group)\"\n (activate)=\"onActivate($event, group)\"\n (deactivate)=\"onDeactivate($event, group)\"\n (dataLabelHeightChanged)=\"onDataLabelMaxHeightChanged($event, index)\"\n />\n </svg:g>\n </ngx-charts-chart>\n `,\n styleUrls: ['../common/base-chart.component.scss'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n animations: [\n trigger('animationState', [\n transition(':leave', [\n style({\n opacity: 1,\n transform: '*'\n }),\n animate(500, style({ opacity: 0, transform: 'scale(0)' }))\n ])\n ])\n ]\n})\nexport class BarVertical2DComponent extends BaseChartComponent {\n @Input() legend: boolean = false;\n @Input() legendTitle: string = 'Legend';\n @Input() legendPosition: LegendPosition = LegendPosition.Right;\n @Input() xAxis;\n @Input() yAxis;\n @Input() showXAxisLabel: boolean;\n @Input() showYAxisLabel: boolean;\n @Input() xAxisLabel: string;\n @Input() yAxisLabel: string;\n @Input() tooltipDisabled: boolean = false;\n @Input() scaleType: ScaleType = ScaleType.Ordinal;\n @Input() gradient: boolean;\n @Input() showGridLines: boolean = true;\n @Input() activeEntries: any[] = [];\n @Input() schemeType: ScaleType;\n @Input() trimXAxisTicks: boolean = true;\n @Input() trimYAxisTicks: boolean = true;\n @Input() rotateXAxisTicks: boolean = true;\n @Input() maxXAxisTickLength: number = 16;\n @Input() maxYAxisTickLength: number = 16;\n @Input() xAxisTickFormatting: any;\n @Input() yAxisTickFormatting: any;\n @Input() xAxisTicks: any[];\n @Input() yAxisTicks: any[];\n @Input() groupPadding: number = 16;\n @Input() barPadding: number = 8;\n @Input() roundDomains: boolean = false;\n @Input() roundEdges: boolean = true;\n @Input() yScaleMax: number;\n @Input() showDataLabel: boolean = false;\n @Input() dataLabelFormatting: any;\n @Input() noBarWhenZero: boolean = true;\n\n @Output() activate: EventEmitter<any> = new EventEmitter();\n @Output() deactivate: EventEmitter<any> = new EventEmitter();\n\n @ContentChild('tooltipTemplate') tooltipTemplate: TemplateRef<any>;\n\n dims: ViewDimensions;\n groupDomain: string[];\n innerDomain: string[];\n valueDomain: [number, number];\n groupScale: any;\n innerScale: any;\n valueScale: any;\n transform: string;\n colors: ColorHelper;\n margin: number[] = [10, 20, 10, 20];\n xAxisHeight: number = 0;\n yAxisWidth: number = 0;\n legendOptions: LegendOptions;\n dataLabelMaxHeight: any = { negative: 0, positive: 0 };\n\n barOrientation = BarOrientation;\n\n update(): void {\n super.update();\n\n if (!this.showDataLabel) {\n this.dataLabelMaxHeight = { negative: 0, positive: 0 };\n }\n this.margin = [10 + this.dataLabelMaxHeight.positive, 20, 10 + this.dataLabelMaxHeight.negative, 20];\n\n this.dims = calculateViewDimensions({\n width: this.width,\n height: this.height,\n margins: this.margin,\n showXAxis: this.xAxis,\n showYAxis: this.yAxis,\n xAxisHeight: this.xAxisHeight,\n yAxisWidth: this.yAxisWidth,\n showXLabel: this.showXAxisLabel,\n showYLabel: this.showYAxisLabel,\n showLegend: this.legend,\n legendType: this.schemeType,\n legendPosition: this.legendPosition\n });\n\n if (this.showDataLabel) {\n this.dims.height -= this.dataLabelMaxHeight.negative;\n }\n\n this.formatDates();\n\n this.groupDomain = this.getGroupDomain();\n this.innerDomain = this.getInnerDomain();\n this.valueDomain = this.getValueDomain();\n\n this.groupScale = this.getGroupScale();\n this.innerScale = this.getInnerScale();\n this.valueScale = this.getValueScale();\n\n this.setColors();\n this.legendOptions = this.getLegendOptions();\n this.transform = `translate(${this.dims.xOffset} , ${this.margin[0] + this.dataLabelMaxHeight.negative})`;\n }\n\n onDataLabelMaxHeightChanged(event, groupIndex: number): void {\n if (event.size.negative) {\n this.dataLabelMaxHeight.negative = Math.max(this.dataLabelMaxHeight.negative, event.size.height);\n } else {\n this.dataLabelMaxHeight.positive = Math.max(this.dataLabelMaxHeight.positive, event.size.height);\n }\n if (groupIndex === this.results.length - 1) {\n setTimeout(() => this.update());\n }\n }\n\n getGroupScale(): any {\n const spacing = this.groupDomain.length / (this.dims.height / this.groupPadding + 1);\n\n return scaleBand()\n .rangeRound([0, this.dims.width])\n .paddingInner(spacing)\n .paddingOuter(spacing / 2)\n .domain(this.groupDomain);\n }\n\n getInnerScale(): any {\n const width = this.groupScale.bandwidth();\n const spacing = this.innerDomain.length / (width / this.barPadding + 1);\n return scaleBand().rangeRound([0, width]).paddingInner(spacing).domain(this.innerDomain);\n }\n\n getValueScale(): any {\n const scale = scaleLinear().range([this.dims.height, 0]).domain(this.valueDomain);\n return this.roundDomains ? scale.nice() : scale;\n }\n\n getGroupDomain(): string[] {\n const domain = [];\n for (const group of this.results) {\n if (!domain.includes(group.label)) {\n domain.push(group.label);\n }\n }\n\n return domain;\n }\n\n getInnerDomain(): string[] {\n const domain = [];\n for (const group of this.results) {\n for (const d of group.series) {\n if (!domain.includes(d.label)) {\n domain.push(d.label);\n }\n }\n }\n\n return domain;\n }\n\n getValueDomain(): [number, number] {\n const domain = [];\n for (const group of this.results) {\n for (const d of group.series) {\n if (!domain.includes(d.value)) {\n domain.push(d.value);\n }\n }\n }\n\n const min = Math.min(0, ...domain);\n const max = this.yScaleMax ? Math.max(this.yScaleMax, ...domain) : Math.max(0, ...domain);\n\n return [min, max];\n }\n\n groupTransform(group: DataItem): string {\n return `translate(${this.groupScale(group.label)}, 0)`;\n }\n\n onClick(data, group?: DataItem): void {\n if (group) {\n data.series = group.name;\n }\n\n this.select.emit(data);\n }\n\n trackBy: TrackByFunction<DataItem> = (index: number, item: DataItem) => {\n return item.name;\n };\n\n setColors(): void {\n let domain;\n if (this.schemeType === ScaleType.Ordinal) {\n domain = this.innerDomain;\n } else {\n domain = this.valueDomain;\n }\n\n this.colors = new ColorHelper(this.scheme, this.schemeType, domain, this.customColors);\n }\n\n getLegendOptions(): LegendOptions {\n const opts = {\n scaleType: this.schemeType as any,\n colors: undefined,\n domain: [],\n title: undefined,\n position: this.legendPosition\n };\n if (opts.scaleType === ScaleType.Ordinal) {\n opts.domain = this.innerDomain;\n opts.colors = this.colors;\n opts.title = this.legendTitle;\n } else {\n opts.domain = this.valueDomain;\n opts.colors = this.colors.scale;\n }\n\n return opts;\n }\n\n updateYAxisWidth({ width }: { width: number }): void {\n this.yAxisWidth = width;\n this.update();\n }\n\n updateXAxisHeight({ height }: { height: number }): void {\n this.xAxisHeight = height;\n this.update();\n }\n\n onActivate(event, group: DataItem, fromLegend: boolean = false): void {\n const item = Object.assign({}, event);\n if (group) {\n item.series = group.name;\n }\n\n const items = this.results\n .map(g => g.series)\n .flat()\n .filter(i => {\n if (fromLegend) {\n return i.label === item.name;\n } else {\n return i.name === item.name && i.series === item.series;\n }\n });\n\n this.activeEntries = [...items];\n this.activate.emit({ value: item, entries: this.activeEntries });\n }\n\n onDeactivate(event, group: DataItem, fromLegend: boolean = false): void {\n const item = Object.assign({}, event);\n if (group) {\n item.series = group.name;\n }\n\n this.activeEntries = this.activeEntries.filter(i => {\n if (fromLegend) {\n return i.label !== item.name;\n } else {\n return !(i.name === item.name && i.series === item.series);\n }\n });\n\n this.deactivate.emit({ value: item, entries: this.activeEntries });\n }\n}\n","import {\n Component,\n Input,\n Output,\n EventEmitter,\n ViewEncapsulation,\n ChangeDetectionStrategy,\n ContentChild,\n TemplateRef,\n TrackByFunction\n} from '@angular/core';\nimport { trigger, style, animate, transition } from '@angular/animations';\nimport { scaleBand, scaleLinear } from 'd3-scale';\n\nimport { calculateViewDimensions } from '../common/view-dimensions.helper';\nimport { ColorHelper } from '../common/color.helper';\nimport { Series } from '../models/chart-data.model';\nimport { BaseChartComponent } from '../common/base-chart.component';\nimport { BarChartType } from './types/bar-chart-type.enum';\nimport { LegendOptions, LegendPosition } from '../common/types/legend.model';\nimport { ScaleType } from '../common/types/scale-type.enum';\nimport { ViewDimensions } from '../common/types/view-dimension.interface';\n\n@Component({\n selector: 'ngx-charts-bar-vertical-normalized',\n template: `\n <ngx-charts-chart\n [view]=\"[width, height]\"\n [showLegend]=\"legend\"\n [legendOptions]=\"legendOptions\"\n [activeEntries]=\"activeEntries\"\n [animations]=\"animations\"\n (legendLabelActivate)=\"onActivate($event, undefined, true)\"\n (legendLabelDeactivate)=\"onDeactivate($event, undefined, true)\"\n (legendLabelClick)=\"onClick($event)\"\n >\n <svg:g [attr.transform]=\"transform\" class=\"bar-chart chart\">\n <svg:g\n ngx-charts-x-axis\n *ngIf=\"xAxis\"\n [xScale]=\"xScale\"\n [dims]=\"dims\"\n [showLabel]=\"showXAxisLabel\"\n [labelText]=\"xAxisLabel\"\n [trimTicks]=\"trimXAxisTicks\"\n [rotateTicks]=\"rotateXAxisTicks\"\n [maxTickLength]=\"maxXAxisTickLength\"\n [tickFormatting]=\"xAxisTickFormatting\"\n [ticks]=\"xAxisTicks\"\n (dimensionsChanged)=\"updateXAxisHeight($event)\"\n ></svg:g>\n <svg:g\n ngx-charts-y-axis\n *ngIf=\"yAxis\"\n [yScale]=\"yScale\"\n [dims]=\"dims\"\n [showGridLines]=\"showGridLines\"\n [showLabel]=\"showYAxisLabel\"\n [labelText]=\"yAxisLabel\"\n [trimTicks]=\"trimYAxisTicks\"\n [maxTickLength]=\"maxYAxisTickLength\"\n [tickFormatting]=\"yAxisTickFormatting\"\n [ticks]=\"yAxisTicks\"\n (dimensionsChanged)=\"updateYAxisWidth($event)\"\n ></svg:g>\n <svg:g\n *ngFor=\"let group of results; trackBy: trackBy\"\n [@animationState]=\"'active'\"\n [attr.transform]=\"groupTransform(group)\"\n >\n <svg:g\n ngx-charts-series-vertical\n [type]=\"barChartType.Normalized\"\n [xScale]=\"xScale\"\n [yScale]=\"yScale\"\n [activeEntries]=\"activeEntries\"\n [colors]=\"colors\"\n [series]=\"group.series\"\n [dims]=\"dims\"\n [gradient]=\"gradient\"\n [tooltipDisabled]=\"tooltipDisabled\"\n [tooltipTemplate]=\"tooltipTemplate\"\n [seriesName]=\"group.name\"\n [animations]=\"animations\"\n [noBarWhenZero]=\"noBarWhenZero\"\n (select)=\"onClick($event, group)\"\n (activate)=\"onActivate($event, group)\"\n (deactivate)=\"onDeactivate($event, group)\"\n />\n </svg:g>\n </svg:g>\n </ngx-charts-chart>\n `,\n styleUrls: ['../common/base-chart.component.scss'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n animations: [\n trigger('animationState', [\n transition(':leave', [\n style({\n opacity: 1,\n transform: '*'\n }),\n animate(500, style({ opacity: 0, transform: 'scale(0)' }))\n ])\n ])\n ]\n})\nexport class BarVerticalNormalizedComponent extends BaseChartComponent {\n @Input() legend: boolean = false;\n @Input() legendTitle: string = 'Legend';\n @Input() legendPosition: LegendPosition = LegendPosition.Right;\n @Input() xAxis;\n @Input() yAxis;\n @Input() showXAxisLabel: boolean;\n @Input() showYAxisLabel: boolean;\n @Input() xAxisLabel: string;\n @Input() yAxisLabel: string;\n @Input() tooltipDisabled: boolean = false;\n @Input() gradient: boolean;\n @Input() showGridLines: boolean = true;\n @Input() activeEntries: any[] = [];\n @Input() schemeType: ScaleType;\n @Input() trimXAxisTicks: boolean = true;\n @Input() trimYAxisTicks: boolean = true;\n @Input() rotateXAxisTicks: boolean = true;\n @Input() maxXAxisTickLength: number = 16;\n @Input() maxYAxisTickLength: number = 16;\n @Input() xAxisTickFormatting: any;\n @Input() yAxisTickFormatting: any;\n @Input() xAxisTicks: any[];\n @Input() yAxisTicks: any[];\n @Input() barPadding: number = 8;\n @Input() roundDomains: boolean = false;\n @Input() noBarWhenZero: boolean = true;\n\n @Output() activate: EventEmitter<any> = new EventEmitter();\n @Output() deactivate: EventEmitter<any> = new EventEmitter();\n\n @ContentChild('tooltipTemplate') tooltipTemplate: TemplateRef<any>;\n\n dims: ViewDimensions;\n groupDomain: string[];\n innerDomain: string[];\n valueDomain: [number, number] = [0, 100];\n xScale: any;\n yScale: any;\n transform: string;\n colors: ColorHelper;\n margin: number[] = [10, 20, 10, 20];\n xAxisHeight: number = 0;\n yAxisWidth: number = 0;\n legendOptions: LegendOptions;\n\n barChartType = BarChartType;\n\n update(): void {\n super.update();\n\n this.dims = calculateViewDimensions({\n width: this.width,\n height: this.height,\n margins: this.margin,\n showXAxis: this.xAxis,\n showYAxis: this.yAxis,\n xAxisHeight: this.xAxisHeight,\n yAxisWidth: this.yAxisWidth,\n showXLabel: this.showXAxisLabel,\n showYLabel: this.showYAxisLabel,\n showLegend: this.legend,\n legendType: this.schemeType,\n legendPosition: this.legendPosition\n });\n\n this.formatDates();\n\n this.groupDomain = this.getGroupDomain();\n this.innerDomain = this.getInnerDomain();\n\n this.xScale = this.getXScale();\n this.yScale = this.getYScale();\n\n this.setColors();\n this.legendOptions = this.getLegendOptions();\n\n this.transform = `translate(${this.dims.xOffset} , ${this.margin[0]})`;\n }\n\n getGroupDomain(): string[] {\n const domain = [];\n for (const group of this.results) {\n if (!domain.includes(group.label)) {\n domain.push(group.label);\n }\n }\n\n return domain;\n }\n\n getInnerDomain(): string[] {\n const domain = [];\n for (const group of this.results) {\n for (const d of group.series) {\n if (!domain.includes(d.label)) {\n domain.push(d.label);\n }\n }\n }\n\n return domain;\n }\n\n getXScale(): any {\n const spacing = this.groupDomain.length / (this.dims.width / this.barPadding + 1);\n\n return scaleBand().rangeRound([0, this.dims.width]).paddingInner(spacing).domain(this.groupDomain);\n }\n\n getYScale(): any {\n const scale = scaleLinear().range([this.dims.height, 0]).domain(this.valueDomain);\n return this.roundDomains ? scale.nice() : scale;\n }\n\n groupTransform(group: Series): string {\n return `translate(${this.xScale(group.name)}, 0)`;\n }\n\n onClick(data, group?: Series) {\n if (group) {\n data.series = group.name;\n }\n\n this.select.emit(data);\n }\n\n trackBy: TrackByFunction<Series> = (index: number, item: Series) => {\n return item.name;\n };\n\n setColors(): void {\n let domain;\n if (this.schemeType === ScaleType.Ordinal) {\n domain = this.innerDomain;\n } else {\n domain = this.valueDomain;\n }\n\n this.colors = new ColorHelper(this.scheme, this.schemeType, domain, this.customColors);\n }\n\n getLegendOptions(): LegendOptions {\n const opts = {\n scaleType: this.schemeType as any,\n colors: undefined,\n domain: [],\n title: undefined,\n position: this.legendPosition\n };\n if (opts.scaleType === ScaleType.Ordinal) {\n opts.domain = this.innerDomain;\n opts.colors = this.colors;\n opts.title = this.legendTitle;\n } else {\n opts.domain = this.valueDomain;\n opts.colors = this.colors.scale;\n }\n\n return opts;\n }\n\n updateYAxisWidth({ width }: { width: number }) {\n this.yAxisWidth = width;\n this.update();\n }\n\n updateXAxisHeight({ height }: { height: number }) {\n this.xAxisHeight = height;\n this.update();\n }\n\n onActivate(event, group: Series, fromLegend: boolean = false) {\n const item = Object.assign({}, event);\n if (group) {\n item.series = group.name;\n }\n\n const items = this.results\n .map(g => g.series)\n .flat()\n .filter(i => {\n if (fromLegend) {\n return i.label === item.name;\n } else {\n return i.name === item.name && i.series === item.series;\n }\n });\n\n this.activeEntries = [...items];\n this.activate.emit({ value: item, entries: this.activeEntries });\n }\n\n onDeactivate(event, group: Series, fromLegend: boolean = false) {\n const item = Object.assign({}, event);\n if (group) {\n item.series = group.name;\n }\n\n this.activeEntries = this.activeEntries.filter(i => {\n if (fromLegend) {\n return i.label !== item.name;\n } else {\n return !(i.name === item.name && i.series === item.series);\n }\n });\n\n this.deactivate.emit({ value: item, entries: this.activeEntries });\n }\n}\n","import {\n Component,\n Input,\n Output,\n EventEmitter,\n ViewEncapsulation,\n ChangeDetectionStrategy,\n ContentChild,\n TemplateRef,\n TrackByFunction\n} from '@angular/core';\nimport { trigger, style, animate, transition } from '@angular/animations';\nimport { scaleBand, scaleLinear } from 'd3-scale';\n\nimport { calculateViewDimensions } from '../common/view-dimensions.helper';\nimport { ColorHelper } from '../common/color.helper';\nimport { Series } from '../models/chart-data.model';\nimport { BaseChartComponent } from '../common/base-chart.component';\nimport { BarChartType } from './types/bar-chart-type.enum';\nimport { LegendOptions, LegendPosition } from '../common/types/legend.model';\nimport { ScaleType } from '../common/types/scale-type.enum';\nimport { ViewDimensions } from '../common/types/view-dimension.interface';\n\n@Component({\n selector: 'ngx-charts-bar-vertical-stacked',\n template: `\n <ngx-charts-chart\n [view]=\"[width, height]\"\n [showLegend]=\"legend\"\n [legendOptions]=\"legendOptions\"\n [activeEntries]=\"activeEntries\"\n [animations]=\"animations\"\n (legendLabelActivate)=\"onActivate($event, undefined, true)\"\n (legendLabelDeactivate)=\"onDeactivate($event, undefined, true)\"\n (legendLabelClick)=\"onClick($event)\"\n >\n <svg:g [attr.transform]=\"transform\" class=\"bar-chart chart\">\n <svg:g\n ngx-charts-x-axis\n *ngIf=\"xAxis\"\n [xScale]=\"xScale\"\n [dims]=\"dims\"\n [showLabel]=\"showXAxisLabel\"\n [labelText]=\"xAxisLabel\"\n [trimTicks]=\"trimXAxisTicks\"\n [rotateTicks]=\"rotateXAxisTicks\"\n [maxTickLength]=\"maxXAxisTickLength\"\n [tickFormatting]=\"xAxisTickFormatting\"\n [ticks]=\"xAxisTicks\"\n [xAxisOffset]=\"dataLabelMaxHeight.negative\"\n (dimensionsChanged)=\"updateXAxisHeight($event)\"\n ></svg:g>\n <svg:g\n ngx-charts-y-axis\n *ngIf=\"yAxis\"\n [yScale]=\"yScale\"\n [dims]=\"dims\"\n [showGridLines]=\"showGridLines\"\n [showLabel]=\"showYAxisLabel\"\n [labelText]=\"yAxisLabel\"\n [trimTicks]=\"trimYAxisTicks\"\n [maxTickLength]=\"maxYAxisTickLength\"\n [tickFormatting]=\"yAxisTickFormatting\"\n [ticks]=\"yAxisTicks\"\n (dimensionsChanged)=\"updateYAxisWidth($event)\"\n ></svg:g>\n <svg:g\n *ngFor=\"let group of results; let index = index; trackBy: trackBy\"\n [@animationState]=\"'active'\"\n [attr.transform]=\"groupTransform(group)\"\n >\n <svg:g\n ngx-charts-series-vertical\n [type]=\"barChartType.Stacked\"\n [xScale]=\"xScale\"\n [yScale]=\"yScale\"\n [activeEntries]=\"activeEntries\"\n [colors]=\"colors\"\n [series]=\"group.series\"\n [dims]=\"dims\"\n [gradient]=\"gradient\"\n [tooltipDisabled]=\"tooltipDisabled\"\n [tooltipTemplate]=\"tooltipTemplate\"\n [showDataLabel]=\"showDataLabel\"\n [dataLabelFormatting]=\"dataLabelFormatting\"\n [seriesName]=\"group.name\"\n [animations]=\"animations\"\n [noBarWhenZero]=\"noBarWhenZero\"\n (select)=\"onClick($event, group)\"\n (activate)=\"onActivate($event, group)\"\n (deactivate)=\"onDeactivate($event, group)\"\n (dataLabelHeightChanged)=\"onDataLabelMaxHeightChanged($event, index)\"\n />\n </svg:g>\n </svg:g>\n </ngx-charts-chart>\n `,\n styleUrls: ['../common/base-chart.component.scss'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n animations: [\n trigger('animationState', [\n transition(':leave', [\n style({\n opacity: 1,\n transform: '*'\n }),\n animate(500, style({ opacity: 0, transform: 'scale(0)' }))\n ])\n ])\n ]\n})\nexport class BarVerticalStackedComponent extends BaseChartComponent {\n @Input() legend: boolean = false;\n @Input() legendTitle: string = 'Legend';\n @Input() legendPosition: LegendPosition = LegendPosition.Right;\n @Input() xAxis;\n @Input() yAxis;\n @Input() showXAxisLabel: boolean;\n @Input() showYAxisLabel: boolean;\n @Input() xAxisLabel: string;\n @Input() yAxisLabel: string;\n @Input() tooltipDisabled: boolean = false;\n @Input() gradient: boolean;\n @Input() showGridLines: boolean = true;\n @Input() activeEntries: any[] = [];\n @Input() schemeType: ScaleType;\n @Input() trimXAxisTicks: boolean = true;\n @Input() trimYAxisTicks: boolean = true;\n @Input() rotateXAxisTicks: boolean = true;\n @Input() maxXAxisTickLength: number = 16;\n @Input() maxYAxisTickLength: number = 16;\n @Input() xAxisTickFormatting: any;\n @Input() yAxisTickFormatting: any;\n @Input() xAxisTicks: any[];\n @Input() yAxisTicks: any[];\n @Input() barPadding: number = 8;\n @Input() roundDomains: boolean = false;\n @Input() yScaleMax: number;\n @Input() showDataLabel: boolean = false;\n @Input() dataLabelFormatting: any;\n @Input() noBarWhenZero: boolean = true;\n\n @Output() activate: EventEmitter<any> = new EventEmitter();\n @Output() deactivate: EventEmitter<any> = new EventEmitter();\n\n @ContentChild('tooltipTemplate') tooltipTemplate: TemplateRef<any>;\n\n dims: ViewDimensions;\n groupDomain: string[];\n innerDomain: string[];\n valueDomain: [number, number];\n xScale: any;\n yScale: any;\n transform: string;\n tickFormatting: (label: string) => string;\n colors: ColorHelper;\n margin: number[] = [10, 20, 10, 20];\n xAxisHeight: number = 0;\n yAxisWidth: number = 0;\n legendOptions: LegendOptions;\n dataLabelMaxHeight: any = { negative: 0, positive: 0 };\n\n barChartType = BarChartType;\n\n update(): void {\n super.update();\n\n if (!this.showDataLabel) {\n this.dataLabelMaxHeight = { negative: 0, positive: 0 };\n }\n this.margin = [10 + this.dataLabelMaxHeight.positive, 20, 10 + this.dataLabelMaxHeight.negative, 20];\n\n this.dims = calculateViewDimensions({\n width: this.width,\n height: this.height,\n margins: this.margin,\n showXAxis: this.xAxis,\n showYAxis: this.yAxis,\n xAxisHeight: this.xAxisHeight,\n yAxisWidth: this.yAxisWidth,\n showXLabel: this.showXAxisLabel,\n showYLabel: this.showYAxisLabel,\n showLegend: this.legend,\n legendType: this.schemeType,\n legendPosition: this.legendPosition\n });\n\n if (this.showDataLabel) {\n this.dims.height -= this.dataLabelMaxHeight.negative;\n }\n\n this.formatDates();\n\n this.groupDomain = this.getGroupDomain();\n this.innerDomain = this.getInnerDomain();\n this.valueDomain = this.getValueDomain();\n\n this.xScale = this.getXScale();\n this.yScale = this.getYScale();\n\n this.setColors();\n this.legendOptions = this.getLegendOptions();\n\n this.transform = `translate(${this.dims.xOffset} , ${this.margin[0] + this.dataLabelMaxHeight.negative})`;\n }\n\n getGroupDomain(): string[] {\n const domain = [];\n for (const group of this.results) {\n if (!domain.includes(group.label)) {\n domain.push(group.label);\n }\n }\n return domain;\n }\n\n getInnerDomain(): string[] {\n const domain = [];\n for (const group of this.results) {\n for (const d of group.series) {\n if (!domain.includes(d.label)) {\n domain.push(d.label);\n }\n }\n }\n return domain;\n }\n\n getValueDomain(): [number, number] {\n const domain = [];\n let smallest = 0;\n let biggest = 0;\n for (const group of this.results) {\n let smallestSum = 0;\n let biggestSum = 0;\n for (const d of group.series) {\n if (d.value < 0) {\n smallestSum += d.value;\n } else {\n biggestSum += d.value;\n }\n smallest = d.value < smallest ? d.value : smallest;\n biggest = d.value > biggest ? d.value : biggest;\n }\n domain.push(smallestSum);\n domain.push(biggestSum);\n }\n domain.push(smallest);\n domain.push(biggest);\n\n const min = Math.min(0, ...domain);\n const max = this.yScaleMax ? Math.max(this.yScaleMax, ...domain) : Math.max(...domain);\n return [min, max];\n }\n\n getXScale(): any {\n const spacing = this.groupDomain.length / (this.dims.width / this.barPadding + 1);\n return scaleBand().rangeRound([0, this.dims.width]).paddingInner(spacing).domain(this.groupDomain);\n }\n\n getYScale(): any {\n const scale = scaleLinear().range([this.dims.height, 0]).domain(this.valueDomain);\n return this.roundDomains ? scale.nice() : scale;\n }\n\n onDataLabelMaxHeightChanged(event, groupIndex: number) {\n if (event.size.negative) {\n this.dataLabelMaxHeight.negative = Math.max(this.dataLabelMaxHeight.negative, event.size.height);\n } else {\n this.dataLabelMaxHeight.positive = Math.max(this.dataLabelMaxHeight.positive, event.size.height);\n }\n if (groupIndex === this.results.length - 1) {\n setTimeout(() => this.update());\n }\n }\n\n groupTransform(group: Series): string {\n return `translate(${this.xScale(group.name) || 0}, 0)`;\n }\n\n onClick(data, group?: Series) {\n if (group) {\n data.series = group.name;\n }\n\n this.select.emit(data);\n }\n\n trackBy: TrackByFunction<Series> = (index: number, item: Series) => {\n return item.name;\n };\n\n setColors(): void {\n let domain;\n if (this.schemeType === ScaleType.Ordinal) {\n domain = this.innerDomain;\n } else {\n domain = this.valueDomain;\n }\n\n this.colors = new ColorHelper(this.scheme, this.schemeType, domain, this.customColors);\n }\n\n getLegendOptions(): LegendOptions {\n const opts = {\n scaleType: this.schemeType as any,\n colors: undefined,\n domain: [],\n title: undefined,\n position: this.legendPosition\n };\n if (opts.scaleType === ScaleType.Ordinal) {\n opts.domain = this.innerDomain;\n opts.colors = this.colors;\n opts.title = this.legendTitle;\n } else {\n opts.domain = this.valueDomain;\n opts.colors = this.colors.scale;\n }\n\n return opts;\n }\n\n updateYAxisWidth({ width }: { width: number }): void {\n this.yAxisWidth = width;\n this.update();\n }\n\n updateXAxisHeight({ height }: { height: number }): void {\n this.xAxisHeight = height;\n this.update();\n }\n\n onActivate(event, group, fromLegend: boolean = false): void {\n const item = Object.assign({}, event);\n if (group) {\n item.series = group.name;\n }\n\n const items = this.results\n .map(g => g.series)\n .flat()\n .filter(i => {\n if (fromLegend) {\n return i.label === item.name;\n } else {\n return i.name === item.name && i.series === item.series;\n }\n });\n\n this.activeEntries = [...items];\n this.activate.emit({ value: item, entries: this.activeEntries });\n }\n\n onDeactivate(event, group: Series, fromLegend: boolean = false) {\n const item = Object.assign({}, event);\n if (group) {\n item.series = group.name;\n }\n\n this.activeEntries = this.activeEntries.filter(i => {\n if (fromLegend) {\n return i.label !== item.name;\n } else {\n return !(i.name === item.name && i.series === item.series);\n }\n });\n\n this.deactivate.emit({ value: item, entries: this.activeEntries });\n }\n}\n","export enum D0Types {\n positive = 'positive',\n negative = 'negative'\n}\n","import {\n Component,\n Input,\n Output,\n EventEmitter,\n OnChanges,\n SimpleChanges,\n ChangeDetectionStrategy,\n TemplateRef\n} from '@angular/core';\nimport { trigger, style, animate, transition } from '@angular/animations';\nimport { formatLabel, escapeLabel } from '../common/label.helper';\nimport { DataItem, StringOrNumberOrDate } from '../models/chart-data.model';\nimport { ColorHelper } from '../common/color.helper';\nimport { PlacementTypes } from '../common/tooltip/position';\nimport { StyleTypes } from '../common/tooltip/style.type';\nimport { BarChartType } from './types/bar-chart-type.enum';\nimport { Bar } from './types/bar.model';\nimport { D0Types } from './types/d0-type.enum';\nimport { ViewDimensions } from '../common/types/view-dimension.interface';\nimport { BarOrientation } from '../common/types/bar-orientation.enum';\nimport { ScaleType } from '../common/types/scale-type.enum';\n\n@Component({\n selector: 'g[ngx-charts-series-horizontal]',\n template: `\n <svg:g\n ngx-charts-bar\n *ngFor=\"let bar of bars; trackBy: trackBy\"\n [@animationState]=\"'active'\"\n [width]=\"bar.width\"\n [height]=\"bar.height\"\n [x]=\"bar.x\"\n [y]=\"bar.y\"\n [fill]=\"bar.color\"\n [stops]=\"bar.gradientStops\"\n [data]=\"bar.data\"\n [orientation]=\"barOrientation.Horizontal\"\n [roundEdges]=\"bar.roundEdges\"\n (select)=\"click($event)\"\n [gradient]=\"gradient\"\n [isActive]=\"isActive(bar.data)\"\n [ariaLabel]=\"bar.ariaLabel\"\n [animations]=\"animations\"\n (activate)=\"activate.emit($event)\"\n (deactivate)=\"deactivate.emit($event)\"\n ngx-tooltip\n [tooltipDisabled]=\"tooltipDisabled\"\n [tooltipPlacement]=\"tooltipPlacement\"\n [tooltipType]=\"tooltipType\"\n [tooltipTitle]=\"tooltipTemplate ? undefined : bar.tooltipText\"\n [tooltipTemplate]=\"tooltipTemplate\"\n [tooltipContext]=\"bar.data\"\n [noBarWhenZero]=\"noBarWhenZero\"\n ></svg:g>\n <svg:g *ngIf=\"showDataLabel\">\n <svg:g\n ngx-charts-bar-label\n *ngFor=\"let b of barsForDataLabels; let i = index; trackBy: trackDataLabelBy\"\n [barX]=\"b.x\"\n [barY]=\"b.y\"\n [barWidth]=\"b.width\"\n [barHeight]=\"b.height\"\n [value]=\"b.total\"\n [valueFormatting]=\"dataLabelFormatting\"\n [orientation]=\"barOrientation.Horizontal\"\n (dimensionsChanged)=\"dataLabelWidthChanged.emit({ size: $event, index: i })\"\n />\n </svg:g>\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n animations: [\n trigger('animationState', [\n transition(':leave', [\n style({\n opacity: 1\n }),\n animate(500, style({ opacity: 0 }))\n ])\n ])\n ]\n})\nexport class SeriesHorizontal implements OnChanges {\n @Input() dims: ViewDimensions;\n @Input() type: BarChartType = BarChartType.Standard;\n @Input() series: DataItem[];\n @Input() xScale;\n @Input() yScale;\n @Input() colors: ColorHelper;\n @Input() tooltipDisabled: boolean = false;\n @Input() gradient: boolean;\n @Input() activeEntries: DataItem[];\n @Input() seriesName: StringOrNumberOrDate;\n @Input() tooltipTemplate: TemplateRef<any>;\n @Input() roundEdges: boolean;\n @Input() animations: boolean = true;\n @Input() showDataLabel: boolean = false;\n @Input() dataLabelFormatting: any;\n @Input() noBarWhenZero: boolean = true;\n\n @Output() select: EventEmitter<DataItem> = new EventEmitter();\n @Output() activate = new EventEmitter();\n @Output() deactivate = new EventEmitter();\n @Output() dataLabelWidthChanged = new EventEmitter<{ size: Event; index: number }>();\n\n tooltipPlacement: PlacementTypes;\n tooltipType: StyleTypes;\n bars: Bar[];\n barsForDataLabels: Array<{ x: number; y: number; width: number; height: number; total: number; series: string }> = [];\n\n barOrientation = BarOrientation;\n\n ngOnChanges(changes: SimpleChanges): void {\n this.update();\n }\n\n update(): void {\n this.updateTooltipSettings();\n const d0 = {\n [D0Types.positive]: 0,\n [D0Types.negative]: 0\n };\n let d0Type: D0Types;\n d0Type = D0Types.positive;\n let total;\n if (this.type === BarChartType.Normalized) {\n total = this.series.map(d => d.value).reduce((sum, d) => (sum as any) + d, 0);\n }\n const xScaleMin = Math.max(this.xScale.domain()[0], 0);\n\n this.bars = this.series.map(d => {\n let value = d.value as any;\n const label = this.getLabel(d);\n const formattedLabel = formatLabel(label);\n const roundEdges = this.roundEdges;\n d0Type = value > 0 ? D0Types.positive : D0Types.negative;\n\n const bar: any = {\n value,\n label,\n roundEdges,\n data: d,\n formattedLabel\n };\n\n bar.height = this.yScale.bandwidth();\n\n if (this.type === BarChartType.Standard) {\n bar.width = Math.abs(this.xScale(value) - this.xScale(xScaleMin));\n if (value < 0) {\n bar.x = this.xScale(value);\n } else {\n bar.x = this.xScale(xScaleMin);\n }\n bar.y = this.yScale(label);\n } else if (this.type === BarChartType.Stacked) {\n const offset0 = d0[d0Type];\n const offset1 = offset0 + value;\n d0[d0Type] += value;\n\n bar.width = this.xScale(offset1) - this.xScale(offset0);\n bar.x = this.xScale(offset0);\n bar.y = 0;\n bar.offset0 = offset0;\n bar.offset1 = offset1;\n } else if (this.type === BarChartType.Normalized) {\n let offset0 = d0[d0Type];\n let offset1 = offset0 + value;\n d0[d0Type] += value;\n\n if (total > 0) {\n offset0 = (offset0 * 100) / total;\n offset1 = (offset1 * 100) / total;\n } else {\n offset0 = 0;\n offset1 = 0;\n }\n\n bar.width = this.xScale(offset1) - this.xScale(offset0);\n bar.x = this.xScale(offset0);\n bar.y = 0;\n bar.offset0 = offset0;\n bar.offset1 = offset1;\n value = (offset1 - offset0).toFixed(2) + '%';\n }\n\n if (this.colors.scaleType === ScaleType.Ordinal) {\n bar.color = this.colors.getColor(label);\n } else {\n if (this.type === BarChartType.Standard) {\n bar.color = this.colors.getColor(value);\n bar.gradientStops = this.colors.getLinearGradientStops(value);\n } else {\n bar.color = this.colors.getColor(bar.offset1);\n bar.gradientStops = this.colors.getLinearGradientStops(bar.offset1, bar.offset0);\n }\n }\n\n let tooltipLabel = formattedLabel;\n bar.ariaLabel = formattedLabel + ' ' + value.toLocaleString();\n if (this.seriesName !== null && this.seriesName !== undefined) {\n tooltipLabel = `${this.seriesName} • ${formattedLabel}`;\n bar.data.series = this.seriesName;\n bar.ariaLabel = this.seriesName + ' ' + bar.ariaLabel;\n }\n\n bar.tooltipText = this.tooltipDisabled\n ? undefined\n : `\n <span class=\"tooltip-label\">${escapeLabel(tooltipLabel)}</span>\n <span class=\"tooltip-val\">${\n this.dataLabelFormatting ? this.dataLabelFormatting(value) : value.toLocaleString()\n }</span>\n `;\n\n return bar;\n });\n\n this.updateDataLabels();\n }\n\n updateDataLabels(): void {\n if (this.type === BarChartType.Stacked) {\n this.barsForDataLabels = [];\n const section: any = {};\n section.series = this.seriesName;\n const totalPositive = this.series.map(d => d.value).reduce((sum, d) => (d > 0 ? sum + d : sum), 0);\n const totalNegative = this.series.map(d => d.value).reduce((sum, d) => (d < 0 ? sum + d : sum), 0);\n section.total = totalPositive + totalNegative;\n section.x = 0;\n section.y = 0;\n // if total is positive then we show it on the right, otherwise on the left\n if (section.total > 0) {\n section.width = this.xScale(totalPositive);\n } else {\n section.width = this.xScale(totalNegative);\n }\n section.height = this.yScale.bandwidth();\n this.barsForDataLabels.push(section);\n } else {\n this.barsForDataLabels = this.series.map(d => {\n const section: any = {};\n section.series = this.seriesName ?? d.label;\n section.total = d.value;\n section.x = this.xScale(0);\n section.y = this.yScale(d.label);\n section.width = this.xScale(section.total) - this.xScale(0);\n section.height = this.yScale.bandwidth();\n return section;\n });\n }\n }\n\n updateTooltipSettings(): void {\n this.tooltipPlacement = this.tooltipDisabled ? undefined : PlacementTypes.Top;\n this.tooltipType = this.tooltipDisabled ? undefined : StyleTypes.tooltip;\n }\n\n isActive(entry: DataItem): boolean {\n if (!this.activeEntries) return false;\n\n const item = this.activeEntries.find(active => {\n return entry.name === active.name && entry.value === active.value;\n });\n\n return item !== undefined;\n }\n\n getLabel(dataItem: DataItem): StringOrNumberOrDate {\n if (dataItem.label) {\n return dataItem.label;\n }\n return dataItem.name;\n }\n\n trackBy(index: number, bar: Bar): string {\n return bar.label;\n }\n\n trackDataLabelBy(index: number, barLabel: any): string {\n return index + '#' + barLabel.series + '#' + barLabel.total;\n }\n\n click(data: DataItem): void {\n this.select.emit(data);\n }\n}\n","import { Component, Input, Output, EventEmitter, OnChanges, ChangeDetectionStrategy, TemplateRef } from '@angular/core';\nimport { trigger, style, animate, transition } from '@angular/animations';\nimport { formatLabel, escapeLabel } from '../common/label.helper';\nimport { DataItem, StringOrNumberOrDate } from '../models/chart-data.model';\nimport { PlacementTypes } from '../common/tooltip/position';\nimport { StyleTypes } from '../common/tooltip/style.type';\nimport { ColorHelper } from '../common/color.helper';\nimport { BarChartType } from './types/bar-chart-type.enum';\nimport { D0Types } from './types/d0-type.enum';\nimport { Bar } from './types/bar.model';\nimport { ViewDimensions } from '../common/types/view-dimension.interface';\nimport { BarOrientation } from '../common/types/bar-orientation.enum';\nimport { ScaleType } from '../common/types/scale-type.enum';\n\n@Component({\n selector: 'g[ngx-charts-series-vertical]',\n template: `\n <svg:g\n ngx-charts-bar\n *ngFor=\"let bar of bars; trackBy: trackBy\"\n [@animationState]=\"'active'\"\n [@.disabled]=\"!animations\"\n [width]=\"bar.width\"\n [height]=\"bar.height\"\n [x]=\"bar.x\"\n [y]=\"bar.y\"\n [fill]=\"bar.color\"\n [stops]=\"bar.gradientStops\"\n [data]=\"bar.data\"\n [orientation]=\"barOrientation.Vertical\"\n [roundEdges]=\"bar.roundEdges\"\n [gradient]=\"gradient\"\n [ariaLabel]=\"bar.ariaLabel\"\n [isActive]=\"isActive(bar.data)\"\n (select)=\"onClick($event)\"\n (activate)=\"activate.emit($event)\"\n (deactivate)=\"deactivate.emit($event)\"\n ngx-tooltip\n [tooltipDisabled]=\"tooltipDisabled\"\n [tooltipPlacement]=\"tooltipPlacement\"\n [tooltipType]=\"tooltipType\"\n [tooltipTitle]=\"tooltipTemplate ? undefined : bar.tooltipText\"\n [tooltipTemplate]=\"tooltipTemplate\"\n [tooltipContext]=\"bar.data\"\n [noBarWhenZero]=\"noBarWhenZero\"\n [animations]=\"animations\"\n ></svg:g>\n <svg:g *ngIf=\"showDataLabel\">\n <svg:g\n ngx-charts-bar-label\n *ngFor=\"let b of barsForDataLabels; let i = index; trackBy: trackDataLabelBy\"\n [barX]=\"b.x\"\n [barY]=\"b.y\"\n [barWidth]=\"b.width\"\n [barHeight]=\"b.height\"\n [value]=\"b.total\"\n [valueFormatting]=\"dataLabelFormatting\"\n [orientation]=\"barOrientation.Vertical\"\n (dimensionsChanged)=\"dataLabelHeightChanged.emit({ size: $event, index: i })\"\n />\n </svg:g>\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n animations: [\n trigger('animationState', [\n transition(':leave', [\n style({\n opacity: 1\n }),\n animate(500, style({ opacity: 0 }))\n ])\n ])\n ]\n})\nexport class SeriesVerticalComponent implements OnChanges {\n @Input() dims: ViewDimensions;\n @Input() type: BarChartType = BarChartType.Standard;\n @Input() series: DataItem[];\n @Input() xScale;\n @Input() yScale;\n @Input() colors: ColorHelper;\n @Input() gradient: boolean;\n @Input() activeEntries: DataItem[];\n @Input() seriesName: StringOrNumberOrDate;\n @Input() tooltipDisabled: boolean = false;\n @Input() tooltipTemplate: TemplateRef<any>;\n @Input() roundEdges: boolean;\n @Input() animations: boolean = true;\n @Input() showDataLabel: boolean = false;\n @Input() dataLabelFormatting: any;\n @Input() noBarWhenZero: boolean = true;\n\n @Output() select: EventEmitter<DataItem> = new EventEmitter();\n @Output() activate = new EventEmitter();\n @Output() deactivate = new EventEmitter();\n @Output() dataLabelHeightChanged = new EventEmitter();\n\n tooltipPlacement: PlacementTypes;\n tooltipType: StyleTypes;\n\n bars: Bar[];\n barsForDataLabels: Array<{ x: number; y: number; width: number; height: number; total: number; series: string }> = [];\n\n barOrientation = BarOrientation;\n\n ngOnChanges(changes): void {\n this.update();\n }\n\n update(): void {\n this.updateTooltipSettings();\n let width;\n if (this.series.length) {\n width = this.xScale.bandwidth();\n }\n width = Math.round(width);\n const yScaleMin = Math.max(this.yScale.domain()[0], 0);\n\n const d0 = {\n [D0Types.positive]: 0,\n [D0Types.negative]: 0\n };\n let d0Type = D0Types.positive;\n\n let total;\n if (this.type === BarChartType.Normalized) {\n total = this.series.map(d => d.value).reduce((sum, d) => sum + d, 0);\n }\n\n this.bars = this.series.map((d, index) => {\n let value = d.value as any;\n const label = this.getLabel(d);\n const formattedLabel = formatLabel(label);\n const roundEdges = this.roundEdges;\n d0Type = value > 0 ? D0Types.positive : D0Types.negative;\n\n const bar: any = {\n value,\n label,\n roundEdges,\n data: d,\n width,\n formattedLabel,\n height: 0,\n x: 0,\n y: 0\n };\n\n if (this.type === BarChartType.Standard) {\n bar.height = Math.abs(this.yScale(value) - this.yScale(yScaleMin));\n bar.x = this.xScale(label);\n\n if (value < 0) {\n bar.y = this.yScale(0);\n } else {\n bar.y = this.yScale(value);\n }\n } else if (this.type === BarChartType.Stacked) {\n const offset0 = d0[d0Type];\n const offset1 = offset0 + value;\n d0[d0Type] += value;\n\n bar.height = this.yScale(offset0) - this.yScale(offset1);\n bar.x = 0;\n bar.y = this.yScale(offset1);\n bar.offset0 = offset0;\n bar.offset1 = offset1;\n } else if (this.type === BarChartType.Normalized) {\n let offset0 = d0[d0Type];\n let offset1 = offset0 + value;\n d0[d0Type] += value;\n\n if (total > 0) {\n offset0 = (offset0 * 100) / total;\n offset1 = (offset1 * 100) / total;\n } else {\n offset0 = 0;\n offset1 = 0;\n }\n\n bar.height = this.yScale(offset0) - this.yScale(offset1);\n bar.x = 0;\n bar.y = this.yScale(offset1);\n bar.offset0 = offset0;\n bar.offset1 = offset1;\n value = (offset1 - offset0).toFixed(2) + '%';\n }\n\n if (this.colors.scaleType === ScaleType.Ordinal) {\n bar.color = this.colors.getColor(label);\n } else {\n if (this.type === BarChartType.Standard) {\n bar.color = this.colors.getColor(value);\n bar.gradientStops = this.colors.getLinearGradientStops(value);\n } else {\n bar.color = this.colors.getColor(bar.offset1);\n bar.gradientStops = this.colors.getLinearGradientStops(bar.offset1, bar.offset0);\n }\n }\n\n let tooltipLabel = formattedLabel;\n bar.ariaLabel = formattedLabel + ' ' + value.toLocaleString();\n if (this.seriesName !== null && this.seriesName !== undefined) {\n tooltipLabel = `${this.seriesName} • ${formattedLabel}`;\n bar.data.series = this.seriesName;\n bar.ariaLabel = this.seriesName + ' ' + bar.ariaLabel;\n }\n\n bar.tooltipText = this.tooltipDisabled\n ? undefined\n : `\n <span class=\"tooltip-label\">${escapeLabel(tooltipLabel)}</span>\n <span class=\"tooltip-val\">${\n this.dataLabelFormatting ? this.dataLabelFormatting(value) : value.toLocaleString()\n }</span>\n `;\n\n return bar;\n });\n\n this.updateDataLabels();\n }\n\n updateDataLabels(): void {\n if (this.type === BarChartType.Stacked) {\n this.barsForDataLabels = [];\n const section: any = {};\n section.series = this.seriesName;\n const totalPositive = this.series.map(d => d.value).reduce((sum, d) => (d > 0 ? sum + d : sum), 0);\n const totalNegative = this.series.map(d => d.value).reduce((sum, d) => (d < 0 ? sum + d : sum), 0);\n section.total = totalPositive + totalNegative;\n section.x = 0;\n section.y = 0;\n if (section.total > 0) {\n section.height = this.yScale(totalPositive);\n } else {\n section.height = this.yScale(totalNegative);\n }\n section.width = this.xScale.bandwidth();\n this.barsForDataLabels.push(section);\n } else {\n this.barsForDataLabels = this.series.map(d => {\n const section: any = {};\n section.series = this.seriesName ?? d.label;\n section.total = d.value;\n section.x = this.xScale(d.label);\n section.y = this.yScale(0);\n section.height = this.yScale(section.total) - this.yScale(0);\n section.width = this.xScale.bandwidth();\n return section;\n });\n }\n }\n\n updateTooltipSettings(): void {\n this.tooltipPlacement = this.tooltipDisabled ? undefined : PlacementTypes.Top;\n this.tooltipType = this.tooltipDisabled ? undefined : StyleTypes.tooltip;\n }\n\n isActive(entry: DataItem): boolean {\n if (!this.activeEntries) return false;\n\n const item = this.activeEntries.find(active => {\n return entry.name === active.name && entry.value === active.value;\n });\n\n return item !== undefined;\n }\n\n onClick(data: DataItem): void {\n this.select.emit(data);\n }\n\n getLabel(dataItem: DataItem): StringOrNumberOrDate {\n if (dataItem.label) {\n return dataItem.label;\n }\n return dataItem.name;\n }\n\n trackBy(index: number, bar: Bar): string {\n return bar.label;\n }\n\n trackDataLabelBy(index: number, barLabel: any): string {\n return index + '#' + barLabel.series + '#' + barLabel.total;\n }\n}\n","import {\n Component,\n Input,\n OnChanges,\n SimpleChanges,\n ChangeDetectionStrategy,\n ElementRef,\n Output,\n EventEmitter\n} from '@angular/core';\nimport { formatLabel } from '../common/label.helper';\nimport { BarOrientation } from '../common/types/bar-orientation.enum';\n\n@Component({\n selector: 'g[ngx-charts-bar-label]',\n template: `\n <svg:text\n class=\"textDataLabel\"\n alignment-baseline=\"middle\"\n [attr.text-anchor]=\"textAnchor\"\n [attr.transform]=\"transform\"\n [attr.x]=\"x\"\n [attr.y]=\"y\"\n >\n {{ formatedValue }}\n </svg:text>\n `,\n styleUrls: ['./bar-label.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class BarLabelComponent implements OnChanges {\n @Input() value;\n @Input() valueFormatting: any;\n @Input() barX;\n @Input() barY;\n @Input() barWidth;\n @Input() barHeight;\n @Input() orientation: BarOrientation;\n\n @Output() dimensionsChanged: EventEmitter<any> = new EventEmitter();\n\n element: any;\n x: number;\n y: number;\n horizontalPadding: number = 2;\n verticalPadding: number = 5;\n formatedValue: string;\n transform: string;\n textAnchor: string;\n\n constructor(element: ElementRef) {\n this.element = element.nativeElement;\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n this.update();\n }\n\n getSize(): any {\n const h = this.element.getBoundingClientRect().height;\n const w = this.element.getBoundingClientRect().width;\n return { height: h, width: w, negative: this.value < 0 };\n }\n\n ngAfterViewInit() {\n this.dimensionsChanged.emit(this.getSize());\n }\n\n update(): void {\n if (this.valueFormatting) {\n this.formatedValue = this.valueFormatting(this.value);\n } else {\n this.formatedValue = formatLabel(this.value);\n }\n\n if (this.orientation === 'horizontal') {\n this.x = this.barX + this.barWidth;\n // if the value is negative then it's on the left of the x0.\n // we need to put the data label in front of the bar\n if (this.value < 0) {\n this.x = this.x - this.horizontalPadding;\n this.textAnchor = 'end';\n } else {\n this.x = this.x + this.horizontalPadding;\n this.textAnchor = 'start';\n }\n this.y = this.barY + this.barHeight / 2;\n } else {\n // orientation must be \"vertical\"\n this.x = this.barX + this.barWidth / 2;\n this.y = this.barY + this.barHeight;\n\n if (this.value < 0) {\n this.y = this.y + this.verticalPadding;\n this.textAnchor = 'end';\n } else {\n this.y = this.y - this.verticalPadding;\n this.textAnchor = 'start';\n }\n this.transform = `rotate(-45, ${this.x} , ${this.y})`;\n }\n }\n}\n","import { NgModule } from '@angular/core';\nimport { ChartCommonModule } from '../common/chart-common.module';\nimport { BarComponent } from './bar.component';\nimport { BarHorizontalComponent } from './bar-horizontal.component';\nimport { BarHorizontal2DComponent } from './bar-horizontal-2d.component';\nimport { BarHorizontalNormalizedComponent } from './bar-horizontal-normalized.component';\nimport { BarHorizontalStackedComponent } from './bar-horizontal-stacked.component';\nimport { BarVerticalComponent } from './bar-vertical.component';\nimport { BarVertical2DComponent } from './bar-vertical-2d.component';\nimport { BarVerticalNormalizedComponent } from './bar-vertical-normalized.component';\nimport { BarVerticalStackedComponent } from './bar-vertical-stacked.component';\nimport { SeriesHorizontal } from './series-horizontal.component';\nimport { SeriesVerticalComponent } from './series-vertical.component';\nimport { BarLabelComponent } from './bar-label.component';\n\n@NgModule({\n imports: [ChartCommonModule],\n declarations: [\n BarComponent,\n BarHorizontalComponent,\n BarHorizontal2DComponent,\n BarHorizontalNormalizedComponent,\n BarHorizontalStackedComponent,\n BarVerticalComponent,\n BarVertical2DComponent,\n BarVerticalNormalizedComponent,\n BarVerticalStackedComponent,\n BarLabelComponent,\n SeriesHorizontal,\n SeriesVerticalComponent\n ],\n exports: [\n BarComponent,\n BarHorizontalComponent,\n BarHorizontal2DComponent,\n BarHorizontalNormalizedComponent,\n BarHorizontalStackedComponent,\n BarVerticalComponent,\n BarVertical2DComponent,\n BarVerticalNormalizedComponent,\n BarVerticalStackedComponent,\n BarLabelComponent,\n SeriesHorizontal,\n SeriesVerticalComponent\n ]\n})\nexport class BarChartModule {}\n","import {\n ChangeDetectionStrategy,\n Component,\n ContentChild,\n EventEmitter,\n Input,\n Output,\n TemplateRef,\n ViewEncapsulation\n} from '@angular/core';\n\nimport { BaseChartComponent } from '../common/base-chart.component';\nimport { ColorHelper } from '../common/color.helper';\nimport { BoxChartMultiSeries, BoxChartSeries, IBoxModel, StringOrNumberOrDate } from '../models/chart-data.model';\nimport { scaleLinear, ScaleLinear, scaleBand, ScaleBand } from 'd3-scale';\nimport { calculateViewDimensions } from '../common/view-dimensions.helper';\nimport { ViewDimensions } from '../common/types/view-dimension.interface';\nimport { LegendPosition, LegendOptions } from '../common/types/legend.model';\nimport { ScaleType } from '../common/types/scale-type.enum';\n\n@Component({\n selector: 'ngx-charts-box-chart',\n template: `\n <ngx-charts-chart\n [view]=\"[width, height]\"\n [showLegend]=\"legend\"\n [legendOptions]=\"legendOptions\"\n [animations]=\"animations\"\n (legendLabelClick)=\"onClick($event)\"\n (legendLabelActivate)=\"onActivate($event)\"\n (legendLabelDeactivate)=\"onDeactivate($event)\"\n >\n <svg:g [attr.transform]=\"transform\" class=\"box-chart chart\">\n <svg:g\n ngx-charts-x-axis\n [showGridLines]=\"showGridLines\"\n [dims]=\"dims\"\n [xScale]=\"xScale\"\n [showLabel]=\"showXAxisLabel\"\n [labelText]=\"xAxisLabel\"\n (dimensionsChanged)=\"updateXAxisHeight($event)\"\n />\n <svg:g\n ngx-charts-y-axis\n [showGridLines]=\"showGridLines\"\n [dims]=\"dims\"\n [yScale]=\"yScale\"\n [showLabel]=\"showYAxisLabel\"\n [labelText]=\"yAxisLabel\"\n (dimensionsChanged)=\"updateYAxisWidth($event)\"\n />\n </svg:g>\n <svg:g [attr.transform]=\"transform\">\n <svg:g *ngFor=\"let result of results; trackBy: trackBy\">\n <svg:g\n ngx-charts-box-series\n [xScale]=\"xScale\"\n [yScale]=\"yScale\"\n [colors]=\"colors\"\n [roundEdges]=\"roundEdges\"\n [strokeColor]=\"strokeColor\"\n [strokeWidth]=\"strokeWidth\"\n [tooltipDisabled]=\"tooltipDisabled\"\n [tooltipTemplate]=\"tooltipTemplate\"\n [series]=\"result\"\n [dims]=\"dims\"\n [animations]=\"animations\"\n [gradient]=\"gradient\"\n (activate)=\"onActivate($event)\"\n (deactivate)=\"onDeactivate($event)\"\n (select)=\"onClick($event)\"\n />\n </svg:g>\n </svg:g>\n </ngx-charts-chart>\n `,\n styleUrls: ['../common/base-chart.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None\n})\nexport class BoxChartComponent extends BaseChartComponent {\n /** Show or hide the legend. */\n @Input() legend: boolean = false;\n @Input() legendPosition: LegendPosition = LegendPosition.Right;\n @Input() legendTitle: string = 'Legend';\n /** I think it is better to handle legend options as single Input object of type ILegendOptions */\n @Input() legendOptionsConfig: LegendOptions;\n @Input() showGridLines: boolean = true;\n @Input() xAxis: boolean = true;\n @Input() yAxis: boolean = true;\n @Input() showXAxisLabel: boolean = true;\n @Input() showYAxisLabel: boolean = true;\n @Input() roundDomains: boolean = false;\n @Input() xAxisLabel: string;\n @Input() yAxisLabel: string;\n @Input() roundEdges: boolean = true;\n @Input() strokeColor: string = '#FFFFFF';\n @Input() strokeWidth: number = 2;\n @Input() tooltipDisabled: boolean = false;\n @Input() gradient: boolean;\n\n @Output() select: EventEmitter<IBoxModel> = new EventEmitter();\n @Output() activate: EventEmitter<IBoxModel> = new EventEmitter();\n @Output() deactivate: EventEmitter<IBoxModel> = new EventEmitter();\n\n @ContentChild('tooltipTemplate', { static: false }) tooltipTemplate: TemplateRef<any>;\n\n /** Input Data, this came from Base Chart Component. */\n results: BoxChartMultiSeries;\n /** Chart Dimensions, this came from Base Chart Component. */\n dims: ViewDimensions;\n /** Color data. */\n colors: ColorHelper;\n /** Transform string css attribute for the chart container */\n transform: string;\n\n /** Chart Margins (For each side, counterclock wise). */\n margin: [number, number, number, number] = [10, 20, 10, 20];\n\n /** Legend Options object to handle positioning, title, colors and domain. */\n legendOptions: LegendOptions;\n\n xScale: ScaleBand<string>;\n yScale: ScaleLinear<number, number>;\n xDomain: StringOrNumberOrDate[];\n yDomain: number[];\n seriesDomain: string[];\n /** Chart X axis dimension. */\n xAxisHeight: number = 0;\n /** Chart Y axis dimension. */\n yAxisWidth: number = 0;\n\n trackBy(index: number, item: BoxChartSeries): StringOrNumberOrDate {\n return item.name;\n }\n\n update(): void {\n super.update();\n\n this.dims = calculateViewDimensions({\n width: this.width,\n height: this.height,\n margins: this.margin,\n showXAxis: this.xAxis,\n showYAxis: this.yAxis,\n xAxisHeight: this.xAxisHeight,\n yAxisWidth: this.yAxisWidth,\n showXLabel: this.showXAxisLabel,\n showYLabel: this.showYAxisLabel,\n showLegend: this.legend,\n legendPosition: this.legendPosition\n });\n\n this.xDomain = this.getXDomain();\n this.yDomain = this.getYDomain();\n this.seriesDomain = this.getSeriesDomain();\n this.setScales();\n this.setColors();\n\n this.legendOptions = this.getLegendOptions();\n this.transform = `translate(${this.dims.xOffset} , ${this.margin[0]})`;\n }\n\n setColors(): void {\n let domain: string[] | number[] = [];\n if (this.schemeType === ScaleType.Ordinal) {\n domain = this.seriesDomain;\n } else {\n domain = this.yDomain;\n }\n\n this.colors = new ColorHelper(this.scheme, this.schemeType, domain, this.customColors);\n }\n\n setScales() {\n this.xScale = this.getXScale(this.xDomain, this.dims.width);\n this.yScale = this.getYScale(this.yDomain, this.dims.height);\n }\n\n getXScale(domain: Array<string | number | Date>, width: number): ScaleBand<string> {\n const scale = scaleBand()\n .domain(domain.map(d => d.toString()))\n .rangeRound([0, width])\n .padding(0.5);\n\n return scale;\n }\n\n getYScale(domain: number[], height: number): ScaleLinear<number, number> {\n const scale = scaleLinear().domain(domain).range([height, 0]);\n\n return this.roundDomains ? scale.nice() : scale;\n }\n\n getUniqueBoxChartXDomainValues(results: BoxChartMultiSeries) {\n const valueSet = new Set<string | number | Date>();\n for (const result of results) {\n valueSet.add(result.name);\n }\n return Array.from(valueSet);\n }\n\n getXDomain(): Array<string | number | Date> {\n let domain: Array<string | number | Date> = [];\n const values: Array<string | number | Date> = this.getUniqueBoxChartXDomainValues(this.results);\n let min: number;\n let max: number;\n if (typeof values[0] === 'string') {\n domain = values.map(val => val.toString());\n } else if (typeof values[0] === 'number') {\n const mappedValues = values.map(v => Number(v));\n min = Math.min(...mappedValues);\n max = Math.max(...mappedValues);\n domain = [min, max];\n } else {\n const mappedValues = values.map(v => Number(new Date(v)));\n min = Math.min(...mappedValues);\n max = Math.max(...mappedValues);\n domain = [new Date(min), new Date(max)];\n }\n return domain;\n }\n\n getYDomain(): number[] {\n const domain: Array<number | Date> = [];\n for (const results of this.results) {\n for (const d of results.series) {\n if (domain.indexOf(d.value) < 0) {\n domain.push(d.value);\n }\n }\n }\n\n const values = [...domain];\n const mappedValues = values.map(v => Number(v));\n\n const min: number = Math.min(...mappedValues);\n const max: number = Math.max(...mappedValues);\n\n return [min, max];\n }\n\n getSeriesDomain(): string[] {\n return this.results.map(d => `${d.name}`);\n }\n\n updateYAxisWidth({ width }): void {\n this.yAxisWidth = width;\n this.update();\n }\n\n updateXAxisHeight({ height }): void {\n this.xAxisHeight = height;\n this.update();\n }\n\n onClick(data: IBoxModel): void {\n this.select.emit(data);\n }\n\n onActivate(data: IBoxModel): void {\n this.activate.emit(data);\n }\n\n onDeactivate(data: IBoxModel): void {\n this.deactivate.emit(data);\n }\n\n private getLegendOptions(): LegendOptions {\n const legendOpts: LegendOptions = {\n scaleType: this.schemeType,\n colors: this.colors,\n domain: [],\n position: this.legendPosition,\n title: this.legendTitle\n };\n if (this.schemeType === ScaleType.Ordinal) {\n legendOpts.domain = this.xDomain;\n legendOpts.colors = this.colors;\n } else {\n legendOpts.domain = this.yDomain;\n legendOpts.colors = this.colors.scale;\n }\n return legendOpts;\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n Input,\n OnChanges,\n Output,\n SimpleChanges,\n TemplateRef\n} from '@angular/core';\nimport { min, max, quantile } from 'd3-array';\nimport { ScaleLinear, ScaleBand } from 'd3-scale';\nimport { IBoxModel, BoxChartSeries, DataItem } from '../models/chart-data.model';\nimport { IVector2D } from '../models/coordinates.model';\nimport { trigger, transition, style, animate } from '@angular/animations';\nimport { ColorHelper } from '../common/color.helper';\nimport { formatLabel, escapeLabel } from '../common/label.helper';\nimport { StyleTypes } from '../common/tooltip/style.type';\nimport { PlacementTypes } from '../common/tooltip/position';\nimport { ScaleType } from '../common/types/scale-type.enum';\nimport { ViewDimensions } from '../common/types/view-dimension.interface';\n\n@Component({\n selector: 'g[ngx-charts-box-series]',\n template: `\n <svg:g\n ngx-charts-box\n [@animationState]=\"'active'\"\n [@.disabled]=\"!animations\"\n [width]=\"box.width\"\n [height]=\"box.height\"\n [x]=\"box.x\"\n [y]=\"box.y\"\n [roundEdges]=\"box.roundEdges\"\n [fill]=\"box.color\"\n [gradientStops]=\"box.gradientStops\"\n [strokeColor]=\"strokeColor\"\n [strokeWidth]=\"strokeWidth\"\n [data]=\"box.data\"\n [lineCoordinates]=\"box.lineCoordinates\"\n [gradient]=\"gradient\"\n [ariaLabel]=\"box.ariaLabel\"\n (select)=\"onClick($event)\"\n (activate)=\"activate.emit($event)\"\n (deactivate)=\"deactivate.emit($event)\"\n ngx-tooltip\n [tooltipDisabled]=\"tooltipDisabled\"\n [tooltipPlacement]=\"tooltipPlacement\"\n [tooltipType]=\"tooltipType\"\n [tooltipTitle]=\"tooltipTitle\"\n [tooltipTemplate]=\"tooltipTemplate\"\n [tooltipContext]=\"box.data\"\n [animations]=\"animations\"\n ></svg:g>\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n animations: [\n trigger('animationState', [\n transition(':leave', [\n style({\n opacity: 1\n }),\n animate(500, style({ opacity: 0 }))\n ])\n ])\n ]\n})\nexport class BoxSeriesComponent implements OnChanges {\n @Input() dims: ViewDimensions;\n @Input() series: BoxChartSeries;\n @Input() xScale: ScaleBand<string>;\n @Input() yScale: ScaleLinear<number, number>;\n @Input() colors: ColorHelper;\n @Input() animations: boolean = true;\n @Input() strokeColor: string;\n @Input() strokeWidth: number;\n @Input() tooltipDisabled: boolean = false;\n @Input() tooltipTemplate: TemplateRef<any>;\n @Input() tooltipPlacement: PlacementTypes;\n @Input() tooltipType: StyleTypes;\n @Input() roundEdges: boolean;\n @Input() gradient: boolean = false;\n\n @Output() select: EventEmitter<IBoxModel> = new EventEmitter();\n @Output() activate: EventEmitter<IBoxModel> = new EventEmitter();\n @Output() deactivate: EventEmitter<IBoxModel> = new EventEmitter();\n\n box: IBoxModel;\n counts: DataItem[];\n quartiles: [number, number, number];\n whiskers: [number, number];\n lineCoordinates: [IVector2D, IVector2D, IVector2D, IVector2D];\n tooltipTitle: string;\n\n ngOnChanges(changes: SimpleChanges): void {\n this.update();\n }\n\n onClick(data: IBoxModel): void {\n this.select.emit(data);\n }\n\n update(): void {\n this.updateTooltipSettings();\n const width = this.series && this.series.series.length ? Math.round(this.xScale.bandwidth()) : null;\n const seriesName = this.series.name;\n\n // Calculate Quantile and Whiskers for each box serie.\n this.counts = this.series.series;\n\n const mappedCounts = this.counts.map(serie => Number(serie.value));\n this.whiskers = [min(mappedCounts), max(mappedCounts)];\n\n // We get the group count and must sort it in order to retrieve quantiles.\n const groupCounts = this.counts.map(item => item.value).sort((a, b) => Number(a) - Number(b));\n this.quartiles = this.getBoxQuantiles(groupCounts);\n this.lineCoordinates = this.getLinesCoordinates(seriesName.toString(), this.whiskers, this.quartiles, width);\n\n const value = this.quartiles[1];\n const formattedLabel = formatLabel(seriesName);\n const box: IBoxModel = {\n value,\n data: this.counts,\n label: seriesName,\n formattedLabel,\n width,\n height: 0,\n x: 0,\n y: 0,\n roundEdges: this.roundEdges,\n quartiles: this.quartiles,\n lineCoordinates: this.lineCoordinates\n };\n\n box.height = Math.abs(this.yScale(this.quartiles[0]) - this.yScale(this.quartiles[2]));\n box.x = this.xScale(seriesName.toString());\n box.y = this.yScale(this.quartiles[2]);\n box.ariaLabel = formattedLabel + ' - Median: ' + value.toLocaleString();\n\n if (this.colors.scaleType === ScaleType.Ordinal) {\n box.color = this.colors.getColor(seriesName);\n } else {\n box.color = this.colors.getColor(this.quartiles[1]);\n box.gradientStops = this.colors.getLinearGradientStops(this.quartiles[0], this.quartiles[2]);\n }\n\n const tooltipLabel = formattedLabel;\n const formattedTooltipLabel = `\n <span class=\"tooltip-label\">${escapeLabel(tooltipLabel)}</span>\n <span class=\"tooltip-val\">\n • Q1: ${this.quartiles[0]} • Q2: ${this.quartiles[1]} • Q3: ${this.quartiles[2]}<br>\n • Min: ${this.whiskers[0]} • Max: ${this.whiskers[1]}\n </span>`;\n\n box.tooltipText = this.tooltipDisabled ? undefined : formattedTooltipLabel;\n this.tooltipTitle = this.tooltipDisabled ? undefined : box.tooltipText;\n\n this.box = box;\n }\n\n getBoxQuantiles(inputData: Array<number | Date>): [number, number, number] {\n return [quantile(inputData, 0.25), quantile(inputData, 0.5), quantile(inputData, 0.75)];\n }\n\n getLinesCoordinates(\n seriesName: string,\n whiskers: [number, number],\n quartiles: [number, number, number],\n barWidth: number\n ): [IVector2D, IVector2D, IVector2D, IVector2D] {\n // The X value is not being centered, so had to sum half the width to align it.\n const commonX = this.xScale(seriesName);\n const offsetX = commonX + barWidth / 2;\n\n const medianLineWidth = Math.max(barWidth + 4 * this.strokeWidth, 1);\n const whiskerLineWidth = Math.max(barWidth / 3, 1);\n\n const whiskerZero = this.yScale(whiskers[0]);\n const whiskerOne = this.yScale(whiskers[1]);\n const median = this.yScale(quartiles[1]);\n\n const topLine: IVector2D = {\n v1: { x: offsetX + whiskerLineWidth / 2, y: whiskerZero },\n v2: { x: offsetX - whiskerLineWidth / 2, y: whiskerZero }\n };\n const medianLine: IVector2D = {\n v1: { x: offsetX + medianLineWidth / 2, y: median },\n v2: { x: offsetX - medianLineWidth / 2, y: median }\n };\n const bottomLine: IVector2D = {\n v1: { x: offsetX + whiskerLineWidth / 2, y: whiskerOne },\n v2: { x: offsetX - whiskerLineWidth / 2, y: whiskerOne }\n };\n const verticalLine: IVector2D = {\n v1: { x: offsetX, y: whiskerZero },\n v2: { x: offsetX, y: whiskerOne }\n };\n return [verticalLine, topLine, medianLine, bottomLine];\n }\n\n updateTooltipSettings() {\n if (this.tooltipDisabled) {\n this.tooltipPlacement = undefined;\n this.tooltipType = undefined;\n } else {\n if (!this.tooltipPlacement) {\n this.tooltipPlacement = PlacementTypes.Top;\n }\n if (!this.tooltipType) {\n this.tooltipType = StyleTypes.tooltip;\n }\n }\n }\n}\n","import {\n Component,\n Input,\n Output,\n EventEmitter,\n HostListener,\n ElementRef,\n SimpleChanges,\n OnChanges,\n ChangeDetectionStrategy,\n ChangeDetectorRef\n} from '@angular/core';\nimport { select, BaseType } from 'd3-selection';\nimport { interpolate } from 'd3-interpolate';\nimport { easeSinInOut } from 'd3-ease';\n\nimport cloneDeep from 'clone-deep';\n\nimport { roundedRect } from '../common/shape.helper';\nimport { id } from '../utils/id';\nimport { IBoxModel } from '../models/chart-data.model';\nimport { IVector2D } from '../models/coordinates.model';\nimport { BarOrientation } from '../common/types/bar-orientation.enum';\nimport { Gradient } from '../common/types/gradient.interface';\n\ntype LineCoordinates = [IVector2D, IVector2D, IVector2D, IVector2D];\n\n@Component({\n selector: 'g[ngx-charts-box]',\n template: `\n <svg:defs>\n <svg:g\n *ngIf=\"hasGradient\"\n ngx-charts-svg-linear-gradient\n [orientation]=\"BarOrientation.Vertical\"\n [name]=\"gradientId\"\n [stops]=\"gradientStops\"\n />\n <svg:mask [attr.id]=\"maskLineId\">\n <svg:g>\n <rect height=\"100%\" width=\"100%\" fill=\"white\" fill-opacity=\"1\" />\n <path class=\"bar\" [attr.d]=\"boxPath\" fill=\"black\" fill-opacity=\"1\" />\n </svg:g>\n </svg:mask>\n </svg:defs>\n <svg:g>\n <svg:path\n class=\"bar\"\n role=\"img\"\n tabIndex=\"-1\"\n [class.active]=\"isActive\"\n [class.hidden]=\"hideBar\"\n [attr.d]=\"boxPath\"\n [attr.stroke]=\"strokeColor\"\n [attr.stroke-width]=\"boxStrokeWidth\"\n [attr.aria-label]=\"ariaLabel\"\n [attr.fill]=\"hasGradient ? gradientFill : fill\"\n (click)=\"select.emit(data)\"\n />\n <svg:line\n *ngFor=\"let line of lineCoordinates; let i = index\"\n class=\"bar-line\"\n [class.hidden]=\"hideBar\"\n [attr.x1]=\"line.v1.x\"\n [attr.y1]=\"line.v1.y\"\n [attr.x2]=\"line.v2.x\"\n [attr.y2]=\"line.v2.y\"\n [attr.stroke]=\"strokeColor\"\n [attr.stroke-width]=\"i === 2 ? medianLineWidth : whiskerStrokeWidth\"\n [attr.mask]=\"i ? undefined : maskLine\"\n fill=\"none\"\n />\n </svg:g>\n `,\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class BoxComponent implements OnChanges {\n @Input() strokeColor: string;\n @Input() strokeWidth: number;\n @Input() fill: string;\n @Input() data: IBoxModel;\n @Input() width: number;\n @Input() height: number;\n @Input() x: number;\n @Input() y: number;\n @Input() lineCoordinates: LineCoordinates;\n @Input() roundEdges: boolean = true;\n @Input() gradient: boolean = false;\n @Input() gradientStops: Gradient[];\n @Input() offset: number = 0;\n @Input() isActive: boolean = false;\n @Input() animations: boolean = true;\n @Input() ariaLabel: string;\n @Input() noBarWhenZero: boolean = true;\n\n @Output() select: EventEmitter<IBoxModel> = new EventEmitter();\n @Output() activate: EventEmitter<IBoxModel> = new EventEmitter();\n @Output() deactivate: EventEmitter<IBoxModel> = new EventEmitter();\n\n BarOrientation = BarOrientation;\n\n nativeElm: any;\n\n // Path related properties.\n oldPath: string;\n boxPath: string;\n oldLineCoordinates: LineCoordinates;\n\n // Color related properties.\n gradientId: string;\n gradientFill: string;\n initialized: boolean = false;\n hasGradient: boolean = false;\n hideBar: boolean = false;\n\n /** Mask Path to cut the line on the box part. */\n maskLine: string;\n /** Mask Path Id to keep track of the mask element */\n maskLineId: string;\n\n boxStrokeWidth: number;\n whiskerStrokeWidth: number;\n medianLineWidth: number;\n\n constructor(element: ElementRef, protected cd: ChangeDetectorRef) {\n this.nativeElm = element.nativeElement;\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (!this.initialized) {\n this.loadAnimation();\n this.initialized = true;\n } else {\n this.update();\n }\n }\n\n update(): void {\n this.boxStrokeWidth = Math.max(this.strokeWidth, 1);\n this.whiskerStrokeWidth = Math.max(this.strokeWidth / 2, 1);\n this.medianLineWidth = 1.5 * this.strokeWidth;\n\n this.gradientId = 'grad' + id().toString();\n this.gradientFill = `url(#${this.gradientId})`;\n\n if (this.gradient) {\n this.gradientStops = this.getGradient();\n this.hasGradient = true;\n } else {\n this.hasGradient = false;\n }\n\n this.updateLineEl();\n this.updatePathEl();\n this.checkToHideBar();\n this.maskLineId = 'mask' + id().toString();\n this.maskLine = `url(#${this.maskLineId})`;\n\n if (this.cd) {\n this.cd.markForCheck();\n }\n }\n\n loadAnimation(): void {\n this.boxPath = this.oldPath = this.getStartingPath();\n this.oldLineCoordinates = this.getStartingLineCoordinates();\n setTimeout(this.update.bind(this), 100);\n }\n\n updatePathEl(): void {\n const nodeBar = select(this.nativeElm).selectAll('.bar');\n const path = this.getPath();\n if (this.animations) {\n nodeBar\n .attr('d', this.oldPath)\n .transition()\n .ease(easeSinInOut)\n .duration(500)\n .attrTween('d', this.pathTween(path, 4));\n } else {\n nodeBar.attr('d', path);\n }\n this.oldPath = path;\n }\n\n updateLineEl(): void {\n const lineEl = select(this.nativeElm).selectAll('.bar-line');\n const lineCoordinates = this.lineCoordinates;\n const oldLineCoordinates = this.oldLineCoordinates;\n if (this.animations) {\n lineEl\n .attr('x1', (_, index) => oldLineCoordinates[index].v1.x)\n .attr('y1', (_, index) => oldLineCoordinates[index].v1.y)\n .attr('x2', (_, index) => oldLineCoordinates[index].v2.x)\n .attr('y2', (_, index) => oldLineCoordinates[index].v2.y)\n .transition()\n .ease(easeSinInOut)\n .duration(500)\n .attr('x1', (_, index) => lineCoordinates[index].v1.x)\n .attr('y1', (_, index) => lineCoordinates[index].v1.y)\n .attr('x2', (_, index) => lineCoordinates[index].v2.x)\n .attr('y2', (_, index) => lineCoordinates[index].v2.y);\n } else {\n lineEl\n .attr('x1', (_, index) => lineCoordinates[index].v1.x)\n .attr('y1', (_, index) => lineCoordinates[index].v1.y)\n .attr('x2', (_, index) => lineCoordinates[index].v2.x)\n .attr('y2', (_, index) => lineCoordinates[index].v2.y);\n }\n this.oldLineCoordinates = [...lineCoordinates];\n }\n\n /**\n * See [D3 Selections](https://www.d3indepth.com/selections/)\n * @param d The joined data.\n * @param index The index of the element within the selection\n * @param node The node element (Line).\n */\n lineTween(attr: string, d: any, index: number, node: BaseType[] | ArrayLike<BaseType>) {\n const nodeLineEl = node[index] as SVGLineElement;\n return nodeLineEl[attr].baseVal.value;\n }\n\n // TODO: Refactor into another .ts file if https://github.com/swimlane/ngx-charts/pull/1179 gets merged.\n pathTween(d1: string, precision: number) {\n return function () {\n // tslint:disable-next-line: no-this-assignment\n const path0 = this;\n const path1 = this.cloneNode();\n path1.setAttribute('d', d1);\n const n0 = path0?.getTotalLength();\n const n1 = path1?.getTotalLength();\n // Uniform sampling of distance based on specified precision.\n const distances = [0];\n let i = 0;\n const dt = precision / Math.max(n0, n1);\n while (i < 1) {\n distances.push(i);\n i += dt;\n }\n distances.push(1);\n\n // Compute point-interpolators at each distance.\n const points = distances.map((t: number) => {\n const p0 = path0.getPointAtLength(t * n0);\n const p1 = path1.getPointAtLength(t * n1);\n return interpolate([p0.x, p0.y], [p1.x, p1.y]);\n });\n\n // 't': T is the fraction of time (between 0 and 1) since the transition began.\n return (t: any) => {\n return t < 1 ? 'M' + points.map((p: (t: number) => any[]) => p(t)).join('L') : d1;\n };\n };\n }\n\n getStartingPath(): string {\n if (!this.animations) {\n return this.getPath();\n }\n\n const radius = this.roundEdges ? 1 : 0;\n const { x, y } = this.lineCoordinates[2].v1;\n\n return roundedRect(x - this.width, y - 1, this.width, 2, radius, this.edges);\n }\n\n getPath(): string {\n const radius = this.getRadius();\n let path = '';\n\n path = roundedRect(this.x, this.y, this.width, this.height, Math.min(this.height, radius), this.edges);\n\n return path;\n }\n\n getStartingLineCoordinates(): LineCoordinates {\n if (!this.animations) {\n return [...this.lineCoordinates];\n }\n\n const lineCoordinates: LineCoordinates = cloneDeep(this.lineCoordinates);\n\n lineCoordinates[1].v1.y = lineCoordinates[1].v2.y = lineCoordinates[3].v1.y = lineCoordinates[3].v2.y = lineCoordinates[0].v1.y = lineCoordinates[0].v2.y =\n lineCoordinates[2].v1.y;\n\n return lineCoordinates;\n }\n\n getRadius(): number {\n let radius = 0;\n\n if (this.roundEdges && this.height > 5 && this.width > 5) {\n radius = Math.floor(Math.min(5, this.height / 2, this.width / 2));\n }\n\n return radius;\n }\n\n getGradient(): Gradient[] {\n return [\n {\n offset: 0,\n color: this.fill,\n opacity: this.getStartOpacity()\n },\n {\n offset: 100,\n color: this.fill,\n opacity: 1\n }\n ];\n }\n\n getStartOpacity(): number {\n if (this.roundEdges) {\n return 0.2;\n } else {\n return 0.5;\n }\n }\n\n get edges(): boolean[] {\n let edges: [boolean, boolean, boolean, boolean] = [false, false, false, false];\n if (this.roundEdges) {\n edges = [true, true, true, true];\n }\n return edges;\n }\n\n @HostListener('mouseenter')\n onMouseEnter(): void {\n this.activate.emit(this.data);\n }\n\n @HostListener('mouseleave')\n onMouseLeave(): void {\n this.deactivate.emit(this.data);\n }\n\n private checkToHideBar(): void {\n this.hideBar = this.noBarWhenZero && this.height === 0;\n }\n}\n","import { NgModule } from '@angular/core';\nimport { ChartCommonModule } from '../common/chart-common.module';\nimport { BoxChartComponent } from './box-chart.component';\nimport { BoxSeriesComponent } from './box-series.component';\nimport { BoxComponent } from './box.component';\n\n@NgModule({\n imports: [ChartCommonModule],\n declarations: [BoxChartComponent, BoxSeriesComponent, BoxComponent],\n exports: [BoxChartComponent, BoxSeriesComponent, BoxComponent]\n})\nexport class BoxChartModule {}\n","import { ScaleLinear, scaleLinear, ScalePoint, scalePoint, ScaleTime, scaleTime } from 'd3-scale';\nimport { ScaleType } from '../common/types/scale-type.enum';\n\nexport function getDomain(\n values: any[],\n scaleType: ScaleType,\n autoScale: boolean,\n minVal?: number,\n maxVal?: number\n): number[] {\n let domain: number[] = [];\n if (scaleType === ScaleType.Linear) {\n values = values.map(v => Number(v));\n if (!autoScale) {\n values.push(0);\n }\n }\n\n if (scaleType === ScaleType.Time || scaleType === ScaleType.Linear) {\n const min = minVal ? minVal : Math.min(...values);\n const max = maxVal ? maxVal : Math.max(...values);\n\n domain = [min, max];\n } else {\n domain = values;\n }\n\n return domain;\n}\n\nexport function getScale(\n domain: number[],\n range: number[],\n scaleType: ScaleType,\n roundDomains: boolean\n): ScaleTime<number, number> | ScaleLinear<number, number> | ScalePoint<string> {\n switch (scaleType) {\n case ScaleType.Time:\n return scaleTime().range(range).domain(domain);\n case ScaleType.Linear: {\n const scale = scaleLinear().range(range).domain(domain);\n if (roundDomains) {\n return scale.nice();\n }\n return scale;\n }\n case ScaleType.Ordinal:\n return scalePoint()\n .range([range[0], range[1]])\n .domain(domain.map(r => r.toString()));\n default:\n return undefined;\n }\n}\n","import {\n Component,\n Input,\n Output,\n EventEmitter,\n HostListener,\n ViewEncapsulation,\n ChangeDetectionStrategy,\n ContentChild,\n TemplateRef\n} from '@angular/core';\nimport { trigger, style, animate, transition } from '@angular/animations';\nimport { scaleLinear } from 'd3-scale';\n\nimport { BaseChartComponent } from '../common/base-chart.component';\nimport { calculateViewDimensions } from '../common/view-dimensions.helper';\nimport { ColorHelper } from '../common/color.helper';\nimport { getScaleType } from '../common/domain.helper';\nimport { getDomain, getScale } from './bubble-chart.utils';\nimport { id } from '../utils/id';\nimport { BubbleChartSeries } from '../models/chart-data.model';\nimport { LegendOptions, LegendPosition } from '../common/types/legend.model';\nimport { ScaleType } from '../common/types/scale-type.enum';\nimport { ViewDimensions } from '../common/types/view-dimension.interface';\n\n@Component({\n selector: 'ngx-charts-bubble-chart',\n template: `\n <ngx-charts-chart\n [view]=\"[width, height]\"\n [showLegend]=\"legend\"\n [activeEntries]=\"activeEntries\"\n [legendOptions]=\"legendOptions\"\n [animations]=\"animations\"\n (legendLabelClick)=\"onClick($event)\"\n (legendLabelActivate)=\"onActivate($event)\"\n (legendLabelDeactivate)=\"onDeactivate($event)\"\n >\n <svg:defs>\n <svg:clipPath [attr.id]=\"clipPathId\">\n <svg:rect\n [attr.width]=\"dims.width + 10\"\n [attr.height]=\"dims.height + 10\"\n [attr.transform]=\"'translate(-5, -5)'\"\n />\n </svg:clipPath>\n </svg:defs>\n <svg:g [attr.transform]=\"transform\" class=\"bubble-chart chart\">\n <svg:g\n ngx-charts-x-axis\n *ngIf=\"xAxis\"\n [showGridLines]=\"showGridLines\"\n [dims]=\"dims\"\n [xScale]=\"xScale\"\n [showLabel]=\"showXAxisLabel\"\n [labelText]=\"xAxisLabel\"\n [trimTicks]=\"trimXAxisTicks\"\n [rotateTicks]=\"rotateXAxisTicks\"\n [maxTickLength]=\"maxXAxisTickLength\"\n [tickFormatting]=\"xAxisTickFormatting\"\n [ticks]=\"xAxisTicks\"\n (dimensionsChanged)=\"updateXAxisHeight($event)\"\n />\n <svg:g\n ngx-charts-y-axis\n *ngIf=\"yAxis\"\n [showGridLines]=\"showGridLines\"\n [yScale]=\"yScale\"\n [dims]=\"dims\"\n [showLabel]=\"showYAxisLabel\"\n [labelText]=\"yAxisLabel\"\n [trimTicks]=\"trimYAxisTicks\"\n [maxTickLength]=\"maxYAxisTickLength\"\n [tickFormatting]=\"yAxisTickFormatting\"\n [ticks]=\"yAxisTicks\"\n (dimensionsChanged)=\"updateYAxisWidth($event)\"\n />\n <svg:rect\n class=\"bubble-chart-area\"\n x=\"0\"\n y=\"0\"\n [attr.width]=\"dims.width\"\n [attr.height]=\"dims.height\"\n style=\"fill: rgb(255, 0, 0); opacity: 0; cursor: 'auto';\"\n (mouseenter)=\"deactivateAll()\"\n />\n <svg:g [attr.clip-path]=\"clipPath\">\n <svg:g *ngFor=\"let series of data; trackBy: trackBy\" [@animationState]=\"'active'\">\n <svg:g\n ngx-charts-bubble-series\n [xScale]=\"xScale\"\n [yScale]=\"yScale\"\n [rScale]=\"rScale\"\n [xScaleType]=\"xScaleType\"\n [yScaleType]=\"yScaleType\"\n [xAxisLabel]=\"xAxisLabel\"\n [yAxisLabel]=\"yAxisLabel\"\n [colors]=\"colors\"\n [data]=\"series\"\n [activeEntries]=\"activeEntries\"\n [tooltipDisabled]=\"tooltipDisabled\"\n [tooltipTemplate]=\"tooltipTemplate\"\n (select)=\"onClick($event, series)\"\n (activate)=\"onActivate($event)\"\n (deactivate)=\"onDeactivate($event)\"\n />\n </svg:g>\n </svg:g>\n </svg:g>\n </ngx-charts-chart>\n `,\n styleUrls: ['../common/base-chart.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n animations: [\n trigger('animationState', [\n transition(':leave', [\n style({\n opacity: 1\n }),\n animate(\n 500,\n style({\n opacity: 0\n })\n )\n ])\n ])\n ]\n})\nexport class BubbleChartComponent extends BaseChartComponent {\n @Input() showGridLines: boolean = true;\n @Input() legend = false;\n @Input() legendTitle: string = 'Legend';\n @Input() legendPosition: LegendPosition = LegendPosition.Right;\n @Input() xAxis: boolean = true;\n @Input() yAxis: boolean = true;\n @Input() showXAxisLabel: boolean;\n @Input() showYAxisLabel: boolean;\n @Input() xAxisLabel: string;\n @Input() yAxisLabel: string;\n @Input() trimXAxisTicks: boolean = true;\n @Input() trimYAxisTicks: boolean = true;\n @Input() rotateXAxisTicks: boolean = true;\n @Input() maxXAxisTickLength: number = 16;\n @Input() maxYAxisTickLength: number = 16;\n @Input() xAxisTickFormatting: any;\n @Input() yAxisTickFormatting: any;\n @Input() xAxisTicks: any[];\n @Input() yAxisTicks: any[];\n @Input() roundDomains: boolean = false;\n @Input() maxRadius: number = 10;\n @Input() minRadius: number = 3;\n @Input() autoScale: boolean;\n @Input() schemeType: ScaleType = ScaleType.Ordinal;\n @Input() tooltipDisabled: boolean = false;\n @Input() xScaleMin: number;\n @Input() xScaleMax: number;\n @Input() yScaleMin: number;\n @Input() yScaleMax: number;\n\n @Output() activate: EventEmitter<any> = new EventEmitter();\n @Output() deactivate: EventEmitter<any> = new EventEmitter();\n\n @ContentChild('tooltipTemplate') tooltipTemplate: TemplateRef<any>;\n\n dims: ViewDimensions;\n colors: ColorHelper;\n scaleType: ScaleType = ScaleType.Linear;\n margin: number[] = [10, 20, 10, 20];\n bubblePadding: number[] = [0, 0, 0, 0];\n data: BubbleChartSeries[];\n\n legendOptions: LegendOptions;\n transform: string;\n\n clipPath: string;\n clipPathId: string;\n\n seriesDomain: number[];\n xDomain: number[];\n yDomain: number[];\n rDomain: number[];\n\n xScaleType: ScaleType;\n yScaleType: ScaleType;\n\n yScale: any;\n xScale: any;\n rScale: any;\n\n xAxisHeight: number = 0;\n yAxisWidth: number = 0;\n\n activeEntries: any[] = [];\n\n update(): void {\n super.update();\n\n this.dims = calculateViewDimensions({\n width: this.width,\n height: this.height,\n margins: this.margin,\n showXAxis: this.xAxis,\n showYAxis: this.yAxis,\n xAxisHeight: this.xAxisHeight,\n yAxisWidth: this.yAxisWidth,\n showXLabel: this.showXAxisLabel,\n showYLabel: this.showYAxisLabel,\n showLegend: this.legend,\n legendType: this.schemeType,\n legendPosition: this.legendPosition\n });\n\n this.seriesDomain = this.results.map(d => d.name);\n this.rDomain = this.getRDomain();\n this.xDomain = this.getXDomain();\n this.yDomain = this.getYDomain();\n\n this.transform = `translate(${this.dims.xOffset},${this.margin[0]})`;\n\n const colorDomain = this.schemeType === ScaleType.Ordinal ? this.seriesDomain : this.rDomain;\n this.colors = new ColorHelper(this.scheme, this.schemeType, colorDomain, this.customColors);\n\n this.data = this.results;\n\n this.minRadius = Math.max(this.minRadius, 1);\n this.maxRadius = Math.max(this.maxRadius, 1);\n\n this.rScale = this.getRScale(this.rDomain, [this.minRadius, this.maxRadius]);\n\n this.bubblePadding = [0, 0, 0, 0];\n this.setScales();\n\n this.bubblePadding = this.getBubblePadding();\n this.setScales();\n\n this.legendOptions = this.getLegendOptions();\n\n this.clipPathId = 'clip' + id().toString();\n this.clipPath = `url(#${this.clipPathId})`;\n }\n\n @HostListener('mouseleave')\n hideCircles(): void {\n this.deactivateAll();\n }\n\n onClick(data, series?): void {\n if (series) {\n data.series = series.name;\n }\n\n this.select.emit(data);\n }\n\n getBubblePadding(): number[] {\n let yMin = 0;\n let xMin = 0;\n let yMax = this.dims.height;\n let xMax = this.dims.width;\n\n for (const s of this.data) {\n for (const d of s.series) {\n const r = this.rScale(d.r);\n const cx = this.xScaleType === ScaleType.Linear ? this.xScale(Number(d.x)) : this.xScale(d.x);\n const cy = this.yScaleType === ScaleType.Linear ? this.yScale(Number(d.y)) : this.yScale(d.y);\n xMin = Math.max(r - cx, xMin);\n yMin = Math.max(r - cy, yMin);\n yMax = Math.max(cy + r, yMax);\n xMax = Math.max(cx + r, xMax);\n }\n }\n\n xMax = Math.max(xMax - this.dims.width, 0);\n yMax = Math.max(yMax - this.dims.height, 0);\n\n return [yMin, xMax, yMax, xMin];\n }\n\n setScales() {\n let width = this.dims.width;\n if (this.xScaleMin === undefined && this.xScaleMax === undefined) {\n width = width - this.bubblePadding[1];\n }\n let height = this.dims.height;\n if (this.yScaleMin === undefined && this.yScaleMax === undefined) {\n height = height - this.bubblePadding[2];\n }\n this.xScale = this.getXScale(this.xDomain, width);\n this.yScale = this.getYScale(this.yDomain, height);\n }\n\n getYScale(domain, height: number): any {\n return getScale(domain, [height, this.bubblePadding[0]], this.yScaleType, this.roundDomains);\n }\n\n getXScale(domain, width: number): any {\n return getScale(domain, [this.bubblePadding[3], width], this.xScaleType, this.roundDomains);\n }\n\n getRScale(domain, range): any {\n const scale = scaleLinear().range(range).domain(domain);\n\n return this.roundDomains ? scale.nice() : scale;\n }\n\n getLegendOptions(): LegendOptions {\n const opts = {\n scaleType: this.schemeType as any,\n colors: undefined,\n domain: [],\n position: this.legendPosition,\n title: undefined\n };\n\n if (opts.scaleType === ScaleType.Ordinal) {\n opts.domain = this.seriesDomain;\n opts.colors = this.colors;\n opts.title = this.legendTitle;\n } else {\n opts.domain = this.rDomain;\n opts.colors = this.colors.scale;\n }\n\n return opts;\n }\n\n getXDomain(): number[] {\n const values = [];\n\n for (const results of this.results) {\n for (const d of results.series) {\n if (!values.includes(d.x)) {\n values.push(d.x);\n }\n }\n }\n\n this.xScaleType = getScaleType(values);\n return getDomain(values, this.xScaleType, this.autoScale, this.xScaleMin, this.xScaleMax);\n }\n\n getYDomain(): number[] {\n const values = [];\n\n for (const results of this.results) {\n for (const d of results.series) {\n if (!values.includes(d.y)) {\n values.push(d.y);\n }\n }\n }\n\n this.yScaleType = getScaleType(values);\n return getDomain(values, this.yScaleType, this.autoScale, this.yScaleMin, this.yScaleMax);\n }\n\n getRDomain(): [number, number] {\n let min = Infinity;\n let max = -Infinity;\n\n for (const results of this.results) {\n for (const d of results.series) {\n const value = Number(d.r) || 1;\n min = Math.min(min, value);\n max = Math.max(max, value);\n }\n }\n\n return [min, max];\n }\n\n updateYAxisWidth({ width }: { width: number }): void {\n this.yAxisWidth = width;\n this.update();\n }\n\n updateXAxisHeight({ height }: { height: number }): void {\n this.xAxisHeight = height;\n this.update();\n }\n\n onActivate(item): void {\n const idx = this.activeEntries.findIndex(d => {\n return d.name === item.name;\n });\n if (idx > -1) {\n return;\n }\n\n this.activeEntries = [item, ...this.activeEntries];\n this.activate.emit({ value: item, entries: this.activeEntries });\n }\n\n onDeactivate(item): void {\n const idx = this.activeEntries.findIndex(d => {\n return d.name === item.name;\n });\n\n this.activeEntries.splice(idx, 1);\n this.activeEntries = [...this.activeEntries];\n\n this.deactivate.emit({ value: item, entries: this.activeEntries });\n }\n\n deactivateAll(): void {\n this.activeEntries = [...this.activeEntries];\n for (const entry of this.activeEntries) {\n this.deactivate.emit({ value: entry, entries: [] });\n }\n this.activeEntries = [];\n }\n\n trackBy(index: number, item): string {\n return `${item.name}`;\n }\n}\n","import {\n Component,\n Input,\n Output,\n SimpleChanges,\n EventEmitter,\n OnChanges,\n ChangeDetectionStrategy,\n TemplateRef\n} from '@angular/core';\nimport { trigger, style, animate, transition } from '@angular/animations';\nimport { formatLabel, escapeLabel } from '../common/label.helper';\nimport { ColorHelper } from '../common/color.helper';\nimport { BubbleChartSeries } from '../models/chart-data.model';\nimport { PlacementTypes } from '../common/tooltip/position';\nimport { StyleTypes } from '../common/tooltip/style.type';\nimport { ScaleType } from '../common/types/scale-type.enum';\n\n@Component({\n selector: 'g[ngx-charts-bubble-series]',\n template: `\n <svg:g *ngFor=\"let circle of circles; trackBy: trackBy\">\n <svg:g [attr.transform]=\"circle.transform\">\n <svg:g\n ngx-charts-circle\n [@animationState]=\"'active'\"\n class=\"circle\"\n [cx]=\"0\"\n [cy]=\"0\"\n [r]=\"circle.radius\"\n [fill]=\"circle.color\"\n [style.opacity]=\"circle.opacity\"\n [class.active]=\"circle.isActive\"\n [pointerEvents]=\"'all'\"\n [data]=\"circle.value\"\n [classNames]=\"circle.classNames\"\n (select)=\"onClick(circle.data)\"\n (activate)=\"activateCircle(circle)\"\n (deactivate)=\"deactivateCircle(circle)\"\n ngx-tooltip\n [tooltipDisabled]=\"tooltipDisabled\"\n [tooltipPlacement]=\"placementTypes.Top\"\n [tooltipType]=\"styleTypes.tooltip\"\n [tooltipTitle]=\"tooltipTemplate ? undefined : getTooltipText(circle)\"\n [tooltipTemplate]=\"tooltipTemplate\"\n [tooltipContext]=\"circle.data\"\n />\n </svg:g>\n </svg:g>\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n animations: [\n trigger('animationState', [\n transition(':enter', [\n style({\n opacity: 0,\n transform: 'scale(0)'\n }),\n animate(250, style({ opacity: 1, transform: 'scale(1)' }))\n ])\n ])\n ]\n})\nexport class BubbleSeriesComponent implements OnChanges {\n @Input() data: BubbleChartSeries;\n @Input() xScale;\n @Input() yScale;\n @Input() rScale;\n @Input() xScaleType: ScaleType;\n @Input() yScaleType: ScaleType;\n @Input() colors: ColorHelper;\n @Input() visibleValue;\n @Input() activeEntries: any[];\n @Input() xAxisLabel: string;\n @Input() yAxisLabel: string;\n @Input() tooltipDisabled: boolean = false;\n @Input() tooltipTemplate: TemplateRef<any>;\n\n @Output() select = new EventEmitter();\n @Output() activate = new EventEmitter();\n @Output() deactivate = new EventEmitter();\n\n areaPath: any;\n circles: any[]; // TODO type this\n\n placementTypes = PlacementTypes;\n styleTypes = StyleTypes;\n\n ngOnChanges(changes: SimpleChanges): void {\n this.update();\n }\n\n update(): void {\n this.circles = this.getCircles();\n }\n\n getCircles(): any[] {\n const seriesName = this.data.name;\n\n return this.data.series\n .map((d, i) => {\n if (typeof d.y !== 'undefined' && typeof d.x !== 'undefined') {\n const y = d.y;\n const x = d.x;\n const r = d.r;\n\n const radius = this.rScale(r || 1);\n const tooltipLabel = formatLabel(d.name);\n\n const cx = this.xScaleType === ScaleType.Linear ? this.xScale(Number(x)) : this.xScale(x);\n const cy = this.yScaleType === ScaleType.Linear ? this.yScale(Number(y)) : this.yScale(y);\n\n const color =\n this.colors.scaleType === ScaleType.Linear ? this.colors.getColor(r) : this.colors.getColor(seriesName);\n\n const isActive = !this.activeEntries.length ? true : this.isActive({ name: seriesName });\n const opacity = isActive ? 1 : 0.3;\n\n const data = Object.assign({}, d, {\n series: seriesName,\n name: d.name,\n value: d.y,\n x: d.x,\n radius: d.r\n });\n\n return {\n data,\n x,\n y,\n r,\n classNames: [`circle-data-${i}`],\n value: y,\n label: x,\n cx,\n cy,\n radius,\n tooltipLabel,\n color,\n opacity,\n seriesName,\n isActive,\n transform: `translate(${cx},${cy})`\n };\n }\n })\n .filter(circle => circle !== undefined);\n }\n\n getTooltipText(circle): string {\n const hasRadius = typeof circle.r !== 'undefined';\n const hasTooltipLabel = circle.tooltipLabel && circle.tooltipLabel.length;\n const hasSeriesName = circle.seriesName && circle.seriesName.length;\n\n const radiusValue = hasRadius ? formatLabel(circle.r) : '';\n const xAxisLabel = this.xAxisLabel && this.xAxisLabel !== '' ? `${this.xAxisLabel}:` : '';\n const yAxisLabel = this.yAxisLabel && this.yAxisLabel !== '' ? `${this.yAxisLabel}:` : '';\n const x = formatLabel(circle.x);\n const y = formatLabel(circle.y);\n const name =\n hasSeriesName && hasTooltipLabel\n ? `${circle.seriesName} • ${circle.tooltipLabel}`\n : circle.seriesName + circle.tooltipLabel;\n const tooltipTitle =\n hasSeriesName || hasTooltipLabel ? `<span class=\"tooltip-label\">${escapeLabel(name)}</span>` : '';\n\n return `\n ${tooltipTitle}\n <span class=\"tooltip-label\">\n <label>${escapeLabel(xAxisLabel)}</label> ${escapeLabel(x)}<br />\n <label>${escapeLabel(yAxisLabel)}</label> ${escapeLabel(y)}\n </span>\n <span class=\"tooltip-val\">\n ${escapeLabel(radiusValue)}\n </span>\n `;\n }\n\n onClick(data): void {\n this.select.emit(data);\n }\n\n isActive(entry): boolean {\n if (!this.activeEntries) return false;\n const item = this.activeEntries.find(d => {\n return entry.name === d.name;\n });\n return item !== undefined;\n }\n\n isVisible(circle): boolean {\n if (this.activeEntries.length > 0) {\n return this.isActive({ name: circle.seriesName });\n }\n\n return circle.opacity !== 0;\n }\n\n activateCircle(circle): void {\n circle.barVisible = true;\n this.activate.emit({ name: this.data.name });\n }\n\n deactivateCircle(circle): void {\n circle.barVisible = false;\n this.deactivate.emit({ name: this.data.name });\n }\n\n trackBy(index, circle): string {\n return `${circle.data.series} ${circle.data.name}`;\n }\n}\n","import { NgModule } from '@angular/core';\nimport { ChartCommonModule } from '../common/chart-common.module';\nimport { BubbleChartComponent } from './bubble-chart.component';\nimport { BubbleSeriesComponent } from './bubble-series.component';\n\n@NgModule({\n imports: [ChartCommonModule],\n declarations: [BubbleChartComponent, BubbleSeriesComponent],\n exports: [BubbleChartComponent, BubbleSeriesComponent]\n})\nexport class BubbleChartModule {}\n","import {\n Component,\n Input,\n Output,\n EventEmitter,\n SimpleChanges,\n ElementRef,\n OnChanges,\n ChangeDetectionStrategy,\n HostListener\n} from '@angular/core';\nimport { select } from 'd3-selection';\nimport { Transition } from 'd3-transition';\nimport { BarOrientation } from '../common/types/bar-orientation.enum';\nimport { Gradient } from '../common/types/gradient.interface';\nimport { id } from '../utils/id';\n\n@Component({\n selector: 'g[ngx-charts-heat-map-cell]',\n template: `\n <svg:g [attr.transform]=\"transform\" class=\"cell\">\n <defs *ngIf=\"gradient\">\n <svg:g\n ngx-charts-svg-linear-gradient\n [orientation]=\"barOrientation.Vertical\"\n [name]=\"gradientId\"\n [stops]=\"gradientStops\"\n />\n </defs>\n <svg:rect\n [attr.fill]=\"gradient ? gradientUrl : fill\"\n rx=\"3\"\n [attr.width]=\"width\"\n [attr.height]=\"height\"\n class=\"cell\"\n (click)=\"onClick()\"\n />\n </svg:g>\n `,\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class HeatMapCellComponent implements OnChanges {\n @Input() fill: string;\n @Input() x: number;\n @Input() y: number;\n @Input() width: number;\n @Input() height: number;\n @Input() data: number;\n @Input() gradient: boolean = false;\n @Input() animations: boolean = true;\n\n @Output() select: EventEmitter<number> = new EventEmitter();\n @Output() activate: EventEmitter<number> = new EventEmitter();\n @Output() deactivate: EventEmitter<number> = new EventEmitter();\n\n element: HTMLElement;\n transform: string;\n startOpacity: number;\n gradientId: string;\n gradientUrl: string;\n gradientStops: Gradient[];\n\n barOrientation = BarOrientation;\n\n constructor(element: ElementRef) {\n this.element = element.nativeElement;\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n this.transform = `translate(${this.x} , ${this.y})`;\n\n this.startOpacity = 0.3;\n this.gradientId = 'grad' + id().toString();\n this.gradientUrl = `url(#${this.gradientId})`;\n this.gradientStops = this.getGradientStops();\n\n if (this.animations) {\n this.loadAnimation();\n }\n }\n\n getGradientStops(): Gradient[] {\n return [\n {\n offset: 0,\n color: this.fill,\n opacity: this.startOpacity\n },\n {\n offset: 100,\n color: this.fill,\n opacity: 1\n }\n ];\n }\n\n loadAnimation(): void {\n const node = select(this.element).select('.cell');\n node.attr('opacity', 0);\n this.animateToCurrentForm();\n }\n\n animateToCurrentForm(): void {\n const node = select(this.element).select('.cell');\n\n node.transition().duration(750).attr('opacity', 1);\n }\n\n onClick(): void {\n this.select.emit(this.data);\n }\n\n @HostListener('mouseenter')\n onMouseEnter(): void {\n this.activate.emit(this.data);\n }\n\n @HostListener('mouseleave')\n onMouseLeave(): void {\n this.deactivate.emit(this.data);\n }\n}\n","import {\n Component,\n Input,\n SimpleChanges,\n Output,\n EventEmitter,\n OnChanges,\n OnInit,\n ChangeDetectionStrategy,\n TemplateRef\n} from '@angular/core';\nimport { formatLabel, escapeLabel } from '../common/label.helper';\nimport { DataItem, Series } from '../models/chart-data.model';\nimport { PlacementTypes } from '../common/tooltip/position';\nimport { StyleTypes } from '../common/tooltip/style.type';\n\ninterface Cell {\n cell: DataItem;\n data: number;\n fill: string;\n height: number;\n label: string;\n row: Series;\n series: string;\n width: number;\n x: number;\n y: number;\n}\n@Component({\n selector: 'g[ngx-charts-heat-map-cell-series]',\n template: `\n <svg:g\n ngx-charts-heat-map-cell\n *ngFor=\"let c of cells; trackBy: trackBy\"\n [x]=\"c.x\"\n [y]=\"c.y\"\n [width]=\"c.width\"\n [height]=\"c.height\"\n [fill]=\"c.fill\"\n [data]=\"c.data\"\n (select)=\"onClick(c.cell)\"\n (activate)=\"activate.emit(c.cell)\"\n (deactivate)=\"deactivate.emit(c.cell)\"\n [gradient]=\"gradient\"\n [animations]=\"animations\"\n ngx-tooltip\n [tooltipDisabled]=\"tooltipDisabled\"\n [tooltipPlacement]=\"placementTypes.Top\"\n [tooltipType]=\"styleTypes.tooltip\"\n [tooltipTitle]=\"tooltipTemplate ? undefined : tooltipText(c)\"\n [tooltipTemplate]=\"tooltipTemplate\"\n [tooltipContext]=\"{ series: c.series, name: c.label, value: c.data }\"\n ></svg:g>\n `,\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class HeatCellSeriesComponent implements OnChanges, OnInit {\n @Input() data;\n @Input() colors;\n @Input() xScale;\n @Input() yScale;\n @Input() gradient: boolean;\n @Input() tooltipDisabled: boolean = false;\n @Input() tooltipText: any;\n @Input() tooltipTemplate: TemplateRef<any>;\n @Input() animations: boolean = true;\n\n @Output() select: EventEmitter<DataItem> = new EventEmitter();\n @Output() activate: EventEmitter<DataItem> = new EventEmitter();\n @Output() deactivate: EventEmitter<DataItem> = new EventEmitter();\n\n cells: Cell[];\n\n placementTypes = PlacementTypes;\n styleTypes = StyleTypes;\n\n ngOnInit() {\n if (!this.tooltipText) {\n this.tooltipText = this.getTooltipText;\n }\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n this.update();\n }\n\n update(): void {\n this.cells = this.getCells();\n }\n\n getCells(): Cell[] {\n const cells = [];\n\n this.data.map(row => {\n row.series.map(cell => {\n const value = cell.value;\n cell.series = row.name;\n\n cells.push({\n row,\n cell,\n x: this.xScale(row.name),\n y: this.yScale(cell.name),\n width: this.xScale.bandwidth(),\n height: this.yScale.bandwidth(),\n fill: this.colors.getColor(value),\n data: value,\n label: formatLabel(cell.name),\n series: row.name\n });\n });\n });\n\n return cells;\n }\n\n getTooltipText({ label, data, series }: { label: string; data: number; series: string }): string {\n return `\n <span class=\"tooltip-label\">${escapeLabel(series)} • ${escapeLabel(label)}</span>\n <span class=\"tooltip-val\">${data.toLocaleString()}</span>\n `;\n }\n\n trackBy(index: number, item): string {\n return item.label;\n }\n\n onClick(data): void {\n this.select.emit(data);\n }\n}\n","import {\n Component,\n Input,\n ViewEncapsulation,\n ChangeDetectionStrategy,\n ContentChild,\n TemplateRef,\n Output,\n EventEmitter\n} from '@angular/core';\nimport { scaleBand } from 'd3-scale';\n\nimport { BaseChartComponent } from '../common/base-chart.component';\nimport { calculateViewDimensions } from '../common/view-dimensions.helper';\nimport { ColorHelper } from '../common/color.helper';\nimport { getScaleType } from '../common/domain.helper';\nimport { LegendOptions, LegendPosition } from '../common/types/legend.model';\nimport { ViewDimensions } from '../common/types/view-dimension.interface';\nimport { ScaleType } from '../common/types/scale-type.enum';\n\ninterface RectItem {\n fill: string;\n height: number;\n rx: number;\n width: number;\n x: number;\n y: number;\n}\n\n@Component({\n selector: 'ngx-charts-heat-map',\n template: `\n <ngx-charts-chart\n [view]=\"[width, height]\"\n [showLegend]=\"legend\"\n [animations]=\"animations\"\n [legendOptions]=\"legendOptions\"\n (legendLabelClick)=\"onClick($event)\"\n >\n <svg:g [attr.transform]=\"transform\" class=\"heat-map chart\">\n <svg:g\n ngx-charts-x-axis\n *ngIf=\"xAxis\"\n [xScale]=\"xScale\"\n [dims]=\"dims\"\n [showLabel]=\"showXAxisLabel\"\n [labelText]=\"xAxisLabel\"\n [trimTicks]=\"trimXAxisTicks\"\n [rotateTicks]=\"rotateXAxisTicks\"\n [maxTickLength]=\"maxXAxisTickLength\"\n [tickFormatting]=\"xAxisTickFormatting\"\n [ticks]=\"xAxisTicks\"\n (dimensionsChanged)=\"updateXAxisHeight($event)\"\n ></svg:g>\n <svg:g\n ngx-charts-y-axis\n *ngIf=\"yAxis\"\n [yScale]=\"yScale\"\n [dims]=\"dims\"\n [showLabel]=\"showYAxisLabel\"\n [labelText]=\"yAxisLabel\"\n [trimTicks]=\"trimYAxisTicks\"\n [maxTickLength]=\"maxYAxisTickLength\"\n [tickFormatting]=\"yAxisTickFormatting\"\n [ticks]=\"yAxisTicks\"\n (dimensionsChanged)=\"updateYAxisWidth($event)\"\n ></svg:g>\n <svg:rect\n *ngFor=\"let rect of rects\"\n [attr.x]=\"rect.x\"\n [attr.y]=\"rect.y\"\n [attr.rx]=\"rect.rx\"\n [attr.width]=\"rect.width\"\n [attr.height]=\"rect.height\"\n [attr.fill]=\"rect.fill\"\n />\n <svg:g\n ngx-charts-heat-map-cell-series\n [xScale]=\"xScale\"\n [yScale]=\"yScale\"\n [colors]=\"colors\"\n [data]=\"results\"\n [gradient]=\"gradient\"\n [animations]=\"animations\"\n [tooltipDisabled]=\"tooltipDisabled\"\n [tooltipTemplate]=\"tooltipTemplate\"\n [tooltipText]=\"tooltipText\"\n (select)=\"onClick($event)\"\n (activate)=\"onActivate($event, undefined)\"\n (deactivate)=\"onDeactivate($event, undefined)\"\n />\n </svg:g>\n </ngx-charts-chart>\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n styleUrls: ['../common/base-chart.component.scss'],\n encapsulation: ViewEncapsulation.None\n})\nexport class HeatMapComponent extends BaseChartComponent {\n @Input() legend: boolean;\n @Input() legendTitle: string = 'Legend';\n @Input() legendPosition: LegendPosition = LegendPosition.Right;\n @Input() xAxis: boolean;\n @Input() yAxis: boolean;\n @Input() showXAxisLabel: boolean;\n @Input() showYAxisLabel: boolean;\n @Input() xAxisLabel: string;\n @Input() yAxisLabel: string;\n @Input() gradient: boolean;\n @Input() innerPadding: number | number[] | string | string[] = 8;\n @Input() trimXAxisTicks: boolean = true;\n @Input() trimYAxisTicks: boolean = true;\n @Input() rotateXAxisTicks: boolean = true;\n @Input() maxXAxisTickLength: number = 16;\n @Input() maxYAxisTickLength: number = 16;\n @Input() xAxisTickFormatting: any;\n @Input() yAxisTickFormatting: any;\n @Input() xAxisTicks: any[];\n @Input() yAxisTicks: any[];\n @Input() tooltipDisabled: boolean = false;\n @Input() tooltipText: any;\n @Input() min: number;\n @Input() max: number;\n @Input() activeEntries: any[] = [];\n\n @Output() activate: EventEmitter<any> = new EventEmitter();\n @Output() deactivate: EventEmitter<any> = new EventEmitter();\n\n @ContentChild('tooltipTemplate') tooltipTemplate: TemplateRef<any>;\n\n dims: ViewDimensions;\n xDomain: string[];\n yDomain: string[];\n valueDomain: any[];\n xScale: any;\n yScale: any;\n colors: ColorHelper;\n colorScale: any;\n transform: string;\n rects: RectItem[];\n margin: number[] = [10, 20, 10, 20];\n xAxisHeight: number = 0;\n yAxisWidth: number = 0;\n legendOptions: LegendOptions;\n scaleType: ScaleType = ScaleType.Linear;\n\n update(): void {\n super.update();\n\n this.formatDates();\n\n this.xDomain = this.getXDomain();\n this.yDomain = this.getYDomain();\n this.valueDomain = this.getValueDomain();\n\n this.scaleType = getScaleType(this.valueDomain, false);\n\n this.dims = calculateViewDimensions({\n width: this.width,\n height: this.height,\n margins: this.margin,\n showXAxis: this.xAxis,\n showYAxis: this.yAxis,\n xAxisHeight: this.xAxisHeight,\n yAxisWidth: this.yAxisWidth,\n showXLabel: this.showXAxisLabel,\n showYLabel: this.showYAxisLabel,\n showLegend: this.legend,\n legendType: this.scaleType as any,\n legendPosition: this.legendPosition\n });\n\n if (this.scaleType === ScaleType.Linear) {\n let min = this.min;\n let max = this.max;\n if (!this.min) {\n min = Math.min(0, ...this.valueDomain);\n }\n if (!this.max) {\n max = Math.max(...this.valueDomain);\n }\n this.valueDomain = [min, max];\n }\n\n this.xScale = this.getXScale();\n this.yScale = this.getYScale();\n\n this.setColors();\n this.legendOptions = this.getLegendOptions();\n\n this.transform = `translate(${this.dims.xOffset} , ${this.margin[0]})`;\n this.rects = this.getRects();\n }\n\n getXDomain(): string[] {\n const domain = [];\n for (const group of this.results) {\n if (!domain.includes(group.name)) {\n domain.push(group.name);\n }\n }\n\n return domain;\n }\n\n getYDomain(): string[] {\n const domain = [];\n\n for (const group of this.results) {\n for (const d of group.series) {\n if (!domain.includes(d.name)) {\n domain.push(d.name);\n }\n }\n }\n\n return domain;\n }\n\n getValueDomain(): any[] {\n const domain = [];\n\n for (const group of this.results) {\n for (const d of group.series) {\n if (!domain.includes(d.value)) {\n domain.push(d.value);\n }\n }\n }\n\n return domain;\n }\n\n /**\n * Converts the input to gap paddingInner in fraction\n * Supports the following inputs:\n * Numbers: 8\n * Strings: \"8\", \"8px\", \"8%\"\n * Arrays: [8,2], \"8,2\", \"[8,2]\"\n * Mixed: [8,\"2%\"], [\"8px\",\"2%\"], \"8,2%\", \"[8,2%]\"\n *\n * @memberOf HeatMapComponent\n */\n getDimension(value: string | number | Array<string | number>, index: number = 0, N: number, L: number): number {\n if (typeof value === 'string') {\n value = value\n .replace('[', '')\n .replace(']', '')\n .replace('px', '')\n // tslint:disable-next-line: quotemark\n .replace(\"'\", '');\n\n if (value.includes(',')) {\n value = value.split(',');\n }\n }\n if (Array.isArray(value) && typeof index === 'number') {\n return this.getDimension(value[index], null, N, L);\n }\n if (typeof value === 'string' && value.includes('%')) {\n return +value.replace('%', '') / 100;\n }\n return N / (L / +value + 1);\n }\n\n getXScale(): any {\n const f = this.getDimension(this.innerPadding, 0, this.xDomain.length, this.dims.width);\n return scaleBand().rangeRound([0, this.dims.width]).domain(this.xDomain).paddingInner(f);\n }\n\n getYScale(): any {\n const f = this.getDimension(this.innerPadding, 1, this.yDomain.length, this.dims.height);\n return scaleBand().rangeRound([this.dims.height, 0]).domain(this.yDomain).paddingInner(f);\n }\n\n getRects(): RectItem[] {\n const rects = [];\n\n this.xDomain.map(xVal => {\n this.yDomain.map(yVal => {\n rects.push({\n x: this.xScale(xVal),\n y: this.yScale(yVal),\n rx: 3,\n width: this.xScale.bandwidth(),\n height: this.yScale.bandwidth(),\n fill: 'rgba(200,200,200,0.03)'\n });\n });\n });\n\n return rects;\n }\n\n onClick(data): void {\n this.select.emit(data);\n }\n\n setColors(): void {\n this.colors = new ColorHelper(this.scheme, this.scaleType, this.valueDomain);\n }\n\n getLegendOptions(): LegendOptions {\n return {\n scaleType: this.scaleType,\n domain: this.valueDomain,\n colors: this.scaleType === ScaleType.Ordinal ? this.colors : this.colors.scale,\n title: this.scaleType === ScaleType.Ordinal ? this.legendTitle : undefined,\n position: this.legendPosition\n };\n }\n\n updateYAxisWidth({ width }: { width: number }): void {\n this.yAxisWidth = width;\n this.update();\n }\n\n updateXAxisHeight({ height }: { height: number }): void {\n this.xAxisHeight = height;\n this.update();\n }\n\n onActivate(event, group, fromLegend: boolean = false) {\n const item = Object.assign({}, event);\n if (group) {\n item.series = group.name;\n }\n\n const items = this.results\n .map(g => g.series)\n .flat()\n .filter(i => {\n if (fromLegend) {\n return i.label === item.name;\n } else {\n return i.name === item.name && i.series === item.series;\n }\n });\n\n this.activeEntries = [...items];\n this.activate.emit({ value: item, entries: this.activeEntries });\n }\n\n onDeactivate(event, group, fromLegend: boolean = false) {\n const item = Object.assign({}, event);\n if (group) {\n item.series = group.name;\n }\n\n this.activeEntries = this.activeEntries.filter(i => {\n if (fromLegend) {\n return i.label !== item.name;\n } else {\n return !(i.name === item.name && i.series === item.series);\n }\n });\n\n this.deactivate.emit({ value: item, entries: this.activeEntries });\n }\n}\n","import { NgModule } from '@angular/core';\nimport { ChartCommonModule } from '../common/chart-common.module';\nimport { HeatMapCellComponent } from './heat-map-cell.component';\nimport { HeatCellSeriesComponent } from './heat-map-cell-series.component';\nimport { HeatMapComponent } from './heat-map.component';\n\n@NgModule({\n imports: [ChartCommonModule],\n declarations: [HeatMapCellComponent, HeatCellSeriesComponent, HeatMapComponent],\n exports: [HeatMapCellComponent, HeatCellSeriesComponent, HeatMapComponent]\n})\nexport class HeatMapModule {}\n","import {\n Component,\n Input,\n Output,\n EventEmitter,\n OnChanges,\n ElementRef,\n ChangeDetectionStrategy,\n SimpleChanges\n} from '@angular/core';\nimport { trigger, style, animate, transition } from '@angular/animations';\nimport { select } from 'd3-selection';\nimport { Series } from '../models/chart-data.model';\n\n@Component({\n selector: 'g[ngx-charts-line]',\n template: `\n <svg:path\n [@animationState]=\"'active'\"\n class=\"line\"\n [attr.d]=\"initialPath\"\n [attr.fill]=\"fill\"\n [attr.stroke]=\"stroke\"\n stroke-width=\"1.5px\"\n />\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n animations: [\n trigger('animationState', [\n transition(':enter', [\n style({\n strokeDasharray: 2000,\n strokeDashoffset: 2000\n }),\n animate(\n 1000,\n style({\n strokeDashoffset: 0\n })\n )\n ])\n ])\n ]\n})\nexport class LineComponent implements OnChanges {\n @Input() path: string;\n @Input() stroke: string;\n @Input() data: Series;\n @Input() fill: string = 'none';\n @Input() animations: boolean = true;\n\n // @Output() select = new EventEmitter();\n\n initialized: boolean = false;\n initialPath: string;\n\n constructor(private element: ElementRef) {}\n\n ngOnChanges(changes: SimpleChanges): void {\n if (!this.initialized) {\n this.initialized = true;\n this.initialPath = this.path;\n } else {\n this.updatePathEl();\n }\n }\n\n updatePathEl(): void {\n const node = select(this.element.nativeElement).select('.line');\n\n if (this.animations) {\n node.transition().duration(750).attr('d', this.path);\n } else {\n node.attr('d', this.path);\n }\n }\n}\n","import {\n Component,\n Input,\n Output,\n EventEmitter,\n ViewEncapsulation,\n HostListener,\n ChangeDetectionStrategy,\n ContentChild,\n TemplateRef\n} from '@angular/core';\nimport { trigger, style, animate, transition } from '@angular/animations';\nimport { scaleLinear, scaleTime, scalePoint } from 'd3-scale';\nimport { curveLinear } from 'd3-shape';\n\nimport { calculateViewDimensions } from '../common/view-dimensions.helper';\nimport { ColorHelper } from '../common/color.helper';\nimport { BaseChartComponent } from '../common/base-chart.component';\nimport { id } from '../utils/id';\nimport { getUniqueXDomainValues, getScaleType } from '../common/domain.helper';\nimport { LegendOptions, LegendPosition } from '../common/types/legend.model';\nimport { ScaleType } from '../common/types/scale-type.enum';\nimport { ViewDimensions } from '../common/types/view-dimension.interface';\n\n@Component({\n selector: 'ngx-charts-line-chart',\n template: `\n <ngx-charts-chart\n [view]=\"[width, height]\"\n [showLegend]=\"legend\"\n [legendOptions]=\"legendOptions\"\n [activeEntries]=\"activeEntries\"\n [animations]=\"animations\"\n (legendLabelClick)=\"onClick($event)\"\n (legendLabelActivate)=\"onActivate($event)\"\n (legendLabelDeactivate)=\"onDeactivate($event)\"\n >\n <svg:defs>\n <svg:clipPath [attr.id]=\"clipPathId\">\n <svg:rect\n [attr.width]=\"dims.width + 10\"\n [attr.height]=\"dims.height + 10\"\n [attr.transform]=\"'translate(-5, -5)'\"\n />\n </svg:clipPath>\n </svg:defs>\n <svg:g [attr.transform]=\"transform\" class=\"line-chart chart\">\n <svg:g\n ngx-charts-x-axis\n *ngIf=\"xAxis\"\n [xScale]=\"xScale\"\n [dims]=\"dims\"\n [showGridLines]=\"showGridLines\"\n [showLabel]=\"showXAxisLabel\"\n [labelText]=\"xAxisLabel\"\n [trimTicks]=\"trimXAxisTicks\"\n [rotateTicks]=\"rotateXAxisTicks\"\n [maxTickLength]=\"maxXAxisTickLength\"\n [tickFormatting]=\"xAxisTickFormatting\"\n [ticks]=\"xAxisTicks\"\n (dimensionsChanged)=\"updateXAxisHeight($event)\"\n ></svg:g>\n <svg:g\n ngx-charts-y-axis\n *ngIf=\"yAxis\"\n [yScale]=\"yScale\"\n [dims]=\"dims\"\n [showGridLines]=\"showGridLines\"\n [showLabel]=\"showYAxisLabel\"\n [labelText]=\"yAxisLabel\"\n [trimTicks]=\"trimYAxisTicks\"\n [maxTickLength]=\"maxYAxisTickLength\"\n [tickFormatting]=\"yAxisTickFormatting\"\n [ticks]=\"yAxisTicks\"\n [referenceLines]=\"referenceLines\"\n [showRefLines]=\"showRefLines\"\n [showRefLabels]=\"showRefLabels\"\n (dimensionsChanged)=\"updateYAxisWidth($event)\"\n ></svg:g>\n <svg:g [attr.clip-path]=\"clipPath\">\n <svg:g *ngFor=\"let series of results; trackBy: trackBy\" [@animationState]=\"'active'\">\n <svg:g\n ngx-charts-line-series\n [xScale]=\"xScale\"\n [yScale]=\"yScale\"\n [colors]=\"colors\"\n [data]=\"series\"\n [activeEntries]=\"activeEntries\"\n [scaleType]=\"scaleType\"\n [curve]=\"curve\"\n [rangeFillOpacity]=\"rangeFillOpacity\"\n [hasRange]=\"hasRange\"\n [animations]=\"animations\"\n />\n </svg:g>\n\n <svg:g *ngIf=\"!tooltipDisabled\" (mouseleave)=\"hideCircles()\">\n <svg:g\n ngx-charts-tooltip-area\n [dims]=\"dims\"\n [xSet]=\"xSet\"\n [xScale]=\"xScale\"\n [yScale]=\"yScale\"\n [results]=\"results\"\n [colors]=\"colors\"\n [tooltipDisabled]=\"tooltipDisabled\"\n [tooltipTemplate]=\"seriesTooltipTemplate\"\n (hover)=\"updateHoveredVertical($event)\"\n />\n\n <svg:g *ngFor=\"let series of results\">\n <svg:g\n ngx-charts-circle-series\n [xScale]=\"xScale\"\n [yScale]=\"yScale\"\n [colors]=\"colors\"\n [data]=\"series\"\n [scaleType]=\"scaleType\"\n [visibleValue]=\"hoveredVertical\"\n [activeEntries]=\"activeEntries\"\n [tooltipDisabled]=\"tooltipDisabled\"\n [tooltipTemplate]=\"tooltipTemplate\"\n (select)=\"onClick($event)\"\n (activate)=\"onActivate($event)\"\n (deactivate)=\"onDeactivate($event)\"\n />\n </svg:g>\n </svg:g>\n </svg:g>\n </svg:g>\n <svg:g\n ngx-charts-timeline\n *ngIf=\"timeline && scaleType != 'ordinal'\"\n [attr.transform]=\"timelineTransform\"\n [results]=\"results\"\n [view]=\"[timelineWidth, height]\"\n [height]=\"timelineHeight\"\n [scheme]=\"scheme\"\n [customColors]=\"customColors\"\n [scaleType]=\"scaleType\"\n [legend]=\"legend\"\n (onDomainChange)=\"updateDomain($event)\"\n >\n <svg:g *ngFor=\"let series of results; trackBy: trackBy\">\n <svg:g\n ngx-charts-line-series\n [xScale]=\"timelineXScale\"\n [yScale]=\"timelineYScale\"\n [colors]=\"colors\"\n [data]=\"series\"\n [scaleType]=\"scaleType\"\n [curve]=\"curve\"\n [hasRange]=\"hasRange\"\n [animations]=\"animations\"\n />\n </svg:g>\n </svg:g>\n </ngx-charts-chart>\n `,\n styleUrls: ['../common/base-chart.component.scss'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n animations: [\n trigger('animationState', [\n transition(':leave', [\n style({\n opacity: 1\n }),\n animate(\n 500,\n style({\n opacity: 0\n })\n )\n ])\n ])\n ]\n})\nexport class LineChartComponent extends BaseChartComponent {\n @Input() legend: boolean;\n @Input() legendTitle: string = 'Legend';\n @Input() legendPosition: LegendPosition = LegendPosition.Right;\n @Input() xAxis: boolean;\n @Input() yAxis: boolean;\n @Input() showXAxisLabel: boolean;\n @Input() showYAxisLabel: boolean;\n @Input() xAxisLabel: string;\n @Input() yAxisLabel: string;\n @Input() autoScale: boolean;\n @Input() timeline: boolean;\n @Input() gradient: boolean;\n @Input() showGridLines: boolean = true;\n @Input() curve: any = curveLinear;\n @Input() activeEntries: any[] = [];\n @Input() schemeType: ScaleType;\n @Input() rangeFillOpacity: number;\n @Input() trimXAxisTicks: boolean = true;\n @Input() trimYAxisTicks: boolean = true;\n @Input() rotateXAxisTicks: boolean = true;\n @Input() maxXAxisTickLength: number = 16;\n @Input() maxYAxisTickLength: number = 16;\n @Input() xAxisTickFormatting: any;\n @Input() yAxisTickFormatting: any;\n @Input() xAxisTicks: any[];\n @Input() yAxisTicks: any[];\n @Input() roundDomains: boolean = false;\n @Input() tooltipDisabled: boolean = false;\n @Input() showRefLines: boolean = false;\n @Input() referenceLines: any;\n @Input() showRefLabels: boolean = true;\n @Input() xScaleMin: number;\n @Input() xScaleMax: number;\n @Input() yScaleMin: number;\n @Input() yScaleMax: number;\n\n @Output() activate: EventEmitter<any> = new EventEmitter();\n @Output() deactivate: EventEmitter<any> = new EventEmitter();\n\n @ContentChild('tooltipTemplate') tooltipTemplate: TemplateRef<any>;\n @ContentChild('seriesTooltipTemplate') seriesTooltipTemplate: TemplateRef<any>;\n\n dims: ViewDimensions;\n xSet: any;\n xDomain: any;\n yDomain: [number, number];\n seriesDomain: any;\n yScale: any;\n xScale: any;\n colors: ColorHelper;\n scaleType: ScaleType;\n transform: string;\n clipPath: string;\n clipPathId: string;\n areaPath: any;\n margin: number[] = [10, 20, 10, 20];\n hoveredVertical: any; // the value of the x axis that is hovered over\n xAxisHeight: number = 0;\n yAxisWidth: number = 0;\n filteredDomain: any;\n legendOptions: any;\n hasRange: boolean; // whether the line has a min-max range around it\n timelineWidth: any;\n timelineHeight: number = 50;\n timelineXScale: any;\n timelineYScale: any;\n timelineXDomain: any;\n timelineTransform: any;\n timelinePadding: number = 10;\n\n update(): void {\n super.update();\n\n this.dims = calculateViewDimensions({\n width: this.width,\n height: this.height,\n margins: this.margin,\n showXAxis: this.xAxis,\n showYAxis: this.yAxis,\n xAxisHeight: this.xAxisHeight,\n yAxisWidth: this.yAxisWidth,\n showXLabel: this.showXAxisLabel,\n showYLabel: this.showYAxisLabel,\n showLegend: this.legend,\n legendType: this.schemeType,\n legendPosition: this.legendPosition\n });\n\n if (this.timeline) {\n this.dims.height -= this.timelineHeight + this.margin[2] + this.timelinePadding;\n }\n\n this.xDomain = this.getXDomain();\n if (this.filteredDomain) {\n this.xDomain = this.filteredDomain;\n }\n\n this.yDomain = this.getYDomain();\n this.seriesDomain = this.getSeriesDomain();\n\n this.xScale = this.getXScale(this.xDomain, this.dims.width);\n this.yScale = this.getYScale(this.yDomain, this.dims.height);\n\n this.updateTimeline();\n\n this.setColors();\n this.legendOptions = this.getLegendOptions();\n\n this.transform = `translate(${this.dims.xOffset} , ${this.margin[0]})`;\n\n this.clipPathId = 'clip' + id().toString();\n this.clipPath = `url(#${this.clipPathId})`;\n }\n\n updateTimeline(): void {\n if (this.timeline) {\n this.timelineWidth = this.dims.width;\n this.timelineXDomain = this.getXDomain();\n this.timelineXScale = this.getXScale(this.timelineXDomain, this.timelineWidth);\n this.timelineYScale = this.getYScale(this.yDomain, this.timelineHeight);\n this.timelineTransform = `translate(${this.dims.xOffset}, ${-this.margin[2]})`;\n }\n }\n\n getXDomain(): any[] {\n let values = getUniqueXDomainValues(this.results);\n\n this.scaleType = getScaleType(values);\n let domain = [];\n\n if (this.scaleType === ScaleType.Linear) {\n values = values.map(v => Number(v));\n }\n\n let min;\n let max;\n if (this.scaleType === ScaleType.Time || this.scaleType === ScaleType.Linear) {\n min = this.xScaleMin ? this.xScaleMin : Math.min(...values);\n\n max = this.xScaleMax ? this.xScaleMax : Math.max(...values);\n }\n\n if (this.scaleType === ScaleType.Time) {\n domain = [new Date(min), new Date(max)];\n this.xSet = [...values].sort((a, b) => {\n const aDate = a.getTime();\n const bDate = b.getTime();\n if (aDate > bDate) return 1;\n if (bDate > aDate) return -1;\n return 0;\n });\n } else if (this.scaleType === ScaleType.Linear) {\n domain = [min, max];\n // Use compare function to sort numbers numerically\n this.xSet = [...values].sort((a, b) => a - b);\n } else {\n domain = values;\n this.xSet = values;\n }\n\n return domain;\n }\n\n getYDomain(): [number, number] {\n const domain = [];\n for (const results of this.results) {\n for (const d of results.series) {\n if (domain.indexOf(d.value) < 0) {\n domain.push(d.value);\n }\n if (d.min !== undefined) {\n this.hasRange = true;\n if (domain.indexOf(d.min) < 0) {\n domain.push(d.min);\n }\n }\n if (d.max !== undefined) {\n this.hasRange = true;\n if (domain.indexOf(d.max) < 0) {\n domain.push(d.max);\n }\n }\n }\n }\n\n const values = [...domain];\n if (!this.autoScale) {\n values.push(0);\n }\n\n const min = this.yScaleMin ? this.yScaleMin : Math.min(...values);\n\n const max = this.yScaleMax ? this.yScaleMax : Math.max(...values);\n\n return [min, max];\n }\n\n getSeriesDomain(): string[] {\n return this.results.map(d => d.name);\n }\n\n getXScale(domain, width: number): any {\n let scale;\n\n if (this.scaleType === ScaleType.Time) {\n scale = scaleTime().range([0, width]).domain(domain);\n } else if (this.scaleType === ScaleType.Linear) {\n scale = scaleLinear().range([0, width]).domain(domain);\n\n if (this.roundDomains) {\n scale = scale.nice();\n }\n } else if (this.scaleType === ScaleType.Ordinal) {\n scale = scalePoint().range([0, width]).padding(0.1).domain(domain);\n }\n\n return scale;\n }\n\n getYScale(domain, height: number): any {\n const scale = scaleLinear().range([height, 0]).domain(domain);\n\n return this.roundDomains ? scale.nice() : scale;\n }\n\n updateDomain(domain): void {\n this.filteredDomain = domain;\n this.xDomain = this.filteredDomain;\n this.xScale = this.getXScale(this.xDomain, this.dims.width);\n }\n\n updateHoveredVertical(item): void {\n this.hoveredVertical = item.value;\n this.deactivateAll();\n }\n\n @HostListener('mouseleave')\n hideCircles(): void {\n this.hoveredVertical = null;\n this.deactivateAll();\n }\n\n onClick(data): void {\n this.select.emit(data);\n }\n\n trackBy(index: number, item): string {\n return `${item.name}`;\n }\n\n setColors(): void {\n let domain;\n if (this.schemeType === ScaleType.Ordinal) {\n domain = this.seriesDomain;\n } else {\n domain = this.yDomain;\n }\n\n this.colors = new ColorHelper(this.scheme, this.schemeType, domain, this.customColors);\n }\n\n getLegendOptions(): LegendOptions {\n const opts = {\n scaleType: this.schemeType as any,\n colors: undefined,\n domain: [],\n title: undefined,\n position: this.legendPosition\n };\n if (opts.scaleType === ScaleType.Ordinal) {\n opts.domain = this.seriesDomain;\n opts.colors = this.colors;\n opts.title = this.legendTitle;\n } else {\n opts.domain = this.yDomain;\n opts.colors = this.colors.scale;\n }\n return opts;\n }\n\n updateYAxisWidth({ width }: { width: number }): void {\n this.yAxisWidth = width;\n this.update();\n }\n\n updateXAxisHeight({ height }: { height: number }): void {\n this.xAxisHeight = height;\n this.update();\n }\n\n onActivate(item): void {\n this.deactivateAll();\n\n const idx = this.activeEntries.findIndex(d => {\n return d.name === item.name && d.value === item.value;\n });\n if (idx > -1) {\n return;\n }\n\n this.activeEntries = [item];\n this.activate.emit({ value: item, entries: this.activeEntries });\n }\n\n onDeactivate(item): void {\n const idx = this.activeEntries.findIndex(d => {\n return d.name === item.name && d.value === item.value;\n });\n\n this.activeEntries.splice(idx, 1);\n this.activeEntries = [...this.activeEntries];\n\n this.deactivate.emit({ value: item, entries: this.activeEntries });\n }\n\n deactivateAll(): void {\n this.activeEntries = [...this.activeEntries];\n for (const entry of this.activeEntries) {\n this.deactivate.emit({ value: entry, entries: [] });\n }\n this.activeEntries = [];\n }\n}\n","import { Component, Input, OnChanges, SimpleChanges, ChangeDetectionStrategy } from '@angular/core';\nimport { area, line } from 'd3-shape';\n\nimport { id } from '../utils/id';\nimport { sortLinear, sortByTime, sortByDomain } from '../utils/sort';\nimport { ColorHelper } from '../common/color.helper';\nimport { Series } from '../models/chart-data.model';\nimport { BarOrientation } from '../common/types/bar-orientation.enum';\nimport { ScaleType } from '../common/types/scale-type.enum';\nimport { Gradient } from '../common/types/gradient.interface';\n\n@Component({\n selector: 'g[ngx-charts-line-series]',\n template: `\n <svg:g>\n <defs>\n <svg:g\n ngx-charts-svg-linear-gradient\n *ngIf=\"hasGradient\"\n [orientation]=\"barOrientation.Vertical\"\n [name]=\"gradientId\"\n [stops]=\"gradientStops\"\n />\n </defs>\n <svg:g\n ngx-charts-area\n class=\"line-highlight\"\n [data]=\"data\"\n [path]=\"areaPath\"\n [fill]=\"hasGradient ? gradientUrl : colors.getColor(data.name)\"\n [opacity]=\"0.25\"\n [startOpacity]=\"0\"\n [gradient]=\"true\"\n [stops]=\"areaGradientStops\"\n [class.active]=\"isActive(data)\"\n [class.inactive]=\"isInactive(data)\"\n [animations]=\"animations\"\n />\n <svg:g\n ngx-charts-line\n class=\"line-series\"\n [data]=\"data\"\n [path]=\"path\"\n [stroke]=\"stroke\"\n [animations]=\"animations\"\n [class.active]=\"isActive(data)\"\n [class.inactive]=\"isInactive(data)\"\n />\n <svg:g\n ngx-charts-area\n *ngIf=\"hasRange\"\n class=\"line-series-range\"\n [data]=\"data\"\n [path]=\"outerPath\"\n [fill]=\"hasGradient ? gradientUrl : colors.getColor(data.name)\"\n [class.active]=\"isActive(data)\"\n [class.inactive]=\"isInactive(data)\"\n [opacity]=\"rangeFillOpacity\"\n [animations]=\"animations\"\n />\n </svg:g>\n `,\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class LineSeriesComponent implements OnChanges {\n @Input() data: Series;\n @Input() xScale;\n @Input() yScale;\n @Input() colors: ColorHelper;\n @Input() scaleType: ScaleType;\n @Input() curve: any;\n @Input() activeEntries: any[];\n @Input() rangeFillOpacity: number;\n @Input() hasRange: boolean;\n @Input() animations: boolean = true;\n\n path: string;\n outerPath: string;\n areaPath: string;\n gradientId: string;\n gradientUrl: string;\n hasGradient: boolean;\n gradientStops: Gradient[];\n areaGradientStops: Gradient[];\n stroke: string;\n\n barOrientation = BarOrientation;\n\n ngOnChanges(changes: SimpleChanges): void {\n this.update();\n }\n\n update(): void {\n this.updateGradients();\n\n const data = this.sortData(this.data.series);\n\n const lineGen = this.getLineGenerator();\n this.path = lineGen(data) || '';\n\n const areaGen = this.getAreaGenerator();\n this.areaPath = areaGen(data) || '';\n\n if (this.hasRange) {\n const range = this.getRangeGenerator();\n this.outerPath = range(data) || '';\n }\n\n if (this.hasGradient) {\n this.stroke = this.gradientUrl;\n const values = this.data.series.map(d => d.value);\n const max = Math.max(...values);\n const min = Math.min(...values);\n if (max === min) {\n this.stroke = this.colors.getColor(max);\n }\n } else {\n this.stroke = this.colors.getColor(this.data.name);\n }\n }\n\n getLineGenerator(): any {\n return line<any>()\n .x(d => {\n const label = d.name;\n let value;\n if (this.scaleType === ScaleType.Time) {\n value = this.xScale(label);\n } else if (this.scaleType === ScaleType.Linear) {\n value = this.xScale(Number(label));\n } else {\n value = this.xScale(label);\n }\n return value;\n })\n .y(d => this.yScale(d.value))\n .curve(this.curve);\n }\n\n getRangeGenerator(): any {\n return area<any>()\n .x(d => {\n const label = d.name;\n let value;\n if (this.scaleType === ScaleType.Time) {\n value = this.xScale(label);\n } else if (this.scaleType === ScaleType.Linear) {\n value = this.xScale(Number(label));\n } else {\n value = this.xScale(label);\n }\n return value;\n })\n .y0(d => this.yScale(typeof d.min === 'number' ? d.min : d.value))\n .y1(d => this.yScale(typeof d.max === 'number' ? d.max : d.value))\n .curve(this.curve);\n }\n\n getAreaGenerator(): any {\n const xProperty = d => {\n const label = d.name;\n return this.xScale(label);\n };\n\n return area<any>()\n .x(xProperty)\n .y0(() => this.yScale.range()[0])\n .y1(d => this.yScale(d.value))\n .curve(this.curve);\n }\n\n sortData(data) {\n if (this.scaleType === ScaleType.Linear) {\n data = sortLinear(data, 'name');\n } else if (this.scaleType === ScaleType.Time) {\n data = sortByTime(data, 'name');\n } else {\n data = sortByDomain(data, 'name', 'asc', this.xScale.domain());\n }\n\n return data;\n }\n\n updateGradients() {\n if (this.colors.scaleType === ScaleType.Linear) {\n this.hasGradient = true;\n this.gradientId = 'grad' + id().toString();\n this.gradientUrl = `url(#${this.gradientId})`;\n const values = this.data.series.map(d => d.value);\n const max = Math.max(...values);\n const min = Math.min(...values);\n this.gradientStops = this.colors.getLinearGradientStops(max, min);\n this.areaGradientStops = this.colors.getLinearGradientStops(max);\n } else {\n this.hasGradient = false;\n this.gradientStops = undefined;\n this.areaGradientStops = undefined;\n }\n }\n\n isActive(entry): boolean {\n if (!this.activeEntries) return false;\n const item = this.activeEntries.find(d => {\n return entry.name === d.name;\n });\n return item !== undefined;\n }\n\n isInactive(entry): boolean {\n if (!this.activeEntries || this.activeEntries.length === 0) return false;\n const item = this.activeEntries.find(d => {\n return entry.name === d.name;\n });\n return item === undefined;\n }\n}\n","import { NgModule } from '@angular/core';\nimport { ChartCommonModule } from '../common/chart-common.module';\nimport { LineComponent } from './line.component';\nimport { LineChartComponent } from './line-chart.component';\nimport { LineSeriesComponent } from './line-series.component';\n\n@NgModule({\n imports: [ChartCommonModule],\n declarations: [LineComponent, LineChartComponent, LineSeriesComponent],\n exports: [LineComponent, LineChartComponent, LineSeriesComponent]\n})\nexport class LineChartModule {}\n","import {\n Component,\n Input,\n Output,\n EventEmitter,\n ViewEncapsulation,\n ChangeDetectionStrategy,\n ContentChild,\n TemplateRef\n} from '@angular/core';\nimport { trigger, style, animate, transition } from '@angular/animations';\nimport { scaleLinear, scaleTime, scalePoint } from 'd3-scale';\nimport { curveCardinalClosed } from 'd3-shape';\n\nimport { calculateViewDimensions } from '../common/view-dimensions.helper';\nimport { ColorHelper } from '../common/color.helper';\nimport { BaseChartComponent } from '../common/base-chart.component';\nimport { getScaleType } from '../common/domain.helper';\nimport { isDate } from '../utils/types';\nimport { LegendPosition } from '../common/types/legend.model';\nimport { ScaleType } from '../common/types/scale-type.enum';\nimport { ViewDimensions } from '../common/types/view-dimension.interface';\nimport { Orientation } from '../common/types/orientation.enum';\n\nconst twoPI = 2 * Math.PI;\n\n@Component({\n selector: 'ngx-charts-polar-chart',\n template: `\n <ngx-charts-chart\n [view]=\"[width, height]\"\n [showLegend]=\"legend\"\n [legendOptions]=\"legendOptions\"\n [activeEntries]=\"activeEntries\"\n [animations]=\"animations\"\n (legendLabelClick)=\"onClick($event)\"\n (legendLabelActivate)=\"onActivate($event)\"\n (legendLabelDeactivate)=\"onDeactivate($event)\"\n >\n <svg:g class=\"polar-chart chart\" [attr.transform]=\"transform\">\n <svg:g [attr.transform]=\"transformPlot\">\n <svg:circle class=\"polar-chart-background\" cx=\"0\" cy=\"0\" [attr.r]=\"this.outerRadius\" />\n <svg:g *ngIf=\"showGridLines\">\n <svg:circle\n *ngFor=\"let r of radiusTicks\"\n class=\"gridline-path radial-gridline-path\"\n cx=\"0\"\n cy=\"0\"\n [attr.r]=\"r\"\n />\n </svg:g>\n <svg:g *ngIf=\"xAxis\">\n <svg:g\n ngx-charts-pie-label\n *ngFor=\"let tick of thetaTicks\"\n [data]=\"tick\"\n [radius]=\"outerRadius\"\n [label]=\"tick.label\"\n [max]=\"outerRadius\"\n [value]=\"showGridLines ? 1 : outerRadius\"\n [explodeSlices]=\"true\"\n [animations]=\"animations\"\n [labelTrim]=\"labelTrim\"\n [labelTrimSize]=\"labelTrimSize\"\n ></svg:g>\n </svg:g>\n </svg:g>\n <svg:g\n ngx-charts-y-axis\n [attr.transform]=\"transformYAxis\"\n *ngIf=\"yAxis\"\n [yScale]=\"yAxisScale\"\n [dims]=\"yAxisDims\"\n [showGridLines]=\"showGridLines\"\n [showLabel]=\"showYAxisLabel\"\n [labelText]=\"yAxisLabel\"\n [trimTicks]=\"trimYAxisTicks\"\n [maxTickLength]=\"maxYAxisTickLength\"\n [tickFormatting]=\"yAxisTickFormatting\"\n (dimensionsChanged)=\"updateYAxisWidth($event)\"\n ></svg:g>\n <svg:g\n ngx-charts-axis-label\n *ngIf=\"xAxis && showXAxisLabel\"\n [label]=\"xAxisLabel\"\n [offset]=\"labelOffset\"\n [orient]=\"orientation.Bottom\"\n [height]=\"dims.height\"\n [width]=\"dims.width\"\n ></svg:g>\n <svg:g [attr.transform]=\"transformPlot\">\n <svg:g *ngFor=\"let series of results; trackBy: trackBy\" [@animationState]=\"'active'\">\n <svg:g\n ngx-charts-polar-series\n [gradient]=\"gradient\"\n [xScale]=\"xScale\"\n [yScale]=\"yScale\"\n [colors]=\"colors\"\n [data]=\"series\"\n [activeEntries]=\"activeEntries\"\n [scaleType]=\"scaleType\"\n [curve]=\"curve\"\n [rangeFillOpacity]=\"rangeFillOpacity\"\n [animations]=\"animations\"\n [tooltipDisabled]=\"tooltipDisabled\"\n [tooltipTemplate]=\"tooltipTemplate\"\n (select)=\"onClick($event)\"\n (activate)=\"onActivate($event)\"\n (deactivate)=\"onDeactivate($event)\"\n />\n </svg:g>\n </svg:g>\n </svg:g>\n </ngx-charts-chart>\n `,\n styleUrls: [\n '../common/base-chart.component.scss',\n '../pie-chart/pie-chart.component.scss',\n './polar-chart.component.scss'\n ],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n animations: [\n trigger('animationState', [\n transition(':leave', [\n style({\n opacity: 1\n }),\n animate(\n 500,\n style({\n opacity: 0\n })\n )\n ])\n ])\n ]\n})\nexport class PolarChartComponent extends BaseChartComponent {\n @Input() legend: boolean;\n @Input() legendTitle: string = 'Legend';\n @Input() legendPosition: LegendPosition = LegendPosition.Right;\n @Input() xAxis: boolean;\n @Input() yAxis: boolean;\n @Input() showXAxisLabel: boolean;\n @Input() showYAxisLabel: boolean;\n @Input() xAxisLabel: string;\n @Input() yAxisLabel: string;\n @Input() autoScale: boolean;\n @Input() showGridLines: boolean = true;\n @Input() curve: any = curveCardinalClosed;\n @Input() activeEntries: any[] = [];\n @Input() schemeType: ScaleType;\n @Input() rangeFillOpacity: number = 0.15;\n @Input() trimYAxisTicks: boolean = true;\n @Input() maxYAxisTickLength: number = 16;\n @Input() xAxisTickFormatting: (o: any) => any;\n @Input() yAxisTickFormatting: (o: any) => any;\n @Input() roundDomains: boolean = false;\n @Input() tooltipDisabled: boolean = false;\n @Input() showSeriesOnHover: boolean = true;\n @Input() gradient: boolean = false;\n @Input() yAxisMinScale: number = 0;\n @Input() labelTrim: boolean = true;\n @Input() labelTrimSize: number = 10;\n\n @Output() activate: EventEmitter<any> = new EventEmitter();\n @Output() deactivate: EventEmitter<any> = new EventEmitter();\n\n @ContentChild('tooltipTemplate') tooltipTemplate: TemplateRef<any>;\n\n dims: ViewDimensions;\n yAxisDims: ViewDimensions;\n labelOffset: number;\n xDomain: any;\n yDomain: any;\n seriesDomain: any;\n yScale: any; // -> rScale\n xScale: any; // -> tScale\n yAxisScale: any; // -> yScale\n colors: ColorHelper;\n scaleType: ScaleType;\n transform: string;\n transformPlot: string;\n transformYAxis: string;\n transformXAxis: string;\n // series: any; // ???\n margin: number[] = [10, 20, 10, 20];\n xAxisHeight: number = 0;\n yAxisWidth: number = 0;\n filteredDomain: any;\n legendOptions: any;\n thetaTicks: any[];\n radiusTicks: number[];\n outerRadius: number;\n\n orientation = Orientation;\n\n update(): void {\n super.update();\n\n this.setDims();\n\n this.setScales();\n this.setColors();\n this.legendOptions = this.getLegendOptions();\n\n this.setTicks();\n }\n\n setDims() {\n this.dims = calculateViewDimensions({\n width: this.width,\n height: this.height,\n margins: this.margin,\n showXAxis: this.xAxis,\n showYAxis: this.yAxis,\n xAxisHeight: this.xAxisHeight,\n yAxisWidth: this.yAxisWidth,\n showXLabel: this.showXAxisLabel,\n showYLabel: this.showYAxisLabel,\n showLegend: this.legend,\n legendType: this.schemeType,\n legendPosition: this.legendPosition\n });\n\n const halfWidth = Math.floor(this.dims.width / 2);\n const halfHeight = Math.floor(this.dims.height / 2);\n\n const outerRadius = (this.outerRadius = Math.min(halfHeight / 1.5, halfWidth / 1.5));\n\n const yOffset = Math.max(0, halfHeight - outerRadius);\n\n this.yAxisDims = {\n ...this.dims,\n width: halfWidth\n };\n\n this.transform = `translate(${this.dims.xOffset}, ${this.margin[0]})`;\n this.transformYAxis = `translate(0, ${yOffset})`;\n this.labelOffset = this.dims.height + 40;\n this.transformPlot = `translate(${halfWidth}, ${halfHeight})`;\n }\n\n setScales() {\n const xValues = this.getXValues();\n this.scaleType = getScaleType(xValues);\n this.xDomain = this.filteredDomain || this.getXDomain(xValues);\n\n this.yDomain = this.getYDomain();\n this.seriesDomain = this.getSeriesDomain();\n\n this.xScale = this.getXScale(this.xDomain, twoPI);\n this.yScale = this.getYScale(this.yDomain, this.outerRadius);\n this.yAxisScale = this.getYScale(this.yDomain.reverse(), this.outerRadius);\n }\n\n setTicks() {\n let tickFormat;\n if (this.xAxisTickFormatting) {\n tickFormat = this.xAxisTickFormatting;\n } else if (this.xScale.tickFormat) {\n tickFormat = this.xScale.tickFormat.apply(this.xScale, [5]);\n } else {\n tickFormat = d => {\n if (isDate(d)) {\n return d.toLocaleDateString();\n }\n return d.toLocaleString();\n };\n }\n\n const outerRadius = this.outerRadius;\n const s = 1.1;\n\n this.thetaTicks = this.xDomain.map(d => {\n const startAngle = this.xScale(d);\n const dd = s * outerRadius * (startAngle > Math.PI ? -1 : 1);\n const label = tickFormat(d);\n\n const startPos = [outerRadius * Math.sin(startAngle), -outerRadius * Math.cos(startAngle)];\n const pos = [dd, s * startPos[1]];\n return {\n innerRadius: 0,\n outerRadius,\n startAngle,\n endAngle: startAngle,\n value: outerRadius,\n label,\n startPos,\n pos\n };\n });\n\n const minDistance = 10;\n\n /* from pie chart, abstract out -*/\n for (let i = 0; i < this.thetaTicks.length - 1; i++) {\n const a = this.thetaTicks[i];\n\n for (let j = i + 1; j < this.thetaTicks.length; j++) {\n const b = this.thetaTicks[j];\n // if they're on the same side\n if (b.pos[0] * a.pos[0] > 0) {\n // if they're overlapping\n const o = minDistance - Math.abs(b.pos[1] - a.pos[1]);\n if (o > 0) {\n // push the second up or down\n b.pos[1] += Math.sign(b.pos[0]) * o;\n }\n }\n }\n }\n\n this.radiusTicks = this.yAxisScale.ticks(Math.floor(this.dims.height / 50)).map(d => this.yScale(d));\n }\n\n getXValues(): any[] {\n const values = [];\n for (const results of this.results) {\n for (const d of results.series) {\n if (!values.includes(d.name)) {\n values.push(d.name);\n }\n }\n }\n return values;\n }\n\n getXDomain(values = this.getXValues()): any[] {\n if (this.scaleType === ScaleType.Time) {\n const min = Math.min(...values);\n const max = Math.max(...values);\n return [min, max];\n } else if (this.scaleType === ScaleType.Linear) {\n values = values.map(v => Number(v));\n const min = Math.min(...values);\n const max = Math.max(...values);\n return [min, max];\n }\n return values;\n }\n\n getYValues(): any[] {\n const domain = [];\n\n for (const results of this.results) {\n for (const d of results.series) {\n if (domain.indexOf(d.value) < 0) {\n domain.push(d.value);\n }\n if (d.min !== undefined) {\n if (domain.indexOf(d.min) < 0) {\n domain.push(d.min);\n }\n }\n if (d.max !== undefined) {\n if (domain.indexOf(d.max) < 0) {\n domain.push(d.max);\n }\n }\n }\n }\n return domain;\n }\n\n getYDomain(domain = this.getYValues()): any[] {\n let min = Math.min(...domain);\n const max = Math.max(this.yAxisMinScale, ...domain);\n\n min = Math.max(0, min);\n if (!this.autoScale) {\n min = Math.min(0, min);\n }\n\n return [min, max];\n }\n\n getSeriesDomain(): any[] {\n return this.results.map(d => d.name);\n }\n\n getXScale(domain, width: number): any {\n switch (this.scaleType) {\n case ScaleType.Time:\n return scaleTime().range([0, width]).domain(domain);\n case ScaleType.Linear:\n const scale = scaleLinear().range([0, width]).domain(domain);\n return this.roundDomains ? scale.nice() : scale;\n default:\n return scalePoint()\n .range([0, width - twoPI / domain.length])\n .padding(0)\n .domain(domain);\n }\n }\n\n getYScale(domain, height: number): any {\n const scale = scaleLinear().range([0, height]).domain(domain);\n\n return this.roundDomains ? scale.nice() : scale;\n }\n\n onClick(data, series?): void {\n if (series) {\n data.series = series.name;\n }\n\n this.select.emit(data);\n }\n\n setColors(): void {\n const domain = this.schemeType === ScaleType.Ordinal ? this.seriesDomain : this.yDomain.reverse();\n this.colors = new ColorHelper(this.scheme, this.schemeType, domain, this.customColors);\n }\n\n getLegendOptions() {\n if (this.schemeType === ScaleType.Ordinal) {\n return {\n scaleType: this.schemeType,\n colors: this.colors,\n domain: this.seriesDomain,\n title: this.legendTitle,\n position: this.legendPosition\n };\n }\n return {\n scaleType: this.schemeType,\n colors: this.colors.scale,\n domain: this.yDomain,\n title: undefined,\n position: this.legendPosition\n };\n }\n\n updateYAxisWidth({ width }: { width: number }): void {\n this.yAxisWidth = width;\n this.update();\n }\n\n updateXAxisHeight({ height }: { height: number }): void {\n this.xAxisHeight = height;\n this.update();\n }\n\n onActivate(item): void {\n const idx = this.activeEntries.findIndex(d => {\n return d.name === item.name && d.value === item.value;\n });\n if (idx > -1) {\n return;\n }\n this.activeEntries = this.showSeriesOnHover ? [item, ...this.activeEntries] : this.activeEntries;\n this.activate.emit({ value: item, entries: this.activeEntries });\n }\n\n onDeactivate(item): void {\n const idx = this.activeEntries.findIndex(d => {\n return d.name === item.name && d.value === item.value;\n });\n\n this.activeEntries.splice(idx, 1);\n this.activeEntries = [...this.activeEntries];\n\n this.deactivate.emit({ value: item, entries: this.activeEntries });\n }\n\n deactivateAll(): void {\n this.activeEntries = [...this.activeEntries];\n for (const entry of this.activeEntries) {\n this.deactivate.emit({ value: entry, entries: [] });\n }\n this.activeEntries = [];\n }\n\n trackBy(index: number, item): string {\n return `${item.name}`;\n }\n}\n","import {\n Component,\n Input,\n OnChanges,\n SimpleChanges,\n ChangeDetectionStrategy,\n TemplateRef,\n Output,\n EventEmitter\n} from '@angular/core';\nimport { lineRadial } from 'd3-shape';\n\nimport { id } from '../utils/id';\nimport { sortLinear, sortByTime, sortByDomain } from '../utils/sort';\nimport { escapeLabel } from '../common/label.helper';\nimport { Series, DataItem } from '../models/chart-data.model';\nimport { PlacementTypes } from '../common/tooltip/position';\nimport { StyleTypes } from '../common/tooltip/style.type';\nimport { BarOrientation } from '../common/types/bar-orientation.enum';\nimport { ScaleType } from '../common/types/scale-type.enum';\n\ninterface PolarChartCircle {\n color: string;\n cx: number;\n cy: number;\n data: Series;\n label: string;\n value: number;\n}\n\n@Component({\n selector: 'g[ngx-charts-polar-series]',\n template: `\n <svg:g class=\"polar-charts-series\">\n <defs>\n <svg:g\n ngx-charts-svg-radial-gradient\n *ngIf=\"hasGradient\"\n [color]=\"seriesColor\"\n [name]=\"gradientId\"\n [startOpacity]=\"0.25\"\n [endOpacity]=\"1\"\n [stops]=\"gradientStops\"\n />\n </defs>\n <svg:g\n ngx-charts-line\n class=\"polar-series-path\"\n [path]=\"path\"\n [stroke]=\"hasGradient ? gradientUrl : seriesColor\"\n [class.active]=\"active\"\n [class.inactive]=\"inactive\"\n [attr.fill-opacity]=\"rangeFillOpacity\"\n [fill]=\"hasGradient ? gradientUrl : seriesColor\"\n [animations]=\"animations\"\n />\n <svg:g\n ngx-charts-circle\n *ngFor=\"let circle of circles\"\n class=\"circle\"\n [cx]=\"circle.cx\"\n [cy]=\"circle.cy\"\n [r]=\"circleRadius\"\n [fill]=\"circle.color\"\n [style.opacity]=\"inactive ? 0.2 : 1\"\n ngx-tooltip\n [tooltipDisabled]=\"tooltipDisabled\"\n [tooltipPlacement]=\"placementTypes.Top\"\n [tooltipType]=\"styleTypes.tooltip\"\n [tooltipTitle]=\"tooltipTemplate ? undefined : tooltipText(circle)\"\n [tooltipTemplate]=\"tooltipTemplate\"\n [tooltipContext]=\"circle.data\"\n (select)=\"select.emit(circle.data)\"\n (activate)=\"activate.emit({ name: circle.data.series })\"\n (deactivate)=\"deactivate.emit({ name: circle.data.series })\"\n ></svg:g>\n </svg:g>\n `,\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class PolarSeriesComponent implements OnChanges {\n @Input() name;\n @Input() data;\n @Input() xScale; // Theta\n @Input() yScale; // R\n @Input() colors;\n @Input() scaleType;\n @Input() curve: any;\n @Input() activeEntries: any[];\n @Input() rangeFillOpacity: number;\n @Input() tooltipDisabled: boolean = false;\n @Input() tooltipText: (o: any) => string;\n @Input() gradient: boolean = false;\n @Input() tooltipTemplate: TemplateRef<any>;\n @Input() animations: boolean = true;\n\n @Output() select = new EventEmitter();\n @Output() activate = new EventEmitter();\n @Output() deactivate = new EventEmitter();\n\n path: string;\n circles: PolarChartCircle[];\n circleRadius: number = 3;\n\n areaPath: string;\n gradientId: string;\n gradientUrl: string;\n hasGradient: boolean;\n gradientStops: any[];\n areaGradientStops: any[];\n seriesColor: string;\n\n active: boolean;\n inactive: boolean;\n\n barOrientation = BarOrientation;\n placementTypes = PlacementTypes;\n styleTypes = StyleTypes;\n\n ngOnChanges(changes: SimpleChanges): void {\n this.update();\n }\n\n update(): void {\n this.updateGradients();\n\n const line = this.getLineGenerator();\n\n const data = this.sortData(this.data.series);\n\n const seriesName = this.data.name;\n const linearScaleType = this.colors.scaleType === ScaleType.Linear;\n const min = this.yScale.domain()[0];\n this.seriesColor = this.colors.getColor(linearScaleType ? min : seriesName);\n\n this.path = line(data) || '';\n\n this.circles = data.map(d => {\n const a = this.getAngle(d);\n const r = this.getRadius(d);\n const value = d.value;\n\n const color = this.colors.getColor(linearScaleType ? Math.abs(value) : seriesName);\n\n const cData = Object.assign({}, d, {\n series: seriesName,\n value,\n name: d.name\n });\n\n return {\n data: cData,\n cx: r * Math.sin(a),\n cy: -r * Math.cos(a),\n value,\n color,\n label: d.name\n };\n });\n\n this.active = this.isActive(this.data);\n this.inactive = this.isInactive(this.data);\n this.tooltipText = this.tooltipText || (c => this.defaultTooltipText(c));\n }\n\n getAngle(d: DataItem) {\n const label = d.name;\n if (this.scaleType === ScaleType.Time) {\n return this.xScale(label);\n } else if (this.scaleType === ScaleType.Linear) {\n return this.xScale(Number(label));\n }\n return this.xScale(label);\n }\n\n getRadius(d: DataItem) {\n return this.yScale(d.value);\n }\n\n getLineGenerator(): any {\n return lineRadial<any>()\n .angle(d => this.getAngle(d))\n .radius(d => this.getRadius(d))\n .curve(this.curve);\n }\n\n sortData(data: DataItem) {\n if (this.scaleType === ScaleType.Linear) {\n return sortLinear(data, 'name');\n } else if (this.scaleType === ScaleType.Time) {\n return sortByTime(data, 'name');\n }\n return sortByDomain(data, 'name', 'asc', this.xScale.domain());\n }\n\n isActive(entry: DataItem): boolean {\n if (!this.activeEntries) return false;\n const item = this.activeEntries.find(d => {\n return entry.name === d.name;\n });\n return item !== undefined;\n }\n\n isInactive(entry: DataItem): boolean {\n if (!this.activeEntries || this.activeEntries.length === 0) return false;\n const item = this.activeEntries.find(d => {\n return entry.name === d.name;\n });\n return item === undefined;\n }\n\n defaultTooltipText({ label, value }: { label: string; value: number }): string {\n return `\n <span class=\"tooltip-label\">${escapeLabel(this.data.name)} • ${escapeLabel(label)}</span>\n <span class=\"tooltip-val\">${value.toLocaleString()}</span>\n `;\n }\n\n updateGradients() {\n this.hasGradient = this.gradient || this.colors.scaleType === ScaleType.Linear;\n\n if (!this.hasGradient) {\n return;\n }\n\n this.gradientId = 'grad' + id().toString();\n this.gradientUrl = `url(#${this.gradientId})`;\n\n if (this.colors.scaleType === ScaleType.Linear) {\n const values = this.data.series.map(d => d.value);\n const max = Math.max(...values);\n const min = Math.min(...values);\n this.gradientStops = this.colors.getLinearGradientStops(max, min);\n } else {\n this.gradientStops = undefined;\n }\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n ContentChild,\n EventEmitter,\n Input,\n Output,\n TemplateRef,\n ViewEncapsulation\n} from '@angular/core';\n\nimport { calculateViewDimensions } from '../common/view-dimensions.helper';\nimport { ColorHelper } from '../common/color.helper';\nimport { BaseChartComponent } from '../common/base-chart.component';\nimport { DataItem } from '../models/chart-data.model';\nimport { ViewDimensions } from '../common/types/view-dimension.interface';\nimport { ScaleType } from '../common/types/scale-type.enum';\n\n@Component({\n selector: 'ngx-charts-advanced-pie-chart',\n template: `\n <div [style.width.px]=\"width\" [style.height.px]=\"height\">\n <div class=\"advanced-pie chart\" [style.width.px]=\"dims.width\" [style.height.px]=\"dims.height\">\n <ngx-charts-chart [view]=\"[width, height]\" [showLegend]=\"false\" [animations]=\"animations\">\n <svg:g [attr.transform]=\"transform\" class=\"pie chart\">\n <svg:g\n ngx-charts-pie-series\n [colors]=\"colors\"\n [series]=\"results\"\n [innerRadius]=\"innerRadius\"\n [activeEntries]=\"activeEntries\"\n [outerRadius]=\"outerRadius\"\n [gradient]=\"gradient\"\n [tooltipDisabled]=\"tooltipDisabled\"\n [tooltipTemplate]=\"tooltipTemplate\"\n [tooltipText]=\"tooltipText\"\n (select)=\"onClick($event)\"\n (activate)=\"onActivate($event)\"\n (deactivate)=\"onDeactivate($event)\"\n [animations]=\"animations\"\n ></svg:g>\n </svg:g>\n </ngx-charts-chart>\n </div>\n <div class=\"advanced-pie-legend-wrapper\" [style.width.px]=\"width - dims.width\" [style.height.px]=\"height\">\n <ngx-charts-advanced-legend\n [data]=\"results\"\n [colors]=\"colors\"\n [width]=\"width - dims.width - margin[1]\"\n [label]=\"label\"\n [animations]=\"animations\"\n [valueFormatting]=\"valueFormatting\"\n [labelFormatting]=\"nameFormatting\"\n [percentageFormatting]=\"percentageFormatting\"\n (select)=\"onClick($event)\"\n (activate)=\"onActivate($event, true)\"\n (deactivate)=\"onDeactivate($event, true)\"\n >\n </ngx-charts-advanced-legend>\n </div>\n </div>\n `,\n styleUrls: ['../common/base-chart.component.scss', './advanced-pie-chart.component.scss'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class AdvancedPieChartComponent extends BaseChartComponent {\n @Input() gradient: boolean;\n @Input() activeEntries: any[] = [];\n @Input() tooltipDisabled: boolean = false;\n @Input() tooltipText: any;\n @Input() label: string = 'Total';\n\n @Output() activate: EventEmitter<any> = new EventEmitter();\n @Output() deactivate: EventEmitter<any> = new EventEmitter();\n\n @ContentChild('tooltipTemplate') tooltipTemplate: TemplateRef<any>;\n\n dims: ViewDimensions;\n domain: string[];\n outerRadius: number;\n innerRadius: number;\n transform: string;\n colors: ColorHelper;\n legendWidth: number;\n margin: number[] = [20, 20, 20, 20];\n\n @Input() valueFormatting: (value: number) => any;\n @Input() nameFormatting: (value: string) => any;\n @Input() percentageFormatting: (value: number) => any;\n\n update(): void {\n super.update();\n\n this.dims = calculateViewDimensions({\n width: (this.width * 4) / 12.0,\n height: this.height,\n margins: this.margin\n });\n\n this.formatDates();\n\n this.domain = this.getDomain();\n this.setColors();\n\n const xOffset = this.dims.width / 2;\n const yOffset = this.margin[0] + this.dims.height / 2;\n this.legendWidth = this.width - this.dims.width - this.margin[1];\n\n this.outerRadius = Math.min(this.dims.width, this.dims.height) / 2.5;\n this.innerRadius = this.outerRadius * 0.75;\n\n this.transform = `translate(${xOffset} , ${yOffset})`;\n }\n\n getDomain(): string[] {\n return this.results.map(d => d.label);\n }\n\n onClick(data: DataItem) {\n this.select.emit(data);\n }\n\n setColors(): void {\n this.colors = new ColorHelper(this.scheme, ScaleType.Ordinal, this.domain, this.customColors);\n }\n\n onActivate(item, fromLegend = false) {\n item = this.results.find(d => {\n if (fromLegend) {\n return d.label === item.name;\n } else {\n return d.name === item.name;\n }\n });\n\n const idx = this.activeEntries.findIndex(d => {\n return d.name === item.name && d.value === item.value && d.series === item.series;\n });\n if (idx > -1) {\n return;\n }\n\n this.activeEntries = [item, ...this.activeEntries];\n this.activate.emit({ value: item, entries: this.activeEntries });\n }\n\n onDeactivate(item, fromLegend = false) {\n item = this.results.find(d => {\n if (fromLegend) {\n return d.label === item.name;\n } else {\n return d.name === item.name;\n }\n });\n\n const idx = this.activeEntries.findIndex(d => {\n return d.name === item.name && d.value === item.value && d.series === item.series;\n });\n\n this.activeEntries.splice(idx, 1);\n this.activeEntries = [...this.activeEntries];\n\n this.deactivate.emit({ value: item, entries: this.activeEntries });\n }\n}\n","import { isPlatformServer } from '@angular/common';\nimport {\n Component,\n Input,\n OnChanges,\n SimpleChanges,\n ChangeDetectionStrategy,\n PLATFORM_ID,\n Inject\n} from '@angular/core';\nimport { arc, DefaultArcObject } from 'd3-shape';\n\nimport { trimLabel } from '../common/trim-label.helper';\nimport { TextAnchor } from '../common/types/text-anchor.enum';\nimport { DataItem } from '../models/chart-data.model';\n\nexport interface PieData extends DefaultArcObject {\n data: DataItem;\n index: number;\n pos: [number, number];\n value: number;\n}\n\n@Component({\n selector: 'g[ngx-charts-pie-label]',\n template: `\n <title>{{ label }}</title>\n <svg:g [attr.transform]=\"attrTransform\" [style.transform]=\"styleTransform\" [style.transition]=\"textTransition\">\n <svg:text\n class=\"pie-label\"\n [class.animation]=\"animations\"\n dy=\".35em\"\n [style.textAnchor]=\"textAnchor()\"\n [style.shapeRendering]=\"'crispEdges'\"\n >\n {{ labelTrim ? trimLabel(label, labelTrimSize) : label }}\n </svg:text>\n </svg:g>\n <svg:path\n [attr.d]=\"line\"\n [attr.stroke]=\"color\"\n fill=\"none\"\n class=\"pie-label-line line\"\n [class.animation]=\"animations\"\n ></svg:path>\n `,\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class PieLabelComponent implements OnChanges {\n @Input() data: PieData;\n @Input() radius: number;\n @Input() label: string;\n @Input() color: string;\n @Input() max: number;\n @Input() value: number;\n @Input() explodeSlices: boolean;\n @Input() animations: boolean = true;\n @Input() labelTrim: boolean = true;\n @Input() labelTrimSize: number = 10;\n\n trimLabel: (label: string, max?: number) => string;\n line: string;\n styleTransform: string;\n attrTransform: string;\n textTransition: string;\n\n constructor(@Inject(PLATFORM_ID) public platformId: any) {\n this.trimLabel = trimLabel;\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n this.setTransforms();\n this.update();\n }\n\n setTransforms() {\n if (isPlatformServer(this.platformId)) {\n this.styleTransform = `translate3d(${this.textX}px,${this.textY}px, 0)`;\n this.attrTransform = `translate(${this.textX},${this.textY})`;\n this.textTransition = !this.animations ? null : 'transform 0.75s';\n } else {\n const isIE = /(edge|msie|trident)/i.test(navigator.userAgent);\n this.styleTransform = isIE ? null : `translate3d(${this.textX}px,${this.textY}px, 0)`;\n this.attrTransform = !isIE ? null : `translate(${this.textX},${this.textY})`;\n this.textTransition = isIE || !this.animations ? null : 'transform 0.75s';\n }\n }\n\n update(): void {\n let startRadius = this.radius;\n if (this.explodeSlices) {\n startRadius = (this.radius * this.value) / this.max;\n }\n\n const innerArc = arc().innerRadius(startRadius).outerRadius(startRadius);\n\n // Calculate innerPos then scale outer position to match label position\n const innerPos = innerArc.centroid(this.data);\n\n let scale = this.data.pos[1] / innerPos[1];\n if (this.data.pos[1] === 0 || innerPos[1] === 0) {\n scale = 1;\n }\n const outerPos = [scale * innerPos[0], scale * innerPos[1]];\n\n this.line = `M${innerPos}L${outerPos}L${this.data.pos}`;\n }\n\n get textX(): number {\n return this.data.pos[0];\n }\n\n get textY(): number {\n return this.data.pos[1];\n }\n\n textAnchor(): TextAnchor {\n return this.midAngle(this.data) < Math.PI ? TextAnchor.Start : TextAnchor.End;\n }\n\n midAngle(d): number {\n return d.startAngle + (d.endAngle - d.startAngle) / 2;\n }\n}\n","import {\n Component,\n Input,\n Output,\n EventEmitter,\n ElementRef,\n SimpleChanges,\n OnChanges,\n ChangeDetectionStrategy\n} from '@angular/core';\nimport { interpolate } from 'd3-interpolate';\nimport { select } from 'd3-selection';\nimport { arc } from 'd3-shape';\nimport { id } from '../utils/id';\nimport { DataItem } from '../models/chart-data.model';\nimport { BarOrientation } from '../common/types/bar-orientation.enum';\n\n@Component({\n selector: 'g[ngx-charts-pie-arc]',\n template: `\n <svg:g class=\"arc-group\">\n <svg:defs *ngIf=\"gradient\">\n <svg:g ngx-charts-svg-radial-gradient [color]=\"fill\" [name]=\"radialGradientId\" [startOpacity]=\"startOpacity\" />\n </svg:defs>\n <svg:path\n [attr.d]=\"path\"\n class=\"arc\"\n [class.active]=\"isActive\"\n [attr.fill]=\"getGradient()\"\n (click)=\"onClick()\"\n (dblclick)=\"onDblClick($event)\"\n (mouseenter)=\"activate.emit(data)\"\n (mouseleave)=\"deactivate.emit(data)\"\n [style.pointer-events]=\"getPointerEvents()\"\n />\n </svg:g>\n `,\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class PieArcComponent implements OnChanges {\n @Input() fill: string;\n @Input() startAngle: number = 0;\n @Input() endAngle: number = Math.PI * 2;\n @Input() innerRadius: number;\n @Input() outerRadius: number;\n @Input() cornerRadius: number = 0;\n @Input() value: number;\n @Input() max: number;\n @Input() data: DataItem;\n @Input() explodeSlices: boolean = false;\n @Input() gradient: boolean = false;\n @Input() animate: boolean = true;\n @Input() pointerEvents: boolean = true;\n @Input() isActive: boolean = false;\n\n @Output() select = new EventEmitter();\n @Output() activate = new EventEmitter();\n @Output() deactivate = new EventEmitter();\n @Output() dblclick = new EventEmitter();\n\n barOrientation = BarOrientation;\n\n element: HTMLElement;\n path: any;\n startOpacity: number;\n radialGradientId: string;\n gradientFill: string;\n initialized: boolean = false;\n\n private _timeout;\n\n constructor(element: ElementRef) {\n this.element = element.nativeElement;\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n this.update();\n }\n\n getGradient(): string {\n return this.gradient ? this.gradientFill : this.fill;\n }\n\n getPointerEvents(): string {\n return this.pointerEvents ? 'auto' : 'none';\n }\n\n update(): void {\n const calc = this.calculateArc();\n this.startOpacity = 0.5;\n this.radialGradientId = 'linearGrad' + id().toString();\n this.gradientFill = `url(#${this.radialGradientId})`;\n\n if (this.animate) {\n if (this.initialized) {\n this.updateAnimation();\n } else {\n this.loadAnimation();\n this.initialized = true;\n }\n } else {\n this.path = calc.startAngle(this.startAngle).endAngle(this.endAngle)();\n }\n }\n\n calculateArc(): any {\n let outerRadius = this.outerRadius;\n if (this.explodeSlices && this.innerRadius === 0) {\n outerRadius = (this.outerRadius * this.value) / this.max;\n }\n\n return arc().innerRadius(this.innerRadius).outerRadius(outerRadius).cornerRadius(this.cornerRadius);\n }\n\n loadAnimation(): void {\n const node = select(this.element)\n .selectAll('.arc')\n .data([{ startAngle: this.startAngle, endAngle: this.endAngle }]);\n\n const calc = this.calculateArc();\n\n node\n .transition()\n .attrTween('d', function (d) {\n (<any>this)._current = (<any>this)._current || d;\n const copyOfD = Object.assign({}, d);\n copyOfD.endAngle = copyOfD.startAngle;\n const interpolater = interpolate(copyOfD, copyOfD);\n (<any>this)._current = interpolater(0);\n return function (t) {\n return calc(interpolater(t));\n };\n })\n .transition()\n .duration(750)\n .attrTween('d', function (d) {\n (<any>this)._current = (<any>this)._current || d;\n const interpolater = interpolate((<any>this)._current, d);\n (<any>this)._current = interpolater(0);\n return function (t) {\n return calc(interpolater(t));\n };\n });\n }\n\n updateAnimation(): void {\n const node = select(this.element)\n .selectAll('.arc')\n .data([{ startAngle: this.startAngle, endAngle: this.endAngle }]);\n\n const calc = this.calculateArc();\n\n node\n .transition()\n .duration(750)\n .attrTween('d', function (d) {\n (<any>this)._current = (<any>this)._current || d;\n const interpolater = interpolate((<any>this)._current, d);\n (<any>this)._current = interpolater(0);\n return function (t) {\n return calc(interpolater(t));\n };\n });\n }\n\n onClick(): void {\n clearTimeout(this._timeout);\n this._timeout = setTimeout(() => this.select.emit(this.data), 200);\n }\n\n onDblClick(event: MouseEvent): void {\n event.preventDefault();\n event.stopPropagation();\n clearTimeout(this._timeout);\n\n this.dblclick.emit({\n data: this.data,\n nativeEvent: event\n });\n }\n}\n","import {\n Component,\n Input,\n Output,\n ViewEncapsulation,\n EventEmitter,\n ChangeDetectionStrategy,\n ContentChild,\n TemplateRef\n} from '@angular/core';\nimport { calculateViewDimensions } from '../common/view-dimensions.helper';\nimport { ColorHelper } from '../common/color.helper';\nimport { BaseChartComponent } from '../common/base-chart.component';\nimport { DataItem } from '../models/chart-data.model';\nimport { LegendOptions, LegendPosition } from '../common/types/legend.model';\nimport { ViewDimensions } from '../common/types/view-dimension.interface';\nimport { ScaleType } from '../common/types/scale-type.enum';\n\n@Component({\n selector: 'ngx-charts-pie-chart',\n template: `\n <ngx-charts-chart\n [view]=\"[width, height]\"\n [showLegend]=\"legend\"\n [legendOptions]=\"legendOptions\"\n [activeEntries]=\"activeEntries\"\n [animations]=\"animations\"\n (legendLabelActivate)=\"onActivate($event, true)\"\n (legendLabelDeactivate)=\"onDeactivate($event, true)\"\n (legendLabelClick)=\"onClick($event)\"\n >\n <svg:g [attr.transform]=\"translation\" class=\"pie-chart chart\">\n <svg:g\n ngx-charts-pie-series\n [colors]=\"colors\"\n [series]=\"data\"\n [showLabels]=\"labels\"\n [labelFormatting]=\"labelFormatting\"\n [trimLabels]=\"trimLabels\"\n [maxLabelLength]=\"maxLabelLength\"\n [activeEntries]=\"activeEntries\"\n [innerRadius]=\"innerRadius\"\n [outerRadius]=\"outerRadius\"\n [explodeSlices]=\"explodeSlices\"\n [gradient]=\"gradient\"\n [animations]=\"animations\"\n [tooltipDisabled]=\"tooltipDisabled\"\n [tooltipTemplate]=\"tooltipTemplate\"\n [tooltipText]=\"tooltipText\"\n (dblclick)=\"dblclick.emit($event)\"\n (select)=\"onClick($event)\"\n (activate)=\"onActivate($event)\"\n (deactivate)=\"onDeactivate($event)\"\n />\n </svg:g>\n </ngx-charts-chart>\n `,\n styleUrls: ['../common/base-chart.component.scss', './pie-chart.component.scss'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class PieChartComponent extends BaseChartComponent {\n @Input() labels: boolean = false;\n @Input() legend: boolean = false;\n @Input() legendTitle: string = 'Legend';\n @Input() legendPosition: LegendPosition = LegendPosition.Right;\n @Input() explodeSlices: boolean = false;\n @Input() doughnut: boolean = false;\n @Input() arcWidth: number = 0.25;\n @Input() gradient: boolean;\n @Input() activeEntries: any[] = [];\n @Input() tooltipDisabled: boolean = false;\n @Input() labelFormatting: any;\n @Input() trimLabels: boolean = true;\n @Input() maxLabelLength: number = 10;\n @Input() tooltipText: any;\n @Output() dblclick = new EventEmitter();\n // optional margins\n @Input() margins: number[];\n @Output() select = new EventEmitter();\n @Output() activate = new EventEmitter();\n @Output() deactivate = new EventEmitter();\n\n @ContentChild('tooltipTemplate') tooltipTemplate: TemplateRef<any>;\n\n translation: string;\n outerRadius: number;\n innerRadius: number;\n data: DataItem[];\n colors: ColorHelper;\n domain: string[];\n dims: ViewDimensions;\n legendOptions: LegendOptions;\n\n update(): void {\n super.update();\n\n if (this.labels && this.hasNoOptionalMarginsSet()) {\n this.margins = [30, 80, 30, 80];\n } else if (!this.labels && this.hasNoOptionalMarginsSet()) {\n // default value for margins\n this.margins = [20, 20, 20, 20];\n }\n\n this.dims = calculateViewDimensions({\n width: this.width,\n height: this.height,\n margins: this.margins,\n showLegend: this.legend,\n legendPosition: this.legendPosition\n });\n\n this.formatDates();\n\n const xOffset = this.margins[3] + this.dims.width / 2;\n const yOffset = this.margins[0] + this.dims.height / 2;\n this.translation = `translate(${xOffset}, ${yOffset})`;\n this.outerRadius = Math.min(this.dims.width, this.dims.height);\n if (this.labels) {\n // make room for labels\n this.outerRadius /= 3;\n } else {\n this.outerRadius /= 2;\n }\n this.innerRadius = 0;\n if (this.doughnut) {\n this.innerRadius = this.outerRadius * (1 - this.arcWidth);\n }\n\n this.domain = this.getDomain();\n\n // sort data according to domain\n this.data = this.results.sort((a, b) => {\n return this.domain.indexOf(a.name) - this.domain.indexOf(b.name);\n });\n\n this.setColors();\n this.legendOptions = this.getLegendOptions();\n }\n\n getDomain(): string[] {\n return this.results.map(d => d.label);\n }\n\n onClick(data: DataItem | string): void {\n this.select.emit(data);\n }\n\n setColors(): void {\n this.colors = new ColorHelper(this.scheme, ScaleType.Ordinal, this.domain, this.customColors);\n }\n\n getLegendOptions(): LegendOptions {\n return {\n scaleType: ScaleType.Ordinal,\n domain: this.domain,\n colors: this.colors,\n title: this.legendTitle,\n position: this.legendPosition\n };\n }\n\n onActivate(item, fromLegend = false): void {\n item = this.results.find(d => {\n if (fromLegend) {\n return d.label === item.name;\n } else {\n return d.name === item.name;\n }\n });\n\n const idx = this.activeEntries.findIndex(d => {\n return d.name === item.name && d.value === item.value && d.series === item.series;\n });\n if (idx > -1) {\n return;\n }\n\n this.activeEntries = [item, ...this.activeEntries];\n this.activate.emit({ value: item, entries: this.activeEntries });\n }\n\n onDeactivate(item, fromLegend = false): void {\n item = this.results.find(d => {\n if (fromLegend) {\n return d.label === item.name;\n } else {\n return d.name === item.name;\n }\n });\n\n const idx = this.activeEntries.findIndex(d => {\n return d.name === item.name && d.value === item.value && d.series === item.series;\n });\n\n this.activeEntries.splice(idx, 1);\n this.activeEntries = [...this.activeEntries];\n\n this.deactivate.emit({ value: item, entries: this.activeEntries });\n }\n\n private hasNoOptionalMarginsSet(): boolean {\n return !this.margins || this.margins.length <= 0;\n }\n}\n","import { scaleBand } from 'd3-scale';\nimport { ViewDimensions } from './types/view-dimension.interface';\nimport { StringOrNumberOrDate } from '../models/chart-data.model';\n\nexport interface GridItem {\n data: GridData;\n height: number;\n width: number;\n x: number;\n y: number;\n}\n\nexport interface GridData {\n extra?: any;\n label: string;\n name: StringOrNumberOrDate;\n percent: number;\n total: number;\n value: number;\n}\n\nexport function gridSize(dims: ViewDimensions, len: number, minWidth: number): [number, number] {\n let rows = 1;\n let cols = len;\n const width = dims.width;\n\n if (width > minWidth) {\n while (width / cols < minWidth) {\n rows += 1;\n cols = Math.ceil(len / rows);\n }\n }\n\n return [cols, rows];\n}\n\nexport function gridLayout(\n dims: ViewDimensions,\n data: GridData[],\n minWidth: number,\n designatedTotal: number\n): GridItem[] {\n const xScale: any = scaleBand<number>();\n const yScale: any = scaleBand<number>();\n const width = dims.width;\n const height = dims.height;\n\n const [columns, rows] = gridSize(dims, data.length, minWidth);\n\n const xDomain = [];\n const yDomain = [];\n for (let i = 0; i < rows; i++) {\n yDomain.push(i);\n }\n for (let i = 0; i < columns; i++) {\n xDomain.push(i);\n }\n xScale.domain(xDomain);\n yScale.domain(yDomain);\n\n xScale.rangeRound([0, width], 0.1);\n yScale.rangeRound([0, height], 0.1);\n\n const res = [];\n const total = designatedTotal ? designatedTotal : getTotal(data);\n const cardWidth = xScale.bandwidth();\n const cardHeight = yScale.bandwidth();\n\n for (let i = 0; i < data.length; i++) {\n res[i] = {};\n res[i].data = {\n name: data[i] ? data[i].name : '',\n value: data[i] ? data[i].value : undefined,\n extra: data[i] ? data[i].extra : undefined,\n label: data[i] ? data[i].label : ''\n };\n res[i].x = xScale(i % columns);\n res[i].y = yScale(Math.floor(i / columns));\n res[i].width = cardWidth;\n res[i].height = cardHeight;\n res[i].data.percent = total > 0 ? res[i].data.value / total : 0;\n res[i].data.total = total;\n }\n return res;\n}\n\nfunction getTotal(results: any): number {\n return results.map(d => (d ? d.value : 0)).reduce((sum, val) => sum + val, 0);\n}\n","import {\n Component,\n Input,\n ViewEncapsulation,\n ChangeDetectionStrategy,\n ContentChild,\n TemplateRef,\n Output,\n EventEmitter\n} from '@angular/core';\nimport { min } from 'd3-array';\nimport { format } from 'd3-format';\n\nimport { calculateViewDimensions } from '../common/view-dimensions.helper';\nimport { ColorHelper } from '../common/color.helper';\nimport { BaseChartComponent } from '../common/base-chart.component';\nimport { trimLabel } from '../common/trim-label.helper';\nimport { gridLayout } from '../common/grid-layout.helper';\nimport { formatLabel } from '../common/label.helper';\nimport { DataItem, PieGridDataItem } from '../models/chart-data.model';\nimport { PlacementTypes } from '../common/tooltip/position';\nimport { StyleTypes } from '../common/tooltip/style.type';\nimport { ViewDimensions } from '../common/types/view-dimension.interface';\nimport { ScaleType } from '../common/types/scale-type.enum';\n\nexport interface PieGridData {\n data: PieGridDataItem;\n height: number;\n width: number;\n x: number;\n y: number;\n}\n\n@Component({\n selector: 'ngx-charts-pie-grid',\n template: `\n <ngx-charts-chart [view]=\"[width, height]\" [showLegend]=\"false\" [animations]=\"animations\">\n <svg:g [attr.transform]=\"transform\" class=\"pie-grid chart\">\n <svg:g *ngFor=\"let series of series\" class=\"pie-grid-item\" [attr.transform]=\"series.transform\">\n <svg:g\n ngx-charts-pie-grid-series\n [colors]=\"series.colors\"\n [data]=\"series.data\"\n [innerRadius]=\"series.innerRadius\"\n [outerRadius]=\"series.outerRadius\"\n [animations]=\"animations\"\n (select)=\"onClick($event)\"\n ngx-tooltip\n [tooltipDisabled]=\"tooltipDisabled\"\n [tooltipPlacement]=\"placementTypes.Top\"\n [tooltipType]=\"styleTypes.tooltip\"\n [tooltipTitle]=\"tooltipTemplate ? undefined : tooltipText({ data: series })\"\n [tooltipTemplate]=\"tooltipTemplate\"\n [tooltipContext]=\"series.data[0].data\"\n (activate)=\"onActivate($event)\"\n (deactivate)=\"onDeactivate($event)\"\n />\n <svg:text\n *ngIf=\"animations\"\n class=\"label percent-label\"\n dy=\"-0.5em\"\n x=\"0\"\n y=\"5\"\n ngx-charts-count-up\n [countTo]=\"series.percent\"\n [countSuffix]=\"'%'\"\n text-anchor=\"middle\"\n ></svg:text>\n <svg:text *ngIf=\"!animations\" class=\"label percent-label\" dy=\"-0.5em\" x=\"0\" y=\"5\" text-anchor=\"middle\">\n {{ series.percent.toLocaleString() }}\n </svg:text>\n <svg:text class=\"label\" dy=\"0.5em\" x=\"0\" y=\"5\" text-anchor=\"middle\">\n {{ series.label }}\n </svg:text>\n <svg:text\n *ngIf=\"animations\"\n class=\"label\"\n dy=\"1.23em\"\n x=\"0\"\n [attr.y]=\"series.outerRadius\"\n text-anchor=\"middle\"\n ngx-charts-count-up\n [countTo]=\"series.total\"\n [countPrefix]=\"label + ': '\"\n ></svg:text>\n <svg:text\n *ngIf=\"!animations\"\n class=\"label\"\n dy=\"1.23em\"\n x=\"0\"\n [attr.y]=\"series.outerRadius\"\n text-anchor=\"middle\"\n >\n {{ label }}: {{ series.total.toLocaleString() }}\n </svg:text>\n </svg:g>\n </svg:g>\n </ngx-charts-chart>\n `,\n styleUrls: ['../common/base-chart.component.scss', './pie-grid.component.scss'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class PieGridComponent extends BaseChartComponent {\n @Input() designatedTotal: number;\n @Input() tooltipDisabled: boolean = false;\n @Input() tooltipText: (o: any) => any;\n @Input() label: string = 'Total';\n @Input() minWidth: number = 150;\n @Input() activeEntries: any[] = [];\n\n @Output() activate: EventEmitter<any> = new EventEmitter();\n @Output() deactivate: EventEmitter<any> = new EventEmitter();\n\n dims: ViewDimensions;\n data: PieGridData[];\n transform: string;\n series: any[];\n domain: string[];\n colorScale: ColorHelper;\n margin: number[] = [20, 20, 20, 20];\n\n placementTypes = PlacementTypes;\n styleTypes = StyleTypes;\n\n @ContentChild('tooltipTemplate') tooltipTemplate: TemplateRef<any>;\n\n update(): void {\n super.update();\n\n this.dims = calculateViewDimensions({\n width: this.width,\n height: this.height,\n margins: this.margin\n });\n\n this.formatDates();\n\n this.domain = this.getDomain();\n\n this.data = gridLayout(this.dims, this.results, this.minWidth, this.designatedTotal);\n this.transform = `translate(${this.margin[3]} , ${this.margin[0]})`;\n\n this.series = this.getSeries();\n this.setColors();\n\n this.tooltipText = this.tooltipText || this.defaultTooltipText;\n }\n\n defaultTooltipText({ data }): string {\n const label = trimLabel(formatLabel(data.name));\n const val = data.value.toLocaleString();\n return `\n <span class=\"tooltip-label\">${label}</span>\n <span class=\"tooltip-val\">${val}</span>\n `;\n }\n\n getDomain(): string[] {\n return this.results.map(d => d.label);\n }\n\n getSeries(): any[] {\n const total = this.designatedTotal ? this.designatedTotal : this.getTotal();\n\n return this.data.map(d => {\n const baselineLabelHeight = 20;\n const padding = 10;\n const name = d.data.name;\n const label = formatLabel(name);\n const value = d.data.value;\n const radius = min([d.width - padding, d.height - baselineLabelHeight]) / 2 - 5;\n const innerRadius = radius * 0.9;\n\n let count = 0;\n const colors = () => {\n count += 1;\n if (count === 1) {\n return 'rgba(100,100,100,0.3)';\n } else {\n return this.colorScale.getColor(label);\n }\n };\n\n const xPos = d.x + (d.width - padding) / 2;\n const yPos = d.y + (d.height - baselineLabelHeight) / 2;\n\n return {\n transform: `translate(${xPos}, ${yPos})`,\n colors,\n innerRadius,\n outerRadius: radius,\n name,\n label: trimLabel(label),\n total: value,\n value,\n percent: format('.1%')(d.data.percent),\n data: [\n d,\n {\n data: {\n other: true,\n value: total - value,\n name: d.data.name\n }\n }\n ]\n };\n });\n }\n\n getTotal(): any {\n return this.results.map(d => d.value).reduce((sum, d) => sum + d, 0);\n }\n\n onClick(data: DataItem): void {\n this.select.emit(data);\n }\n\n setColors(): void {\n this.colorScale = new ColorHelper(this.scheme, ScaleType.Ordinal, this.domain, this.customColors);\n }\n\n onActivate(item, fromLegend = false) {\n item = this.results.find(d => {\n if (fromLegend) {\n return d.label === item.name;\n } else {\n return d.name === item.name;\n }\n });\n\n const idx = this.activeEntries.findIndex(d => {\n return d.name === item.name && d.value === item.value && d.series === item.series;\n });\n if (idx > -1) {\n return;\n }\n\n this.activeEntries = [item, ...this.activeEntries];\n this.activate.emit({ value: item, entries: this.activeEntries });\n }\n\n onDeactivate(item, fromLegend = false) {\n item = this.results.find(d => {\n if (fromLegend) {\n return d.label === item.name;\n } else {\n return d.name === item.name;\n }\n });\n\n const idx = this.activeEntries.findIndex(d => {\n return d.name === item.name && d.value === item.value && d.series === item.series;\n });\n\n this.activeEntries.splice(idx, 1);\n this.activeEntries = [...this.activeEntries];\n\n this.deactivate.emit({ value: item, entries: this.activeEntries });\n }\n}\n","import {\n Component,\n Input,\n Output,\n EventEmitter,\n ElementRef,\n OnChanges,\n SimpleChanges,\n ChangeDetectionStrategy\n} from '@angular/core';\nimport { pie } from 'd3-shape';\nimport { PieGridDataItem } from '../models/chart-data.model';\nimport { PieGridData } from './pie-grid.component';\n\nexport interface PieArc {\n animate: boolean;\n class: string;\n data: PieGridDataItem;\n endAngle: number;\n fill: string;\n pointerEvents: boolean;\n startAngle: number;\n}\n\n@Component({\n selector: 'g[ngx-charts-pie-grid-series]',\n template: `\n <svg:g class=\"pie-grid-arcs\">\n <svg:g\n ngx-charts-pie-arc\n *ngFor=\"let arc of arcs; trackBy: trackBy\"\n [attr.class]=\"arc.class\"\n [startAngle]=\"arc.startAngle\"\n [endAngle]=\"arc.endAngle\"\n [innerRadius]=\"innerRadius\"\n [outerRadius]=\"outerRadius\"\n [fill]=\"color(arc)\"\n [value]=\"arc.data.value\"\n [data]=\"arc.data\"\n [gradient]=\"false\"\n [pointerEvents]=\"arc.pointerEvents\"\n [animate]=\"arc.animate\"\n (select)=\"onClick($event)\"\n (activate)=\"activate.emit($event)\"\n (deactivate)=\"deactivate.emit($event)\"\n ></svg:g>\n </svg:g>\n `,\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class PieGridSeriesComponent implements OnChanges {\n @Input() colors;\n @Input() data: PieGridData[];\n @Input() innerRadius = 70;\n @Input() outerRadius = 80;\n @Input() animations: boolean = true;\n\n @Output() select = new EventEmitter();\n @Output() activate = new EventEmitter();\n @Output() deactivate = new EventEmitter();\n\n element: HTMLElement;\n layout: any;\n arcs: PieArc[];\n\n constructor(element: ElementRef) {\n this.element = element.nativeElement;\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n this.update();\n }\n\n update(): void {\n this.layout = pie<any, any>()\n .value(d => d.data.value)\n .sort(null);\n\n this.arcs = this.getArcs();\n }\n\n getArcs(): PieArc[] {\n return this.layout(this.data).map((arc, index) => {\n const label = arc.data.data.name;\n const other = arc.data.data.other;\n\n if (index === 0) {\n arc.startAngle = 0;\n }\n\n const color = this.colors(label);\n return {\n data: arc.data.data,\n class: 'arc ' + 'arc' + index,\n fill: color,\n startAngle: other ? 0 : arc.startAngle,\n endAngle: arc.endAngle,\n animate: this.animations && !other,\n pointerEvents: !other\n };\n });\n }\n\n onClick(data): void {\n this.select.emit(this.data[0].data);\n }\n\n trackBy(index, item): string {\n return item.data.name;\n }\n\n label(arc): string {\n return arc.data.name;\n }\n\n color(arc): string {\n return this.colors(this.label(arc));\n }\n}\n","import {\n Component,\n SimpleChanges,\n Input,\n Output,\n EventEmitter,\n OnChanges,\n ChangeDetectionStrategy,\n TemplateRef\n} from '@angular/core';\nimport { max } from 'd3-array';\nimport { arc, pie } from 'd3-shape';\nimport { ColorHelper } from '../common/color.helper';\n\nimport { formatLabel, escapeLabel } from '../common/label.helper';\nimport { DataItem } from '../models/chart-data.model';\nimport { PieData } from './pie-label.component';\nimport { PlacementTypes } from '../common/tooltip/position';\nimport { StyleTypes } from '../common/tooltip/style.type';\nimport { ViewDimensions } from '../common/types/view-dimension.interface';\n\n@Component({\n selector: 'g[ngx-charts-pie-series]',\n template: `\n <svg:g *ngFor=\"let arc of data; trackBy: trackBy\">\n <svg:g\n ngx-charts-pie-label\n *ngIf=\"labelVisible(arc)\"\n [data]=\"arc\"\n [radius]=\"outerRadius\"\n [color]=\"color(arc)\"\n [label]=\"labelText(arc)\"\n [labelTrim]=\"trimLabels\"\n [labelTrimSize]=\"maxLabelLength\"\n [max]=\"max\"\n [value]=\"arc.value\"\n [explodeSlices]=\"explodeSlices\"\n [animations]=\"animations\"\n ></svg:g>\n <svg:g\n ngx-charts-pie-arc\n [startAngle]=\"arc.startAngle\"\n [endAngle]=\"arc.endAngle\"\n [innerRadius]=\"innerRadius\"\n [outerRadius]=\"outerRadius\"\n [fill]=\"color(arc)\"\n [value]=\"arc.data.value\"\n [gradient]=\"gradient\"\n [data]=\"arc.data\"\n [max]=\"max\"\n [explodeSlices]=\"explodeSlices\"\n [isActive]=\"isActive(arc.data)\"\n [animate]=\"animations\"\n (select)=\"onClick($event)\"\n (activate)=\"activate.emit($event)\"\n (deactivate)=\"deactivate.emit($event)\"\n (dblclick)=\"dblclick.emit($event)\"\n ngx-tooltip\n [tooltipDisabled]=\"tooltipDisabled\"\n [tooltipPlacement]=\"placementTypes.Top\"\n [tooltipType]=\"styleTypes.tooltip\"\n [tooltipTitle]=\"getTooltipTitle(arc)\"\n [tooltipTemplate]=\"tooltipTemplate\"\n [tooltipContext]=\"arc.data\"\n ></svg:g>\n </svg:g>\n `,\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class PieSeriesComponent implements OnChanges {\n @Input() colors: ColorHelper;\n @Input() series: DataItem[] = [];\n @Input() dims: ViewDimensions;\n @Input() innerRadius: number = 60;\n @Input() outerRadius: number = 80;\n @Input() explodeSlices: boolean;\n @Input() showLabels: boolean;\n @Input() gradient: boolean;\n @Input() activeEntries: any[];\n @Input() labelFormatting: any;\n @Input() trimLabels: boolean = true;\n @Input() maxLabelLength: number = 10;\n @Input() tooltipText: (o: any) => any;\n @Input() tooltipDisabled: boolean = false;\n @Input() tooltipTemplate: TemplateRef<any>;\n @Input() animations: boolean = true;\n\n @Output() select = new EventEmitter();\n @Output() activate = new EventEmitter();\n @Output() deactivate = new EventEmitter();\n @Output() dblclick = new EventEmitter();\n\n max: number;\n data: PieData[];\n\n placementTypes = PlacementTypes;\n styleTypes = StyleTypes;\n\n ngOnChanges(changes: SimpleChanges): void {\n this.update();\n }\n\n update(): void {\n const pieGenerator = pie<any, any>()\n .value(d => d.value)\n .sort(null);\n\n const arcData = pieGenerator(this.series);\n\n this.max = max(arcData, d => {\n return d.value;\n });\n\n this.data = this.calculateLabelPositions(arcData);\n this.tooltipText = this.tooltipText || this.defaultTooltipText;\n }\n\n midAngle(d): number {\n return d.startAngle + (d.endAngle - d.startAngle) / 2;\n }\n\n outerArc(): any {\n const factor = 1.5;\n\n return arc()\n .innerRadius(this.outerRadius * factor)\n .outerRadius(this.outerRadius * factor);\n }\n\n calculateLabelPositions(pieData): any {\n const factor = 1.5;\n const minDistance = 10;\n const labelPositions = pieData;\n\n labelPositions.forEach(d => {\n d.pos = this.outerArc().centroid(d);\n d.pos[0] = factor * this.outerRadius * (this.midAngle(d) < Math.PI ? 1 : -1);\n });\n\n for (let i = 0; i < labelPositions.length - 1; i++) {\n const a = labelPositions[i];\n if (!this.labelVisible(a)) {\n continue;\n }\n\n for (let j = i + 1; j < labelPositions.length; j++) {\n const b = labelPositions[j];\n if (!this.labelVisible(b)) {\n continue;\n }\n // if they're on the same side\n if (b.pos[0] * a.pos[0] > 0) {\n // if they're overlapping\n const o = minDistance - Math.abs(b.pos[1] - a.pos[1]);\n if (o > 0) {\n // push the second up or down\n b.pos[1] += Math.sign(b.pos[0]) * o;\n }\n }\n }\n }\n\n return labelPositions;\n }\n\n labelVisible(myArc): boolean {\n return this.showLabels && myArc.endAngle - myArc.startAngle > Math.PI / 30;\n }\n\n getTooltipTitle(a) {\n return this.tooltipTemplate ? undefined : this.tooltipText(a);\n }\n\n labelText(myArc): string {\n if (this.labelFormatting) {\n return this.labelFormatting(myArc.data.name);\n }\n return this.label(myArc);\n }\n\n label(myArc): string {\n return formatLabel(myArc.data.name);\n }\n\n defaultTooltipText(myArc): string {\n const label = this.label(myArc);\n const val = formatLabel(myArc.data.value);\n\n return `\n <span class=\"tooltip-label\">${escapeLabel(label)}</span>\n <span class=\"tooltip-val\">${val}</span>\n `;\n }\n\n color(myArc): any {\n return this.colors.getColor(this.label(myArc));\n }\n\n trackBy(index, item): string {\n return item.data.name;\n }\n\n onClick(data): void {\n this.select.emit(data);\n }\n\n isActive(entry): boolean {\n if (!this.activeEntries) return false;\n const item = this.activeEntries.find(d => {\n return entry.name === d.name && entry.series === d.series;\n });\n return item !== undefined;\n }\n}\n","import { NgModule } from '@angular/core';\nimport { ChartCommonModule } from '../common/chart-common.module';\nimport { AdvancedPieChartComponent } from './advanced-pie-chart.component';\nimport { PieLabelComponent } from './pie-label.component';\nimport { PieArcComponent } from './pie-arc.component';\nimport { PieChartComponent } from './pie-chart.component';\nimport { PieGridComponent } from './pie-grid.component';\nimport { PieGridSeriesComponent } from './pie-grid-series.component';\nimport { PieSeriesComponent } from './pie-series.component';\n\n@NgModule({\n imports: [ChartCommonModule],\n declarations: [\n AdvancedPieChartComponent,\n PieLabelComponent,\n PieArcComponent,\n PieChartComponent,\n PieGridComponent,\n PieGridSeriesComponent,\n PieSeriesComponent\n ],\n exports: [\n AdvancedPieChartComponent,\n PieLabelComponent,\n PieArcComponent,\n PieChartComponent,\n PieGridComponent,\n PieGridSeriesComponent,\n PieSeriesComponent\n ]\n})\nexport class PieChartModule {}\n","import { NgModule } from '@angular/core';\nimport { ChartCommonModule } from '../common/chart-common.module';\nimport { PolarChartComponent } from './polar-chart.component';\nimport { PolarSeriesComponent } from './polar-series.component';\nimport { PieChartModule } from '../pie-chart/pie-chart.module';\nimport { LineChartModule } from '../line-chart/line-chart.module';\n\n@NgModule({\n imports: [ChartCommonModule, PieChartModule, LineChartModule],\n declarations: [PolarChartComponent, PolarSeriesComponent],\n exports: [PolarChartComponent, PolarSeriesComponent]\n})\nexport class PolarChartModule {}\n","export function calculateTextWidth(fontFamilyKey: {}, text: string, defaultWidth = 8) {\n return text.split('').reduce((acc, curr) => {\n const width = fontFamilyKey[curr] || defaultWidth;\n return acc + width;\n }, 0);\n}\n","export const VERDANA_FONT_WIDTHS_16_PX = {\n '0': 10,\n '1': 10,\n '2': 10,\n '3': 10,\n '4': 10,\n '5': 10,\n '6': 10,\n '7': 10,\n '8': 10,\n '9': 10,\n A: 11,\n B: 11,\n C: 11,\n D: 12,\n E: 10,\n F: 9,\n G: 12,\n H: 12,\n I: 7,\n J: 7,\n K: 11,\n L: 9,\n M: 13,\n N: 12,\n O: 13,\n P: 10,\n Q: 13,\n R: 11,\n S: 11,\n T: 10,\n U: 12,\n V: 11,\n W: 16,\n X: 11,\n Y: 10,\n Z: 11,\n a: 10,\n b: 10,\n c: 8,\n d: 10,\n e: 10,\n f: 6,\n g: 10,\n h: 10,\n i: 4,\n j: 6,\n k: 9,\n l: 4,\n m: 16,\n n: 10,\n o: 10,\n p: 10,\n q: 10,\n r: 7,\n s: 8,\n t: 6,\n u: 10,\n v: 9,\n w: 13,\n x: 9,\n y: 9,\n z: 8,\n '!': 6,\n '@': 16,\n '#': 13,\n $: 10,\n '%': 17,\n '^': 13,\n '&': 12,\n '*': 10,\n '(': 7,\n ')': 7,\n _: 10,\n '-': 7,\n '+': 13,\n '=': 13,\n ',': 6,\n '.': 6,\n '/': 7,\n \"'\": 4,\n ':': 7,\n '|': 7,\n '?': 9,\n ';': 7,\n '<': 13,\n '>': 13\n};\n","import {\n Component,\n Input,\n Output,\n EventEmitter,\n ElementRef,\n SimpleChanges,\n OnChanges,\n ViewChild,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n NgZone,\n OnDestroy,\n PLATFORM_ID,\n Inject\n} from '@angular/core';\nimport { trimLabel } from '../common/trim-label.helper';\nimport { roundedRect } from '../common/shape.helper';\nimport { escapeLabel } from '../common/label.helper';\nimport { decimalChecker, count } from '../common/count/count.helper';\nimport { GridData } from '../common/grid-layout.helper';\nimport { isPlatformBrowser, isPlatformServer } from '@angular/common';\nimport { calculateTextWidth } from '../utils/calculate-width';\nimport { VERDANA_FONT_WIDTHS_16_PX } from '../common/constants/font-widths';\n\n@Component({\n selector: 'g[ngx-charts-card]',\n template: `\n <svg:g [attr.transform]=\"transform\" class=\"cell\" (click)=\"onClick()\">\n <svg:rect class=\"card\" [style.fill]=\"color\" [attr.width]=\"cardWidth\" [attr.height]=\"cardHeight\" rx=\"3\" ry=\"3\" />\n <svg:path\n *ngIf=\"bandColor && bandColor !== color\"\n class=\"card-band\"\n [attr.fill]=\"bandColor\"\n [attr.transform]=\"transformBand\"\n stroke=\"none\"\n [attr.d]=\"bandPath\"\n />\n <title>{{ label }}</title>\n <svg:foreignObject\n class=\"trimmed-label\"\n x=\"5\"\n [attr.x]=\"textPadding[3]\"\n [attr.y]=\"cardHeight - textPadding[2]\"\n [attr.width]=\"textWidth\"\n [attr.height]=\"labelFontSize + textPadding[2]\"\n alignment-baseline=\"hanging\"\n >\n <xhtml:p\n [style.color]=\"textColor\"\n [style.fontSize.px]=\"labelFontSize\"\n [style.lineHeight.px]=\"labelFontSize\"\n [innerHTML]=\"formattedLabel\"\n >\n </xhtml:p>\n </svg:foreignObject>\n <svg:text\n #textEl\n class=\"value-text\"\n [attr.x]=\"textPadding[3]\"\n [attr.y]=\"textPadding[0]\"\n [style.fill]=\"textColor\"\n text-anchor=\"start\"\n alignment-baseline=\"hanging\"\n [style.font-size.pt]=\"textFontSize\"\n >\n {{ value }}\n </svg:text>\n </svg:g>\n `,\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class CardComponent implements OnChanges, OnDestroy {\n @Input() color: string;\n @Input() bandColor: string;\n @Input() textColor: string;\n @Input() x: number;\n @Input() y: number;\n @Input() width: number;\n @Input() height: number;\n @Input() label: string;\n @Input() data: GridData;\n @Input() medianSize: number;\n @Input() valueFormatting: any;\n @Input() labelFormatting: any;\n @Input() animations: boolean = true;\n\n @Output() select = new EventEmitter();\n\n @ViewChild('textEl', { static: false }) textEl: ElementRef;\n\n element: HTMLElement;\n value: string = '';\n transform: string;\n formattedLabel: string;\n cardWidth: number;\n cardHeight: number;\n textWidth: number;\n textFontSize: number = 12;\n textTransform: string = '';\n initialized: boolean = false;\n animationReq: number;\n\n bandHeight: number = 10;\n transformBand: string;\n textPadding: number[] = [10, 20, 5, 20];\n labelFontSize: number = 15;\n\n bandPath: string;\n\n constructor(\n element: ElementRef,\n private cd: ChangeDetectorRef,\n private zone: NgZone,\n @Inject(PLATFORM_ID) private platformId: any\n ) {\n this.element = element.nativeElement;\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n this.update();\n }\n\n ngOnInit() {\n if (isPlatformServer(this.platformId)) {\n this.scaleTextSSR();\n }\n }\n\n ngOnDestroy(): void {\n if (isPlatformBrowser(this.platformId)) {\n cancelAnimationFrame(this.animationReq);\n }\n }\n\n update(): void {\n this.zone.run(() => {\n const hasValue = this.data && typeof this.data.value !== 'undefined';\n const valueFormatting = this.valueFormatting || (card => card.value.toLocaleString());\n const labelFormatting = this.labelFormatting || (card => escapeLabel(trimLabel(card.label, 55)));\n\n this.transform = `translate(${this.x} , ${this.y})`;\n\n this.textWidth = Math.max(0, this.width) - this.textPadding[1] - this.textPadding[3];\n this.cardWidth = Math.max(0, this.width);\n this.cardHeight = Math.max(0, this.height);\n\n this.label = this.label ? this.label : (this.data.name as any);\n\n const cardData = {\n label: this.label,\n data: this.data,\n value: this.data.value\n };\n\n this.formattedLabel = labelFormatting(cardData);\n this.transformBand = `translate(0 , ${this.cardHeight - this.bandHeight})`;\n\n const value = hasValue ? valueFormatting(cardData) : '';\n\n this.value = this.paddedValue(value);\n this.setPadding();\n\n this.bandPath = roundedRect(0, 0, this.cardWidth, this.bandHeight, 3, [false, false, true, true]);\n\n setTimeout(() => {\n if (isPlatformBrowser(this.platformId)) {\n this.scaleText();\n }\n this.value = value;\n if (hasValue && !this.initialized) {\n setTimeout(() => this.startCount(), 20);\n }\n }, 8);\n });\n }\n\n paddedValue(value: string): string {\n if (this.medianSize && this.medianSize > value.length) {\n value += '\\u2007'.repeat(this.medianSize - value.length);\n }\n return value;\n }\n\n startCount(): void {\n if (!this.initialized && this.animations) {\n cancelAnimationFrame(this.animationReq);\n\n const val = this.data.value;\n const decs = decimalChecker(val);\n const valueFormatting = this.valueFormatting || (card => card.value.toLocaleString());\n\n const callback = ({ value, finished }) => {\n this.zone.run(() => {\n value = finished ? val : value;\n this.value = valueFormatting({ label: this.label, data: this.data, value });\n if (!finished) {\n this.value = this.paddedValue(this.value);\n }\n this.cd.markForCheck();\n });\n };\n\n this.animationReq = count(0, val, decs, 1, callback);\n this.initialized = true;\n }\n }\n\n scaleText(): void {\n this.zone.run(() => {\n const { width, height } = this.textEl.nativeElement.getBoundingClientRect();\n if (width === 0 || height === 0) {\n return;\n }\n\n const textPadding = (this.textPadding[1] = this.textPadding[3] = this.cardWidth / 8);\n const availableWidth = this.cardWidth - 2 * textPadding;\n const availableHeight = this.cardHeight / 3;\n\n const resizeScale = Math.min(availableWidth / width, availableHeight / height);\n this.textFontSize = Math.floor(this.textFontSize * resizeScale);\n this.labelFontSize = Math.min(this.textFontSize, 15);\n\n this.setPadding();\n this.cd.markForCheck();\n });\n }\n\n scaleTextSSR() {\n const width = calculateTextWidth(VERDANA_FONT_WIDTHS_16_PX, this.value, 10);\n const height = 18;\n const textPadding = (this.textPadding[1] = this.textPadding[3] = this.cardWidth / 8);\n const availableWidth = this.cardWidth - 2 * textPadding;\n const availableHeight = this.cardHeight / 3;\n\n const resizeScale = Math.min(availableWidth / width, availableHeight / height);\n\n this.textFontSize = Math.floor(this.textFontSize * resizeScale);\n this.labelFontSize = Math.min(this.textFontSize, 15);\n\n this.setPadding();\n }\n\n setPadding() {\n this.textPadding[1] = this.textPadding[3] = this.cardWidth / 8;\n const padding = this.cardHeight / 2;\n this.textPadding[0] = padding - this.textFontSize - this.labelFontSize / 2;\n this.textPadding[2] = padding - this.labelFontSize;\n }\n\n onClick(): void {\n this.select.emit(this.data);\n }\n}\n","import * as d3_color from 'd3-color';\n\n/**\n * Converts a hex to RGB\n *\n * @export\n */\nexport function hexToRgb(value: string): any {\n // deprecated, use d3.color()\n return d3_color.rgb(value);\n}\n\n/**\n * Accepts a color (string) and returns a inverted hex color (string)\n * http://stackoverflow.com/questions/9600295/automatically-change-text-color-to-assure-readability\n *\n * @export\n */\nexport function invertColor(value: string): string {\n const color = d3_color.rgb(value);\n const { r, g, b, opacity } = color;\n if (opacity === 0) {\n return color.toString();\n }\n const yiq = (r * 299 + g * 587 + b * 114) / 1000;\n const depth = yiq >= 128 ? -0.8 : 0.8;\n\n return shadeRGBColor(color, depth);\n}\n\n/**\n * Given a rgb, it will darken/lighten\n * http://stackoverflow.com/questions/5560248/programmatically-lighten-or-darken-a-hex-color-or-rgb-and-blend-colors\n *\n * @export\n * @param \\{ r, g, b }\n */\nexport function shadeRGBColor({ r, g, b }, percent: number): string {\n const t = percent < 0 ? 0 : 255;\n const p = percent < 0 ? percent * -1 : percent;\n\n r = Math.round((t - r) * p) + r;\n g = Math.round((t - g) * p) + g;\n b = Math.round((t - b) * p) + b;\n\n return `rgb(${r}, ${g}, ${b})`;\n}\n","import {\n Component,\n Input,\n Output,\n EventEmitter,\n OnChanges,\n SimpleChanges,\n ChangeDetectionStrategy\n} from '@angular/core';\nimport { invertColor } from '../utils/color-utils';\nimport { GridItem, GridData } from '../common/grid-layout.helper';\nimport { ColorHelper } from '../common/color.helper';\nimport { ViewDimensions } from '../common/types/view-dimension.interface';\n\nexport interface CardModel extends GridItem {\n color: string;\n tooltipText: string;\n textColor: string;\n bandColor: string;\n label: string;\n}\n\n@Component({\n selector: 'g[ngx-charts-card-series]',\n template: `\n <svg:rect\n *ngFor=\"let c of emptySlots; trackBy: trackBy\"\n class=\"card-empty\"\n [attr.x]=\"c.x\"\n [attr.y]=\"c.y\"\n [style.fill]=\"emptyColor\"\n [attr.width]=\"c.width\"\n [attr.height]=\"c.height\"\n rx=\"3\"\n ry=\"3\"\n />\n <svg:g\n ngx-charts-card\n *ngFor=\"let c of cards; trackBy: trackBy\"\n [x]=\"c.x\"\n [y]=\"c.y\"\n [width]=\"c.width\"\n [height]=\"c.height\"\n [color]=\"c.color\"\n [bandColor]=\"c.bandColor\"\n [textColor]=\"c.textColor\"\n [data]=\"c.data\"\n [label]=\"c.label\"\n [medianSize]=\"medianSize\"\n [valueFormatting]=\"valueFormatting\"\n [labelFormatting]=\"labelFormatting\"\n [animations]=\"animations\"\n (select)=\"onClick($event)\"\n />\n `,\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class CardSeriesComponent implements OnChanges {\n @Input() data: CardModel[];\n @Input() dims: ViewDimensions;\n @Input() colors: ColorHelper;\n @Input() innerPadding: number = 15;\n\n @Input() cardColor: string;\n @Input() bandColor: string;\n @Input() emptyColor = 'rgba(0, 0, 0, 0)';\n @Input() textColor: string;\n @Input() valueFormatting: any;\n @Input() labelFormatting: any;\n @Input() animations: boolean = true;\n\n @Output() select = new EventEmitter();\n\n cards: CardModel[];\n emptySlots: any[];\n medianSize: number;\n\n ngOnChanges(changes: SimpleChanges): void {\n this.update();\n }\n\n update(): void {\n if (this.data.length > 2) {\n const valueFormatting = this.valueFormatting || (card => card.value.toLocaleString());\n\n const sortedLengths = this.data\n .map(d => {\n const hasValue = d && d.data && typeof d.data.value !== 'undefined' && d.data.value !== null;\n return hasValue\n ? valueFormatting({\n data: d.data,\n label: d ? d.data.name : '',\n value: d && d.data ? d.data.value : ''\n }).length\n : 0;\n })\n .sort((a, b) => b - a);\n const idx = Math.ceil(this.data.length / 2);\n this.medianSize = sortedLengths[idx];\n }\n\n const cards = this.getCards();\n this.cards = cards.filter(d => d.data.value !== null);\n this.emptySlots = cards.filter(d => d.data.value === null);\n }\n\n getCards(): CardModel[] {\n const yPadding =\n typeof this.innerPadding === 'number' ? this.innerPadding : this.innerPadding[0] + this.innerPadding[2];\n const xPadding =\n typeof this.innerPadding === 'number' ? this.innerPadding : this.innerPadding[1] + this.innerPadding[3];\n\n return this.data.map((d, index) => {\n let label = d.data.name as any;\n if (label && label.constructor.name === 'Date') {\n label = label.toLocaleDateString();\n } else {\n label = label ? label.toLocaleString() : label;\n }\n\n const value = d.data.value;\n const valueColor = label ? this.colors.getColor(label) : this.emptyColor;\n const color = this.cardColor || valueColor || '#000';\n return {\n x: d.x,\n y: d.y,\n width: d.width - xPadding,\n height: d.height - yPadding,\n color,\n bandColor: this.bandColor || valueColor,\n textColor: this.textColor || invertColor(color),\n label,\n data: d.data,\n tooltipText: `${label}: ${value}`\n };\n });\n }\n\n trackBy(index, card): string {\n return card.label;\n }\n\n onClick(data): void {\n this.select.emit(data);\n }\n}\n","import { Component, ViewEncapsulation, ChangeDetectionStrategy, Input } from '@angular/core';\nimport { BaseChartComponent } from '../common/base-chart.component';\nimport { calculateViewDimensions } from '../common/view-dimensions.helper';\nimport { ColorHelper } from '../common/color.helper';\nimport { gridLayout, gridSize } from '../common/grid-layout.helper';\nimport { CardModel } from './card-series.component';\nimport { ViewDimensions } from '../common/types/view-dimension.interface';\nimport { ScaleType } from '../common/types/scale-type.enum';\n\n@Component({\n selector: 'ngx-charts-number-card',\n template: `\n <ngx-charts-chart [view]=\"[width, height]\" [showLegend]=\"false\" [animations]=\"animations\">\n <svg:g [attr.transform]=\"transform\" class=\"number-card chart\" [class.clickable]=\"clickable\">\n <svg:g\n ngx-charts-card-series\n [colors]=\"colors\"\n [cardColor]=\"cardColor\"\n [bandColor]=\"bandColor\"\n [textColor]=\"textColor\"\n [emptyColor]=\"emptyColor\"\n [data]=\"data\"\n [dims]=\"dims\"\n [innerPadding]=\"innerPadding\"\n [valueFormatting]=\"valueFormatting\"\n [labelFormatting]=\"labelFormatting\"\n [animations]=\"animations\"\n (select)=\"onClick($event)\"\n />\n </svg:g>\n </ngx-charts-chart>\n `,\n styleUrls: ['../common/base-chart.component.scss', './card.component.scss'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class NumberCardComponent extends BaseChartComponent {\n @Input() cardColor: string;\n @Input() bandColor: string;\n @Input() emptyColor: string = 'rgba(0, 0, 0, 0)';\n @Input() innerPadding: number = 15;\n @Input() textColor: string;\n @Input() valueFormatting: any;\n @Input() labelFormatting: any;\n @Input() designatedTotal: number;\n\n dims: ViewDimensions;\n data: CardModel[];\n colors: ColorHelper;\n transform: string;\n domain: any[];\n margin: number[] = [10, 10, 10, 10];\n\n get clickable(): boolean {\n return !!this.select.observers.length;\n }\n\n update(): void {\n super.update();\n\n this.dims = calculateViewDimensions({\n width: this.width,\n height: this.height,\n margins: this.margin\n });\n\n this.formatDates();\n\n this.domain = this.getDomain();\n\n this.setColors();\n this.transform = `translate(${this.dims.xOffset} , ${this.margin[0]})`;\n\n const size = gridSize(this.dims, this.results.length, 150);\n const N = size[0] * size[1];\n\n const data = this.results.slice();\n\n while (data.length < N) {\n data.push({ value: null });\n }\n\n this.data = gridLayout(this.dims, data, 150, this.designatedTotal) as any;\n }\n\n getDomain(): string[] {\n return this.results.map(d => d.label);\n }\n\n onClick(data): void {\n this.select.emit(data);\n }\n\n setColors(): void {\n this.colors = new ColorHelper(this.scheme, ScaleType.Ordinal, this.domain, this.customColors);\n }\n}\n","import { NgModule } from '@angular/core';\nimport { ChartCommonModule } from '../common/chart-common.module';\nimport { CardComponent } from './card.component';\nimport { CardSeriesComponent } from './card-series.component';\nimport { NumberCardComponent } from './number-card.component';\n\n@NgModule({\n imports: [ChartCommonModule],\n declarations: [CardComponent, CardSeriesComponent, NumberCardComponent],\n exports: [CardComponent, CardSeriesComponent, NumberCardComponent]\n})\nexport class NumberCardModule {}\n","import { Component, Input, Output, EventEmitter, ElementRef, OnChanges, ChangeDetectionStrategy } from '@angular/core';\nimport { select } from 'd3-selection';\nimport { invertColor } from '../utils/color-utils';\nimport { trimLabel } from '../common/trim-label.helper';\nimport { escapeLabel } from '../common/label.helper';\nimport { id } from '../utils/id';\nimport { DataItem } from '../models/chart-data.model';\nimport { Gradient } from '../common/types/gradient.interface';\nimport { BarOrientation } from '../common/types/bar-orientation.enum';\n\n@Component({\n selector: 'g[ngx-charts-tree-map-cell]',\n template: `\n <svg:g>\n <defs *ngIf=\"gradient\">\n <svg:g\n ngx-charts-svg-linear-gradient\n [orientation]=\"orientation.Vertical\"\n [name]=\"gradientId\"\n [stops]=\"gradientStops\"\n />\n </defs>\n <svg:rect\n [attr.fill]=\"gradient ? gradientUrl : fill\"\n [attr.width]=\"width\"\n [attr.height]=\"height\"\n [attr.x]=\"x\"\n [attr.y]=\"y\"\n class=\"cell\"\n (click)=\"onClick()\"\n />\n <svg:foreignObject\n *ngIf=\"width >= 70 && height >= 35\"\n [attr.x]=\"x\"\n [attr.y]=\"y\"\n [attr.width]=\"width\"\n [attr.height]=\"height\"\n class=\"treemap-label\"\n [style.pointer-events]=\"'none'\"\n >\n <xhtml:p [style.color]=\"getTextColor()\" [style.height]=\"height + 'px'\" [style.width]=\"width + 'px'\">\n <xhtml:span class=\"treemap-label\" [innerHTML]=\"formattedLabel\"> </xhtml:span>\n <xhtml:br />\n <xhtml:span\n *ngIf=\"animations\"\n class=\"treemap-val\"\n ngx-charts-count-up\n [countTo]=\"value\"\n [valueFormatting]=\"valueFormatting\"\n >\n </xhtml:span>\n <xhtml:span *ngIf=\"!animations\" class=\"treemap-val\">\n {{ formattedValue }}\n </xhtml:span>\n </xhtml:p>\n </svg:foreignObject>\n </svg:g>\n `,\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class TreeMapCellComponent implements OnChanges {\n @Input() data: DataItem;\n @Input() fill: string;\n @Input() x: number;\n @Input() y: number;\n @Input() width: number;\n @Input() height: number;\n @Input() label: string;\n @Input() value: any;\n // @Input() valueType;\n @Input() valueFormatting: any;\n @Input() labelFormatting: any;\n @Input() gradient: boolean = false;\n @Input() animations: boolean = true;\n\n @Output() select = new EventEmitter();\n\n gradientStops: Gradient[];\n gradientId: string;\n gradientUrl: string;\n\n element: HTMLElement;\n transform: string;\n formattedLabel: string;\n formattedValue: string;\n initialized: boolean = false;\n\n orientation = BarOrientation;\n\n constructor(element: ElementRef) {\n this.element = element.nativeElement;\n }\n\n ngOnChanges(): void {\n this.update();\n\n this.valueFormatting = this.valueFormatting || (value => value.toLocaleString());\n const labelFormatting = this.labelFormatting || (cell => escapeLabel(trimLabel(cell.label, 55)));\n\n const cellData = {\n data: this.data,\n label: this.label,\n value: this.value\n };\n\n this.formattedValue = this.valueFormatting(cellData.value);\n this.formattedLabel = labelFormatting(cellData);\n\n this.gradientId = 'grad' + id().toString();\n this.gradientUrl = `url(#${this.gradientId})`;\n this.gradientStops = this.getGradientStops();\n }\n\n update(): void {\n if (this.initialized) {\n this.animateToCurrentForm();\n } else {\n if (this.animations) {\n this.loadAnimation();\n }\n this.initialized = true;\n }\n }\n\n loadAnimation(): void {\n const node = select(this.element).select('.cell');\n\n node.attr('opacity', 0).attr('x', this.x).attr('y', this.y);\n\n this.animateToCurrentForm();\n }\n\n getTextColor(): string {\n return invertColor(this.fill);\n }\n\n animateToCurrentForm(): void {\n const node = select(this.element).select('.cell');\n\n if (this.animations) {\n node\n .transition()\n .duration(750)\n .attr('opacity', 1)\n .attr('x', this.x)\n .attr('y', this.y)\n .attr('width', this.width)\n .attr('height', this.height);\n } else {\n node.attr('opacity', 1).attr('x', this.x).attr('y', this.y).attr('width', this.width).attr('height', this.height);\n }\n }\n\n onClick(): void {\n this.select.emit(this.data);\n }\n\n getGradientStops(): Gradient[] {\n return [\n {\n offset: 0,\n color: this.fill,\n opacity: 0.3\n },\n {\n offset: 100,\n color: this.fill,\n opacity: 1\n }\n ];\n }\n}\n","import {\n Component,\n OnChanges,\n Input,\n Output,\n SimpleChanges,\n EventEmitter,\n ChangeDetectionStrategy,\n TemplateRef\n} from '@angular/core';\nimport { ColorHelper } from '../common/color.helper';\nimport { escapeLabel } from '../common/label.helper';\nimport { DataItem } from '../models/chart-data.model';\nimport { StyleTypes } from '../common/tooltip/style.type';\nimport { PlacementTypes } from '../common/tooltip/position';\nimport { ViewDimensions } from '../common/types/view-dimension.interface';\n\ninterface TreeMapCell {\n data: DataItem;\n fill: string;\n height: number;\n label: string;\n value: any;\n width: number;\n x: number;\n y: number;\n}\n\n@Component({\n selector: 'g[ngx-charts-tree-map-cell-series]',\n template: `\n <svg:g\n ngx-charts-tree-map-cell\n *ngFor=\"let c of cells; trackBy: trackBy\"\n [data]=\"c.data\"\n [x]=\"c.x\"\n [y]=\"c.y\"\n [width]=\"c.width\"\n [height]=\"c.height\"\n [fill]=\"c.fill\"\n [label]=\"c.label\"\n [value]=\"c.value\"\n [valueFormatting]=\"valueFormatting\"\n [labelFormatting]=\"labelFormatting\"\n [gradient]=\"gradient\"\n [animations]=\"animations\"\n (select)=\"onClick($event)\"\n ngx-tooltip\n [tooltipDisabled]=\"tooltipDisabled\"\n [tooltipPlacement]=\"placementTypes.Top\"\n [tooltipType]=\"styleTypes.tooltip\"\n [tooltipTitle]=\"tooltipTemplate ? undefined : getTooltipText(c)\"\n [tooltipTemplate]=\"tooltipTemplate\"\n [tooltipContext]=\"c.data\"\n ></svg:g>\n `,\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class TreeMapCellSeriesComponent implements OnChanges {\n @Input() data: any; // type this\n @Input() dims: ViewDimensions;\n @Input() colors: ColorHelper;\n @Input() valueFormatting: any;\n @Input() labelFormatting: any;\n @Input() gradient: boolean = false;\n @Input() tooltipDisabled: boolean = false;\n @Input() tooltipTemplate: TemplateRef<any>;\n @Input() animations: boolean = true;\n\n @Output() select = new EventEmitter();\n\n cells: TreeMapCell[];\n styleTypes = StyleTypes;\n placementTypes = PlacementTypes;\n\n ngOnChanges(changes: SimpleChanges): void {\n this.cells = this.getCells();\n }\n\n getCells(): TreeMapCell[] {\n return this.data.children\n .filter(d => {\n return d.depth === 1;\n })\n .map((d, index) => {\n const label = d.id;\n\n return {\n data: d.data,\n x: d.x0,\n y: d.y0,\n width: d.x1 - d.x0,\n height: d.y1 - d.y0,\n fill: this.colors.getColor(label),\n label,\n value: d.value\n };\n });\n }\n\n getTooltipText({ label, value }: { label: any; value: any }): string {\n return `\n <span class=\"tooltip-label\">${escapeLabel(label)}</span>\n <span class=\"tooltip-val\">${value.toLocaleString()}</span>\n `;\n }\n\n onClick(data): void {\n this.select.emit(data);\n }\n\n trackBy(index, item): string {\n return item.label;\n }\n}\n","import {\n Component,\n Input,\n Output,\n EventEmitter,\n ViewEncapsulation,\n ChangeDetectionStrategy,\n ContentChild,\n TemplateRef\n} from '@angular/core';\nimport { treemap, stratify } from 'd3-hierarchy';\n\nimport { BaseChartComponent } from '../common/base-chart.component';\nimport { calculateViewDimensions } from '../common/view-dimensions.helper';\nimport { ColorHelper } from '../common/color.helper';\nimport { DataItem } from '../models/chart-data.model';\nimport { ViewDimensions } from '../common/types/view-dimension.interface';\nimport { ScaleType } from '../common/types/scale-type.enum';\n\n@Component({\n selector: 'ngx-charts-tree-map',\n template: `\n <ngx-charts-chart [view]=\"[width, height]\" [showLegend]=\"false\" [animations]=\"animations\">\n <svg:g [attr.transform]=\"transform\" class=\"tree-map chart\">\n <svg:g\n ngx-charts-tree-map-cell-series\n [colors]=\"colors\"\n [data]=\"data\"\n [dims]=\"dims\"\n [tooltipDisabled]=\"tooltipDisabled\"\n [tooltipTemplate]=\"tooltipTemplate\"\n [valueFormatting]=\"valueFormatting\"\n [labelFormatting]=\"labelFormatting\"\n [gradient]=\"gradient\"\n [animations]=\"animations\"\n (select)=\"onClick($event)\"\n />\n </svg:g>\n </ngx-charts-chart>\n `,\n styleUrls: ['./tree-map.component.scss'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class TreeMapComponent extends BaseChartComponent {\n @Input() results: DataItem[];\n @Input() tooltipDisabled: boolean = false;\n @Input() valueFormatting: any;\n @Input() labelFormatting: any;\n @Input() gradient: boolean = false;\n\n @Output() select = new EventEmitter();\n\n @ContentChild('tooltipTemplate') tooltipTemplate: TemplateRef<any>;\n\n dims: ViewDimensions;\n domain: any;\n transform: any;\n colors: ColorHelper;\n treemap: any;\n data: DataItem;\n margin: number[] = [10, 10, 10, 10];\n\n update(): void {\n super.update();\n\n this.dims = calculateViewDimensions({\n width: this.width,\n height: this.height,\n margins: this.margin\n });\n\n this.domain = this.getDomain();\n\n this.treemap = treemap<any>().size([this.dims.width, this.dims.height]);\n\n const rootNode = {\n name: 'root',\n value: 0,\n isRoot: true\n };\n\n const root = stratify<any>()\n .id(d => {\n let label = d.name;\n\n if (label.constructor.name === 'Date') {\n label = label.toLocaleDateString();\n } else {\n label = label.toLocaleString();\n }\n return label;\n })\n .parentId(d => (d.isRoot ? null : 'root'))([rootNode, ...this.results])\n .sum(d => d.value);\n\n this.data = this.treemap(root);\n\n this.setColors();\n\n this.transform = `translate(${this.dims.xOffset} , ${this.margin[0]})`;\n }\n\n getDomain(): any[] {\n return this.results.map(d => d.name);\n }\n\n onClick(data: DataItem): void {\n this.select.emit(data);\n }\n\n setColors(): void {\n this.colors = new ColorHelper(this.scheme, ScaleType.Ordinal, this.domain, this.customColors);\n }\n}\n","import { NgModule } from '@angular/core';\nimport { ChartCommonModule } from '../common/chart-common.module';\nimport { TreeMapCellComponent } from './tree-map-cell.component';\nimport { TreeMapCellSeriesComponent } from './tree-map-cell-series.component';\nimport { TreeMapComponent } from './tree-map.component';\n\n@NgModule({\n imports: [ChartCommonModule],\n declarations: [TreeMapCellComponent, TreeMapCellSeriesComponent, TreeMapComponent],\n exports: [TreeMapCellComponent, TreeMapCellSeriesComponent, TreeMapComponent]\n})\nexport class TreeMapModule {}\n","import {\n Component,\n Input,\n ElementRef,\n ViewChild,\n AfterViewInit,\n ViewEncapsulation,\n ChangeDetectionStrategy\n} from '@angular/core';\nimport { scaleLinear } from 'd3-scale';\n\nimport { BaseChartComponent } from '../common/base-chart.component';\nimport { calculateViewDimensions } from '../common/view-dimensions.helper';\nimport { ColorHelper } from '../common/color.helper';\nimport { calculateTextWidth } from '../utils/calculate-width';\nimport { VERDANA_FONT_WIDTHS_16_PX } from '../common/constants/font-widths';\nimport { isPlatformBrowser, isPlatformServer } from '@angular/common';\nimport { ViewDimensions } from '../common/types/view-dimension.interface';\nimport { BarOrientation } from '../common/types/bar-orientation.enum';\nimport { ScaleType } from '../common/types/scale-type.enum';\n\nenum ElementType {\n Value = 'value',\n Units = 'units'\n}\n\n@Component({\n selector: 'ngx-charts-linear-gauge',\n template: `\n <ngx-charts-chart [view]=\"[width, height]\" [showLegend]=\"false\" [animations]=\"animations\" (click)=\"onClick()\">\n <svg:g class=\"linear-gauge chart\">\n <svg:g\n ngx-charts-bar\n class=\"background-bar\"\n [width]=\"dims.width\"\n [height]=\"3\"\n [x]=\"margin[3]\"\n [y]=\"dims.height / 2 + margin[0] - 2\"\n [data]=\"{}\"\n [orientation]=\"barOrientation.Horizontal\"\n [roundEdges]=\"true\"\n [animations]=\"animations\"\n ></svg:g>\n <svg:g\n ngx-charts-bar\n [width]=\"valueScale(value)\"\n [height]=\"3\"\n [x]=\"margin[3]\"\n [y]=\"dims.height / 2 + margin[0] - 2\"\n [fill]=\"colors.getColor(units)\"\n [data]=\"{}\"\n [orientation]=\"barOrientation.Horizontal\"\n [roundEdges]=\"true\"\n [animations]=\"animations\"\n ></svg:g>\n\n <svg:line\n *ngIf=\"hasPreviousValue\"\n [attr.transform]=\"transformLine\"\n x1=\"0\"\n y1=\"5\"\n x2=\"0\"\n y2=\"15\"\n [attr.stroke]=\"colors.getColor(units)\"\n />\n\n <svg:line\n *ngIf=\"hasPreviousValue\"\n [attr.transform]=\"transformLine\"\n x1=\"0\"\n y1=\"-5\"\n x2=\"0\"\n y2=\"-15\"\n [attr.stroke]=\"colors.getColor(units)\"\n />\n\n <svg:g [attr.transform]=\"transform\">\n <svg:g [attr.transform]=\"valueTranslate\">\n <svg:text\n #valueTextEl\n class=\"value\"\n [style.textAnchor]=\"'middle'\"\n [attr.transform]=\"valueTextTransform\"\n alignment-baseline=\"after-edge\"\n >\n {{ displayValue }}\n </svg:text>\n </svg:g>\n\n <svg:g [attr.transform]=\"unitsTranslate\">\n <svg:text\n #unitsTextEl\n class=\"units\"\n [style.textAnchor]=\"'middle'\"\n [attr.transform]=\"unitsTextTransform\"\n alignment-baseline=\"before-edge\"\n >\n {{ units }}\n </svg:text>\n </svg:g>\n </svg:g>\n </svg:g>\n </ngx-charts-chart>\n `,\n styleUrls: ['../common/base-chart.component.scss', './linear-gauge.component.scss'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class LinearGaugeComponent extends BaseChartComponent implements AfterViewInit {\n @Input() min: number = 0;\n @Input() max: number = 100;\n @Input() value: number = 0;\n @Input() units: string;\n @Input() previousValue: number;\n @Input() valueFormatting: any;\n\n @ViewChild('valueTextEl') valueTextEl: ElementRef;\n @ViewChild('unitsTextEl') unitsTextEl: ElementRef;\n\n dims: ViewDimensions;\n valueDomain: [number, number];\n valueScale: any;\n\n colors: ColorHelper;\n transform: string;\n margin: number[] = [10, 20, 10, 20];\n transformLine: string;\n\n valueResizeScale: number = 1;\n unitsResizeScale: number = 1;\n valueTextTransform: string = '';\n valueTranslate: string = '';\n unitsTextTransform: string = '';\n unitsTranslate: string = '';\n displayValue: string;\n hasPreviousValue: boolean;\n\n barOrientation = BarOrientation;\n\n ngAfterViewInit(): void {\n super.ngAfterViewInit();\n setTimeout(() => {\n this.scaleText(ElementType.Value);\n this.scaleText(ElementType.Units);\n });\n }\n\n update(): void {\n super.update();\n\n this.hasPreviousValue = this.previousValue !== undefined;\n this.max = Math.max(this.max, this.value);\n this.min = Math.min(this.min, this.value);\n if (this.hasPreviousValue) {\n this.max = Math.max(this.max, this.previousValue);\n this.min = Math.min(this.min, this.previousValue);\n }\n\n this.dims = calculateViewDimensions({\n width: this.width,\n height: this.height,\n margins: this.margin\n });\n\n this.valueDomain = this.getValueDomain();\n this.valueScale = this.getValueScale();\n this.displayValue = this.getDisplayValue();\n\n this.setColors();\n\n const xOffset = this.margin[3] + this.dims.width / 2;\n const yOffset = this.margin[0] + this.dims.height / 2;\n\n this.transform = `translate(${xOffset}, ${yOffset})`;\n this.transformLine = `translate(${this.margin[3] + this.valueScale(this.previousValue)}, ${yOffset})`;\n this.valueTranslate = `translate(0, -15)`;\n this.unitsTranslate = `translate(0, 15)`;\n\n if (isPlatformServer(this.platformId)) {\n this.scaleTextSSR('value');\n this.scaleTextSSR('units');\n } else {\n setTimeout(() => this.scaleText(ElementType.Value), 50);\n setTimeout(() => this.scaleText(ElementType.Units), 50);\n }\n }\n\n getValueDomain(): [number, number] {\n return [this.min, this.max];\n }\n\n getValueScale(): any {\n return scaleLinear().range([0, this.dims.width]).domain(this.valueDomain);\n }\n\n getDisplayValue(): string {\n if (this.valueFormatting) {\n return this.valueFormatting(this.value);\n }\n return this.value.toLocaleString();\n }\n\n scaleText(element: ElementType, repeat: boolean = true): void {\n let el;\n let resizeScale;\n if (element === ElementType.Value) {\n el = this.valueTextEl;\n resizeScale = this.valueResizeScale;\n } else {\n el = this.unitsTextEl;\n resizeScale = this.unitsResizeScale;\n }\n\n const { width, height } = el.nativeElement.getBoundingClientRect();\n if (width === 0 || height === 0) return;\n const oldScale = resizeScale;\n const availableWidth = this.dims.width;\n const availableHeight = Math.max(this.dims.height / 2 - 15, 0);\n const resizeScaleWidth = Math.floor((availableWidth / (width / resizeScale)) * 100) / 100;\n const resizeScaleHeight = Math.floor((availableHeight / (height / resizeScale)) * 100) / 100;\n resizeScale = Math.min(resizeScaleHeight, resizeScaleWidth);\n\n if (resizeScale !== oldScale) {\n if (element === ElementType.Value) {\n this.valueResizeScale = resizeScale;\n this.valueTextTransform = `scale(${resizeScale}, ${resizeScale})`;\n } else {\n this.unitsResizeScale = resizeScale;\n this.unitsTextTransform = `scale(${resizeScale}, ${resizeScale})`;\n }\n this.cd.markForCheck();\n if (repeat && isPlatformBrowser(this.platformId)) {\n setTimeout(() => {\n this.scaleText(element, false);\n }, 50);\n }\n }\n }\n\n scaleTextSSR(element) {\n let resizeScale = 1;\n\n const value = element === 'value' ? this.displayValue : this.units;\n const width = calculateTextWidth(VERDANA_FONT_WIDTHS_16_PX, value, 10);\n const height = 25;\n\n const availableWidth = this.dims.width;\n const availableHeight = Math.max(this.dims.height / 2 - 15, 0);\n const resizeScaleWidth = Math.floor((availableWidth / (width / resizeScale)) * 100) / 100;\n const resizeScaleHeight = Math.floor((availableHeight / (height / resizeScale)) * 100) / 100;\n resizeScale = Math.min(resizeScaleHeight, resizeScaleWidth);\n\n if (element === 'value') {\n this.valueResizeScale = resizeScale;\n this.valueTextTransform = `scale(${resizeScale}, ${resizeScale})`;\n } else {\n this.unitsResizeScale = resizeScale;\n this.unitsTextTransform = `scale(${resizeScale}, ${resizeScale})`;\n }\n\n this.cd.markForCheck();\n }\n\n onClick(): void {\n this.select.emit({\n name: 'Value',\n value: this.value\n });\n }\n\n setColors(): void {\n this.colors = new ColorHelper(this.scheme, ScaleType.Ordinal, [this.value], this.customColors);\n }\n}\n","import {\n Component,\n Input,\n ElementRef,\n ViewChild,\n AfterViewInit,\n ChangeDetectionStrategy,\n Output,\n EventEmitter,\n ViewEncapsulation,\n ContentChild,\n TemplateRef\n} from '@angular/core';\nimport { scaleLinear } from 'd3-scale';\n\nimport { BaseChartComponent } from '../common/base-chart.component';\nimport { calculateViewDimensions } from '../common/view-dimensions.helper';\nimport { ColorHelper } from '../common/color.helper';\nimport { ArcItem } from './gauge-arc.component';\nimport { LegendOptions, LegendPosition } from '../common/types/legend.model';\nimport { ViewDimensions } from '../common/types/view-dimension.interface';\nimport { ScaleType } from '../common/types/scale-type.enum';\n\ninterface Arcs {\n backgroundArc: ArcItem;\n valueArc: ArcItem;\n}\n\n@Component({\n selector: 'ngx-charts-gauge',\n template: `\n <ngx-charts-chart\n [view]=\"[width, height]\"\n [showLegend]=\"legend\"\n [legendOptions]=\"legendOptions\"\n [activeEntries]=\"activeEntries\"\n [animations]=\"animations\"\n (legendLabelClick)=\"onClick($event)\"\n (legendLabelActivate)=\"onActivate($event)\"\n (legendLabelDeactivate)=\"onDeactivate($event)\"\n >\n <svg:g [attr.transform]=\"transform\" class=\"gauge chart\">\n <svg:g *ngFor=\"let arc of arcs; trackBy: trackBy\" [attr.transform]=\"rotation\">\n <svg:g\n ngx-charts-gauge-arc\n [backgroundArc]=\"arc.backgroundArc\"\n [valueArc]=\"arc.valueArc\"\n [cornerRadius]=\"cornerRadius\"\n [colors]=\"colors\"\n [isActive]=\"isActive(arc.valueArc.data)\"\n [tooltipDisabled]=\"tooltipDisabled\"\n [tooltipTemplate]=\"tooltipTemplate\"\n [valueFormatting]=\"valueFormatting\"\n [animations]=\"animations\"\n (select)=\"onClick($event)\"\n (activate)=\"onActivate($event)\"\n (deactivate)=\"onDeactivate($event)\"\n ></svg:g>\n </svg:g>\n\n <svg:g\n ngx-charts-gauge-axis\n *ngIf=\"showAxis\"\n [bigSegments]=\"bigSegments\"\n [smallSegments]=\"smallSegments\"\n [min]=\"min\"\n [max]=\"max\"\n [radius]=\"outerRadius\"\n [angleSpan]=\"angleSpan\"\n [valueScale]=\"valueScale\"\n [startAngle]=\"startAngle\"\n [tickFormatting]=\"axisTickFormatting\"\n ></svg:g>\n\n <svg:text\n #textEl\n *ngIf=\"showText\"\n [style.textAnchor]=\"'middle'\"\n [attr.transform]=\"textTransform\"\n alignment-baseline=\"central\"\n >\n <tspan x=\"0\" dy=\"0\">{{ displayValue }}</tspan>\n <tspan x=\"0\" dy=\"1.2em\">{{ units }}</tspan>\n </svg:text>\n </svg:g>\n </ngx-charts-chart>\n `,\n styleUrls: ['../common/base-chart.component.scss', './gauge.component.scss'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class GaugeComponent extends BaseChartComponent implements AfterViewInit {\n @Input() legend: boolean = false;\n @Input() legendTitle: string = 'Legend';\n @Input() legendPosition: LegendPosition = LegendPosition.Right;\n @Input() min: number = 0;\n @Input() max: number = 100;\n @Input() textValue: string;\n @Input() units: string;\n @Input() bigSegments: number = 10;\n @Input() smallSegments: number = 5;\n @Input() results: any[];\n @Input() showAxis: boolean = true;\n @Input() startAngle: number = -120;\n @Input() angleSpan: number = 240;\n @Input() activeEntries: any[] = [];\n @Input() axisTickFormatting: any;\n @Input() tooltipDisabled: boolean = false;\n @Input() valueFormatting: (value: any) => string;\n @Input() showText: boolean = true;\n\n // Specify margins\n @Input() margin: number[];\n\n @Output() activate: EventEmitter<any> = new EventEmitter();\n @Output() deactivate: EventEmitter<any> = new EventEmitter();\n\n @ContentChild('tooltipTemplate') tooltipTemplate: TemplateRef<any>;\n\n @ViewChild('textEl') textEl: ElementRef;\n\n dims: ViewDimensions;\n domain: any[];\n valueDomain: [number, number];\n valueScale: any;\n\n colors: ColorHelper;\n transform: string;\n\n outerRadius: number;\n textRadius: number; // max available radius for the text\n resizeScale: number = 1;\n rotation: string = '';\n textTransform: string = 'scale(1, 1)';\n cornerRadius: number = 10;\n arcs: Arcs[];\n displayValue: string;\n legendOptions: LegendOptions;\n\n ngAfterViewInit(): void {\n super.ngAfterViewInit();\n setTimeout(() => this.scaleText());\n }\n\n update(): void {\n super.update();\n\n if (!this.showAxis) {\n if (!this.margin) {\n this.margin = [10, 20, 10, 20];\n }\n } else {\n if (!this.margin) {\n this.margin = [60, 100, 60, 100];\n }\n }\n\n // make the starting angle positive\n if (this.startAngle < 0) {\n this.startAngle = (this.startAngle % 360) + 360;\n }\n\n this.angleSpan = Math.min(this.angleSpan, 360);\n\n this.dims = calculateViewDimensions({\n width: this.width,\n height: this.height,\n margins: this.margin,\n showLegend: this.legend,\n legendPosition: this.legendPosition\n });\n\n this.domain = this.getDomain();\n this.valueDomain = this.getValueDomain();\n this.valueScale = this.getValueScale();\n this.displayValue = this.getDisplayValue();\n\n this.outerRadius = Math.min(this.dims.width, this.dims.height) / 2;\n\n this.arcs = this.getArcs();\n\n this.setColors();\n this.legendOptions = this.getLegendOptions();\n\n const xOffset = this.margin[3] + this.dims.width / 2;\n const yOffset = this.margin[0] + this.dims.height / 2;\n\n this.transform = `translate(${xOffset}, ${yOffset})`;\n this.rotation = `rotate(${this.startAngle})`;\n setTimeout(() => this.scaleText(), 50);\n }\n\n getArcs(): any[] {\n const arcs = [];\n\n const availableRadius = this.outerRadius * 0.7;\n\n const radiusPerArc = Math.min(availableRadius / this.results.length, 10);\n const arcWidth = radiusPerArc * 0.7;\n this.textRadius = this.outerRadius - this.results.length * radiusPerArc;\n this.cornerRadius = Math.floor(arcWidth / 2);\n\n let i = 0;\n for (const d of this.results) {\n const outerRadius = this.outerRadius - i * radiusPerArc;\n const innerRadius = outerRadius - arcWidth;\n\n const backgroundArc = {\n endAngle: (this.angleSpan * Math.PI) / 180,\n innerRadius,\n outerRadius,\n data: {\n value: this.max,\n name: d.name\n }\n };\n\n const valueArc = {\n endAngle: (Math.min(this.valueScale(d.value), this.angleSpan) * Math.PI) / 180,\n innerRadius,\n outerRadius,\n data: {\n value: d.value,\n name: d.name\n }\n };\n\n const arc = {\n backgroundArc,\n valueArc\n };\n\n arcs.push(arc);\n i++;\n }\n\n return arcs;\n }\n\n getDomain(): string[] {\n return this.results.map(d => d.name);\n }\n\n getValueDomain(): [number, number] {\n const values = this.results.map(d => d.value);\n const dataMin = Math.min(...values);\n const dataMax = Math.max(...values);\n\n if (this.min !== undefined) {\n this.min = Math.min(this.min, dataMin);\n } else {\n this.min = dataMin;\n }\n\n if (this.max !== undefined) {\n this.max = Math.max(this.max, dataMax);\n } else {\n this.max = dataMax;\n }\n\n return [this.min, this.max];\n }\n\n getValueScale(): any {\n return scaleLinear().range([0, this.angleSpan]).nice().domain(this.valueDomain);\n }\n\n getDisplayValue(): string {\n const value = this.results.map(d => d.value).reduce((a, b) => a + b, 0);\n\n if (this.textValue && 0 !== this.textValue.length) {\n return this.textValue.toLocaleString();\n }\n\n if (this.valueFormatting) {\n return this.valueFormatting(value);\n }\n\n return value.toLocaleString();\n }\n\n scaleText(repeat: boolean = true): void {\n if (!this.showText) {\n return;\n }\n const { width } = this.textEl.nativeElement.getBoundingClientRect();\n const oldScale = this.resizeScale;\n\n if (width === 0) {\n this.resizeScale = 1;\n } else {\n const availableSpace = this.textRadius;\n this.resizeScale = Math.floor((availableSpace / (width / this.resizeScale)) * 100) / 100;\n }\n\n if (this.resizeScale !== oldScale) {\n this.textTransform = `scale(${this.resizeScale}, ${this.resizeScale})`;\n this.cd.markForCheck();\n if (repeat) {\n setTimeout(() => this.scaleText(false), 50);\n }\n }\n }\n\n onClick(data): void {\n this.select.emit(data);\n }\n\n getLegendOptions(): LegendOptions {\n return {\n scaleType: ScaleType.Ordinal,\n colors: this.colors,\n domain: this.domain,\n title: this.legendTitle,\n position: this.legendPosition\n };\n }\n\n setColors(): void {\n this.colors = new ColorHelper(this.scheme, ScaleType.Ordinal, this.domain, this.customColors);\n }\n\n onActivate(item): void {\n const idx = this.activeEntries.findIndex(d => {\n return d.name === item.name && d.value === item.value;\n });\n if (idx > -1) {\n return;\n }\n\n this.activeEntries = [item, ...this.activeEntries];\n this.activate.emit({ value: item, entries: this.activeEntries });\n }\n\n onDeactivate(item): void {\n const idx = this.activeEntries.findIndex(d => {\n return d.name === item.name && d.value === item.value;\n });\n\n this.activeEntries.splice(idx, 1);\n this.activeEntries = [...this.activeEntries];\n\n this.deactivate.emit({ value: item, entries: this.activeEntries });\n }\n\n isActive(entry): boolean {\n if (!this.activeEntries) return false;\n const item = this.activeEntries.find(d => {\n return entry.name === d.name && entry.series === d.series;\n });\n return item !== undefined;\n }\n\n trackBy(index: number, item: Arcs): any {\n return item.valueArc.data.name;\n }\n}\n","import { Component, Input, Output, EventEmitter, ChangeDetectionStrategy, TemplateRef } from '@angular/core';\nimport { formatLabel, escapeLabel } from '../common/label.helper';\nimport { ColorHelper } from '../common/color.helper';\nimport { DataItem } from '../models/chart-data.model';\nimport { PlacementTypes } from '../common/tooltip/position';\nimport { StyleTypes } from '../common/tooltip/style.type';\n\nexport interface ArcItem {\n data: DataItem;\n endAngle: number;\n innerRadius: number;\n outerRadius: number;\n}\n\n@Component({\n selector: 'g[ngx-charts-gauge-arc]',\n template: `\n <svg:g\n ngx-charts-pie-arc\n class=\"background-arc\"\n [startAngle]=\"0\"\n [endAngle]=\"backgroundArc.endAngle\"\n [innerRadius]=\"backgroundArc.innerRadius\"\n [outerRadius]=\"backgroundArc.outerRadius\"\n [cornerRadius]=\"cornerRadius\"\n [data]=\"backgroundArc.data\"\n [animate]=\"false\"\n [pointerEvents]=\"false\"\n ></svg:g>\n <svg:g\n ngx-charts-pie-arc\n [startAngle]=\"0\"\n [endAngle]=\"valueArc.endAngle\"\n [innerRadius]=\"valueArc.innerRadius\"\n [outerRadius]=\"valueArc.outerRadius\"\n [cornerRadius]=\"cornerRadius\"\n [fill]=\"colors.getColor(valueArc.data.name)\"\n [data]=\"valueArc.data\"\n [animate]=\"animations\"\n [isActive]=\"isActive\"\n (select)=\"select.emit($event)\"\n (activate)=\"activate.emit($event)\"\n (deactivate)=\"deactivate.emit($event)\"\n ngx-tooltip\n [tooltipDisabled]=\"tooltipDisabled\"\n [tooltipPlacement]=\"placementTypes.Top\"\n [tooltipType]=\"styleTypes.tooltip\"\n [tooltipTitle]=\"tooltipTemplate ? undefined : tooltipText(valueArc)\"\n [tooltipTemplate]=\"tooltipTemplate\"\n [tooltipContext]=\"valueArc.data\"\n ></svg:g>\n `,\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class GaugeArcComponent {\n @Input() backgroundArc: ArcItem;\n @Input() valueArc: ArcItem;\n @Input() cornerRadius: number;\n @Input() colors: ColorHelper;\n @Input() isActive: boolean = false;\n @Input() tooltipDisabled: boolean = false;\n @Input() valueFormatting: (value: any) => string;\n @Input() tooltipTemplate: TemplateRef<any>;\n @Input() animations: boolean = true;\n\n @Output() select = new EventEmitter();\n @Output() activate = new EventEmitter();\n @Output() deactivate = new EventEmitter();\n\n placementTypes = PlacementTypes;\n styleTypes = StyleTypes;\n\n tooltipText(arc: ArcItem): string {\n const label = formatLabel(arc.data.name);\n let val;\n\n if (this.valueFormatting) {\n val = this.valueFormatting(arc.data.value);\n } else {\n val = formatLabel(arc.data.value);\n }\n\n return `\n <span class=\"tooltip-label\">${escapeLabel(label)}</span>\n <span class=\"tooltip-val\">${val}</span>\n `;\n }\n}\n","import { Component, Input, OnChanges, SimpleChanges, ChangeDetectionStrategy } from '@angular/core';\nimport { line } from 'd3-shape';\nimport { TextAnchor } from '../common/types/text-anchor.enum';\n\ninterface Big {\n line: string;\n text: string;\n textAnchor: string;\n textTransform: string;\n}\n\ninterface Ticks {\n big: Big[];\n small: Array<{ line: string }>;\n}\n\n@Component({\n selector: 'g[ngx-charts-gauge-axis]',\n template: `\n <svg:g [attr.transform]=\"rotate\">\n <svg:g *ngFor=\"let tick of ticks.big\" class=\"gauge-tick gauge-tick-large\">\n <svg:path [attr.d]=\"tick.line\" />\n </svg:g>\n <svg:g *ngFor=\"let tick of ticks.big\" class=\"gauge-tick gauge-tick-large\">\n <svg:text\n [style.textAnchor]=\"tick.textAnchor\"\n [attr.transform]=\"tick.textTransform\"\n alignment-baseline=\"central\"\n >\n {{ tick.text }}\n </svg:text>\n </svg:g>\n <svg:g *ngFor=\"let tick of ticks.small\" class=\"gauge-tick gauge-tick-small\">\n <svg:path [attr.d]=\"tick.line\" />\n </svg:g>\n </svg:g>\n `,\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class GaugeAxisComponent implements OnChanges {\n @Input() bigSegments: number;\n @Input() smallSegments: number;\n @Input() min: number;\n @Input() max: number;\n @Input() angleSpan: number;\n @Input() startAngle: number;\n @Input() radius: number;\n @Input() valueScale: any;\n @Input() tickFormatting: any;\n\n ticks: Ticks;\n rotationAngle: number;\n rotate: string = '';\n\n ngOnChanges(changes: SimpleChanges) {\n this.update();\n }\n\n update(): void {\n this.rotationAngle = -90 + this.startAngle;\n this.rotate = `rotate(${this.rotationAngle})`;\n this.ticks = this.getTicks();\n }\n\n getTicks(): Ticks {\n const bigTickSegment = this.angleSpan / this.bigSegments;\n const smallTickSegment = bigTickSegment / this.smallSegments;\n const tickLength = 20;\n const ticks = {\n big: [],\n small: []\n };\n\n const startDistance = this.radius + 10;\n const textDist = startDistance + tickLength + 10;\n\n for (let i = 0; i <= this.bigSegments; i++) {\n const angleDeg = i * bigTickSegment;\n const angle = (angleDeg * Math.PI) / 180;\n\n const textAnchor = this.getTextAnchor(angleDeg);\n\n let skip = false;\n if (i === 0 && this.angleSpan === 360) {\n skip = true;\n }\n\n if (!skip) {\n let text = Number.parseFloat(this.valueScale.invert(angleDeg).toString()).toLocaleString();\n if (this.tickFormatting) {\n text = this.tickFormatting(text);\n }\n ticks.big.push({\n line: this.getTickPath(startDistance, tickLength, angle),\n textAnchor,\n text,\n textTransform: `\n translate(${textDist * Math.cos(angle)}, ${textDist * Math.sin(angle)}) rotate(${-this.rotationAngle})\n `\n });\n }\n\n if (i === this.bigSegments) {\n continue;\n }\n\n for (let j = 1; j <= this.smallSegments; j++) {\n const smallAngleDeg = angleDeg + j * smallTickSegment;\n const smallAngle = (smallAngleDeg * Math.PI) / 180;\n\n ticks.small.push({\n line: this.getTickPath(startDistance, tickLength / 2, smallAngle)\n });\n }\n }\n\n return ticks;\n }\n\n getTextAnchor(angle: number): TextAnchor {\n // [0, 45] = 'middle';\n // [46, 135] = 'start';\n // [136, 225] = 'middle';\n // [226, 315] = 'end';\n\n angle = (this.startAngle + angle) % 360;\n let textAnchor = TextAnchor.Middle;\n if (angle > 45 && angle <= 135) {\n textAnchor = TextAnchor.Start;\n } else if (angle > 225 && angle <= 315) {\n textAnchor = TextAnchor.End;\n }\n return textAnchor;\n }\n\n getTickPath(startDistance: number, tickLength: number, angle: number): any {\n const y1 = startDistance * Math.sin(angle);\n const y2 = (startDistance + tickLength) * Math.sin(angle);\n const x1 = startDistance * Math.cos(angle);\n const x2 = (startDistance + tickLength) * Math.cos(angle);\n\n const points = [\n { x: x1, y: y1 },\n { x: x2, y: y2 }\n ];\n const lineGenerator = line<any>()\n .x(d => d.x)\n .y(d => d.y);\n return lineGenerator(points);\n }\n}\n","import { NgModule } from '@angular/core';\nimport { ChartCommonModule } from '../common/chart-common.module';\nimport { LinearGaugeComponent } from './linear-gauge.component';\nimport { GaugeComponent } from './gauge.component';\nimport { GaugeArcComponent } from './gauge-arc.component';\nimport { GaugeAxisComponent } from './gauge-axis.component';\nimport { PieChartModule } from '../pie-chart/pie-chart.module';\nimport { BarChartModule } from '../bar-chart/bar-chart.module';\n\n@NgModule({\n imports: [ChartCommonModule, PieChartModule, BarChartModule],\n declarations: [LinearGaugeComponent, GaugeComponent, GaugeArcComponent, GaugeAxisComponent],\n exports: [LinearGaugeComponent, GaugeComponent, GaugeArcComponent, GaugeAxisComponent]\n})\nexport class GaugeModule {}\n","// The export is needed here to generate a valid polyfills.metadata.json file\nexport function ngxChartsPolyfills() {\n // IE11 fix\n // Ref: https://github.com/swimlane/ngx-charts/issues/386\n if (typeof SVGElement !== 'undefined' && typeof SVGElement.prototype.contains === 'undefined') {\n SVGElement.prototype.contains = HTMLDivElement.prototype.contains;\n }\n}\n","import { NgModule } from '@angular/core';\nimport { ChartCommonModule } from './common/chart-common.module';\nimport { AreaChartModule } from './area-chart/area-chart.module';\nimport { BarChartModule } from './bar-chart/bar-chart.module';\nimport { BoxChartModule } from './box-chart/box-chart.module';\nimport { BubbleChartModule } from './bubble-chart/bubble-chart.module';\nimport { HeatMapModule } from './heat-map/heat-map.module';\nimport { LineChartModule } from './line-chart/line-chart.module';\nimport { PolarChartModule } from './polar-chart/polar-chart.module';\nimport { NumberCardModule } from './number-card/number-card.module';\nimport { PieChartModule } from './pie-chart/pie-chart.module';\nimport { TreeMapModule } from './tree-map/tree-map.module';\nimport { GaugeModule } from './gauge/gauge.module';\nimport { ngxChartsPolyfills } from './polyfills';\n\n@NgModule({\n exports: [\n ChartCommonModule,\n AreaChartModule,\n BarChartModule,\n BoxChartModule,\n BubbleChartModule,\n HeatMapModule,\n LineChartModule,\n PolarChartModule,\n NumberCardModule,\n PieChartModule,\n TreeMapModule,\n GaugeModule\n ]\n})\nexport class NgxChartsModule {\n constructor() {\n ngxChartsPolyfills();\n }\n}\n","import { timeFormat } from 'd3-time-format';\n\nexport function tickFormat(fieldType, groupByType): (label: string) => string {\n return function (label: string): string {\n if (label === 'No Value' || label === 'Other') {\n return label;\n }\n if (fieldType === 'date' && groupByType === 'groupBy') {\n const formatter = timeFormat('MM/DD/YYYY');\n return formatter(<any>label);\n }\n\n return label.toString();\n };\n}\n","/*\n * Public API Surface of ngx-charts\n */\n\nexport * from './lib/ngx-charts.module';\n\nexport * from './lib/area-chart/area-chart.module';\nexport * from './lib/area-chart/area-chart.component';\nexport * from './lib/area-chart/area-chart-normalized.component';\nexport * from './lib/area-chart/area-chart-stacked.component';\nexport * from './lib/area-chart/area-series.component';\n\nexport * from './lib/bar-chart/bar-chart.module';\nexport * from './lib/bar-chart/bar.component';\nexport * from './lib/bar-chart/bar-horizontal.component';\nexport * from './lib/bar-chart/bar-horizontal-2d.component';\nexport * from './lib/bar-chart/bar-horizontal-normalized.component';\nexport * from './lib/bar-chart/bar-horizontal-stacked.component';\nexport * from './lib/bar-chart/series-horizontal.component';\nexport * from './lib/bar-chart/bar-label.component';\nexport * from './lib/bar-chart/bar-vertical.component';\nexport * from './lib/bar-chart/bar-vertical-2d.component';\nexport * from './lib/bar-chart/bar-vertical-normalized.component';\nexport * from './lib/bar-chart/bar-vertical-stacked.component';\nexport * from './lib/bar-chart/series-vertical.component';\nexport * from './lib/bar-chart/types/bar.model';\nexport * from './lib/bar-chart/types/bar-chart-type.enum';\nexport * from './lib/bar-chart/types/d0-type.enum';\n\nexport * from './lib/box-chart/box-chart.module';\nexport * from './lib/box-chart/box.component';\nexport * from './lib/box-chart/box-chart.component';\nexport * from './lib/box-chart/box-series.component';\n\nexport * from './lib/bubble-chart/bubble-chart.module';\nexport * from './lib/bubble-chart/bubble-chart.component';\nexport * from './lib/bubble-chart/bubble-chart.utils';\nexport * from './lib/bubble-chart/bubble-series.component';\n\nexport * from './lib/common/chart-common.module';\nexport * from './lib/common/legend/legend.component';\nexport * from './lib/common/legend/scale-legend.component';\nexport * from './lib/common/legend/legend-entry.component';\nexport * from './lib/common/legend/advanced-legend.component';\n\nexport * from './lib/common/tooltip/tooltip.module';\nexport * from './lib/common/tooltip/tooltip.service';\nexport * from './lib/common/tooltip/tooltip.component';\nexport * from './lib/common/tooltip/tooltip.directive';\nexport * from './lib/common/tooltip/style.type';\nexport * from './lib/common/tooltip/show.type';\nexport * from './lib/common/tooltip/position/placement-type.enum';\n\nexport * from './lib/common/types/bar-orientation.enum';\nexport * from './lib/common/types/gradient.interface';\nexport * from './lib/common/types/legend.model';\nexport * from './lib/common/types/orientation.enum';\nexport * from './lib/common/types/scale-type.enum';\nexport * from './lib/common/types/text-anchor.enum';\nexport * from './lib/common/types/view-dimension.interface';\n\nexport * from './lib/common/axes/axes.module';\nexport * from './lib/common/axes/axis-label.component';\nexport * from './lib/common/axes/x-axis.component';\nexport * from './lib/common/axes/x-axis-ticks.component';\nexport * from './lib/common/axes/y-axis.component';\nexport * from './lib/common/axes/y-axis-ticks.component';\nexport * from './lib/common/axes/ticks.helper';\n\nexport * from './lib/common/count/count.directive';\nexport * from './lib/common/count/count.helper';\nexport * from './lib/common/timeline/timeline.component';\nexport * from './lib/common/color.helper';\nexport * from './lib/common/charts/chart.component';\n\nexport * from './lib/common/area.component';\nexport * from './lib/common/base-chart.component';\nexport * from './lib/common/circle.component';\nexport * from './lib/common/circle-series.component';\nexport * from './lib/common/grid-layout.helper';\nexport * from './lib/common/grid-panel.component';\nexport * from './lib/common/grid-panel-series.component';\nexport * from './lib/common/svg-linear-gradient.component';\nexport * from './lib/common/svg-radial-gradient.component';\nexport * from './lib/common/tooltip-area.component';\nexport * from './lib/common/tick-format.helper';\nexport * from './lib/common/trim-label.helper';\nexport * from './lib/common/view-dimensions.helper';\nexport * from './lib/common/label.helper';\nexport * from './lib/common/domain.helper';\n\nexport * from './lib/gauge/gauge.module';\nexport * from './lib/gauge/gauge-arc.component';\nexport * from './lib/gauge/gauge-axis.component';\nexport * from './lib/gauge/gauge.component';\nexport * from './lib/gauge/linear-gauge.component';\n\nexport * from './lib/heat-map/heat-map.module';\nexport * from './lib/heat-map/heat-map.component';\nexport * from './lib/heat-map/heat-map-cell.component';\nexport * from './lib/heat-map/heat-map-cell-series.component';\n\nexport * from './lib/line-chart/line-chart.module';\nexport * from './lib/line-chart/line-chart.component';\nexport * from './lib/line-chart/line.component';\nexport * from './lib/line-chart/line-series.component';\n\nexport * from './lib/models/chart-data.model';\n\nexport * from './lib/number-card/number-card.module';\nexport * from './lib/number-card/number-card.component';\nexport * from './lib/number-card/card.component';\nexport * from './lib/number-card/card-series.component';\n\nexport * from './lib/pie-chart/pie-chart.module';\nexport * from './lib/pie-chart/advanced-pie-chart.component';\nexport * from './lib/pie-chart/pie-chart.component';\nexport * from './lib/pie-chart/pie-arc.component';\nexport * from './lib/pie-chart/pie-grid.component';\nexport * from './lib/pie-chart/pie-grid-series.component';\nexport * from './lib/pie-chart/pie-series.component';\nexport * from './lib/pie-chart/pie-label.component';\n\nexport * from './lib/polar-chart/polar-chart.module';\nexport * from './lib/polar-chart/polar-chart.component';\nexport * from './lib/polar-chart/polar-series.component';\n\nexport * from './lib/tree-map/tree-map.module';\nexport * from './lib/tree-map/tree-map.component';\nexport * from './lib/tree-map/tree-map-cell.component';\nexport * from './lib/tree-map/tree-map-cell-series.component';\n\nexport * from './lib/utils/id';\nexport * from './lib/utils/color-sets';\nexport * from './lib/utils/sort';\nexport * from './lib/utils/throttle';\nexport * from './lib/utils/color-utils';\nexport * from './lib/utils/visibility-observer';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n\nexport {InjectionRegisteryService as ɵa} from './lib/common/tooltip/injection-registery.service';\nexport {InjectionService as ɵb} from './lib/common/tooltip/injection.service';"],"names":["DomPortalOutlet","portal","ComponentPortal","Injectable","ApplicationRef","ComponentFactoryResolver","Injector","PlacementTypes","isPlatformBrowser","Component","ViewEncapsulation","ElementRef","Renderer2","Inject","PLATFORM_ID","Input","ViewChild","HostBinding","HostListener","LegendPosition","LegendType","ScaleType","EventEmitter","ChangeDetectionStrategy","trigger","transition","style","animate","Output","Directive","NgZone","isPlatformServer","observableFromEvent","debounceTime","ChangeDetectorRef","Orientation","TextAnchor","NgModule","CommonModule","StyleTypes","ShowTypes","ViewContainerRef","BarOrientation","SeriesType","select","scaleTime","scaleLinear","scalePoint","brushX","scaleQuantile","scaleOrdinal","range","scaleBand","curveLinear","ContentChild","area","BarChartType","D0Types","min","max","quantile","easeSinInOut","interpolate","cloneDeep","line","curveCardinalClosed","lineRadial","arc","format","pie","d3_color","treemap","stratify","timeFormat"],"mappings":"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AAC,EAAE,CAAC;QACJ,CAAC,EAAE,CAAC;QACJ,CAAC,EAAE,EAAE;QACL,CAAC,EAAE,CAAC;QACJ,CAAC,EAAE,EAAE;QACL,CAAC,EAAE,EAAE;QACL,CAAC,EAAE,EAAE;QACL,CAAC,EAAE,EAAE;QACL,CAAC,EAAE,EAAE;QACL,CAAC,EAAE,EAAE;QACL,CAAC,EAAE,EAAE;QACL,CAAC,EAAE,EAAE;QACL,CAAC,EAAE,EAAE;QACL,CAAC,EAAE,EAAE;QACL,CAAC,EAAE,EAAE;QACL,CAAC,EAAE,EAAE;QACL,CAAC,EAAE,EAAE;QACL,CAAC,EAAE,EAAE;QACL,CAAC,EAAE,EAAE;QACL,CAAC,EAAE,EAAE;QACL,CAAC,EAAE,CAAC;QACJ,CAAC,EAAE,EAAE;QACL,CAAC,EAAE,EAAE;QACL,CAAC,EAAE,CAAC;QACJ,CAAC,EAAE,EAAE;QACL,CAAC,EAAE,EAAE;QACL,CAAC,EAAE,CAAC;QACJ,CAAC,EAAE,CAAC;QACJ,CAAC,EAAE,CAAC;QACJ,CAAC,EAAE,CAAC;QACJ,CAAC,EAAE,EAAE;QACL,CAAC,EAAE,EAAE;QACL,CAAC,EAAE,EAAE;QACL,CAAC,EAAE,EAAE;QACL,CAAC,EAAE,EAAE;QACL,CAAC,EAAE,CAAC;QACJ,CAAC,EAAE,CAAC;QACJ,CAAC,EAAE,CAAC;QACJ,CAAC,EAAE,EAAE;QACL,CAAC,EAAE,CAAC;QACJ,CAAC,EAAE,EAAE;QACL,CAAC,EAAE,CAAC;QACJ,CAAC,EAAE,CAAC;QACJ,CAAC,EAAE,CAAC;QACJ,GAAG,EAAE,CAAC;QACN,GAAG,EAAE,EAAE;QACP,GAAG,EAAE,EAAE;QACP,CAAC,EAAE,EAAE;QACL,GAAG,EAAE,EAAE;QACP,GAAG,EAAE,EAAE;QACP,GAAG,EAAE,EAAE;QACP,GAAG,EAAE,EAAE;QACP,GAAG,EAAE,CAAC;QACN,GAAG,EAAE,CAAC;QACN,CAAC,EAAE,EAAE;QACL,GAAG,EAAE,CAAC;QACN,GAAG,EAAE,EAAE;QACP,GAAG,EAAE,EAAE;QACP,GAAG,EAAE,CAAC;QACN,GAAG,EAAE,CAAC;QACN,G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"}
\No newline at end of file