diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml new file mode 100644 index 00000000..d597d856 --- /dev/null +++ b/.github/workflows/lint.yml @@ -0,0 +1,25 @@ +name: Lint Code with Black + +on: + push: + pull_request: + +jobs: + lint: + runs-on: ubuntu-latest + steps: + - name: Checkout code + uses: actions/checkout@v3 + + - name: Set up Python + uses: actions/setup-python@v4 + with: + python-version: "3.9" # Spécifie la version de Python que tu utilises + + - name: Install Black + run: | + python -m pip install --upgrade pip + pip install black==24.10.0 + + - name: Run Black + run: black --check --exclude "backend/custom_app.py" ./backend diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml new file mode 100644 index 00000000..9670df87 --- /dev/null +++ b/.gitlab-ci.yml @@ -0,0 +1,98 @@ +.kaniko_template: + stage: build + image: + name: gcr.io/kaniko-project/executor:debug + entrypoint: [""] + variables: + GODEBUG: "http2client=0" + DOCKER_CONFIG: /kaniko/.docker + DOCKER_CONFIG_TPL: '{"auths": {"harbor.naturaliens.cloud": {"auth": ""}}}' + script: + - mkdir -p /kaniko/.docker + - | + printf '%s\n' "$DOCKER_CONFIG_TPL" | sed "s||${NS_DOCKER_TOKEN}|g" > /kaniko/.docker/config.json + - > + /kaniko/executor + --context "${CONTEXT_DIR}" + --dockerfile "${DOCKERFILE_PATH}" + --build-arg APP_VERSION=$(cat VERSION) + --destination "harbor.naturaliens.cloud/geopaysages/${IMAGE_NAME}:$(cat VERSION)" + --destination "harbor.naturaliens.cloud/geopaysages/${IMAGE_NAME}:${CI_COMMIT_BRANCH}" + --cache=true + tags: + - NSCICDK8S + +build_db: + extends: .kaniko_template + variables: + CONTEXT_DIR: "${CI_PROJECT_DIR}/db" + DOCKERFILE_PATH: "${CI_PROJECT_DIR}/db/Dockerfile" + IMAGE_NAME: db + rules: + - if: '$CI_COMMIT_BRANCH == "preprod"' + changes: + - db/** + #- .gitlab-ci.yml + +build_admin: + extends: .kaniko_template + variables: + CONTEXT_DIR: "${CI_PROJECT_DIR}/admin" + DOCKERFILE_PATH: "${CI_PROJECT_DIR}/admin/Dockerfile" + IMAGE_NAME: admin + rules: + - if: '$CI_COMMIT_BRANCH == "preprod"' + changes: + - admin/**/* + - admin/* + #- .gitlab-ci.yml + +build_backend: + extends: .kaniko_template + variables: + CONTEXT_DIR: "${CI_PROJECT_DIR}/backend" + DOCKERFILE_PATH: "${CI_PROJECT_DIR}/backend/Dockerfile" + IMAGE_NAME: backend + rules: + - if: '$CI_COMMIT_BRANCH == "preprod"' + changes: + - backend/** + #- .gitlab-ci.yml + +deploy: + stage: deploy + image: registry.gitlab.com/natural-solutions/ns-ansible-infrastructure + id_tokens: + NATURALIENS_ID_TOKEN: + aud: https://vault.naturaliens.cloud + tags: + - NSCICDDOCKER + # needs: + # - job: build_db + # optional: true + # - job: build_keycloak + # optional: true + # - job: build_hasura + # optional: true + # - job: build_python + # optional: true + # - job: build_app + # optional: true + rules: + - if: '$CI_COMMIT_BRANCH == "preprod"' + changes: + # - .gitlab-ci.yml + - db/** + - keycloak/** + - hasura/** + - python/** + - app/** + script: + - export VAULT_TOKEN="$(vault write -field=token auth/jwt/login role=gitlab-runner-geopaysages jwt=$NATURALIENS_ID_TOKEN)" + - cd /home/ansible + - vault kv get -format=json -mount=devops inventories/ns/projects/geopaysages | jq -r '.data.data.hosts.dev.private_key' | base64 -d > private_key + - chmod 600 private_key + - ansible-playbook -i inventory.py playbooks/geopaysages.yml -t geopaysages + variables: + GIT_STRATEGY: none + INVENTORY_PATH: inventories/ns/projects/geopaysages diff --git a/VERSION b/VERSION index f0bb29e7..9075be49 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -1.3.0 +1.5.5 diff --git a/admin/package-lock.json b/admin/package-lock.json index 49253b01..21df8f6e 100644 --- a/admin/package-lock.json +++ b/admin/package-lock.json @@ -1004,6 +1004,11 @@ } } }, + "@bazel/runfiles": { + "version": "5.8.1", + "resolved": "https://registry.npmjs.org/@bazel/runfiles/-/runfiles-5.8.1.tgz", + "integrity": "sha512-NDdfpdQ6rZlylgv++iMn5FkObC/QlBQvipinGLSOguTYpRywmieOyJ29XHvUilspwTFSILWpoE9CqMGkHXug1g==" + }, "@ng-bootstrap/ng-bootstrap": { "version": "4.2.2", "resolved": "https://registry.npmjs.org/@ng-bootstrap/ng-bootstrap/-/ng-bootstrap-4.2.2.tgz", @@ -1033,6 +1038,22 @@ "webpack-sources": "1.2.0" } }, + "@ngx-translate/core": { + "version": "11.0.1", + "resolved": "https://registry.npmjs.org/@ngx-translate/core/-/core-11.0.1.tgz", + "integrity": "sha512-nBCa1ZD9fAUY/3eskP3Lql2fNg8OMrYIej1/5GRsfcutx9tG/5fZLCv9m6UCw1aS+u4uK/vXjv1ctG/FdMvaWg==", + "requires": { + "tslib": "^1.9.0" + } + }, + "@ngx-translate/http-loader": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@ngx-translate/http-loader/-/http-loader-4.0.0.tgz", + "integrity": "sha512-x8LumqydWD7eX9yQTAVeoCM9gFUIGVTUjZqbxdAUavAA3qVnk9wCQux7iHLPXpydl8vyQmLoPQR+fFU+DUDOMA==", + "requires": { + "tslib": "^1.9.0" + } + }, "@schematics/angular": { "version": "7.0.7", "resolved": "https://registry.npmjs.org/@schematics/angular/-/angular-7.0.7.tgz", @@ -1079,6 +1100,279 @@ "resolved": "https://registry.npmjs.org/@swimlane/ngx-datatable/-/ngx-datatable-14.0.0.tgz", "integrity": "sha512-zgRY58MzTpg9Jb575cg0O87mLtXYi6fx7NLRPRHdQ/FqH9mKjZ3i7+OjqtR8/w3KRmFP2Hnkmx52VzldZIKspg==" }, + "@syncfusion/ej2-angular-base": { + "version": "18.4.49", + "resolved": "https://registry.npmjs.org/@syncfusion/ej2-angular-base/-/ej2-angular-base-18.4.49.tgz", + "integrity": "sha512-soee6pE7CT3OwuaEVY+diF6jGhdEiC8r7EWBtb0A3Sj02wsnurEKkf+PdfCoA72rHU7oQDl9p9GZLhoIZfVhwg==", + "requires": { + "@syncfusion/ej2-base": "~18.4.44", + "@syncfusion/ej2-icons": "~18.4.39", + "core-js": "^3.4.8", + "reflect-metadata": "^0.1.9", + "rxjs": "^6.5.4", + "rxjs-compat": "^6.5.4", + "zone.js": "^0.10.2" + }, + "dependencies": { + "core-js": { + "version": "3.38.1", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.38.1.tgz", + "integrity": "sha512-OP35aUorbU3Zvlx7pjsFdu1rGNnD4pgw/CWoYzRY3t2EzoVT7shKHY1dlAy3f41cGIO7ZDPQimhGFTlEYkG/Hw==" + }, + "rxjs": { + "version": "6.6.7", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz", + "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==", + "requires": { + "tslib": "^1.9.0" + } + }, + "zone.js": { + "version": "0.10.3", + "resolved": "https://registry.npmjs.org/zone.js/-/zone.js-0.10.3.tgz", + "integrity": "sha512-LXVLVEq0NNOqK/fLJo3d0kfzd4sxwn2/h67/02pjCjfKDxgx1i9QqpvtHD8CrBnSSwMw5+dy11O7FRX5mkO7Cg==" + } + } + }, + "@syncfusion/ej2-angular-richtexteditor": { + "version": "18.4.49", + "resolved": "https://registry.npmjs.org/@syncfusion/ej2-angular-richtexteditor/-/ej2-angular-richtexteditor-18.4.49.tgz", + "integrity": "sha512-9OW6UGYYU7qbqdV/yZ5bGXXP4r7FVm88klVZcNoUPzdbYzI9o5n64p6AbfR4t9k3Rdgu906GDnTJMxP36Vv2Dg==", + "requires": { + "@syncfusion/ej2-angular-base": "~18.4.49", + "@syncfusion/ej2-base": "~18.4.44", + "@syncfusion/ej2-richtexteditor": "18.4.49", + "@types/lodash": "4.14.159", + "@types/node": "11.15.20" + }, + "dependencies": { + "@types/node": { + "version": "11.15.20", + "resolved": "https://registry.npmjs.org/@types/node/-/node-11.15.20.tgz", + "integrity": "sha512-DY2QwdrBqNlsxdMehwzUtSsWHgYYPLVCAuXvOcu3wkzYmchbRunQ7OEZFOrmFoBLfA1ysz2Ypr6vtNP9WQkUaQ==" + } + } + }, + "@syncfusion/ej2-base": { + "version": "18.4.44", + "resolved": "https://registry.npmjs.org/@syncfusion/ej2-base/-/ej2-base-18.4.44.tgz", + "integrity": "sha512-irv+We6ZxLAr8SctOB4hLP9otTq2yVT8yPfhB8ytQ2ZXWqDfddcLKfTC7NwFnMmD0mh+vAogHwpWuYbDl9yZew==", + "requires": { + "@syncfusion/ej2-icons": "~18.4.39" + } + }, + "@syncfusion/ej2-buttons": { + "version": "18.4.46", + "resolved": "https://registry.npmjs.org/@syncfusion/ej2-buttons/-/ej2-buttons-18.4.46.tgz", + "integrity": "sha512-bJAytPOKdHgMDuxXjS1vAOeG+kgd2on/kL5MuAMq/zYx6chz+W7MupLwviv0y16Em3drLV+ljI+PeKaQVI19dA==", + "requires": { + "@syncfusion/ej2-base": "~18.4.44" + } + }, + "@syncfusion/ej2-calendars": { + "version": "18.4.48", + "resolved": "https://registry.npmjs.org/@syncfusion/ej2-calendars/-/ej2-calendars-18.4.48.tgz", + "integrity": "sha512-jDic+kNuWn5yu0xSYd9QeE7Re6yhKJi7S200WJk9UUNGlo9vtLYFpPt2KCgYhBc6sBaErU99wb+OB4Ij4yK3TQ==", + "requires": { + "@syncfusion/ej2-base": "~18.4.44", + "@syncfusion/ej2-buttons": "~18.4.46", + "@syncfusion/ej2-inputs": "~18.4.47", + "@syncfusion/ej2-lists": "~18.4.39", + "@syncfusion/ej2-popups": "~18.4.44" + } + }, + "@syncfusion/ej2-compression": { + "version": "18.4.39", + "resolved": "https://registry.npmjs.org/@syncfusion/ej2-compression/-/ej2-compression-18.4.39.tgz", + "integrity": "sha512-8yfO8StEHo2vIBWs+8l1eubB9lFR8PurcKJkuuLUp5xGDXswsMaKpU/exVHIycJV/UDIsuuNEItXGC3K1lxsrQ==", + "requires": { + "@syncfusion/ej2-file-utils": "~18.4.39" + } + }, + "@syncfusion/ej2-data": { + "version": "18.4.46", + "resolved": "https://registry.npmjs.org/@syncfusion/ej2-data/-/ej2-data-18.4.46.tgz", + "integrity": "sha512-kVxkzBeR/Unv43C+nWbra4Onq/TdHkx68PZ0n9+sJ9ArIUw+XsV3/TGQ9IV6RfTuxlK0TXP8fmeWR8CHmmjfhg==", + "requires": { + "@syncfusion/ej2-base": "~18.4.44" + } + }, + "@syncfusion/ej2-dropdowns": { + "version": "18.4.49", + "resolved": "https://registry.npmjs.org/@syncfusion/ej2-dropdowns/-/ej2-dropdowns-18.4.49.tgz", + "integrity": "sha512-Sa0ugJBX8lnGV9SnCpIlnbH2rEx3laHBlVn6VAC4uUT4RnuDo/McKwROrLlbx3KGOmjqARtvRjc6tvHwKGpLMQ==", + "requires": { + "@syncfusion/ej2-base": "~18.4.44", + "@syncfusion/ej2-data": "~18.4.46", + "@syncfusion/ej2-inputs": "~18.4.47", + "@syncfusion/ej2-lists": "~18.4.39", + "@syncfusion/ej2-navigations": "~18.4.47", + "@syncfusion/ej2-popups": "~18.4.44" + } + }, + "@syncfusion/ej2-excel-export": { + "version": "18.4.41", + "resolved": "https://registry.npmjs.org/@syncfusion/ej2-excel-export/-/ej2-excel-export-18.4.41.tgz", + "integrity": "sha512-mtEB0bhcZB8t3R6KmCDY8RZhjvbtDpEgHZ/xPpYj3Vzp0CTN/tKzUEP1bF+vMJltYo1b3ji1szZh0pp1TAMiUQ==", + "requires": { + "@syncfusion/ej2-base": "~18.4.41", + "@syncfusion/ej2-compression": "~18.4.39" + } + }, + "@syncfusion/ej2-file-utils": { + "version": "18.4.39", + "resolved": "https://registry.npmjs.org/@syncfusion/ej2-file-utils/-/ej2-file-utils-18.4.39.tgz", + "integrity": "sha512-Gn0w6+2TSpuAgpFd+h8KSnZ8zj2hJcPOGAfWy+khLZ3JaLS59SHzPW2odY2yjZwlPBmAeHRj/Oo46vwxvKTeCw==" + }, + "@syncfusion/ej2-filemanager": { + "version": "18.4.41", + "resolved": "https://registry.npmjs.org/@syncfusion/ej2-filemanager/-/ej2-filemanager-18.4.41.tgz", + "integrity": "sha512-i7RarPrtv4VFj/nA24G5g4CCjv29DJC8pVgRGB1hfWz6FOX3tsSlmy8aS/pd3m84r6Ly+nQdCaDekKtId5+8/A==", + "requires": { + "@syncfusion/ej2-base": "~18.4.41", + "@syncfusion/ej2-buttons": "~18.4.41", + "@syncfusion/ej2-data": "~18.4.39", + "@syncfusion/ej2-grids": "~18.4.41", + "@syncfusion/ej2-inputs": "~18.4.41", + "@syncfusion/ej2-layouts": "~18.4.39", + "@syncfusion/ej2-lists": "~18.4.39", + "@syncfusion/ej2-navigations": "~18.4.41", + "@syncfusion/ej2-popups": "~18.4.41", + "@syncfusion/ej2-splitbuttons": "~18.4.41", + "selenium-webdriver": "^4.0.0-alpha.1" + }, + "dependencies": { + "selenium-webdriver": { + "version": "4.25.0", + "resolved": "https://registry.npmjs.org/selenium-webdriver/-/selenium-webdriver-4.25.0.tgz", + "integrity": "sha512-zl9IX93caOT8wbcCpZzAkEtYa+hNgJ4C5GUN8uhpzggqRLvsg1asfKi0p1uNZC8buYVvsBZbx8S+9MjVAjs4oA==", + "requires": { + "@bazel/runfiles": "^5.8.1", + "jszip": "^3.10.1", + "tmp": "^0.2.3", + "ws": "^8.18.0" + } + }, + "tmp": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.3.tgz", + "integrity": "sha512-nZD7m9iCPC5g0pYmcaxogYKggSfLsdxl8of3Q/oIbqCqLLIO9IAF0GWjX1z9NZRHPiXv8Wex4yDCaZsgEw0Y8w==" + }, + "ws": { + "version": "8.18.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.0.tgz", + "integrity": "sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw==" + } + } + }, + "@syncfusion/ej2-grids": { + "version": "18.4.49", + "resolved": "https://registry.npmjs.org/@syncfusion/ej2-grids/-/ej2-grids-18.4.49.tgz", + "integrity": "sha512-p2V46aM+EVVCRMMTmszveSWwzZpeeqBkAT3UnH9cbxHK6Av3GK/+7PNicG7TdCmgvcWnVDTgxPj8bDjdrhW7tQ==", + "requires": { + "@syncfusion/ej2-base": "~18.4.44", + "@syncfusion/ej2-buttons": "~18.4.46", + "@syncfusion/ej2-calendars": "~18.4.48", + "@syncfusion/ej2-compression": "~18.4.39", + "@syncfusion/ej2-data": "~18.4.46", + "@syncfusion/ej2-dropdowns": "~18.4.49", + "@syncfusion/ej2-excel-export": "~18.4.41", + "@syncfusion/ej2-file-utils": "~18.4.39", + "@syncfusion/ej2-inputs": "~18.4.47", + "@syncfusion/ej2-lists": "~18.4.39", + "@syncfusion/ej2-navigations": "~18.4.47", + "@syncfusion/ej2-pdf-export": "~18.4.47", + "@syncfusion/ej2-popups": "~18.4.44", + "@syncfusion/ej2-splitbuttons": "~18.4.41" + } + }, + "@syncfusion/ej2-icons": { + "version": "18.4.39", + "resolved": "https://registry.npmjs.org/@syncfusion/ej2-icons/-/ej2-icons-18.4.39.tgz", + "integrity": "sha512-l/FT5H12SSV2IwWbL39nrh5NwB8BpRdHoVOpG9/H4Ezs3q7zVAPgEMq+fAn5Tp1PBhl3cWYpSct7M2tJMSG49w==" + }, + "@syncfusion/ej2-inputs": { + "version": "18.4.47", + "resolved": "https://registry.npmjs.org/@syncfusion/ej2-inputs/-/ej2-inputs-18.4.47.tgz", + "integrity": "sha512-ITxKNijcrEr2oO/u6RpFr5v7xHg81gDr2WIKq5oX1BXuCVLocMcjUzsOrvI/YG0xWgN6Jl8sh1+cfm8J3nu9FA==", + "requires": { + "@syncfusion/ej2-base": "~18.4.44", + "@syncfusion/ej2-buttons": "~18.4.46", + "@syncfusion/ej2-popups": "~18.4.44", + "@syncfusion/ej2-splitbuttons": "~18.4.41" + } + }, + "@syncfusion/ej2-layouts": { + "version": "18.4.49", + "resolved": "https://registry.npmjs.org/@syncfusion/ej2-layouts/-/ej2-layouts-18.4.49.tgz", + "integrity": "sha512-wKaXa7y0OX4VHNh6eUZu/6QPit9D1te3jwpg7nYbcizADvUFyrOAK2Tn91xNlfnnJuMOPNLqm185wEcsvI3mNA==", + "requires": { + "@syncfusion/ej2-base": "~18.4.44" + } + }, + "@syncfusion/ej2-lists": { + "version": "18.4.39", + "resolved": "https://registry.npmjs.org/@syncfusion/ej2-lists/-/ej2-lists-18.4.39.tgz", + "integrity": "sha512-bn6C5YU06FXC1LjSXDqAt3zreC2+0DNHSp2iK0yKyM0GoiHh7KU0gjbWEyvkMlTD6aIeOp84uoETaibVDZwwWQ==", + "requires": { + "@syncfusion/ej2-base": "~18.4.39", + "@syncfusion/ej2-buttons": "~18.4.39", + "@syncfusion/ej2-data": "~18.4.39" + } + }, + "@syncfusion/ej2-navigations": { + "version": "18.4.47", + "resolved": "https://registry.npmjs.org/@syncfusion/ej2-navigations/-/ej2-navigations-18.4.47.tgz", + "integrity": "sha512-W7X2kduo+bhGdmY/e29gd+EZqhZ0WFhJAISWW5PJ8o1eTyD3GWxj8UKjAGJwJ5S6cpUSSpYs7eksmS/nTzj1ig==", + "requires": { + "@syncfusion/ej2-base": "~18.4.44", + "@syncfusion/ej2-buttons": "~18.4.46", + "@syncfusion/ej2-data": "~18.4.46", + "@syncfusion/ej2-inputs": "~18.4.47", + "@syncfusion/ej2-lists": "~18.4.39", + "@syncfusion/ej2-popups": "~18.4.44" + } + }, + "@syncfusion/ej2-pdf-export": { + "version": "18.4.47", + "resolved": "https://registry.npmjs.org/@syncfusion/ej2-pdf-export/-/ej2-pdf-export-18.4.47.tgz", + "integrity": "sha512-gm6DAptM3jGfXkR3RJFvv+E4cDxYsWJ8yOhUd6Y5AQe95Q5Xx0YplzTCGfQZZGwlMVwAYis9NeYZ/5qa9PK6HA==", + "requires": { + "@syncfusion/ej2-compression": "~18.4.39" + } + }, + "@syncfusion/ej2-popups": { + "version": "18.4.44", + "resolved": "https://registry.npmjs.org/@syncfusion/ej2-popups/-/ej2-popups-18.4.44.tgz", + "integrity": "sha512-p/i1gKIfFPP9DCNfHss5v0ydvvRbrWIKxqBfjZ4xt2V81FQivvB9zuWcr0aEG0ySBZkOdwXze1Mt0+iSOeRE+g==", + "requires": { + "@syncfusion/ej2-base": "~18.4.44", + "@syncfusion/ej2-buttons": "~18.4.44" + } + }, + "@syncfusion/ej2-richtexteditor": { + "version": "18.4.49", + "resolved": "https://registry.npmjs.org/@syncfusion/ej2-richtexteditor/-/ej2-richtexteditor-18.4.49.tgz", + "integrity": "sha512-6y0Zb/GU8/cP6GjV5sYUvDQtmoUoPTlH4pQj/sgcztv8l8K6n1Qkku40zJ3xQsHwIZVzatgY6EF8NOAdNTIwlA==", + "requires": { + "@syncfusion/ej2-base": "~18.4.44", + "@syncfusion/ej2-buttons": "~18.4.46", + "@syncfusion/ej2-filemanager": "~18.4.41", + "@syncfusion/ej2-inputs": "~18.4.47", + "@syncfusion/ej2-navigations": "~18.4.47", + "@syncfusion/ej2-popups": "~18.4.44", + "@syncfusion/ej2-splitbuttons": "~18.4.41" + } + }, + "@syncfusion/ej2-splitbuttons": { + "version": "18.4.41", + "resolved": "https://registry.npmjs.org/@syncfusion/ej2-splitbuttons/-/ej2-splitbuttons-18.4.41.tgz", + "integrity": "sha512-QEAH3ml3x0FwfnkXE5+HGsQMOVWUkuVUqYRas3Ny3L8Loyg2oG4djeg11mxHVQ4ZBNSOOk2uKyswq0Qkyk5f7w==", + "requires": { + "@syncfusion/ej2-base": "~18.4.41", + "@syncfusion/ej2-popups": "~18.4.41" + } + }, "@types/geojson": { "version": "7946.0.7", "resolved": "https://registry.npmjs.org/@types/geojson/-/geojson-7946.0.7.tgz", @@ -1127,9 +1421,9 @@ } }, "@types/lodash": { - "version": "4.14.149", - "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.149.tgz", - "integrity": "sha512-ijGqzZt/b7BfzcK9vTrS6MFljQRPn5BFWOx8oE0GYxribu6uV+aA9zZuXI1zc/etK9E8nrgdoF2+LgUw7+9tJQ==" + "version": "4.14.159", + "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.159.tgz", + "integrity": "sha512-gF7A72f7WQN33DpqOWw9geApQPh4M3PxluMtaHxWHXEGSN12/WbcEk/eNSqWNQcQhF66VSZ06vCF94CrHwXJDg==" }, "@types/moment": { "version": "2.13.0", @@ -5257,8 +5551,7 @@ "immediate": { "version": "3.0.6", "resolved": "https://registry.npmjs.org/immediate/-/immediate-3.0.6.tgz", - "integrity": "sha1-nbHb0Pr43m++D13V5Wu2BigN5ps=", - "dev": true + "integrity": "sha1-nbHb0Pr43m++D13V5Wu2BigN5ps=" }, "import-cwd": { "version": "2.1.0", @@ -6258,15 +6551,14 @@ "integrity": "sha512-QU9aQ+qZOSkMcX+ZZQevW0nswoKGAVoFfDycmAQeeHNYMnB4PoopiCXMKE2t93mEZeM82ikUA+eGdJjfJN5AkA==" }, "jszip": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/jszip/-/jszip-3.2.2.tgz", - "integrity": "sha512-NmKajvAFQpbg3taXQXr/ccS2wcucR1AZ+NtyWp2Nq7HHVsXhcJFR8p0Baf32C2yVvBylFWVeKf+WI2AnvlPhpA==", - "dev": true, + "version": "3.10.1", + "resolved": "https://registry.npmjs.org/jszip/-/jszip-3.10.1.tgz", + "integrity": "sha512-xXDvecyTpGLrqFrvkrUSoxxfJI5AH7U8zxxtVclpsUtMCq4JQ290LY8AW5c7Ggnr/Y/oK+bQMbqK2qmtk3pN4g==", "requires": { "lie": "~3.3.0", "pako": "~1.0.2", "readable-stream": "~2.3.6", - "set-immediate-shim": "~1.0.1" + "setimmediate": "^1.0.5" } }, "karma": { @@ -6460,7 +6752,6 @@ "version": "3.3.0", "resolved": "https://registry.npmjs.org/lie/-/lie-3.3.0.tgz", "integrity": "sha512-UaiMJzeWRlEujzAuw5LokY1L5ecNQYZKfmyZ9L7wDHb/p5etKaxXhohBcrw0EYby+G/NA52vRSN4N39dxHAIwQ==", - "dev": true, "requires": { "immediate": "~3.0.5" } @@ -7525,8 +7816,7 @@ "pako": { "version": "1.0.11", "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", - "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==", - "dev": true + "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==" }, "parallel-transform": { "version": "1.2.0", @@ -8277,8 +8567,7 @@ "reflect-metadata": { "version": "0.1.13", "resolved": "https://registry.npmjs.org/reflect-metadata/-/reflect-metadata-0.1.13.tgz", - "integrity": "sha512-Ts1Y/anZELhSsjMcU605fU9RE4Oi3p5ORujwbIKXfWa+0Zxs510Qrmrce5/Jowq3cHSZSJqBjypxmHarc+vEWg==", - "dev": true + "integrity": "sha512-Ts1Y/anZELhSsjMcU605fU9RE4Oi3p5ORujwbIKXfWa+0Zxs510Qrmrce5/Jowq3cHSZSJqBjypxmHarc+vEWg==" }, "regenerate": { "version": "1.4.0", @@ -8537,6 +8826,11 @@ "tslib": "^1.9.0" } }, + "rxjs-compat": { + "version": "6.6.7", + "resolved": "https://registry.npmjs.org/rxjs-compat/-/rxjs-compat-6.6.7.tgz", + "integrity": "sha512-szN4fK+TqBPOFBcBcsR0g2cmTTUF/vaFEOZNuSdfU8/pGFnNmmn2u8SystYXG1QMrjOPBc6XTKHMVfENDf6hHw==" + }, "safe-buffer": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", @@ -8778,12 +9072,6 @@ "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=" }, - "set-immediate-shim": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/set-immediate-shim/-/set-immediate-shim-1.0.1.tgz", - "integrity": "sha1-SysbJ+uAip+NzEgaWOXlb1mfP2E=", - "dev": true - }, "set-value": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz", @@ -8810,8 +9098,7 @@ "setimmediate": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", - "integrity": "sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU=", - "dev": true + "integrity": "sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU=" }, "setprototypeof": { "version": "1.1.1", diff --git a/admin/package.json b/admin/package.json index 1cf6dff9..464949f3 100644 --- a/admin/package.json +++ b/admin/package.json @@ -26,8 +26,10 @@ "@asymmetrik/ngx-leaflet-draw": "^4.0.0", "@ng-bootstrap/ng-bootstrap": "^4.0.0", "@ng-select/ng-select": "^2.12.1", + "@ngx-translate/core": "^11.0.1", + "@ngx-translate/http-loader": "^4.0.0", "@swimlane/ngx-datatable": "^14.0.0", - "@syncfusion/ej2-angular-richtexteditor": "^18.1.54", + "@syncfusion/ej2-angular-richtexteditor": "^18.4.49", "@types/jsts": "^0.17.12", "@types/lodash": "^4.14.118", "@types/moment": "^2.13.0", diff --git a/admin/src/app/add-photo/add-photo.component.html b/admin/src/app/add-photo/add-photo.component.html index 1705a63d..2c7ee13c 100644 --- a/admin/src/app/add-photo/add-photo.component.html +++ b/admin/src/app/add-photo/add-photo.component.html @@ -7,16 +7,15 @@