From 2c871ca1968846871ed264cad34b50611eecae3b Mon Sep 17 00:00:00 2001 From: Josh Frye Date: Wed, 3 Feb 2016 17:24:14 -0500 Subject: Delay filter until user stops typing --- app/assets/javascripts/dashboard.js.coffee | 2 +- app/assets/javascripts/issues.js.coffee | 2 +- app/assets/javascripts/projects_list.js.coffee | 49 ++++++++++++++---------- app/assets/javascripts/user.js.coffee | 2 +- app/views/dashboard/_projects_head.html.haml | 2 +- app/views/dashboard/projects/_projects.html.haml | 2 +- 6 files changed, 33 insertions(+), 26 deletions(-) diff --git a/app/assets/javascripts/dashboard.js.coffee b/app/assets/javascripts/dashboard.js.coffee index 00ee503ff16..dc0b9597d1f 100644 --- a/app/assets/javascripts/dashboard.js.coffee +++ b/app/assets/javascripts/dashboard.js.coffee @@ -1,3 +1,3 @@ class @Dashboard constructor: -> - new ProjectsList() + ProjectsList.init() diff --git a/app/assets/javascripts/issues.js.coffee b/app/assets/javascripts/issues.js.coffee index a0acf3028bf..54e00741424 100644 --- a/app/assets/javascripts/issues.js.coffee +++ b/app/assets/javascripts/issues.js.coffee @@ -45,7 +45,7 @@ filterResults: => form = $("#issue_search_form") - search = $("#issue_search").val() + search = $("#projects-list-filter").val() $('.issues-holder').css("opacity", '0.5') issues_url = form.attr('action') + '?' + form.serialize() diff --git a/app/assets/javascripts/projects_list.js.coffee b/app/assets/javascripts/projects_list.js.coffee index b4776493629..384b95118c9 100644 --- a/app/assets/javascripts/projects_list.js.coffee +++ b/app/assets/javascripts/projects_list.js.coffee @@ -1,28 +1,35 @@ -class @ProjectsList - constructor: -> +@ProjectsList = + init: -> $(".projects-list .js-expand").on 'click', (e) -> e.preventDefault() list = $(this).closest('.projects-list') list.find("li").show() list.find("li.bottom").hide() + this.initSearch() - $(".projects-list-filter").keyup -> - terms = $(this).val() - uiBox = $('div.projects-list-holder') - filterSelector = $(this).data('filter-selector') || 'span.filter-title' + initSearch: -> + @timer = null + $("#projects-list-filter").keyup -> + clearTimeout(@timer) + @timer = setTimeout(ProjectsList.filterResults, 500) - $('.projects-list-holder').css("opacity", '0.5') - form = $("#project-list-form") - project_filter_url = form.attr('action') + '?' + form.serialize() - $.ajax - type: "GET" - url: form.attr('action') - data: form.serialize() - complete: -> - $('.projects-list-holder').css("opacity", '1.0') - success: (data) -> - $('.projects-list-holder').html(data.html) - # Change url so if user reload a page - search results are saved - history.replaceState {page: project_filter_url}, document.title, project_filter_url - dataType: "json" - uiBox.find("ul.projects-list li.bottom").hide() + filterResults: => + form = $("#project-list-form") + search = $("#issue_search").val() + uiBox = $('div.projects-list-holder') + + $('.projects-list-holder').css("opacity", '0.5') + + project_filter_url = form.attr('action') + '?' + form.serialize() + $.ajax + type: "GET" + url: form.attr('action') + data: form.serialize() + complete: -> + $('.projects-list-holder').css("opacity", '1.0') + success: (data) -> + $('.projects-list-holder').html(data.html) + # Change url so if user reload a page - search results are saved + history.replaceState {page: project_filter_url}, document.title, project_filter_url + dataType: "json" + uiBox.find("ul.projects-list li.bottom").hide() diff --git a/app/assets/javascripts/user.js.coffee b/app/assets/javascripts/user.js.coffee index ec4271b092c..eb7f7bb26b1 100644 --- a/app/assets/javascripts/user.js.coffee +++ b/app/assets/javascripts/user.js.coffee @@ -1,7 +1,7 @@ class @User constructor: -> $('.profile-groups-avatars').tooltip("placement": "top") - new ProjectsList() + ProjectsList.init() $('.hide-project-limit-message').on 'click', (e) -> path = '/' diff --git a/app/views/dashboard/_projects_head.html.haml b/app/views/dashboard/_projects_head.html.haml index 17eed52957d..ab2da1824c5 100644 --- a/app/views/dashboard/_projects_head.html.haml +++ b/app/views/dashboard/_projects_head.html.haml @@ -15,7 +15,7 @@ .nav-controls = form_tag '', method: :get, class: 'project-list-form', id: 'project-list-form' do |f| .append-right-10.hidden-xs.hidden-sm - = search_field_tag :filter_projects, params[:filter_projects], placeholder: 'Filter by name...', class: 'projects-list-filter form-control issue_search search-text-input', spellcheck: false, id: 'projects-list-filter' + = search_field_tag :filter_projects, params[:filter_projects], placeholder: 'Filter by name...', class: 'projects-list-filter form-control search-text-input', spellcheck: false, id: 'projects-list-filter' - if current_user.can_create_project? = link_to new_project_path, class: 'btn btn-new' do = icon('plus') diff --git a/app/views/dashboard/projects/_projects.html.haml b/app/views/dashboard/projects/_projects.html.haml index 35ef73071c0..c08247cd9ac 100644 --- a/app/views/dashboard/projects/_projects.html.haml +++ b/app/views/dashboard/projects/_projects.html.haml @@ -3,4 +3,4 @@ = render 'shared/projects/list', ci: true :javascript - new ProjectsList(); + ProjectsList.init() -- cgit v1.2.3