@rfprodz/client-d3-charts 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (54) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +88 -0
  3. package/esm2020/index.mjs +5 -0
  4. package/esm2020/lib/client-d3-charts.module.mjs +47 -0
  5. package/esm2020/lib/components/bar-chart/bar-chart.component.mjs +87 -0
  6. package/esm2020/lib/components/chart-examples/chart-examples.component.mjs +181 -0
  7. package/esm2020/lib/components/force-directed-chart/force-directed-chart.component.mjs +92 -0
  8. package/esm2020/lib/components/index.mjs +7 -0
  9. package/esm2020/lib/components/line-chart/line-chart.component.mjs +91 -0
  10. package/esm2020/lib/components/pie-chart/pie-chart.component.mjs +90 -0
  11. package/esm2020/lib/components/radar-chart/radar-chart.component.mjs +102 -0
  12. package/esm2020/lib/interfaces/bar-chart.interface.mjs +2 -0
  13. package/esm2020/lib/interfaces/force-directed-chart.interface.mjs +2 -0
  14. package/esm2020/lib/interfaces/index.mjs +6 -0
  15. package/esm2020/lib/interfaces/line-chart.interface.mjs +2 -0
  16. package/esm2020/lib/interfaces/pie-chart.interface.mjs +2 -0
  17. package/esm2020/lib/interfaces/radar-chart.interface.mjs +2 -0
  18. package/esm2020/lib/providers/d3-chart-factory.provider.mjs +18 -0
  19. package/esm2020/lib/util/bar-chart.util.mjs +255 -0
  20. package/esm2020/lib/util/configuration.util.mjs +31 -0
  21. package/esm2020/lib/util/force-directed-chart.util.mjs +255 -0
  22. package/esm2020/lib/util/index.mjs +6 -0
  23. package/esm2020/lib/util/line-chart.util.mjs +266 -0
  24. package/esm2020/lib/util/pie-chart.util.mjs +89 -0
  25. package/esm2020/lib/util/radar-chart.util.mjs +295 -0
  26. package/esm2020/rfprodz-client-d3-charts.mjs +5 -0
  27. package/fesm2015/rfprodz-client-d3-charts.mjs +1868 -0
  28. package/fesm2015/rfprodz-client-d3-charts.mjs.map +1 -0
  29. package/fesm2020/rfprodz-client-d3-charts.mjs +1855 -0
  30. package/fesm2020/rfprodz-client-d3-charts.mjs.map +1 -0
  31. package/index.d.ts +4 -0
  32. package/lib/client-d3-charts.module.d.ts +13 -0
  33. package/lib/components/bar-chart/bar-chart.component.d.ts +49 -0
  34. package/lib/components/chart-examples/chart-examples.component.d.ts +60 -0
  35. package/lib/components/force-directed-chart/force-directed-chart.component.d.ts +49 -0
  36. package/lib/components/index.d.ts +6 -0
  37. package/lib/components/line-chart/line-chart.component.d.ts +49 -0
  38. package/lib/components/pie-chart/pie-chart.component.d.ts +49 -0
  39. package/lib/components/radar-chart/radar-chart.component.d.ts +49 -0
  40. package/lib/interfaces/bar-chart.interface.d.ts +25 -0
  41. package/lib/interfaces/force-directed-chart.interface.d.ts +50 -0
  42. package/lib/interfaces/index.d.ts +5 -0
  43. package/lib/interfaces/line-chart.interface.d.ts +28 -0
  44. package/lib/interfaces/pie-chart.interface.d.ts +19 -0
  45. package/lib/interfaces/radar-chart.interface.d.ts +30 -0
  46. package/lib/providers/d3-chart-factory.provider.d.ts +15 -0
  47. package/lib/util/bar-chart.util.d.ts +14 -0
  48. package/lib/util/configuration.util.d.ts +7 -0
  49. package/lib/util/force-directed-chart.util.d.ts +14 -0
  50. package/lib/util/index.d.ts +5 -0
  51. package/lib/util/line-chart.util.d.ts +14 -0
  52. package/lib/util/pie-chart.util.d.ts +14 -0
  53. package/lib/util/radar-chart.util.d.ts +14 -0
  54. package/package.json +53 -0
@@ -0,0 +1,91 @@
1
+ import { DOCUMENT } from '@angular/common';
2
+ import { ChangeDetectionStrategy, Component, ElementRef, Inject, Input, ViewChild, } from '@angular/core';
3
+ import { D3_CHART_FACTORY } from '../../providers/d3-chart-factory.provider';
4
+ import { defaultLineChartConfig } from '../../util';
5
+ import * as i0 from "@angular/core";
6
+ export class AppLineChartComponent {
7
+ constructor(doc, d3Factory) {
8
+ this.doc = doc;
9
+ this.d3Factory = d3Factory;
10
+ /**
11
+ * The chart id.
12
+ */
13
+ this.chartId = 'line-0';
14
+ /**
15
+ * The chart data.
16
+ */
17
+ this.data = [];
18
+ /**
19
+ * The chart options.
20
+ */
21
+ this.options = {};
22
+ }
23
+ /**
24
+ * The chart options constructor.
25
+ * @returns chart options
26
+ */
27
+ chartOptions() {
28
+ const bodyWidthAdjustment = 10;
29
+ const width = Math.min(this.options.width ?? defaultLineChartConfig.width, this.doc.body.clientWidth - defaultLineChartConfig.margin.left - defaultLineChartConfig.margin.right - bodyWidthAdjustment);
30
+ const xTicksScale = 50;
31
+ const ticks = {
32
+ x: width / xTicksScale,
33
+ y: Math.max(...this.data.map(item => item.value)),
34
+ };
35
+ const height = Math.min(this.options.height ?? width, this.doc.body.clientWidth - defaultLineChartConfig.margin.top - defaultLineChartConfig.margin.bottom - bodyWidthAdjustment);
36
+ const options = {
37
+ width,
38
+ height,
39
+ ticks,
40
+ ...this.options,
41
+ };
42
+ return options;
43
+ }
44
+ /**
45
+ * Draws the chart.
46
+ */
47
+ drawChart() {
48
+ if (typeof this.container !== 'undefined') {
49
+ const options = this.chartOptions();
50
+ this.d3Factory.drawLineChart(this.container, this.data, options);
51
+ }
52
+ }
53
+ /**
54
+ * Actually draws the chart after the component view is initialized.
55
+ */
56
+ ngAfterViewInit() {
57
+ this.drawChart();
58
+ }
59
+ /**
60
+ * Redraws the chart on changes.
61
+ */
62
+ ngOnChanges(changes) {
63
+ const data = changes.data?.currentValue;
64
+ const options = changes.options?.currentValue;
65
+ if ((typeof data !== 'undefined' && data !== null) || (typeof options !== 'undefined' && options !== null)) {
66
+ this.drawChart();
67
+ }
68
+ }
69
+ }
70
+ /** @nocollapse */ AppLineChartComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: AppLineChartComponent, deps: [{ token: DOCUMENT }, { token: D3_CHART_FACTORY }], target: i0.ɵɵFactoryTarget.Component });
71
+ /** @nocollapse */ AppLineChartComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.6", type: AppLineChartComponent, selector: "app-line-chart", inputs: { chartId: "chartId", data: "data", options: "options" }, viewQueries: [{ propertyName: "container", first: true, predicate: ["container"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div class=\"container\" id=\"{{ chartId }}\" #container></div>\n", styles: [":host{display:flex;flex-direction:row;flex-wrap:nowrap;justify-content:center}:host .container{flex:0 1 auto}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush });
72
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: AppLineChartComponent, decorators: [{
73
+ type: Component,
74
+ args: [{ selector: 'app-line-chart', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"container\" id=\"{{ chartId }}\" #container></div>\n", styles: [":host{display:flex;flex-direction:row;flex-wrap:nowrap;justify-content:center}:host .container{flex:0 1 auto}\n"] }]
75
+ }], ctorParameters: function () { return [{ type: Document, decorators: [{
76
+ type: Inject,
77
+ args: [DOCUMENT]
78
+ }] }, { type: undefined, decorators: [{
79
+ type: Inject,
80
+ args: [D3_CHART_FACTORY]
81
+ }] }]; }, propDecorators: { chartId: [{
82
+ type: Input
83
+ }], data: [{
84
+ type: Input
85
+ }], options: [{
86
+ type: Input
87
+ }], container: [{
88
+ type: ViewChild,
89
+ args: ['container']
90
+ }] } });
91
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGluZS1jaGFydC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NsaWVudC1kMy1jaGFydHMvc3JjL2xpYi9jb21wb25lbnRzL2xpbmUtY2hhcnQvbGluZS1jaGFydC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NsaWVudC1kMy1jaGFydHMvc3JjL2xpYi9jb21wb25lbnRzL2xpbmUtY2hhcnQvbGluZS1jaGFydC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDM0MsT0FBTyxFQUVMLHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsVUFBVSxFQUNWLE1BQU0sRUFDTixLQUFLLEVBR0wsU0FBUyxHQUNWLE1BQU0sZUFBZSxDQUFDO0FBR3ZCLE9BQU8sRUFBRSxnQkFBZ0IsRUFBbUIsTUFBTSwyQ0FBMkMsQ0FBQztBQUM5RixPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxZQUFZLENBQUM7O0FBYXBELE1BQU0sT0FBTyxxQkFBcUI7SUFxQmhDLFlBQStDLEdBQWEsRUFBNkMsU0FBMEI7UUFBcEYsUUFBRyxHQUFILEdBQUcsQ0FBVTtRQUE2QyxjQUFTLEdBQVQsU0FBUyxDQUFpQjtRQXBCbkk7O1dBRUc7UUFDYSxZQUFPLEdBQUcsUUFBUSxDQUFDO1FBRW5DOztXQUVHO1FBQ2EsU0FBSSxHQUFtQixFQUFFLENBQUM7UUFFMUM7O1dBRUc7UUFDYSxZQUFPLEdBQStCLEVBQUUsQ0FBQztJQU82RSxDQUFDO0lBRXZJOzs7T0FHRztJQUNLLFlBQVk7UUFDbEIsTUFBTSxtQkFBbUIsR0FBRyxFQUFFLENBQUM7UUFDL0IsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FDcEIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLElBQUksc0JBQXNCLENBQUMsS0FBSyxFQUNsRCxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxXQUFXLEdBQUcsc0JBQXNCLENBQUMsTUFBTSxDQUFDLElBQUksR0FBRyxzQkFBc0IsQ0FBQyxNQUFNLENBQUMsS0FBSyxHQUFHLG1CQUFtQixDQUMzSCxDQUFDO1FBQ0YsTUFBTSxXQUFXLEdBQUcsRUFBRSxDQUFDO1FBQ3ZCLE1BQU0sS0FBSyxHQUErQjtZQUN4QyxDQUFDLEVBQUUsS0FBSyxHQUFHLFdBQVc7WUFDdEIsQ0FBQyxFQUFFLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztTQUNsRCxDQUFDO1FBQ0YsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FDckIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLElBQUksS0FBSyxFQUM1QixJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxXQUFXLEdBQUcsc0JBQXNCLENBQUMsTUFBTSxDQUFDLEdBQUcsR0FBRyxzQkFBc0IsQ0FBQyxNQUFNLENBQUMsTUFBTSxHQUFHLG1CQUFtQixDQUMzSCxDQUFDO1FBQ0YsTUFBTSxPQUFPLEdBQStCO1lBQzFDLEtBQUs7WUFDTCxNQUFNO1lBQ04sS0FBSztZQUNMLEdBQUcsSUFBSSxDQUFDLE9BQU87U0FDaEIsQ0FBQztRQUNGLE9BQU8sT0FBTyxDQUFDO0lBQ2pCLENBQUM7SUFFRDs7T0FFRztJQUNLLFNBQVM7UUFDZixJQUFJLE9BQU8sSUFBSSxDQUFDLFNBQVMsS0FBSyxXQUFXLEVBQUU7WUFDekMsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1lBQ3BDLElBQUksQ0FBQyxTQUFTLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLElBQUksRUFBRSxPQUFPLENBQUMsQ0FBQztTQUNsRTtJQUNILENBQUM7SUFFRDs7T0FFRztJQUNJLGVBQWU7UUFDcEIsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO0lBQ25CLENBQUM7SUFFRDs7T0FFRztJQUNJLFdBQVcsQ0FBQyxPQUFzQjtRQUN2QyxNQUFNLElBQUksR0FBMkIsT0FBTyxDQUFDLElBQUksRUFBRSxZQUFZLENBQUM7UUFDaEUsTUFBTSxPQUFPLEdBQStCLE9BQU8sQ0FBQyxPQUFPLEVBQUUsWUFBWSxDQUFDO1FBQzFFLElBQUksQ0FBQyxPQUFPLElBQUksS0FBSyxXQUFXLElBQUksSUFBSSxLQUFLLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxPQUFPLEtBQUssV0FBVyxJQUFJLE9BQU8sS0FBSyxJQUFJLENBQUMsRUFBRTtZQUMxRyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7U0FDbEI7SUFDSCxDQUFDOztxSUE3RVUscUJBQXFCLGtCQXFCWixRQUFRLGFBQTBDLGdCQUFnQjt5SEFyQjNFLHFCQUFxQixxUEM1QmxDLG1FQUNBOzJGRDJCYSxxQkFBcUI7a0JBTmpDLFNBQVM7K0JBQ0UsZ0JBQWdCLG1CQUdULHVCQUF1QixDQUFDLE1BQU07MERBdUJLLFFBQVE7MEJBQS9DLE1BQU07MkJBQUMsUUFBUTs7MEJBQW1DLE1BQU07MkJBQUMsZ0JBQWdCOzRDQWpCdEUsT0FBTztzQkFBdEIsS0FBSztnQkFLVSxJQUFJO3NCQUFuQixLQUFLO2dCQUtVLE9BQU87c0JBQXRCLEtBQUs7Z0JBS21DLFNBQVM7c0JBQWpELFNBQVM7dUJBQUMsV0FBVyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERPQ1VNRU5UIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7XG4gIEFmdGVyVmlld0luaXQsXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDb21wb25lbnQsXG4gIEVsZW1lbnRSZWYsXG4gIEluamVjdCxcbiAgSW5wdXQsXG4gIE9uQ2hhbmdlcyxcbiAgU2ltcGxlQ2hhbmdlLFxuICBWaWV3Q2hpbGQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBJTGluZUNoYXJ0RGF0YU5vZGUsIElMaW5lQ2hhcnRPcHRpb25zLCBUTGluZUNoYXJ0RGF0YSB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvbGluZS1jaGFydC5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgRDNfQ0hBUlRfRkFDVE9SWSwgSUQzQ2hhcnRGYWN0b3J5IH0gZnJvbSAnLi4vLi4vcHJvdmlkZXJzL2QzLWNoYXJ0LWZhY3RvcnkucHJvdmlkZXInO1xuaW1wb3J0IHsgZGVmYXVsdExpbmVDaGFydENvbmZpZyB9IGZyb20gJy4uLy4uL3V0aWwnO1xuXG5pbnRlcmZhY2UgSUlucHV0Q2hhbmdlcyB7XG4gIGRhdGE/OiBTaW1wbGVDaGFuZ2UgfCBudWxsO1xuICBvcHRpb25zPzogU2ltcGxlQ2hhbmdlIHwgbnVsbDtcbn1cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXBwLWxpbmUtY2hhcnQnLFxuICB0ZW1wbGF0ZVVybDogJy4vbGluZS1jaGFydC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2xpbmUtY2hhcnQuY29tcG9uZW50LnNjc3MnXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIEFwcExpbmVDaGFydENvbXBvbmVudCBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQsIE9uQ2hhbmdlcyB7XG4gIC8qKlxuICAgKiBUaGUgY2hhcnQgaWQuXG4gICAqL1xuICBASW5wdXQoKSBwdWJsaWMgY2hhcnRJZCA9ICdsaW5lLTAnO1xuXG4gIC8qKlxuICAgKiBUaGUgY2hhcnQgZGF0YS5cbiAgICovXG4gIEBJbnB1dCgpIHB1YmxpYyBkYXRhOiBUTGluZUNoYXJ0RGF0YSA9IFtdO1xuXG4gIC8qKlxuICAgKiBUaGUgY2hhcnQgb3B0aW9ucy5cbiAgICovXG4gIEBJbnB1dCgpIHB1YmxpYyBvcHRpb25zOiBQYXJ0aWFsPElMaW5lQ2hhcnRPcHRpb25zPiA9IHt9O1xuXG4gIC8qKlxuICAgKiBEMyBjaGFydCB2aWV3IGNoaWxkIHJlZmVyZW5jZS5cbiAgICovXG4gIEBWaWV3Q2hpbGQoJ2NvbnRhaW5lcicpIHByaXZhdGUgcmVhZG9ubHkgY29udGFpbmVyPzogRWxlbWVudFJlZjxIVE1MRGl2RWxlbWVudD47XG5cbiAgY29uc3RydWN0b3IoQEluamVjdChET0NVTUVOVCkgcHJpdmF0ZSByZWFkb25seSBkb2M6IERvY3VtZW50LCBASW5qZWN0KEQzX0NIQVJUX0ZBQ1RPUlkpIHByaXZhdGUgcmVhZG9ubHkgZDNGYWN0b3J5OiBJRDNDaGFydEZhY3RvcnkpIHt9XG5cbiAgLyoqXG4gICAqIFRoZSBjaGFydCBvcHRpb25zIGNvbnN0cnVjdG9yLlxuICAgKiBAcmV0dXJucyBjaGFydCBvcHRpb25zXG4gICAqL1xuICBwcml2YXRlIGNoYXJ0T3B0aW9ucygpIHtcbiAgICBjb25zdCBib2R5V2lkdGhBZGp1c3RtZW50ID0gMTA7XG4gICAgY29uc3Qgd2lkdGggPSBNYXRoLm1pbihcbiAgICAgIHRoaXMub3B0aW9ucy53aWR0aCA/PyBkZWZhdWx0TGluZUNoYXJ0Q29uZmlnLndpZHRoLFxuICAgICAgdGhpcy5kb2MuYm9keS5jbGllbnRXaWR0aCAtIGRlZmF1bHRMaW5lQ2hhcnRDb25maWcubWFyZ2luLmxlZnQgLSBkZWZhdWx0TGluZUNoYXJ0Q29uZmlnLm1hcmdpbi5yaWdodCAtIGJvZHlXaWR0aEFkanVzdG1lbnQsXG4gICAgKTtcbiAgICBjb25zdCB4VGlja3NTY2FsZSA9IDUwO1xuICAgIGNvbnN0IHRpY2tzOiBJTGluZUNoYXJ0T3B0aW9uc1sndGlja3MnXSA9IHtcbiAgICAgIHg6IHdpZHRoIC8geFRpY2tzU2NhbGUsXG4gICAgICB5OiBNYXRoLm1heCguLi50aGlzLmRhdGEubWFwKGl0ZW0gPT4gaXRlbS52YWx1ZSkpLFxuICAgIH07XG4gICAgY29uc3QgaGVpZ2h0ID0gTWF0aC5taW4oXG4gICAgICB0aGlzLm9wdGlvbnMuaGVpZ2h0ID8/IHdpZHRoLFxuICAgICAgdGhpcy5kb2MuYm9keS5jbGllbnRXaWR0aCAtIGRlZmF1bHRMaW5lQ2hhcnRDb25maWcubWFyZ2luLnRvcCAtIGRlZmF1bHRMaW5lQ2hhcnRDb25maWcubWFyZ2luLmJvdHRvbSAtIGJvZHlXaWR0aEFkanVzdG1lbnQsXG4gICAgKTtcbiAgICBjb25zdCBvcHRpb25zOiBQYXJ0aWFsPElMaW5lQ2hhcnRPcHRpb25zPiA9IHtcbiAgICAgIHdpZHRoLFxuICAgICAgaGVpZ2h0LFxuICAgICAgdGlja3MsXG4gICAgICAuLi50aGlzLm9wdGlvbnMsXG4gICAgfTtcbiAgICByZXR1cm4gb3B0aW9ucztcbiAgfVxuXG4gIC8qKlxuICAgKiBEcmF3cyB0aGUgY2hhcnQuXG4gICAqL1xuICBwcml2YXRlIGRyYXdDaGFydCgpIHtcbiAgICBpZiAodHlwZW9mIHRoaXMuY29udGFpbmVyICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgY29uc3Qgb3B0aW9ucyA9IHRoaXMuY2hhcnRPcHRpb25zKCk7XG4gICAgICB0aGlzLmQzRmFjdG9yeS5kcmF3TGluZUNoYXJ0KHRoaXMuY29udGFpbmVyLCB0aGlzLmRhdGEsIG9wdGlvbnMpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBBY3R1YWxseSBkcmF3cyB0aGUgY2hhcnQgYWZ0ZXIgdGhlIGNvbXBvbmVudCB2aWV3IGlzIGluaXRpYWxpemVkLlxuICAgKi9cbiAgcHVibGljIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmRyYXdDaGFydCgpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlZHJhd3MgdGhlIGNoYXJ0IG9uIGNoYW5nZXMuXG4gICAqL1xuICBwdWJsaWMgbmdPbkNoYW5nZXMoY2hhbmdlczogSUlucHV0Q2hhbmdlcyk6IHZvaWQge1xuICAgIGNvbnN0IGRhdGE6IElMaW5lQ2hhcnREYXRhTm9kZVtdW10gPSBjaGFuZ2VzLmRhdGE/LmN1cnJlbnRWYWx1ZTtcbiAgICBjb25zdCBvcHRpb25zOiBQYXJ0aWFsPElMaW5lQ2hhcnRPcHRpb25zPiA9IGNoYW5nZXMub3B0aW9ucz8uY3VycmVudFZhbHVlO1xuICAgIGlmICgodHlwZW9mIGRhdGEgIT09ICd1bmRlZmluZWQnICYmIGRhdGEgIT09IG51bGwpIHx8ICh0eXBlb2Ygb3B0aW9ucyAhPT0gJ3VuZGVmaW5lZCcgJiYgb3B0aW9ucyAhPT0gbnVsbCkpIHtcbiAgICAgIHRoaXMuZHJhd0NoYXJ0KCk7XG4gICAgfVxuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwiY29udGFpbmVyXCIgaWQ9XCJ7eyBjaGFydElkIH19XCIgI2NvbnRhaW5lcj48L2Rpdj5cbiJdfQ==
@@ -0,0 +1,90 @@
1
+ import { DOCUMENT } from '@angular/common';
2
+ import { ChangeDetectionStrategy, Component, ElementRef, Inject, Input, ViewChild, } from '@angular/core';
3
+ import { D3_CHART_FACTORY } from '../../providers/d3-chart-factory.provider';
4
+ import * as i0 from "@angular/core";
5
+ export class AppPieChartComponent {
6
+ constructor(doc, d3Factory) {
7
+ this.doc = doc;
8
+ this.d3Factory = d3Factory;
9
+ /**
10
+ * The chart id.
11
+ */
12
+ this.chartId = 'pie-0';
13
+ /**
14
+ * The chart data.
15
+ */
16
+ this.data = [];
17
+ /**
18
+ * The chart options.
19
+ */
20
+ this.options = {};
21
+ }
22
+ /**
23
+ * The chart options constructor.
24
+ * @returns chart options
25
+ */
26
+ chartOptions() {
27
+ const margin = { top: 50, right: 50, bottom: 50, left: 50 };
28
+ const minWidth = 350;
29
+ const modifiers = {
30
+ width: 10,
31
+ height: 20,
32
+ };
33
+ const width = Math.min(minWidth, this.doc.body.clientWidth - modifiers.width) - margin.left - margin.right;
34
+ const height = Math.min(width, this.doc.body.clientHeight - margin.top - margin.bottom - modifiers.height);
35
+ const options = {
36
+ width,
37
+ height,
38
+ margin,
39
+ ...this.options,
40
+ };
41
+ return options;
42
+ }
43
+ /**
44
+ * Draws the chart.
45
+ */
46
+ drawChart() {
47
+ if (typeof this.container !== 'undefined') {
48
+ const options = this.chartOptions();
49
+ this.d3Factory.drawPieChart(this.container, this.data, options);
50
+ }
51
+ }
52
+ /**
53
+ * Actually draws the chart after the component view is initialized.
54
+ */
55
+ ngAfterViewInit() {
56
+ this.drawChart();
57
+ }
58
+ /**
59
+ * Redraws the chart on changes.
60
+ */
61
+ ngOnChanges(changes) {
62
+ const data = changes.data?.currentValue;
63
+ const options = changes.options?.currentValue;
64
+ if ((typeof data !== 'undefined' && data !== null) || (typeof options !== 'undefined' && options !== null)) {
65
+ this.drawChart();
66
+ }
67
+ }
68
+ }
69
+ /** @nocollapse */ AppPieChartComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: AppPieChartComponent, deps: [{ token: DOCUMENT }, { token: D3_CHART_FACTORY }], target: i0.ɵɵFactoryTarget.Component });
70
+ /** @nocollapse */ AppPieChartComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.6", type: AppPieChartComponent, selector: "app-pie-chart", inputs: { chartId: "chartId", data: "data", options: "options" }, viewQueries: [{ propertyName: "container", first: true, predicate: ["container"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div class=\"container\">\n <div id=\"{{ chartId }}\" #container></div>\n\n <small class=\"container--chart-title\">{{ options.chartTitle }}</small>\n</div>\n", styles: [":host{display:flex;flex-direction:row;flex-wrap:nowrap;justify-content:center}:host canvas{width:auto!important;height:150px}:host .container{flex:0 1 auto}:host .container--chart-title{display:block;text-align:center}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush });
71
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: AppPieChartComponent, decorators: [{
72
+ type: Component,
73
+ args: [{ selector: 'app-pie-chart', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"container\">\n <div id=\"{{ chartId }}\" #container></div>\n\n <small class=\"container--chart-title\">{{ options.chartTitle }}</small>\n</div>\n", styles: [":host{display:flex;flex-direction:row;flex-wrap:nowrap;justify-content:center}:host canvas{width:auto!important;height:150px}:host .container{flex:0 1 auto}:host .container--chart-title{display:block;text-align:center}\n"] }]
74
+ }], ctorParameters: function () { return [{ type: Document, decorators: [{
75
+ type: Inject,
76
+ args: [DOCUMENT]
77
+ }] }, { type: undefined, decorators: [{
78
+ type: Inject,
79
+ args: [D3_CHART_FACTORY]
80
+ }] }]; }, propDecorators: { chartId: [{
81
+ type: Input
82
+ }], data: [{
83
+ type: Input
84
+ }], options: [{
85
+ type: Input
86
+ }], container: [{
87
+ type: ViewChild,
88
+ args: ['container']
89
+ }] } });
90
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGllLWNoYXJ0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY2xpZW50LWQzLWNoYXJ0cy9zcmMvbGliL2NvbXBvbmVudHMvcGllLWNoYXJ0L3BpZS1jaGFydC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NsaWVudC1kMy1jaGFydHMvc3JjL2xpYi9jb21wb25lbnRzL3BpZS1jaGFydC9waWUtY2hhcnQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzNDLE9BQU8sRUFFTCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULFVBQVUsRUFDVixNQUFNLEVBQ04sS0FBSyxFQUdMLFNBQVMsR0FDVixNQUFNLGVBQWUsQ0FBQztBQUd2QixPQUFPLEVBQUUsZ0JBQWdCLEVBQW1CLE1BQU0sMkNBQTJDLENBQUM7O0FBYTlGLE1BQU0sT0FBTyxvQkFBb0I7SUFxQi9CLFlBQStDLEdBQWEsRUFBNkMsU0FBMEI7UUFBcEYsUUFBRyxHQUFILEdBQUcsQ0FBVTtRQUE2QyxjQUFTLEdBQVQsU0FBUyxDQUFpQjtRQXBCbkk7O1dBRUc7UUFDYSxZQUFPLEdBQUcsT0FBTyxDQUFDO1FBRWxDOztXQUVHO1FBQ2EsU0FBSSxHQUF3QixFQUFFLENBQUM7UUFFL0M7O1dBRUc7UUFDYSxZQUFPLEdBQThCLEVBQUUsQ0FBQztJQU84RSxDQUFDO0lBRXZJOzs7T0FHRztJQUNLLFlBQVk7UUFDbEIsTUFBTSxNQUFNLEdBQStCLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxLQUFLLEVBQUUsRUFBRSxFQUFFLE1BQU0sRUFBRSxFQUFFLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRSxDQUFDO1FBQ3hGLE1BQU0sUUFBUSxHQUFHLEdBQUcsQ0FBQztRQUNyQixNQUFNLFNBQVMsR0FBRztZQUNoQixLQUFLLEVBQUUsRUFBRTtZQUNULE1BQU0sRUFBRSxFQUFFO1NBQ1gsQ0FBQztRQUNGLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFdBQVcsR0FBRyxTQUFTLENBQUMsS0FBSyxDQUFDLEdBQUcsTUFBTSxDQUFDLElBQUksR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDO1FBQzNHLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFlBQVksR0FBRyxNQUFNLENBQUMsR0FBRyxHQUFHLE1BQU0sQ0FBQyxNQUFNLEdBQUcsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQzNHLE1BQU0sT0FBTyxHQUE4QjtZQUN6QyxLQUFLO1lBQ0wsTUFBTTtZQUNOLE1BQU07WUFDTixHQUFHLElBQUksQ0FBQyxPQUFPO1NBQ2hCLENBQUM7UUFDRixPQUFPLE9BQU8sQ0FBQztJQUNqQixDQUFDO0lBRUQ7O09BRUc7SUFDSyxTQUFTO1FBQ2YsSUFBSSxPQUFPLElBQUksQ0FBQyxTQUFTLEtBQUssV0FBVyxFQUFFO1lBQ3pDLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztZQUNwQyxJQUFJLENBQUMsU0FBUyxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxJQUFJLEVBQUUsT0FBTyxDQUFDLENBQUM7U0FDakU7SUFDSCxDQUFDO0lBRUQ7O09BRUc7SUFDSSxlQUFlO1FBQ3BCLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztJQUNuQixDQUFDO0lBRUQ7O09BRUc7SUFDSSxXQUFXLENBQUMsT0FBc0I7UUFDdkMsTUFBTSxJQUFJLEdBQW9DLE9BQU8sQ0FBQyxJQUFJLEVBQUUsWUFBWSxDQUFDO1FBQ3pFLE1BQU0sT0FBTyxHQUE4QixPQUFPLENBQUMsT0FBTyxFQUFFLFlBQVksQ0FBQztRQUN6RSxJQUFJLENBQUMsT0FBTyxJQUFJLEtBQUssV0FBVyxJQUFJLElBQUksS0FBSyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sT0FBTyxLQUFLLFdBQVcsSUFBSSxPQUFPLEtBQUssSUFBSSxDQUFDLEVBQUU7WUFDMUcsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1NBQ2xCO0lBQ0gsQ0FBQzs7b0lBdkVVLG9CQUFvQixrQkFxQlgsUUFBUSxhQUEwQyxnQkFBZ0I7d0hBckIzRSxvQkFBb0Isb1BDM0JqQyxrS0FLQTsyRkRzQmEsb0JBQW9CO2tCQU5oQyxTQUFTOytCQUNFLGVBQWUsbUJBR1IsdUJBQXVCLENBQUMsTUFBTTswREF1QkssUUFBUTswQkFBL0MsTUFBTTsyQkFBQyxRQUFROzswQkFBbUMsTUFBTTsyQkFBQyxnQkFBZ0I7NENBakJ0RSxPQUFPO3NCQUF0QixLQUFLO2dCQUtVLElBQUk7c0JBQW5CLEtBQUs7Z0JBS1UsT0FBTztzQkFBdEIsS0FBSztnQkFLbUMsU0FBUztzQkFBakQsU0FBUzt1QkFBQyxXQUFXIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRE9DVU1FTlQgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtcbiAgQWZ0ZXJWaWV3SW5pdCxcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENvbXBvbmVudCxcbiAgRWxlbWVudFJlZixcbiAgSW5qZWN0LFxuICBJbnB1dCxcbiAgT25DaGFuZ2VzLFxuICBTaW1wbGVDaGFuZ2UsXG4gIFZpZXdDaGlsZCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IElQaWVDaGFydERhdGFOb2RlLCBJUGllQ2hhcnRPcHRpb25zIH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy9waWUtY2hhcnQuaW50ZXJmYWNlJztcbmltcG9ydCB7IEQzX0NIQVJUX0ZBQ1RPUlksIElEM0NoYXJ0RmFjdG9yeSB9IGZyb20gJy4uLy4uL3Byb3ZpZGVycy9kMy1jaGFydC1mYWN0b3J5LnByb3ZpZGVyJztcblxuaW50ZXJmYWNlIElJbnB1dENoYW5nZXMge1xuICBkYXRhPzogU2ltcGxlQ2hhbmdlIHwgbnVsbDtcbiAgb3B0aW9ucz86IFNpbXBsZUNoYW5nZSB8IG51bGw7XG59XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2FwcC1waWUtY2hhcnQnLFxuICB0ZW1wbGF0ZVVybDogJy4vcGllLWNoYXJ0LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vcGllLWNoYXJ0LmNvbXBvbmVudC5zY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBBcHBQaWVDaGFydENvbXBvbmVudCBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQsIE9uQ2hhbmdlcyB7XG4gIC8qKlxuICAgKiBUaGUgY2hhcnQgaWQuXG4gICAqL1xuICBASW5wdXQoKSBwdWJsaWMgY2hhcnRJZCA9ICdwaWUtMCc7XG5cbiAgLyoqXG4gICAqIFRoZSBjaGFydCBkYXRhLlxuICAgKi9cbiAgQElucHV0KCkgcHVibGljIGRhdGE6IElQaWVDaGFydERhdGFOb2RlW10gPSBbXTtcblxuICAvKipcbiAgICogVGhlIGNoYXJ0IG9wdGlvbnMuXG4gICAqL1xuICBASW5wdXQoKSBwdWJsaWMgb3B0aW9uczogUGFydGlhbDxJUGllQ2hhcnRPcHRpb25zPiA9IHt9O1xuXG4gIC8qKlxuICAgKiBEMyBjaGFydCB2aWV3IGNoaWxkIHJlZmVyZW5jZS5cbiAgICovXG4gIEBWaWV3Q2hpbGQoJ2NvbnRhaW5lcicpIHByaXZhdGUgcmVhZG9ubHkgY29udGFpbmVyPzogRWxlbWVudFJlZjxIVE1MRGl2RWxlbWVudD47XG5cbiAgY29uc3RydWN0b3IoQEluamVjdChET0NVTUVOVCkgcHJpdmF0ZSByZWFkb25seSBkb2M6IERvY3VtZW50LCBASW5qZWN0KEQzX0NIQVJUX0ZBQ1RPUlkpIHByaXZhdGUgcmVhZG9ubHkgZDNGYWN0b3J5OiBJRDNDaGFydEZhY3RvcnkpIHt9XG5cbiAgLyoqXG4gICAqIFRoZSBjaGFydCBvcHRpb25zIGNvbnN0cnVjdG9yLlxuICAgKiBAcmV0dXJucyBjaGFydCBvcHRpb25zXG4gICAqL1xuICBwcml2YXRlIGNoYXJ0T3B0aW9ucygpIHtcbiAgICBjb25zdCBtYXJnaW46IElQaWVDaGFydE9wdGlvbnNbJ21hcmdpbiddID0geyB0b3A6IDUwLCByaWdodDogNTAsIGJvdHRvbTogNTAsIGxlZnQ6IDUwIH07XG4gICAgY29uc3QgbWluV2lkdGggPSAzNTA7XG4gICAgY29uc3QgbW9kaWZpZXJzID0ge1xuICAgICAgd2lkdGg6IDEwLFxuICAgICAgaGVpZ2h0OiAyMCxcbiAgICB9O1xuICAgIGNvbnN0IHdpZHRoID0gTWF0aC5taW4obWluV2lkdGgsIHRoaXMuZG9jLmJvZHkuY2xpZW50V2lkdGggLSBtb2RpZmllcnMud2lkdGgpIC0gbWFyZ2luLmxlZnQgLSBtYXJnaW4ucmlnaHQ7XG4gICAgY29uc3QgaGVpZ2h0ID0gTWF0aC5taW4od2lkdGgsIHRoaXMuZG9jLmJvZHkuY2xpZW50SGVpZ2h0IC0gbWFyZ2luLnRvcCAtIG1hcmdpbi5ib3R0b20gLSBtb2RpZmllcnMuaGVpZ2h0KTtcbiAgICBjb25zdCBvcHRpb25zOiBQYXJ0aWFsPElQaWVDaGFydE9wdGlvbnM+ID0ge1xuICAgICAgd2lkdGgsXG4gICAgICBoZWlnaHQsXG4gICAgICBtYXJnaW4sXG4gICAgICAuLi50aGlzLm9wdGlvbnMsXG4gICAgfTtcbiAgICByZXR1cm4gb3B0aW9ucztcbiAgfVxuXG4gIC8qKlxuICAgKiBEcmF3cyB0aGUgY2hhcnQuXG4gICAqL1xuICBwcml2YXRlIGRyYXdDaGFydCgpIHtcbiAgICBpZiAodHlwZW9mIHRoaXMuY29udGFpbmVyICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgY29uc3Qgb3B0aW9ucyA9IHRoaXMuY2hhcnRPcHRpb25zKCk7XG4gICAgICB0aGlzLmQzRmFjdG9yeS5kcmF3UGllQ2hhcnQodGhpcy5jb250YWluZXIsIHRoaXMuZGF0YSwgb3B0aW9ucyk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEFjdHVhbGx5IGRyYXdzIHRoZSBjaGFydCBhZnRlciB0aGUgY29tcG9uZW50IHZpZXcgaXMgaW5pdGlhbGl6ZWQuXG4gICAqL1xuICBwdWJsaWMgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgIHRoaXMuZHJhd0NoYXJ0KCk7XG4gIH1cblxuICAvKipcbiAgICogUmVkcmF3cyB0aGUgY2hhcnQgb24gY2hhbmdlcy5cbiAgICovXG4gIHB1YmxpYyBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBJSW5wdXRDaGFuZ2VzKTogdm9pZCB7XG4gICAgY29uc3QgZGF0YTogSVBpZUNoYXJ0RGF0YU5vZGVbXSB8IHVuZGVmaW5lZCA9IGNoYW5nZXMuZGF0YT8uY3VycmVudFZhbHVlO1xuICAgIGNvbnN0IG9wdGlvbnM6IFBhcnRpYWw8SVBpZUNoYXJ0T3B0aW9ucz4gPSBjaGFuZ2VzLm9wdGlvbnM/LmN1cnJlbnRWYWx1ZTtcbiAgICBpZiAoKHR5cGVvZiBkYXRhICE9PSAndW5kZWZpbmVkJyAmJiBkYXRhICE9PSBudWxsKSB8fCAodHlwZW9mIG9wdGlvbnMgIT09ICd1bmRlZmluZWQnICYmIG9wdGlvbnMgIT09IG51bGwpKSB7XG4gICAgICB0aGlzLmRyYXdDaGFydCgpO1xuICAgIH1cbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cImNvbnRhaW5lclwiPlxuICA8ZGl2IGlkPVwie3sgY2hhcnRJZCB9fVwiICNjb250YWluZXI+PC9kaXY+XG5cbiAgPHNtYWxsIGNsYXNzPVwiY29udGFpbmVyLS1jaGFydC10aXRsZVwiPnt7IG9wdGlvbnMuY2hhcnRUaXRsZSB9fTwvc21hbGw+XG48L2Rpdj5cbiJdfQ==
@@ -0,0 +1,102 @@
1
+ import { DOCUMENT } from '@angular/common';
2
+ import { ChangeDetectionStrategy, Component, ElementRef, Inject, Input, ViewChild, } from '@angular/core';
3
+ import { D3_CHART_FACTORY } from '../../providers/d3-chart-factory.provider';
4
+ import { defaultRadarChartConfig } from '../../util';
5
+ import * as i0 from "@angular/core";
6
+ export class AppRadarChartComponent {
7
+ constructor(doc, d3Factory) {
8
+ this.doc = doc;
9
+ this.d3Factory = d3Factory;
10
+ /**
11
+ * The chart id.
12
+ */
13
+ this.chartId = 'radar-0';
14
+ /**
15
+ * The chart data.
16
+ */
17
+ this.data = [[]];
18
+ /**
19
+ * The chart options.
20
+ */
21
+ this.options = {};
22
+ }
23
+ /**
24
+ * The chart options constructor.
25
+ * @returns chart options
26
+ */
27
+ chartOptions() {
28
+ const xsOffset = 500;
29
+ const smOffset = 800;
30
+ const mdOffset = 1024;
31
+ const labelFactorDefault = 1.15;
32
+ const labelFactorMd = 1.15;
33
+ const labelFactorSm = 1.15;
34
+ const labelFactorXs = 1.4;
35
+ const wrapWidthDefault = 85;
36
+ const wrapWidthMd = 80;
37
+ const wrapWidthXs = 70;
38
+ const bodyWidthAdjustment = 10;
39
+ const width = Math.min(this.options.width ?? defaultRadarChartConfig.width, this.doc.body.clientWidth - defaultRadarChartConfig.margin.left - defaultRadarChartConfig.margin.right - bodyWidthAdjustment);
40
+ const height = Math.min(width, this.doc.body.clientHeight - defaultRadarChartConfig.margin.top - defaultRadarChartConfig.margin.bottom - bodyWidthAdjustment);
41
+ const labelFactor = width <= xsOffset ? labelFactorXs : width <= smOffset ? labelFactorSm : width <= mdOffset ? labelFactorMd : labelFactorDefault;
42
+ const labelTextWrapWidth = width <= xsOffset ? wrapWidthXs : width <= mdOffset ? wrapWidthMd : wrapWidthDefault;
43
+ const options = {
44
+ width,
45
+ height,
46
+ maxValue: this.data[0].reduce((accumulator, item) => (item.value > accumulator ? item.value : accumulator), 0) + 1,
47
+ levels: 5,
48
+ roundStrokes: true,
49
+ labelFactor,
50
+ labelTextWrapWidth,
51
+ ...this.options,
52
+ };
53
+ return options;
54
+ }
55
+ /**
56
+ * Draws the chart.
57
+ */
58
+ drawChart() {
59
+ if (typeof this.container !== 'undefined') {
60
+ const options = this.chartOptions();
61
+ this.d3Factory.drawRadarChart(this.container, this.data, options);
62
+ }
63
+ }
64
+ /**
65
+ * Actually draws the chart after the component view is initialized.
66
+ */
67
+ ngAfterViewInit() {
68
+ this.drawChart();
69
+ }
70
+ /**
71
+ * Redraws the chart on changes.
72
+ */
73
+ ngOnChanges(changes) {
74
+ const currentValue = changes.data?.currentValue;
75
+ const options = changes.options?.currentValue;
76
+ if ((typeof currentValue !== 'undefined' && currentValue !== null) || (typeof options !== 'undefined' && options !== null)) {
77
+ this.drawChart();
78
+ }
79
+ }
80
+ }
81
+ /** @nocollapse */ AppRadarChartComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: AppRadarChartComponent, deps: [{ token: DOCUMENT }, { token: D3_CHART_FACTORY }], target: i0.ɵɵFactoryTarget.Component });
82
+ /** @nocollapse */ AppRadarChartComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.6", type: AppRadarChartComponent, selector: "app-radar-chart", inputs: { chartId: "chartId", data: "data", options: "options" }, viewQueries: [{ propertyName: "container", first: true, predicate: ["container"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div class=\"container\" id=\"{{ chartId }}\" #container></div>\n", styles: [":host{display:flex;flex-direction:row;flex-wrap:nowrap;justify-content:center}:host .container{flex:0 1 auto}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush });
83
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: AppRadarChartComponent, decorators: [{
84
+ type: Component,
85
+ args: [{ selector: 'app-radar-chart', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"container\" id=\"{{ chartId }}\" #container></div>\n", styles: [":host{display:flex;flex-direction:row;flex-wrap:nowrap;justify-content:center}:host .container{flex:0 1 auto}\n"] }]
86
+ }], ctorParameters: function () { return [{ type: Document, decorators: [{
87
+ type: Inject,
88
+ args: [DOCUMENT]
89
+ }] }, { type: undefined, decorators: [{
90
+ type: Inject,
91
+ args: [D3_CHART_FACTORY]
92
+ }] }]; }, propDecorators: { chartId: [{
93
+ type: Input
94
+ }], data: [{
95
+ type: Input
96
+ }], options: [{
97
+ type: Input
98
+ }], container: [{
99
+ type: ViewChild,
100
+ args: ['container']
101
+ }] } });
102
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmFkYXItY2hhcnQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jbGllbnQtZDMtY2hhcnRzL3NyYy9saWIvY29tcG9uZW50cy9yYWRhci1jaGFydC9yYWRhci1jaGFydC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NsaWVudC1kMy1jaGFydHMvc3JjL2xpYi9jb21wb25lbnRzL3JhZGFyLWNoYXJ0L3JhZGFyLWNoYXJ0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMzQyxPQUFPLEVBRUwsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxVQUFVLEVBQ1YsTUFBTSxFQUNOLEtBQUssRUFHTCxTQUFTLEdBQ1YsTUFBTSxlQUFlLENBQUM7QUFHdkIsT0FBTyxFQUFFLGdCQUFnQixFQUFtQixNQUFNLDJDQUEyQyxDQUFDO0FBQzlGLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLFlBQVksQ0FBQzs7QUFhckQsTUFBTSxPQUFPLHNCQUFzQjtJQXFCakMsWUFBK0MsR0FBYSxFQUE2QyxTQUEwQjtRQUFwRixRQUFHLEdBQUgsR0FBRyxDQUFVO1FBQTZDLGNBQVMsR0FBVCxTQUFTLENBQWlCO1FBcEJuSTs7V0FFRztRQUNhLFlBQU8sR0FBRyxTQUFTLENBQUM7UUFFcEM7O1dBRUc7UUFDYSxTQUFJLEdBQTRCLENBQUMsRUFBRSxDQUFDLENBQUM7UUFFckQ7O1dBRUc7UUFDYSxZQUFPLEdBQWdDLEVBQUUsQ0FBQztJQU80RSxDQUFDO0lBRXZJOzs7T0FHRztJQUNLLFlBQVk7UUFDbEIsTUFBTSxRQUFRLEdBQUcsR0FBRyxDQUFDO1FBQ3JCLE1BQU0sUUFBUSxHQUFHLEdBQUcsQ0FBQztRQUNyQixNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUM7UUFDdEIsTUFBTSxrQkFB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Q0FBQyxJQUFJLENBQUMsT0FBTyxPQUFPLEtBQUssV0FBVyxJQUFJLE9BQU8sS0FBSyxJQUFJLENBQUMsRUFBRTtZQUMxSCxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7U0FDbEI7SUFDSCxDQUFDOztzSUF6RlUsc0JBQXNCLGtCQXFCYixRQUFRLGFBQTBDLGdCQUFnQjswSEFyQjNFLHNCQUFzQixzUEM1Qm5DLG1FQUNBOzJGRDJCYSxzQkFBc0I7a0JBTmxDLFNBQVM7K0JBQ0UsaUJBQWlCLG1CQUdWLHVCQUF1QixDQUFDLE1BQU07MERBdUJLLFFBQVE7MEJBQS9DLE1BQU07MkJBQUMsUUFBUTs7MEJBQW1DLE1BQU07MkJBQUMsZ0JBQWdCOzRDQWpCdEUsT0FBTztzQkFBdEIsS0FBSztnQkFLVSxJQUFJO3NCQUFuQixLQUFLO2dCQUtVLE9BQU87c0JBQXRCLEtBQUs7Z0JBS21DLFNBQVM7c0JBQWpELFNBQVM7dUJBQUMsV0FBVyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERPQ1VNRU5UIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7XG4gIEFmdGVyVmlld0luaXQsXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDb21wb25lbnQsXG4gIEVsZW1lbnRSZWYsXG4gIEluamVjdCxcbiAgSW5wdXQsXG4gIE9uQ2hhbmdlcyxcbiAgU2ltcGxlQ2hhbmdlLFxuICBWaWV3Q2hpbGQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBJUmFkYXJDaGFydERhdGFOb2RlLCBJUmFkYXJDaGFydE9wdGlvbnMgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzL3JhZGFyLWNoYXJ0LmludGVyZmFjZSc7XG5pbXBvcnQgeyBEM19DSEFSVF9GQUNUT1JZLCBJRDNDaGFydEZhY3RvcnkgfSBmcm9tICcuLi8uLi9wcm92aWRlcnMvZDMtY2hhcnQtZmFjdG9yeS5wcm92aWRlcic7XG5pbXBvcnQgeyBkZWZhdWx0UmFkYXJDaGFydENvbmZpZyB9IGZyb20gJy4uLy4uL3V0aWwnO1xuXG5pbnRlcmZhY2UgSUlucHV0Q2hhbmdlcyB7XG4gIGRhdGE/OiBTaW1wbGVDaGFuZ2UgfCBudWxsO1xuICBvcHRpb25zPzogU2ltcGxlQ2hhbmdlIHwgbnVsbDtcbn1cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXBwLXJhZGFyLWNoYXJ0JyxcbiAgdGVtcGxhdGVVcmw6ICcuL3JhZGFyLWNoYXJ0LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vcmFkYXItY2hhcnQuY29tcG9uZW50LnNjc3MnXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIEFwcFJhZGFyQ2hhcnRDb21wb25lbnQgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0LCBPbkNoYW5nZXMge1xuICAvKipcbiAgICogVGhlIGNoYXJ0IGlkLlxuICAgKi9cbiAgQElucHV0KCkgcHVibGljIGNoYXJ0SWQgPSAncmFkYXItMCc7XG5cbiAgLyoqXG4gICAqIFRoZSBjaGFydCBkYXRhLlxuICAgKi9cbiAgQElucHV0KCkgcHVibGljIGRhdGE6IElSYWRhckNoYXJ0RGF0YU5vZGVbXVtdID0gW1tdXTtcblxuICAvKipcbiAgICogVGhlIGNoYXJ0IG9wdGlvbnMuXG4gICAqL1xuICBASW5wdXQoKSBwdWJsaWMgb3B0aW9uczogUGFydGlhbDxJUmFkYXJDaGFydE9wdGlvbnM+ID0ge307XG5cbiAgLyoqXG4gICAqIEQzIGNoYXJ0IHZpZXcgY2hpbGQgcmVmZXJlbmNlLlxuICAgKi9cbiAgQFZpZXdDaGlsZCgnY29udGFpbmVyJykgcHJpdmF0ZSByZWFkb25seSBjb250YWluZXI/OiBFbGVtZW50UmVmPEhUTUxEaXZFbGVtZW50PjtcblxuICBjb25zdHJ1Y3RvcihASW5qZWN0KERPQ1VNRU5UKSBwcml2YXRlIHJlYWRvbmx5IGRvYzogRG9jdW1lbnQsIEBJbmplY3QoRDNfQ0hBUlRfRkFDVE9SWSkgcHJpdmF0ZSByZWFkb25seSBkM0ZhY3Rvcnk6IElEM0NoYXJ0RmFjdG9yeSkge31cblxuICAvKipcbiAgICogVGhlIGNoYXJ0IG9wdGlvbnMgY29uc3RydWN0b3IuXG4gICAqIEByZXR1cm5zIGNoYXJ0IG9wdGlvbnNcbiAgICovXG4gIHByaXZhdGUgY2hhcnRPcHRpb25zKCkge1xuICAgIGNvbnN0IHhzT2Zmc2V0ID0gNTAwO1xuICAgIGNvbnN0IHNtT2Zmc2V0ID0gODAwO1xuICAgIGNvbnN0IG1kT2Zmc2V0ID0gMTAyNDtcbiAgICBjb25zdCBsYWJlbEZhY3RvckRlZmF1bHQgPSAxLjE1O1xuICAgIGNvbnN0IGxhYmVsRmFjdG9yTWQgPSAxLjE1O1xuICAgIGNvbnN0IGxhYmVsRmFjdG9yU20gPSAxLjE1O1xuICAgIGNvbnN0IGxhYmVsRmFjdG9yWHMgPSAxLjQ7XG4gICAgY29uc3Qgd3JhcFdpZHRoRGVmYXVsdCA9IDg1O1xuICAgIGNvbnN0IHdyYXBXaWR0aE1kID0gODA7XG4gICAgY29uc3Qgd3JhcFdpZHRoWHMgPSA3MDtcbiAgICBjb25zdCBib2R5V2lkdGhBZGp1c3RtZW50ID0gMTA7XG4gICAgY29uc3Qgd2lkdGggPSBNYXRoLm1pbihcbiAgICAgIHRoaXMub3B0aW9ucy53aWR0aCA/PyBkZWZhdWx0UmFkYXJDaGFydENvbmZpZy53aWR0aCxcbiAgICAgIHRoaXMuZG9jLmJvZHkuY2xpZW50V2lkdGggLSBkZWZhdWx0UmFkYXJDaGFydENvbmZpZy5tYXJnaW4ubGVmdCAtIGRlZmF1bHRSYWRhckNoYXJ0Q29uZmlnLm1hcmdpbi5yaWdodCAtIGJvZHlXaWR0aEFkanVzdG1lbnQsXG4gICAgKTtcbiAgICBjb25zdCBoZWlnaHQgPSBNYXRoLm1pbihcbiAgICAgIHdpZHRoLFxuICAgICAgdGhpcy5kb2MuYm9keS5jbGllbnRIZWlnaHQgLSBkZWZhdWx0UmFkYXJDaGFydENvbmZpZy5tYXJnaW4udG9wIC0gZGVmYXVsdFJhZGFyQ2hhcnRDb25maWcubWFyZ2luLmJvdHRvbSAtIGJvZHlXaWR0aEFkanVzdG1lbnQsXG4gICAgKTtcbiAgICBjb25zdCBsYWJlbEZhY3RvciA9XG4gICAgICB3aWR0aCA8PSB4c09mZnNldCA/IGxhYmVsRmFjdG9yWHMgOiB3aWR0aCA8PSBzbU9mZnNldCA/IGxhYmVsRmFjdG9yU20gOiB3aWR0aCA8PSBtZE9mZnNldCA/IGxhYmVsRmFjdG9yTWQgOiBsYWJlbEZhY3RvckRlZmF1bHQ7XG4gICAgY29uc3QgbGFiZWxUZXh0V3JhcFdpZHRoID0gd2lkdGggPD0geHNPZmZzZXQgPyB3cmFwV2lkdGhYcyA6IHdpZHRoIDw9IG1kT2Zmc2V0ID8gd3JhcFdpZHRoTWQgOiB3cmFwV2lkdGhEZWZhdWx0O1xuICAgIGNvbnN0IG9wdGlvbnM6IFBhcnRpYWw8SVJhZGFyQ2hhcnRPcHRpb25zPiA9IHtcbiAgICAgIHdpZHRoLFxuICAgICAgaGVpZ2h0LFxuICAgICAgbWF4VmFsdWU6IHRoaXMuZGF0YVswXS5yZWR1Y2UoKGFjY3VtdWxhdG9yLCBpdGVtKSA9PiAoaXRlbS52YWx1ZSA+IGFjY3VtdWxhdG9yID8gaXRlbS52YWx1ZSA6IGFjY3VtdWxhdG9yKSwgMCkgKyAxLFxuICAgICAgbGV2ZWxzOiA1LFxuICAgICAgcm91bmRTdHJva2VzOiB0cnVlLFxuICAgICAgbGFiZWxGYWN0b3IsXG4gICAgICBsYWJlbFRleHRXcmFwV2lkdGgsXG4gICAgICAuLi50aGlzLm9wdGlvbnMsXG4gICAgfTtcbiAgICByZXR1cm4gb3B0aW9ucztcbiAgfVxuXG4gIC8qKlxuICAgKiBEcmF3cyB0aGUgY2hhcnQuXG4gICAqL1xuICBwcml2YXRlIGRyYXdDaGFydCgpIHtcbiAgICBpZiAodHlwZW9mIHRoaXMuY29udGFpbmVyICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgY29uc3Qgb3B0aW9ucyA9IHRoaXMuY2hhcnRPcHRpb25zKCk7XG4gICAgICB0aGlzLmQzRmFjdG9yeS5kcmF3UmFkYXJDaGFydCh0aGlzLmNvbnRhaW5lciwgdGhpcy5kYXRhLCBvcHRpb25zKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQWN0dWFsbHkgZHJhd3MgdGhlIGNoYXJ0IGFmdGVyIHRoZSBjb21wb25lbnQgdmlldyBpcyBpbml0aWFsaXplZC5cbiAgICovXG4gIHB1YmxpYyBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgdGhpcy5kcmF3Q2hhcnQoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZWRyYXdzIHRoZSBjaGFydCBvbiBjaGFuZ2VzLlxuICAgKi9cbiAgcHVibGljIG5nT25DaGFuZ2VzKGNoYW5nZXM6IElJbnB1dENoYW5nZXMpOiB2b2lkIHtcbiAgICBjb25zdCBjdXJyZW50VmFsdWU6IElSYWRhckNoYXJ0RGF0YU5vZGVbXVtdID0gY2hhbmdlcy5kYXRhPy5jdXJyZW50VmFsdWU7XG4gICAgY29uc3Qgb3B0aW9uczogUGFydGlhbDxJUmFkYXJDaGFydE9wdGlvbnM+ID0gY2hhbmdlcy5vcHRpb25zPy5jdXJyZW50VmFsdWU7XG4gICAgaWYgKCh0eXBlb2YgY3VycmVudFZhbHVlICE9PSAndW5kZWZpbmVkJyAmJiBjdXJyZW50VmFsdWUgIT09IG51bGwpIHx8ICh0eXBlb2Ygb3B0aW9ucyAhPT0gJ3VuZGVmaW5lZCcgJiYgb3B0aW9ucyAhPT0gbnVsbCkpIHtcbiAgICAgIHRoaXMuZHJhd0NoYXJ0KCk7XG4gICAgfVxuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwiY29udGFpbmVyXCIgaWQ9XCJ7eyBjaGFydElkIH19XCIgI2NvbnRhaW5lcj48L2Rpdj5cbiJdfQ==
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFyLWNoYXJ0LmludGVyZmFjZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY2xpZW50LWQzLWNoYXJ0cy9zcmMvbGliL2ludGVyZmFjZXMvYmFyLWNoYXJ0LmludGVyZmFjZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgZDMgZnJvbSAnZDMnO1xuXG5leHBvcnQgaW50ZXJmYWNlIElCYXJDaGFydERhdGFOb2RlIHtcbiAgdGl0bGU6IHN0cmluZztcbiAgdmFsdWU6IG51bWJlcjtcbn1cblxuZXhwb3J0IHR5cGUgVEJhckNoYXJ0RGF0YSA9IElCYXJDaGFydERhdGFOb2RlW107XG5cbmV4cG9ydCBpbnRlcmZhY2UgSUJhckNoYXJ0T3B0aW9ucyB7XG4gIGNoYXJ0VGl0bGU6IHN0cmluZztcbiAgd2lkdGg6IG51bWJlcjtcbiAgaGVpZ2h0OiBudW1iZXI7XG4gIG1hcmdpbjoge1xuICAgIHRvcDogbnVtYmVyO1xuICAgIHJpZ2h0OiBudW1iZXI7XG4gICAgYm90dG9tOiBudW1iZXI7XG4gICAgbGVmdDogbnVtYmVyO1xuICB9O1xuICB0cmFuc2l0aW9uRHVyYXRpb246IG51bWJlcjtcbiAgeEF4aXNQYWRkaW5nOiBudW1iZXI7XG4gIHhBeGlzVGl0bGU6IHN0cmluZztcbiAgeUF4aXNUaXRsZTogc3RyaW5nO1xuICB5QXhpc1RpY2tzOiBudW1iZXI7XG4gIGRpc3BsYXlBeGlzTGFiZWxzOiBib29sZWFuO1xuICBsYWJlbFRleHRXcmFwV2lkdGg6IG51bWJlcjtcbiAgY29sb3I6IGQzLlNjYWxlT3JkaW5hbDxzdHJpbmcsIHN0cmluZz47XG59XG4iXX0=
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9yY2UtZGlyZWN0ZWQtY2hhcnQuaW50ZXJmYWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jbGllbnQtZDMtY2hhcnRzL3NyYy9saWIvaW50ZXJmYWNlcy9mb3JjZS1kaXJlY3RlZC1jaGFydC5pbnRlcmZhY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIGQzIGZyb20gJ2QzJztcblxuZXhwb3J0IGludGVyZmFjZSBJRm9yY2VEaXJlY3RlZEdyYXBoRG9tYWluIHtcbiAgaW5kZXg6IG51bWJlcjtcbiAgbmFtZTogc3RyaW5nO1xuICB2YWx1ZTogbnVtYmVyO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElGb3JjZURpcmVjdGVkR3JhcGhFbnRpdHkge1xuICBpbmRleDogbnVtYmVyO1xuICBuYW1lOiBzdHJpbmc7XG4gIGRvbWFpbnM6IHN0cmluZ1tdO1xuICBpbWc6IHN0cmluZztcbiAgbGlua3NDb3VudDogbnVtYmVyO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElGb3JjZURpcmVjdGVkQ2hhcnREYXRhTm9kZSBleHRlbmRzIGQzLlNpbXVsYXRpb25Ob2RlRGF0dW0ge1xuICBpbmRleDogbnVtYmVyO1xuICBkb21haW5zPzogc3RyaW5nW107XG4gIHZhbHVlPzogbnVtYmVyO1xuICBuYW1lPzogc3RyaW5nO1xuICBpbWc/OiBzdHJpbmc7XG4gIGxpbmtzQ291bnQ/OiBudW1iZXI7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSUZvcmNlRGlyZWN0ZWRDaGFydERhdGEge1xuICBkb21haW5zOiBJRm9yY2VEaXJlY3RlZEdyYXBoRG9tYWluW107XG4gIGVudGl0aWVzOiBJRm9yY2VEaXJlY3RlZEdyYXBoRW50aXR5W107XG4gIGxpbmtzOiBkMy5TaW11bGF0aW9uTGlua0RhdHVtPElGb3JjZURpcmVjdGVkQ2hhcnREYXRhTm9kZT5bXTtcbiAgbm9kZXM6IElGb3JjZURpcmVjdGVkQ2hhcnREYXRhTm9kZVtdO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElGb3JjZURpcmVjdGVkQ2hhcnRPcHRpb25zIHtcbiAgY2hhcnRUaXRsZTogc3RyaW5nO1xuICB3aWR0aDogbnVtYmVyO1xuICBoZWlnaHQ6IG51bWJlcjtcbiAgY2VudGVyQ2FsY01vZDogbnVtYmVyO1xuICBjaGFyZ2U6IHtcbiAgICBzdHJlbmd0aDogbnVtYmVyO1xuICAgIHRoZXRhOiBudW1iZXI7XG4gICAgZGlzdGFuY2VNYXg6IG51bWJlcjtcbiAgfTtcbiAgZGlzdGFuY2U6IG51bWJlcjtcbiAgZm9udFNpemU6IG51bWJlcjtcbiAgY29sbGlzaW9uUmFkaXVzOiBudW1iZXI7XG4gIG1hcmdpbjoge1xuICAgIHRvcDogbnVtYmVyO1xuICAgIHJpZ2h0OiBudW1iZXI7XG4gICAgYm90dG9tOiBudW1iZXI7XG4gICAgbGVmdDogbnVtYmVyO1xuICB9O1xuICBzdHJva2VXaWR0aDogbnVtYmVyO1xuICBsYWJlbFRleHRXcmFwV2lkdGg6IG51bWJlcjtcbiAgY29sb3I6IGQzLlNjYWxlT3JkaW5hbDxzdHJpbmcsIHN0cmluZz47XG59XG4iXX0=
@@ -0,0 +1,6 @@
1
+ export * from './bar-chart.interface';
2
+ export * from './force-directed-chart.interface';
3
+ export * from './line-chart.interface';
4
+ export * from './pie-chart.interface';
5
+ export * from './radar-chart.interface';
6
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NsaWVudC1kMy1jaGFydHMvc3JjL2xpYi9pbnRlcmZhY2VzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsdUJBQXVCLENBQUM7QUFDdEMsY0FBYyxrQ0FBa0MsQ0FBQztBQUNqRCxjQUFjLHdCQUF3QixDQUFDO0FBQ3ZDLGNBQWMsdUJBQXVCLENBQUM7QUFDdEMsY0FBYyx5QkFBeUIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vYmFyLWNoYXJ0LmludGVyZmFjZSc7XG5leHBvcnQgKiBmcm9tICcuL2ZvcmNlLWRpcmVjdGVkLWNoYXJ0LmludGVyZmFjZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpbmUtY2hhcnQuaW50ZXJmYWNlJztcbmV4cG9ydCAqIGZyb20gJy4vcGllLWNoYXJ0LmludGVyZmFjZSc7XG5leHBvcnQgKiBmcm9tICcuL3JhZGFyLWNoYXJ0LmludGVyZmFjZSc7XG4iXX0=
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGluZS1jaGFydC5pbnRlcmZhY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NsaWVudC1kMy1jaGFydHMvc3JjL2xpYi9pbnRlcmZhY2VzL2xpbmUtY2hhcnQuaW50ZXJmYWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBkMyBmcm9tICdkMyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgSUxpbmVDaGFydERhdGFOb2RlIHtcbiAgdGltZXN0YW1wOiBudW1iZXI7XG4gIHZhbHVlOiBudW1iZXI7XG59XG5cbmV4cG9ydCB0eXBlIFRMaW5lQ2hhcnREYXRhID0gSUxpbmVDaGFydERhdGFOb2RlW107XG5cbmV4cG9ydCBpbnRlcmZhY2UgSUxpbmVDaGFydE9wdGlvbnMge1xuICBjaGFydFRpdGxlOiBzdHJpbmc7XG4gIHdpZHRoOiBudW1iZXI7XG4gIGhlaWdodDogbnVtYmVyO1xuICBtYXJnaW46IHtcbiAgICB0b3A6IG51bWJlcjtcbiAgICByaWdodDogbnVtYmVyO1xuICAgIGJvdHRvbTogbnVtYmVyO1xuICAgIGxlZnQ6IG51bWJlcjtcbiAgfTtcbiAgdHJhbnNpdGlvbkR1cmF0aW9uOiBudW1iZXI7XG4gIGRvdFJhZGl1czogbnVtYmVyO1xuICB4QXhpc1RpdGxlOiBzdHJpbmc7XG4gIHlBeGlzVGl0bGU6IHN0cmluZztcbiAgdGlja3M6IHtcbiAgICB4OiBudW1iZXI7XG4gICAgeTogbnVtYmVyO1xuICB9O1xuICBkaXNwbGF5QXhpc0xhYmVsczogYm9vbGVhbjtcbiAgbGFiZWxUZXh0V3JhcFdpZHRoOiBudW1iZXI7XG4gIGNvbG9yOiBkMy5TY2FsZU9yZGluYWw8c3RyaW5nLCBzdHJpbmc+O1xufVxuIl19
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGllLWNoYXJ0LmludGVyZmFjZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY2xpZW50LWQzLWNoYXJ0cy9zcmMvbGliL2ludGVyZmFjZXMvcGllLWNoYXJ0LmludGVyZmFjZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGludGVyZmFjZSBJUGllQ2hhcnREYXRhTm9kZSB7XG4gIGtleTogc3RyaW5nO1xuICB5OiBudW1iZXI7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSVBpZUNoYXJ0T3B0aW9ucyB7XG4gIGNoYXJ0VGl0bGU6IHN0cmluZztcbiAgd2lkdGg6IG51bWJlcjtcbiAgaGVpZ2h0OiBudW1iZXI7XG4gIG1hcmdpbjoge1xuICAgIHRvcDogbnVtYmVyO1xuICAgIHJpZ2h0OiBudW1iZXI7XG4gICAgYm90dG9tOiBudW1iZXI7XG4gICAgbGVmdDogbnVtYmVyO1xuICB9O1xuICBpbm5lclJhZGl1czogbnVtYmVyO1xuICBsYWJlbFJhZGl1c01vZGlmaWVyOiBudW1iZXI7XG4gIGxhYmVsVGV4dFdyYXBXaWR0aDogbnVtYmVyO1xuICBjb2xvcjogZDMuU2NhbGVPcmRpbmFsPHN0cmluZywgc3RyaW5nPjtcbn1cbiJdfQ==
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmFkYXItY2hhcnQuaW50ZXJmYWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jbGllbnQtZDMtY2hhcnRzL3NyYy9saWIvaW50ZXJmYWNlcy9yYWRhci1jaGFydC5pbnRlcmZhY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIGQzIGZyb20gJ2QzJztcblxuZXhwb3J0IGludGVyZmFjZSBJUmFkYXJDaGFydERhdGFOb2RlIHtcbiAgYXhpczogc3RyaW5nO1xuICB2YWx1ZTogbnVtYmVyO1xuICB1bml0OiBzdHJpbmc7XG59XG5cbmV4cG9ydCB0eXBlIFRSYWRhckNoYXJ0RGF0YSA9IElSYWRhckNoYXJ0RGF0YU5vZGVbXVtdO1xuXG5leHBvcnQgaW50ZXJmYWNlIElSYWRhckNoYXJ0T3B0aW9ucyB7XG4gIGNoYXJ0VGl0bGU6IHN0cmluZztcbiAgd2lkdGg6IG51bWJlcjtcbiAgaGVpZ2h0OiBudW1iZXI7XG4gIG1hcmdpbjoge1xuICAgIHRvcDogbnVtYmVyO1xuICAgIHJpZ2h0OiBudW1iZXI7XG4gICAgYm90dG9tOiBudW1iZXI7XG4gICAgbGVmdDogbnVtYmVyO1xuICB9O1xuICBtYXhWYWx1ZTogbnVtYmVyO1xuICBsZXZlbHM6IG51bWJlcjtcbiAgbGluZUZhY3RvcjogbnVtYmVyO1xuICBsYWJlbEZhY3RvcjogbnVtYmVyO1xuICBsYWJlbFRleHRXcmFwV2lkdGg6IG51bWJlcjtcbiAgb3BhY2l0eUFyZWE6IG51bWJlcjtcbiAgZG90UmFkaXVzOiBudW1iZXI7XG4gIG9wYWNpdHlDaXJjbGVzOiBudW1iZXI7XG4gIHN0cm9rZVdpZHRoOiBudW1iZXI7XG4gIHJvdW5kU3Ryb2tlczogYm9vbGVhbjtcbiAgdHJhbnNpdGlvbkR1cmF0aW9uOiBudW1iZXI7XG4gIGNvbG9yOiBkMy5TY2FsZU9yZGluYWw8c3RyaW5nLCBzdHJpbmc+O1xufVxuIl19
@@ -0,0 +1,18 @@
1
+ import { InjectionToken } from '@angular/core';
2
+ import { drawBarChart } from '../util/bar-chart.util';
3
+ import { drawForceDirectedChart } from '../util/force-directed-chart.util';
4
+ import { drawLineChart } from '../util/line-chart.util';
5
+ import { drawPieChart } from '../util/pie-chart.util';
6
+ import { drawRadarChart } from '../util/radar-chart.util';
7
+ export const d3ChartFactory = () => ({
8
+ drawPieChart,
9
+ drawRadarChart,
10
+ drawBarChart,
11
+ drawLineChart,
12
+ drawForceDirectedChart,
13
+ });
14
+ export const D3_CHART_FACTORY = new InjectionToken('D3_CHART_FACTORY', {
15
+ providedIn: 'root',
16
+ factory: d3ChartFactory,
17
+ });
18
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZDMtY2hhcnQtZmFjdG9yeS5wcm92aWRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY2xpZW50LWQzLWNoYXJ0cy9zcmMvbGliL3Byb3ZpZGVycy9kMy1jaGFydC1mYWN0b3J5LnByb3ZpZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFL0MsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3RELE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQzNFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUN4RCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdEQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBVTFELE1BQU0sQ0FBQyxNQUFNLGNBQWMsR0FBRyxHQUFvQixFQUFFLENBQUMsQ0FBQztJQUNwRCxZQUFZO0lBQ1osY0FBYztJQUNkLFlBQVk7SUFDWixhQUFhO0lBQ2Isc0JBQXNCO0NBQ3ZCLENBQUMsQ0FBQztBQUVILE1BQU0sQ0FBQyxNQUFNLGdCQUFnQixHQUFHLElBQUksY0FBYyxDQUFDLGtCQUFrQixFQUFFO0lBQ3JFLFVBQVUsRUFBRSxNQUFNO0lBQ2xCLE9BQU8sRUFBRSxjQUFjO0NBQ3hCLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGlvblRva2VuIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IGRyYXdCYXJDaGFydCB9IGZyb20gJy4uL3V0aWwvYmFyLWNoYXJ0LnV0aWwnO1xuaW1wb3J0IHsgZHJhd0ZvcmNlRGlyZWN0ZWRDaGFydCB9IGZyb20gJy4uL3V0aWwvZm9yY2UtZGlyZWN0ZWQtY2hhcnQudXRpbCc7XG5pbXBvcnQgeyBkcmF3TGluZUNoYXJ0IH0gZnJvbSAnLi4vdXRpbC9saW5lLWNoYXJ0LnV0aWwnO1xuaW1wb3J0IHsgZHJhd1BpZUNoYXJ0IH0gZnJvbSAnLi4vdXRpbC9waWUtY2hhcnQudXRpbCc7XG5pbXBvcnQgeyBkcmF3UmFkYXJDaGFydCB9IGZyb20gJy4uL3V0aWwvcmFkYXItY2hhcnQudXRpbCc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgSUQzQ2hhcnRGYWN0b3J5IHtcbiAgZHJhd1BpZUNoYXJ0OiB0eXBlb2YgZHJhd1BpZUNoYXJ0O1xuICBkcmF3UmFkYXJDaGFydDogdHlwZW9mIGRyYXdSYWRhckNoYXJ0O1xuICBkcmF3QmFyQ2hhcnQ6IHR5cGVvZiBkcmF3QmFyQ2hhcnQ7XG4gIGRyYXdMaW5lQ2hhcnQ6IHR5cGVvZiBkcmF3TGluZUNoYXJ0O1xuICBkcmF3Rm9yY2VEaXJlY3RlZENoYXJ0OiB0eXBlb2YgZHJhd0ZvcmNlRGlyZWN0ZWRDaGFydDtcbn1cblxuZXhwb3J0IGNvbnN0IGQzQ2hhcnRGYWN0b3J5ID0gKCk6IElEM0NoYXJ0RmFjdG9yeSA9PiAoe1xuICBkcmF3UGllQ2hhcnQsXG4gIGRyYXdSYWRhckNoYXJ0LFxuICBkcmF3QmFyQ2hhcnQsXG4gIGRyYXdMaW5lQ2hhcnQsXG4gIGRyYXdGb3JjZURpcmVjdGVkQ2hhcnQsXG59KTtcblxuZXhwb3J0IGNvbnN0IEQzX0NIQVJUX0ZBQ1RPUlkgPSBuZXcgSW5qZWN0aW9uVG9rZW4oJ0QzX0NIQVJUX0ZBQ1RPUlknLCB7XG4gIHByb3ZpZGVkSW46ICdyb290JyxcbiAgZmFjdG9yeTogZDNDaGFydEZhY3RvcnksXG59KTtcbiJdfQ==