@evergis/react 4.0.80 → 4.0.82
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/dist/index.js +58 -50
- package/dist/index.js.map +1 -1
- package/dist/react.esm.js +58 -50
- package/dist/react.esm.js.map +1 -1
- package/package.json +2 -2
package/dist/react.esm.js
CHANGED
|
@@ -4517,6 +4517,56 @@ const addDataSources = (dashboardConfiguration, pageIndex, layerNames) => {
|
|
|
4517
4517
|
return newConfig.children;
|
|
4518
4518
|
};
|
|
4519
4519
|
|
|
4520
|
+
const isEmptyValue = (value) => value === "" || value === null || value === undefined;
|
|
4521
|
+
|
|
4522
|
+
const checkIsDateFormat = (value) => value.startsWith("#'") && value.endsWith("'");
|
|
4523
|
+
const checkIfNeedQuotes = (value, attributeType) => {
|
|
4524
|
+
return attributeType
|
|
4525
|
+
? !NUMERIC_ATTRIBUTE_TYPES.includes(attributeType)
|
|
4526
|
+
: typeof value === "number"
|
|
4527
|
+
? false
|
|
4528
|
+
: typeof value === "string" && !isNumeric(value) && !checkIsDateFormat(value);
|
|
4529
|
+
};
|
|
4530
|
+
const formatConditionValue = ({ value, attributeType, defaultValue, checkQuotes = true, isSetParams = false, }) => {
|
|
4531
|
+
if (isEmptyValue(value))
|
|
4532
|
+
return "";
|
|
4533
|
+
const formattedValue = Array.isArray(defaultValue) && !Array.isArray(value) ? [value] : value;
|
|
4534
|
+
const isArray = Array.isArray(formattedValue);
|
|
4535
|
+
let stringValue = formattedValue.toString();
|
|
4536
|
+
if (isArray) {
|
|
4537
|
+
return formattedValue.length && !formattedValue.every(item => !item)
|
|
4538
|
+
? `[${formattedValue
|
|
4539
|
+
.map(item => (checkQuotes && checkIfNeedQuotes(item, attributeType) ? `'${item}'` : item))
|
|
4540
|
+
.join(",")}]`
|
|
4541
|
+
: "";
|
|
4542
|
+
}
|
|
4543
|
+
if (isSetParams && checkIsDateFormat(stringValue)) {
|
|
4544
|
+
stringValue = stringValue.slice(2, -1);
|
|
4545
|
+
}
|
|
4546
|
+
return checkQuotes && checkIfNeedQuotes(stringValue, attributeType) ? `'${stringValue}'` : stringValue;
|
|
4547
|
+
};
|
|
4548
|
+
|
|
4549
|
+
/**
|
|
4550
|
+
* Объектное значение иерархического фильтра "tree" («уровень → массив id»),
|
|
4551
|
+
* в отличие от скалярных/массивных значений остальных фильтров.
|
|
4552
|
+
*/
|
|
4553
|
+
const isTreeFilterValue = (value) => typeof value === "object" && value !== null && !Array.isArray(value) && !(value instanceof Date);
|
|
4554
|
+
/**
|
|
4555
|
+
* Подставляет плейсхолдеры уровней `%name.l{N}` значениями id соответствующего уровня
|
|
4556
|
+
* (формат `[id1,id2,...]` для оператора IN). Уровни, отсутствующие в значении (или пустые),
|
|
4557
|
+
* не подставляются — плейсхолдер остаётся нетронутым, как и любой пустой `%`-плейсхолдер.
|
|
4558
|
+
*/
|
|
4559
|
+
const applyTreeFilterToCondition = (condition, name, value, isSingle) => {
|
|
4560
|
+
const filterName = `${FILTER_PREFIX}${name}`;
|
|
4561
|
+
return Object.keys(value).reduce((result, level) => {
|
|
4562
|
+
const formatted = formatConditionValue({ value: value[level], checkQuotes: !isSingle });
|
|
4563
|
+
if (!formatted) {
|
|
4564
|
+
return result;
|
|
4565
|
+
}
|
|
4566
|
+
return result.replace(new RegExp(`${filterName}\\.${level}\\b`, "g"), formatted);
|
|
4567
|
+
}, condition);
|
|
4568
|
+
};
|
|
4569
|
+
|
|
4520
4570
|
const getConfigFilter = (filterName, configFilters) => configFilters?.find(({ name }) => name === filterName);
|
|
4521
4571
|
|
|
4522
4572
|
const getDataSource = (dataSourceName, dataSources) => dataSources?.find(({ name }) => name === dataSourceName);
|
|
@@ -4602,6 +4652,14 @@ const applyQueryFilters = ({ parameters: configParameters, filters: configFilter
|
|
|
4602
4652
|
};
|
|
4603
4653
|
}
|
|
4604
4654
|
if (configParameters[key].includes(".")) {
|
|
4655
|
+
const selectedValue = selectedFilters?.[filterName]?.value;
|
|
4656
|
+
if (isTreeFilterValue(selectedValue)) {
|
|
4657
|
+
const levelValue = filterProp ? selectedValue[filterProp] : undefined;
|
|
4658
|
+
if (isNil(levelValue) || !levelValue.length) {
|
|
4659
|
+
return result;
|
|
4660
|
+
}
|
|
4661
|
+
return { ...result, [key]: levelValue };
|
|
4662
|
+
}
|
|
4605
4663
|
return {
|
|
4606
4664
|
...result,
|
|
4607
4665
|
[key]: getDataSourceFilterValue({
|
|
@@ -4675,56 +4733,6 @@ const createConfigPage = (props) => {
|
|
|
4675
4733
|
};
|
|
4676
4734
|
};
|
|
4677
4735
|
|
|
4678
|
-
const isEmptyValue = (value) => value === "" || value === null || value === undefined;
|
|
4679
|
-
|
|
4680
|
-
const checkIsDateFormat = (value) => value.startsWith("#'") && value.endsWith("'");
|
|
4681
|
-
const checkIfNeedQuotes = (value, attributeType) => {
|
|
4682
|
-
return attributeType
|
|
4683
|
-
? !NUMERIC_ATTRIBUTE_TYPES.includes(attributeType)
|
|
4684
|
-
: typeof value === "number"
|
|
4685
|
-
? false
|
|
4686
|
-
: typeof value === "string" && !isNumeric(value) && !checkIsDateFormat(value);
|
|
4687
|
-
};
|
|
4688
|
-
const formatConditionValue = ({ value, attributeType, defaultValue, checkQuotes = true, isSetParams = false, }) => {
|
|
4689
|
-
if (isEmptyValue(value))
|
|
4690
|
-
return "";
|
|
4691
|
-
const formattedValue = Array.isArray(defaultValue) && !Array.isArray(value) ? [value] : value;
|
|
4692
|
-
const isArray = Array.isArray(formattedValue);
|
|
4693
|
-
let stringValue = formattedValue.toString();
|
|
4694
|
-
if (isArray) {
|
|
4695
|
-
return formattedValue.length && !formattedValue.every(item => !item)
|
|
4696
|
-
? `[${formattedValue
|
|
4697
|
-
.map(item => (checkQuotes && checkIfNeedQuotes(item, attributeType) ? `'${item}'` : item))
|
|
4698
|
-
.join(",")}]`
|
|
4699
|
-
: "";
|
|
4700
|
-
}
|
|
4701
|
-
if (isSetParams && checkIsDateFormat(stringValue)) {
|
|
4702
|
-
stringValue = stringValue.slice(2, -1);
|
|
4703
|
-
}
|
|
4704
|
-
return checkQuotes && checkIfNeedQuotes(stringValue, attributeType) ? `'${stringValue}'` : stringValue;
|
|
4705
|
-
};
|
|
4706
|
-
|
|
4707
|
-
/**
|
|
4708
|
-
* Объектное значение иерархического фильтра "tree" («уровень → массив id»),
|
|
4709
|
-
* в отличие от скалярных/массивных значений остальных фильтров.
|
|
4710
|
-
*/
|
|
4711
|
-
const isTreeFilterValue = (value) => typeof value === "object" && value !== null && !Array.isArray(value) && !(value instanceof Date);
|
|
4712
|
-
/**
|
|
4713
|
-
* Подставляет плейсхолдеры уровней `%name.l{N}` значениями id соответствующего уровня
|
|
4714
|
-
* (формат `[id1,id2,...]` для оператора IN). Уровни, отсутствующие в значении (или пустые),
|
|
4715
|
-
* не подставляются — плейсхолдер остаётся нетронутым, как и любой пустой `%`-плейсхолдер.
|
|
4716
|
-
*/
|
|
4717
|
-
const applyTreeFilterToCondition = (condition, name, value, isSingle) => {
|
|
4718
|
-
const filterName = `${FILTER_PREFIX}${name}`;
|
|
4719
|
-
return Object.keys(value).reduce((result, level) => {
|
|
4720
|
-
const formatted = formatConditionValue({ value: value[level], checkQuotes: !isSingle });
|
|
4721
|
-
if (!formatted) {
|
|
4722
|
-
return result;
|
|
4723
|
-
}
|
|
4724
|
-
return result.replace(new RegExp(`${filterName}\\.${level}\\b`, "g"), formatted);
|
|
4725
|
-
}, condition);
|
|
4726
|
-
};
|
|
4727
|
-
|
|
4728
4736
|
const getAttributesConfiguration = (layer) => {
|
|
4729
4737
|
const layerAttributeConfiguration = layer?.configuration?.attributesConfiguration ?? {};
|
|
4730
4738
|
const { geometryAttribute, idAttribute } = layerAttributeConfiguration;
|