MCPcopy Create free account
hub / github.com/chartbrew/chartbrew / compareStrings

Function compareStrings

server/charts/dataFilter.js:260–335  ·  view source on GitHub ↗
(data, field, condition)

Source from the content-addressed store, hash-verified

258}
259
260function compareStrings(data, field, condition) {
261 let newData = data;
262
263 if (!condition.value
264 && (condition.operator !== "isNull" && condition.operator !== "isNotNull")) {
265 return data;
266 }
267
268 // extract value
269 const getValue = (obj) => {
270 const selectors = field.split(".");
271 let value = obj;
272 for (let i = 0; i < selectors.length; i++) {
273 value = value?.[selectors?.[i]];
274 }
275
276 if (!value && (value !== 0 || value !== "0")) {
277 return null;
278 }
279
280 return value;
281 };
282
283 switch (condition.operator) {
284 case "is":
285 newData = _.filter(newData, (o) => getValue(o) === condition.value);
286 break;
287 case "isNot":
288 newData = _.filter(newData, (o) => getValue(o) !== condition.value);
289 break;
290 case "contains":
291 newData = _.filter(newData, (o) => getValue(o)?.indexOf(condition.value) > -1);
292 break;
293 case "notContains":
294 newData = _.filter(newData, (o) => getValue(o)?.indexOf(condition.value) === -1);
295 break;
296 case "greaterThan":
297 newData = _.filter(newData, (o) => getValue(o) > condition.value);
298 break;
299 case "greaterOrEqual":
300 newData = _.filter(newData, (o) => getValue(o) >= condition.value);
301 break;
302 case "lessThan":
303 newData = _.filter(newData, (o) => getValue(o) < condition.value);
304 break;
305 case "lessOrEqual":
306 newData = _.filter(newData, (o) => getValue(o) <= condition.value);
307 break;
308 case "isNotNull":
309 newData = _.filter(newData, (o) => {
310 const val = getValue(o);
311 // Handle string "true"/"false" values for isNotNull
312 if (typeof condition.value === "string") {
313 if (condition.value.toLowerCase() === "true") return val !== null;
314 if (condition.value.toLowerCase() === "false") return val === null;
315 }
316 return val !== null;
317 });

Callers 1

dataFilter.jsFile · 0.85

Calls 2

getValueFunction · 0.85
filterMethod · 0.80

Tested by

no test coverage detected