Skip to content

Commit f1c6fd2

Browse files
committed
Presets can set channel properties.
1 parent 4638aa6 commit f1c6fd2

File tree

2 files changed

+23
-53
lines changed

2 files changed

+23
-53
lines changed

src/apps/weblib/js-api/presets.js

Lines changed: 23 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -252,29 +252,30 @@ export default class Presets {
252252
radialBar: {
253253
channels: {
254254
x: "angle",
255-
y: "radius",
255+
y: { set: "radius", range: { min: '-50%' } },
256256
},
257257
coordSystem: "polar",
258258
},
259259
radialStackedBar: {
260260
channels: {
261261
x: ["angle", "stackedBy"],
262-
y: "radius",
262+
y: { set: "radius", range: { min: '-50%' } },
263263
color: "stackedBy",
264264
},
265265
coordSystem: "polar",
266266
},
267267
donut: {
268268
channels: {
269269
x: ["angle", "stackedBy"],
270+
y: { range: {min:'-200%', max:'100%'} },
270271
color: "stackedBy",
271272
},
272273
coordSystem: "polar",
273274
},
274275
nestedDonut: {
275276
channels: {
276277
x: ["angle", "stackedBy"],
277-
y: "radius",
278+
y: { set: "radius", range: { min: '-50%' } },
278279
color: "stackedBy",
279280
label: "angle",
280281
},
@@ -339,12 +340,23 @@ export default class Presets {
339340
};
340341

341342
for (let key in this._presetConfigs) {
343+
this._initPresetConfigChannels(this._presetConfigs[key].channels);
342344
this[key] = (config) => {
343345
return this._buildPresetConfig(key, config);
344346
};
345347
}
346348
}
347349

350+
_initPresetConfigChannels(channels) {
351+
for (let channel in channels) {
352+
if (typeof channels[channel] !== 'object' || Array.isArray(channels[channel])) {
353+
channels[channel] = {
354+
set: channels[channel]
355+
};
356+
}
357+
}
358+
}
359+
348360
_nullConfig() {
349361
return {
350362
align: "none",
@@ -385,17 +397,19 @@ export default class Presets {
385397
if (!config) return;
386398
let channels = presetConfig.channels;
387399
for (let channel in channels) {
388-
if (typeof channels[channel] === "string") {
389-
channels[channel] = this._getChannelCopy(config[channels[channel]]);
390-
} else if (Array.isArray(channels[channel])) {
400+
if (channels[channel] === null) {
401+
continue;
402+
} else if (typeof channels[channel].set === "string") {
403+
channels[channel].set = this._getChannelCopy(config[channels[channel].set]);
404+
} else if (Array.isArray(channels[channel].set)) {
391405
let newChannel = [];
392-
for (let i = 0; i < channels[channel].length; i++) {
393-
let channelConfig = this._getChannelCopy(config[channels[channel][i]]);
406+
for (let i = 0; i < channels[channel].set.length; i++) {
407+
let channelConfig = this._getChannelCopy(config[channels[channel].set[i]]);
394408
if (channelConfig !== null) {
395409
newChannel.push(channelConfig);
396410
}
397411
}
398-
channels[channel] = newChannel.length > 0 ? newChannel.flat() : null;
412+
channels[channel].set = newChannel.length > 0 ? newChannel.flat() : null;
399413
}
400414
}
401415
}

test/integration/test_cases/web_content/preset/47_P_R_polar_area.mjs

Lines changed: 0 additions & 44 deletions
This file was deleted.

0 commit comments

Comments
 (0)