Projekt

Obecné

Profil

« Předchozí | Další » 

Revize ec939478

Přidáno uživatelem Štěpán Červenka před téměř 4 roky(ů)

Re #8775 - Agregovat grafy se stejným typem sensoru

+ add definiton of multiline graph
+ add graph loader methods for handling multiline

Zobrazit rozdíly:

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