summaryrefslogtreecommitdiff
path: root/assets/static/vendor/leaflet-elevation/src/handlers/speed.js
blob: 534b340b4c5949514e72fbe75f434035e5087981 (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
65
66
export function Speed() {

	const _ = L.Control.Elevation.Utils;

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

	speed.label      = opts.speedLabel  || L._(opts.imperial ? 'mph' : 'km/h');
	opts.speedFactor = opts.speedFactor || 1;

	return {
		name: 'speed',
		required: (this.options.acceleration),
		unit: speed.label,
		deltaMax: this.options.speedDeltaMax,
		clampRange: this.options.speedRange,
		decimals: 2,
		pointToAttr: (_, i) => {
			let dx   = (this._data[i].dist - this._data[i > 0 ? i - 1 : i].dist) * 1000;
			let dt   = this._data[i].time - this._data[ i > 0 ? i - 1 : i].time;
			return dt > 0 ? Math.abs((dx / dt) * opts.timeFactor) * opts.speedFactor : NaN;
		},
		stats: { max: _.iMax, min: _.iMin, avg: _.iAvg },
		scale : (this.options.speed && this.options.speed != "summary") && {
			axis       : "y",
			position   : "right",
			scale      : { min : 0, max : +1 },
			tickPadding: 16,
			labelX     : 25,
			labelY     : -8,
		},
		path: (this.options.speed && this.options.speed != "summary") && {
			// name         : 'speed',
			label        : 'Speed',
			yAttr        : "speed",
			scaleX       : 'distance',
			scaleY       : 'speed',
			color        : '#03ffff',
			strokeColor  : '#000',
			strokeOpacity: "0.5",
			fillOpacity  : "0.25",
		},
		tooltip: (this.options.speed) && {
			chart: (item) => L._('v: ') + item.speed + " " + speed.label,
			marker: (item) => Math.round(item.speed) + " " + speed.label,
			order: 50,
		},
		summary: (this.options.speed) && {
			"minspeed"  : {
				label: "Min Speed: ",
				value: (track, unit) => Math.round(track.speed_min || 0) + ' ' + unit,
				order: 51
			},
			"maxspeed"  : {
				label: "Max Speed: ",
				value: (track, unit) => Math.round(track.speed_max || 0) + ' ' + unit,
				order: 51
			},
			"avgspeed": {
				label: "Avg Speed: ",
				value: (track, unit) => Math.round(track.speed_avg || 0) + ' ' + unit,
				order: 52
			},
		}
	};
}