UNPKG

4.1 kBJavaScriptView Raw
1'use strict';
2
3Object.defineProperty(exports, "__esModule", {
4 value: true
5});
6
7var _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"]) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError("Invalid attempt to destructure non-iterable instance"); } }; }();
8
9exports.toCoverage = toCoverage;
10
11var _constants = require('./constants.js');
12
13var _validate = require('./validate.js');
14
15var _subset = require('./subset.js');
16
17function _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } }
18
19/**
20 * Wraps a Domain into a Coverage object by adding dummy parameter and range data.
21 *
22 * @param {Domain} domain the Domain object
23 * @return {Coverage}
24 */
25function toCoverage(domain) {
26 (0, _validate.checkDomain)(domain);
27
28 var dummyKey = 'domain';
29 var dummyLabel = 'Domain';
30
31 var assumeGrid = domain.axes.has('x') && domain.axes.has('y') && (domain.axes.get('x').values.length > 1 || domain.axes.get('y').values.length > 1);
32 var categories = void 0;
33 var categoryEncoding = void 0;
34 var a = 'a';
35 var av = 0;
36 var b = 'b';
37 var bv = 1;
38 if (assumeGrid) {
39 categories = [{
40 id: a,
41 label: { en: 'A' }
42 }, {
43 id: b,
44 label: { en: 'B' }
45 }];
46 categoryEncoding = new Map([[a, [av]], [b, [bv]]]);
47 } else {
48 categories = [{
49 id: a,
50 label: { en: 'X' }
51 }];
52 categoryEncoding = new Map([[a, [av]]]);
53 }
54
55 var parameters = new Map();
56 parameters.set(dummyKey, {
57 key: dummyKey,
58 observedProperty: {
59 label: { en: dummyLabel },
60 categories: categories
61 },
62 categoryEncoding: categoryEncoding
63 });
64
65 var shape = new Map([].concat(_toConsumableArray(domain.axes)).map(function (_ref) {
66 var _ref2 = _slicedToArray(_ref, 2);
67
68 var name = _ref2[0];
69 var axis = _ref2[1];
70 return [name, axis.values.length];
71 }));
72
73 var get = void 0;
74 if (assumeGrid) {
75 (function () {
76 // checkerboard pattern to see grid cells
77 var isOdd = function isOdd(n) {
78 return n % 2;
79 };
80 get = function get(_ref3) {
81 var _ref3$x = _ref3.x;
82 var x = _ref3$x === undefined ? 0 : _ref3$x;
83 var _ref3$y = _ref3.y;
84 var y = _ref3$y === undefined ? 0 : _ref3$y;
85 return isOdd(x + y) ? av : bv;
86 };
87 })();
88 } else {
89 get = function get() {
90 return av;
91 };
92 }
93
94 var loadRange = function loadRange() {
95 return Promise.resolve({
96 shape: shape,
97 dataType: 'integer',
98 get: get
99 });
100 };
101
102 var cov = {
103 type: _constants.COVERAGE,
104 // TODO remove domainProfiles in favour of domainType at some point
105 domainProfiles: domain.profiles,
106 domainType: domain.domainType,
107 parameters: parameters,
108 loadDomain: function loadDomain() {
109 return Promise.resolve(domain);
110 },
111 loadRange: loadRange
112 };
113 addLoadRangesFunction(cov);
114 addSubsetFunctions(cov);
115 return cov;
116}
117
118function addSubsetFunctions(cov) {
119 (0, _validate.checkCoverage)(cov);
120 cov.subsetByIndex = _subset.subsetCoverageByIndex.bind(null, cov);
121 cov.subsetByValue = _subset.subsetCoverageByValue.bind(null, cov);
122}
123
124function addLoadRangesFunction(cov) {
125 (0, _validate.checkCoverage)(cov);
126 function loadRanges(keys) {
127 if (!keys) {
128 keys = cov.parameters.keys();
129 }
130 return Promise.all([].concat(_toConsumableArray(keys)).map(cov.loadRange)).then(function (ranges) {
131 return new Map(keys.map(function (key, i) {
132 return [key, ranges[i]];
133 }));
134 });
135 }
136 cov.loadRanges = loadRanges;
137}
\No newline at end of file