Compare commits

..

6 commits

Author SHA1 Message Date
Yohan Boniface
06c2438ff1
fixup: fix save center and zoom (#2371)
Some checks are pending
Test & Docs / tests (postgresql, 3.10) (push) Waiting to run
Test & Docs / tests (postgresql, 3.12) (push) Waiting to run
Test & Docs / lint (push) Waiting to run
Test & Docs / docs (push) Waiting to run
Broken since map split.
2024-12-16 18:30:37 +01:00
Yohan Boniface
b92490eacc
feat: load all datalayers in parallel (#2370) 2024-12-16 18:26:55 +01:00
Yohan Boniface
cdb5d79297
chore: clean CSS loader (#2369)
- change the CSS (cf
https://github.com/umap-project/umap/issues/564#issuecomment-2541883101)
- change the way we pass events (and their id) to Leaflet.Loading
2024-12-16 18:24:43 +01:00
Yohan Boniface
ecdc58948f fixup: fix save center and zoom
Broken since map split.
2024-12-16 18:22:44 +01:00
Yohan Boniface
e3f02a475f feat: load all datalayers in parallel 2024-12-16 18:03:45 +01:00
Yohan Boniface
9c3f8db548 chore: clean CSS loader
- change the CSS (cf https://github.com/umap-project/umap/issues/564#issuecomment-2541883101)
- change the way we pass events (and their id) to Leaflet.Loading
2024-12-16 18:01:01 +01:00
5 changed files with 48 additions and 173 deletions

View file

@ -263,8 +263,12 @@ export const LeafletMap = BaseMap.extend({
this.loader.onAdd(this)
if (!this.options.noControl) {
DomEvent.on(document.body, 'dataloading', (e) => this.fire('dataloading', e))
DomEvent.on(document.body, 'dataload', (e) => this.fire('dataload', e))
DomEvent.on(document.body, 'dataloading', (event) =>
this.fire('dataloading', event.detail)
)
DomEvent.on(document.body, 'dataload', (event) =>
this.fire('dataload', event.detail)
)
this.on('click', this.closeInplaceToolbar)
}

View file

@ -47,8 +47,8 @@ class BaseRequest {
// In case of error, an alert is sent, but non 20X status are not handled
// The consumer must check the response status by hand
export class Request extends BaseRequest {
fire(name, params) {
document.body.dispatchEvent(new CustomEvent(name, params))
fire(name, detail) {
document.body.dispatchEvent(new CustomEvent(name, { detail }))
}
async _fetch(method, uri, headers, data) {

View file

@ -570,9 +570,11 @@ export default class Umap extends ServerStored {
}
this.datalayersLoaded = true
this.fire('datalayersloaded')
const toLoad = []
for (const datalayer of this.datalayersIndex) {
if (datalayer.showAtLoad()) await datalayer.show()
if (datalayer.showAtLoad()) toLoad.push(datalayer.show())
}
await Promise.all(toLoad)
this.dataloaded = true
this.fire('dataloaded')
}
@ -1190,7 +1192,7 @@ export default class Umap extends ServerStored {
geometry() {
/* Return a GeoJSON geometry Object */
const latlng = this._leafletMap.latLng(
this._leafletMap.options.center || this._leafletMap.getCenter()
this.properties.center || this._leafletMap.getCenter()
)
return {
type: 'Point',
@ -1668,8 +1670,8 @@ export default class Umap extends ServerStored {
}
_setCenterAndZoom() {
this._leafletMap.options.center = this._leafletMap.getCenter()
this._leafletMap.options.zoom = this._leafletMap.getZoom()
this.properties.center = this._leafletMap.getCenter()
this.properties.zoom = this._leafletMap.getZoom()
this.isDirty = true
this._defaultExtent = false
}

View file

@ -942,11 +942,11 @@ L.Control.Loading.include({
},
_showIndicator: function () {
L.DomUtil.addClass(this._map._container, 'umap-loading')
this._map._container.classList.add('umap-loading')
},
_hideIndicator: function () {
L.DomUtil.removeClass(this._map._container, 'umap-loading')
this._map._container.classList.remove('umap-loading')
},
})

View file

@ -935,173 +935,42 @@ a.umap-control-caption,
/* ********************************* */
/* Ajax loader */
/* ********************************* */
.umap-loading .umap-loader
{
display: block;
-webkit-animation: shift-rightwards 3s ease-in-out infinite;
-moz-animation: shift-rightwards 3s ease-in-out infinite;
-ms-animation: shift-rightwards 3s ease-in-out infinite;
-o-animation: shift-rightwards 3s ease-in-out infinite;
animation: shift-rightwards 3s ease-in-out infinite;
-webkit-animation-delay: .2s;
-moz-animation-delay: .2s;
-o-animation-delay: .2s;
animation-delay: .2s;
}
.umap-loader {
width: 100%;
height: 6px;
display: inline-block;
position: absolute;
background: var(--color-brightCyan);
overflow: hidden;
display: none;
top: 0;
left: 0;
right: 0;
height: 4px;
z-index: var(--zindex-loader);
background-color: #79c1c0 !important;
-webkit-transform: translateX(100%);
-moz-transform: translateX(100%);
-o-transform: translateX(100%);
transform: translateX(100%);
}
.umap-loader::after {
content: '';
box-sizing: border-box;
width: 0;
height: 4.8px;
background: var(--color-darkerGray);
position: absolute;
top: 0;
left: 0;
animation: animFw 10s linear infinite;
}
@-webkit-keyframes shift-rightwards
{
0%
{
-webkit-transform:translateX(-100%);
-moz-transform:translateX(-100%);
-o-transform:translateX(-100%);
transform:translateX(-100%);
@keyframes animFw {
0% {
width: 0;
}
40%
{
-webkit-transform:translateX(0%);
-moz-transform:translateX(0%);
-o-transform:translateX(0%);
transform:translateX(0%);
100% {
width: 100%;
}
60%
{
-webkit-transform:translateX(0%);
-moz-transform:translateX(0%);
-o-transform:translateX(0%);
transform:translateX(0%);
}
100%
{
-webkit-transform:translateX(100%);
-moz-transform:translateX(100%);
-o-transform:translateX(100%);
transform:translateX(100%);
}
}
@-moz-keyframes shift-rightwards
{
0%
{
-webkit-transform:translateX(-100%);
-moz-transform:translateX(-100%);
-o-transform:translateX(-100%);
transform:translateX(-100%);
}
40%
{
-webkit-transform:translateX(0%);
-moz-transform:translateX(0%);
-o-transform:translateX(0%);
transform:translateX(0%);
}
60%
{
-webkit-transform:translateX(0%);
-moz-transform:translateX(0%);
-o-transform:translateX(0%);
transform:translateX(0%);
}
100%
{
-webkit-transform:translateX(100%);
-moz-transform:translateX(100%);
-o-transform:translateX(100%);
transform:translateX(100%);
}
}
@-o-keyframes shift-rightwards
{
0%
{
-webkit-transform:translateX(-100%);
-moz-transform:translateX(-100%);
-o-transform:translateX(-100%);
transform:translateX(-100%);
}
40%
{
-webkit-transform:translateX(0%);
-moz-transform:translateX(0%);
-o-transform:translateX(0%);
transform:translateX(0%);
}
60%
{
-webkit-transform:translateX(0%);
-moz-transform:translateX(0%);
-o-transform:translateX(0%);
transform:translateX(0%);
}
100%
{
-webkit-transform:translateX(100%);
-moz-transform:translateX(100%);
-o-transform:translateX(100%);
transform:translateX(100%);
}
}
@keyframes shift-rightwards
{
0%
{
-webkit-transform:translateX(-100%);
-moz-transform:translateX(-100%);
-o-transform:translateX(-100%);
transform:translateX(-100%);
}
40%
{
-webkit-transform:translateX(0%);
-moz-transform:translateX(0%);
-o-transform:translateX(0%);
transform:translateX(0%);
}
60%
{
-webkit-transform:translateX(0%);
-moz-transform:translateX(0%);
-o-transform:translateX(0%);
transform:translateX(0%);
}
100%
{
-webkit-transform:translateX(100%);
-moz-transform:translateX(100%);
-o-transform:translateX(100%);
transform:translateX(100%);
}
.umap-loading .umap-loader {
display: block;
}
/* *************************** */