@zajno/common 1.4.12 → 1.4.15
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/coverage/clover.xml +491 -401
- package/coverage/coverage-final.json +31 -28
- package/coverage/lcov-report/CommonModel.ts.html +215 -0
- package/coverage/lcov-report/FlagModel.ts.html +290 -0
- package/coverage/lcov-report/MultiSelectModel.ts.html +614 -0
- package/coverage/lcov-report/NumberModel.ts.html +230 -0
- package/coverage/lcov-report/SelectModel.ts.html +503 -0
- package/coverage/lcov-report/Validatable.ts.html +386 -0
- package/coverage/lcov-report/async/index.html +111 -0
- package/coverage/lcov-report/async/timeout.ts.html +230 -0
- package/coverage/lcov-report/index.html +35 -35
- package/coverage/lcov-report/src/__tests__/helpers/index.html +1 -1
- package/coverage/lcov-report/src/__tests__/helpers/main.ts.html +1 -1
- package/coverage/lcov-report/src/async/arrays.ts.html +5 -5
- package/coverage/lcov-report/src/async/index.html +1 -1
- package/coverage/lcov-report/src/async/timeout.ts.html +12 -12
- package/coverage/lcov-report/src/cache.ts.html +1 -1
- package/coverage/lcov-report/src/dates/calc.ts.html +1 -1
- package/coverage/lcov-report/src/dates/convert.ts.html +1 -1
- package/coverage/lcov-report/src/dates/datex.ts.html +1 -1
- package/coverage/lcov-report/src/dates/format.ts.html +1 -1
- package/coverage/lcov-report/src/dates/index.html +1 -1
- package/coverage/lcov-report/src/dates/index.ts.html +1 -1
- package/coverage/lcov-report/src/dates/parse.ts.html +1 -1
- package/coverage/lcov-report/src/dates/period.ts.html +1 -1
- package/coverage/lcov-report/src/dates/shift.ts.html +1 -1
- package/coverage/lcov-report/src/dates/types.ts.html +1 -1
- package/coverage/lcov-report/src/dates/yearDate.ts.html +1 -1
- package/coverage/lcov-report/src/disposer.ts.html +1 -1
- package/coverage/lcov-report/src/enumHelper.ts.html +10 -10
- package/coverage/lcov-report/src/event.ts.html +1 -1
- package/coverage/lcov-report/src/fields/index.html +1 -1
- package/coverage/lcov-report/src/fields/update.ts.html +1 -1
- package/coverage/lcov-report/src/functions.ts.html +1 -1
- package/coverage/lcov-report/src/index.html +19 -19
- package/coverage/lcov-report/src/lazy.light.ts.html +6 -6
- package/coverage/lcov-report/src/logger/batch.ts.html +2 -2
- package/coverage/lcov-report/src/logger/console.ts.html +5 -5
- package/coverage/lcov-report/src/logger/index.html +1 -1
- package/coverage/lcov-report/src/logger/index.ts.html +22 -22
- package/coverage/lcov-report/src/logger/named.ts.html +13 -13
- package/coverage/lcov-report/src/logger/proxy.ts.html +7 -7
- package/coverage/lcov-report/src/math/arrays.ts.html +23 -23
- package/coverage/lcov-report/src/math/calc.ts.html +9 -9
- package/coverage/lcov-report/src/math/distribution.ts.html +2 -2
- package/coverage/lcov-report/src/math/index.html +1 -1
- package/coverage/lcov-report/src/math/index.ts.html +6 -6
- package/coverage/lcov-report/src/observersMap.ts.html +1 -1
- package/coverage/lcov-report/src/observingCache.ts.html +26 -11
- package/coverage/lcov-report/src/transitionObserver.ts.html +1 -1
- package/coverage/lcov-report/src/types.ts.html +8 -8
- package/coverage/lcov-report/src/validation/ValidationErrors.ts.html +22 -22
- package/coverage/lcov-report/src/validation/creditCard.ts.html +4 -4
- package/coverage/lcov-report/src/validation/helpers.ts.html +6 -6
- package/coverage/lcov-report/src/validation/index.html +16 -16
- package/coverage/lcov-report/src/validation/index.ts.html +6 -6
- package/coverage/lcov-report/src/validation/types.ts.html +16 -16
- package/coverage/lcov-report/src/validation/validators.ts.html +5 -5
- package/coverage/lcov-report/src/validation/wrappers.ts.html +5 -5
- package/coverage/lcov-report/src/viewModels/CommonModel.ts.html +215 -0
- package/coverage/lcov-report/src/viewModels/FlagModel.ts.html +41 -20
- package/coverage/lcov-report/src/viewModels/LoadingModel.ts.html +152 -0
- package/coverage/lcov-report/src/viewModels/MultiSelectModel.ts.html +50 -20
- package/coverage/lcov-report/src/viewModels/NumberModel.ts.html +41 -23
- package/coverage/lcov-report/src/viewModels/SelectModel.ts.html +42 -30
- package/coverage/lcov-report/src/viewModels/TextModel.ts.html +461 -0
- package/coverage/lcov-report/src/viewModels/Validatable.ts.html +72 -63
- package/coverage/lcov-report/src/viewModels/index.html +85 -40
- package/coverage/lcov-report/src/viewModels/wrappers.ts.html +6 -6
- package/coverage/lcov-report/validation/index.html +111 -0
- package/coverage/lcov-report/validation/index.ts.html +107 -0
- package/coverage/lcov-report/viewModels/CommonModel.ts.html +215 -0
- package/coverage/lcov-report/viewModels/FlagModel.ts.html +290 -0
- package/coverage/lcov-report/viewModels/LoadingModel.ts.html +128 -0
- package/coverage/lcov-report/viewModels/MultiSelectModel.ts.html +614 -0
- package/coverage/lcov-report/viewModels/NumberModel.ts.html +230 -0
- package/coverage/lcov-report/viewModels/SelectModel.ts.html +503 -0
- package/coverage/lcov-report/viewModels/TextModel.ts.html +461 -0
- package/coverage/lcov-report/viewModels/Validatable.ts.html +386 -0
- package/coverage/lcov-report/viewModels/index.html +216 -0
- package/coverage/lcov.info +873 -665
- package/lib/observingCache.d.ts +1 -0
- package/lib/observingCache.d.ts.map +1 -1
- package/lib/observingCache.js +5 -1
- package/lib/observingCache.js.map +1 -1
- package/lib/viewModels/FlagModel.d.ts.map +1 -1
- package/lib/viewModels/FlagModel.js +14 -26
- package/lib/viewModels/FlagModel.js.map +1 -1
- package/lib/viewModels/LoadingModel.d.ts +6 -0
- package/lib/viewModels/LoadingModel.d.ts.map +1 -0
- package/lib/viewModels/LoadingModel.js +25 -0
- package/lib/viewModels/LoadingModel.js.map +1 -0
- package/lib/viewModels/MultiSelectModel.d.ts.map +1 -1
- package/lib/viewModels/MultiSelectModel.js +20 -43
- package/lib/viewModels/MultiSelectModel.js.map +1 -1
- package/lib/viewModels/NumberModel.d.ts.map +1 -1
- package/lib/viewModels/NumberModel.js +12 -22
- package/lib/viewModels/NumberModel.js.map +1 -1
- package/lib/viewModels/SelectModel.d.ts.map +1 -1
- package/lib/viewModels/SelectModel.js +8 -15
- package/lib/viewModels/SelectModel.js.map +1 -1
- package/lib/viewModels/TextModel.d.ts.map +1 -1
- package/lib/viewModels/TextModel.js +10 -17
- package/lib/viewModels/TextModel.js.map +1 -1
- package/lib/viewModels/Validatable.d.ts +2 -2
- package/lib/viewModels/Validatable.d.ts.map +1 -1
- package/lib/viewModels/Validatable.js +6 -12
- package/lib/viewModels/Validatable.js.map +1 -1
- package/package.json +1 -1
- package/src/observingCache.ts +6 -1
- package/src/viewModels/FlagModel.ts +14 -7
- package/src/viewModels/LoadingModel.ts +24 -0
- package/src/viewModels/MultiSelectModel.ts +20 -10
- package/src/viewModels/NumberModel.ts +12 -6
- package/src/viewModels/SelectModel.ts +8 -4
- package/src/viewModels/TextModel.ts +10 -5
- package/src/viewModels/Validatable.ts +9 -6
- package/src/viewModels/__tests__/common.test.ts +88 -0
- package/yarn.lock +6 -6
|
@@ -0,0 +1,152 @@
|
|
|
1
|
+
|
|
2
|
+
<!doctype html>
|
|
3
|
+
<html lang="en">
|
|
4
|
+
|
|
5
|
+
<head>
|
|
6
|
+
<title>Code coverage report for src/viewModels/LoadingModel.ts</title>
|
|
7
|
+
<meta charset="utf-8" />
|
|
8
|
+
<link rel="stylesheet" href="../../prettify.css" />
|
|
9
|
+
<link rel="stylesheet" href="../../base.css" />
|
|
10
|
+
<link rel="shortcut icon" type="image/x-icon" href="../../favicon.png" />
|
|
11
|
+
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
|
12
|
+
<style type='text/css'>
|
|
13
|
+
.coverage-summary .sorter {
|
|
14
|
+
background-image: url(../../sort-arrow-sprite.png);
|
|
15
|
+
}
|
|
16
|
+
</style>
|
|
17
|
+
</head>
|
|
18
|
+
|
|
19
|
+
<body>
|
|
20
|
+
<div class='wrapper'>
|
|
21
|
+
<div class='pad1'>
|
|
22
|
+
<h1><a href="../../index.html">All files</a> / <a href="index.html">src/viewModels</a> LoadingModel.ts</h1>
|
|
23
|
+
<div class='clearfix'>
|
|
24
|
+
|
|
25
|
+
<div class='fl pad1y space-right2'>
|
|
26
|
+
<span class="strong">75% </span>
|
|
27
|
+
<span class="quiet">Statements</span>
|
|
28
|
+
<span class='fraction'>9/12</span>
|
|
29
|
+
</div>
|
|
30
|
+
|
|
31
|
+
|
|
32
|
+
<div class='fl pad1y space-right2'>
|
|
33
|
+
<span class="strong">42.86% </span>
|
|
34
|
+
<span class="quiet">Branches</span>
|
|
35
|
+
<span class='fraction'>3/7</span>
|
|
36
|
+
</div>
|
|
37
|
+
|
|
38
|
+
|
|
39
|
+
<div class='fl pad1y space-right2'>
|
|
40
|
+
<span class="strong">100% </span>
|
|
41
|
+
<span class="quiet">Functions</span>
|
|
42
|
+
<span class='fraction'>2/2</span>
|
|
43
|
+
</div>
|
|
44
|
+
|
|
45
|
+
|
|
46
|
+
<div class='fl pad1y space-right2'>
|
|
47
|
+
<span class="strong">75% </span>
|
|
48
|
+
<span class="quiet">Lines</span>
|
|
49
|
+
<span class='fraction'>9/12</span>
|
|
50
|
+
</div>
|
|
51
|
+
|
|
52
|
+
|
|
53
|
+
</div>
|
|
54
|
+
<p class="quiet">
|
|
55
|
+
Press <em>n</em> or <em>j</em> to go to the next uncovered block, <em>b</em>, <em>p</em> or <em>k</em> for the previous block.
|
|
56
|
+
</p>
|
|
57
|
+
</div>
|
|
58
|
+
<div class='status-line medium'></div>
|
|
59
|
+
<pre><table class="coverage">
|
|
60
|
+
<tr><td class="line-count quiet"><a name='L1'></a><a href='#L1'>1</a>
|
|
61
|
+
<a name='L2'></a><a href='#L2'>2</a>
|
|
62
|
+
<a name='L3'></a><a href='#L3'>3</a>
|
|
63
|
+
<a name='L4'></a><a href='#L4'>4</a>
|
|
64
|
+
<a name='L5'></a><a href='#L5'>5</a>
|
|
65
|
+
<a name='L6'></a><a href='#L6'>6</a>
|
|
66
|
+
<a name='L7'></a><a href='#L7'>7</a>
|
|
67
|
+
<a name='L8'></a><a href='#L8'>8</a>
|
|
68
|
+
<a name='L9'></a><a href='#L9'>9</a>
|
|
69
|
+
<a name='L10'></a><a href='#L10'>10</a>
|
|
70
|
+
<a name='L11'></a><a href='#L11'>11</a>
|
|
71
|
+
<a name='L12'></a><a href='#L12'>12</a>
|
|
72
|
+
<a name='L13'></a><a href='#L13'>13</a>
|
|
73
|
+
<a name='L14'></a><a href='#L14'>14</a>
|
|
74
|
+
<a name='L15'></a><a href='#L15'>15</a>
|
|
75
|
+
<a name='L16'></a><a href='#L16'>16</a>
|
|
76
|
+
<a name='L17'></a><a href='#L17'>17</a>
|
|
77
|
+
<a name='L18'></a><a href='#L18'>18</a>
|
|
78
|
+
<a name='L19'></a><a href='#L19'>19</a>
|
|
79
|
+
<a name='L20'></a><a href='#L20'>20</a>
|
|
80
|
+
<a name='L21'></a><a href='#L21'>21</a>
|
|
81
|
+
<a name='L22'></a><a href='#L22'>22</a>
|
|
82
|
+
<a name='L23'></a><a href='#L23'>23</a>
|
|
83
|
+
<a name='L24'></a><a href='#L24'>24</a>
|
|
84
|
+
<a name='L25'></a><a href='#L25'>25</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">1x</span>
|
|
85
|
+
<span class="cline-any cline-neutral"> </span>
|
|
86
|
+
<span class="cline-any cline-yes">1x</span>
|
|
87
|
+
<span class="cline-any cline-neutral"> </span>
|
|
88
|
+
<span class="cline-any cline-yes">3x</span>
|
|
89
|
+
<span class="cline-any cline-neutral"> </span>
|
|
90
|
+
<span class="cline-any cline-neutral"> </span>
|
|
91
|
+
<span class="cline-any cline-yes">1x</span>
|
|
92
|
+
<span class="cline-any cline-no"> </span>
|
|
93
|
+
<span class="cline-any cline-no"> </span>
|
|
94
|
+
<span class="cline-any cline-neutral"> </span>
|
|
95
|
+
<span class="cline-any cline-no"> </span>
|
|
96
|
+
<span class="cline-any cline-neutral"> </span>
|
|
97
|
+
<span class="cline-any cline-neutral"> </span>
|
|
98
|
+
<span class="cline-any cline-yes">1x</span>
|
|
99
|
+
<span class="cline-any cline-neutral"> </span>
|
|
100
|
+
<span class="cline-any cline-yes">1x</span>
|
|
101
|
+
<span class="cline-any cline-yes">1x</span>
|
|
102
|
+
<span class="cline-any cline-yes">1x</span>
|
|
103
|
+
<span class="cline-any cline-neutral"> </span>
|
|
104
|
+
<span class="cline-any cline-yes">1x</span>
|
|
105
|
+
<span class="cline-any cline-neutral"> </span>
|
|
106
|
+
<span class="cline-any cline-neutral"> </span>
|
|
107
|
+
<span class="cline-any cline-neutral"> </span>
|
|
108
|
+
<span class="cline-any cline-neutral"> </span></td><td class="text"><pre class="prettyprint lang-js">import { NumberModel } from './NumberModel';
|
|
109
|
+
|
|
110
|
+
export class LoadingModel extends NumberModel {
|
|
111
|
+
|
|
112
|
+
public get isLoading() { return this.value > 0; }
|
|
113
|
+
|
|
114
|
+
public async useLoading<T>(cb: () => (T | Promise<T>), exclusive: boolean | 'throw' = false): Promise<T | false> {
|
|
115
|
+
<span class="missing-if-branch" title="if path not taken" >I</span>if (exclusive && <span class="branch-1 cbranch-no" title="branch not covered" >this.isLoading)</span> {
|
|
116
|
+
<span class="cstat-no" title="statement not covered" > if (exclusive === 'throw') {</span>
|
|
117
|
+
<span class="cstat-no" title="statement not covered" > throw new Error('Operation cannot be started because another one is in progress already.');</span>
|
|
118
|
+
}
|
|
119
|
+
<span class="cstat-no" title="statement not covered" > return false;</span>
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
this.increment();
|
|
123
|
+
|
|
124
|
+
try {
|
|
125
|
+
const res = await cb();
|
|
126
|
+
return res;
|
|
127
|
+
} finally {
|
|
128
|
+
this.decrement();
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
</pre></td></tr></table></pre>
|
|
133
|
+
|
|
134
|
+
<div class='push'></div><!-- for sticky footer -->
|
|
135
|
+
</div><!-- /wrapper -->
|
|
136
|
+
<div class='footer quiet pad2 space-top1 center small'>
|
|
137
|
+
Code coverage generated by
|
|
138
|
+
<a href="https://istanbul.js.org/" target="_blank">istanbul</a>
|
|
139
|
+
at Tue Apr 12 2022 18:17:46 GMT+0000 (Coordinated Universal Time)
|
|
140
|
+
</div>
|
|
141
|
+
</div>
|
|
142
|
+
<script src="../../prettify.js"></script>
|
|
143
|
+
<script>
|
|
144
|
+
window.onload = function () {
|
|
145
|
+
prettyPrint();
|
|
146
|
+
};
|
|
147
|
+
</script>
|
|
148
|
+
<script src="../../sorter.js"></script>
|
|
149
|
+
<script src="../../block-navigation.js"></script>
|
|
150
|
+
</body>
|
|
151
|
+
</html>
|
|
152
|
+
|
|
@@ -23,9 +23,9 @@
|
|
|
23
23
|
<div class='clearfix'>
|
|
24
24
|
|
|
25
25
|
<div class='fl pad1y space-right2'>
|
|
26
|
-
<span class="strong">
|
|
26
|
+
<span class="strong">75% </span>
|
|
27
27
|
<span class="quiet">Statements</span>
|
|
28
|
-
<span class='fraction'>
|
|
28
|
+
<span class='fraction'>72/96</span>
|
|
29
29
|
</div>
|
|
30
30
|
|
|
31
31
|
|
|
@@ -44,9 +44,9 @@
|
|
|
44
44
|
|
|
45
45
|
|
|
46
46
|
<div class='fl pad1y space-right2'>
|
|
47
|
-
<span class="strong">
|
|
47
|
+
<span class="strong">74.39% </span>
|
|
48
48
|
<span class="quiet">Lines</span>
|
|
49
|
-
<span class='fraction'>
|
|
49
|
+
<span class='fraction'>61/82</span>
|
|
50
50
|
</div>
|
|
51
51
|
|
|
52
52
|
|
|
@@ -225,7 +225,17 @@
|
|
|
225
225
|
<a name='L166'></a><a href='#L166'>166</a>
|
|
226
226
|
<a name='L167'></a><a href='#L167'>167</a>
|
|
227
227
|
<a name='L168'></a><a href='#L168'>168</a>
|
|
228
|
-
<a name='L169'></a><a href='#L169'>169</a
|
|
228
|
+
<a name='L169'></a><a href='#L169'>169</a>
|
|
229
|
+
<a name='L170'></a><a href='#L170'>170</a>
|
|
230
|
+
<a name='L171'></a><a href='#L171'>171</a>
|
|
231
|
+
<a name='L172'></a><a href='#L172'>172</a>
|
|
232
|
+
<a name='L173'></a><a href='#L173'>173</a>
|
|
233
|
+
<a name='L174'></a><a href='#L174'>174</a>
|
|
234
|
+
<a name='L175'></a><a href='#L175'>175</a>
|
|
235
|
+
<a name='L176'></a><a href='#L176'>176</a>
|
|
236
|
+
<a name='L177'></a><a href='#L177'>177</a>
|
|
237
|
+
<a name='L178'></a><a href='#L178'>178</a>
|
|
238
|
+
<a name='L179'></a><a href='#L179'>179</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">1x</span>
|
|
229
239
|
<span class="cline-any cline-yes">1x</span>
|
|
230
240
|
<span class="cline-any cline-yes">1x</span>
|
|
231
241
|
<span class="cline-any cline-yes">1x</span>
|
|
@@ -252,6 +262,16 @@
|
|
|
252
262
|
<span class="cline-any cline-neutral"> </span>
|
|
253
263
|
<span class="cline-any cline-yes">6x</span>
|
|
254
264
|
<span class="cline-any cline-yes">6x</span>
|
|
265
|
+
<span class="cline-any cline-neutral"> </span>
|
|
266
|
+
<span class="cline-any cline-neutral"> </span>
|
|
267
|
+
<span class="cline-any cline-neutral"> </span>
|
|
268
|
+
<span class="cline-any cline-neutral"> </span>
|
|
269
|
+
<span class="cline-any cline-neutral"> </span>
|
|
270
|
+
<span class="cline-any cline-neutral"> </span>
|
|
271
|
+
<span class="cline-any cline-neutral"> </span>
|
|
272
|
+
<span class="cline-any cline-neutral"> </span>
|
|
273
|
+
<span class="cline-any cline-neutral"> </span>
|
|
274
|
+
<span class="cline-any cline-neutral"> </span>
|
|
255
275
|
<span class="cline-any cline-yes">6x</span>
|
|
256
276
|
<span class="cline-any cline-yes">6x</span>
|
|
257
277
|
<span class="cline-any cline-neutral"> </span>
|
|
@@ -264,17 +284,17 @@
|
|
|
264
284
|
<span class="cline-any cline-no"> </span>
|
|
265
285
|
<span class="cline-any cline-neutral"> </span>
|
|
266
286
|
<span class="cline-any cline-neutral"> </span>
|
|
267
|
-
<span class="cline-any cline-
|
|
287
|
+
<span class="cline-any cline-neutral"> </span>
|
|
268
288
|
<span class="cline-any cline-yes">49x</span>
|
|
269
289
|
<span class="cline-any cline-neutral"> </span>
|
|
270
290
|
<span class="cline-any cline-neutral"> </span>
|
|
271
291
|
<span class="cline-any cline-neutral"> </span>
|
|
272
|
-
<span class="cline-any cline-
|
|
292
|
+
<span class="cline-any cline-neutral"> </span>
|
|
273
293
|
<span class="cline-any cline-yes">9x</span>
|
|
274
294
|
<span class="cline-any cline-neutral"> </span>
|
|
275
295
|
<span class="cline-any cline-neutral"> </span>
|
|
276
296
|
<span class="cline-any cline-neutral"> </span>
|
|
277
|
-
<span class="cline-any cline-
|
|
297
|
+
<span class="cline-any cline-neutral"> </span>
|
|
278
298
|
<span class="cline-any cline-yes">21x</span>
|
|
279
299
|
<span class="cline-any cline-yes">21x</span>
|
|
280
300
|
<span class="cline-any cline-neutral"> </span>
|
|
@@ -290,7 +310,7 @@
|
|
|
290
310
|
<span class="cline-any cline-no"> </span>
|
|
291
311
|
<span class="cline-any cline-neutral"> </span>
|
|
292
312
|
<span class="cline-any cline-neutral"> </span>
|
|
293
|
-
<span class="cline-any cline-
|
|
313
|
+
<span class="cline-any cline-no"> </span>
|
|
294
314
|
<span class="cline-any cline-neutral"> </span>
|
|
295
315
|
<span class="cline-any cline-no"> </span>
|
|
296
316
|
<span class="cline-any cline-neutral"> </span>
|
|
@@ -404,7 +424,7 @@ import { arraysCompareDistinct } from '../math';
|
|
|
404
424
|
|
|
405
425
|
export class MultiSelect<T = any> extends ValidatableModel<ReadonlyArray<T>> implements IValueModel<readonly string[]>, IResetableModel, ICountableModel {
|
|
406
426
|
|
|
407
|
-
@observable
|
|
427
|
+
// @observable
|
|
408
428
|
private readonly _indexes = new Set<number>();
|
|
409
429
|
|
|
410
430
|
public readonly opened = new FlagModel();
|
|
@@ -419,29 +439,39 @@ export class MultiSelect<T = any> extends ValidatableModel<ReadonlyArra
|
|
|
419
439
|
...selected: number[]
|
|
420
440
|
) {
|
|
421
441
|
super();
|
|
422
|
-
makeObservable(this
|
|
442
|
+
makeObservable<MultiSelect<T>, '_indexes'>(this, {
|
|
443
|
+
'_indexes': observable,
|
|
444
|
+
selectedIndexes: computed,
|
|
445
|
+
values: computed,
|
|
446
|
+
selectedItems: computed,
|
|
447
|
+
selectedValues: computed,
|
|
448
|
+
isDefault: computed,
|
|
449
|
+
selectItems: action,
|
|
450
|
+
selectValues: action,
|
|
451
|
+
setIndexSelected: action,
|
|
452
|
+
});
|
|
423
453
|
this._initial = selected;
|
|
424
454
|
this.setInitialIndexes();
|
|
425
455
|
}
|
|
426
456
|
|
|
427
|
-
@computed
|
|
457
|
+
// @computed
|
|
428
458
|
get selectedIndexes(): ReadonlyArray<number> { return Array.from(this._indexes); }
|
|
429
459
|
|
|
430
460
|
get items(): ReadonlyArray<T> { return this._items; }
|
|
431
461
|
|
|
432
462
|
<span class="fstat-no" title="function not covered" > get f</span>lags() { <span class="cstat-no" title="statement not covered" >return this._flags.value; </span>}
|
|
433
463
|
|
|
434
|
-
@computed
|
|
464
|
+
// @computed
|
|
435
465
|
get values(): ReadonlyArray<string> {
|
|
436
466
|
return this._items.map(i => this._accessor(i));
|
|
437
467
|
}
|
|
438
468
|
|
|
439
|
-
@computed
|
|
469
|
+
// @computed
|
|
440
470
|
get selectedItems(): ReadonlyArray<T> {
|
|
441
471
|
return this.selectedIndexes.map(i => this._items[i]);
|
|
442
472
|
}
|
|
443
473
|
|
|
444
|
-
@computed
|
|
474
|
+
// @computed
|
|
445
475
|
get selectedValues(): ReadonlyArray<string> {
|
|
446
476
|
const values = this.values;
|
|
447
477
|
return this.selectedIndexes.map(i => values[i]);
|
|
@@ -457,7 +487,7 @@ export class MultiSelect<T = any> extends ValidatableModel<ReadonlyArra
|
|
|
457
487
|
get selectedCount() { return this._indexes.size; }
|
|
458
488
|
<span class="fstat-no" title="function not covered" > get i</span>sEmpty() { <span class="cstat-no" title="statement not covered" >return this.selectedCount === 0; </span>}
|
|
459
489
|
|
|
460
|
-
@computed
|
|
490
|
+
// @computed
|
|
461
491
|
<span class="fstat-no" title="function not covered" > get i</span>sDefault() { <span class="cstat-no" title="statement not covered" >return arraysCompareDistinct(this.selectedIndexes, this._initial)?.diff === 0; </span>}
|
|
462
492
|
|
|
463
493
|
<span class="fstat-no" title="function not covered" > protected get v</span>alueToValidate() { <span class="cstat-no" title="statement not covered" >return this.selectedItems; </span>}
|
|
@@ -472,7 +502,7 @@ export class MultiSelect<T = any> extends ValidatableModel<ReadonlyArra
|
|
|
472
502
|
selectItem = (item: T) => this.setItemSelected(item, true);
|
|
473
503
|
deSelectItem = (item: T) => this.setItemSelected(item, false);
|
|
474
504
|
|
|
475
|
-
@action
|
|
505
|
+
// @action
|
|
476
506
|
selectItems = (items: readonly T[]) => {
|
|
477
507
|
items.forEach(this.selectItem);
|
|
478
508
|
};
|
|
@@ -487,12 +517,12 @@ export class MultiSelect<T = any> extends ValidatableModel<ReadonlyArra
|
|
|
487
517
|
selectValue = (value: string) => this.setValueSelected(value, true);
|
|
488
518
|
deSelectValue = (value: string) => this.setValueSelected(value, false);
|
|
489
519
|
|
|
490
|
-
@action
|
|
520
|
+
// @action
|
|
491
521
|
selectValues = <span class="fstat-no" title="function not covered" >(v</span>alues: readonly string[]) => {
|
|
492
522
|
<span class="cstat-no" title="statement not covered" > values.forEach(this.selectValue);</span>
|
|
493
523
|
};
|
|
494
524
|
|
|
495
|
-
@action
|
|
525
|
+
// @action
|
|
496
526
|
setIndexSelected = (index: number, selected: boolean) => {
|
|
497
527
|
<span class="missing-if-branch" title="if path not taken" >I</span>if (this._indexesLocked) {
|
|
498
528
|
<span class="cstat-no" title="statement not covered" > return;</span>
|
|
@@ -568,7 +598,7 @@ export class MultiSelectString<T extends string = string> extends MultiSel
|
|
|
568
598
|
<div class='footer quiet pad2 space-top1 center small'>
|
|
569
599
|
Code coverage generated by
|
|
570
600
|
<a href="https://istanbul.js.org/" target="_blank">istanbul</a>
|
|
571
|
-
at
|
|
601
|
+
at Tue Apr 12 2022 18:17:46 GMT+0000 (Coordinated Universal Time)
|
|
572
602
|
</div>
|
|
573
603
|
</div>
|
|
574
604
|
<script src="../../prettify.js"></script>
|
|
@@ -23,9 +23,9 @@
|
|
|
23
23
|
<div class='clearfix'>
|
|
24
24
|
|
|
25
25
|
<div class='fl pad1y space-right2'>
|
|
26
|
-
<span class="strong">
|
|
26
|
+
<span class="strong">89.47% </span>
|
|
27
27
|
<span class="quiet">Statements</span>
|
|
28
|
-
<span class='fraction'>
|
|
28
|
+
<span class='fraction'>17/19</span>
|
|
29
29
|
</div>
|
|
30
30
|
|
|
31
31
|
|
|
@@ -101,7 +101,13 @@
|
|
|
101
101
|
<a name='L42'></a><a href='#L42'>42</a>
|
|
102
102
|
<a name='L43'></a><a href='#L43'>43</a>
|
|
103
103
|
<a name='L44'></a><a href='#L44'>44</a>
|
|
104
|
-
<a name='L45'></a><a href='#L45'>45</a
|
|
104
|
+
<a name='L45'></a><a href='#L45'>45</a>
|
|
105
|
+
<a name='L46'></a><a href='#L46'>46</a>
|
|
106
|
+
<a name='L47'></a><a href='#L47'>47</a>
|
|
107
|
+
<a name='L48'></a><a href='#L48'>48</a>
|
|
108
|
+
<a name='L49'></a><a href='#L49'>49</a>
|
|
109
|
+
<a name='L50'></a><a href='#L50'>50</a>
|
|
110
|
+
<a name='L51'></a><a href='#L51'>51</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">3x</span>
|
|
105
111
|
<span class="cline-any cline-neutral"> </span>
|
|
106
112
|
<span class="cline-any cline-neutral"> </span>
|
|
107
113
|
<span class="cline-any cline-neutral"> </span>
|
|
@@ -109,42 +115,48 @@
|
|
|
109
115
|
<span class="cline-any cline-neutral"> </span>
|
|
110
116
|
<span class="cline-any cline-neutral"> </span>
|
|
111
117
|
<span class="cline-any cline-neutral"> </span>
|
|
112
|
-
<span class="cline-any cline-yes">
|
|
118
|
+
<span class="cline-any cline-yes">3x</span>
|
|
113
119
|
<span class="cline-any cline-neutral"> </span>
|
|
114
120
|
<span class="cline-any cline-neutral"> </span>
|
|
115
|
-
<span class="cline-any cline-yes">
|
|
121
|
+
<span class="cline-any cline-yes">8x</span>
|
|
122
|
+
<span class="cline-any cline-neutral"> </span>
|
|
123
|
+
<span class="cline-any cline-yes">8x</span>
|
|
124
|
+
<span class="cline-any cline-neutral"> </span>
|
|
116
125
|
<span class="cline-any cline-neutral"> </span>
|
|
117
|
-
<span class="cline-any cline-yes">
|
|
126
|
+
<span class="cline-any cline-yes">8x</span>
|
|
118
127
|
<span class="cline-any cline-neutral"> </span>
|
|
119
128
|
<span class="cline-any cline-neutral"> </span>
|
|
120
|
-
<span class="cline-any cline-yes">7x</span>
|
|
121
|
-
<span class="cline-any cline-yes">7x</span>
|
|
122
|
-
<span class="cline-any cline-yes">7x</span>
|
|
123
129
|
<span class="cline-any cline-neutral"> </span>
|
|
124
130
|
<span class="cline-any cline-neutral"> </span>
|
|
125
|
-
<span class="cline-any cline-yes">7x</span>
|
|
126
|
-
<span class="cline-any cline-yes">6x</span>
|
|
127
131
|
<span class="cline-any cline-neutral"> </span>
|
|
128
132
|
<span class="cline-any cline-neutral"> </span>
|
|
129
|
-
<span class="cline-any cline-yes">
|
|
133
|
+
<span class="cline-any cline-yes">8x</span>
|
|
130
134
|
<span class="cline-any cline-yes">8x</span>
|
|
131
135
|
<span class="cline-any cline-neutral"> </span>
|
|
132
136
|
<span class="cline-any cline-neutral"> </span>
|
|
137
|
+
<span class="cline-any cline-yes">13x</span>
|
|
138
|
+
<span class="cline-any cline-yes">8x</span>
|
|
139
|
+
<span class="cline-any cline-neutral"> </span>
|
|
140
|
+
<span class="cline-any cline-neutral"> </span>
|
|
141
|
+
<span class="cline-any cline-yes">8x</span>
|
|
142
|
+
<span class="cline-any cline-yes">10x</span>
|
|
143
|
+
<span class="cline-any cline-neutral"> </span>
|
|
144
|
+
<span class="cline-any cline-neutral"> </span>
|
|
133
145
|
<span class="cline-any cline-no"> </span>
|
|
134
146
|
<span class="cline-any cline-neutral"> </span>
|
|
135
147
|
<span class="cline-any cline-neutral"> </span>
|
|
136
|
-
<span class="cline-any cline-yes">
|
|
148
|
+
<span class="cline-any cline-yes">8x</span>
|
|
137
149
|
<span class="cline-any cline-no"> </span>
|
|
138
150
|
<span class="cline-any cline-neutral"> </span>
|
|
139
151
|
<span class="cline-any cline-neutral"> </span>
|
|
140
152
|
<span class="cline-any cline-neutral"> </span>
|
|
141
|
-
<span class="cline-any cline-yes">
|
|
153
|
+
<span class="cline-any cline-yes">8x</span>
|
|
142
154
|
<span class="cline-any cline-neutral"> </span>
|
|
143
155
|
<span class="cline-any cline-neutral"> </span>
|
|
144
|
-
<span class="cline-any cline-yes">
|
|
156
|
+
<span class="cline-any cline-yes">8x</span>
|
|
145
157
|
<span class="cline-any cline-neutral"> </span>
|
|
146
158
|
<span class="cline-any cline-neutral"> </span>
|
|
147
|
-
<span class="cline-any cline-yes">
|
|
159
|
+
<span class="cline-any cline-yes">3x</span>
|
|
148
160
|
<span class="cline-any cline-neutral"> </span></td><td class="text"><pre class="prettyprint lang-js">import { action, makeObservable, observable } from 'mobx';
|
|
149
161
|
import { IResetableModel } from 'viewModels';
|
|
150
162
|
import { IValueModel } from './types';
|
|
@@ -155,13 +167,19 @@ export interface INumberModel extends IResetableModel {
|
|
|
155
167
|
|
|
156
168
|
export class NumberModel implements INumberModel, IValueModel<number> {
|
|
157
169
|
|
|
158
|
-
@observable
|
|
170
|
+
// @observable
|
|
159
171
|
private _value: number = 0;
|
|
160
172
|
|
|
161
173
|
private _initial: number = 0;
|
|
162
174
|
|
|
163
175
|
constructor(initial: number = 0) {
|
|
164
|
-
makeObservable(this
|
|
176
|
+
makeObservable<NumberModel, '_value'>(this, {
|
|
177
|
+
_value: observable,
|
|
178
|
+
setValue: action,
|
|
179
|
+
reset: action,
|
|
180
|
+
increment: action,
|
|
181
|
+
decrement: action,
|
|
182
|
+
});
|
|
165
183
|
this._initial = initial;
|
|
166
184
|
this._value = this._initial;
|
|
167
185
|
}
|
|
@@ -169,22 +187,22 @@ export class NumberModel implements INumberModel, IValueModel<number> {
|
|
|
169
187
|
get value() { return this._value; }
|
|
170
188
|
set value(v: number) { this.setValue(v); }
|
|
171
189
|
|
|
172
|
-
@action
|
|
190
|
+
// @action
|
|
173
191
|
public readonly setValue = (v: number) => {
|
|
174
192
|
this._value = v;
|
|
175
193
|
};
|
|
176
194
|
|
|
177
195
|
<span class="fstat-no" title="function not covered" > get i</span>sDefault() { <span class="cstat-no" title="statement not covered" >return this._value === this._initial; </span>}
|
|
178
196
|
|
|
179
|
-
@action
|
|
197
|
+
// @action
|
|
180
198
|
reset = <span class="fstat-no" title="function not covered" >() =</span>> {
|
|
181
199
|
<span class="cstat-no" title="statement not covered" > this._value = this._initial;</span>
|
|
182
200
|
};
|
|
183
201
|
|
|
184
|
-
@action
|
|
202
|
+
// @action
|
|
185
203
|
increment = (d = 1) => this.value += d;
|
|
186
204
|
|
|
187
|
-
@action
|
|
205
|
+
// @action
|
|
188
206
|
decrement = (d = 1) => this.value -= d;
|
|
189
207
|
}
|
|
190
208
|
|
|
@@ -196,7 +214,7 @@ export default NumberModel;
|
|
|
196
214
|
<div class='footer quiet pad2 space-top1 center small'>
|
|
197
215
|
Code coverage generated by
|
|
198
216
|
<a href="https://istanbul.js.org/" target="_blank">istanbul</a>
|
|
199
|
-
at
|
|
217
|
+
at Tue Apr 12 2022 18:17:46 GMT+0000 (Coordinated Universal Time)
|
|
200
218
|
</div>
|
|
201
219
|
</div>
|
|
202
220
|
<script src="../../prettify.js"></script>
|