namirasoft-site-react 1.4.62 → 1.4.63
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/dist/App.js +16 -2
- package/dist/App.js.map +1 -1
- package/dist/components/NSChartDoughnut.d.ts +8 -0
- package/dist/components/NSChartDoughnut.js +82 -0
- package/dist/components/NSChartDoughnut.js.map +1 -0
- package/dist/components/NSChartPie.d.ts +3 -3
- package/dist/components/NSChartPie.js +51 -24
- package/dist/components/NSChartPie.js.map +1 -1
- package/dist/main.d.ts +1 -0
- package/dist/main.js +1 -0
- package/dist/main.js.map +1 -1
- package/package.json +2 -2
- package/src/App.tsx +22 -1
- package/src/components/NSChartDoughnut.tsx +108 -0
- package/src/components/NSChartPie.tsx +96 -93
- package/src/main.ts +1 -0
- package/dist/components/NSChartPie.module.css +0 -0
- package/src/components/NSChartPie.module.css +0 -0
package/dist/App.js
CHANGED
|
@@ -11,7 +11,7 @@ import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-run
|
|
|
11
11
|
import './App.css';
|
|
12
12
|
import 'bootstrap/dist/css/bootstrap.min.css';
|
|
13
13
|
import { NSTable } from './components/NSTable';
|
|
14
|
-
import { NSBarAlert, NSBoxBoolean, NSBoxBooleans, NSBoxDate, NSBoxEnum, NSBoxInteger, NSBoxPhone, NSBoxSearch, NSButtonBlue, NSDownTimer, NSNotFoundPage } from './main';
|
|
14
|
+
import { NSBarAlert, NSBoxBoolean, NSBoxBooleans, NSBoxDate, NSBoxEnum, NSBoxInteger, NSBoxPhone, NSBoxSearch, NSButtonBlue, NSChartPie, NSDownTimer, NSNotFoundPage } from './main';
|
|
15
15
|
import { useState } from 'react';
|
|
16
16
|
const fakeFormatter = {
|
|
17
17
|
format: (value) => { return value; }
|
|
@@ -180,7 +180,21 @@ export function App() {
|
|
|
180
180
|
} }), _jsx("div", { style: { width: "560px" }, children: _jsx(NSBoxSearch, { required: true, title: 'asdasd', style: { width: "100%", maxWidth: "100%" } }) }), _jsx(NSButtonBlue, { onClick: () => { }, title: 'sssssssssss', disabled: true }), _jsx(NSBarAlert, { isVisible: () => true, onContinue: () => window.open("/"), title: {
|
|
181
181
|
title: "Verify Your Email",
|
|
182
182
|
description: "Lorem ipsum dolor sit amet consectetur. In ipsum gravida libero vitae tempor.Ipsum"
|
|
183
|
-
} }), _jsx(
|
|
183
|
+
} }), _jsx("div", { className: "flex justify-content-center align-items-center w-100", children: _jsx(NSChartPie, { datas: [7, 5, 8, 22, 5, 18], labels: ["test", "test2", "test3", "test4", "test5", "test6",], backgroundColors: ["#FF5733",
|
|
184
|
+
"#42A5F5",
|
|
185
|
+
"#FFC107",
|
|
186
|
+
"#8BC34A",
|
|
187
|
+
"#FF5722",
|
|
188
|
+
"#673AB7",
|
|
189
|
+
"#E91E63",
|
|
190
|
+
"#4CAF50",
|
|
191
|
+
"#FF9800",
|
|
192
|
+
"#9C27B0",
|
|
193
|
+
"#2196F3",
|
|
194
|
+
"#FFEB3B",
|
|
195
|
+
"#FF4081",
|
|
196
|
+
"#00BCD4",
|
|
197
|
+
"#CDDC39",] }) }), _jsx(NSBoxBoolean, { required: false, title: 'test', checked: true }), _jsx("div", { className: 'out', children: _jsx("div", { className: "middle", children: _jsx("div", { className: 'in' }) }) }), _jsx(NSDownTimer, { date: new Date(), text: 'Test ' }), _jsx(NSBoxBooleans, { items: [
|
|
184
198
|
{ value: "test1", text: "test1" },
|
|
185
199
|
{ value: "test2", text: "test2" },
|
|
186
200
|
{ value: "test3", text: "test3" },
|
package/dist/App.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"App.js","sourceRoot":"","sources":["../src/App.tsx"],"names":[],"mappings":";;;;;;;;;;AAAA,OAAO,WAAW,CAAC;AACnB,OAAO,sCAAsC,CAAC;AAC9C,OAAO,EAAE,OAAO,EAAgD,MAAM,sBAAsB,CAAC;AAC7F,OAAO,EAAuB,UAAU,EAAE,YAAY,EAAE,aAAa,EAAE,SAAS,EAAE,SAAS,EAAE,YAAY,EAAE,UAAU,EAAE,WAAW,EAAE,YAAY,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,QAAQ,CAAC;
|
|
1
|
+
{"version":3,"file":"App.js","sourceRoot":"","sources":["../src/App.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { IBaseComponentProps } from '../props/IBaseComponentProps';
|
|
2
|
+
export interface NSChartDoughnutProps extends IBaseComponentProps {
|
|
3
|
+
title: string;
|
|
4
|
+
datas: number[];
|
|
5
|
+
labels: string[];
|
|
6
|
+
backgroundColors?: string[];
|
|
7
|
+
}
|
|
8
|
+
export declare function NSChartDoughnut(props: NSChartDoughnutProps): import("react/jsx-runtime").JSX.Element;
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { Doughnut } from 'react-chartjs-2';
|
|
3
|
+
import { Chart as ChartJS, ArcElement, Tooltip, Legend, Title, SubTitle, CategoryScale, LinearScale, BarElement, PointElement, LineElement } from 'chart.js';
|
|
4
|
+
ChartJS.register(ArcElement, Tooltip, Legend, Title, SubTitle, CategoryScale, LinearScale, BarElement, PointElement, LineElement);
|
|
5
|
+
export function NSChartDoughnut(props) {
|
|
6
|
+
var _a, _b;
|
|
7
|
+
let backgroundColors = [""];
|
|
8
|
+
const options = {
|
|
9
|
+
responsive: true,
|
|
10
|
+
plugins: {
|
|
11
|
+
legend: {
|
|
12
|
+
display: true,
|
|
13
|
+
responsive: true,
|
|
14
|
+
position: 'left',
|
|
15
|
+
labels: {
|
|
16
|
+
useBorderRadius: true,
|
|
17
|
+
borderRadius: 100,
|
|
18
|
+
boxWidth: 16,
|
|
19
|
+
color: 'hsla(250, 87%, 29%, 1)',
|
|
20
|
+
},
|
|
21
|
+
},
|
|
22
|
+
title: {
|
|
23
|
+
display: true,
|
|
24
|
+
},
|
|
25
|
+
tooltip: {
|
|
26
|
+
enabled: true,
|
|
27
|
+
titleFont: {
|
|
28
|
+
size: 12
|
|
29
|
+
},
|
|
30
|
+
bodyFont: {
|
|
31
|
+
size: 12
|
|
32
|
+
},
|
|
33
|
+
},
|
|
34
|
+
},
|
|
35
|
+
animation: {
|
|
36
|
+
animateScale: true,
|
|
37
|
+
}
|
|
38
|
+
};
|
|
39
|
+
const generateRandomColor = () => {
|
|
40
|
+
let maxVal = 0xFFFFFF;
|
|
41
|
+
let randomNumber = Math.random() * maxVal;
|
|
42
|
+
randomNumber = Math.floor(randomNumber);
|
|
43
|
+
let X = randomNumber.toString(16);
|
|
44
|
+
let randomColor = X.padStart(6, "0");
|
|
45
|
+
return `#${randomColor.toUpperCase()}`;
|
|
46
|
+
};
|
|
47
|
+
const setRandomColor = () => {
|
|
48
|
+
props.datas.forEach(() => backgroundColors === null || backgroundColors === void 0 ? void 0 : backgroundColors.push(generateRandomColor()));
|
|
49
|
+
return backgroundColors;
|
|
50
|
+
};
|
|
51
|
+
const data = {
|
|
52
|
+
labels: props.labels,
|
|
53
|
+
datasets: [
|
|
54
|
+
{
|
|
55
|
+
data: props.datas,
|
|
56
|
+
backgroundColor: (_a = props.backgroundColors) !== null && _a !== void 0 ? _a : setRandomColor(),
|
|
57
|
+
borderWidth: 0,
|
|
58
|
+
}
|
|
59
|
+
]
|
|
60
|
+
};
|
|
61
|
+
const centerTitlePlugin = {
|
|
62
|
+
id: 'centerTitle',
|
|
63
|
+
afterDraw(chart) {
|
|
64
|
+
const { ctx, chartArea: { width, height } } = chart;
|
|
65
|
+
const meta = chart.getDatasetMeta(0);
|
|
66
|
+
const arc = meta.data[0];
|
|
67
|
+
ctx.save();
|
|
68
|
+
const fontSize = arc.innerRadius / 3;
|
|
69
|
+
ctx.font = fontSize.toString() + "px";
|
|
70
|
+
ctx.fillStyle = 'hsla(234, 64%, 22%, 1)';
|
|
71
|
+
ctx.textBaseline = 'middle';
|
|
72
|
+
ctx.textAlign = 'center';
|
|
73
|
+
const text = props.title;
|
|
74
|
+
const centerX = (arc.x || width / 2);
|
|
75
|
+
const centerY = (arc.y || height / 2);
|
|
76
|
+
ctx.fillText(text, centerX, centerY);
|
|
77
|
+
ctx.restore();
|
|
78
|
+
}
|
|
79
|
+
};
|
|
80
|
+
return (_jsx("div", { className: `${(_b = props.classList) === null || _b === void 0 ? void 0 : _b.join(" ")} `, style: props.style, children: _jsx(Doughnut, { data: data, options: options, plugins: [centerTitlePlugin] }) }));
|
|
81
|
+
}
|
|
82
|
+
//# sourceMappingURL=NSChartDoughnut.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"NSChartDoughnut.js","sourceRoot":"","sources":["../../src/components/NSChartDoughnut.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { IBaseComponentProps } from '../props/IBaseComponentProps';
|
|
2
2
|
export interface NSChartPieProps extends IBaseComponentProps {
|
|
3
|
-
title
|
|
4
|
-
|
|
5
|
-
backgroundColor: string[];
|
|
3
|
+
title?: string;
|
|
4
|
+
datas: number[];
|
|
6
5
|
labels: string[];
|
|
6
|
+
backgroundColors?: string[];
|
|
7
7
|
}
|
|
8
8
|
export declare function NSChartPie(props: NSChartPieProps): import("react/jsx-runtime").JSX.Element;
|
|
@@ -1,54 +1,81 @@
|
|
|
1
1
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
-
import {
|
|
2
|
+
import { Pie } from 'react-chartjs-2';
|
|
3
3
|
import { Chart as ChartJS, ArcElement, Tooltip, Legend, Title, SubTitle, CategoryScale, LinearScale, BarElement, PointElement, LineElement } from 'chart.js';
|
|
4
4
|
ChartJS.register(ArcElement, Tooltip, Legend, Title, SubTitle, CategoryScale, LinearScale, BarElement, PointElement, LineElement);
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
5
|
+
export function NSChartPie(props) {
|
|
6
|
+
var _a, _b, _c;
|
|
7
|
+
let backgroundColors = [""];
|
|
8
|
+
const options = {
|
|
9
|
+
responsive: true,
|
|
10
|
+
plugins: {
|
|
11
|
+
legend: {
|
|
12
|
+
display: true,
|
|
13
|
+
responsive: true,
|
|
14
|
+
position: 'left',
|
|
15
|
+
labels: {
|
|
16
|
+
useBorderRadius: true,
|
|
17
|
+
borderRadius: 100,
|
|
18
|
+
boxWidth: 16,
|
|
19
|
+
color: 'hsla(250, 87%, 29%, 1)',
|
|
20
|
+
},
|
|
21
|
+
},
|
|
22
|
+
tooltip: {
|
|
23
|
+
enabled: true,
|
|
24
|
+
titleFont: {
|
|
25
|
+
size: 12
|
|
26
|
+
},
|
|
27
|
+
bodyFont: {
|
|
28
|
+
size: 12
|
|
29
|
+
},
|
|
12
30
|
},
|
|
13
31
|
},
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
}
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
32
|
+
animation: {
|
|
33
|
+
animateScale: true,
|
|
34
|
+
}
|
|
35
|
+
};
|
|
36
|
+
const generateRandomColor = () => {
|
|
37
|
+
let maxVal = 0xFFFFFF;
|
|
38
|
+
let randomNumber = Math.random() * maxVal;
|
|
39
|
+
randomNumber = Math.floor(randomNumber);
|
|
40
|
+
let X = randomNumber.toString(16);
|
|
41
|
+
let randomColor = X.padStart(6, "0");
|
|
42
|
+
return `#${randomColor.toUpperCase()}`;
|
|
43
|
+
};
|
|
44
|
+
const setRandomColor = () => {
|
|
45
|
+
props.datas.forEach(() => backgroundColors === null || backgroundColors === void 0 ? void 0 : backgroundColors.push(generateRandomColor()));
|
|
46
|
+
return backgroundColors;
|
|
47
|
+
};
|
|
24
48
|
const data = {
|
|
25
49
|
labels: props.labels,
|
|
26
50
|
datasets: [
|
|
27
51
|
{
|
|
28
|
-
data: props.
|
|
29
|
-
backgroundColor: props.
|
|
30
|
-
|
|
52
|
+
data: props.datas,
|
|
53
|
+
backgroundColor: (_a = props.backgroundColors) !== null && _a !== void 0 ? _a : setRandomColor(),
|
|
54
|
+
borderColor: (_b = props.backgroundColors) !== null && _b !== void 0 ? _b : setRandomColor(),
|
|
55
|
+
borderWidth: 1,
|
|
31
56
|
}
|
|
32
57
|
]
|
|
33
58
|
};
|
|
34
59
|
const centerTitlePlugin = {
|
|
35
60
|
id: 'centerTitle',
|
|
36
61
|
afterDraw(chart) {
|
|
62
|
+
var _a;
|
|
37
63
|
const { ctx, chartArea: { width, height } } = chart;
|
|
38
64
|
const meta = chart.getDatasetMeta(0);
|
|
39
65
|
const arc = meta.data[0];
|
|
40
66
|
ctx.save();
|
|
41
|
-
|
|
67
|
+
const fontSize = arc.innerRadius / 3;
|
|
68
|
+
ctx.font = fontSize.toString() + "px";
|
|
42
69
|
ctx.fillStyle = 'hsla(234, 64%, 22%, 1)';
|
|
43
70
|
ctx.textBaseline = 'middle';
|
|
44
71
|
ctx.textAlign = 'center';
|
|
45
|
-
const text = props.title;
|
|
72
|
+
const text = (_a = props.title) !== null && _a !== void 0 ? _a : "";
|
|
46
73
|
const centerX = (arc.x || width / 2);
|
|
47
74
|
const centerY = (arc.y || height / 2);
|
|
48
75
|
ctx.fillText(text, centerX, centerY);
|
|
49
76
|
ctx.restore();
|
|
50
77
|
}
|
|
51
78
|
};
|
|
52
|
-
return (_jsx("div", { className: `${(
|
|
79
|
+
return (_jsx("div", { className: `${(_c = props.classList) === null || _c === void 0 ? void 0 : _c.join(" ")} `, style: props.style, children: _jsx(Pie, { data: data, options: options, plugins: [centerTitlePlugin] }) }));
|
|
53
80
|
}
|
|
54
81
|
//# sourceMappingURL=NSChartPie.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"NSChartPie.js","sourceRoot":"","sources":["../../src/components/NSChartPie.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"NSChartPie.js","sourceRoot":"","sources":["../../src/components/NSChartPie.tsx"],"names":[],"mappings":"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"}
|
package/dist/main.d.ts
CHANGED
|
@@ -38,6 +38,7 @@ export * from "./components/NSCard";
|
|
|
38
38
|
export * from "./components/NSCardScreenshot";
|
|
39
39
|
export * from "./components/NSCopy";
|
|
40
40
|
export * from "./components/NSChartColumn";
|
|
41
|
+
export * from "./components/NSChartDoughnut";
|
|
41
42
|
export * from "./components/NSChartPie";
|
|
42
43
|
export * from "./components/NSChartTable";
|
|
43
44
|
export * from "./components/NSDeleteDialog";
|
package/dist/main.js
CHANGED
|
@@ -38,6 +38,7 @@ export * from "./components/NSCard";
|
|
|
38
38
|
export * from "./components/NSCardScreenshot";
|
|
39
39
|
export * from "./components/NSCopy";
|
|
40
40
|
export * from "./components/NSChartColumn";
|
|
41
|
+
export * from "./components/NSChartDoughnut";
|
|
41
42
|
export * from "./components/NSChartPie";
|
|
42
43
|
export * from "./components/NSChartTable";
|
|
43
44
|
export * from "./components/NSDeleteDialog";
|
package/dist/main.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"main.js","sourceRoot":"","sources":["../src/main.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"main.js","sourceRoot":"","sources":["../src/main.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
"framework": "npm",
|
|
9
9
|
"application": "package",
|
|
10
10
|
"private": false,
|
|
11
|
-
"version": "1.4.
|
|
11
|
+
"version": "1.4.63",
|
|
12
12
|
"author": "Amir Abolhasani, Alireza Esmaeeli",
|
|
13
13
|
"license": "MIT",
|
|
14
14
|
"main": "./dist/main.js",
|
|
@@ -22,7 +22,7 @@
|
|
|
22
22
|
},
|
|
23
23
|
"dependencies": {
|
|
24
24
|
"@ant-design/charts": "^2.2.3",
|
|
25
|
-
"@types/node": "^22.
|
|
25
|
+
"@types/node": "^22.10.0",
|
|
26
26
|
"@types/react": "^18.3.12",
|
|
27
27
|
"@types/react-bootstrap": "^0.32.37",
|
|
28
28
|
"@types/react-dom": "^18.3.1",
|
package/src/App.tsx
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import './App.css';
|
|
2
2
|
import 'bootstrap/dist/css/bootstrap.min.css';
|
|
3
3
|
import { NSTable, INSTableProps, TableColumnInfo, TableRowInfo } from './components/NSTable';
|
|
4
|
-
import { BaseColumnFormatter, NSBarAlert, NSBoxBoolean, NSBoxBooleans, NSBoxDate, NSBoxEnum, NSBoxInteger, NSBoxPhone, NSBoxSearch, NSButtonBlue, NSDownTimer, NSNotFoundPage } from './main';
|
|
4
|
+
import { BaseColumnFormatter, NSBarAlert, NSBoxBoolean, NSBoxBooleans, NSBoxDate, NSBoxEnum, NSBoxInteger, NSBoxPhone, NSBoxSearch, NSButtonBlue, NSChartPie, NSDownTimer, NSNotFoundPage } from './main';
|
|
5
5
|
import { useState } from 'react';
|
|
6
6
|
|
|
7
7
|
export interface INSBarActionState
|
|
@@ -261,6 +261,27 @@ export function App()
|
|
|
261
261
|
}
|
|
262
262
|
}
|
|
263
263
|
/>
|
|
264
|
+
<div className="flex justify-content-center align-items-center w-100">
|
|
265
|
+
<NSChartPie
|
|
266
|
+
datas={[7, 5, 8, 22, 5, 18]}
|
|
267
|
+
labels={["test", "test2", "test3", "test4", "test5", "test6",]}
|
|
268
|
+
backgroundColors={["#FF5733",
|
|
269
|
+
"#42A5F5",
|
|
270
|
+
"#FFC107",
|
|
271
|
+
"#8BC34A",
|
|
272
|
+
"#FF5722",
|
|
273
|
+
"#673AB7",
|
|
274
|
+
"#E91E63",
|
|
275
|
+
"#4CAF50",
|
|
276
|
+
"#FF9800",
|
|
277
|
+
"#9C27B0",
|
|
278
|
+
"#2196F3",
|
|
279
|
+
"#FFEB3B",
|
|
280
|
+
"#FF4081",
|
|
281
|
+
"#00BCD4",
|
|
282
|
+
"#CDDC39",]}
|
|
283
|
+
/>
|
|
284
|
+
</div>
|
|
264
285
|
<NSBoxBoolean
|
|
265
286
|
required={false}
|
|
266
287
|
title='test'
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
/* eslint-disable @typescript-eslint/no-unused-vars */
|
|
2
|
+
import { Doughnut } from 'react-chartjs-2';
|
|
3
|
+
import { Chart as ChartJS, ArcElement, Tooltip, Legend, Title, SubTitle, CategoryScale, LinearScale, BarElement, PointElement, LineElement, ChartData, Plugin, ArcElement as ArcElementType } from 'chart.js';
|
|
4
|
+
import { IBaseComponentProps } from '../props/IBaseComponentProps';
|
|
5
|
+
|
|
6
|
+
ChartJS.register(ArcElement, Tooltip, Legend, Title, SubTitle, CategoryScale, LinearScale, BarElement, PointElement, LineElement);
|
|
7
|
+
export interface NSChartDoughnutProps extends IBaseComponentProps
|
|
8
|
+
{
|
|
9
|
+
title: string;
|
|
10
|
+
datas: number[];
|
|
11
|
+
labels: string[]
|
|
12
|
+
backgroundColors?: string[];
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
export function NSChartDoughnut(props: NSChartDoughnutProps)
|
|
17
|
+
{
|
|
18
|
+
let backgroundColors: string[] = [""];
|
|
19
|
+
const options = {
|
|
20
|
+
responsive: true,
|
|
21
|
+
plugins: {
|
|
22
|
+
legend: {
|
|
23
|
+
display: true,
|
|
24
|
+
responsive: true,
|
|
25
|
+
position: 'left' as 'top',
|
|
26
|
+
labels: {
|
|
27
|
+
useBorderRadius: true,
|
|
28
|
+
borderRadius: 100,
|
|
29
|
+
boxWidth: 16,
|
|
30
|
+
color: 'hsla(250, 87%, 29%, 1)',
|
|
31
|
+
},
|
|
32
|
+
},
|
|
33
|
+
title: {
|
|
34
|
+
display: true,
|
|
35
|
+
},
|
|
36
|
+
tooltip: {
|
|
37
|
+
enabled: true,
|
|
38
|
+
titleFont: {
|
|
39
|
+
size: 12
|
|
40
|
+
},
|
|
41
|
+
bodyFont: {
|
|
42
|
+
size: 12
|
|
43
|
+
},
|
|
44
|
+
},
|
|
45
|
+
},
|
|
46
|
+
animation: {
|
|
47
|
+
animateScale: true,
|
|
48
|
+
}
|
|
49
|
+
};
|
|
50
|
+
|
|
51
|
+
const generateRandomColor = (): string =>
|
|
52
|
+
{
|
|
53
|
+
let maxVal = 0xFFFFFF;
|
|
54
|
+
let randomNumber: number = Math.random() * maxVal;
|
|
55
|
+
randomNumber = Math.floor(randomNumber);
|
|
56
|
+
let X: string = randomNumber.toString(16);
|
|
57
|
+
let randomColor: string = X.padStart(6, "0");
|
|
58
|
+
return `#${randomColor.toUpperCase()}`
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
const setRandomColor = (): string[] =>
|
|
62
|
+
{
|
|
63
|
+
props.datas.forEach(() => backgroundColors?.push(generateRandomColor()))
|
|
64
|
+
return backgroundColors;
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
const data: ChartData<'doughnut'> = {
|
|
68
|
+
labels: props.labels,
|
|
69
|
+
datasets: [
|
|
70
|
+
{
|
|
71
|
+
data: props.datas,
|
|
72
|
+
backgroundColor: props.backgroundColors ?? setRandomColor(),
|
|
73
|
+
borderWidth: 0,
|
|
74
|
+
}
|
|
75
|
+
]
|
|
76
|
+
};
|
|
77
|
+
const centerTitlePlugin: Plugin<'doughnut'> = {
|
|
78
|
+
id: 'centerTitle',
|
|
79
|
+
afterDraw(chart)
|
|
80
|
+
{
|
|
81
|
+
const { ctx, chartArea: { width, height } } = chart;
|
|
82
|
+
const meta = chart.getDatasetMeta(0);
|
|
83
|
+
const arc = meta.data[0] as unknown as ArcElementType;
|
|
84
|
+
ctx.save();
|
|
85
|
+
const fontSize = arc.innerRadius / 3;
|
|
86
|
+
ctx.font = fontSize.toString() + "px";
|
|
87
|
+
ctx.fillStyle = 'hsla(234, 64%, 22%, 1)';
|
|
88
|
+
ctx.textBaseline = 'middle';
|
|
89
|
+
ctx.textAlign = 'center';
|
|
90
|
+
|
|
91
|
+
const text = props.title;
|
|
92
|
+
const centerX = (arc.x || width / 2);
|
|
93
|
+
const centerY = (arc.y || height / 2);
|
|
94
|
+
|
|
95
|
+
ctx.fillText(text, centerX, centerY);
|
|
96
|
+
ctx.restore();
|
|
97
|
+
}
|
|
98
|
+
};
|
|
99
|
+
return (
|
|
100
|
+
<div className={`${props.classList?.join(" ")} `} style={props.style}>
|
|
101
|
+
<Doughnut
|
|
102
|
+
data={data}
|
|
103
|
+
options={options}
|
|
104
|
+
plugins={[centerTitlePlugin]}
|
|
105
|
+
/>
|
|
106
|
+
</div>
|
|
107
|
+
);
|
|
108
|
+
}
|
|
@@ -1,105 +1,108 @@
|
|
|
1
1
|
/* eslint-disable @typescript-eslint/no-unused-vars */
|
|
2
|
-
import {
|
|
3
|
-
import
|
|
4
|
-
{
|
|
5
|
-
Chart as ChartJS,
|
|
6
|
-
ArcElement,
|
|
7
|
-
Tooltip,
|
|
8
|
-
Legend,
|
|
9
|
-
Title,
|
|
10
|
-
SubTitle,
|
|
11
|
-
CategoryScale,
|
|
12
|
-
LinearScale,
|
|
13
|
-
BarElement,
|
|
14
|
-
PointElement,
|
|
15
|
-
LineElement,
|
|
16
|
-
ChartData,
|
|
17
|
-
Plugin,
|
|
18
|
-
ArcElement as ArcElementType
|
|
19
|
-
} from 'chart.js';
|
|
2
|
+
import { Pie } from 'react-chartjs-2';
|
|
3
|
+
import { Chart as ChartJS, ArcElement, Tooltip, Legend, Title, SubTitle, CategoryScale, LinearScale, BarElement, PointElement, LineElement, ChartData, Plugin, ArcElement as ArcElementType } from 'chart.js';
|
|
20
4
|
import { IBaseComponentProps } from '../props/IBaseComponentProps';
|
|
21
5
|
|
|
22
|
-
ChartJS.register(
|
|
23
|
-
ArcElement, Tooltip, Legend, Title,
|
|
24
|
-
SubTitle,
|
|
25
|
-
CategoryScale,
|
|
26
|
-
LinearScale,
|
|
27
|
-
BarElement,
|
|
28
|
-
PointElement,
|
|
29
|
-
LineElement
|
|
30
|
-
);
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
6
|
+
ChartJS.register(ArcElement, Tooltip, Legend, Title, SubTitle, CategoryScale, LinearScale, BarElement, PointElement, LineElement);
|
|
34
7
|
export interface NSChartPieProps extends IBaseComponentProps
|
|
35
8
|
{
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
9
|
+
title?: string;
|
|
10
|
+
datas: number[];
|
|
11
|
+
labels: string[]
|
|
12
|
+
backgroundColors?: string[];
|
|
40
13
|
}
|
|
41
|
-
|
|
42
|
-
const options = {
|
|
43
|
-
responsive: true,
|
|
44
|
-
plugins: {
|
|
45
|
-
legend: {
|
|
46
|
-
position: 'left' as 'top',
|
|
47
|
-
labels: {
|
|
48
|
-
color: 'hsla(250, 87%, 29%, 1)',
|
|
49
|
-
},
|
|
50
|
-
},
|
|
51
|
-
title: {
|
|
52
|
-
display: true,
|
|
53
|
-
},
|
|
54
|
-
},
|
|
55
|
-
animation: {
|
|
56
|
-
animateScale: true,
|
|
57
|
-
}
|
|
58
|
-
};
|
|
59
|
-
|
|
60
14
|
export function NSChartPie(props: NSChartPieProps)
|
|
61
15
|
{
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
16
|
+
let backgroundColors: string[] = [""];
|
|
17
|
+
const options = {
|
|
18
|
+
responsive: true,
|
|
19
|
+
plugins: {
|
|
20
|
+
legend: {
|
|
21
|
+
display: true,
|
|
22
|
+
responsive: true,
|
|
23
|
+
position: 'left' as 'top',
|
|
24
|
+
labels: {
|
|
25
|
+
useBorderRadius: true,
|
|
26
|
+
borderRadius: 100,
|
|
27
|
+
boxWidth: 16,
|
|
28
|
+
color: 'hsla(250, 87%, 29%, 1)',
|
|
29
|
+
},
|
|
30
|
+
},
|
|
31
|
+
// title: {
|
|
32
|
+
// display: false,
|
|
33
|
+
// },
|
|
34
|
+
tooltip: {
|
|
35
|
+
enabled: true,
|
|
36
|
+
titleFont: {
|
|
37
|
+
size: 12
|
|
38
|
+
},
|
|
39
|
+
bodyFont: {
|
|
40
|
+
size: 12
|
|
41
|
+
},
|
|
42
|
+
},
|
|
43
|
+
},
|
|
44
|
+
animation: {
|
|
45
|
+
animateScale: true,
|
|
46
|
+
}
|
|
47
|
+
};
|
|
48
|
+
|
|
49
|
+
const generateRandomColor = (): string =>
|
|
50
|
+
{
|
|
51
|
+
let maxVal = 0xFFFFFF;
|
|
52
|
+
let randomNumber: number = Math.random() * maxVal;
|
|
53
|
+
randomNumber = Math.floor(randomNumber);
|
|
54
|
+
let X: string = randomNumber.toString(16);
|
|
55
|
+
let randomColor: string = X.padStart(6, "0");
|
|
56
|
+
return `#${randomColor.toUpperCase()}`
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
const setRandomColor = (): string[] =>
|
|
60
|
+
{
|
|
61
|
+
props.datas.forEach(() => backgroundColors?.push(generateRandomColor()))
|
|
62
|
+
return backgroundColors;
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
const data: ChartData<'pie'> = {
|
|
66
|
+
labels: props.labels,
|
|
67
|
+
datasets: [
|
|
68
|
+
{
|
|
69
|
+
data: props.datas,
|
|
70
|
+
backgroundColor: props.backgroundColors ?? setRandomColor(),
|
|
71
|
+
borderColor: props.backgroundColors ?? setRandomColor(),
|
|
72
|
+
borderWidth: 1,
|
|
73
|
+
}
|
|
74
|
+
]
|
|
75
|
+
};
|
|
76
|
+
const centerTitlePlugin: Plugin<'pie'> = {
|
|
77
|
+
id: 'centerTitle',
|
|
78
|
+
afterDraw(chart)
|
|
79
|
+
{
|
|
80
|
+
const { ctx, chartArea: { width, height } } = chart;
|
|
81
|
+
const meta = chart.getDatasetMeta(0);
|
|
82
|
+
const arc = meta.data[0] as unknown as ArcElementType;
|
|
79
83
|
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
ctx.textAlign = 'center';
|
|
84
|
+
ctx.save();
|
|
85
|
+
const fontSize = arc.innerRadius / 3;
|
|
86
|
+
ctx.font = fontSize.toString() + "px";
|
|
87
|
+
ctx.fillStyle = 'hsla(234, 64%, 22%, 1)';
|
|
88
|
+
ctx.textBaseline = 'middle';
|
|
89
|
+
ctx.textAlign = 'center';
|
|
87
90
|
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
+
const text = props.title ?? "";
|
|
92
|
+
const centerX = (arc.x || width / 2);
|
|
93
|
+
const centerY = (arc.y || height / 2);
|
|
91
94
|
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
95
|
+
ctx.fillText(text, centerX, centerY);
|
|
96
|
+
ctx.restore();
|
|
97
|
+
}
|
|
98
|
+
};
|
|
99
|
+
return (
|
|
100
|
+
<div className={`${props.classList?.join(" ")} `} style={props.style}>
|
|
101
|
+
<Pie
|
|
102
|
+
data={data}
|
|
103
|
+
options={options}
|
|
104
|
+
plugins={[centerTitlePlugin]}
|
|
105
|
+
/>
|
|
106
|
+
</div>
|
|
107
|
+
);
|
|
105
108
|
}
|
package/src/main.ts
CHANGED
|
@@ -38,6 +38,7 @@ export * from "./components/NSCard";
|
|
|
38
38
|
export * from "./components/NSCardScreenshot"
|
|
39
39
|
export * from "./components/NSCopy";
|
|
40
40
|
export * from "./components/NSChartColumn";
|
|
41
|
+
export * from "./components/NSChartDoughnut";
|
|
41
42
|
export * from "./components/NSChartPie";
|
|
42
43
|
export * from "./components/NSChartTable";
|
|
43
44
|
export * from "./components/NSDeleteDialog";
|
|
File without changes
|
|
File without changes
|