ca-components 0.0.86 → 0.0.87

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 (37) hide show
  1. package/esm2022/lib/ca-components.module.mjs +10 -4
  2. package/esm2022/lib/components/ca-chart/ca-chart.component.mjs +174 -0
  3. package/esm2022/lib/components/ca-chart/config/ca-base-chart-dataset.config.mjs +11 -0
  4. package/esm2022/lib/components/ca-chart/config/index.mjs +2 -0
  5. package/esm2022/lib/components/ca-chart/enums/chart-colors-enum.mjs +5 -0
  6. package/esm2022/lib/components/ca-chart/enums/chart-types-enum.mjs +7 -0
  7. package/esm2022/lib/components/ca-chart/enums/cubic-interpolation-mode-enum.mjs +6 -0
  8. package/esm2022/lib/components/ca-chart/enums/index.mjs +4 -0
  9. package/esm2022/lib/components/ca-chart/models/chart-base-dataset.model.mjs +2 -0
  10. package/esm2022/lib/components/ca-chart/models/chart-data.model.mjs +2 -0
  11. package/esm2022/lib/components/ca-chart/models/chart-line-dataset.model.mjs +2 -0
  12. package/esm2022/lib/components/ca-chart/models/index.mjs +4 -0
  13. package/esm2022/lib/components/ca-chart/utils/guards/chart-type.guard.mjs +8 -0
  14. package/esm2022/lib/components/ca-chart/utils/guards/index.mjs +2 -0
  15. package/esm2022/lib/components/ca-chart/utils/helpers/chart.helper.mjs +43 -0
  16. package/esm2022/lib/components/ca-chart/utils/helpers/index.mjs +2 -0
  17. package/esm2022/public-api.mjs +2 -1
  18. package/fesm2022/ca-components.mjs +249 -4
  19. package/fesm2022/ca-components.mjs.map +1 -1
  20. package/lib/ca-components.module.d.ts +2 -1
  21. package/lib/components/ca-chart/ca-chart.component.d.ts +28 -0
  22. package/lib/components/ca-chart/config/ca-base-chart-dataset.config.d.ts +4 -0
  23. package/lib/components/ca-chart/config/index.d.ts +1 -0
  24. package/lib/components/ca-chart/enums/chart-colors-enum.d.ts +3 -0
  25. package/lib/components/ca-chart/enums/chart-types-enum.d.ts +5 -0
  26. package/lib/components/ca-chart/enums/cubic-interpolation-mode-enum.d.ts +4 -0
  27. package/lib/components/ca-chart/enums/index.d.ts +3 -0
  28. package/lib/components/ca-chart/models/chart-base-dataset.model.d.ts +9 -0
  29. package/lib/components/ca-chart/models/chart-data.model.d.ts +5 -0
  30. package/lib/components/ca-chart/models/chart-line-dataset.model.d.ts +10 -0
  31. package/lib/components/ca-chart/models/index.d.ts +3 -0
  32. package/lib/components/ca-chart/utils/guards/chart-type.guard.d.ts +4 -0
  33. package/lib/components/ca-chart/utils/guards/index.d.ts +1 -0
  34. package/lib/components/ca-chart/utils/helpers/chart.helper.d.ts +8 -0
  35. package/lib/components/ca-chart/utils/helpers/index.d.ts +1 -0
  36. package/package.json +1 -1
  37. package/public-api.d.ts +1 -0
@@ -32,6 +32,7 @@ import { moveItemInArray, transferArrayItem, DragDropModule, CdkDragPlaceholder,
32
32
  import * as i8 from 'ng2-pdf-viewer';
33
33
  import { PdfViewerModule } from 'ng2-pdf-viewer';
34
34
  import { ImageCropperComponent } from 'ngx-image-cropper';
35
+ import { Chart } from 'chart.js/auto';
35
36
 
36
37
  class NameInitialsPipe {
37
38
  constructor() { }
@@ -21303,6 +21304,245 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
21303
21304
  type: Input
21304
21305
  }] } });
21305
21306
 
21307
+ var ChartTypesStringEnum;
21308
+ (function (ChartTypesStringEnum) {
21309
+ ChartTypesStringEnum["LINE"] = "line";
21310
+ ChartTypesStringEnum["BAR"] = "bar";
21311
+ ChartTypesStringEnum["DOUGHNUT"] = "doughnut";
21312
+ })(ChartTypesStringEnum || (ChartTypesStringEnum = {}));
21313
+
21314
+ var CubicInterpolationStringEnum;
21315
+ (function (CubicInterpolationStringEnum) {
21316
+ CubicInterpolationStringEnum["DEFAULT"] = "default";
21317
+ CubicInterpolationStringEnum["MONOTONE"] = "monotone";
21318
+ })(CubicInterpolationStringEnum || (CubicInterpolationStringEnum = {}));
21319
+
21320
+ var ChartColorsStringEnum;
21321
+ (function (ChartColorsStringEnum) {
21322
+ ChartColorsStringEnum["WHITE"] = "#FFFFFF";
21323
+ })(ChartColorsStringEnum || (ChartColorsStringEnum = {}));
21324
+
21325
+ class ChartHelper {
21326
+ static hexToRgba(colorHex, opacity = 1) {
21327
+ colorHex = colorHex.replace(/^#/, '');
21328
+ if (colorHex.length === 3) {
21329
+ colorHex
21330
+ .split('')
21331
+ .map((char) => char + char)
21332
+ .join('');
21333
+ }
21334
+ const bigint = parseInt(colorHex, 16);
21335
+ const r = (bigint >> 16) & 255;
21336
+ const g = (bigint >> 8) & 255;
21337
+ const b = bigint & 255;
21338
+ return `rgba(${r}, ${g}, ${b}, ${opacity})`;
21339
+ }
21340
+ static rgbToRgba(rgb = 'rgb(0, 0, 0)', opacity) {
21341
+ const rgbValues = rgb.match(/\d+/g);
21342
+ if (rgbValues && rgbValues.length === 3) {
21343
+ const r = rgbValues[0];
21344
+ const g = rgbValues[1];
21345
+ const b = rgbValues[2];
21346
+ return `rgba(${r}, ${g}, ${b}, ${opacity})`;
21347
+ }
21348
+ else
21349
+ return rgb;
21350
+ }
21351
+ static calculateMinValue(data) {
21352
+ return Math.min(...data);
21353
+ }
21354
+ static calculateMaxValue(data) {
21355
+ return Math.max(...data);
21356
+ }
21357
+ static createGradient(chartContext, chartCanvas, color1, color2) {
21358
+ const gradient = chartContext.createLinearGradient(0, 0, 0, chartCanvas.nativeElement.height);
21359
+ const opacity = 0.4;
21360
+ const fillColorTop = this.hexToRgba(color1, opacity);
21361
+ const fillColorBottom = this.hexToRgba(color2, 0);
21362
+ gradient.addColorStop(0, fillColorTop);
21363
+ gradient.addColorStop(0.8, fillColorBottom);
21364
+ return gradient;
21365
+ }
21366
+ }
21367
+
21368
+ class ChartTypeGuard {
21369
+ static isLineDataset(dataset) {
21370
+ const isLineDataset = dataset.type === ChartTypesStringEnum.LINE;
21371
+ return isLineDataset;
21372
+ }
21373
+ }
21374
+
21375
+ class CaBaseChartDatasetConfig {
21376
+ static getBaseChartDatasetConfig() {
21377
+ return {
21378
+ type: ChartTypesStringEnum.LINE,
21379
+ label: '',
21380
+ data: []
21381
+ };
21382
+ }
21383
+ }
21384
+
21385
+ class CaChartComponent {
21386
+ set chartType(value) {
21387
+ this._chartType = value;
21388
+ if (this.chart) {
21389
+ this.chart.destroy();
21390
+ this.createChart();
21391
+ }
21392
+ }
21393
+ set chartData(value) {
21394
+ this._chartData = value;
21395
+ if (this.chart) {
21396
+ this.chart.data = this._chartData;
21397
+ this.chart.update();
21398
+ }
21399
+ }
21400
+ set chartOptions(value) {
21401
+ this._chartOptions = value;
21402
+ if (this.chart) {
21403
+ this.chart.options = this.chartOptions;
21404
+ this.chart.update();
21405
+ }
21406
+ }
21407
+ //for testing hover state on dataset
21408
+ set isDatasetHovered(value) {
21409
+ this._isDatasetHovered = value;
21410
+ if (this.chart) {
21411
+ this.updateDatasetBackgroundOnHover('Sales', '#6692F1', this._isDatasetHovered);
21412
+ }
21413
+ }
21414
+ constructor() {
21415
+ this.chartHeight = 500;
21416
+ this.originalChartDataset = CaBaseChartDatasetConfig.getBaseChartDatasetConfig();
21417
+ }
21418
+ ngAfterViewInit() {
21419
+ this.createChart();
21420
+ }
21421
+ updateDatasetBackgroundOnHover(dataSetLabel, color, isDatasetHovered) {
21422
+ if (isDatasetHovered) {
21423
+ this.originalChartDataset = JSON.parse(JSON.stringify(this._chartData.datasets));
21424
+ const gradient = ChartHelper.createGradient(this.chartContext, this.chartCanvas, color, color);
21425
+ this._chartData.datasets = this._chartData.datasets.map((dataset) => {
21426
+ if (dataset.label === dataSetLabel) {
21427
+ return {
21428
+ ...dataset,
21429
+ fill: true,
21430
+ backgroundColor: gradient,
21431
+ borderColor: color,
21432
+ };
21433
+ }
21434
+ else {
21435
+ const borderColorWithOpacity = ChartHelper.rgbToRgba(dataset.borderColor, 0.2);
21436
+ return {
21437
+ ...dataset,
21438
+ fill: false,
21439
+ borderColor: borderColorWithOpacity,
21440
+ };
21441
+ }
21442
+ });
21443
+ }
21444
+ else
21445
+ this._chartData.datasets = JSON.parse(JSON.stringify(this.originalChartDataset));
21446
+ this.chart.update();
21447
+ }
21448
+ createChart() {
21449
+ this.chartContext = this.chartCanvas.nativeElement.getContext('2d');
21450
+ this.setChartOptionsProperties();
21451
+ this.setChartDataProperties();
21452
+ this.chart = new Chart(this.chartContext, {
21453
+ type: this._chartType,
21454
+ data: this._chartData,
21455
+ options: this._chartOptions,
21456
+ });
21457
+ }
21458
+ setChartOptionsProperties() {
21459
+ this._chartOptions = {
21460
+ responsive: true,
21461
+ maintainAspectRatio: false,
21462
+ clip: false,
21463
+ plugins: {
21464
+ legend: {
21465
+ display: false,
21466
+ },
21467
+ },
21468
+ scales: {
21469
+ x: {
21470
+ display: false,
21471
+ beginAtZero: true,
21472
+ },
21473
+ y: {
21474
+ display: false,
21475
+ beginAtZero: true,
21476
+ min: 0,
21477
+ max: 1,
21478
+ },
21479
+ },
21480
+ };
21481
+ }
21482
+ setChartDataProperties() {
21483
+ if ((this._chartType = ChartTypesStringEnum.LINE)) {
21484
+ this._chartData.datasets.forEach((dataset) => {
21485
+ if (ChartTypeGuard.isLineDataset(dataset)) {
21486
+ dataset.tension = dataset.tension ?? 0.5;
21487
+ dataset.cubicInterpolationMode =
21488
+ dataset.cubicInterpolationMode ??
21489
+ CubicInterpolationStringEnum.MONOTONE;
21490
+ dataset.pointRadius = dataset.pointRadius ?? 0;
21491
+ dataset.pointRadius = dataset.pointRadius ?? 0;
21492
+ dataset.spanGaps = dataset.spanGaps ?? false;
21493
+ dataset.showLine = dataset.showLine ?? true;
21494
+ }
21495
+ });
21496
+ this.setMultipleYAxis(this._chartData);
21497
+ }
21498
+ }
21499
+ setMultipleYAxis(chartData) {
21500
+ chartData.datasets.forEach((dataset, index) => {
21501
+ if (dataset.type == ChartTypesStringEnum.LINE ||
21502
+ dataset.type == ChartTypesStringEnum.BAR) {
21503
+ const yAxisID = `y-axis-${index}`;
21504
+ chartData.datasets[index] = {
21505
+ ...dataset,
21506
+ yAxisID,
21507
+ };
21508
+ const minValue = ChartHelper.calculateMinValue(dataset.data);
21509
+ const maxValue = ChartHelper.calculateMaxValue(dataset.data);
21510
+ const padding = maxValue * 0.03;
21511
+ const minValueAjusted = padding == 0 ? minValue + 0.1 : 0;
21512
+ const maxValueAjusted = maxValue + padding;
21513
+ this._chartOptions.scales = {
21514
+ ...this._chartOptions.scales,
21515
+ [yAxisID]: {
21516
+ display: false,
21517
+ beginAtZero: true,
21518
+ min: minValueAjusted,
21519
+ max: maxValueAjusted,
21520
+ },
21521
+ };
21522
+ }
21523
+ });
21524
+ }
21525
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: CaChartComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
21526
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: CaChartComponent, isStandalone: true, selector: "app-ca-chart", inputs: { chartHeight: "chartHeight", chartType: "chartType", chartData: "chartData", chartOptions: "chartOptions", isDatasetHovered: "isDatasetHovered" }, viewQueries: [{ propertyName: "chartCanvas", first: true, predicate: ["chartCanvas"], descendants: true }], ngImport: i0, template: "\t<div [ngStyle]=\"{'height': chartHeight + 'px', 'width': '100%'}\">\n <canvas \n #chartCanvas\n style=\"width: 100%; height: 100%;\">\n </canvas>\n</div>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }] }); }
21527
+ }
21528
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: CaChartComponent, decorators: [{
21529
+ type: Component,
21530
+ args: [{ selector: 'app-ca-chart', standalone: true, imports: [CommonModule], template: "\t<div [ngStyle]=\"{'height': chartHeight + 'px', 'width': '100%'}\">\n <canvas \n #chartCanvas\n style=\"width: 100%; height: 100%;\">\n </canvas>\n</div>\n" }]
21531
+ }], ctorParameters: function () { return []; }, propDecorators: { chartCanvas: [{
21532
+ type: ViewChild,
21533
+ args: ['chartCanvas']
21534
+ }], chartHeight: [{
21535
+ type: Input
21536
+ }], chartType: [{
21537
+ type: Input
21538
+ }], chartData: [{
21539
+ type: Input
21540
+ }], chartOptions: [{
21541
+ type: Input
21542
+ }], isDatasetHovered: [{
21543
+ type: Input
21544
+ }] } });
21545
+
21306
21546
  class CaComponentsLibModule {
21307
21547
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: CaComponentsLibModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
21308
21548
  static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.2.12", ngImport: i0, type: CaComponentsLibModule, imports: [CommonModule,
@@ -21334,7 +21574,8 @@ class CaComponentsLibModule {
21334
21574
  CaActivityLogListComponent,
21335
21575
  CaRightSidePanelMenuComponent,
21336
21576
  CaRightSidePanelTopBarComponent,
21337
- CaRightSidePanelComponent], exports: [CaProfileImageComponent,
21577
+ CaRightSidePanelComponent,
21578
+ CaChartComponent], exports: [CaProfileImageComponent,
21338
21579
  CaAppTooltipV2Component,
21339
21580
  CaDetailsDropdownComponent,
21340
21581
  CaRatingReviewComponent,
@@ -21360,7 +21601,8 @@ class CaComponentsLibModule {
21360
21601
  CaActivityLogListComponent,
21361
21602
  CaRightSidePanelMenuComponent,
21362
21603
  CaRightSidePanelTopBarComponent,
21363
- CaRightSidePanelComponent] }); }
21604
+ CaRightSidePanelComponent,
21605
+ CaChartComponent] }); }
21364
21606
  static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: CaComponentsLibModule, providers: [CaSearchMultipleStatesService], imports: [CommonModule,
21365
21607
  CaProfileImageComponent,
21366
21608
  CaRatingReviewComponent,
@@ -21390,7 +21632,8 @@ class CaComponentsLibModule {
21390
21632
  CaActivityLogListComponent,
21391
21633
  CaRightSidePanelMenuComponent,
21392
21634
  CaRightSidePanelTopBarComponent,
21393
- CaRightSidePanelComponent] }); }
21635
+ CaRightSidePanelComponent,
21636
+ CaChartComponent] }); }
21394
21637
  }
21395
21638
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: CaComponentsLibModule, decorators: [{
21396
21639
  type: NgModule,
@@ -21427,6 +21670,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
21427
21670
  CaRightSidePanelMenuComponent,
21428
21671
  CaRightSidePanelTopBarComponent,
21429
21672
  CaRightSidePanelComponent,
21673
+ CaChartComponent
21430
21674
  ],
21431
21675
  providers: [CaSearchMultipleStatesService],
21432
21676
  exports: [
@@ -21457,6 +21701,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
21457
21701
  CaRightSidePanelMenuComponent,
21458
21702
  CaRightSidePanelTopBarComponent,
21459
21703
  CaRightSidePanelComponent,
21704
+ CaChartComponent
21460
21705
  ],
21461
21706
  }]
21462
21707
  }] });
@@ -21521,5 +21766,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
21521
21766
  * Generated bundle index. Do not edit.
21522
21767
  */
21523
21768
 
21524
- export { CaActivityLogListComponent, CaAppTooltipV2Component, CaComponentsLibModule, CaDetailsDropdownComponent, CaDropdownComponent, CaFilterComponent, CaInputComponent, CaInputDropdownComponent, CaInputNoteComponent, CaInputRadiobuttonsComponent, CaMainTableComponent, CaMapComponent, CaMapDropdownComponent, CaModalComponent, CaNoteComponent, CaNoteContainerComponent, CaPayrollListSummaryOverviewComponent, CaPayrollListSummaryOverviewTableComponent, CaPeriodContentComponent, CaProfileImageComponent, CaProgressExpirationComponent, CaRatingReviewComponent, CaRightSidePanelComponent, CaRightSidePanelMenuComponent, CaRightSidePanelTopBarComponent, CaSearchMultipleStatesComponent, CaSearchMultipleStatesService, CaSpinnerComponent, CaTodoComponent, CaTruckTrailerProgresBarComponent, CaUploadFilesComponent, PickupDeliveryBlockComponent, ProgressBarComponent };
21769
+ export { CaActivityLogListComponent, CaAppTooltipV2Component, CaChartComponent, CaComponentsLibModule, CaDetailsDropdownComponent, CaDropdownComponent, CaFilterComponent, CaInputComponent, CaInputDropdownComponent, CaInputNoteComponent, CaInputRadiobuttonsComponent, CaMainTableComponent, CaMapComponent, CaMapDropdownComponent, CaModalComponent, CaNoteComponent, CaNoteContainerComponent, CaPayrollListSummaryOverviewComponent, CaPayrollListSummaryOverviewTableComponent, CaPeriodContentComponent, CaProfileImageComponent, CaProgressExpirationComponent, CaRatingReviewComponent, CaRightSidePanelComponent, CaRightSidePanelMenuComponent, CaRightSidePanelTopBarComponent, CaSearchMultipleStatesComponent, CaSearchMultipleStatesService, CaSpinnerComponent, CaTodoComponent, CaTruckTrailerProgresBarComponent, CaUploadFilesComponent, PickupDeliveryBlockComponent, ProgressBarComponent };
21525
21770
  //# sourceMappingURL=ca-components.mjs.map