|
166 | 166 |
|
167 | 167 | return data;
|
168 | 168 | } catch (error) {
|
169 |
| - console.error("Error in getValueFromObject:", error); |
| 169 | + // console.error("Error in getValueFromObject:", error); |
170 | 170 | if (throwError)
|
171 | 171 | throw error;
|
172 | 172 | }
|
|
422 | 422 | return selector
|
423 | 423 | }
|
424 | 424 |
|
425 |
| - |
426 | 425 | function queryData(data, query) {
|
427 |
| - if (!data) |
428 |
| - return false; |
429 |
| - |
430 |
| - if (!Array.isArray(data)) |
431 |
| - data = [data] |
432 |
| - |
433 |
| - if (!query) |
434 |
| - return true |
435 |
| - |
436 |
| - if (!Array.isArray(query)) |
437 |
| - query = [query] |
438 |
| - if (!query.length) |
439 |
| - return true |
440 |
| - |
441 |
| - let queryResult = false |
442 |
| - for (let n = 0; n < data.length; n++) { |
443 |
| - for (let i = 0; i < query.length; i++) { |
444 |
| - let dataValue |
445 |
| - if (query[i].key.includes('.') || /\[([0-9]*)\]/g.test(query[i].key)) |
446 |
| - dataValue = getValueFromObject(data[n], query[i].key) |
447 |
| - else |
448 |
| - dataValue = data[n][query[i].key] |
449 |
| - if (dataValue == undefined) |
450 |
| - dataValue = '' |
451 |
| - let logicalOperator = query[i].logicalOperator || 'and' |
452 |
| - let queryValues = query[i].value |
453 |
| - |
454 |
| - let queryIsArray = false |
455 |
| - if (!Array.isArray(queryValues)) |
456 |
| - queryValues = [queryValues] |
457 |
| - else |
458 |
| - queryIsArray = true |
459 |
| - |
460 |
| - |
461 |
| - let queryStatus = false |
462 |
| - for (let queryValue of queryValues) { |
463 |
| - if (query[i].caseSensitive != 'true' || query[i].caseSensitive != true) { |
464 |
| - if (typeof dataValue == 'string') |
465 |
| - dataValue = dataValue.toLowerCase() |
466 |
| - if (typeof queryValue == 'string') |
467 |
| - queryValue = queryValue.toLowerCase() |
468 |
| - } |
469 |
| - |
470 |
| - if (isValidDate(dataValue) && isValidDate(queryValue)) { |
471 |
| - dataValue = new Date(dataValue) |
472 |
| - queryValue = new Date(queryValue) |
473 |
| - } |
474 |
| - switch (query[i].operator) { |
475 |
| - case '$includes': |
476 |
| - case 'includes': |
477 |
| - if (dataValue.includes(queryValue)) |
478 |
| - queryStatus = true |
479 |
| - // if (queryValue === "" && logicalOperator === 'and') { |
480 |
| - // if (dataValue !== "") |
481 |
| - // queryStatus = false |
482 |
| - // } |
483 |
| - break; |
484 |
| - case '$eq': |
485 |
| - if (dataValue == queryValue) |
486 |
| - queryStatus = true |
487 |
| - break; |
488 |
| - case '$ne': |
489 |
| - if (Array.isArray(dataValue)) { |
490 |
| - // Check if the entire array is different from queryValue |
491 |
| - queryStatus = !isEqualArray(dataValue, queryValue); |
492 |
| - } else if (Array.isArray(queryValue)) { |
493 |
| - // If queryValue is an array, check if dataValue is different from this array |
494 |
| - queryStatus = !isEqualArray(queryValue, dataValue); |
495 |
| - } else { |
496 |
| - // If neither is an array, simple comparison |
497 |
| - queryStatus = (dataValue != queryValue); |
498 |
| - } |
499 |
| - break; |
500 |
| - case '$lt': |
501 |
| - if (dataValue < queryValue) |
502 |
| - queryStatus = true |
503 |
| - break; |
504 |
| - case '$lte': |
505 |
| - if (dataValue <= queryValue) |
506 |
| - queryStatus = true |
507 |
| - break; |
508 |
| - case '$gt': |
509 |
| - if (dataValue > queryValue) |
510 |
| - queryStatus = true |
511 |
| - break; |
512 |
| - case '$gte': |
513 |
| - if (dataValue >= queryValue) |
514 |
| - queryStatus = true |
515 |
| - break; |
516 |
| - case '$in': |
517 |
| - if (Array.isArray(dataValue)) { |
518 |
| - queryStatus = dataValue.some(element => queryValue.includes(element)); |
519 |
| - } else { |
520 |
| - queryStatus = queryValue.includes(dataValue); |
521 |
| - } |
522 |
| - break; |
523 |
| - case '$nin': |
524 |
| - if (Array.isArray(dataValue)) { |
525 |
| - queryStatus = !dataValue.some(element => queryValue.includes(element)); |
526 |
| - } else { |
527 |
| - queryStatus = !queryValue.includes(dataValue); |
528 |
| - } |
529 |
| - break; |
530 |
| - case '$range': |
531 |
| - if (queryValue[0] !== null && queryValue[1] !== null) { |
532 |
| - if (dataValue >= queryValue[0] && dataValue <= queryValue[1]) |
533 |
| - queryStatus = true |
534 |
| - } else if (queryValue[0] == null && dataValue <= queryValue[1]) { |
535 |
| - queryStatus = true |
536 |
| - } else if (queryValue[1] == null && dataValue >= queryValue[0]) { |
537 |
| - queryStatus = true |
538 |
| - } |
539 |
| - break; |
540 |
| - |
541 |
| - default: |
542 |
| - if (dataValue.includes(queryValue)) |
543 |
| - queryStatus = true |
544 |
| - break; |
545 |
| - } |
546 |
| - if (!queryIsArray || query[i].operator === "$nin") { |
547 |
| - switch (logicalOperator) { |
548 |
| - case 'and': |
549 |
| - if (queryStatus == false) |
550 |
| - return false |
551 |
| - break; |
552 |
| - // case 'or': |
553 |
| - // if (queryStatus == true) |
554 |
| - // queryResult = queryStatus |
555 |
| - // break; |
556 |
| - } |
557 |
| - } else if (queryStatus && query[i].operator === "$in") |
558 |
| - return true |
559 |
| - queryResult = queryStatus |
560 |
| - } |
561 |
| - } |
562 |
| - } |
563 |
| - |
564 |
| - return queryResult; |
565 |
| - } |
566 |
| - |
567 |
| - function query(data, query) { |
568 | 426 | if (query.$and) {
|
569 | 427 | for (let i = 0; i < query.$and.length; i++) {
|
570 |
| - if (!query(data, query.$and[i])) |
| 428 | + if (!queryData(data, query.$and[i])) |
571 | 429 | return false
|
572 | 430 | }
|
573 | 431 | }
|
574 | 432 |
|
575 | 433 | if (query.$nor) {
|
576 | 434 | for (let i = 0; i < query.$nor.length; i++) {
|
577 |
| - if (query(data, query.$nor[i])) |
| 435 | + if (queryData(data, query.$nor[i])) |
578 | 436 | return false;
|
579 | 437 | }
|
580 | 438 | }
|
|
588 | 446 |
|
589 | 447 | if (query.$or) {
|
590 | 448 | for (let i = 0; i < query.$or.length; i++) {
|
591 |
| - if (query(data, query.$or[i])) |
| 449 | + if (queryData(data, query.$or[i])) |
592 | 450 | return true
|
593 | 451 | }
|
594 | 452 | }
|
|
605 | 463 | try {
|
606 | 464 | dataValue = getValueFromObject(data, key, true)
|
607 | 465 | } catch (error) {
|
608 |
| - |
| 466 | + return false |
609 | 467 | }
|
610 | 468 |
|
611 | 469 | if (typeof query[key] === 'string' || typeof query[key] === 'number' || typeof query[key] === 'boolean') {
|
|
907 | 765 | cssPath,
|
908 | 766 | queryElements,
|
909 | 767 | checkMediaQueries,
|
910 |
| - query, |
911 | 768 | queryData,
|
912 | 769 | searchData,
|
913 | 770 | sortData,
|
|
0 commit comments