diff --git a/README.md b/README.md index 12e4ba7..1f467c1 100644 --- a/README.md +++ b/README.md @@ -12,31 +12,12 @@
- Logo + Logo

E-appointment Frontend

- -
- Table of Contents -
    -
  1. - About The Project - -
  2. -
  3. - Getting Started -
  4. -
  5. Contributing
  6. -
  7. License
  8. -
  9. Contact
  10. -
-
- ## 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 +![screenshot](https://github.com/user-attachments/assets/a378bbc9-ba4b-4a36-a968-8e9017f4e96c) +

(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\\/.*/"] +}