- miglioramenti ricerca titoli e modifica del trafiletto

- miglior visualizzazione delle liste
This commit is contained in:
Surya Paolo
2025-04-30 13:27:47 +02:00
parent 493ebf51f3
commit 358f0d6816
40 changed files with 1093 additions and 148 deletions

View File

@@ -162,7 +162,7 @@ export default defineComponent({
storeGasordine.value = tools.getCookie(tools.COOK_SELGAS, '')
await userStore.newsletterload(false)
await productStore.loadProducts()
await productStore.loadProducts(true)
taborders.value = -1

View File

@@ -78,7 +78,7 @@ export default defineComponent({
async function mounted() {
loadpage.value = false
await productStore.loadProducts()
await productStore.loadProducts(true)
cosa.value = tools.getCookie(tools.COOK_COSA_PRODOTTI, shared_consts.PROD.TUTTI, true)
// Inizializza
loadpage.value = true

View File

@@ -26,6 +26,7 @@ import type {
IText,
ICollana,
IOptRigenera,
IOpAndOr,
} from 'model';
import {
IMyPage,
@@ -107,8 +108,8 @@ export default defineComponent({
}, { deep: false });
watch(optrigenera.value, (newVal) => {
tools.setCookie((showListaArgomenti.value ? 'INC_ES_' : '') +'VIS_DISP', newVal.visibilitaDisp);
tools.setCookie((showListaArgomenti.value ? 'INC_ES_' : '') +'VIS_STATO', newVal.stato);
tools.setCookie((showListaArgomenti.value ? 'INC_ES_' : '') + 'VIS_DISP', newVal.visibilitaDisp);
tools.setCookie((showListaArgomenti.value ? 'INC_ES_' : '') + 'VIS_STATO', newVal.stato);
if (showListaArgomenti.value)
calcArrProducts()
}, { deep: true });
@@ -243,12 +244,14 @@ export default defineComponent({
watch(() => cat.value, (newval, oldval) => {
if (loadpage.value) {
tools.setCookie(getKeyCatAtLoad(), cat.value.toString())
filter.value.author = '' // disattivo il filtro autore
resetSearch()
if (showListaArgomenti.value) {
if (loadpage.value) {
tools.setCookie(getKeyCatAtLoad(), cat.value.toString())
filter.value.author = '' // disattivo il filtro autore
resetSearch()
calcArrProducts()
calcArrProducts()
}
}
})
@@ -489,6 +492,7 @@ export default defineComponent({
editore: string[],
idCollane: string[],
arrargomstr: any[],
op_andor: IOpAndOr,
catstr: string,
gasselstr: string,
cosaValue: any,
@@ -505,7 +509,11 @@ export default defineComponent({
const boolfiltroVuotoidTipologie = filtroidTipologie.length === 0;
const boolfiltroVuotoEditore = editore.length === 0;
const boolfiltroVuotoCollane = idCollane.length === 0;
// const boolfiltroVuotoArgomenti = arrargomstr.length === 0;
const boolfiltroVuotoArgomenti = arrargomstr.length === 0;
const se_tutti_veri = op_andor.condition_andor === costanti.OP_ANDOR.OP_AND;
const trovatocatalogo = getCatalogoByMyPage.value
const arrris = products
.filter((product: IProduct) => {
@@ -536,20 +544,32 @@ export default defineComponent({
const lowerName = (product.productInfo.name || '').toLowerCase();
const lowerCode = (product.productInfo.code || '').toLowerCase();
const boolfiltroVuotoCat = product.productInfo.idCatProds?.length === 0
// Filtri per argomenti e categorie
let hasCategoria = false;
let hasArgomentiCat = true;
let hasCategoria = se_tutti_veri;
let hasArgomentiCat = se_tutti_veri;
if (arrargomstr && arrargomstr.length > 0) {
hasArgomentiCat = (product.productInfo.idCatProds || []).some((idCat: any) => arrargomstr.includes(idCat));
hasCategoria = true;
hasCategoria = se_tutti_veri;
} else {
if (catstr === costanti.NO_CATEGORY) {
hasCategoria = product.productInfo.idCatProds?.length === 0
if (!optcatalogo.value.showListaArgomenti) {
} else {
hasCategoria = !catstr || (catstr && (product.productInfo.idCatProds || []).includes(catstr));
hasCategoria = (catstr === costanti.NO_CATEGORY)
? (boolfiltroVuotoCat ? se_tutti_veri : product.productInfo.idCatProds.length === 0)
: !catstr || (product.productInfo.idCatProds || []).includes(catstr);
hasArgomentiCat = boolfiltroVuotoArgomenti
? se_tutti_veri
: hasArgomentiCat
}
}
/*hasArgomentiCat = boolfiltroVuotoArgomenti
? se_tutti_veri
: hasArgomentiCat*/
// Filtri per autore
const hasAuthor = !filtroAuthor || (product.productInfo.idAuthors || []).includes(filtroAuthor);
@@ -569,13 +589,13 @@ export default defineComponent({
// Filtri per editore
const hasPublished = boolfiltroVuotoEditore
? true
? se_tutti_veri
: editore.includes(product.productInfo.idPublisher);
// Filtri per collana
const hasCollana = boolfiltroVuotoCollane
? true
: (idCollane || []).includes(product.productInfo.idCollana?.toString())
? se_tutti_veri
: (idCollane || []).includes(product.productInfo.idCollana)
// Filtri per GAS
const productgassel = !gasselstr || (cosaValue === shared_consts.PROD.GAS && product.idGasordine === gasselstr);
@@ -589,20 +609,24 @@ export default defineComponent({
return codeMatch || allWordsPresent;
});
return (
searchMatch &&
hasAuthor &&
productgassel &&
hasidTipologie &&
// hasProductTypes &&
(
hasPublished &&
hasCollana &&
hasCategoria &&
hasArgomentiCat
)
// && !hasExcludeProductTypes
);
// Funzione che valuta un gruppo in base a OP_AND o OP_OR
// Raccolgo tutti i gruppi attivi
const filtri = [hasArgomentiCat, hasCategoria, hasCollana, hasPublished];
// Decido se combinare in AND o OR sulla base della scelta globale
let risult = searchMatch && hasAuthor && productgassel && hasidTipologie
if (op_andor.condition_andor === costanti.OP_ANDOR.OP_AND) {
risult = risult && filtri.every(Boolean); // Tutti i gruppi devono essere veri
} else {
risult = risult && filtri.some(Boolean)
}
return risult
// && !hasExcludeProductTypes
})
.sort((a, b) => getProductsSorted([a, b], sortField, sortDir)[0] === a ? -1 : 1);
@@ -654,6 +678,10 @@ export default defineComponent({
generalista = true
}*/
let op_andor: IOpAndOr = {
condition_andor: trovatocatalogo?.condition_andor !== undefined ? trovatocatalogo.condition_andor : costanti.OP_ANDOR.OP_AND,
}
if (!generalista && (trovatocatalogo?.lista_prodotti.length > 0)) {
arrprod = trovatocatalogo?.lista_prodotti
} else {
@@ -668,6 +696,7 @@ export default defineComponent({
filtroPublishers,
filtroCollane,
arrargomstr,
op_andor,
catstr,
gasselstr,
cosa.value,
@@ -749,6 +778,11 @@ export default defineComponent({
const gasselstr = cosa.value === shared_consts.PROD.GAS ? idGasSel.value || '' : '';
const trovatocatalogo = getCatalogoByMyPage.value
let op_andor: IOpAndOr = {
condition_andor: trovatocatalogo?.condition_andor ?? costanti.OP_ANDOR.OP_AND,
}
if (trovatocatalogo?.lista_prodotti.length > 0) {
arrprod = trovatocatalogo?.lista_prodotti
} else {
@@ -764,6 +798,7 @@ export default defineComponent({
filtroPublishers,
filtroCollane,
arrargomstr,
op_andor,
catstr,
gasselstr,
cosa.value,
@@ -785,7 +820,7 @@ export default defineComponent({
function getProductsSorted(arrprod: IProduct[], sort_field: string, sort_dir: number): IProduct[] {
if (sort_field) {
console.log('--- Primi 10 elementi INIZIALI:');
// console.log('--- Primi 10 elementi INIZIALI:');
arrprod.slice(0, 15).forEach((product, index) => {
console.log(
`${index + 1}. ${product.productInfo?.name} (${product.productInfo?.date_pub})`
@@ -817,7 +852,7 @@ export default defineComponent({
// logga i primi N elementi, mostrando il nome del prodotto (productInfo.name e la data di pibblicazione : productinfo.date_pub
if (sortedArr.length > 0) {
console.log('Primi 15 elementi ordinati: ***** ');
// console.log('Primi 15 elementi ordinati: ***** ');
sortedArr.slice(0, 15).forEach((product, index) => {
console.log(
`${index + 1}. ${product.productInfo?.name} (${product.productInfo?.date_pub})`
@@ -1053,15 +1088,16 @@ export default defineComponent({
generatinglist.value = true
cat.value = tools.getCookie(getKeyCatAtLoad(), '')
if (showListaArgomenti.value)
cat.value = tools.getCookie(getKeyCatAtLoad(), '')
tabcatalogo.value = tools.getCookie('TAB_CAT', 'visu')
optrigenera.value.visibilitaDisp = tools.getCookie((showListaArgomenti.value ? 'INC_ES_' : '') + 'VIS_DISP', costanti.DISP.DISPONIBILI)
optrigenera.value.stato = tools.getCookie((showListaArgomenti.value ? 'INC_ES_' : '') +'VIS_STATO', costanti.STATO.IN_COMMERCIO)
optrigenera.value.stato = tools.getCookie((showListaArgomenti.value ? 'INC_ES_' : '') + 'VIS_STATO', costanti.STATO.IN_COMMERCIO)
loadpage.value = false
await productStore.loadProducts()
await productStore.loadProducts(true)
mycolumns.value = fieldsTable.getArrColsByTable('products')
@@ -1120,7 +1156,7 @@ export default defineComponent({
);
}
// productStore.getTotaliProdottiByIdCollana(rec._id)
function onLoadScroll(index: number, done: any) {
if (index >= 1) {

View File

@@ -8,10 +8,10 @@
{{ getTitoloCatalogo() }}
</div>
<div
v-if="ispageCatalogata && tools.isEditor()"
v-if="ispageCatalogata && tools.isEditor() && getCatalogoByMyPage?.referenti.length > 0"
class="text-h7 text-center text-red q-ma-sm"
>
{{$t('cataloglist.referenti')}}: <span class="text-bold">{{ getReferentiCatalogo() }}</span>
{{ $t('cataloglist.referenti') }}: <span class="text-bold">{{ getReferentiCatalogo() }}</span>
</div>
<q-tabs
v-if="optcatalogo.pdf && tools.isEditor()"
@@ -779,53 +779,70 @@
>
<q-card class="q-ma-md">
<q-card-section>
<div style="width: 500px">
<CMyValueDb
v-if="getCatalogoByMyPage"
:editOn="true"
:title="t('cataloglist.argomenti')"
table="catalogs"
:id="getCatalogoByMyPage._id"
:rec="getCatalogoByMyPage"
mykey="argomenti"
debounce="1000"
:type="costanti.FieldType.multiselect"
jointable="catprods"
class="q-mb-md"
:dense="false"
>
</CMyValueDb>
<CMyValueDb
v-if="getCatalogoByMyPage"
:editOn="true"
:title="t('cataloglist.collane')"
table="catalogs"
:id="getCatalogoByMyPage._id"
:rec="getCatalogoByMyPage"
mykey="idCollane"
debounce="1000"
:type="costanti.FieldType.multiselect"
jointable="collanas"
class="q-mb-md"
:dense="false"
>
</CMyValueDb>
<CMyValueDb
v-if="getCatalogoByMyPage"
:editOn="true"
:title="t('cataloglist.editore')"
table="catalogs"
:id="getCatalogoByMyPage._id"
:rec="getCatalogoByMyPage"
mykey="editore"
debounce="1000"
:type="costanti.FieldType.multiselect"
jointable="publishers"
class="q-mb-md"
:dense="false"
>
</CMyValueDb>
<div style="width: 600px; margin: 0 auto">
<div class="row">
<CMyValueDb
v-if="getCatalogoByMyPage"
:editOn="true"
table="catalogs"
:title="t('cataloglist.op_andor')"
:id="getCatalogoByMyPage._id"
:rec="getCatalogoByMyPage"
mykey="condition_andor"
debounce="1000"
:type="costanti.FieldType.op_andor"
class="q-mb-md"
:dense="false"
>
</CMyValueDb>
</div>
<div>
<CMyValueDb
v-if="getCatalogoByMyPage"
:editOn="true"
:title="t('cataloglist.argomenti')"
table="catalogs"
:id="getCatalogoByMyPage._id"
:rec="getCatalogoByMyPage"
mykey="argomenti"
debounce="1000"
:type="costanti.FieldType.multiselect"
jointable="catprods"
class="q-mb-md"
:dense="false"
>
</CMyValueDb>
<CMyValueDb
v-if="getCatalogoByMyPage"
:editOn="true"
:title="t('cataloglist.collane')"
table="catalogs"
:id="getCatalogoByMyPage._id"
:rec="getCatalogoByMyPage"
mykey="idCollane"
debounce="1000"
:type="costanti.FieldType.multiselect"
jointable="collanastotali"
class="q-mb-md"
:dense="false"
>
</CMyValueDb>
<CMyValueDb
v-if="getCatalogoByMyPage"
:editOn="true"
:title="t('cataloglist.editore')"
table="catalogs"
:id="getCatalogoByMyPage._id"
:rec="getCatalogoByMyPage"
mykey="editore"
debounce="1000"
:type="costanti.FieldType.multiselect"
jointable="publishers_totali"
class="q-mb-md"
:dense="false"
>
</CMyValueDb>
</div>
<q-btn-toggle
v-model="optrigenera.visibilitaDisp"

View File

@@ -30,7 +30,7 @@ export default defineComponent({
async function mounted() {
// Inizializza
await productStore.loadProducts()
await productStore.loadProducts(true)
endload.value = true

View File

@@ -496,7 +496,7 @@ export default defineComponent({
showWhichCode.value = tools.getCookie(tools.COOK_SHOWCODE, shared_consts.ShowCode.ALL, true)
await userStore.newsletterload(false)
await productStore.loadProducts()
await productStore.loadProducts(true)
updateorders(true)

View File

@@ -156,7 +156,7 @@ export default defineComponent({
async function mounted() {
loadpage.value = false
await productStore.loadProducts()
await productStore.loadProducts(true)
cosa.value = tools.getCookie(tools.COOK_COSA_PRODOTTI, shared_consts.PROD.GAS, true)
if (cosa.value === shared_consts.PROD.TUTTI)
cosa.value = shared_consts.PROD.GAS

View File

@@ -113,7 +113,7 @@ export default defineComponent({
async function mounted() {
loadpage.value = false
await productStore.loadProducts()
await productStore.loadProducts(true)
cosa.value = tools.getCookie(tools.COOK_COSA_PRODOTTI, shared_consts.PROD.TUTTI, true)
// Inizializza
loadpage.value = true