(original, excludeDimensions)
| 31577 | |
| 31578 | // Data in excludeDimensions is copied, otherwise transfered. |
| 31579 | function cloneListForMapAndSample(original, excludeDimensions) { |
| 31580 | var allDimensions = original.dimensions; |
| 31581 | var list = new List( |
| 31582 | map(allDimensions, original.getDimensionInfo, original), |
| 31583 | original.hostModel |
| 31584 | ); |
| 31585 | // FIXME If needs stackedOn, value may already been stacked |
| 31586 | transferProperties(list, original); |
| 31587 | |
| 31588 | var storage = list._storage = {}; |
| 31589 | var originalStorage = original._storage; |
| 31590 | |
| 31591 | // Init storage |
| 31592 | for (var i = 0; i < allDimensions.length; i++) { |
| 31593 | var dim = allDimensions[i]; |
| 31594 | if (originalStorage[dim]) { |
| 31595 | // Notice that we do not reset invertedIndicesMap here, becuase |
| 31596 | // there is no scenario of mapping or sampling ordinal dimension. |
| 31597 | if (indexOf(excludeDimensions, dim) >= 0) { |
| 31598 | storage[dim] = cloneDimStore(originalStorage[dim]); |
| 31599 | list._rawExtent[dim] = getInitialExtent(); |
| 31600 | list._extent[dim] = null; |
| 31601 | } |
| 31602 | else { |
| 31603 | // Direct reference for other dimensions |
| 31604 | storage[dim] = originalStorage[dim]; |
| 31605 | } |
| 31606 | } |
| 31607 | } |
| 31608 | return list; |
| 31609 | } |
| 31610 | |
| 31611 | function cloneDimStore(originalDimStore) { |
| 31612 | var newDimStore = new Array(originalDimStore.length); |
no test coverage detected