diff --git a/README.md b/README.md
index 12e4ba7..1f467c1 100644
--- a/README.md
+++ b/README.md
@@ -12,31 +12,12 @@
-
+
E-appointment Frontend
-
-
- Table of Contents
-
- -
- About The Project
-
-
- -
- Getting Started
-
- - Contributing
- - License
- - Contact
-
-
-
## About The Project
@@ -66,6 +47,32 @@ This project is built with:
## Getting Started
+## For Mac
+
+Install Java Node and Maven
+
+ `brew install openjdk@17 && brew install nodejs && brew install maven`
+
+Set Env
+```
+/usr/libexec/java_home -v 17
+
+echo 'export PATH="/usr/local/opt/openjdk@17/bin:$PATH"' >> ~/.zshrc
+echo 'export JAVA_HOME=$(/usr/libexec/java_home -v 17)' >> ~/.zshrc
+echo 'export PATH="/usr/local/opt/openjdk@17/bin:$PATH"' >> ~/.bashrc
+echo 'export JAVA_HOME=$(/usr/libexec/java_home -v 17)' >> ~/.bashrc
+
+source ~/.zshrc
+source ~/.bashrc
+```
+
+```
+java -version
+node -v
+npm -v
+mvn -v
+```
+
_Below is an example of how you can installing and setup up your service_
1. `git clone `
@@ -93,20 +100,44 @@ Make sure you have provided all the necessary dependencies in your vuetify proje
(back to top)
-## Contributing
+## Branch Naming Convention
+To keep our branch names organized and easily understandable, we follow a specific naming convention for all branches created in this repository. Please adhere to this convention when creating new branches:
-Contributions are what make the open source community such an amazing place to learn, inspire, and create. Any contributions you make are **greatly appreciated**.
+1. **type**: The type of work the branch represents. This should be one of the following:
+ - `feature`: For new features or enhancements.
+ - `bugfix`: For bug fixes.
+ - `hotfix`: For urgent fixes that need to be applied quickly.
+ - `cleanup`: For code refactoring, or documentation updates.
+ - `docs`: For updating documentation such as the README.md CODE_OF_CONDUCT.md LICENSE.md CHANGELOG.md CONTRIBUTING.md. Providing a ticket number or project for docs is optional.
+ - `chore`: For maintaining and updating dependencies, libraries, PHP/Node/Twig Versions, or other maintenance work.
-If you have a suggestion that would make this better, please fork the repo and create a pull request. You can also simply open an issue with the tag "enhancement".
-Don't forget to give the project a star! Thanks again!
+2. **project**: The project identifier. This should be:
+ - `zms` for the ZMS project.
+ - `mpdzbs` for the MPDZBS project.
-1. Fork the Project
-2. Create your Feature Branch (`git checkout -b feature/AmazingFeature`)
-3. Commit your Changes (`git commit -m 'Add some AmazingFeature'`)
-4. Push to the Branch (`git push origin feature/AmazingFeature`)
-5. Open a Pull Request
+3. **issue number**: The ticket or issue number related to this branch (use digits only). This helps track the branch to a specific issue in the project management system.
-(back to top)
+4. **description**: A brief, lowercase description of the branch's purpose, using only lowercase letters, numbers, and hyphens (`-`).
+
+- Always use lowercase letters and hyphens for the description.
+- The issue number should be a numeric ID corresponding to the relevant ticket or task.
+- Descriptions should be concise and informative, summarizing the branch's purpose.
+
+#### Examples
+
+- **Feature Branch**: `feature-zms-12345-this-is-a-feature-in-the-zms-project`
+- **Bugfix Branch**: `bugfix-mpdzbs-67890-fix-crash-on-startup`
+- **Hotfix Branch**: `hotfix-zms-98765-critical-fix-for-login`
+- **Cleanup Branch**: `cleanup-mpdzbs-11111-remove-unused-code`
+- **Chore Branch**: `chore-zms-2964-composer-update`
+- **Docs Branch**: `docs-zms-0000-update-readme` `docs-zms-release-40-update-changelog`
+
+#### Regular Expression
+
+The branch name must match the following regular expression:
+`^(feature|hotfix|bugfix|cleanup|maintenance|docs)-(zms|mpdzbs)-[0-9]+-[a-z0-9-]+$`
+
+**For further commit rules please refer to https://www.conventionalcommits.org/en/v1.0.0-beta.4/**
## License
@@ -122,6 +153,10 @@ it@m - opensource@muenchen.de
(back to top)
+## Screenshot
+
+(back to top)
+
[contributors-shield]: https://img.shields.io/github/contributors/it-at-m/eappointment-buergeransicht.svg?style=for-the-badge
diff --git a/frontend/package-lock.json b/frontend/package-lock.json
index 1e0d8e4..b691eee 100644
--- a/frontend/package-lock.json
+++ b/frontend/package-lock.json
@@ -14,7 +14,7 @@
"@vue/test-utils": "^1.3.5",
"@vue/vue2-jest": "^27.0.0-alpha.3",
"@vue/web-component-wrapper": "^1.3.0",
- "axios": "^0.26.0",
+ "axios": "^0.28.0",
"core-js": "^3.8.3",
"jest-environment-jsdom": "^27.0.0-alpha.3",
"moment": "^2.29.1",
@@ -3286,16 +3286,6 @@
"@types/json-schema": "*"
}
},
- "node_modules/@types/eslint-scope": {
- "version": "3.7.7",
- "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.7.tgz",
- "integrity": "sha512-MzMFlSLBqNF2gcHWO0G1vP/YQyfvrxZ0bF+u7mzUdZ1/xK4A4sru+nraZz5i3iEIk1l1uyicaDVTB4QbbEkAYg==",
- "dev": true,
- "dependencies": {
- "@types/eslint": "*",
- "@types/estree": "*"
- }
- },
"node_modules/@types/estree": {
"version": "0.0.39",
"resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.39.tgz",
@@ -5241,11 +5231,28 @@
}
},
"node_modules/axios": {
- "version": "0.26.1",
- "resolved": "https://registry.npmjs.org/axios/-/axios-0.26.1.tgz",
- "integrity": "sha512-fPwcX4EvnSHuInCMItEhAGnaSEXRBjtzh9fOtsE6E1G6p7vl7edEeZe11QHf18+6+9gR5PbKV/sGKNaD8YaMeA==",
+ "version": "0.28.1",
+ "resolved": "https://registry.npmjs.org/axios/-/axios-0.28.1.tgz",
+ "integrity": "sha512-iUcGA5a7p0mVb4Gm/sy+FSECNkPFT4y7wt6OM/CDpO/OnNCvSs3PoMG8ibrC9jRoGYU0gUK5pXVC4NPXq6lHRQ==",
+ "license": "MIT",
"dependencies": {
- "follow-redirects": "^1.14.8"
+ "follow-redirects": "^1.15.0",
+ "form-data": "^4.0.0",
+ "proxy-from-env": "^1.1.0"
+ }
+ },
+ "node_modules/axios/node_modules/form-data": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.1.tgz",
+ "integrity": "sha512-tzN8e4TX8+kkxGPK8D5u0FNmjPUjw3lwC9lSLxxoB/+GtsJG91CO8bSWy73APlgAZzZbXEYZJuxjkHH2w+Ezhw==",
+ "license": "MIT",
+ "dependencies": {
+ "asynckit": "^0.4.0",
+ "combined-stream": "^1.0.8",
+ "mime-types": "^2.1.12"
+ },
+ "engines": {
+ "node": ">= 6"
}
},
"node_modules/babel-jest": {
@@ -13048,9 +13055,10 @@
}
},
"node_modules/moment-timezone": {
- "version": "0.5.45",
- "resolved": "https://registry.npmjs.org/moment-timezone/-/moment-timezone-0.5.45.tgz",
- "integrity": "sha512-HIWmqA86KcmCAhnMAN0wuDOARV/525R2+lOLotuGFzn4HO+FH+/645z2wx0Dt3iDv6/p61SIvKnDstISainhLQ==",
+ "version": "0.5.46",
+ "resolved": "https://registry.npmjs.org/moment-timezone/-/moment-timezone-0.5.46.tgz",
+ "integrity": "sha512-ZXm9b36esbe7OmdABqIWJuBBiLLwAjrN7CE+7sYdCCx82Nabt1wHDj8TVseS59QIlfFPbOoiBPm6ca9BioG4hw==",
+ "license": "MIT",
"dependencies": {
"moment": "^2.29.4"
},
@@ -14969,6 +14977,12 @@
"node": ">= 0.10"
}
},
+ "node_modules/proxy-from-env": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz",
+ "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==",
+ "license": "MIT"
+ },
"node_modules/prr": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz",
@@ -15123,9 +15137,10 @@
"optional": true
},
"node_modules/pump": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz",
- "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==",
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.2.tgz",
+ "integrity": "sha512-tUPXtzlGM8FE3P0ZL6DVs/3P58k9nk8/jZeQCurTJylQA8qFYzHFfhBJkuqyE0FifOsQ0uKWekiZ5g8wtr28cw==",
+ "license": "MIT",
"dependencies": {
"end-of-stream": "^1.1.0",
"once": "^1.3.1"
@@ -15537,10 +15552,11 @@
}
},
"node_modules/rollup": {
- "version": "2.79.1",
- "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.79.1.tgz",
- "integrity": "sha512-uKxbd0IhMZOhjAiD5oAFp7BqvkA4Dv47qpOCtaNvng4HBwdbWtdOh8f5nZNuk2rp51PMGk3bzfWu5oayNEuYnw==",
+ "version": "2.79.2",
+ "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.79.2.tgz",
+ "integrity": "sha512-fS6iqSPZDs3dr/y7Od6y5nha8dW1YnbgtsyotCVvoFGKbERG++CVRFv1meyGDE1SNItQA8BrnCw7ScdAhRJ3XQ==",
"dev": true,
+ "license": "MIT",
"bin": {
"rollup": "dist/bin/rollup"
},
@@ -17998,12 +18014,12 @@
}
},
"node_modules/webpack": {
- "version": "5.93.0",
- "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.93.0.tgz",
- "integrity": "sha512-Y0m5oEY1LRuwly578VqluorkXbvXKh7U3rLoQCEO04M97ScRr44afGVkI0FQFsXzysk5OgFAxjZAb9rsGQVihA==",
+ "version": "5.94.0",
+ "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.94.0.tgz",
+ "integrity": "sha512-KcsGn50VT+06JH/iunZJedYGUJS5FGjow8wb9c0v5n1Om8O1g4L6LjtfxwlXIATopoQu+vOXXa7gYisWxCoPyg==",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "@types/eslint-scope": "^3.7.3",
"@types/estree": "^1.0.5",
"@webassemblyjs/ast": "^1.12.1",
"@webassemblyjs/wasm-edit": "^1.12.1",
@@ -18012,7 +18028,7 @@
"acorn-import-attributes": "^1.9.5",
"browserslist": "^4.21.10",
"chrome-trace-event": "^1.0.2",
- "enhanced-resolve": "^5.17.0",
+ "enhanced-resolve": "^5.17.1",
"es-module-lexer": "^1.2.1",
"eslint-scope": "5.1.1",
"events": "^3.2.0",
@@ -18462,16 +18478,18 @@
"dev": true
},
"node_modules/webpack/node_modules/@types/estree": {
- "version": "1.0.5",
- "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.5.tgz",
- "integrity": "sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==",
- "dev": true
+ "version": "1.0.6",
+ "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.6.tgz",
+ "integrity": "sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==",
+ "dev": true,
+ "license": "MIT"
},
"node_modules/webpack/node_modules/schema-utils": {
"version": "3.3.0",
"resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz",
"integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@types/json-schema": "^7.0.8",
"ajv": "^6.12.5",
diff --git a/frontend/package.json b/frontend/package.json
index ee73bb7..2b69bb5 100644
--- a/frontend/package.json
+++ b/frontend/package.json
@@ -20,7 +20,7 @@
"@vue/test-utils": "^1.3.5",
"@vue/vue2-jest": "^27.0.0-alpha.3",
"@vue/web-component-wrapper": "^1.3.0",
- "axios": "^0.26.0",
+ "axios": "^0.28.0",
"core-js": "^3.8.3",
"jest-environment-jsdom": "^27.0.0-alpha.3",
"moment": "^2.29.1",
diff --git a/frontend/public/css/style.css b/frontend/public/css/style.css
index 30f32a6..7d2af2a 100644
--- a/frontend/public/css/style.css
+++ b/frontend/public/css/style.css
@@ -195,6 +195,10 @@ p, span, div, button, td, th, .v-label, .v-list-item__title {
}
.appointment-count {
+ font-family: Roboto Condensed, Arial, sans-serif;
+ font-weight: 600;
+ font-size: 1.17em;
+ color: #3a5368 !important;
margin: 0 0.5rem;
}
diff --git a/frontend/src/components/AppointmentForm.vue b/frontend/src/components/AppointmentForm.vue
index 5f22245..629964d 100644
--- a/frontend/src/components/AppointmentForm.vue
+++ b/frontend/src/components/AppointmentForm.vue
@@ -87,7 +87,7 @@
{{ $t('appointment') }}
-
+
diff --git a/frontend/src/components/ServiceFinder.vue b/frontend/src/components/ServiceFinder.vue
index ca982f5..e54031e 100644
--- a/frontend/src/components/ServiceFinder.vue
+++ b/frontend/src/components/ServiceFinder.vue
@@ -63,13 +63,13 @@
@click="decreaseAppointments($store.state.data.service)">
{{ minusSvg }}
-
{{ appointmentCounts[$store.state.data.service.id] }}
-
+
@@ -96,11 +96,11 @@
:disabled="!canDecreaseAppointments(subService)" fab @click="decreaseAppointments(subService)">
{{ minusSvg }}
-
{{ appointmentCounts[subService.id] }}
-
+
{
store.dispatch('API/fetchServicesAndProviders', { serviceId: preselectedService, locationId: preselectedProvider })
.then(data => {
- store.commit('setProviders', data.offices)
+ let providers = data.offices
+ const exclusiveProviders = data.offices.filter(office => {
+ return office.id === preselectedProvider && ! office.showAlternativeLocations
+ })
+
+ if (exclusiveProviders.length) {
+ providers = exclusiveProviders
+ }
+ store.commit('setProviders', providers)
let requests = data.services.map(service => {
service.providers = []
@@ -47,9 +55,15 @@ export default {
data.relations.forEach(relation => {
if (relation.serviceId === service.id) {
service.minSlots[relation.officeId] = relation.slots
- const foundProvider = data.offices.filter(office => {
+ const foundProviders = providers.filter(office => {
return office.id === relation.officeId
- })[0]
+ })
+
+ if (foundProviders.length == 0) {
+ return
+ }
+
+ const foundProvider = foundProviders[0]
foundProvider.index = index
index++
@@ -133,12 +147,12 @@ export default {
})
},
setAppointmentFromResponse (store, appointmentData) {
+ store.commit('selectProviderWithId', appointmentData.officeId)
store.commit('selectServiceWithId', {
id: appointmentData.serviceId,
count: appointmentData.serviceCount,
subServiceCounts: appointmentData.subRequestCounts
})
- store.commit('selectProviderWithId', appointmentData.officeId)
const customer = {
name: appointmentData.familyName,
@@ -167,7 +181,6 @@ export default {
},
startRebooking (store) {
store.state.isRebooking = true
- store.state.preselectedProvider = null
store.state.step = 2
store.state.openedPanel = 1
store.state.confirmedAppointment = null
diff --git a/frontend/src/store/mutations.js b/frontend/src/store/mutations.js
index c846d9a..695b873 100644
--- a/frontend/src/store/mutations.js
+++ b/frontend/src/store/mutations.js
@@ -39,6 +39,10 @@ export default {
service.subServiceCounts = subServiceCountsById
}
+ if (state.preselectedProvider && ! state.preselectedProvider.showAlternativeLocations) {
+ service.providers = [state.preselectedProvider]
+ }
+
this.commit('data/setService', { service: service, provider: state.preselectedProvider })
}
})
diff --git a/renovate.json b/renovate.json
new file mode 100644
index 0000000..894c19f
--- /dev/null
+++ b/renovate.json
@@ -0,0 +1,5 @@
+{
+ "$schema": "https://docs.renovatebot.com/renovate-schema.json",
+ "extends": ["config:recommended"],
+ "baseBranches": ["dev", "/^release\\/.*/"]
+}