#8113 create arrayDataStore map #979

Closed
jorgep wants to merge 17 commits from 8113-preventDuplicateRecords into dev
2 changed files with 26 additions and 28 deletions
Showing only changes of commit e4bac3edab - Show all commits

View File

@ -120,21 +120,11 @@ export function useArrayData(key = useRoute().meta.moduleName, userOptions) {
const { limit } = filter; const { limit } = filter;
store.hasMoreData = limit && response.data.length >= limit; store.hasMoreData = limit && response.data.length >= limit;
if (append) { processData(response.data, { map: !!store.mapKey, append });
if (!store.data) { if (!append && !isDialogOpened()) updateRouter && updateStateParams();
store.data = [];
store.map = new Map();
}
mapData(response.data);
} else {
store.data = [];
mapData(response.data);
if (!isDialogOpened()) updateRouter && updateStateParams();
}
store.isLoading = false; store.isLoading = false;
canceller = null; canceller = null;
return response; return response;
} }
@ -293,11 +283,18 @@ export function useArrayData(key = useRoute().meta.moduleName, userOptions) {
router.replace(newUrl); router.replace(newUrl);
} }
function mapData(data) { function processData(data, { map = true, append = true }) {
Review

Se puede meter directamente el snippet en la fn fetch, pero , por legibilidad creo que es mejor dejarlo en esta fn.

Se puede meter directamente el snippet en la fn fetch, pero , por **legibilidad** creo que es mejor dejarlo en esta fn.
if (!store.data) {
store.data = [];
store.map = new Map();
}
if (!map && !append) store.data = data;
else if (!map && append) store.data.push(...data);
Review

Se podría usar ... pero he leído que en términos de rendimiento a la hora de manejar arrays muy grande es más rápido un for.

Se podría usar **...** pero he leído que en términos de rendimiento a la hora de manejar arrays muy grande es más rápido un for.
else
data.forEach((row) => { data.forEach((row) => {
const key = row[store.mapKey]; const key = row[store.mapKey];
const val = { ...row, key }; const val = { ...row, key };
if (store.map.has(key)) { if (store.map.has(key)) {
const { position } = store.map.get(key); const { position } = store.map.get(key);
val.position = position; val.position = position;

View File

@ -441,6 +441,7 @@ watch(
<QPage class="column items-center q-pa-md"> <QPage class="column items-center q-pa-md">
<VnTable <VnTable
data-key="advanceTickets" data-key="advanceTickets"
:map-key="false"
Review

Aquí se quiere tener duplicados.

Aquí se quiere tener duplicados.
ref="vnTableRef" ref="vnTableRef"
url="Tickets/getTicketsAdvance" url="Tickets/getTicketsAdvance"
search-url="advanceTickets" search-url="advanceTickets"