Fix European trip return heuristic for weekend location tracking
Adjust European short trip heuristic from >3 days to >1 day to correctly detect when user has returned home from European trips. This fixes the April 29-30, 2023 case where the location incorrectly showed "Sankt Georg, Hamburg" instead of "Bristol" when the user was free (no events scheduled) after the foss-north trip ended on April 27. The previous logic required more than 3 days to pass before assuming return home from European countries, but for short European trips by rail/ferry, users typically return within 1-2 days. 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
parent
663dc479c2
commit
ea4980a5d7
6407 changed files with 1072847 additions and 18 deletions
144
node_modules/leaflet/src/layer/vector/SVG.VML.js
generated
vendored
Normal file
144
node_modules/leaflet/src/layer/vector/SVG.VML.js
generated
vendored
Normal file
|
|
@ -0,0 +1,144 @@
|
|||
import * as DomUtil from '../../dom/DomUtil';
|
||||
import * as Util from '../../core/Util';
|
||||
import {Renderer} from './Renderer';
|
||||
|
||||
/*
|
||||
* Thanks to Dmitry Baranovsky and his Raphael library for inspiration!
|
||||
*/
|
||||
|
||||
|
||||
export var vmlCreate = (function () {
|
||||
try {
|
||||
document.namespaces.add('lvml', 'urn:schemas-microsoft-com:vml');
|
||||
return function (name) {
|
||||
return document.createElement('<lvml:' + name + ' class="lvml">');
|
||||
};
|
||||
} catch (e) {
|
||||
// Do not return fn from catch block so `e` can be garbage collected
|
||||
// See https://github.com/Leaflet/Leaflet/pull/7279
|
||||
}
|
||||
return function (name) {
|
||||
return document.createElement('<' + name + ' xmlns="urn:schemas-microsoft.com:vml" class="lvml">');
|
||||
};
|
||||
})();
|
||||
|
||||
|
||||
/*
|
||||
* @class SVG
|
||||
*
|
||||
*
|
||||
* VML was deprecated in 2012, which means VML functionality exists only for backwards compatibility
|
||||
* with old versions of Internet Explorer.
|
||||
*/
|
||||
|
||||
// mixin to redefine some SVG methods to handle VML syntax which is similar but with some differences
|
||||
export var vmlMixin = {
|
||||
|
||||
_initContainer: function () {
|
||||
this._container = DomUtil.create('div', 'leaflet-vml-container');
|
||||
},
|
||||
|
||||
_update: function () {
|
||||
if (this._map._animatingZoom) { return; }
|
||||
Renderer.prototype._update.call(this);
|
||||
this.fire('update');
|
||||
},
|
||||
|
||||
_initPath: function (layer) {
|
||||
var container = layer._container = vmlCreate('shape');
|
||||
|
||||
DomUtil.addClass(container, 'leaflet-vml-shape ' + (this.options.className || ''));
|
||||
|
||||
container.coordsize = '1 1';
|
||||
|
||||
layer._path = vmlCreate('path');
|
||||
container.appendChild(layer._path);
|
||||
|
||||
this._updateStyle(layer);
|
||||
this._layers[Util.stamp(layer)] = layer;
|
||||
},
|
||||
|
||||
_addPath: function (layer) {
|
||||
var container = layer._container;
|
||||
this._container.appendChild(container);
|
||||
|
||||
if (layer.options.interactive) {
|
||||
layer.addInteractiveTarget(container);
|
||||
}
|
||||
},
|
||||
|
||||
_removePath: function (layer) {
|
||||
var container = layer._container;
|
||||
DomUtil.remove(container);
|
||||
layer.removeInteractiveTarget(container);
|
||||
delete this._layers[Util.stamp(layer)];
|
||||
},
|
||||
|
||||
_updateStyle: function (layer) {
|
||||
var stroke = layer._stroke,
|
||||
fill = layer._fill,
|
||||
options = layer.options,
|
||||
container = layer._container;
|
||||
|
||||
container.stroked = !!options.stroke;
|
||||
container.filled = !!options.fill;
|
||||
|
||||
if (options.stroke) {
|
||||
if (!stroke) {
|
||||
stroke = layer._stroke = vmlCreate('stroke');
|
||||
}
|
||||
container.appendChild(stroke);
|
||||
stroke.weight = options.weight + 'px';
|
||||
stroke.color = options.color;
|
||||
stroke.opacity = options.opacity;
|
||||
|
||||
if (options.dashArray) {
|
||||
stroke.dashStyle = Util.isArray(options.dashArray) ?
|
||||
options.dashArray.join(' ') :
|
||||
options.dashArray.replace(/( *, *)/g, ' ');
|
||||
} else {
|
||||
stroke.dashStyle = '';
|
||||
}
|
||||
stroke.endcap = options.lineCap.replace('butt', 'flat');
|
||||
stroke.joinstyle = options.lineJoin;
|
||||
|
||||
} else if (stroke) {
|
||||
container.removeChild(stroke);
|
||||
layer._stroke = null;
|
||||
}
|
||||
|
||||
if (options.fill) {
|
||||
if (!fill) {
|
||||
fill = layer._fill = vmlCreate('fill');
|
||||
}
|
||||
container.appendChild(fill);
|
||||
fill.color = options.fillColor || options.color;
|
||||
fill.opacity = options.fillOpacity;
|
||||
|
||||
} else if (fill) {
|
||||
container.removeChild(fill);
|
||||
layer._fill = null;
|
||||
}
|
||||
},
|
||||
|
||||
_updateCircle: function (layer) {
|
||||
var p = layer._point.round(),
|
||||
r = Math.round(layer._radius),
|
||||
r2 = Math.round(layer._radiusY || r);
|
||||
|
||||
this._setPath(layer, layer._empty() ? 'M0 0' :
|
||||
'AL ' + p.x + ',' + p.y + ' ' + r + ',' + r2 + ' 0,' + (65535 * 360));
|
||||
},
|
||||
|
||||
_setPath: function (layer, path) {
|
||||
layer._path.v = path;
|
||||
},
|
||||
|
||||
_bringToFront: function (layer) {
|
||||
DomUtil.toFront(layer._container);
|
||||
},
|
||||
|
||||
_bringToBack: function (layer) {
|
||||
DomUtil.toBack(layer._container);
|
||||
}
|
||||
};
|
||||
Loading…
Add table
Add a link
Reference in a new issue