* Initialize from data
(
provider: DataProvider,
inputDimensions: DataStoreDimensionDefine[],
dimValueGetter?: DimValueGetter
)
| 190 | * Initialize from data |
| 191 | */ |
| 192 | initData( |
| 193 | provider: DataProvider, |
| 194 | inputDimensions: DataStoreDimensionDefine[], |
| 195 | dimValueGetter?: DimValueGetter |
| 196 | ): void { |
| 197 | if (__DEV__) { |
| 198 | assert( |
| 199 | isFunction(provider.getItem) && isFunction(provider.count), |
| 200 | 'Invalid data provider.' |
| 201 | ); |
| 202 | } |
| 203 | |
| 204 | this._provider = provider; |
| 205 | |
| 206 | // Clear |
| 207 | this._chunks = []; |
| 208 | this._indices = null; |
| 209 | this.getRawIndex = this._getRawIdxIdentity; |
| 210 | |
| 211 | const source = provider.getSource(); |
| 212 | const defaultGetter = this.defaultDimValueGetter = |
| 213 | defaultDimValueGetters[source.sourceFormat]; |
| 214 | // Default dim value getter |
| 215 | this._dimValueGetter = dimValueGetter || defaultGetter; |
| 216 | |
| 217 | // Reset raw extent. |
| 218 | this._rawExtent = []; |
| 219 | const willRetrieveDataByName = shouldRetrieveDataByName(source); |
| 220 | this._dimensions = map(inputDimensions, dim => { |
| 221 | if (__DEV__) { |
| 222 | if (willRetrieveDataByName) { |
| 223 | assert(dim.property != null); |
| 224 | } |
| 225 | } |
| 226 | return { |
| 227 | // Only pick these two props. Not leak other properties like orderMeta. |
| 228 | type: dim.type, |
| 229 | property: dim.property |
| 230 | }; |
| 231 | }); |
| 232 | |
| 233 | this._initDataFromProvider(0, provider.count()); |
| 234 | } |
| 235 | |
| 236 | getProvider(): DataProvider { |
| 237 | return this._provider; |