@yuuvis/client-core 2.0.15 → 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.
|
@@ -398,6 +398,9 @@ var ClassificationPrefix;
|
|
|
398
398
|
})(ClassificationPrefix || (ClassificationPrefix = {}));
|
|
399
399
|
|
|
400
400
|
class Utils {
|
|
401
|
+
static { this.DEFAULT_RANGE_TIME_V1 = 'T00:00:00.000'; }
|
|
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
|
|
401
404
|
static optionsToURLParams(options) {
|
|
402
405
|
if (options) {
|
|
403
406
|
const searchParams = new URLSearchParams();
|
|
@@ -769,6 +772,26 @@ class Utils {
|
|
|
769
772
|
static isValidDate(value) {
|
|
770
773
|
return value instanceof Date && !isNaN(value.getTime());
|
|
771
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
|
+
}
|
|
772
795
|
}
|
|
773
796
|
|
|
774
797
|
// enumeration of API endpoints provided by the backend
|
|
@@ -2034,46 +2057,65 @@ class SearchService {
|
|
|
2034
2057
|
};
|
|
2035
2058
|
}
|
|
2036
2059
|
#dateRangeValueToSearchFilter(rv, property) {
|
|
2037
|
-
const v1 =
|
|
2038
|
-
const v2 = rv.secondValue
|
|
2039
|
-
let filter;
|
|
2060
|
+
const v1 = rv.firstValue;
|
|
2061
|
+
const v2 = rv.secondValue;
|
|
2040
2062
|
switch (rv.operator) {
|
|
2041
2063
|
case Operator.EQUAL: {
|
|
2042
|
-
|
|
2064
|
+
return {
|
|
2043
2065
|
f: property,
|
|
2044
2066
|
o: Operator.INTERVAL_INCLUDE_BOTH,
|
|
2045
|
-
v1: v1
|
|
2046
|
-
v2: v1
|
|
2067
|
+
v1: this.#dateToISOString(v1, 'start'),
|
|
2068
|
+
v2: this.#dateToISOString(v1, 'end')
|
|
2047
2069
|
};
|
|
2048
|
-
break;
|
|
2049
2070
|
}
|
|
2050
2071
|
case Operator.GREATER_OR_EQUAL: {
|
|
2051
|
-
|
|
2072
|
+
return {
|
|
2052
2073
|
f: property,
|
|
2053
2074
|
o: rv.operator,
|
|
2054
|
-
v1: v1
|
|
2075
|
+
v1: this.#dateToISOString(v1)
|
|
2055
2076
|
};
|
|
2056
|
-
break;
|
|
2057
2077
|
}
|
|
2058
2078
|
case Operator.LESS_OR_EQUAL: {
|
|
2059
|
-
|
|
2079
|
+
return {
|
|
2060
2080
|
f: property,
|
|
2061
2081
|
o: rv.operator,
|
|
2062
|
-
v1: v1
|
|
2082
|
+
v1: this.#dateToISOString(v1, 'end')
|
|
2063
2083
|
};
|
|
2064
|
-
break;
|
|
2065
2084
|
}
|
|
2066
2085
|
case Operator.INTERVAL_INCLUDE_BOTH: {
|
|
2067
|
-
|
|
2086
|
+
return {
|
|
2068
2087
|
f: property,
|
|
2069
2088
|
o: rv.operator,
|
|
2070
|
-
v1: v1
|
|
2071
|
-
v2: v2
|
|
2089
|
+
v1: this.#dateToISOString(v1, 'start'),
|
|
2090
|
+
v2: v2 ? this.#dateToISOString(v2, 'end') : '',
|
|
2072
2091
|
};
|
|
2073
|
-
break;
|
|
2074
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;
|
|
2075
2118
|
}
|
|
2076
|
-
return filter;
|
|
2077
2119
|
}
|
|
2078
2120
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.12", ngImport: i0, type: SearchService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
2079
2121
|
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.12", ngImport: i0, type: SearchService, providedIn: 'root' }); }
|
|
@@ -2582,6 +2624,15 @@ class ObjectConfigService {
|
|
|
2582
2624
|
});
|
|
2583
2625
|
}
|
|
2584
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
|
+
}
|
|
2585
2636
|
#getRegisteredDefaults(bucket) {
|
|
2586
2637
|
if (bucket) {
|
|
2587
2638
|
const defaultTileBucket = this.#registeredDefaultObjectConfigs.buckets.find((b) => b.id === bucket);
|
|
@@ -2604,12 +2655,19 @@ class ObjectConfigService {
|
|
|
2604
2655
|
const oc = otr[type.id];
|
|
2605
2656
|
// return oc || this.#getRegisteredDefaults(bucket)[type.id];
|
|
2606
2657
|
// override icons by APP_SCHEMA-icons: temporary solution. Todo: remove when handling of custom svg-icons is clear!
|
|
2607
|
-
const result = oc || this.#getRegisteredDefaults(bucket)[type.id];
|
|
2608
|
-
if (result
|
|
2609
|
-
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;
|
|
2610
2661
|
return result;
|
|
2611
2662
|
}
|
|
2612
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) {
|
|
2613
2671
|
if (!this.#objectConfigs)
|
|
2614
2672
|
this.#objectConfigs = {
|
|
2615
2673
|
main: {},
|
|
@@ -2619,11 +2677,27 @@ class ObjectConfigService {
|
|
|
2619
2677
|
// does bucket exist?
|
|
2620
2678
|
const tileBucketIdx = this.#objectConfigs.buckets.findIndex((b) => b.id === bucket);
|
|
2621
2679
|
if (tileBucketIdx !== -1) {
|
|
2622
|
-
|
|
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
|
+
});
|
|
2623
2689
|
}
|
|
2624
2690
|
else {
|
|
2625
2691
|
const configs = {};
|
|
2626
|
-
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
|
+
});
|
|
2627
2701
|
this.#objectConfigs.buckets.push({
|
|
2628
2702
|
id: bucket,
|
|
2629
2703
|
configs
|
|
@@ -2631,10 +2705,17 @@ class ObjectConfigService {
|
|
|
2631
2705
|
}
|
|
2632
2706
|
}
|
|
2633
2707
|
else {
|
|
2634
|
-
|
|
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
|
+
});
|
|
2635
2717
|
}
|
|
2636
2718
|
this.#objectConfigsSource.next(this.#objectConfigs);
|
|
2637
|
-
return this.#user.saveObjectConfig(this.#objectConfigs);
|
|
2638
2719
|
}
|
|
2639
2720
|
getDefaultConfig(objectTypeID) {
|
|
2640
2721
|
return this.#defaultObjectConfigs[objectTypeID];
|
|
@@ -4539,8 +4620,8 @@ class SearchUtils {
|
|
|
4539
4620
|
static getMatchingDateRange(rangeValue) {
|
|
4540
4621
|
return SearchUtils.dateRanges.find((dateRange) => {
|
|
4541
4622
|
const { start, end } = SearchUtils.dateRangeStartEnd(dateRange);
|
|
4542
|
-
return (rangeValue.firstValue === start.toISOString().split('T')[0] +
|
|
4543
|
-
rangeValue.secondValue === end.toISOString().split('T')[0] +
|
|
4623
|
+
return (rangeValue.firstValue === start.toISOString().split('T')[0] + Utils.DEFAULT_RANGE_TIME_V1 &&
|
|
4624
|
+
rangeValue.secondValue === end.toISOString().split('T')[0] + Utils.DEFAULT_RANGE_TIME_V2);
|
|
4544
4625
|
});
|
|
4545
4626
|
}
|
|
4546
4627
|
// Files size ranges
|