From 8d4ff3c88e87ffd8fd4a596d95098a83516b0344 Mon Sep 17 00:00:00 2001 From: florianfederspiel Date: Tue, 3 Jun 2025 16:35:30 +0200 Subject: [PATCH] Added Features to Mobile Styling --- components/EntityList.vue | 8 ++ components/EntityListMobile.vue | 129 ++++++++++++++++++++++++++++++++ layouts/mobile.vue | 4 +- pages/mobile/menu.vue | 30 +++++++- pages/times/index.vue | 41 +++++++++- stores/data.js | 2 + 6 files changed, 209 insertions(+), 5 deletions(-) create mode 100644 components/EntityListMobile.vue diff --git a/components/EntityList.vue b/components/EntityList.vue index 7eb08d2..a76b031 100644 --- a/components/EntityList.vue +++ b/components/EntityList.vue @@ -2,6 +2,7 @@ import {useTempStore} from "~/stores/temp.js"; import FloatingActionButton from "~/components/mobile/FloatingActionButton.vue"; import EntityTable from "~/components/EntityTable.vue"; +import EntityListMobile from "~/components/EntityListMobile.vue"; const props = defineProps({ type: { @@ -181,7 +182,14 @@ const filteredRows = computed(() => { + + /*defineShortcuts({ + /!*'/': () => { + //console.log(searchinput) + //searchinput.value.focus() + document.getElementById("searchinput").focus() + },*!/ + 'Enter': { + usingInput: true, + handler: () => { + router.push(`/standardEntity/${props.type}/show/${props.rows.value[selectedItem.value].id}`) + } + }, + 'arrowdown': () => { + if(selectedItem.value < props.rows.length - 1) { + selectedItem.value += 1 + } else { + selectedItem.value = 0 + } + }, + 'arrowup': () => { + if(selectedItem.value === 0) { + selectedItem.value = props.rows.length - 1 + } else { + selectedItem.value -= 1 + } + } + })*/ + + const props = defineProps({ + rows: { + type: Array, + required: true, + default: [] + }, + columns: { + type: Array, + required: true, + }, + type: { + type: String, + required: true, + } + }) + + const dataStore = useDataStore() + + const router = useRouter() + + const dataType = dataStore.dataTypes[props.type] + + const selectedItem = ref(0) + + + + + + + \ No newline at end of file diff --git a/layouts/mobile.vue b/layouts/mobile.vue index 4f966ed..314708f 100644 --- a/layouts/mobile.vue +++ b/layouts/mobile.vue @@ -167,12 +167,12 @@ const footerLinks = [/*{ variant="ghost" :color="route.fullPath === '/standardEntity/projects' ? 'primary' : 'gray'" /> - + />--> - + Weiteres + + Zeiten + Abwesenheiten + + Anwesenheiten + + Kunden Lieferanten + + Ansprechpartner + Objekte diff --git a/pages/times/index.vue b/pages/times/index.vue index 5e56d29..5fa4b85 100644 --- a/pages/times/index.vue +++ b/pages/times/index.vue @@ -2,6 +2,7 @@ import dayjs from "dayjs"; import VueDatePicker from '@vuepic/vue-datepicker' import '@vuepic/vue-datepicker/dist/main.css' +import {setPageLayout} from "#app"; definePageMeta({ @@ -32,9 +33,16 @@ const runningTimeInfo = ref({}) const showConfigTimeModal = ref(false) const configTimeMode = ref("create") +const platform = ref("default") + const setup = async () => { times.value = await useSupabaseSelect("times","*, profile(*), project(id, name)") + if(await useCapacitor().getIsPhone()) { + platform.value = "mobile" + setPageLayout("mobile") + } + runningTimeInfo.value = (await supabase .from("times") .select() @@ -209,11 +217,23 @@ const setState = async (newState) => { await updateTime() } +const getSecondInfo = (item) => { + let returnArray = [] + + if(item.type) returnArray.push(item.type) + if(item.project) returnArray.push(item.project.name) + if(item.notes) returnArray.push(item.notes) + + return returnArray +} +