diff --git a/client/javascript/app/script_client.js b/client/javascript/app/script_client.js index 02bda1b163d823f778c284e186dd91a290c803f2..d139ae71708f5b9e32a78dd8688c4a03a8a1c8f4 100644 --- a/client/javascript/app/script_client.js +++ b/client/javascript/app/script_client.js @@ -875,52 +875,53 @@ vitisApp.on('appInitCtrlLoaded', function () { if (typeof (sValue) !== "undefined" && (sValue.toString()) !== "") { if (goog.isDefAndNotNull(oFormElement["comparator"])) { - if (goog.isDefAndNotNull(oFormElement["comparator"]["formater"])) { - sValue = oFormElement["comparator"]["formater"].replace(/<VALUE_TO_REPLACE>/g, sValue); + var aOperators = []; + for (var j = 0;j < oFormElement["comparator"].length;j++){ + if(goog.isObject(oFormElement["comparator"][j])){ + var oOperator = {}; + if (goog.isDefAndNotNull(oFormElement["comparator"][j]["formater"])) { + sValue = oFormElement["comparator"][j]["formater"].replace(/<VALUE_TO_REPLACE>/g, sValue); + } + + if(goog.isArray(oFormElement["comparator"][j]["compare_operator"])){ + oOperator["relation"] = (goog.isDefAndNotNull(oFormElement["comparator"][j]["relation"]) ? oFormElement["comparator"][j]["relation"] : "AND"); + oOperator["operators"] = []; + for (var k = 0; k < oFormElement["comparator"][j]["compare_operator"].length; k++){ + oOperator["operators"].push({ + "column": (goog.isArray(oFormElement["comparator"][j]["column"]) ? oFormElement["comparator"][j]["column"][k] : oFormElement["name"]), + "compare_operator": oFormElement["comparator"][j]["compare_operator"][k], + "value": sValue + }); + } + }else{ + oOperator["column"] = (goog.isDefAndNotNull(oFormElement["comparator"][j]["column"]) ? oFormElement["comparator"][j]["column"] : oFormElement["name"]); + oOperator["compare_operator"] = oFormElement["comparator"][j]["compare_operator"]; + oOperator["value"] = sValue; + } + + if(goog.isDefAndNotNull(oFormElement["comparator"][j]["compare_operator_options"])){ + oOperator["compare_operator_options"] = oFormElement["comparator"][j]["compare_operator_options"]; + } + + aOperators.push(oOperator); + }else{ + // deprecated branch + console.warn("This use of compare attribute is deprecated in json form") + aOperators.push({ + "column": (goog.isDefAndNotNull(oFormElement["attrToCompare"]) ? oFormElement["attrToCompare"][j] : oFormElement["name"]), + "compare_operator": oFormElement["comparator"][j], + "value": sValue + }); + } } - // - for (var j = 0; j < oFormElement["comparator"].length; j++) { + if(goog.isDefAndNotNull(oFormElement["comparator_relation"])){ oFilter["operators"].push({ - "column": (goog.isDefAndNotNull(oFormElement["attrToCompare"]) ? oFormElement["attrToCompare"][j] : oFormElement["name"]), - "compare_operator": oFormElement["comparator"][j], - "value": sValue + "relation": oFormElement["comparator_relation"], + "operators": aOperators }); + }else{ + oFilter["operators"] = oFilter["operators"].concat(aOperators); } - /* - oFormElement["comparator"]["value"] = sValue; - oFilter["operators"].push(oFormElement["comparator"]); - - for (var j = 0; j < oFormElement["comparator"].length; j++) { - var sFormElement = ""; - if (goog.isDefAndNotNull(oFormElement["attrToCompare"])) { - sFormElement = (goog.isDefAndNotNull(oFormElement["attrToCompare"][j]) ? oFormElement["attrToCompare"][j] : oFormElement["name"]); - } else { - sFormElement = oFormElement["name"]; - } - var bIsNotNumber = true; - if (goog.isDefAndNotNull(oFormElement["NaNForced"])) { - bIsNotNumber = (goog.isDefAndNotNull(oFormElement["NaNForced"][j]) ? oFormElement["NaNForced"][j] : isNaN(sValue)); - } else { - bIsNotNumber = isNaN(sValue); - } - switch (oFormElement["comparator"][j]) { - case 'LIKE' : - oFilter.push('lower("' + sFormElement + '") LIKE lower(\'%' + sValue + '%\')'); - break; - case 'SQL' : - oFilter.push(sFormElement.replace(/<VALUE_TO_REPLACE>/g, sValue)); - break; - // ajouter d'autre comparateur si besoin ex: BETWEEN ______ AND ______ - default: - // = < <= > >= basique - if (bIsNotNumber) { - sValue = "'" + sValue + "'"; - } - oFilter.push(sFormElement + oFormElement["comparator"][j] + sValue); - break; - } - } - */ } else { if (oFormElement["type"] == "text") { oFilter["operators"].push({