[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