UNPKG

jqwidgets-framework

Version:

jQWidgets is an advanced Angular, Vue, Blazor, React, Web Components, jquery, ASP .NET MVC, Custom Elements and HTML5 UI framework.

182 lines (158 loc) 6.55 kB
import { Component, ViewChild, AfterViewInit } from '@angular/core'; import { jqxChartComponent } from 'jqwidgets-ng/jqxchart'; import { jqxSliderComponent } from 'jqwidgets-ng/jqxslider'; import { jqxCheckBoxComponent } from 'jqwidgets-ng/jqxcheckbox'; @Component({ selector: 'app-root', templateUrl: './app.component.html' }) export class AppComponent implements AfterViewInit { @ViewChild('myChart', { static: false }) myChart: jqxChartComponent; @ViewChild('btnEnableSeriesGroup1', { static: false }) btnEnableSeriesGroup1: jqxCheckBoxComponent; @ViewChild('btnEnableSeriesGroup2', { static: false }) btnEnableSeriesGroup2: jqxCheckBoxComponent; @ViewChild('btnStackedSeriesGroup1', { static: false }) btnStackedSeriesGroup1: jqxCheckBoxComponent; @ViewChild('btnStackedSeriesGroup2', { static: false }) btnStackedSeriesGroup2: jqxCheckBoxComponent; chartInstance; ngAfterViewInit(): void { this.chartInstance = this.myChart.getInstance(); } getWidth() : any { if (document.body.offsetWidth < 850) { return '90%'; } return 850; } sampleData: any[] = [ { Position: 0, Serie1: 30, Serie2: 5, Serie3: 25, Serie4: 30, Serie5: 10, Serie6: 5 }, { Position: 1, Serie1: 25, Serie2: 25, Serie3: 5, Serie4: 20, Serie5: 20, Serie6: 10 }, { Position: 3, Serie1: 30, Serie2: 5, Serie3: 25, Serie4: 10, Serie5: 20, Serie6: 15 }, { Position: 6, Serie1: 35, Serie2: 25, Serie3: 45, Serie4: 5, Serie5: 30, Serie6: 20 }, { Position: 7, Serie1: 5, Serie2: 20, Serie3: 25, Serie4: 20, Serie5: 40, Serie6: 15 }, { Position: 9, Serie1: 30, Serie2: 10, Serie3: 30, Serie4: 10, Serie5: 5, Serie6: 20 }, { Position: 10, Serie1: 60, Serie2: 45, Serie3: 10, Serie4: 20, Serie5: 10, Serie6: 15 } ]; padding: any = { left: 5, top: 5, right: 5, bottom: 5 }; titlePadding: any = { left: 90, top: 0, right: 0, bottom: 10 }; xAxis: any = { dataField: 'Position', tickMarks: { visible: true, interval: 1, color: '#BCBCBC' }, gridLines: { visible: true, interval: 1, color: '#BCBCBC' }, flip: false, valuesOnTicks: false }; valueAxis: any = { unitInterval: 10, title: { text: 'Value' }, tickMarks: { color: '#BCBCBC' }, gridLines: { color: '#BCBCBC' }, labels: { horizontalAlignment: 'right' }, }; seriesGroups: any[] = [ { type: 'column', columnsGapPercent: 25, seriesGapPercent: 10, columnsMaxWidth: 40, columnsMinWidth: 1, series: [ { dataField: 'Serie1', displayText: 'Serie1' }, { dataField: 'Serie2', displayText: 'Serie2' }, { dataField: 'Serie3', displayText: 'Serie3' } ] } ]; updateSeriesGroupsVisibility(): void { this.chartInstance.seriesGroups = []; if (this.btnEnableSeriesGroup1.checked()) { this.chartInstance.seriesGroups[0] = { type: 'column', columnsGapPercent: 25, seriesGapPercent: 10, columnsMaxWidth: 40, columnsMinWidth: 1, series: [ { dataField: 'Serie1', displayText: 'Serie1' }, { dataField: 'Serie2', displayText: 'Serie2' }, { dataField: 'Serie3', displayText: 'Serie3' } ] }; } if (this.btnEnableSeriesGroup2.checked()) { let index = this.chartInstance.seriesGroups.length > 0 ? 1 : 0; this.chartInstance.seriesGroups[index] = { type: 'column', greyScale: true, columnsGapPercent: 25, seriesGapPercent: 10, columnsMaxWidth: 40, columnsMinWidth: 1, series: [ { dataField: 'Serie4', displayText: 'Serie4' }, { dataField: 'Serie5', displayText: 'Serie5' }, { dataField: 'Serie6', displayText: 'Serie6' } ] }; } this.updateSeriesGroupsStacking(); } updateSeriesGroupsStacking(): void { if (this.btnEnableSeriesGroup1.checked()) { if (this.btnStackedSeriesGroup1.checked()) { this.chartInstance.seriesGroups[0].type = 'stackedcolumn'; } else { this.chartInstance.seriesGroups[0].type = 'column'; } } if (this.btnEnableSeriesGroup2.checked()) { if (this.btnStackedSeriesGroup2.checked()) { this.chartInstance.seriesGroups[this.chartInstance.seriesGroups.length - 1].type = 'stackedcolumn'; } else { this.chartInstance.seriesGroups[this.chartInstance.seriesGroups.length - 1].type = 'column'; } } this.chartInstance.refresh(); } sliderColumnsGapPercent(event: any, series: number): void { this.eventHandler(event, series, 'columnsGapPercent'); }; sliderSeriesGap(event: any, series: number): void { this.eventHandler(event, series, 'seriesGapPercent'); }; sliderMinWidth(event: any, series: number): void { this.eventHandler(event, series, 'columnsMinWidth'); }; sliderMaxWidth(event: any, series: number): void { this.eventHandler(event, series, 'columnsMaxWidth'); }; eventHandler(event: any, series: number, propName) { let seriesGroups = this.chartInstance.seriesGroups; if (seriesGroups.length !== 0) { if (seriesGroups.length < 2) { let serieDataField = seriesGroups[0].series[0].dataField; let serie = serieDataField == 'Serie1' ? 0 : 1; if (series !== serie) return; seriesGroups[0][propName] = event.args.value; } else { seriesGroups[series][propName] = event.args.value; } this.chartInstance.refresh(); } } }