@rafaelaalmeidaa/primordash 0.0.1 → 0.0.2
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/lib/components/dashboard/dashboard.component.mjs +5 -5
- package/esm2020/lib/components/modal-edit/modal-edit.component.mjs +3 -3
- package/esm2020/lib/primordash.module.mjs +5 -16
- package/fesm2015/rafaelaalmeidaa-primordash.mjs +15 -25
- package/fesm2015/rafaelaalmeidaa-primordash.mjs.map +1 -1
- package/fesm2020/rafaelaalmeidaa-primordash.mjs +15 -25
- package/fesm2020/rafaelaalmeidaa-primordash.mjs.map +1 -1
- package/lib/primordash.module.d.ts +8 -11
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rafaelaalmeidaa-primordash.mjs","sources":["../../../projects/primordash/src/lib/primordash.service.ts","../../../projects/primordash/src/lib/models/dashboard.model.ts","../../../projects/primordash/src/lib/services/generic.ts","../../../projects/primordash/src/lib/components/charts/bar-line/bar-line.component.ts","../../../projects/primordash/src/lib/components/charts/bar-line/bar-line.component.html","../../../projects/primordash/src/lib/components/charts/bubble/bubble.component.ts","../../../projects/primordash/src/lib/components/charts/bubble/bubble.component.html","../../../projects/primordash/src/lib/components/charts/pie/pie.component.ts","../../../projects/primordash/src/lib/components/charts/pie/pie.component.html","../../../projects/primordash/src/lib/components/charts/simple-card/simple-card.component.ts","../../../projects/primordash/src/lib/components/charts/simple-card/simple-card.component.html","../../../projects/primordash/src/lib/components/charts/table/table.component.ts","../../../projects/primordash/src/lib/components/charts/table/table.component.html","../../../projects/primordash/src/lib/components/card/card.component.ts","../../../projects/primordash/src/lib/components/card/card.component.html","../../../projects/primordash/src/lib/components/modal-edit/modal-edit.component.ts","../../../projects/primordash/src/lib/components/modal-edit/modal-edit.component.html","../../../projects/primordash/src/lib/components/modal-edit-chart/modal-edit-chart.component.ts","../../../projects/primordash/src/lib/components/modal-edit-chart/modal-edit-chart.component.html","../../../projects/primordash/src/lib/components/dashboard/dashboard.component.ts","../../../projects/primordash/src/lib/components/dashboard/dashboard.component.html","../../../projects/primordash/src/lib/primordash.component.ts","../../../projects/primordash/src/lib/primordash.module.ts","../../../projects/primordash/src/public-api.ts","../../../projects/primordash/src/rafaelaalmeidaa-primordash.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class PrimordashService {\n\n constructor() { }\n}\n","import { ChartData, ChartOptions, ChartType } from \"chart.js\"\r\n\r\nexport interface Card {\r\n\r\n /** Identificador único do card */\r\n id?: number;\r\n\r\n /** Tipo do gráfico exibido no card */\r\n type?: DashboardChartType;\r\n\r\n /** Título exibido no topo do card */\r\n title?: string;\r\n\r\n /** Ordem de exibição no dashboard */\r\n order?: number;\r\n\r\n /** Quantidade de colunas ocupadas no grid */\r\n cols: number;\r\n\r\n /** Quantidade de linhas ocupadas no grid */\r\n rows?: number;\r\n\r\n /** Cor da fonte do card */\r\n fontColor?: string;\r\n\r\n /** Cor de fundo do card */\r\n backgroundColor?: string;\r\n\r\n /** Lista de métricas/colunas que serão exibidas */\r\n keys?: Item[];\r\n\r\n /** Define se o gráfico será empilhado */\r\n stacked?: boolean;\r\n\r\n /** Exibe valores em porcentagem */\r\n showPorcent?: boolean;\r\n\r\n /** Exibe rótulos dentro do gráfico */\r\n showLabel?: boolean;\r\n\r\n /** Orientação do eixo principal (horizontal ou vertical) */\r\n axisOrientation?: AxisOrientation;\r\n\r\n /** Configuração personalizada do eixo X */\r\n axisX?: Axis;\r\n\r\n /** Configuração personalizada do eixo Y */\r\n axisY?: Axis;\r\n\r\n /** Dados que alimentam o gráfico */\r\n data?: any[];\r\n\r\n /** Conteúdo HTML personalizado (caso não seja gráfico) */\r\n innerHtml?: any;\r\n}\r\n\r\n\r\nexport interface Item {\r\n\r\n /** Nome da propriedade no objeto de dados (ex: 'totalVendas') */\r\n key: string;\r\n\r\n /** Nome exibido na legenda do gráfico */\r\n label: string;\r\n\r\n /** Chave usada para eixo X (usado em bubble chart) */\r\n keyX?: string;\r\n\r\n /** Chave usada para eixo Y (usado em bubble chart)*/\r\n keyY?: string;\r\n\r\n /** Chave usada para raio (usado em bubble chart) */\r\n keyR?: string;\r\n\r\n /** Cor da série no gráfico (hex, rgb, rgba, etc.) */\r\n color?: string;\r\n\r\n /** Identificador de empilhamento (usado quando stacked = true) */\r\n stackKey?: string;\r\n\r\n /** Tipo específico da série (ex: 'line' dentro de um gráfico bar misto) */\r\n type?: SupportedChartType;\r\n\r\n /** Define em qual eixo a série será renderizada (ex: left ou right) */\r\n axisType?: AxisDimension;\r\n\r\n /** Define se a área abaixo da linha será preenchida (line chart) */\r\n fill?: boolean;\r\n}\r\n\r\nexport interface Axis {\r\n\r\n /** Nome da propriedade usada como eixo */\r\n key: string;\r\n\r\n /** Título exibido no eixo */\r\n label: string;\r\n\r\n /** Cor aplicada ao eixo (ticks e label) */\r\n keyColor?: string;\r\n}\r\n\r\nexport interface Option {\r\n\r\n /** Identificador único da opção */\r\n id?: number;\r\n\r\n /** Título exibido no card/opção */\r\n title: string;\r\n\r\n /** Ordem de exibição */\r\n order?: number;\r\n\r\n /** Quantidade de colunas ocupadas no grid */\r\n cols: number;\r\n\r\n /** Quantidade de linhas ocupadas no grid */\r\n rows: number;\r\n}\r\n\r\nexport interface ModalItem {\r\n id: string|number;\r\n label: string;\r\n type: ModalTypes;\r\n value?: number;\r\n items?: ModalItem[];\r\n}\r\nexport interface SelectRow {\r\n levels: ModalItem[][];\r\n selectedPath: ModalItem[];\r\n finalValue: string[];\r\n finalFontColor: string;\r\n finalBackgroudColor: string;\r\n}\r\n\r\nexport interface Select {\r\n id: string|number;\r\n label: string;\r\n}\r\n\r\nexport interface ChartOption{\r\n id:DashboardChartType,\r\n title:string\r\n}\r\nexport interface ChatConfig<T extends ChartType = ChartType> {\r\n type: T;\r\n data: ChartData<T>;\r\n options: ChartOptions<T>;\r\n}\r\n\r\n\r\nexport type DashboardChartType =\r\n typeof DASHBOARD_CHART_TYPES[number];\r\n\r\nexport const DASHBOARD_CHART_TYPES = [\r\n 'bar', \r\n 'stackedBar', \r\n 'verticalBar', \r\n 'verticalStackedBar',\r\n 'verticalProgressBar',\r\n 'progressBar',\r\n 'lineBar', \r\n 'lineBarStacked',\r\n 'line', \r\n 'radar', \r\n 'curveLine',\r\n 'pie',\r\n 'multiPie',\r\n 'doughnut',\r\n 'halfDoughnut',\r\n 'area',\r\n 'bubble',\r\n 'polarArea',\r\n 'simpleCard',\r\n 'table',\r\n 'html',\r\n] as const;\r\n\r\nexport type DashboardBarLineType =\r\n typeof DASHBOARD_BAR_LINE_TYPES[number];\r\n \r\nexport const DASHBOARD_BAR_LINE_TYPES =[\r\n 'bar', 'stackedBar', 'verticalBar', 'verticalStackedBar','progressBar','verticalProgressBar',\r\n 'lineBar','lineBarStacked', 'line', 'radar', 'curveLine'\r\n]\r\nexport type SupportedChartType =\r\n typeof SUPPORTED_CHART_TYPES[number];\r\n\r\nexport const SUPPORTED_CHART_TYPES = [\r\n 'bar',\r\n 'line',\r\n 'radar'\r\n] as const;\r\n\r\n\r\nexport type AxisOrientation =\r\n typeof AXIS_ORIENTATION[number];\r\n\r\nexport const AXIS_ORIENTATION = [\r\n 'x',\r\n 'y',\r\n] as const;\r\n\r\n\r\nexport type AxisDimension =\r\n typeof AXIS_DIMENSION[number];\r\n\r\nexport const AXIS_DIMENSION = [\r\n 'x',\r\n 'y',\r\n 'r',\r\n] as const;\r\n\r\n\r\nexport type ModalTypes =\r\n typeof MODAL_TYPES[number];\r\n\r\nexport const MODAL_TYPES = [\r\n 'group',\r\n 'option'\r\n] as const;\r\n","export function randomColor(): string {\r\n const r = Math.floor(Math.random() * 255);\r\n const g = Math.floor(Math.random() * 255);\r\n const b = Math.floor(Math.random() * 255);\r\n\r\n return `rgba(${r}, ${g}, ${b}, 0.6)`;\r\n}\r\nexport function getOpacityColors(listColors:string[], index:number ): string[] {\r\n const opacity = Math.max(0.1, 1 - index * 0.30);\r\n return listColors.map(color => replaceAlpha(color, opacity));\r\n}\r\n\r\nfunction replaceAlpha(rgba: string, newAlpha: number): string {\r\n const match = rgba.match(\r\n /rgba?\\(\\s*(\\d+)[,\\s]+(\\d+)[,\\s]+(\\d+)(?:[,\\s]+([\\d.]+))?\\s*\\)/\r\n );\r\n\r\n if (!match) return rgba; \r\n\r\n const r = match[1];\r\n const g = match[2];\r\n const b = match[3];\r\n\r\n return `rgba(${r}, ${g}, ${b}, ${newAlpha})`;\r\n}\r\n\r\nexport function getContrastColor(color: string): string {\r\n const rgb = getRGB(color);\r\n\r\n if (!rgb) return '#000';\r\n\r\n const { r, g, b } = rgb;\r\n\r\n const luminance = (0.299 * r + 0.587 * g + 0.114 * b);\r\n\r\n return luminance > 186 ? '#000' : '#fff';\r\n}\r\n\r\nfunction getRGB(color: string): { r: number; g: number; b: number } | null {\r\n if (color.startsWith('#')) {\r\n const hex = color.replace('#', '');\r\n const bigint = parseInt(hex.length === 3\r\n ? hex.split('').map(c => c + c).join('')\r\n : hex, 16);\r\n\r\n return {\r\n r: (bigint >> 16) & 255,\r\n g: (bigint >> 8) & 255,\r\n b: bigint & 255\r\n };\r\n }\r\n\r\n const match = color.match(/\\d+/g);\r\n if (match) {\r\n return {\r\n r: Number(match[0]),\r\n g: Number(match[1]),\r\n b: Number(match[2])\r\n };\r\n }\r\n\r\n return null;\r\n}","import { Component, ElementRef, HostListener, Input, OnInit, SimpleChanges, ViewChild} from '@angular/core';\r\nimport { Chart, ChartConfiguration, ChartData, ChartDataset, ChartOptions, ChartType } from 'chart.js';\r\nimport { Card, ChatConfig, DashboardBarLineType } from '../../../models/dashboard.model';\r\nimport { BaseChartDirective } from 'ng2-charts';\r\nimport { getContrastColor, randomColor } from '../../../services/generic';\r\nimport { Context } from 'chartjs-plugin-datalabels';\r\n@Component({\r\n selector: 'lib-bar-line',\r\n templateUrl: './bar-line.component.html',\r\n styleUrls: ['./bar-line.component.scss']\r\n})\r\nexport class BarLineComponent implements OnInit {\r\n\r\n @Input() type:DashboardBarLineType = 'bar';\r\n @Input() isDark:boolean = false;\r\n @Input() card:Card = {} as Card;\r\n\r\n description:string = '';\r\n loading: boolean = true;\r\n canvasHeight:number = 0;\r\n canvasWidth:number = 0;\r\n\r\n @ViewChild('container') container!: ElementRef<HTMLDivElement>;\r\n @ViewChild(BaseChartDirective) chart?: BaseChartDirective;\r\n \r\n private resizeObserver!: ResizeObserver;\r\n\r\n config: ChartConfiguration<'bar' | 'line' | 'radar'> = {\r\n type: 'bar',\r\n data: {\r\n labels: [],\r\n datasets: []\r\n },\r\n options:{} as ChartOptions<'bar' | 'line' | 'radar'>\r\n };\r\n\r\n options:ChartOptions<'bar' | 'line' | 'radar'> = {\r\n responsive: true,\r\n maintainAspectRatio: false,\r\n plugins: {\r\n legend: {\r\n position: 'top',\r\n color: this.isDark ? '#FFF' : '#333'\r\n },\r\n datalabels: {\r\n display: false\r\n }\r\n }\r\n } as ChartOptions<'bar' | 'line' | 'radar'>;\r\n\r\n constructor() { }\r\n\r\n ngOnInit() {\r\n if(['stackedBar','verticalBar','verticalStackedBar','progressBar','verticalProgressBar'].includes(this.type) ){\r\n this.config.type = 'bar';\r\n }\r\n else if(['line', 'curveLine','lineBar','lineBarStacked'].includes(this.type)){\r\n this.config.type = 'line';\r\n }\r\n else if(['radar'].includes(this.type)){\r\n this.config.type = 'radar';\r\n }\r\n\r\n this.options!.indexAxis = ['verticalBar','verticalStackedBar','verticalProgressBar'].includes(this.type)? 'y':'x';\r\n \r\n if(['stackedBar','verticalStackedBar','lineBarStacked', 'progressBar','verticalProgressBar'].includes(this.type) ){\r\n this.options.scales = { x: { stacked: true }, y: { stacked: true } };\r\n }\r\n if(['progressBar','verticalProgressBar'].includes(this.type) || this.card.showPorcent){\r\n this.options!.plugins!.tooltip = {\r\n callbacks: {\r\n label: function(context) {\r\n return context.raw + '%';\r\n }\r\n }\r\n }\r\n }\r\n if(this.card.showLabel){\r\n this.options!.plugins!.datalabels = {\r\n anchor: 'center',\r\n align: 'center',\r\n formatter: (value: number) => this.card.showPorcent? value + '%': value,\r\n color: (context: Context) => {\r\n if(this.card.fontColor) return this.card.fontColor\r\n const bg = context.dataset.backgroundColor as string;\r\n return getContrastColor(bg);\r\n },\r\n font: {\r\n weight: 'bold'\r\n }\r\n }\r\n }\r\n this.config.options = this.options;\r\n this.config.data.datasets = this.formatDataset();\r\n this.description = this.describeBar(this.config)\r\n \r\n }\r\n\r\n ngAfterViewInit() {\r\n this.resizeObserver = new ResizeObserver(() => {\r\n if (this.chart) {\r\n setTimeout(() => {\r\n this.triggerResize();\r\n }, 0);\r\n }\r\n });\r\n\r\n this.resizeObserver.observe(this.container.nativeElement);\r\n\r\n setTimeout(() => {\r\n this.chart?.chart?.resize();\r\n }, 50);\r\n\r\n this.loading = false;\r\n }\r\n\r\n ngOnDestroy() {\r\n if (this.resizeObserver) {\r\n this.resizeObserver.disconnect();\r\n }\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n if (changes['isDark']) {\r\n this.applyTheme();\r\n }\r\n }\r\n\r\n private applyTheme(): void {\r\n if (this.chart) {\r\n this.chart.update();\r\n }\r\n }\r\n\r\n private triggerResize() {\r\n if (this.chart?.chart) {\r\n this.chart.chart.resize();\r\n this.chart.update();\r\n }\r\n }\r\n\r\n formatDataset(): ChartDataset<'bar' | 'line' | 'radar'>[] {\r\n if (!this.card?.data?.length ) return [];\r\n if (!this.card.axisX?.key) return [];\r\n const labels = this.card.data.map(row => row[this.card.axisX?.key ?? '']);\r\n this.config.data.labels = labels;\r\n var sumData: number[] = []\r\n const datasets: ChartDataset<'bar' | 'line' | 'radar'>[] = this.card.keys?.map(item => {\r\n const data = this.card.data?.map(row => {\r\n const value = row[item.key];\r\n return typeof value === 'string'\r\n ? Number(value)\r\n : value ?? 0;\r\n }) ?? [];\r\n if(['progressBar','verticalProgressBar'].includes(this.type)){\r\n sumData.push(...data);\r\n }\r\n if(!item.color){\r\n item.color = randomColor();\r\n }\r\n var result = {\r\n label: item.label,\r\n data,\r\n backgroundColor: item.color,\r\n borderColor: item.color,\r\n fill: item.fill ?? false,\r\n } as ChartDataset<'bar' | 'line' | 'radar'>;\r\n if( this.card.stacked && item.stackKey){\r\n result['stack'] = item.stackKey;\r\n }\r\n if(item.type){\r\n result['type'] = item.type;\r\n }\r\n if(this.type == 'curveLine'){\r\n result = {\r\n ...result,\r\n tension: 0.4\r\n } as ChartDataset<'line'>\r\n }\r\n return result;\r\n }) ?? [];\r\n if (['progressBar','verticalProgressBar'].includes(this.type)) {\r\n const remaining = sumData.map(s => 100 - s);\r\n datasets.push({\r\n label: '',\r\n data: remaining,\r\n backgroundColor: '#e0e0e05e',\r\n borderWidth: 0\r\n } as ChartDataset<'bar'>);\r\n }\r\n return datasets;\r\n }\r\n \r\n describeBar(config: any): string {\r\n const { data } = config;\r\n\r\n const labels = data?.labels || [];\r\n const datasets = data?.datasets || [];\r\n\r\n const axisLabel = this.card?.axisX?.label || 'categoria';\r\n\r\n const barDatasets = datasets.filter((ds: any) => !ds.type || ds.type === 'bar');\r\n const lineDatasets = datasets.filter((ds: any) => ds.type === 'line');\r\n\r\n const seriesNames = barDatasets.map((ds: any) => ds.label || 'Série');\r\n const lineNames = lineDatasets.map((ds: any) => ds.label || 'Linha');\r\n let type = 'barras';\r\n if (['curveLine','lineBar','lineBarStacked'].includes(this.type)) {\r\n type = 'linhas';\r\n }\r\n\r\n let orientation = '';\r\n if (['verticalBar', 'verticalStackedBar', 'verticalProgressBar'].includes(this.type)) {\r\n orientation = 'vertical ';\r\n }\r\n let format = 'agrupadas';\r\n if (['stackedBar', 'verticalStackedBar', 'lineBarStacked'].includes(this.type)) {\r\n format = 'empilhadas';\r\n }\r\n\r\n let extra = '';\r\n if (['progressBar', 'verticalProgressBar'].includes(this.type)) {\r\n extra = ' demonstrando as porcentagens';\r\n }\r\n\r\n let description =\r\n this.card.title +\r\n ` - Gráfico de ${type} ${orientation}${format} por ${axisLabel}${extra}, comparando ${seriesNames.join(' e ')}`;\r\n\r\n if (lineDatasets.length) {\r\n description += `, com linha representando ${lineNames.join(' e ')}`;\r\n }\r\n\r\n description += '. ';\r\n\r\n labels.forEach((label: string, index: number) => {\r\n const barValues = barDatasets.map((ds: any) => {\r\n const value = ds.data?.[index] ?? 'sem valor';\r\n return `${ds.label}: ${value}`;\r\n });\r\n\r\n let lineValueText = '';\r\n\r\n if (lineDatasets.length) {\r\n const lineValues = lineDatasets.map((ds: any) => {\r\n const value = ds.data?.[index] ?? 'sem valor';\r\n return `${ds.label}: ${value}`;\r\n });\r\n\r\n lineValueText = `. Linha: ${lineValues.join(', ')}`;\r\n }\r\n\r\n description += `\\nEm ${label}: ${barValues.join(', ')}${lineValueText}.`;\r\n });\r\n\r\n return description.trim();\r\n }\r\n\r\n describeStackedBar(labels: any[], datasets: any[]): string {\r\n return this.card.title + ` - Gráfico de barras empilhadas com ${datasets.length} séries: ` +\r\n datasets.map(ds => ds.label).join(', ');\r\n }\r\n\r\n @HostListener('window:resize')\r\n onresize() {\r\n this.triggerResize();\r\n }\r\n}\r\n\r\n","\r\n<div class=\"chart-div\" #container>\r\n <canvas\r\n #chart\r\n baseChart\r\n class=\"chart chart-bar chart-item\"\r\n [data]=\"config.data\"\r\n [options]=\"config.options\"\r\n [type]=\"config.type\"\r\n [title]=\"description\"\r\n >\r\n </canvas>\r\n</div>","import { Component, ElementRef, HostListener, Input, OnInit, ViewChild} from '@angular/core';\r\nimport { Chart, ChartConfiguration, ChartData, ChartDataset, ChartOptions, ChartType } from 'chart.js';\r\nimport { Card, ChatConfig } from '../../../models/dashboard.model';\r\nimport { BaseChartDirective } from 'ng2-charts';\r\nimport { randomColor } from '../../../services/generic';\r\n@Component({\r\n selector: 'lib-bubble',\r\n templateUrl: './bubble.component.html',\r\n styleUrls: ['./bubble.component.scss']\r\n})\r\nexport class BubbleComponent implements OnInit {\r\n\r\n @Input() type:'bubble' = 'bubble';\r\n @Input() isDark:boolean = false;\r\n @Input() card:Card = {} as Card;\r\n\r\n loading: boolean = true;\r\n canvasHeight:number = 0;\r\n canvasWidth:number = 0;\r\n\r\n @ViewChild('container') container!: ElementRef<HTMLDivElement>;\r\n @ViewChild(BaseChartDirective) chart?: BaseChartDirective;\r\n\r\n private resizeObserver!: ResizeObserver;\r\n\r\n config: ChartConfiguration<'bubble'> = {\r\n type: this.type,\r\n data: {\r\n labels: [],\r\n datasets: []\r\n },\r\n options:{} as ChartOptions<'bubble'>\r\n };\r\n\r\n options:ChartOptions<'bubble'> = {\r\n responsive: true,\r\n maintainAspectRatio: false,\r\n plugins: {\r\n legend: {\r\n position: 'top',\r\n color: this.isDark ? '#FFF' : '#333',\r\n },\r\n datalabels: {\r\n display: false\r\n }\r\n }\r\n } as ChartOptions<'bubble'>;\r\n\r\n constructor() { }\r\n\r\n ngOnInit() {\r\n this.options!.indexAxis = this.card.axisOrientation ?? 'x';\r\n\r\n if(this.card.stacked){\r\n this.options.scales = { x: { stacked: true }, y: { stacked: true } };\r\n }\r\n\r\n if(this.card.showPorcent){\r\n this.options!.plugins!.tooltip = {\r\n callbacks: {\r\n label: function(context) {\r\n return context.raw + '%';\r\n }\r\n }\r\n }\r\n }\r\n\r\n if(this.card.showLabel){\r\n this.options!.plugins!.datalabels = {\r\n anchor: 'center',\r\n align: 'center',\r\n formatter: (value: number) => this.card.showPorcent? value + '%': value,\r\n color: '#fff',\r\n font: {\r\n weight: 'bold'\r\n }\r\n }\r\n }\r\n\r\n this.config.type = this.type;\r\n this.config.options = this.options;\r\n this.config.data.datasets = this.formatDataset();\r\n }\r\n\r\n ngAfterViewInit() {\r\n this.resizeObserver = new ResizeObserver(() => {\r\n if (this.chart) {\r\n setTimeout(() => {\r\n this.triggerResize();\r\n }, 0);\r\n }\r\n });\r\n\r\n this.resizeObserver.observe(this.container.nativeElement);\r\n\r\n setTimeout(() => {\r\n this.chart?.chart?.resize();\r\n }, 50);\r\n\r\n this.loading = false;\r\n }\r\n\r\n ngOnDestroy() {\r\n if (this.resizeObserver) {\r\n this.resizeObserver.disconnect();\r\n }\r\n }\r\n \r\n private triggerResize() {\r\n if (this.chart?.chart) {\r\n this.chart.chart.resize();\r\n this.chart.update();\r\n }\r\n }\r\n\r\n formatDataset(): ChartDataset<'bubble'>[] {\r\n if (!this.card?.data?.length ) return [];\r\n if (!this.card.axisX?.key) return [];\r\n\r\n const labels = this.card.data.map(row => row[this.card.axisX?.key ?? '']);\r\n this.config.data.labels = labels;\r\n\r\n const datasets: ChartDataset<'bubble'>[] = this.card.keys?.map(item => {\r\n const data = this.card.data?.map(row => {\r\n const value = {\r\n x: row[item.keyX ?? ''],\r\n y: row[item.keyY ?? ''],\r\n r: row[item.keyR ?? '']\r\n };\r\n return value;\r\n }) ?? [];\r\n\r\n if(!item.color){\r\n item.color = randomColor();\r\n }\r\n\r\n var result = {\r\n label: item.label,\r\n data,\r\n backgroundColor: item.color,\r\n fill: item.fill ?? false,\r\n } as ChartDataset<'bubble'>;\r\n \r\n if( this.card.stacked && item.stackKey){\r\n result['stack'] = item.stackKey;\r\n }\r\n return result;\r\n }) ?? [];\r\n return datasets;\r\n }\r\n\r\n @HostListener('window:resize')\r\n onresize() {\r\n this.triggerResize();\r\n }\r\n}\r\n\r\n","<div class=\"chart-div\" #container>\r\n <canvas\r\n #chart\r\n baseChart\r\n class=\"chart chart-bar chart-item\"\r\n [data]=\"config.data\"\r\n [options]=\"config.options\"\r\n [type]=\"config.type\"\r\n >\r\n </canvas>\r\n</div>","import { Component, ElementRef, HostListener, Input, OnInit, ViewChild} from '@angular/core';\r\nimport { Chart, ChartConfiguration, ChartData, ChartDataset, ChartOptions, ChartType } from 'chart.js';\r\nimport { Card, ChatConfig } from '../../../models/dashboard.model';\r\nimport { BaseChartDirective } from 'ng2-charts';\r\nimport { getOpacityColors, randomColor } from '../../../services/generic';\r\n@Component({\r\n selector: 'lib-pie',\r\n templateUrl: './pie.component.html',\r\n styleUrls: ['./pie.component.scss']\r\n})\r\nexport class PieComponent implements OnInit {\r\n\r\n @Input() type:'pie' | 'doughnut' | 'polarArea' | 'halfDoughnut' | 'multiPie' = 'pie';\r\n @Input() isDark:boolean = false;\r\n @Input() card:Card = {} as Card;\r\n\r\n loading: boolean = true;\r\n canvasHeight:number = 0;\r\n canvasWidth:number = 0;\r\n\r\n @ViewChild('container') container!: ElementRef<HTMLDivElement>;\r\n @ViewChild(BaseChartDirective) chart?: BaseChartDirective;\r\n\r\n private resizeObserver!: ResizeObserver;\r\n\r\n config: ChartConfiguration<'pie' | 'doughnut' | 'polarArea'> = {\r\n type: 'pie',\r\n data: {\r\n labels: [],\r\n datasets: []\r\n },\r\n options:{} as ChartOptions<'pie' | 'doughnut' | 'polarArea'>\r\n };\r\n\r\n options:ChartOptions<'pie' | 'doughnut' | 'polarArea'> = {\r\n responsive: true,\r\n maintainAspectRatio: false,\r\n plugins: {\r\n legend: {\r\n position: 'top',\r\n color: this.isDark ? '#FFF' : '#333',\r\n },\r\n datalabels: {\r\n display: false\r\n }\r\n }\r\n } as ChartOptions<'pie' | 'doughnut' | 'polarArea'>;\r\n\r\n constructor() { }\r\n\r\n ngOnInit() {\r\n this.config.type = this.type == 'halfDoughnut'? 'doughnut': (this.type == 'multiPie'? 'pie' : this.type);\r\n this.formatOption();\r\n this.config.options = this.options;\r\n this.config.data.datasets = this.formatDataset();\r\n }\r\n\r\n ngAfterViewInit() {\r\n this.resizeObserver = new ResizeObserver(() => {\r\n if (this.chart) {\r\n setTimeout(() => {\r\n this.triggerResize();\r\n }, 0);\r\n }\r\n });\r\n\r\n this.resizeObserver.observe(this.container.nativeElement);\r\n\r\n setTimeout(() => {\r\n this.chart?.chart?.resize();\r\n }, 50);\r\n\r\n this.loading = false;\r\n }\r\n\r\n ngOnDestroy() {\r\n if (this.resizeObserver) {\r\n this.resizeObserver.disconnect();\r\n }\r\n }\r\n \r\n private triggerResize() {\r\n if (this.chart?.chart) {\r\n this.chart.chart.resize();\r\n this.chart.update();\r\n }\r\n }\r\n\r\n formatOption(){\r\n if(this.type == 'halfDoughnut'){\r\n this.options = {\r\n ...this.options,\r\n rotation: -90,\r\n circumference: 180\r\n } as ChartOptions<'doughnut'>\r\n }\r\n\r\n if(this.card.showPorcent){\r\n this.options!.plugins!.tooltip = {\r\n callbacks: {\r\n label: function(context) {\r\n return context.raw + '%';\r\n }\r\n }\r\n }\r\n }\r\n\r\n if(this.card.showLabel){\r\n this.options!.plugins!.datalabels = {\r\n anchor: 'center',\r\n align: 'center',\r\n formatter: (value: number) => this.card.showPorcent? value + '%': value,\r\n color: '#fff',\r\n font: {\r\n weight: 'bold'\r\n }\r\n }\r\n }\r\n \r\n if(this.type == 'multiPie'){\r\n this.options!.plugins!.tooltip = {\r\n callbacks: {\r\n title: (context) => {\r\n const datasetLabel = context[0].dataset.label;\r\n const sliceLabel = context[0].label;\r\n return `${datasetLabel} - ${sliceLabel}`;\r\n },\r\n label: (context) => {\r\n return context.raw + '%';\r\n }\r\n }\r\n };\r\n }\r\n }\r\n\r\n formatDataset(): ChartDataset<'pie' | 'doughnut' | 'polarArea'>[] {\r\n if (!this.card?.data?.length ) return [];\r\n if (!this.card.axisX?.key) return [];\r\n\r\n const labels = this.card.data.map(row => row[this.card.axisX?.key ?? '']);\r\n const colors = this.card.data.map(row => row[this.card.axisX?.keyColor ?? ''] ?? randomColor());\r\n this.config.data.labels = labels;\r\n \r\n const datasets: ChartDataset<'pie' | 'doughnut' | 'polarArea'>[] = this.card.keys?.map((item, index) => {\r\n const data = this.card.data?.map(row => {\r\n const value = row[item.key];\r\n return typeof value === 'string'\r\n ? Number(value)\r\n : value ?? 0;\r\n }) ?? [];\r\n\r\n var result = {\r\n label: item.label,\r\n data,\r\n backgroundColor: getOpacityColors(colors, index),\r\n borderColor: 'white',\r\n fill: item.fill ?? false,\r\n } as ChartDataset<'pie' | 'doughnut' | 'polarArea'>;\r\n\r\n return result;\r\n }) ?? [];\r\n\r\n return datasets;\r\n }\r\n\r\n @HostListener('window:resize')\r\n onresize() {\r\n this.triggerResize();\r\n }\r\n}\r\n\r\n","<div class=\"chart-div\" #container>\r\n <canvas\r\n #chart\r\n baseChart\r\n class=\"chart chart-bar chart-item\"\r\n [data]=\"config.data\"\r\n [options]=\"config.options\"\r\n [type]=\"config.type\"\r\n >\r\n </canvas>\r\n</div>","import { Component, Input, OnInit } from '@angular/core';\r\nimport { Card, Item } from '../../../models/dashboard.model';\r\nimport { randomColor } from '../../../services/generic';\r\n\r\n@Component({\r\n selector: 'lib-simple-card',\r\n templateUrl: './simple-card.component.html',\r\n styleUrls: ['./simple-card.component.scss']\r\n})\r\nexport class SimpleCardComponent implements OnInit {\r\n\r\n @Input() type:'simpleCard' = 'simpleCard';\r\n @Input() isDark:boolean = false;\r\n @Input() card:Card = {} as Card;\r\n loading: boolean = true;\r\n currentData:Record<string,null> = {};\r\n currentKey:Item = {} as Item;\r\n\r\n constructor() { }\r\n\r\n ngOnInit() {\r\n this.currentData = this.card.data?.[0] ?? {};\r\n this.currentKey = this.card.keys?.[0] ?? {} as Item;\r\n this.currentKey.color = this.currentKey.color ?? randomColor()\r\n }\r\n\r\n}\r\n","<div class=\"chart-div\" #container>\r\n <b class=\"chart-number\">{{currentData[currentKey.key]}}</b>\r\n <b class=\"chart-label\">{{currentKey.label}}</b>\r\n</div>","import { Component, Input, OnInit } from '@angular/core';\r\nimport { Card } from '../../../models/dashboard.model';\r\n\r\n@Component({\r\n selector: 'lib-table',\r\n templateUrl: './table.component.html',\r\n styleUrls: ['./table.component.scss']\r\n})\r\nexport class TableComponent implements OnInit {\r\n\r\n @Input() type:'table' = 'table';\r\n @Input() isDark:boolean = false;\r\n @Input() card:Card = {} as Card;\r\n loading: boolean = true;\r\n\r\n constructor() { }\r\n\r\n ngOnInit() {\r\n }\r\n\r\n}\r\n","<div class=\"chart-div pt-2\" #container>\r\n <table class=\"table table-striped\" [class.table-dark]=\"isDark\">\r\n <thead>\r\n <tr>\r\n <th *ngFor=\"let key of card.keys\">{{key.label}}</th>\r\n </tr>\r\n </thead>\r\n <tbody class=\"table-group-divider\">\r\n <tr *ngFor=\"let data of card.data\">\r\n <td *ngFor=\"let key of card.keys\">{{data[key.key]}}</td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n</div>","import { Component, Input, OnInit } from '@angular/core';\r\nimport { Card, DASHBOARD_BAR_LINE_TYPES, DashboardBarLineType, } from '../../models/dashboard.model';\r\nimport { DomSanitizer, SafeHtml } from '@angular/platform-browser';\r\n\r\n@Component({\r\n selector: 'lib-card',\r\n templateUrl: './card.component.html',\r\n styleUrls: ['./card.component.scss']\r\n})\r\nexport class CardComponent implements OnInit {\r\n\r\n barItems: DashboardBarLineType[] = DASHBOARD_BAR_LINE_TYPES;\r\n @Input() data:Card = {} as Card;\r\n @Input() isDark:boolean = false;\r\n safeHtml!:SafeHtml;\r\n\r\n constructor(\r\n private sanitizer: DomSanitizer\r\n ) { }\r\n\r\n ngOnInit() {\r\n if(this.data.innerHtml){\r\n this.safeHtml = this.sanitizer.bypassSecurityTrustHtml(this.data.innerHtml);\r\n }\r\n }\r\n\r\n includeBarType(data:Card):boolean{\r\n return data.type? this.barItems.includes(data.type): false;\r\n }\r\n\r\n get barLineType(): DashboardBarLineType {\r\n if (this.includeBarType(this.data)) {\r\n return this.data.type ?? 'bar';\r\n }\r\n return 'bar';\r\n }\r\n \r\n get pieType(): 'pie' | 'doughnut' | 'polarArea' | 'halfDoughnut' | 'multiPie' {\r\n if (this.data?.type === 'pie' || this.data?.type === 'doughnut' || \r\n this.data?.type === 'polarArea' || this.data?.type === 'halfDoughnut' || \r\n this.data?.type === 'multiPie') {\r\n return this.data.type;\r\n }\r\n return 'pie';\r\n }\r\n\r\n get bubbleType(): 'bubble'{\r\n if (this.data?.type === 'bubble') {\r\n return this.data.type;\r\n }\r\n return 'bubble';\r\n }\r\n\r\n get cardType(): 'simpleCard'{\r\n if (this.data?.type === 'simpleCard') {\r\n return this.data.type;\r\n }\r\n return 'simpleCard';\r\n }\r\n\r\n get tableType(): 'table'{\r\n if (this.data?.type === 'table') {\r\n return this.data.type;\r\n }\r\n return 'table';\r\n }\r\n}\r\n","<section class=\"card-section\">\r\n {{data.title}}\r\n <div class=\"card-chart\">\r\n <lib-bar-line *ngIf=\"this.includeBarType(this.data)\" \r\n [card]=\"data\" [type]=\"barLineType\" [isDark]=\"isDark\"></lib-bar-line>\r\n\r\n <lib-pie *ngIf=\"['pie', 'doughnut', 'polarArea', 'halfDoughnut', 'multiPie'].includes(data.type ?? '')\" \r\n [card]=\"data\" [type]=\"pieType\" [isDark]=\"isDark\"></lib-pie>\r\n\r\n <lib-bubble *ngIf=\"['bubble'].includes(data.type ?? '')\" \r\n [card]=\"data\" [type]=\"bubbleType\" [isDark]=\"isDark\"></lib-bubble>\r\n\r\n <lib-simple-card *ngIf=\"['simpleCard'].includes(data.type ?? '')\" \r\n [card]=\"data\" [type]=\"cardType\" [isDark]=\"isDark\"></lib-simple-card>\r\n\r\n <lib-table *ngIf=\"['table'].includes(data.type ?? '')\" \r\n [card]=\"data\" [type]=\"tableType\" [isDark]=\"isDark\"></lib-table>\r\n\r\n <div class=\"card-html\" *ngIf=\"data.type == 'html'\" [innerHtml]=\"safeHtml\">\r\n </div>\r\n </div>\r\n</section>","import { Component, EventEmitter, Input, OnInit, Output, TemplateRef, ViewChild } from '@angular/core';\r\nimport { FormControl, FormGroup, Validators } from '@angular/forms';\r\nimport { BsModalRef, BsModalService } from 'ngx-bootstrap/modal';\r\nimport { ModalItem, Select, SelectRow } from '../../models/dashboard.model';\r\n\r\n@Component({\r\n selector: 'lib-modal-edit',\r\n templateUrl: './modal-edit.component.html',\r\n styleUrls: ['./modal-edit.component.scss']\r\n})\r\nexport class ModalEditComponent implements OnInit {\r\n\r\n modalRef?: BsModalRef;\r\n rows: SelectRow[] = [];\r\n rowsType: string = '';\r\n simpleType: Select = {id:'simple', label: 'Quantidade'};\r\n types: Select[] = [];\r\n \r\n @Input() data: ModalItem[] = [];\r\n @Input() groupType:Select[] = [];\r\n\t@Output() closeModal: EventEmitter<void> = new EventEmitter<void>();\r\n\t@Output() saveData: EventEmitter<any> = new EventEmitter<SelectRow[]>();\r\n \r\n constructor(\r\n private modalService: BsModalService\r\n ) { }\r\n\r\n ngOnInit() {\r\n this.types = [this.simpleType, ...this.groupType];\r\n this.rowsType = 'simple';\r\n if (this.rows?.length) {\r\n this.rows = this.rows.map(r =>\r\n this.buildRowFromFinalValue(r.finalValue)\r\n );\r\n } else {\r\n this.addRow();\r\n }\r\n }\r\n\r\n addRow():void {\r\n this.rows.push({\r\n levels: [this.addTodosOption(this.data)],\r\n selectedPath: [],\r\n finalValue: [],\r\n finalFontColor: '',\r\n finalBackgroudColor: ''\r\n });\r\n }\r\n\r\n removeRow(index: number):void {\r\n this.rows.splice(index, 1);\r\n }\r\n\r\n cloneRow(index: number): void {\r\n const original = this.rows[index];\r\n\r\n const cloned = this.buildRowFromFinalValue(original.finalValue);\r\n\r\n cloned.finalFontColor = original.finalFontColor;\r\n cloned.finalBackgroudColor = original.finalBackgroudColor;\r\n\r\n this.rows.push(cloned);\r\n }\r\n\r\n onSelect(item: ModalItem, rowIndex: number, levelIndex: number): void {\r\n const row = this.rows[rowIndex];\r\n\r\n row.levels = row.levels.slice(0, levelIndex + 1);\r\n row.selectedPath = row.selectedPath.slice(0, levelIndex);\r\n\r\n row.selectedPath[levelIndex] = item;\r\n\r\n if (item.type === 'group' && item.items?.length) {\r\n row.levels.push(this.addTodosOption(item.items));\r\n }\r\n\r\n this.updateFinalValue(row);\r\n }\r\n\r\n updateFinalValue(row: SelectRow):void {\r\n row.finalValue = row.selectedPath.map(i => String(i.id));\r\n }\r\n \r\n onFontColorChange(event: Event, rowIndex: number):void {\r\n const row = this.rows[rowIndex];\r\n const color = (event.target as HTMLInputElement).value;\r\n row.finalFontColor = color;\r\n }\r\n \r\n onBackgroundChange(event: Event, rowIndex: number):void {\r\n var row = this.rows[rowIndex];\r\n const color = (event.target as HTMLInputElement).value;\r\n row.finalBackgroudColor = color;\r\n }\r\n\r\n onCloseModal():void{\r\n this.closeModal.emit();\r\n }\r\n \r\n onSaveData():void{\r\n const newData = this.rows.map(r => ({\r\n finalValue: r.finalValue,\r\n finalBackgroudColor: r.finalBackgroudColor,\r\n finalFontColor: r.finalFontColor,\r\n }));\r\n this.saveData.emit({rowsType: this.rowsType, rows: this.rows});\r\n }\r\n\r\n isFlatLevel(level:ModalItem[]): boolean {\r\n return level.every(item => item.type !== 'group') ?? false;\r\n }\r\n\r\n buildRowFromFinalValue(finalValue: string[]): SelectRow {\r\n\r\n const row: SelectRow = {\r\n levels: [this.addTodosOption(this.data)],\r\n selectedPath: [],\r\n finalValue,\r\n finalFontColor: '',\r\n finalBackgroudColor: ''\r\n };\r\n\r\n let currentLevel = this.data;\r\n\r\n finalValue.forEach((id, index) => {\r\n const found = currentLevel.find(item => item.id === id);\r\n\r\n if (!found) return;\r\n\r\n row.selectedPath[index] = found;\r\n\r\n if (found.type === 'group' && found.items) {\r\n currentLevel = found.items;\r\n row.levels.push(this.addTodosOption(currentLevel));\r\n }\r\n });\r\n\r\n return row;\r\n }\r\n\r\n addTodosOption(items: ModalItem[]): ModalItem[] {\r\n const isFlat = items?.every(item => item.type !== 'group');\r\n\r\n if (!isFlat) return items;\r\n\r\n const alreadyHasTodos = items.some(i => i.id === 'todos');\r\n if (alreadyHasTodos) return items;\r\n\r\n return [\r\n { id: 'todos', label: 'Todos', type: 'option' },\r\n ...items\r\n ];\r\n }\r\n}\r\n","<header class=\"modal-header\">\r\n <h4 class=\"modal-title pull-left\">Editar fonte dos dados</h4>\r\n <button type=\"button\" class=\"btn-close close pull-right\" aria-label=\"Close\" (click)=\"onCloseModal()\">\r\n <span aria-hidden=\"true\" class=\"visually-hidden\">×</span>\r\n </button>\r\n</header>\r\n<body class=\"modal-body table-form py-2\">\r\n <label>Tipo de Agrupamento dos dados:</label>\r\n <ng-select\r\n class=\" col-12 col-sm-4 mb-1\"\r\n [items]=\"types\"\r\n bindValue=\"id\"\r\n bindLabel=\"label\"\r\n [clearable]=\"false\"\r\n placeholder=\"Selecione...\"\r\n [(ngModel)]=\"rowsType\">\r\n </ng-select>\r\n <article *ngFor=\"let row of rows; let rowIndex = index\" class=\"line mb-2\">\r\n <div class=\"d-flex\">\r\n <ng-container *ngFor=\"let level of row.levels; let levelIndex = index\">\r\n <ng-select class=\"me-1\"\r\n [items]=\"level\"\r\n bindLabel=\"label\"\r\n [clearable]=\"false\"\r\n [placeholder]=\"'Selecione...'\"\r\n [ngModel]=\"row.selectedPath[levelIndex]\"\r\n (change)=\"onSelect($event, rowIndex, levelIndex)\">\r\n </ng-select>\r\n </ng-container>\r\n </div>\r\n <div class=\"d-flex\">\r\n <div class=\"color-div me-2\" [style.background-color]=\"rows[rowIndex].finalBackgroudColor\">\r\n <button class=\"btn font-icon\" [style.color]=\"rows[rowIndex].finalFontColor\"\r\n title=\"Cor do texto\" (click)=\"fontColor.click()\">\r\n format_color_text\r\n </button>\r\n <input #fontColor class=\"hide\" type=\"color\" (change)=\"onFontColorChange($event, rowIndex)\">\r\n <hr class=\"divisor\">\r\n <button class=\"btn font-icon\" [style.color]=\"rows[rowIndex].finalFontColor\"\r\n title=\"Cor de fundo\" (click)=\"backgroundColor.click()\">\r\n colors\r\n </button>\r\n <input #backgroundColor class=\"hide\" type=\"color\" (change)=\"onBackgroundChange($event, rowIndex)\">\r\n </div>\r\n <button class=\"btn btn-basic font-icon me-2\" type=\"button\" (click)=\"cloneRow(rowIndex)\" title=\"Clonar linha\">\r\n copy_all\r\n </button>\r\n <button class=\"btn btn-danger font-icon\" type=\"button\" (click)=\"removeRow(rowIndex)\" title=\"Remover linha\">\r\n delete\r\n </button>\r\n </div>\r\n </article>\r\n <div class=\"d-flex mb-2\">\r\n <button class=\"btn btn-success\" type=\"button\" (click)=\"addRow()\" title=\"Adicionar linha\">+</button>\r\n </div>\r\n <div class=\"d-flex justify-content-end mb-2\">\r\n <button class=\"btn btn-success\" type=\"button\" (click)=\"onSaveData()\" title=\"Salvar\">Salvar</button>\r\n </div>\r\n</body>","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\r\nimport { ChartOption, DASHBOARD_CHART_TYPES, DashboardChartType } from '../../models/dashboard.model';\r\n\r\n@Component({\r\n selector: 'lib-modal-edit-chart',\r\n templateUrl: './modal-edit-chart.component.html',\r\n styleUrls: ['./modal-edit-chart.component.scss']\r\n})\r\nexport class ModalEditChartComponent implements OnInit {\r\n\r\n options:ChartOption[] = [\r\n { id: 'bar', title: 'Barra' },\r\n { id: 'stackedBar', title: 'Barra Empilhada' },\r\n { id: 'verticalBar', title: 'Barra Vertical' },\r\n { id: 'verticalStackedBar', title: 'Barra Vertical Empilhada' },\r\n { id: 'verticalProgressBar', title: 'Barra de Progresso Vertical' },\r\n { id: 'progressBar', title: 'Barra de Progresso' },\r\n { id: 'lineBar', title: 'Linha + Barra' },\r\n { id: 'lineBarStacked', title: 'Linha + Barra Empilhada' },\r\n { id: 'line', title: 'Linha' },\r\n { id: 'radar', title: 'Radar' },\r\n { id: 'curveLine', title: 'Linha Curva' },\r\n { id: 'pie', title: 'Pizza' },\r\n { id: 'multiPie', title: 'Múltiplas Pizzas' },\r\n { id: 'doughnut', title: 'Rosca' },\r\n { id: 'halfDoughnut', title: 'Meia Rosca' },\r\n { id: 'area', title: 'Área' },\r\n { id: 'bubble', title: 'Bolhas' },\r\n { id: 'polarArea', title: 'Área Polar' },\r\n { id: 'simpleCard', title: 'Card Simples' },\r\n { id: 'table', title: 'Tabela' },\r\n { id: 'html', title: 'HTML Personalizado' },\r\n ];\r\n\r\n @Input() currentOption!: DashboardChartType|null;\r\n @Output() closeModal: EventEmitter<void> = new EventEmitter<void>();\r\n @Output() saveData: EventEmitter<any> = new EventEmitter<any>();\r\n\r\n constructor() { }\r\n\r\n ngOnInit() {\r\n }\r\n \r\n setCurrentOption(option: DashboardChartType):void{\r\n this.currentOption = option;\r\n }\r\n\r\n onCloseModal():void{\r\n this.closeModal.emit();\r\n }\r\n \r\n onSaveData():void{\r\n this.saveData.emit(this.currentOption);\r\n }\r\n\r\n}\r\n","<header class=\"modal-header\">\r\n <h4 class=\"modal-title pull-left\">Editar fonte dos dados</h4>\r\n <button type=\"button\" class=\"btn-close close pull-right\" aria-label=\"Close\" (click)=\"onCloseModal()\">\r\n <span aria-hidden=\"true\" class=\"visually-hidden\">×</span>\r\n </button>\r\n</header>\r\n<body class=\"modal-body table-form py-2\">\r\n <section class=\"d-grid\">\r\n <label >Titulo:\r\n <input class=\"form-control\"/>\r\n </label>\r\n <label>\r\n <input type=\"checkbox\"> Mostrar legenda no Gráfico\r\n </label>\r\n <label>\r\n <input type=\"checkbox\"> Mostrar simbolo '%' na legenda\r\n </label>\r\n </section>\r\n <hr>\r\n <h3>TIPO:</h3>\r\n <section class=\"row g-0\">\r\n <div class=\"card-chart col-12 col-sm-6 col-md-6 col-lg-4 col-xl-3\" *ngFor=\"let opt of options\">\r\n <b>{{opt.title}}</b>\r\n <img [src]=\"'assets/dashboard/images/' + opt.id +'.png'\" (click)=\"setCurrentOption(opt.id)\">\r\n </div>\r\n </section>\r\n <div class=\"d-flex justify-content-end mb-2\">\r\n <button class=\"btn btn-success\" type=\"button\" (click)=\"onSaveData()\" title=\"Salvar\">Salvar</button>\r\n </div>\r\n</body>","import { ChangeDetectorRef, Component, HostListener, Input, OnInit, QueryList, TemplateRef, ViewChild, ViewChildren } from '@angular/core';\r\nimport { CdkDropList, moveItemInArray} from '@angular/cdk/drag-drop';\r\nimport { Card, DashboardChartType, ModalItem, Option, Select, SelectRow } from '../../models/dashboard.model';\r\nimport { Chart } from 'chart.js';\r\nimport { BsModalRef, BsModalService } from 'ngx-bootstrap/modal';\r\nimport { Item } from '../../models/dashboard.model';\r\n\r\n@Component({\r\n selector: 'lib-dashboard',\r\n templateUrl: './dashboard.component.html',\r\n styleUrls: ['./dashboard.component.scss']\r\n})\r\nexport class DashboardComponent implements OnInit {\r\n\r\n emptyCard:Card = {\r\n type:'html',\r\n innerHtml: '<button class=\"btn empty-card font-icon\" >dashboard_customize</button>'\r\n } as Card;\r\n currentOption!:DashboardChartType|null;\r\n currentCard!: Card;\r\n copyComplete:boolean=false;\r\n\r\n @Input() isDark:boolean = false;\r\n @Input() isResponsive:boolean = true;\r\n @Input() canEdit: boolean = false;\r\n @Input() cols: number = 4;\r\n @Input() options:Option[] = [\r\n { title: '1x1', cols: 1, rows: 1 },\r\n { title: '2x1', cols: 2, rows: 1 },\r\n { title: '3x1', cols: 3, rows: 1 },\r\n { title: '1x2', cols: 1, rows: 2 },\r\n { title: '2x2', cols: 2, rows: 2 },\r\n ]\r\n @Input() cards: Card[] = [];\r\n @Input() groupType:Select[] = [];\r\n @Input() modalData:ModalItem[] = [];\r\n @Input() data!:any;\r\n @Input() debug: boolean = false;\r\n\r\n drops: CdkDropList[] = [];\r\n\r\n modalRef?: BsModalRef;\r\n modalChartRef?: BsModalRef;\r\n modalViewRef?: BsModalRef;\r\n modalCodeRef?: BsModalRef;\r\n\r\n @ViewChildren(CdkDropList) dropsQuery!: QueryList<CdkDropList>;\r\n @ViewChild('modalChart') modalChart!: TemplateRef<any>;\r\n @ViewChild('modal') modal!: TemplateRef<any>;\r\n @ViewChild('modalView') modalView!: TemplateRef<any>;\r\n @ViewChild('modalCode') modalCode!: TemplateRef<any>;\r\n\r\n constructor(\r\n private modalService: BsModalService,\r\n private cd: ChangeDetectorRef\r\n ) { }\r\n\r\n ngOnInit() {\r\n this.cards = [...this.cards].sort((a, b) => (a.order ?? 0) - (b.order ?? 0));\r\n if(this.isResponsive){\r\n this.recalcCols();\r\n }\r\n }\r\n\r\n ngAfterViewInit() {\r\n this.dropsQuery.changes.subscribe(() => {\r\n this.drops = this.dropsQuery.toArray();\r\n });\r\n Promise.resolve().then(() => {\r\n this.drops = this.dropsQuery.toArray();\r\n });\r\n }\r\n\r\n entered($event: any):void {\r\n moveItemInArray(this.cards, $event.item.data, $event.container.data);\r\n }\r\n\r\n get orderOptions(): Option[]{\r\n return [...this.options].sort((a, b) => (a.order ?? 0) - (b.order ?? 0));\r\n }\r\n\r\n recalcCols():void{\r\n this.cols = Math.max(1, Math.floor(window.innerWidth / 300));\r\n }\r\n\r\n openModalChart(card:Card):void {\r\n this.currentCard = card;\r\n this.modalChartRef = this.modalService.show(this.modalChart, {\r\n class: 'modal-xl modal-top',\r\n });\r\n }\r\n\r\n closeModalChart():void {\r\n this.modalChartRef?.hide();\r\n }\r\n\r\n openModalData(card:Card):void {\r\n this.currentCard = card;\r\n this.currentOption = card.type ?? null;\r\n this.modalRef = this.modalService.show(this.modal, {\r\n class: 'modal-xl modal-top',\r\n });\r\n }\r\n\r\n closeModalData():void {\r\n this.modalRef?.hide();\r\n }\r\n\r\n get jsonData():string{\r\n return JSON.stringify(this.currentCard);\r\n }\r\n openModalCode(card:Card):void {\r\n this.currentCard = card;\r\n this.currentOption = card.type ?? null;\r\n this.modalCodeRef = this.modalService.show(this.modalCode, {\r\n class: 'modal-xl modal-top',\r\n });\r\n }\r\n\r\n closeModalCode():void {\r\n this.modalCodeRef?.hide();\r\n }\r\n copyCode() {\r\n const texto = JSON.stringify(this.currentCard, null, 2);\r\n\r\n navigator.clipboard.writeText(texto)\r\n .then(() => {\r\n this.copyComplete = true;\r\n setTimeout(() => this.copyComplete = false, 1500);\r\n })\r\n .catch(err => {\r\n console.error('Erro ao copiar:', err);\r\n });\r\n }\r\n\r\n saveData(payload: any):void {\r\n const rows: SelectRow[] = payload.rows;\r\n const rowsType: string = payload.rowsType;\r\n const currentType: string = rowsType == 'simple'? rowsType :'group';\r\n\r\n if (!rows?.length) return;\r\n\r\n this.cards = this.cards.map(card => {\r\n if (card.id !== this.currentCard.id) return card;\r\n\r\n const baseData = this.data[currentType];\r\n if (!baseData) return card;\r\n\r\n const keys: Item[] = rows.map((row, index) => {\r\n const id = row.finalValue[row.finalValue.length - 1];\r\n const last = row.selectedPath.find(r => r.id == id);\r\n\r\n return {\r\n key: last?.id || `key_${index}`,\r\n label: last?.label || `Item ${index + 1}`,\r\n fill: true,\r\n color: row.finalBackgroudColor,\r\n fontColor: row.finalFontColor\r\n };\r\n }) as Item[];\r\n\r\n const typeLabel = this.groupType.find(t => t.id == rowsType)?.label ?? ''; \r\n var data = this.formatData(rowsType, rows[0]?.selectedPath, rows[0]?.finalValue);\r\n return {\r\n ...card,\r\n axisX: { key: rowsType, label: typeLabel },\r\n keys: [...keys],\r\n data: data\r\n };\r\n });\r\n this.modalRef?.hide();\r\n }\r\n\r\n formatData(type:string, selectedPath: any, finalValue: string[]):any[]{\r\n const currentType: string = type == 'simple'? type :'group';\r\n const baseData = this.data[currentType];\r\n\r\n let data: any[] = [];\r\n\r\n if (currentType === 'simple') {\r\n var finalData = baseData;\r\n finalValue?.slice(0, -1)?.forEach(r => {\r\n finalData = finalData[r];\r\n });\r\n data = finalData;\r\n\r\n } else if (currentType === 'group') {\r\n var finalData = baseData;\r\n finalValue?.slice(0, -1)?.forEach(r => {\r\n finalData = finalData[r];\r\n });\r\n data = finalData[type];\r\n }\r\n return data;\r\n }\r\n\r\n randomValueFromPath(row: SelectRow): number {\r\n const base = row.selectedPath.length * 10;\r\n return Math.floor(Math.random() * 20) + base;\r\n }\r\n\r\n saveChartData(data:any):void {\r\n alert('TODO') //proxima versao\r\n this.modalRef?.hide();\r\n }\r\n\r\n addNewCard():void{\r\n const newItem:Card = { title: 'Novo', order:99, cols: 1, rows: 1 } as Card;\r\n this.cards.push(newItem);\r\n this.cd.detectChanges();\r\n }\r\n\r\n downloadImage(id: number):void {\r\n const canvases = document.querySelectorAll(`#card_${id} canvas`);\r\n\r\n canvases.forEach((canvas: any, index: number) => {\r\n\r\n const scale = 3;\r\n const tempCanvas = document.createElement('canvas');\r\n tempCanvas.width = canvas.width * scale;\r\n tempCanvas.height = canvas.height * scale;\r\n\r\n const ctx = tempCanvas.getContext('2d');\r\n\r\n if (ctx) {\r\n ctx.fillStyle = '#ffffff';\r\n ctx.fillRect(0, 0, tempCanvas.width, tempCanvas.height);\r\n ctx.scale(scale, scale);\r\n ctx.drawImage(canvas, 0, 0);\r\n }\r\n\r\n const link = document.createElement('a');\r\n link.download = `canvas_${index + 1}.png`;\r\n link.href = tempCanvas.toDataURL('image/png', 1.0);\r\n link.click();\r\n });\r\n }\r\n\r\n openChart(card: Card, id:number):void{\r\n this.currentCard = card;\r\n this.currentOption = card.type ?? null;\r\n this.modalViewRef = this.modalService.show(this.modalView, {\r\n class: 'modal-xl modal-top',\r\n });\r\n }\r\n\r\n closeModalView():void{\r\n this.modalViewRef?.hide();\r\n }\r\n\r\n @HostListener('window:resize')\r\n onresize() {\r\n if(this.isResponsive){\r\n this.recalcCols();\r\n }\r\n }\r\n\r\n}\r\n","<main class=\"dashboard\" [class.responsive]=\"isResponsive\" [class.dark-class]=\"isDark\">\r\n <mat-grid-list [cols]=\"cols\" rowHeight=\"300px\" gutterSize=\"10px\">\r\n <mat-grid-tile\r\n *ngFor=\"let card of cards; let i = index\"\r\n [colspan]=\"card.cols > cols? cols : card.cols\"\r\n [rowspan]=\"card.rows\"\r\n [class.dark-class]=\"isDark\"\r\n class=\"card\"\r\n >\r\n <div cdkDropList [cdkDropListConnectedTo]=\"drops\" [cdkDropListData]=\"i\">\r\n <div\r\n [id]=\"'card_' + i\"\r\n cdkDrag\r\n (cdkDragEntered)=\"entered($event)\"\r\n [cdkDragData]=\"i\"\r\n class=\"card-body\"\r\n [cdkDragDisabled]=\"!canEdit\"\r\n [class.dark-class]=\"isDark\"\r\n [class.has-color]=\"card.backgroundColor\"\r\n [style.background-color]=\"card.backgroundColor\"\r\n [style.color]=\"card.fontColor\"\r\n >\r\n <nav class=\"nav-hover\">\r\n <button *ngIf=\"!canEdit\" class=\"btn font-icon\" title=\"Ampliar gráfico\" (click)=\"openChart(card, i)\">search</button>\r\n <button *ngIf=\"!canEdit\" class=\"btn font-icon\" title=\"Baixar imagem\" (click)=\"downloadImage(i)\">download</button>\r\n </nav>\r\n <nav class=\"card-nav\" *ngIf=\"canEdit\">\r\n <div class=\"card-handle font-icon\" title=\"Mover\" cdkDragHandle>\r\n drag_pan\r\n </div>\r\n <button class=\"btn card-options font-icon\" title=\"Modificar tamanho\" mat-button [matMenuTriggerFor]=\"menu\">\r\n resize\r\n </button>\r\n <mat-menu #menu=\"matMenu\">\r\n <ng-container *ngFor=\"let opt of orderOptions\">\r\n <button mat-menu-item (click)=\"card.cols = opt.cols; card.rows = opt.rows\" >{{opt.title}}</button>\r\n </ng-container>\r\n </mat-menu>\r\n <button class=\"btn font-icon\" title=\"Editar Tipo do Gráfico\" (click)=\"openModalChart(card)\">{{'landscape_2_edit'}}</button>\r\n <button class=\"btn font-icon\" title=\"Editar fonte de dados\" (click)=\"openModalData(card)\">edit_note</button>\r\n <button class=\"btn font-icon\" *ngIf=\"debug\" title=\"Exibir código de configuração\" (click)=\"openModalCode(card)\">code_blocks</button>\r\n </nav>\r\n <div class=\"custom-placeholder\" *cdkDragPlaceholder></div>\r\n <lib-card [data]=\"card\" [ngClass]=\"{'canEdit': canEdit}\" [isDark]=\"isDark\"></lib-card>\r\n </div>\r\n </div>\r\n </mat-grid-tile>\r\n <mat-grid-tile class=\"card\" [colspan]=\"1\" [rowspan]=\"1\" [class.dark-class]=\"isDark\" *ngIf=\"canEdit\">\r\n <lib-card [data]=\"emptyCard\" [ngClass]=\"{'canEdit': canEdit, cardEmpty:true}\" [isDark]=\"isDark\"\r\n (click)=\"addNewCard()\"\r\n ></lib-card>\r\n </mat-grid-tile>\r\n </mat-grid-list>\r\n</main>\r\n<ng-template #modal>\r\n <lib-modal-edit (closeModal)=\"closeModalData()\" (saveData)=\"saveData($event)\" [data]=\"modalData\" [groupType]=\"groupType\"></lib-modal-edit>\r\n</ng-template>\r\n<ng-template #modalView>\r\n <header class=\"modal-header\">\r\n <h4 class=\"modal-title pull-left mb-0\">{{currentCard.title}}</h4>\r\n <button type=\"button\" class=\"btn-close close pull-right\" aria-label=\"Close\" (click)=\"closeModalView()\">\r\n <span aria-hidden=\"true\" class=\"visually-hidden\">×</span>\r\n </button>\r\n </header>\r\n <body id=\"modalViewBody\" class=\"modal-body py-2 overflow-auto\">\r\n <lib-card [data]=\"currentCard\" [ngClass]=\"{'canEdit': canEdit}\" [isDark]=\"isDark\"></lib-card>\r\n </body>\r\n</ng-template>\r\n<ng-template #modalCode>\r\n <header class=\"modal-header\">\r\n <h4 class=\"modal-title pull-left mb-0\">{{currentCard.title}}</h4>\r\n <button type=\"button\" class=\"btn-close close pull-right\" aria-label=\"Close\" (click)=\"closeModalCode()\">\r\n <span aria-hidden=\"true\" class=\"visually-hidden\">×</span>\r\n </button>\r\n </header>\r\n <body id=\"modalCodeBody\" class=\"modal-body py-2 overflow-auto\">\r\n <pre class=\"code-area\">{{ currentCard | json }}</pre>\r\n <button class=\"font-icon code-copy\" title=\"Copiar json\" (click)=\"copyCode()\">content_copy</button>\r\n <span *ngIf=\"copyComplete\" class=\"copy-message\">Copiado!</span>\r\n </body>\r\n</ng-template>\r\n<ng-template #modalChart>\r\n <lib-modal-edit-chart (closeModal)=\"closeModalChart()\" [currentOption]=\"currentOption\" (saveData)=\"saveChartData($event)\"></lib-modal-edit-chart>\r\n</ng-template>","import { Component, Input } from '@angular/core';\nimport { Card, ModalItem, Option, Select } from './models/dashboard.model';\n\n@Component({\n selector: 'lib-primordash',\n template: `\n <lib-dashboard\n [isDark]=\"isDark\"\n [isResponsive]=\"isResponsive\"\n [canEdit]=\"canEdit\"\n [cols]=\"cols\"\n [options]=\"options\" \n [cards]=\"cards\" \n [groupType]=\"groupType\" \n [modalData]=\"modalData\" \n [data]=\"data\"\n [debug]=\"true\"\n ></lib-dashboard>\n `,\n styles: [\n ]\n})\nexport class PrimordashComponent {\n \n @Input() isDark:boolean = false;\n @Input() isResponsive:boolean = true;\n @Input() canEdit: boolean = false;\n @Input() cols: number = 4;\n @Input() options:Option[] = [\n { title: '1x1', cols: 1, rows: 1 },\n { title: '2x1', cols: 2, rows: 1 },\n { title: '3x1', cols: 3, rows: 1 },\n { title: '1x2', cols: 1, rows: 2 },\n { title: '2x2', cols: 2, rows: 2 },\n ]\n @Input() cards: Card[] = [];\n @Input() groupType:Select[] = [];\n @Input() modalData:ModalItem[] = [];\n @Input() data!:any;\n @Input() debug: boolean = false;\n\n}\n","import { NgModule } from '@angular/core';\r\nimport { BrowserModule } from '@angular/platform-browser';\r\nimport { DragDropModule } from '@angular/cdk/drag-drop';\r\nimport { MatGridListModule } from '@angular/material/grid-list';\r\nimport { MatMenuModule } from '@angular/material/menu';\r\nimport { BrowserAnimationsModule } from '@angular/platform-browser/animations';\r\nimport { NgChartsModule } from \"ng2-charts\";\r\nimport { CardComponent } from './components/card/card.component';\r\nimport { BarLineComponent } from './components/charts/bar-line/bar-line.component';\r\nimport { BubbleComponent } from './components/charts/bubble/bubble.component';\r\nimport { PieComponent } from './components/charts/pie/pie.component';\r\nimport { SimpleCardComponent } from './components/charts/simple-card/simple-card.component';\r\nimport { TableComponent } from './components/charts/table/table.component';\r\nimport { DashboardComponent } from './components/dashboard/dashboard.component';\r\nimport { ModalEditComponent } from './components/modal-edit/modal-edit.component';\r\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { ModalModule } from 'ngx-bootstrap/modal';\r\nimport { CommonModule } from '@angular/common';\r\nimport { NgSelectModule } from '@ng-select/ng-select';\r\nimport { PrimordashComponent } from './primordash.component';\r\nimport { ModalEditChartComponent } from './components/modal-edit-chart/modal-edit-chart.component';\r\n\r\n@NgModule({\r\n declarations: [\r\n DashboardComponent,\r\n CardComponent,\r\n BarLineComponent,\r\n BubbleComponent,\r\n PieComponent,\r\n SimpleCardComponent,\r\n TableComponent,\r\n ModalEditComponent,\r\n ModalEditChartComponent,\r\n PrimordashComponent\r\n ],\r\n imports: [\r\n BrowserModule,\r\n DragDropModule,\r\n BrowserAnimationsModule,\r\n MatGridListModule,\r\n MatMenuModule,\r\n NgChartsModule,\r\n ReactiveFormsModule,\r\n FormsModule,\r\n CommonModule,\r\n ModalModule.forRoot(),\r\n NgSelectModule\r\n],\r\n exports:[\r\n DashboardComponent,\r\n PrimordashComponent\r\n ],\r\n providers: [\r\n ]\r\n})\r\n\r\nexport class PrimordashModule { }\r\n","/*\n * Public API Surface of primordash\n */\n\nexport * from './lib/primordash.service';\nexport * from './lib/primordash.component';\nexport * from './lib/primordash.module';\nexport * from './lib/components/dashboard/dashboard.component';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1","i3.BarLineComponent","i4.BubbleComponent","i5.PieComponent","i6.SimpleCardComponent","i7.TableComponent","i3","i4","i6.CardComponent","i7.ModalEditComponent","i8.ModalEditChartComponent","i1.DashboardComponent"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"rafaelaalmeidaa-primordash.mjs","sources":["../../../projects/primordash/src/lib/primordash.service.ts","../../../projects/primordash/src/lib/models/dashboard.model.ts","../../../projects/primordash/src/lib/services/generic.ts","../../../projects/primordash/src/lib/components/charts/bar-line/bar-line.component.ts","../../../projects/primordash/src/lib/components/charts/bar-line/bar-line.component.html","../../../projects/primordash/src/lib/components/charts/bubble/bubble.component.ts","../../../projects/primordash/src/lib/components/charts/bubble/bubble.component.html","../../../projects/primordash/src/lib/components/charts/pie/pie.component.ts","../../../projects/primordash/src/lib/components/charts/pie/pie.component.html","../../../projects/primordash/src/lib/components/charts/simple-card/simple-card.component.ts","../../../projects/primordash/src/lib/components/charts/simple-card/simple-card.component.html","../../../projects/primordash/src/lib/components/charts/table/table.component.ts","../../../projects/primordash/src/lib/components/charts/table/table.component.html","../../../projects/primordash/src/lib/components/card/card.component.ts","../../../projects/primordash/src/lib/components/card/card.component.html","../../../projects/primordash/src/lib/components/modal-edit/modal-edit.component.ts","../../../projects/primordash/src/lib/components/modal-edit/modal-edit.component.html","../../../projects/primordash/src/lib/components/modal-edit-chart/modal-edit-chart.component.ts","../../../projects/primordash/src/lib/components/modal-edit-chart/modal-edit-chart.component.html","../../../projects/primordash/src/lib/components/dashboard/dashboard.component.ts","../../../projects/primordash/src/lib/components/dashboard/dashboard.component.html","../../../projects/primordash/src/lib/primordash.component.ts","../../../projects/primordash/src/lib/primordash.module.ts","../../../projects/primordash/src/public-api.ts","../../../projects/primordash/src/rafaelaalmeidaa-primordash.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class PrimordashService {\n\n constructor() { }\n}\n","import { ChartData, ChartOptions, ChartType } from \"chart.js\"\r\n\r\nexport interface Card {\r\n\r\n /** Identificador único do card */\r\n id?: number;\r\n\r\n /** Tipo do gráfico exibido no card */\r\n type?: DashboardChartType;\r\n\r\n /** Título exibido no topo do card */\r\n title?: string;\r\n\r\n /** Ordem de exibição no dashboard */\r\n order?: number;\r\n\r\n /** Quantidade de colunas ocupadas no grid */\r\n cols: number;\r\n\r\n /** Quantidade de linhas ocupadas no grid */\r\n rows?: number;\r\n\r\n /** Cor da fonte do card */\r\n fontColor?: string;\r\n\r\n /** Cor de fundo do card */\r\n backgroundColor?: string;\r\n\r\n /** Lista de métricas/colunas que serão exibidas */\r\n keys?: Item[];\r\n\r\n /** Define se o gráfico será empilhado */\r\n stacked?: boolean;\r\n\r\n /** Exibe valores em porcentagem */\r\n showPorcent?: boolean;\r\n\r\n /** Exibe rótulos dentro do gráfico */\r\n showLabel?: boolean;\r\n\r\n /** Orientação do eixo principal (horizontal ou vertical) */\r\n axisOrientation?: AxisOrientation;\r\n\r\n /** Configuração personalizada do eixo X */\r\n axisX?: Axis;\r\n\r\n /** Configuração personalizada do eixo Y */\r\n axisY?: Axis;\r\n\r\n /** Dados que alimentam o gráfico */\r\n data?: any[];\r\n\r\n /** Conteúdo HTML personalizado (caso não seja gráfico) */\r\n innerHtml?: any;\r\n}\r\n\r\n\r\nexport interface Item {\r\n\r\n /** Nome da propriedade no objeto de dados (ex: 'totalVendas') */\r\n key: string;\r\n\r\n /** Nome exibido na legenda do gráfico */\r\n label: string;\r\n\r\n /** Chave usada para eixo X (usado em bubble chart) */\r\n keyX?: string;\r\n\r\n /** Chave usada para eixo Y (usado em bubble chart)*/\r\n keyY?: string;\r\n\r\n /** Chave usada para raio (usado em bubble chart) */\r\n keyR?: string;\r\n\r\n /** Cor da série no gráfico (hex, rgb, rgba, etc.) */\r\n color?: string;\r\n\r\n /** Identificador de empilhamento (usado quando stacked = true) */\r\n stackKey?: string;\r\n\r\n /** Tipo específico da série (ex: 'line' dentro de um gráfico bar misto) */\r\n type?: SupportedChartType;\r\n\r\n /** Define em qual eixo a série será renderizada (ex: left ou right) */\r\n axisType?: AxisDimension;\r\n\r\n /** Define se a área abaixo da linha será preenchida (line chart) */\r\n fill?: boolean;\r\n}\r\n\r\nexport interface Axis {\r\n\r\n /** Nome da propriedade usada como eixo */\r\n key: string;\r\n\r\n /** Título exibido no eixo */\r\n label: string;\r\n\r\n /** Cor aplicada ao eixo (ticks e label) */\r\n keyColor?: string;\r\n}\r\n\r\nexport interface Option {\r\n\r\n /** Identificador único da opção */\r\n id?: number;\r\n\r\n /** Título exibido no card/opção */\r\n title: string;\r\n\r\n /** Ordem de exibição */\r\n order?: number;\r\n\r\n /** Quantidade de colunas ocupadas no grid */\r\n cols: number;\r\n\r\n /** Quantidade de linhas ocupadas no grid */\r\n rows: number;\r\n}\r\n\r\nexport interface ModalItem {\r\n id: string|number;\r\n label: string;\r\n type: ModalTypes;\r\n value?: number;\r\n items?: ModalItem[];\r\n}\r\nexport interface SelectRow {\r\n levels: ModalItem[][];\r\n selectedPath: ModalItem[];\r\n finalValue: string[];\r\n finalFontColor: string;\r\n finalBackgroudColor: string;\r\n}\r\n\r\nexport interface Select {\r\n id: string|number;\r\n label: string;\r\n}\r\n\r\nexport interface ChartOption{\r\n id:DashboardChartType,\r\n title:string\r\n}\r\nexport interface ChatConfig<T extends ChartType = ChartType> {\r\n type: T;\r\n data: ChartData<T>;\r\n options: ChartOptions<T>;\r\n}\r\n\r\n\r\nexport type DashboardChartType =\r\n typeof DASHBOARD_CHART_TYPES[number];\r\n\r\nexport const DASHBOARD_CHART_TYPES = [\r\n 'bar', \r\n 'stackedBar', \r\n 'verticalBar', \r\n 'verticalStackedBar',\r\n 'verticalProgressBar',\r\n 'progressBar',\r\n 'lineBar', \r\n 'lineBarStacked',\r\n 'line', \r\n 'radar', \r\n 'curveLine',\r\n 'pie',\r\n 'multiPie',\r\n 'doughnut',\r\n 'halfDoughnut',\r\n 'area',\r\n 'bubble',\r\n 'polarArea',\r\n 'simpleCard',\r\n 'table',\r\n 'html',\r\n] as const;\r\n\r\nexport type DashboardBarLineType =\r\n typeof DASHBOARD_BAR_LINE_TYPES[number];\r\n \r\nexport const DASHBOARD_BAR_LINE_TYPES =[\r\n 'bar', 'stackedBar', 'verticalBar', 'verticalStackedBar','progressBar','verticalProgressBar',\r\n 'lineBar','lineBarStacked', 'line', 'radar', 'curveLine'\r\n]\r\nexport type SupportedChartType =\r\n typeof SUPPORTED_CHART_TYPES[number];\r\n\r\nexport const SUPPORTED_CHART_TYPES = [\r\n 'bar',\r\n 'line',\r\n 'radar'\r\n] as const;\r\n\r\n\r\nexport type AxisOrientation =\r\n typeof AXIS_ORIENTATION[number];\r\n\r\nexport const AXIS_ORIENTATION = [\r\n 'x',\r\n 'y',\r\n] as const;\r\n\r\n\r\nexport type AxisDimension =\r\n typeof AXIS_DIMENSION[number];\r\n\r\nexport const AXIS_DIMENSION = [\r\n 'x',\r\n 'y',\r\n 'r',\r\n] as const;\r\n\r\n\r\nexport type ModalTypes =\r\n typeof MODAL_TYPES[number];\r\n\r\nexport const MODAL_TYPES = [\r\n 'group',\r\n 'option'\r\n] as const;\r\n","export function randomColor(): string {\r\n const r = Math.floor(Math.random() * 255);\r\n const g = Math.floor(Math.random() * 255);\r\n const b = Math.floor(Math.random() * 255);\r\n\r\n return `rgba(${r}, ${g}, ${b}, 0.6)`;\r\n}\r\nexport function getOpacityColors(listColors:string[], index:number ): string[] {\r\n const opacity = Math.max(0.1, 1 - index * 0.30);\r\n return listColors.map(color => replaceAlpha(color, opacity));\r\n}\r\n\r\nfunction replaceAlpha(rgba: string, newAlpha: number): string {\r\n const match = rgba.match(\r\n /rgba?\\(\\s*(\\d+)[,\\s]+(\\d+)[,\\s]+(\\d+)(?:[,\\s]+([\\d.]+))?\\s*\\)/\r\n );\r\n\r\n if (!match) return rgba; \r\n\r\n const r = match[1];\r\n const g = match[2];\r\n const b = match[3];\r\n\r\n return `rgba(${r}, ${g}, ${b}, ${newAlpha})`;\r\n}\r\n\r\nexport function getContrastColor(color: string): string {\r\n const rgb = getRGB(color);\r\n\r\n if (!rgb) return '#000';\r\n\r\n const { r, g, b } = rgb;\r\n\r\n const luminance = (0.299 * r + 0.587 * g + 0.114 * b);\r\n\r\n return luminance > 186 ? '#000' : '#fff';\r\n}\r\n\r\nfunction getRGB(color: string): { r: number; g: number; b: number } | null {\r\n if (color.startsWith('#')) {\r\n const hex = color.replace('#', '');\r\n const bigint = parseInt(hex.length === 3\r\n ? hex.split('').map(c => c + c).join('')\r\n : hex, 16);\r\n\r\n return {\r\n r: (bigint >> 16) & 255,\r\n g: (bigint >> 8) & 255,\r\n b: bigint & 255\r\n };\r\n }\r\n\r\n const match = color.match(/\\d+/g);\r\n if (match) {\r\n return {\r\n r: Number(match[0]),\r\n g: Number(match[1]),\r\n b: Number(match[2])\r\n };\r\n }\r\n\r\n return null;\r\n}","import { Component, ElementRef, HostListener, Input, OnInit, SimpleChanges, ViewChild} from '@angular/core';\r\nimport { Chart, ChartConfiguration, ChartData, ChartDataset, ChartOptions, ChartType } from 'chart.js';\r\nimport { Card, ChatConfig, DashboardBarLineType } from '../../../models/dashboard.model';\r\nimport { BaseChartDirective } from 'ng2-charts';\r\nimport { getContrastColor, randomColor } from '../../../services/generic';\r\nimport { Context } from 'chartjs-plugin-datalabels';\r\n@Component({\r\n selector: 'lib-bar-line',\r\n templateUrl: './bar-line.component.html',\r\n styleUrls: ['./bar-line.component.scss']\r\n})\r\nexport class BarLineComponent implements OnInit {\r\n\r\n @Input() type:DashboardBarLineType = 'bar';\r\n @Input() isDark:boolean = false;\r\n @Input() card:Card = {} as Card;\r\n\r\n description:string = '';\r\n loading: boolean = true;\r\n canvasHeight:number = 0;\r\n canvasWidth:number = 0;\r\n\r\n @ViewChild('container') container!: ElementRef<HTMLDivElement>;\r\n @ViewChild(BaseChartDirective) chart?: BaseChartDirective;\r\n \r\n private resizeObserver!: ResizeObserver;\r\n\r\n config: ChartConfiguration<'bar' | 'line' | 'radar'> = {\r\n type: 'bar',\r\n data: {\r\n labels: [],\r\n datasets: []\r\n },\r\n options:{} as ChartOptions<'bar' | 'line' | 'radar'>\r\n };\r\n\r\n options:ChartOptions<'bar' | 'line' | 'radar'> = {\r\n responsive: true,\r\n maintainAspectRatio: false,\r\n plugins: {\r\n legend: {\r\n position: 'top',\r\n color: this.isDark ? '#FFF' : '#333'\r\n },\r\n datalabels: {\r\n display: false\r\n }\r\n }\r\n } as ChartOptions<'bar' | 'line' | 'radar'>;\r\n\r\n constructor() { }\r\n\r\n ngOnInit() {\r\n if(['stackedBar','verticalBar','verticalStackedBar','progressBar','verticalProgressBar'].includes(this.type) ){\r\n this.config.type = 'bar';\r\n }\r\n else if(['line', 'curveLine','lineBar','lineBarStacked'].includes(this.type)){\r\n this.config.type = 'line';\r\n }\r\n else if(['radar'].includes(this.type)){\r\n this.config.type = 'radar';\r\n }\r\n\r\n this.options!.indexAxis = ['verticalBar','verticalStackedBar','verticalProgressBar'].includes(this.type)? 'y':'x';\r\n \r\n if(['stackedBar','verticalStackedBar','lineBarStacked', 'progressBar','verticalProgressBar'].includes(this.type) ){\r\n this.options.scales = { x: { stacked: true }, y: { stacked: true } };\r\n }\r\n if(['progressBar','verticalProgressBar'].includes(this.type) || this.card.showPorcent){\r\n this.options!.plugins!.tooltip = {\r\n callbacks: {\r\n label: function(context) {\r\n return context.raw + '%';\r\n }\r\n }\r\n }\r\n }\r\n if(this.card.showLabel){\r\n this.options!.plugins!.datalabels = {\r\n anchor: 'center',\r\n align: 'center',\r\n formatter: (value: number) => this.card.showPorcent? value + '%': value,\r\n color: (context: Context) => {\r\n if(this.card.fontColor) return this.card.fontColor\r\n const bg = context.dataset.backgroundColor as string;\r\n return getContrastColor(bg);\r\n },\r\n font: {\r\n weight: 'bold'\r\n }\r\n }\r\n }\r\n this.config.options = this.options;\r\n this.config.data.datasets = this.formatDataset();\r\n this.description = this.describeBar(this.config)\r\n \r\n }\r\n\r\n ngAfterViewInit() {\r\n this.resizeObserver = new ResizeObserver(() => {\r\n if (this.chart) {\r\n setTimeout(() => {\r\n this.triggerResize();\r\n }, 0);\r\n }\r\n });\r\n\r\n this.resizeObserver.observe(this.container.nativeElement);\r\n\r\n setTimeout(() => {\r\n this.chart?.chart?.resize();\r\n }, 50);\r\n\r\n this.loading = false;\r\n }\r\n\r\n ngOnDestroy() {\r\n if (this.resizeObserver) {\r\n this.resizeObserver.disconnect();\r\n }\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n if (changes['isDark']) {\r\n this.applyTheme();\r\n }\r\n }\r\n\r\n private applyTheme(): void {\r\n if (this.chart) {\r\n this.chart.update();\r\n }\r\n }\r\n\r\n private triggerResize() {\r\n if (this.chart?.chart) {\r\n this.chart.chart.resize();\r\n this.chart.update();\r\n }\r\n }\r\n\r\n formatDataset(): ChartDataset<'bar' | 'line' | 'radar'>[] {\r\n if (!this.card?.data?.length ) return [];\r\n if (!this.card.axisX?.key) return [];\r\n const labels = this.card.data.map(row => row[this.card.axisX?.key ?? '']);\r\n this.config.data.labels = labels;\r\n var sumData: number[] = []\r\n const datasets: ChartDataset<'bar' | 'line' | 'radar'>[] = this.card.keys?.map(item => {\r\n const data = this.card.data?.map(row => {\r\n const value = row[item.key];\r\n return typeof value === 'string'\r\n ? Number(value)\r\n : value ?? 0;\r\n }) ?? [];\r\n if(['progressBar','verticalProgressBar'].includes(this.type)){\r\n sumData.push(...data);\r\n }\r\n if(!item.color){\r\n item.color = randomColor();\r\n }\r\n var result = {\r\n label: item.label,\r\n data,\r\n backgroundColor: item.color,\r\n borderColor: item.color,\r\n fill: item.fill ?? false,\r\n } as ChartDataset<'bar' | 'line' | 'radar'>;\r\n if( this.card.stacked && item.stackKey){\r\n result['stack'] = item.stackKey;\r\n }\r\n if(item.type){\r\n result['type'] = item.type;\r\n }\r\n if(this.type == 'curveLine'){\r\n result = {\r\n ...result,\r\n tension: 0.4\r\n } as ChartDataset<'line'>\r\n }\r\n return result;\r\n }) ?? [];\r\n if (['progressBar','verticalProgressBar'].includes(this.type)) {\r\n const remaining = sumData.map(s => 100 - s);\r\n datasets.push({\r\n label: '',\r\n data: remaining,\r\n backgroundColor: '#e0e0e05e',\r\n borderWidth: 0\r\n } as ChartDataset<'bar'>);\r\n }\r\n return datasets;\r\n }\r\n \r\n describeBar(config: any): string {\r\n const { data } = config;\r\n\r\n const labels = data?.labels || [];\r\n const datasets = data?.datasets || [];\r\n\r\n const axisLabel = this.card?.axisX?.label || 'categoria';\r\n\r\n const barDatasets = datasets.filter((ds: any) => !ds.type || ds.type === 'bar');\r\n const lineDatasets = datasets.filter((ds: any) => ds.type === 'line');\r\n\r\n const seriesNames = barDatasets.map((ds: any) => ds.label || 'Série');\r\n const lineNames = lineDatasets.map((ds: any) => ds.label || 'Linha');\r\n let type = 'barras';\r\n if (['curveLine','lineBar','lineBarStacked'].includes(this.type)) {\r\n type = 'linhas';\r\n }\r\n\r\n let orientation = '';\r\n if (['verticalBar', 'verticalStackedBar', 'verticalProgressBar'].includes(this.type)) {\r\n orientation = 'vertical ';\r\n }\r\n let format = 'agrupadas';\r\n if (['stackedBar', 'verticalStackedBar', 'lineBarStacked'].includes(this.type)) {\r\n format = 'empilhadas';\r\n }\r\n\r\n let extra = '';\r\n if (['progressBar', 'verticalProgressBar'].includes(this.type)) {\r\n extra = ' demonstrando as porcentagens';\r\n }\r\n\r\n let description =\r\n this.card.title +\r\n ` - Gráfico de ${type} ${orientation}${format} por ${axisLabel}${extra}, comparando ${seriesNames.join(' e ')}`;\r\n\r\n if (lineDatasets.length) {\r\n description += `, com linha representando ${lineNames.join(' e ')}`;\r\n }\r\n\r\n description += '. ';\r\n\r\n labels.forEach((label: string, index: number) => {\r\n const barValues = barDatasets.map((ds: any) => {\r\n const value = ds.data?.[index] ?? 'sem valor';\r\n return `${ds.label}: ${value}`;\r\n });\r\n\r\n let lineValueText = '';\r\n\r\n if (lineDatasets.length) {\r\n const lineValues = lineDatasets.map((ds: any) => {\r\n const value = ds.data?.[index] ?? 'sem valor';\r\n return `${ds.label}: ${value}`;\r\n });\r\n\r\n lineValueText = `. Linha: ${lineValues.join(', ')}`;\r\n }\r\n\r\n description += `\\nEm ${label}: ${barValues.join(', ')}${lineValueText}.`;\r\n });\r\n\r\n return description.trim();\r\n }\r\n\r\n describeStackedBar(labels: any[], datasets: any[]): string {\r\n return this.card.title + ` - Gráfico de barras empilhadas com ${datasets.length} séries: ` +\r\n datasets.map(ds => ds.label).join(', ');\r\n }\r\n\r\n @HostListener('window:resize')\r\n onresize() {\r\n this.triggerResize();\r\n }\r\n}\r\n\r\n","\r\n<div class=\"chart-div\" #container>\r\n <canvas\r\n #chart\r\n baseChart\r\n class=\"chart chart-bar chart-item\"\r\n [data]=\"config.data\"\r\n [options]=\"config.options\"\r\n [type]=\"config.type\"\r\n [title]=\"description\"\r\n >\r\n </canvas>\r\n</div>","import { Component, ElementRef, HostListener, Input, OnInit, ViewChild} from '@angular/core';\r\nimport { Chart, ChartConfiguration, ChartData, ChartDataset, ChartOptions, ChartType } from 'chart.js';\r\nimport { Card, ChatConfig } from '../../../models/dashboard.model';\r\nimport { BaseChartDirective } from 'ng2-charts';\r\nimport { randomColor } from '../../../services/generic';\r\n@Component({\r\n selector: 'lib-bubble',\r\n templateUrl: './bubble.component.html',\r\n styleUrls: ['./bubble.component.scss']\r\n})\r\nexport class BubbleComponent implements OnInit {\r\n\r\n @Input() type:'bubble' = 'bubble';\r\n @Input() isDark:boolean = false;\r\n @Input() card:Card = {} as Card;\r\n\r\n loading: boolean = true;\r\n canvasHeight:number = 0;\r\n canvasWidth:number = 0;\r\n\r\n @ViewChild('container') container!: ElementRef<HTMLDivElement>;\r\n @ViewChild(BaseChartDirective) chart?: BaseChartDirective;\r\n\r\n private resizeObserver!: ResizeObserver;\r\n\r\n config: ChartConfiguration<'bubble'> = {\r\n type: this.type,\r\n data: {\r\n labels: [],\r\n datasets: []\r\n },\r\n options:{} as ChartOptions<'bubble'>\r\n };\r\n\r\n options:ChartOptions<'bubble'> = {\r\n responsive: true,\r\n maintainAspectRatio: false,\r\n plugins: {\r\n legend: {\r\n position: 'top',\r\n color: this.isDark ? '#FFF' : '#333',\r\n },\r\n datalabels: {\r\n display: false\r\n }\r\n }\r\n } as ChartOptions<'bubble'>;\r\n\r\n constructor() { }\r\n\r\n ngOnInit() {\r\n this.options!.indexAxis = this.card.axisOrientation ?? 'x';\r\n\r\n if(this.card.stacked){\r\n this.options.scales = { x: { stacked: true }, y: { stacked: true } };\r\n }\r\n\r\n if(this.card.showPorcent){\r\n this.options!.plugins!.tooltip = {\r\n callbacks: {\r\n label: function(context) {\r\n return context.raw + '%';\r\n }\r\n }\r\n }\r\n }\r\n\r\n if(this.card.showLabel){\r\n this.options!.plugins!.datalabels = {\r\n anchor: 'center',\r\n align: 'center',\r\n formatter: (value: number) => this.card.showPorcent? value + '%': value,\r\n color: '#fff',\r\n font: {\r\n weight: 'bold'\r\n }\r\n }\r\n }\r\n\r\n this.config.type = this.type;\r\n this.config.options = this.options;\r\n this.config.data.datasets = this.formatDataset();\r\n }\r\n\r\n ngAfterViewInit() {\r\n this.resizeObserver = new ResizeObserver(() => {\r\n if (this.chart) {\r\n setTimeout(() => {\r\n this.triggerResize();\r\n }, 0);\r\n }\r\n });\r\n\r\n this.resizeObserver.observe(this.container.nativeElement);\r\n\r\n setTimeout(() => {\r\n this.chart?.chart?.resize();\r\n }, 50);\r\n\r\n this.loading = false;\r\n }\r\n\r\n ngOnDestroy() {\r\n if (this.resizeObserver) {\r\n this.resizeObserver.disconnect();\r\n }\r\n }\r\n \r\n private triggerResize() {\r\n if (this.chart?.chart) {\r\n this.chart.chart.resize();\r\n this.chart.update();\r\n }\r\n }\r\n\r\n formatDataset(): ChartDataset<'bubble'>[] {\r\n if (!this.card?.data?.length ) return [];\r\n if (!this.card.axisX?.key) return [];\r\n\r\n const labels = this.card.data.map(row => row[this.card.axisX?.key ?? '']);\r\n this.config.data.labels = labels;\r\n\r\n const datasets: ChartDataset<'bubble'>[] = this.card.keys?.map(item => {\r\n const data = this.card.data?.map(row => {\r\n const value = {\r\n x: row[item.keyX ?? ''],\r\n y: row[item.keyY ?? ''],\r\n r: row[item.keyR ?? '']\r\n };\r\n return value;\r\n }) ?? [];\r\n\r\n if(!item.color){\r\n item.color = randomColor();\r\n }\r\n\r\n var result = {\r\n label: item.label,\r\n data,\r\n backgroundColor: item.color,\r\n fill: item.fill ?? false,\r\n } as ChartDataset<'bubble'>;\r\n \r\n if( this.card.stacked && item.stackKey){\r\n result['stack'] = item.stackKey;\r\n }\r\n return result;\r\n }) ?? [];\r\n return datasets;\r\n }\r\n\r\n @HostListener('window:resize')\r\n onresize() {\r\n this.triggerResize();\r\n }\r\n}\r\n\r\n","<div class=\"chart-div\" #container>\r\n <canvas\r\n #chart\r\n baseChart\r\n class=\"chart chart-bar chart-item\"\r\n [data]=\"config.data\"\r\n [options]=\"config.options\"\r\n [type]=\"config.type\"\r\n >\r\n </canvas>\r\n</div>","import { Component, ElementRef, HostListener, Input, OnInit, ViewChild} from '@angular/core';\r\nimport { Chart, ChartConfiguration, ChartData, ChartDataset, ChartOptions, ChartType } from 'chart.js';\r\nimport { Card, ChatConfig } from '../../../models/dashboard.model';\r\nimport { BaseChartDirective } from 'ng2-charts';\r\nimport { getOpacityColors, randomColor } from '../../../services/generic';\r\n@Component({\r\n selector: 'lib-pie',\r\n templateUrl: './pie.component.html',\r\n styleUrls: ['./pie.component.scss']\r\n})\r\nexport class PieComponent implements OnInit {\r\n\r\n @Input() type:'pie' | 'doughnut' | 'polarArea' | 'halfDoughnut' | 'multiPie' = 'pie';\r\n @Input() isDark:boolean = false;\r\n @Input() card:Card = {} as Card;\r\n\r\n loading: boolean = true;\r\n canvasHeight:number = 0;\r\n canvasWidth:number = 0;\r\n\r\n @ViewChild('container') container!: ElementRef<HTMLDivElement>;\r\n @ViewChild(BaseChartDirective) chart?: BaseChartDirective;\r\n\r\n private resizeObserver!: ResizeObserver;\r\n\r\n config: ChartConfiguration<'pie' | 'doughnut' | 'polarArea'> = {\r\n type: 'pie',\r\n data: {\r\n labels: [],\r\n datasets: []\r\n },\r\n options:{} as ChartOptions<'pie' | 'doughnut' | 'polarArea'>\r\n };\r\n\r\n options:ChartOptions<'pie' | 'doughnut' | 'polarArea'> = {\r\n responsive: true,\r\n maintainAspectRatio: false,\r\n plugins: {\r\n legend: {\r\n position: 'top',\r\n color: this.isDark ? '#FFF' : '#333',\r\n },\r\n datalabels: {\r\n display: false\r\n }\r\n }\r\n } as ChartOptions<'pie' | 'doughnut' | 'polarArea'>;\r\n\r\n constructor() { }\r\n\r\n ngOnInit() {\r\n this.config.type = this.type == 'halfDoughnut'? 'doughnut': (this.type == 'multiPie'? 'pie' : this.type);\r\n this.formatOption();\r\n this.config.options = this.options;\r\n this.config.data.datasets = this.formatDataset();\r\n }\r\n\r\n ngAfterViewInit() {\r\n this.resizeObserver = new ResizeObserver(() => {\r\n if (this.chart) {\r\n setTimeout(() => {\r\n this.triggerResize();\r\n }, 0);\r\n }\r\n });\r\n\r\n this.resizeObserver.observe(this.container.nativeElement);\r\n\r\n setTimeout(() => {\r\n this.chart?.chart?.resize();\r\n }, 50);\r\n\r\n this.loading = false;\r\n }\r\n\r\n ngOnDestroy() {\r\n if (this.resizeObserver) {\r\n this.resizeObserver.disconnect();\r\n }\r\n }\r\n \r\n private triggerResize() {\r\n if (this.chart?.chart) {\r\n this.chart.chart.resize();\r\n this.chart.update();\r\n }\r\n }\r\n\r\n formatOption(){\r\n if(this.type == 'halfDoughnut'){\r\n this.options = {\r\n ...this.options,\r\n rotation: -90,\r\n circumference: 180\r\n } as ChartOptions<'doughnut'>\r\n }\r\n\r\n if(this.card.showPorcent){\r\n this.options!.plugins!.tooltip = {\r\n callbacks: {\r\n label: function(context) {\r\n return context.raw + '%';\r\n }\r\n }\r\n }\r\n }\r\n\r\n if(this.card.showLabel){\r\n this.options!.plugins!.datalabels = {\r\n anchor: 'center',\r\n align: 'center',\r\n formatter: (value: number) => this.card.showPorcent? value + '%': value,\r\n color: '#fff',\r\n font: {\r\n weight: 'bold'\r\n }\r\n }\r\n }\r\n \r\n if(this.type == 'multiPie'){\r\n this.options!.plugins!.tooltip = {\r\n callbacks: {\r\n title: (context) => {\r\n const datasetLabel = context[0].dataset.label;\r\n const sliceLabel = context[0].label;\r\n return `${datasetLabel} - ${sliceLabel}`;\r\n },\r\n label: (context) => {\r\n return context.raw + '%';\r\n }\r\n }\r\n };\r\n }\r\n }\r\n\r\n formatDataset(): ChartDataset<'pie' | 'doughnut' | 'polarArea'>[] {\r\n if (!this.card?.data?.length ) return [];\r\n if (!this.card.axisX?.key) return [];\r\n\r\n const labels = this.card.data.map(row => row[this.card.axisX?.key ?? '']);\r\n const colors = this.card.data.map(row => row[this.card.axisX?.keyColor ?? ''] ?? randomColor());\r\n this.config.data.labels = labels;\r\n \r\n const datasets: ChartDataset<'pie' | 'doughnut' | 'polarArea'>[] = this.card.keys?.map((item, index) => {\r\n const data = this.card.data?.map(row => {\r\n const value = row[item.key];\r\n return typeof value === 'string'\r\n ? Number(value)\r\n : value ?? 0;\r\n }) ?? [];\r\n\r\n var result = {\r\n label: item.label,\r\n data,\r\n backgroundColor: getOpacityColors(colors, index),\r\n borderColor: 'white',\r\n fill: item.fill ?? false,\r\n } as ChartDataset<'pie' | 'doughnut' | 'polarArea'>;\r\n\r\n return result;\r\n }) ?? [];\r\n\r\n return datasets;\r\n }\r\n\r\n @HostListener('window:resize')\r\n onresize() {\r\n this.triggerResize();\r\n }\r\n}\r\n\r\n","<div class=\"chart-div\" #container>\r\n <canvas\r\n #chart\r\n baseChart\r\n class=\"chart chart-bar chart-item\"\r\n [data]=\"config.data\"\r\n [options]=\"config.options\"\r\n [type]=\"config.type\"\r\n >\r\n </canvas>\r\n</div>","import { Component, Input, OnInit } from '@angular/core';\r\nimport { Card, Item } from '../../../models/dashboard.model';\r\nimport { randomColor } from '../../../services/generic';\r\n\r\n@Component({\r\n selector: 'lib-simple-card',\r\n templateUrl: './simple-card.component.html',\r\n styleUrls: ['./simple-card.component.scss']\r\n})\r\nexport class SimpleCardComponent implements OnInit {\r\n\r\n @Input() type:'simpleCard' = 'simpleCard';\r\n @Input() isDark:boolean = false;\r\n @Input() card:Card = {} as Card;\r\n loading: boolean = true;\r\n currentData:Record<string,null> = {};\r\n currentKey:Item = {} as Item;\r\n\r\n constructor() { }\r\n\r\n ngOnInit() {\r\n this.currentData = this.card.data?.[0] ?? {};\r\n this.currentKey = this.card.keys?.[0] ?? {} as Item;\r\n this.currentKey.color = this.currentKey.color ?? randomColor()\r\n }\r\n\r\n}\r\n","<div class=\"chart-div\" #container>\r\n <b class=\"chart-number\">{{currentData[currentKey.key]}}</b>\r\n <b class=\"chart-label\">{{currentKey.label}}</b>\r\n</div>","import { Component, Input, OnInit } from '@angular/core';\r\nimport { Card } from '../../../models/dashboard.model';\r\n\r\n@Component({\r\n selector: 'lib-table',\r\n templateUrl: './table.component.html',\r\n styleUrls: ['./table.component.scss']\r\n})\r\nexport class TableComponent implements OnInit {\r\n\r\n @Input() type:'table' = 'table';\r\n @Input() isDark:boolean = false;\r\n @Input() card:Card = {} as Card;\r\n loading: boolean = true;\r\n\r\n constructor() { }\r\n\r\n ngOnInit() {\r\n }\r\n\r\n}\r\n","<div class=\"chart-div pt-2\" #container>\r\n <table class=\"table table-striped\" [class.table-dark]=\"isDark\">\r\n <thead>\r\n <tr>\r\n <th *ngFor=\"let key of card.keys\">{{key.label}}</th>\r\n </tr>\r\n </thead>\r\n <tbody class=\"table-group-divider\">\r\n <tr *ngFor=\"let data of card.data\">\r\n <td *ngFor=\"let key of card.keys\">{{data[key.key]}}</td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n</div>","import { Component, Input, OnInit } from '@angular/core';\r\nimport { Card, DASHBOARD_BAR_LINE_TYPES, DashboardBarLineType, } from '../../models/dashboard.model';\r\nimport { DomSanitizer, SafeHtml } from '@angular/platform-browser';\r\n\r\n@Component({\r\n selector: 'lib-card',\r\n templateUrl: './card.component.html',\r\n styleUrls: ['./card.component.scss']\r\n})\r\nexport class CardComponent implements OnInit {\r\n\r\n barItems: DashboardBarLineType[] = DASHBOARD_BAR_LINE_TYPES;\r\n @Input() data:Card = {} as Card;\r\n @Input() isDark:boolean = false;\r\n safeHtml!:SafeHtml;\r\n\r\n constructor(\r\n private sanitizer: DomSanitizer\r\n ) { }\r\n\r\n ngOnInit() {\r\n if(this.data.innerHtml){\r\n this.safeHtml = this.sanitizer.bypassSecurityTrustHtml(this.data.innerHtml);\r\n }\r\n }\r\n\r\n includeBarType(data:Card):boolean{\r\n return data.type? this.barItems.includes(data.type): false;\r\n }\r\n\r\n get barLineType(): DashboardBarLineType {\r\n if (this.includeBarType(this.data)) {\r\n return this.data.type ?? 'bar';\r\n }\r\n return 'bar';\r\n }\r\n \r\n get pieType(): 'pie' | 'doughnut' | 'polarArea' | 'halfDoughnut' | 'multiPie' {\r\n if (this.data?.type === 'pie' || this.data?.type === 'doughnut' || \r\n this.data?.type === 'polarArea' || this.data?.type === 'halfDoughnut' || \r\n this.data?.type === 'multiPie') {\r\n return this.data.type;\r\n }\r\n return 'pie';\r\n }\r\n\r\n get bubbleType(): 'bubble'{\r\n if (this.data?.type === 'bubble') {\r\n return this.data.type;\r\n }\r\n return 'bubble';\r\n }\r\n\r\n get cardType(): 'simpleCard'{\r\n if (this.data?.type === 'simpleCard') {\r\n return this.data.type;\r\n }\r\n return 'simpleCard';\r\n }\r\n\r\n get tableType(): 'table'{\r\n if (this.data?.type === 'table') {\r\n return this.data.type;\r\n }\r\n return 'table';\r\n }\r\n}\r\n","<section class=\"card-section\">\r\n {{data.title}}\r\n <div class=\"card-chart\">\r\n <lib-bar-line *ngIf=\"this.includeBarType(this.data)\" \r\n [card]=\"data\" [type]=\"barLineType\" [isDark]=\"isDark\"></lib-bar-line>\r\n\r\n <lib-pie *ngIf=\"['pie', 'doughnut', 'polarArea', 'halfDoughnut', 'multiPie'].includes(data.type ?? '')\" \r\n [card]=\"data\" [type]=\"pieType\" [isDark]=\"isDark\"></lib-pie>\r\n\r\n <lib-bubble *ngIf=\"['bubble'].includes(data.type ?? '')\" \r\n [card]=\"data\" [type]=\"bubbleType\" [isDark]=\"isDark\"></lib-bubble>\r\n\r\n <lib-simple-card *ngIf=\"['simpleCard'].includes(data.type ?? '')\" \r\n [card]=\"data\" [type]=\"cardType\" [isDark]=\"isDark\"></lib-simple-card>\r\n\r\n <lib-table *ngIf=\"['table'].includes(data.type ?? '')\" \r\n [card]=\"data\" [type]=\"tableType\" [isDark]=\"isDark\"></lib-table>\r\n\r\n <div class=\"card-html\" *ngIf=\"data.type == 'html'\" [innerHtml]=\"safeHtml\">\r\n </div>\r\n </div>\r\n</section>","import { Component, EventEmitter, Input, OnInit, Output, TemplateRef, ViewChild } from '@angular/core';\r\nimport { FormControl, FormGroup, Validators } from '@angular/forms';\r\nimport { BsModalRef, BsModalService } from 'ngx-bootstrap/modal';\r\nimport { ModalItem, Select, SelectRow } from '../../models/dashboard.model';\r\n\r\n@Component({\r\n selector: 'lib-modal-edit',\r\n templateUrl: './modal-edit.component.html',\r\n styleUrls: ['./modal-edit.component.scss']\r\n})\r\nexport class ModalEditComponent implements OnInit {\r\n\r\n modalRef?: BsModalRef;\r\n rows: SelectRow[] = [];\r\n rowsType: string = '';\r\n simpleType: Select = {id:'simple', label: 'Quantidade'};\r\n types: Select[] = [];\r\n \r\n @Input() data: ModalItem[] = [];\r\n @Input() groupType:Select[] = [];\r\n\t@Output() closeModal: EventEmitter<void> = new EventEmitter<void>();\r\n\t@Output() saveData: EventEmitter<any> = new EventEmitter<SelectRow[]>();\r\n \r\n constructor(\r\n private modalService: BsModalService\r\n ) { }\r\n\r\n ngOnInit() {\r\n this.types = [this.simpleType, ...this.groupType];\r\n this.rowsType = 'simple';\r\n if (this.rows?.length) {\r\n this.rows = this.rows.map(r =>\r\n this.buildRowFromFinalValue(r.finalValue)\r\n );\r\n } else {\r\n this.addRow();\r\n }\r\n }\r\n\r\n addRow():void {\r\n this.rows.push({\r\n levels: [this.addTodosOption(this.data)],\r\n selectedPath: [],\r\n finalValue: [],\r\n finalFontColor: '',\r\n finalBackgroudColor: ''\r\n });\r\n }\r\n\r\n removeRow(index: number):void {\r\n this.rows.splice(index, 1);\r\n }\r\n\r\n cloneRow(index: number): void {\r\n const original = this.rows[index];\r\n\r\n const cloned = this.buildRowFromFinalValue(original.finalValue);\r\n\r\n cloned.finalFontColor = original.finalFontColor;\r\n cloned.finalBackgroudColor = original.finalBackgroudColor;\r\n\r\n this.rows.push(cloned);\r\n }\r\n\r\n onSelect(item: ModalItem, rowIndex: number, levelIndex: number): void {\r\n const row = this.rows[rowIndex];\r\n\r\n row.levels = row.levels.slice(0, levelIndex + 1);\r\n row.selectedPath = row.selectedPath.slice(0, levelIndex);\r\n\r\n row.selectedPath[levelIndex] = item;\r\n\r\n if (item.type === 'group' && item.items?.length) {\r\n row.levels.push(this.addTodosOption(item.items));\r\n }\r\n\r\n this.updateFinalValue(row);\r\n }\r\n\r\n updateFinalValue(row: SelectRow):void {\r\n row.finalValue = row.selectedPath.map(i => String(i.id));\r\n }\r\n \r\n onFontColorChange(event: Event, rowIndex: number):void {\r\n const row = this.rows[rowIndex];\r\n const color = (event.target as HTMLInputElement).value;\r\n row.finalFontColor = color;\r\n }\r\n \r\n onBackgroundChange(event: Event, rowIndex: number):void {\r\n var row = this.rows[rowIndex];\r\n const color = (event.target as HTMLInputElement).value;\r\n row.finalBackgroudColor = color;\r\n }\r\n\r\n onCloseModal():void{\r\n this.closeModal.emit();\r\n }\r\n \r\n onSaveData():void{\r\n const newData = this.rows.map(r => ({\r\n finalValue: r.finalValue,\r\n finalBackgroudColor: r.finalBackgroudColor,\r\n finalFontColor: r.finalFontColor,\r\n }));\r\n this.saveData.emit({rowsType: this.rowsType, rows: this.rows});\r\n }\r\n\r\n isFlatLevel(level:ModalItem[]): boolean {\r\n return level.every(item => item.type !== 'group') ?? false;\r\n }\r\n\r\n buildRowFromFinalValue(finalValue: string[]): SelectRow {\r\n\r\n const row: SelectRow = {\r\n levels: [this.addTodosOption(this.data)],\r\n selectedPath: [],\r\n finalValue,\r\n finalFontColor: '',\r\n finalBackgroudColor: ''\r\n };\r\n\r\n let currentLevel = this.data;\r\n\r\n finalValue.forEach((id, index) => {\r\n const found = currentLevel.find(item => item.id === id);\r\n\r\n if (!found) return;\r\n\r\n row.selectedPath[index] = found;\r\n\r\n if (found.type === 'group' && found.items) {\r\n currentLevel = found.items;\r\n row.levels.push(this.addTodosOption(currentLevel));\r\n }\r\n });\r\n\r\n return row;\r\n }\r\n\r\n addTodosOption(items: ModalItem[]): ModalItem[] {\r\n const isFlat = items?.every(item => item.type !== 'group');\r\n\r\n if (!isFlat) return items;\r\n\r\n const alreadyHasTodos = items.some(i => i.id === 'todos');\r\n if (alreadyHasTodos) return items;\r\n\r\n return [\r\n { id: 'todos', label: 'Todos', type: 'option' },\r\n ...items\r\n ];\r\n }\r\n}\r\n","<header class=\"modal-header\">\r\n <h4 class=\"modal-title pull-left\">Editar fonte dos dados</h4>\r\n <button type=\"button\" class=\"btn-close close pull-right\" aria-label=\"Close\" (click)=\"onCloseModal()\">\r\n <span aria-hidden=\"true\" class=\"visually-hidden\">×</span>\r\n </button>\r\n</header>\r\n<body class=\"modal-body table-form py-2\">\r\n <label>Tipo de Agrupamento dos dados:</label>\r\n <ng-select\r\n class=\" col-12 col-sm-4 mb-1\"\r\n [items]=\"types\"\r\n bindValue=\"id\"\r\n bindLabel=\"label\"\r\n [clearable]=\"false\"\r\n placeholder=\"Selecione...\"\r\n [(ngModel)]=\"rowsType\">\r\n </ng-select>\r\n <article *ngFor=\"let row of rows; let rowIndex = index\" class=\"line mb-2\">\r\n <div class=\"d-flex\">\r\n <ng-container *ngFor=\"let level of row.levels; let levelIndex = index\">\r\n <ng-select class=\"me-1\"\r\n [items]=\"level\"\r\n bindLabel=\"label\"\r\n [clearable]=\"false\"\r\n [placeholder]=\"'Selecione...'\"\r\n [ngModel]=\"row.selectedPath[levelIndex]\"\r\n (change)=\"onSelect($event, rowIndex, levelIndex)\">\r\n </ng-select>\r\n </ng-container>\r\n </div>\r\n <div class=\"d-flex\">\r\n <div class=\"color-div me-2\" [style.background-color]=\"rows[rowIndex].finalBackgroudColor\">\r\n <button class=\"btn font-icon\" [style.color]=\"rows[rowIndex].finalFontColor\"\r\n title=\"Cor do texto\" (click)=\"fontColor.click()\">\r\n format_color_text\r\n </button>\r\n <input #fontColor class=\"hide\" type=\"color\" (change)=\"onFontColorChange($event, rowIndex)\">\r\n <hr class=\"divisor\">\r\n <button class=\"btn font-icon\" [style.color]=\"rows[rowIndex].finalFontColor\"\r\n title=\"Cor de fundo\" (click)=\"backgroundColor.click()\">\r\n colors\r\n </button>\r\n <input #backgroundColor class=\"hide\" type=\"color\" (change)=\"onBackgroundChange($event, rowIndex)\">\r\n </div>\r\n <button class=\"btn btn-basic font-icon me-2\" type=\"button\" (click)=\"cloneRow(rowIndex)\" title=\"Clonar linha\">\r\n copy_all\r\n </button>\r\n <button class=\"btn btn-danger font-icon\" type=\"button\" (click)=\"removeRow(rowIndex)\" title=\"Remover linha\">\r\n delete\r\n </button>\r\n </div>\r\n </article>\r\n <div class=\"d-flex mb-2\">\r\n <button class=\"btn btn-success\" type=\"button\" (click)=\"addRow()\" title=\"Adicionar linha\">+</button>\r\n </div>\r\n <div class=\"d-flex justify-content-end mb-2\">\r\n <button class=\"btn btn-success\" type=\"button\" (click)=\"onSaveData()\" title=\"Salvar\">Salvar</button>\r\n </div>\r\n</body>","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\r\nimport { ChartOption, DASHBOARD_CHART_TYPES, DashboardChartType } from '../../models/dashboard.model';\r\n\r\n@Component({\r\n selector: 'lib-modal-edit-chart',\r\n templateUrl: './modal-edit-chart.component.html',\r\n styleUrls: ['./modal-edit-chart.component.scss']\r\n})\r\nexport class ModalEditChartComponent implements OnInit {\r\n\r\n options:ChartOption[] = [\r\n { id: 'bar', title: 'Barra' },\r\n { id: 'stackedBar', title: 'Barra Empilhada' },\r\n { id: 'verticalBar', title: 'Barra Vertical' },\r\n { id: 'verticalStackedBar', title: 'Barra Vertical Empilhada' },\r\n { id: 'verticalProgressBar', title: 'Barra de Progresso Vertical' },\r\n { id: 'progressBar', title: 'Barra de Progresso' },\r\n { id: 'lineBar', title: 'Linha + Barra' },\r\n { id: 'lineBarStacked', title: 'Linha + Barra Empilhada' },\r\n { id: 'line', title: 'Linha' },\r\n { id: 'radar', title: 'Radar' },\r\n { id: 'curveLine', title: 'Linha Curva' },\r\n { id: 'pie', title: 'Pizza' },\r\n { id: 'multiPie', title: 'Múltiplas Pizzas' },\r\n { id: 'doughnut', title: 'Rosca' },\r\n { id: 'halfDoughnut', title: 'Meia Rosca' },\r\n { id: 'area', title: 'Área' },\r\n { id: 'bubble', title: 'Bolhas' },\r\n { id: 'polarArea', title: 'Área Polar' },\r\n { id: 'simpleCard', title: 'Card Simples' },\r\n { id: 'table', title: 'Tabela' },\r\n { id: 'html', title: 'HTML Personalizado' },\r\n ];\r\n\r\n @Input() currentOption!: DashboardChartType|null;\r\n @Output() closeModal: EventEmitter<void> = new EventEmitter<void>();\r\n @Output() saveData: EventEmitter<any> = new EventEmitter<any>();\r\n\r\n constructor() { }\r\n\r\n ngOnInit() {\r\n }\r\n \r\n setCurrentOption(option: DashboardChartType):void{\r\n this.currentOption = option;\r\n }\r\n\r\n onCloseModal():void{\r\n this.closeModal.emit();\r\n }\r\n \r\n onSaveData():void{\r\n this.saveData.emit(this.currentOption);\r\n }\r\n\r\n}\r\n","<header class=\"modal-header\">\r\n <h4 class=\"modal-title pull-left\">Editar fonte dos dados</h4>\r\n <button type=\"button\" class=\"btn-close close pull-right\" aria-label=\"Close\" (click)=\"onCloseModal()\">\r\n <span aria-hidden=\"true\" class=\"visually-hidden\">×</span>\r\n </button>\r\n</header>\r\n<body class=\"modal-body table-form py-2\">\r\n <section class=\"d-grid\">\r\n <label >Titulo:\r\n <input class=\"form-control\"/>\r\n </label>\r\n <label>\r\n <input type=\"checkbox\"> Mostrar legenda no Gráfico\r\n </label>\r\n <label>\r\n <input type=\"checkbox\"> Mostrar simbolo '%' na legenda\r\n </label>\r\n </section>\r\n <hr>\r\n <h3>TIPO:</h3>\r\n <section class=\"row g-0\">\r\n <div class=\"card-chart col-12 col-sm-6 col-md-6 col-lg-4 col-xl-3\" *ngFor=\"let opt of options\">\r\n <b>{{opt.title}}</b>\r\n <img [src]=\"'assets/dashboard/images/' + opt.id +'.png'\" (click)=\"setCurrentOption(opt.id)\">\r\n </div>\r\n </section>\r\n <div class=\"d-flex justify-content-end mb-2\">\r\n <button class=\"btn btn-success\" type=\"button\" (click)=\"onSaveData()\" title=\"Salvar\">Salvar</button>\r\n </div>\r\n</body>","import { ChangeDetectorRef, Component, HostListener, Input, OnInit, QueryList, TemplateRef, ViewChild, ViewChildren } from '@angular/core';\r\nimport { CdkDropList, moveItemInArray} from '@angular/cdk/drag-drop';\r\nimport { Card, DashboardChartType, ModalItem, Option, Select, SelectRow } from '../../models/dashboard.model';\r\nimport { Chart } from 'chart.js';\r\nimport { BsModalRef, BsModalService } from 'ngx-bootstrap/modal';\r\nimport { Item } from '../../models/dashboard.model';\r\n\r\n@Component({\r\n selector: 'lib-dashboard',\r\n templateUrl: './dashboard.component.html',\r\n styleUrls: ['./dashboard.component.scss']\r\n})\r\nexport class DashboardComponent implements OnInit {\r\n\r\n emptyCard:Card = {\r\n type:'html',\r\n innerHtml: '<button class=\"btn empty-card font-icon\" >dashboard_customize</button>'\r\n } as Card;\r\n currentOption!:DashboardChartType|null;\r\n currentCard!: Card;\r\n copyComplete:boolean=false;\r\n\r\n @Input() isDark:boolean = false;\r\n @Input() isResponsive:boolean = true;\r\n @Input() canEdit: boolean = false;\r\n @Input() cols: number = 4;\r\n @Input() options:Option[] = [\r\n { title: '1x1', cols: 1, rows: 1 },\r\n { title: '2x1', cols: 2, rows: 1 },\r\n { title: '3x1', cols: 3, rows: 1 },\r\n { title: '1x2', cols: 1, rows: 2 },\r\n { title: '2x2', cols: 2, rows: 2 },\r\n ]\r\n @Input() cards: Card[] = [];\r\n @Input() groupType:Select[] = [];\r\n @Input() modalData:ModalItem[] = [];\r\n @Input() data!:any;\r\n @Input() debug: boolean = false;\r\n\r\n drops: CdkDropList[] = [];\r\n\r\n modalRef?: BsModalRef;\r\n modalChartRef?: BsModalRef;\r\n modalViewRef?: BsModalRef;\r\n modalCodeRef?: BsModalRef;\r\n\r\n @ViewChildren(CdkDropList) dropsQuery!: QueryList<CdkDropList>;\r\n @ViewChild('modalChart') modalChart!: TemplateRef<any>;\r\n @ViewChild('modal') modal!: TemplateRef<any>;\r\n @ViewChild('modalView') modalView!: TemplateRef<any>;\r\n @ViewChild('modalCode') modalCode!: TemplateRef<any>;\r\n\r\n constructor(\r\n private modalService: BsModalService,\r\n private cd: ChangeDetectorRef\r\n ) { }\r\n\r\n ngOnInit() {\r\n this.cards = [...this.cards].sort((a, b) => (a.order ?? 0) - (b.order ?? 0));\r\n if(this.isResponsive){\r\n this.recalcCols();\r\n }\r\n }\r\n\r\n ngAfterViewInit() {\r\n this.dropsQuery.changes.subscribe(() => {\r\n this.drops = this.dropsQuery.toArray();\r\n });\r\n Promise.resolve().then(() => {\r\n this.drops = this.dropsQuery.toArray();\r\n });\r\n }\r\n\r\n entered($event: any):void {\r\n moveItemInArray(this.cards, $event.item.data, $event.container.data);\r\n }\r\n\r\n get orderOptions(): Option[]{\r\n return [...this.options].sort((a, b) => (a.order ?? 0) - (b.order ?? 0));\r\n }\r\n\r\n recalcCols():void{\r\n this.cols = Math.max(1, Math.floor(window.innerWidth / 300));\r\n }\r\n\r\n openModalChart(card:Card):void {\r\n this.currentCard = card;\r\n this.modalChartRef = this.modalService.show(this.modalChart, {\r\n class: 'modal-xl modal-top',\r\n });\r\n }\r\n\r\n closeModalChart():void {\r\n this.modalChartRef?.hide();\r\n }\r\n\r\n openModalData(card:Card):void {\r\n this.currentCard = card;\r\n this.currentOption = card.type ?? null;\r\n this.modalRef = this.modalService.show(this.modal, {\r\n class: 'modal-xl modal-top',\r\n });\r\n }\r\n\r\n closeModalData():void {\r\n this.modalRef?.hide();\r\n }\r\n\r\n get jsonData():string{\r\n return JSON.stringify(this.currentCard);\r\n }\r\n openModalCode(card:Card):void {\r\n this.currentCard = card;\r\n this.currentOption = card.type ?? null;\r\n this.modalCodeRef = this.modalService.show(this.modalCode, {\r\n class: 'modal-xl modal-top',\r\n });\r\n }\r\n\r\n closeModalCode():void {\r\n this.modalCodeRef?.hide();\r\n }\r\n copyCode() {\r\n const texto = JSON.stringify(this.currentCard, null, 2);\r\n\r\n navigator.clipboard.writeText(texto)\r\n .then(() => {\r\n this.copyComplete = true;\r\n setTimeout(() => this.copyComplete = false, 1500);\r\n })\r\n .catch(err => {\r\n console.error('Erro ao copiar:', err);\r\n });\r\n }\r\n\r\n saveData(payload: any):void {\r\n const rows: SelectRow[] = payload.rows;\r\n const rowsType: string = payload.rowsType;\r\n const currentType: string = rowsType == 'simple'? rowsType :'group';\r\n\r\n if (!rows?.length) return;\r\n\r\n this.cards = this.cards.map(card => {\r\n if (card.id !== this.currentCard.id) return card;\r\n\r\n const baseData = this.data[currentType];\r\n if (!baseData) return card;\r\n\r\n const keys: Item[] = rows.map((row, index) => {\r\n const id = row.finalValue[row.finalValue.length - 1];\r\n const last = row.selectedPath.find(r => r.id == id);\r\n\r\n return {\r\n key: last?.id || `key_${index}`,\r\n label: last?.label || `Item ${index + 1}`,\r\n fill: true,\r\n color: row.finalBackgroudColor,\r\n fontColor: row.finalFontColor\r\n };\r\n }) as Item[];\r\n\r\n const typeLabel = this.groupType.find(t => t.id == rowsType)?.label ?? ''; \r\n var data = this.formatData(rowsType, rows[0]?.selectedPath, rows[0]?.finalValue);\r\n return {\r\n ...card,\r\n axisX: { key: rowsType, label: typeLabel },\r\n keys: [...keys],\r\n data: data\r\n };\r\n });\r\n this.modalRef?.hide();\r\n }\r\n\r\n formatData(type:string, selectedPath: any, finalValue: string[]):any[]{\r\n const currentType: string = type == 'simple'? type :'group';\r\n const baseData = this.data[currentType];\r\n\r\n let data: any[] = [];\r\n\r\n if (currentType === 'simple') {\r\n var finalData = baseData;\r\n finalValue?.slice(0, -1)?.forEach(r => {\r\n finalData = finalData[r];\r\n });\r\n data = finalData;\r\n\r\n } else if (currentType === 'group') {\r\n var finalData = baseData;\r\n finalValue?.slice(0, -1)?.forEach(r => {\r\n finalData = finalData[r];\r\n });\r\n data = finalData[type];\r\n }\r\n return data;\r\n }\r\n\r\n randomValueFromPath(row: SelectRow): number {\r\n const base = row.selectedPath.length * 10;\r\n return Math.floor(Math.random() * 20) + base;\r\n }\r\n\r\n saveChartData(data:any):void {\r\n alert('TODO') //proxima versao\r\n this.modalRef?.hide();\r\n }\r\n\r\n addNewCard():void{\r\n const newItem:Card = { title: 'Novo', order:99, cols: 1, rows: 1 } as Card;\r\n this.cards.push(newItem);\r\n this.cd.detectChanges();\r\n }\r\n\r\n downloadImage(id: number):void {\r\n const canvases = document.querySelectorAll(`#card_${id} canvas`);\r\n\r\n canvases.forEach((canvas: any, index: number) => {\r\n\r\n const scale = 3;\r\n const tempCanvas = document.createElement('canvas');\r\n tempCanvas.width = canvas.width * scale;\r\n tempCanvas.height = canvas.height * scale;\r\n\r\n const ctx = tempCanvas.getContext('2d');\r\n\r\n if (ctx) {\r\n ctx.fillStyle = '#ffffff';\r\n ctx.fillRect(0, 0, tempCanvas.width, tempCanvas.height);\r\n ctx.scale(scale, scale);\r\n ctx.drawImage(canvas, 0, 0);\r\n }\r\n\r\n const link = document.createElement('a');\r\n link.download = `canvas_${index + 1}.png`;\r\n link.href = tempCanvas.toDataURL('image/png', 1.0);\r\n link.click();\r\n });\r\n }\r\n\r\n openChart(card: Card, id:number):void{\r\n this.currentCard = card;\r\n this.currentOption = card.type ?? null;\r\n this.modalViewRef = this.modalService.show(this.modalView, {\r\n class: 'modal-xl modal-top',\r\n });\r\n }\r\n\r\n closeModalView():void{\r\n this.modalViewRef?.hide();\r\n }\r\n\r\n @HostListener('window:resize')\r\n onresize() {\r\n if(this.isResponsive){\r\n this.recalcCols();\r\n }\r\n }\r\n\r\n}\r\n","<main class=\"dashboard\" [class.responsive]=\"isResponsive\" [class.dark-class]=\"isDark\">\r\n <mat-grid-list [cols]=\"cols\" rowHeight=\"300px\" gutterSize=\"10px\">\r\n <mat-grid-tile\r\n *ngFor=\"let card of cards; let i = index\"\r\n [colspan]=\"card.cols > cols? cols : card.cols\"\r\n [rowspan]=\"card.rows\"\r\n [class.dark-class]=\"isDark\"\r\n class=\"card\"\r\n >\r\n <div cdkDropList [cdkDropListConnectedTo]=\"drops\" [cdkDropListData]=\"i\">\r\n <div\r\n [id]=\"'card_' + i\"\r\n cdkDrag\r\n (cdkDragEntered)=\"entered($event)\"\r\n [cdkDragData]=\"i\"\r\n class=\"card-body\"\r\n [cdkDragDisabled]=\"!canEdit\"\r\n [class.dark-class]=\"isDark\"\r\n [class.has-color]=\"card.backgroundColor\"\r\n [style.background-color]=\"card.backgroundColor\"\r\n [style.color]=\"card.fontColor\"\r\n >\r\n <nav class=\"nav-hover\">\r\n <button *ngIf=\"!canEdit\" class=\"btn font-icon\" title=\"Ampliar gráfico\" (click)=\"openChart(card, i)\">search</button>\r\n <button *ngIf=\"!canEdit\" class=\"btn font-icon\" title=\"Baixar imagem\" (click)=\"downloadImage(i)\">download</button>\r\n </nav>\r\n <nav class=\"card-nav\" *ngIf=\"canEdit\">\r\n <div class=\"card-handle font-icon\" title=\"Mover\" cdkDragHandle>\r\n drag_pan\r\n </div>\r\n <button class=\"btn card-options font-icon\" title=\"Modificar tamanho\" mat-button [matMenuTriggerFor]=\"menu\">\r\n resize\r\n </button>\r\n <mat-menu #menu=\"matMenu\">\r\n <ng-container *ngFor=\"let opt of orderOptions\">\r\n <button mat-menu-item (click)=\"card.cols = opt.cols; card.rows = opt.rows\" >{{opt.title}}</button>\r\n </ng-container>\r\n </mat-menu>\r\n <button class=\"btn font-icon\" title=\"Editar Tipo do Gráfico\" (click)=\"openModalChart(card)\">{{'landscape_2_edit'}}</button>\r\n <button class=\"btn font-icon\" title=\"Editar fonte de dados\" (click)=\"openModalData(card)\">edit_note</button>\r\n <button class=\"btn font-icon\" *ngIf=\"debug\" title=\"Exibir código de configuração\" (click)=\"openModalCode(card)\">code_blocks</button>\r\n </nav>\r\n <div class=\"custom-placeholder\" *cdkDragPlaceholder></div>\r\n <lib-card [data]=\"card\" [ngClass]=\"{'canEdit': canEdit}\" [isDark]=\"isDark\"></lib-card>\r\n </div>\r\n </div>\r\n </mat-grid-tile>\r\n <mat-grid-tile class=\"card\" [colspan]=\"1\" [rowspan]=\"1\" [class.dark-class]=\"isDark\" *ngIf=\"canEdit\">\r\n <lib-card [data]=\"emptyCard\" [ngClass]=\"{'canEdit': canEdit, cardEmpty:true}\" [isDark]=\"isDark\"\r\n (click)=\"addNewCard()\"\r\n ></lib-card>\r\n </mat-grid-tile>\r\n </mat-grid-list>\r\n</main>\r\n<ng-template #modal>\r\n <lib-modal-edit (closeModal)=\"closeModalData()\" (saveData)=\"saveData($event)\" [data]=\"modalData\" [groupType]=\"groupType\"></lib-modal-edit>\r\n</ng-template>\r\n<ng-template #modalView>\r\n <header class=\"modal-header\">\r\n <h4 class=\"modal-title pull-left mb-0\">{{currentCard.title}}</h4>\r\n <button type=\"button\" class=\"btn-close close pull-right\" aria-label=\"Close\" (click)=\"closeModalView()\">\r\n <span aria-hidden=\"true\" class=\"visually-hidden\">×</span>\r\n </button>\r\n </header>\r\n <body id=\"modalViewBody\" class=\"modal-body py-2 overflow-auto\">\r\n <lib-card [data]=\"currentCard\" [ngClass]=\"{'canEdit': canEdit}\" [isDark]=\"isDark\"></lib-card>\r\n </body>\r\n</ng-template>\r\n<ng-template #modalCode>\r\n <header class=\"modal-header\">\r\n <h4 class=\"modal-title pull-left mb-0\">{{currentCard.title}}</h4>\r\n <button type=\"button\" class=\"btn-close close pull-right\" aria-label=\"Close\" (click)=\"closeModalCode()\">\r\n <span aria-hidden=\"true\" class=\"visually-hidden\">×</span>\r\n </button>\r\n </header>\r\n <body id=\"modalCodeBody\" class=\"modal-body py-2 overflow-auto\">\r\n <pre class=\"code-area\">{{ currentCard | json }}</pre>\r\n <button class=\"font-icon code-copy\" title=\"Copiar json\" (click)=\"copyCode()\">content_copy</button>\r\n <span *ngIf=\"copyComplete\" class=\"copy-message\">Copiado!</span>\r\n </body>\r\n</ng-template>\r\n<ng-template #modalChart>\r\n <lib-modal-edit-chart (closeModal)=\"closeModalChart()\" [currentOption]=\"currentOption\" (saveData)=\"saveChartData($event)\"></lib-modal-edit-chart>\r\n</ng-template>","import { Component, Input } from '@angular/core';\nimport { Card, ModalItem, Option, Select } from './models/dashboard.model';\n\n@Component({\n selector: 'lib-primordash',\n template: `\n <lib-dashboard\n [isDark]=\"isDark\"\n [isResponsive]=\"isResponsive\"\n [canEdit]=\"canEdit\"\n [cols]=\"cols\"\n [options]=\"options\" \n [cards]=\"cards\" \n [groupType]=\"groupType\" \n [modalData]=\"modalData\" \n [data]=\"data\"\n [debug]=\"true\"\n ></lib-dashboard>\n `,\n styles: [\n ]\n})\nexport class PrimordashComponent {\n \n @Input() isDark:boolean = false;\n @Input() isResponsive:boolean = true;\n @Input() canEdit: boolean = false;\n @Input() cols: number = 4;\n @Input() options:Option[] = [\n { title: '1x1', cols: 1, rows: 1 },\n { title: '2x1', cols: 2, rows: 1 },\n { title: '3x1', cols: 3, rows: 1 },\n { title: '1x2', cols: 1, rows: 2 },\n { title: '2x2', cols: 2, rows: 2 },\n ]\n @Input() cards: Card[] = [];\n @Input() groupType:Select[] = [];\n @Input() modalData:ModalItem[] = [];\n @Input() data!:any;\n @Input() debug: boolean = false;\n\n}\n","import { NgModule } from '@angular/core';\r\nimport { DragDropModule } from '@angular/cdk/drag-drop';\r\nimport { MatGridListModule } from '@angular/material/grid-list';\r\nimport { MatMenuModule } from '@angular/material/menu';\r\nimport { NgChartsModule } from \"ng2-charts\";\r\nimport { CardComponent } from './components/card/card.component';\r\nimport { BarLineComponent } from './components/charts/bar-line/bar-line.component';\r\nimport { BubbleComponent } from './components/charts/bubble/bubble.component';\r\nimport { PieComponent } from './components/charts/pie/pie.component';\r\nimport { SimpleCardComponent } from './components/charts/simple-card/simple-card.component';\r\nimport { TableComponent } from './components/charts/table/table.component';\r\nimport { DashboardComponent } from './components/dashboard/dashboard.component';\r\nimport { ModalEditComponent } from './components/modal-edit/modal-edit.component';\r\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { CommonModule } from '@angular/common';\r\nimport { NgSelectModule } from '@ng-select/ng-select';\r\nimport { PrimordashComponent } from './primordash.component';\r\nimport { ModalEditChartComponent } from './components/modal-edit-chart/modal-edit-chart.component';\r\n\r\n@NgModule({\r\n declarations: [\r\n DashboardComponent,\r\n CardComponent,\r\n BarLineComponent,\r\n BubbleComponent,\r\n PieComponent,\r\n SimpleCardComponent,\r\n TableComponent,\r\n ModalEditComponent,\r\n ModalEditChartComponent,\r\n PrimordashComponent\r\n ],\r\n imports: [\r\n DragDropModule,\r\n MatGridListModule,\r\n MatMenuModule,\r\n NgChartsModule,\r\n ReactiveFormsModule,\r\n FormsModule,\r\n CommonModule,\r\n NgSelectModule\r\n],\r\n exports:[\r\n DashboardComponent,\r\n PrimordashComponent\r\n ],\r\n providers: [\r\n ]\r\n})\r\n\r\nexport class PrimordashModule { }\r\n","/*\n * Public API Surface of primordash\n */\n\nexport * from './lib/primordash.service';\nexport * from './lib/primordash.component';\nexport * from './lib/primordash.module';\nexport * from './lib/components/dashboard/dashboard.component';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1","i2","i3.BarLineComponent","i4.BubbleComponent","i5.PieComponent","i6.SimpleCardComponent","i7.TableComponent","i3","i4","i6.CardComponent","i7.ModalEditComponent","i8.ModalEditChartComponent","i1.DashboardComponent"],"mappings":"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"}
|