diff --git a/.gitea/workflows/build.yml b/.gitea/workflows/build.yml index ce8ca80..1ae2084 100644 --- a/.gitea/workflows/build.yml +++ b/.gitea/workflows/build.yml @@ -118,8 +118,9 @@ jobs: echo "Pushing latest and main tags..." docker push ${IMAGE_BASE}:latest docker push ${IMAGE_BASE}:main - else - echo "Skipping latest/main tags - not on main branch (current: ${{ gitea.ref_name }})" + elif [ "${{ gitea.ref_name }}" = "dev" ]; then + echo "Pushing dev tag..." + docker push ${IMAGE_BASE}:dev fi - name: Create and push git tag diff --git a/pom.xml b/pom.xml index 0eeb7f2..eaaa690 100644 --- a/pom.xml +++ b/pom.xml @@ -5,7 +5,7 @@ org.springframework.boot spring-boot-starter-parent - 3.4.3 + 3.5.8 de.avatic @@ -28,9 +28,9 @@ 23 - 5.23.0 - 5.18.0 - 11.1.0 + 5.24.0 + 5.20.0 + 11.18.0 @@ -108,27 +108,27 @@ org.apache.poi poi - 5.5.0 + 5.5.1 org.dhatim fastexcel - 0.17.0 + 0.19.0 org.dhatim fastexcel-reader - 0.17.0 + 0.19.0 org.apache.poi poi-ooxml - 5.5.0 + 5.5.1 org.dhatim fastexcel - 0.18.4 + 0.19.0 org.springframework.boot @@ -208,12 +208,12 @@ org.codehaus.mojo versions-maven-plugin - 2.18.0 + 2.20.1 org.jvnet.jaxb jaxb-maven-plugin - 4.0.11 + 4.0.12 diff --git a/src/frontend/index.html b/src/frontend/index.html index 581899e..283e226 100644 --- a/src/frontend/index.html +++ b/src/frontend/index.html @@ -4,7 +4,13 @@ - LCC + + + + + + + Logistics Cost Calculation Tool
diff --git a/src/frontend/package.json b/src/frontend/package.json index 07c28f8..07fa02b 100644 --- a/src/frontend/package.json +++ b/src/frontend/package.json @@ -14,7 +14,6 @@ "dependencies": { "@phosphor-icons/vue": "^2.2.1", "@vueuse/core": "^13.6.0", - "azure-maps-control": "^3.6.1", "chart.js": "^4.5.0", "leaflet": "^1.9.4", "loglevel": "^1.9.2", diff --git a/src/frontend/public/apple-touch-icon.png b/src/frontend/public/apple-touch-icon.png new file mode 100644 index 0000000..d0ce292 Binary files /dev/null and b/src/frontend/public/apple-touch-icon.png differ diff --git a/src/frontend/public/favicon-96x96.png b/src/frontend/public/favicon-96x96.png new file mode 100644 index 0000000..afb1ea1 Binary files /dev/null and b/src/frontend/public/favicon-96x96.png differ diff --git a/src/frontend/public/favicon.ico b/src/frontend/public/favicon.ico index df36fcf..f29e836 100644 Binary files a/src/frontend/public/favicon.ico and b/src/frontend/public/favicon.ico differ diff --git a/src/frontend/public/favicon.svg b/src/frontend/public/favicon.svg new file mode 100644 index 0000000..13ed733 --- /dev/null +++ b/src/frontend/public/favicon.svg @@ -0,0 +1,16 @@ + + + + + + + + \ No newline at end of file diff --git a/src/frontend/public/site.webmanifest b/src/frontend/public/site.webmanifest new file mode 100644 index 0000000..ccf313a --- /dev/null +++ b/src/frontend/public/site.webmanifest @@ -0,0 +1,21 @@ +{ + "name": "MyWebSite", + "short_name": "MySite", + "icons": [ + { + "src": "/web-app-manifest-192x192.png", + "sizes": "192x192", + "type": "image/png", + "purpose": "maskable" + }, + { + "src": "/web-app-manifest-512x512.png", + "sizes": "512x512", + "type": "image/png", + "purpose": "maskable" + } + ], + "theme_color": "#ffffff", + "background_color": "#ffffff", + "display": "standalone" +} \ No newline at end of file diff --git a/src/frontend/public/web-app-manifest-192x192.png b/src/frontend/public/web-app-manifest-192x192.png new file mode 100644 index 0000000..8f592ae Binary files /dev/null and b/src/frontend/public/web-app-manifest-192x192.png differ diff --git a/src/frontend/public/web-app-manifest-512x512.png b/src/frontend/public/web-app-manifest-512x512.png new file mode 100644 index 0000000..467aed8 Binary files /dev/null and b/src/frontend/public/web-app-manifest-512x512.png differ diff --git a/src/frontend/src/App.vue b/src/frontend/src/App.vue index b99c352..66c8e16 100644 --- a/src/frontend/src/App.vue +++ b/src/frontend/src/App.vue @@ -29,6 +29,14 @@ export default { padding: 0; } + + + + +html.modal-open { + background: #f8fafc; +} + .page-header { font-weight: normal; margin-bottom: 3rem; @@ -44,7 +52,7 @@ export default { html { font-size: 62.5%; - font-family: 'Poppins', sans-serif; + font-family: 'Arial', sans-serif; } body { diff --git a/src/frontend/src/components/UI/AutoSuggestSearchBar.vue b/src/frontend/src/components/UI/AutoSuggestSearchBar.vue index c2f357b..33e8f8c 100644 --- a/src/frontend/src/components/UI/AutoSuggestSearchBar.vue +++ b/src/frontend/src/components/UI/AutoSuggestSearchBar.vue @@ -76,6 +76,7 @@ import Spinner from "@/components/UI/Spinner.vue"; import Flag from "@/components/UI/Flag.vue"; import {useDebounceFn} from "@vueuse/core"; import BasicBadge from "@/components/UI/BasicBadge.vue"; +import logger from "@/logger.js"; export default { name: 'AutosuggestSearchbar', @@ -182,7 +183,7 @@ export default { this.highlightedIndex = -1 this.$emit('suggestions-loaded', this.suggestions) } catch (error) { - console.error('Error fetching suggestions:', error) + logger.error('Error fetching suggestions:', error) this.suggestions = [] this.hideSuggestions() this.$emit('error', error) diff --git a/src/frontend/src/components/UI/BasicBadge.vue b/src/frontend/src/components/UI/BasicBadge.vue index 3f2abf4..0d443ee 100644 --- a/src/frontend/src/components/UI/BasicBadge.vue +++ b/src/frontend/src/components/UI/BasicBadge.vue @@ -23,6 +23,11 @@ export default{ type: String, default: 'primary', validator: (value) => ['primary', 'secondary', 'grey', 'exception', 'skeleton'].includes(value) + }, + size: { + type: String, + default: 'default', + validator: (value) => ['default', 'compact'].includes(value) } }, computed: { @@ -31,7 +36,8 @@ export default{ }, batchClasses() { return [ - `batch--${this.variant}` + `batch--${this.variant}`, + `batch--${this.size}` ] }, iconComponent() { @@ -65,6 +71,12 @@ export default{ height: 2.4rem; } +.batch-container.batch--compact { + padding: 0.2rem 0.4rem; + gap: 0.4rem; + height: 2rem; +} + .batch--primary { background-color: #5AF0B4; color: #002F54; diff --git a/src/frontend/src/components/UI/Checkbox.vue b/src/frontend/src/components/UI/Checkbox.vue index ac246cb..2463b18 100644 --- a/src/frontend/src/components/UI/Checkbox.vue +++ b/src/frontend/src/components/UI/Checkbox.vue @@ -1,23 +1,24 @@ - \ No newline at end of file diff --git a/src/frontend/src/components/UI/Dropdown.vue b/src/frontend/src/components/UI/Dropdown.vue index b3aac56..c909433 100644 --- a/src/frontend/src/components/UI/Dropdown.vue +++ b/src/frontend/src/components/UI/Dropdown.vue @@ -4,7 +4,7 @@ ref="trigger" class="dropdown-trigger" :class="{ 'dropdown-trigger--open': isOpen}" - @click="toggleDropdown" + @click.stop="toggleDropdown" @keydown="handleTriggerKeydown" :disabled="disabled" > @@ -143,6 +143,7 @@ export default { return this.modelValue === option[this.valueKey] }, handleClickOutside(event) { + if (!this.$refs.dropdown?.contains(event.target)) { this.closeDropdown() } diff --git a/src/frontend/src/components/UI/JsonTreeViewer.vue b/src/frontend/src/components/UI/JsonTreeViewer.vue index 77e614a..36a3194 100644 --- a/src/frontend/src/components/UI/JsonTreeViewer.vue +++ b/src/frontend/src/components/UI/JsonTreeViewer.vue @@ -66,13 +66,10 @@ export default { \ No newline at end of file diff --git a/src/frontend/src/components/UI/SortButton.vue b/src/frontend/src/components/UI/SortButton.vue new file mode 100644 index 0000000..bd19d72 --- /dev/null +++ b/src/frontend/src/components/UI/SortButton.vue @@ -0,0 +1,64 @@ + + + + + \ No newline at end of file diff --git a/src/frontend/src/components/UI/TabContainer.vue b/src/frontend/src/components/UI/TabContainer.vue index 67b237b..683d827 100644 --- a/src/frontend/src/components/UI/TabContainer.vue +++ b/src/frontend/src/components/UI/TabContainer.vue @@ -138,17 +138,18 @@ export default { } .tab-content { - padding: 20px; - background-color: white; - flex: 1; /* Take remaining space */ - min-height: 0; /* Allow shrinking */ - position: relative; + flex: 1; + display: flex; + flex-direction: column; + min-height: 0; overflow: hidden; } .tab-pane { width: 100%; height: 100%; + display: flex; + flex-direction: column; opacity: 0; transform: translateY(20px); transition: all 0.4s cubic-bezier(0.4, 0, 0.2, 1); diff --git a/src/frontend/src/components/layout/bulkedit/BulkEditRow.vue b/src/frontend/src/components/layout/bulkedit/BulkEditRow.vue index fe3fa7f..1142da8 100644 --- a/src/frontend/src/components/layout/bulkedit/BulkEditRow.vue +++ b/src/frontend/src/components/layout/bulkedit/BulkEditRow.vue @@ -1,149 +1,260 @@ \ No newline at end of file diff --git a/src/frontend/src/components/layout/bulkoperation/BulkOperation.vue b/src/frontend/src/components/layout/bulkoperation/BulkOperation.vue index fe2a83d..89e1cff 100644 --- a/src/frontend/src/components/layout/bulkoperation/BulkOperation.vue +++ b/src/frontend/src/components/layout/bulkoperation/BulkOperation.vue @@ -11,9 +11,10 @@
- + ERROR + ERROR
COMPLETED SCHEDULED diff --git a/src/frontend/src/components/layout/calculation/CalculationListItem.vue b/src/frontend/src/components/layout/calculation/CalculationListItem.vue index a156daf..87a0c0a 100644 --- a/src/frontend/src/components/layout/calculation/CalculationListItem.vue +++ b/src/frontend/src/components/layout/calculation/CalculationListItem.vue @@ -181,8 +181,9 @@ export default { .calculation-list-supplier-data { display: flex; flex-direction: column; + align-items: flex-start; + justify-content: center; gap: 0.4rem; - height: 90% } .supplier-name { diff --git a/src/frontend/src/components/layout/config/Apps.vue b/src/frontend/src/components/layout/config/Apps.vue index 451b131..3af2e75 100644 --- a/src/frontend/src/components/layout/config/Apps.vue +++ b/src/frontend/src/components/layout/config/Apps.vue @@ -1,20 +1,22 @@ @@ -65,6 +67,10 @@ export default { \ No newline at end of file diff --git a/src/frontend/src/components/layout/config/Materials.vue b/src/frontend/src/components/layout/config/Materials.vue index 4dd58fa..51d7f9c 100644 --- a/src/frontend/src/components/layout/config/Materials.vue +++ b/src/frontend/src/components/layout/config/Materials.vue @@ -1,5 +1,5 @@