1 | 'use strict';
|
2 |
|
3 | Object.defineProperty(exports, "__esModule", {
|
4 | value: true
|
5 | });
|
6 |
|
7 | var _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 |
|
9 | exports.toCoverage = toCoverage;
|
10 |
|
11 | var _constants = require('./constants.js');
|
12 |
|
13 | var _validate = require('./validate.js');
|
14 |
|
15 | var _subset = require('./subset.js');
|
16 |
|
17 | function _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 |
|
21 |
|
22 |
|
23 |
|
24 |
|
25 | function 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 |
|
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 |
|
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 |
|
118 | function 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 |
|
124 | function 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 |