diff --git a/src/components/DashPiyangoListe.vue b/src/components/DashPiyangoListe.vue index bfea13d..75e662c 100644 --- a/src/components/DashPiyangoListe.vue +++ b/src/components/DashPiyangoListe.vue @@ -67,7 +67,7 @@ const router = useRouter() const props = defineProps<{ - tableData: Record + tableData: Record[] lineFunction?: Function title?: string listText?: string @@ -97,16 +97,36 @@ } const goToListWithFilter = () => { - const query: Record = {} - - // Filtre parametrelerini query'ye ekle - if (props.filterParams) { - Object.assign(query, props.filterParams) + try { + const query: Record = {} + + // Filtre parametrelerini query'ye ekle (Filters[...] formatına dönüştür) + if (props.filterParams && typeof props.filterParams === 'object') { + Object.keys(props.filterParams).forEach((key) => { + const value = props.filterParams![key] + if (value !== undefined && value !== null && value !== '') { + // Değer zaten operatör içeriyorsa olduğu gibi kullan, yoksa '=' ekle + let filterValue = String(value) + // Eğer değer zaten operatör içermiyorsa '=' ekle + if (!filterValue.match(/^[<>=]/)) { + filterValue = '=' + filterValue + } + // Query parametresine string olarak ekle (Vue Router array'leri yanlış serialize ediyor) + query[`Filters[${key}]`] = filterValue + } + }) + } + + router.push({ + path: '/piyangolar/piyango-listesi', + query: query + }) + } catch (error) { + console.error('goToListWithFilter hatası:', error) + // Hata durumunda filtre olmadan yönlendir + router.push({ + path: '/piyangolar/piyango-listesi' + }) } - - router.push({ - path: '/piyangolar/piyango-listesi', - query: query - }) } diff --git a/src/components/global/ListTableContent.vue b/src/components/global/ListTableContent.vue index 03f099b..f36fe8a 100644 --- a/src/components/global/ListTableContent.vue +++ b/src/components/global/ListTableContent.vue @@ -473,16 +473,23 @@ 1 ) if (filter.type === 'select') { - const forText = props.tableHeader[ - filter.hIndex - ].filter!.data.find( - (o: Record) => - String( - o[props.tableHeader[filter.hIndex].filter!.listVal] - ) === String(filter.values[ind].val) - ) - filter.values[ind].text = - forText[props.tableHeader[filter.hIndex].filter!.listText] + const filterData = props.tableHeader[filter.hIndex].filter!.data + if (filterData && Array.isArray(filterData)) { + const forText = filterData.find( + (o: Record) => + String( + o[props.tableHeader[filter.hIndex].filter!.listVal] + ) === String(filter.values[ind].val) + ) + if (forText) { + filter.values[ind].text = + forText[props.tableHeader[filter.hIndex].filter!.listText] + } else { + filter.values[ind].text = filter.values[ind].val + } + } else { + filter.values[ind].text = filter.values[ind].val + } } }) } else { @@ -490,13 +497,22 @@ filter.values[0].val = (route.query[key] as string).slice(1) if (filter.type === 'select') { - const forText = props.tableHeader[filter.hIndex].filter!.data.find( - (o: Record) => - String(o[props.tableHeader[filter.hIndex].filter!.listVal]) === - String(filter.values[0].val) - ) - filter.values[0].text = - forText[props.tableHeader[filter.hIndex].filter!.listText] + const filterData = props.tableHeader[filter.hIndex].filter!.data + if (filterData && Array.isArray(filterData)) { + const forText = filterData.find( + (o: Record) => + String(o[props.tableHeader[filter.hIndex].filter!.listVal]) === + String(filter.values[0].val) + ) + if (forText) { + filter.values[0].text = + forText[props.tableHeader[filter.hIndex].filter!.listText] + } else { + filter.values[0].text = filter.values[0].val + } + } else { + filter.values[0].text = filter.values[0].val + } } } filter.filter = true