@igo2/geo 19.0.0-next.6 → 19.0.0-next.8
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/fesm2022/igo2-geo.mjs +496 -216
- package/fesm2022/igo2-geo.mjs.map +1 -1
- package/lib/datasource/shared/capabilities.service.d.ts +2 -1
- package/lib/datasource/shared/datasources/wms-datasource.d.ts +2 -0
- package/lib/datasource/shared/datasources/wms-datasource.interface.d.ts +1 -0
- package/lib/datasource/shared/datasources/wms-wfs.utils.d.ts +3 -2
- package/lib/filter/ogc-filter-time/ogc-filter-time.component.d.ts +1 -0
- package/lib/filter/shared/date.utils.d.ts +9 -0
- package/lib/filter/shared/filter.utils.d.ts +26 -0
- package/lib/filter/shared/ogc-filter.d.ts +0 -7
- package/lib/filter/shared/ogc-filter.interface.d.ts +9 -2
- package/lib/filter/shared/ogc-filter.service.d.ts +1 -0
- package/lib/filter/shared/time-filter.interface.d.ts +2 -2
- package/lib/filter/time-filter-form/time-filter-form.component.d.ts +10 -5
- package/lib/filter/time-filter-item/time-filter-item.component.d.ts +1 -0
- package/lib/layer/shared/layers/vector-layer.d.ts +13 -12
- package/package.json +5 -5
package/fesm2022/igo2-geo.mjs
CHANGED
|
@@ -2196,6 +2196,86 @@ class XYZDataSource extends DataSource {
|
|
|
2196
2196
|
}
|
|
2197
2197
|
}
|
|
2198
2198
|
|
|
2199
|
+
const TimeFrame = ['now', 'today'];
|
|
2200
|
+
const TimeUnit = [
|
|
2201
|
+
'years',
|
|
2202
|
+
'months',
|
|
2203
|
+
'weeks',
|
|
2204
|
+
'days',
|
|
2205
|
+
'hours',
|
|
2206
|
+
'seconds'
|
|
2207
|
+
];
|
|
2208
|
+
const ArithmeticSymbol = ['+', '-'];
|
|
2209
|
+
/**
|
|
2210
|
+
* this function to parse date with specific format
|
|
2211
|
+
* exemple 'today' or 'today + 1 days' or 'now + 1 years'
|
|
2212
|
+
* @param value string date
|
|
2213
|
+
* @returns date
|
|
2214
|
+
*/
|
|
2215
|
+
function parseDateOperation(dateOperation) {
|
|
2216
|
+
const normalizedOp = dateOperation.replace(/\s+/g, '');
|
|
2217
|
+
if (normalizedOp === TimeFrame[0]) {
|
|
2218
|
+
return moment().format();
|
|
2219
|
+
}
|
|
2220
|
+
else if (normalizedOp === TimeFrame[1]) {
|
|
2221
|
+
return moment().endOf('day').format();
|
|
2222
|
+
}
|
|
2223
|
+
const regex = new RegExp(`(${TimeFrame.join('|')})([${ArithmeticSymbol.join('|')}]\\d+)(${TimeUnit.join('|')})?`, 'i');
|
|
2224
|
+
const match = normalizedOp.match(regex);
|
|
2225
|
+
if (!match) {
|
|
2226
|
+
console.warn('Invalid format. example: today or today + 1 year...');
|
|
2227
|
+
return moment().toString();
|
|
2228
|
+
}
|
|
2229
|
+
let date = match[1] === TimeFrame[0] ? moment() : moment().endOf('day');
|
|
2230
|
+
if (!match[2]) {
|
|
2231
|
+
console.warn(`Invalid arithmetic symbol or value. Expected one of: ${ArithmeticSymbol.join(', ')}`);
|
|
2232
|
+
return date.format();
|
|
2233
|
+
}
|
|
2234
|
+
const operator = match[2][0];
|
|
2235
|
+
const value = parseInt(match[2].slice(1), 10);
|
|
2236
|
+
const unit = match[3]?.toLowerCase();
|
|
2237
|
+
if (!match[3] && !TimeUnit.includes(unit)) {
|
|
2238
|
+
console.warn(`Invalid time unit. Expected one of: ${TimeUnit.join(', ')}`);
|
|
2239
|
+
return date.format();
|
|
2240
|
+
}
|
|
2241
|
+
if (operator === ArithmeticSymbol['0']) {
|
|
2242
|
+
date = date.add(value, unit);
|
|
2243
|
+
}
|
|
2244
|
+
else {
|
|
2245
|
+
date = date.subtract(value, unit);
|
|
2246
|
+
}
|
|
2247
|
+
return date.format();
|
|
2248
|
+
}
|
|
2249
|
+
function isIgoLogicalArray(filters) {
|
|
2250
|
+
return 'filters' in filters && 'logical' in filters;
|
|
2251
|
+
}
|
|
2252
|
+
function isFilterAttributeOptions(filters) {
|
|
2253
|
+
return 'propertyName' in filters;
|
|
2254
|
+
}
|
|
2255
|
+
/**
|
|
2256
|
+
* Recursive
|
|
2257
|
+
* Search inside filters of OgcFiltersOptions
|
|
2258
|
+
*/
|
|
2259
|
+
function searchFilter(filters, key, value) {
|
|
2260
|
+
if (isIgoLogicalArray(filters)) {
|
|
2261
|
+
if (Array.isArray(filters.filters)) {
|
|
2262
|
+
return filters.filters.find((filter) => searchFilter(filter, key, value));
|
|
2263
|
+
}
|
|
2264
|
+
else {
|
|
2265
|
+
searchFilter(filters, key, value);
|
|
2266
|
+
}
|
|
2267
|
+
}
|
|
2268
|
+
else if (isFilterAttributeOptions(filters)) {
|
|
2269
|
+
if (filters[key] === value) {
|
|
2270
|
+
return filters;
|
|
2271
|
+
}
|
|
2272
|
+
}
|
|
2273
|
+
return undefined;
|
|
2274
|
+
}
|
|
2275
|
+
function isTimeFrame(value) {
|
|
2276
|
+
return TimeFrame.some((timeFrame) => value.toLocaleLowerCase().includes(timeFrame));
|
|
2277
|
+
}
|
|
2278
|
+
|
|
2199
2279
|
var OgcFilterOperatorType;
|
|
2200
2280
|
(function (OgcFilterOperatorType) {
|
|
2201
2281
|
OgcFilterOperatorType["BasicNumericOperator"] = "basicnumericoperator";
|
|
@@ -2923,7 +3003,7 @@ class OgcFilterWriter {
|
|
|
2923
3003
|
}
|
|
2924
3004
|
else if (value.toLowerCase().includes('now') ||
|
|
2925
3005
|
value.toLowerCase().includes('today')) {
|
|
2926
|
-
return
|
|
3006
|
+
return parseDateOperation(value);
|
|
2927
3007
|
}
|
|
2928
3008
|
else if (moment(value).isValid()) {
|
|
2929
3009
|
return value;
|
|
@@ -2932,50 +3012,16 @@ class OgcFilterWriter {
|
|
|
2932
3012
|
return undefined;
|
|
2933
3013
|
}
|
|
2934
3014
|
}
|
|
2935
|
-
/**
|
|
2936
|
-
* this function to parse date with specific format
|
|
2937
|
-
* exemple 'today + 1 days' or 'now + 1 years'
|
|
2938
|
-
* @param value string date
|
|
2939
|
-
* @returns date
|
|
2940
|
-
*/
|
|
2941
|
-
parseDateOperation(value) {
|
|
2942
|
-
const operationSplitted = value.toLowerCase().split(' ');
|
|
2943
|
-
const leftOperand = operationSplitted[0];
|
|
2944
|
-
const operator = ['+', '-'].includes(operationSplitted[1])
|
|
2945
|
-
? operationSplitted[1]
|
|
2946
|
-
: undefined;
|
|
2947
|
-
const rightOperand = /^[0-9]*$/.test(operationSplitted[2])
|
|
2948
|
-
? operationSplitted[2]
|
|
2949
|
-
: undefined;
|
|
2950
|
-
const rightUnitOperand = (['years', 'months', 'weeks', 'days', 'hours', 'seconds'].includes(operationSplitted[3])
|
|
2951
|
-
? operationSplitted[3]
|
|
2952
|
-
: undefined);
|
|
2953
|
-
if (!operator || !rightUnitOperand || !rightOperand) {
|
|
2954
|
-
return leftOperand === 'now'
|
|
2955
|
-
? moment().format()
|
|
2956
|
-
: moment().endOf('day').format();
|
|
2957
|
-
}
|
|
2958
|
-
if (operator === '+') {
|
|
2959
|
-
return leftOperand === 'now'
|
|
2960
|
-
? moment().add(parseInt(rightOperand, 10), rightUnitOperand).format()
|
|
2961
|
-
: moment()
|
|
2962
|
-
.endOf('day')
|
|
2963
|
-
.add(parseInt(rightOperand, 10), rightUnitOperand)
|
|
2964
|
-
.format();
|
|
2965
|
-
}
|
|
2966
|
-
else {
|
|
2967
|
-
return leftOperand === 'now'
|
|
2968
|
-
? moment()
|
|
2969
|
-
.subtract(parseInt(rightOperand, 10), rightUnitOperand)
|
|
2970
|
-
.format()
|
|
2971
|
-
: moment()
|
|
2972
|
-
.endOf('day')
|
|
2973
|
-
.subtract(parseInt(rightOperand, 10), rightUnitOperand)
|
|
2974
|
-
.format();
|
|
2975
|
-
}
|
|
2976
|
-
}
|
|
2977
3015
|
}
|
|
2978
3016
|
|
|
3017
|
+
const OgcSelectorFields = [
|
|
3018
|
+
'pushButtons',
|
|
3019
|
+
'checkboxes',
|
|
3020
|
+
'radioButtons',
|
|
3021
|
+
'select',
|
|
3022
|
+
'autocomplete'
|
|
3023
|
+
];
|
|
3024
|
+
|
|
2979
3025
|
const defaultEpsg = 'EPSG:3857';
|
|
2980
3026
|
const defaultMaxFeatures = 5000;
|
|
2981
3027
|
const defaultWfsVersion = '2.0.0';
|
|
@@ -2990,7 +3036,8 @@ const jsonRegex = new RegExp(/(.*)?json(.*)?/gi);
|
|
|
2990
3036
|
* @param ogcFilters OgcFiltersOptions
|
|
2991
3037
|
* @returns A string representing the datasource options, based on filter and views
|
|
2992
3038
|
*/
|
|
2993
|
-
function buildUrl(options, extent, proj,
|
|
3039
|
+
function buildUrl(options, extent, proj, randomParam) {
|
|
3040
|
+
const ogcFilters = options.ogcFilters;
|
|
2994
3041
|
const paramsWFS = options.paramsWFS;
|
|
2995
3042
|
const queryStringValues = formatWFSQueryString(options, undefined, options.paramsWFS.srsName);
|
|
2996
3043
|
let igoFilters;
|
|
@@ -3193,6 +3240,56 @@ function getFormatFromOptions(options) {
|
|
|
3193
3240
|
}
|
|
3194
3241
|
return new olFormatCls();
|
|
3195
3242
|
}
|
|
3243
|
+
function getSaveableOgcParams(options) {
|
|
3244
|
+
const selectors = OgcSelectorFields.reduce((selector, selectorName) => {
|
|
3245
|
+
if (options[selectorName]) {
|
|
3246
|
+
selector[selectorName] = {
|
|
3247
|
+
groups: options[selectorName].groups
|
|
3248
|
+
};
|
|
3249
|
+
}
|
|
3250
|
+
return selector;
|
|
3251
|
+
}, {});
|
|
3252
|
+
return {
|
|
3253
|
+
...selectors,
|
|
3254
|
+
...(options?.interfaceOgcFilters && {
|
|
3255
|
+
interfaceOgcFilters: options.interfaceOgcFilters.map((interfaceOgc) => {
|
|
3256
|
+
const filters = searchFilter(options.filters, 'filterid', interfaceOgc.filterid);
|
|
3257
|
+
return interfaceOgcFilters(filters, interfaceOgc);
|
|
3258
|
+
})
|
|
3259
|
+
})
|
|
3260
|
+
};
|
|
3261
|
+
}
|
|
3262
|
+
function interfaceOgcFilters(filters, interfaceOgc) {
|
|
3263
|
+
const saveableInterface = {
|
|
3264
|
+
propertyName: interfaceOgc?.propertyName,
|
|
3265
|
+
operator: interfaceOgc?.operator,
|
|
3266
|
+
active: interfaceOgc?.active,
|
|
3267
|
+
expression: interfaceOgc?.expression
|
|
3268
|
+
};
|
|
3269
|
+
Object.keys(saveableInterface).forEach((key) => {
|
|
3270
|
+
if (isEmpty(saveableInterface[key])) {
|
|
3271
|
+
delete saveableInterface[key];
|
|
3272
|
+
}
|
|
3273
|
+
});
|
|
3274
|
+
handleFilterDate(filters, interfaceOgc, saveableInterface);
|
|
3275
|
+
return saveableInterface;
|
|
3276
|
+
}
|
|
3277
|
+
function isEmpty(value) {
|
|
3278
|
+
return value === null || value === undefined || value === '';
|
|
3279
|
+
}
|
|
3280
|
+
function handleFilterDate(filter, interfaceOgc, saveableInterface) {
|
|
3281
|
+
const keys = ['begin', 'end'];
|
|
3282
|
+
const formatDate = (date) => TimeFrame.some((timeFrame) => date.toLocaleLowerCase().includes(timeFrame))
|
|
3283
|
+
? new Date(parseDateOperation(date)).toISOString().split('.')[0] + 'Z'
|
|
3284
|
+
: new Date(date).toISOString().split('.')[0] + 'Z';
|
|
3285
|
+
keys.forEach((key) => {
|
|
3286
|
+
if (filter && !isEmpty(filter[key])) {
|
|
3287
|
+
if (formatDate(filter[key]) !== formatDate(interfaceOgc[key])) {
|
|
3288
|
+
saveableInterface[key] = interfaceOgc[key];
|
|
3289
|
+
}
|
|
3290
|
+
}
|
|
3291
|
+
});
|
|
3292
|
+
}
|
|
3196
3293
|
|
|
3197
3294
|
class WFSDataSource extends DataSource {
|
|
3198
3295
|
options;
|
|
@@ -3208,7 +3305,10 @@ class WFSDataSource extends DataSource {
|
|
|
3208
3305
|
const baseOptions = super.saveableOptions;
|
|
3209
3306
|
return {
|
|
3210
3307
|
...baseOptions,
|
|
3211
|
-
params: this.options.params
|
|
3308
|
+
params: this.options.params,
|
|
3309
|
+
...(this.ogcFilters && {
|
|
3310
|
+
ogcFilters: getSaveableOgcParams(this.ogcFilters)
|
|
3311
|
+
})
|
|
3212
3312
|
};
|
|
3213
3313
|
}
|
|
3214
3314
|
constructor(options, wfsService, authInterceptor) {
|
|
@@ -3268,9 +3368,8 @@ class WFSDataSource extends DataSource {
|
|
|
3268
3368
|
const currentExtent = extent
|
|
3269
3369
|
? olproj.transformExtent(extent, projection, wfsProj)
|
|
3270
3370
|
: undefined;
|
|
3271
|
-
const ogcFilters = this.ogcFilters;
|
|
3272
3371
|
paramsWFS.srsName = paramsWFS.srsName || projection.getCode();
|
|
3273
|
-
let url = buildUrl(this.options, currentExtent, wfsProj
|
|
3372
|
+
let url = buildUrl(this.options, currentExtent, wfsProj);
|
|
3274
3373
|
// Exportation want to fetch without extent/bbox restrictions
|
|
3275
3374
|
if (!extent && url.includes('bbox')) {
|
|
3276
3375
|
const [baseUrl, params] = url.split('?');
|
|
@@ -3485,6 +3584,58 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.5", ngImpor
|
|
|
3485
3584
|
}]
|
|
3486
3585
|
}], ctorParameters: () => [{ type: i1.HttpClient }] });
|
|
3487
3586
|
|
|
3587
|
+
/**
|
|
3588
|
+
* @param date: string
|
|
3589
|
+
* @example date = <[2014-08-25, 2018-08-25]>
|
|
3590
|
+
* @example date = 2014-08-25, 2018-08-25
|
|
3591
|
+
* @example date = 2014-08-25/ 2018-08-25
|
|
3592
|
+
* @example date = 2014-08-25
|
|
3593
|
+
*/
|
|
3594
|
+
function parseDateString(date) {
|
|
3595
|
+
let dateStrings;
|
|
3596
|
+
if (Array.isArray(date)) {
|
|
3597
|
+
dateStrings = date;
|
|
3598
|
+
}
|
|
3599
|
+
else {
|
|
3600
|
+
if (date.startsWith('[') && date.endsWith(']')) {
|
|
3601
|
+
dateStrings = date.replace(/[\[\]]/g, '').split(',');
|
|
3602
|
+
}
|
|
3603
|
+
else if (date.includes('/')) {
|
|
3604
|
+
dateStrings = date.split('/');
|
|
3605
|
+
}
|
|
3606
|
+
else {
|
|
3607
|
+
dateStrings = date.split(',');
|
|
3608
|
+
}
|
|
3609
|
+
}
|
|
3610
|
+
const dates = dateStrings.map((date) => moment(date));
|
|
3611
|
+
if (dates.length === 1) {
|
|
3612
|
+
return dates[0].isValid() ? dates[0].toDate() : undefined;
|
|
3613
|
+
}
|
|
3614
|
+
const startDate = dates[0];
|
|
3615
|
+
const endDate = dates[1];
|
|
3616
|
+
if (endDate.isBefore(startDate)) {
|
|
3617
|
+
console.error('Please check the order min and max dates');
|
|
3618
|
+
return undefined;
|
|
3619
|
+
}
|
|
3620
|
+
if (startDate.isValid() && endDate.isValid()) {
|
|
3621
|
+
return [startDate.toDate(), endDate.toDate()];
|
|
3622
|
+
}
|
|
3623
|
+
return undefined;
|
|
3624
|
+
}
|
|
3625
|
+
function isValidAndWithinRange(date, [min, max]) {
|
|
3626
|
+
const value = moment(date);
|
|
3627
|
+
return (value.isValid() &&
|
|
3628
|
+
value.isBetween(moment(min), moment(max), undefined, '[]'));
|
|
3629
|
+
}
|
|
3630
|
+
function isDateOrRangeInRange(dateOrRange, [min, max]) {
|
|
3631
|
+
if (Array.isArray(dateOrRange)) {
|
|
3632
|
+
const [start, end] = dateOrRange;
|
|
3633
|
+
return (isValidAndWithinRange(start, [min, max]) &&
|
|
3634
|
+
isValidAndWithinRange(end, [min, max]));
|
|
3635
|
+
}
|
|
3636
|
+
return isValidAndWithinRange(dateOrRange, [min, max]);
|
|
3637
|
+
}
|
|
3638
|
+
|
|
3488
3639
|
var QueryFormat;
|
|
3489
3640
|
(function (QueryFormat) {
|
|
3490
3641
|
QueryFormat["GML2"] = "gml2";
|
|
@@ -3523,6 +3674,10 @@ class WMSDataSource extends DataSource {
|
|
|
3523
3674
|
get params() {
|
|
3524
3675
|
return this.options.params;
|
|
3525
3676
|
}
|
|
3677
|
+
set stylesParams(value) {
|
|
3678
|
+
this.options.params.STYLES = value;
|
|
3679
|
+
this.ol.updateParams({ value });
|
|
3680
|
+
}
|
|
3526
3681
|
get queryTitle() {
|
|
3527
3682
|
return this.options.queryTitle
|
|
3528
3683
|
? this.options.queryTitle
|
|
@@ -3551,9 +3706,18 @@ class WMSDataSource extends DataSource {
|
|
|
3551
3706
|
timeFilter$ = new BehaviorSubject(undefined);
|
|
3552
3707
|
get saveableOptions() {
|
|
3553
3708
|
const baseOptions = super.saveableOptions;
|
|
3709
|
+
if (this.timeFilter?.value &&
|
|
3710
|
+
this.timeFilter?.value.toString() !== this.timeFilter?.default.toString()) {
|
|
3711
|
+
baseOptions.timeFilter = {
|
|
3712
|
+
value: this.timeFilter.value
|
|
3713
|
+
};
|
|
3714
|
+
}
|
|
3554
3715
|
return {
|
|
3555
3716
|
...baseOptions,
|
|
3556
|
-
params: this.params
|
|
3717
|
+
params: this.params,
|
|
3718
|
+
...(this.ogcFilters && {
|
|
3719
|
+
ogcFilters: getSaveableOgcParams(this.ogcFilters)
|
|
3720
|
+
})
|
|
3557
3721
|
};
|
|
3558
3722
|
}
|
|
3559
3723
|
constructor(options, wfsService) {
|
|
@@ -3653,9 +3817,33 @@ class WMSDataSource extends DataSource {
|
|
|
3653
3817
|
const timeFilterableDataSourceOptions = options;
|
|
3654
3818
|
if (timeFilterableDataSourceOptions?.timeFilterable &&
|
|
3655
3819
|
timeFilterableDataSourceOptions?.timeFilter) {
|
|
3820
|
+
if (timeFilterableDataSourceOptions.timeFilter.value) {
|
|
3821
|
+
const date = this.dateFormat(timeFilterableDataSourceOptions.timeFilter);
|
|
3822
|
+
this.ol.updateParams({
|
|
3823
|
+
TIME: date
|
|
3824
|
+
});
|
|
3825
|
+
}
|
|
3656
3826
|
this.setTimeFilter(timeFilterableDataSourceOptions.timeFilter, true);
|
|
3657
3827
|
}
|
|
3658
3828
|
}
|
|
3829
|
+
dateFormat(timeFilterOptions) {
|
|
3830
|
+
const date = parseDateString(timeFilterOptions.value);
|
|
3831
|
+
const minMax = parseDateString([
|
|
3832
|
+
timeFilterOptions.min,
|
|
3833
|
+
timeFilterOptions.max
|
|
3834
|
+
]);
|
|
3835
|
+
const valueInRange = isDateOrRangeInRange(date, minMax);
|
|
3836
|
+
if (date instanceof Date) {
|
|
3837
|
+
return valueInRange
|
|
3838
|
+
? `${date.toISOString().split('.')[0]}Z`
|
|
3839
|
+
: `${minMax[0].toISOString().split('.')[0]}Z`;
|
|
3840
|
+
}
|
|
3841
|
+
else {
|
|
3842
|
+
return valueInRange
|
|
3843
|
+
? `${date[0].toISOString().split('.')[0]}Z/${date[1].toISOString().split('.')[0]}Z`
|
|
3844
|
+
: `${minMax[0].toISOString().split('.')[0]}Z/${minMax[1].toISOString().split('.')[0]}Z`;
|
|
3845
|
+
}
|
|
3846
|
+
}
|
|
3659
3847
|
refresh() {
|
|
3660
3848
|
this.ol.updateParams({ igoRefresh: Math.random() });
|
|
3661
3849
|
}
|
|
@@ -3677,7 +3865,7 @@ class WMSDataSource extends DataSource {
|
|
|
3677
3865
|
this.timeFilter = timeFilter;
|
|
3678
3866
|
if (triggerEvent) {
|
|
3679
3867
|
this.timeFilter$.next(this.timeFilter);
|
|
3680
|
-
this.ol.notify('timeFilter', this.
|
|
3868
|
+
this.ol.notify('timeFilter', this.timeFilter);
|
|
3681
3869
|
}
|
|
3682
3870
|
}
|
|
3683
3871
|
getLegend(style, view) {
|
|
@@ -5461,10 +5649,8 @@ class VectorLayer extends Layer {
|
|
|
5461
5649
|
geoDBService;
|
|
5462
5650
|
layerDBService;
|
|
5463
5651
|
type = 'vector';
|
|
5464
|
-
|
|
5465
|
-
|
|
5466
|
-
previousOgcFilters;
|
|
5467
|
-
xhrAccumulator = [];
|
|
5652
|
+
lastRequest;
|
|
5653
|
+
ongoingRequests = [];
|
|
5468
5654
|
watcher;
|
|
5469
5655
|
trackFeatureListenerId;
|
|
5470
5656
|
get browsable() {
|
|
@@ -5554,12 +5740,12 @@ class VectorLayer extends Layer {
|
|
|
5554
5740
|
if (wfsOptions?.type === 'wfs' &&
|
|
5555
5741
|
(wfsOptions.params || wfsOptions.paramsWFS)) {
|
|
5556
5742
|
loader = (extent, resolution, proj, success, failure) => {
|
|
5557
|
-
this.customWFSLoader(vectorSource, wfsOptions,
|
|
5743
|
+
this.customWFSLoader(vectorSource, wfsOptions, extent, resolution, proj, success, failure);
|
|
5558
5744
|
};
|
|
5559
5745
|
}
|
|
5560
5746
|
else {
|
|
5561
|
-
loader = (extent,
|
|
5562
|
-
this.customLoader(vectorSource, url, extent,
|
|
5747
|
+
loader = (extent, _resolution, proj, success, failure) => {
|
|
5748
|
+
this.customLoader(vectorSource, url, extent, proj, success, failure);
|
|
5563
5749
|
};
|
|
5564
5750
|
}
|
|
5565
5751
|
if (loader) {
|
|
@@ -5567,7 +5753,7 @@ class VectorLayer extends Layer {
|
|
|
5567
5753
|
}
|
|
5568
5754
|
}
|
|
5569
5755
|
else if (this.options.idbInfo?.storeToIdb && this.geoDBService) {
|
|
5570
|
-
const idbLoader = (extent,
|
|
5756
|
+
const idbLoader = (extent, _resolution, proj, success, failure) => {
|
|
5571
5757
|
this.customIDBLoader(vectorSource, olOptions.id, extent, proj, success, failure);
|
|
5572
5758
|
};
|
|
5573
5759
|
if (idbLoader) {
|
|
@@ -5705,7 +5891,7 @@ class VectorLayer extends Layer {
|
|
|
5705
5891
|
this.watcher.unsubscribe();
|
|
5706
5892
|
}
|
|
5707
5893
|
else {
|
|
5708
|
-
this.watcher.subscribe(() => void
|
|
5894
|
+
this.watcher.subscribe(() => void 0);
|
|
5709
5895
|
}
|
|
5710
5896
|
super.init(map);
|
|
5711
5897
|
}
|
|
@@ -5747,7 +5933,6 @@ class VectorLayer extends Layer {
|
|
|
5747
5933
|
* @internal
|
|
5748
5934
|
* @param vectorSource the vector source to be created
|
|
5749
5935
|
* @param options olOptions from source
|
|
5750
|
-
* @param interceptor the interceptor of the data
|
|
5751
5936
|
* @param extent the extent of the requested data
|
|
5752
5937
|
* @param resolution the current resolution
|
|
5753
5938
|
* @param proj the projection to retrieve the data
|
|
@@ -5755,45 +5940,57 @@ class VectorLayer extends Layer {
|
|
|
5755
5940
|
* @param failure failure callback
|
|
5756
5941
|
* @param randomParam random parameter to ensure cache is not causing problems in retrieving new data
|
|
5757
5942
|
*/
|
|
5758
|
-
customWFSLoader(vectorSource, options,
|
|
5759
|
-
|
|
5760
|
-
|
|
5761
|
-
|
|
5762
|
-
|
|
5763
|
-
|
|
5764
|
-
|
|
5765
|
-
|
|
5766
|
-
|
|
5767
|
-
|
|
5768
|
-
|
|
5769
|
-
|
|
5770
|
-
|
|
5771
|
-
|
|
5772
|
-
|
|
5773
|
-
|
|
5774
|
-
|
|
5775
|
-
|
|
5776
|
-
|
|
5777
|
-
|
|
5778
|
-
|
|
5779
|
-
|
|
5780
|
-
|
|
5781
|
-
|
|
5782
|
-
|
|
5783
|
-
|
|
5784
|
-
|
|
5785
|
-
|
|
5786
|
-
|
|
5787
|
-
|
|
5788
|
-
|
|
5789
|
-
|
|
5790
|
-
|
|
5791
|
-
|
|
5792
|
-
|
|
5793
|
-
|
|
5794
|
-
|
|
5795
|
-
|
|
5796
|
-
|
|
5943
|
+
customWFSLoader(vectorSource, options, extent, resolution, proj, success, failure, randomParam) {
|
|
5944
|
+
const paramsWFS = options.paramsWFS;
|
|
5945
|
+
const wfsProj = this.getProjection(proj, paramsWFS);
|
|
5946
|
+
const currentExtent = olproj.transformExtent(extent, proj, wfsProj);
|
|
5947
|
+
if (this.lastRequest &&
|
|
5948
|
+
(this.lastRequest.extent !== currentExtent ||
|
|
5949
|
+
this.lastRequest.resolution !== resolution)) {
|
|
5950
|
+
this.abortRequests(vectorSource);
|
|
5951
|
+
}
|
|
5952
|
+
const url = buildUrl(options, currentExtent, wfsProj, randomParam);
|
|
5953
|
+
const request = {
|
|
5954
|
+
xhr: undefined,
|
|
5955
|
+
extent,
|
|
5956
|
+
resolution
|
|
5957
|
+
};
|
|
5958
|
+
const readOptions = {
|
|
5959
|
+
dataProjection: wfsProj,
|
|
5960
|
+
featureProjection: proj
|
|
5961
|
+
};
|
|
5962
|
+
if (paramsWFS.version === '2.0.0' &&
|
|
5963
|
+
paramsWFS.maxFeatures > defaultMaxFeatures) {
|
|
5964
|
+
this.batchGetFeatures(url, request, vectorSource, paramsWFS, readOptions, success, failure);
|
|
5965
|
+
}
|
|
5966
|
+
else {
|
|
5967
|
+
this.getFeatures(url, request, vectorSource, readOptions, success, failure);
|
|
5968
|
+
}
|
|
5969
|
+
}
|
|
5970
|
+
abortRequests(vectorSource) {
|
|
5971
|
+
vectorSource.removeLoadedExtent(this.lastRequest.extent);
|
|
5972
|
+
for (const request of this.ongoingRequests) {
|
|
5973
|
+
request.xhr?.abort();
|
|
5974
|
+
this.removeRequest(request);
|
|
5975
|
+
}
|
|
5976
|
+
}
|
|
5977
|
+
getProjection(proj, params) {
|
|
5978
|
+
const newProj = params.srsName
|
|
5979
|
+
? new olProjection({ code: params.srsName })
|
|
5980
|
+
: proj;
|
|
5981
|
+
params.srsName = newProj.getCode();
|
|
5982
|
+
return newProj;
|
|
5983
|
+
}
|
|
5984
|
+
batchGetFeatures(url, request, vectorSource, paramsWFS, readOptions, success, failure) {
|
|
5985
|
+
const nbOfFeature = 1000;
|
|
5986
|
+
let startIndex = 0;
|
|
5987
|
+
while (startIndex < paramsWFS.maxFeatures) {
|
|
5988
|
+
let alteredUrl = url.replace('count=' + paramsWFS.maxFeatures, 'count=' + nbOfFeature);
|
|
5989
|
+
alteredUrl = alteredUrl.replace('startIndex=0', '0');
|
|
5990
|
+
alteredUrl += '&startIndex=' + startIndex;
|
|
5991
|
+
alteredUrl.replace(/&&/g, '&');
|
|
5992
|
+
this.getFeatures(alteredUrl, request, vectorSource, readOptions, success, failure);
|
|
5993
|
+
startIndex += nbOfFeature;
|
|
5797
5994
|
}
|
|
5798
5995
|
}
|
|
5799
5996
|
/**
|
|
@@ -5807,7 +6004,7 @@ class VectorLayer extends Layer {
|
|
|
5807
6004
|
* @param success success callback
|
|
5808
6005
|
* @param failure failure callback
|
|
5809
6006
|
*/
|
|
5810
|
-
getFeatures(
|
|
6007
|
+
getFeatures(url, request, vectorSource, readOptions, success, failure) {
|
|
5811
6008
|
const xhr = new XMLHttpRequest();
|
|
5812
6009
|
const alteredUrlWithKeyAuth = this.authInterceptor.alterUrlWithKeyAuth(url);
|
|
5813
6010
|
let modifiedUrl = url;
|
|
@@ -5819,7 +6016,8 @@ class VectorLayer extends Layer {
|
|
|
5819
6016
|
this.authInterceptor.interceptXhr(xhr, modifiedUrl);
|
|
5820
6017
|
}
|
|
5821
6018
|
const onError = () => {
|
|
5822
|
-
vectorSource.removeLoadedExtent(extent);
|
|
6019
|
+
vectorSource.removeLoadedExtent(request.extent);
|
|
6020
|
+
this.removeRequest(request);
|
|
5823
6021
|
failure();
|
|
5824
6022
|
};
|
|
5825
6023
|
xhr.onerror = onError;
|
|
@@ -5827,10 +6025,7 @@ class VectorLayer extends Layer {
|
|
|
5827
6025
|
if (xhr.status === 200 && xhr.responseText.length > 0) {
|
|
5828
6026
|
const features = vectorSource
|
|
5829
6027
|
.getFormat()
|
|
5830
|
-
.readFeatures(xhr.responseText,
|
|
5831
|
-
dataProjection,
|
|
5832
|
-
featureProjection
|
|
5833
|
-
});
|
|
6028
|
+
.readFeatures(xhr.responseText, readOptions);
|
|
5834
6029
|
if (features) {
|
|
5835
6030
|
vectorSource.addFeatures(features);
|
|
5836
6031
|
success(features);
|
|
@@ -5838,24 +6033,35 @@ class VectorLayer extends Layer {
|
|
|
5838
6033
|
else {
|
|
5839
6034
|
success([]);
|
|
5840
6035
|
}
|
|
6036
|
+
this.removeRequest(request);
|
|
5841
6037
|
}
|
|
5842
6038
|
else {
|
|
5843
6039
|
onError();
|
|
5844
6040
|
}
|
|
5845
6041
|
};
|
|
5846
|
-
|
|
6042
|
+
request.xhr = xhr;
|
|
6043
|
+
this.lastRequest = request;
|
|
6044
|
+
this.ongoingRequests.push(request);
|
|
5847
6045
|
xhr.send();
|
|
5848
6046
|
}
|
|
6047
|
+
removeRequest(request) {
|
|
6048
|
+
if (request === this.lastRequest) {
|
|
6049
|
+
this.lastRequest = undefined;
|
|
6050
|
+
}
|
|
6051
|
+
const index = this.ongoingRequests.indexOf(request);
|
|
6052
|
+
if (index > -1) {
|
|
6053
|
+
this.ongoingRequests.splice(index, 1);
|
|
6054
|
+
}
|
|
6055
|
+
}
|
|
5849
6056
|
/**
|
|
5850
6057
|
* Custom loader for vector layer.
|
|
5851
6058
|
* @internal
|
|
5852
6059
|
* @param vectorSource the vector source to be created
|
|
5853
6060
|
* @param url the url string or function to retrieve the data
|
|
5854
6061
|
* @param extent the extent of the requested data
|
|
5855
|
-
* @param resolution the current resolution
|
|
5856
6062
|
* @param projection the projection to retrieve the data
|
|
5857
6063
|
*/
|
|
5858
|
-
customLoader(vectorSource, url, extent,
|
|
6064
|
+
customLoader(vectorSource, url, extent, projection, success, failure) {
|
|
5859
6065
|
const xhr = new XMLHttpRequest();
|
|
5860
6066
|
let modifiedUrl = url;
|
|
5861
6067
|
if (typeof url !== 'function') {
|
|
@@ -9349,6 +9555,12 @@ class CapabilitiesService {
|
|
|
9349
9555
|
if (!queryFormat) {
|
|
9350
9556
|
queryable = false;
|
|
9351
9557
|
}
|
|
9558
|
+
if (baseOptions.params.STYLES) {
|
|
9559
|
+
const style = legendOptions?.stylesAvailable?.find((style) => style.name === baseOptions.params.STYLES);
|
|
9560
|
+
if (!style) {
|
|
9561
|
+
delete baseOptions.params.STYLES;
|
|
9562
|
+
}
|
|
9563
|
+
}
|
|
9352
9564
|
const options = ObjectUtils.removeUndefined({
|
|
9353
9565
|
_layerOptionsFromSource: {
|
|
9354
9566
|
title: layer.Title,
|
|
@@ -9541,7 +9753,7 @@ class CapabilitiesService {
|
|
|
9541
9753
|
timeFilter.step = minMaxDim[2] !== undefined ? minMaxDim[2] : undefined;
|
|
9542
9754
|
}
|
|
9543
9755
|
if (dimension.default) {
|
|
9544
|
-
timeFilter.value = dimension.default;
|
|
9756
|
+
timeFilter.value = timeFilter.default = dimension.default;
|
|
9545
9757
|
}
|
|
9546
9758
|
return timeFilter;
|
|
9547
9759
|
}
|
|
@@ -10279,7 +10491,7 @@ class LayerLegendComponent {
|
|
|
10279
10491
|
.LAYERS.split(',')
|
|
10280
10492
|
.map(() => (STYLES += this.currentStyle + ','));
|
|
10281
10493
|
STYLES = STYLES.slice(0, -1);
|
|
10282
|
-
this.layer.dataSource.
|
|
10494
|
+
this.layer.dataSource.stylesParams = STYLES;
|
|
10283
10495
|
}
|
|
10284
10496
|
}
|
|
10285
10497
|
onLoadImage(id) {
|
|
@@ -17873,23 +18085,11 @@ class TimeFilterService {
|
|
|
17873
18085
|
}
|
|
17874
18086
|
reformatDateTime(value) {
|
|
17875
18087
|
const year = value.getFullYear();
|
|
17876
|
-
let month = value.getMonth() + 1;
|
|
17877
|
-
let day = value.getUTCDate();
|
|
17878
|
-
let hour = value.getUTCHours();
|
|
17879
|
-
let minute = value.getUTCMinutes();
|
|
17880
|
-
|
|
17881
|
-
month = '0' + month;
|
|
17882
|
-
}
|
|
17883
|
-
if (Number(day) < 10) {
|
|
17884
|
-
day = '0' + day;
|
|
17885
|
-
}
|
|
17886
|
-
if (Number(hour) < 10) {
|
|
17887
|
-
hour = '0' + hour;
|
|
17888
|
-
}
|
|
17889
|
-
if (Number(minute) < 10) {
|
|
17890
|
-
minute = '0' + minute;
|
|
17891
|
-
}
|
|
17892
|
-
return year + '-' + month + '-' + day + 'T' + hour + ':' + minute + ':00Z';
|
|
18088
|
+
let month = (value.getMonth() + 1).toString().padStart(2, '0');
|
|
18089
|
+
let day = value.getUTCDate().toString().padStart(2, '0');
|
|
18090
|
+
let hour = value.getUTCHours().toString().padStart(2, '0');
|
|
18091
|
+
let minute = value.getUTCMinutes().toString().padStart(2, '0');
|
|
18092
|
+
return `${year}-${month}-${day}T${hour}:${minute}:00Z`;
|
|
17893
18093
|
}
|
|
17894
18094
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.5", ngImport: i0, type: TimeFilterService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
17895
18095
|
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.5", ngImport: i0, type: TimeFilterService });
|
|
@@ -17912,6 +18112,11 @@ class OGCFilterService {
|
|
|
17912
18112
|
options.ogcFilters.interfaceOgcFilters =
|
|
17913
18113
|
ogcFilterWriter.defineInterfaceFilterSequence(options.ogcFilters.filters, options.paramsWFS.fieldNameGeometry);
|
|
17914
18114
|
}
|
|
18115
|
+
else {
|
|
18116
|
+
const mergedInterfaceOgcFilters = this.mergeInterfaceFilters(options.ogcFilters.filters, options.ogcFilters.interfaceOgcFilters);
|
|
18117
|
+
options.ogcFilters.interfaceOgcFilters =
|
|
18118
|
+
ogcFilterWriter.defineInterfaceFilterSequence(mergedInterfaceOgcFilters, options.paramsWFS.fieldNameGeometry);
|
|
18119
|
+
}
|
|
17915
18120
|
}
|
|
17916
18121
|
}
|
|
17917
18122
|
setOgcWMSFiltersOptions(wmsDatasource) {
|
|
@@ -17925,6 +18130,11 @@ class OGCFilterService {
|
|
|
17925
18130
|
// With some wms server, this param must be set to make spatials call.
|
|
17926
18131
|
options.ogcFilters.filters, options.fieldNameGeometry);
|
|
17927
18132
|
}
|
|
18133
|
+
else {
|
|
18134
|
+
const mergedInterfaceOgcFilters = this.mergeInterfaceFilters(options.ogcFilters.filters, options.ogcFilters.interfaceOgcFilters);
|
|
18135
|
+
options.ogcFilters.interfaceOgcFilters =
|
|
18136
|
+
ogcFilterWriter.defineInterfaceFilterSequence(mergedInterfaceOgcFilters, options.fieldNameGeometry);
|
|
18137
|
+
}
|
|
17928
18138
|
this.filterByOgc(wmsDatasource, ogcFilterWriter.buildFilter(options.ogcFilters.filters, undefined, undefined, undefined, wmsDatasource.options));
|
|
17929
18139
|
options.filtered = true;
|
|
17930
18140
|
}
|
|
@@ -17934,6 +18144,15 @@ class OGCFilterService {
|
|
|
17934
18144
|
options.filtered = false;
|
|
17935
18145
|
}
|
|
17936
18146
|
}
|
|
18147
|
+
mergeInterfaceFilters(filters, interfaceOgcFilters) {
|
|
18148
|
+
return interfaceOgcFilters.map((interfaceOgc) => {
|
|
18149
|
+
const filter = searchFilter(filters, 'propertyName', interfaceOgc.propertyName);
|
|
18150
|
+
if (filter) {
|
|
18151
|
+
return { ...interfaceOgc, filterid: filter.filterid };
|
|
18152
|
+
}
|
|
18153
|
+
return interfaceOgc;
|
|
18154
|
+
});
|
|
18155
|
+
}
|
|
17937
18156
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.5", ngImport: i0, type: OGCFilterService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
17938
18157
|
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.5", ngImport: i0, type: OGCFilterService });
|
|
17939
18158
|
}
|
|
@@ -18976,6 +19195,9 @@ class OgcFilterTimeComponent {
|
|
|
18976
19195
|
}
|
|
18977
19196
|
changeTemporalProperty(value, position, refreshFilter = true) {
|
|
18978
19197
|
if (typeof value === 'string') {
|
|
19198
|
+
if (!this.isValidDate(value)) {
|
|
19199
|
+
return;
|
|
19200
|
+
}
|
|
18979
19201
|
value = new Date(value);
|
|
18980
19202
|
}
|
|
18981
19203
|
let valueTmp = this.getDateTime(value, position);
|
|
@@ -19431,6 +19653,13 @@ class OgcFilterTimeComponent {
|
|
|
19431
19653
|
this.setFilterStateDisable();
|
|
19432
19654
|
this.updateValues();
|
|
19433
19655
|
}
|
|
19656
|
+
isValidDate(value) {
|
|
19657
|
+
if (/^\d+$/.test(value)) {
|
|
19658
|
+
return false;
|
|
19659
|
+
}
|
|
19660
|
+
const date = new Date(value);
|
|
19661
|
+
return date instanceof Date && !isNaN(date.getTime());
|
|
19662
|
+
}
|
|
19434
19663
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.5", ngImport: i0, type: OgcFilterTimeComponent, deps: [{ token: OGCFilterTimeService }], target: i0.ɵɵFactoryTarget.Component });
|
|
19435
19664
|
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.5", type: OgcFilterTimeComponent, isStandalone: true, selector: "igo-ogc-filter-time", inputs: { datasource: "datasource", currentFilter: "currentFilter" }, outputs: { changeProperty: "changeProperty" }, providers: [OGCFilterTimeService, provideMomentDateAdapter()], viewQueries: [{ propertyName: "endDatepickerTime", first: true, predicate: ["endDatepickerTime"], descendants: true }, { propertyName: "beginDatepickerTime", first: true, predicate: ["beginDatepickerTime"], descendants: true }, { propertyName: "beginTime", first: true, predicate: ["beginTime"], descendants: true }, { propertyName: "endTime", first: true, predicate: ["endTime"], descendants: true }], ngImport: i0, template: "<div class=\"datetime-container\">\n <mat-slide-toggle\n *ngIf=\"this.currentFilter.sliderOptions?.enabled\"\n [(ngModel)]=\"sliderMode\"\n (change)=\"modeChange($event)\"\n >\n {{ 'igo.geo.filter.sliderModeTitle' | translate }}\n </mat-slide-toggle>\n\n <div class=\"slider-container\" *ngIf=\"sliderMode\">\n <igo-ogc-filter-time-slider\n [begin]=\"beginValue\"\n [max]=\"this.restrictedToStep() ? this.maxDate : this.endValue\"\n [currentFilter]=\"currentFilter\"\n [datasource]=\"datasource\"\n (changeProperty)=\"changePropertyByPass($event)\"\n >\n </igo-ogc-filter-time-slider>\n </div>\n\n <div *ngIf=\"!sliderMode\">\n <div class=\"year-input-container\" *ngIf=\"calendarTypeYear\">\n <!-- to emulate a year-picker, 2 input: first input to show user just year and second input hiden and bind \n with the datepicker -->\n <mat-form-field class=\"year-input\" subscriptSizing=\"dynamic\">\n <mat-label>{{ 'igo.geo.timeFilter.startYear' | translate }}</mat-label>\n <input\n matInput\n class=\"year-input-only-year\"\n value=\"{{ onlyYearBegin }}\"\n (change)=\"yearOnlyInputChange($event, beginDatepicker, 'begin')\"\n [disabled]=\"filterStateDisable\"\n />\n <mat-datepicker-toggle\n matSuffix\n [for]=\"beginDatepicker\"\n [disabled]=\"filterStateDisable\"\n ></mat-datepicker-toggle>\n\n <mat-datepicker\n panelClass=\"datepicker-year\"\n #beginDatepicker\n [startView]=\"calendarView()\"\n [startAt]=\"beginValue\"\n (yearSelected)=\"yearSelected($event, beginDatepicker, 'begin')\"\n >\n </mat-datepicker>\n\n <input\n #beginYear\n class=\"year-input-hide\"\n matInput\n [matDatepicker]=\"beginDatepicker\"\n enabled=\"false\"\n readonly=\"true\"\n [value]=\"\n beginValue ? beginValue : handleDate(datasource.options.minDate)\n \"\n [min]=\"handleDate(datasource.options.minDate)\"\n [max]=\"\n endValue && !restrictedToStep()\n ? endValue\n : handleDate(datasource.options.maxDate)\n \"\n />\n </mat-form-field>\n\n <mat-form-field class=\"year-input\" subscriptSizing=\"dynamic\">\n <mat-label>{{ 'igo.geo.timeFilter.endYear' | translate }}</mat-label>\n <input\n matInput\n class=\"year-input-only-year\"\n value=\"{{ onlyYearEnd }}\"\n (change)=\"yearOnlyInputChange($event, endDatepicker, 'end')\"\n [disabled]=\"filterStateDisable\"\n />\n <mat-datepicker-toggle\n matSuffix\n [for]=\"endDatepicker\"\n [disabled]=\"filterStateDisable\"\n ></mat-datepicker-toggle>\n <mat-datepicker\n panelClass=\"datepicker-year\"\n #endDatepicker\n [startView]=\"calendarView()\"\n [startAt]=\"endValue\"\n (yearSelected)=\"yearSelected($event, endDatepicker, 'end')\"\n >\n </mat-datepicker>\n\n <input\n #endYear\n class=\"year-input-hide\"\n matInput\n [matDatepicker]=\"endDatepicker\"\n enabled=\"false\"\n readonly=\"true\"\n [value]=\"endValue ? endValue : handleDate(datasource.options.maxDate)\"\n [min]=\"\n beginValue ? beginValue : handleDate(datasource.options.minDate)\n \"\n [max]=\"handleDate(datasource.options.maxDate)\"\n />\n </mat-form-field>\n <div class=\"actions-container\">\n <button\n class=\"reset-button\"\n mat-icon-button\n color=\"primary\"\n (click)=\"resetFilter()\"\n [matTooltip]=\"'igo.geo.filter.resetFilters' | translate\"\n [disabled]=\"filterStateDisable\"\n >\n <mat-icon>{{ resetIcon }}</mat-icon>\n </button>\n <mat-slide-toggle\n class=\"toggle-filter-state\"\n (change)=\"toggleFilterState()\"\n [matTooltip]=\"'igo.geo.filter.toggleFilterState' | translate\"\n tooltip-position=\"below\"\n matTooltipShowDelay=\"500\"\n [checked]=\"!filterStateDisable\"\n >\n </mat-slide-toggle>\n </div>\n </div>\n\n <div class=\"datetime-input-container\" *ngIf=\"calendarType() !== 'year'\">\n <div class=\"datetime-input\">\n <mat-form-field class=\"date-input\" subscriptSizing=\"dynamic\">\n <mat-datepicker-toggle\n matSuffix\n [for]=\"beginDatepicker\"\n [disabled]=\"filterStateDisable\"\n ></mat-datepicker-toggle>\n <input\n #begin\n matInput\n [matDatepicker]=\"beginDatepicker\"\n [placeholder]=\"'igo.geo.timeFilter.startDate' | translate\"\n [attr.disabled]=\"!currentFilter.active\"\n (dateChange)=\"changeTemporalProperty(begin.value, 1)\"\n [matDatepickerFilter]=\"filterBeginFunction\"\n [value]=\"\n beginValue ? beginValue : handleDate(datasource.options.minDate)\n \"\n [min]=\"handleDate(datasource.options.minDate)\"\n [max]=\"\n endValue && !restrictedToStep()\n ? endValue\n : handleDate(datasource.options.maxDate)\n \"\n [disabled]=\"filterStateDisable\"\n />\n <span class=\"filler\"></span>\n <mat-datepicker\n #beginDatepicker\n [startView]=\"calendarView()\"\n [startAt]=\"beginValue\"\n (yearSelected)=\"yearSelected($event, beginDatepicker, 'begin')\"\n (monthSelected)=\"monthSelected($event, beginDatepicker, 'begin')\"\n >\n </mat-datepicker>\n </mat-form-field>\n\n <div *ngIf=\"calendarType() === 'datetime'\" class=\"time-input\">\n <mat-form-field class=\"hour-input\" subscriptSizing=\"dynamic\">\n <mat-label>{{ 'igo.geo.timeFilter.hour' | translate }}</mat-label>\n <mat-select\n [formControl]=\"beginHourFormControl\"\n [attr.disabled]=\"!currentFilter.active\"\n (selectionChange)=\"changeTemporalProperty(begin.value, 1)\"\n >\n <mat-option *ngFor=\"let hour of beginHours\" [value]=\"hour\">{{\n hour\n }}</mat-option>\n </mat-select>\n </mat-form-field>\n <mat-form-field class=\"minute-input\" subscriptSizing=\"dynamic\">\n <mat-label>{{ 'igo.geo.timeFilter.minute' | translate }}</mat-label>\n <mat-select\n [formControl]=\"beginMinuteFormControl\"\n [attr.disabled]=\"!currentFilter.active\"\n (selectionChange)=\"changeTemporalProperty(begin.value, 1)\"\n >\n <mat-option\n *ngFor=\"let minute of beginMinutes\"\n [value]=\"minute\"\n >{{ minute }}</mat-option\n >\n </mat-select>\n </mat-form-field>\n </div>\n </div>\n\n <div *ngIf=\"!restrictedToStep()\" class=\"datetime-input\">\n <mat-form-field class=\"date-input\" subscriptSizing=\"dynamic\">\n <mat-datepicker-toggle\n matSuffix\n [for]=\"endDatepicker\"\n [disabled]=\"filterStateDisable\"\n ></mat-datepicker-toggle>\n <input\n #end\n matInput\n [matDatepicker]=\"endDatepicker\"\n [placeholder]=\"'igo.geo.timeFilter.endDate' | translate\"\n [attr.disabled]=\"!currentFilter.active\"\n (dateChange)=\"changeTemporalProperty(end.value, 2)\"\n [matDatepickerFilter]=\"filterEndFunction\"\n [value]=\"\n endValue ? endValue : handleDate(datasource.options.maxDate)\n \"\n [min]=\"\n beginValue ? beginValue : handleDate(datasource.options.minDate)\n \"\n [max]=\"handleDate(datasource.options.maxDate)\"\n [disabled]=\"filterStateDisable\"\n />\n <span class=\"filler\"></span>\n <mat-datepicker\n #endDatepicker\n [startView]=\"calendarView()\"\n [startAt]=\"endValue\"\n (yearSelected)=\"yearSelected($event, endDatepicker, 'end')\"\n (monthSelected)=\"monthSelected($event, endDatepicker, 'end')\"\n >\n </mat-datepicker>\n </mat-form-field>\n\n <div *ngIf=\"calendarType() === 'datetime'\" class=\"time-input\">\n <mat-form-field class=\"hour-input\" subscriptSizing=\"dynamic\">\n <mat-label>{{ 'igo.geo.timeFilter.hour' | translate }}</mat-label>\n <mat-select\n [formControl]=\"endHourFormControl\"\n [attr.disabled]=\"!currentFilter.active\"\n (selectionChange)=\"changeTemporalProperty(end.value, 2)\"\n >\n <mat-option *ngFor=\"let hour of endHours\" [value]=\"hour\">{{\n hour\n }}</mat-option>\n </mat-select>\n </mat-form-field>\n <mat-form-field class=\"minute-input\" subscriptSizing=\"dynamic\">\n <mat-label>{{ 'igo.geo.timeFilter.minute' | translate }}</mat-label>\n <mat-select\n [formControl]=\"endMinuteFormControl\"\n [attr.disabled]=\"!currentFilter.active\"\n (selectionChange)=\"changeTemporalProperty(end.value, 2)\"\n >\n <mat-option *ngFor=\"let minute of endMinutes\" [value]=\"minute\">{{\n minute\n }}</mat-option>\n </mat-select>\n </mat-form-field>\n </div>\n </div>\n\n <div class=\"actions-container\">\n <button\n class=\"reset-button\"\n mat-icon-button\n color=\"primary\"\n (click)=\"resetFilter()\"\n [matTooltip]=\"'igo.geo.filter.resetFilters' | translate\"\n [disabled]=\"filterStateDisable\"\n >\n <mat-icon>{{ resetIcon }}</mat-icon>\n </button>\n <mat-slide-toggle\n class=\"toggle-filter-state\"\n (change)=\"toggleFilterState()\"\n tooltip-position=\"below\"\n matTooltipShowDelay=\"500\"\n [matTooltip]=\"'igo.geo.filter.toggleFilterState' | translate\"\n [checked]=\"!filterStateDisable\"\n >\n </mat-slide-toggle>\n </div>\n </div>\n </div>\n</div>\n", styles: [":host ::ng-deep input{text-align:center!important;margin:auto 5px!important}:host .slider-container{text-align:center}:host .datetime-input-container{display:flex;align-items:center;flex-wrap:wrap}:host .datetime-input-container>:not(:last-child){margin-right:8px}:host .datetime-input{display:block}:host .date-input{width:154px}:host .actions-container{display:flex;align-items:center}:host .time-input{margin-top:16px}:host .time-input>:not(:last-child){margin-right:8px}@media only screen and (orientation:portrait) and (max-width: 599px),only screen and (orientation:landscape) and (max-width: 959px){:host .time-input{margin-top:4px}}:host .hour-input,:host .minute-input{width:100px}:host .year-input-container{display:flex;width:100%}:host .year-input-container mat-form-field:not(:last-child){margin-right:4px}:host .year-input-hide{width:120px;margin-right:25px;display:none}:host .year-input-only-year{width:120px;margin-right:25px;text-align:left!important}:host ::ng-deep .datepicker-year ::ng-deep .mat-calendar-arrow{display:none}:host ::ng-deep .datepicker-year ::ng-deep .mat-calendar-period-button{pointer-events:none}:host ::ng-deep .datepicker-year ::ng-deep .mat-calendar-body-cell:not(.mat-calendar-body-disabled):hover{background-color:#0000001f;border-radius:999px}\n"], dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: MatSlideToggleModule }, { kind: "component", type: i5$1.MatSlideToggle, selector: "mat-slide-toggle", inputs: ["name", "id", "labelPosition", "aria-label", "aria-labelledby", "aria-describedby", "required", "color", "disabled", "disableRipple", "tabIndex", "checked", "hideIcon", "disabledInteractive"], outputs: ["change", "toggleChange"], exportAs: ["matSlideToggle"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i2$4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2$4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: OgcFilterTimeSliderComponent, selector: "igo-ogc-filter-time-slider", inputs: ["currentFilter", "begin", "max", "datasource"], outputs: ["changeProperty"] }, { kind: "ngmodule", type: MatFormFieldModule }, { kind: "component", type: i2$3.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i2$3.MatLabel, selector: "mat-label" }, { kind: "directive", type: i2$3.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "ngmodule", type: MatInputModule }, { kind: "directive", type: i4$2.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly", "disabledInteractive"], exportAs: ["matInput"] }, { kind: "ngmodule", type: MatDatepickerModule }, { kind: "component", type: i6$3.MatDatepicker, selector: "mat-datepicker", exportAs: ["matDatepicker"] }, { kind: "directive", type: i6$3.MatDatepickerInput, selector: "input[matDatepicker]", inputs: ["matDatepicker", "min", "max", "matDatepickerFilter"], exportAs: ["matDatepickerInput"] }, { kind: "component", type: i6$3.MatDatepickerToggle, selector: "mat-datepicker-toggle", inputs: ["for", "tabIndex", "aria-label", "disabled", "disableRipple"], exportAs: ["matDatepickerToggle"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i2$2.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i3$1.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i4$1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatSelectModule }, { kind: "component", type: i7.MatSelect, selector: "mat-select", inputs: ["aria-describedby", "panelClass", "disabled", "disableRipple", "tabIndex", "hideSingleSelectionIndicator", "placeholder", "required", "multiple", "disableOptionCentering", "compareWith", "value", "aria-label", "aria-labelledby", "errorStateMatcher", "typeaheadDebounceInterval", "sortComparator", "id", "panelWidth", "canSelectNullableOptions"], outputs: ["openedChange", "opened", "closed", "selectionChange", "valueChange"], exportAs: ["matSelect"] }, { kind: "component", type: i7.MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i2$4.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "ngmodule", type: MatOptionModule }, { kind: "ngmodule", type: IgoLanguageModule }, { kind: "pipe", type: i5.TranslatePipe, name: "translate" }] });
|
|
19436
19665
|
}
|
|
@@ -28987,7 +29216,7 @@ class TimeFilterFormComponent {
|
|
|
28987
29216
|
}
|
|
28988
29217
|
}
|
|
28989
29218
|
}
|
|
28990
|
-
|
|
29219
|
+
dateChange = new EventEmitter();
|
|
28991
29220
|
yearChange = new EventEmitter();
|
|
28992
29221
|
mySlider;
|
|
28993
29222
|
get type() {
|
|
@@ -29036,7 +29265,9 @@ class TimeFilterFormComponent {
|
|
|
29036
29265
|
}
|
|
29037
29266
|
get min() {
|
|
29038
29267
|
if (this.options.min) {
|
|
29039
|
-
const min =
|
|
29268
|
+
const min = isTimeFrame(this.options.min)
|
|
29269
|
+
? new Date(parseDateOperation(this.options.min))
|
|
29270
|
+
: new Date(this.options.min);
|
|
29040
29271
|
return new Date(min.getTime() + min.getTimezoneOffset() * 60000);
|
|
29041
29272
|
}
|
|
29042
29273
|
else {
|
|
@@ -29045,7 +29276,9 @@ class TimeFilterFormComponent {
|
|
|
29045
29276
|
}
|
|
29046
29277
|
get max() {
|
|
29047
29278
|
if (this.options.max) {
|
|
29048
|
-
const max =
|
|
29279
|
+
const max = isTimeFrame(this.options.max)
|
|
29280
|
+
? new Date(parseDateOperation(this.options.max))
|
|
29281
|
+
: new Date(this.options.max);
|
|
29049
29282
|
return new Date(max.getTime() + max.getTimezoneOffset() * 60000);
|
|
29050
29283
|
}
|
|
29051
29284
|
else {
|
|
@@ -29055,6 +29288,13 @@ class TimeFilterFormComponent {
|
|
|
29055
29288
|
get is() {
|
|
29056
29289
|
return this.options.range === undefined ? false : this.options.range;
|
|
29057
29290
|
}
|
|
29291
|
+
get allYearsInterval() {
|
|
29292
|
+
const options = [];
|
|
29293
|
+
for (let i = this.initStartYear; i <= this.initEndYear; i++) {
|
|
29294
|
+
options.push(i);
|
|
29295
|
+
}
|
|
29296
|
+
return options;
|
|
29297
|
+
}
|
|
29058
29298
|
constructor(dateAdapter) {
|
|
29059
29299
|
this.dateAdapter = dateAdapter;
|
|
29060
29300
|
this.dateAdapter.setLocale('fr');
|
|
@@ -29074,22 +29314,15 @@ class TimeFilterFormComponent {
|
|
|
29074
29314
|
this.endYear = new Date(this.endDate).getFullYear();
|
|
29075
29315
|
this.initEndYear = this.endYear;
|
|
29076
29316
|
}
|
|
29317
|
+
this.checkFilterValue();
|
|
29077
29318
|
if (!this.isRange) {
|
|
29078
|
-
|
|
29079
|
-
this.listYears.push(i);
|
|
29080
|
-
}
|
|
29319
|
+
this.listYears = this.allYearsInterval;
|
|
29081
29320
|
}
|
|
29082
29321
|
else {
|
|
29083
|
-
|
|
29084
|
-
this.startListYears.push(i);
|
|
29085
|
-
}
|
|
29086
|
-
for (let i = this.startYear + 1; i <= this.endYear; i++) {
|
|
29087
|
-
this.endListYears.push(i);
|
|
29088
|
-
}
|
|
29322
|
+
this.setUpYearsInterval();
|
|
29089
29323
|
}
|
|
29090
29324
|
this.options.enabled =
|
|
29091
29325
|
this.options.enabled === undefined ? true : this.options.enabled;
|
|
29092
|
-
this.checkFilterValue();
|
|
29093
29326
|
if (this.options.enabled) {
|
|
29094
29327
|
if (!this.isRange && this.style === 'slider' && this.type === 'year') {
|
|
29095
29328
|
this.yearChange.emit(this.year);
|
|
@@ -29108,74 +29341,124 @@ class TimeFilterFormComponent {
|
|
|
29108
29341
|
this.options.value = this.year.toString();
|
|
29109
29342
|
}
|
|
29110
29343
|
}
|
|
29111
|
-
|
|
29112
|
-
|
|
29113
|
-
const
|
|
29114
|
-
|
|
29115
|
-
this.
|
|
29116
|
-
|
|
29117
|
-
|
|
29118
|
-
|
|
29344
|
+
processSliderValue() {
|
|
29345
|
+
// if style is Slider the range always false
|
|
29346
|
+
const dateValue = this.getDateValue();
|
|
29347
|
+
const inRange = dateValue
|
|
29348
|
+
? isDateOrRangeInRange(dateValue, [this.min, this.max])
|
|
29349
|
+
: undefined;
|
|
29350
|
+
if (inRange && dateValue instanceof Date) {
|
|
29351
|
+
if (this.type === TimeFilterType.YEAR) {
|
|
29352
|
+
this.year = dateValue.getFullYear();
|
|
29353
|
+
}
|
|
29354
|
+
else {
|
|
29355
|
+
this.date = dateValue;
|
|
29119
29356
|
}
|
|
29120
|
-
|
|
29121
|
-
|
|
29357
|
+
}
|
|
29358
|
+
else {
|
|
29359
|
+
if (this.type === TimeFilterType.YEAR) {
|
|
29360
|
+
this.year = this.min.getFullYear();
|
|
29122
29361
|
}
|
|
29123
29362
|
else {
|
|
29124
|
-
this.
|
|
29363
|
+
this.date = this.min;
|
|
29125
29364
|
}
|
|
29126
29365
|
}
|
|
29127
|
-
|
|
29128
|
-
|
|
29129
|
-
|
|
29130
|
-
|
|
29131
|
-
|
|
29132
|
-
|
|
29133
|
-
|
|
29134
|
-
|
|
29135
|
-
|
|
29136
|
-
|
|
29137
|
-
|
|
29138
|
-
|
|
29139
|
-
|
|
29140
|
-
|
|
29141
|
-
|
|
29142
|
-
|
|
29366
|
+
}
|
|
29367
|
+
processCalendarYearType() {
|
|
29368
|
+
const dateValue = this.getDateValue();
|
|
29369
|
+
const inRange = dateValue
|
|
29370
|
+
? isDateOrRangeInRange(dateValue, [this.min, this.max])
|
|
29371
|
+
: undefined;
|
|
29372
|
+
if (!this.isRange) {
|
|
29373
|
+
if (inRange && dateValue instanceof Date) {
|
|
29374
|
+
this.year = dateValue.getFullYear();
|
|
29375
|
+
}
|
|
29376
|
+
else {
|
|
29377
|
+
this.year = this.min.getFullYear();
|
|
29378
|
+
}
|
|
29379
|
+
}
|
|
29380
|
+
else {
|
|
29381
|
+
if (inRange &&
|
|
29382
|
+
Array.isArray(dateValue) &&
|
|
29383
|
+
dateValue[0].getFullYear() !== dateValue[1].getFullYear()) {
|
|
29384
|
+
this.startYear = dateValue[0].getFullYear();
|
|
29385
|
+
this.endYear = dateValue[1].getFullYear();
|
|
29143
29386
|
}
|
|
29144
29387
|
}
|
|
29145
|
-
|
|
29388
|
+
}
|
|
29389
|
+
processCalendarDateType() {
|
|
29390
|
+
const dateValue = this.getDateValue();
|
|
29391
|
+
const inRange = dateValue
|
|
29392
|
+
? isDateOrRangeInRange(dateValue, [this.min, this.max])
|
|
29393
|
+
: undefined;
|
|
29394
|
+
if (!this.isRange) {
|
|
29395
|
+
if (inRange && dateValue instanceof Date) {
|
|
29396
|
+
this.date = dateValue;
|
|
29397
|
+
}
|
|
29398
|
+
else {
|
|
29399
|
+
this.date = this.min;
|
|
29400
|
+
}
|
|
29401
|
+
}
|
|
29402
|
+
else {
|
|
29403
|
+
if (inRange &&
|
|
29404
|
+
Array.isArray(dateValue) &&
|
|
29405
|
+
dateValue[0] !== dateValue[1]) {
|
|
29406
|
+
this.startDate = dateValue[0];
|
|
29407
|
+
this.endDate = dateValue[1];
|
|
29408
|
+
}
|
|
29409
|
+
}
|
|
29410
|
+
}
|
|
29411
|
+
getDateValue() {
|
|
29412
|
+
const olSource = this.layer.dataSource.ol;
|
|
29413
|
+
const timeFromWms = olSource.getParams().TIME
|
|
29414
|
+
? parseDateString(String(olSource.getParams().TIME))
|
|
29415
|
+
: undefined;
|
|
29416
|
+
const dateValue = this.options.value && !timeFromWms
|
|
29417
|
+
? parseDateString(this.options.value)
|
|
29418
|
+
: undefined;
|
|
29419
|
+
return timeFromWms ?? dateValue;
|
|
29420
|
+
}
|
|
29421
|
+
checkCalendarValue() {
|
|
29422
|
+
if (this.type === TimeFilterType.YEAR) {
|
|
29423
|
+
this.processCalendarYearType();
|
|
29424
|
+
}
|
|
29425
|
+
else {
|
|
29426
|
+
this.processCalendarDateType();
|
|
29427
|
+
}
|
|
29428
|
+
}
|
|
29429
|
+
checkFilterValue() {
|
|
29430
|
+
if (this.style === TimeFilterStyle.SLIDER) {
|
|
29431
|
+
this.processSliderValue();
|
|
29432
|
+
}
|
|
29433
|
+
else if (this.style === TimeFilterStyle.CALENDAR) {
|
|
29434
|
+
this.checkCalendarValue();
|
|
29435
|
+
}
|
|
29146
29436
|
}
|
|
29147
29437
|
handleDateChange() {
|
|
29148
29438
|
this.setupDateOutput();
|
|
29149
29439
|
this.applyTypeChange();
|
|
29150
29440
|
// Only if is range, use 2 dates to make the range
|
|
29151
29441
|
if (this.isRange) {
|
|
29152
|
-
this.
|
|
29442
|
+
this.dateChange.emit([this.startDate, this.endDate]);
|
|
29153
29443
|
}
|
|
29154
29444
|
else {
|
|
29155
|
-
this.
|
|
29445
|
+
this.dateChange.emit(this.startDate);
|
|
29156
29446
|
}
|
|
29157
29447
|
}
|
|
29158
29448
|
handleYearChange() {
|
|
29159
29449
|
if (this.isRange) {
|
|
29160
29450
|
this.endListYears = [];
|
|
29161
|
-
for (let i = this.startYear + 1; i <= this.initEndYear; i++) {
|
|
29162
|
-
this.endListYears.push(i);
|
|
29163
|
-
}
|
|
29164
29451
|
this.startListYears = [];
|
|
29165
|
-
|
|
29166
|
-
this.startListYears.push(i);
|
|
29167
|
-
}
|
|
29452
|
+
this.setUpYearsInterval();
|
|
29168
29453
|
this.yearChange.emit([this.startYear, this.endYear]);
|
|
29169
29454
|
}
|
|
29170
29455
|
else {
|
|
29171
29456
|
this.yearChange.emit(this.year);
|
|
29172
29457
|
}
|
|
29173
29458
|
}
|
|
29174
|
-
|
|
29175
|
-
this.
|
|
29176
|
-
|
|
29177
|
-
handleListYearStartChange() {
|
|
29178
|
-
this.change.emit([this.startDate, this.endDate]);
|
|
29459
|
+
setUpYearsInterval() {
|
|
29460
|
+
this.endListYears = this.allYearsInterval.slice(this.startYear + 1 - this.initStartYear);
|
|
29461
|
+
this.startListYears = this.allYearsInterval.slice(0, this.endYear - this.initStartYear);
|
|
29179
29462
|
}
|
|
29180
29463
|
dateToNumber(date) {
|
|
29181
29464
|
let newDate;
|
|
@@ -29217,7 +29500,7 @@ class TimeFilterFormComponent {
|
|
|
29217
29500
|
else {
|
|
29218
29501
|
this.stopFilter();
|
|
29219
29502
|
this.storeCurrentFilterValue();
|
|
29220
|
-
this.
|
|
29503
|
+
this.dateChange.emit(undefined); // TODO: FIX THIS for ALL OTHER TYPES STYLES OR RANGE.
|
|
29221
29504
|
}
|
|
29222
29505
|
}
|
|
29223
29506
|
resetFilter() {
|
|
@@ -29230,7 +29513,7 @@ class TimeFilterFormComponent {
|
|
|
29230
29513
|
}
|
|
29231
29514
|
else {
|
|
29232
29515
|
this.setupDateOutput();
|
|
29233
|
-
this.
|
|
29516
|
+
this.dateChange.emit(undefined); // TODO: FIX THIS for ALL OTHER TYPES STYLES OR RANGE.
|
|
29234
29517
|
}
|
|
29235
29518
|
}
|
|
29236
29519
|
playFilter() {
|
|
@@ -29283,7 +29566,8 @@ class TimeFilterFormComponent {
|
|
|
29283
29566
|
this.playIcon = 'play_circle';
|
|
29284
29567
|
}
|
|
29285
29568
|
handleSliderDateChange(event) {
|
|
29286
|
-
|
|
29569
|
+
const date = new Date(event.value);
|
|
29570
|
+
this.date = new Date(date.getTime() - date.getTimezoneOffset() * 60000);
|
|
29287
29571
|
this.setSliderThumbLabel(this.handleSliderTooltip());
|
|
29288
29572
|
this.handleDateChange();
|
|
29289
29573
|
}
|
|
@@ -29304,36 +29588,22 @@ class TimeFilterFormComponent {
|
|
|
29304
29588
|
}
|
|
29305
29589
|
}
|
|
29306
29590
|
handleSliderTooltip() {
|
|
29307
|
-
|
|
29591
|
+
// 24h = 86400000 ms
|
|
29592
|
+
const oneDayMs = 86400000;
|
|
29593
|
+
const date = this.date === undefined ? this.min : this.date;
|
|
29308
29594
|
switch (this.type) {
|
|
29309
29595
|
case TimeFilterType.DATE:
|
|
29310
|
-
|
|
29311
|
-
this.date === undefined
|
|
29312
|
-
? this.min.toDateString()
|
|
29313
|
-
: this.date.toDateString();
|
|
29314
|
-
break;
|
|
29596
|
+
return this.step >= oneDayMs ? date.toDateString() : date.toUTCString();
|
|
29315
29597
|
case TimeFilterType.TIME:
|
|
29316
|
-
|
|
29317
|
-
this.date === undefined
|
|
29318
|
-
? this.min.toTimeString()
|
|
29319
|
-
: this.date.toTimeString();
|
|
29320
|
-
break;
|
|
29321
|
-
// datetime
|
|
29598
|
+
return date.toTimeString();
|
|
29322
29599
|
default:
|
|
29323
|
-
|
|
29324
|
-
this.date === undefined
|
|
29325
|
-
? this.min.toUTCString()
|
|
29326
|
-
: this.date.toUTCString();
|
|
29327
|
-
break;
|
|
29600
|
+
return this.date.toUTCString();
|
|
29328
29601
|
}
|
|
29329
|
-
return label;
|
|
29330
29602
|
}
|
|
29331
29603
|
setupDateOutput() {
|
|
29332
29604
|
if (this.style === TimeFilterStyle.SLIDER) {
|
|
29333
29605
|
this.startDate = new Date(this.date);
|
|
29334
|
-
this.startDate.setSeconds(-(this.step / 1000));
|
|
29335
29606
|
this.endDate = new Date(this.startDate);
|
|
29336
|
-
this.endDate.setSeconds(this.step / 1000);
|
|
29337
29607
|
}
|
|
29338
29608
|
else if (!this.isRange && !!this.date) {
|
|
29339
29609
|
this.endDate = new Date(this.date);
|
|
@@ -29355,13 +29625,15 @@ class TimeFilterFormComponent {
|
|
|
29355
29625
|
applyTypeChange() {
|
|
29356
29626
|
switch (this.type) {
|
|
29357
29627
|
case TimeFilterType.DATE:
|
|
29358
|
-
if (this.
|
|
29359
|
-
this.startDate.
|
|
29360
|
-
|
|
29361
|
-
|
|
29362
|
-
|
|
29363
|
-
|
|
29364
|
-
|
|
29628
|
+
if (this.style === TimeFilterStyle.CALENDAR) {
|
|
29629
|
+
if (this.startDate !== undefined || this.endDate !== undefined) {
|
|
29630
|
+
this.startDate.setHours(0);
|
|
29631
|
+
this.startDate.setMinutes(0);
|
|
29632
|
+
this.startDate.setSeconds(0);
|
|
29633
|
+
this.endDate.setHours(23);
|
|
29634
|
+
this.endDate.setMinutes(59);
|
|
29635
|
+
this.endDate.setSeconds(59);
|
|
29636
|
+
}
|
|
29365
29637
|
}
|
|
29366
29638
|
break;
|
|
29367
29639
|
case TimeFilterType.TIME:
|
|
@@ -29418,7 +29690,7 @@ class TimeFilterFormComponent {
|
|
|
29418
29690
|
return moment.duration(step).asMilliseconds();
|
|
29419
29691
|
}
|
|
29420
29692
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.5", ngImport: i0, type: TimeFilterFormComponent, deps: [{ token: i1$8.DateAdapter }], target: i0.ɵɵFactoryTarget.Component });
|
|
29421
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.5", type: TimeFilterFormComponent, isStandalone: true, selector: "igo-time-filter-form", inputs: { layer: "layer", options: "options", currentValue: "currentValue" }, outputs: {
|
|
29693
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.5", type: TimeFilterFormComponent, isStandalone: true, selector: "igo-time-filter-form", inputs: { layer: "layer", options: "options", currentValue: "currentValue" }, outputs: { dateChange: "dateChange", yearChange: "yearChange" }, viewQueries: [{ propertyName: "mySlider", first: true, predicate: MatSlider, descendants: true }], ngImport: i0, template: "<div *ngIf=\"style === 'calendar' && type !== 'year'\">\n <div *ngIf=\"!isRange\" class=\"igo-col igo-col-100 igo-col-100-m\">\n <mat-form-field>\n <mat-datetimepicker-toggle\n class=\"time-filter-mat-datetimepicker-toggle\"\n [for]=\"datetimePicker\"\n matSuffix\n ></mat-datetimepicker-toggle>\n <mat-datetimepicker\n #datetimePicker\n [type]=\"type\"\n [openOnFocus]=\"true\"\n [timeInterval]=\"5\"\n ></mat-datetimepicker>\n <input\n matInput\n autocomplete=\"false\"\n placeholder=\"{{ 'igo.geo.timeFilter.date' | translate }}\"\n [matDatetimepicker]=\"datetimePicker\"\n [(ngModel)]=\"date\"\n [min]=\"min\"\n [max]=\"max\"\n readonly=\"readonly\"\n (dateChange)=\"handleDateChange()\"\n />\n </mat-form-field>\n </div>\n\n <div *ngIf=\"isRange\">\n <div class=\"igo-col igo-col-100\">\n <mat-form-field>\n <mat-datetimepicker-toggle\n class=\"time-filter-mat-datetimepicker-toggle\"\n [for]=\"minDatetimePicker\"\n matSuffix\n ></mat-datetimepicker-toggle>\n <mat-datetimepicker\n #minDatetimePicker\n [type]=\"type\"\n [openOnFocus]=\"true\"\n [timeInterval]=\"5\"\n ></mat-datetimepicker>\n <input\n matInput\n autocomplete=\"false\"\n placeholder=\"{{ 'igo.geo.timeFilter.startDate' | translate }}\"\n [matDatetimepicker]=\"minDatetimePicker\"\n [(ngModel)]=\"startDate\"\n [min]=\"min\"\n [max]=\"getRangeMaxDate()\"\n readonly=\"readonly\"\n (input)=\"(startDate)\"\n (dateChange)=\"handleDateChange()\"\n />\n </mat-form-field>\n </div>\n\n <div class=\"igo-col igo-col-100\">\n <mat-form-field>\n <mat-datetimepicker-toggle\n class=\"time-filter-mat-datetimepicker-toggle\"\n [for]=\"maxDatetimePicker\"\n matSuffix\n ></mat-datetimepicker-toggle>\n <mat-datetimepicker\n #maxDatetimePicker\n [type]=\"type\"\n [openOnFocus]=\"true\"\n [timeInterval]=\"5\"\n ></mat-datetimepicker>\n <input\n matInput\n autocomplete=\"false\"\n placeholder=\"{{ 'igo.geo.timeFilter.endDate' | translate }}\"\n [matDatetimepicker]=\"maxDatetimePicker\"\n [(ngModel)]=\"endDate\"\n [min]=\"getRangeMinDate()\"\n [max]=\"max\"\n readonly=\"readonly\"\n (dateChange)=\"handleDateChange()\"\n />\n </mat-form-field>\n </div>\n </div>\n</div>\n\n<div *ngIf=\"style === 'calendar' && type === 'year'\">\n <div *ngIf=\"!isRange\" class=\"igo-col igo-col-100 igo-col-100-m\">\n <mat-form-field>\n <mat-select\n placeholder=\"{{ 'igo.geo.timeFilter.date' | translate }}\"\n [(ngModel)]=\"year\"\n (selectionChange)=\"handleYearChange()\"\n >\n <mat-option [value]=\"year\" *ngFor=\"let year of listYears\">{{\n year\n }}</mat-option>\n </mat-select>\n </mat-form-field>\n </div>\n\n <div *ngIf=\"isRange\">\n <div class=\"igo-col igo-col-100\">\n <mat-form-field>\n <mat-select\n placeholder=\"{{ 'igo.geo.timeFilter.startDate' | translate }}\"\n [(ngModel)]=\"startYear\"\n (selectionChange)=\"handleYearChange()\"\n >\n <mat-option\n [value]=\"startYear\"\n *ngFor=\"let startYear of startListYears\"\n >{{ startYear }}</mat-option\n >\n </mat-select>\n </mat-form-field>\n </div>\n\n <div class=\"igo-col igo-col-100\">\n <mat-form-field>\n <mat-select\n placeholder=\"{{ 'igo.geo.timeFilter.endDate' | translate }}\"\n [(ngModel)]=\"endYear\"\n (selectionChange)=\"handleYearChange()\"\n >\n <mat-option [value]=\"endYear\" *ngFor=\"let endYear of endListYears\">{{\n endYear\n }}</mat-option>\n </mat-select>\n </mat-form-field>\n </div>\n </div>\n</div>\n\n<br />\n<div\n *ngIf=\"!isRange && style === 'slider' && type === 'year'\"\n class=\"igo-col igo-col-100 igo-col-100-m mat-typography\"\n>\n <span>{{ startYear }}</span>\n <!-- TODO: The 'tickInterval' property no longer exists -->\n <mat-slider\n id=\"time-slider\"\n step=\"{{ step }}\"\n [min]=\"startYear\"\n [max]=\"endYear\"\n [color]=\"color\"\n thumbLabel\n [disabled]=\"!options.enabled || !layer.visible\"\n #ngSlider\n ><input\n matSliderThumb\n [value]=\"handleSliderValue()\"\n (input)=\"\n handleSliderYearChange({\n source: ngSliderThumb,\n parent: ngSlider,\n value: ngSliderThumb.value\n })\n \"\n #ngSliderThumb=\"matSliderThumb\"\n (change)=\"\n handleSliderYearChange({\n source: ngSliderThumb,\n parent: ngSlider,\n value: ngSliderThumb.value\n })\n \"\n />\n </mat-slider>\n <span>{{ endYear }}</span>\n <p *ngIf=\"options.enabled\" class=\"date-below\">{{ year }}</p>\n <div #actions class=\"igo-layer-actions-container\">\n <mat-slide-toggle\n (change)=\"toggleFilterState()\"\n tooltip-position=\"below\"\n matTooltipShowDelay=\"500\"\n [matTooltip]=\"'igo.geo.filter.toggleFilterState' | translate\"\n [color]=\"color\"\n [checked]=\"options.enabled\"\n [disabled]=\"!layer.visible\"\n >\n </mat-slide-toggle>\n <button\n [disabled]=\"!options.enabled || !layer.visible\"\n mat-icon-button\n color=\"primary\"\n (click)=\"playYear()\"\n >\n <mat-icon>{{ playIcon }}</mat-icon>\n </button>\n <button\n [disabled]=\"!options.enabled || !layer.visible\"\n mat-icon-button\n color=\"primary\"\n (click)=\"resetFilter()\"\n >\n <mat-icon>{{ resetIcon }}</mat-icon>\n </button>\n </div>\n</div>\n\n<div\n *ngIf=\"style === 'slider' && type !== 'year'\"\n class=\"igo-col igo-col-100 igo-col-100-m\"\n>\n <!-- TODO: The 'tickInterval' property no longer exists -->\n <mat-slider\n id=\"time-slider\"\n step=\"{{ step }}\"\n [min]=\"dateToNumber(min)\"\n [max]=\"dateToNumber(max)\"\n thumbLabel\n (selectionChange)=\"handleSliderDateChange($event)\"\n #ngSlider\n ><input\n matSliderThumb\n [value]=\"handleSliderValue()\"\n (input)=\"\n handleSliderDateChange({\n source: ngSliderThumb,\n parent: ngSlider,\n value: ngSliderThumb.value\n })\n \"\n #ngSliderThumb=\"matSliderThumb\"\n />\n </mat-slider>\n <p class=\"date-below\">{{ handleSliderTooltip() }}</p>\n <button mat-icon-button color=\"primary\" (click)=\"playFilter()\">\n <mat-icon>{{ playIcon }}</mat-icon>\n </button>\n</div>\n", styles: [":host .igo-layer-filters-container{padding-left:5px}:host #time-slider{width:70%}@media only screen and (orientation:portrait) and (max-width: 599px),only screen and (orientation:landscape) and (max-width: 959px){:host #time-slider{width:60%}}:host .date-below{margin:0}:host .igo-layer-actions-container{display:flex;align-items:center;justify-content:center}\n"], dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: MatFormFieldModule }, { kind: "component", type: i2$3.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i2$3.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "ngmodule", type: MatDatetimepickerModule }, { kind: "component", type: i3$6.MatDatetimepickerComponent, selector: "mat-datetimepicker", inputs: ["multiYearSelector", "twelvehour", "startView", "mode", "timeInterval", "ariaNextMonthLabel", "ariaPrevMonthLabel", "ariaNextYearLabel", "ariaPrevYearLabel", "preventSameDateTimeSelection", "panelClass", "startAt", "openOnFocus", "type", "touchUi", "disabled"], outputs: ["selectedChanged", "opened", "closed", "viewChanged"], exportAs: ["matDatetimepicker"] }, { kind: "component", type: i3$6.MatDatetimepickerToggleComponent, selector: "mat-datetimepicker-toggle", inputs: ["for", "disabled"], exportAs: ["matDatetimepickerToggle"] }, { kind: "directive", type: i3$6.MatDatetimepickerInputDirective, selector: "input[matDatetimepicker]", inputs: ["matDatetimepicker", "matDatepickerFilter", "value", "min", "max", "disabled"], outputs: ["dateChange", "dateInput"], exportAs: ["matDatepickerInput"] }, { kind: "ngmodule", type: MatMomentDateModule }, { kind: "ngmodule", type: MatNativeDatetimeModule }, { kind: "ngmodule", type: MatNativeDateModule }, { kind: "ngmodule", type: // For the DateAdapter provider
|
|
29422
29694
|
MatInputModule }, { kind: "directive", type: i4$2.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly", "disabledInteractive"], exportAs: ["matInput"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i2$4.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2$4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2$4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: MatSelectModule }, { kind: "component", type: i7.MatSelect, selector: "mat-select", inputs: ["aria-describedby", "panelClass", "disabled", "disableRipple", "tabIndex", "hideSingleSelectionIndicator", "placeholder", "required", "multiple", "disableOptionCentering", "compareWith", "value", "aria-label", "aria-labelledby", "errorStateMatcher", "typeaheadDebounceInterval", "sortComparator", "id", "panelWidth", "canSelectNullableOptions"], outputs: ["openedChange", "opened", "closed", "selectionChange", "valueChange"], exportAs: ["matSelect"] }, { kind: "component", type: i7.MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "ngmodule", type: MatOptionModule }, { kind: "ngmodule", type: MatSliderModule }, { kind: "component", type: i7$1.MatSlider, selector: "mat-slider", inputs: ["disabled", "discrete", "showTickMarks", "min", "color", "disableRipple", "max", "step", "displayWith"], exportAs: ["matSlider"] }, { kind: "directive", type: i7$1.MatSliderThumb, selector: "input[matSliderThumb]", inputs: ["value"], outputs: ["valueChange", "dragStart", "dragEnd"], exportAs: ["matSliderThumb"] }, { kind: "ngmodule", type: MatSlideToggleModule }, { kind: "component", type: i5$1.MatSlideToggle, selector: "mat-slide-toggle", inputs: ["name", "id", "labelPosition", "aria-label", "aria-labelledby", "aria-describedby", "required", "color", "disabled", "disableRipple", "tabIndex", "checked", "hideIcon", "disabledInteractive"], outputs: ["change", "toggleChange"], exportAs: ["matSlideToggle"] }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i3$1.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i2$2.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i4$1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: IgoLanguageModule }, { kind: "pipe", type: i5.TranslatePipe, name: "translate" }] });
|
|
29423
29695
|
}
|
|
29424
29696
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.5", ngImport: i0, type: TimeFilterFormComponent, decorators: [{
|
|
@@ -29448,7 +29720,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.5", ngImpor
|
|
|
29448
29720
|
type: Input
|
|
29449
29721
|
}], currentValue: [{
|
|
29450
29722
|
type: Input
|
|
29451
|
-
}],
|
|
29723
|
+
}], dateChange: [{
|
|
29452
29724
|
type: Output
|
|
29453
29725
|
}], yearChange: [{
|
|
29454
29726
|
type: Output
|
|
@@ -29483,9 +29755,17 @@ class TimeFilterItemComponent {
|
|
|
29483
29755
|
}
|
|
29484
29756
|
handleYearChange(year) {
|
|
29485
29757
|
this.timeFilterService.filterByYear(this.datasource, year);
|
|
29758
|
+
this.datasource.options.timeFilter.value = year.toString();
|
|
29486
29759
|
}
|
|
29487
29760
|
handleDateChange(date) {
|
|
29488
29761
|
this.timeFilterService.filterByDate(this.datasource, date);
|
|
29762
|
+
this.datasource.options.timeFilter.value =
|
|
29763
|
+
date instanceof Date
|
|
29764
|
+
? this.reformDate(date)
|
|
29765
|
+
: [this.reformDate(date[0]), this.reformDate(date[1])];
|
|
29766
|
+
}
|
|
29767
|
+
reformDate(date) {
|
|
29768
|
+
return date.toISOString().split('.')[0] + 'Z';
|
|
29489
29769
|
}
|
|
29490
29770
|
toggleLegend(collapsed) {
|
|
29491
29771
|
this.layer.legendCollapsed = collapsed;
|
|
@@ -29503,7 +29783,7 @@ class TimeFilterItemComponent {
|
|
|
29503
29783
|
this.filtersCollapsed = !this.filtersCollapsed;
|
|
29504
29784
|
}
|
|
29505
29785
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.5", ngImport: i0, type: TimeFilterItemComponent, deps: [{ token: TimeFilterService }], target: i0.ɵɵFactoryTarget.Component });
|
|
29506
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.5", type: TimeFilterItemComponent, isStandalone: true, selector: "igo-time-filter-item", inputs: { header: "header", layer: "layer" }, providers: [TimeFilterService], ngImport: i0, template: "<mat-list-item *ngIf=\"header\">\n <mat-icon\n class=\"igo-chevron\"\n matListItemIcon\n igoCollapse\n [target]=\"filters\"\n [collapsed]=\"filtersCollapsed\"\n (click)=\"toggleFiltersCollapsed()\"\n >\n expand_less\n </mat-icon>\n\n <span\n matListItemTitle\n (click)=\"toggleLegendOnClick()\"\n [ngStyle]=\"{ cursor: filtersCollapsed ? 'default' : 'pointer' }\"\n >{{ layer.title }}</span\n >\n\n <button\n *ngIf=\"header\"\n mat-icon-button\n matListItemMeta\n [color]=\"layer.visible ? 'primary' : 'default'\"\n collapsibleButton\n tooltip-position=\"below\"\n matTooltipShowDelay=\"500\"\n [matTooltip]=\"\n layer.visible\n ? ('igo.geo.layer.hideLayer' | translate)\n : ('igo.geo.layer.showLayer' | translate)\n \"\n (click)=\"layer.visible = !layer.visible\"\n >\n <mat-icon [ngClass]=\"{ disabled: (inResolutionRange$ | async) === false }\"\n >{{ layer.visible ? 'visibility' : 'visibility_off' }}\n </mat-icon>\n </button>\n</mat-list-item>\n\n<div #filters class=\"igo-datasource-filters-container\">\n <div #legend class=\"igo-layer-legend-container\">\n <igo-layer-legend *ngIf=\"showLegend$ | async\" [layer]=\"layer\">\n </igo-layer-legend>\n </div>\n <igo-time-filter-form\n [layer]=\"layer\"\n [options]=\"datasource.options.timeFilter\"\n [currentValue]=\"datasource.options.params.TIME\"\n (
|
|
29786
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.5", type: TimeFilterItemComponent, isStandalone: true, selector: "igo-time-filter-item", inputs: { header: "header", layer: "layer" }, providers: [TimeFilterService], ngImport: i0, template: "<mat-list-item *ngIf=\"header\">\n <mat-icon\n class=\"igo-chevron\"\n matListItemIcon\n igoCollapse\n [target]=\"filters\"\n [collapsed]=\"filtersCollapsed\"\n (click)=\"toggleFiltersCollapsed()\"\n >\n expand_less\n </mat-icon>\n\n <span\n matListItemTitle\n (click)=\"toggleLegendOnClick()\"\n [ngStyle]=\"{ cursor: filtersCollapsed ? 'default' : 'pointer' }\"\n >{{ layer.title }}</span\n >\n\n <button\n *ngIf=\"header\"\n mat-icon-button\n matListItemMeta\n [color]=\"layer.visible ? 'primary' : 'default'\"\n collapsibleButton\n tooltip-position=\"below\"\n matTooltipShowDelay=\"500\"\n [matTooltip]=\"\n layer.visible\n ? ('igo.geo.layer.hideLayer' | translate)\n : ('igo.geo.layer.showLayer' | translate)\n \"\n (click)=\"layer.visible = !layer.visible\"\n >\n <mat-icon [ngClass]=\"{ disabled: (inResolutionRange$ | async) === false }\"\n >{{ layer.visible ? 'visibility' : 'visibility_off' }}\n </mat-icon>\n </button>\n</mat-list-item>\n\n<div #filters class=\"igo-datasource-filters-container\">\n <div #legend class=\"igo-layer-legend-container\">\n <igo-layer-legend *ngIf=\"showLegend$ | async\" [layer]=\"layer\">\n </igo-layer-legend>\n </div>\n <igo-time-filter-form\n [layer]=\"layer\"\n [options]=\"datasource.options.timeFilter\"\n [currentValue]=\"datasource.options.params.TIME\"\n (dateChange)=\"handleDateChange($event)\"\n (yearChange)=\"handleYearChange($event)\"\n >\n </igo-time-filter-form>\n</div>\n", styles: [":host{overflow:hidden}:host .igo-datasource-filters-container{text-align:center;width:100%;display:inline-block;padding-top:5px}:host .igo-layer-legend-container{padding-left:1.125em;width:calc(100% - 18px)}\n"], dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: MatListModule }, { kind: "component", type: i1$3.MatListItem, selector: "mat-list-item, a[mat-list-item], button[mat-list-item]", inputs: ["activated"], exportAs: ["matListItem"] }, { kind: "directive", type: i1$3.MatListItemIcon, selector: "[matListItemIcon]" }, { kind: "directive", type: i1$3.MatListItemTitle, selector: "[matListItemTitle]" }, { kind: "directive", type: i1$3.MatListItemMeta, selector: "[matListItemMeta]" }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i4$1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: CollapseDirective, selector: "[igoCollapse]", inputs: ["target", "collapsed"], outputs: ["toggle"] }, { kind: "directive", type: NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i2$2.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i3$1.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: LayerLegendComponent, selector: "igo-layer-legend", inputs: ["updateLegendOnResolutionChange", "layer"] }, { kind: "component", type: TimeFilterFormComponent, selector: "igo-time-filter-form", inputs: ["layer", "options", "currentValue"], outputs: ["dateChange", "yearChange"] }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "ngmodule", type: IgoLanguageModule }, { kind: "pipe", type: i5.TranslatePipe, name: "translate" }] });
|
|
29507
29787
|
}
|
|
29508
29788
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.5", ngImport: i0, type: TimeFilterItemComponent, decorators: [{
|
|
29509
29789
|
type: Component,
|
|
@@ -29520,7 +29800,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.5", ngImpor
|
|
|
29520
29800
|
TimeFilterFormComponent,
|
|
29521
29801
|
AsyncPipe,
|
|
29522
29802
|
IgoLanguageModule
|
|
29523
|
-
], providers: [TimeFilterService], template: "<mat-list-item *ngIf=\"header\">\n <mat-icon\n class=\"igo-chevron\"\n matListItemIcon\n igoCollapse\n [target]=\"filters\"\n [collapsed]=\"filtersCollapsed\"\n (click)=\"toggleFiltersCollapsed()\"\n >\n expand_less\n </mat-icon>\n\n <span\n matListItemTitle\n (click)=\"toggleLegendOnClick()\"\n [ngStyle]=\"{ cursor: filtersCollapsed ? 'default' : 'pointer' }\"\n >{{ layer.title }}</span\n >\n\n <button\n *ngIf=\"header\"\n mat-icon-button\n matListItemMeta\n [color]=\"layer.visible ? 'primary' : 'default'\"\n collapsibleButton\n tooltip-position=\"below\"\n matTooltipShowDelay=\"500\"\n [matTooltip]=\"\n layer.visible\n ? ('igo.geo.layer.hideLayer' | translate)\n : ('igo.geo.layer.showLayer' | translate)\n \"\n (click)=\"layer.visible = !layer.visible\"\n >\n <mat-icon [ngClass]=\"{ disabled: (inResolutionRange$ | async) === false }\"\n >{{ layer.visible ? 'visibility' : 'visibility_off' }}\n </mat-icon>\n </button>\n</mat-list-item>\n\n<div #filters class=\"igo-datasource-filters-container\">\n <div #legend class=\"igo-layer-legend-container\">\n <igo-layer-legend *ngIf=\"showLegend$ | async\" [layer]=\"layer\">\n </igo-layer-legend>\n </div>\n <igo-time-filter-form\n [layer]=\"layer\"\n [options]=\"datasource.options.timeFilter\"\n [currentValue]=\"datasource.options.params.TIME\"\n (
|
|
29803
|
+
], providers: [TimeFilterService], template: "<mat-list-item *ngIf=\"header\">\n <mat-icon\n class=\"igo-chevron\"\n matListItemIcon\n igoCollapse\n [target]=\"filters\"\n [collapsed]=\"filtersCollapsed\"\n (click)=\"toggleFiltersCollapsed()\"\n >\n expand_less\n </mat-icon>\n\n <span\n matListItemTitle\n (click)=\"toggleLegendOnClick()\"\n [ngStyle]=\"{ cursor: filtersCollapsed ? 'default' : 'pointer' }\"\n >{{ layer.title }}</span\n >\n\n <button\n *ngIf=\"header\"\n mat-icon-button\n matListItemMeta\n [color]=\"layer.visible ? 'primary' : 'default'\"\n collapsibleButton\n tooltip-position=\"below\"\n matTooltipShowDelay=\"500\"\n [matTooltip]=\"\n layer.visible\n ? ('igo.geo.layer.hideLayer' | translate)\n : ('igo.geo.layer.showLayer' | translate)\n \"\n (click)=\"layer.visible = !layer.visible\"\n >\n <mat-icon [ngClass]=\"{ disabled: (inResolutionRange$ | async) === false }\"\n >{{ layer.visible ? 'visibility' : 'visibility_off' }}\n </mat-icon>\n </button>\n</mat-list-item>\n\n<div #filters class=\"igo-datasource-filters-container\">\n <div #legend class=\"igo-layer-legend-container\">\n <igo-layer-legend *ngIf=\"showLegend$ | async\" [layer]=\"layer\">\n </igo-layer-legend>\n </div>\n <igo-time-filter-form\n [layer]=\"layer\"\n [options]=\"datasource.options.timeFilter\"\n [currentValue]=\"datasource.options.params.TIME\"\n (dateChange)=\"handleDateChange($event)\"\n (yearChange)=\"handleYearChange($event)\"\n >\n </igo-time-filter-form>\n</div>\n", styles: [":host{overflow:hidden}:host .igo-datasource-filters-container{text-align:center;width:100%;display:inline-block;padding-top:5px}:host .igo-layer-legend-container{padding-left:1.125em;width:calc(100% - 18px)}\n"] }]
|
|
29524
29804
|
}], ctorParameters: () => [{ type: TimeFilterService }], propDecorators: { header: [{
|
|
29525
29805
|
type: Input
|
|
29526
29806
|
}], layer: [{
|
|
@@ -37294,7 +37574,7 @@ class EditionWorkspaceService {
|
|
|
37294
37574
|
refreshMap(layer, map) {
|
|
37295
37575
|
const wfsOlLayer = layer.dataSource.ol;
|
|
37296
37576
|
const loader = (extent, resolution, proj, success, failure) => {
|
|
37297
|
-
layer.customWFSLoader(layer.ol.getSource(), layer.options.sourceOptions,
|
|
37577
|
+
layer.customWFSLoader(layer.ol.getSource(), layer.options.sourceOptions, extent, resolution, proj, success, failure, true);
|
|
37298
37578
|
};
|
|
37299
37579
|
wfsOlLayer.setLoader(loader);
|
|
37300
37580
|
wfsOlLayer.refresh();
|
|
@@ -42633,5 +42913,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.5", ngImpor
|
|
|
42633
42913
|
* Generated bundle index. Do not edit.
|
|
42634
42914
|
*/
|
|
42635
42915
|
|
|
42636
|
-
export { AddCatalogDialogComponent, ArcGISRestCapabilitiesLayerTypes, ArcGISRestDataSource, BaseLayersSwitcherComponent, CATALOG_DIRECTIVES, CATALOG_LIBRARY_DIRECTIVES, CadastreSearchSource, CapabilitiesService, CartoDataSource, Catalog, CatalogBrowserComponent, CatalogItemType, CatalogLibaryComponent, CatalogService, ClusterDataSource, ConfigFileToGeoDBService, ConfirmationPopupComponent, CoordinatesReverseSearchSource, CoordinatesReverseSearchSourceFactory, CoordinatesSearchResultFormatter, CoordinatesUnit, CsvSeparator, DDtoDMS, DataService, DataSource, DataSourceService, DirectionRelativePositionType, DirectionSourceKind, DirectionsButtonsComponent, DirectionsComponent, DirectionsFormat, DirectionsInputsComponent, DirectionsResultsComponent, DirectionsService, DirectionsSource, DirectionsType, DownloadButtonComponent, DownloadService, DrawComponent, DrawControl, DrawIconService, DrawStyleService, DropGeoFileDirective, EditionWorkspace, EditionWorkspaceService, EsriStyleGenerator, ExportButtonComponent, ExportError, ExportFormat, ExportFormatLegacy, ExportInvalidFileError, ExportNothingToExportError, ExportService, FEATURE, FEATURE_DETAILS_DIRECTIVES, FEATURE_DIRECTIVES, FILTER_DIRECTIVES, FeatureDataSource, FeatureDetailsComponent, FeatureDetailsDirective, FeatureFormComponent, FeatureMotion, FeatureStore, FeatureStoreInMapExtentStrategy, FeatureStoreInMapResolutionStrategy, FeatureStoreLoadingLayerStrategy, FeatureStoreLoadingStrategy, FeatureStoreSearchIndexStrategy, FeatureStoreSelectionStrategy, FeatureWorkspace, FeatureWorkspaceService, FilterableDataSourcePipe, GEOMETRY_FORM_FIELD_DIRECTIVES, GeoDBService, GeoNetworkService, GeoPropertiesStrategy, GeolocateButtonComponent, GeolocationOverlayType, GeometryFormFieldComponent, GeometryFormFieldInputComponent, GeometrySliceError, GeometrySliceLineStringError, GeometrySliceMultiPolygonError, GeometrySliceTooManyIntersectionError, GeometryType, GoogleLinks, HomeExtentButtonComponent, HoverFeatureDirective, IChercheReverseSearchSource, IChercheSearchResultFormatter, IChercheSearchSource, ILayerSearchResultFormatter, ILayerSearchSource, IMPORT_EXPORT_DIRECTIVES, IgoCatalogBrowserModule, IgoCatalogLibraryModule, IgoCatalogModule, IgoConfirmationPopupModule, IgoDirectionsModule, IgoDownloadModule, IgoDrawModule, IgoDrawingToolModule, IgoFeatureDetailsModule, IgoFeatureFormModule, IgoFeatureModule, IgoFilterModule, IgoGeoModule, IgoGeoWorkspaceModule, IgoGeometryFormFieldModule, IgoGeometryModule, IgoHttpParameterCodec, IgoImportExportModule, IgoLayerModule, IgoMap, IgoMapModule, IgoMeasureModule, IgoMeasurerModule, IgoMetadataModule, IgoOgcFilterModule, IgoPrintModule, IgoQueryModule, IgoSearchBarModule, IgoSearchModule, IgoSearchResultsModule, IgoSearchSelectorModule, IgoSearchSettingsModule, IgoStyleListModule, IgoStyleModule, IgoToastModule, IgoWktModule, IgoWorkspaceSelectorModule, IgoWorkspaceUpdatorModule, ImageArcGISRestDataSource, ImageLayer, ImageWatcher, ImportError, ImportExportComponent, ImportInvalidFileError, ImportNothingToImportError, ImportOgreServerError, ImportSRSError, ImportService, ImportSizeError, ImportUnreadableFileError, InfoSectionComponent, InsertSourceInsertDBEnum, LAYER, LAYER_DIRECTIVES, LabelType, LaneType, Layer, LayerBase, LayerController, LayerDBService, LayerGroup, LayerGroupBase, LayerGroupComponent, LayerItemComponent, LayerLegendComponent, LayerLegendItemComponent, LayerLegendListBindingDirective, LayerLegendListComponent, LayerListComponent, LayerListControlsEnum, LayerListToolComponent, LayerListToolService, LayerSearchComponent, LayerService, LayerUnavailableComponent, LayerUnavailableListComponent, LayerViewerBottomActionsComponent, LayerViewerComponent, LayerVisibilityButtonComponent, Linked, LinkedProperties, MAP_DIRECTIVES, MEASURER_DIRECTIVES, MEASURE_UNIT_AUTO, METADATA_DIRECTIVES, MVTDataSource, ManeuverModifier, ManeuverType, MapBase, MapBrowserComponent, MapCenterComponent, MapController, MapGeolocationController, MapOfflineDirective, MapService, MapViewAction, MapViewController, MeasureAreaUnit, MeasureAreaUnitAbbreviation, MeasureFormatPipe, MeasureLengthUnit, MeasureLengthUnitAbbreviation, MeasureType, MeasurerComponent, MenuButtonComponent, MetadataAbstractComponent, MetadataButtonComponent, MetadataService, MiniBaseMapComponent, ModifyControl, NominatimSearchSource, OGCFilterService, OSMDataSource, OfflineButtonComponent, OgcFilterButtonComponent, OgcFilterComponent, OgcFilterFormComponent, OgcFilterOperator, OgcFilterOperatorType, OgcFilterSelectionComponent, OgcFilterTimeComponent, OgcFilterTimeSliderComponent, OgcFilterWidget, OgcFilterWriter, OgcFilterableFormComponent, OgcFilterableItemComponent, OgcFilterableListBindingDirective, OgcFilterableListComponent, OlDragSelectInteraction, OptionsApiService, OptionsService, OsmLinks, OsrmDirectionsSource, Overlay, OverlayAction, PointerPositionDirective, PrintComponent, PrintFormComponent, PrintLegendPosition, PrintOrientation, PrintOutputFormat, PrintPaperFormat, PrintResolution, PrintSaveImageFormat, PrintService, ProjectionService, PropertyTypeDetectorService, ProposalType, QueryDirective, QueryFormat, QueryFormatMimeType, QueryHtmlTarget, QuerySearchSource, QueryService, ResponseType, RotationButtonComponent, RoutesFeatureStore, SEARCH_DIRECTIVES, SEARCH_RESULTS_DIRECTIVES, SEARCH_TYPES, STYLELIST_OPTIONS, SearchBarComponent, SearchPointerSummaryDirective, SearchResultAddButtonComponent, SearchResultMode, SearchResultsComponent, SearchSelectorComponent, SearchService, SearchSettingsComponent, SearchSource, SearchSourceKind, SearchSourceService, SliceControl, SourceDirectionsType, SpatialFilterItemComponent, SpatialFilterItemType, SpatialFilterListComponent, SpatialFilterQueryType, SpatialFilterService, SpatialFilterType, SpatialFilterTypeComponent, StepsFeatureStore, StopsFeatureStore, StopsStore, StoredQueriesReverseSearchSource, StoredQueriesSearchSource, StyleListService, StyleModalDrawingComponent, StyleModalLayerButtonComponent, StyleModalLayerComponent, StyleService, SwipeControlComponent, TileArcGISRestDataSource, TileDebugDataSource, TileLayer, TileWatcher, TimeFilterButtonComponent, TimeFilterFormComponent, TimeFilterItemComponent, TimeFilterListBindingDirective, TimeFilterListComponent, TimeFilterService, TimeFilterStyle, TimeFilterType, ToastComponent, TooltipType, TrackFeatureButtonComponent, TypeCapabilities, TypeCatalog, VectorLayer, VectorTileLayer, VectorWatcher, WFSDataSource, WFSService, WMSDataSource, WMTSDataSource, WakeLockButtonComponent, WebSocketDataSource, WfsWorkspace, WfsWorkspaceService, WktService, WorkspaceSearchSource, WorkspaceSelectorDirective, WorkspaceUpdatorDirective, XYZDataSource, ZoomButtonComponent, addLayerAndFeaturesStyledToMap, addLayerAndFeaturesToMap, addLinearRingToOlPolygon, addOrRemoveLayer, addRouteToRoutesFeatureStore, addStopToStopsFeatureStore, addStopToStore, buildUrl, cadastreSearchSourceFactory, checkWfsParams, clearOlGeometryMidpoints, computeBestAreaUnit, computeBestLengthUnit, computeLayerTitleFromFile, computeMVTOptionsOnHover, computeOlFeatureExtent, computeOlFeaturesDiff, computeOlFeaturesExtent, computeProjectionsConstraints, computeRelativePosition, computeStopsPosition, computeTermSimilarity, convertDDToDMS, createDefaultTileGrid, createDrawHoleInteractionStyle, createDrawInteractionStyle, createFilterInMapExtentOrResolutionStrategy, createInteractionStyle, createMeasureInteractionStyle, createMeasureLayerStyle, createOlTooltipAtPoint, createOlTooltipDrawAtPoint, createOverlayDefaultStyle, createOverlayLayer, createOverlayLayerStyle, createOverlayMarkerStyle, createTableTemplate, ctrlKeyDown, defaultCoordinatesSearchResultFormatterFactory, defaultEpsg, defaultFieldNameGeometry, defaultIChercheSearchResultFormatterFactory, defaultMaxFeatures, defaultWfsVersion, detectFileEPSG, directionsStyle, entitiesToRowData, exportToCSV, featureFromOl, featureRandomStyle, featureRandomStyleFunction, featureToOl, featureToSearchResult, featuresAreOutOfView, featuresAreTooDeepInView, findDiff, findLayerByLinkId, formatDistance, formatDuration, formatMeasure, formatScale, formatStep, formatWFSQueryString, generateArcgisRestIdFromSourceOptions, generateFeatureIdFromSourceOptions, generateId, generateIdFromSourceOptions, generateWMSIdFromSourceOptions, generateWMTSIdFromSourceOptions, generateWfsIdFromSourceOptions, generateXYZIdFromSourceOptions, getAllChildLayersByDeletion, getAllChildLayersByProperty, getCommonVectorSelectedStyle, getCommonVectorStyle, getFileExtension, getFormatFromOptions, getGeoServiceAction, getLayersByDeletion, getLayersLegends, getLinkedLayersOptions, getMousePositionFromOlGeometryEvent, getOlTooltipAtCenter, getOlTooltipsAtMidpoints, getResolutionFromScale, getRootParentByDeletion, getRootParentByProperty, getRowsInMapExtent, getScaleFromResolution, getSelectedOnly, getTooltipsOfOlGeometry, gmlRegex, handleFileExportError, handleFileExportSuccess, handleFileImportError, handleFileImportSuccess, handleInvalidFileImportError, handleLayerPropertyChange, handleNothingToExportError, handleNothingToImportError, handleOgreServerImportError, handleSRSImportError, handleSizeFileImportError, handleUnreadbleFileImportError, hideOlFeature, hoverFeatureMarkerStyle, ichercheReverseSearchSourceFactory, ichercheSearchSourceFactory, ilayerSearchResultFormatterFactory, ilayerSearchSourceFactory, initRoutesFeatureStore, initStepsFeatureStore, initStopsFeatureStore, isBaseLayer, isBaseLayerLinked, isCsvExport, isLayerGroup, isLayerGroupOptions, isLayerItem, isLayerItemOptions, isLayerLinked, isLayerLinkedOptions, isLayerLinkedTogether, isLinkMaster, isSaveableLayer, jsonRegex, layerFeatureIsQueryable, layerIsQueryable, lonLatConversion, mapExtentStrategyActiveToolTip, measureOlGeometry, measureOlGeometryArea, measureOlGeometryLength, metersToFeet, metersToKilometers, metersToMiles, metersToUnit, moveToOlFeatures, mtmZoneFromLonLat, noElementSelected, nominatimSearchSourceFactory, ogcFilterWidgetFactory, olLayerFeatureIsQueryable, olLayerIsQueryable, olStyleToBasicIgoStyle, optionsApiFactory, osrmDirectionsSourcesFactory, pointerPositionSummaryMarkerStyle, provideCadastreSearchSource, provideCoordinatesReverseSearchSource, provideDefaultCoordinatesSearchResultFormatter, provideDefaultIChercheSearchResultFormatter, provideDirection, provideIChercheReverseSearchSource, provideIChercheSearchSource, provideILayerSearchResultFormatter, provideILayerSearchSource, provideNominatimSearchSource, provideOffline, provideOgcFilterWidget, provideOptionsApi, provideOsrmDirectionsSource, provideQuerySearchSource, provideSearch, provideSearchSourceService, provideStoredQueriesReverseSearchSource, provideStoredQueriesSearchSource, provideStyleListLoader, provideStyleListOptions, provideWorkspaceSearchSource, querySearchSourceFactory, removeStopFromStore, renderFeatureFromOl, roundCoordTo, roundCoordToString, scaleExtent, searchSourceServiceFactory, setRowsInMapExtent, setSelectedOnly, sliceOlGeometry, sliceOlPolygon, sortLayersByZindex, sourceCanReverseSearch, sourceCanReverseSearchAsSummary, sourceCanSearch, squareMetersToAcres, squareMetersToHectares, squareMetersToSquareFeet, squareMetersToSquareKilometers, squareMetersToSquareMiles, squareMetersToUnit, standardizeUrl, storedqueriesReverseSearchSourceFactory, storedqueriesSearchSourceFactory, stringToLonLat, translateManeuverBearing, translateManeuverModifier, tryAddLoadingStrategy, tryAddSelectionStrategy, tryBindStoreLayer, updateOlGeometryCenter, updateOlGeometryMidpoints, updateOlTooltipAtCenter, updateOlTooltipDrawAtCenter, updateOlTooltipsAtMidpoints, updateOlTooltipsDrawAtMidpoints, updateStoreSorting, utmZoneFromLonLat, viewStatesAreEqual, withCadastreSource, withCoordinatesReverseSource, withIChercheReverseSource, withIChercheSource, withILayerSource, withNominatimSource, withOsrmSource, withStoredQueriesReverseSource, withStoredQueriesSource, withWorkspaceSource, workspaceSearchSourceFactory, zoneMtm, zoneUtm };
|
|
42916
|
+
export { AddCatalogDialogComponent, ArcGISRestCapabilitiesLayerTypes, ArcGISRestDataSource, BaseLayersSwitcherComponent, CATALOG_DIRECTIVES, CATALOG_LIBRARY_DIRECTIVES, CadastreSearchSource, CapabilitiesService, CartoDataSource, Catalog, CatalogBrowserComponent, CatalogItemType, CatalogLibaryComponent, CatalogService, ClusterDataSource, ConfigFileToGeoDBService, ConfirmationPopupComponent, CoordinatesReverseSearchSource, CoordinatesReverseSearchSourceFactory, CoordinatesSearchResultFormatter, CoordinatesUnit, CsvSeparator, DDtoDMS, DataService, DataSource, DataSourceService, DirectionRelativePositionType, DirectionSourceKind, DirectionsButtonsComponent, DirectionsComponent, DirectionsFormat, DirectionsInputsComponent, DirectionsResultsComponent, DirectionsService, DirectionsSource, DirectionsType, DownloadButtonComponent, DownloadService, DrawComponent, DrawControl, DrawIconService, DrawStyleService, DropGeoFileDirective, EditionWorkspace, EditionWorkspaceService, EsriStyleGenerator, ExportButtonComponent, ExportError, ExportFormat, ExportFormatLegacy, ExportInvalidFileError, ExportNothingToExportError, ExportService, FEATURE, FEATURE_DETAILS_DIRECTIVES, FEATURE_DIRECTIVES, FILTER_DIRECTIVES, FeatureDataSource, FeatureDetailsComponent, FeatureDetailsDirective, FeatureFormComponent, FeatureMotion, FeatureStore, FeatureStoreInMapExtentStrategy, FeatureStoreInMapResolutionStrategy, FeatureStoreLoadingLayerStrategy, FeatureStoreLoadingStrategy, FeatureStoreSearchIndexStrategy, FeatureStoreSelectionStrategy, FeatureWorkspace, FeatureWorkspaceService, FilterableDataSourcePipe, GEOMETRY_FORM_FIELD_DIRECTIVES, GeoDBService, GeoNetworkService, GeoPropertiesStrategy, GeolocateButtonComponent, GeolocationOverlayType, GeometryFormFieldComponent, GeometryFormFieldInputComponent, GeometrySliceError, GeometrySliceLineStringError, GeometrySliceMultiPolygonError, GeometrySliceTooManyIntersectionError, GeometryType, GoogleLinks, HomeExtentButtonComponent, HoverFeatureDirective, IChercheReverseSearchSource, IChercheSearchResultFormatter, IChercheSearchSource, ILayerSearchResultFormatter, ILayerSearchSource, IMPORT_EXPORT_DIRECTIVES, IgoCatalogBrowserModule, IgoCatalogLibraryModule, IgoCatalogModule, IgoConfirmationPopupModule, IgoDirectionsModule, IgoDownloadModule, IgoDrawModule, IgoDrawingToolModule, IgoFeatureDetailsModule, IgoFeatureFormModule, IgoFeatureModule, IgoFilterModule, IgoGeoModule, IgoGeoWorkspaceModule, IgoGeometryFormFieldModule, IgoGeometryModule, IgoHttpParameterCodec, IgoImportExportModule, IgoLayerModule, IgoMap, IgoMapModule, IgoMeasureModule, IgoMeasurerModule, IgoMetadataModule, IgoOgcFilterModule, IgoPrintModule, IgoQueryModule, IgoSearchBarModule, IgoSearchModule, IgoSearchResultsModule, IgoSearchSelectorModule, IgoSearchSettingsModule, IgoStyleListModule, IgoStyleModule, IgoToastModule, IgoWktModule, IgoWorkspaceSelectorModule, IgoWorkspaceUpdatorModule, ImageArcGISRestDataSource, ImageLayer, ImageWatcher, ImportError, ImportExportComponent, ImportInvalidFileError, ImportNothingToImportError, ImportOgreServerError, ImportSRSError, ImportService, ImportSizeError, ImportUnreadableFileError, InfoSectionComponent, InsertSourceInsertDBEnum, LAYER, LAYER_DIRECTIVES, LabelType, LaneType, Layer, LayerBase, LayerController, LayerDBService, LayerGroup, LayerGroupBase, LayerGroupComponent, LayerItemComponent, LayerLegendComponent, LayerLegendItemComponent, LayerLegendListBindingDirective, LayerLegendListComponent, LayerListComponent, LayerListControlsEnum, LayerListToolComponent, LayerListToolService, LayerSearchComponent, LayerService, LayerUnavailableComponent, LayerUnavailableListComponent, LayerViewerBottomActionsComponent, LayerViewerComponent, LayerVisibilityButtonComponent, Linked, LinkedProperties, MAP_DIRECTIVES, MEASURER_DIRECTIVES, MEASURE_UNIT_AUTO, METADATA_DIRECTIVES, MVTDataSource, ManeuverModifier, ManeuverType, MapBase, MapBrowserComponent, MapCenterComponent, MapController, MapGeolocationController, MapOfflineDirective, MapService, MapViewAction, MapViewController, MeasureAreaUnit, MeasureAreaUnitAbbreviation, MeasureFormatPipe, MeasureLengthUnit, MeasureLengthUnitAbbreviation, MeasureType, MeasurerComponent, MenuButtonComponent, MetadataAbstractComponent, MetadataButtonComponent, MetadataService, MiniBaseMapComponent, ModifyControl, NominatimSearchSource, OGCFilterService, OSMDataSource, OfflineButtonComponent, OgcFilterButtonComponent, OgcFilterComponent, OgcFilterFormComponent, OgcFilterOperator, OgcFilterOperatorType, OgcFilterSelectionComponent, OgcFilterTimeComponent, OgcFilterTimeSliderComponent, OgcFilterWidget, OgcFilterWriter, OgcFilterableFormComponent, OgcFilterableItemComponent, OgcFilterableListBindingDirective, OgcFilterableListComponent, OgcSelectorFields, OlDragSelectInteraction, OptionsApiService, OptionsService, OsmLinks, OsrmDirectionsSource, Overlay, OverlayAction, PointerPositionDirective, PrintComponent, PrintFormComponent, PrintLegendPosition, PrintOrientation, PrintOutputFormat, PrintPaperFormat, PrintResolution, PrintSaveImageFormat, PrintService, ProjectionService, PropertyTypeDetectorService, ProposalType, QueryDirective, QueryFormat, QueryFormatMimeType, QueryHtmlTarget, QuerySearchSource, QueryService, ResponseType, RotationButtonComponent, RoutesFeatureStore, SEARCH_DIRECTIVES, SEARCH_RESULTS_DIRECTIVES, SEARCH_TYPES, STYLELIST_OPTIONS, SearchBarComponent, SearchPointerSummaryDirective, SearchResultAddButtonComponent, SearchResultMode, SearchResultsComponent, SearchSelectorComponent, SearchService, SearchSettingsComponent, SearchSource, SearchSourceKind, SearchSourceService, SliceControl, SourceDirectionsType, SpatialFilterItemComponent, SpatialFilterItemType, SpatialFilterListComponent, SpatialFilterQueryType, SpatialFilterService, SpatialFilterType, SpatialFilterTypeComponent, StepsFeatureStore, StopsFeatureStore, StopsStore, StoredQueriesReverseSearchSource, StoredQueriesSearchSource, StyleListService, StyleModalDrawingComponent, StyleModalLayerButtonComponent, StyleModalLayerComponent, StyleService, SwipeControlComponent, TileArcGISRestDataSource, TileDebugDataSource, TileLayer, TileWatcher, TimeFilterButtonComponent, TimeFilterFormComponent, TimeFilterItemComponent, TimeFilterListBindingDirective, TimeFilterListComponent, TimeFilterService, TimeFilterStyle, TimeFilterType, ToastComponent, TooltipType, TrackFeatureButtonComponent, TypeCapabilities, TypeCatalog, VectorLayer, VectorTileLayer, VectorWatcher, WFSDataSource, WFSService, WMSDataSource, WMTSDataSource, WakeLockButtonComponent, WebSocketDataSource, WfsWorkspace, WfsWorkspaceService, WktService, WorkspaceSearchSource, WorkspaceSelectorDirective, WorkspaceUpdatorDirective, XYZDataSource, ZoomButtonComponent, addLayerAndFeaturesStyledToMap, addLayerAndFeaturesToMap, addLinearRingToOlPolygon, addOrRemoveLayer, addRouteToRoutesFeatureStore, addStopToStopsFeatureStore, addStopToStore, buildUrl, cadastreSearchSourceFactory, checkWfsParams, clearOlGeometryMidpoints, computeBestAreaUnit, computeBestLengthUnit, computeLayerTitleFromFile, computeMVTOptionsOnHover, computeOlFeatureExtent, computeOlFeaturesDiff, computeOlFeaturesExtent, computeProjectionsConstraints, computeRelativePosition, computeStopsPosition, computeTermSimilarity, convertDDToDMS, createDefaultTileGrid, createDrawHoleInteractionStyle, createDrawInteractionStyle, createFilterInMapExtentOrResolutionStrategy, createInteractionStyle, createMeasureInteractionStyle, createMeasureLayerStyle, createOlTooltipAtPoint, createOlTooltipDrawAtPoint, createOverlayDefaultStyle, createOverlayLayer, createOverlayLayerStyle, createOverlayMarkerStyle, createTableTemplate, ctrlKeyDown, defaultCoordinatesSearchResultFormatterFactory, defaultEpsg, defaultFieldNameGeometry, defaultIChercheSearchResultFormatterFactory, defaultMaxFeatures, defaultWfsVersion, detectFileEPSG, directionsStyle, entitiesToRowData, exportToCSV, featureFromOl, featureRandomStyle, featureRandomStyleFunction, featureToOl, featureToSearchResult, featuresAreOutOfView, featuresAreTooDeepInView, findDiff, findLayerByLinkId, formatDistance, formatDuration, formatMeasure, formatScale, formatStep, formatWFSQueryString, generateArcgisRestIdFromSourceOptions, generateFeatureIdFromSourceOptions, generateId, generateIdFromSourceOptions, generateWMSIdFromSourceOptions, generateWMTSIdFromSourceOptions, generateWfsIdFromSourceOptions, generateXYZIdFromSourceOptions, getAllChildLayersByDeletion, getAllChildLayersByProperty, getCommonVectorSelectedStyle, getCommonVectorStyle, getFileExtension, getFormatFromOptions, getGeoServiceAction, getLayersByDeletion, getLayersLegends, getLinkedLayersOptions, getMousePositionFromOlGeometryEvent, getOlTooltipAtCenter, getOlTooltipsAtMidpoints, getResolutionFromScale, getRootParentByDeletion, getRootParentByProperty, getRowsInMapExtent, getSaveableOgcParams, getScaleFromResolution, getSelectedOnly, getTooltipsOfOlGeometry, gmlRegex, handleFileExportError, handleFileExportSuccess, handleFileImportError, handleFileImportSuccess, handleInvalidFileImportError, handleLayerPropertyChange, handleNothingToExportError, handleNothingToImportError, handleOgreServerImportError, handleSRSImportError, handleSizeFileImportError, handleUnreadbleFileImportError, hideOlFeature, hoverFeatureMarkerStyle, ichercheReverseSearchSourceFactory, ichercheSearchSourceFactory, ilayerSearchResultFormatterFactory, ilayerSearchSourceFactory, initRoutesFeatureStore, initStepsFeatureStore, initStopsFeatureStore, isBaseLayer, isBaseLayerLinked, isCsvExport, isLayerGroup, isLayerGroupOptions, isLayerItem, isLayerItemOptions, isLayerLinked, isLayerLinkedOptions, isLayerLinkedTogether, isLinkMaster, isSaveableLayer, jsonRegex, layerFeatureIsQueryable, layerIsQueryable, lonLatConversion, mapExtentStrategyActiveToolTip, measureOlGeometry, measureOlGeometryArea, measureOlGeometryLength, metersToFeet, metersToKilometers, metersToMiles, metersToUnit, moveToOlFeatures, mtmZoneFromLonLat, noElementSelected, nominatimSearchSourceFactory, ogcFilterWidgetFactory, olLayerFeatureIsQueryable, olLayerIsQueryable, olStyleToBasicIgoStyle, optionsApiFactory, osrmDirectionsSourcesFactory, pointerPositionSummaryMarkerStyle, provideCadastreSearchSource, provideCoordinatesReverseSearchSource, provideDefaultCoordinatesSearchResultFormatter, provideDefaultIChercheSearchResultFormatter, provideDirection, provideIChercheReverseSearchSource, provideIChercheSearchSource, provideILayerSearchResultFormatter, provideILayerSearchSource, provideNominatimSearchSource, provideOffline, provideOgcFilterWidget, provideOptionsApi, provideOsrmDirectionsSource, provideQuerySearchSource, provideSearch, provideSearchSourceService, provideStoredQueriesReverseSearchSource, provideStoredQueriesSearchSource, provideStyleListLoader, provideStyleListOptions, provideWorkspaceSearchSource, querySearchSourceFactory, removeStopFromStore, renderFeatureFromOl, roundCoordTo, roundCoordToString, scaleExtent, searchSourceServiceFactory, setRowsInMapExtent, setSelectedOnly, sliceOlGeometry, sliceOlPolygon, sortLayersByZindex, sourceCanReverseSearch, sourceCanReverseSearchAsSummary, sourceCanSearch, squareMetersToAcres, squareMetersToHectares, squareMetersToSquareFeet, squareMetersToSquareKilometers, squareMetersToSquareMiles, squareMetersToUnit, standardizeUrl, storedqueriesReverseSearchSourceFactory, storedqueriesSearchSourceFactory, stringToLonLat, translateManeuverBearing, translateManeuverModifier, tryAddLoadingStrategy, tryAddSelectionStrategy, tryBindStoreLayer, updateOlGeometryCenter, updateOlGeometryMidpoints, updateOlTooltipAtCenter, updateOlTooltipDrawAtCenter, updateOlTooltipsAtMidpoints, updateOlTooltipsDrawAtMidpoints, updateStoreSorting, utmZoneFromLonLat, viewStatesAreEqual, withCadastreSource, withCoordinatesReverseSource, withIChercheReverseSource, withIChercheSource, withILayerSource, withNominatimSource, withOsrmSource, withStoredQueriesReverseSource, withStoredQueriesSource, withWorkspaceSource, workspaceSearchSourceFactory, zoneMtm, zoneUtm };
|
|
42637
42917
|
//# sourceMappingURL=igo2-geo.mjs.map
|