Skip to content

Commit dc04249

Browse files
committed
feat: add loader options parsing
1 parent cb073b9 commit dc04249

File tree

3 files changed

+17
-14
lines changed

3 files changed

+17
-14
lines changed

src/App.vue

+1
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,7 @@
4848
:thickness="20"
4949
:empty-thickness="10"
5050
dot="10 red"
51+
:loader="{ thickness: 40, color: 'red' }"
5152
line-mode="bottom"
5253
:no-data="noData"
5354
:determinate="determinate"

src/components/VueEllipseProgress.vue

+13-11
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ import { getNumberIfValid, isValidNumber } from "../utils";
3939
import props from "./interface";
4040
import CircleContainer from "./Circle/CircleContainer.vue";
4141
import Counter from "./Counter.vue";
42-
import parseOptions from "./optionsParser";
42+
import { parseOptions, calcThickness, lineModeParser } from "./optionsParser";
4343
4444
export default {
4545
name: "VueEllipseProgress",
@@ -84,17 +84,19 @@ export default {
8484
const previousCircles = [];
8585
for (let i = 0; i < this.circlesData.length; i++) {
8686
const options = this.circlesData[i];
87-
normalizedCircles.push({
88-
...parseOptions({
89-
index: i,
90-
id: i,
91-
...options,
92-
globalDot: this.dot,
93-
globalGap: this.gap,
94-
globalThickness: this.thickness,
95-
previousCircles: [...previousCircles],
96-
}),
87+
const parsedOptions = parseOptions({
88+
index: i,
89+
id: i,
90+
...options,
91+
globalDot: this.dot,
92+
globalGap: this.gap,
93+
globalThickness: this.thickness,
94+
previousCircles: [...previousCircles],
9795
});
96+
const loaderOptions = { ...parsedOptions, ...parsedOptions.loader };
97+
loaderOptions.thickness = calcThickness(loaderOptions.thickness, parsedOptions.size);
98+
loaderOptions.lineMode = parsedOptions.loader.lineMode ? lineModeParser(loaderOptions) : parsedOptions.lineMode;
99+
normalizedCircles.push({ ...parsedOptions, loader: loaderOptions });
98100
const { gap, thickness, dot } = normalizedCircles[i];
99101
previousCircles.push({ gap, thickness, dot });
100102
}

src/components/optionsParser.js

+3-3
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import { getNumberIfValid, isValidNumber } from "@/utils";
22

3-
const lineModeParser = (options) => {
3+
export const lineModeParser = (options) => {
44
const lineModeConfig = options.lineMode.trim().split(" ");
55
const mode = options.multiple ? "multiple" : lineModeConfig[0];
66
return {
@@ -49,12 +49,12 @@ const dotParser = (dot) => {
4949
};
5050
};
5151

52-
const calcThickness = (thickness, size) => {
52+
export const calcThickness = (thickness, size) => {
5353
const value = parseFloat(thickness);
5454
return thickness.toString().includes("%") ? (value * size) / 100 : value;
5555
};
5656

57-
export default (options) => {
57+
export const parseOptions = (options) => {
5858
const dot = dotParser(options.dot);
5959
const globalDot = dotParser(options.globalDot);
6060
return {

0 commit comments

Comments
 (0)