(setting: OrdinalScaleSetting)
| 127 | |
| 128 | |
| 129 | constructor(setting: OrdinalScaleSetting) { |
| 130 | super(); |
| 131 | |
| 132 | this.parse = OrdinalScale.parse; |
| 133 | |
| 134 | decorateScaleMapper(this, OrdinalScale.decoratedMethods); |
| 135 | |
| 136 | let ordinalMeta = setting.ordinalMeta; |
| 137 | // Caution: Should not use instanceof, consider ec-extensions using |
| 138 | // import approach to get OrdinalMeta class. |
| 139 | if (!ordinalMeta) { |
| 140 | ordinalMeta = new OrdinalMeta({}); |
| 141 | } |
| 142 | if (isArray(ordinalMeta)) { |
| 143 | ordinalMeta = new OrdinalMeta({ |
| 144 | categories: map(ordinalMeta, item => (isObject(item) ? item.value : item)) |
| 145 | }); |
| 146 | } |
| 147 | this._ordinalMeta = ordinalMeta as OrdinalMeta; |
| 148 | |
| 149 | // Create an interval LinearScaleMapper, and decorate it. |
| 150 | const res = initBreakOrLinearMapper( |
| 151 | null, |
| 152 | null, // Do not support break in OrdinalScale yet. |
| 153 | setting.extent || [0, ordinalMeta.categories.length - 1] |
| 154 | ); |
| 155 | this._mapper = res.mapper; |
| 156 | |
| 157 | enableScaleMapperFreeze(this, res.mapper); |
| 158 | } |
| 159 | |
| 160 | private static parse(this: OrdinalScale, val: OrdinalRawValue | OrdinalNumber): OrdinalNumber { |
| 161 | // Caution: Math.round(null) will return `0` rather than `NaN` |
nothing calls this directly
no test coverage detected