Removes CommitsList from global namespace
This commit is contained in:
parent
8af29c214c
commit
2597d8d2e0
|
@ -1,17 +1,19 @@
|
|||
/* eslint-disable func-names, space-before-function-paren, wrap-iife, quotes, consistent-return, no-return-assign, no-param-reassign, one-var, no-var, one-var-declaration-per-line, no-unused-vars, prefer-template, object-shorthand, comma-dangle, max-len, prefer-arrow-callback */
|
||||
/* eslint-disable func-names, wrap-iife, consistent-return,
|
||||
no-return-assign, no-param-reassign, one-var-declaration-per-line, no-unused-vars,
|
||||
prefer-template, object-shorthand, prefer-arrow-callback */
|
||||
/* global Pager */
|
||||
|
||||
window.CommitsList = (function() {
|
||||
var CommitsList = {};
|
||||
export default (function () {
|
||||
const CommitsList = {};
|
||||
|
||||
CommitsList.timer = null;
|
||||
|
||||
CommitsList.init = function(limit) {
|
||||
CommitsList.init = function (limit) {
|
||||
this.$contentList = $('.content_list');
|
||||
|
||||
$("body").on("click", ".day-commits-table li.commit", function(e) {
|
||||
if (e.target.nodeName !== "A") {
|
||||
location.href = $(this).attr("url");
|
||||
$('body').on('click', '.day-commits-table li.commit', function (e) {
|
||||
if (e.target.nodeName !== 'A') {
|
||||
location.href = $(this).attr('url');
|
||||
e.stopPropagation();
|
||||
return false;
|
||||
}
|
||||
|
@ -19,48 +21,47 @@ window.CommitsList = (function() {
|
|||
|
||||
Pager.init(parseInt(limit, 10), false, false, this.processCommits);
|
||||
|
||||
this.content = $("#commits-list");
|
||||
this.searchField = $("#commits-search");
|
||||
this.content = $('#commits-list');
|
||||
this.searchField = $('#commits-search');
|
||||
this.lastSearch = this.searchField.val();
|
||||
return this.initSearch();
|
||||
};
|
||||
|
||||
CommitsList.initSearch = function() {
|
||||
CommitsList.initSearch = function () {
|
||||
this.timer = null;
|
||||
return this.searchField.keyup((function(_this) {
|
||||
return function() {
|
||||
return this.searchField.keyup((function (_this) {
|
||||
return function () {
|
||||
clearTimeout(_this.timer);
|
||||
return _this.timer = setTimeout(_this.filterResults, 500);
|
||||
};
|
||||
})(this));
|
||||
};
|
||||
|
||||
CommitsList.filterResults = function() {
|
||||
var commitsUrl, form, search;
|
||||
form = $(".commits-search-form");
|
||||
search = CommitsList.searchField.val();
|
||||
CommitsList.filterResults = function () {
|
||||
const form = $('.commits-search-form');
|
||||
const search = CommitsList.searchField.val();
|
||||
if (search === CommitsList.lastSearch) return;
|
||||
commitsUrl = form.attr("action") + '?' + form.serialize();
|
||||
const commitsUrl = form.attr('action') + '?' + form.serialize();
|
||||
CommitsList.content.fadeTo('fast', 0.5);
|
||||
return $.ajax({
|
||||
type: "GET",
|
||||
url: form.attr("action"),
|
||||
type: 'GET',
|
||||
url: form.attr('action'),
|
||||
data: form.serialize(),
|
||||
complete: function() {
|
||||
complete: function () {
|
||||
return CommitsList.content.fadeTo('fast', 1.0);
|
||||
},
|
||||
success: function(data) {
|
||||
success: function (data) {
|
||||
CommitsList.lastSearch = search;
|
||||
CommitsList.content.html(data.html);
|
||||
return history.replaceState({
|
||||
page: commitsUrl
|
||||
page: commitsUrl,
|
||||
// Change url so if user reload a page - search results are saved
|
||||
}, document.title, commitsUrl);
|
||||
},
|
||||
error: function() {
|
||||
error: function () {
|
||||
CommitsList.lastSearch = null;
|
||||
},
|
||||
dataType: "json"
|
||||
dataType: 'json',
|
||||
});
|
||||
};
|
||||
|
||||
|
@ -81,7 +82,7 @@ window.CommitsList = (function() {
|
|||
commitsCount = $commitsHeadersLast.nextUntil('li.js-commit-header').find('li.commit').length;
|
||||
|
||||
// Remove duplicate of commits header.
|
||||
processedData = $processedData.not(`li.js-commit-header[data-day="${loadedShownDayFirst}"]`);
|
||||
processedData = $processedData.not(`li.js-commit-header[data-day='${loadedShownDayFirst}']`);
|
||||
|
||||
// Update commits count in the previous commits header.
|
||||
commitsCount += Number($(processedData).nextUntil('li.js-commit-header').first().find('li.commit').length);
|
||||
|
|
|
@ -7,7 +7,6 @@
|
|||
/* global IssuableForm */
|
||||
/* global LabelsSelect */
|
||||
/* global MilestoneSelect */
|
||||
/* global CommitsList */
|
||||
/* global NewBranchForm */
|
||||
/* global NotificationsForm */
|
||||
/* global NotificationsDropdown */
|
||||
|
@ -35,6 +34,7 @@
|
|||
/* global Sidebar */
|
||||
/* global ShortcutsWiki */
|
||||
|
||||
import CommitsList from './commits';
|
||||
import Issue from './issue';
|
||||
import BindInOut from './behaviors/bind_in_out';
|
||||
import DeleteModal from './branches/branches_delete_modal';
|
||||
|
|
|
@ -1,77 +1,73 @@
|
|||
/* global CommitsList */
|
||||
|
||||
import 'vendor/jquery.endless-scroll';
|
||||
import '~/pager';
|
||||
import '~/commits';
|
||||
import CommitsList from '~/commits';
|
||||
|
||||
(() => {
|
||||
describe('Commits List', () => {
|
||||
beforeEach(() => {
|
||||
setFixtures(`
|
||||
<form class="commits-search-form" action="/h5bp/html5-boilerplate/commits/master">
|
||||
<input id="commits-search">
|
||||
</form>
|
||||
<ol id="commits-list"></ol>
|
||||
`);
|
||||
});
|
||||
describe('Commits List', () => {
|
||||
beforeEach(() => {
|
||||
setFixtures(`
|
||||
<form class="commits-search-form" action="/h5bp/html5-boilerplate/commits/master">
|
||||
<input id="commits-search">
|
||||
</form>
|
||||
<ol id="commits-list"></ol>
|
||||
`);
|
||||
});
|
||||
|
||||
it('should be defined', () => {
|
||||
expect(CommitsList).toBeDefined();
|
||||
});
|
||||
it('should be defined', () => {
|
||||
expect(CommitsList).toBeDefined();
|
||||
});
|
||||
|
||||
describe('processCommits', () => {
|
||||
it('should join commit headers', () => {
|
||||
CommitsList.$contentList = $(`
|
||||
<div>
|
||||
<li class="commit-header" data-day="2016-09-20">
|
||||
<span class="day">20 Sep, 2016</span>
|
||||
<span class="commits-count">1 commit</span>
|
||||
</li>
|
||||
<li class="commit"></li>
|
||||
</div>
|
||||
`);
|
||||
|
||||
const data = `
|
||||
describe('processCommits', () => {
|
||||
it('should join commit headers', () => {
|
||||
CommitsList.$contentList = $(`
|
||||
<div>
|
||||
<li class="commit-header" data-day="2016-09-20">
|
||||
<span class="day">20 Sep, 2016</span>
|
||||
<span class="commits-count">1 commit</span>
|
||||
</li>
|
||||
<li class="commit"></li>
|
||||
`;
|
||||
</div>
|
||||
`);
|
||||
|
||||
// The last commit header should be removed
|
||||
// since the previous one has the same data-day value.
|
||||
expect(CommitsList.processCommits(data).find('li.commit-header').length).toBe(0);
|
||||
});
|
||||
});
|
||||
const data = `
|
||||
<li class="commit-header" data-day="2016-09-20">
|
||||
<span class="day">20 Sep, 2016</span>
|
||||
<span class="commits-count">1 commit</span>
|
||||
</li>
|
||||
<li class="commit"></li>
|
||||
`;
|
||||
|
||||
describe('on entering input', () => {
|
||||
let ajaxSpy;
|
||||
|
||||
beforeEach(() => {
|
||||
CommitsList.init(25);
|
||||
CommitsList.searchField.val('');
|
||||
|
||||
spyOn(history, 'replaceState').and.stub();
|
||||
ajaxSpy = spyOn(jQuery, 'ajax').and.callFake((req) => {
|
||||
req.success({
|
||||
data: '<li>Result</li>',
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
it('should save the last search string', () => {
|
||||
CommitsList.searchField.val('GitLab');
|
||||
CommitsList.filterResults();
|
||||
expect(ajaxSpy).toHaveBeenCalled();
|
||||
expect(CommitsList.lastSearch).toEqual('GitLab');
|
||||
});
|
||||
|
||||
it('should not make ajax call if the input does not change', () => {
|
||||
CommitsList.filterResults();
|
||||
expect(ajaxSpy).not.toHaveBeenCalled();
|
||||
expect(CommitsList.lastSearch).toEqual('');
|
||||
});
|
||||
// The last commit header should be removed
|
||||
// since the previous one has the same data-day value.
|
||||
expect(CommitsList.processCommits(data).find('li.commit-header').length).toBe(0);
|
||||
});
|
||||
});
|
||||
})();
|
||||
|
||||
describe('on entering input', () => {
|
||||
let ajaxSpy;
|
||||
|
||||
beforeEach(() => {
|
||||
CommitsList.init(25);
|
||||
CommitsList.searchField.val('');
|
||||
|
||||
spyOn(history, 'replaceState').and.stub();
|
||||
ajaxSpy = spyOn(jQuery, 'ajax').and.callFake((req) => {
|
||||
req.success({
|
||||
data: '<li>Result</li>',
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
it('should save the last search string', () => {
|
||||
CommitsList.searchField.val('GitLab');
|
||||
CommitsList.filterResults();
|
||||
expect(ajaxSpy).toHaveBeenCalled();
|
||||
expect(CommitsList.lastSearch).toEqual('GitLab');
|
||||
});
|
||||
|
||||
it('should not make ajax call if the input does not change', () => {
|
||||
CommitsList.filterResults();
|
||||
expect(ajaxSpy).not.toHaveBeenCalled();
|
||||
expect(CommitsList.lastSearch).toEqual('');
|
||||
});
|
||||
});
|
||||
});
|
||||
|
|
Loading…
Reference in New Issue