summaryrefslogtreecommitdiff
path: root/assets/static/vendor/leaflet-elevation/src/handlers/acceleration.js
blob: 9b31b5c6417350400f89ef35c2e490b78f8c9961 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
export function Acceleration() {

	const _ = L.Control.Elevation.Utils;

	let opts         = this.options;
	let acceleration = {};

	acceleration.label      = opts.accelerationLabel  || L._(opts.imperial ? 'ft/s²' : 'm/s²');
	opts.accelerationFactor = opts.accelerationFactor || 1;

	return {
		name: 'acceleration',
		unit: acceleration.label,
		deltaMax: this.options.accelerationDeltaMax,
		clampRange: this.options.accelerationRange,
		decimals: 2,
		pointToAttr: (_, i) => {
			let dv     = (this._data[i].speed - this._data[i > 0 ? i - 1 : i].speed) * (1000 / opts.timeFactor);
			let dt     = (this._data[i].time - this._data[i > 0 ? i - 1 : i].time) / 1000;
			return dt > 0 ? Math.abs((dv / dt)) * opts.accelerationFactor : NaN;
		},
		stats: { max: _.iMax, min: _.iMin, avg: _.iAvg },
		scale: {
			axis       : "y",
			position   : "right",
			scale      : { min: 0, max: +1 },
			tickPadding: 16,
			labelX     : 25,
			labelY     : -8,
		},
		path: {
			label        : 'Acceleration',
			yAttr        : 'acceleration',
			scaleX       : 'distance',
			scaleY       : 'acceleration',
			color        : '#050402',
			strokeColor  : '#000',
			strokeOpacity: "0.5",
			fillOpacity  : "0.25",
		},
		tooltip: {
			chart: (item) => L._("a: ") + item.acceleration + " " + acceleration.label,
			marker: (item) => Math.round(item.acceleration) + " " + acceleration.label,
			order: 60,
		},
		summary: {
			"minacceleration"  : {
				label: "Min Acceleration: ",
				value: (track, unit) => Math.round(track.acceleration_min || 0) + ' ' + unit,
				order: 60
			},
			"maxacceleration"  : {
				label: "Max Acceleration: ",
				value: (track, unit) => Math.round(track.acceleration_max || 0) + ' ' + unit,
				order: 61
			},
			"avgacceleration": {
				label: "Avg Acceleration: ",
				value: (track, unit) => Math.round(track.acceleration_avg || 0) + ' ' + unit,
				order: 62
			},
		}
	};
}