iot-dashboard
Version:
A generic dashboard application based on JavaScript, HTML and CSS. http://iot-dashboard.org
339 lines (338 loc) • 13 kB
HTML
<html lang="en">
<head>
<title>Code coverage report for src/persistence.ts</title>
<meta charset="utf-8" />
<link rel="stylesheet" href="../prettify.css" />
<link rel="stylesheet" href="../base.css" />
<meta name="viewport" content="width=device-width, initial-scale=1">
<style type='text/css'>
.coverage-summary .sorter {
background-image: url(../sort-arrow-sprite.png);
}
</style>
</head>
<body>
<div class='wrapper'>
<div class='pad1'>
<h1>
<a href="../index.html">all files</a> / <a href="index.html">src/</a> persistence.ts
</h1>
<div class='clearfix'>
<div class='fl pad1y space-right2'>
<span class="strong">29.31% </span>
<span class="quiet">Statements</span>
<span class='fraction'>17/58</span>
</div>
<div class='fl pad1y space-right2'>
<span class="strong">4.55% </span>
<span class="quiet">Branches</span>
<span class='fraction'>1/22</span>
</div>
<div class='fl pad1y space-right2'>
<span class="strong">11.11% </span>
<span class="quiet">Functions</span>
<span class='fraction'>1/9</span>
</div>
<div class='fl pad1y space-right2'>
<span class="strong">29.82% </span>
<span class="quiet">Lines</span>
<span class='fraction'>17/57</span>
</div>
</div>
</div>
<div class='status-line low'></div>
<pre><table class="coverage">
<tr><td class="line-count quiet">1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92</td><td class="line-coverage quiet"><span class="cline-any cline-neutral"> </span>
<span class="cline-any cline-neutral"> </span>
<span class="cline-any cline-neutral"> </span>
<span class="cline-any cline-neutral"> </span>
<span class="cline-any cline-yes">1×</span>
<span class="cline-any cline-yes">1×</span>
<span class="cline-any cline-yes">1×</span>
<span class="cline-any cline-yes">1×</span>
<span class="cline-any cline-yes">1×</span>
<span class="cline-any cline-yes">1×</span>
<span class="cline-any cline-no"> </span>
<span class="cline-any cline-no"> </span>
<span class="cline-any cline-no"> </span>
<span class="cline-any cline-neutral"> </span>
<span class="cline-any cline-no"> </span>
<span class="cline-any cline-no"> </span>
<span class="cline-any cline-neutral"> </span>
<span class="cline-any cline-neutral"> </span>
<span class="cline-any cline-yes">1×</span>
<span class="cline-any cline-neutral"> </span>
<span class="cline-any cline-yes">1×</span>
<span class="cline-any cline-no"> </span>
<span class="cline-any cline-no"> </span>
<span class="cline-any cline-no"> </span>
<span class="cline-any cline-no"> </span>
<span class="cline-any cline-no"> </span>
<span class="cline-any cline-no"> </span>
<span class="cline-any cline-neutral"> </span>
<span class="cline-any cline-no"> </span>
<span class="cline-any cline-neutral"> </span>
<span class="cline-any cline-neutral"> </span>
<span class="cline-any cline-neutral"> </span>
<span class="cline-any cline-no"> </span>
<span class="cline-any cline-no"> </span>
<span class="cline-any cline-no"> </span>
<span class="cline-any cline-no"> </span>
<span class="cline-any cline-no"> </span>
<span class="cline-any cline-neutral"> </span>
<span class="cline-any cline-neutral"> </span>
<span class="cline-any cline-no"> </span>
<span class="cline-any cline-no"> </span>
<span class="cline-any cline-neutral"> </span>
<span class="cline-any cline-neutral"> </span>
<span class="cline-any cline-yes">1×</span>
<span class="cline-any cline-yes">1×</span>
<span class="cline-any cline-no"> </span>
<span class="cline-any cline-no"> </span>
<span class="cline-any cline-no"> </span>
<span class="cline-any cline-no"> </span>
<span class="cline-any cline-no"> </span>
<span class="cline-any cline-no"> </span>
<span class="cline-any cline-neutral"> </span>
<span class="cline-any cline-no"> </span>
<span class="cline-any cline-no"> </span>
<span class="cline-any cline-neutral"> </span>
<span class="cline-any cline-neutral"> </span>
<span class="cline-any cline-yes">1×</span>
<span class="cline-any cline-no"> </span>
<span class="cline-any cline-neutral"> </span>
<span class="cline-any cline-neutral"> </span>
<span class="cline-any cline-neutral"> </span>
<span class="cline-any cline-neutral"> </span>
<span class="cline-any cline-neutral"> </span>
<span class="cline-any cline-neutral"> </span>
<span class="cline-any cline-yes">1×</span>
<span class="cline-any cline-no"> </span>
<span class="cline-any cline-no"> </span>
<span class="cline-any cline-no"> </span>
<span class="cline-any cline-neutral"> </span>
<span class="cline-any cline-no"> </span>
<span class="cline-any cline-neutral"> </span>
<span class="cline-any cline-yes">1×</span>
<span class="cline-any cline-yes">2×</span>
<span class="cline-any cline-yes">2×</span>
<span class="cline-any cline-yes">2×</span>
<span class="cline-any cline-neutral"> </span>
<span class="cline-any cline-no"> </span>
<span class="cline-any cline-no"> </span>
<span class="cline-any cline-no"> </span>
<span class="cline-any cline-no"> </span>
<span class="cline-any cline-no"> </span>
<span class="cline-any cline-neutral"> </span>
<span class="cline-any cline-neutral"> </span>
<span class="cline-any cline-neutral"> </span>
<span class="cline-any cline-no"> </span>
<span class="cline-any cline-neutral"> </span>
<span class="cline-any cline-no"> </span>
<span class="cline-any cline-no"> </span>
<span class="cline-any cline-neutral"> </span>
<span class="cline-any cline-yes">1×</span>
<span class="cline-any cline-neutral"> </span>
<span class="cline-any cline-neutral"> </span></td><td class="text"><pre class="prettyprint lang-js">/* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
"use strict";
var _ = require('lodash');
var $ = require('jquery');
var lastAction = { type: "NONE" };
var allowSave = true;
var saveTimeout;
<span class="fstat-no" title="function not covered" >function clearData() {</span>
<span class="cstat-no" title="statement not covered" > if (window.confirm("Wipe app data and reload page?")) {</span>
<span class="cstat-no" title="statement not covered" > if (saveTimeout) {</span>
<span class="cstat-no" title="statement not covered" > clearTimeout(saveTimeout);</span>
}
<span class="cstat-no" title="statement not covered" > window.localStorage.setItem("appState", undefined);</span>
<span class="cstat-no" title="statement not covered" > location.reload();</span>
}
}
exports.clearData = clearData;
// TODO: type middleware
<span class="fstat-no" title="function not covered" >function persistenceMiddleware(_a) {</span>
<span class="cstat-no" title="statement not covered" > var getState = _a.getState;</span>
<span class="cstat-no" title="statement not covered" > return <span class="fstat-no" title="function not covered" >function (next) {</span> <span class="cstat-no" title="statement not covered" >return <span class="fstat-no" title="function not covered" >function (action) {</span></span></span>
<span class="cstat-no" title="statement not covered" > var nextState = next(action);</span>
<span class="cstat-no" title="statement not covered" > if (!allowSave) {</span>
<span class="cstat-no" title="statement not covered" > lastAction = action;</span>
<span class="cstat-no" title="statement not covered" > return nextState;</span>
}
<span class="cstat-no" title="statement not covered" > if (!action.doNotPersist) {</span>
// we wait some before we save
// this leads to less saving (max every 100ms) without loosing actions
// if we would just block saving for some time after saving an action we would loose the last actions
<span class="cstat-no" title="statement not covered" > allowSave = false;</span>
<span class="cstat-no" title="statement not covered" > saveTimeout = setTimeout(<span class="fstat-no" title="function not covered" >function () {</span></span>
<span class="cstat-no" title="statement not covered" > save(getState());</span>
<span class="cstat-no" title="statement not covered" > console.log('Saved state @' + lastAction.type);</span>
<span class="cstat-no" title="statement not covered" > allowSave = true;</span>
}, 100);
}
<span class="cstat-no" title="statement not covered" > lastAction = action;</span>
<span class="cstat-no" title="statement not covered" > return nextState;</span>
}; };
}
exports.persistenceMiddleware = persistenceMiddleware;
<span class="fstat-no" title="function not covered" >function save(state) {</span>
<span class="cstat-no" title="statement not covered" > var target = state.config.persistenceTarget;</span>
<span class="cstat-no" title="statement not covered" > var savableState = _.assign({}, state);</span>
<span class="cstat-no" title="statement not covered" > delete savableState.form;</span>
<span class="cstat-no" title="statement not covered" > delete savableState.modalDialog;</span>
<span class="cstat-no" title="statement not covered" > if (target === "local-storage") {</span>
<span class="cstat-no" title="statement not covered" > saveToLocalStorage(savableState);</span>
}
else <span class="cstat-no" title="statement not covered" >if (target) {</span>
<span class="cstat-no" title="statement not covered" > saveToServer(target, savableState);</span>
}
}
<span class="fstat-no" title="function not covered" >function saveToServer(target, state) {</span>
<span class="cstat-no" title="statement not covered" > $.post({</span>
url: target,
data: JSON.stringify(state),
dataType: 'json',
contentType: "application/json; charset=utf-8"
});
}
<span class="fstat-no" title="function not covered" >function saveToLocalStorage(state) {</span>
<span class="cstat-no" title="statement not covered" > if (typeof window === 'undefined') {</span>
<span class="cstat-no" title="statement not covered" > console.warn("Can not save to local storage in current environment.");</span>
<span class="cstat-no" title="statement not covered" > return;</span>
}
<span class="cstat-no" title="statement not covered" > window.localStorage.setItem("appState", JSON.stringify(state));</span>
}
function loadFromLocalStorage() {
<span class="missing-if-branch" title="else path not taken" >E</span>if (typeof window === 'undefined') {
console.warn("Can not load from local storage in current environment.");
return undefined;
}
<span class="cstat-no" title="statement not covered" > var stateString = window.localStorage.getItem("appState");</span>
<span class="cstat-no" title="statement not covered" > var state = undefined;</span>
<span class="cstat-no" title="statement not covered" > try {</span>
<span class="cstat-no" title="statement not covered" > if (stateString !== undefined && stateString !== "undefined") {</span>
<span class="cstat-no" title="statement not covered" > state = JSON.parse(stateString);</span>
}
}
catch (e) {
<span class="cstat-no" title="statement not covered" > console.error("Failed to load state from local storage. Data:", stateString, e.message);</span>
}
<span class="cstat-no" title="statement not covered" > console.log("Loaded state:", state);</span>
<span class="cstat-no" title="statement not covered" > return state !== null ? state : undefined;</span>
}
exports.loadFromLocalStorage = loadFromLocalStorage;
</pre></td></tr>
</table></pre>
<div class='push'></div><!-- for sticky footer -->
</div><!-- /wrapper -->
<div class='footer quiet pad2 space-top1 center small'>
Code coverage
generated by <a href="http://istanbul-js.org/" target="_blank">istanbul</a> at Fri Nov 04 2016 11:23:08 GMT+0000 (UTC)
</div>
</div>
<script src="../prettify.js"></script>
<script>
window.onload = function () {
if (typeof prettyPrint === 'function') {
prettyPrint();
}
};
</script>
<script src="../sorter.js"></script>
</body>
</html>