From 41d450b4044056ff4f73e639de129519b9b0657c Mon Sep 17 00:00:00 2001 From: Don Naegely Date: Mon, 13 Oct 2014 15:12:58 -0400 Subject: [PATCH 1/2] Allow negation/exclusion for searchable fields Signed-off-by: Don Naegely --- src/js/cilantro/ui/controls/search.js | 22 +++++++++++++++++++--- src/scss/views/_field-value-search.scss | 21 ++++++++++++++++++--- src/templates/controls/search/layout.html | 4 ++++ 3 files changed, 41 insertions(+), 6 deletions(-) diff --git a/src/js/cilantro/ui/controls/search.js b/src/js/cilantro/ui/controls/search.js index 70a16ec3..4637579c 100644 --- a/src/js/cilantro/ui/controls/search.js +++ b/src/js/cilantro/ui/controls/search.js @@ -133,7 +133,8 @@ define([ searchPaginator: SearchPaginator, events: { - 'click [data-action=clear]': 'clearValues' + 'click [data-action=clear]': 'clearValues', + 'change [name=exclude]': 'change' }, regions: { @@ -150,6 +151,10 @@ define([ values: values.ValueList }, + ui: { + excludeCheckbox: '[name=exclude]' + }, + initialize: function() { // Initialize a new collection of values for use by the // two regions. This is shared between the source data @@ -215,12 +220,23 @@ define([ if (this.model) return this.model.id; }, - // This is currently always an 'in', however 'not in' may be - // desirable as well. getOperator: function() { + if (this.ui.excludeCheckbox.prop('checked')) { + return '-in'; + } + return 'in'; }, + setOperator: function(operator) { + if (operator === '-in') { + this.ui.excludeCheckbox.prop('checked', true); + } + else { + this.ui.excludeCheckbox.prop('checked', false); + } + }, + // Returns an array of objects with value and label attributes. // These are returned as is to enable correct repopulation. getValue: function() { diff --git a/src/scss/views/_field-value-search.scss b/src/scss/views/_field-value-search.scss index 43a4f986..f08e6a9b 100644 --- a/src/scss/views/_field-value-search.scss +++ b/src/scss/views/_field-value-search.scss @@ -1,10 +1,25 @@ .field-value-search { - .paginator { - text-align: right; - } .toolbar { .btn-danger { float: right; } + + .exclude-container { + margin-top: 5px; + border-top: 1px solid #c9c9c9; + } + + .exclude-checkbox { + padding: 0px; + margin: 0px; + width: 12px; + height: 12px; + } + + .exclude-label { + margin-left: 5px; + font-size: 13px; + vertical-align: middle; + } } } diff --git a/src/templates/controls/search/layout.html b/src/templates/controls/search/layout.html index 4b9730a3..0a47aa29 100644 --- a/src/templates/controls/search/layout.html +++ b/src/templates/controls/search/layout.html @@ -5,6 +5,10 @@ Clear
+
+ + Exclude selected values +
From 04184e829a92bd7f04b0b736cb1efb29ed49fdd5 Mon Sep 17 00:00:00 2001 From: Don Naegely Date: Tue, 14 Oct 2014 15:03:27 -0400 Subject: [PATCH 2/2] Move exclude checkbox and clear button above text area in search control Signed-off-by: Don Naegely --- src/scss/views/_field-value-search.scss | 8 ++++++-- src/templates/controls/search/layout.html | 18 ++++++++++-------- 2 files changed, 16 insertions(+), 10 deletions(-) diff --git a/src/scss/views/_field-value-search.scss b/src/scss/views/_field-value-search.scss index f08e6a9b..34e266b5 100644 --- a/src/scss/views/_field-value-search.scss +++ b/src/scss/views/_field-value-search.scss @@ -1,12 +1,16 @@ .field-value-search { .toolbar { + .page-numbers { + float: right; + padding: 0px; + } + .btn-danger { float: right; } .exclude-container { - margin-top: 5px; - border-top: 1px solid #c9c9c9; + display: inline-block; } .exclude-checkbox { diff --git a/src/templates/controls/search/layout.html b/src/templates/controls/search/layout.html index 0a47aa29..8341b93e 100644 --- a/src/templates/controls/search/layout.html +++ b/src/templates/controls/search/layout.html @@ -1,17 +1,19 @@
+
+
+
+
+
- -
Exclude selected values
+
-
-
-
-
+
+