74 lines
1.8 KiB
JavaScript
74 lines
1.8 KiB
JavaScript
![]() |
/* global Flash */
|
||
|
|
||
|
import axios from './lib/utils/axios_utils';
|
||
|
import { n__, s__ } from './locale';
|
||
|
|
||
|
export function getHeaderText(childElementCount, mergeRequestCount) {
|
||
|
if (childElementCount === 0) {
|
||
|
return `${mergeRequestCount} ${n__('merge request', 'merge requests', mergeRequestCount)}`;
|
||
|
}
|
||
|
return ',';
|
||
|
}
|
||
|
|
||
|
export function createHeader(childElementCount, mergeRequestCount) {
|
||
|
const headerText = getHeaderText(childElementCount, mergeRequestCount);
|
||
|
|
||
|
return $('<span />', {
|
||
|
class: 'append-right-5',
|
||
|
text: headerText,
|
||
|
});
|
||
|
}
|
||
|
|
||
|
export function createLink(mergeRequest) {
|
||
|
return $('<a />', {
|
||
|
class: 'append-right-5',
|
||
|
href: mergeRequest.path,
|
||
|
text: `!${mergeRequest.iid}`,
|
||
|
});
|
||
|
}
|
||
|
|
||
|
export function createTitle(mergeRequest) {
|
||
|
return $('<span />', {
|
||
|
text: mergeRequest.title,
|
||
|
});
|
||
|
}
|
||
|
|
||
|
export function createItem(mergeRequest) {
|
||
|
const $item = $('<span />');
|
||
|
const $link = createLink(mergeRequest);
|
||
|
const $title = createTitle(mergeRequest);
|
||
|
$item.append($link);
|
||
|
$item.append($title);
|
||
|
|
||
|
return $item;
|
||
|
}
|
||
|
|
||
|
export function createContent(mergeRequests) {
|
||
|
const $content = $('<span />');
|
||
|
|
||
|
if (mergeRequests.length === 0) {
|
||
|
$content.text(s__('Commits|No related merge requests found'));
|
||
|
} else {
|
||
|
mergeRequests.forEach((mergeRequest) => {
|
||
|
const $header = createHeader($content.children().length, mergeRequests.length);
|
||
|
const $item = createItem(mergeRequest);
|
||
|
$content.append($header);
|
||
|
$content.append($item);
|
||
|
});
|
||
|
}
|
||
|
|
||
|
return $content;
|
||
|
}
|
||
|
|
||
|
export function fetchCommitMergeRequests() {
|
||
|
const $container = $('.merge-requests');
|
||
|
|
||
|
axios.get($container.data('projectCommitPath'))
|
||
|
.then((response) => {
|
||
|
const $content = createContent(response.data);
|
||
|
|
||
|
$container.html($content);
|
||
|
})
|
||
|
.catch(() => Flash(s__('Commits|An error occurred while fetching merge requests data.')));
|
||
|
}
|