2 class PageWithCharts extends PageWithHeading {
3 constructor(name, toolbar)
9 static createChartSourceList(platformId, metricId)
11 var platform = Platform.findById(platformId);
12 var metric = Metric.findById(metricId);
13 if (!platform || !metric)
14 return {error: `Invalid platform or metric: ${platformId} and ${metricId}`};
16 var lastModified = platform.lastModified(metric);
18 return {platform: platform, metric: metric, error: `No results on ${platform.name()}`};
20 var measurementSet = MeasurementSet.findSet(platform.id(), metric.id(), lastModified);
22 this.baselineStyle(measurementSet, 'baseline'),
23 this.targetStyle(measurementSet, 'target'),
24 this.currentStyle(measurementSet, 'current'),
30 sourceList: sourceList,
34 static baselineStyle(measurementSet)
37 measurementSet: measurementSet,
45 intervalStyle: '#fdd',
50 static targetStyle(measurementSet)
53 measurementSet: measurementSet,
61 intervalStyle: '#ddf',
66 static currentStyle(measurementSet)
69 measurementSet: measurementSet,
76 intervalStyle: '#ddd',
82 static dashboardOptions(valueFormatter)
85 updateOnRequestAnimationFrame: true,
88 xAxisHeight: 2, // rem
91 valueFormatter: valueFormatter,
96 static overviewChartOptions(valueFormatter)
98 var options = this.dashboardOptions(valueFormatter);
99 options.axis.yAxisWidth = 0; // rem
100 options.selection = {
103 fillStyle: 'rgba(153, 204, 102, .125)',
108 static mainChartOptions(valueFormatter)
110 var options = this.dashboardOptions(valueFormatter);
111 options.axis.yAxisWidth = 5;
112 options.selection = {
115 fillStyle: 'rgba(153, 204, 102, .125)',
117 options.indicator = {
122 options.annotations = {
124 textBackground: '#fff',