summaryrefslogtreecommitdiff
path: root/app/assets/javascripts/sidebar
diff options
context:
space:
mode:
Diffstat (limited to 'app/assets/javascripts/sidebar')
-rw-r--r--app/assets/javascripts/sidebar/components/time_tracking/sidebar_time_tracking.vue5
-rw-r--r--app/assets/javascripts/sidebar/components/time_tracking/time_tracker.vue36
-rw-r--r--app/assets/javascripts/sidebar/mount_sidebar.js3
3 files changed, 31 insertions, 13 deletions
diff --git a/app/assets/javascripts/sidebar/components/time_tracking/sidebar_time_tracking.vue b/app/assets/javascripts/sidebar/components/time_tracking/sidebar_time_tracking.vue
index 58167b3934a..d472b67d976 100644
--- a/app/assets/javascripts/sidebar/components/time_tracking/sidebar_time_tracking.vue
+++ b/app/assets/javascripts/sidebar/components/time_tracking/sidebar_time_tracking.vue
@@ -17,6 +17,10 @@ export default {
required: false,
default: '',
},
+ issuableId: {
+ type: String,
+ required: true,
+ },
issuableIid: {
type: String,
required: true,
@@ -60,6 +64,7 @@ export default {
<div class="block">
<issuable-time-tracker
:full-path="fullPath"
+ :issuable-id="issuableId"
:issuable-iid="issuableIid"
:limit-to-hours="limitToHours"
/>
diff --git a/app/assets/javascripts/sidebar/components/time_tracking/time_tracker.vue b/app/assets/javascripts/sidebar/components/time_tracking/time_tracker.vue
index 3feff8639a1..87ddbbf256a 100644
--- a/app/assets/javascripts/sidebar/components/time_tracking/time_tracker.vue
+++ b/app/assets/javascripts/sidebar/components/time_tracking/time_tracker.vue
@@ -31,7 +31,11 @@ export default {
directives: {
GlModal: GlModalDirective,
},
- inject: ['issuableType'],
+ inject: {
+ issuableType: {
+ default: null,
+ },
+ },
props: {
limitToHours: {
type: Boolean,
@@ -43,6 +47,11 @@ export default {
required: false,
default: '',
},
+ issuableId: {
+ type: String,
+ required: false,
+ default: '',
+ },
issuableIid: {
type: String,
required: false,
@@ -83,15 +92,18 @@ export default {
return timeTrackingQueries[this.issuableType].query;
},
skip() {
- // We don't fetch info via GraphQL in following cases
- // 1. Time tracking info was provided via prop
- // 2. issuableIid and fullPath are not provided.
- if (!this.initialTimeTracking) {
- return false;
- } else if (this.issuableIid && this.fullPath) {
- return false;
+ // Skip the query if either of the conditions are true
+ // 1. issuableType is not provided
+ // 2. Time tracking info was provided via prop
+ // 3. issuableIid and fullPath are not provided
+ if (!this.issuableType || !timeTrackingQueries[this.issuableType]) {
+ return true;
+ } else if (this.initialTimeTracking) {
+ return true;
+ } else if (!this.issuableIid || !this.fullPath) {
+ return true;
}
- return true;
+ return false;
},
variables() {
return {
@@ -108,7 +120,7 @@ export default {
},
computed: {
isTimeTrackingInfoLoading() {
- return this.$apollo?.queries.issuableTimeTracking.loading ?? false;
+ return this.$apollo?.queries.issuableTimeTracking?.loading ?? false;
},
timeEstimate() {
return this.timeTracking?.timeEstimate || 0;
@@ -146,7 +158,7 @@ export default {
isTimeReportSupported() {
return (
[IssuableType.Issue, IssuableType.MergeRequest].includes(this.issuableType) &&
- this.issuableIid
+ this.issuableId
);
},
},
@@ -240,7 +252,7 @@ export default {
:title="__('Time tracking report')"
:hide-footer="true"
>
- <time-tracking-report :limit-to-hours="limitToHours" :issuable-iid="issuableIid" />
+ <time-tracking-report :limit-to-hours="limitToHours" :issuable-id="issuableId" />
</gl-modal>
</template>
<transition name="help-state-toggle">
diff --git a/app/assets/javascripts/sidebar/mount_sidebar.js b/app/assets/javascripts/sidebar/mount_sidebar.js
index f53760eab93..67c72b17f1f 100644
--- a/app/assets/javascripts/sidebar/mount_sidebar.js
+++ b/app/assets/javascripts/sidebar/mount_sidebar.js
@@ -391,7 +391,7 @@ function mountSubscriptionsComponent() {
function mountTimeTrackingComponent() {
const el = document.getElementById('issuable-time-tracker');
- const { iid, fullPath, issuableType, timeTrackingLimitToHours } = getSidebarOptions();
+ const { id, iid, fullPath, issuableType, timeTrackingLimitToHours } = getSidebarOptions();
if (!el) return;
@@ -404,6 +404,7 @@ function mountTimeTrackingComponent() {
createElement(SidebarTimeTracking, {
props: {
fullPath,
+ issuableId: id.toString(),
issuableIid: iid.toString(),
limitToHours: timeTrackingLimitToHours,
},