From 8f336a0d13315d2761714a19fd88e232700b1e63 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Wolfgang=20Hu=C3=9F?= Date: Tue, 2 Aug 2022 08:30:14 +0200 Subject: [PATCH 001/113] Add todo comment to Cypress test --- .../UserProfile.SocialMedia/I_delete_a_social_media_link.js | 1 + 1 file changed, 1 insertion(+) diff --git a/cypress/integration/UserProfile.SocialMedia/I_delete_a_social_media_link.js b/cypress/integration/UserProfile.SocialMedia/I_delete_a_social_media_link.js index 10daffca1..73fd0a16e 100644 --- a/cypress/integration/UserProfile.SocialMedia/I_delete_a_social_media_link.js +++ b/cypress/integration/UserProfile.SocialMedia/I_delete_a_social_media_link.js @@ -3,4 +3,5 @@ import { When } from "cypress-cucumber-preprocessor/steps"; When('I delete a social media link', () => { cy.get(".base-button[title='Delete']") .click() + // TODO: add delition confirmation modal click, see issue }) \ No newline at end of file From 33026ba3e0201703bf0eedc9d3f0297828acc985 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Wolfgang=20Hu=C3=9F?= Date: Tue, 2 Aug 2022 08:30:54 +0200 Subject: [PATCH 002/113] Add explaining comments to confirmation modal --- webapp/components/Modal.vue | 2 ++ webapp/components/Modal/ConfirmModal.vue | 6 +++--- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/webapp/components/Modal.vue b/webapp/components/Modal.vue index a76adac3f..9195ad179 100644 --- a/webapp/components/Modal.vue +++ b/webapp/components/Modal.vue @@ -22,6 +22,7 @@ :name="name" @close="close" /> + Date: Tue, 2 Aug 2022 08:52:13 +0200 Subject: [PATCH 003/113] Refactor MySomethingList and social media list and adding deletion modal dialog --- .../MySomethingList/MySomethingList.spec.js | 58 ++++++++- .../MySomethingList/MySomethingList.vue | 122 +++++++++--------- webapp/locales/de.json | 11 +- webapp/locales/en.json | 9 +- webapp/pages/settings/my-social-media.spec.js | 10 +- webapp/pages/settings/my-social-media.vue | 94 +++++++------- 6 files changed, 189 insertions(+), 115 deletions(-) diff --git a/webapp/components/_new/features/MySomethingList/MySomethingList.spec.js b/webapp/components/_new/features/MySomethingList/MySomethingList.spec.js index 513207110..7a588f255 100644 --- a/webapp/components/_new/features/MySomethingList/MySomethingList.spec.js +++ b/webapp/components/_new/features/MySomethingList/MySomethingList.spec.js @@ -1,6 +1,7 @@ +import Vue from 'vue' +import Vuex from 'vuex' import { mount } from '@vue/test-utils' import MySomethingList from './MySomethingList.vue' -import Vue from 'vue' const localVue = global.localVue @@ -9,12 +10,23 @@ describe('MySomethingList.vue', () => { let propsData let data let mocks + let mutations beforeEach(() => { propsData = { useFormData: { dummy: '' }, useItems: [{ id: 'id', dummy: 'dummy' }], namePropertyKey: 'dummy', + texts: { + addButton: 'add-button', + addNew: 'add-new-something', + deleteModal: { + titleIdent: 'delete-modal.title', + messageIdent: 'delete-modal.message', + confirm: { icon: 'trash', buttonTextIdent: 'delete-modal.confirm-button' }, + }, + edit: 'edit-something', + }, callbacks: { edit: jest.fn(), submit: jest.fn(), delete: jest.fn() }, } data = () => { @@ -30,6 +42,9 @@ describe('MySomethingList.vue', () => { success: jest.fn(), }, } + mutations = { + 'modal/SET_OPEN': jest.fn().mockResolvedValueOnce(), + } }) describe('mount', () => { @@ -39,12 +54,16 @@ describe('MySomethingList.vue', () => { 'list-item': '
', 'edit-item': '
', } + const store = new Vuex.Store({ + mutations, + }) return mount(MySomethingList, { propsData, data, mocks, localVue, slots, + store, }) } @@ -114,13 +133,42 @@ describe('MySomethingList.vue', () => { ) }) - it('calls delete', async () => { + it('calls delete by committing "modal/SET_OPEN"', async () => { const deleteButton = wrapper.find('.base-button[data-test="delete-button"]') deleteButton.trigger('click') await Vue.nextTick() - const expectedItem = expect.objectContaining({ id: 'id', dummy: 'dummy' }) - expect(propsData.callbacks.delete).toHaveBeenCalledTimes(1) - expect(propsData.callbacks.delete).toHaveBeenCalledWith(expect.any(Object), expectedItem) + const expectedModalData = expect.objectContaining({ + name: 'confirm', + data: { + type: '', + resource: { id: '' }, + modalData: { + titleIdent: 'delete-modal.title', + messageIdent: 'delete-modal.message', + messageParams: { + name: 'dummy', + }, + buttons: { + confirm: { + danger: true, + icon: 'trash', + textIdent: 'delete-modal.confirm-button', + callback: expect.any(Function), + }, + cancel: { + icon: 'close', + textIdent: 'actions.cancel', + callback: expect.any(Function), + }, + }, + }, + }, + }) + expect(mutations['modal/SET_OPEN']).toHaveBeenCalledTimes(1) + expect(mutations['modal/SET_OPEN']).toHaveBeenCalledWith( + expect.any(Object), + expectedModalData, + ) }) }) }) diff --git a/webapp/components/_new/features/MySomethingList/MySomethingList.vue b/webapp/components/_new/features/MySomethingList/MySomethingList.vue index fbfcca932..3ae41d934 100644 --- a/webapp/components/_new/features/MySomethingList/MySomethingList.vue +++ b/webapp/components/_new/features/MySomethingList/MySomethingList.vue @@ -1,19 +1,10 @@ + + \ No newline at end of file diff --git a/webapp/plugins/v-mapbox.js b/webapp/plugins/v-mapbox.js new file mode 100644 index 000000000..e29d8d1d1 --- /dev/null +++ b/webapp/plugins/v-mapbox.js @@ -0,0 +1,25 @@ +// Vue2 + Mapbox Reference: https://github.com/geospoc/v-mapbox/issues/702 +import Vue from "vue"; +import { + MglGeojsonLayer, + MglVectorLayer, + MglMap, + MglMarker, + MglPopup, + MglScaleControl, + } from "v-mapbox"; + + // Map + Vue.component("MglMap", MglMap); + + // Controls + Vue.component("MglScaleControl", MglScaleControl); + + // Layers + Vue.component("MglGeojsonLayer", MglGeojsonLayer); + Vue.component("MglVectorLayer", MglVectorLayer); + + // Marker & Popup + Vue.component("MglMarker", MglMarker); + Vue.component("MglPopup", MglPopup); + \ No newline at end of file diff --git a/webapp/yarn.lock b/webapp/yarn.lock index 67d0154a4..e31e3e3ea 100644 --- a/webapp/yarn.lock +++ b/webapp/yarn.lock @@ -2635,6 +2635,56 @@ "@types/yargs" "^15.0.0" chalk "^4.0.0" +"@mapbox/geojson-rewind@^0.5.0": + version "0.5.2" + resolved "https://registry.yarnpkg.com/@mapbox/geojson-rewind/-/geojson-rewind-0.5.2.tgz#591a5d71a9cd1da1a0bf3420b3bea31b0fc7946a" + integrity sha512-tJaT+RbYGJYStt7wI3cq4Nl4SXxG8W7JDG5DMJu97V25RnbNg3QtQtf+KD+VLjNpWKYsRvXDNmNrBgEETr1ifA== + dependencies: + get-stream "^6.0.1" + minimist "^1.2.6" + +"@mapbox/geojson-types@^1.0.2": + version "1.0.2" + resolved "https://registry.yarnpkg.com/@mapbox/geojson-types/-/geojson-types-1.0.2.tgz#9aecf642cb00eab1080a57c4f949a65b4a5846d6" + integrity sha512-e9EBqHHv3EORHrSfbR9DqecPNn+AmuAoQxV6aL8Xu30bJMJR1o8PZLZzpk1Wq7/NfCbuhmakHTPYRhoqLsXRnw== + +"@mapbox/jsonlint-lines-primitives@^2.0.2": + version "2.0.2" + resolved "https://registry.yarnpkg.com/@mapbox/jsonlint-lines-primitives/-/jsonlint-lines-primitives-2.0.2.tgz#ce56e539f83552b58d10d672ea4d6fc9adc7b234" + integrity sha512-rY0o9A5ECsTQRVhv7tL/OyDpGAoUB4tTvLiW1DSzQGq4bvTPhNw1VpSNjDJc5GFZ2XuyOtSWSVN05qOtcD71qQ== + +"@mapbox/mapbox-gl-supported@^1.5.0": + version "1.5.0" + resolved "https://registry.yarnpkg.com/@mapbox/mapbox-gl-supported/-/mapbox-gl-supported-1.5.0.tgz#f60b6a55a5d8e5ee908347d2ce4250b15103dc8e" + integrity sha512-/PT1P6DNf7vjEEiPkVIRJkvibbqWtqnyGaBz3nfRdcxclNSnSdaLU5tfAgcD7I8Yt5i+L19s406YLl1koLnLbg== + +"@mapbox/point-geometry@0.1.0", "@mapbox/point-geometry@^0.1.0", "@mapbox/point-geometry@~0.1.0": + version "0.1.0" + resolved "https://registry.yarnpkg.com/@mapbox/point-geometry/-/point-geometry-0.1.0.tgz#8a83f9335c7860effa2eeeca254332aa0aeed8f2" + integrity sha512-6j56HdLTwWGO0fJPlrZtdU/B13q8Uwmo18Ck2GnGgN9PCFyKTZ3UbXeEdRFh18i9XQ92eH2VdtpJHpBD3aripQ== + +"@mapbox/tiny-sdf@^1.1.1": + version "1.2.5" + resolved "https://registry.yarnpkg.com/@mapbox/tiny-sdf/-/tiny-sdf-1.2.5.tgz#424c620a96442b20402552be70a7f62a8407cc59" + integrity sha512-cD8A/zJlm6fdJOk6DqPUV8mcpyJkRz2x2R+/fYcWDYG3oWbG7/L7Yl/WqQ1VZCjnL9OTIMAn6c+BC5Eru4sQEw== + +"@mapbox/unitbezier@^0.0.0": + version "0.0.0" + resolved "https://registry.yarnpkg.com/@mapbox/unitbezier/-/unitbezier-0.0.0.tgz#15651bd553a67b8581fb398810c98ad86a34524e" + integrity sha512-HPnRdYO0WjFjRTSwO3frz1wKaU649OBFPX3Zo/2WZvuRi6zMiRGui8SnPQiQABgqCf8YikDe5t3HViTVw1WUzA== + +"@mapbox/vector-tile@^1.3.1": + version "1.3.1" + resolved "https://registry.yarnpkg.com/@mapbox/vector-tile/-/vector-tile-1.3.1.tgz#d3a74c90402d06e89ec66de49ec817ff53409666" + integrity sha512-MCEddb8u44/xfQ3oD+Srl/tNcQoqTw3goGk2oLsrFxOTc3dUp+kAnby3PvAeeBYSMSjSPD1nd1AJA6W49WnoUw== + dependencies: + "@mapbox/point-geometry" "~0.1.0" + +"@mapbox/whoots-js@^3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@mapbox/whoots-js/-/whoots-js-3.1.0.tgz#497c67a1cef50d1a2459ba60f315e448d2ad87fe" + integrity sha512-Es6WcD0nO5l+2BOQS4uLfNPYQaNDfbot3X1XUoloz+x0mPDS3eeORZJl06HXjwBG1fOGwCRnzK88LMdxKRrd6Q== + "@mdx-js/mdx@^1.6.22": version "1.6.22" resolved "https://registry.yarnpkg.com/@mdx-js/mdx/-/mdx-1.6.22.tgz#8a723157bf90e78f17dc0f27995398e6c731f1ba" @@ -2976,6 +3026,18 @@ consola "^2.11.3" defu "^1.0.0" +"@nuxtjs/composition-api@0.33.1": + version "0.33.1" + resolved "https://registry.yarnpkg.com/@nuxtjs/composition-api/-/composition-api-0.33.1.tgz#509ace1ac1e5d3e73ab3a949efacf14f35a46da3" + integrity sha512-dI0c5atKDsEIVycrsKw9T+aaos2VggscSJBPZpC1BXKzHR7+9Ilor+SHvnAEb5j2E2v+8x407Uo339oJzhlD1A== + dependencies: + defu "^6.0.0" + estree-walker "^2.0.2" + fs-extra "^9.1.0" + magic-string "^0.26.2" + pathe "^0.3.3" + ufo "^0.8.5" + "@nuxtjs/dotenv@~1.4.1": version "1.4.1" resolved "https://registry.yarnpkg.com/@nuxtjs/dotenv/-/dotenv-1.4.1.tgz#dd5abb98e22cc7ae27139d3aa606151034293128" @@ -8722,6 +8784,11 @@ css@^2.1.0: source-map-resolve "^0.5.2" urix "^0.1.0" +csscolorparser@~1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/csscolorparser/-/csscolorparser-1.0.3.tgz#b34f391eea4da8f3e98231e2ccd8df9c041f171b" + integrity sha512-umPSgYwZkdFoUrH5hIq5kf0wPSXiro51nPw0j2K/c83KflkPSTBGMz6NJvMB+07VlL0y7VPo6QJcDjcgKTTm3w== + cssdb@^4.4.0: version "4.4.0" resolved "https://registry.yarnpkg.com/cssdb/-/cssdb-4.4.0.tgz#3bf2f2a68c10f5c6a08abd92378331ee803cddb0" @@ -9017,6 +9084,11 @@ defu@^1.0.0: resolved "https://registry.yarnpkg.com/defu/-/defu-1.0.0.tgz#43acb09dfcf81866fa3b0fc047ece18e5c30df71" integrity sha512-1Y1KRFxiiq+LYsZ3iP7xYSR8bHfmHFOUpDunZCN1ld1fGfDJWJIvkUBtjl3apnBwPuJtL/H7cwwlLYX8xPkraQ== +defu@^6.0.0: + version "6.1.1" + resolved "https://registry.yarnpkg.com/defu/-/defu-6.1.1.tgz#a12c712349197c545dc61d3cd3b607b4cc7ef0c1" + integrity sha512-aA964RUCsBt0FGoNIlA3uFgo2hO+WWC0fiC6DBps/0SFzkKcYoM/3CzVLIa5xSsrFjdioMdYgAIbwo80qp2MoA== + delayed-stream@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" @@ -9333,6 +9405,11 @@ duplexify@^3.4.2, duplexify@^3.6.0: readable-stream "^2.0.0" stream-shift "^1.0.0" +earcut@^2.2.2: + version "2.2.4" + resolved "https://registry.yarnpkg.com/earcut/-/earcut-2.2.4.tgz#6d02fd4d68160c114825d06890a92ecaae60343a" + integrity sha512-/pjZsA1b4RPHbeWZQn66SWS8nZZWLQQ23oE3Eam7aroEFGEvwKAsJfZ9ytiEMycfzXWpca4FA9QIOehf7PocBQ== + easy-stack@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/easy-stack/-/easy-stack-1.0.0.tgz#12c91b3085a37f0baa336e9486eac4bf94e3e788" @@ -9919,7 +9996,7 @@ estraverse@^4.0.0, estraverse@^4.1.0, estraverse@^4.1.1, estraverse@^4.2.0: resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.2.0.tgz#0dee3fed31fcd469618ce7342099fc1afa0bdb13" integrity sha1-De4/7TH81GlhjOc0IJn8GvoL2xM= -estree-walker@^2.0.1: +estree-walker@^2.0.1, estree-walker@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-2.0.2.tgz#52f010178c2a4c117a7757cfe942adb7d2da4cac" integrity sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w== @@ -10684,7 +10761,7 @@ fs-extra@^9.0.0: jsonfile "^6.0.1" universalify "^1.0.0" -fs-extra@^9.0.1: +fs-extra@^9.0.1, fs-extra@^9.1.0: version "9.1.0" resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-9.1.0.tgz#5954460c764a8da2094ba3554bf839e6b9a7c86d" integrity sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ== @@ -10814,6 +10891,11 @@ gensync@^1.0.0-beta.2: resolved "https://registry.yarnpkg.com/gensync/-/gensync-1.0.0-beta.2.tgz#32a6ee76c3d7f52d46b2b1ae5d93fea8580a25e0" integrity sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg== +geojson-vt@^3.2.1: + version "3.2.1" + resolved "https://registry.yarnpkg.com/geojson-vt/-/geojson-vt-3.2.1.tgz#f8adb614d2c1d3f6ee7c4265cad4bbf3ad60c8b7" + integrity sha512-EvGQQi/zPrDA6zr6BnJD/YhwAkBP8nnJ9emh3EnHQKVMfg/MRVtPbMYdgVy/IaEmn4UfagD2a6fafPDL5hbtwg== + get-caller-file@^1.0.1: version "1.0.3" resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-1.0.3.tgz#f978fa4c90d1dfe7ff2d6beda2a515e713bdcf4a" @@ -10866,6 +10948,11 @@ get-stream@^5.0.0: dependencies: pump "^3.0.0" +get-stream@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-6.0.1.tgz#a262d8eef67aced57c2852ad6167526a43cbf7b7" + integrity sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg== + get-value@^2.0.3, get-value@^2.0.6: version "2.0.6" resolved "https://registry.yarnpkg.com/get-value/-/get-value-2.0.6.tgz#dc15ca1c672387ca76bd37ac0a395ba2042a2c28" @@ -10896,6 +10983,11 @@ git-rev-sync@1.12.0: graceful-fs "4.1.11" shelljs "0.7.7" +gl-matrix@^3.2.1: + version "3.4.3" + resolved "https://registry.yarnpkg.com/gl-matrix/-/gl-matrix-3.4.3.tgz#fc1191e8320009fd4d20e9339595c6041ddc22c9" + integrity sha512-wcCp8vu8FT22BnvKVPjXa/ICBWRq/zjFfdofZy1WSpQZpphblv12/bOQLBC1rMM7SGOFS9ltVmKOHil5+Ml7gA== + glob-all@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/glob-all/-/glob-all-3.1.0.tgz#8913ddfb5ee1ac7812656241b03d5217c64b02ab" @@ -11216,6 +11308,11 @@ graphql@^15.3.0: resolved "https://registry.yarnpkg.com/graphql/-/graphql-15.4.0.tgz#e459dea1150da5a106486ba7276518b5295a4347" integrity sha512-EB3zgGchcabbsU9cFe1j+yxdzKQKAbGUWRb13DsrsMN1yyfmmIq+2+L5MqVWcDCE4V89R5AyUOi7sMOGxdsYtA== +grid-index@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/grid-index/-/grid-index-1.1.0.tgz#97f8221edec1026c8377b86446a7c71e79522ea7" + integrity sha512-HZRwumpOGUrHyxO5bqKZL0B0GlUpwtCAzZ42sgxUPniu33R1LSFH5yrIcBCHjkctCAh3mtWKcKd9J4vDDdeVHA== + growly@^1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/growly/-/growly-1.3.0.tgz#f10748cbe76af964b7c96c93c6bcc28af120c081" @@ -11820,6 +11917,11 @@ identity-obj-proxy@^3.0.0: dependencies: harmony-reflect "^1.4.6" +ieee754@^1.1.12: + version "1.2.1" + resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352" + integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA== + ieee754@^1.1.4: version "1.1.13" resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.1.13.tgz#ec168558e95aa181fd87d37f55c32bbcb6708b84" @@ -13422,6 +13524,11 @@ jws@^3.2.2: jwa "^1.4.1" safe-buffer "^5.0.1" +kdbush@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/kdbush/-/kdbush-3.0.0.tgz#f8484794d47004cc2d85ed3a79353dbe0abc2bf0" + integrity sha512-hRkd6/XW4HTsA9vjVpY9tuXJYLSlelnkTmVFu4M9/7MIYQtFcHpbugAU7UbOfjOiVSVYl2fqgBuJ32JUmRo5Ew== + kind-of@^3.0.2, kind-of@^3.0.3, kind-of@^3.2.0: version "3.2.2" resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.2.2.tgz#31ea21a734bab9bbb0f32466d893aea51e4a3c64" @@ -13950,6 +14057,13 @@ magic-string@^0.25.7: dependencies: sourcemap-codec "^1.4.4" +magic-string@^0.26.2: + version "0.26.7" + resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.26.7.tgz#caf7daf61b34e9982f8228c4527474dac8981d6f" + integrity sha512-hX9XH3ziStPoPhJxLq1syWuZMxbDvGNbVchfrdCtanC7D13888bMFow61x8axrx+GfHLtVeAx2kxL7tTGRl+Ow== + dependencies: + sourcemap-codec "^1.4.8" + make-dir@^1.0.0: version "1.3.0" resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-1.3.0.tgz#79c1033b80515bd6d24ec9933e860ca75ee27f0c" @@ -14001,6 +14115,11 @@ map-or-similar@^1.5.0: resolved "https://registry.yarnpkg.com/map-or-similar/-/map-or-similar-1.5.0.tgz#6de2653174adfb5d9edc33c69d3e92a1b76faf08" integrity sha1-beJlMXSt+12e3DPGnT6Sobdvrwg= +map-promisified@^0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/map-promisified/-/map-promisified-0.4.0.tgz#c33cc8b93d2d28b0df0b0937ffabcd145b9b9a82" + integrity sha512-VYBQ3rTMykg2CSVgSrZBvhAwxuIuYbAHCtjjq/ATnD5kMq7I/ROmMBckwlmfwtEIx9yXufF+3QY5WxUH5EeM/Q== + map-visit@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/map-visit/-/map-visit-1.0.0.tgz#ecdca8f13144e660f1b5bd41f12f3479d98dfb8f" @@ -14008,6 +14127,35 @@ map-visit@^1.0.0: dependencies: object-visit "^1.0.0" +mapbox-gl@1.13.2: + version "1.13.2" + resolved "https://registry.yarnpkg.com/mapbox-gl/-/mapbox-gl-1.13.2.tgz#76639c44f141f8dff71b7d8f1504f2aed11f7517" + integrity sha512-CPjtWygL+f7naL+sGHoC2JQR0DG7u+9ik6WdkjjVmz2uy0kBC2l+aKfdi3ZzUR7VKSQJ6Mc/CeCN+6iVNah+ww== + dependencies: + "@mapbox/geojson-rewind" "^0.5.0" + "@mapbox/geojson-types" "^1.0.2" + "@mapbox/jsonlint-lines-primitives" "^2.0.2" + "@mapbox/mapbox-gl-supported" "^1.5.0" + "@mapbox/point-geometry" "^0.1.0" + "@mapbox/tiny-sdf" "^1.1.1" + "@mapbox/unitbezier" "^0.0.0" + "@mapbox/vector-tile" "^1.3.1" + "@mapbox/whoots-js" "^3.1.0" + csscolorparser "~1.0.3" + earcut "^2.2.2" + geojson-vt "^3.2.1" + gl-matrix "^3.2.1" + grid-index "^1.1.0" + minimist "^1.2.5" + murmurhash-js "^1.0.0" + pbf "^3.2.1" + potpack "^1.0.1" + quickselect "^2.0.0" + rw "^1.3.3" + supercluster "^7.1.0" + tinyqueue "^2.0.3" + vt-pbf "^3.1.1" + markdown-escapes@^1.0.0: version "1.0.4" resolved "https://registry.yarnpkg.com/markdown-escapes/-/markdown-escapes-1.0.4.tgz#c95415ef451499d7602b91095f3c8e8975f78535" @@ -14303,6 +14451,11 @@ minimist@^1.2.5: resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.5.tgz#67d66014b66a6a8aaa0c083c5fd58df4e4e97602" integrity sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw== +minimist@^1.2.6: + version "1.2.7" + resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.7.tgz#daa1c4d91f507390437c6a8bc01078e7000c4d18" + integrity sha512-bzfL1YUZsP41gmu/qjrEk0Q6i2ix/cVeAhbCbqH9u3zYutS1cLg00qhrD0M2MVdCcx4Sc0UpP2eBWo9rotpq6g== + minipass-collect@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/minipass-collect/-/minipass-collect-1.0.2.tgz#22b813bf745dc6edba2576b940022ad6edc8c617" @@ -14424,6 +14577,11 @@ ms@2.1.1, ms@^2.1.1: resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.1.tgz#30a5864eb3ebb0a66f2ebe6d727af06a09d86e0a" integrity sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg== +murmurhash-js@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/murmurhash-js/-/murmurhash-js-1.0.0.tgz#b06278e21fc6c37fa5313732b0412bcb6ae15f51" + integrity sha512-TvmkNhkv8yct0SVBSy+o8wYzXjE4Zz3PCesbfs8HiCXXdcTuocApFv11UWlNFWKYsP2okqrhb7JNlSm9InBhIw== + mustache@^2.3.0: version "2.3.2" resolved "https://registry.yarnpkg.com/mustache/-/mustache-2.3.2.tgz#a6d4d9c3f91d13359ab889a812954f9230a3d0c5" @@ -15494,6 +15652,19 @@ path-type@^4.0.0: resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b" integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw== +pathe@^0.3.3: + version "0.3.9" + resolved "https://registry.yarnpkg.com/pathe/-/pathe-0.3.9.tgz#4baff768f37f03e3d9341502865fb93116f65191" + integrity sha512-6Y6s0vT112P3jD8dGfuS6r+lpa0qqNrLyHPOwvXMnyNTQaYiwgau2DP3aNDsR13xqtGj7rrPo+jFUATpU6/s+g== + +pbf@^3.2.1: + version "3.2.1" + resolved "https://registry.yarnpkg.com/pbf/-/pbf-3.2.1.tgz#b4c1b9e72af966cd82c6531691115cc0409ffe2a" + integrity sha512-ClrV7pNOn7rtmoQVF4TS1vyU0WhYRnP92fzbfF75jAIwpnzdJXf8iTd4CMEqO4yUenH6NDqLiwjqlh6QgZzgLQ== + dependencies: + ieee754 "^1.1.12" + resolve-protobuf-schema "^2.1.0" + pbkdf2@^3.0.3: version "3.0.17" resolved "https://registry.yarnpkg.com/pbkdf2/-/pbkdf2-3.0.17.tgz#976c206530617b14ebb32114239f7b09336e93a6" @@ -16395,6 +16566,11 @@ postcss@^8.1.10: nanoid "^3.1.23" source-map-js "^0.6.2" +potpack@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/potpack/-/potpack-1.0.2.tgz#23b99e64eb74f5741ffe7656b5b5c4ddce8dfc14" + integrity sha512-choctRBIV9EMT9WGAZHn3V7t0Z2pMQyl0EZE6pFc/6ml3ssw7Dlf/oAOvFwjm1HVsqfQN8GfeFyJ+d8tRzqueQ== + prelude-ls@~1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54" @@ -16720,6 +16896,11 @@ proto-list@~1.2.1: resolved "https://registry.yarnpkg.com/proto-list/-/proto-list-1.2.4.tgz#212d5bfe1318306a420f6402b8e26ff39647a849" integrity sha1-IS1b/hMYMGpCD2QCuOJv85ZHqEk= +protocol-buffers-schema@^3.3.1: + version "3.6.0" + resolved "https://registry.yarnpkg.com/protocol-buffers-schema/-/protocol-buffers-schema-3.6.0.tgz#77bc75a48b2ff142c1ad5b5b90c94cd0fa2efd03" + integrity sha512-TdDRD+/QNdrCGCE7v8340QyuXd4kIWIgapsE2+n/SaGiSSbomYl4TjHlvIoCWRpE7wFt02EpB35VVA2ImcBVqw== + proxy-addr@~2.0.5: version "2.0.6" resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-2.0.6.tgz#fdc2336505447d3f2f2c638ed272caf614bbb2bf" @@ -16963,6 +17144,11 @@ quick-format-unescaped@^1.1.1: dependencies: fast-safe-stringify "^1.0.8" +quickselect@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/quickselect/-/quickselect-2.0.0.tgz#f19680a486a5eefb581303e023e98faaf25dd018" + integrity sha512-RKJ22hX8mHe3Y6wH/N3wCM6BWtjaxIyyUIkpHOvfFnxdI4yD4tBXEBKSbriGujF6jnSVkJrffuo6vxACiSSxIw== + ramda@^0.21.0: version "0.21.0" resolved "https://registry.yarnpkg.com/ramda/-/ramda-0.21.0.tgz#a001abedb3ff61077d4ff1d577d44de77e8d0a35" @@ -17803,6 +17989,13 @@ resolve-from@^5.0.0: resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-5.0.0.tgz#c35225843df8f776df21c57557bc087e9dfdfc69" integrity sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw== +resolve-protobuf-schema@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/resolve-protobuf-schema/-/resolve-protobuf-schema-2.1.0.tgz#9ca9a9e69cf192bbdaf1006ec1973948aa4a3758" + integrity sha512-kI5ffTiZWmJaS/huM8wZfEMer1eRd7oJQhDuxeCLe3t7N7mX3z94CN0xPxBQxFYQTSNz9T0i+v6inKqSdK8xrQ== + dependencies: + protocol-buffers-schema "^3.3.1" + resolve-url@^0.2.1: version "0.2.1" resolved "https://registry.yarnpkg.com/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a" @@ -17942,6 +18135,11 @@ run-queue@^1.0.0, run-queue@^1.0.3: dependencies: aproba "^1.1.1" +rw@^1.3.3: + version "1.3.3" + resolved "https://registry.yarnpkg.com/rw/-/rw-1.3.3.tgz#3f862dfa91ab766b14885ef4d01124bfda074fb4" + integrity sha512-PdhdWy89SiZogBLaw42zdeqtRJ//zFd2PgQavcICDUgJT5oW10QCRKbJ6bg4r0/UY2M6BWd5tkxuGFRvCkgfHQ== + rxjs@^6.3.3: version "6.5.2" resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.5.2.tgz#2e35ce815cd46d84d02a209fb4e5921e051dbec7" @@ -18535,7 +18733,7 @@ source-map@^0.7.3, source-map@~0.7.2: resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.7.3.tgz#5302f8169031735226544092e64981f751750383" integrity sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ== -sourcemap-codec@^1.4.4: +sourcemap-codec@^1.4.4, sourcemap-codec@^1.4.8: version "1.4.8" resolved "https://registry.yarnpkg.com/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz#ea804bd94857402e6992d05a38ef1ae35a9ab4c4" integrity sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA== @@ -19042,6 +19240,13 @@ subscriptions-transport-ws@^0.9.11, subscriptions-transport-ws@^0.9.16: symbol-observable "^1.0.4" ws "^5.2.0" +supercluster@^7.1.0: + version "7.1.5" + resolved "https://registry.yarnpkg.com/supercluster/-/supercluster-7.1.5.tgz#65a6ce4a037a972767740614c19051b64b8be5a3" + integrity sha512-EulshI3pGUM66o6ZdH3ReiFcvHpM3vAigyK+vcxdjpJyEbIIrtbmBdY23mGgnI24uXiGFvrGq9Gkum/8U7vJWg== + dependencies: + kdbush "^3.0.0" + supports-color@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7" @@ -19433,6 +19638,11 @@ tiny-emitter@^2.0.0: resolved "https://registry.yarnpkg.com/tiny-emitter/-/tiny-emitter-2.1.0.tgz#1d1a56edfc51c43e863cbb5382a72330e3555423" integrity sha512-NB6Dk1A9xgQPMoGqC5CVXn123gWyte215ONT5Pp5a0yt4nlEoO1ZWeCwpncaekPHXO60i47ihFnZPiRPjRMq4Q== +tinyqueue@^2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/tinyqueue/-/tinyqueue-2.0.3.tgz#64d8492ebf39e7801d7bd34062e29b45b2035f08" + integrity sha512-ppJZNDuKGgxzkHihX8v9v9G5f+18gzaTfrukGrq6ueg0lmH4nqVnA2IPG0AEH3jKEk2GRJCUhDoqpoiw3PHLBA== + tippy.js@^4.3.5: version "4.3.5" resolved "https://registry.yarnpkg.com/tippy.js/-/tippy.js-4.3.5.tgz#882bff8d92f09bb0546d2826d5668c0560006f54" @@ -19864,6 +20074,11 @@ uc.micro@^1.0.1: resolved "https://registry.yarnpkg.com/uc.micro/-/uc.micro-1.0.6.tgz#9c411a802a409a91fc6cf74081baba34b24499ac" integrity sha512-8Y75pvTYkLJW2hWQHXxoqRgV7qb9B+9vFEtidML+7koHUFapnVJAZ6cKs+Qjz5Aw3aZWHMC6u0wJE3At+nSGwA== +ufo@^0.8.5: + version "0.8.6" + resolved "https://registry.yarnpkg.com/ufo/-/ufo-0.8.6.tgz#c0ec89bc0e0c9fa59a683680feb0f28b55ec323b" + integrity sha512-fk6CmUgwKCfX79EzcDQQpSCMxrHstvbLswFChHS0Vump+kFkw7nJBfTZoC1j0bOGoY9I7R3n2DGek5ajbcYnOw== + uglify-js@3.4.x: version "3.4.10" resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.4.10.tgz#9ad9563d8eb3acdfb8d38597d2af1d815f6a755f" @@ -20279,6 +20494,13 @@ uuid@^8.0.0, uuid@^8.3.0: resolved "https://registry.yarnpkg.com/uuid/-/uuid-8.3.2.tgz#80d5b5ced271bb9af6c445f21a1a04c606cefbe2" integrity sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg== +v-mapbox@^1.11.2: + version "1.11.2" + resolved "https://registry.yarnpkg.com/v-mapbox/-/v-mapbox-1.11.2.tgz#35782aabcd66f459c3223ce4cccf6c862d40e0c9" + integrity sha512-52OyFD3OCdRorJoX6XKfWXQKW5DGv67CxbBHJqYpyUhlSUHRCdsHHZdoepebjenOAi3D/rQP5p5SmLJpD+/aZw== + dependencies: + map-promisified "^0.4.0" + v-tooltip@~2.1.3: version "2.1.3" resolved "https://registry.yarnpkg.com/v-tooltip/-/v-tooltip-2.1.3.tgz#281c2015d1e73787f13c8956aa295b8c3a73f261" @@ -20409,6 +20631,15 @@ vscode-uri@^1.0.6: resolved "https://registry.yarnpkg.com/vscode-uri/-/vscode-uri-1.0.8.tgz#9769aaececae4026fb6e22359cb38946580ded59" integrity sha512-obtSWTlbJ+a+TFRYGaUumtVwb+InIUVI0Lu0VBUAPmj2cU5JutEXg3xUE0c2J5Tcy7h2DEKVJBFi+Y9ZSFzzPQ== +vt-pbf@^3.1.1: + version "3.1.3" + resolved "https://registry.yarnpkg.com/vt-pbf/-/vt-pbf-3.1.3.tgz#68fd150756465e2edae1cc5c048e063916dcfaac" + integrity sha512-2LzDFzt0mZKZ9IpVF2r69G9bXaP2Q2sArJCmcCgvfTdCCZzSyz4aCLoQyUilu37Ll56tCblIZrXFIjNUpGIlmA== + dependencies: + "@mapbox/point-geometry" "0.1.0" + "@mapbox/vector-tile" "^1.3.1" + pbf "^3.2.1" + vue-apollo@^3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/vue-apollo/-/vue-apollo-3.0.2.tgz#b198ecfa3765850a0b9f2b84ffaa7fbd8ec15f52" @@ -21340,4 +21571,3 @@ zxcvbn@^4.4.2: version "4.4.2" resolved "https://registry.yarnpkg.com/zxcvbn/-/zxcvbn-4.4.2.tgz#28ec17cf09743edcab056ddd8b1b06262cc73c30" integrity sha1-KOwXzwl0PtyrBW3dixsGJizHPDA= - \ No newline at end of file From 9a3f88ca80c842e08cbc8cce588c546b0530af51 Mon Sep 17 00:00:00 2001 From: Ulf Gebhardt Date: Wed, 4 Jan 2023 13:34:59 +0100 Subject: [PATCH 012/113] lint fix --- webapp/nuxt.config.js | 4 ++-- webapp/pages/map.vue | 32 +++++++++++++-------------- webapp/plugins/v-mapbox.js | 45 +++++++++++++++++++------------------- 3 files changed, 40 insertions(+), 41 deletions(-) diff --git a/webapp/nuxt.config.js b/webapp/nuxt.config.js index 83146ee58..ef29c938d 100644 --- a/webapp/nuxt.config.js +++ b/webapp/nuxt.config.js @@ -126,7 +126,7 @@ export default { { src: '~/plugins/vue-filters.js' }, { src: '~/plugins/vue-infinite-loading.js', ssr: false }, { src: '~/plugins/vue-observe-visibility.js', ssr: false }, - { src: '~/plugins/v-mapbox.js', mode: "client" }, + { src: '~/plugins/v-mapbox.js', mode: 'client' }, ], router: { @@ -158,7 +158,7 @@ export default { buildModules: [ // https://composition-api.nuxtjs.org/getting-started/setup#quick-start - "@nuxtjs/composition-api/module" + '@nuxtjs/composition-api/module', ], /* diff --git a/webapp/pages/map.vue b/webapp/pages/map.vue index b8fbeaf4f..366e3a445 100644 --- a/webapp/pages/map.vue +++ b/webapp/pages/map.vue @@ -33,16 +33,16 @@ \ No newline at end of file + diff --git a/webapp/plugins/v-mapbox.js b/webapp/plugins/v-mapbox.js index e29d8d1d1..657b7b6d6 100644 --- a/webapp/plugins/v-mapbox.js +++ b/webapp/plugins/v-mapbox.js @@ -1,25 +1,24 @@ // Vue2 + Mapbox Reference: https://github.com/geospoc/v-mapbox/issues/702 -import Vue from "vue"; +import Vue from 'vue' import { - MglGeojsonLayer, - MglVectorLayer, - MglMap, - MglMarker, - MglPopup, - MglScaleControl, - } from "v-mapbox"; - - // Map - Vue.component("MglMap", MglMap); - - // Controls - Vue.component("MglScaleControl", MglScaleControl); - - // Layers - Vue.component("MglGeojsonLayer", MglGeojsonLayer); - Vue.component("MglVectorLayer", MglVectorLayer); - - // Marker & Popup - Vue.component("MglMarker", MglMarker); - Vue.component("MglPopup", MglPopup); - \ No newline at end of file + MglGeojsonLayer, + MglVectorLayer, + MglMap, + MglMarker, + MglPopup, + MglScaleControl, +} from 'v-mapbox' + +// Map +Vue.component('MglMap', MglMap) + +// Controls +Vue.component('MglScaleControl', MglScaleControl) + +// Layers +Vue.component('MglGeojsonLayer', MglGeojsonLayer) +Vue.component('MglVectorLayer', MglVectorLayer) + +// Marker & Popup +Vue.component('MglMarker', MglMarker) +Vue.component('MglPopup', MglPopup) From b51aa8f10385726afa734da0534914cc654d27f0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Wolfgang=20Hu=C3=9F?= Date: Wed, 4 Jan 2023 14:21:19 +0100 Subject: [PATCH 013/113] Add webapp config 'MAPBOX_TOKEN' --- webapp/.env.template | 5 +++-- webapp/config/index.js | 1 + webapp/pages/map.vue | 4 ++-- 3 files changed, 6 insertions(+), 4 deletions(-) diff --git a/webapp/.env.template b/webapp/.env.template index 9776fcea2..76bc502f9 100644 --- a/webapp/.env.template +++ b/webapp/.env.template @@ -1,7 +1,8 @@ SENTRY_DSN_WEBAPP= COMMIT= -PUBLIC_REGISTRATION=false -INVITE_REGISTRATION=true WEBSOCKETS_URI=ws://localhost:3000/api/graphql GRAPHQL_URI=http://localhost:4000/ +MAPBOX_TOKEN="pk.eyJ1IjoiYnVzZmFrdG9yIiwiYSI6ImNraDNiM3JxcDBhaWQydG1uczhpZWtpOW4ifQ.7TNRTO-o9aK1Y6MyW_Nd4g" +PUBLIC_REGISTRATION=false +INVITE_REGISTRATION=true CATEGORIES_ACTIVE=false diff --git a/webapp/config/index.js b/webapp/config/index.js index db030e929..5da17010b 100644 --- a/webapp/config/index.js +++ b/webapp/config/index.js @@ -28,6 +28,7 @@ const sentry = { const options = { VERSION: process.env.VERSION || pkg.version, DESCRIPTION: process.env.DESCRIPTION || pkg.description, + MAPBOX_TOKEN: process.env.MAPBOX_TOKEN, PUBLIC_REGISTRATION: process.env.PUBLIC_REGISTRATION === 'true' || false, INVITE_REGISTRATION: process.env.INVITE_REGISTRATION !== 'false', // default = true // Cookies diff --git a/webapp/pages/map.vue b/webapp/pages/map.vue index 366e3a445..ed567605a 100644 --- a/webapp/pages/map.vue +++ b/webapp/pages/map.vue @@ -32,6 +32,7 @@ + From f18b1202c18896ae6aa4b9deb496c172c8e1034e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Wolfgang=20Hu=C3=9F?= Date: Tue, 10 Jan 2023 10:35:12 +0100 Subject: [PATCH 019/113] Cleanup --- webapp/pages/map.vue | 43 ++++++++++++------------------------------- 1 file changed, 12 insertions(+), 31 deletions(-) diff --git a/webapp/pages/map.vue b/webapp/pages/map.vue index ef5d6f786..0f41523c4 100644 --- a/webapp/pages/map.vue +++ b/webapp/pages/map.vue @@ -17,21 +17,18 @@ @load="onMapLoad" > - -
- - {{ style.title }} - - -
+ + {{ style.title }} + + @@ -100,8 +97,6 @@ export default { From 67fe5864c9c580a26d4057a329b085b004173f73 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Wolfgang=20Hu=C3=9F?= Date: Tue, 10 Jan 2023 10:46:54 +0100 Subject: [PATCH 020/113] Add map page title, even in head --- webapp/locales/de.json | 1 + webapp/locales/en.json | 1 + webapp/pages/map.vue | 75 ++++++++++++++++++++++++------------------ 3 files changed, 45 insertions(+), 32 deletions(-) diff --git a/webapp/locales/de.json b/webapp/locales/de.json index 077850296..e37280a42 100644 --- a/webapp/locales/de.json +++ b/webapp/locales/de.json @@ -523,6 +523,7 @@ "title": "{APPLICATION_NAME} befindet sich in der Wartung" }, "map": { + "pageTitle": "Karte", "styles": { "dark": "Dunkel", "outdoors": "Landschaft", diff --git a/webapp/locales/en.json b/webapp/locales/en.json index f7f520c93..5635b4e4b 100644 --- a/webapp/locales/en.json +++ b/webapp/locales/en.json @@ -523,6 +523,7 @@ "title": "{APPLICATION_NAME} is under maintenance" }, "map": { + "pageTitle": "Map", "styles": { "dark": "Dark", "outdoors": "Outdoors", diff --git a/webapp/pages/map.vue b/webapp/pages/map.vue index 0f41523c4..f8d6c8e71 100644 --- a/webapp/pages/map.vue +++ b/webapp/pages/map.vue @@ -1,36 +1,42 @@ From 13f2451e021c0503259035e54031da929c0bef19 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Wolfgang=20Hu=C3=9F?= Date: Thu, 12 Jan 2023 10:12:22 +0100 Subject: [PATCH 028/113] Change default GQL 'UserQuery' to named 'profileUserQuery' --- webapp/graphql/User.js | 2 +- webapp/pages/map.vue | 4 ++-- webapp/pages/profile/_id/_slug.vue | 5 ++--- 3 files changed, 5 insertions(+), 6 deletions(-) diff --git a/webapp/graphql/User.js b/webapp/graphql/User.js index 235e0e997..1ed20f3e6 100644 --- a/webapp/graphql/User.js +++ b/webapp/graphql/User.js @@ -7,7 +7,7 @@ import { commentFragment, } from './Fragments' -export default (i18n) => { +export const profileUserQuery = (i18n) => { const lang = i18n.locale().toUpperCase() return gql` ${userFragment} diff --git a/webapp/pages/map.vue b/webapp/pages/map.vue index 680323cc0..465cb9807 100644 --- a/webapp/pages/map.vue +++ b/webapp/pages/map.vue @@ -54,7 +54,7 @@ import mapboxgl from 'mapbox-gl' // import MapboxLanguage from '@mapbox/mapbox-gl-language' import { objectValuesToArray } from '../utils/utils' import { mapGetters } from 'vuex' -import UserQuery from '~/graphql/User' +import { profileUserQuery } from '~/graphql/User' export default { name: 'Map', @@ -164,7 +164,7 @@ export default { const { data: { User: users }, } = await this.$apollo.query({ - query: UserQuery(this.$i18n), + query: profileUserQuery(this.$i18n), variables: { id, followedByCount: 0, diff --git a/webapp/pages/profile/_id/_slug.vue b/webapp/pages/profile/_id/_slug.vue index e97b4cc9e..1939dcd9f 100644 --- a/webapp/pages/profile/_id/_slug.vue +++ b/webapp/pages/profile/_id/_slug.vue @@ -184,8 +184,7 @@ import MasonryGrid from '~/components/MasonryGrid/MasonryGrid.vue' import MasonryGridItem from '~/components/MasonryGrid/MasonryGridItem.vue' import TabNavigation from '~/components/_new/generic/TabNavigation/TabNavigation' import { profilePagePosts } from '~/graphql/PostQuery' -import UserQuery from '~/graphql/User' -import { updateUserMutation } from '~/graphql/User.js' +import { profileUserQuery, updateUserMutation } from '~/graphql/User' import { muteUser, unmuteUser } from '~/graphql/settings/MutedUsers' import { blockUser, unblockUser } from '~/graphql/settings/BlockedUsers' import UpdateQuery from '~/components/utils/UpdateQuery' @@ -408,7 +407,7 @@ export default { }, User: { query() { - return UserQuery(this.$i18n) + return profileUserQuery(this.$i18n) }, variables() { return { From 04810ca500bac4f94c237e8503f59cd7e03ce2f0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Wolfgang=20Hu=C3=9F?= Date: Thu, 12 Jan 2023 10:29:34 +0100 Subject: [PATCH 029/113] Move the admins user query GQL to the appropriate file --- webapp/graphql/User.js | 24 ++++++++++++++++++++++++ webapp/pages/admin/users.vue | 24 ++---------------------- 2 files changed, 26 insertions(+), 22 deletions(-) diff --git a/webapp/graphql/User.js b/webapp/graphql/User.js index 1ed20f3e6..8c1b94591 100644 --- a/webapp/graphql/User.js +++ b/webapp/graphql/User.js @@ -62,6 +62,30 @@ export const minimisedUserQuery = () => { ` } +export const adminUserQuery = () => { + return gql` + query ($filter: _UserFilter, $first: Int, $offset: Int, $email: String) { + User( + email: $email + filter: $filter + first: $first + offset: $offset + orderBy: createdAt_desc + ) { + id + name + slug + email + role + createdAt + contributionsCount + commentedCount + shoutedCount + } + } + ` +} + export const notificationQuery = (i18n) => { return gql` ${userFragment} diff --git a/webapp/pages/admin/users.vue b/webapp/pages/admin/users.vue index cbd7433ad..44f162c77 100644 --- a/webapp/pages/admin/users.vue +++ b/webapp/pages/admin/users.vue @@ -74,10 +74,10 @@ From a0f7947c3a5fac2f12720e9068db729552b0fc50 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Wolfgang=20Hu=C3=9F?= Date: Thu, 12 Jan 2023 11:28:02 +0100 Subject: [PATCH 032/113] Use 'getCoordinates' --- webapp/pages/map.vue | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/webapp/pages/map.vue b/webapp/pages/map.vue index 776287dee..b632eec96 100644 --- a/webapp/pages/map.vue +++ b/webapp/pages/map.vue @@ -78,7 +78,7 @@ export default { async mounted() { this.currentUserLocation = await this.getUserLocation(this.currentUser.id) this.currentUserCoordinates = this.currentUserLocation - ? [this.currentUserLocation.lng, this.currentUserLocation.lat] // Wolle: getCoordinates + ? this.getCoordinates(this.currentUserLocation) : null this.mapFlyToCenter() }, From 844bfb4cfbcd1b5dc3d6e254a1eab2678c469448 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Wolfgang=20Hu=C3=9F?= Date: Thu, 12 Jan 2023 13:20:09 +0100 Subject: [PATCH 033/113] Show all groups with locations on map --- webapp/graphql/groups.js | 2 ++ webapp/pages/map.vue | 35 +++++++++++++++++++++++++++++++---- 2 files changed, 33 insertions(+), 4 deletions(-) diff --git a/webapp/graphql/groups.js b/webapp/graphql/groups.js index 72e49ebe3..56d3debeb 100644 --- a/webapp/graphql/groups.js +++ b/webapp/graphql/groups.js @@ -173,6 +173,8 @@ export const groupQuery = (i18n) => { locationName location { name: name${lang} + lng + lat } myRole } diff --git a/webapp/pages/map.vue b/webapp/pages/map.vue index b632eec96..4362e8ca7 100644 --- a/webapp/pages/map.vue +++ b/webapp/pages/map.vue @@ -39,13 +39,26 @@ -
+
+
+ +
+ +
@@ -57,6 +70,7 @@ import mapboxgl from 'mapbox-gl' import { objectValuesToArray } from '../utils/utils' import { mapGetters } from 'vuex' import { profileUserQuery, mapUserQuery } from '~/graphql/User' +import { groupQuery } from '~/graphql/groups' export default { name: 'Map', @@ -73,6 +87,7 @@ export default { currentUserLocation: null, currentUserCoordinates: null, users: [], + groups: [], } }, async mounted() { @@ -197,6 +212,18 @@ export default { }, fetchPolicy: 'cache-and-network', }, + Group: { + query() { + return groupQuery(this.$i18n) + }, + variables() { + return {} + }, + update({ Group }) { + this.groups = Group + }, + fetchPolicy: 'cache-and-network', + }, }, } From fbf1f74098f4fee4b767cd55fb069440118d46c8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Wolfgang=20Hu=C3=9F?= Date: Thu, 12 Jan 2023 13:59:25 +0100 Subject: [PATCH 034/113] Move comment --- webapp/pages/map.vue | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/webapp/pages/map.vue b/webapp/pages/map.vue index 4362e8ca7..2d986e8cd 100644 --- a/webapp/pages/map.vue +++ b/webapp/pages/map.vue @@ -162,7 +162,6 @@ export default { // // console.log('this.language: ', this.language) // // is unclear, how to // // this.language.setLanguage('de') // makes error - // documentation: https://docs.mapbox.com/mapbox-gl-js/example/center-on-feature/ this.mapFlyToCenter() }, setStyle(url) { @@ -171,6 +170,7 @@ export default { }, mapFlyToCenter() { if (this.map) { + // example: https://docs.mapbox.com/mapbox-gl-js/example/center-on-feature/ this.map.flyTo({ center: this.mapCenter, zoom: this.mapZoom, From 04f43cde71d74e997c4b1161c19c29d5d27f85d7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Wolfgang=20Hu=C3=9F?= Date: Thu, 12 Jan 2023 15:44:06 +0100 Subject: [PATCH 035/113] Comment use of GQL 'location' fragment in webapp 'groups' file --- webapp/graphql/groups.js | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/webapp/graphql/groups.js b/webapp/graphql/groups.js index 56d3debeb..97652fbb0 100644 --- a/webapp/graphql/groups.js +++ b/webapp/graphql/groups.js @@ -1,4 +1,5 @@ import gql from 'graphql-tag' +// Wolle: import { locationFragment } from './Fragments' // ------ mutations @@ -146,7 +147,9 @@ export const changeGroupMemberRoleMutation = () => { export const groupQuery = (i18n) => { const lang = i18n ? i18n.locale().toUpperCase() : 'EN' + // ${locationFragment(lang)} return gql` + query ($isMember: Boolean, $id: ID, $slug: String, $first: Int, $offset: Int) { Group(isMember: $isMember, id: $id, slug: $slug, first: $first, offset: $offset) { id @@ -171,6 +174,7 @@ export const groupQuery = (i18n) => { url } locationName + # ...location location { name: name${lang} lng From e81336b50fdff962d27c9747e9144f4de7203af3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Wolfgang=20Hu=C3=9F?= Date: Thu, 12 Jan 2023 16:41:40 +0100 Subject: [PATCH 036/113] Set markers direct by map and not via HTML 'MglMarker' --- webapp/pages/map.vue | 69 ++++++++++++++++++++++++++++++++++++++++---- 1 file changed, 64 insertions(+), 5 deletions(-) diff --git a/webapp/pages/map.vue b/webapp/pages/map.vue index 2d986e8cd..4085ed545 100644 --- a/webapp/pages/map.vue +++ b/webapp/pages/map.vue @@ -39,10 +39,11 @@ -
+ + < !-- have this as last to have the users marker in front of all others -- > + /> -->
@@ -86,8 +88,14 @@ export default { defaultCenter: [10.452764, 51.165707], // center of Germany: https://www.gpskoordinaten.de/karte/land/DE currentUserLocation: null, currentUserCoordinates: null, - users: [], - groups: [], + users: null, + groups: null, + markers: { + array: [], + isCurrentUserAdded: false, + isUsersAdded: false, + isGroupsAdded: false, + }, } }, async mounted() { @@ -96,6 +104,7 @@ export default { ? this.getCoordinates(this.currentUserLocation) : null this.mapFlyToCenter() + this.addMissingMarkers() }, computed: { ...mapGetters({ @@ -163,11 +172,59 @@ export default { // // is unclear, how to // // this.language.setLanguage('de') // makes error this.mapFlyToCenter() + this.addMissingMarkers() }, setStyle(url) { this.map.setStyle(url) this.activeStyle = url }, + addMissingMarkers() { + if (this.map) { + if (!this.markers.isCurrentUserAdded && this.currentUserCoordinates) { + this.markers.array.push(new mapboxgl.Marker()) + this.markers.array[this.markers.array.length - 1] + .setLngLat(this.currentUserCoordinates) + .addTo(this.map) + this.markers.isCurrentUserAdded = true + } + if (!this.markers.isUsersAdded && this.currentUser && this.users) { + console.log('markers.isUsersAdded !!! this.users: ', this.users) + this.users.forEach((user, index) => { + console.log('markers.isUsersAdded !!! user index: ', index) + if (user.id !== this.currentUser.id && user.location) { + console.log('markers.isUsersAdded !!! user index if: ', index) + this.markers.array.push(new mapboxgl.Marker({ + coordinates: this.getCoordinates(user.location), + scale: 0.75, + color: 'blue', + })) + this.markers.array[this.markers.array.length - 1] + .setLngLat(this.currentUserCoordinates) + .addTo(this.map) + } + }) + this.markers.isUsersAdded = true + } + if (!this.markers.isGroupsAdded && this.groups) { + console.log('markers.isGroupsAdded !!! this.groups: ', this.groups) + this.groups.forEach((group, index) => { + console.log('markers.isGroupsAdded !!! group index: ', index) + if (group.location) { + console.log('markers.isGroupsAdded !!! group index if: ', index) + this.markers.array.push(new mapboxgl.Marker({ + coordinates: this.getCoordinates(group.location), + scale: 0.75, + color: 'green', + })) + this.markers.array[this.markers.array.length - 1] + .setLngLat(this.currentUserCoordinates) + .addTo(this.map) + } + }) + this.markers.isGroupsAdded = true + } + } + }, mapFlyToCenter() { if (this.map) { // example: https://docs.mapbox.com/mapbox-gl-js/example/center-on-feature/ @@ -209,6 +266,7 @@ export default { }, update({ User }) { this.users = User + this.addMissingMarkers() }, fetchPolicy: 'cache-and-network', }, @@ -221,6 +279,7 @@ export default { }, update({ Group }) { this.groups = Group + this.addMissingMarkers() }, fetchPolicy: 'cache-and-network', }, From 739eb20f65c3d0e529c0e4bf32a055d961163a3d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Wolfgang=20Hu=C3=9F?= Date: Thu, 12 Jan 2023 16:54:06 +0100 Subject: [PATCH 037/113] Fix map coordinates of users and groups --- webapp/pages/map.vue | 35 ++++++++++++++++++++++------------- 1 file changed, 22 insertions(+), 13 deletions(-) diff --git a/webapp/pages/map.vue b/webapp/pages/map.vue index 4085ed545..e617ab64f 100644 --- a/webapp/pages/map.vue +++ b/webapp/pages/map.vue @@ -193,13 +193,15 @@ export default { console.log('markers.isUsersAdded !!! user index: ', index) if (user.id !== this.currentUser.id && user.location) { console.log('markers.isUsersAdded !!! user index if: ', index) - this.markers.array.push(new mapboxgl.Marker({ - coordinates: this.getCoordinates(user.location), - scale: 0.75, - color: 'blue', - })) + this.markers.array.push( + new mapboxgl.Marker({ + // Wolle: coordinates: this.getCoordinates(user.location), + scale: 0.75, + color: 'blue', + }), + ) this.markers.array[this.markers.array.length - 1] - .setLngLat(this.currentUserCoordinates) + .setLngLat(this.getCoordinates(user.location)) .addTo(this.map) } }) @@ -210,14 +212,21 @@ export default { this.groups.forEach((group, index) => { console.log('markers.isGroupsAdded !!! group index: ', index) if (group.location) { - console.log('markers.isGroupsAdded !!! group index if: ', index) - this.markers.array.push(new mapboxgl.Marker({ - coordinates: this.getCoordinates(group.location), - scale: 0.75, - color: 'green', - })) + console.log( + 'markers.isGroupsAdded !!! group index if: ', + index, + ' location: ', + this.getCoordinates(group.location), + ) + this.markers.array.push( + new mapboxgl.Marker({ + // Wolle: coordinates: this.getCoordinates(group.location), + scale: 0.75, + color: 'green', + }), + ) this.markers.array[this.markers.array.length - 1] - .setLngLat(this.currentUserCoordinates) + .setLngLat(this.getCoordinates(group.location)) .addTo(this.map) } }) From 1b75a533d9c0df9e7bdf4373f31f810deb1aec4b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Wolfgang=20Hu=C3=9F?= Date: Thu, 12 Jan 2023 16:56:24 +0100 Subject: [PATCH 038/113] Cleanup --- webapp/pages/map.vue | 11 ----------- 1 file changed, 11 deletions(-) diff --git a/webapp/pages/map.vue b/webapp/pages/map.vue index e617ab64f..12689cc9b 100644 --- a/webapp/pages/map.vue +++ b/webapp/pages/map.vue @@ -188,11 +188,8 @@ export default { this.markers.isCurrentUserAdded = true } if (!this.markers.isUsersAdded && this.currentUser && this.users) { - console.log('markers.isUsersAdded !!! this.users: ', this.users) this.users.forEach((user, index) => { - console.log('markers.isUsersAdded !!! user index: ', index) if (user.id !== this.currentUser.id && user.location) { - console.log('markers.isUsersAdded !!! user index if: ', index) this.markers.array.push( new mapboxgl.Marker({ // Wolle: coordinates: this.getCoordinates(user.location), @@ -208,16 +205,8 @@ export default { this.markers.isUsersAdded = true } if (!this.markers.isGroupsAdded && this.groups) { - console.log('markers.isGroupsAdded !!! this.groups: ', this.groups) this.groups.forEach((group, index) => { - console.log('markers.isGroupsAdded !!! group index: ', index) if (group.location) { - console.log( - 'markers.isGroupsAdded !!! group index if: ', - index, - ' location: ', - this.getCoordinates(group.location), - ) this.markers.array.push( new mapboxgl.Marker({ // Wolle: coordinates: this.getCoordinates(group.location), From a310c1fe83b15df1c00d50389357f891e75d93fb Mon Sep 17 00:00:00 2001 From: ogerly Date: Sun, 22 Jan 2023 12:54:48 +0100 Subject: [PATCH 039/113] add category name in tooltip --- webapp/components/PostTeaser/PostTeaser.vue | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/webapp/components/PostTeaser/PostTeaser.vue b/webapp/components/PostTeaser/PostTeaser.vue index 2bd63e6ed..c99e0dad2 100644 --- a/webapp/components/PostTeaser/PostTeaser.vue +++ b/webapp/components/PostTeaser/PostTeaser.vue @@ -30,7 +30,10 @@ v-for="category in post.categories" :key="category.id" v-tooltip="{ - content: $t(`contribution.category.description.${category.slug}`), + content: ` + ${$t(`contribution.category.name.${category.slug}`)}: + ${$t(`contribution.category.description.${category.slug}`)} + `, placement: 'bottom-start', }" :icon="category.icon" From c5680c5eb987fee29a81f56d74953c06b040aa3c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Wolfgang=20Hu=C3=9F?= Date: Mon, 23 Jan 2023 13:58:52 +0100 Subject: [PATCH 040/113] Add mapbox controller 'MapboxGeocoder' --- webapp/package.json | 1 + webapp/pages/map.vue | 8 + webapp/yarn.lock | 372 ++++++++++++++++++++++++++++++++++++++++++- 3 files changed, 377 insertions(+), 4 deletions(-) diff --git a/webapp/package.json b/webapp/package.json index e09300f53..4dc0b1b03 100644 --- a/webapp/package.json +++ b/webapp/package.json @@ -22,6 +22,7 @@ }, "dependencies": { "@human-connection/styleguide": "0.5.22", + "@mapbox/mapbox-gl-geocoder": "^5.0.1", "@mapbox/mapbox-gl-language": "0.10.0", "@nuxtjs/apollo": "^4.0.0-rc19", "@nuxtjs/axios": "~5.9.7", diff --git a/webapp/pages/map.vue b/webapp/pages/map.vue index 12689cc9b..eb6c480b4 100644 --- a/webapp/pages/map.vue +++ b/webapp/pages/map.vue @@ -68,6 +68,8 @@ diff --git a/webapp/locales/de.json b/webapp/locales/de.json index 91467b7de..99d164d1e 100644 --- a/webapp/locales/de.json +++ b/webapp/locales/de.json @@ -410,6 +410,9 @@ "addUserNoOptions": "Keine Nutzer gefunden!", "addUserPlaceholder": "Benutzername", "allGroups": "Alle Gruppen", + "button": { + "tooltip": "Gruppen anzeigen" + }, "categories": "Thema ::: Themen", "changeMemberRole": "Die Rolle wurde auf „{role}“ geändert!", "contentMenu": { diff --git a/webapp/locales/en.json b/webapp/locales/en.json index fc7601569..b35035a04 100644 --- a/webapp/locales/en.json +++ b/webapp/locales/en.json @@ -410,6 +410,9 @@ "addUserNoOptions": "No users found!", "addUserPlaceholder": " Username", "allGroups": "All Groups", + "button": { + "tooltip": "Show groups" + }, "categories": "Topic ::: Topics", "changeMemberRole": "The role has been changed to “{role}”!", "contentMenu": { From 8ae6eff0e4258d57db51d3a0c69491fc4b513208 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Wolfgang=20Hu=C3=9F?= Date: Tue, 31 Jan 2023 13:06:34 +0100 Subject: [PATCH 090/113] Add map button to header menu --- .../assets/_new/icons/svgs/globe-detailed.svg | 1 + webapp/components/HeaderMenu/HeaderMenu.vue | 67 +++++++---- webapp/components/Map/MapButton.vue | 108 ++++++++++++++++++ webapp/locales/de.json | 3 + webapp/locales/en.json | 3 + 5 files changed, 162 insertions(+), 20 deletions(-) create mode 100644 webapp/assets/_new/icons/svgs/globe-detailed.svg create mode 100644 webapp/components/Map/MapButton.vue diff --git a/webapp/assets/_new/icons/svgs/globe-detailed.svg b/webapp/assets/_new/icons/svgs/globe-detailed.svg new file mode 100644 index 000000000..64b5b1573 --- /dev/null +++ b/webapp/assets/_new/icons/svgs/globe-detailed.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/webapp/components/HeaderMenu/HeaderMenu.vue b/webapp/components/HeaderMenu/HeaderMenu.vue index 7f24eeb81..86b38a77c 100644 --- a/webapp/components/HeaderMenu/HeaderMenu.vue +++ b/webapp/components/HeaderMenu/HeaderMenu.vue @@ -20,7 +20,7 @@ - + - - + - + + - + diff --git a/webapp/locales/de.json b/webapp/locales/de.json index 9fd97e1c3..1389ac95e 100644 --- a/webapp/locales/de.json +++ b/webapp/locales/de.json @@ -816,7 +816,7 @@ "data": { "labelBio": "Über Dich", "labelCity": "Deine Stadt oder Region", - "labelCityHint": " (zeigt ungenaue Position auf der Landkarte)", + "labelCityHint": "(zeigt ungefähre Position auf der Landkarte)", "labelName": "Dein Name", "labelSlug": "Dein eindeutiger Benutzername", "name": "Deine Daten", diff --git a/webapp/locales/en.json b/webapp/locales/en.json index 12c64c694..b5529e790 100644 --- a/webapp/locales/en.json +++ b/webapp/locales/en.json @@ -816,7 +816,7 @@ "data": { "labelBio": "About You", "labelCity": "Your City or Region", - "labelCityHint": " (shows inaccurate position on map)", + "labelCityHint": "(shows approximate position on map)", "labelName": "Your Name", "labelSlug": "Your unique user name", "name": "Your data", diff --git a/webapp/pages/settings/index.vue b/webapp/pages/settings/index.vue index 67c09bd21..6cae7e44c 100644 --- a/webapp/pages/settings/index.vue +++ b/webapp/pages/settings/index.vue @@ -1,5 +1,5 @@