Revize ec939478
Přidáno uživatelem Štěpán Červenka před téměř 4 roky(ů)
src/app/shared/graph-loading/graphloader.ts | ||
---|---|---|
51 | 51 |
|
52 | 52 |
static getGraph(sensorId, data, interval, element) { |
53 | 53 |
const spec = this.getGraphType(sensorId); |
54 |
const vega = require('vega'); |
|
55 |
const vegaTooltip = require('vega-tooltip'); |
|
56 | 54 |
const config = require('/src/vega/config/config-analytics.json'); |
57 | 55 |
|
58 | 56 |
spec.data[0].values = data; |
59 | 57 |
spec.signals[0].value = interval; |
60 | 58 |
|
61 | 59 |
|
62 |
const handler = new vegaTooltip.Handler(); |
|
63 |
|
|
64 |
const loc = vega.locale({ |
|
65 |
decimal: ',', |
|
66 |
thousands: '\u00a0', |
|
67 |
grouping: [3], |
|
68 |
currency: ['', '\u00a0Kč'] |
|
69 |
},{ |
|
70 |
dateTime: '%A,%e.%B %Y, %X', |
|
71 |
date: '%-d.%-m.%Y', |
|
72 |
time: '%H:%M:%S', |
|
73 |
periods: ['AM', 'PM'], |
|
74 |
days: ['neděle', 'pondělí', 'úterý', 'středa', 'čvrtek', 'pátek', 'sobota'], |
|
75 |
shortDays: ['ne.', 'po.', 'út.', 'st.', 'čt.', 'pá.', 'so.'], |
|
76 |
months: ['leden', 'únor', 'březen', 'duben', 'květen', 'červen', 'červenec', 'srpen', 'září', 'říjen', 'listopad', 'prosinec'], |
|
77 |
shortMonths: ['led', 'úno', 'břez', 'dub', 'kvě', 'čer', 'červ', 'srp', 'zář', 'říj', 'list', 'pros'] |
|
78 |
}); |
|
79 |
|
|
80 |
const view = new vega.View(vega.parse(spec, config)) |
|
81 |
.tooltip(handler.call) |
|
82 |
.initialize(element) |
|
83 |
.hover() |
|
84 |
.locale(loc) |
|
85 |
.runAsync(); |
|
60 |
this.showGraph(spec, config, element); |
|
86 | 61 |
|
87 | 62 |
|
88 | 63 |
|
... | ... | |
91 | 66 |
static getObservationGraph(sensorId, data, element) { |
92 | 67 |
|
93 | 68 |
const spec = this.getObservationSpec(sensorId); |
94 |
const vega = require('vega'); |
|
95 |
const vegaTooltip = require('vega-tooltip'); |
|
96 | 69 |
const config = require('/src/vega/config/config-observations.json'); |
97 | 70 |
|
98 | 71 |
spec.data[0].values = data; |
99 | 72 |
spec.signals[0].value = 3600; |
100 | 73 |
|
74 |
|
|
75 |
this.showGraph(spec, config, element); |
|
76 |
|
|
77 |
|
|
78 |
} |
|
79 |
|
|
80 |
static getMultilineGraph(sensors, data, element) { |
|
81 |
let spec = this.getMultilineSpec(sensors); |
|
82 |
|
|
83 |
const config = require('/src/vega/config/config-multiline.json'); |
|
84 |
|
|
85 |
spec.data[0].values = data; |
|
86 |
spec.signals[0].value = 3600; |
|
87 |
|
|
88 |
this.showGraph(spec, config, element); |
|
89 |
} |
|
90 |
|
|
91 |
static getMultilineSpec(sensors) { |
|
92 |
const lodash = require('lodash/object'); |
|
93 |
|
|
94 |
const rvalue: any = {}; |
|
95 |
const base = require('/src/vega/base/default.json'); |
|
96 |
const chart = require('/src/vega/body/multilinechart.json'); |
|
97 |
const tooltip = require('/src/vega/tooltip/multiline-tooltip.json') |
|
98 |
lodash.merge(rvalue, base, chart, tooltip); |
|
99 |
rvalue.marks[0].marks[0].marks[0].marks[2].encode.enter.tooltip.signal = this.getTooltipMessage(sensors); |
|
100 |
return rvalue; |
|
101 |
} |
|
102 |
|
|
103 |
static getTooltipMessage(sensors) { |
|
104 |
let message = "{title: timeFormat(datum.dateTime, '%A, %e. %B %Y, %X')"; |
|
105 |
|
|
106 |
for(const key of sensors) { |
|
107 |
message += ("'" + key + "': datum['" + key + "'] "); |
|
108 |
} |
|
109 |
|
|
110 |
message += "}"; |
|
111 |
|
|
112 |
return message; |
|
113 |
|
|
114 |
} |
|
115 |
|
|
116 |
|
|
117 |
static showGraph(spec, config, element) { |
|
118 |
const vega = require('vega'); |
|
119 |
const vegaTooltip = require('vega-tooltip'); |
|
101 | 120 |
const handler = new vegaTooltip.Handler(); |
102 | 121 |
|
103 | 122 |
const loc = vega.locale({ |
... | ... | |
122 | 141 |
.hover() |
123 | 142 |
.locale(loc) |
124 | 143 |
.runAsync(); |
144 |
} |
|
125 | 145 |
|
126 | 146 |
|
127 | 147 |
|
128 |
} |
|
129 |
|
|
130 | 148 |
} |
Také k dispozici: Unified diff
Re #8775 - Agregovat grafy se stejným typem sensoru
+ add definiton of multiline graph
+ add graph loader methods for handling multiline