Skip to content

Commit 94cc20c

Browse files
committed
export
1 parent 8df91e9 commit 94cc20c

File tree

2 files changed

+86
-1
lines changed

2 files changed

+86
-1
lines changed

src/components/2pan/index.vue

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ q-splitter(
1919
:visible-columns="visibleColumnsInternal"
2020
:row-key="rowKey"
2121
@request="onRequest($event, props.total)"
22-
:rows-per-page-options="[12, 16, 20]"
22+
:rows-per-page-options="[12, 16, 20,50,0]"
2323
:columns="cols"
2424
:loading="pending"
2525
rows-per-page-label="Lignes par page"

src/pages/identities/export.vue

Lines changed: 85 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,85 @@
1+
<template>
2+
<q-page class="container q-px-md">
3+
<sesame-searchfilters :fields="fieldsList"></sesame-searchfilters>
4+
<q-table
5+
flat bordered
6+
title="Identités"
7+
dense
8+
:rows="rows1"
9+
:columns="fieldsName"
10+
row-key="uid"
11+
:rows-per-page-options="[20,50,0]"
12+
>
13+
<template v-slot:top-left>
14+
<q-btn color="positive" icon="mdi-cloud-download" size="md" flat >
15+
Exporter
16+
17+
</q-btn>
18+
</template>
19+
</q-table>
20+
</q-page>
21+
</template>
22+
23+
<script lang="ts" setup>
24+
import {computed, onMounted, provide, ref} from "vue";
25+
import {useRoute} from "nuxt/app";
26+
const route = useRoute()
27+
const { columns, visibleColumns, columnsType } = useColumnsIdentites()
28+
29+
30+
31+
// prise de la requete qui est dans l'url mise par le filtre
32+
const queryWithoutRead = computed(() => {
33+
const { read, ...rest } = route.query
34+
return {
35+
limit: 9999,
36+
...rest,
37+
}
38+
})
39+
const { data: fieldsName, pending1, error1} = await useHttp('/management/identities/validation', {
40+
method: 'GET',
41+
transform: (result)=>{
42+
const allFields=result.data.flatMap((enr)=>{
43+
return Object.keys(enr[enr.name].properties)
44+
})
45+
return allFields.map((enr)=>{
46+
return {name:enr,field:enr,label:enr,align: 'left'}
47+
})
48+
}
49+
});
50+
51+
const { data: rows1, pending, error, refresh } = await useHttp('/management/identities?sort[inetOrgPerson.cn]=asc', {
52+
method: 'GET',
53+
query:queryWithoutRead,
54+
transform: (result)=>{
55+
const allFields=result.data.map((enr)=>{
56+
let addF={}
57+
for (const [key, value] of Object.entries(enr?.additionalFields?.attributes||{})) {
58+
addF = {...addF, ...value}
59+
}
60+
const step1={...enr.inetOrgPerson,...addF}
61+
return step1
62+
})
63+
return allFields
64+
}
65+
});
66+
67+
68+
69+
const fieldsList = computed(() => {
70+
return columns.value!.reduce((acc: { name: string; label: string; type?: string }[], column) => {
71+
if (visibleColumns.value!.includes(column.name) && column.name !== 'actions' && column.name !== 'states') {
72+
const type = columnsType.value.find((type) => type.name === column.name)?.type
73+
acc.push({
74+
name: column.name,
75+
label: column.label,
76+
type,
77+
})
78+
}
79+
return acc
80+
}, [])
81+
})
82+
83+
provide('fieldsList', fieldsList.value)
84+
85+
</script>

0 commit comments

Comments
 (0)