@raruto/leaflet-elevation 2.6.0 → 2.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,64 +1,64 @@
1
- export function Acceleration() {
2
-
3
- const _ = L.Control.Elevation.Utils;
4
-
5
- let opts = this.options;
6
- let acceleration = {};
7
-
8
- acceleration.label = opts.accelerationLabel || L._(opts.imperial ? 'ft/s²' : 'm/s²');
9
- opts.accelerationFactor = opts.accelerationFactor || 1;
10
-
11
- return {
12
- name: 'acceleration',
13
- unit: acceleration.label,
14
- deltaMax: this.options.accelerationDeltaMax,
15
- clampRange: this.options.accelerationRange,
16
- decimals: 2,
17
- pointToAttr: (_, i) => {
18
- let dv = (this._data[i].speed - this._data[i > 0 ? i - 1 : i].speed) * (1000 / opts.timeFactor);
19
- let dt = (this._data[i].time - this._data[i > 0 ? i - 1 : i].time) / 1000;
20
- return dt > 0 ? Math.abs((dv / dt)) * opts.accelerationFactor : NaN;
21
- },
22
- stats: { max: _.iMax, min: _.iMin, avg: _.iAvg },
23
- scale: {
24
- axis : "y",
25
- position : "right",
26
- scale : { min: 0, max: +1 },
27
- tickPadding: 16,
28
- labelX : 25,
29
- labelY : -8,
30
- },
31
- path: {
32
- label : 'Acceleration',
33
- yAttr : 'acceleration',
34
- scaleX : 'distance',
35
- scaleY : 'acceleration',
36
- color : '#050402',
37
- strokeColor : '#000',
38
- strokeOpacity: "0.5",
39
- fillOpacity : "0.25",
40
- },
41
- tooltip: {
42
- chart: (item) => L._("a: ") + item.acceleration + " " + acceleration.label,
43
- marker: (item) => Math.round(item.acceleration) + " " + acceleration.label,
44
- order: 60,
45
- },
46
- summary: {
47
- "minacceleration" : {
48
- label: "Min Acceleration: ",
49
- value: (track, unit) => Math.round(track.acceleration_min || 0) + ' ' + unit,
50
- order: 60
51
- },
52
- "maxacceleration" : {
53
- label: "Max Acceleration: ",
54
- value: (track, unit) => Math.round(track.acceleration_max || 0) + ' ' + unit,
55
- order: 61
56
- },
57
- "avgacceleration": {
58
- label: "Avg Acceleration: ",
59
- value: (track, unit) => Math.round(track.acceleration_avg || 0) + ' ' + unit,
60
- order: 62
61
- },
62
- }
63
- };
64
- }
1
+ export function Acceleration() {
2
+
3
+ const _ = L.Control.Elevation.Utils;
4
+
5
+ let opts = this.options;
6
+ let acceleration = {};
7
+
8
+ acceleration.label = opts.accelerationLabel || L._(opts.imperial ? 'ft/s²' : 'm/s²');
9
+ opts.accelerationFactor = opts.accelerationFactor || 1;
10
+
11
+ return {
12
+ name: 'acceleration',
13
+ unit: acceleration.label,
14
+ deltaMax: this.options.accelerationDeltaMax,
15
+ clampRange: this.options.accelerationRange,
16
+ decimals: 2,
17
+ pointToAttr: (_, i) => {
18
+ let dv = (this._data[i].speed - this._data[i > 0 ? i - 1 : i].speed) * (1000 / opts.timeFactor);
19
+ let dt = (this._data[i].time - this._data[i > 0 ? i - 1 : i].time) / 1000;
20
+ return dt > 0 ? Math.abs((dv / dt)) * opts.accelerationFactor : NaN;
21
+ },
22
+ stats: { max: _.iMax, min: _.iMin, avg: _.iAvg },
23
+ scale: {
24
+ axis : "y",
25
+ position : "right",
26
+ scale : { min: 0, max: +1 },
27
+ tickPadding: 16,
28
+ labelX : 25,
29
+ labelY : -8,
30
+ },
31
+ path: {
32
+ label : 'Acceleration',
33
+ yAttr : 'acceleration',
34
+ scaleX : 'distance',
35
+ scaleY : 'acceleration',
36
+ color : '#050402',
37
+ strokeColor : '#000',
38
+ strokeOpacity: "0.5",
39
+ fillOpacity : "0.25",
40
+ },
41
+ tooltip: {
42
+ chart: (item) => L._("a: ") + item.acceleration + " " + acceleration.label,
43
+ marker: (item) => Math.round(item.acceleration) + " " + acceleration.label,
44
+ order: 60,
45
+ },
46
+ summary: {
47
+ "minacceleration" : {
48
+ label: "Min Acceleration: ",
49
+ value: (track, unit) => Math.round(track.acceleration_min || 0) + ' ' + unit,
50
+ order: 60
51
+ },
52
+ "maxacceleration" : {
53
+ label: "Max Acceleration: ",
54
+ value: (track, unit) => Math.round(track.acceleration_max || 0) + ' ' + unit,
55
+ order: 61
56
+ },
57
+ "avgacceleration": {
58
+ label: "Avg Acceleration: ",
59
+ value: (track, unit) => Math.round(track.acceleration_avg || 0) + ' ' + unit,
60
+ order: 62
61
+ },
62
+ }
63
+ };
64
+ }
@@ -1,78 +1,78 @@
1
- export function Altitude() {
2
-
3
- const _ = L.Control.Elevation.Utils;
4
-
5
- let opts = this.options;
6
- let altitude = {};
7
-
8
- let theme = opts.theme.split(' ')[0].replace('-theme', '');
9
- let color = _.Colors[theme] || {};
10
-
11
- opts.altitudeFactor = opts.imperial ? this.__footFactor : (opts.altitudeFactor || 1); // 1 m = (1 m)
12
- altitude.label = opts.imperial ? "ft" : opts.yLabel;
13
-
14
- return {
15
- name: 'altitude',
16
- required: this.options.slope,
17
- meta: 'z',
18
- unit: altitude.label,
19
- statsName: 'elevation',
20
- deltaMax: this.options.altitudeDeltaMax,
21
- clampRange: this.options.altitudeRange,
22
- // init: ({point}) => {
23
- // // "alt" property is generated inside "leaflet"
24
- // if ("alt" in point) point.meta.ele = point.alt;
25
- // },
26
- pointToAttr: (point, i) => {
27
- if ("alt" in point) point.meta.ele = point.alt; // "alt" property is generated inside "leaflet"
28
- return this._data[i].z *= opts.altitudeFactor;
29
- },
30
- stats: { max: _.iMax, min: _.iMin, avg: _.iAvg },
31
- grid: {
32
- axis : "y",
33
- position : "left",
34
- scale : "y" // this._chart._y,
35
- },
36
- scale: {
37
- axis : "y",
38
- position: "left",
39
- scale : "y", // this._chart._y,
40
- labelX : -3,
41
- labelY : -8,
42
- },
43
- path: {
44
- label : 'Altitude',
45
- scaleX : 'distance',
46
- scaleY : 'altitude',
47
- className : 'area',
48
- color : color.area || theme,
49
- strokeColor : opts.detached ? color.stroke : '#000',
50
- strokeOpacity: "1",
51
- fillOpacity : opts.detached ? (color.alpha || '0.8') : 1,
52
- preferCanvas : opts.preferCanvas,
53
- },
54
- tooltip: {
55
- name: 'y',
56
- chart: (item) => L._("y: ") + _.round(item[opts.yAttr], opts.decimalsY) + " " + altitude.label,
57
- marker: (item) => _.round(item[opts.yAttr], opts.decimalsY) + " " + altitude.label,
58
- order: 10,
59
- },
60
- summary: {
61
- "minele" : {
62
- label: "Min Elevation: ",
63
- value: (track, unit) => (track.elevation_min || 0).toFixed(2) + ' ' + unit,
64
- order: 30,
65
- },
66
- "maxele" : {
67
- label: "Max Elevation: ",
68
- value: (track, unit) => (track.elevation_max || 0).toFixed(2) + ' ' + unit,
69
- order: 31,
70
- },
71
- "avgele" : {
72
- label: "Avg Elevation: ",
73
- value: (track, unit) => (track.elevation_avg || 0).toFixed(2) + ' ' + unit,
74
- order: 32,
75
- },
76
- }
77
- };
78
- }
1
+ export function Altitude() {
2
+
3
+ const _ = L.Control.Elevation.Utils;
4
+
5
+ let opts = this.options;
6
+ let altitude = {};
7
+
8
+ let theme = opts.theme.split(' ')[0].replace('-theme', '');
9
+ let color = _.Colors[theme] || {};
10
+
11
+ opts.altitudeFactor = opts.imperial ? this.__footFactor : (opts.altitudeFactor || 1); // 1 m = (1 m)
12
+ altitude.label = opts.imperial ? "ft" : opts.yLabel;
13
+
14
+ return {
15
+ name: 'altitude',
16
+ required: this.options.slope,
17
+ meta: 'z',
18
+ unit: altitude.label,
19
+ statsName: 'elevation',
20
+ deltaMax: this.options.altitudeDeltaMax,
21
+ clampRange: this.options.altitudeRange,
22
+ // init: ({point}) => {
23
+ // // "alt" property is generated inside "leaflet"
24
+ // if ("alt" in point) point.meta.ele = point.alt;
25
+ // },
26
+ pointToAttr: (point, i) => {
27
+ if ("alt" in point) point.meta.ele = point.alt; // "alt" property is generated inside "leaflet"
28
+ return this._data[i].z *= opts.altitudeFactor;
29
+ },
30
+ stats: { max: _.iMax, min: _.iMin, avg: _.iAvg },
31
+ grid: {
32
+ axis : "y",
33
+ position : "left",
34
+ scale : "y" // this._chart._y,
35
+ },
36
+ scale: {
37
+ axis : "y",
38
+ position: "left",
39
+ scale : "y", // this._chart._y,
40
+ labelX : -3,
41
+ labelY : -8,
42
+ },
43
+ path: {
44
+ label : 'Altitude',
45
+ scaleX : 'distance',
46
+ scaleY : 'altitude',
47
+ className : 'area',
48
+ color : color.area || theme,
49
+ strokeColor : opts.detached ? color.stroke : '#000',
50
+ strokeOpacity: "1",
51
+ fillOpacity : opts.detached ? (color.alpha || '0.8') : 1,
52
+ preferCanvas : opts.preferCanvas,
53
+ },
54
+ tooltip: {
55
+ name: 'y',
56
+ chart: (item) => L._("y: ") + _.round(item[opts.yAttr], opts.decimalsY) + " " + altitude.label,
57
+ marker: (item) => _.round(item[opts.yAttr], opts.decimalsY) + " " + altitude.label,
58
+ order: 10,
59
+ },
60
+ summary: {
61
+ "minele" : {
62
+ label: "Min Elevation: ",
63
+ value: (track, unit) => (track.elevation_min || 0).toFixed(2) + ' ' + unit,
64
+ order: 30,
65
+ },
66
+ "maxele" : {
67
+ label: "Max Elevation: ",
68
+ value: (track, unit) => (track.elevation_max || 0).toFixed(2) + ' ' + unit,
69
+ order: 31,
70
+ },
71
+ "avgele" : {
72
+ label: "Avg Elevation: ",
73
+ value: (track, unit) => (track.elevation_avg || 0).toFixed(2) + ' ' + unit,
74
+ order: 32,
75
+ },
76
+ }
77
+ };
78
+ }
@@ -1,54 +1,54 @@
1
- export function Cadence() {
2
-
3
- const _ = L.Control.Elevation.Utils;
4
-
5
- return {
6
- name: 'cadence', // <-- Your custom option name (eg. "cadence: true")
7
- unit: 'rpm',
8
- meta: 'cad', // <-- point.meta.cad
9
- coordinateProperties: ["cads", "cadences", "cad", "cadence"], // List of GPX Extensions ("coordinateProperties") to be handled by "@tmcw/toGeoJSON"
10
- pointToAttr: (point, i) => (point.cad ?? point.meta.cad ?? point.prev('cadence')) || 0,
11
- stats: { max: _.iMax, min: _.iMin, avg: _.iAvg },
12
- scale: {
13
- axis : "y",
14
- position : "right",
15
- scale : { min: -1, max: +1 },
16
- tickPadding: 16,
17
- labelX : 25,
18
- labelY : -8,
19
- },
20
- path: {
21
- label : 'RPM',
22
- yAttr : 'cadence',
23
- scaleX : 'distance',
24
- scaleY : 'cadence',
25
- color : '#FFF',
26
- strokeColor : 'blue',
27
- strokeOpacity: "0.85",
28
- fillOpacity : "0.1",
29
- },
30
- tooltip: {
31
- name: 'cadence',
32
- chart: (item) => L._("cad: ") + item.cadence + " " + 'rpm',
33
- marker: (item) => Math.round(item.cadence) + " " + 'rpm',
34
- order: 1
35
- },
36
- summary: {
37
- "minrpm": {
38
- label: "Min RPM: ",
39
- value: (track, unit) => Math.round(track.cadence_min || 0) + '&nbsp;' + unit,
40
- // order: 30
41
- },
42
- "maxrpm": {
43
- label: "Max RPM: ",
44
- value: (track, unit) => Math.round(track.cadence_max || 0) + '&nbsp;' + unit,
45
- // order: 30
46
- },
47
- "avgrpm": {
48
- label: "Avg RPM: ",
49
- value: (track, unit) => Math.round(track.cadence_avg || 0) + '&nbsp;' + unit,
50
- // order: 20
51
- },
52
- }
53
- };
1
+ export function Cadence() {
2
+
3
+ const _ = L.Control.Elevation.Utils;
4
+
5
+ return {
6
+ name: 'cadence', // <-- Your custom option name (eg. "cadence: true")
7
+ unit: 'rpm',
8
+ meta: 'cad', // <-- point.meta.cad
9
+ coordinateProperties: ["cads", "cadences", "cad", "cadence"], // List of GPX Extensions ("coordinateProperties") to be handled by "@tmcw/toGeoJSON"
10
+ pointToAttr: (point, i) => (point.cad ?? point.meta.cad ?? point.prev('cadence')) || 0,
11
+ stats: { max: _.iMax, min: _.iMin, avg: _.iAvg },
12
+ scale: {
13
+ axis : "y",
14
+ position : "right",
15
+ scale : { min: -1, max: +1 },
16
+ tickPadding: 16,
17
+ labelX : 25,
18
+ labelY : -8,
19
+ },
20
+ path: {
21
+ label : 'RPM',
22
+ yAttr : 'cadence',
23
+ scaleX : 'distance',
24
+ scaleY : 'cadence',
25
+ color : '#FFF',
26
+ strokeColor : 'blue',
27
+ strokeOpacity: "0.85",
28
+ fillOpacity : "0.1",
29
+ },
30
+ tooltip: {
31
+ name: 'cadence',
32
+ chart: (item) => L._("cad: ") + item.cadence + " " + 'rpm',
33
+ marker: (item) => Math.round(item.cadence) + " " + 'rpm',
34
+ order: 1
35
+ },
36
+ summary: {
37
+ "minrpm": {
38
+ label: "Min RPM: ",
39
+ value: (track, unit) => Math.round(track.cadence_min || 0) + '&nbsp;' + unit,
40
+ // order: 30
41
+ },
42
+ "maxrpm": {
43
+ label: "Max RPM: ",
44
+ value: (track, unit) => Math.round(track.cadence_max || 0) + '&nbsp;' + unit,
45
+ // order: 30
46
+ },
47
+ "avgrpm": {
48
+ label: "Avg RPM: ",
49
+ value: (track, unit) => Math.round(track.cadence_avg || 0) + '&nbsp;' + unit,
50
+ // order: 20
51
+ },
52
+ }
53
+ };
54
54
  }
@@ -1,53 +1,53 @@
1
- export function Heart() {
2
-
3
- const _ = L.Control.Elevation.Utils;
4
-
5
- return {
6
- name: 'heart', // <-- Your custom option name (eg. "heart: true")
7
- unit: 'bpm',
8
- meta: 'hr', // <-- point.meta.hr
9
- coordinateProperties: ["heart", "heartRates", "heartRate"], // List of GPX Extensions ("coordinateProperties") to be handled by "@tmcw/toGeoJSON"
10
- pointToAttr: (point, i) => (point.hr ?? point.meta.hr ?? point.prev('heart')) || 0,
11
- stats: { max: _.iMax, min: _.iMin, avg: _.iAvg },
12
- scale: {
13
- axis : "y",
14
- position : "left",
15
- scale : { min: -1, max: +1 },
16
- tickPadding: 25,
17
- labelX : -30,
18
- labelY : -8,
19
- },
20
- path: {
21
- label : 'ECG',
22
- yAttr : 'heart',
23
- scaleX : 'distance',
24
- scaleY : 'heart',
25
- color : 'white',
26
- strokeColor : 'red',
27
- strokeOpacity: "0.85",
28
- fillOpacity : "0.1",
29
- },
30
- tooltip: {
31
- chart: (item) => L._("hr: ") + item.heart + " " + 'bpm',
32
- marker: (item) => Math.round(item.heart) + " " + 'bpm',
33
- order: 1
34
- },
35
- summary: {
36
- "minbpm": {
37
- label: "Min BPM: ",
38
- value: (track, unit) => Math.round(track.heart_min || 0) + '&nbsp;' + unit,
39
- // order: 30
40
- },
41
- "maxbpm": {
42
- label: "Max BPM: ",
43
- value: (track, unit) => Math.round(track.heart_max || 0) + '&nbsp;' + unit,
44
- // order: 30
45
- },
46
- "avgbpm": {
47
- label: "Avg BPM: ",
48
- value: (track, unit) => Math.round(track.heart_avg || 0) + '&nbsp;' + unit,
49
- // order: 20
50
- },
51
- }
52
- };
1
+ export function Heart() {
2
+
3
+ const _ = L.Control.Elevation.Utils;
4
+
5
+ return {
6
+ name: 'heart', // <-- Your custom option name (eg. "heart: true")
7
+ unit: 'bpm',
8
+ meta: 'hr', // <-- point.meta.hr
9
+ coordinateProperties: ["heart", "heartRates", "heartRate"], // List of GPX Extensions ("coordinateProperties") to be handled by "@tmcw/toGeoJSON"
10
+ pointToAttr: (point, i) => (point.hr ?? point.meta.hr ?? point.prev('heart')) || 0,
11
+ stats: { max: _.iMax, min: _.iMin, avg: _.iAvg },
12
+ scale: {
13
+ axis : "y",
14
+ position : "left",
15
+ scale : { min: -1, max: +1 },
16
+ tickPadding: 25,
17
+ labelX : -30,
18
+ labelY : -8,
19
+ },
20
+ path: {
21
+ label : 'ECG',
22
+ yAttr : 'heart',
23
+ scaleX : 'distance',
24
+ scaleY : 'heart',
25
+ color : 'white',
26
+ strokeColor : 'red',
27
+ strokeOpacity: "0.85",
28
+ fillOpacity : "0.1",
29
+ },
30
+ tooltip: {
31
+ chart: (item) => L._("hr: ") + item.heart + " " + 'bpm',
32
+ marker: (item) => Math.round(item.heart) + " " + 'bpm',
33
+ order: 1
34
+ },
35
+ summary: {
36
+ "minbpm": {
37
+ label: "Min BPM: ",
38
+ value: (track, unit) => Math.round(track.heart_min || 0) + '&nbsp;' + unit,
39
+ // order: 30
40
+ },
41
+ "maxbpm": {
42
+ label: "Max BPM: ",
43
+ value: (track, unit) => Math.round(track.heart_max || 0) + '&nbsp;' + unit,
44
+ // order: 30
45
+ },
46
+ "avgbpm": {
47
+ label: "Avg BPM: ",
48
+ value: (track, unit) => Math.round(track.heart_avg || 0) + '&nbsp;' + unit,
49
+ // order: 20
50
+ },
51
+ }
52
+ };
53
53
  };
@@ -1,65 +1,65 @@
1
- export function Pace() {
2
-
3
- const _ = L.Control.Elevation.Utils;
4
-
5
- let opts = this.options;
6
- let pace = {};
7
-
8
- pace.label = opts.paceLabel || L._(opts.imperial ? 'min/mi' : 'min/km');
9
- opts.paceFactor = opts.paceFactor || 60; // 1 min = 60 sec
10
-
11
- return {
12
- name: 'pace',
13
- unit: pace.label,
14
- deltaMax: this.options.paceDeltaMax,
15
- clampRange: this.options.paceRange,
16
- decimals: 2,
17
- pointToAttr: (_, i) => {
18
- let dx = (this._data[i].dist - this._data[i > 0 ? i - 1 : i].dist) * 1000;
19
- let dt = this._data[i].time - this._data[ i > 0 ? i - 1 : i].time;
20
- return dx > 0 ? Math.abs((dt / dx) / opts.paceFactor) : NaN;
21
- },
22
- stats: { max: _.iMax, min: _.iMin, avg: _.iAvg },
23
- scale : (this.options.pace && this.options.pace != "summary") && {
24
- axis : "y",
25
- position : "right",
26
- scale : { min : 0, max : +1 },
27
- tickPadding: 16,
28
- labelX : 25,
29
- labelY : -8,
30
- },
31
- path: (this.options.pace && this.options.pace != "summary") && {
32
- // name : 'pace',
33
- label : 'Pace',
34
- yAttr : "pace",
35
- scaleX : 'distance',
36
- scaleY : 'pace',
37
- color : '#03ffff',
38
- strokeColor : '#000',
39
- strokeOpacity: "0.5",
40
- fillOpacity : "0.25",
41
- },
42
- tooltip: (this.options.pace) && {
43
- chart: (item) => L._('pace: ') + item.pace + " " + pace.label,
44
- marker: (item) => Math.round(item.pace) + " " + pace.label,
45
- order: 50,
46
- },
47
- summary: (this.options.pace) && {
48
- "minpace" : {
49
- label: "Min Pace: ",
50
- value: (track, unit) => Math.round(track.pace_min || 0) + '&nbsp;' + unit,
51
- order: 51
52
- },
53
- "maxpace" : {
54
- label: "Max Pace: ",
55
- value: (track, unit) => Math.round(track.pace_max || 0) + '&nbsp;' + unit,
56
- order: 51
57
- },
58
- "avgpace": {
59
- label: "Avg Pace: ",
60
- value: (track, unit) => Math.round(track.pace_avg || 0) + '&nbsp;' + unit,
61
- order: 52
62
- },
63
- }
64
- };
65
- }
1
+ export function Pace() {
2
+
3
+ const _ = L.Control.Elevation.Utils;
4
+
5
+ let opts = this.options;
6
+ let pace = {};
7
+
8
+ pace.label = opts.paceLabel || L._(opts.imperial ? 'min/mi' : 'min/km');
9
+ opts.paceFactor = opts.paceFactor || 60; // 1 min = 60 sec
10
+
11
+ return {
12
+ name: 'pace',
13
+ unit: pace.label,
14
+ deltaMax: this.options.paceDeltaMax,
15
+ clampRange: this.options.paceRange,
16
+ decimals: 2,
17
+ pointToAttr: (_, i) => {
18
+ let dx = (this._data[i].dist - this._data[i > 0 ? i - 1 : i].dist) * 1000;
19
+ let dt = this._data[i].time - this._data[ i > 0 ? i - 1 : i].time;
20
+ return dx > 0 ? Math.abs((dt / dx) / opts.paceFactor) : NaN;
21
+ },
22
+ stats: { max: _.iMax, min: _.iMin, avg: _.iAvg },
23
+ scale : (this.options.pace && this.options.pace != "summary") && {
24
+ axis : "y",
25
+ position : "right",
26
+ scale : { min : 0, max : +1 },
27
+ tickPadding: 16,
28
+ labelX : 25,
29
+ labelY : -8,
30
+ },
31
+ path: (this.options.pace && this.options.pace != "summary") && {
32
+ // name : 'pace',
33
+ label : 'Pace',
34
+ yAttr : "pace",
35
+ scaleX : 'distance',
36
+ scaleY : 'pace',
37
+ color : '#03ffff',
38
+ strokeColor : '#000',
39
+ strokeOpacity: "0.5",
40
+ fillOpacity : "0.25",
41
+ },
42
+ tooltip: (this.options.pace) && {
43
+ chart: (item) => L._('pace: ') + item.pace + " " + pace.label,
44
+ marker: (item) => Math.round(item.pace) + " " + pace.label,
45
+ order: 50,
46
+ },
47
+ summary: (this.options.pace) && {
48
+ "minpace" : {
49
+ label: "Min Pace: ",
50
+ value: (track, unit) => Math.round(track.pace_min || 0) + '&nbsp;' + unit,
51
+ order: 51
52
+ },
53
+ "maxpace" : {
54
+ label: "Max Pace: ",
55
+ value: (track, unit) => Math.round(track.pace_max || 0) + '&nbsp;' + unit,
56
+ order: 51
57
+ },
58
+ "avgpace": {
59
+ label: "Avg Pace: ",
60
+ value: (track, unit) => Math.round(track.pace_avg || 0) + '&nbsp;' + unit,
61
+ order: 52
62
+ },
63
+ }
64
+ };
65
+ }