Skip to content

Commit af5d11d

Browse files
[fix]ISVJ-5321特殊字符字段过滤 review by qiw
1 parent cddb337 commit af5d11d

File tree

3 files changed

+34
-4
lines changed

3 files changed

+34
-4
lines changed

src/common/util/FilterCondition.js

Lines changed: 32 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,24 +1,52 @@
1+
function getParseSpecialCharacter() {
2+
// 特殊字符字典
3+
const directory = ['(', ')', '(', ')', ',', ','];
4+
const res = {};
5+
directory.forEach((item, index) => {
6+
res[item] = `$${index}`
7+
});
8+
return res;
9+
}
10+
11+
function parseSpecialCharacter(str) {
12+
const directory = getParseSpecialCharacter();
13+
for (let key in directory) {
14+
const replaceValue = directory[key];
15+
const pattern = new RegExp(`\\${key}`, 'g');
16+
// eslint-disable-next-line
17+
while (pattern.test(str)) {
18+
str = str.replace(pattern, replaceValue);
19+
}
20+
}
21+
return str;
22+
}
23+
124
function parseCondition(filterCondition, keys) {
225
const str = filterCondition.replace(/&|\||>|<|=|!/g, ' ');
326
const arr = str.split(' ').filter((item) => item);
427
let result = filterCondition;
528
arr.forEach((item) => {
6-
const key = startsWithNumber(item) && keys.find((val) => val === item);
7-
if (key) {
29+
const key = keys.find((val) => val === item);
30+
if (startsWithNumber(item) && key) {
831
result = result.replace(key, '$' + key);
932
}
33+
if (key) {
34+
const res = parseSpecialCharacter(key);
35+
result = result.replace(key, res);
36+
}
1037
});
1138
return result;
1239
}
1340

1441
// 处理jsonsqlfeature, 加前缀
1542
function parseConditionFeature(feature) {
16-
const copyValue = {};
17-
for (const key in feature) {
43+
let copyValue = {};
44+
for (let key in feature) {
1845
let copyKey = key;
1946
if (startsWithNumber(key)) {
2047
copyKey = '$' + key;
2148
}
49+
copyKey = parseSpecialCharacter(copyKey);
2250
copyValue[copyKey] = feature[key];
2351
}
2452
return copyValue;

test/mapboxgl/mapping/WebMapSpec.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -109,6 +109,7 @@ describe('mapboxgl_WebMap', () => {
109109
datavizWebmap = new WebMap(id, options);
110110
datavizWebmap.on('mapinitialized', () => {
111111
datavizWebmap._getFiterFeatures('2020年人口数>20', [{ properties: { '2020年人口数': 30 }}]);
112+
datavizWebmap._getFiterFeatures('观测场海拔高度(米)>150', [{ properties: { '观测场海拔高度(米)': 150 }}]);
112113
done();
113114
});
114115
});

test/openlayers/mapping/WebMapSpec.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -197,6 +197,7 @@ describe('openlayers_WebMap', () => {
197197

198198
function successCallback() {
199199
datavizWebmap.getFiterFeatures('2020年人口数> 20', [{ get: () => ({ '2020年人口数': 30 }) }]);
200+
datavizWebmap.getFiterFeatures('观测场海拔高度(米)>150', [{ get: () => ({ '观测场海拔高度(米)': 30 }) }]);
200201
// datavizWebmap.createDataflowLayer({filterCondition:'2020年人口数> 20', pointStyle:{}, wsUrl: 'ws://test/iserver/services/dataflow/dataflow/subscribe'}, [{ get: () => ({ '2020年人口数': 30 }) }]);
201202
done();
202203
}

0 commit comments

Comments
 (0)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy