Merge pull request #746 from frappe/mergify/bp/main-hotfix/pr-726
fix: export logic (backport #726)
This commit is contained in:
commit
4e3a85e03b
@ -10,6 +10,7 @@
|
|||||||
}"
|
}"
|
||||||
row-key="name"
|
row-key="name"
|
||||||
v-bind="$attrs"
|
v-bind="$attrs"
|
||||||
|
@update:selections="(selections) => emit('selectionsChanged', selections)"
|
||||||
>
|
>
|
||||||
<ListHeader
|
<ListHeader
|
||||||
class="sm:mx-5 mx-3"
|
class="sm:mx-5 mx-3"
|
||||||
@ -205,6 +206,7 @@ const emit = defineEmits([
|
|||||||
'applyFilter',
|
'applyFilter',
|
||||||
'applyLikeFilter',
|
'applyLikeFilter',
|
||||||
'likeDoc',
|
'likeDoc',
|
||||||
|
'selectionsChanged',
|
||||||
])
|
])
|
||||||
|
|
||||||
const pageLengthCount = defineModel()
|
const pageLengthCount = defineModel()
|
||||||
|
|||||||
@ -14,6 +14,7 @@
|
|||||||
resizeColumn: options.resizeColumn,
|
resizeColumn: options.resizeColumn,
|
||||||
}"
|
}"
|
||||||
row-key="name"
|
row-key="name"
|
||||||
|
@update:selections="(selections) => emit('selectionsChanged', selections)"
|
||||||
>
|
>
|
||||||
<ListHeader
|
<ListHeader
|
||||||
class="mx-3 sm:mx-5"
|
class="mx-3 sm:mx-5"
|
||||||
@ -201,6 +202,7 @@ const emit = defineEmits([
|
|||||||
'applyFilter',
|
'applyFilter',
|
||||||
'applyLikeFilter',
|
'applyLikeFilter',
|
||||||
'likeDoc',
|
'likeDoc',
|
||||||
|
'selectionsChanged',
|
||||||
])
|
])
|
||||||
|
|
||||||
const route = useRoute()
|
const route = useRoute()
|
||||||
|
|||||||
@ -14,6 +14,7 @@
|
|||||||
resizeColumn: options.resizeColumn,
|
resizeColumn: options.resizeColumn,
|
||||||
}"
|
}"
|
||||||
row-key="name"
|
row-key="name"
|
||||||
|
@update:selections="(selections) => emit('selectionsChanged', selections)"
|
||||||
>
|
>
|
||||||
<ListHeader
|
<ListHeader
|
||||||
class="sm:mx-5 mx-3"
|
class="sm:mx-5 mx-3"
|
||||||
@ -245,6 +246,7 @@ const emit = defineEmits([
|
|||||||
'applyFilter',
|
'applyFilter',
|
||||||
'applyLikeFilter',
|
'applyLikeFilter',
|
||||||
'likeDoc',
|
'likeDoc',
|
||||||
|
'selectionsChanged',
|
||||||
])
|
])
|
||||||
|
|
||||||
const route = useRoute()
|
const route = useRoute()
|
||||||
|
|||||||
@ -9,6 +9,7 @@
|
|||||||
resizeColumn: options.resizeColumn,
|
resizeColumn: options.resizeColumn,
|
||||||
}"
|
}"
|
||||||
row-key="name"
|
row-key="name"
|
||||||
|
@update:selections="(selections) => emit('selectionsChanged', selections)"
|
||||||
>
|
>
|
||||||
<ListHeader
|
<ListHeader
|
||||||
class="sm:mx-5 mx-3"
|
class="sm:mx-5 mx-3"
|
||||||
@ -191,6 +192,7 @@ const emit = defineEmits([
|
|||||||
'applyFilter',
|
'applyFilter',
|
||||||
'applyLikeFilter',
|
'applyLikeFilter',
|
||||||
'likeDoc',
|
'likeDoc',
|
||||||
|
'selectionsChanged',
|
||||||
])
|
])
|
||||||
|
|
||||||
const pageLengthCount = defineModel()
|
const pageLengthCount = defineModel()
|
||||||
|
|||||||
@ -14,6 +14,7 @@
|
|||||||
resizeColumn: options.resizeColumn,
|
resizeColumn: options.resizeColumn,
|
||||||
}"
|
}"
|
||||||
row-key="name"
|
row-key="name"
|
||||||
|
@update:selections="(selections) => emit('selectionsChanged', selections)"
|
||||||
>
|
>
|
||||||
<ListHeader
|
<ListHeader
|
||||||
class="sm:mx-5 mx-3"
|
class="sm:mx-5 mx-3"
|
||||||
@ -250,7 +251,6 @@ const props = defineProps({
|
|||||||
}),
|
}),
|
||||||
},
|
},
|
||||||
})
|
})
|
||||||
|
|
||||||
const emit = defineEmits([
|
const emit = defineEmits([
|
||||||
'loadMore',
|
'loadMore',
|
||||||
'updatePageCount',
|
'updatePageCount',
|
||||||
@ -258,6 +258,7 @@ const emit = defineEmits([
|
|||||||
'applyFilter',
|
'applyFilter',
|
||||||
'applyLikeFilter',
|
'applyLikeFilter',
|
||||||
'likeDoc',
|
'likeDoc',
|
||||||
|
'selectionsChanged',
|
||||||
])
|
])
|
||||||
|
|
||||||
const route = useRoute()
|
const route = useRoute()
|
||||||
|
|||||||
@ -13,6 +13,7 @@
|
|||||||
resizeColumn: options.resizeColumn,
|
resizeColumn: options.resizeColumn,
|
||||||
}"
|
}"
|
||||||
row-key="name"
|
row-key="name"
|
||||||
|
@update:selections="(selections) => emit('selectionsChanged', selections)"
|
||||||
>
|
>
|
||||||
<ListHeader
|
<ListHeader
|
||||||
class="sm:mx-5 mx-3"
|
class="sm:mx-5 mx-3"
|
||||||
@ -186,6 +187,7 @@ const emit = defineEmits([
|
|||||||
'applyFilter',
|
'applyFilter',
|
||||||
'applyLikeFilter',
|
'applyLikeFilter',
|
||||||
'likeDoc',
|
'likeDoc',
|
||||||
|
'selectionsChanged',
|
||||||
])
|
])
|
||||||
|
|
||||||
const route = useRoute()
|
const route = useRoute()
|
||||||
|
|||||||
@ -9,6 +9,7 @@
|
|||||||
resizeColumn: options.resizeColumn,
|
resizeColumn: options.resizeColumn,
|
||||||
}"
|
}"
|
||||||
row-key="name"
|
row-key="name"
|
||||||
|
@update:selections="(selections) => emit('selectionsChanged', selections)"
|
||||||
>
|
>
|
||||||
<ListHeader
|
<ListHeader
|
||||||
class="mx-3 sm:mx-5"
|
class="mx-3 sm:mx-5"
|
||||||
@ -207,6 +208,7 @@ const emit = defineEmits([
|
|||||||
'applyFilter',
|
'applyFilter',
|
||||||
'applyLikeFilter',
|
'applyLikeFilter',
|
||||||
'likeDoc',
|
'likeDoc',
|
||||||
|
'selectionsChanged',
|
||||||
])
|
])
|
||||||
|
|
||||||
const pageLengthCount = defineModel()
|
const pageLengthCount = defineModel()
|
||||||
|
|||||||
@ -545,6 +545,11 @@ function reload() {
|
|||||||
const showExportDialog = ref(false)
|
const showExportDialog = ref(false)
|
||||||
const export_type = ref('Excel')
|
const export_type = ref('Excel')
|
||||||
const export_all = ref(false)
|
const export_all = ref(false)
|
||||||
|
const selectedRows = ref([])
|
||||||
|
|
||||||
|
function updateSelections(selections) {
|
||||||
|
selectedRows.value = Array.from(selections)
|
||||||
|
}
|
||||||
|
|
||||||
async function exportRows() {
|
async function exportRows() {
|
||||||
let fields = JSON.stringify(list.value.data.columns.map((f) => f.key))
|
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
|
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
|
showExportDialog.value = false
|
||||||
export_all.value = false
|
export_all.value = false
|
||||||
export_type.value = 'Excel'
|
export_type.value = 'Excel'
|
||||||
@ -1336,6 +1349,7 @@ defineExpose({
|
|||||||
viewActions,
|
viewActions,
|
||||||
viewsDropdownOptions,
|
viewsDropdownOptions,
|
||||||
currentView,
|
currentView,
|
||||||
|
updateSelections,
|
||||||
})
|
})
|
||||||
|
|
||||||
// Watchers
|
// Watchers
|
||||||
|
|||||||
@ -41,6 +41,9 @@
|
|||||||
@applyFilter="(data) => viewControls.applyFilter(data)"
|
@applyFilter="(data) => viewControls.applyFilter(data)"
|
||||||
@applyLikeFilter="(data) => viewControls.applyLikeFilter(data)"
|
@applyLikeFilter="(data) => viewControls.applyLikeFilter(data)"
|
||||||
@likeDoc="(data) => viewControls.likeDoc(data)"
|
@likeDoc="(data) => viewControls.likeDoc(data)"
|
||||||
|
@selectionsChanged="
|
||||||
|
(selections) => viewControls.updateSelections(selections)
|
||||||
|
"
|
||||||
/>
|
/>
|
||||||
<div
|
<div
|
||||||
v-else-if="callLogs.data"
|
v-else-if="callLogs.data"
|
||||||
|
|||||||
@ -44,6 +44,9 @@
|
|||||||
@applyFilter="(data) => viewControls.applyFilter(data)"
|
@applyFilter="(data) => viewControls.applyFilter(data)"
|
||||||
@applyLikeFilter="(data) => viewControls.applyLikeFilter(data)"
|
@applyLikeFilter="(data) => viewControls.applyLikeFilter(data)"
|
||||||
@likeDoc="(data) => viewControls.likeDoc(data)"
|
@likeDoc="(data) => viewControls.likeDoc(data)"
|
||||||
|
@selectionsChanged="
|
||||||
|
(selections) => viewControls.updateSelections(selections)
|
||||||
|
"
|
||||||
/>
|
/>
|
||||||
<div
|
<div
|
||||||
v-else-if="contacts.data"
|
v-else-if="contacts.data"
|
||||||
|
|||||||
@ -223,6 +223,9 @@
|
|||||||
@applyFilter="(data) => viewControls.applyFilter(data)"
|
@applyFilter="(data) => viewControls.applyFilter(data)"
|
||||||
@applyLikeFilter="(data) => viewControls.applyLikeFilter(data)"
|
@applyLikeFilter="(data) => viewControls.applyLikeFilter(data)"
|
||||||
@likeDoc="(data) => viewControls.likeDoc(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 v-else-if="deals.data" class="flex h-full items-center justify-center">
|
||||||
<div
|
<div
|
||||||
|
|||||||
@ -45,6 +45,9 @@
|
|||||||
@applyFilter="(data) => viewControls.applyFilter(data)"
|
@applyFilter="(data) => viewControls.applyFilter(data)"
|
||||||
@applyLikeFilter="(data) => viewControls.applyLikeFilter(data)"
|
@applyLikeFilter="(data) => viewControls.applyLikeFilter(data)"
|
||||||
@likeDoc="(data) => viewControls.likeDoc(data)"
|
@likeDoc="(data) => viewControls.likeDoc(data)"
|
||||||
|
@selectionsChanged="
|
||||||
|
(selections) => viewControls.updateSelections(selections)
|
||||||
|
"
|
||||||
/>
|
/>
|
||||||
<div
|
<div
|
||||||
v-else-if="emailTemplates.data"
|
v-else-if="emailTemplates.data"
|
||||||
|
|||||||
@ -249,6 +249,9 @@
|
|||||||
@applyFilter="(data) => viewControls.applyFilter(data)"
|
@applyFilter="(data) => viewControls.applyFilter(data)"
|
||||||
@applyLikeFilter="(data) => viewControls.applyLikeFilter(data)"
|
@applyLikeFilter="(data) => viewControls.applyLikeFilter(data)"
|
||||||
@likeDoc="(data) => viewControls.likeDoc(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 v-else-if="leads.data" class="flex h-full items-center justify-center">
|
||||||
<div
|
<div
|
||||||
|
|||||||
@ -44,6 +44,9 @@
|
|||||||
@applyFilter="(data) => viewControls.applyFilter(data)"
|
@applyFilter="(data) => viewControls.applyFilter(data)"
|
||||||
@applyLikeFilter="(data) => viewControls.applyLikeFilter(data)"
|
@applyLikeFilter="(data) => viewControls.applyLikeFilter(data)"
|
||||||
@likeDoc="(data) => viewControls.likeDoc(data)"
|
@likeDoc="(data) => viewControls.likeDoc(data)"
|
||||||
|
@selectionsChanged="
|
||||||
|
(selections) => viewControls.updateSelections(selections)
|
||||||
|
"
|
||||||
/>
|
/>
|
||||||
<div
|
<div
|
||||||
v-else-if="organizations.data"
|
v-else-if="organizations.data"
|
||||||
|
|||||||
@ -172,6 +172,9 @@
|
|||||||
@applyFilter="(data) => viewControls.applyFilter(data)"
|
@applyFilter="(data) => viewControls.applyFilter(data)"
|
||||||
@applyLikeFilter="(data) => viewControls.applyLikeFilter(data)"
|
@applyLikeFilter="(data) => viewControls.applyLikeFilter(data)"
|
||||||
@likeDoc="(data) => viewControls.likeDoc(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 v-else-if="tasks.data" class="flex h-full items-center justify-center">
|
||||||
<div
|
<div
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user