@yuuvis/client-core 2.1.0 → 2.1.1
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.
|
@@ -400,6 +400,7 @@ var ClassificationPrefix;
|
|
|
400
400
|
class Utils {
|
|
401
401
|
static { this.DEFAULT_RANGE_TIME_V1 = 'T00:00:00.000'; }
|
|
402
402
|
static { this.DEFAULT_RANGE_TIME_V2 = 'T23:59:59.000'; }
|
|
403
|
+
static { this.DEFAULT_TIME_OFFSET_V2 = (60000 * 60 * 24) - 1; } // T+23:59:59:999
|
|
403
404
|
static optionsToURLParams(options) {
|
|
404
405
|
if (options) {
|
|
405
406
|
const searchParams = new URLSearchParams();
|
|
@@ -771,6 +772,26 @@ class Utils {
|
|
|
771
772
|
static isValidDate(value) {
|
|
772
773
|
return value instanceof Date && !isNaN(value.getTime());
|
|
773
774
|
}
|
|
775
|
+
static getDateFrom(value) {
|
|
776
|
+
if (!value)
|
|
777
|
+
return undefined;
|
|
778
|
+
else if (value instanceof Date && this.isValidDate(value))
|
|
779
|
+
return value;
|
|
780
|
+
else {
|
|
781
|
+
const parsed = new Date(value);
|
|
782
|
+
return this.isValidDate(parsed) ? parsed : undefined;
|
|
783
|
+
}
|
|
784
|
+
}
|
|
785
|
+
static getDateRangeFrom(dateRange) {
|
|
786
|
+
const firstValue = this.getDateFrom(dateRange.firstValue);
|
|
787
|
+
if (!firstValue)
|
|
788
|
+
return undefined;
|
|
789
|
+
return {
|
|
790
|
+
...dateRange,
|
|
791
|
+
firstValue,
|
|
792
|
+
secondValue: dateRange.secondValue ? this.getDateFrom(dateRange.secondValue) : undefined,
|
|
793
|
+
};
|
|
794
|
+
}
|
|
774
795
|
}
|
|
775
796
|
|
|
776
797
|
// enumeration of API endpoints provided by the backend
|
|
@@ -2036,46 +2057,65 @@ class SearchService {
|
|
|
2036
2057
|
};
|
|
2037
2058
|
}
|
|
2038
2059
|
#dateRangeValueToSearchFilter(rv, property) {
|
|
2039
|
-
const v1 =
|
|
2040
|
-
const v2 = rv.secondValue
|
|
2041
|
-
let filter;
|
|
2060
|
+
const v1 = rv.firstValue;
|
|
2061
|
+
const v2 = rv.secondValue;
|
|
2042
2062
|
switch (rv.operator) {
|
|
2043
2063
|
case Operator.EQUAL: {
|
|
2044
|
-
|
|
2064
|
+
return {
|
|
2045
2065
|
f: property,
|
|
2046
2066
|
o: Operator.INTERVAL_INCLUDE_BOTH,
|
|
2047
|
-
v1: v1
|
|
2048
|
-
v2: v1
|
|
2067
|
+
v1: this.#dateToISOString(v1, 'start'),
|
|
2068
|
+
v2: this.#dateToISOString(v1, 'end')
|
|
2049
2069
|
};
|
|
2050
|
-
break;
|
|
2051
2070
|
}
|
|
2052
2071
|
case Operator.GREATER_OR_EQUAL: {
|
|
2053
|
-
|
|
2072
|
+
return {
|
|
2054
2073
|
f: property,
|
|
2055
2074
|
o: rv.operator,
|
|
2056
|
-
v1: v1
|
|
2075
|
+
v1: this.#dateToISOString(v1)
|
|
2057
2076
|
};
|
|
2058
|
-
break;
|
|
2059
2077
|
}
|
|
2060
2078
|
case Operator.LESS_OR_EQUAL: {
|
|
2061
|
-
|
|
2079
|
+
return {
|
|
2062
2080
|
f: property,
|
|
2063
2081
|
o: rv.operator,
|
|
2064
|
-
v1: v1
|
|
2082
|
+
v1: this.#dateToISOString(v1, 'end')
|
|
2065
2083
|
};
|
|
2066
|
-
break;
|
|
2067
2084
|
}
|
|
2068
2085
|
case Operator.INTERVAL_INCLUDE_BOTH: {
|
|
2069
|
-
|
|
2086
|
+
return {
|
|
2070
2087
|
f: property,
|
|
2071
2088
|
o: rv.operator,
|
|
2072
|
-
v1: v1
|
|
2073
|
-
v2: v2
|
|
2089
|
+
v1: this.#dateToISOString(v1, 'start'),
|
|
2090
|
+
v2: v2 ? this.#dateToISOString(v2, 'end') : '',
|
|
2074
2091
|
};
|
|
2075
|
-
break;
|
|
2076
2092
|
}
|
|
2093
|
+
default:
|
|
2094
|
+
return undefined;
|
|
2095
|
+
}
|
|
2096
|
+
}
|
|
2097
|
+
/**
|
|
2098
|
+
* Checks if value is a date and retrieves an ISOString representation. Optionally you can determine, if it should be the beginning or the end of a day.
|
|
2099
|
+
*
|
|
2100
|
+
* @param value
|
|
2101
|
+
* @param range
|
|
2102
|
+
* @private
|
|
2103
|
+
*/
|
|
2104
|
+
#dateToISOString(value, range = 'start') {
|
|
2105
|
+
const date = typeof value === 'string' ? new Date(value) : value;
|
|
2106
|
+
const offset = Utils.DEFAULT_TIME_OFFSET_V2; // T+23:59:59:999
|
|
2107
|
+
if (!Utils.isValidDate(date))
|
|
2108
|
+
return '';
|
|
2109
|
+
const isoDateString = date.toISOString();
|
|
2110
|
+
const isoDateStringWithOffset = new Date(date.getTime() + offset).toISOString();
|
|
2111
|
+
switch (range) {
|
|
2112
|
+
case 'start':
|
|
2113
|
+
return isoDateString;
|
|
2114
|
+
case 'end':
|
|
2115
|
+
return isoDateStringWithOffset;
|
|
2116
|
+
default:
|
|
2117
|
+
return isoDateString;
|
|
2077
2118
|
}
|
|
2078
|
-
return filter;
|
|
2079
2119
|
}
|
|
2080
2120
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.12", ngImport: i0, type: SearchService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
2081
2121
|
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.12", ngImport: i0, type: SearchService, providedIn: 'root' }); }
|
|
@@ -2584,6 +2624,15 @@ class ObjectConfigService {
|
|
|
2584
2624
|
});
|
|
2585
2625
|
}
|
|
2586
2626
|
}
|
|
2627
|
+
getRegisteredDefault(objectTypeId, bucket) {
|
|
2628
|
+
if (bucket) {
|
|
2629
|
+
const b = this.#registeredDefaultObjectConfigs.buckets.find((b) => b.id === bucket);
|
|
2630
|
+
return b ? b.configs[objectTypeId] : undefined;
|
|
2631
|
+
}
|
|
2632
|
+
else {
|
|
2633
|
+
return this.#registeredDefaultObjectConfigs.main[objectTypeId];
|
|
2634
|
+
}
|
|
2635
|
+
}
|
|
2587
2636
|
#getRegisteredDefaults(bucket) {
|
|
2588
2637
|
if (bucket) {
|
|
2589
2638
|
const defaultTileBucket = this.#registeredDefaultObjectConfigs.buckets.find((b) => b.id === bucket);
|
|
@@ -2606,12 +2655,19 @@ class ObjectConfigService {
|
|
|
2606
2655
|
const oc = otr[type.id];
|
|
2607
2656
|
// return oc || this.#getRegisteredDefaults(bucket)[type.id];
|
|
2608
2657
|
// override icons by APP_SCHEMA-icons: temporary solution. Todo: remove when handling of custom svg-icons is clear!
|
|
2609
|
-
const result = oc || this.#getRegisteredDefaults(bucket)[type.id];
|
|
2610
|
-
if (result
|
|
2611
|
-
result.icon = type.icon ? { svg: type.icon } :
|
|
2658
|
+
const result = oc || this.#getRegisteredDefaults(bucket)[type.id] || this.#defaultObjectConfigs[type.id];
|
|
2659
|
+
if (result?.icon)
|
|
2660
|
+
result.icon = type.icon ? { svg: type.icon } : result.icon;
|
|
2612
2661
|
return result;
|
|
2613
2662
|
}
|
|
2614
2663
|
saveObjectConfig(type, config, bucket) {
|
|
2664
|
+
return this.saveObjectConfigs({ [type.id]: config }, bucket);
|
|
2665
|
+
}
|
|
2666
|
+
saveObjectConfigs(configs, bucket) {
|
|
2667
|
+
this.#updateObjectConfig(configs, bucket);
|
|
2668
|
+
return this.#user.saveObjectConfig(this.#objectConfigs);
|
|
2669
|
+
}
|
|
2670
|
+
#updateObjectConfig(configs, bucket) {
|
|
2615
2671
|
if (!this.#objectConfigs)
|
|
2616
2672
|
this.#objectConfigs = {
|
|
2617
2673
|
main: {},
|
|
@@ -2621,11 +2677,27 @@ class ObjectConfigService {
|
|
|
2621
2677
|
// does bucket exist?
|
|
2622
2678
|
const tileBucketIdx = this.#objectConfigs.buckets.findIndex((b) => b.id === bucket);
|
|
2623
2679
|
if (tileBucketIdx !== -1) {
|
|
2624
|
-
|
|
2680
|
+
Object.keys(configs).forEach((objectTypeId) => {
|
|
2681
|
+
const config = configs[objectTypeId];
|
|
2682
|
+
if (config) {
|
|
2683
|
+
this.#objectConfigs.buckets[tileBucketIdx].configs[objectTypeId] = config;
|
|
2684
|
+
}
|
|
2685
|
+
else {
|
|
2686
|
+
delete this.#objectConfigs.buckets[tileBucketIdx].configs[objectTypeId];
|
|
2687
|
+
}
|
|
2688
|
+
});
|
|
2625
2689
|
}
|
|
2626
2690
|
else {
|
|
2627
2691
|
const configs = {};
|
|
2628
|
-
configs
|
|
2692
|
+
Object.keys(configs).forEach((objectTypeId) => {
|
|
2693
|
+
const config = configs[objectTypeId];
|
|
2694
|
+
if (config) {
|
|
2695
|
+
configs[objectTypeId] = config;
|
|
2696
|
+
}
|
|
2697
|
+
else {
|
|
2698
|
+
delete configs[objectTypeId];
|
|
2699
|
+
}
|
|
2700
|
+
});
|
|
2629
2701
|
this.#objectConfigs.buckets.push({
|
|
2630
2702
|
id: bucket,
|
|
2631
2703
|
configs
|
|
@@ -2633,10 +2705,17 @@ class ObjectConfigService {
|
|
|
2633
2705
|
}
|
|
2634
2706
|
}
|
|
2635
2707
|
else {
|
|
2636
|
-
|
|
2708
|
+
Object.keys(configs).forEach((objectTypeId) => {
|
|
2709
|
+
const config = configs[objectTypeId];
|
|
2710
|
+
if (config) {
|
|
2711
|
+
this.#objectConfigs.main[objectTypeId] = config;
|
|
2712
|
+
}
|
|
2713
|
+
else {
|
|
2714
|
+
delete this.#objectConfigs.main[objectTypeId];
|
|
2715
|
+
}
|
|
2716
|
+
});
|
|
2637
2717
|
}
|
|
2638
2718
|
this.#objectConfigsSource.next(this.#objectConfigs);
|
|
2639
|
-
return this.#user.saveObjectConfig(this.#objectConfigs);
|
|
2640
2719
|
}
|
|
2641
2720
|
getDefaultConfig(objectTypeID) {
|
|
2642
2721
|
return this.#defaultObjectConfigs[objectTypeID];
|