From 45e13c3e4df634749b905f9287b83eab59482915 Mon Sep 17 00:00:00 2001 From: Francis Lachapelle Date: Mon, 2 Jan 2012 19:02:43 +0000 Subject: [PATCH] See ChangeLog. Monotone-Parent: 2c40f25dddacc34d66befa0a7c8e6c93868a9a92 Monotone-Revision: da4e71f9c5deca84b2df4c90effe9c90f66eb04c Monotone-Author: flachapelle@inverse.ca Monotone-Date: 2012-01-02T19:02:43 --- ChangeLog | 5 ++++ UI/WebServerResources/UIxFilterEditor.js | 37 ++++++++++++++++++------ 2 files changed, 33 insertions(+), 9 deletions(-) diff --git a/ChangeLog b/ChangeLog index 9e05548a2..7cce59274 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2012-01-02 Francis Lachapelle + + * UI/WebServerResources/UIxFilterEditor.js (ensureFieldValidity): + a field value is always considered invalid when empty. + 2011-12-29 Ludovic Marcotte * SoObjects/SOGo/SOGoSQLUserProfile.m (_sqlJsonRepresentation:): diff --git a/UI/WebServerResources/UIxFilterEditor.js b/UI/WebServerResources/UIxFilterEditor.js index 8df0d2b4d..da4e4358e 100644 --- a/UI/WebServerResources/UIxFilterEditor.js +++ b/UI/WebServerResources/UIxFilterEditor.js @@ -443,11 +443,10 @@ function ensureValueInputRepresentation(container, valueSpan) { } function ensureFieldValidity(input) { - var valid = true; - if (input.rule.field == "size") { + var valid = ensureFieldIsNotEmpty(input); + if (valid && input.rule.field == "size") { valid = ensureFieldIsNumerical(input); - } else - input.removeClassName("_invalid"); + } return valid; } @@ -456,7 +455,7 @@ function onValueInputChange(event) { if (ensureFieldValidity(this)) this.rule.value = this.value; else - this.rule.value = "0"; + this.rule.value = ""; } function ensureFieldIsNumerical(input) { @@ -470,6 +469,17 @@ function ensureFieldIsNumerical(input) { return valid; } +function ensureFieldIsNotEmpty(input) { + var valid = !input.value.blank(); + if (valid) { + input.removeClassName("_invalid"); + } else { + input.addClassName("_invalid"); + } + + return valid; +} + function appendAction(container, action) { var actionDiv = createElement("div", null, "action", { action: action }, null, @@ -773,11 +783,20 @@ function onActionDeleteClick(event) { } function savePreferences() { - if (window.opener) { - window.opener.updateFilterFromEditor(filterId, Object.toJSON(filter)); - } - window.close(); + var inputs = $$("DIV#filterRules input"); + var valid = true; + inputs.each(function(input) { + if (input.hasClassName("_invalid")) + valid = false; + }); + if (valid) { + if (window.opener) { + window.opener.updateFilterFromEditor(filterId, Object.toJSON(filter)); + } + window.close(); + } + return false; }