Revize 72effbbe
Přidáno uživatelem Štěpán Červenka před téměř 4 roky(ů)
src/app/sensor/components/sensor.component.ts | ||
---|---|---|
4 | 4 |
import * as moment from 'moment-timezone'; |
5 | 5 |
import {AnalyticsService} from '../../shared/api/endpoints/services/analytics.service'; |
6 | 6 |
import {AggreationModel} from '../../shared/models/aggreation.model'; |
7 |
import {GraphLoader} from "../../shared/graph-loading/graphloader"; |
|
7 | 8 |
|
8 | 9 |
declare var require: any |
9 | 10 |
|
... | ... | |
42 | 43 |
} |
43 | 44 |
|
44 | 45 |
|
45 |
getGraph(sensorId, data, interval) { |
|
46 |
/*getGraph(sensorId, data, interval) {
|
|
46 | 47 |
let spec = this.getGraphType(sensorId); |
47 | 48 |
const vega = require('vega'); |
48 | 49 |
const vegaTooltip = require('vega-tooltip'); |
... | ... | |
54 | 55 |
|
55 | 56 |
let handler = new vegaTooltip.Handler(); |
56 | 57 |
|
57 |
/*const view = new vega.View(vega.parse(spec), { |
|
58 |
renderer: 'canvas', |
|
59 |
container: '#view', |
|
60 |
hover: 'true'}).runAsync();*/ |
|
61 |
|
|
62 | 58 |
const loc = vega.locale({ |
63 | 59 |
"decimal": ",", |
64 | 60 |
"thousands": "\u00a0", |
... | ... | |
114 | 110 |
} |
115 | 111 |
|
116 | 112 |
|
117 |
} |
|
113 |
}*/
|
|
118 | 114 |
|
119 | 115 |
showGraph() { |
120 | 116 |
let agg = 'HOUR'; |
... | ... | |
150 | 146 |
to: moment(range[1]).format('yyyy-MM-DD HH:mm:ssZ').slice(0, -3), interval: agg}).subscribe( |
151 | 147 |
observations => { |
152 | 148 |
if (observations){ |
153 |
this.getGraph(this.sensorId, observations[this.sensorId].data, observations[this.sensorId].interval);
|
|
149 |
GraphLoader.getGraph(this.sensorId, observations[this.sensorId].data, observations[this.sensorId].interval, "view");
|
|
154 | 150 |
} else { |
155 | 151 |
//TODO observace null |
156 | 152 |
} |
src/app/shared/graph-loading/graphloader.ts | ||
---|---|---|
1 |
declare var require: any |
|
2 |
|
|
3 |
export class GraphLoader { |
|
4 |
|
|
5 |
|
|
6 |
static getGraphType(sensorId) { |
|
7 |
const lodash = require('lodash/object'); |
|
8 |
|
|
9 |
if (sensorId >= 480000000 && sensorId < 490000000) { |
|
10 |
|
|
11 |
let rvalue: any = {}; |
|
12 |
let base = require('/src/vega/base/default.json'); |
|
13 |
let chart = require('/src/vega/body/barchart.json'); |
|
14 |
let tooltip = require('/src/vega/tooltip/samm-tooltip.json') |
|
15 |
lodash.merge(rvalue, base, chart, tooltip); |
|
16 |
return rvalue; |
|
17 |
|
|
18 |
} else if ((sensorId >= 470020000 && sensorId < 470030000) || (sensorId >= 470060000 && sensorId < 470090000) || |
|
19 |
(sensorId >= 470130000 && sensorId < 470140000) || (sensorId >= 470180000 && sensorId < 470190000)) { |
|
20 |
|
|
21 |
let rvalue: any = {}; |
|
22 |
let base = require('/src/vega/base/default.json'); |
|
23 |
let chart = require('/src/vega/body/windchart.json'); |
|
24 |
let tooltip = require('/src/vega/tooltip/samm-tooltip.json') |
|
25 |
lodash.merge(rvalue, base, chart, tooltip); |
|
26 |
return rvalue; |
|
27 |
|
|
28 |
} else { |
|
29 |
|
|
30 |
let rvalue: any = {}; |
|
31 |
let base = require('/src/vega/base/default.json'); |
|
32 |
let chart = require('/src/vega/body/linechart.json'); |
|
33 |
let tooltip = require('/src/vega/tooltip/samm-tooltip.json') |
|
34 |
lodash.merge(rvalue, base, chart, tooltip); |
|
35 |
return rvalue; |
|
36 |
|
|
37 |
} |
|
38 |
} |
|
39 |
|
|
40 |
static getGraph(sensorId, data, interval, element) { |
|
41 |
let spec = this.getGraphType(sensorId); |
|
42 |
const vega = require('vega'); |
|
43 |
const vegaTooltip = require('vega-tooltip'); |
|
44 |
const config = require('/src/vega/config.json'); |
|
45 |
|
|
46 |
spec.data[0].values = data; |
|
47 |
spec.signals[0].value = interval; |
|
48 |
|
|
49 |
|
|
50 |
let handler = new vegaTooltip.Handler(); |
|
51 |
|
|
52 |
const loc = vega.locale({ |
|
53 |
"decimal": ",", |
|
54 |
"thousands": "\u00a0", |
|
55 |
"grouping": [3], |
|
56 |
"currency": ["", "\u00a0Kč"] |
|
57 |
},{ |
|
58 |
"dateTime": "%A,%e.%B %Y, %X", |
|
59 |
"date": "%-d.%-m.%Y", |
|
60 |
"time": "%H:%M:%S", |
|
61 |
"periods": ["AM", "PM"], |
|
62 |
"days": ["neděle", "pondělí", "úterý", "středa", "čvrtek", "pátek", "sobota"], |
|
63 |
"shortDays": ["ne.", "po.", "út.", "st.", "čt.", "pá.", "so."], |
|
64 |
"months": ["leden", "únor", "březen", "duben", "květen", "červen", "červenec", "srpen", "září", "říjen", "listopad", "prosinec"], |
|
65 |
"shortMonths": ["led", "úno", "břez", "dub", "kvě", "čer", "červ", "srp", "zář", "říj", "list", "pros"] |
|
66 |
}); |
|
67 |
|
|
68 |
let view = new vega.View(vega.parse(spec, config)) |
|
69 |
.tooltip(handler.call) |
|
70 |
.initialize(element) |
|
71 |
.hover() |
|
72 |
.locale(loc) |
|
73 |
.runAsync(); |
|
74 |
|
|
75 |
|
|
76 |
|
|
77 |
} |
|
78 |
|
|
79 |
} |
src/app/unit/components/unit.component.ts | ||
---|---|---|
5 | 5 |
import {Sensors} from '../../shared/api/endpoints/models/sensors'; |
6 | 6 |
import {AggreationModel} from '../../shared/models/aggreation.model'; |
7 | 7 |
import * as moment from 'moment-timezone'; |
8 |
import {GraphLoader} from "../../shared/graph-loading/graphloader"; |
|
8 | 9 |
|
9 | 10 |
declare var require: any |
10 | 11 |
|
... | ... | |
66 | 67 |
//console.log(this.data); |
67 | 68 |
var objectKeys = Object.keys(data); |
68 | 69 |
for(const key of objectKeys ) { |
69 |
this.getGraph(key, data[key]["data"], data[key]["interval"]); |
|
70 |
let element = this.createView(); |
|
71 |
GraphLoader.getGraph(key, data[key]["data"], data[key]["interval"], element); |
|
72 |
|
|
70 | 73 |
} |
71 | 74 |
}) |
72 | 75 |
).subscribe(); |
73 | 76 |
} |
74 | 77 |
|
75 |
getGraph(sensorId, data, interval) { |
|
78 |
/* getGraph(sensorId, data, interval) {
|
|
76 | 79 |
let spec = this.getGraphType(sensorId); |
77 | 80 |
let elementName = this.createView(); |
78 | 81 |
const vega = require('vega'); |
... | ... | |
147 | 150 |
} |
148 | 151 |
|
149 | 152 |
|
150 |
} |
|
153 |
}*/
|
|
151 | 154 |
|
152 | 155 |
createView() { |
153 | 156 |
let div = document.createElement("div"); |
src/vega/base/default.json | ||
---|---|---|
49 | 49 |
}, |
50 | 50 |
{ |
51 | 51 |
"type": "formula", |
52 |
"expr": "datum[\"dateMinTemp\"] * 1.05",
|
|
52 |
"expr": "datum[\"maxValueTemp\"] * 1.05",
|
|
53 | 53 |
"as": "valueMax" |
54 | 54 |
} |
55 | 55 |
] |
src/vega/body/linechart.json | ||
---|---|---|
37 | 37 |
"name": "yDetail", |
38 | 38 |
"type": "linear", |
39 | 39 |
"range": [390, 0], |
40 |
"domain": {"data": "table", "field": "value"},
|
|
40 |
"domain": {"data": "range", "field": "valueMax"},
|
|
41 | 41 |
"nice": true, "zero": true |
42 | 42 |
} |
43 | 43 |
], |
Také k dispozici: Unified diff
Re #8774 - Implementovat pracovní verzi grafů pro jednotku