From 0ccdb41ced96c304658cf88b0869c5b78a4f15b7 Mon Sep 17 00:00:00 2001
From: Luke Bennett <lukeeeebennettplus@gmail.com>
Date: Tue, 30 Aug 2016 00:28:44 +0100
Subject: [PATCH] Review changes, simplified dropdown init

---
 app/assets/javascripts/todos.js           | 51 +++++------------------
 app/views/dashboard/todos/index.html.haml |  6 +--
 2 files changed, 13 insertions(+), 44 deletions(-)

diff --git a/app/assets/javascripts/todos.js b/app/assets/javascripts/todos.js
index ef1eadfb9c0..a908f730954 100644
--- a/app/assets/javascripts/todos.js
+++ b/app/assets/javascripts/todos.js
@@ -30,9 +30,9 @@
 
     Todos.prototype.initFilters = function() {
       new UsersSelect();
-      this.initProjectFilterDropdown();
-      this.initTypeFilterDropdown();
-      this.initActionFilterDropdown();
+      this.initFilterDropdown($('.js-project-search'), 'project_id', true);
+      this.initFilterDropdown($('.js-type-search'), 'type');
+      this.initFilterDropdown($('.js-action-search'), 'action_id');
 
       $('form.filter-form').on('submit', function (event) {
         event.preventDefault();
@@ -40,47 +40,16 @@
       });
     };
 
-    Todos.prototype.initProjectFilterDropdown = function() {
-      $projectDropdown = $('.js-project-search');
-      $projectDropdown.glDropdown({
-        filterable: true,
+    Todos.prototype.initFilterDropdown = function($dropdown, fieldName, isFilterable) {
+      $dropdown.glDropdown({
         selectable: true,
-        fieldName: 'project_id',
-        data: $projectDropdown.data('data'),
+        filterable: isFilterable,
+        fieldName: fieldName,
+        data: $dropdown.data('data'),
         clicked: function() {
-          if ($projectDropdown.hasClass('js-filter-submit')) {
-            return $projectDropdown.closest('form.filter-form').submit();
-          }
+          return $dropdown.closest('form.filter-form').submit();
         }
-      });
-    };
-
-    Todos.prototype.initTypeFilterDropdown = function() {
-      $typeDropdown = $('.js-type-search');
-      $typeDropdown.glDropdown({
-        selectable: true,
-        fieldName: 'type',
-        data: $typeDropdown.data('data'),
-        clicked: function() {
-          if ($typeDropdown.hasClass('js-filter-submit')) {
-            return $typeDropdown.closest('form.filter-form').submit();
-          }
-        }
-      });
-    };
-
-    Todos.prototype.initActionFilterDropdown = function() {
-      $actionDropdown = $('.js-action-search');
-      $actionDropdown.glDropdown({
-        selectable: true,
-        fieldName: 'action_id',
-        data: $actionDropdown.data('data'),
-        clicked: function() {
-          if ($actionDropdown.hasClass('js-filter-submit')) {
-            return $actionDropdown.closest('form.filter-form').submit();
-          }
-        }
-      });
+      })
     };
 
     Todos.prototype.doneClicked = function(e) {
diff --git a/app/views/dashboard/todos/index.html.haml b/app/views/dashboard/todos/index.html.haml
index 70dd4db6aaf..9d31f31c639 100644
--- a/app/views/dashboard/todos/index.html.haml
+++ b/app/views/dashboard/todos/index.html.haml
@@ -30,12 +30,12 @@
       .filter-item.inline
         - if params[:project_id].present?
           = hidden_field_tag(:project_id, params[:project_id])
-        = dropdown_tag(project_dropdown_label(params[:project_id], 'Project'), options: { toggle_class: 'js-project-search js-filter-submit', title: 'Filter by project', filter: true, filterInput: 'input#search', dropdown_class: 'dropdown-menu-selectable dropdown-menu-project js-filter-submit',
-          placeholder: 'Search projects', data: { data: todo_projects_options, selected: params[:project_id], field_name: 'project_id', default_label: 'Project' } })
+        = dropdown_tag(project_dropdown_label(params[:project_id], 'Project'), options: { toggle_class: 'js-project-search js-filter-submit', title: 'Filter by project', filter: true, filterInput: 'input#project-search', dropdown_class: 'dropdown-menu-selectable dropdown-menu-project js-filter-submit',
+          placeholder: 'Search projects', data: { data: todo_projects_options } })
       .filter-item.inline
         - if params[:author_id].present?
           = hidden_field_tag(:author_id, params[:author_id])
-        = dropdown_tag(user_dropdown_label(params[:author_id], 'Author'), options: { toggle_class: 'js-user-search js-filter-submit js-author-search', title: 'Filter by author', filter: true, filterInput: 'input#search', dropdown_class: 'dropdown-menu-user dropdown-menu-selectable dropdown-menu-author js-filter-submit',
+        = dropdown_tag(user_dropdown_label(params[:author_id], 'Author'), options: { toggle_class: 'js-user-search js-filter-submit js-author-search', title: 'Filter by author', filter: true, filterInput: 'input#author-search', dropdown_class: 'dropdown-menu-user dropdown-menu-selectable dropdown-menu-author js-filter-submit',
           placeholder: 'Search authors', data: { any_user: 'Any Author', first_user: (current_user.username if current_user), current_user: true, project_id: (@project.id if @project), selected: params[:author_id], field_name: 'author_id', default_label: 'Author' } })
       .filter-item.inline
         - if params[:type].present?
-- 
GitLab