@@ -83,19 +83,25 @@ export class Data {
8383
8484 if ( this . _isIndexedDimension ( series ) ) {
8585 this . _validateIndexedDimension ( series )
86- this . _addDimension ( series . name , series . values ?? [ ] , series . categories )
86+ this . _addDimension (
87+ series . name ,
88+ series . values ?? [ ] ,
89+ series . categories ,
90+ series . isContiguous ?? false
91+ )
8792 } else {
8893 const values = series ?. values ?? ( [ ] as DataTypes [ ] )
8994 const seriesType = series ?. type ?? this . _detectType ( values )
9095
91- if ( seriesType === 'dimension' ) {
96+ if ( this . _isDetectedDimension ( series , seriesType ) ) {
9297 const { indexes, categories } = this . _convertDimension ( values )
93- this . _addDimension ( series . name , indexes , categories )
98+ this . _addDimension ( series . name , indexes , categories , series . isContiguous ?? false )
9499 } else if ( this . _isMeasure ( series , seriesType ) ) {
95100 if ( ! series . unit ) series . unit = ''
96101 this . _addMeasure ( series . name , series . unit , values )
97102 } else {
98- throw new Error ( 'invalid series type: ' + series . type )
103+ const seriesBase = series as D . SeriesBase
104+ throw new Error ( 'invalid series type: ' + seriesBase . type )
99105 }
100106 }
101107 }
@@ -107,11 +113,15 @@ export class Data {
107113 return true
108114 }
109115
116+ private _isDetectedDimension ( series : D . Series , type : string | null ) : series is D . Dimension {
117+ return (
118+ type === 'dimension' ||
119+ ( 'isContiguous' in series && typeof series . isContiguous === 'boolean' )
120+ )
121+ }
122+
110123 private _isMeasure ( series : D . Series , type : string | null ) : series is D . Measure {
111- if ( type === 'measure' || ( 'unit' in series && typeof series . unit === 'string' ) ) {
112- return true
113- }
114- return false
124+ return type === 'measure' || ( 'unit' in series && typeof series . unit === 'string' )
115125 }
116126
117127 private _validateIndexedDimension ( series : D . IndexDimension ) : void {
@@ -151,7 +161,12 @@ export class Data {
151161 return null
152162 }
153163
154- private _addDimension ( name : string , indexes : number [ ] , categories : string [ ] ) : void {
164+ private _addDimension (
165+ name : string ,
166+ indexes : number [ ] ,
167+ categories : string [ ] ,
168+ isContiguous : boolean
169+ ) : void {
155170 if ( typeof name !== 'string' ) {
156171 throw new Error ( 'first parameter should be string' )
157172 }
@@ -164,6 +179,10 @@ export class Data {
164179 throw new Error ( 'third parameter should be an array' )
165180 }
166181
182+ if ( typeof isContiguous !== 'boolean' ) {
183+ throw new Error ( 'fourth parameter should be boolean' )
184+ }
185+
167186 if ( ! this . _isStringArray ( categories ) ) {
168187 throw new Error ( 'third parameter should be an array of strings' )
169188 }
@@ -172,7 +191,7 @@ export class Data {
172191 throw new Error ( 'the measure index array element should be number' )
173192 }
174193
175- this . _cData . addDimension ( name , indexes , categories )
194+ this . _cData . addDimension ( name , indexes , categories , isContiguous )
176195 }
177196
178197 private _isStringArray ( values : unknown [ ] ) : values is string [ ] {
0 commit comments