UNPKG

@xui/charts

Version:

xUI Charts for Angular

1 lines 29.4 kB
{"version":3,"file":"xui-charts.mjs","sources":["../../../../libs/charts/src/analysis/analysis.service.ts","../../../../libs/charts/src/analysis/metrics/metrics.component.ts","../../../../libs/charts/src/analysis/metrics/metrics.component.html","../../../../libs/charts/src/analysis/chart/chart.component.ts","../../../../libs/charts/src/analysis/chart/chart.component.html","../../../../libs/charts/src/analysis/analysis.component.ts","../../../../libs/charts/src/analysis/analysis.component.html","../../../../libs/charts/src/analysis/analysis.module.ts","../../../../libs/charts/src/xui-charts.ts"],"sourcesContent":["import { ApplicationRef, Injectable, Signal, signal, WritableSignal } from '@angular/core';\nimport { Entity, Metric } from './analysis.types';\nimport { connect, ECharts } from 'echarts';\n\nexport interface Trend {\n metric: Metric;\n entity: Entity;\n // TODO: polled data, etc.\n}\n\nexport type Chart = Trend[];\n\n@Injectable()\nexport class AnalysisService {\n private _eCharts: ECharts[] = [];\n private _isDragging = signal(false);\n private _charts: WritableSignal<Chart>[] = [];\n\n get charts() {\n return this._charts;\n }\n\n constructor(private appRef: ApplicationRef) {}\n\n getChart(index: number): Signal<Chart> {\n return this._charts?.[index]?.asReadonly();\n }\n\n addChart(position: number, trends: Chart) {\n this._charts.splice(position, 0, signal(trends));\n }\n\n addTrend(chartPos: number, trend: Trend) {\n const chart = this._charts[chartPos];\n chart.update(x => [...x, trend]);\n }\n\n removeTrend(chartPos: number, trendPos: number) {\n this._charts[chartPos].update(x => chart.splice(trendPos, 1));\n const chart = this._charts[chartPos]();\n\n if (!chart.length) {\n this._charts.splice(chartPos, 1);\n }\n }\n\n get isDragging() {\n return this._isDragging.asReadonly();\n }\n\n dragStarted() {\n this._isDragging.set(true);\n this.appRef.tick(); // Not able to D'n'D metric unless ticked\n }\n\n dragEnded() {\n this._isDragging.set(false);\n }\n\n connectChart(chart: ECharts) {\n this._eCharts.push(chart);\n connect(this._eCharts);\n }\n}\n","import { Component, Input } from '@angular/core';\nimport { Entity, EntityGroup, EntityId, MetricGroup } from '../analysis.types';\nimport { AnalysisService } from '../analysis.service';\n\n@Component({\n selector: 'xui-metrics',\n templateUrl: './metrics.component.html',\n styleUrls: ['./metrics.component.scss']\n})\nexport class MetricsComponent {\n opened: EntityId[] = [];\n active: Entity | null = null;\n\n @Input() entities?: EntityGroup[];\n\n constructor(public analysis: AnalysisService) {}\n\n ngOnInit() {\n // Testing\n this.active = this.entities?.[0].entities[0] ?? null;\n }\n\n isActive(entity: Entity) {\n return this.active?.id === entity.id;\n }\n\n activate(entity: Entity) {\n this.active = entity;\n }\n\n isOpened(group: EntityGroup | MetricGroup) {\n // return true;\n return this.opened.includes(group.id);\n }\n\n toggleGroup(group: EntityGroup | MetricGroup) {\n if (this.isOpened(group)) {\n this.opened = this.opened.filter(x => x !== group.id);\n } else {\n this.opened = [...this.opened, group.id];\n }\n }\n}\n","<div class=\"entries\">\n <xui-input color=\"dark\" size=\"small\">\n <xui-icon icon=\"search\" xuiPostfix></xui-icon>\n </xui-input>\n\n <div class=\"buttons\">\n <xui-button> <xui-icon icon=\"add_circle\"></xui-icon> Add Entities </xui-button>\n\n <xui-button type=\"icon\">\n <xui-icon icon=\"refresh\"></xui-icon>\n </xui-button>\n </div>\n\n @for (group of entities; track group) {\n <div class=\"group\">\n <div class=\"name\" (click)=\"toggleGroup(group)\">\n <xui-icon class=\"menu-icon\" [icon]=\"isOpened(group) ? 'menu' : 'menu_open'\"></xui-icon>\n <div class=\"content\">\n <xui-icon [icon]=\"group.icon\"></xui-icon>\n {{ group.name }}\n </div>\n </div>\n\n <div class=\"entities\" *ngIf=\"isOpened(group)\">\n @for (entity of group.entities; track entity.id) {\n <div class=\"entity\" [class.active]=\"isActive(entity)\" (click)=\"activate(entity)\">\n <xui-icon icon=\"check\"></xui-icon>\n {{ entity.name }}\n </div>\n }\n </div>\n </div>\n }\n</div>\n\n<div class=\"metrics\">\n <xui-input color=\"dark\" size=\"small\">\n <xui-icon icon=\"search\" xuiPostfix></xui-icon>\n </xui-input>\n\n @for (group of active?.metrics; track group) {\n <div class=\"group\">\n <div class=\"name\" (click)=\"toggleGroup(group)\">\n <xui-icon class=\"menu-icon\" [icon]=\"isOpened(group) ? 'menu' : 'menu_open'\"></xui-icon>\n <div class=\"content\">\n {{ group.name }}\n </div>\n </div>\n\n <div class=\"entities\" *ngIf=\"isOpened(group)\" cdkDropList cdkDropListSortingDisabled>\n @for (metric of group.metrics; track metric.id) {\n <div\n class=\"metric\"\n cdkDrag\n [cdkDragData]=\"{ metric, entity: active }\"\n (cdkDragStarted)=\"analysis.dragStarted()\"\n (cdkDragEnded)=\"analysis.dragEnded()\"\n >\n <span style=\"display: none\" *cdkDragPlaceholder></span>\n <div class=\"drag-preview\" *cdkDragPreview>\n <xui-icon icon=\"drag_indicator\"></xui-icon>\n <div>\n {{ metric.name }}\n <div class=\"description\">{{ active!.name }}</div>\n </div>\n </div>\n\n <xui-icon icon=\"drag_indicator\"></xui-icon>\n <div>\n {{ metric.name }}\n <div class=\"description\">{{ active!.name }}</div>\n </div>\n </div>\n }\n </div>\n </div>\n }\n</div>\n","import { Component, Inject, Input, OnDestroy } from '@angular/core';\nimport { ECharts, EChartsOption } from 'echarts';\nimport { AnalysisService } from '../analysis.service';\nimport { DOCUMENT } from '@angular/common';\n\n@Component({\n selector: 'xui-analysis-chart',\n templateUrl: './chart.component.html',\n styleUrls: ['./chart.component.scss']\n})\nexport class ChartComponent {\n private chart!: ECharts;\n @Input() index!: number;\n\n chartOptions: EChartsOption = {\n grid: {\n left: 40,\n top: 10,\n right: 40,\n bottom: 40\n },\n tooltip: {\n showContent: false,\n trigger: 'axis',\n axisPointer: { type: 'cross' }\n },\n\n xAxis: [\n {\n type: 'category',\n axisLine: {\n // show: true,\n lineStyle: {\n width: 2\n // type: 'solid'\n }\n },\n data: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun']\n },\n {\n axisLine: {\n onZero: false,\n\n lineStyle: {\n width: 2\n }\n }\n }\n ],\n yAxis: [\n {\n axisLine: {\n show: true,\n lineStyle: {\n width: 2,\n type: 'solid'\n }\n }\n // type: 'value'\n // splitNumber: 3,\n },\n {\n position: 'right',\n axisLine: {\n show: true,\n lineStyle: {\n width: 2,\n type: 'solid'\n }\n }\n // splitNumber: 3,\n }\n ],\n series: [\n {\n data: [820, 932, 901, 934, 1290, 1330, 1320],\n showSymbol: false,\n type: 'line'\n },\n {\n data: [420, 332, 981, 924, 4290, 1930, 2320],\n yAxisIndex: 1,\n showSymbol: false,\n type: 'line'\n }\n ]\n };\n\n get trends() {\n return this.analysisService.getChart(this.index);\n }\n\n constructor(\n private analysisService: AnalysisService,\n @Inject(DOCUMENT) private document: Document\n ) {}\n\n onChartInit(chart: ECharts) {\n this.chart = chart;\n this.analysisService.connectChart(chart);\n\n chart.on('highlight', (event: any) => {\n console.log('event', event);\n\n // const series = this.chart.getVisual({ seriesIndex: 1, dataIndex: 1 }, 'symbol');//.getSeries();\n const series = (this.chart as any).getModel().getSeries();\n\n // const values = series.map(x => x)\n\n console.log('series', series);\n\n this.document.addEventListener('resize', () => {\n console.log('resize');\n chart.resize();\n });\n });\n }\n}\n","<div echarts (chartInit)=\"onChartInit($event)\" [options]=\"chartOptions\" class=\"chart\"></div>\n<div class=\"legend\">\n @for (trend of trends(); track trend) {\n <div class=\"trend\">\n <div class=\"metric\">\n 42.0\n <div class=\"type\">%</div>\n </div>\n\n <div class=\"labels\">\n <div class=\"metric-name\">{{ trend.metric.name }}</div>\n <div class=\"entity-name\">{{ trend.entity.name }}</div>\n </div>\n\n <xui-button type=\"icon\" [cdkMenuTriggerFor]=\"menu\">\n <xui-icon icon=\"more_horiz\"></xui-icon>\n </xui-button>\n </div>\n }\n</div>\n\n<ng-template #menu>\n <xui-context-menu cdkMenu>\n <xui-button cdkMenuItem>Remove</xui-button>\n <hr />\n <xui-button cdkMenuItem>None</xui-button>\n </xui-context-menu>\n</ng-template>\n","import { ChangeDetectionStrategy, Component, Input, ViewEncapsulation } from '@angular/core';\nimport { EntityGroup, EntityId } from './analysis.types';\nimport { CdkDragDrop } from '@angular/cdk/drag-drop';\nimport { AnalysisService } from './analysis.service';\n\n@Component({\n selector: 'xui-analysis',\n exportAs: 'xuiAnalysis',\n encapsulation: ViewEncapsulation.Emulated,\n changeDetection: ChangeDetectionStrategy.OnPush,\n styleUrls: ['./analysis.scss'],\n templateUrl: './analysis.component.html',\n providers: [AnalysisService]\n})\nexport class XuiAnalysisComponent {\n isDragging = this.analysisService.isDragging;\n closed = false;\n\n @Input() entities?: EntityGroup[];\n @Input() loadData?: (entityId: EntityId, metricId: EntityId) => { date: string; value: number };\n\n get charts() {\n return this.analysisService.charts;\n }\n\n constructor(private analysisService: AnalysisService) {}\n\n ngOnInit() {\n const first = this.entities?.[0].entities[0]!;\n this.analysisService.addChart(0, [\n {\n entity: first,\n metric: first?.metrics?.[0].metrics?.[0]!\n }\n ]);\n\n this.analysisService.addTrend(0, {\n entity: first,\n metric: first?.metrics?.[0].metrics?.[1]!\n });\n\n this.analysisService.addChart(1, [\n {\n entity: first,\n metric: first?.metrics?.[0].metrics?.[0]!\n }\n ]);\n\n this.analysisService.addChart(3, [\n {\n entity: first,\n metric: first?.metrics?.[0].metrics?.[0]!\n }\n ]);\n\n // this.analysisService.addTrend(0, {\n // entity: first,\n // metric: first?.metrics?.[0].metrics?.[1]!\n // });\n // this.analysisService.addTrend(0, {\n // entity: first,\n // metric: first?.metrics?.[0].metrics?.[1]!\n // });\n // this.analysisService.addTrend(0, {\n // entity: first,\n // metric: first?.metrics?.[0].metrics?.[1]!\n // });\n }\n\n dropped(event: CdkDragDrop<any>, index: number, isPlaceholder = true) {\n if (isPlaceholder) {\n this.analysisService.addChart(index, [event.item.data]);\n } else {\n this.analysisService.addTrend(index, event.item.data);\n }\n }\n}\n","<div class=\"header\">\n <p>New Analysis</p>\n <div class=\"buttons\">\n <xui-button><xui-icon icon=\"add_circle\"></xui-icon> New</xui-button>\n <xui-button><xui-icon icon=\"save\"></xui-icon> Save</xui-button>\n <xui-button><xui-icon icon=\"file_open\"></xui-icon> Load</xui-button>\n\n <xui-button><xui-icon icon=\"file_save\"></xui-icon> Export</xui-button>\n <xui-button><xui-icon icon=\"share\"></xui-icon> Share</xui-button>\n\n <xui-button [cdkMenuTriggerFor]=\"moreMenu\">More <xui-icon icon=\"arrow_drop_down\"></xui-icon></xui-button>\n\n <ng-template #moreMenu>\n <xui-context-menu cdkMenu>\n <xui-button cdkMenuItem>Save as ...</xui-button>\n <xui-button cdkMenuItem color=\"error\">\n Delete\n <xui-icon icon=\"delete-outline\"></xui-icon>\n </xui-button>\n </xui-context-menu>\n </ng-template>\n </div>\n</div>\n\n<div class=\"content\" cdkDropListGroup>\n <div class=\"drawer\" [class.closed]=\"closed\">\n <xui-tab-group>\n <xui-tab title=\"Metrics\">\n <xui-metrics [entities]=\"entities\"></xui-metrics>\n </xui-tab>\n <xui-tab title=\"Data\">Data</xui-tab>\n </xui-tab-group>\n\n <xui-button class=\"toggle\" type=\"icon\" (click)=\"closed = !closed\">\n <xui-icon [icon]=\"closed ? 'chevron-double-right' : 'chevron-double-left'\"></xui-icon>\n </xui-button>\n </div>\n\n <div class=\"charts\">\n <div class=\"placeholder\" cdkDropList (cdkDropListDropped)=\"dropped($event, 0)\" *ngIf=\"isDragging()\">\n Drop Here to Add Metric\n </div>\n\n @for (chart of charts; track chart; let i = $index) {\n <ng-container>\n <div class=\"placeholder-group\">\n <xui-analysis-chart [index]=\"i\" cdkDropList />\n <div class=\"placeholder\" cdkDropList (cdkDropListDropped)=\"dropped($event, i, false)\" *ngIf=\"isDragging()\">\n Drop Here to Add Metric\n </div>\n </div>\n\n <div class=\"placeholder\" cdkDropList (cdkDropListDropped)=\"dropped($event, i + 1)\" *ngIf=\"isDragging()\">\n Drop Here to Add Metric\n </div>\n </ng-container>\n }\n </div>\n</div>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { XuiAnalysisComponent } from './analysis.component';\nimport { XuiButtonModule, XuiContextMenuModule, XuiIcon, XuiInputModule, XuiTabModule } from '@xui/components';\nimport { CdkMenuModule } from '@angular/cdk/menu';\nimport { MetricsComponent } from './metrics/metrics.component';\nimport { DragDropModule } from '@angular/cdk/drag-drop';\nimport { ChartComponent } from './chart/chart.component';\nimport { NgxEchartsModule } from 'ngx-echarts';\n\n@NgModule({\n declarations: [XuiAnalysisComponent, MetricsComponent, ChartComponent],\n imports: [\n CommonModule,\n XuiButtonModule,\n XuiIcon,\n XuiContextMenuModule,\n XuiTabModule,\n XuiInputModule,\n CdkMenuModule,\n DragDropModule,\n NgxEchartsModule.forChild()\n ],\n exports: [XuiAnalysisComponent]\n})\nexport class XuiAnalysisModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1.AnalysisService","i2","i3","i4","i5","i6.MetricsComponent","i7.ChartComponent"],"mappings":"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"}