@triptease/tt-bar-chart 0.1.1 → 0.1.3

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.
@@ -4,11 +4,12 @@ export declare class TtBarChart extends LitElement {
4
4
  labels: string[];
5
5
  datasets: Dataset[];
6
6
  direction: 'horizontal' | 'vertical';
7
- xAxisLabel?: string;
8
- yAxisLabel?: string;
9
- showGrid: boolean;
7
+ xAxisTitle?: string;
8
+ yAxisTitle?: string;
9
+ showHorizontalGrid: boolean;
10
+ showVerticalGrid: boolean;
10
11
  showLegend: boolean;
11
- showSeriesLabel: boolean;
12
+ showDataLabels: boolean;
12
13
  showTooltip: boolean;
13
14
  private getSeriesColor;
14
15
  render(): import("lit-html").TemplateResult<1>;
@@ -4,15 +4,18 @@ import { html, LitElement } from 'lit';
4
4
  import * as echarts from 'echarts';
5
5
  import { customElement, property } from 'lit/decorators.js';
6
6
  import { formatter, jsonConvertor } from './utils.js';
7
+ // @ts-expect-error Known error - https://github.com/apache/echarts/issues/21250
8
+ import { AriaComponent } from 'echarts/components';
7
9
  let TtBarChart = class TtBarChart extends LitElement {
8
10
  constructor() {
9
11
  super(...arguments);
10
12
  this.labels = [];
11
13
  this.datasets = [];
12
14
  this.direction = 'horizontal';
13
- this.showGrid = false;
15
+ this.showHorizontalGrid = false;
16
+ this.showVerticalGrid = false;
14
17
  this.showLegend = false;
15
- this.showSeriesLabel = false;
18
+ this.showDataLabels = false;
16
19
  this.showTooltip = false;
17
20
  this.getSeriesColor = (dataset) => {
18
21
  if (this.datasets && this.datasets.length > 1)
@@ -31,34 +34,39 @@ let TtBarChart = class TtBarChart extends LitElement {
31
34
  throw new Error('No div element');
32
35
  }
33
36
  const chart = echarts.init(divElement);
37
+ echarts.use([AriaComponent]);
34
38
  const series = this.datasets.map((dataset) => ({
35
39
  name: dataset.label,
36
40
  type: 'bar',
37
41
  data: dataset.data,
38
42
  color: this.getSeriesColor(dataset),
39
43
  label: {
40
- show: this.showSeriesLabel,
44
+ show: this.showDataLabels,
41
45
  position: 'right',
42
46
  formatter: ({ value }) => formatter.format(value),
43
47
  },
48
+ cursor: "default"
44
49
  }));
45
50
  const option = {
51
+ aria: {
52
+ show: true
53
+ },
46
54
  legend: {
47
55
  show: this.showLegend,
48
56
  },
49
57
  xAxis: {
50
- name: this.xAxisLabel,
58
+ name: this.xAxisTitle,
51
59
  nameLocation: "center",
52
60
  type: this.direction === 'horizontal' ? 'value' : 'category',
53
61
  data: this.direction === 'horizontal' ? undefined : this.labels,
54
- splitLine: { show: this.showGrid },
62
+ splitLine: { show: this.showHorizontalGrid },
55
63
  },
56
64
  yAxis: {
57
- name: this.yAxisLabel,
65
+ name: this.yAxisTitle,
58
66
  nameLocation: "center",
59
67
  type: this.direction === 'horizontal' ? 'category' : 'value',
60
68
  data: this.direction === 'horizontal' ? this.labels : undefined,
61
- splitLine: { show: this.showGrid },
69
+ splitLine: { show: this.showVerticalGrid },
62
70
  },
63
71
  ...(this.showTooltip && {
64
72
  tooltip: {
@@ -83,20 +91,23 @@ __decorate([
83
91
  property({ type: String })
84
92
  ], TtBarChart.prototype, "direction", void 0);
85
93
  __decorate([
86
- property({ type: String, attribute: 'x-axis-label' })
87
- ], TtBarChart.prototype, "xAxisLabel", void 0);
94
+ property({ type: String, attribute: 'x-axis-title' })
95
+ ], TtBarChart.prototype, "xAxisTitle", void 0);
96
+ __decorate([
97
+ property({ type: String, attribute: 'y-axis-title' })
98
+ ], TtBarChart.prototype, "yAxisTitle", void 0);
88
99
  __decorate([
89
- property({ type: String, attribute: 'y-axis-label' })
90
- ], TtBarChart.prototype, "yAxisLabel", void 0);
100
+ property({ type: Boolean, attribute: 'show-horizontal-grid' })
101
+ ], TtBarChart.prototype, "showHorizontalGrid", void 0);
91
102
  __decorate([
92
- property({ type: Boolean, attribute: 'show-grid' })
93
- ], TtBarChart.prototype, "showGrid", void 0);
103
+ property({ type: Boolean, attribute: 'show-vertical-grid' })
104
+ ], TtBarChart.prototype, "showVerticalGrid", void 0);
94
105
  __decorate([
95
106
  property({ type: Boolean, attribute: 'show-legend' })
96
107
  ], TtBarChart.prototype, "showLegend", void 0);
97
108
  __decorate([
98
- property({ type: Boolean, attribute: 'show-series-label' })
99
- ], TtBarChart.prototype, "showSeriesLabel", void 0);
109
+ property({ type: Boolean, attribute: 'show-data-labels' })
110
+ ], TtBarChart.prototype, "showDataLabels", void 0);
100
111
  __decorate([
101
112
  property({ type: Boolean, attribute: 'show-tooltip' })
102
113
  ], TtBarChart.prototype, "showTooltip", void 0);
@@ -1 +1 @@
1
- {"version":3,"file":"TtBarChart.js","sourceRoot":"","sources":["../../src/TtBarChart.ts"],"names":[],"mappings":"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","sourcesContent":["import { html, LitElement } from 'lit';\n// @ts-expect-error Known error - https://github.com/apache/echarts/issues/21250\nimport * as echarts from 'echarts';\nimport { customElement, property } from 'lit/decorators.js';\nimport { Dataset } from './types.js';\nimport { formatter, jsonConvertor } from './utils.js';\n\n@customElement('tt-bar-chart')\nexport class TtBarChart extends LitElement {\n @property({ type: Array, converter: jsonConvertor, attribute: 'categories' })\n labels: string[] = [];\n\n @property({ type: Array, converter: jsonConvertor })\n datasets: Dataset[] = [];\n\n @property({ type: String })\n direction: 'horizontal' | 'vertical' = 'horizontal';\n\n @property({ type: String, attribute: 'x-axis-label' })\n xAxisLabel?: string;\n\n @property({ type: String, attribute: 'y-axis-label' })\n yAxisLabel?: string;\n\n @property({ type: Boolean, attribute: 'show-grid' })\n showGrid: boolean = false;\n\n @property({ type: Boolean, attribute: 'show-legend' })\n showLegend: boolean = false;\n\n @property({ type: Boolean, attribute: 'show-series-label' })\n showSeriesLabel: boolean = false;\n\n @property({ type: Boolean, attribute: 'show-tooltip' })\n showTooltip: boolean = false;\n\n private getSeriesColor = (dataset: Dataset) => {\n if (this.datasets && this.datasets.length > 1) return undefined;\n if (dataset.color) return dataset.color;\n\n return '#4d35a1';\n };\n\n render() {\n return html` <div id=${this.id} style=\"width: 100%; height:100%;\"></div> `;\n }\n\n protected firstUpdated() {\n const divElement = this.renderRoot.querySelector(`#${this.id}`) as HTMLDivElement;\n\n if (!divElement) {\n throw new Error('No div element');\n }\n\n const chart = echarts.init(divElement);\n\n const series: echarts.SeriesOption[] = this.datasets.map((dataset) => ({\n name: dataset.label,\n type: 'bar',\n data: dataset.data,\n color: this.getSeriesColor(dataset),\n label: {\n show: this.showSeriesLabel,\n position: 'right',\n formatter: ({ value }: { value: number }) => formatter.format(value),\n },\n }));\n\n const option: echarts.EChartsOption = {\n legend: {\n show: this.showLegend,\n },\n xAxis: {\n name: this.xAxisLabel,\n nameLocation: \"center\",\n type: this.direction === 'horizontal' ? 'value' : 'category',\n data: this.direction === 'horizontal' ? undefined : this.labels,\n splitLine: { show: this.showGrid },\n },\n yAxis: {\n name: this.yAxisLabel,\n nameLocation: \"center\",\n type: this.direction === 'horizontal' ? 'category' : 'value',\n data: this.direction === 'horizontal' ? this.labels : undefined,\n splitLine: { show: this.showGrid },\n },\n ...(this.showTooltip && {\n tooltip: {\n trigger: 'axis',\n axisPointer: {\n type: 'shadow',\n },\n },\n }),\n series,\n };\n\n chart.setOption(option);\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'tt-bar-chart': TtBarChart;\n }\n}\n"]}
1
+ {"version":3,"file":"TtBarChart.js","sourceRoot":"","sources":["../../src/TtBarChart.ts"],"names":[],"mappings":"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","sourcesContent":["import { html, LitElement } from 'lit';\n// @ts-expect-error Known error - https://github.com/apache/echarts/issues/21250\nimport * as echarts from 'echarts';\nimport { customElement, property } from 'lit/decorators.js';\nimport { Dataset } from './types.js';\nimport { formatter, jsonConvertor } from './utils.js';\n// @ts-expect-error Known error - https://github.com/apache/echarts/issues/21250\nimport { AriaComponent } from 'echarts/components';\n\n@customElement('tt-bar-chart')\nexport class TtBarChart extends LitElement {\n @property({ type: Array, converter: jsonConvertor, attribute: 'categories' })\n labels: string[] = [];\n\n @property({ type: Array, converter: jsonConvertor })\n datasets: Dataset[] = [];\n\n @property({ type: String })\n direction: 'horizontal' | 'vertical' = 'horizontal';\n\n @property({ type: String, attribute: 'x-axis-title' })\n xAxisTitle?: string;\n\n @property({ type: String, attribute: 'y-axis-title' })\n yAxisTitle?: string;\n\n @property({ type: Boolean, attribute: 'show-horizontal-grid' })\n showHorizontalGrid: boolean = false;\n\n @property({ type: Boolean, attribute: 'show-vertical-grid' })\n showVerticalGrid: boolean = false;\n\n @property({ type: Boolean, attribute: 'show-legend' })\n showLegend: boolean = false;\n\n @property({ type: Boolean, attribute: 'show-data-labels' })\n showDataLabels: boolean = false;\n\n @property({ type: Boolean, attribute: 'show-tooltip' })\n showTooltip: boolean = false;\n\n private getSeriesColor = (dataset: Dataset) => {\n if (this.datasets && this.datasets.length > 1) return undefined;\n if (dataset.color) return dataset.color;\n\n return '#4d35a1';\n };\n\n render() {\n return html` <div id=${this.id} style=\"width: 100%; height:100%;\"></div> `;\n }\n\n protected firstUpdated() {\n const divElement = this.renderRoot.querySelector(`#${this.id}`) as HTMLDivElement;\n\n if (!divElement) {\n throw new Error('No div element');\n }\n\n const chart = echarts.init(divElement);\n echarts.use([AriaComponent])\n\n const series: echarts.SeriesOption[] = this.datasets.map((dataset) => ({\n name: dataset.label,\n type: 'bar',\n data: dataset.data,\n color: this.getSeriesColor(dataset),\n label: {\n show: this.showDataLabels,\n position: 'right',\n formatter: ({ value }: { value: number }) => formatter.format(value),\n },\n cursor: \"default\"\n }));\n\n const option: echarts.EChartsOption = {\n aria: {\n show: true\n },\n legend: {\n show: this.showLegend,\n },\n xAxis: {\n name: this.xAxisTitle,\n nameLocation: \"center\",\n type: this.direction === 'horizontal' ? 'value' : 'category',\n data: this.direction === 'horizontal' ? undefined : this.labels,\n splitLine: { show: this.showHorizontalGrid },\n },\n yAxis: {\n name: this.yAxisTitle,\n nameLocation: \"center\",\n type: this.direction === 'horizontal' ? 'category' : 'value',\n data: this.direction === 'horizontal' ? this.labels : undefined,\n splitLine: { show: this.showVerticalGrid },\n },\n ...(this.showTooltip && {\n tooltip: {\n trigger: 'axis',\n axisPointer: {\n type: 'shadow',\n },\n },\n }),\n series,\n };\n\n chart.setOption(option);\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'tt-bar-chart': TtBarChart;\n }\n}\n"]}
@@ -4,12 +4,13 @@ interface TTBarChartAttributes {
4
4
  categories?: string;
5
5
  datasets?: string;
6
6
  direction?: 'horizontal' | 'vertical';
7
- 'x-axis-label'?: string;
8
- 'y-axis-label'?: string;
7
+ 'x-axis-title'?: string;
8
+ 'y-axis-title'?: string;
9
9
  color?: string;
10
- 'show-grid'?: boolean;
10
+ 'show-horizontal-grid'?: boolean;
11
+ 'show-vertical-grid'?: boolean;
11
12
  'show-legend'?: boolean;
12
- 'show-series-label'?: boolean;
13
+ 'show-data-labels'?: boolean;
13
14
  'show-tooltip'?: boolean;
14
15
  }
15
16
  export interface Dataset {
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"","sourcesContent":["import React from 'react';\n\ninterface TTBarChartAttributes {\n id: string;\n categories?: string;\n datasets?: string;\n direction?: 'horizontal' | 'vertical';\n 'x-axis-label'?: string;\n 'y-axis-label'?: string;\n color?: string;\n 'show-grid'?: boolean;\n 'show-legend'?: boolean;\n 'show-series-label'?: boolean;\n 'show-tooltip'?: boolean;\n}\n\nexport interface Dataset {\n label: string;\n data: number[];\n color?: string;\n}\n\ndeclare global {\n namespace JSX {\n interface IntrinsicElements {\n 'tt-bar-chart': React.DetailedHTMLProps<React.HTMLAttributes<HTMLElement> & TTBarChartAttributes, HTMLElement>;\n }\n }\n}\n"]}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"","sourcesContent":["import React from 'react';\n\ninterface TTBarChartAttributes {\n id: string;\n categories?: string;\n datasets?: string;\n direction?: 'horizontal' | 'vertical';\n 'x-axis-title'?: string;\n 'y-axis-title'?: string;\n color?: string;\n 'show-horizontal-grid'?: boolean;\n 'show-vertical-grid'?: boolean;\n 'show-legend'?: boolean;\n 'show-data-labels'?: boolean;\n 'show-tooltip'?: boolean;\n}\n\nexport interface Dataset {\n label: string;\n data: number[];\n color?: string;\n}\n\ndeclare global {\n namespace JSX {\n interface IntrinsicElements {\n 'tt-bar-chart': React.DetailedHTMLProps<React.HTMLAttributes<HTMLElement> & TTBarChartAttributes, HTMLElement>;\n }\n }\n}\n"]}
package/package.json CHANGED
@@ -3,7 +3,7 @@
3
3
  "description": "Webcomponent tt-bar-chart following open-wc recommendations",
4
4
  "license": "MIT",
5
5
  "author": "tt-bar-chart",
6
- "version": "0.1.1",
6
+ "version": "0.1.3",
7
7
  "type": "module",
8
8
  "main": "dist/src/index.js",
9
9
  "module": "dist/src/index.js",
@@ -32,7 +32,6 @@
32
32
  "test:watch": "tsc && concurrently -k -r \"tsc --watch --preserveWatchOutput\" \"wtr --watch\""
33
33
  },
34
34
  "dependencies": {
35
- "chart.js": "^4.5.1",
36
35
  "echarts": "^6.0.0",
37
36
  "lit": "^3.1.4"
38
37
  },