@esfaenza/es-charts 15.2.7 → 16.2.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.
- package/{esm2020 → esm2022}/esfaenza-es-charts.mjs +4 -4
- package/{esm2020 → esm2022}/lib/adapters/BaseAdapter.mjs +50 -50
- package/{esm2020 → esm2022}/lib/adapters/IBaseAdapter.mjs +1 -1
- package/{esm2020 → esm2022}/lib/components/base/base-chart.component.mjs +350 -350
- package/{esm2020 → esm2022}/lib/components/chart-pager/chart-pager.component.mjs +89 -89
- package/{esm2020 → esm2022}/lib/components/specializations/es-area-chart.component.mjs +77 -77
- package/{esm2020 → esm2022}/lib/components/specializations/es-chart.component.mjs +122 -122
- package/{esm2020 → esm2022}/lib/components/specializations/es-line-chart.component.mjs +112 -112
- package/{esm2020 → esm2022}/lib/components/specializations/es-pie-chart.component.mjs +98 -98
- package/{esm2020 → esm2022}/lib/components/specializations/es-vertical-2d-chart.component.mjs +95 -95
- package/{esm2020 → esm2022}/lib/components/specializations/es-vertical-chart.component.mjs +92 -92
- package/{esm2020 → esm2022}/lib/components/specializations/es-vertical-stacked-chart.component.mjs +92 -92
- package/{esm2020 → esm2022}/lib/es-charts.module.mjs +67 -67
- package/{esm2020 → esm2022}/lib/models/EsChaartsModuleConfig.mjs +5 -5
- package/{esm2020 → esm2022}/lib/models/core/ChartDispatcher.mjs +91 -91
- package/{esm2020 → esm2022}/lib/models/core/ChartLoader.mjs +212 -212
- package/{esm2020 → esm2022}/lib/models/core/ChartThemes.mjs +60 -60
- package/{esm2020 → esm2022}/lib/models/data/AreaChartData.mjs +15 -15
- package/{esm2020 → esm2022}/lib/models/data/LineChartData.mjs +15 -15
- package/{esm2020 → esm2022}/lib/models/data/PagedChartData.mjs +19 -19
- package/{esm2020 → esm2022}/lib/models/data/PieChartData.mjs +13 -13
- package/{esm2020 → esm2022}/lib/models/data/Vertical2DChartData.mjs +15 -15
- package/{esm2020 → esm2022}/lib/models/data/VerticalChartData.mjs +13 -13
- package/{esm2020 → esm2022}/lib/models/data/VerticalStackedChartData.mjs +13 -13
- package/{esm2020 → esm2022}/lib/models/data/base/DateValue.mjs +10 -10
- package/{esm2020 → esm2022}/lib/models/data/base/KeyValue.mjs +10 -10
- package/{esm2020 → esm2022}/lib/models/data/base/KeyValueColor.mjs +12 -12
- package/{esm2020 → esm2022}/lib/models/data/base/Limit.mjs +15 -15
- package/{esm2020 → esm2022}/lib/models/data/base/LineSerie.mjs +27 -27
- package/{esm2020 → esm2022}/lib/models/settings/AreaChartSettings.mjs +10 -10
- package/{esm2020 → esm2022}/lib/models/settings/LineChartSettings.mjs +10 -10
- package/{esm2020 → esm2022}/lib/models/settings/PieChartSettings.mjs +6 -6
- package/{esm2020 → esm2022}/lib/models/settings/Vertical2DChartSettings.mjs +10 -10
- package/{esm2020 → esm2022}/lib/models/settings/VerticalChartSettings.mjs +10 -10
- package/{esm2020 → esm2022}/lib/models/settings/VerticalStackedChartSettings.mjs +10 -10
- package/{esm2020 → esm2022}/lib/models/settings/base/BaseInterval.mjs +5 -5
- package/{esm2020 → esm2022}/lib/models/settings/base/BaseSettings.mjs +5 -5
- package/{esm2020 → esm2022}/lib/models/settings/base/LegendPad.mjs +5 -5
- package/esm2022/lib/services/AreaChartService.mjs +157 -0
- package/esm2022/lib/services/LineChartService.mjs +392 -0
- package/{esm2020 → esm2022}/lib/services/PieChartService.mjs +113 -113
- package/{esm2020 → esm2022}/lib/services/Vertical2DChartService.mjs +162 -162
- package/{esm2020 → esm2022}/lib/services/VerticalChartService.mjs +113 -113
- package/{esm2020 → esm2022}/lib/services/VerticalStackedChartService.mjs +126 -126
- package/{esm2020 → esm2022}/lib/services/base/IBaseService.mjs +1 -1
- package/{esm2020 → esm2022}/lib/tokens.mjs +13 -13
- package/{esm2020 → esm2022}/public-api.mjs +38 -38
- package/{fesm2020 → fesm2022}/esfaenza-es-charts.mjs +2728 -2688
- package/fesm2022/esfaenza-es-charts.mjs.map +1 -0
- package/index.d.ts +5 -5
- package/lib/adapters/BaseAdapter.d.ts +40 -40
- package/lib/adapters/IBaseAdapter.d.ts +35 -35
- package/lib/components/base/base-chart.component.d.ts +304 -304
- package/lib/components/chart-pager/chart-pager.component.d.ts +70 -70
- package/lib/components/specializations/es-area-chart.component.d.ts +53 -53
- package/lib/components/specializations/es-chart.component.d.ts +71 -71
- package/lib/components/specializations/es-line-chart.component.d.ts +112 -112
- package/lib/components/specializations/es-pie-chart.component.d.ts +81 -81
- package/lib/components/specializations/es-vertical-2d-chart.component.d.ts +79 -79
- package/lib/components/specializations/es-vertical-chart.component.d.ts +74 -74
- package/lib/components/specializations/es-vertical-stacked-chart.component.d.ts +74 -74
- package/lib/es-charts.module.d.ts +18 -18
- package/lib/models/EsChaartsModuleConfig.d.ts +24 -24
- package/lib/models/core/ChartDispatcher.d.ts +46 -46
- package/lib/models/core/ChartLoader.d.ts +92 -92
- package/lib/models/core/ChartThemes.d.ts +23 -23
- package/lib/models/data/AreaChartData.d.ts +22 -22
- package/lib/models/data/LineChartData.d.ts +16 -16
- package/lib/models/data/PagedChartData.d.ts +23 -23
- package/lib/models/data/PieChartData.d.ts +13 -13
- package/lib/models/data/Vertical2DChartData.d.ts +27 -27
- package/lib/models/data/VerticalChartData.d.ts +13 -13
- package/lib/models/data/VerticalStackedChartData.d.ts +21 -21
- package/lib/models/data/base/DateValue.d.ts +9 -9
- package/lib/models/data/base/KeyValue.d.ts +9 -9
- package/lib/models/data/base/KeyValueColor.d.ts +11 -11
- package/lib/models/data/base/Limit.d.ts +14 -14
- package/lib/models/data/base/LineSerie.d.ts +28 -28
- package/lib/models/settings/AreaChartSettings.d.ts +10 -10
- package/lib/models/settings/LineChartSettings.d.ts +67 -67
- package/lib/models/settings/PieChartSettings.d.ts +34 -34
- package/lib/models/settings/Vertical2DChartSettings.d.ts +36 -36
- package/lib/models/settings/VerticalChartSettings.d.ts +31 -31
- package/lib/models/settings/VerticalStackedChartSettings.d.ts +31 -31
- package/lib/models/settings/base/BaseInterval.d.ts +13 -13
- package/lib/models/settings/base/BaseSettings.d.ts +67 -67
- package/lib/models/settings/base/LegendPad.d.ts +21 -21
- package/lib/services/AreaChartService.d.ts +32 -31
- package/lib/services/LineChartService.d.ts +48 -47
- package/lib/services/PieChartService.d.ts +27 -27
- package/lib/services/Vertical2DChartService.d.ts +39 -39
- package/lib/services/VerticalChartService.d.ts +33 -33
- package/lib/services/VerticalStackedChartService.d.ts +35 -35
- package/lib/services/base/IBaseService.d.ts +38 -38
- package/lib/tokens.d.ts +13 -13
- package/package.json +11 -17
- package/public-api.d.ts +35 -35
- package/esm2020/lib/services/AreaChartService.mjs +0 -137
- package/esm2020/lib/services/LineChartService.mjs +0 -372
- package/fesm2015/esfaenza-es-charts.mjs +0 -2829
- package/fesm2015/esfaenza-es-charts.mjs.map +0 -1
- package/fesm2020/esfaenza-es-charts.mjs.map +0 -1
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
import { BaseSettings } from './base/BaseSettings';
|
|
2
|
-
/**
|
|
3
|
-
* Classe che presenta le impostazioni di generazione per i grafici di tipo VerticalChart
|
|
4
|
-
*/
|
|
5
|
-
export class VerticalChartSettings extends BaseSettings {
|
|
6
|
-
/**
|
|
7
|
-
* @ignore
|
|
8
|
-
*/
|
|
9
|
-
constructor() { super(); }
|
|
10
|
-
}
|
|
1
|
+
import { BaseSettings } from './base/BaseSettings';
|
|
2
|
+
/**
|
|
3
|
+
* Classe che presenta le impostazioni di generazione per i grafici di tipo VerticalChart
|
|
4
|
+
*/
|
|
5
|
+
export class VerticalChartSettings extends BaseSettings {
|
|
6
|
+
/**
|
|
7
|
+
* @ignore
|
|
8
|
+
*/
|
|
9
|
+
constructor() { super(); }
|
|
10
|
+
}
|
|
11
11
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVmVydGljYWxDaGFydFNldHRpbmdzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZXMtY2hhcnRzL3NyYy9saWIvbW9kZWxzL3NldHRpbmdzL1ZlcnRpY2FsQ2hhcnRTZXR0aW5ncy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFFbkQ7O0dBRUc7QUFDSCxNQUFNLE9BQU8scUJBQXNCLFNBQVEsWUFBWTtJQUVuRDs7T0FFRztJQUNILGdCQUFnQixLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUM7Q0EyQjdCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQmFzZVNldHRpbmdzIH0gZnJvbSAnLi9iYXNlL0Jhc2VTZXR0aW5ncyc7XHJcblxyXG4vKipcclxuICogQ2xhc3NlIGNoZSBwcmVzZW50YSBsZSBpbXBvc3RhemlvbmkgZGkgZ2VuZXJhemlvbmUgcGVyIGkgZ3JhZmljaSBkaSB0aXBvIFZlcnRpY2FsQ2hhcnRcclxuICovXHJcbmV4cG9ydCBjbGFzcyBWZXJ0aWNhbENoYXJ0U2V0dGluZ3MgZXh0ZW5kcyBCYXNlU2V0dGluZ3Mge1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogQGlnbm9yZVxyXG4gICAgICovXHJcbiAgICBjb25zdHJ1Y3RvcigpIHsgc3VwZXIoKTsgfVxyXG4gICAgXHJcbiAgICAvKipcclxuICAgICAqIEluZGljYSBsYSBwZXJjZW50dWFsZSBkaSBjZWxsYSBjaGUgbGEgY29sb25uYSBhbmRyw6AgYSByaWVtcGlyZS4gVW4gdmFsb3JlIHBhcmkgYSAxMDAgcmllbXBpcsOgIGxhIGNlbGxhIGNvbXBsZXRhbWVudGUgXHJcbiAgICAgKiBlIHR1dHRlIGxlIGJhcnJlIHJpc3VsdGVyYW5ubyBhcHBpY2NpY2F0ZSBsJ3VuIGwnYWx0cmFcclxuICAgICAqL1xyXG4gICAgIENvbHVtbldpZHRoUGVyY2VudGFnZTogbnVtYmVyO1xyXG5cclxuICAgICAvKipcclxuICAgICAgKiBJbmRpY2EgbGUgZGltZW5zaW9uaSBtYXNzaW1lIGRlbGxhIGxhYmVsIGFzc29jaWF0YSBhIHVuIGdydXBwbyBkaSBiYXJyZVxyXG4gICAgICAqL1xyXG4gICAgIExhYmVsV2lkdGg6IG51bWJlcjtcclxuIFxyXG4gICAgIC8qKlxyXG4gICAgICAqIEluZGljYSBsYSBkaW1lbnNpb25lIG1hc3NpbWEgc290dG8gbGEgcXVhbGUgbGEgbGFiZWwgYXNzb2NpYXRhIGEgdW4gZ3J1cHBvIGRpIGJhcnJlIHNpIGluY2xpbmEgY2VyY2FuZG8gZGkgb2NjdXBhcmUgbWVubyBzcGF6aW9cclxuICAgICAgKi9cclxuICAgICBMYWJlbFZlcnRpY2FsT3JpZW50YXRpb25DdXRvZmZXaWR0aDogbnVtYmVyO1xyXG4gXHJcbiAgICAgLyoqXHJcbiAgICAgICogSW5kaWNhIHVuIG9mZnNldCBvcml6em9udGFsZSBkYSBhcHBsaWNhcmUgYWxsYSBsYWJlbCBhc3NvY2lhdGEgYSB1biBncnVwcG8gZGkgYmFycmUgcXVhbG9yYSBmb3NzZSBjb21wcmVzc2EgYSBjYXVzYSBkZWxsYSBtYW5jYW56YSBkaSBzcGF6aW9cclxuICAgICAgKi9cclxuICAgICBMYWJlbFJpZ2h0V2hlbkNvbXByZXNzZWQ6IG51bWJlcjtcclxuIFxyXG4gICAgIC8qKlxyXG4gICAgICAqIEluZGljYSB1biBvZmZzZXQgdmVydGljYWxlIGRhIGFwcGxpY2FyZSBhbGxhIGxhYmVsIGFzc29jaWF0YSBhIHVuIGdydXBwbyBkaSBiYXJyZSBxdWFsb3JhIGZvc3NlIGNvbXByZXNzYSBhIGNhdXNhIGRlbGxhIG1hbmNhbnphIGRpIHNwYXppb1xyXG4gICAgICAqL1xyXG4gICAgIExhYmVsVG9wV2hlbkNvbXByZXNzZWQ6IG51bWJlcjtcclxufSJdfQ==
|
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
import { BaseSettings } from './base/BaseSettings';
|
|
2
|
-
/**
|
|
3
|
-
* Classe che presenta le impostazioni di generazione per i grafici di tipo VerticalStackedChart
|
|
4
|
-
*/
|
|
5
|
-
export class VerticalStackedChartSettings extends BaseSettings {
|
|
6
|
-
/**
|
|
7
|
-
* @ignore
|
|
8
|
-
*/
|
|
9
|
-
constructor() { super(); }
|
|
10
|
-
}
|
|
1
|
+
import { BaseSettings } from './base/BaseSettings';
|
|
2
|
+
/**
|
|
3
|
+
* Classe che presenta le impostazioni di generazione per i grafici di tipo VerticalStackedChart
|
|
4
|
+
*/
|
|
5
|
+
export class VerticalStackedChartSettings extends BaseSettings {
|
|
6
|
+
/**
|
|
7
|
+
* @ignore
|
|
8
|
+
*/
|
|
9
|
+
constructor() { super(); }
|
|
10
|
+
}
|
|
11
11
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVmVydGljYWxTdGFja2VkQ2hhcnRTZXR0aW5ncy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2VzLWNoYXJ0cy9zcmMvbGliL21vZGVscy9zZXR0aW5ncy9WZXJ0aWNhbFN0YWNrZWRDaGFydFNldHRpbmdzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUVuRDs7R0FFRztBQUNILE1BQU0sT0FBTyw0QkFBNkIsU0FBUSxZQUFZO0lBRTFEOztPQUVHO0lBQ04sZ0JBQWdCLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQztDQTJCMUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBCYXNlU2V0dGluZ3MgfSBmcm9tICcuL2Jhc2UvQmFzZVNldHRpbmdzJztcclxuXHJcbi8qKlxyXG4gKiBDbGFzc2UgY2hlIHByZXNlbnRhIGxlIGltcG9zdGF6aW9uaSBkaSBnZW5lcmF6aW9uZSBwZXIgaSBncmFmaWNpIGRpIHRpcG8gVmVydGljYWxTdGFja2VkQ2hhcnRcclxuICovXHJcbmV4cG9ydCBjbGFzcyBWZXJ0aWNhbFN0YWNrZWRDaGFydFNldHRpbmdzIGV4dGVuZHMgQmFzZVNldHRpbmdze1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogQGlnbm9yZVxyXG4gICAgICovXHJcblx0Y29uc3RydWN0b3IoKSB7IHN1cGVyKCk7IH1cclxuICAgIFxyXG4gICAgLyoqXHJcbiAgICAgKiBJbmRpY2EgbGEgcGVyY2VudHVhbGUgZGkgY2VsbGEgY2hlIGxhIGNvbG9ubmEgYW5kcsOgIGEgcmllbXBpcmUuIFVuIHZhbG9yZSBwYXJpIGEgMTAwIHJpZW1waXLDoCBsYSBjZWxsYSBjb21wbGV0YW1lbnRlIFxyXG4gICAgICogZSB0dXR0ZSBsZSBiYXJyZSByaXN1bHRlcmFubm8gYXBwaWNjaWNhdGUgbCd1biBsJ2FsdHJhXHJcbiAgICAgKi9cclxuICAgICBDb2x1bW5XaWR0aFBlcmNlbnRhZ2U6IG51bWJlcjtcclxuXHJcbiAgICAgLyoqXHJcbiAgICAgICogSW5kaWNhIGxlIGRpbWVuc2lvbmkgbWFzc2ltZSBkZWxsYSBsYWJlbCBhc3NvY2lhdGEgYSB1biBncnVwcG8gZGkgYmFycmVcclxuICAgICAgKi9cclxuICAgICBMYWJlbFdpZHRoOiBudW1iZXI7XHJcbiBcclxuICAgICAvKipcclxuICAgICAgKiBJbmRpY2EgbGEgZGltZW5zaW9uZSBtYXNzaW1hIHNvdHRvIGxhIHF1YWxlIGxhIGxhYmVsIGFzc29jaWF0YSBhIHVuIGdydXBwbyBkaSBiYXJyZSBzaSBpbmNsaW5hIGNlcmNhbmRvIGRpIG9jY3VwYXJlIG1lbm8gc3BhemlvXHJcbiAgICAgICovXHJcbiAgICAgTGFiZWxWZXJ0aWNhbE9yaWVudGF0aW9uQ3V0b2ZmV2lkdGg6IG51bWJlcjtcclxuIFxyXG4gICAgIC8qKlxyXG4gICAgICAqIEluZGljYSB1biBvZmZzZXQgb3JpenpvbnRhbGUgZGEgYXBwbGljYXJlIGFsbGEgbGFiZWwgYXNzb2NpYXRhIGEgdW4gZ3J1cHBvIGRpIGJhcnJlIHF1YWxvcmEgZm9zc2UgY29tcHJlc3NhIGEgY2F1c2EgZGVsbGEgbWFuY2FuemEgZGkgc3BhemlvXHJcbiAgICAgICovXHJcbiAgICAgTGFiZWxSaWdodFdoZW5Db21wcmVzc2VkOiBudW1iZXI7XHJcbiBcclxuICAgICAvKipcclxuICAgICAgKiBJbmRpY2EgdW4gb2Zmc2V0IHZlcnRpY2FsZSBkYSBhcHBsaWNhcmUgYWxsYSBsYWJlbCBhc3NvY2lhdGEgYSB1biBncnVwcG8gZGkgYmFycmUgcXVhbG9yYSBmb3NzZSBjb21wcmVzc2EgYSBjYXVzYSBkZWxsYSBtYW5jYW56YSBkaSBzcGF6aW9cclxuICAgICAgKi9cclxuICAgICBMYWJlbFRvcFdoZW5Db21wcmVzc2VkOiBudW1iZXI7XHJcbn0iXX0=
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Classe che identifica un intervallo di tempo fra un dato e l'altro
|
|
3
|
-
*/
|
|
4
|
-
export class BaseInterval {
|
|
5
|
-
}
|
|
1
|
+
/**
|
|
2
|
+
* Classe che identifica un intervallo di tempo fra un dato e l'altro
|
|
3
|
+
*/
|
|
4
|
+
export class BaseInterval {
|
|
5
|
+
}
|
|
6
6
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQmFzZUludGVydmFsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZXMtY2hhcnRzL3NyYy9saWIvbW9kZWxzL3NldHRpbmdzL2Jhc2UvQmFzZUludGVydmFsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBQ0gsTUFBTSxPQUFPLFlBQVk7Q0FXeEIiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcclxuICogQ2xhc3NlIGNoZSBpZGVudGlmaWNhIHVuIGludGVydmFsbG8gZGkgdGVtcG8gZnJhIHVuIGRhdG8gZSBsJ2FsdHJvXHJcbiAqL1xyXG5leHBvcnQgY2xhc3MgQmFzZUludGVydmFsIHtcclxuXHJcbiAgICAvKipcclxuICAgICAqIE51bWVybyBkaSB1bml0w6BcclxuICAgICAqL1xyXG4gICAgY291bnQ6IG51bWJlcjtcclxuXHJcbiAgICAvKipcclxuICAgICAqIFRpcG8gZGkgdW5pdMOgXHJcbiAgICAgKi9cclxuICAgIHRpbWV1bml0OiBcIm1pbGxpc2Vjb25kXCIgfCBcInNlY29uZFwiIHwgXCJtaW51dGVcIiB8IFwiaG91clwiIHwgXCJkYXlcIiB8IFwid2Vla1wiIHwgXCJtb250aFwiIHwgXCJ5ZWFyXCI7XHJcbn0iXX0=
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Classe che racchiude le impostazioni base bene o male applicabili ad ogni Grafico
|
|
3
|
-
*/
|
|
4
|
-
export class BaseSettings {
|
|
5
|
-
}
|
|
1
|
+
/**
|
|
2
|
+
* Classe che racchiude le impostazioni base bene o male applicabili ad ogni Grafico
|
|
3
|
+
*/
|
|
4
|
+
export class BaseSettings {
|
|
5
|
+
}
|
|
6
6
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQmFzZVNldHRpbmdzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZXMtY2hhcnRzL3NyYy9saWIvbW9kZWxzL3NldHRpbmdzL2Jhc2UvQmFzZVNldHRpbmdzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBOztHQUVHO0FBQ0gsTUFBTSxPQUFnQixZQUFZO0NBb0ZqQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IExlZ2VuZFBhZCB9IGZyb20gXCIuLi9iYXNlL0xlZ2VuZFBhZFwiO1xyXG5cclxuLyoqXHJcbiAqIENsYXNzZSBjaGUgcmFjY2hpdWRlIGxlIGltcG9zdGF6aW9uaSBiYXNlIGJlbmUgbyBtYWxlIGFwcGxpY2FiaWxpIGFkIG9nbmkgR3JhZmljb1xyXG4gKi9cclxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEJhc2VTZXR0aW5ncyB7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBVdGlsaXp6YSBvIG5vIGxhIFRpbWVsaW5lXHJcbiAgICAgKi9cclxuICAgIFRpbWVsaW5lOiBib29sZWFuO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogVmlzdWFsaXp6YSBvIG5vIGxhIExlZ2VuZGFcclxuICAgICAqL1xyXG4gICAgTGVnZW5kOiBib29sZWFuO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogTm9tZSBkZWwgZ3JhZmljbyAoaWRlbnRpZmljYXRpdm8gdW5pdm9jbylcclxuICAgICAqL1xyXG4gICAgTmFtZTogc3RyaW5nO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogVGl0b2xvIGRlbGwnYXNzZSBYXHJcbiAgICAgKi9cclxuICAgIFhBeGlzVGl0bGU6IHN0cmluZztcclxuXHJcbiAgICAvKipcclxuICAgICAqIFRpdG9sbyBkZWxsJ2Fzc2UgWVxyXG4gICAgICovXHJcbiAgICBZQXhpc1RpdGxlOiBzdHJpbmc7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBEw6AgZXZpZGVuemEsIG5lbGwnYXNzZSBYIGRlaSBtb21lbnRpIGluIGN1aSBjYW1iaWEgaWwgdmFsb3JlXHJcbiAgICAgKi9cclxuICAgIFNob3dUaWNrczogYm9vbGVhbjtcclxuXHJcbiAgICAvKipcclxuICAgICAqIEluZGljYSBzZSB1dGlsaXp6YXJlIGlsIGNvbXBvcnRhbWVudG8gZGkgZGVmYXVsdCBwZXIgaSBjbGljayBkZWxsZSBzZXJpZSBzdWxsYSBMZWdlbmRhLiBNZXR0ZW5kbyBxdWVzdGEgdmFyaWFiaWxlIGEgKipmYWxzZSoqXHJcbiAgICAgKiBlIGNvbGxlZ2FuZG8gbCdvdXRwdXQgKipvblNlcmllc0NsaWNrZWQqKiDDqCBwb3NzaWJpbGUgZ2VuZXJhcmUgdW4gZXZlbnRvIG9nbmkgdm9sdGEgY2hlIGwndXRlbnRlIGZhIGNsaWNrIHN1IHVuYSBzZXJpZSBkZWxsYSBMZWdlbmRhXHJcbiAgICAgKi9cclxuICAgIEhpZGVTZXJpZXNPbkxhYmVsQ2xpY2s6IGJvb2xlYW47XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBNaW5pbWEgZGlzdGFuemEgbmVsbGEgZ3JpZ2xpYSBmcmEgaSB2YWxvcmksIG1vZGlmaWNhIGxhIHF1YW50aXTDoCBkaSBzdGVwIGZyYSBpIHZhbG9yaSBkZWxsJ2Fzc2UgWCBlIHF1aW5kaSBsYSBncmFudWxhcml0w6AgZGVpIGRhdGkuXHJcbiAgICAgKiBcclxuICAgICAqIFBpw7kgcGljY29sYSDDqCwgcGnDuSB2YWxvcmkgdmVycmFubm8gaW5zZXJpdGkgbmVsbCdhc3NlIFhcclxuICAgICAqL1xyXG4gICAgTWluR3JpZERpc3RhbmNlOiBudW1iZXI7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBJbmRpY2EgbGEgcG9zaXppb25lIGRlbGxhIExlZ2VuZGEgcmlzcGV0dG8gYWwgZ3JhZmljb1xyXG4gICAgICovXHJcbiAgICBMZWdlbmRQb3NpdGlvbjogXCJ0b3BcIiB8IFwiYm90dG9tXCIgfCBcImxlZnRcIiB8IFwicmlnaHRcIjtcclxuXHJcbiAgICAvKipcclxuICAgICAqIENlcmNhIGRpIGFnZ2l1c3RhcmUgaSB2YXJpIHN0ZXAgZGVsbCdhc3NlIFggcnVvdGFuZG9saSBlIGRpbWludWVuZG9uZSBsZSBkaW1lbnNpb25pIGFiYmFzdGFuemEgcGVyIG1vc3RyYXJuZSBpbCBwacO5IHBvc3NpYmlsZVxyXG4gICAgICovXHJcbiAgICBBZGFwdExhYmVsU2l6ZUFuZE9yaWVudGF0aW9uOiBib29sZWFuO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogUGFkZGluZyBkYSBhcHBsaWNhcmUgYWxsYSBMZWdlbmRhIGluIGNhc28gc2kgdm9nbGlhIHNwb3N0YXJlIHVuIHBvJ1xyXG4gICAgICovXHJcbiAgICBMZWdlbmRQYWRkaW5nOiBMZWdlbmRQYWQ7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBUZW1hIGRhIHV0aWxpenphcmUsIHZhbGlkbyBzb2xvIHBlciBpbCBncmFmaWNvIGluIHF1ZXN0aW9uZS4gR2xpIGFsdHJpIGdyYWZpY2kgZGVsbGEgcGFnaW5hIHBvc3Nvbm8gYXZlcmUgc3RpbGkgZGl2ZXJzaS5cclxuICAgICAqIFxyXG4gICAgICogRXNzZW5kbyBpIHRlbWkgY2FyaWNhdGkgaW4gbWFuaWVyYSBhc2luY3JvbmEgaW4gYmFzZSBhbGwndXRpbGl6em8gdXRpbGl6emFybmUgdGFudGkgZGl2ZXJzaSBpbiB1bid1bmljYSBwYWdpbmEgcG90cmViYmUgcmFsbGVudGFyZSBpbCBwcmltbyBjYXJpY2FtZW50b1xyXG4gICAgICovXHJcbiAgICBUaGVtZTogJ3NwaXJpdGVkYXdheScgfCAnbW9vbnJpc2VraW5nZG9tJyB8ICdmcm96ZW4nIHwgJ2RhcmsnIHwgJ2tlbGx5JyB8ICdtYXRlcmlhbCcgfCAnZGF0YXZpeicgfCAnbm9uZSc7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBMb2NhbGUgZGVsIHNpbmdvbG8gZ3JhZmljb1xyXG4gICAgICovXHJcbiAgICBMb2NhbGU6IHN0cmluZztcclxuXHJcbiAgICAvKipcclxuICAgICAqIFV0aWxpenpvIG8gbWVubyBkZWxsZSBhbmltYXppb25pLiBTZW56YSBhbmltYXppb25pIGlsIGdyYWZpY28gw6ggbGVnZ2VybWVudGUgcGnDuSBwZXJmb3JtYW50ZSwgc3BlY2lhbG1lbnRlIGFsbCdhdW1lbnRhcmUgZGVpIHB1bnRpIG5lbGxhIHNlcmllXHJcbiAgICAgKi9cclxuICAgIEFuaW1hdGlvbnM6IGJvb2xlYW47XHJcblxyXG4gICAgLy9UT0RPXHJcbiAgICAvL1Nlcmllc0xhYmVsVGVtcGxhdGU6IHN0cmluZztcclxuXHJcbiAgICAvL05hc2Nvc3RvLCBsbyB1c28gY29tZSBjb2xsZWdhbWVudG8gZnJhIGxlIHNlcnZpY2UgZSBpbCBiYXNlX2NoYXJ0c1xyXG4gICAgLy9PblNlcmllc0NsaWNrQ2FsbGJhY2s6IEZ1bmN0aW9uO1xyXG4gICAgLy9PblNlbGVjdGlvbkNoYW5nZWRDYWxsYmFjazogRnVuY3Rpb247XHJcbiAgICAvL0NvbnRhaW5lckhlaWdodDogbnVtYmVyO1xyXG59Il19
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Classe che identifica le informazioni di Padding per la Legenda
|
|
3
|
-
*/
|
|
4
|
-
export class LegendPad {
|
|
5
|
-
}
|
|
1
|
+
/**
|
|
2
|
+
* Classe che identifica le informazioni di Padding per la Legenda
|
|
3
|
+
*/
|
|
4
|
+
export class LegendPad {
|
|
5
|
+
}
|
|
6
6
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTGVnZW5kUGFkLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZXMtY2hhcnRzL3NyYy9saWIvbW9kZWxzL3NldHRpbmdzL2Jhc2UvTGVnZW5kUGFkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBOztHQUVHO0FBQ0gsTUFBTSxPQUFPLFNBQVM7Q0FxQnJCIiwic291cmNlc0NvbnRlbnQiOlsiXHJcbi8qKlxyXG4gKiBDbGFzc2UgY2hlIGlkZW50aWZpY2EgbGUgaW5mb3JtYXppb25pIGRpIFBhZGRpbmcgcGVyIGxhIExlZ2VuZGFcclxuICovXHJcbmV4cG9ydCBjbGFzcyBMZWdlbmRQYWQge1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogUGFkZGluZyBpbiBhbHRvXHJcbiAgICAgKi9cclxuICAgIHRvcDogbnVtYmVyO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogUGFkZGluZyBpbiBiYXNzb1xyXG4gICAgICovXHJcbiAgICBib3R0b206IG51bWJlcjtcclxuXHJcbiAgICAvKipcclxuICAgICAqIFBhZGRpbmcgYSBzaW5pc3RyYVxyXG4gICAgICovXHJcbiAgICBsZWZ0OiBudW1iZXI7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBQYWRkaW5nIGEgZGVzdHJhXHJcbiAgICAgKi9cclxuICAgIHJpZ2h0OiBudW1iZXI7XHJcbn0iXX0=
|
|
@@ -0,0 +1,157 @@
|
|
|
1
|
+
import * as am4core from "@amcharts/amcharts4/core";
|
|
2
|
+
import * as am4charts from "@amcharts/amcharts4/charts";
|
|
3
|
+
/**
|
|
4
|
+
* Classe il cui unico scopo è gestire il setup e rendering di un AreaChart
|
|
5
|
+
*/
|
|
6
|
+
export class AreaChartService {
|
|
7
|
+
/** @ignore */
|
|
8
|
+
constructor(Adapter) {
|
|
9
|
+
this.Adapter = Adapter;
|
|
10
|
+
//******************** Funzione di throttling per non spammare richieste in caso di animazioni attivate
|
|
11
|
+
//TODO: spostarla in un metodo di utilità (esfaenza/extensions)
|
|
12
|
+
/** @ignore */
|
|
13
|
+
this.executionTimers = {};
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Metodo che data una coppia Dati - Impostazioni li utilizza per creare e visualizzare un AreaChart
|
|
17
|
+
*/
|
|
18
|
+
graphicate(data, settings) {
|
|
19
|
+
if (settings.Timeline) {
|
|
20
|
+
console.error("Timeline not supported for area chart");
|
|
21
|
+
return null;
|
|
22
|
+
}
|
|
23
|
+
let dataConverted = this.Adapter ? this.Adapter.adaptDataForAreaChart(data) : data;
|
|
24
|
+
let showTicks = settings.ShowTicks == null ? true : settings?.ShowTicks;
|
|
25
|
+
let interval = dataConverted.interval;
|
|
26
|
+
//Per evitare di dimenticarmeli e gestire comunque bene gli ngif ecc...
|
|
27
|
+
am4core.options.autoDispose = true;
|
|
28
|
+
this.ChartInstance = am4core.create(settings.Name, am4charts.XYChart);
|
|
29
|
+
let ChartInstanceCasted = this.ChartInstance;
|
|
30
|
+
if (settings.Legend) {
|
|
31
|
+
ChartInstanceCasted.legend = new am4charts.Legend();
|
|
32
|
+
ChartInstanceCasted.legend.position = settings?.LegendPosition ?? 'right';
|
|
33
|
+
ChartInstanceCasted.legend.itemContainers.template.tooltipText = "{category}";
|
|
34
|
+
if (settings.LegendPadding) {
|
|
35
|
+
let template = this.ChartInstance.legend.itemContainers.template;
|
|
36
|
+
template.paddingTop = settings.LegendPadding.top ?? 0;
|
|
37
|
+
template.paddingBottom = settings.LegendPadding.bottom ?? 0;
|
|
38
|
+
template.paddingLeft = settings.LegendPadding.left ?? 0;
|
|
39
|
+
template.paddingRight = settings.LegendPadding.right ?? 0;
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
let yAxis = ChartInstanceCasted.yAxes.push(new am4charts.ValueAxis());
|
|
43
|
+
yAxis.tooltip.disabled = true;
|
|
44
|
+
if (settings.YAxisTitle) {
|
|
45
|
+
yAxis.title.text = settings.YAxisTitle;
|
|
46
|
+
yAxis.title.fontWeight = "bold";
|
|
47
|
+
}
|
|
48
|
+
yAxis.min = 0;
|
|
49
|
+
let dateAxis = ChartInstanceCasted.xAxes.push(new am4charts.DateAxis());
|
|
50
|
+
dateAxis.renderer.minGridDistance = settings?.MinGridDistance ?? 50;
|
|
51
|
+
dateAxis.startLocation = 0.5;
|
|
52
|
+
dateAxis.endLocation = 0.5;
|
|
53
|
+
if (settings.XAxisTitle) {
|
|
54
|
+
dateAxis.title.text = settings.XAxisTitle;
|
|
55
|
+
dateAxis.title.fontWeight = "bold";
|
|
56
|
+
}
|
|
57
|
+
if (showTicks) {
|
|
58
|
+
dateAxis.renderer.ticks.template.disabled = false;
|
|
59
|
+
dateAxis.renderer.ticks.template.strokeOpacity = 1;
|
|
60
|
+
dateAxis.renderer.ticks.template.stroke = am4core.color("#495C43");
|
|
61
|
+
dateAxis.renderer.ticks.template.strokeWidth = 2;
|
|
62
|
+
dateAxis.renderer.ticks.template.length = 10;
|
|
63
|
+
dateAxis.renderer.ticks.template.location = 0;
|
|
64
|
+
}
|
|
65
|
+
if (!!interval)
|
|
66
|
+
dateAxis.baseInterval = { count: interval.count, timeUnit: this.fixTimeUnit(interval.timeunit) };
|
|
67
|
+
// Unisco il dataset e tiro fuori i dati
|
|
68
|
+
let chartData = [];
|
|
69
|
+
let seriesToMakeCache = {};
|
|
70
|
+
let seriesToMake = [];
|
|
71
|
+
for (let i = 0; i < dataConverted.groups.length; i++) {
|
|
72
|
+
let group = dataConverted.groups[i];
|
|
73
|
+
let dataItem = { date: group.name };
|
|
74
|
+
for (let ii = 0; ii < group.values.length; ii++) {
|
|
75
|
+
let val = group.values[ii];
|
|
76
|
+
dataItem[val.k] = val.v;
|
|
77
|
+
if (!seriesToMakeCache[val.k]) {
|
|
78
|
+
seriesToMakeCache[val.k] = true;
|
|
79
|
+
seriesToMake.push(val.k);
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
chartData.push(dataItem);
|
|
83
|
+
}
|
|
84
|
+
ChartInstanceCasted.data = chartData;
|
|
85
|
+
//---------------------------------------------------------
|
|
86
|
+
seriesToMake.forEach(s => { this.createSeries(ChartInstanceCasted, s); });
|
|
87
|
+
ChartInstanceCasted.cursor = new am4charts.XYCursor();
|
|
88
|
+
ChartInstanceCasted.cursor.xAxis = dateAxis;
|
|
89
|
+
dateAxis.events.on("startchanged", t => this.emitSelectionChanged(t, settings));
|
|
90
|
+
dateAxis.events.on("endchanged", t => this.emitSelectionChanged(t, settings));
|
|
91
|
+
return this;
|
|
92
|
+
}
|
|
93
|
+
fixTimeUnit(tu) {
|
|
94
|
+
if (tu === 0)
|
|
95
|
+
return "millisecond";
|
|
96
|
+
else if (tu === 1)
|
|
97
|
+
return "second";
|
|
98
|
+
else if (tu === 2)
|
|
99
|
+
return "minute";
|
|
100
|
+
else if (tu === 3)
|
|
101
|
+
return "hour";
|
|
102
|
+
else if (tu === 4)
|
|
103
|
+
return "day";
|
|
104
|
+
else if (tu === 5)
|
|
105
|
+
return "week";
|
|
106
|
+
else if (tu === 6)
|
|
107
|
+
return "month";
|
|
108
|
+
else if (tu === 7)
|
|
109
|
+
return "year";
|
|
110
|
+
else
|
|
111
|
+
return tu;
|
|
112
|
+
}
|
|
113
|
+
/** @ignore */
|
|
114
|
+
setSelection(from, to) {
|
|
115
|
+
}
|
|
116
|
+
/** @ignore */
|
|
117
|
+
refreshData(data) {
|
|
118
|
+
//TODO:IMPL
|
|
119
|
+
}
|
|
120
|
+
/** @ignore */
|
|
121
|
+
emitSelectionChanged(ev, settings) {
|
|
122
|
+
if (settings.OnSelectionChangedCallback) {
|
|
123
|
+
this.throttla("selchange", () => {
|
|
124
|
+
var axis = ev.target;
|
|
125
|
+
var start = new Date(axis.minZoomed);
|
|
126
|
+
var end = new Date(axis.maxZoomed);
|
|
127
|
+
var initial = axis.min == axis.minZoomed && axis.max == axis.maxZoomed;
|
|
128
|
+
settings.OnSelectionChangedCallback({ from: start, to: end, initial: initial });
|
|
129
|
+
}, 150);
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
/** @ignore */
|
|
133
|
+
createSeries(chart, name) {
|
|
134
|
+
let series = chart.series.push(new am4charts.LineSeries());
|
|
135
|
+
series.dataFields.dateX = "date";
|
|
136
|
+
series.name = name[0].toUpperCase() + name.slice(1);
|
|
137
|
+
series.dataFields.valueY = name;
|
|
138
|
+
series.tooltipText = "[#000]{valueY.value}[/]";
|
|
139
|
+
//series.tooltip.background.fill = am4core.color("#FFF");
|
|
140
|
+
series.tooltip.getStrokeFromObject = true;
|
|
141
|
+
series.tooltip.background.strokeWidth = 3;
|
|
142
|
+
series.tooltip.getFillFromObject = false;
|
|
143
|
+
series.fillOpacity = 0.6;
|
|
144
|
+
series.strokeWidth = 2;
|
|
145
|
+
series.stacked = true;
|
|
146
|
+
return series;
|
|
147
|
+
}
|
|
148
|
+
/** @ignore */
|
|
149
|
+
throttla(id, func, throttleTime) {
|
|
150
|
+
//Se ho la funzione che vuole eseguire ripulisco quel timeout
|
|
151
|
+
if (this.executionTimers[id])
|
|
152
|
+
clearTimeout(this.executionTimers[id]);
|
|
153
|
+
//Ricreo il timeout per eseguire quella funzione dopo throttleTime millisecondi
|
|
154
|
+
this.executionTimers[id] = setTimeout(() => { func(); this.executionTimers[id] = null; }, throttleTime);
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQXJlYUNoYXJ0U2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2VzLWNoYXJ0cy9zcmMvbGliL3NlcnZpY2VzL0FyZWFDaGFydFNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBS0EsT0FBTyxLQUFLLE9BQU8sTUFBTSwwQkFBMEIsQ0FBQztBQUNwRCxPQUFPLEtBQUssU0FBUyxNQUFNLDRCQUE0QixDQUFDO0FBRXhEOztHQUVHO0FBQ0gsTUFBTSxPQUFPLGdCQUFnQjtJQUszQixjQUFjO0lBQ2QsWUFBbUIsT0FBb0I7UUFBcEIsWUFBTyxHQUFQLE9BQU8sQ0FBYTtRQWtKdkMsdUdBQXVHO1FBQ3ZHLCtEQUErRDtRQUMvRCxjQUFjO1FBQ04sb0JBQWUsR0FBNkIsRUFBRSxDQUFDO0lBckpaLENBQUM7SUFFNUM7O09BRUc7SUFDSSxVQUFVLENBQUMsSUFBeUIsRUFBRSxRQUEyQjtRQUN0RSxJQUFJLFFBQVEsQ0FBQyxRQUFRLEVBQUU7WUFDckIsT0FBTyxDQUFDLEtBQUssQ0FBQyx1Q0FBdUMsQ0FBQyxDQUFDO1lBQ3ZELE9BQU8sSUFBSSxDQUFDO1NBQ2I7UUFDRCxJQUFJLGFBQWEsR0FBa0IsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxxQkFBcUIsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO1FBQ2xHLElBQUksU0FBUyxHQUFHLFFBQVEsQ0FBQyxTQUFTLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLFFBQVEsRUFBRSxTQUFTLENBQUM7UUFDeEUsSUFBSSxRQUFRLEdBQUcsYUFBYSxDQUFDLFFBQVEsQ0FBQztRQUV0Qyx1RUFBdUU7UUFDdkUsT0FBTyxDQUFDLE9BQU8sQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDO1FBRW5DLElBQUksQ0FBQyxhQUFhLEdBQUcsT0FBTyxD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JztcclxuaW1wb3J0IHsgQmFzZUFkYXB0ZXIgfSBmcm9tICcuLi9hZGFwdGVycy9CYXNlQWRhcHRlcic7XHJcbmltcG9ydCB7IEFyZWFDaGFydERhdGEgfSBmcm9tICcuLi9tb2RlbHMvZGF0YS9BcmVhQ2hhcnREYXRhJztcclxuaW1wb3J0IHsgQXJlYUNoYXJ0U2V0dGluZ3MgfSBmcm9tICcuLi9tb2RlbHMvc2V0dGluZ3MvQXJlYUNoYXJ0U2V0dGluZ3MnO1xyXG5cclxuaW1wb3J0ICogYXMgYW00Y29yZSBmcm9tIFwiQGFtY2hhcnRzL2FtY2hhcnRzNC9jb3JlXCI7XHJcbmltcG9ydCAqIGFzIGFtNGNoYXJ0cyBmcm9tIFwiQGFtY2hhcnRzL2FtY2hhcnRzNC9jaGFydHNcIjtcclxuXHJcbi8qKlxyXG4gKiBDbGFzc2UgaWwgY3VpIHVuaWNvIHNjb3BvIMOoIGdlc3RpcmUgaWwgc2V0dXAgZSByZW5kZXJpbmcgZGkgdW4gQXJlYUNoYXJ0XHJcbiAqL1xyXG5leHBvcnQgY2xhc3MgQXJlYUNoYXJ0U2VydmljZSBpbXBsZW1lbnRzIElCYXNlU2VydmljZTxhbTRjaGFydHMuWFlDaGFydD4ge1xyXG5cclxuICAvKiogQGlnbm9yZSAqL1xyXG4gIHB1YmxpYyBDaGFydEluc3RhbmNlOiBhbTRjaGFydHMuWFlDaGFydDtcclxuXHJcbiAgLyoqIEBpZ25vcmUgKi9cclxuICBjb25zdHJ1Y3RvcihwdWJsaWMgQWRhcHRlcjogQmFzZUFkYXB0ZXIpIHsgfVxyXG5cclxuICAvKipcclxuICAgKiBNZXRvZG8gY2hlIGRhdGEgdW5hIGNvcHBpYSBEYXRpIC0gSW1wb3N0YXppb25pIGxpIHV0aWxpenphIHBlciBjcmVhcmUgZSB2aXN1YWxpenphcmUgdW4gQXJlYUNoYXJ0XHJcbiAgICovXHJcbiAgcHVibGljIGdyYXBoaWNhdGUoZGF0YTogQXJlYUNoYXJ0RGF0YSB8IGFueSwgc2V0dGluZ3M6IEFyZWFDaGFydFNldHRpbmdzKTogSUJhc2VTZXJ2aWNlPGFtNGNoYXJ0cy5YWUNoYXJ0PiB7XHJcbiAgICBpZiAoc2V0dGluZ3MuVGltZWxpbmUpIHtcclxuICAgICAgY29uc29sZS5lcnJvcihcIlRpbWVsaW5lIG5vdCBzdXBwb3J0ZWQgZm9yIGFyZWEgY2hhcnRcIik7XHJcbiAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfVxyXG4gICAgbGV0IGRhdGFDb252ZXJ0ZWQ6IEFyZWFDaGFydERhdGEgPSB0aGlzLkFkYXB0ZXIgPyB0aGlzLkFkYXB0ZXIuYWRhcHREYXRhRm9yQXJlYUNoYXJ0KGRhdGEpIDogZGF0YTtcclxuICAgIGxldCBzaG93VGlja3MgPSBzZXR0aW5ncy5TaG93VGlja3MgPT0gbnVsbCA/IHRydWUgOiBzZXR0aW5ncz8uU2hvd1RpY2tzO1xyXG4gICAgbGV0IGludGVydmFsID0gZGF0YUNvbnZlcnRlZC5pbnRlcnZhbDtcclxuXHJcbiAgICAvL1BlciBldml0YXJlIGRpIGRpbWVudGljYXJtZWxpIGUgZ2VzdGlyZSBjb211bnF1ZSBiZW5lIGdsaSBuZ2lmIGVjYy4uLlxyXG4gICAgYW00Y29yZS5vcHRpb25zLmF1dG9EaXNwb3NlID0gdHJ1ZTtcclxuXHJcbiAgICB0aGlzLkNoYXJ0SW5zdGFuY2UgPSBhbTRjb3JlLmNyZWF0ZShzZXR0aW5ncy5OYW1lLCBhbTRjaGFydHMuWFlDaGFydCk7XHJcbiAgICBsZXQgQ2hhcnRJbnN0YW5jZUNhc3RlZCA9IDxhbTRjaGFydHMuWFlDaGFydD50aGlzLkNoYXJ0SW5zdGFuY2U7XHJcblxyXG4gICAgaWYgKHNldHRpbmdzLkxlZ2VuZCkge1xyXG4gICAgICBDaGFydEluc3RhbmNlQ2FzdGVkLmxlZ2VuZCA9IG5ldyBhbTRjaGFydHMuTGVnZW5kKCk7XHJcbiAgICAgIENoYXJ0SW5zdGFuY2VDYXN0ZWQubGVnZW5kLnBvc2l0aW9uID0gc2V0dGluZ3M/LkxlZ2VuZFBvc2l0aW9uID8/ICdyaWdodCc7XHJcbiAgICAgIENoYXJ0SW5zdGFuY2VDYXN0ZWQubGVnZW5kLml0ZW1Db250YWluZXJzLnRlbXBsYXRlLnRvb2x0aXBUZXh0ID0gXCJ7Y2F0ZWdvcnl9XCI7XHJcblxyXG4gICAgICBpZiAoc2V0dGluZ3MuTGVnZW5kUGFkZGluZykge1xyXG4gICAgICAgIGxldCB0ZW1wbGF0ZSA9IHRoaXMuQ2hhcnRJbnN0YW5jZS5sZWdlbmQuaXRlbUNvbnRhaW5lcnMudGVtcGxhdGU7XHJcbiAgICAgICAgdGVtcGxhdGUucGFkZGluZ1RvcCA9IHNldHRpbmdzLkxlZ2VuZFBhZGRpbmcudG9wID8/IDA7XHJcbiAgICAgICAgdGVtcGxhdGUucGFkZGluZ0JvdHRvbSA9IHNldHRpbmdzLkxlZ2VuZFBhZGRpbmcuYm90dG9tID8/IDA7XHJcbiAgICAgICAgdGVtcGxhdGUucGFkZGluZ0xlZnQgPSBzZXR0aW5ncy5MZWdlbmRQYWRkaW5nLmxlZnQgPz8gMDtcclxuICAgICAgICB0ZW1wbGF0ZS5wYWRkaW5nUmlnaHQgPSBzZXR0aW5ncy5MZWdlbmRQYWRkaW5nLnJpZ2h0ID8/IDA7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBsZXQgeUF4aXMgPSBDaGFydEluc3RhbmNlQ2FzdGVkLnlBeGVzLnB1c2gobmV3IGFtNGNoYXJ0cy5WYWx1ZUF4aXMoKSk7XHJcbiAgICB5QXhpcy50b29sdGlwLmRpc2FibGVkID0gdHJ1ZTtcclxuICAgIGlmIChzZXR0aW5ncy5ZQXhpc1RpdGxlKSB7XHJcbiAgICAgIHlBeGlzLnRpdGxlLnRleHQgPSBzZXR0aW5ncy5ZQXhpc1RpdGxlXHJcbiAgICAgIHlBeGlzLnRpdGxlLmZvbnRXZWlnaHQgPSBcImJvbGRcIjtcclxuICAgIH1cclxuICAgIHlBeGlzLm1pbiA9IDA7XHJcblxyXG4gICAgbGV0IGRhdGVBeGlzID0gQ2hhcnRJbnN0YW5jZUNhc3RlZC54QXhlcy5wdXNoKG5ldyBhbTRjaGFydHMuRGF0ZUF4aXMoKSk7XHJcbiAgICBkYXRlQXhpcy5yZW5kZXJlci5taW5HcmlkRGlzdGFuY2UgPSBzZXR0aW5ncz8uTWluR3JpZERpc3RhbmNlID8/IDUwO1xyXG4gICAgZGF0ZUF4aXMuc3RhcnRMb2NhdGlvbiA9IDAuNTtcclxuICAgIGRhdGVBeGlzLmVuZExvY2F0aW9uID0gMC41O1xyXG5cclxuICAgIGlmIChzZXR0aW5ncy5YQXhpc1RpdGxlKSB7XHJcbiAgICAgIGRhdGVBeGlzLnRpdGxlLnRleHQgPSBzZXR0aW5ncy5YQXhpc1RpdGxlXHJcbiAgICAgIGRhdGVBeGlzLnRpdGxlLmZvbnRXZWlnaHQgPSBcImJvbGRcIjtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoc2hvd1RpY2tzKSB7XHJcbiAgICAgIGRhdGVBeGlzLnJlbmRlcmVyLnRpY2tzLnRlbXBsYXRlLmRpc2FibGVkID0gZmFsc2U7XHJcbiAgICAgIGRhdGVBeGlzLnJlbmRlcmVyLnRpY2tzLnRlbXBsYXRlLnN0cm9rZU9wYWNpdHkgPSAxO1xyXG4gICAgICBkYXRlQXhpcy5yZW5kZXJlci50aWNrcy50ZW1wbGF0ZS5zdHJva2UgPSBhbTRjb3JlLmNvbG9yKFwiIzQ5NUM0M1wiKTtcclxuICAgICAgZGF0ZUF4aXMucmVuZGVyZXIudGlja3MudGVtcGxhdGUuc3Ryb2tlV2lkdGggPSAyO1xyXG4gICAgICBkYXRlQXhpcy5yZW5kZXJlci50aWNrcy50ZW1wbGF0ZS5sZW5ndGggPSAxMDtcclxuICAgICAgZGF0ZUF4aXMucmVuZGVyZXIudGlja3MudGVtcGxhdGUubG9jYXRpb24gPSAwO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICghIWludGVydmFsKVxyXG4gICAgICBkYXRlQXhpcy5iYXNlSW50ZXJ2YWwgPSB7IGNvdW50OiBpbnRlcnZhbC5jb3VudCwgdGltZVVuaXQ6IHRoaXMuZml4VGltZVVuaXQoaW50ZXJ2YWwudGltZXVuaXQpIH07XHJcblxyXG4gICAgLy8gVW5pc2NvIGlsIGRhdGFzZXQgZSB0aXJvIGZ1b3JpIGkgZGF0aVxyXG4gICAgbGV0IGNoYXJ0RGF0YSA9IFtdO1xyXG4gICAgbGV0IHNlcmllc1RvTWFrZUNhY2hlOiB7IFtpbmRleDogc3RyaW5nXTogYm9vbGVhbiB9ID0ge307XHJcbiAgICBsZXQgc2VyaWVzVG9NYWtlOiBzdHJpbmdbXSA9IFtdO1xyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBkYXRhQ29udmVydGVkLmdyb3Vwcy5sZW5ndGg7IGkrKykge1xyXG4gICAgICBsZXQgZ3JvdXAgPSBkYXRhQ29udmVydGVkLmdyb3Vwc1tpXTtcclxuICAgICAgbGV0IGRhdGFJdGVtID0geyBkYXRlOiBncm91cC5uYW1lIH07XHJcbiAgICAgIGZvciAobGV0IGlpID0gMDsgaWkgPCBncm91cC52YWx1ZXMubGVuZ3RoOyBpaSsrKSB7XHJcbiAgICAgICAgbGV0IHZhbCA9IGdyb3VwLnZhbHVlc1tpaV07XHJcbiAgICAgICAgZGF0YUl0ZW1bdmFsLmtdID0gdmFsLnY7XHJcbiAgICAgICAgaWYgKCFzZXJpZXNUb01ha2VDYWNoZVt2YWwua10pIHtcclxuICAgICAgICAgIHNlcmllc1RvTWFrZUNhY2hlW3ZhbC5rXSA9IHRydWU7XHJcbiAgICAgICAgICBzZXJpZXNUb01ha2UucHVzaCh2YWwuayk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIGNoYXJ0RGF0YS5wdXNoKGRhdGFJdGVtKTtcclxuICAgIH1cclxuICAgIENoYXJ0SW5zdGFuY2VDYXN0ZWQuZGF0YSA9IGNoYXJ0RGF0YTtcclxuICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXHJcblxyXG4gICAgc2VyaWVzVG9NYWtlLmZvckVhY2gocyA9PiB7IHRoaXMuY3JlYXRlU2VyaWVzKENoYXJ0SW5zdGFuY2VDYXN0ZWQsIHMpOyB9KTtcclxuXHJcbiAgICBDaGFydEluc3RhbmNlQ2FzdGVkLmN1cnNvciA9IG5ldyBhbTRjaGFydHMuWFlDdXJzb3IoKTtcclxuICAgIENoYXJ0SW5zdGFuY2VDYXN0ZWQuY3Vyc29yLnhBeGlzID0gZGF0ZUF4aXM7XHJcblxyXG4gICAgZGF0ZUF4aXMuZXZlbnRzLm9uKFwic3RhcnRjaGFuZ2VkXCIsIHQgPT4gdGhpcy5lbWl0U2VsZWN0aW9uQ2hhbmdlZCh0LCBzZXR0aW5ncykpO1xyXG4gICAgZGF0ZUF4aXMuZXZlbnRzLm9uKFwiZW5kY2hhbmdlZFwiLCB0ID0+IHRoaXMuZW1pdFNlbGVjdGlvbkNoYW5nZWQodCwgc2V0dGluZ3MpKTtcclxuICAgIHJldHVybiB0aGlzO1xyXG4gIH1cclxuXHJcbiAgZml4VGltZVVuaXQodHU6IGFueSk6IFwibWlsbGlzZWNvbmRcIiB8IFwic2Vjb25kXCIgfCBcIm1pbnV0ZVwiIHwgXCJob3VyXCIgfCBcImRheVwiIHwgXCJ3ZWVrXCIgfCBcIm1vbnRoXCIgfCBcInllYXJcIiB7XHJcbiAgICBpZiAodHUgPT09IDApIHJldHVybiBcIm1pbGxpc2Vjb25kXCI7XHJcbiAgICBlbHNlIGlmICh0dSA9PT0gMSkgcmV0dXJuIFwic2Vjb25kXCI7XHJcbiAgICBlbHNlIGlmICh0dSA9PT0gMikgcmV0dXJuIFwibWludXRlXCI7XHJcbiAgICBlbHNlIGlmICh0dSA9PT0gMykgcmV0dXJuIFwiaG91clwiO1xyXG4gICAgZWxzZSBpZiAodHUgPT09IDQpIHJldHVybiBcImRheVwiO1xyXG4gICAgZWxzZSBpZiAodHUgPT09IDUpIHJldHVybiBcIndlZWtcIjtcclxuICAgIGVsc2UgaWYgKHR1ID09PSA2KSByZXR1cm4gXCJtb250aFwiO1xyXG4gICAgZWxzZSBpZiAodHUgPT09IDcpIHJldHVybiBcInllYXJcIjtcclxuICAgIGVsc2UgcmV0dXJuIHR1O1xyXG4gIH1cclxuXHJcbiAgLyoqIEBpZ25vcmUgKi9cclxuICBzZXRTZWxlY3Rpb24oZnJvbTogRGF0ZSwgdG86IERhdGUpOiB2b2lkIHtcclxuXHJcbiAgfVxyXG5cclxuICAvKiogQGlnbm9yZSAqL1xyXG4gIHB1YmxpYyByZWZyZXNoRGF0YShkYXRhOiBBcmVhQ2hhcnREYXRhIHwgYW55KSB7XHJcbiAgICAvL1RPRE86SU1QTFxyXG4gIH1cclxuXHJcbiAgLyoqIEBpZ25vcmUgKi9cclxuICBwcml2YXRlIGVtaXRTZWxlY3Rpb25DaGFuZ2VkKGV2LCBzZXR0aW5ncykge1xyXG4gICAgaWYgKCg8YW55PnNldHRpbmdzKS5PblNlbGVjdGlvbkNoYW5nZWRDYWxsYmFjaykge1xyXG4gICAgICB0aGlzLnRocm90dGxhKFwic2VsY2hhbmdlXCIsICgpID0+IHtcclxuICAgICAgICB2YXIgYXhpcyA9IDxhbTRjaGFydHMuRGF0ZUF4aXM+ZXYudGFyZ2V0XHJcbiAgICAgICAgdmFyIHN0YXJ0ID0gbmV3IERhdGUoYXhpcy5taW5ab29tZWQpO1xyXG4gICAgICAgIHZhciBlbmQgPSBuZXcgRGF0ZShheGlzLm1heFpvb21lZCk7XHJcbiAgICAgICAgdmFyIGluaXRpYWwgPSBheGlzLm1pbiA9PSBheGlzLm1pblpvb21lZCAmJiBheGlzLm1heCA9PSBheGlzLm1heFpvb21lZDtcclxuICAgICAgICAoPGFueT5zZXR0aW5ncykuT25TZWxlY3Rpb25DaGFuZ2VkQ2FsbGJhY2soeyBmcm9tOiBzdGFydCwgdG86IGVuZCwgaW5pdGlhbDogaW5pdGlhbCB9KTtcclxuICAgICAgfSwgMTUwKVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqIEBpZ25vcmUgKi9cclxuICBwcml2YXRlIGNyZWF0ZVNlcmllcyhjaGFydDogYW55LCBuYW1lOiBzdHJpbmcpIHtcclxuICAgIGxldCBzZXJpZXM6IGFtNGNoYXJ0cy5MaW5lU2VyaWVzID0gY2hhcnQuc2VyaWVzLnB1c2gobmV3IGFtNGNoYXJ0cy5MaW5lU2VyaWVzKCkpXHJcbiAgICBzZXJpZXMuZGF0YUZpZWxkcy5kYXRlWCA9IFwiZGF0ZVwiO1xyXG4gICAgc2VyaWVzLm5hbWUgPSBuYW1lWzBdLnRvVXBwZXJDYXNlKCkgKyBuYW1lLnNsaWNlKDEpO1xyXG4gICAgc2VyaWVzLmRhdGFGaWVsZHMudmFsdWVZID0gbmFtZTtcclxuICAgIHNlcmllcy50b29sdGlwVGV4dCA9IFwiWyMwMDBde3ZhbHVlWS52YWx1ZX1bL11cIjtcclxuICAgIC8vc2VyaWVzLnRvb2x0aXAuYmFja2dyb3VuZC5maWxsID0gYW00Y29yZS5jb2xvcihcIiNGRkZcIik7XHJcbiAgICBzZXJpZXMudG9vbHRpcC5nZXRTdHJva2VGcm9tT2JqZWN0ID0gdHJ1ZTtcclxuICAgIHNlcmllcy50b29sdGlwLmJhY2tncm91bmQuc3Ryb2tlV2lkdGggPSAzO1xyXG4gICAgc2VyaWVzLnRvb2x0aXAuZ2V0RmlsbEZyb21PYmplY3QgPSBmYWxzZTtcclxuICAgIHNlcmllcy5maWxsT3BhY2l0eSA9IDAuNjtcclxuICAgIHNlcmllcy5zdHJva2VXaWR0aCA9IDI7XHJcbiAgICBzZXJpZXMuc3RhY2tlZCA9IHRydWU7XHJcbiAgICByZXR1cm4gc2VyaWVzO1xyXG4gIH1cclxuXHJcbiAgLy8qKioqKioqKioqKioqKioqKioqKiBGdW56aW9uZSBkaSB0aHJvdHRsaW5nIHBlciBub24gc3BhbW1hcmUgcmljaGllc3RlIGluIGNhc28gZGkgYW5pbWF6aW9uaSBhdHRpdmF0ZVxyXG4gIC8vVE9ETzogc3Bvc3RhcmxhIGluIHVuIG1ldG9kbyBkaSB1dGlsaXTDoCAoZXNmYWVuemEvZXh0ZW5zaW9ucylcclxuICAvKiogQGlnbm9yZSAqL1xyXG4gIHByaXZhdGUgZXhlY3V0aW9uVGltZXJzOiB7IFtpbmRleDogc3RyaW5nXTogYW55IH0gPSB7fTtcclxuICAvKiogQGlnbm9yZSAqL1xyXG4gIHByaXZhdGUgdGhyb3R0bGEoaWQ6IHN0cmluZywgZnVuYzogRnVuY3Rpb24sIHRocm90dGxlVGltZTogbnVtYmVyKTogdm9pZCB7XHJcbiAgICAvL1NlIGhvIGxhIGZ1bnppb25lIGNoZSB2dW9sZSBlc2VndWlyZSByaXB1bGlzY28gcXVlbCB0aW1lb3V0XHJcbiAgICBpZiAodGhpcy5leGVjdXRpb25UaW1lcnNbaWRdKVxyXG4gICAgICBjbGVhclRpbWVvdXQodGhpcy5leGVjdXRpb25UaW1lcnNbaWRdKTtcclxuXHJcbiAgICAvL1JpY3JlbyBpbCB0aW1lb3V0IHBlciBlc2VndWlyZSBxdWVsbGEgZnVuemlvbmUgZG9wbyB0aHJvdHRsZVRpbWUgbWlsbGlzZWNvbmRpXHJcbiAgICB0aGlzLmV4ZWN1dGlvblRpbWVyc1tpZF0gPSBzZXRUaW1lb3V0KCgpID0+IHsgZnVuYygpOyB0aGlzLmV4ZWN1dGlvblRpbWVyc1tpZF0gPSBudWxsOyB9LCB0aHJvdHRsZVRpbWUpO1xyXG4gIH1cclxuICAvLyoqKioqKioqKioqKioqKioqKioqKioqKipcclxufSJdfQ==
|