From 8377c2fbc3f6b43b7cd3d965eca2a87e318ae227 Mon Sep 17 00:00:00 2001 From: Bryce Johnson Date: Thu, 8 Sep 2016 15:13:15 +0200 Subject: Refactor Todos to ES6. --- app/assets/javascripts/todos.js | 176 ---------------------------------------- 1 file changed, 176 deletions(-) delete mode 100644 app/assets/javascripts/todos.js (limited to 'app/assets/javascripts/todos.js') diff --git a/app/assets/javascripts/todos.js b/app/assets/javascripts/todos.js deleted file mode 100644 index 93421649ac7..00000000000 --- a/app/assets/javascripts/todos.js +++ /dev/null @@ -1,176 +0,0 @@ -(function() { - var bind = function(fn, me){ return function(){ return fn.apply(me, arguments); }; }; - - this.Todos = (function() { - function Todos(opts) { - var ref; - if (opts == null) { - opts = {}; - } - this.allDoneClicked = bind(this.allDoneClicked, this); - this.doneClicked = bind(this.doneClicked, this); - this.el = (ref = opts.el) != null ? ref : $('.js-todos-options'); - this.perPage = this.el.data('perPage'); - this.clearListeners(); - this.initBtnListeners(); - this.initFilters(); - } - - Todos.prototype.clearListeners = function() { - $('.done-todo').off('click'); - $('.js-todos-mark-all').off('click'); - return $('.todo').off('click'); - }; - - Todos.prototype.initBtnListeners = function() { - $('.done-todo').on('click', this.doneClicked); - $('.js-todos-mark-all').on('click', this.allDoneClicked); - return $('.todo').on('click', this.goToTodoUrl); - }; - - Todos.prototype.initFilters = function() { - new UsersSelect(); - this.initFilterDropdown($('.js-project-search'), 'project_id', ['text']); - this.initFilterDropdown($('.js-type-search'), 'type'); - this.initFilterDropdown($('.js-action-search'), 'action_id'); - - $('form.filter-form').on('submit', function (event) { - event.preventDefault(); - Turbolinks.visit(this.action + '&' + $(this).serialize()); - }); - }; - - Todos.prototype.initFilterDropdown = function($dropdown, fieldName, searchFields) { - $dropdown.glDropdown({ - selectable: true, - filterable: searchFields ? true : false, - fieldName: fieldName, - search: { fields: searchFields }, - data: $dropdown.data('data'), - clicked: function() { - return $dropdown.closest('form.filter-form').submit(); - } - }) - }; - - Todos.prototype.doneClicked = function(e) { - var $this; - e.preventDefault(); - e.stopImmediatePropagation(); - $this = $(e.currentTarget); - $this.disable(); - return $.ajax({ - type: 'POST', - url: $this.attr('href'), - dataType: 'json', - data: { - '_method': 'delete' - }, - success: (function(_this) { - return function(data) { - _this.redirectIfNeeded(data.count); - _this.clearDone($this.closest('li')); - return _this.updateBadges(data); - }; - })(this) - }); - }; - - Todos.prototype.allDoneClicked = function(e) { - var $this; - e.preventDefault(); - e.stopImmediatePropagation(); - $this = $(e.currentTarget); - $this.disable(); - return $.ajax({ - type: 'POST', - url: $this.attr('href'), - dataType: 'json', - data: { - '_method': 'delete' - }, - success: (function(_this) { - return function(data) { - $this.remove(); - $('.prepend-top-default').html('
You\'re all done!
'); - return _this.updateBadges(data); - }; - })(this) - }); - }; - - Todos.prototype.clearDone = function($row) { - var $ul; - $ul = $row.closest('ul'); - $row.remove(); - if (!$ul.find('li').length) { - return $ul.parents('.panel').remove(); - } - }; - - Todos.prototype.updateBadges = function(data) { - $('.todos-pending .badge, .todos-pending-count').text(data.count); - return $('.todos-done .badge').text(data.done_count); - }; - - Todos.prototype.getTotalPages = function() { - return this.el.data('totalPages'); - }; - - Todos.prototype.getCurrentPage = function() { - return this.el.data('currentPage'); - }; - - Todos.prototype.getTodosPerPage = function() { - return this.el.data('perPage'); - }; - - Todos.prototype.redirectIfNeeded = function(total) { - var currPage, currPages, newPages, pageParams, url; - currPages = this.getTotalPages(); - currPage = this.getCurrentPage(); - // Refresh if no remaining Todos - if (!total) { - location.reload(); - return; - } - // Do nothing if no pagination - if (!currPages) { - return; - } - newPages = Math.ceil(total / this.getTodosPerPage()); - // Includes query strings - url = location.href; - // If new total of pages is different than we have now - if (newPages !== currPages) { - // Redirect to previous page if there's one available - if (currPages > 1 && currPage === currPages) { - pageParams = { - page: currPages - 1 - }; - url = gl.utils.mergeUrlParams(pageParams, url); - } - return Turbolinks.visit(url); - } - }; - - Todos.prototype.goToTodoUrl = function(e) { - var todoLink; - todoLink = $(this).data('url'); - if (!todoLink) { - return; - } - // Allow Meta-Click or Mouse3-click to open in a new tab - if (e.metaKey || e.which === 2) { - e.preventDefault(); - return window.open(todoLink, '_blank'); - } else { - return Turbolinks.visit(todoLink); - } - }; - - return Todos; - - })(); - -}).call(this); -- cgit v1.2.1