[pricelist] add public (outer) pricelist withoud login
This commit is contained in:
		
							parent
							
								
									59d6023462
								
							
						
					
					
						commit
						8eecb70df0
					
				| 
						 | 
					@ -30,6 +30,7 @@
 | 
				
			||||||
            hide-header
 | 
					            hide-header
 | 
				
			||||||
            :hide-bottom="props.row.volumes.length < 5"
 | 
					            :hide-bottom="props.row.volumes.length < 5"
 | 
				
			||||||
            flat
 | 
					            flat
 | 
				
			||||||
 | 
					            :visible-columns="visibleColumn"
 | 
				
			||||||
          >
 | 
					          >
 | 
				
			||||||
            <template #body-cell-prices="props_volumes">
 | 
					            <template #body-cell-prices="props_volumes">
 | 
				
			||||||
              <q-td :props="props_volumes">
 | 
					              <q-td :props="props_volumes">
 | 
				
			||||||
| 
						 | 
					@ -39,6 +40,7 @@
 | 
				
			||||||
                  hide-header
 | 
					                  hide-header
 | 
				
			||||||
                  :hide-bottom="props_volumes.row.prices.length < 5"
 | 
					                  :hide-bottom="props_volumes.row.prices.length < 5"
 | 
				
			||||||
                  flat
 | 
					                  flat
 | 
				
			||||||
 | 
					                  :visible-columns="visibleColumn"
 | 
				
			||||||
                >
 | 
					                >
 | 
				
			||||||
                  <template #body-cell-public="props_prices">
 | 
					                  <template #body-cell-public="props_prices">
 | 
				
			||||||
                    <q-td :props="props_prices">
 | 
					                    <q-td :props="props_prices">
 | 
				
			||||||
| 
						 | 
					@ -74,7 +76,7 @@
 | 
				
			||||||
  </div>
 | 
					  </div>
 | 
				
			||||||
</template>
 | 
					</template>
 | 
				
			||||||
<script lang="ts">
 | 
					<script lang="ts">
 | 
				
			||||||
import { defineComponent, onBeforeMount, computed } from 'vue';
 | 
					import { defineComponent, onBeforeMount, computed, ref } from 'vue';
 | 
				
			||||||
import { usePricelistStore } from '../store';
 | 
					import { usePricelistStore } from '../store';
 | 
				
			||||||
import { useMainStore } from 'src/store';
 | 
					import { useMainStore } from 'src/store';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -91,14 +93,27 @@ export default defineComponent({
 | 
				
			||||||
      return `${price.toFixed(2)}€`;
 | 
					      return `${price.toFixed(2)}€`;
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
  },
 | 
					  },
 | 
				
			||||||
  setup() {
 | 
					  props: {
 | 
				
			||||||
 | 
					    public: {
 | 
				
			||||||
 | 
					      type: Boolean,
 | 
				
			||||||
 | 
					      default: false,
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					  },
 | 
				
			||||||
 | 
					  setup(props) {
 | 
				
			||||||
 | 
					    let user: string | null;
 | 
				
			||||||
    onBeforeMount(() => {
 | 
					    onBeforeMount(() => {
 | 
				
			||||||
 | 
					      if (user) {
 | 
				
			||||||
        store.getPriceCalcColumn(user);
 | 
					        store.getPriceCalcColumn(user);
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
    });
 | 
					    });
 | 
				
			||||||
    const store = usePricelistStore();
 | 
					    const store = usePricelistStore();
 | 
				
			||||||
 | 
					 | 
				
			||||||
    onBeforeMount(() => {
 | 
					    onBeforeMount(() => {
 | 
				
			||||||
      void store.getDrinks();
 | 
					      void store.getDrinks();
 | 
				
			||||||
 | 
					      try {
 | 
				
			||||||
 | 
					        user = mainStore.currentUser.userid;
 | 
				
			||||||
 | 
					      } catch {
 | 
				
			||||||
 | 
					        user = null;
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
    });
 | 
					    });
 | 
				
			||||||
    const drinks = computed(() => store.drinks);
 | 
					    const drinks = computed(() => store.drinks);
 | 
				
			||||||
    const columns_drinks = [
 | 
					    const columns_drinks = [
 | 
				
			||||||
| 
						 | 
					@ -151,14 +166,36 @@ export default defineComponent({
 | 
				
			||||||
        field: 'public',
 | 
					        field: 'public',
 | 
				
			||||||
      },
 | 
					      },
 | 
				
			||||||
    ];
 | 
					    ];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    const canBeVisible = createVisibleColumns();
 | 
				
			||||||
 | 
					    const _visibleColumns = ref(canBeVisible);
 | 
				
			||||||
    const visibleColumn = computed({
 | 
					    const visibleColumn = computed({
 | 
				
			||||||
      get: () => store.pricecalc_columns,
 | 
					      get: () => {
 | 
				
			||||||
 | 
					        if (user) {
 | 
				
			||||||
 | 
					          return store.pricecalc_columns;
 | 
				
			||||||
 | 
					        } else {
 | 
				
			||||||
 | 
					          return _visibleColumns.value;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					      },
 | 
				
			||||||
      set: (val) => {
 | 
					      set: (val) => {
 | 
				
			||||||
 | 
					        if (user) {
 | 
				
			||||||
          store.updatePriceCalcColumn(user, val);
 | 
					          store.updatePriceCalcColumn(user, val);
 | 
				
			||||||
 | 
					        } else {
 | 
				
			||||||
 | 
					          _visibleColumns.value = val;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
      },
 | 
					      },
 | 
				
			||||||
    });
 | 
					    });
 | 
				
			||||||
    const mainStore = useMainStore();
 | 
					    const mainStore = useMainStore();
 | 
				
			||||||
    const user = mainStore.currentUser.userid;
 | 
					
 | 
				
			||||||
 | 
					    function createVisibleColumns() {
 | 
				
			||||||
 | 
					      const retVal: Array<string> = [];
 | 
				
			||||||
 | 
					      columns_drinks.forEach((drink) => retVal.push(drink.name));
 | 
				
			||||||
 | 
					      columns_volumes.forEach((volume) => retVal.push(volume.name));
 | 
				
			||||||
 | 
					      columns_prices.forEach((price) => {
 | 
				
			||||||
 | 
					        if (user || price.name !== 'public') retVal.push(price.name);
 | 
				
			||||||
 | 
					      });
 | 
				
			||||||
 | 
					      return retVal;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
    return { columns_drinks, columns_volumes, columns_prices, drinks, visibleColumn };
 | 
					    return { columns_drinks, columns_volumes, columns_prices, drinks, visibleColumn };
 | 
				
			||||||
  },
 | 
					  },
 | 
				
			||||||
});
 | 
					});
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,13 @@
 | 
				
			||||||
 | 
					<template>
 | 
				
			||||||
 | 
					  <pricelist public />
 | 
				
			||||||
 | 
					</template>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					<script>
 | 
				
			||||||
 | 
					import Pricelist from '../components/Pricelist.vue';
 | 
				
			||||||
 | 
					export default {
 | 
				
			||||||
 | 
					  name: 'OuterPricelist',
 | 
				
			||||||
 | 
					  components: { Pricelist },
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					</script>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					<style scoped></style>
 | 
				
			||||||
| 
						 | 
					@ -1,9 +1,10 @@
 | 
				
			||||||
import { innerRoutes } from './routes';
 | 
					import { innerRoutes, outerRoutes } from './routes';
 | 
				
			||||||
import { FG_Plugin } from 'src/plugins';
 | 
					import { FG_Plugin } from 'src/plugins';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
const plugin: FG_Plugin.Plugin = {
 | 
					const plugin: FG_Plugin.Plugin = {
 | 
				
			||||||
  name: 'Pricelist',
 | 
					  name: 'Pricelist',
 | 
				
			||||||
  innerRoutes,
 | 
					  innerRoutes,
 | 
				
			||||||
 | 
					  outerRoutes,
 | 
				
			||||||
  requiredModules: [],
 | 
					  requiredModules: [],
 | 
				
			||||||
  requiredBackendModules: ['pricelist'],
 | 
					  requiredBackendModules: ['pricelist'],
 | 
				
			||||||
  version: '0.0.1',
 | 
					  version: '0.0.1',
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -36,3 +36,16 @@ export const innerRoutes: FG_Plugin.MenuRoute[] = [
 | 
				
			||||||
    ],
 | 
					    ],
 | 
				
			||||||
  },
 | 
					  },
 | 
				
			||||||
];
 | 
					];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					export const outerRoutes: FG_Plugin.MenuRoute[] = [
 | 
				
			||||||
 | 
					  {
 | 
				
			||||||
 | 
					    title: 'Preisliste',
 | 
				
			||||||
 | 
					    icon: 'mdi-glass-mug-variant',
 | 
				
			||||||
 | 
					    shortcut: true,
 | 
				
			||||||
 | 
					    route: {
 | 
				
			||||||
 | 
					      path: 'pricelist',
 | 
				
			||||||
 | 
					      name: 'outter-pricelist',
 | 
				
			||||||
 | 
					      component: () => import('../pages/OuterPricelist.vue')
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					]
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in New Issue