@raruto/leaflet-elevation 2.5.0 → 2.5.2

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.
package/README.md CHANGED
@@ -24,6 +24,7 @@ _For a working example see one of the following demos:_
24
24
  - [loading multiple .gpx tracks (hover to toggle)](https://raruto.github.io/leaflet-elevation/examples/leaflet-elevation_hoverable-tracks.html)
25
25
  - [loading multiple .gpx tracks (click to toggle)](https://raruto.github.io/leaflet-elevation/examples/leaflet-elevation_toggable-charts.html)
26
26
  - [loading multiple maps](https://raruto.github.io/leaflet-elevation/examples/leaflet-elevation_multiple-maps.html)
27
+ - [stacking multiple charts (elevation, slope, speed)](https://raruto.github.io/leaflet-elevation/examples/leaflet-elevation_multiple-charts.html)
27
28
  - [translating plugin labels](https://raruto.github.io/leaflet-elevation/examples/leaflet-elevation_i18n-strings.html)
28
29
  - [rotating chart labels](https://raruto.github.io/leaflet-elevation/examples/leaflet-elevation_chart_labels.html)
29
30
  - [using custom colors](https://raruto.github.io/leaflet-elevation/examples/leaflet-elevation_custom-theme.html)
@@ -42,9 +43,10 @@ _For a working example see one of the following demos:_
42
43
  - [edge scale control](https://raruto.github.io/leaflet-elevation/examples/leaflet-elevation_edge-scale.html)
43
44
  - [follow marker](https://raruto.github.io/leaflet-elevation/examples/leaflet-elevation_follow-marker.html)
44
45
  - [layer almostover](https://raruto.github.io/leaflet-elevation/examples/leaflet-elevation_almost-over.html)
45
- - [linear gradient](https://raruto.github.io/leaflet-elevation/examples/leaflet-linear-gradient.html)
46
+ - [linear gradient](https://raruto.github.io/leaflet-elevation/examples/leaflet-elevation_linear-gradient.html)
46
47
  - [slope chart](https://raruto.github.io/leaflet-elevation/examples/leaflet-elevation_slope-chart.html)
47
48
  - [speed chart](https://raruto.github.io/leaflet-elevation/examples/leaflet-elevation_speed-chart.html)
49
+ - [temperature chart](https://raruto.github.io/leaflet-elevation/examples/leaflet-elevation_temperature-chart.html)
48
50
  - [walking marker](https://raruto.github.io/leaflet-elevation/examples/leaflet-elevation_dynamic-runner.html)
49
51
 
50
52
  ---
package/package.json CHANGED
@@ -1,13 +1,13 @@
1
1
  {
2
2
  "name": "@raruto/leaflet-elevation",
3
- "version": "2.5.0",
3
+ "version": "2.5.2",
4
4
  "description": "A Leaflet plugin that allows to add elevation profiles using d3js",
5
5
  "type": "module",
6
6
  "main": "dist/leaflet-elevation.min.js",
7
7
  "browser": "dist/leaflet-elevation.min.js",
8
8
  "module": "src/index.js",
9
9
  "scripts": {
10
- "test": "uvu . ^(examples)?(src)?\\.*\\.spec\\.js$",
10
+ "test": "uvu . \"(examples|src)[\\\\/].*\\.spec\\.js$\"",
11
11
  "build": "rollup -c build/rollup.config.js",
12
12
  "watch": "rollup -c build/rollup.config.js --watch",
13
13
  "dev": "npm-run-all --print-label --parallel serve watch",
@@ -158,7 +158,7 @@ export var Chart = L.Control.Elevation.Chart = L.Class.extend({
158
158
  if (this._data.length && (e.type != 'brush' /*|| e.sourceEvent*/)) {
159
159
  let rect = this._chart.panes.brush.select('.overlay').node();
160
160
  let coords = d3.pointers(e, rect)[0];
161
- let xCoord = coords[0];
161
+ let xCoord = _.clamp(coords[0], [0, this._width()]); // Clamps cursor position to chart's bounds (see issues: #270, #301)
162
162
  let item = this._data[this._findIndexForXCoord(xCoord)];
163
163
 
164
164
  this.fire("mouse_move", { item: item, xCoord: xCoord });
@@ -1,46 +1,46 @@
1
- export function Distance() {
2
-
3
- const _ = L.Control.Elevation.Utils;
4
-
5
- let opts = this.options;
6
- let distance = {};
7
-
8
- opts.distanceFactor = opts.imperial ? this.__mileFactor : (opts.distanceFactor || 1); // 1 km = (1000 m)
9
- distance.label = opts.imperial ? "mi" : opts.xLabel;
10
-
11
- return {
12
- name: 'distance',
13
- required: true,
14
- attr: 'dist',
15
- unit: distance.label,
16
- decimals: 5,
17
- pointToAttr: (_, i) => (i > 0 ? this._data[i - 1].dist : 0) + (this._data[i].latlng.distanceTo(this._data[i > 0 ? i - 1 : i].latlng) * opts.distanceFactor) / 1000, // convert back km to meters
18
- // stats: { total: _.iSum },
19
- onPointAdded: (distance, i) => this.track_info.distance = distance,
20
- scale: opts.distance && {
21
- axis : "x",
22
- position: "bottom",
23
- scale : "x", // this._chart._x,
24
- labelY : 25,
25
- labelX : () => this._width() + 6,
26
- ticks : () => _.clamp(this._chart._xTicks() / 2, [4, +Infinity]),
27
- },
28
- grid: opts.distance && {
29
- axis : "x",
30
- position : "bottom",
31
- scale : "x" // this._chart._x,
32
- },
33
- tooltip: opts.distance && {
34
- name: 'x',
35
- chart: (item) => L._("x: ") + _.round(item[opts.xAttr], opts.decimalsX) + " " + distance.label,
36
- order: 20
37
- },
38
- summary: opts.distance && {
39
- "totlen" : {
40
- label: "Total Length: ",
41
- value: (track) => (track.distance || 0).toFixed(2) + ' ' + distance.label,
42
- order: 10
43
- }
44
- }
45
- };
46
- }
1
+ export function Distance() {
2
+
3
+ const _ = L.Control.Elevation.Utils;
4
+
5
+ let opts = this.options;
6
+ let distance = {};
7
+
8
+ opts.distanceFactor = opts.imperial ? this.__mileFactor : (opts.distanceFactor || 1); // 1 km = (1000 m)
9
+ distance.label = opts.imperial ? "mi" : opts.xLabel;
10
+
11
+ return {
12
+ name: 'distance',
13
+ required: true,
14
+ attr: 'dist',
15
+ unit: distance.label,
16
+ decimals: 5,
17
+ pointToAttr: (_, i) => (i > 0 ? this._data[i - 1].dist : 0) + (this._data[i].latlng.distanceTo(this._data[i > 0 ? i - 1 : i].latlng) * opts.distanceFactor) / 1000, // convert back km to meters
18
+ // stats: { total: _.iSum },
19
+ onPointAdded: (distance, i) => this.track_info.distance = distance,
20
+ scale: opts.distance && {
21
+ axis : "x",
22
+ position: "bottom",
23
+ scale : "x", // this._chart._x,
24
+ labelY : 25,
25
+ labelX : () => this._width() + 6,
26
+ ticks : () => _.clamp(this._chart._xTicks() / 2, [4, +Infinity]),
27
+ },
28
+ grid: opts.distance && {
29
+ axis : "x",
30
+ position : "bottom",
31
+ scale : "x" // this._chart._x,
32
+ },
33
+ tooltip: opts.distance && {
34
+ name: 'x',
35
+ chart: (item) => L._("x: ") + _.round(item[opts.xAttr], opts.decimalsX) + " " + distance.label,
36
+ order: 20
37
+ },
38
+ summary: opts.distance && {
39
+ "totlen" : {
40
+ label: "Total Length: ",
41
+ value: (track) => (track.distance || 0).toFixed(2) + ' ' + distance.label,
42
+ order: 10
43
+ }
44
+ }
45
+ };
46
+ }
@@ -0,0 +1,62 @@
1
+ export function Temperature() {
2
+
3
+ const _ = L.Control.Elevation.Utils;
4
+
5
+ let temperature = {};
6
+ let opts = this.options;
7
+ temperature.label = opts.label || L._(opts.imperial ? '°F' : '°C');
8
+
9
+ // Fahrenheit = (Celsius * 9/5) + 32
10
+ opts.temperatureFactor1 = opts.temperatureFactor1 ?? (opts.imperial ? 1.8 : 1);
11
+ opts.temperatureFactor2 = opts.temperatureFactor2 ?? (opts.imperial ? 32 : 0);
12
+
13
+ return {
14
+ name: 'temperature', // <-- Your custom option name (eg. "temperature: true")
15
+ unit: temperature.label,
16
+ meta: 'atemps', // <-- point.meta.atemps
17
+ coordinateProperties: ["atemps"], // List of GPX Extensions ("coordinateProperties") to be handled by "@tmcw/toGeoJSON"
18
+ deltaMax: this.options.temperatureDeltaMax,
19
+ clampRange: this.options.temperatureRange,
20
+ decimals: 2,
21
+ pointToAttr: (point, i) => (point.meta.atemps ?? point.meta.atemps ?? point.prev('temperature')) * opts.temperatureFactor1 + opts.temperatureFactor2,
22
+ stats: { max: _.iMax, min: _.iMin, avg: _.iAvg },
23
+ scale: {
24
+ axis : "y",
25
+ position : "right",
26
+ scale : { min: -1, max: +1 },
27
+ tickPadding: 16,
28
+ labelX : +18,
29
+ labelY : -8,
30
+ },
31
+ path: {
32
+ label : temperature.label,
33
+ yAttr : 'temperature',
34
+ scaleX : 'distance',
35
+ scaleY : 'temperature',
36
+ color : 'transparent',
37
+ strokeColor : '#000',
38
+ strokeOpacity: "0.85",
39
+ // fillOpacity : "0.1",
40
+ },
41
+ tooltip: {
42
+ name: 'temperature',
43
+ chart: (item) => L._("Temp: ") + Math.round(item.temperature).toLocaleString() + " " + temperature.label,
44
+ marker: (item) => Math.round(item.temperature).toLocaleString() + " " + temperature.label,
45
+ order: 1
46
+ },
47
+ summary: {
48
+ "mintemp": {
49
+ label: "Min Temp: ",
50
+ value: (track, unit) => Math.round(track.temperature_min || 0) + '&nbsp;' + unit,
51
+ },
52
+ "maxtemp": {
53
+ label: "Max Temp: ",
54
+ value: (track, unit) => Math.round(track.temperature_max || 0) + '&nbsp;' + unit,
55
+ },
56
+ "avgtemp": {
57
+ label: "Avg Temp: ",
58
+ value: (track, unit) => Math.round(track.temperature_avg || 0) + '&nbsp;' + unit,
59
+ },
60
+ }
61
+ };
62
+ }