Merge pull request #746 from frappe/mergify/bp/main-hotfix/pr-726

fix: export logic (backport #726)
This commit is contained in:
Shariq Ansari 2025-04-14 16:36:17 +05:30 committed by GitHub
commit 4e3a85e03b
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
15 changed files with 50 additions and 2 deletions

View File

@ -10,6 +10,7 @@
}"
row-key="name"
v-bind="$attrs"
@update:selections="(selections) => emit('selectionsChanged', selections)"
>
<ListHeader
class="sm:mx-5 mx-3"
@ -205,6 +206,7 @@ const emit = defineEmits([
'applyFilter',
'applyLikeFilter',
'likeDoc',
'selectionsChanged',
])
const pageLengthCount = defineModel()

View File

@ -14,6 +14,7 @@
resizeColumn: options.resizeColumn,
}"
row-key="name"
@update:selections="(selections) => emit('selectionsChanged', selections)"
>
<ListHeader
class="mx-3 sm:mx-5"
@ -201,6 +202,7 @@ const emit = defineEmits([
'applyFilter',
'applyLikeFilter',
'likeDoc',
'selectionsChanged',
])
const route = useRoute()

View File

@ -14,6 +14,7 @@
resizeColumn: options.resizeColumn,
}"
row-key="name"
@update:selections="(selections) => emit('selectionsChanged', selections)"
>
<ListHeader
class="sm:mx-5 mx-3"
@ -245,6 +246,7 @@ const emit = defineEmits([
'applyFilter',
'applyLikeFilter',
'likeDoc',
'selectionsChanged',
])
const route = useRoute()

View File

@ -9,6 +9,7 @@
resizeColumn: options.resizeColumn,
}"
row-key="name"
@update:selections="(selections) => emit('selectionsChanged', selections)"
>
<ListHeader
class="sm:mx-5 mx-3"
@ -191,6 +192,7 @@ const emit = defineEmits([
'applyFilter',
'applyLikeFilter',
'likeDoc',
'selectionsChanged',
])
const pageLengthCount = defineModel()

View File

@ -14,6 +14,7 @@
resizeColumn: options.resizeColumn,
}"
row-key="name"
@update:selections="(selections) => emit('selectionsChanged', selections)"
>
<ListHeader
class="sm:mx-5 mx-3"
@ -250,7 +251,6 @@ const props = defineProps({
}),
},
})
const emit = defineEmits([
'loadMore',
'updatePageCount',
@ -258,6 +258,7 @@ const emit = defineEmits([
'applyFilter',
'applyLikeFilter',
'likeDoc',
'selectionsChanged',
])
const route = useRoute()

View File

@ -13,6 +13,7 @@
resizeColumn: options.resizeColumn,
}"
row-key="name"
@update:selections="(selections) => emit('selectionsChanged', selections)"
>
<ListHeader
class="sm:mx-5 mx-3"
@ -186,6 +187,7 @@ const emit = defineEmits([
'applyFilter',
'applyLikeFilter',
'likeDoc',
'selectionsChanged',
])
const route = useRoute()

View File

@ -9,6 +9,7 @@
resizeColumn: options.resizeColumn,
}"
row-key="name"
@update:selections="(selections) => emit('selectionsChanged', selections)"
>
<ListHeader
class="mx-3 sm:mx-5"
@ -207,6 +208,7 @@ const emit = defineEmits([
'applyFilter',
'applyLikeFilter',
'likeDoc',
'selectionsChanged',
])
const pageLengthCount = defineModel()

View File

@ -545,6 +545,11 @@ function reload() {
const showExportDialog = ref(false)
const export_type = ref('Excel')
const export_all = ref(false)
const selectedRows = ref([])
function updateSelections(selections) {
selectedRows.value = Array.from(selections)
}
async function exportRows() {
let fields = JSON.stringify(list.value.data.columns.map((f) => f.key))
@ -560,7 +565,15 @@ async function exportRows() {
page_length = list.value.data.total_count
}
window.location.href = `/api/method/frappe.desk.reportview.export_query?file_format_type=${export_type.value}&title=${props.doctype}&doctype=${props.doctype}&fields=${fields}&filters=${filters}&order_by=${order_by}&page_length=${page_length}&start=0&view=Report&with_comment_count=1`
let url = `/api/method/frappe.desk.reportview.export_query?file_format_type=${export_type.value}&title=${props.doctype}&doctype=${props.doctype}&fields=${fields}&filters=${filters}&order_by=${order_by}&page_length=${page_length}&start=0&view=Report&with_comment_count=1`
// Add selected items parameter if rows are selected
if (selectedRows.value?.length && !export_all.value) {
url += `&selected_items=${JSON.stringify(selectedRows.value)}`
}
window.location.href = url
showExportDialog.value = false
export_all.value = false
export_type.value = 'Excel'
@ -1336,6 +1349,7 @@ defineExpose({
viewActions,
viewsDropdownOptions,
currentView,
updateSelections,
})
// Watchers

View File

@ -41,6 +41,9 @@
@applyFilter="(data) => viewControls.applyFilter(data)"
@applyLikeFilter="(data) => viewControls.applyLikeFilter(data)"
@likeDoc="(data) => viewControls.likeDoc(data)"
@selectionsChanged="
(selections) => viewControls.updateSelections(selections)
"
/>
<div
v-else-if="callLogs.data"

View File

@ -44,6 +44,9 @@
@applyFilter="(data) => viewControls.applyFilter(data)"
@applyLikeFilter="(data) => viewControls.applyLikeFilter(data)"
@likeDoc="(data) => viewControls.likeDoc(data)"
@selectionsChanged="
(selections) => viewControls.updateSelections(selections)
"
/>
<div
v-else-if="contacts.data"

View File

@ -223,6 +223,9 @@
@applyFilter="(data) => viewControls.applyFilter(data)"
@applyLikeFilter="(data) => viewControls.applyLikeFilter(data)"
@likeDoc="(data) => viewControls.likeDoc(data)"
@selectionsChanged="
(selections) => viewControls.updateSelections(selections)
"
/>
<div v-else-if="deals.data" class="flex h-full items-center justify-center">
<div

View File

@ -45,6 +45,9 @@
@applyFilter="(data) => viewControls.applyFilter(data)"
@applyLikeFilter="(data) => viewControls.applyLikeFilter(data)"
@likeDoc="(data) => viewControls.likeDoc(data)"
@selectionsChanged="
(selections) => viewControls.updateSelections(selections)
"
/>
<div
v-else-if="emailTemplates.data"

View File

@ -249,6 +249,9 @@
@applyFilter="(data) => viewControls.applyFilter(data)"
@applyLikeFilter="(data) => viewControls.applyLikeFilter(data)"
@likeDoc="(data) => viewControls.likeDoc(data)"
@selectionsChanged="
(selections) => viewControls.updateSelections(selections)
"
/>
<div v-else-if="leads.data" class="flex h-full items-center justify-center">
<div

View File

@ -44,6 +44,9 @@
@applyFilter="(data) => viewControls.applyFilter(data)"
@applyLikeFilter="(data) => viewControls.applyLikeFilter(data)"
@likeDoc="(data) => viewControls.likeDoc(data)"
@selectionsChanged="
(selections) => viewControls.updateSelections(selections)
"
/>
<div
v-else-if="organizations.data"

View File

@ -172,6 +172,9 @@
@applyFilter="(data) => viewControls.applyFilter(data)"
@applyLikeFilter="(data) => viewControls.applyLikeFilter(data)"
@likeDoc="(data) => viewControls.likeDoc(data)"
@selectionsChanged="
(selections) => viewControls.updateSelections(selections)
"
/>
<div v-else-if="tasks.data" class="flex h-full items-center justify-center">
<div