geonetwork-ui 2.2.0-dev.c15a456d → 2.2.0-dev.f866474c
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/esm2022/libs/feature/catalog/src/lib/organisations/organisations.component.mjs +4 -15
- package/esm2022/libs/feature/map/src/lib/add-layer-from-wms/add-layer-from-wms.component.mjs +63 -0
- package/esm2022/libs/feature/map/src/lib/feature-map.module.mjs +5 -2
- package/esm2022/libs/feature/map/src/lib/layers-panel/layers-panel.component.mjs +4 -3
- package/esm2022/libs/ui/elements/src/lib/metadata-contact/metadata-contact.component.mjs +10 -3
- package/esm2022/libs/ui/inputs/src/lib/dropdown-multiselect/dropdown-multiselect.component.mjs +6 -3
- package/esm2022/libs/util/i18n/src/index.mjs +2 -1
- package/esm2022/libs/util/shared/src/lib/utils/fuzzy-filter.mjs +27 -0
- package/esm2022/libs/util/shared/src/lib/utils/index.mjs +2 -1
- package/esm2022/translations/de.json +4 -0
- package/esm2022/translations/en.json +4 -0
- package/esm2022/translations/es.json +4 -0
- package/esm2022/translations/fr.json +4 -0
- package/esm2022/translations/it.json +4 -0
- package/esm2022/translations/nl.json +4 -0
- package/esm2022/translations/pt.json +4 -0
- package/fesm2022/geonetwork-ui.mjs +126 -21
- package/fesm2022/geonetwork-ui.mjs.map +1 -1
- package/libs/feature/catalog/src/lib/organisations/organisations.component.d.ts +0 -1
- package/libs/feature/catalog/src/lib/organisations/organisations.component.d.ts.map +1 -1
- package/libs/feature/map/src/lib/add-layer-from-wms/add-layer-from-wms.component.d.ts +22 -0
- package/libs/feature/map/src/lib/add-layer-from-wms/add-layer-from-wms.component.d.ts.map +1 -0
- package/libs/feature/map/src/lib/feature-map.module.d.ts +13 -12
- package/libs/feature/map/src/lib/feature-map.module.d.ts.map +1 -1
- package/libs/ui/elements/src/lib/metadata-contact/metadata-contact.component.d.ts +1 -0
- package/libs/ui/elements/src/lib/metadata-contact/metadata-contact.component.d.ts.map +1 -1
- package/libs/ui/inputs/src/lib/dropdown-multiselect/dropdown-multiselect.component.d.ts.map +1 -1
- package/libs/util/i18n/src/index.d.ts +1 -0
- package/libs/util/i18n/src/index.d.ts.map +1 -1
- package/libs/util/shared/src/lib/utils/fuzzy-filter.d.ts +9 -0
- package/libs/util/shared/src/lib/utils/fuzzy-filter.d.ts.map +1 -0
- package/libs/util/shared/src/lib/utils/index.d.ts +1 -0
- package/libs/util/shared/src/lib/utils/index.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/libs/feature/catalog/src/lib/organisations/organisations.component.ts +3 -17
- package/src/libs/feature/map/src/lib/add-layer-from-wms/add-layer-from-wms.component.css +0 -0
- package/src/libs/feature/map/src/lib/add-layer-from-wms/add-layer-from-wms.component.html +55 -0
- package/src/libs/feature/map/src/lib/add-layer-from-wms/add-layer-from-wms.component.ts +63 -0
- package/src/libs/feature/map/src/lib/feature-map.module.ts +2 -0
- package/src/libs/feature/map/src/lib/layers-panel/layers-panel.component.html +3 -1
- package/src/libs/ui/elements/src/lib/metadata-contact/metadata-contact.component.html +93 -27
- package/src/libs/ui/elements/src/lib/metadata-contact/metadata-contact.component.ts +7 -0
- package/src/libs/ui/inputs/src/lib/dropdown-multiselect/dropdown-multiselect.component.ts +7 -4
- package/src/libs/util/i18n/src/index.ts +1 -0
- package/src/libs/util/shared/src/lib/utils/fuzzy-filter.ts +32 -0
- package/src/libs/util/shared/src/lib/utils/index.ts +1 -0
- package/translations/de.json +4 -0
- package/translations/en.json +4 -0
- package/translations/es.json +4 -0
- package/translations/fr.json +4 -0
- package/translations/it.json +4 -0
- package/translations/nl.json +4 -0
- package/translations/pt.json +4 -0
- package/translations/sk.json +4 -0
|
@@ -22,7 +22,6 @@ export declare class OrganisationsComponent {
|
|
|
22
22
|
protected setFilterBy(value: string): void;
|
|
23
23
|
protected setSortBy(value: SortByField): void;
|
|
24
24
|
private filterOrganisations;
|
|
25
|
-
private normalizeString;
|
|
26
25
|
private sortOrganisations;
|
|
27
26
|
trackByIndex(index: number): number;
|
|
28
27
|
getOrganisationUrl(organisation: Organization): string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"organisations.component.d.ts","sourceRoot":"","sources":["../../../../../../src/libs/feature/catalog/src/lib/organisations/organisations.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,YAAY,EAKb,MAAM,eAAe,CAAA;AACtB,OAAO,EAAE,YAAY,EAAE,MAAM,2DAA2D,CAAA;AACxF,OAAO,EAAE,eAAe,EAAiB,UAAU,EAAE,MAAM,MAAM,CAAA;AAGjE,OAAO,EAAE,6BAA6B,EAAE,MAAM,8EAA8E,CAAA;AAC5H,OAAO,EAAE,WAAW,EAAE,MAAM,2DAA2D,CAAA;;
|
|
1
|
+
{"version":3,"file":"organisations.component.d.ts","sourceRoot":"","sources":["../../../../../../src/libs/feature/catalog/src/lib/organisations/organisations.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,YAAY,EAKb,MAAM,eAAe,CAAA;AACtB,OAAO,EAAE,YAAY,EAAE,MAAM,2DAA2D,CAAA;AACxF,OAAO,EAAE,eAAe,EAAiB,UAAU,EAAE,MAAM,MAAM,CAAA;AAGjE,OAAO,EAAE,6BAA6B,EAAE,MAAM,8EAA8E,CAAA;AAC5H,OAAO,EAAE,WAAW,EAAE,MAAM,2DAA2D,CAAA;;AAGvF,qBAMa,sBAAsB;IAK/B,OAAO,CAAC,oBAAoB;IAG5B,OAAO,CAAC,WAAW;IAPZ,WAAW,SAAK;IACf,SAAS,6BAAmC;gBAG5C,oBAAoB,EAAE,6BAA6B,EAGnD,WAAW,EAAE,MAAM;IAG7B,UAAU,EAAE,MAAM,CAAA;IAClB,YAAY,0BAAyB;IACrC,mBAAmB,EAAE,MAAM,CAAA;IAC3B,OAAO,EAAE,eAAe,CAAC,WAAW,CAAC,CAAuC;IAC5E,SAAS,EAAE,eAAe,CAAC,MAAM,CAAC,CAA0B;IAC5D,mBAAmB,qBAAgD;IACnE,+BAA+B,EAAE,UAAU,CAAC,YAAY,EAAE,CAAC,CAc1D;IAED,cAAc,EAAE,UAAU,CAAC,YAAY,EAAE,CAAC,CAczC;IAED,SAAS,CAAC,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAI5C,SAAS,CAAC,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAK1C,SAAS,CAAC,SAAS,CAAC,KAAK,EAAE,WAAW,GAAG,IAAI;IAI7C,OAAO,CAAC,mBAAmB;IAM3B,OAAO,CAAC,iBAAiB;IAwBzB,YAAY,CAAC,KAAK,EAAE,MAAM;IAI1B,kBAAkB,CAAC,YAAY,EAAE,YAAY,GAAG,MAAM;yCAhG3C,sBAAsB;2CAAtB,sBAAsB;CAoGlC"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { ChangeDetectorRef, OnInit } from '@angular/core';
|
|
2
|
+
import { WmsEndpoint, WmsLayerSummary } from '@camptocamp/ogc-client';
|
|
3
|
+
import { MapFacade } from '../+state/map.facade';
|
|
4
|
+
import { Subject } from 'rxjs';
|
|
5
|
+
import * as i0 from "@angular/core";
|
|
6
|
+
export declare class AddLayerFromWmsComponent implements OnInit {
|
|
7
|
+
private mapFacade;
|
|
8
|
+
private changeDetectorRef;
|
|
9
|
+
wmsUrl: string;
|
|
10
|
+
loading: boolean;
|
|
11
|
+
layers: WmsLayerSummary[];
|
|
12
|
+
wmsEndpoint: WmsEndpoint | null;
|
|
13
|
+
urlChange: Subject<string>;
|
|
14
|
+
errorMessage: string | null;
|
|
15
|
+
constructor(mapFacade: MapFacade, changeDetectorRef: ChangeDetectorRef);
|
|
16
|
+
ngOnInit(): void;
|
|
17
|
+
loadLayers(): Promise<void>;
|
|
18
|
+
addLayer(layer: WmsLayerSummary): void;
|
|
19
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<AddLayerFromWmsComponent, never>;
|
|
20
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<AddLayerFromWmsComponent, "gn-ui-add-layer-from-wms", never, {}, {}, never, never, false, never>;
|
|
21
|
+
}
|
|
22
|
+
//# sourceMappingURL=add-layer-from-wms.component.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"add-layer-from-wms.component.d.ts","sourceRoot":"","sources":["../../../../../../src/libs/feature/map/src/lib/add-layer-from-wms/add-layer-from-wms.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,iBAAiB,EAAE,MAAM,EAAE,MAAM,eAAe,CAAA;AACpE,OAAO,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAA;AACrE,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAA;AAKhD,OAAO,EAAE,OAAO,EAAE,MAAM,MAAM,CAAA;;AAG9B,qBAKa,wBAAyB,YAAW,MAAM;IASnD,OAAO,CAAC,SAAS;IACjB,OAAO,CAAC,iBAAiB;IAT3B,MAAM,SAAK;IACX,OAAO,UAAQ;IACf,MAAM,EAAE,eAAe,EAAE,CAAK;IAC9B,WAAW,EAAE,WAAW,GAAG,IAAI,CAAO;IACtC,SAAS,kBAAwB;IACjC,YAAY,EAAE,MAAM,GAAG,IAAI,CAAO;gBAGxB,SAAS,EAAE,SAAS,EACpB,iBAAiB,EAAE,iBAAiB;IAG9C,QAAQ;IAIF,UAAU;IAsBhB,QAAQ,CAAC,KAAK,EAAE,eAAe;yCAvCpB,wBAAwB;2CAAxB,wBAAwB;CA+CpC"}
|
|
@@ -5,20 +5,21 @@ import * as i3 from "./layers-panel/layers-panel.component";
|
|
|
5
5
|
import * as i4 from "./add-layer-from-catalog/add-layer-from-catalog.component";
|
|
6
6
|
import * as i5 from "./map-container/map-container.component";
|
|
7
7
|
import * as i6 from "./add-layer-from-catalog/add-layer-record-preview/add-layer-record-preview.component";
|
|
8
|
-
import * as i7 from "
|
|
9
|
-
import * as i8 from "
|
|
10
|
-
import * as i9 from "../../../../ui/
|
|
11
|
-
import * as i10 from "
|
|
12
|
-
import * as i11 from "@angular/material/
|
|
13
|
-
import * as i12 from "@
|
|
14
|
-
import * as i13 from "
|
|
15
|
-
import * as i14 from "
|
|
16
|
-
import * as i15 from "@ngrx/
|
|
17
|
-
import * as i16 from "
|
|
18
|
-
import * as i17 from "../../../../ui/
|
|
8
|
+
import * as i7 from "./add-layer-from-wms/add-layer-from-wms.component";
|
|
9
|
+
import * as i8 from "@angular/common";
|
|
10
|
+
import * as i9 from "../../../../ui/map/src/lib/ui-map.module";
|
|
11
|
+
import * as i10 from "../../../../ui/layout/src/lib/ui-layout.module";
|
|
12
|
+
import * as i11 from "@angular/material/icon";
|
|
13
|
+
import * as i12 from "@angular/material/tabs";
|
|
14
|
+
import * as i13 from "@ngx-translate/core";
|
|
15
|
+
import * as i14 from "../../../search/src/lib/feature-search.module";
|
|
16
|
+
import * as i15 from "@ngrx/store";
|
|
17
|
+
import * as i16 from "@ngrx/effects";
|
|
18
|
+
import * as i17 from "../../../../ui/elements/src/lib/ui-elements.module";
|
|
19
|
+
import * as i18 from "../../../../ui/inputs/src/lib/ui-inputs.module";
|
|
19
20
|
export declare class FeatureMapModule {
|
|
20
21
|
static ɵfac: i0.ɵɵFactoryDeclaration<FeatureMapModule, never>;
|
|
21
|
-
static ɵmod: i0.ɵɵNgModuleDeclaration<FeatureMapModule, [typeof i1.MapContextComponent, typeof i2.MapInstanceDirective, typeof i3.LayersPanelComponent, typeof i4.AddLayerFromCatalogComponent, typeof i5.MapContainerComponent, typeof i6.AddLayerRecordPreviewComponent], [typeof
|
|
22
|
+
static ɵmod: i0.ɵɵNgModuleDeclaration<FeatureMapModule, [typeof i1.MapContextComponent, typeof i2.MapInstanceDirective, typeof i3.LayersPanelComponent, typeof i4.AddLayerFromCatalogComponent, typeof i5.MapContainerComponent, typeof i6.AddLayerRecordPreviewComponent, typeof i7.AddLayerFromWmsComponent], [typeof i8.CommonModule, typeof i9.UiMapModule, typeof i10.UiLayoutModule, typeof i11.MatIconModule, typeof i12.MatTabsModule, typeof i13.TranslateModule, typeof i14.FeatureSearchModule, typeof i15.StoreFeatureModule, typeof i16.EffectsFeatureModule, typeof i17.UiElementsModule, typeof i18.UiInputsModule], [typeof i1.MapContextComponent, typeof i2.MapInstanceDirective, typeof i3.LayersPanelComponent, typeof i4.AddLayerFromCatalogComponent, typeof i5.MapContainerComponent]>;
|
|
22
23
|
static ɵinj: i0.ɵɵInjectorDeclaration<FeatureMapModule>;
|
|
23
24
|
}
|
|
24
25
|
//# sourceMappingURL=feature-map.module.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"feature-map.module.d.ts","sourceRoot":"","sources":["../../../../../src/libs/feature/map/src/lib/feature-map.module.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"feature-map.module.d.ts","sourceRoot":"","sources":["../../../../../src/libs/feature/map/src/lib/feature-map.module.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;AAwBA,qBAsCa,gBAAgB;yCAAhB,gBAAgB;0CAAhB,gBAAgB;0CAAhB,gBAAgB;CAAG"}
|
|
@@ -7,6 +7,7 @@ export declare class MetadataContactComponent {
|
|
|
7
7
|
contactClick: EventEmitter<Individual>;
|
|
8
8
|
get shownOrganization(): Organization;
|
|
9
9
|
get contacts(): Individual[];
|
|
10
|
+
get address(): string[];
|
|
10
11
|
onOrganizationClick(): void;
|
|
11
12
|
static ɵfac: i0.ɵɵFactoryDeclaration<MetadataContactComponent, never>;
|
|
12
13
|
static ɵcmp: i0.ɵɵComponentDeclaration<MetadataContactComponent, "gn-ui-metadata-contact", never, { "metadata": { "alias": "metadata"; "required": false; }; }, { "organizationClick": "organizationClick"; "contactClick": "contactClick"; }, never, never, false, never>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"metadata-contact.component.d.ts","sourceRoot":"","sources":["../../../../../../src/libs/ui/elements/src/lib/metadata-contact/metadata-contact.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,YAAY,EAGb,MAAM,eAAe,CAAA;AACtB,OAAO,EACL,aAAa,EACb,UAAU,EACV,YAAY,EACb,MAAM,2DAA2D,CAAA;;AAElE,qBAMa,wBAAwB;IAC1B,QAAQ,EAAE,OAAO,CAAC,aAAa,CAAC,CAAA;IAC/B,iBAAiB,6BAAmC;IACpD,YAAY,2BAAiC;IAEvD,IAAI,iBAAiB,iBAEpB;IAED,IAAI,QAAQ,iBAMX;IAED,mBAAmB;
|
|
1
|
+
{"version":3,"file":"metadata-contact.component.d.ts","sourceRoot":"","sources":["../../../../../../src/libs/ui/elements/src/lib/metadata-contact/metadata-contact.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,YAAY,EAGb,MAAM,eAAe,CAAA;AACtB,OAAO,EACL,aAAa,EACb,UAAU,EACV,YAAY,EACb,MAAM,2DAA2D,CAAA;;AAElE,qBAMa,wBAAwB;IAC1B,QAAQ,EAAE,OAAO,CAAC,aAAa,CAAC,CAAA;IAC/B,iBAAiB,6BAAmC;IACpD,YAAY,2BAAiC;IAEvD,IAAI,iBAAiB,iBAEpB;IAED,IAAI,QAAQ,iBAMX;IAED,IAAI,OAAO,aAKV;IAED,mBAAmB;yCAxBR,wBAAwB;2CAAxB,wBAAwB;CA2BpC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dropdown-multiselect.component.d.ts","sourceRoot":"","sources":["../../../../../../src/libs/ui/inputs/src/lib/dropdown-multiselect/dropdown-multiselect.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,UAAU,EACV,YAAY,EAGZ,SAAS,EAGV,MAAM,eAAe,CAAA;AACtB,OAAO,EACL,mBAAmB,EACnB,gBAAgB,EAChB,iBAAiB,EACjB,qBAAqB,EACtB,MAAM,sBAAsB,CAAA;AAE7B,OAAO,EAAE,MAAM,EAAE,MAAM,8BAA8B,CAAA;;
|
|
1
|
+
{"version":3,"file":"dropdown-multiselect.component.d.ts","sourceRoot":"","sources":["../../../../../../src/libs/ui/inputs/src/lib/dropdown-multiselect/dropdown-multiselect.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,UAAU,EACV,YAAY,EAGZ,SAAS,EAGV,MAAM,eAAe,CAAA;AACtB,OAAO,EACL,mBAAmB,EACnB,gBAAgB,EAChB,iBAAiB,EACjB,qBAAqB,EACtB,MAAM,sBAAsB,CAAA;AAE7B,OAAO,EAAE,MAAM,EAAE,MAAM,8BAA8B,CAAA;;AAMrD,qBAMa,4BAA4B;IA8D3B,OAAO,CAAC,gBAAgB;IA7D3B,KAAK,EAAE,MAAM,CAAA;IACb,OAAO,EAAE,MAAM,EAAE,CAAA;IACjB,QAAQ,EAAE,OAAO,EAAE,CAAK;IACxB,WAAW,UAAO;IAClB,OAAO,EAAE,MAAM,CAAA;IACf,gBAAgB,SAAK;IACpB,YAAY,0BAAgC;IAC1B,aAAa,EAAE,gBAAgB,CAAA;IAC3B,OAAO,EAAE,mBAAmB,CAAA;IAE5D,gBAAgB,EAAE,UAAU,CAAA;IAE5B,gBAAgB,EAAE,UAAU,CAAC,gBAAgB,CAAC,CAAA;IAE9C,UAAU,EAAE,SAAS,CAAC,UAAU,CAAC,CAAA;IACjC,gBAAgB,EAAE,iBAAiB,EAAE,CAepC;IACD,cAAc,0DAAqC;IACnD,WAAW,UAAQ;IACnB,YAAY,SAAS;IACrB,gBAAgB,SAAS;IACzB,EAAE,SAA8D;IAEhE,IAAI,kBAAkB,YAErB;IAED,IAAI,eAAe,aAIlB;IAED,IAAI,qBAAqB,aAIxB;IAED,IAAI,YAAY,IAAI,MAAM,GAAG,CAAC,CAAC,CAM9B;gBAEmB,gBAAgB,EAAE,qBAAqB;IAE3D,OAAO,CAAC,QAAQ;IAMhB,WAAW;IAiBX,YAAY;IAIN,oBAAoB,CAAC,KAAK,EAAE,aAAa;IAqB/C,oBAAoB,CAAC,KAAK,EAAE,aAAa;IAgBzC,cAAc;IAId,aAAa;IAIb,cAAc,CAAC,KAAK,EAAE,MAAM;IAS5B,UAAU,CAAC,MAAM,EAAE,MAAM;IAIzB,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO;IAOxC,MAAM,CAAC,MAAM,EAAE,MAAM;IAIrB,cAAc,CAAC,KAAK,EAAE,KAAK;IAK3B,qBAAqB,CAAC,KAAK,EAAE,KAAK;yCArKvB,4BAA4B;2CAA5B,4BAA4B;CA0KxC"}
|
|
@@ -5,4 +5,5 @@ export * from './lib/lang.service';
|
|
|
5
5
|
export * from './lib/file.translate.loader';
|
|
6
6
|
export * from './lib/testing/test.translate.module';
|
|
7
7
|
export * from './lib/embedded.translate.loader';
|
|
8
|
+
export * from './lib/translate.loader.utils';
|
|
8
9
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/libs/util/i18n/src/index.ts"],"names":[],"mappings":"AAAA,cAAc,wBAAwB,CAAA;AACtC,cAAc,sBAAsB,CAAA;AACpC,cAAc,wBAAwB,CAAA;AACtC,cAAc,oBAAoB,CAAA;AAClC,cAAc,6BAA6B,CAAA;AAC3C,cAAc,qCAAqC,CAAA;AACnD,cAAc,iCAAiC,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/libs/util/i18n/src/index.ts"],"names":[],"mappings":"AAAA,cAAc,wBAAwB,CAAA;AACtC,cAAc,sBAAsB,CAAA;AACpC,cAAc,wBAAwB,CAAA;AACtC,cAAc,oBAAoB,CAAA;AAClC,cAAc,6BAA6B,CAAA;AAC3C,cAAc,qCAAqC,CAAA;AACnD,cAAc,iCAAiC,CAAA;AAC/C,cAAc,8BAA8B,CAAA"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
type FuzzyFilter = (input: string) => boolean;
|
|
2
|
+
/**
|
|
3
|
+
* This creates a filter function based on a pattern (typically a user-input
|
|
4
|
+
* search text).
|
|
5
|
+
* @param pattern
|
|
6
|
+
*/
|
|
7
|
+
export declare function createFuzzyFilter(pattern: string): FuzzyFilter;
|
|
8
|
+
export {};
|
|
9
|
+
//# sourceMappingURL=fuzzy-filter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fuzzy-filter.d.ts","sourceRoot":"","sources":["../../../../../../src/libs/util/shared/src/lib/utils/fuzzy-filter.ts"],"names":[],"mappings":"AAAA,KAAK,WAAW,GAAG,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,CAAA;AAkB7C;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,WAAW,CAQ9D"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../src/libs/util/shared/src/lib/utils/index.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAA;AACvB,cAAc,cAAc,CAAA;AAC5B,cAAc,qBAAqB,CAAA;AACnC,cAAc,WAAW,CAAA;AACzB,cAAc,WAAW,CAAA;AACzB,cAAc,OAAO,CAAA;AACrB,cAAc,SAAS,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../src/libs/util/shared/src/lib/utils/index.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAA;AACvB,cAAc,cAAc,CAAA;AAC5B,cAAc,qBAAqB,CAAA;AACnC,cAAc,WAAW,CAAA;AACzB,cAAc,WAAW,CAAA;AACzB,cAAc,OAAO,CAAA;AACrB,cAAc,SAAS,CAAA;AACvB,cAAc,gBAAgB,CAAA"}
|
package/package.json
CHANGED
|
@@ -13,6 +13,7 @@ import { map, startWith, tap } from 'rxjs/operators'
|
|
|
13
13
|
import { ORGANIZATION_URL_TOKEN } from '../feature-catalog.module'
|
|
14
14
|
import { OrganizationsServiceInterface } from '../../../../../../libs/common/domain/src/lib/organizations.service.interface'
|
|
15
15
|
import { SortByField } from '../../../../../../libs/common/domain/src/lib/model/search'
|
|
16
|
+
import { createFuzzyFilter } from '../../../../../../libs/util/shared/src'
|
|
16
17
|
|
|
17
18
|
@Component({
|
|
18
19
|
selector: 'gn-ui-organisations',
|
|
@@ -84,23 +85,8 @@ export class OrganisationsComponent {
|
|
|
84
85
|
|
|
85
86
|
private filterOrganisations(organisations: Organization[], filterBy: string) {
|
|
86
87
|
if (!filterBy) return organisations
|
|
87
|
-
const
|
|
88
|
-
|
|
89
|
-
.replace(/[^a-z0-9\s]/g, ' ') //ignore special characters (also without spaces like l')
|
|
90
|
-
.replace(/\s(?=.)/g, '.*') //replace whitespaces by "AND" separator
|
|
91
|
-
.replace(/\s/g, ''), //remove potential whitespaces left
|
|
92
|
-
'i'
|
|
93
|
-
)
|
|
94
|
-
return [...organisations].filter((org) => {
|
|
95
|
-
return this.normalizeString(org.name).match(filterRegex)
|
|
96
|
-
})
|
|
97
|
-
}
|
|
98
|
-
|
|
99
|
-
private normalizeString(str: string) {
|
|
100
|
-
return str
|
|
101
|
-
.normalize('NFD')
|
|
102
|
-
.replace(/[\u0300-\u036f]/g, '')
|
|
103
|
-
.toLowerCase()
|
|
88
|
+
const filter = createFuzzyFilter(filterBy)
|
|
89
|
+
return organisations.filter((org) => filter(org.name))
|
|
104
90
|
}
|
|
105
91
|
|
|
106
92
|
private sortOrganisations(
|
|
File without changes
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
<div class="flex items-center mb-5">
|
|
2
|
+
<gn-ui-text-input
|
|
3
|
+
[(value)]="wmsUrl"
|
|
4
|
+
(valueChange)="urlChange.next($event)"
|
|
5
|
+
[hint]="'map.wms.urlInput.hint' | translate"
|
|
6
|
+
class="w-96"
|
|
7
|
+
>
|
|
8
|
+
</gn-ui-text-input>
|
|
9
|
+
</div>
|
|
10
|
+
|
|
11
|
+
<div *ngIf="errorMessage" class="text-red-500 mt-2">
|
|
12
|
+
{{ errorMessage }}
|
|
13
|
+
</div>
|
|
14
|
+
|
|
15
|
+
<div *ngIf="loading">
|
|
16
|
+
<p class="loading-message" translate>map.loading.service</p>
|
|
17
|
+
</div>
|
|
18
|
+
|
|
19
|
+
<div *ngIf="!loading && layers.length > 0">
|
|
20
|
+
<h2 class="font-bold" translate>map.layers.available</h2>
|
|
21
|
+
<ng-container
|
|
22
|
+
*ngFor="let layer of layers"
|
|
23
|
+
[ngTemplateOutlet]="layerTreeItem"
|
|
24
|
+
[ngTemplateOutletContext]="{
|
|
25
|
+
layer: layer
|
|
26
|
+
}"
|
|
27
|
+
></ng-container>
|
|
28
|
+
</div>
|
|
29
|
+
|
|
30
|
+
<ng-template #layerTreeItem let-layer="layer">
|
|
31
|
+
<div class="flex items-center justify-between layer-tree-item my-2">
|
|
32
|
+
<p class="max-w-xs overflow-hidden overflow-ellipsis whitespace-nowrap">
|
|
33
|
+
{{ layer.title }}
|
|
34
|
+
</p>
|
|
35
|
+
<gn-ui-button
|
|
36
|
+
*ngIf="layer.name"
|
|
37
|
+
class="layer-add-btn"
|
|
38
|
+
type="primary"
|
|
39
|
+
(buttonClick)="addLayer(layer)"
|
|
40
|
+
extraClass="text-sm !px-2 !py-1"
|
|
41
|
+
translate
|
|
42
|
+
><span translate> map.layer.add </span></gn-ui-button
|
|
43
|
+
>
|
|
44
|
+
</div>
|
|
45
|
+
<div *ngIf="layer.children?.length > 0" class="ml-4">
|
|
46
|
+
<ng-container
|
|
47
|
+
*ngFor="let child of layer.children"
|
|
48
|
+
[ngTemplateOutlet]="layerTreeItem"
|
|
49
|
+
[ngTemplateOutletContext]="{
|
|
50
|
+
layer: child
|
|
51
|
+
}"
|
|
52
|
+
>
|
|
53
|
+
</ng-container>
|
|
54
|
+
</div>
|
|
55
|
+
</ng-template>
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
import { Component, ChangeDetectorRef, OnInit } from '@angular/core'
|
|
2
|
+
import { WmsEndpoint, WmsLayerSummary } from '@camptocamp/ogc-client'
|
|
3
|
+
import { MapFacade } from '../+state/map.facade'
|
|
4
|
+
import {
|
|
5
|
+
MapContextLayerModel,
|
|
6
|
+
MapContextLayerTypeEnum,
|
|
7
|
+
} from '../map-context/map-context.model'
|
|
8
|
+
import { Subject } from 'rxjs'
|
|
9
|
+
import { debounceTime } from 'rxjs/operators'
|
|
10
|
+
|
|
11
|
+
@Component({
|
|
12
|
+
selector: 'gn-ui-add-layer-from-wms',
|
|
13
|
+
templateUrl: './add-layer-from-wms.component.html',
|
|
14
|
+
styleUrls: ['./add-layer-from-wms.component.css'],
|
|
15
|
+
})
|
|
16
|
+
export class AddLayerFromWmsComponent implements OnInit {
|
|
17
|
+
wmsUrl = ''
|
|
18
|
+
loading = false
|
|
19
|
+
layers: WmsLayerSummary[] = []
|
|
20
|
+
wmsEndpoint: WmsEndpoint | null = null
|
|
21
|
+
urlChange = new Subject<string>()
|
|
22
|
+
errorMessage: string | null = null
|
|
23
|
+
|
|
24
|
+
constructor(
|
|
25
|
+
private mapFacade: MapFacade,
|
|
26
|
+
private changeDetectorRef: ChangeDetectorRef
|
|
27
|
+
) {}
|
|
28
|
+
|
|
29
|
+
ngOnInit() {
|
|
30
|
+
this.urlChange.pipe(debounceTime(700)).subscribe(() => this.loadLayers())
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
async loadLayers() {
|
|
34
|
+
this.errorMessage = null
|
|
35
|
+
try {
|
|
36
|
+
this.loading = true
|
|
37
|
+
|
|
38
|
+
if (this.wmsUrl.trim() === '') {
|
|
39
|
+
this.layers = []
|
|
40
|
+
return
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
this.wmsEndpoint = await new WmsEndpoint(this.wmsUrl).isReady()
|
|
44
|
+
this.layers = this.wmsEndpoint.getLayers()
|
|
45
|
+
} catch (error) {
|
|
46
|
+
const err = error as Error
|
|
47
|
+
this.layers = []
|
|
48
|
+
this.errorMessage = 'Error loading layers: ' + err.message
|
|
49
|
+
} finally {
|
|
50
|
+
this.loading = false
|
|
51
|
+
this.changeDetectorRef.markForCheck()
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
addLayer(layer: WmsLayerSummary) {
|
|
56
|
+
const layerToAdd: MapContextLayerModel = {
|
|
57
|
+
name: layer.name,
|
|
58
|
+
url: this.wmsUrl.toString(),
|
|
59
|
+
type: MapContextLayerTypeEnum.WMS,
|
|
60
|
+
}
|
|
61
|
+
this.mapFacade.addLayer({ ...layerToAdd, title: layer.title })
|
|
62
|
+
}
|
|
63
|
+
}
|
|
@@ -20,6 +20,7 @@ import { MapContainerComponent } from './map-container/map-container.component'
|
|
|
20
20
|
import { AddLayerRecordPreviewComponent } from './add-layer-from-catalog/add-layer-record-preview/add-layer-record-preview.component'
|
|
21
21
|
import { UiElementsModule } from '../../../../../libs/ui/elements/src'
|
|
22
22
|
import { UiInputsModule } from '../../../../../libs/ui/inputs/src'
|
|
23
|
+
import { AddLayerFromWmsComponent } from './add-layer-from-wms/add-layer-from-wms.component'
|
|
23
24
|
|
|
24
25
|
@NgModule({
|
|
25
26
|
declarations: [
|
|
@@ -29,6 +30,7 @@ import { UiInputsModule } from '../../../../../libs/ui/inputs/src'
|
|
|
29
30
|
AddLayerFromCatalogComponent,
|
|
30
31
|
MapContainerComponent,
|
|
31
32
|
AddLayerRecordPreviewComponent,
|
|
33
|
+
AddLayerFromWmsComponent,
|
|
32
34
|
],
|
|
33
35
|
exports: [
|
|
34
36
|
MapContextComponent,
|
|
@@ -31,7 +31,9 @@
|
|
|
31
31
|
</div>
|
|
32
32
|
</mat-tab>
|
|
33
33
|
<mat-tab [label]="'map.add.layer.wms' | translate" bodyClass="h-full">
|
|
34
|
-
<div class="p-3
|
|
34
|
+
<div class="p-3">
|
|
35
|
+
<gn-ui-add-layer-from-wms></gn-ui-add-layer-from-wms>
|
|
36
|
+
</div>
|
|
35
37
|
</mat-tab>
|
|
36
38
|
<mat-tab [label]="'map.add.layer.wfs' | translate" bodyClass="h-full">
|
|
37
39
|
<div class="p-3 h-full">Add from WFS</div>
|
|
@@ -1,32 +1,98 @@
|
|
|
1
|
-
<div
|
|
2
|
-
<
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
1
|
+
<div class="py-5 px-5 rounded bg-gray-100 text-black mb-6 sm:mb-12">
|
|
2
|
+
<div class="grid gap-3">
|
|
3
|
+
<div>
|
|
4
|
+
<p class="text-sm font-medium" translate>record.metadata.contact</p>
|
|
5
|
+
</div>
|
|
6
6
|
<div
|
|
7
|
-
|
|
8
|
-
|
|
7
|
+
*ngIf="shownOrganization?.logoUrl?.href"
|
|
8
|
+
class="flex items-center justify-center border-solid border border-gray-300 rounded-md bg-white h-32 overflow-hidden"
|
|
9
9
|
>
|
|
10
|
-
|
|
10
|
+
<gn-ui-thumbnail
|
|
11
|
+
class="relative h-full w-full"
|
|
12
|
+
[thumbnailUrl]="shownOrganization.logoUrl.href"
|
|
13
|
+
fit="contain"
|
|
14
|
+
></gn-ui-thumbnail>
|
|
15
|
+
</div>
|
|
16
|
+
<div class="grid gap-1">
|
|
17
|
+
<div class="flex">
|
|
18
|
+
<div
|
|
19
|
+
class="text-primary font-title text-21 mr-2 cursor-pointer hover:underline"
|
|
20
|
+
(click)="onOrganizationClick()"
|
|
21
|
+
data-cy="organization-name"
|
|
22
|
+
>
|
|
23
|
+
{{ shownOrganization.name }}
|
|
24
|
+
</div>
|
|
25
|
+
</div>
|
|
26
|
+
<div *ngIf="shownOrganization?.website">
|
|
27
|
+
<a
|
|
28
|
+
[href]="shownOrganization.website"
|
|
29
|
+
target="_blank"
|
|
30
|
+
class="contact-website text-primary text-sm cursor-pointer hover:underline transition-all"
|
|
31
|
+
>{{ shownOrganization.website }}
|
|
32
|
+
<mat-icon
|
|
33
|
+
class="material-symbols-outlined !w-[12px] !h-[12px] !text-[12px] opacity-75 shrink-0"
|
|
34
|
+
>open_in_new</mat-icon
|
|
35
|
+
>
|
|
36
|
+
</a>
|
|
37
|
+
</div>
|
|
38
|
+
</div>
|
|
39
|
+
<div class="grid gap-5 py-3 overflow-hidden">
|
|
40
|
+
<div *ngIf="contacts[0]?.phone">
|
|
41
|
+
<div class="flex">
|
|
42
|
+
<mat-icon
|
|
43
|
+
class="material-symbols-outlined !w-5 !h-5 !text-[20px] opacity-75 shrink-0"
|
|
44
|
+
>call_outline</mat-icon
|
|
45
|
+
>
|
|
46
|
+
<div class="flex flex-col ml-2">
|
|
47
|
+
<p class="text-sm">{{ contacts[0].phone }}</p>
|
|
48
|
+
</div>
|
|
49
|
+
</div>
|
|
50
|
+
</div>
|
|
51
|
+
<div *ngIf="contacts[0]?.email">
|
|
52
|
+
<div class="flex">
|
|
53
|
+
<mat-icon
|
|
54
|
+
class="material-symbols-outlined !w-5 !h-5 !text-[20px] opacity-75 shrink-0"
|
|
55
|
+
>
|
|
56
|
+
mail_outline</mat-icon
|
|
57
|
+
>
|
|
58
|
+
<a
|
|
59
|
+
*ngIf="contacts.length"
|
|
60
|
+
[href]="'mailto:' + contacts[0].email"
|
|
61
|
+
class="text-sm hover:underline ml-2"
|
|
62
|
+
target="_blank"
|
|
63
|
+
data-cy="contact-email"
|
|
64
|
+
>{{ contacts[0].email }}</a
|
|
65
|
+
>
|
|
66
|
+
</div>
|
|
67
|
+
</div>
|
|
68
|
+
<div *ngIf="contacts[0]?.firstName || contacts[0]?.lastName">
|
|
69
|
+
<div class="flex">
|
|
70
|
+
<mat-icon
|
|
71
|
+
class="material-symbols-outlined !w-5 !h-5 !text-[20px] opacity-75 shrink-0"
|
|
72
|
+
>person_outline</mat-icon
|
|
73
|
+
>
|
|
74
|
+
<div class="flex flex-col ml-2">
|
|
75
|
+
<p class="text-sm">
|
|
76
|
+
{{ contacts[0]?.firstName || '' }}
|
|
77
|
+
{{ contacts[0]?.lastName || '' }}
|
|
78
|
+
</p>
|
|
79
|
+
</div>
|
|
80
|
+
</div>
|
|
81
|
+
</div>
|
|
82
|
+
<div *ngIf="contacts[0]?.address">
|
|
83
|
+
<div class="flex">
|
|
84
|
+
<mat-icon
|
|
85
|
+
class="material-symbols-outlined !w-5 !h-5 !text-[20px] opacity-75 shrink-0"
|
|
86
|
+
>
|
|
87
|
+
location_on</mat-icon
|
|
88
|
+
>
|
|
89
|
+
<div class="flex flex-col ml-2">
|
|
90
|
+
<p *ngFor="let addressPart of address" class="text-sm">
|
|
91
|
+
{{ addressPart }}
|
|
92
|
+
</p>
|
|
93
|
+
</div>
|
|
94
|
+
</div>
|
|
95
|
+
</div>
|
|
11
96
|
</div>
|
|
12
|
-
</div>
|
|
13
|
-
<a
|
|
14
|
-
*ngIf="contacts.length"
|
|
15
|
-
[href]="'mailto:' + contacts[0].email"
|
|
16
|
-
class="text-gray-700 text-sm hover:underline"
|
|
17
|
-
target="_blank"
|
|
18
|
-
>{{ contacts[0].email }}</a
|
|
19
|
-
>
|
|
20
|
-
<div *ngIf="shownOrganization.website" class="mb-2">
|
|
21
|
-
<a
|
|
22
|
-
[href]="shownOrganization.website"
|
|
23
|
-
target="_blank"
|
|
24
|
-
class="contact-website text-primary text-sm cursor-pointer hover:underline transition-all"
|
|
25
|
-
>{{ shownOrganization.website }}
|
|
26
|
-
<mat-icon
|
|
27
|
-
class="material-symbols-outlined !w-[12px] !h-[12px] !text-[12px] opacity-75"
|
|
28
|
-
>open_in_new</mat-icon
|
|
29
|
-
>
|
|
30
|
-
</a>
|
|
31
97
|
</div>
|
|
32
98
|
</div>
|
|
@@ -34,6 +34,13 @@ export class MetadataContactComponent {
|
|
|
34
34
|
)
|
|
35
35
|
}
|
|
36
36
|
|
|
37
|
+
get address() {
|
|
38
|
+
const addressParts = this.contacts[0].address
|
|
39
|
+
.split(',')
|
|
40
|
+
.map((part) => part.trim())
|
|
41
|
+
return addressParts
|
|
42
|
+
}
|
|
43
|
+
|
|
37
44
|
onOrganizationClick() {
|
|
38
45
|
this.organizationClick.emit(this.shownOrganization)
|
|
39
46
|
}
|
|
@@ -17,7 +17,10 @@ import {
|
|
|
17
17
|
} from '@angular/cdk/overlay'
|
|
18
18
|
import { take } from 'rxjs/operators'
|
|
19
19
|
import { Choice } from './dropdown-multiselect.model'
|
|
20
|
-
import {
|
|
20
|
+
import {
|
|
21
|
+
createFuzzyFilter,
|
|
22
|
+
propagateToDocumentOnly,
|
|
23
|
+
} from '../../../../../../libs/util/shared/src'
|
|
21
24
|
|
|
22
25
|
@Component({
|
|
23
26
|
selector: 'gn-ui-dropdown-multiselect',
|
|
@@ -74,9 +77,9 @@ export class DropdownMultiselectComponent {
|
|
|
74
77
|
}
|
|
75
78
|
|
|
76
79
|
get filteredChoicesByText() {
|
|
77
|
-
return this.choices
|
|
78
|
-
|
|
79
|
-
)
|
|
80
|
+
if (!this.searchInputValue) return this.choices
|
|
81
|
+
const filter = createFuzzyFilter(this.searchInputValue)
|
|
82
|
+
return this.choices.filter((choice) => filter(choice.label))
|
|
80
83
|
}
|
|
81
84
|
|
|
82
85
|
get focusedIndex(): number | -1 {
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
type FuzzyFilter = (input: string) => boolean
|
|
2
|
+
|
|
3
|
+
function normalize(input: string) {
|
|
4
|
+
return input
|
|
5
|
+
.toLowerCase()
|
|
6
|
+
.normalize('NFD') // explode composite chars (e.g. é) into multiple chars
|
|
7
|
+
.replace(/[\u0300-\u036f]/g, '') // remove accents
|
|
8
|
+
.replace(/œ/g, 'oe') // remove accents
|
|
9
|
+
.replace(/[^a-z0-9\s]/g, ' ') // replace special characters with space
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
function asNormalizedParts(input: string): string[] {
|
|
13
|
+
return normalize(input)
|
|
14
|
+
.split(/\s+/)
|
|
15
|
+
.map((part) => part.trim())
|
|
16
|
+
.filter((part) => part.length > 0)
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
/**
|
|
20
|
+
* This creates a filter function based on a pattern (typically a user-input
|
|
21
|
+
* search text).
|
|
22
|
+
* @param pattern
|
|
23
|
+
*/
|
|
24
|
+
export function createFuzzyFilter(pattern: string): FuzzyFilter {
|
|
25
|
+
const patternParts = asNormalizedParts(pattern)
|
|
26
|
+
return (input: string) => {
|
|
27
|
+
const inputParts = asNormalizedParts(input)
|
|
28
|
+
return patternParts.every((patternPart) =>
|
|
29
|
+
inputParts.some((part) => part.includes(patternPart))
|
|
30
|
+
)
|
|
31
|
+
}
|
|
32
|
+
}
|
package/translations/de.json
CHANGED
|
@@ -175,10 +175,14 @@
|
|
|
175
175
|
"map.add.layer.file": "Aus einer Datei",
|
|
176
176
|
"map.add.layer.wfs": "Aus WFS",
|
|
177
177
|
"map.add.layer.wms": "Aus WMS",
|
|
178
|
+
"map.layer.add": "",
|
|
179
|
+
"map.layers.available": "",
|
|
178
180
|
"map.layers.list": "Ebenen",
|
|
179
181
|
"map.loading.data": "Kartendaten werden geladen...",
|
|
182
|
+
"map.loading.service": "",
|
|
180
183
|
"map.navigation.message": "Bitte verwenden Sie STRG + Maus (oder zwei Finger auf einem Mobilgerät), um die Karte zu navigieren",
|
|
181
184
|
"map.select.layer": "Datenquelle",
|
|
185
|
+
"map.wms.urlInput.hint": "",
|
|
182
186
|
"multiselect.filter.placeholder": "Suche",
|
|
183
187
|
"nav.back": "Zurück",
|
|
184
188
|
"next": "weiter",
|
package/translations/en.json
CHANGED
|
@@ -175,10 +175,14 @@
|
|
|
175
175
|
"map.add.layer.file": "From a file",
|
|
176
176
|
"map.add.layer.wfs": "From WFS",
|
|
177
177
|
"map.add.layer.wms": "From WMS",
|
|
178
|
+
"map.layer.add": "Add",
|
|
179
|
+
"map.layers.available": "Available Layers",
|
|
178
180
|
"map.layers.list": "Layers",
|
|
179
181
|
"map.loading.data": "Loading map data...",
|
|
182
|
+
"map.loading.service": "Loading service...",
|
|
180
183
|
"map.navigation.message": "Please use CTRL + mouse (or two fingers on mobile) to navigate the map",
|
|
181
184
|
"map.select.layer": "Data source",
|
|
185
|
+
"map.wms.urlInput.hint": "Enter WMS service URL",
|
|
182
186
|
"multiselect.filter.placeholder": "Search",
|
|
183
187
|
"nav.back": "Back",
|
|
184
188
|
"next": "next",
|
package/translations/es.json
CHANGED
|
@@ -175,10 +175,14 @@
|
|
|
175
175
|
"map.add.layer.file": "",
|
|
176
176
|
"map.add.layer.wfs": "",
|
|
177
177
|
"map.add.layer.wms": "",
|
|
178
|
+
"map.layer.add": "",
|
|
179
|
+
"map.layers.available": "",
|
|
178
180
|
"map.layers.list": "",
|
|
179
181
|
"map.loading.data": "",
|
|
182
|
+
"map.loading.service": "",
|
|
180
183
|
"map.navigation.message": "",
|
|
181
184
|
"map.select.layer": "",
|
|
185
|
+
"map.wms.urlInput.hint": "",
|
|
182
186
|
"multiselect.filter.placeholder": "",
|
|
183
187
|
"nav.back": "",
|
|
184
188
|
"next": "",
|
package/translations/fr.json
CHANGED
|
@@ -175,10 +175,14 @@
|
|
|
175
175
|
"map.add.layer.file": "",
|
|
176
176
|
"map.add.layer.wfs": "",
|
|
177
177
|
"map.add.layer.wms": "",
|
|
178
|
+
"map.layer.add": "",
|
|
179
|
+
"map.layers.available": "",
|
|
178
180
|
"map.layers.list": "",
|
|
179
181
|
"map.loading.data": "Chargement des données...",
|
|
182
|
+
"map.loading.service": "",
|
|
180
183
|
"map.navigation.message": "Veuillez utiliser CTRL + souris (ou deux doigts sur mobile) pour naviguer sur la carte",
|
|
181
184
|
"map.select.layer": "Source de données",
|
|
185
|
+
"map.wms.urlInput.hint": "",
|
|
182
186
|
"multiselect.filter.placeholder": "Rechercher",
|
|
183
187
|
"nav.back": "Retour",
|
|
184
188
|
"next": "suivant",
|