|
558 | 558 | if (!dontHide) |
559 | 559 | filter.find(".filter-trigger").popover("hide"); |
560 | 560 |
|
561 | | - var val = trimToNull(content.find("input").first().val()); |
| 561 | + var val = trimToNull(this.getCleanedValue(content.find("input").first().val(), dataType)); |
| 562 | + |
| 563 | + content.find("input").first().val(val) |
562 | 564 |
|
563 | 565 | if (val != null) |
564 | 566 | { |
|
577 | 579 | } |
578 | 580 | else if (filter.hasClass("griddly-filter-range")) |
579 | 581 | { |
580 | | - var val = trimToNull(content.find("input").first().val()); |
581 | | - var valEnd = trimToNull(content.find("input").last().val()); |
| 582 | + var val = trimToNull(this.getCleanedValue(content.find("input").first().val(), dataType)); |
| 583 | + var valEnd = trimToNull(this.getCleanedValue(content.find("input").last().val(), dataType)); |
| 584 | + |
| 585 | + content.find("input").first().val(val) |
| 586 | + content.find("input").last().val(valEnd) |
582 | 587 |
|
583 | 588 | if (val != null && valEnd != null) |
584 | 589 | display = this.getFormattedValue(val, dataType) + " - " + this.getFormattedValue(valEnd, dataType); |
|
963 | 968 | this.refresh(true); |
964 | 969 | }, |
965 | 970 |
|
966 | | - getFormattedValue: function (val, dataType) |
| 971 | + getCleanedValue: function (val, dataType) |
967 | 972 | { |
968 | 973 | switch (dataType) |
969 | 974 | { |
970 | 975 | case "Integer": |
971 | | - { |
972 | | - val = String(val).replace(/[^0-9]/g, "") |
| 976 | + val = String(val).replace(/[^0-9-]/g, "") |
973 | 977 |
|
974 | | - val = parseInt(val); |
| 978 | + if (val.length > 1) |
| 979 | + val = val.substr(0, 1) + val.substr(1).replace(/-/g, ""); |
| 980 | + else if (val == '-') |
| 981 | + return null; |
975 | 982 |
|
976 | | - if (!isFinite(val)) |
977 | | - val = null; |
| 983 | + return val; |
| 984 | + case "Decimal": |
| 985 | + case "Currency": |
| 986 | + //case "Percent": |
| 987 | + val = String(val).replace(/[^0-9,.-]/g, "").replace(/,/g, ""); |
978 | 988 |
|
979 | | - return val; |
980 | | - } |
| 989 | + if (val.length > 1) |
| 990 | + val = val.substr(0, 1) + val.substr(1).replace(/-/g, ""); |
| 991 | + else if (val == '-') |
| 992 | + return null; |
| 993 | + |
| 994 | + return val; |
| 995 | + case "Date": |
| 996 | + return String(val).replace(/[^0-9a-zA-Z-\/]/g, ""); |
| 997 | + default: |
| 998 | + return val; |
| 999 | + } |
| 1000 | + }, |
| 1001 | + |
| 1002 | + getFormattedValue: function (val, dataType) |
| 1003 | + { |
| 1004 | + val = this.getCleanedValue(val, dataType); |
| 1005 | + |
| 1006 | + switch (dataType) |
| 1007 | + { |
| 1008 | + case "Integer": |
| 1009 | + val = parseInt(val); |
| 1010 | + |
| 1011 | + if (!isFinite(val)) |
| 1012 | + val = null; |
| 1013 | + |
| 1014 | + return val; |
981 | 1015 | case "Decimal": |
982 | 1016 | case "Currency": |
983 | 1017 | //case "Percent": |
984 | | - val = String(val).replace(/[^0-9,.-]/g, "").replace(/,/g, "").replace(/\$/g, ""); |
985 | 1018 |
|
986 | 1019 | // TODO: filter down to one decimal point |
987 | 1020 | // TODO: filter out non numerics |
|
1019 | 1052 |
|
1020 | 1053 | return val; |
1021 | 1054 | case "Date": |
1022 | | - val = parseForValidDate(String(val).replace(/[^0-9a-zA-Z-\/]/g, "")); |
| 1055 | + val = parseForValidDate(val); |
1023 | 1056 |
|
1024 | 1057 | if (val == null || !isFinite(val)) |
1025 | 1058 | return null; |
|
0 commit comments