@@ -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 }
0 commit comments