[chore] add serverside sorting for pricelist. fix public viewing
This commit is contained in:
parent
2cb72426a1
commit
7f33a44d94
|
@ -23,7 +23,7 @@ declare namespace FG {
|
|||
interface DrinkPrice {
|
||||
id: number;
|
||||
price: number;
|
||||
volume: Array<DrinkPriceVolume>
|
||||
volume: Array<DrinkPriceVolume>;
|
||||
public: boolean;
|
||||
description?: string;
|
||||
}
|
||||
|
|
|
@ -414,7 +414,7 @@ export default defineComponent({
|
|||
console.log('result', result.count);
|
||||
if (result.count) pagination.value.rowsNumber = result.count;
|
||||
} catch (error) {
|
||||
console.warn(error)
|
||||
console.warn(error);
|
||||
}
|
||||
loading.value = false;
|
||||
}
|
||||
|
|
|
@ -43,7 +43,7 @@
|
|||
</div>
|
||||
<div class="q-pa-sm">
|
||||
<div v-for="(price, index) in volume.prices" :key="price.id">
|
||||
<div class="fit row justify-around q-py-sm">
|
||||
<div v-if="isPublic(price, volume)" class="fit row justify-around q-py-sm">
|
||||
<div
|
||||
v-if="!editable || !hasPermission(PERMISSIONS.EDIT_PRICE)"
|
||||
class="text-body1 col-3"
|
||||
|
@ -294,6 +294,15 @@ export default defineComponent({
|
|||
emit('update:modelValue', volumes.value);
|
||||
}
|
||||
|
||||
function isPublic(price: FG.DrinkPrice, drink) {
|
||||
console.log('drink', drink);
|
||||
if (props.public) {
|
||||
console.log(price);
|
||||
return price.public;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
const isUnderMinPrice = computed(() => {
|
||||
if (volumes.value) {
|
||||
const this_volume = volumes.value.find((a) => a.id === volume.value);
|
||||
|
@ -328,6 +337,7 @@ export default defineComponent({
|
|||
isUnderMinPrice,
|
||||
hasPermission,
|
||||
PERMISSIONS,
|
||||
isPublic,
|
||||
};
|
||||
},
|
||||
});
|
||||
|
|
|
@ -10,7 +10,7 @@
|
|||
:fullscreen="fullscreen"
|
||||
@request="onRequest"
|
||||
>
|
||||
<!--
|
||||
<!--
|
||||
:filter-method="filter"-->
|
||||
<template #top-right>
|
||||
<div class="row justify-end q-gutter-sm">
|
||||
|
@ -111,11 +111,11 @@ export default defineComponent({
|
|||
if (!props.public) {
|
||||
user.value = useMainStore().currentUser.userid;
|
||||
void store.getPriceListColumnOrder(user.value);
|
||||
onRequest({pagination: pagination.value, filter: {limit: 10}})
|
||||
void store.getPriceCalcColumn(user.value);
|
||||
} else {
|
||||
user.value = '';
|
||||
}
|
||||
onRequest({ pagination: pagination.value, filter: { limit: 10 } });
|
||||
});
|
||||
|
||||
const _order = ref<Array<Order>>([
|
||||
|
@ -175,7 +175,7 @@ export default defineComponent({
|
|||
//field: 'name',
|
||||
field: 'volume',
|
||||
format: (val: FG.DrinkPriceVolume) => val.drink.name,
|
||||
sortable: false,
|
||||
sortable: true,
|
||||
filterable: true,
|
||||
align: 'left',
|
||||
},
|
||||
|
@ -184,7 +184,7 @@ export default defineComponent({
|
|||
label: 'Kategorie',
|
||||
//field: 'type',
|
||||
field: 'volume',
|
||||
sortable: false,
|
||||
sortable: true,
|
||||
filterable: true,
|
||||
format: (val: FG.DrinkPriceVolume) => val.drink.type.name,
|
||||
},
|
||||
|
@ -212,14 +212,14 @@ export default defineComponent({
|
|||
//field: 'volume',
|
||||
field: 'volume',
|
||||
filterable: true,
|
||||
sortable: false,
|
||||
sortable: true,
|
||||
format: (val: FG.DrinkPriceVolume) => `${val.volume.toFixed(3)}L`,
|
||||
},
|
||||
{
|
||||
name: 'price',
|
||||
label: 'Preis',
|
||||
field: 'price',
|
||||
sortable: false,
|
||||
sortable: true,
|
||||
filterable: true,
|
||||
format: (val: number) => `${val.toFixed(2)}€`,
|
||||
},
|
||||
|
@ -317,13 +317,15 @@ export default defineComponent({
|
|||
//console.log('search_keys', search_keys);
|
||||
const fetchCount = rowsPerPage === 0 ? pagination.value.rowsNumber : rowsPerPage;
|
||||
const startRow = (page - 1) * rowsPerPage;
|
||||
console.log('descending', descending);
|
||||
try {
|
||||
const result = await store.getPricelist({
|
||||
offset: startRow,
|
||||
limit: fetchCount,
|
||||
descending,
|
||||
descending: descending ? true : undefined,
|
||||
search_name: props.filter?.value,
|
||||
search_key: props.filter?.key,
|
||||
sortBy: sortBy,
|
||||
});
|
||||
pagination.value.page = page;
|
||||
pagination.value.rowsPerPage = rowsPerPage;
|
||||
|
@ -332,7 +334,7 @@ export default defineComponent({
|
|||
console.log('result', result);
|
||||
if (result) pagination.value.rowsNumber = result;
|
||||
} catch (error) {
|
||||
console.warn(error)
|
||||
console.warn(error);
|
||||
}
|
||||
loading.value = false;
|
||||
}
|
||||
|
@ -342,8 +344,8 @@ export default defineComponent({
|
|||
sortBy: 'name',
|
||||
rowsPerPage: 10,
|
||||
rowsNumber: 10,
|
||||
descending:false,
|
||||
page: 1
|
||||
descending: false,
|
||||
page: 1,
|
||||
});
|
||||
|
||||
const fullscreen = ref(false);
|
||||
|
|
67
src/store.ts
67
src/store.ts
|
@ -181,9 +181,12 @@ export const usePricelistStore = defineStore({
|
|||
}) {
|
||||
if (!filter) filter = { limit: 10 };
|
||||
console.log('filter_api', filter);
|
||||
const { data } = await api.get<{drinks: Array<FG.Drink>; count: number}>('pricelist/drinks', {
|
||||
params: filter,
|
||||
});
|
||||
const { data } = await api.get<{ drinks: Array<FG.Drink>; count: number }>(
|
||||
'pricelist/drinks',
|
||||
{
|
||||
params: filter,
|
||||
}
|
||||
);
|
||||
const drinks = [];
|
||||
data.drinks.forEach((drink) => {
|
||||
const _drink = new Drink(drink);
|
||||
|
@ -197,20 +200,24 @@ export const usePricelistStore = defineStore({
|
|||
return drinks;
|
||||
},
|
||||
async getPricelist(filter: {
|
||||
limit?: number;
|
||||
offset?: number;
|
||||
descending?: boolean;
|
||||
search_name?: string;
|
||||
search_key?: string;
|
||||
limit?: number;
|
||||
offset?: number;
|
||||
descending?: boolean;
|
||||
search_name?: string;
|
||||
search_key?: string;
|
||||
sortBy?: string;
|
||||
}) {
|
||||
const { data } = await api.get<{pricelist: Array<FG.DrinkPrice>; count: number}>('pricelist/list', {
|
||||
params: filter,
|
||||
});
|
||||
this.pricelist = [];
|
||||
console.log(data)
|
||||
this.pricelist = data.pricelist;
|
||||
console.log(this.pricelist);
|
||||
return data.count
|
||||
const { data } = await api.get<{ pricelist: Array<FG.DrinkPrice>; count: number }>(
|
||||
'pricelist/list',
|
||||
{
|
||||
params: filter,
|
||||
}
|
||||
);
|
||||
this.pricelist = [];
|
||||
console.log(data);
|
||||
this.pricelist = data.pricelist;
|
||||
console.log(this.pricelist);
|
||||
return data.count;
|
||||
},
|
||||
async deletePrice(price: FG.DrinkPrice) {
|
||||
await api.delete(`pricelist/prices/${price.id}`);
|
||||
|
@ -373,20 +380,20 @@ export const usePricelistStore = defineStore({
|
|||
});
|
||||
return retVal;
|
||||
},*/
|
||||
computed_pricelist() {
|
||||
const retVal: Array<Pricelist> = [];
|
||||
this.pricelist.forEach((price) => {
|
||||
retVal.push({
|
||||
name: price.volume.drink.name,
|
||||
type: <FG.DrinkType>price.volume.drink.type,
|
||||
tags: <Array<FG.Tag>>price.volume.drink.tags,
|
||||
volume: <number>price.volume.volume,
|
||||
public: price.public,
|
||||
price: price.price,
|
||||
description: <string>price.description,
|
||||
})
|
||||
})
|
||||
}
|
||||
computed_pricelist() {
|
||||
const retVal: Array<Pricelist> = [];
|
||||
this.pricelist.forEach((price) => {
|
||||
retVal.push({
|
||||
name: price.volume.drink.name,
|
||||
type: <FG.DrinkType>price.volume.drink.type,
|
||||
tags: <Array<FG.Tag>>price.volume.drink.tags,
|
||||
volume: <number>price.volume.volume,
|
||||
public: price.public,
|
||||
price: price.price,
|
||||
description: <string>price.description,
|
||||
});
|
||||
});
|
||||
},
|
||||
},
|
||||
});
|
||||
|
||||
|
|
Loading…
Reference in New Issue