diff options
author | Bryce Johnson <bryce@gitlab.com> | 2016-09-08 15:13:15 +0200 |
---|---|---|
committer | Bryce Johnson <bryce@gitlab.com> | 2016-10-05 11:25:01 +0200 |
commit | 8377c2fbc3f6b43b7cd3d965eca2a87e318ae227 (patch) | |
tree | 0a4dbda8044f139864d58275c4b9d49db0bbf53b /app/assets/javascripts/todos.js | |
parent | 45ae34f883b777b83ce4ae319c23cb5396403b5e (diff) | |
download | gitlab-ce-8377c2fbc3f6b43b7cd3d965eca2a87e318ae227.tar.gz |
Refactor Todos to ES6.
Diffstat (limited to 'app/assets/javascripts/todos.js')
-rw-r--r-- | app/assets/javascripts/todos.js | 176 |
1 files changed, 0 insertions, 176 deletions
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('<div class="nothing-here-block">You\'re all done!</div>'); - 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); |