diff --git a/frontend/package-lock.json b/frontend/package-lock.json index dc09af0..0abc594 100644 --- a/frontend/package-lock.json +++ b/frontend/package-lock.json @@ -9,6 +9,7 @@ "version": "0.0.0", "dependencies": { "@iconoir/vue": "^7.11.0", + "@mdi/font": "^7.4.47", "@primeuix/themes": "^1.2.5", "axios": "^1.12.2", "frappe-ui": "^0.1.205", @@ -737,6 +738,12 @@ "integrity": "sha512-dfLbk+PwWvFzSxwk3n5ySL0hfBog779o8h68wK/7/APo/7cgyWp5jcXockbxdk5kFRkbeXWm4Fbi9FrdN381sA==", "license": "Apache-2.0" }, + "node_modules/@mdi/font": { + "version": "7.4.47", + "resolved": "https://registry.npmjs.org/@mdi/font/-/font-7.4.47.tgz", + "integrity": "sha512-43MtGpd585SNzHZPcYowu/84Vz2a2g31TvPMTm9uTiCSWzaheQySUcSyUH/46fPnuPQWof2yd0pGBtzee/IQWw==", + "license": "Apache-2.0" + }, "node_modules/@popperjs/core": { "version": "2.11.8", "resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.11.8.tgz", diff --git a/frontend/package.json b/frontend/package.json index bc06387..0c67a5e 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -10,6 +10,7 @@ }, "dependencies": { "@iconoir/vue": "^7.11.0", + "@mdi/font": "^7.4.47", "@primeuix/themes": "^1.2.5", "axios": "^1.12.2", "frappe-ui": "^0.1.205", diff --git a/frontend/src/api.js b/frontend/src/api.js index 83f8c50..c5868eb 100644 --- a/frontend/src/api.js +++ b/frontend/src/api.js @@ -27,6 +27,18 @@ class Api { return data; } + static async getServiceData() { + const data = DataUtils.dummyServiceData; + console.log("DEBUG: API - getServiceData result: ", data); + return data; + } + + static async getRouteData() { + const data = DataUtils.dummyRouteData; + console.log("DEBUG: API - getRouteData result: ", data); + return data; + } + static async getDocsList(doctype, fields = []) { const docs = await frappe.db.get_list(doctype, { fields }); console.log(`DEBUG: API - Fetched ${doctype} list: `, docs); diff --git a/frontend/src/components/DataTable.vue b/frontend/src/components/DataTable.vue index 4243cd1..d52c5d2 100644 --- a/frontend/src/components/DataTable.vue +++ b/frontend/src/components/DataTable.vue @@ -36,6 +36,14 @@ :severity="getBadgeColor(slotProps.data[col.fieldName])" /> + @@ -44,6 +52,7 @@ import { defineProps } from "vue"; import DataTable from "primevue/datatable"; import Column from "primevue/column"; import Tag from "primevue/tag"; +import Button from "primevue/button"; import InputText from "primevue/inputtext"; import { ref } from "vue"; import { FilterMatchMode } from "@primevue/core"; @@ -64,6 +73,8 @@ const props = defineProps({ }, }); +const emit = defineEmits(['rowClick']); + const filterRef = ref(props.filters); const selectedRows = ref(); diff --git a/frontend/src/components/SideBar.vue b/frontend/src/components/SideBar.vue index a1e2c11..6461ced 100644 --- a/frontend/src/components/SideBar.vue +++ b/frontend/src/components/SideBar.vue @@ -137,6 +137,7 @@ const handleCategoryClick = (category) => { background-color: rgb(69, 112, 101); color: white; display: flex; + width: 100%; align-items: center; } diff --git a/frontend/src/components/pages/Calendar.vue b/frontend/src/components/pages/Calendar.vue index e978cd6..54e912b 100644 --- a/frontend/src/components/pages/Calendar.vue +++ b/frontend/src/components/pages/Calendar.vue @@ -1,6 +1,743 @@ - + + + + diff --git a/frontend/src/components/pages/Home.vue b/frontend/src/components/pages/Home.vue index 70bb1dc..fa9c090 100644 --- a/frontend/src/components/pages/Home.vue +++ b/frontend/src/components/pages/Home.vue @@ -256,6 +256,8 @@ const navigateTo = (path) => { .widget-card { box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1); border-radius: 12px; + display: flex; + justify-content: space-between; transition: transform 0.2s ease, box-shadow 0.2s ease; diff --git a/frontend/src/components/pages/Routes.vue b/frontend/src/components/pages/Routes.vue index e92532e..5534eb2 100644 --- a/frontend/src/components/pages/Routes.vue +++ b/frontend/src/components/pages/Routes.vue @@ -1,9 +1,547 @@ -