Make label filter URL dynamic
This commit is contained in:
parent
4371f84564
commit
611ac8e342
|
@ -21,7 +21,7 @@ export default class LabelsSelect {
|
|||
}
|
||||
|
||||
$els.each(function(i, dropdown) {
|
||||
var $block, $colorPreview, $dropdown, $form, $loading, $selectbox, $sidebarCollapsedValue, $value, abilityName, defaultLabel, enableLabelCreateButton, issueURLSplit, issueUpdateURL, labelHTMLTemplate, labelNoneHTMLTemplate, labelUrl, namespacePath, projectPath, saveLabelData, selectedLabel, showAny, showNo, $sidebarLabelTooltip, initialSelected, $toggleText, fieldName, useId, propertyName, showMenuAbove, $container, $dropdownContainer;
|
||||
var $block, $colorPreview, $dropdown, $form, $loading, $selectbox, $sidebarCollapsedValue, $value, abilityName, defaultLabel, enableLabelCreateButton, issueURLSplit, issueUpdateURL, labelUrl, namespacePath, projectPath, saveLabelData, selectedLabel, showAny, showNo, $sidebarLabelTooltip, initialSelected, $toggleText, fieldName, useId, propertyName, showMenuAbove, $container, $dropdownContainer;
|
||||
$dropdown = $(dropdown);
|
||||
$dropdownContainer = $dropdown.closest('.labels-filter');
|
||||
$toggleText = $dropdown.find('.dropdown-toggle-text');
|
||||
|
@ -53,13 +53,6 @@ export default class LabelsSelect {
|
|||
.map(function () {
|
||||
return this.value;
|
||||
}).get();
|
||||
if (issueUpdateURL != null) {
|
||||
issueURLSplit = issueUpdateURL.split('/');
|
||||
}
|
||||
if (issueUpdateURL) {
|
||||
labelHTMLTemplate = _.template('<% _.each(labels, function(label){ %> <a href="<%- ["",issueURLSplit[1], issueURLSplit[2],""].join("/") %>issues?label_name[]=<%- encodeURIComponent(label.title) %>"> <span class="label has-tooltip color-label" title="<%- label.description %>" style="background-color: <%- label.color %>; color: <%- label.text_color %>;"> <%- label.title %> </span> </a> <% }); %>');
|
||||
labelNoneHTMLTemplate = '<span class="no-value">None</span>';
|
||||
}
|
||||
const handleClick = options.handleClick;
|
||||
|
||||
$sidebarLabelTooltip.tooltip();
|
||||
|
@ -91,14 +84,17 @@ export default class LabelsSelect {
|
|||
$loading.fadeOut();
|
||||
$dropdown.trigger('loaded.gl.dropdown');
|
||||
$selectbox.hide();
|
||||
data.issueURLSplit = issueURLSplit;
|
||||
data.issueUpdateURL = issueUpdateURL;
|
||||
labelCount = 0;
|
||||
if (data.labels.length) {
|
||||
template = labelHTMLTemplate(data);
|
||||
if (data.labels.length && issueUpdateURL) {
|
||||
template = LabelsSelect.getLabelTemplate({
|
||||
labels: data.labels,
|
||||
issueUpdateURL,
|
||||
});
|
||||
labelCount = data.labels.length;
|
||||
}
|
||||
else {
|
||||
template = labelNoneHTMLTemplate;
|
||||
template = '<span class="no-value">None</span>';
|
||||
}
|
||||
$value.removeAttr('style').html(template);
|
||||
$sidebarCollapsedValue.text(labelCount);
|
||||
|
@ -418,6 +414,26 @@ export default class LabelsSelect {
|
|||
this.bindEvents();
|
||||
}
|
||||
|
||||
static getLabelTemplate(tplData) {
|
||||
// We could use ES6 template string here
|
||||
// and properly indent markup for readability
|
||||
// but that also introduces unintended white-space
|
||||
// so best approach is to use traditional way of
|
||||
// concatenation
|
||||
// see: http://2ality.com/2016/05/template-literal-whitespace.html#joining-arrays
|
||||
const tpl = _.template([
|
||||
'<% _.each(labels, function(label){ %>',
|
||||
'<a href="<%- issueUpdateURL.slice(0, issueUpdateURL.lastIndexOf("/")) %>?label_name[]=<%- encodeURIComponent(label.title) %>">',
|
||||
'<span class="label has-tooltip color-label" title="<%- label.description %>" style="background-color: <%- label.color %>; color: <%- label.text_color %>;">',
|
||||
'<%- label.title %>',
|
||||
'</span>',
|
||||
'</a>',
|
||||
'<% }); %>',
|
||||
].join(''));
|
||||
|
||||
return tpl(tplData);
|
||||
}
|
||||
|
||||
bindEvents() {
|
||||
return $('body').on('change', '.selected_issue', this.onSelectCheckboxIssue);
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue