From 1b97b384002fdff9e611a94e6469025f72f60b0f Mon Sep 17 00:00:00 2001
From: Mateus Rambo Strey <mars11@inf.ufpr.br>
Date: Tue, 27 Oct 2015 11:51:44 -0200
Subject: [PATCH] in search, remove query and order from filter panel

---
 app/assets/javascripts/application/search.js | 89 ++++++++++++--------
 app/views/search/index.html.erb              |  2 -
 2 files changed, 52 insertions(+), 39 deletions(-)

diff --git a/app/assets/javascripts/application/search.js b/app/assets/javascripts/application/search.js
index 669f8b594..ecb67de39 100644
--- a/app/assets/javascripts/application/search.js
+++ b/app/assets/javascripts/application/search.js
@@ -94,46 +94,39 @@ var search = function() {
     }
 
     function watchParams() {
+      var filter_panel = '.filter-panel';
       $(watch).on('params', function (e, action, type, value) {
         // filter panel
         var text = type + ': ' + value;
         var object = {'type': type, 'value': value, 'text': text };
         switch(action) {
           case 'add':
+            // params not included in filter panel
+            var ignored_params = ['query', 'order'];
             // remove previous element if type is a single value only
-            var single_params = ['query', 'order', 'year'];
+            var single_params = ['year'];
             var index = single_params.indexOf(type);
             if (index > -1) {
                 $.each($('.filter-panel').tagsinput('items'), function (i, v) {
                   if (v.type === single_params[index]) {
-                    $('.filter-panel').tagsinput('remove', { 'type': type, 'value': v.value }, {'ignore': true});
+                    $(filter_panel).tagsinput('remove', { 'type': type, 'value': v.value }, {'ignore': true});
                   }
                 });
             }
             // add object
-            $('.filter-panel').tagsinput('add', object);
+            if (ignored_params.indexOf(type) === -1) {
+              $(filter_panel).tagsinput('add', object);
+            }
             break;
           case 'remove':
             // remove object
-            $('.filter-panel').tagsinput('remove', object);
+            $(filter_panel).tagsinput('remove', object);
             break;
         }
 
         // sidebar
         // set values from params
         switch(type) {
-          // search input
-          case 'query':
-            if ($('.search-input form input[name="query"]').val() !== params.get('query')) {
-              $('.search-input form input[name="query"]').val(params.get('query'));
-            }
-            break;
-          // order
-          case 'order':
-            if ($('select[name="order"]').val() !== params.get('order')) {
-              $('select[name="order"]').val(params.get('order'));
-            }
-            break;
           // subject
           case 'subject':
             // var subjects = params.get('subject');
@@ -166,9 +159,13 @@ var search = function() {
             break;
         }
       });
+      $(watch).on('reset', function (e) {
+        $(filter_panel).tagsinput('removeAll');
+      });
     }
 
     function watchSearchInput() {
+      $('.search-input input').val(params.get('query'));
       $('.search-input form').on('submit', function (event) {
         event.preventDefault();
         params.reset();
@@ -190,10 +187,15 @@ var search = function() {
     }
 
     function watchOrder() {
-      $('select[name="order"]').on('change', function (event) {
+      var select = 'select[name="order"]';
+      $(select).on('change', function (event) {
         params.add('order', this.value);
         searchFetch();
       });
+      // reset
+      $(watch).on('reset', function (e) {
+        $(select).val("");
+      });
     }
 
     function watchFilters() {
@@ -221,38 +223,45 @@ var search = function() {
         }
         filtersFetchInterval();
       });
+      // reset
+      $(watch).on('reset', function (e) {
+        $('#filter-year input[name=singleYear]').val("");
+        $('#filter-year input[name=startYear]').val("");
+        $('#filter-year input[name=endYear]').val("");
+      });
     }
 
     function watchFilterRegex() {
-      $('.regex-submit').on('click', function (event) {
-        event.preventDefault();
-        $.each(['all','exact','any','none'], function(index, value){
-          params.add('regex_' + value, $(".regex input[name="+value+"]").val())
-        });
-        filtersFetchInterval();
-      });
+      // $('.regex-submit').on('click', function (event) {
+      //   event.preventDefault();
+      //   $.each(['all','exact','any','none'], function(index, value){
+      //     params.add('regex_' + value, $(".regex input[name="+value+"]").val())
+      //   });
+      //   filtersFetchInterval();
+      // });
     }
 
     function watchFilterSubject() {
       // watch for changes
-      $('.filter-subject').on('select2:select', function (e) {
-        params.add('subject', e.params.data.id);
-
-        filtersFetchInterval();
-      });
-      $('.filter-subject').on('select2:unselect', function (e) {
-        params.remove('subject', e.params.data.id);
-
-        filtersFetchInterval();
-      });
+      // $('.filter-subject').on('select2:select', function (e) {
+      //   params.add('subject', e.params.data.id);
+      //
+      //   filtersFetchInterval();
+      // });
+      // $('.filter-subject').on('select2:unselect', function (e) {
+      //   params.remove('subject', e.params.data.id);
+      //
+      //   filtersFetchInterval();
+      // });
     }
 
     function watchCheckbox(type, name, set) {
+      var input = 'input[name="' + name + '"]';
       if (set === undefined) { set = false; }
       if (set) {
         var elements = params.get(type);
         if (elements !== undefined) {
-          $('input[name="' + name + '"]').each(function() {
+          $(input).each(function() {
             if (elements.indexOf(this.value) > -1) {
               $(this).attr('checked', true);
             }
@@ -264,7 +273,7 @@ var search = function() {
       }
       else {
         // watch for changes
-        $('input[name="' + name + '"]').on('click', function () {
+        $(input).on('click', function () {
           if (this.checked) {
             params.add(type, this.value);
           }
@@ -274,6 +283,12 @@ var search = function() {
 
           filtersFetchInterval();
         });
+        // reset
+        $(watch).on('reset', function (e) {
+          $(input).each(function () {
+            $(this).attr('checked', false);
+          });
+        });
       }
     }
 
@@ -441,7 +456,7 @@ var searchParameters = function() {
       if (type === undefined) {
         // reset params
         params = JSON.parse(JSON.stringify(default_params));
-        // $(watch).trigger("params", ['all']);
+        $(watch).trigger("reset");
       }
       else {
         // reset params.type
diff --git a/app/views/search/index.html.erb b/app/views/search/index.html.erb
index 9682b66b9..74d412f5c 100644
--- a/app/views/search/index.html.erb
+++ b/app/views/search/index.html.erb
@@ -364,8 +364,6 @@
     itemValue: 'value',
     tagClass: function(item) {
       switch (item.type) {
-        case 'query'   : return 'label label-primary';
-        case 'order'  : return 'label label-danger label-important';
         case 'subject': return 'label label-success';
         case 'type'   : return 'label label-default';
         case 'school_year'     : return 'label label-warning';
-- 
GitLab