Projekt

Obecné

Profil

Stáhnout (3.24 KB) Statistiky
| Větev: | Tag: | Revize:
1 8cca41c0 Štěpán Červenka
import {Graph} from './graph';
2
import {EmptyGraph} from "./emptygraph";
3
import {SingleGraph} from "./singlegraph";
4
import {MultiGraph} from "./multigraph";
5 72effbbe Štěpán Červenka
6 8cca41c0 Štěpán Červenka
declare var require: any
7 72effbbe Štěpán Červenka
8
9
10 8cca41c0 Štěpán Červenka
export class GraphLoader {
11 72effbbe Štěpán Červenka
12 583f8755 Štěpán Červenka
  /**
13
   * Loads graph with default interval value (e.g. for observation service)
14
   * @param sensors array of sensors to display
15
   * @param data source of values for vega graph
16
   * @param legendInfo source of legend info for graph (e.g. sensor phenomenon)
17
   * @param element name of html element for graph display
18
   * @param isAnalytics true/false analytics/observations
19
   */
20
  static getGraph(sensors, data, legendInfo, element, isAnalytics) {
21
    this.getGraphWithInterval(sensors, data, 1800000, legendInfo, element, isAnalytics);
22
  }
23
24
25
26
  /**
27
   * Loads graph with specified interval (e.g. for analytics service)
28
   * @param sensors array of sensors to display
29
   * @param data source of values for vega graph
30
   * @param interval default graph interval used for different purposes (in milliseconds) (see timeWindow and maxTimeDifference in vega specification)
31
   * @param legendInfo source of legend info for graph (e.g. sensor phenomenon)
32
   * @param element name of html element for graph display
33
   * @param isAnalytics true/false analytics/observations
34
   */
35
  static getGraphWithInterval(sensors, data, interval, legendInfo, element, isAnalytics) {
36
    //gets uses sensors array to get graph type
37
    //then gets configuration and specification from corresponding class
38
    let graph = this.getGraphType(sensors,data, interval, legendInfo, isAnalytics);
39
    let config = graph.getConfig();
40
    let spec = graph.getSpec();
41
42
   //then displays the graph
43
    this.showGraph(spec, config, element);
44
  }
45
46 72effbbe Štěpán Červenka
47 583f8755 Štěpán Červenka
  /**
48
   * Create graph of specific type according to selected sensors
49
   * @param sensors array of sensors to display
50
   * @param data source of values for vega graph
51
   * @param interval default graph interval used for different purposes (in milliseconds) (see timeWindow and maxTimeDifference in vega specification)
52
   * @param legendInfo source of legend info for graph (e.g. sensor phenomenon)
53
   * @param isAnalytics isAnalytics true/false analytics/observations
54
   */
55
  static getGraphType(sensors, data, interval, legendInfo, isAnalytics): Graph {
56 8cca41c0 Štěpán Červenka
    if (sensors == null) {
57 c1664074 Štěpán Červenka
      return new EmptyGraph("No sensors selected.");
58 72effbbe Štěpán Červenka
59 66c042f1 Štěpán Červenka
    }  else if (Array.isArray(sensors)) {
60 8cca41c0 Štěpán Červenka
      if (sensors.length == 0) {
61 c1664074 Štěpán Červenka
        return new EmptyGraph("No sensors selected.");
62 8cca41c0 Štěpán Červenka
      } else if (sensors.length == 1) {
63 583f8755 Štěpán Červenka
        return new SingleGraph(sensors[0], isAnalytics, data, legendInfo,interval);
64 8cca41c0 Štěpán Červenka
      } else {
65 583f8755 Štěpán Červenka
        return new MultiGraph(isAnalytics, data, legendInfo,interval);
66 8cca41c0 Štěpán Červenka
      }
67 72effbbe Štěpán Červenka
68
    } else {
69 583f8755 Štěpán Červenka
      return new SingleGraph(sensors, isAnalytics, data, legendInfo, interval);
70 72effbbe Štěpán Červenka
    }
71
  }
72
73 b4b32b0e Štěpán Červenka
74 583f8755 Štěpán Červenka
  /**
75
   * Displays the graph
76
   * @param spec vega specification
77
   * @param config vega configuration
78
   * @param element name of html element for graph display
79
   */
80 ec939478 Štěpán Červenka
  static showGraph(spec, config, element) {
81
    const vega = require('vega');
82
    const vegaTooltip = require('vega-tooltip');
83 b4b32b0e Štěpán Červenka
    const handler = new vegaTooltip.Handler();
84
85
86
    const view = new vega.View(vega.parse(spec, config))
87
      .tooltip(handler.call)
88
      .initialize(element)
89
      .hover()
90
      .runAsync();
91 ec939478 Štěpán Červenka
  }
92 72effbbe Štěpán Červenka
}