Fix FE conflicts
This commit is contained in:
parent
dde9b6698b
commit
4b1d580a84
12 changed files with 1 additions and 358 deletions
|
@ -1,42 +0,0 @@
|
|||
import Vue from 'vue';
|
||||
import stopwatchSvg from 'icons/_icon_stopwatch.svg';
|
||||
|
||||
require('../../../lib/utils/pretty_time');
|
||||
|
||||
(() => {
|
||||
Vue.component('time-tracking-collapsed-state', {
|
||||
name: 'time-tracking-collapsed-state',
|
||||
props: [
|
||||
'showComparisonState',
|
||||
'showSpentOnlyState',
|
||||
'showEstimateOnlyState',
|
||||
'showNoTimeTrackingState',
|
||||
'timeSpentHumanReadable',
|
||||
'timeEstimateHumanReadable',
|
||||
],
|
||||
methods: {
|
||||
abbreviateTime(timeStr) {
|
||||
return gl.utils.prettyTime.abbreviateTime(timeStr);
|
||||
},
|
||||
},
|
||||
template: `
|
||||
<div class='sidebar-collapsed-icon'>
|
||||
${stopwatchSvg}
|
||||
<div class='time-tracking-collapsed-summary'>
|
||||
<div class='compare' v-if='showComparisonState'>
|
||||
<span>{{ abbreviateTime(timeSpentHumanReadable) }} / {{ abbreviateTime(timeEstimateHumanReadable) }}</span>
|
||||
</div>
|
||||
<div class='estimate-only' v-if='showEstimateOnlyState'>
|
||||
<span class='bold'>-- / {{ abbreviateTime(timeEstimateHumanReadable) }}</span>
|
||||
</div>
|
||||
<div class='spend-only' v-if='showSpentOnlyState'>
|
||||
<span class='bold'>{{ abbreviateTime(timeSpentHumanReadable) }} / --</span>
|
||||
</div>
|
||||
<div class='no-tracking' v-if='showNoTimeTrackingState'>
|
||||
<span class='no-value'>None</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
`,
|
||||
});
|
||||
})();
|
|
@ -1,70 +0,0 @@
|
|||
import Vue from 'vue';
|
||||
|
||||
require('../../../lib/utils/pretty_time');
|
||||
|
||||
(() => {
|
||||
const prettyTime = gl.utils.prettyTime;
|
||||
|
||||
Vue.component('time-tracking-comparison-pane', {
|
||||
name: 'time-tracking-comparison-pane',
|
||||
props: [
|
||||
'timeSpent',
|
||||
'timeEstimate',
|
||||
'timeSpentHumanReadable',
|
||||
'timeEstimateHumanReadable',
|
||||
],
|
||||
computed: {
|
||||
parsedRemaining() {
|
||||
const diffSeconds = this.timeEstimate - this.timeSpent;
|
||||
return prettyTime.parseSeconds(diffSeconds);
|
||||
},
|
||||
timeRemainingHumanReadable() {
|
||||
return prettyTime.stringifyTime(this.parsedRemaining);
|
||||
},
|
||||
timeRemainingTooltip() {
|
||||
const prefix = this.timeRemainingMinutes < 0 ? 'Over by' : 'Time remaining:';
|
||||
return `${prefix} ${this.timeRemainingHumanReadable}`;
|
||||
},
|
||||
/* Diff values for comparison meter */
|
||||
timeRemainingMinutes() {
|
||||
return this.timeEstimate - this.timeSpent;
|
||||
},
|
||||
timeRemainingPercent() {
|
||||
return `${Math.floor((this.timeSpent / this.timeEstimate) * 100)}%`;
|
||||
},
|
||||
timeRemainingStatusClass() {
|
||||
return this.timeEstimate >= this.timeSpent ? 'within_estimate' : 'over_estimate';
|
||||
},
|
||||
/* Parsed time values */
|
||||
parsedEstimate() {
|
||||
return prettyTime.parseSeconds(this.timeEstimate);
|
||||
},
|
||||
parsedSpent() {
|
||||
return prettyTime.parseSeconds(this.timeSpent);
|
||||
},
|
||||
},
|
||||
template: `
|
||||
<div class='time-tracking-comparison-pane'>
|
||||
<div class='compare-meter' data-toggle='tooltip' data-placement='top' role='timeRemainingDisplay'
|
||||
:aria-valuenow='timeRemainingTooltip'
|
||||
:title='timeRemainingTooltip'
|
||||
:data-original-title='timeRemainingTooltip'
|
||||
:class='timeRemainingStatusClass'>
|
||||
<div class='meter-container' role='timeSpentPercent' :aria-valuenow='timeRemainingPercent'>
|
||||
<div :style='{ width: timeRemainingPercent }' class='meter-fill'></div>
|
||||
</div>
|
||||
<div class='compare-display-container'>
|
||||
<div class='compare-display pull-left'>
|
||||
<span class='compare-label'>Spent</span>
|
||||
<span class='compare-value spent'>{{ timeSpentHumanReadable }}</span>
|
||||
</div>
|
||||
<div class='compare-display estimated pull-right'>
|
||||
<span class='compare-label'>Est</span>
|
||||
<span class='compare-value'>{{ timeEstimateHumanReadable }}</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
`,
|
||||
});
|
||||
})();
|
|
@ -1,14 +0,0 @@
|
|||
import Vue from 'vue';
|
||||
|
||||
(() => {
|
||||
Vue.component('time-tracking-estimate-only-pane', {
|
||||
name: 'time-tracking-estimate-only-pane',
|
||||
props: ['timeEstimateHumanReadable'],
|
||||
template: `
|
||||
<div class='time-tracking-estimate-only-pane'>
|
||||
<span class='bold'>Estimated:</span>
|
||||
{{ timeEstimateHumanReadable }}
|
||||
</div>
|
||||
`,
|
||||
});
|
||||
})();
|
|
@ -1,25 +0,0 @@
|
|||
import Vue from 'vue';
|
||||
|
||||
(() => {
|
||||
Vue.component('time-tracking-help-state', {
|
||||
name: 'time-tracking-help-state',
|
||||
props: ['docsUrl'],
|
||||
template: `
|
||||
<div class='time-tracking-help-state'>
|
||||
<div class='time-tracking-info'>
|
||||
<h4>Track time with slash commands</h4>
|
||||
<p>Slash commands can be used in the issues description and comment boxes.</p>
|
||||
<p>
|
||||
<code>/estimate</code>
|
||||
will update the estimated time with the latest command.
|
||||
</p>
|
||||
<p>
|
||||
<code>/spend</code>
|
||||
will update the sum of the time spent.
|
||||
</p>
|
||||
<a class='btn btn-default learn-more-button' :href='docsUrl'>Learn more</a>
|
||||
</div>
|
||||
</div>
|
||||
`,
|
||||
});
|
||||
})();
|
|
@ -1,14 +0,0 @@
|
|||
import Vue from 'vue';
|
||||
|
||||
(() => {
|
||||
Vue.component('time-tracking-spent-only-pane', {
|
||||
name: 'time-tracking-spent-only-pane',
|
||||
props: ['timeSpentHumanReadable'],
|
||||
template: `
|
||||
<div class='time-tracking-spend-only-pane'>
|
||||
<span class='bold'>Spent:</span>
|
||||
{{ timeSpentHumanReadable }}
|
||||
</div>
|
||||
`,
|
||||
});
|
||||
})();
|
|
@ -1,117 +0,0 @@
|
|||
import Vue from 'vue';
|
||||
|
||||
require('./help_state');
|
||||
require('./collapsed_state');
|
||||
require('./spent_only_pane');
|
||||
require('./no_tracking_pane');
|
||||
require('./estimate_only_pane');
|
||||
require('./comparison_pane');
|
||||
|
||||
(() => {
|
||||
Vue.component('issuable-time-tracker', {
|
||||
name: 'issuable-time-tracker',
|
||||
props: [
|
||||
'time_estimate',
|
||||
'time_spent',
|
||||
'human_time_estimate',
|
||||
'human_time_spent',
|
||||
'docsUrl',
|
||||
],
|
||||
data() {
|
||||
return {
|
||||
showHelp: false,
|
||||
};
|
||||
},
|
||||
computed: {
|
||||
timeSpent() {
|
||||
return this.time_spent;
|
||||
},
|
||||
timeEstimate() {
|
||||
return this.time_estimate;
|
||||
},
|
||||
timeEstimateHumanReadable() {
|
||||
return this.human_time_estimate;
|
||||
},
|
||||
timeSpentHumanReadable() {
|
||||
return this.human_time_spent;
|
||||
},
|
||||
hasTimeSpent() {
|
||||
return !!this.timeSpent;
|
||||
},
|
||||
hasTimeEstimate() {
|
||||
return !!this.timeEstimate;
|
||||
},
|
||||
showComparisonState() {
|
||||
return this.hasTimeEstimate && this.hasTimeSpent;
|
||||
},
|
||||
showEstimateOnlyState() {
|
||||
return this.hasTimeEstimate && !this.hasTimeSpent;
|
||||
},
|
||||
showSpentOnlyState() {
|
||||
return this.hasTimeSpent && !this.hasTimeEstimate;
|
||||
},
|
||||
showNoTimeTrackingState() {
|
||||
return !this.hasTimeEstimate && !this.hasTimeSpent;
|
||||
},
|
||||
showHelpState() {
|
||||
return !!this.showHelp;
|
||||
},
|
||||
},
|
||||
methods: {
|
||||
toggleHelpState(show) {
|
||||
this.showHelp = show;
|
||||
},
|
||||
},
|
||||
template: `
|
||||
<div class='time_tracker time-tracking-component-wrap' v-cloak>
|
||||
<time-tracking-collapsed-state
|
||||
:show-comparison-state='showComparisonState'
|
||||
:show-help-state='showHelpState'
|
||||
:show-spent-only-state='showSpentOnlyState'
|
||||
:show-estimate-only-state='showEstimateOnlyState'
|
||||
:time-spent-human-readable='timeSpentHumanReadable'
|
||||
:time-estimate-human-readable='timeEstimateHumanReadable'>
|
||||
</time-tracking-collapsed-state>
|
||||
<div class='title hide-collapsed'>
|
||||
Time tracking
|
||||
<div class='help-button pull-right'
|
||||
v-if='!showHelpState'
|
||||
@click='toggleHelpState(true)'>
|
||||
<i class='fa fa-question-circle' aria-hidden='true'></i>
|
||||
</div>
|
||||
<div class='close-help-button pull-right'
|
||||
v-if='showHelpState'
|
||||
@click='toggleHelpState(false)'>
|
||||
<i class='fa fa-close' aria-hidden='true'></i>
|
||||
</div>
|
||||
</div>
|
||||
<div class='time-tracking-content hide-collapsed'>
|
||||
<time-tracking-estimate-only-pane
|
||||
v-if='showEstimateOnlyState'
|
||||
:time-estimate-human-readable='timeEstimateHumanReadable'>
|
||||
</time-tracking-estimate-only-pane>
|
||||
<time-tracking-spent-only-pane
|
||||
v-if='showSpentOnlyState'
|
||||
:time-spent-human-readable='timeSpentHumanReadable'>
|
||||
</time-tracking-spent-only-pane>
|
||||
<time-tracking-no-tracking-pane
|
||||
v-if='showNoTimeTrackingState'>
|
||||
</time-tracking-no-tracking-pane>
|
||||
<time-tracking-comparison-pane
|
||||
v-if='showComparisonState'
|
||||
:time-estimate='timeEstimate'
|
||||
:time-spent='timeSpent'
|
||||
:time-spent-human-readable='timeSpentHumanReadable'
|
||||
:time-estimate-human-readable='timeEstimateHumanReadable'>
|
||||
</time-tracking-comparison-pane>
|
||||
<transition name='help-state-toggle'>
|
||||
<time-tracking-help-state
|
||||
v-if='showHelpState'
|
||||
:docs-url='docsUrl'>
|
||||
</time-tracking-help-state>
|
||||
</transition>
|
||||
</div>
|
||||
</div>
|
||||
`,
|
||||
});
|
||||
})();
|
|
@ -31,27 +31,8 @@
|
|||
toggleLabel(selected, $el) {
|
||||
return $el.text();
|
||||
},
|
||||
<<<<<<< HEAD
|
||||
clicked: (selected, $link) => {
|
||||
this.formSubmit(null, $link);
|
||||
=======
|
||||
clicked: (options) => {
|
||||
const $link = options.$el;
|
||||
|
||||
if (!$link.data('revert')) {
|
||||
this.formSubmit(null, $link);
|
||||
} else {
|
||||
const { $memberListItem, $toggle, $dateInput } = this.getMemberListItems($link);
|
||||
|
||||
$toggle.disable();
|
||||
$dateInput.disable();
|
||||
|
||||
this.overrideLdap($memberListItem, $link.data('endpoint'), false).fail(() => {
|
||||
$toggle.enable();
|
||||
$dateInput.enable();
|
||||
});
|
||||
}
|
||||
>>>>>>> b0a2435... Merge branch 'multiple_assignees_review_upstream' into ee_master
|
||||
this.formSubmit(null, options.$el);
|
||||
},
|
||||
});
|
||||
});
|
||||
|
|
|
@ -121,30 +121,10 @@
|
|||
return $value.css('display', '');
|
||||
},
|
||||
vue: $dropdown.hasClass('js-issue-board-sidebar'),
|
||||
<<<<<<< HEAD
|
||||
clicked: function(selected, $el, e) {
|
||||
=======
|
||||
hideRow: function(milestone) {
|
||||
if ($('html').hasClass('issue-boards-page') && !$dropdown.hasClass('js-issue-board-sidebar') &&
|
||||
!$dropdown.closest('.add-issues-modal').length && gl.issueBoards.BoardsStore.state.currentBoard.milestone) {
|
||||
return milestone !== gl.issueBoards.BoardsStore.state.currentBoard.milestone.title;
|
||||
}
|
||||
|
||||
return false;
|
||||
},
|
||||
isSelectable: function() {
|
||||
if ($('html').hasClass('issue-boards-page') && !$dropdown.hasClass('js-issue-board-sidebar') &&
|
||||
!$dropdown.closest('.add-issues-modal').length && gl.issueBoards.BoardsStore.state.currentBoard.milestone_id) {
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
},
|
||||
clicked: function(options) {
|
||||
const { $el, e } = options;
|
||||
let selected = options.selectedObj;
|
||||
|
||||
>>>>>>> b0a2435... Merge branch 'multiple_assignees_review_upstream' into ee_master
|
||||
var data, isIssueIndex, isMRIndex, page, boardsStore;
|
||||
page = $('body').data('page');
|
||||
isIssueIndex = page === 'projects:issues:index';
|
||||
|
|
|
@ -320,11 +320,6 @@ import eventHub from './sidebar/event_hub';
|
|||
$value.css('display', '');
|
||||
}
|
||||
},
|
||||
<<<<<<< HEAD
|
||||
vue: $dropdown.hasClass('js-issue-board-sidebar'),
|
||||
clicked: function(user, $el, e) {
|
||||
var isIssueIndex, isMRIndex, page, selected, isSelecting;
|
||||
=======
|
||||
multiSelect: $dropdown.hasClass('js-multiselect'),
|
||||
inputMeta: $dropdown.data('input-meta'),
|
||||
clicked: function(options) {
|
||||
|
@ -390,7 +385,6 @@ import eventHub from './sidebar/event_hub';
|
|||
}
|
||||
|
||||
var isIssueIndex, isMRIndex, page, selected;
|
||||
>>>>>>> b0a2435... Merge branch 'multiple_assignees_review_upstream' into ee_master
|
||||
page = $('body').data('page');
|
||||
isIssueIndex = page === 'projects:issues:index';
|
||||
isMRIndex = (page === page && page === 'projects:merge_requests:index');
|
||||
|
@ -411,24 +405,7 @@ import eventHub from './sidebar/event_hub';
|
|||
return Issuable.filterResults($dropdown.closest('form'));
|
||||
} else if ($dropdown.hasClass('js-filter-submit')) {
|
||||
return $dropdown.closest('form').submit();
|
||||
<<<<<<< HEAD
|
||||
} else if ($dropdown.hasClass('js-issue-board-sidebar')) {
|
||||
if (user.id && isSelecting) {
|
||||
gl.issueBoards.boardStoreIssueSet('assignee', new ListUser({
|
||||
id: user.id,
|
||||
username: user.username,
|
||||
name: user.name,
|
||||
avatar_url: user.avatar_url
|
||||
}));
|
||||
} else {
|
||||
gl.issueBoards.boardStoreIssueDelete('assignee');
|
||||
}
|
||||
|
||||
updateIssueBoardsIssue();
|
||||
} else {
|
||||
=======
|
||||
} else if (!$dropdown.hasClass('js-multiselect')) {
|
||||
>>>>>>> b0a2435... Merge branch 'multiple_assignees_review_upstream' into ee_master
|
||||
selected = $dropdown.closest('.selectbox').find("input[name='" + ($dropdown.data('field-name')) + "']").val();
|
||||
return assignTo(selected);
|
||||
}
|
||||
|
|
|
@ -16,11 +16,7 @@
|
|||
"v-if" => "issue.assignees",
|
||||
"v-for" => "assignee in issue.assignees" }
|
||||
.dropdown
|
||||
<<<<<<< HEAD
|
||||
%button.dropdown-menu-toggle.js-user-search.js-author-search.js-issue-board-sidebar{ type: "button", data: { toggle: "dropdown", field_name: "issue[assignee_id]", first_user: (current_user.username if current_user), current_user: "true", project_id: @project.id, null_user: "true", null_user_default: "true" },
|
||||
=======
|
||||
%button.dropdown-menu-toggle.js-user-search.js-author-search.js-multiselect.js-save-user-data.js-issue-board-sidebar{ type: "button", ref: "assigneeDropdown", data: { toggle: "dropdown", field_name: "issue[assignee_ids][]", first_user: (current_user.username if current_user), current_user: "true", project_id: @project.id, null_user: "true", multi_select: "true", dropdown: { header: 'Assignee(s)'} },
|
||||
>>>>>>> b0a2435... Merge branch 'multiple_assignees_review_upstream' into ee_master
|
||||
":data-issuable-id" => "issue.id",
|
||||
":data-selected" => "assigneeId",
|
||||
":data-issue-update" => "'#{namespace_project_issues_path(@project.namespace, @project)}/' + issue.id + '.json'" }
|
||||
|
|
|
@ -130,11 +130,7 @@
|
|||
- field_name = "update[assignee_id]"
|
||||
|
||||
= dropdown_tag("Assignee", options: { toggle_class: "js-user-search js-update-assignee js-filter-submit js-filter-bulk-update", title: "Assign to", filter: true, dropdown_class: "dropdown-menu-user dropdown-menu-selectable",
|
||||
<<<<<<< HEAD
|
||||
placeholder: "Search authors", data: { first_user: (current_user.username if current_user), null_user: true, current_user: true, project_id: @project.id, field_name: "update[assignee_id]", default_label: "Assignee" } })
|
||||
=======
|
||||
placeholder: "Search authors", data: { first_user: (current_user.username if current_user), null_user: true, current_user: true, project_id: @project.id, field_name: field_name } })
|
||||
>>>>>>> b0a2435... Merge branch 'multiple_assignees_review_upstream' into ee_master
|
||||
.filter-item.inline
|
||||
= dropdown_tag("Milestone", options: { title: "Assign milestone", toggle_class: 'js-milestone-select js-extra-options js-filter-submit js-filter-bulk-update', filter: true, dropdown_class: "dropdown-menu-selectable dropdown-menu-milestone", placeholder: "Search milestones", data: { show_no: true, field_name: "update[milestone_id]", project_id: @project.id, milestones: namespace_project_milestones_path(@project.namespace, @project, :json), use_id: true, default_label: "Milestone" } })
|
||||
.filter-item.inline.labels-filter
|
||||
|
|
|
@ -50,13 +50,8 @@
|
|||
assign yourself
|
||||
|
||||
.selectbox.hide-collapsed
|
||||
<<<<<<< HEAD
|
||||
= f.hidden_field 'assignee_id', value: issuable.assignee_id, id: 'issue_assignee_id'
|
||||
= dropdown_tag('Select assignee', options: { toggle_class: 'js-user-search js-author-search', title: 'Assign to', filter: true, dropdown_class: 'dropdown-menu-user dropdown-menu-selectable dropdown-menu-author', placeholder: 'Search users', data: { first_user: (current_user.username if current_user), current_user: true, project_id: (@project.id if @project), author_id: issuable.author_id, field_name: "#{issuable.to_ability_name}[assignee_id]", issue_update: issuable_json_path(issuable), ability_name: issuable.to_ability_name, null_user: true, null_user_default: true, selected: issuable.assignee_id } })
|
||||
=======
|
||||
- issuable.assignees.each do |assignee|
|
||||
= hidden_field_tag "#{issuable.to_ability_name}[assignee_ids][]", assignee.id, id: nil
|
||||
>>>>>>> b0a2435... Merge branch 'multiple_assignees_review_upstream' into ee_master
|
||||
|
||||
- options = { toggle_class: 'js-user-search js-author-search', title: 'Assign to', filter: true, dropdown_class: 'dropdown-menu-user dropdown-menu-selectable dropdown-menu-author', placeholder: 'Search users', data: { first_user: (current_user.username if current_user), current_user: true, project_id: (@project.id if @project), author_id: issuable.author_id, field_name: "#{issuable.to_ability_name}[assignee_id]", issue_update: issuable_json_path(issuable), ability_name: issuable.to_ability_name, null_user: true } }
|
||||
|
||||
|
|
Loading…
Reference in a new issue