From 40665a30700c21752cfa516905f800bf4be51752 Mon Sep 17 00:00:00 2001 From: Chad Lavimoniere Date: Wed, 18 Dec 2024 17:04:27 -0500 Subject: [PATCH] Use data from current tab of Vue MR list page for export to CSV Currently, the values for the csv export path and the count of items to be exported when viewing the Vue MR list page is loaded once on page load, which means that only the items in the tab that is loaded initially get exported. This MR adjusts this to use the data from the current tab for export. Changelog: fixed --- .../components/merge_requests_list_app.vue | 5 ++++- .../list/components/more_actions_dropdown.vue | 22 +++++++++++++++---- app/helpers/merge_requests_helper.rb | 2 +- 3 files changed, 23 insertions(+), 6 deletions(-) diff --git a/app/assets/javascripts/merge_requests/list/components/merge_requests_list_app.vue b/app/assets/javascripts/merge_requests/list/components/merge_requests_list_app.vue index 93c9cebc912ebd..320980c851fc15 100644 --- a/app/assets/javascripts/merge_requests/list/components/merge_requests_list_app.vue +++ b/app/assets/javascripts/merge_requests/list/components/merge_requests_list_app.vue @@ -475,6 +475,9 @@ export default { resourceDropdownQueryVariables() { return { fullPath: this.fullPath }; }, + currentTabCount() { + return this.tabCounts[this.state] || 0; + }, }, watch: { $route(newValue, oldValue) { @@ -785,7 +788,7 @@ export default { with-local-storage /> - + diff --git a/app/assets/javascripts/merge_requests/list/components/more_actions_dropdown.vue b/app/assets/javascripts/merge_requests/list/components/more_actions_dropdown.vue index 29fa03ef89dd77..daee5c47ff7cc9 100644 --- a/app/assets/javascripts/merge_requests/list/components/more_actions_dropdown.vue +++ b/app/assets/javascripts/merge_requests/list/components/more_actions_dropdown.vue @@ -25,10 +25,17 @@ export default { provide: { showExportButton: true, }, - inject: ['isSignedIn', 'issuableType', 'issuableCount', 'email', 'exportCsvPath', 'rssUrl'], + inject: ['isSignedIn', 'issuableType', 'email', 'exportCsvPath', 'rssUrl'], + props: { + count: { + type: Number, + required: true, + }, + }, data() { return { isDropdownVisible: false, + exportCsvPathWithQuery: this.getExportCsvPathWithQuery(), }; }, computed: { @@ -42,6 +49,11 @@ export default { }; }, }, + watch: { + $route() { + this.exportCsvPathWithQuery = this.getExportCsvPathWithQuery(); + }, + }, methods: { showDropdown() { this.isDropdownVisible = true; @@ -49,6 +61,9 @@ export default { hideDropdown() { this.isDropdownVisible = false; }, + getExportCsvPathWithQuery() { + return `${this.exportCsvPath}${window.location.search}`; + }, }, i18n: { toggleText: __('Actions'), @@ -89,10 +104,9 @@ export default {