gitlab-org--gitlab-foss/app/assets/javascripts/sidebar/components/time_tracking/sidebar_time_tracking.vue

61 lines
1.5 KiB
Vue

<script>
import $ from 'jquery';
import { intersection } from 'lodash';
import '~/smart_interval';
import IssuableTimeTracker from './time_tracker.vue';
import Store from '../../stores/sidebar_store';
import Mediator from '../../sidebar_mediator';
import eventHub from '../../event_hub';
export default {
components: {
IssuableTimeTracker,
},
data() {
return {
mediator: new Mediator(),
store: new Store(),
};
},
mounted() {
this.listenForQuickActions();
},
methods: {
listenForQuickActions() {
$(document).on('ajax:success', '.gfm-form', this.quickActionListened);
eventHub.$on('timeTrackingUpdated', data => {
this.quickActionListened(null, data);
});
},
quickActionListened(e, data) {
const subscribedCommands = ['spend_time', 'time_estimate'];
let changedCommands;
if (data !== undefined) {
changedCommands = data.commands_changes ? Object.keys(data.commands_changes) : [];
} else {
changedCommands = [];
}
if (changedCommands && intersection(subscribedCommands, changedCommands).length) {
this.mediator.fetch();
}
},
},
};
</script>
<template>
<div class="block">
<issuable-time-tracker
:time-estimate="store.timeEstimate"
:time-spent="store.totalTimeSpent"
:human-time-estimate="store.humanTimeEstimate"
:human-time-spent="store.humanTotalTimeSpent"
:limit-to-hours="store.timeTrackingLimitToHours"
:root-path="store.rootPath"
/>
</div>
</template>