Remove old code
This commit is contained in:
parent
bf4e97fc83
commit
8df62a3a64
|
@ -1,6 +1,6 @@
|
|||
/* eslint-disable func-names, space-before-function-paren, no-var, prefer-arrow-callback, wrap-iife, no-shadow, consistent-return, one-var, one-var-declaration-per-line, camelcase, default-case, no-new, quotes, no-duplicate-case, no-case-declarations, no-fallthrough, max-len */
|
||||
/* global ProjectSelect */
|
||||
/* global IssuableIndex */
|
||||
import IssuableIndex from './issuable_index';
|
||||
/* global Milestone */
|
||||
/* global IssuableForm */
|
||||
/* global LabelsSelect */
|
||||
|
@ -173,7 +173,7 @@ import Diff from './diff';
|
|||
filteredSearchManager.setup();
|
||||
}
|
||||
const pagePrefix = page === 'projects:merge_requests:index' ? 'merge_request_' : 'issue_';
|
||||
IssuableIndex.init(pagePrefix);
|
||||
new IssuableIndex(pagePrefix);
|
||||
|
||||
shortcut_handler = new ShortcutsNavigation();
|
||||
new UsersSelect();
|
||||
|
|
|
@ -1,83 +1,81 @@
|
|||
/* eslint-disable func-names, space-before-function-paren, wrap-iife, camelcase, no-var, one-var, one-var-declaration-per-line, prefer-template, quotes, object-shorthand, comma-dangle, no-unused-vars, prefer-arrow-callback, no-else-return, vars-on-top, no-new, max-len */
|
||||
class ImporterStatus {
|
||||
constructor(jobsUrl, importUrl) {
|
||||
this.jobsUrl = jobsUrl;
|
||||
this.importUrl = importUrl;
|
||||
this.initStatusPage();
|
||||
this.setAutoUpdate();
|
||||
}
|
||||
|
||||
(function() {
|
||||
window.ImporterStatus = (function() {
|
||||
function ImporterStatus(jobs_url, import_url) {
|
||||
this.jobs_url = jobs_url;
|
||||
this.import_url = import_url;
|
||||
this.initStatusPage();
|
||||
this.setAutoUpdate();
|
||||
}
|
||||
|
||||
ImporterStatus.prototype.initStatusPage = function() {
|
||||
$('.js-add-to-import').off('click').on('click', (function(_this) {
|
||||
return function(e) {
|
||||
var $btn, $namespace_input, $target_field, $tr, id, target_namespace, newName;
|
||||
$btn = $(e.currentTarget);
|
||||
$tr = $btn.closest('tr');
|
||||
$target_field = $tr.find('.import-target');
|
||||
$namespace_input = $target_field.find('.js-select-namespace option:selected');
|
||||
id = $tr.attr('id').replace('repo_', '');
|
||||
target_namespace = null;
|
||||
newName = null;
|
||||
if ($namespace_input.length > 0) {
|
||||
target_namespace = $namespace_input[0].innerHTML;
|
||||
newName = $target_field.find('#path').prop('value');
|
||||
$target_field.empty().append(target_namespace + "/" + newName);
|
||||
}
|
||||
$btn.disable().addClass('is-loading');
|
||||
return $.post(_this.import_url, {
|
||||
repo_id: id,
|
||||
target_namespace: target_namespace,
|
||||
new_name: newName
|
||||
}, {
|
||||
dataType: 'script'
|
||||
});
|
||||
};
|
||||
})(this));
|
||||
return $('.js-import-all').off('click').on('click', function(e) {
|
||||
var $btn;
|
||||
$btn = $(this);
|
||||
initStatusPage() {
|
||||
$('.js-add-to-import')
|
||||
.off('click')
|
||||
.on('click', (event) => {
|
||||
const $btn = $(event.currentTarget);
|
||||
const $tr = $btn.closest('tr');
|
||||
const $targetField = $tr.find('.import-target');
|
||||
const $namespaceInput = $targetField.find('.js-select-namespace option:selected');
|
||||
const id = $tr.attr('id').replace('repo_', '');
|
||||
let targetNamespace;
|
||||
let newName;
|
||||
if ($namespaceInput.length > 0) {
|
||||
targetNamespace = $namespaceInput[0].innerHTML;
|
||||
newName = $targetField.find('#path').prop('value');
|
||||
$targetField.empty().append(`${targetNamespace}/${newName}`);
|
||||
}
|
||||
$btn.disable().addClass('is-loading');
|
||||
return $('.js-add-to-import').each(function() {
|
||||
|
||||
return $.post(this.importUrl, {
|
||||
repo_id: id,
|
||||
target_namespace: targetNamespace,
|
||||
new_name: newName,
|
||||
}, {
|
||||
dataType: 'script',
|
||||
});
|
||||
});
|
||||
|
||||
$('.js-import-all')
|
||||
.off('click')
|
||||
.on('click', function onClickImportAll() {
|
||||
const $btn = $(this);
|
||||
$btn.disable().addClass('is-loading');
|
||||
return $('.js-add-to-import').each(function triggerAddImport() {
|
||||
return $(this).trigger('click');
|
||||
});
|
||||
});
|
||||
};
|
||||
}
|
||||
|
||||
ImporterStatus.prototype.setAutoUpdate = function() {
|
||||
return setInterval(((function(_this) {
|
||||
return function() {
|
||||
return $.get(_this.jobs_url, function(data) {
|
||||
return $.each(data, function(i, job) {
|
||||
var job_item, status_field;
|
||||
job_item = $("#project_" + job.id);
|
||||
status_field = job_item.find(".job-status");
|
||||
if (job.import_status === 'finished') {
|
||||
job_item.removeClass("active").addClass("success");
|
||||
return status_field.html('<span><i class="fa fa-check"></i> done</span>');
|
||||
} else if (job.import_status === 'scheduled') {
|
||||
return status_field.html("<i class='fa fa-spinner fa-spin'></i> scheduled");
|
||||
} else if (job.import_status === 'started') {
|
||||
return status_field.html("<i class='fa fa-spinner fa-spin'></i> started");
|
||||
} else {
|
||||
return status_field.html(job.import_status);
|
||||
}
|
||||
});
|
||||
});
|
||||
};
|
||||
})(this)), 4000);
|
||||
};
|
||||
setAutoUpdate() {
|
||||
return setInterval(() => $.get(this.jobsUrl, data => $.each(data, (i, job) => {
|
||||
const jobItem = $(`#project_${job.id}`);
|
||||
const statusField = jobItem.find('.job-status');
|
||||
|
||||
return ImporterStatus;
|
||||
})();
|
||||
const spinner = '<i class="fa fa-spinner fa-spin"></i>';
|
||||
|
||||
$(function() {
|
||||
if ($('.js-importer-status').length) {
|
||||
var jobsImportPath = $('.js-importer-status').data('jobs-import-path');
|
||||
var importPath = $('.js-importer-status').data('import-path');
|
||||
switch (job.import_status) {
|
||||
case 'finished':
|
||||
jobItem.removeClass('active').addClass('success');
|
||||
statusField.html('<span><i class="fa fa-check"></i> done</span>');
|
||||
break;
|
||||
case 'scheduled':
|
||||
statusField.html(`${spinner} scheduled`);
|
||||
break;
|
||||
case 'started':
|
||||
statusField.html(`${spinner} started`);
|
||||
break;
|
||||
default:
|
||||
statusField.html(job.import_status);
|
||||
break;
|
||||
}
|
||||
})), 4000);
|
||||
}
|
||||
}
|
||||
|
||||
new window.ImporterStatus(jobsImportPath, importPath);
|
||||
}
|
||||
});
|
||||
}).call(window);
|
||||
// eslint-disable-next-line consistent-return
|
||||
export default function initImporterStatus() {
|
||||
const importerStatus = $('.js-importer-status');
|
||||
const data = importerStatus.dataset;
|
||||
|
||||
if (importerStatus.length) {
|
||||
return new ImporterStatus(data.jobsImportPath, data.importPath);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,5 +1,4 @@
|
|||
/* eslint-disable comma-dangle, quotes, consistent-return, func-names, array-callback-return, space-before-function-paren, prefer-arrow-callback, max-len, no-unused-expressions, no-sequences, no-underscore-dangle, no-unused-vars, no-param-reassign */
|
||||
/* global IssuableIndex */
|
||||
import _ from 'underscore';
|
||||
import Flash from './flash';
|
||||
|
||||
|
|
|
@ -1,171 +1,43 @@
|
|||
/* eslint-disable no-param-reassign, func-names, no-var, camelcase, no-unused-vars, object-shorthand, space-before-function-paren, no-return-assign, comma-dangle, consistent-return, one-var, one-var-declaration-per-line, quotes, prefer-template, prefer-arrow-callback, wrap-iife, max-len */
|
||||
/* global IssuableIndex */
|
||||
import _ from 'underscore';
|
||||
import IssuableBulkUpdateSidebar from './issuable_bulk_update_sidebar';
|
||||
import IssuableBulkUpdateActions from './issuable_bulk_update_actions';
|
||||
|
||||
((global) => {
|
||||
var issuable_created;
|
||||
export default class IssuableIndex {
|
||||
constructor(pagePrefix) {
|
||||
this.initBulkUpdate(pagePrefix);
|
||||
IssuableIndex.resetIncomingEmailToken();
|
||||
this.initLabelFilterRemove();
|
||||
}
|
||||
initBulkUpdate(pagePrefix) {
|
||||
const userCanBulkUpdate = $('.issues-bulk-update').length > 0;
|
||||
const alreadyInitialized = !!this.bulkUpdateSidebar;
|
||||
|
||||
issuable_created = false;
|
||||
|
||||
global.IssuableIndex = {
|
||||
init: function(pagePrefix) {
|
||||
IssuableIndex.initTemplates();
|
||||
IssuableIndex.initSearch();
|
||||
IssuableIndex.initBulkUpdate(pagePrefix);
|
||||
IssuableIndex.initResetFilters();
|
||||
IssuableIndex.resetIncomingEmailToken();
|
||||
IssuableIndex.initLabelFilterRemove();
|
||||
},
|
||||
initTemplates: function() {
|
||||
return IssuableIndex.labelRow = _.template('<% _.each(labels, function(label){ %> <span class="label-row btn-group" role="group" aria-label="<%- label.title %>" style="color: <%- label.text_color %>;"> <a href="#" class="btn btn-transparent has-tooltip" style="background-color: <%- label.color %>;" title="<%- label.description %>" data-container="body"> <%- label.title %> </a> <button type="button" class="btn btn-transparent label-remove js-label-filter-remove" style="background-color: <%- label.color %>;" data-label="<%- label.title %>"> <i class="fa fa-times"></i> </button> </span> <% }); %>');
|
||||
},
|
||||
initSearch: function() {
|
||||
const $searchInput = $('#issuable_search');
|
||||
|
||||
IssuableIndex.initSearchState($searchInput);
|
||||
|
||||
// `immediate` param set to false debounces on the `trailing` edge, lets user finish typing
|
||||
const debouncedExecSearch = _.debounce(IssuableIndex.executeSearch, 1000, false);
|
||||
|
||||
$searchInput.off('keyup').on('keyup', debouncedExecSearch);
|
||||
|
||||
// ensures existing filters are preserved when manually submitted
|
||||
$('#issuable_search_form').on('submit', (e) => {
|
||||
e.preventDefault();
|
||||
debouncedExecSearch(e);
|
||||
if (userCanBulkUpdate && !alreadyInitialized) {
|
||||
IssuableBulkUpdateActions.init({
|
||||
prefixId: pagePrefix,
|
||||
});
|
||||
},
|
||||
initSearchState: function($searchInput) {
|
||||
const currentSearchVal = $searchInput.val();
|
||||
|
||||
IssuableIndex.searchState = {
|
||||
elem: $searchInput,
|
||||
current: currentSearchVal
|
||||
};
|
||||
|
||||
IssuableIndex.maybeFocusOnSearch();
|
||||
},
|
||||
accessSearchPristine: function(set) {
|
||||
// store reference to previous value to prevent search on non-mutating keyup
|
||||
const state = IssuableIndex.searchState;
|
||||
const currentSearchVal = state.elem.val();
|
||||
|
||||
if (set) {
|
||||
state.current = currentSearchVal;
|
||||
} else {
|
||||
return state.current === currentSearchVal;
|
||||
}
|
||||
},
|
||||
maybeFocusOnSearch: function() {
|
||||
const currentSearchVal = IssuableIndex.searchState.current;
|
||||
if (currentSearchVal && currentSearchVal !== '') {
|
||||
const queryLength = currentSearchVal.length;
|
||||
const $searchInput = IssuableIndex.searchState.elem;
|
||||
|
||||
/* The following ensures that the cursor is initially placed at
|
||||
* the end of search input when focus is applied. It accounts
|
||||
* for differences in browser implementations of `setSelectionRange`
|
||||
* and cursor placement for elements in focus.
|
||||
*/
|
||||
$searchInput.focus();
|
||||
if ($searchInput.setSelectionRange) {
|
||||
$searchInput.setSelectionRange(queryLength, queryLength);
|
||||
} else {
|
||||
$searchInput.val(currentSearchVal);
|
||||
}
|
||||
}
|
||||
},
|
||||
executeSearch: function(e) {
|
||||
const $search = $('#issuable_search');
|
||||
const $searchName = $search.attr('name');
|
||||
const $searchValue = $search.val();
|
||||
const $filtersForm = $('.js-filter-form');
|
||||
const $input = $(`input[name='${$searchName}']`, $filtersForm);
|
||||
const isPristine = IssuableIndex.accessSearchPristine();
|
||||
|
||||
if (isPristine) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (!$input.length) {
|
||||
$filtersForm.append(`<input type='hidden' name='${$searchName}' value='${_.escape($searchValue)}'/>`);
|
||||
} else {
|
||||
$input.val($searchValue);
|
||||
}
|
||||
|
||||
IssuableIndex.filterResults($filtersForm);
|
||||
},
|
||||
initLabelFilterRemove: function() {
|
||||
return $(document).off('click', '.js-label-filter-remove').on('click', '.js-label-filter-remove', function(e) {
|
||||
var $button;
|
||||
$button = $(this);
|
||||
// Remove the label input box
|
||||
$('input[name="label_name[]"]').filter(function() {
|
||||
return this.value === $button.data('label');
|
||||
}).remove();
|
||||
// Submit the form to get new data
|
||||
IssuableIndex.filterResults($('.filter-form'));
|
||||
});
|
||||
},
|
||||
filterResults: (function(_this) {
|
||||
return function(form) {
|
||||
var formAction, formData, issuesUrl;
|
||||
formData = form.serializeArray();
|
||||
formData = formData.filter(function(data) {
|
||||
return data.value !== '';
|
||||
});
|
||||
formData = $.param(formData);
|
||||
formAction = form.attr('action');
|
||||
issuesUrl = formAction;
|
||||
issuesUrl += "" + (formAction.indexOf('?') === -1 ? '?' : '&');
|
||||
issuesUrl += formData;
|
||||
return gl.utils.visitUrl(issuesUrl);
|
||||
};
|
||||
})(this),
|
||||
initResetFilters: function() {
|
||||
$('.reset-filters').on('click', function(e) {
|
||||
e.preventDefault();
|
||||
const target = e.target;
|
||||
const $form = $(target).parents('.js-filter-form');
|
||||
const baseIssuesUrl = target.href;
|
||||
|
||||
$form.attr('action', baseIssuesUrl);
|
||||
gl.utils.visitUrl(baseIssuesUrl);
|
||||
});
|
||||
},
|
||||
initBulkUpdate: function(pagePrefix) {
|
||||
const userCanBulkUpdate = $('.issues-bulk-update').length > 0;
|
||||
const alreadyInitialized = !!this.bulkUpdateSidebar;
|
||||
|
||||
if (userCanBulkUpdate && !alreadyInitialized) {
|
||||
IssuableBulkUpdateActions.init({
|
||||
prefixId: pagePrefix,
|
||||
});
|
||||
|
||||
this.bulkUpdateSidebar = new IssuableBulkUpdateSidebar();
|
||||
}
|
||||
},
|
||||
resetIncomingEmailToken: function() {
|
||||
$('.incoming-email-token-reset').on('click', function(e) {
|
||||
e.preventDefault();
|
||||
|
||||
$.ajax({
|
||||
type: 'PUT',
|
||||
url: $('.incoming-email-token-reset').attr('href'),
|
||||
dataType: 'json',
|
||||
success: function(response) {
|
||||
$('#issue_email').val(response.new_issue_address).focus();
|
||||
},
|
||||
beforeSend: function() {
|
||||
$('.incoming-email-token-reset').text('resetting...');
|
||||
},
|
||||
complete: function() {
|
||||
$('.incoming-email-token-reset').text('reset it');
|
||||
}
|
||||
});
|
||||
});
|
||||
this.bulkUpdateSidebar = new IssuableBulkUpdateSidebar();
|
||||
}
|
||||
};
|
||||
})(window);
|
||||
}
|
||||
|
||||
static resetIncomingEmailToken() {
|
||||
$('.incoming-email-token-reset').on('click', (e) => {
|
||||
e.preventDefault();
|
||||
|
||||
$.ajax({
|
||||
type: 'PUT',
|
||||
url: $('.incoming-email-token-reset').attr('href'),
|
||||
dataType: 'json',
|
||||
success(response) {
|
||||
$('#issue_email').val(response.new_issue_address).focus();
|
||||
},
|
||||
beforeSend() {
|
||||
$('.incoming-email-token-reset').text('resetting...');
|
||||
},
|
||||
complete() {
|
||||
$('.incoming-email-token-reset').text('reset it');
|
||||
},
|
||||
});
|
||||
});
|
||||
}
|
||||
}
|
||||
|
|
|
@ -57,7 +57,7 @@ import './gl_field_errors';
|
|||
import './gl_form';
|
||||
import './groups_select';
|
||||
import './header';
|
||||
import './importer_status';
|
||||
import initImporterStatus from './importer_status';
|
||||
import './issuable_index';
|
||||
import './issuable_context';
|
||||
import './issuable_form';
|
||||
|
@ -140,6 +140,7 @@ $(function () {
|
|||
var fitSidebarForSize;
|
||||
|
||||
initBreadcrumbs();
|
||||
initImporterStatus();
|
||||
|
||||
// Set the default path for all cookies to GitLab's root directory
|
||||
Cookies.defaults.path = gon.relative_url_root || '/';
|
||||
|
|
Loading…
Reference in New Issue