fix: non riuscivi ad acquistare i RIS al gruppo
- lista linkREG
4
.env
@@ -1,6 +1,6 @@
|
||||
VITE_APP_VERSION="1.2.28"
|
||||
VITE_APP_VERSION="1.2.29"
|
||||
VITE_LANG_DEFAULT="it"
|
||||
VITE_PAO_APP_ID="KKPPAA5KJK435J3KSS9F9D8S9F8SD98F9SDF"
|
||||
VITE_SERVICE_WORKER_FILE="sw-1.2.28.js"
|
||||
VITE_SERVICE_WORKER_FILE="sw-1.2.29.js"
|
||||
VITE_PROJECT_ID_MAIN="5cc0a13fe5c9d156728f400a"
|
||||
VITE_VUE_ROUTER_MODE="history"
|
||||
@@ -1,12 +1,13 @@
|
||||
VITE_APP_ID="16"
|
||||
VITE_APP_URL="https://localhost"
|
||||
VITE_MONGODB_HOST="https://localhost:3000"
|
||||
VITE_LOGO_REG='kolibrilab-logo-full.png'
|
||||
VITE_PUBLICKEY_PUSH='BDncvMiUZmjaCG2Kr1V9N0_33hOG-AuNSbHSvL24y2dzBiUjAxKm02emx5SeJvz2IGmtRf6YqCgopeQwCwUmZw8'
|
||||
VITE_PROJECT_ID_MAIN="5cc0a13fe5c9d156728f400a"
|
||||
VITE_VUE_APP_ISTEST="1"
|
||||
VITE_VUE_APP_INLOCALE="1"
|
||||
VITE_DEBUG="1"
|
||||
VITE_VUE_APP_ISTEST=0
|
||||
VITE_VUE_APP_INLOCALE=1
|
||||
DIRECTORY_LOCAL="newfreeplanet"
|
||||
DIRECTORY_SERVER="freeplanet_serverside"
|
||||
VITE_APP_ID="13"
|
||||
VITE_LOGO_REG='riso-logo-full.png'
|
||||
VITE_APP_URL="https://localhost"
|
||||
DIRECTORY_LOCAL=myprojplanet_vite
|
||||
DIRECTORY_SERVER=freeplanet_serverside
|
||||
SERVERDIR_WEBSITE=""
|
||||
SERVERPW_WEBSITE=""
|
||||
SERVERPW_WEBSITE=""
|
||||
@@ -1,11 +1,11 @@
|
||||
VITE_APP_ID="16"
|
||||
VITE_APP_URL="https://kolibrilab.it"
|
||||
VITE_MONGODB_HOST="https://www.freeplanet.app:3000"
|
||||
VITE_LOGO_REG='kolibrilab-logo-full.png'
|
||||
VITE_PUBLICKEY_PUSH="BNM-cEpTbPVc_ujXf3QOC8ggf7b-X44P44esfJUWqNOFq1XhWCoZJpOi71_cbXC5SnfO9HassQ6OouAYgtBA9Pw"
|
||||
VITE_DEBUG="0"
|
||||
VITE_VUE_APP_ISTEST=0
|
||||
DIRECTORY_LOCAL=newfreeplanet
|
||||
DIRECTORY_SERVER=freeplanet_serverside
|
||||
SERVERDIR_WEBSITE=kolibrilab.it
|
||||
SERVERPW_WEBSITE=pwdadmin@1AOK
|
||||
VITE_APP_ID="13"
|
||||
VITE_APP_URL="https://test.riso.app"
|
||||
VITE_MONGODB_HOST="https://testapi.riso.app"
|
||||
VITE_LOGO_REG="riso-logo-full.png"
|
||||
VITE_PUBLICKEY_PUSH="BGXRf1TgcqocqD6J7qnRgCG7AvM2lxAoW7peb7UEzB4SxBb6DxGRdJ0UvD9ewnrB9KrSrh0-aDCODXBm7sZ1DDs"
|
||||
VITE_DEBUG="1"
|
||||
VITE_VUE_APP_ISTEST="1"
|
||||
DIRECTORY_LOCAL="myprojplanet_vite"
|
||||
DIRECTORY_SERVER="/var/www/nodejs_test.riso_server"
|
||||
SERVERDIR_WEBSITE="/var/www/test.riso.app"
|
||||
SERVERPW_WEBSITE="pwdadmin@1AOK"
|
||||
@@ -10,7 +10,7 @@
|
||||
<meta name="description" content="<%= productDescription %>">
|
||||
<meta name="format-detection" content="telephone=no">
|
||||
<meta name="msapplication-tap-highlight" content="no">
|
||||
<meta name="version" content="1.2.28">
|
||||
<meta name="version" content="1.2.29">
|
||||
<meta name="viewport"
|
||||
content="user-scalable=no, initial-scale=1, maximum-scale=1, minimum-scale=1, width=device-width<% if (ctx.mode.cordova || ctx.mode.capacitor) { %>, viewport-fit=cover<% } %>">
|
||||
|
||||
|
||||
208
package.json
@@ -1,139 +1,143 @@
|
||||
{
|
||||
"name": "kolibrilab",
|
||||
"version": "0.5.3",
|
||||
"description": "kolibrilab",
|
||||
"productName": "kolibrilab",
|
||||
"author": "Surya Paolo",
|
||||
"name": "riso",
|
||||
"version": "1.2.29",
|
||||
"description": "Siamo la Rete Italiana di Scambio Orizzontale, abbiamo creato questa piattaforma per metterla al servizio di chi vuole riscoprire il valore della condivisione e della cooperazione. Valori semplici e profondi che ci aiutano a ritrovare il Senso della Vita, perduto in questa società consumista, e riporti quei Sani Pricìpi Naturali ed Umani di Fratellanza che intere popolazioni antiche conoscevano bene.",
|
||||
"productName": "Riso",
|
||||
"author": "Surya",
|
||||
"private": true,
|
||||
"keywords": [],
|
||||
"license": "MIT",
|
||||
"type": "module",
|
||||
"scripts": {
|
||||
"dev": "quasar dev",
|
||||
"dev": "APP_VERSION='1.2.29' PORT=8084 quasar dev",
|
||||
"dev_noCheck": "SKIP_TSC=true quasar dev",
|
||||
"build": "quasar build",
|
||||
"buildpwa": "NODE_ENV=production quasar build -m pwa",
|
||||
"buildpwa": "NODE_ENV=production APP_VERSION='1.2.29' quasar build -m pwa",
|
||||
"buildpwatest": "NODE_ENV=production APP_VERSION='1.2.29' quasar build -m pwa",
|
||||
"type-check": "vue-tsc --noEmit",
|
||||
"type-check:watch": "vue-tsc --noEmit --watch",
|
||||
"buildspa": "quasar build -m spa",
|
||||
"lint": "eslint --ext .js,.ts,.vue --ignore-path .gitignore ./",
|
||||
"lint": "eslint -c ./eslint.config.js \"./src*/**/*.{ts,js,cjs,mjs,vue}\"",
|
||||
"lintfile": "eslint --ext .js,.ts,.vue --ignore-path .gitignore ./ > file.out.txt",
|
||||
"lintfileNoJS": "eslint --ext .ts,.vue --ignore-path .gitignore ./ > file.out.txt",
|
||||
"fix": "eslint --ext .ts,.vue --ignore-path .gitignore ./ --fix > file.out.txt",
|
||||
"pwa": "NODE_ENV=development NODE_OPTIONS=--max_old_space_size=4096 DEBUG=v8:* quasar dev -m pwa",
|
||||
"spa": "NODE_ENV=development NODE_OPTIONS=--max_old_space_size=4096 DEBUG=v8:* quasar dev -m spa",
|
||||
"spanorefresh": "NODE_ENV=development NODE_OPTIONS=--max_old_space_size=4096 DEBUG=v8:* quasar dev -m spa",
|
||||
"fix": "eslint -c ./eslint.config.js \"./src*/**/*.{ts,js,cjs,mjs,vue}\" --ignore-pattern .gitignore ./ --fix > file.out.txt",
|
||||
"pwa": "NODE_ENV=development PORT=8094 APP_VERSION='1.2.29' quasar dev -m pwa",
|
||||
"spa": "NODE_ENV=development PORT=8084 APP_VERSION='1.2.29' quasar dev",
|
||||
"debug": "quasar dev --mode debug",
|
||||
"test": "echo \"No test specified\" && exit 0",
|
||||
"generate-sw": "workbox generateSW workbox-config.js"
|
||||
"generate-sw": "workbox generateSW workbox-config.js",
|
||||
"postinstall": "quasar prepare"
|
||||
},
|
||||
"dependencies": {
|
||||
"@quasar/extras": "^1.15.5",
|
||||
"@quasar/quasar-ui-qcalendar": "^4.0.0-beta.13",
|
||||
"@vue-leaflet/vue-leaflet": "^0.6.1",
|
||||
"@vue/compat": "^3.2.45",
|
||||
"@vue/compiler-sfc": "^3.2.45",
|
||||
"@vue/eslint-config-standard": "7.0.0",
|
||||
"@vuelidate/core": "^2.0.0",
|
||||
"@vuelidate/validators": "^2.0.0",
|
||||
"acorn": "^8.8.1",
|
||||
"@cubejs-client/core": "^1.2.26",
|
||||
"@quasar/extras": "^1.16.17",
|
||||
"@quasar/quasar-ui-qcalendar": "^4.1.2",
|
||||
"@types/jsbarcode": "^3.11.4",
|
||||
"@types/leaflet": "^1.9.17",
|
||||
"@vue/compat": "^3.5.13",
|
||||
"@vue/compiler-sfc": "^3.5.13",
|
||||
"@vuelidate/core": "^2.0.3",
|
||||
"@vuelidate/validators": "^2.0.4",
|
||||
"acorn": "^8.14.1",
|
||||
"animate.css": "^4.1.1",
|
||||
"autoprefixer": "^10.4.13",
|
||||
"axios": "^1.1.3",
|
||||
"bcryptjs": "^2.4.3",
|
||||
"chart.js": "^3.9.1",
|
||||
"core-js": "^3.26.0",
|
||||
"date-fns": "^2.29.3",
|
||||
"dotenv": "^16.0.3",
|
||||
"echarts": "^5.4.0",
|
||||
"eslint-plugin-quasar": "^1.1.1",
|
||||
"eslint-plugin-standard": "^5.0.0",
|
||||
"graphql": "^16.6.0",
|
||||
"autoprefixer": "^10.4.21",
|
||||
"axios": "^1.8.4",
|
||||
"bcryptjs": "^3.0.2",
|
||||
"chart.js": "^4.4.8",
|
||||
"core-js": "^3.41.0",
|
||||
"crypto-browserify": "^3.12.1",
|
||||
"date-fns": "^4.1.0",
|
||||
"echarts": "5.6.0",
|
||||
"eslint-plugin-n": "^17.16.2",
|
||||
"eslint-plugin-quasar": "^1.1.0",
|
||||
"graphql": "^16.10.0",
|
||||
"graphql-tag": "^2.12.6",
|
||||
"gsap": "^3.11.3",
|
||||
"jquery": "^3.6.1",
|
||||
"js-cookie": "^3.0.1",
|
||||
"gsap": "^3.12.7",
|
||||
"html2pdf.js": "^0.10.3",
|
||||
"jquery": "^3.7.1",
|
||||
"js-cookie": "^3.0.5",
|
||||
"jsbarcode": "^3.11.6",
|
||||
"leaflet": "^1.9.4",
|
||||
"leaflet-routing-machine": "^3.2.12",
|
||||
"leaflet.markercluster": "^1.5.3",
|
||||
"localforage": "^1.10.0",
|
||||
"lodash": "^4.17.21",
|
||||
"normalize.css": "^8.0.1",
|
||||
"npm": "^9.1.1",
|
||||
"nprogress": "^0.2.0",
|
||||
"pinia": "^2.0.23",
|
||||
"prerender-spa-plugin": "^3.4.0",
|
||||
"quasar": "^2.10.1",
|
||||
"pinia": "^3.0.1",
|
||||
"qrcode-vue3": "^1.7.1",
|
||||
"quasar": "^2.18.1",
|
||||
"quasar-extras": "^2.0.9",
|
||||
"register-service-worker": "^1.7.2",
|
||||
"vee-validate": "^4.7.2",
|
||||
"vue": "^3.2.45",
|
||||
"vue-chart-3": "^3.1.8",
|
||||
"scrollreveal": "^4.0.9",
|
||||
"typescript-eslint": "^8.27.0",
|
||||
"vee-validate": "^4.15.0",
|
||||
"vue": "^3.5.13",
|
||||
"vue-class-component": "^8.0.0-rc.1",
|
||||
"vue-country-code": "^1.1.3",
|
||||
"vue-echarts": "^6.2.3",
|
||||
"vue-i18n": "^9.2.2",
|
||||
"vue-echarts": "^7.0.3",
|
||||
"vue-i18n": "^11.1.2",
|
||||
"vue-idb": "^0.2.0",
|
||||
"vue-loader": "^17.0.1",
|
||||
"vue-image-zoomer": "^2.4.4",
|
||||
"vue-property-decorator": "^10.0.0-rc.3",
|
||||
"vue-router": "^4.1.6",
|
||||
"vue-scroll-reveal": "^1.0.11",
|
||||
"vue-router": "^4.5.0",
|
||||
"vue-scroll-reveal": "^2.1.0",
|
||||
"vue-social-sharing": "^4.0.0-alpha4",
|
||||
"vue-svgicon": "^4.0.0-alpha.3",
|
||||
"vue-timeago3": "^2.3.2",
|
||||
"vue2-dragula": "^2.5.5",
|
||||
"vue3-pdf-app": "^1.0.3",
|
||||
"vue3-qr-reader": "^1.0.0",
|
||||
"vuex": "^4.1.0",
|
||||
"vuex-router-sync": "^6.0.0-rc.1"
|
||||
"vuex-router-sync": "^6.0.0-rc.1",
|
||||
"workbox-core": "^7.3.0",
|
||||
"workbox-precaching": "^7.3.0",
|
||||
"workbox-routing": "^7.3.0",
|
||||
"workbox-strategies": "^7.3.0",
|
||||
"workbox-window": "^7.3.0"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@quasar/app": "^3.3.3",
|
||||
"@types/bcryptjs": "^2.4.2",
|
||||
"@types/dotenv": "^8.2.0",
|
||||
"@types/googlemaps": "^3.43.3",
|
||||
"@types/jest": "^29.2.2",
|
||||
"@types/js-cookie": "^3.0.2",
|
||||
"@types/node": "18.11.9",
|
||||
"@types/nprogress": "^0.2.0",
|
||||
"@types/vue-tel-input": "^2.1.2",
|
||||
"@types/vuelidate": "^0.7.15",
|
||||
"@typescript-eslint/eslint-plugin": "^5.42.1",
|
||||
"@typescript-eslint/parser": "^5.42.1",
|
||||
"eslint": "^8.27.0",
|
||||
"eslint-config-prettier": "^8.5.0",
|
||||
"eslint-plugin-import": "^2.26.0",
|
||||
"eslint-plugin-node": "^11.1.1",
|
||||
"eslint-plugin-promise": "^6.1.1",
|
||||
"eslint-plugin-vue": "^9.7.0",
|
||||
"@eslint/js": "^9.23.0",
|
||||
"@intlify/unplugin-vue-i18n": "^6.0.5",
|
||||
"@quasar/app-vite": "^2.1.4",
|
||||
"@types/google.maps": "^3.58.1",
|
||||
"@types/jest": "^29.5.14",
|
||||
"@types/js-cookie": "^3.0.6",
|
||||
"@types/node": "^22.13.11",
|
||||
"@types/nprogress": "^0.2.3",
|
||||
"@types/vue-tel-input": "^2.1.7",
|
||||
"@types/vuelidate": "^0.7.22",
|
||||
"@vue/devtools": "^7.7.2",
|
||||
"@vue/eslint-config-prettier": "^10.2.0",
|
||||
"@vue/eslint-config-typescript": "^14.5.0",
|
||||
"autoprefixer": "^10.4.21",
|
||||
"eslint": "9",
|
||||
"eslint-plugin-import": "^2.31.0",
|
||||
"eslint-plugin-vue": "^10.0.0",
|
||||
"file-loader": "^6.2.0",
|
||||
"html-webpack-plugin": "^5.5.0",
|
||||
"http-proxy-middleware": "^2.0.6",
|
||||
"jest": "^29.3.1",
|
||||
"globals": "^16.0.0",
|
||||
"http-proxy-middleware": "^3.0.3",
|
||||
"jest": "^29.7.0",
|
||||
"json-loader": "^0.5.7",
|
||||
"node-sass": "7.0.1",
|
||||
"npm-check-updates": "^16.3.25",
|
||||
"optimize-css-assets-webpack-plugin": "^6.0.1",
|
||||
"postcss": "^8.4.19",
|
||||
"postcss-loader": "^7.0.1",
|
||||
"sass-loader": "^13.2.0",
|
||||
"strip-ansi": "=7.0.1",
|
||||
"ts-jest": "^29.0.3",
|
||||
"ts-loader": "^9.4.1",
|
||||
"tslint": "^6.1.3",
|
||||
"tslint-config-standard": "^9.0.0",
|
||||
"tslint-loader": "^3.5.4",
|
||||
"typescript": "^4.8.4",
|
||||
"nodemon": "^3.1.9",
|
||||
"npm-check-updates": "^17.1.16",
|
||||
"parcel": "^2.14.1",
|
||||
"postcss": "^8.5.3",
|
||||
"postcss-loader": "^8.1.1",
|
||||
"prettier": "3",
|
||||
"strip-ansi": "=7.1.0",
|
||||
"ts-jest": "^29.2.6",
|
||||
"typescript": "5.7.3",
|
||||
"vite-plugin-checker": "^0.9.1",
|
||||
"vue-cli-plugin-element-ui": "^1.1.4",
|
||||
"vue-eslint-parser": "^10.1.1",
|
||||
"vue-tsc": "^2.2.8",
|
||||
"vueify": "^9.4.1",
|
||||
"webpack": "^5.75.0",
|
||||
"workbox-webpack-plugin": "^6.5.4"
|
||||
"workbox-build": "^7.3.0"
|
||||
},
|
||||
"browser": {
|
||||
"crypto": false
|
||||
},
|
||||
"browserslist": [
|
||||
"last 16 Chrome versions",
|
||||
"last 16 Firefox versions",
|
||||
"last 4 Edge versions",
|
||||
"last 13 Safari versions",
|
||||
"last 16 Android versions",
|
||||
"last 16 ChromeAndroid versions",
|
||||
"last 16 FirefoxAndroid versions",
|
||||
"last 12 iOS versions",
|
||||
"last 7 Opera versions"
|
||||
],
|
||||
"engines": {
|
||||
"node": ">= 16.14.0",
|
||||
"npm": ">= 6.14.8",
|
||||
"node": "^28 || ^26 || ^24 || ^22 || ^20 || ^18",
|
||||
"npm": ">= 6.13.4",
|
||||
"yarn": ">= 1.21.1"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
Before Width: | Height: | Size: 1.1 KiB After Width: | Height: | Size: 1.1 KiB |
BIN
public/images/1ris_rosso.png
Normal file
|
After Width: | Height: | Size: 133 KiB |
BIN
public/images/1ris_rosso_100.png
Normal file
|
After Width: | Height: | Size: 33 KiB |
BIN
public/images/all_together.jpg
Executable file
|
After Width: | Height: | Size: 211 KiB |
BIN
public/images/android-chrome-192x192.png
Normal file
|
After Width: | Height: | Size: 43 KiB |
195
public/images/avatar-1.svg
Executable file
@@ -0,0 +1,195 @@
|
||||
<?xml version="1.0" encoding="iso-8859-1"?>
|
||||
<!-- Generator: Adobe Illustrator 18.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
|
||||
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
|
||||
<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
|
||||
width="56px" height="56px"
|
||||
viewBox="0 0 188.148 188.148" style="enable-background:new 0 0 188.148 188.148;" xml:space="preserve">
|
||||
<g>
|
||||
<g>
|
||||
<defs>
|
||||
<circle id="SVGID_1_" cx="94.074" cy="94.074" r="94.074"/>
|
||||
</defs>
|
||||
<use xlink:href="#SVGID_1_" style="overflow:visible;fill:#EB6D4A;"/>
|
||||
<clipPath id="SVGID_2_">
|
||||
<use xlink:href="#SVGID_1_" style="overflow:visible;"/>
|
||||
</clipPath>
|
||||
<path style="clip-path:url(#SVGID_2_);fill:#ECC19C;" d="M135.938,52.784V84.05c0,0.453-0.011,0.905-0.021,1.357
|
||||
c-0.02,0.936-0.072,1.871-0.154,2.796c-0.02,0.319-0.052,0.637-0.093,0.956c-0.134,1.326-0.318,2.632-0.555,3.928
|
||||
c-0.083,0.432-0.165,0.853-0.258,1.275c-0.01,0.092-0.03,0.175-0.051,0.257c-0.083,0.432-0.186,0.854-0.288,1.275
|
||||
c-0.041,0.226-0.103,0.452-0.154,0.679c-0.052,0.195-0.103,0.391-0.164,0.586c-0.217,0.843-0.463,1.666-0.721,2.488
|
||||
c-0.123,0.391-0.246,0.771-0.38,1.162c-0.011,0.041-0.031,0.082-0.041,0.123c-0.124,0.349-0.247,0.699-0.37,1.048
|
||||
c-0.041,0.103-0.082,0.205-0.124,0.319c-0.123,0.329-0.246,0.658-0.38,0.987c-0.154,0.401-0.318,0.792-0.483,1.183
|
||||
c-0.144,0.35-0.298,0.699-0.452,1.049c-0.02,0.062-0.052,0.113-0.072,0.174c-0.175,0.37-0.339,0.741-0.514,1.1
|
||||
c-0.175,0.38-0.36,0.761-0.556,1.142c-0.37,0.75-0.771,1.501-1.172,2.231c-0.185,0.329-0.37,0.658-0.556,0.987
|
||||
c-1.583,2.725-3.341,5.285-5.253,7.649c-0.258,0.339-0.524,0.668-0.802,0.987c-0.381,0.462-0.772,0.915-1.162,1.357
|
||||
c-0.35,0.391-0.699,0.781-1.059,1.162c-0.987,1.059-1.995,2.067-3.023,3.013c-0.205,0.206-0.422,0.391-0.638,0.586
|
||||
c-0.349,0.319-0.698,0.627-1.059,0.925c-0.277,0.247-0.565,0.483-0.854,0.72c-0.74,0.606-1.48,1.192-2.23,1.737
|
||||
c-0.309,0.237-0.628,0.463-0.946,0.679c-0.514,0.37-1.038,0.72-1.563,1.059c-0.288,0.195-0.586,0.38-0.885,0.555
|
||||
c-1.049,0.648-2.107,1.244-3.156,1.758c-0.257,0.133-0.514,0.257-0.771,0.38c-0.258,0.123-0.524,0.247-0.802,0.37
|
||||
c-0.34,0.154-0.679,0.298-1.018,0.432c-0.134,0.062-0.268,0.113-0.401,0.154c-0.4,0.165-0.812,0.319-1.213,0.452
|
||||
c-0.504,0.185-1.018,0.339-1.521,0.483c-0.35,0.103-0.709,0.195-1.059,0.277c-0.021,0.011-0.041,0.021-0.072,0.021
|
||||
c-0.35,0.082-0.699,0.165-1.049,0.226c-0.093,0.021-0.184,0.041-0.277,0.051c-0.288,0.051-0.576,0.103-0.864,0.134
|
||||
c-0.411,0.062-0.822,0.113-1.233,0.134c-0.143,0.02-0.277,0.031-0.422,0.031c-0.328,0.021-0.657,0.031-0.977,0.031h-0.03
|
||||
c-0.319,0-0.638-0.01-0.956-0.031c-0.124,0-0.247-0.01-0.371-0.031c-0.287-0.01-0.586-0.042-0.894-0.083
|
||||
c-0.062,0-0.134-0.01-0.195-0.02c-0.381-0.051-0.761-0.113-1.152-0.185c-0.328-0.051-0.657-0.124-0.997-0.206
|
||||
c-1.758-0.401-3.567-1.007-5.397-1.82c-1.563-0.689-3.146-1.521-4.719-2.488c-0.792-0.483-1.584-0.997-2.365-1.542
|
||||
c-0.391-0.278-0.781-0.555-1.172-0.843c-1.224-0.895-2.437-1.871-3.63-2.92c-0.328-0.298-0.657-0.596-0.986-0.905
|
||||
c-0.329-0.298-0.658-0.606-0.977-0.904c-0.803-0.771-1.584-1.573-2.345-2.406c-0.298-0.318-0.596-0.647-0.895-0.987
|
||||
c-0.822-0.925-1.624-1.881-2.385-2.879c-0.299-0.36-0.576-0.73-0.854-1.1c-1.038-1.377-2.025-2.817-2.951-4.308
|
||||
c-0.246-0.401-0.493-0.813-0.729-1.213c-0.288-0.483-0.565-0.976-0.843-1.47c-1.028-1.851-1.975-3.773-2.797-5.758
|
||||
c-0.123-0.288-0.247-0.576-0.35-0.863c-0.165-0.37-0.309-0.751-0.442-1.121c-0.205-0.545-0.4-1.09-0.586-1.635
|
||||
c-0.185-0.545-0.359-1.1-0.534-1.655c-0.165-0.535-0.319-1.069-0.463-1.614c-0.165-0.576-0.318-1.162-0.452-1.758
|
||||
c-0.011-0.062-0.031-0.123-0.041-0.185c-0.195-0.822-0.37-1.655-0.524-2.498c-0.206-1.111-0.37-2.242-0.494-3.383
|
||||
c-0.051-0.36-0.082-0.72-0.113-1.08c-0.041-0.38-0.071-0.751-0.092-1.131c-0.052-0.689-0.083-1.388-0.104-2.087
|
||||
c-0.01-0.453-0.021-0.905-0.021-1.357V52.784c0-23.102,18.723-41.834,41.825-41.855h0.041c3.188,0,6.292,0.359,9.273,1.028
|
||||
c2.725,0.617,5.347,1.501,7.835,2.622c3.393,1.522,6.549,3.475,9.387,5.809c2.385,1.954,4.555,4.154,6.446,6.58
|
||||
C132.607,34.083,135.938,43.038,135.938,52.784z"/>
|
||||
<path style="clip-path:url(#SVGID_2_);fill:#ECC19C;" d="M148.613,200.741v0.01H39.538v-0.01c0-6.158,1.018-12.091,2.91-17.612
|
||||
c0.339-0.997,0.709-1.984,1.11-2.961v-0.01c0.4-0.977,0.822-1.933,1.274-2.879c1.8-3.794,4.041-7.341,6.642-10.59
|
||||
c0.658-0.812,1.326-1.604,2.016-2.365c0.339-0.391,0.699-0.771,1.059-1.151c0.36-0.37,0.72-0.74,1.09-1.11
|
||||
c1.841-1.84,3.814-3.526,5.892-5.079c1.038-0.771,2.087-1.491,3.177-2.19c1.09-0.689,2.2-1.347,3.331-1.964
|
||||
c0.021-0.02,0.041-0.02,0.041-0.02c0.442-0.236,0.874-0.493,1.306-0.761c0.854-0.514,1.696-1.069,2.499-1.665
|
||||
c0.411-0.288,0.802-0.586,1.192-0.905c0.925-0.74,1.819-1.532,2.673-2.365c0.277-0.277,0.556-0.555,0.833-0.843
|
||||
c0.575-0.597,1.12-1.224,1.645-1.861c0.258-0.308,0.515-0.627,0.751-0.946c0.247-0.318,0.483-0.647,0.72-0.977
|
||||
c1.83-2.55,3.3-5.356,4.38-8.349c1.306-3.64,2.015-7.557,2.015-11.649l7.948,0.041l8.173,0.041c0,4.04,0.689,7.916,1.964,11.515
|
||||
c1.06,3.002,2.529,5.809,4.329,8.359c1.871,2.652,4.102,5.017,6.631,7.042c0.381,0.309,0.761,0.607,1.142,0.884
|
||||
c0.37,0.278,0.75,0.545,1.141,0.802c0.083,0.062,0.154,0.113,0.237,0.165c0.37,0.247,0.74,0.494,1.131,0.72
|
||||
c0.421,0.257,0.854,0.514,1.285,0.751c0.071,0.02,0.134,0.051,0.185,0.093c0.905,0.504,1.8,1.028,2.674,1.573
|
||||
c0.421,0.257,0.843,0.524,1.254,0.823c0.854,0.555,1.687,1.141,2.498,1.758c0,0.011,0.011,0.011,0.011,0.011h0.01
|
||||
c2.077,1.552,4.041,3.248,5.881,5.079C142.496,172.015,148.613,185.648,148.613,200.741z"/>
|
||||
<path style="clip-path:url(#SVGID_2_);fill:#C7D4E2;" d="M148.614,200.743H39.539c0-6.159,1.019-12.091,2.91-17.612
|
||||
c0.339-0.998,0.709-1.984,1.11-2.961c-0.011-0.011,0-0.011,0-0.011c0.391-0.977,0.822-1.933,1.274-2.878
|
||||
c1.8-3.794,4.041-7.341,6.642-10.59c0.658-0.813,1.327-1.604,2.016-2.365c0.339-0.391,0.699-0.771,1.059-1.151
|
||||
c0.36-0.37,0.72-0.74,1.09-1.11c1.841-1.84,3.814-3.527,5.892-5.079c1.038-0.771,2.087-1.491,3.177-2.19
|
||||
c1.09-0.699,2.2-1.357,3.331-1.974c0.021-0.02,0.041-0.01,0.041-0.01v-0.01c0.442-0.247,0.874-0.494,1.306-0.751
|
||||
c1.285-0.781,2.52-1.645,3.671-2.591c0.01,0.01,0.01,0.01,0.021,0.02c5.325,5.449,12.738,8.831,20.964,8.852h0.082
|
||||
c8.225,0,15.669-3.393,21.015-8.842l0.011-0.01c0.729,0.606,1.49,1.172,2.272,1.696c0.082,0.061,0.154,0.113,0.236,0.164
|
||||
c0.37,0.247,0.75,0.483,1.131,0.72c0.422,0.257,0.854,0.504,1.285,0.74c0.072,0.02,0.123,0.061,0.185,0.092
|
||||
c0.905,0.504,1.8,1.028,2.674,1.583c0.421,0.257,0.843,0.524,1.254,0.823c0.854,0.545,1.687,1.141,2.498,1.758h0.021
|
||||
c2.088,1.563,4.051,3.259,5.881,5.089C142.497,172.017,148.614,185.65,148.614,200.743z"/>
|
||||
<path style="clip-path:url(#SVGID_2_);fill:#543E36;" d="M135.938,84.05c0,0.453-0.011,0.905-0.021,1.357
|
||||
c-0.02,0.936-0.072,1.871-0.154,2.796c-0.02,0.319-0.052,0.637-0.093,0.956c-0.134,1.326-0.318,2.632-0.555,3.928
|
||||
c-0.083,0.432-0.165,0.853-0.258,1.275c-0.01,0.092-0.03,0.175-0.051,0.257c-0.083,0.432-0.186,0.854-0.288,1.275
|
||||
c-0.052,0.247-0.113,0.483-0.186,0.72c-0.03,0.185-0.082,0.37-0.133,0.545c-0.217,0.843-0.463,1.666-0.721,2.488
|
||||
c-0.123,0.391-0.246,0.771-0.38,1.162c-0.011,0.041-0.031,0.082-0.041,0.123c-0.124,0.349-0.247,0.699-0.37,1.048
|
||||
c-0.041,0.103-0.082,0.205-0.124,0.319c-0.123,0.329-0.246,0.658-0.38,0.987c-0.154,0.401-0.318,0.792-0.483,1.183
|
||||
c-0.144,0.35-0.298,0.699-0.452,1.049c-0.02,0.062-0.052,0.113-0.072,0.174c-0.175,0.37-0.339,0.741-0.514,1.1
|
||||
c-0.175,0.38-0.36,0.761-0.556,1.142c-0.37,0.75-0.771,1.501-1.172,2.231c-0.185,0.329-0.37,0.658-0.556,0.987
|
||||
c-1.583,2.725-3.341,5.285-5.253,7.649c-0.258,0.339-0.524,0.668-0.802,0.987c-0.381,0.462-0.772,0.915-1.162,1.357
|
||||
c-0.35,0.391-0.699,0.781-1.059,1.162c-0.987,1.059-1.995,2.067-3.023,3.013c-0.205,0.206-0.422,0.391-0.638,0.586
|
||||
c-0.349,0.319-0.698,0.627-1.059,0.925c-0.277,0.247-0.565,0.483-0.854,0.72c-0.74,0.606-1.48,1.192-2.23,1.737
|
||||
c-0.309,0.237-0.628,0.463-0.946,0.679c-0.514,0.37-1.038,0.72-1.563,1.059c-0.288,0.195-0.586,0.38-0.885,0.555
|
||||
c-1.049,0.648-2.107,1.244-3.156,1.758c-0.257,0.133-0.514,0.257-0.771,0.38c-0.258,0.123-0.524,0.247-0.802,0.37
|
||||
c-0.34,0.154-0.679,0.298-1.018,0.432c-0.134,0.062-0.268,0.113-0.401,0.154c-0.4,0.165-0.812,0.319-1.213,0.452
|
||||
c-0.504,0.185-1.018,0.339-1.521,0.483c-0.35,0.103-0.709,0.195-1.059,0.277c-0.021,0.011-0.041,0.021-0.072,0.021
|
||||
c-0.35,0.082-0.699,0.165-1.049,0.226c-0.093,0.021-0.184,0.041-0.277,0.051c-0.288,0.051-0.576,0.103-0.864,0.134
|
||||
c-0.411,0.062-0.822,0.113-1.233,0.134c-0.143,0.02-0.277,0.031-0.422,0.031c-0.328,0.021-0.657,0.031-0.977,0.031h-0.03
|
||||
c-0.319,0-0.638-0.01-0.956-0.031c-0.124,0-0.247-0.01-0.371-0.031c-0.287-0.01-0.586-0.042-0.894-0.083
|
||||
c-0.062,0-0.134-0.01-0.195-0.02c-0.381-0.051-0.761-0.113-1.152-0.185c-0.328-0.051-0.657-0.124-0.997-0.206
|
||||
c-1.758-0.401-3.567-1.007-5.397-1.82c-1.563-0.689-3.146-1.521-4.719-2.488c-0.792-0.473-1.573-0.987-2.365-1.542
|
||||
c-0.391-0.278-0.781-0.555-1.172-0.843c-1.224-0.895-2.437-1.871-3.63-2.92c-0.328-0.298-0.657-0.596-0.986-0.905
|
||||
c-0.329-0.298-0.658-0.606-0.977-0.904c-0.803-0.771-1.584-1.573-2.345-2.406c-0.298-0.318-0.596-0.647-0.895-0.987
|
||||
c-0.822-0.925-1.624-1.881-2.385-2.879c-0.299-0.36-0.576-0.73-0.854-1.1c-1.038-1.377-2.025-2.817-2.951-4.308
|
||||
c-0.246-0.401-0.493-0.813-0.729-1.213c-0.288-0.483-0.565-0.976-0.843-1.47c-1.028-1.851-1.975-3.773-2.797-5.758
|
||||
c-0.123-0.288-0.247-0.576-0.35-0.863c-0.165-0.37-0.309-0.751-0.442-1.121c-0.205-0.545-0.4-1.09-0.586-1.635
|
||||
c-0.185-0.545-0.359-1.1-0.534-1.655c-0.165-0.535-0.319-1.069-0.463-1.614c-0.165-0.576-0.318-1.162-0.452-1.758
|
||||
c-0.011-0.062-0.031-0.123-0.041-0.185c-0.195-0.822-0.37-1.655-0.524-2.498c-0.206-1.111-0.37-2.242-0.494-3.383
|
||||
c-0.051-0.36-0.082-0.72-0.113-1.08c-0.041-0.38-0.071-0.751-0.092-1.131c-0.052-0.689-0.083-1.388-0.104-2.087
|
||||
c-0.01-0.453-0.021-0.905-0.021-1.357l6.684,13.14l11.484,5.007l13.581,1.224l10.076,0.915h0.062l9.428,0.854l21.005,1.892
|
||||
L135.938,84.05z"/>
|
||||
<path style="clip-path:url(#SVGID_2_);fill:#543E36;" d="M127.023,26.968c-2.046,4.637-4.709,8.945-7.855,12.852
|
||||
c-0.185,0.227-0.37,0.453-0.565,0.679c-6.446,7.762-14.897,13.798-24.562,17.324c-2.54,0.936-5.161,1.696-7.855,2.262
|
||||
c-1.799,0.38-3.629,0.679-5.49,0.895c-2.139,0.236-4.318,0.36-6.528,0.36c-2.529,0-5.007-0.165-7.443-0.483
|
||||
c-2.386-0.298-4.72-0.74-7.002-1.336c-1.306-0.329-2.581-0.709-3.846-1.131c-1.244-0.411-2.457-0.864-3.66-1.357v-4.246
|
||||
c0-23.102,18.723-41.834,41.825-41.855h0.041c3.188,0,6.292,0.359,9.273,1.028c2.725,0.617,5.347,1.501,7.835,2.622
|
||||
c3.393,1.522,6.549,3.475,9.387,5.809C122.962,22.341,125.132,24.542,127.023,26.968z"/>
|
||||
<path style="clip-path:url(#SVGID_2_);fill:#543E36;" d="M135.938,52.784v8.235c-7.136-5.521-13.047-12.502-17.314-20.48
|
||||
c-0.01-0.01-0.01-0.031-0.021-0.041c-4.194-7.834-6.796-16.625-7.412-25.92c3.393,1.522,6.549,3.475,9.387,5.809
|
||||
c2.385,1.954,4.555,4.154,6.446,6.58C132.607,34.083,135.938,43.038,135.938,52.784z"/>
|
||||
<path style="clip-path:url(#SVGID_2_);fill:#543E36;" d="M57.12,56.013c-0.441,0.771-0.843,1.563-1.244,2.375
|
||||
c-0.153,0.318-0.308,0.658-0.462,0.987c-2.025,4.503-3.044,8.924-3.188,12.914c0,0.113-0.011,0.236-0.011,0.35V56.517
|
||||
c0-0.576,0.021-1.142,0.021-1.697C53.861,55.242,55.485,55.653,57.12,56.013z"/>
|
||||
<path style="clip-path:url(#SVGID_2_);fill:#543E36;" d="M131.054,56.013c0.622,1.093,1.177,2.213,1.71,3.361
|
||||
c2.088,4.643,3.11,9.178,3.198,13.268V56.512c0-0.567-0.021-1.134-0.021-1.688C134.318,55.243,132.697,55.648,131.054,56.013z"/>
|
||||
<path style="clip-path:url(#SVGID_2_);fill:#1A1A1A;" d="M130.972,60.167c0-0.175-0.134-0.329-0.309-0.35
|
||||
c-1.48-0.226-8.143-1.142-15.309-1.142c-8.133,0-18.63,2.55-20.46,2.55H93.27c-0.854,0-3.588-0.555-7.084-1.141
|
||||
c-4.02-0.679-9.037-1.409-13.376-1.409c-5.243,0-10.22,0.494-13.088,0.843c-1.049,0.124-1.82,0.236-2.221,0.298
|
||||
c-0.175,0.021-0.309,0.175-0.309,0.35l-0.082,4.369c0,0.154,0.093,0.288,0.236,0.35l0.493,0.175
|
||||
c0.73,0.278,0.669,13.448,4.596,16.738c2.334,1.943,4.411,3.053,13.16,3.053c5.069,0,8.256-1.367,11.279-5.449
|
||||
c2.18-2.93,4.112-9.86,4.112-9.86c0.586-2.858,2.714-3.084,3.054-3.105c0.021,0,0.041,0,0.041,0c0.071,0,2.468,0.041,3.095,3.105
|
||||
c0,0,1.933,6.93,4.112,9.86c3.022,4.082,6.21,5.449,11.278,5.449c8.75,0,10.826-1.11,13.16-3.053
|
||||
c3.928-3.29,3.866-16.46,4.596-16.738l0.494-0.175c0.143-0.062,0.236-0.195,0.236-0.35L130.972,60.167z M86.875,75.753
|
||||
c-1.285,3.043-4.606,6.971-9.284,7.207c-14.034,0.709-14.682-3.208-15.587-6.313c-0.915-3.105-1.151-5.83-0.792-8.935
|
||||
c0.37-3.105,1.152-4.925,2.561-5.84c0.606-0.401,1.265-0.761,2.951-1.018c1.511-0.226,3.845-0.36,7.731-0.36
|
||||
c2.251,0,4.359,0.175,6.24,0.483c4.997,0.802,8.369,2.499,8.369,4.174C89.064,66.294,88.776,71.249,86.875,75.753z
|
||||
M126.159,76.647c-0.904,3.105-1.552,7.022-15.586,6.313c-4.678-0.236-7.999-4.164-9.284-7.207
|
||||
c-1.902-4.503-2.189-9.459-2.189-10.6c0-2.303,6.395-4.658,14.609-4.658c8.215,0,9.53,0.617,10.683,1.378
|
||||
c1.408,0.915,2.189,2.735,2.56,5.84C127.312,70.818,127.075,73.543,126.159,76.647z"/>
|
||||
<g style="clip-path:url(#SVGID_2_);">
|
||||
<path style="fill:#543E36;" d="M94.123,90.65l-0.011,10.138l-0.01,3.547v2.786l-0.011,9.253v0.01l-0.01-0.01h-0.011l-0.03-0.021
|
||||
L53.604,95.771c-0.011-0.062-0.031-0.123-0.041-0.185c-0.195-0.822-0.37-1.655-0.524-2.498c-0.206-1.111-0.37-2.242-0.494-3.383
|
||||
c-0.051-0.36-0.082-0.72-0.113-1.08c-0.041-0.38-0.071-0.751-0.092-1.131c-0.052-0.689-0.083-1.388-0.104-2.087
|
||||
c-0.01-0.453-0.021-0.905-0.021-1.357V71.764c0,0.175,0.011,0.35,0.011,0.524c0.082,2.971,0.555,6.241,1.47,9.582
|
||||
c0.71,2.57,1.594,4.945,2.622,7.063v0.01c2.694,5.604,6.303,9.407,9.623,10.024c0.206,0.031,0.422,0.051,0.628,0.072
|
||||
c1.285,0.144,2.632,0.226,4.02,0.226c5.243,0,9.901-4.215,12.831-5.922c0.021-0.01,0.041-0.021,0.062-0.031
|
||||
c0.154-0.093,0.309-0.185,0.442-0.278c0.041-0.031,0.082-0.051,0.123-0.072c2.468-1.409,6.025-2.303,9.994-2.313H94.123z"/>
|
||||
<path style="fill:#543E36;" d="M135.947,71.764l-0.01,12.286c0,3.085-0.288,6.107-0.822,9.038
|
||||
c-0.217,1.172-0.463,2.333-0.751,3.485l-9.49,13.705l-30.782,6.097h-0.01l-0.011,0.01v-0.01l-0.03-25.727h0.082
|
||||
c3.969,0.01,7.536,0.905,10.004,2.313c0.041,0.021,0.071,0.041,0.113,0.072c0.144,0.093,0.298,0.185,0.452,0.278
|
||||
c0.01,0.01,0.03,0.021,0.051,0.031c2.941,1.707,7.588,5.925,12.832,5.925c1.388,0,2.734-0.082,4.019-0.226
|
||||
c0.216-0.021,0.422-0.041,0.638-0.072c3.311-0.617,6.93-4.421,9.613-10.024v-0.01c1.027-2.118,1.912-4.493,2.621-7.063
|
||||
c0.926-3.393,1.409-6.703,1.471-9.716C135.947,72.021,135.947,71.897,135.947,71.764z"/>
|
||||
</g>
|
||||
<ellipse style="clip-path:url(#SVGID_2_);fill:#ECC19C;" cx="94.074" cy="103.955" rx="10.255" ry="3.17"/>
|
||||
<g style="clip-path:url(#SVGID_2_);">
|
||||
<path style="fill:#435363;" d="M64.131,155.174v56.558h-4.369v-53.37c0.586-0.473,1.172-0.936,1.769-1.378
|
||||
C62.384,156.347,63.247,155.75,64.131,155.174z"/>
|
||||
<polygon style="fill:#435363;" points="124.021,155.185 124.021,200.741 124.021,211.732 128.39,211.732 128.39,200.741
|
||||
128.39,158.372 "/>
|
||||
</g>
|
||||
<g style="clip-path:url(#SVGID_2_);">
|
||||
<g>
|
||||
<polygon style="fill:#141720;" points="82.113,151.713 94.074,166.049 106.036,151.713 "/>
|
||||
<path style="fill:#141720;" d="M94.074,225.437h-7.073l5.11-65.8c0.215,0.837,3.712,0.837,3.927,0l5.11,65.8H94.074z"/>
|
||||
</g>
|
||||
<g>
|
||||
<path style="fill:#E7ECF2;" d="M94.07,151.638l-0.03,0.051l-0.011,0.021l-4.966,8.338l-4.637,7.772l-12.554-17.447
|
||||
c0.401-0.288,0.802-0.596,1.183-0.915c0.01,0.01,0.01,0.01,0.021,0.021c2.518-2.005,4.76-4.359,6.621-6.991l14.343,9.13
|
||||
L94.07,151.638z"/>
|
||||
<path style="fill:#E7ECF2;" d="M116.278,150.373l-12.554,17.447l-4.637-7.772l-4.977-8.338l-0.041-0.072l14.436-9.191
|
||||
c1.871,2.652,4.102,5.017,6.631,7.042C115.518,149.797,115.897,150.096,116.278,150.373z"/>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
<g>
|
||||
</g>
|
||||
<g>
|
||||
</g>
|
||||
<g>
|
||||
</g>
|
||||
<g>
|
||||
</g>
|
||||
<g>
|
||||
</g>
|
||||
<g>
|
||||
</g>
|
||||
<g>
|
||||
</g>
|
||||
<g>
|
||||
</g>
|
||||
<g>
|
||||
</g>
|
||||
<g>
|
||||
</g>
|
||||
<g>
|
||||
</g>
|
||||
<g>
|
||||
</g>
|
||||
<g>
|
||||
</g>
|
||||
<g>
|
||||
</g>
|
||||
<g>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 16 KiB |
BIN
public/images/badge-96x96.png
Normal file
|
After Width: | Height: | Size: 27 KiB |
BIN
public/images/calendario_eventi.jpg
Executable file
|
After Width: | Height: | Size: 63 KiB |
BIN
public/images/cibo_sano.jpg
Executable file
|
After Width: | Height: | Size: 231 KiB |
BIN
public/images/cover.jpg
Executable file
|
After Width: | Height: | Size: 225 KiB |
BIN
public/images/de.png
Executable file
|
After Width: | Height: | Size: 107 B |
BIN
public/images/es.png
Executable file
|
After Width: | Height: | Size: 1.8 KiB |
BIN
public/images/gb.png
Executable file
|
After Width: | Height: | Size: 597 B |
BIN
public/images/group-together.jpg
Executable file
|
After Width: | Height: | Size: 21 KiB |
BIN
public/images/hand_people.jpg
Executable file
|
After Width: | Height: | Size: 180 KiB |
BIN
public/images/icon.png
Normal file
|
After Width: | Height: | Size: 10 KiB |
BIN
public/images/imglogonotif.png
Normal file
|
After Width: | Height: | Size: 43 KiB |
BIN
public/images/install_app_on_android_1.jpg
Normal file
|
After Width: | Height: | Size: 30 KiB |
BIN
public/images/install_app_on_android_2.jpg
Normal file
|
After Width: | Height: | Size: 38 KiB |
BIN
public/images/install_app_on_android_3.jpg
Normal file
|
After Width: | Height: | Size: 32 KiB |
BIN
public/images/install_app_on_ios_1.png
Normal file
|
After Width: | Height: | Size: 110 KiB |
BIN
public/images/install_app_on_ios_1b.jpg
Normal file
|
After Width: | Height: | Size: 14 KiB |
BIN
public/images/install_app_on_ios_2.jpg
Normal file
|
After Width: | Height: | Size: 32 KiB |
BIN
public/images/it.png
Executable file
|
After Width: | Height: | Size: 179 B |
BIN
public/images/landing_first_section.png
Executable file
|
After Width: | Height: | Size: 68 KiB |
BIN
public/images/layers-2x.png
Normal file
|
After Width: | Height: | Size: 1.2 KiB |
BIN
public/images/layers.png
Normal file
|
After Width: | Height: | Size: 696 B |
BIN
public/images/marker-icon-2x.png
Normal file
|
After Width: | Height: | Size: 2.4 KiB |
BIN
public/images/marker-icon.png
Normal file
|
After Width: | Height: | Size: 1.4 KiB |
BIN
public/images/marker-shadow.png
Normal file
|
After Width: | Height: | Size: 618 B |
BIN
public/images/mountains.jpg
Executable file
|
After Width: | Height: | Size: 154 KiB |
BIN
public/images/noimg-user.jpg
Normal file
|
After Width: | Height: | Size: 16 KiB |
1
public/images/noimg-user.svg
Normal file
@@ -0,0 +1 @@
|
||||
<svg id="457bf273-24a3-4fd8-a857-e9b918267d6a" data-name="Layer 1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="698" height="698" viewBox="0 0 698 698"><defs><linearGradient id="b247946c-c62f-4d08-994a-4c3d64e1e98f" x1="349" y1="698" x2="349" gradientUnits="userSpaceOnUse"><stop offset="0" stop-color="gray" stop-opacity="0.25"/><stop offset="0.54" stop-color="gray" stop-opacity="0.12"/><stop offset="1" stop-color="gray" stop-opacity="0.1"/></linearGradient></defs><title>profile pic</title><g opacity="0.5"><circle cx="349" cy="349" r="349" fill="url(#b247946c-c62f-4d08-994a-4c3d64e1e98f)"/></g><circle cx="349.68" cy="346.77" r="341.64" fill="#f5f5f5"/><path d="M601,790.76a340,340,0,0,0,187.79-56.2c-12.59-68.8-60.5-72.72-60.5-72.72H464.09s-45.21,3.71-59.33,67A340.07,340.07,0,0,0,601,790.76Z" transform="translate(-251 -101)" fill="#536dfe"/><circle cx="346.37" cy="339.57" r="164.9" fill="#333"/><path d="M293.15,476.92H398.81a0,0,0,0,1,0,0v84.53A52.83,52.83,0,0,1,346,614.28h0a52.83,52.83,0,0,1-52.83-52.83V476.92a0,0,0,0,1,0,0Z" opacity="0.1"/><path d="M296.5,473h99a3.35,3.35,0,0,1,3.35,3.35v81.18A52.83,52.83,0,0,1,346,610.37h0a52.83,52.83,0,0,1-52.83-52.83V476.35A3.35,3.35,0,0,1,296.5,473Z" fill="#fdb797"/><path d="M544.34,617.82a152.07,152.07,0,0,0,105.66.29v-13H544.34Z" transform="translate(-251 -101)" opacity="0.1"/><circle cx="346.37" cy="372.44" r="151.45" fill="#fdb797"/><path d="M489.49,335.68S553.32,465.24,733.37,390l-41.92-65.73-74.31-26.67Z" transform="translate(-251 -101)" opacity="0.1"/><path d="M489.49,333.78s63.83,129.56,243.88,54.3l-41.92-65.73-74.31-26.67Z" transform="translate(-251 -101)" fill="#333"/><path d="M488.93,325a87.49,87.49,0,0,1,21.69-35.27c29.79-29.45,78.63-35.66,103.68-69.24,6,9.32,1.36,23.65-9,27.65,24-.16,51.81-2.26,65.38-22a44.89,44.89,0,0,1-7.57,47.4c21.27,1,44,15.4,45.34,36.65.92,14.16-8,27.56-19.59,35.68s-25.71,11.85-39.56,14.9C608.86,369.7,462.54,407.07,488.93,325Z" transform="translate(-251 -101)" fill="#333"/><ellipse cx="194.86" cy="372.3" rx="14.09" ry="26.42" fill="#fdb797"/><ellipse cx="497.8" cy="372.3" rx="14.09" ry="26.42" fill="#fdb797"/></svg>
|
||||
|
After Width: | Height: | Size: 2.1 KiB |
BIN
public/images/noimg.png
Normal file
|
After Width: | Height: | Size: 14 KiB |
BIN
public/images/opz1-icon-96x96.jpg
Executable file
|
After Width: | Height: | Size: 35 KiB |
BIN
public/images/opz2-icon-96x96.jpg
Executable file
|
After Width: | Height: | Size: 35 KiB |
BIN
public/images/paypal.jpg
Executable file
|
After Width: | Height: | Size: 6.9 KiB |
BIN
public/images/regalo.jpg
Executable file
|
After Width: | Height: | Size: 35 KiB |
BIN
public/images/revolut.jpg
Executable file
|
After Width: | Height: | Size: 6.1 KiB |
BIN
public/images/riso-android-icon-144x144.png
Normal file
|
After Width: | Height: | Size: 30 KiB |
BIN
public/images/riso-android-icon-192x192.png
Normal file
|
After Width: | Height: | Size: 43 KiB |
BIN
public/images/riso-android-icon-384x384.png
Normal file
|
After Width: | Height: | Size: 138 KiB |
BIN
public/images/riso-android-icon-48x48.png
Normal file
|
After Width: | Height: | Size: 5.8 KiB |
BIN
public/images/riso-android-icon-512x512.png
Normal file
|
After Width: | Height: | Size: 185 KiB |
BIN
public/images/riso-android-icon-96x96.png
Normal file
|
After Width: | Height: | Size: 17 KiB |
BIN
public/images/riso-apple-icon-114x114.png
Normal file
|
After Width: | Height: | Size: 21 KiB |
BIN
public/images/riso-apple-icon-120x120.png
Normal file
|
After Width: | Height: | Size: 23 KiB |
BIN
public/images/riso-apple-icon-144x144.png
Normal file
|
After Width: | Height: | Size: 30 KiB |
BIN
public/images/riso-apple-icon-152x152.png
Normal file
|
After Width: | Height: | Size: 33 KiB |
BIN
public/images/riso-apple-icon-180x180.png
Normal file
|
After Width: | Height: | Size: 42 KiB |
BIN
public/images/riso-apple-icon-57x57.png
Normal file
|
After Width: | Height: | Size: 7.6 KiB |
BIN
public/images/riso-apple-icon-60x60.png
Normal file
|
After Width: | Height: | Size: 8.1 KiB |
BIN
public/images/riso-apple-icon-72x72.png
Normal file
|
After Width: | Height: | Size: 11 KiB |
BIN
public/images/riso-apple-icon-76x76.png
Normal file
|
After Width: | Height: | Size: 12 KiB |
BIN
public/images/riso-apple-icon.png
Normal file
|
After Width: | Height: | Size: 44 KiB |
BIN
public/images/riso-logo-full.png
Normal file
|
After Width: | Height: | Size: 424 KiB |
BIN
public/images/riso_home.png
Normal file
|
After Width: | Height: | Size: 279 KiB |
BIN
public/images/riso_home_dark.png
Normal file
|
After Width: | Height: | Size: 258 KiB |
BIN
public/images/riso_services.png
Normal file
|
After Width: | Height: | Size: 124 KiB |
457
public/js/fetch.js
Executable file
@@ -0,0 +1,457 @@
|
||||
(function (self) {
|
||||
if (self.fetch) {
|
||||
return
|
||||
}
|
||||
|
||||
const support = {
|
||||
searchParams: 'URLSearchParams' in self,
|
||||
iterable: 'Symbol' in self && 'iterator' in Symbol,
|
||||
blob: 'FileReader' in self && 'Blob' in self && (function () {
|
||||
try {
|
||||
new Blob()
|
||||
return true
|
||||
} catch (e) {
|
||||
return false
|
||||
}
|
||||
}()),
|
||||
formData: 'FormData' in self,
|
||||
arrayBuffer: 'ArrayBuffer' in self,
|
||||
}
|
||||
|
||||
if (support.arrayBuffer) {
|
||||
const viewClasses = [
|
||||
'[object Int8Array]',
|
||||
'[object Uint8Array]',
|
||||
'[object Uint8ClampedArray]',
|
||||
'[object Int16Array]',
|
||||
'[object Uint16Array]',
|
||||
'[object Int32Array]',
|
||||
'[object Uint32Array]',
|
||||
'[object Float32Array]',
|
||||
'[object Float64Array]',
|
||||
]
|
||||
|
||||
var isDataView = function (obj) {
|
||||
return obj && DataView.prototype.isPrototypeOf(obj)
|
||||
}
|
||||
|
||||
var isArrayBufferView = ArrayBuffer.isView || function (obj) {
|
||||
return obj && viewClasses.indexOf(Object.prototype.toString.call(obj)) > -1
|
||||
}
|
||||
}
|
||||
|
||||
function normalizeName(name) {
|
||||
if (typeof name !== 'string') {
|
||||
name = String(name)
|
||||
}
|
||||
if (/[^a-z0-9\-#$%&'*+.\^_`|~]/i.test(name)) {
|
||||
throw new TypeError('Invalid character in header field nametranslate')
|
||||
}
|
||||
return name.toLowerCase()
|
||||
}
|
||||
|
||||
function normalizeValue(value) {
|
||||
if (typeof value !== 'string') {
|
||||
value = String(value)
|
||||
}
|
||||
return value
|
||||
}
|
||||
|
||||
// Build a destructive iterator for the value list
|
||||
function iteratorFor(items) {
|
||||
const iterator = {
|
||||
next() {
|
||||
const value = items.shift()
|
||||
return { done: value === undefined, value }
|
||||
},
|
||||
}
|
||||
|
||||
if (support.iterable) {
|
||||
iterator[Symbol.iterator] = function () {
|
||||
return iterator
|
||||
}
|
||||
}
|
||||
|
||||
return iterator
|
||||
}
|
||||
|
||||
function Headers(headers) {
|
||||
this.map = {}
|
||||
|
||||
if (headers instanceof Headers) {
|
||||
headers.forEach(function (value, name) {
|
||||
this.append(name, value)
|
||||
}, this)
|
||||
} else if (Array.isArray(headers)) {
|
||||
headers.forEach(function (header) {
|
||||
this.append(header[0], header[1])
|
||||
}, this)
|
||||
} else if (headers) {
|
||||
Object.getOwnPropertyNames(headers).forEach(function (name) {
|
||||
this.append(name, headers[name])
|
||||
}, this)
|
||||
}
|
||||
}
|
||||
|
||||
Headers.prototype.append = function (name, value) {
|
||||
name = normalizeName(name)
|
||||
value = normalizeValue(value)
|
||||
const oldValue = this.map[name]
|
||||
this.map[name] = oldValue ? `${oldValue},${value}` : value
|
||||
}
|
||||
|
||||
Headers.prototype.delete = function (name) {
|
||||
delete this.map[normalizeName(name)]
|
||||
}
|
||||
|
||||
Headers.prototype.get = function (name) {
|
||||
name = normalizeName(name)
|
||||
return this.has(name) ? this.map[name] : null
|
||||
}
|
||||
|
||||
Headers.prototype.has = function (name) {
|
||||
return this.map.hasOwnProperty(normalizeName(name))
|
||||
}
|
||||
|
||||
Headers.prototype.set = function (name, value) {
|
||||
this.map[normalizeName(name)] = normalizeValue(value)
|
||||
}
|
||||
|
||||
Headers.prototype.forEach = function (callback, thisArg) {
|
||||
for (const name in this.map) {
|
||||
if (this.map.hasOwnProperty(name)) {
|
||||
callback.call(thisArg, this.map[name], name, this)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Headers.prototype.keys = function () {
|
||||
const items = []
|
||||
this.forEach((value, name) => { items.push(name) })
|
||||
return iteratorFor(items)
|
||||
}
|
||||
|
||||
Headers.prototype.values = function () {
|
||||
const items = []
|
||||
this.forEach((value) => { items.push(value) })
|
||||
return iteratorFor(items)
|
||||
}
|
||||
|
||||
Headers.prototype.entries = function () {
|
||||
const items = []
|
||||
this.forEach((value, name) => { items.push([name, value]) })
|
||||
return iteratorFor(items)
|
||||
}
|
||||
|
||||
if (support.iterable) {
|
||||
Headers.prototype[Symbol.iterator] = Headers.prototype.entries
|
||||
}
|
||||
|
||||
function consumed(body) {
|
||||
if (body.bodyUsed) {
|
||||
return Promise.reject(new TypeError('Already read'))
|
||||
}
|
||||
body.bodyUsed = true
|
||||
}
|
||||
|
||||
function fileReaderReady(reader) {
|
||||
return new Promise((resolve, reject) => {
|
||||
reader.onload = function () {
|
||||
resolve(reader.result)
|
||||
}
|
||||
reader.onerror = function () {
|
||||
reject(reader.error)
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
function readBlobAsArrayBuffer(blob) {
|
||||
const reader = new FileReader()
|
||||
const promise = fileReaderReady(reader)
|
||||
reader.readAsArrayBuffer(blob)
|
||||
return promise
|
||||
}
|
||||
|
||||
function readBlobAsText(blob) {
|
||||
const reader = new FileReader()
|
||||
const promise = fileReaderReady(reader)
|
||||
reader.readAsText(blob)
|
||||
return promise
|
||||
}
|
||||
|
||||
function readArrayBufferAsText(buf) {
|
||||
const view = new Uint8Array(buf)
|
||||
const chars = new Array(view.length)
|
||||
|
||||
for (let i = 0; i < view.length; i++) {
|
||||
chars[i] = String.fromCharCode(view[i])
|
||||
}
|
||||
return chars.join('')
|
||||
}
|
||||
|
||||
function bufferClone(buf) {
|
||||
if (buf.slice) {
|
||||
return buf.slice(0)
|
||||
}
|
||||
const view = new Uint8Array(buf.byteLength)
|
||||
view.set(new Uint8Array(buf))
|
||||
return view.buffer
|
||||
}
|
||||
|
||||
function Body() {
|
||||
this.bodyUsed = false
|
||||
|
||||
this._initBody = function (body) {
|
||||
this._bodyInit = body
|
||||
if (!body) {
|
||||
this._bodyText = ''
|
||||
} else if (typeof body === 'string') {
|
||||
this._bodyText = body
|
||||
} else if (support.blob && Blob.prototype.isPrototypeOf(body)) {
|
||||
this._bodyBlob = body
|
||||
} else if (support.formData && FormData.prototype.isPrototypeOf(body)) {
|
||||
this._bodyFormData = body
|
||||
} else if (support.searchParams && URLSearchParams.prototype.isPrototypeOf(body)) {
|
||||
this._bodyText = body.toString()
|
||||
} else if (support.arrayBuffer && support.blob && isDataView(body)) {
|
||||
this._bodyArrayBuffer = bufferClone(body.buffer)
|
||||
// IE 10-11 can't handle a DataView body.
|
||||
this._bodyInit = new Blob([this._bodyArrayBuffer])
|
||||
} else if (support.arrayBuffer && (ArrayBuffer.prototype.isPrototypeOf(body) || isArrayBufferView(body))) {
|
||||
this._bodyArrayBuffer = bufferClone(body)
|
||||
} else {
|
||||
throw new Error('unsupported BodyInit type')
|
||||
}
|
||||
|
||||
if (!this.headers.get('content-type')) {
|
||||
if (typeof body === 'string') {
|
||||
this.headers.set('content-type', 'text/plain;charset=UTF-8')
|
||||
} else if (this._bodyBlob && this._bodyBlob.type) {
|
||||
this.headers.set('content-type', this._bodyBlob.type)
|
||||
} else if (support.searchParams && URLSearchParams.prototype.isPrototypeOf(body)) {
|
||||
this.headers.set('content-type', 'application/x-www-form-urlencoded;charset=UTF-8')
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (support.blob) {
|
||||
this.blob = function () {
|
||||
const rejected = consumed(this)
|
||||
if (rejected) {
|
||||
return rejected
|
||||
}
|
||||
|
||||
if (this._bodyBlob) {
|
||||
return Promise.resolve(this._bodyBlob)
|
||||
} if (this._bodyArrayBuffer) {
|
||||
return Promise.resolve(new Blob([this._bodyArrayBuffer]))
|
||||
} if (this._bodyFormData) {
|
||||
throw new Error('could not read FormData body as blob')
|
||||
} else {
|
||||
return Promise.resolve(new Blob([this._bodyText]))
|
||||
}
|
||||
}
|
||||
|
||||
this.arrayBuffer = function () {
|
||||
if (this._bodyArrayBuffer) {
|
||||
return consumed(this) || Promise.resolve(this._bodyArrayBuffer)
|
||||
}
|
||||
return this.blob().then(readBlobAsArrayBuffer)
|
||||
}
|
||||
}
|
||||
|
||||
this.text = function () {
|
||||
const rejected = consumed(this)
|
||||
if (rejected) {
|
||||
return rejected
|
||||
}
|
||||
|
||||
if (this._bodyBlob) {
|
||||
return readBlobAsText(this._bodyBlob)
|
||||
} if (this._bodyArrayBuffer) {
|
||||
return Promise.resolve(readArrayBufferAsText(this._bodyArrayBuffer))
|
||||
} if (this._bodyFormData) {
|
||||
throw new Error('could not read FormData body as text')
|
||||
} else {
|
||||
return Promise.resolve(this._bodyText)
|
||||
}
|
||||
}
|
||||
|
||||
if (support.formData) {
|
||||
this.formData = function () {
|
||||
return this.text().then(decode)
|
||||
}
|
||||
}
|
||||
|
||||
this.json = function () {
|
||||
return this.text().then(JSON.parse)
|
||||
}
|
||||
|
||||
return this
|
||||
}
|
||||
|
||||
// HTTP methods whose capitalization should be normalized
|
||||
const methods = ['DELETE', 'GET', 'HEAD', 'OPTIONS', 'POST', 'PUT']
|
||||
|
||||
function normalizeMethod(method) {
|
||||
const upcased = method.toUpperCase()
|
||||
return (methods.indexOf(upcased) > -1) ? upcased : method
|
||||
}
|
||||
|
||||
function Request(input, options) {
|
||||
options = options || {}
|
||||
let { body } = options
|
||||
|
||||
if (input instanceof Request) {
|
||||
if (input.bodyUsed) {
|
||||
throw new TypeError('Already read')
|
||||
}
|
||||
this.url = input.url
|
||||
this.credentials = input.credentials
|
||||
if (!options.headers) {
|
||||
this.headers = new Headers(input.headers)
|
||||
}
|
||||
this.method = input.method
|
||||
this.mode = input.mode
|
||||
if (!body && input._bodyInit != null) {
|
||||
body = input._bodyInit
|
||||
input.bodyUsed = true
|
||||
}
|
||||
} else {
|
||||
this.url = String(input)
|
||||
}
|
||||
|
||||
this.credentials = options.credentials || this.credentials || 'omit'
|
||||
if (options.headers || !this.headers) {
|
||||
this.headers = new Headers(options.headers)
|
||||
}
|
||||
this.method = normalizeMethod(options.method || this.method || 'GET')
|
||||
this.mode = options.mode || this.mode || null
|
||||
this.referrer = null
|
||||
|
||||
if ((this.method === 'GET' || this.method === 'HEAD') && body) {
|
||||
throw new TypeError('Body not allowed for GET or HEAD requests')
|
||||
}
|
||||
this._initBody(body)
|
||||
}
|
||||
|
||||
Request.prototype.clone = function () {
|
||||
return new Request(this, { body: this._bodyInit })
|
||||
}
|
||||
|
||||
function decode(body) {
|
||||
const form = new FormData()
|
||||
body.trim().split('&').forEach((bytes) => {
|
||||
if (bytes) {
|
||||
const split = bytes.split('=')
|
||||
const name = split.shift().replace(/\+/g, ' ')
|
||||
const value = split.join('=').replace(/\+/g, ' ')
|
||||
form.append(decodeURIComponent(name), decodeURIComponent(value))
|
||||
}
|
||||
})
|
||||
return form
|
||||
}
|
||||
|
||||
function parseHeaders(rawHeaders) {
|
||||
const headers = new Headers()
|
||||
rawHeaders.split(/\r?\n/).forEach((line) => {
|
||||
const parts = line.split(':')
|
||||
const key = parts.shift().trim()
|
||||
if (key) {
|
||||
const value = parts.join(':').trim()
|
||||
headers.append(key, value)
|
||||
}
|
||||
})
|
||||
return headers
|
||||
}
|
||||
|
||||
Body.call(Request.prototype)
|
||||
|
||||
function Response(bodyInit, options) {
|
||||
if (!options) {
|
||||
options = {}
|
||||
}
|
||||
|
||||
this.type = 'default'
|
||||
this.status = 'status' in options ? options.status : 200
|
||||
this.ok = this.status >= 200 && this.status < 300
|
||||
this.statusText = 'statusText' in options ? options.statusText : 'OK'
|
||||
this.headers = new Headers(options.headers)
|
||||
this.url = options.url || ''
|
||||
this._initBody(bodyInit)
|
||||
}
|
||||
|
||||
Body.call(Response.prototype)
|
||||
|
||||
Response.prototype.clone = function () {
|
||||
return new Response(this._bodyInit, {
|
||||
status: this.status,
|
||||
statusText: this.statusText,
|
||||
headers: new Headers(this.headers),
|
||||
url: this.url,
|
||||
})
|
||||
}
|
||||
|
||||
Response.error = function () {
|
||||
const response = new Response(null, { status: 0, statusText: '' })
|
||||
response.type = 'error'
|
||||
return response
|
||||
}
|
||||
|
||||
const redirectStatuses = [301, 302, 303, 307, 308]
|
||||
|
||||
Response.redirect = function (url, status) {
|
||||
if (redirectStatuses.indexOf(status) === -1) {
|
||||
throw new RangeError('Invalid status code')
|
||||
}
|
||||
|
||||
return new Response(null, { status, headers: { location: url } })
|
||||
}
|
||||
|
||||
self.Headers = Headers
|
||||
self.Request = Request
|
||||
self.Response = Response
|
||||
|
||||
self.fetch = function (input, init) {
|
||||
return new Promise((resolve, reject) => {
|
||||
const request = new Request(input, init)
|
||||
const xhr = new XMLHttpRequest()
|
||||
|
||||
xhr.onload = function () {
|
||||
const options = {
|
||||
status: xhr.status,
|
||||
statusText: xhr.statusText,
|
||||
headers: parseHeaders(xhr.getAllResponseHeaders() || ''),
|
||||
}
|
||||
options.url = 'responseURL' in xhr ? xhr.responseURL : options.headers.get('X-Request-URL')
|
||||
const body = 'response' in xhr ? xhr.response : xhr.responseText
|
||||
resolve(new Response(body, options))
|
||||
}
|
||||
|
||||
xhr.onerror = function () {
|
||||
reject(new TypeError('Network request failed'))
|
||||
}
|
||||
|
||||
xhr.ontimeout = function () {
|
||||
reject(new TypeError('Network request failed'))
|
||||
}
|
||||
|
||||
xhr.open(request.method, request.url, true)
|
||||
|
||||
if (request.credentials === 'include') {
|
||||
xhr.withCredentials = true
|
||||
}
|
||||
|
||||
if ('responseType' in xhr && support.blob) {
|
||||
xhr.responseType = 'blob'
|
||||
}
|
||||
|
||||
request.headers.forEach((value, name) => {
|
||||
xhr.setRequestHeader(name, value)
|
||||
})
|
||||
|
||||
xhr.send(typeof request._bodyInit === 'undefined' ? null : request._bodyInit)
|
||||
})
|
||||
}
|
||||
self.fetch.polyfill = true
|
||||
}(typeof self !== 'undefined' ? self : this));
|
||||
25
public/js/globalenv.js
Executable file
@@ -0,0 +1,25 @@
|
||||
// importScripts('/public/js/immortal-db.min.js');
|
||||
|
||||
/*
|
||||
const cfgenv = {
|
||||
website: 'http://localhost:8081',
|
||||
serverweb: 'http://localhost:3000',
|
||||
dbname: 'mydb3',
|
||||
dbversion: 10,
|
||||
}
|
||||
*/
|
||||
|
||||
/*
|
||||
async function clearAllDataImmortal(table) {
|
||||
console.log('clearAllDataImmortal', table)
|
||||
const db = ImmortalDB.ImmortalDB
|
||||
await db.remove(table)
|
||||
}
|
||||
|
||||
async function writeDataImmortal(table, datavalue) {
|
||||
console.log('writeDataImmortal', table, datavalue)
|
||||
const db = ImmortalDB.ImmortalDB
|
||||
await db.set(table, datavalue)
|
||||
}
|
||||
|
||||
*/
|
||||
307
public/js/idb.js
Executable file
@@ -0,0 +1,307 @@
|
||||
(function () {
|
||||
// console.log('LOADING IDB.JS .....')
|
||||
function toArray(arr) {
|
||||
return Array.prototype.slice.call(arr);
|
||||
}
|
||||
|
||||
function promisifyRequest(request) {
|
||||
return new Promise((resolve, reject) => {
|
||||
request.onsuccess = function () {
|
||||
resolve(request.result);
|
||||
};
|
||||
|
||||
request.onerror = function () {
|
||||
reject(request.error);
|
||||
};
|
||||
});
|
||||
}
|
||||
|
||||
function promisifyRequestCall(obj, method, args) {
|
||||
let request;
|
||||
const p = new Promise((resolve, reject) => {
|
||||
request = obj[method].apply(obj, args);
|
||||
promisifyRequest(request).then(resolve, reject);
|
||||
});
|
||||
|
||||
p.request = request;
|
||||
return p;
|
||||
}
|
||||
|
||||
function promisifyCursorRequestCall(obj, method, args) {
|
||||
const p = promisifyRequestCall(obj, method, args);
|
||||
return p.then((value) => {
|
||||
if (!value) return;
|
||||
return new Cursor(value, p.request);
|
||||
});
|
||||
}
|
||||
|
||||
function proxyProperties(ProxyClass, targetProp, properties) {
|
||||
properties.forEach((prop) => {
|
||||
Object.defineProperty(ProxyClass.prototype, prop, {
|
||||
get() {
|
||||
return this[targetProp][prop];
|
||||
},
|
||||
set(val) {
|
||||
this[targetProp][prop] = val;
|
||||
},
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
function proxyRequestMethods(ProxyClass, targetProp, Constructor, properties) {
|
||||
properties.forEach((prop) => {
|
||||
if (!(prop in Constructor.prototype)) return;
|
||||
ProxyClass.prototype[prop] = function () {
|
||||
return promisifyRequestCall(this[targetProp], prop, arguments);
|
||||
};
|
||||
});
|
||||
}
|
||||
|
||||
function proxyMethods(ProxyClass, targetProp, Constructor, properties) {
|
||||
properties.forEach((prop) => {
|
||||
if (!(prop in Constructor.prototype)) return;
|
||||
ProxyClass.prototype[prop] = function () {
|
||||
return this[targetProp][prop].apply(this[targetProp], arguments);
|
||||
};
|
||||
});
|
||||
}
|
||||
|
||||
function proxyCursorRequestMethods(ProxyClass, targetProp, Constructor, properties) {
|
||||
properties.forEach((prop) => {
|
||||
if (!(prop in Constructor.prototype)) return;
|
||||
ProxyClass.prototype[prop] = function () {
|
||||
return promisifyCursorRequestCall(this[targetProp], prop, arguments);
|
||||
};
|
||||
});
|
||||
}
|
||||
|
||||
function Index(index) {
|
||||
this._index = index;
|
||||
}
|
||||
|
||||
proxyProperties(Index, '_index', [
|
||||
'name',
|
||||
'keyPath',
|
||||
'multiEntry',
|
||||
'unique',
|
||||
]);
|
||||
|
||||
proxyRequestMethods(Index, '_index', IDBIndex, [
|
||||
'get',
|
||||
'getKey',
|
||||
'getAll',
|
||||
'getAllKeys',
|
||||
'count',
|
||||
]);
|
||||
|
||||
proxyCursorRequestMethods(Index, '_index', IDBIndex, [
|
||||
'openCursor',
|
||||
'openKeyCursor',
|
||||
]);
|
||||
|
||||
function Cursor(cursor, request) {
|
||||
this._cursor = cursor;
|
||||
this._request = request;
|
||||
}
|
||||
|
||||
proxyProperties(Cursor, '_cursor', [
|
||||
'direction',
|
||||
'key',
|
||||
'primaryKey',
|
||||
'value',
|
||||
]);
|
||||
|
||||
proxyRequestMethods(Cursor, '_cursor', IDBCursor, [
|
||||
'update',
|
||||
'delete',
|
||||
]);
|
||||
|
||||
// proxy 'next' methods
|
||||
['advance', 'continue', 'continuePrimaryKey'].forEach((methodName) => {
|
||||
if (!(methodName in IDBCursor.prototype)) return;
|
||||
Cursor.prototype[methodName] = function () {
|
||||
const cursor = this;
|
||||
const args = arguments;
|
||||
return Promise.resolve().then(() => {
|
||||
cursor._cursor[methodName].apply(cursor._cursor, args);
|
||||
return promisifyRequest(cursor._request).then((value) => {
|
||||
if (!value) return;
|
||||
return new Cursor(value, cursor._request);
|
||||
});
|
||||
});
|
||||
};
|
||||
});
|
||||
|
||||
function ObjectStore(store) {
|
||||
this._store = store;
|
||||
}
|
||||
|
||||
ObjectStore.prototype.createIndex = function () {
|
||||
return new Index(this._store.createIndex.apply(this._store, arguments));
|
||||
};
|
||||
|
||||
ObjectStore.prototype.index = function () {
|
||||
return new Index(this._store.index.apply(this._store, arguments));
|
||||
};
|
||||
|
||||
proxyProperties(ObjectStore, '_store', [
|
||||
'name',
|
||||
'keyPath',
|
||||
'indexNames',
|
||||
'autoIncrement',
|
||||
]);
|
||||
|
||||
proxyRequestMethods(ObjectStore, '_store', IDBObjectStore, [
|
||||
'put',
|
||||
'add',
|
||||
'delete',
|
||||
'clear',
|
||||
'get',
|
||||
'getAll',
|
||||
'getKey',
|
||||
'getAllKeys',
|
||||
'count',
|
||||
]);
|
||||
|
||||
proxyCursorRequestMethods(ObjectStore, '_store', IDBObjectStore, [
|
||||
'openCursor',
|
||||
'openKeyCursor',
|
||||
]);
|
||||
|
||||
proxyMethods(ObjectStore, '_store', IDBObjectStore, [
|
||||
'deleteIndex',
|
||||
]);
|
||||
|
||||
function Transaction(idbTransaction) {
|
||||
this._tx = idbTransaction;
|
||||
this.complete = new Promise((resolve, reject) => {
|
||||
idbTransaction.oncomplete = function () {
|
||||
resolve();
|
||||
};
|
||||
idbTransaction.onerror = function () {
|
||||
reject(idbTransaction.error);
|
||||
};
|
||||
idbTransaction.onabort = function () {
|
||||
reject(idbTransaction.error);
|
||||
};
|
||||
});
|
||||
}
|
||||
|
||||
Transaction.prototype.objectStore = function () {
|
||||
return new ObjectStore(this._tx.objectStore.apply(this._tx, arguments));
|
||||
};
|
||||
|
||||
proxyProperties(Transaction, '_tx', [
|
||||
'objectStoreNames',
|
||||
'mode',
|
||||
]);
|
||||
|
||||
proxyMethods(Transaction, '_tx', IDBTransaction, [
|
||||
'abort',
|
||||
]);
|
||||
|
||||
function UpgradeDB(db, oldVersion, transaction) {
|
||||
this._db = db;
|
||||
this.oldVersion = oldVersion;
|
||||
this.transaction = new Transaction(transaction);
|
||||
}
|
||||
|
||||
UpgradeDB.prototype.createObjectStore = function () {
|
||||
return new ObjectStore(this._db.createObjectStore.apply(this._db, arguments));
|
||||
};
|
||||
|
||||
proxyProperties(UpgradeDB, '_db', [
|
||||
'name',
|
||||
'version',
|
||||
'objectStoreNames',
|
||||
]);
|
||||
|
||||
proxyMethods(UpgradeDB, '_db', IDBDatabase, [
|
||||
'deleteObjectStore',
|
||||
'close',
|
||||
]);
|
||||
|
||||
function DB(db) {
|
||||
this._db = db;
|
||||
}
|
||||
|
||||
DB.prototype.transaction = function () {
|
||||
return new Transaction(this._db.transaction.apply(this._db, arguments));
|
||||
};
|
||||
|
||||
proxyProperties(DB, '_db', [
|
||||
'name',
|
||||
'version',
|
||||
'objectStoreNames',
|
||||
]);
|
||||
|
||||
proxyMethods(DB, '_db', IDBDatabase, [
|
||||
'close',
|
||||
]);
|
||||
|
||||
// Add cursor iterators
|
||||
// TODO: remove this once browsers do the right thing with promises
|
||||
['openCursor', 'openKeyCursor'].forEach((funcName) => {
|
||||
[ObjectStore, Index].forEach((Constructor) => {
|
||||
Constructor.prototype[funcName.replace('open', 'iterate')] = function () {
|
||||
const args = toArray(arguments);
|
||||
const callback = args[args.length - 1];
|
||||
const nativeObject = this._store || this._index;
|
||||
const request = nativeObject[funcName].apply(nativeObject, args.slice(0, -1));
|
||||
request.onsuccess = function () {
|
||||
callback(request.result);
|
||||
};
|
||||
};
|
||||
});
|
||||
});
|
||||
|
||||
// polyfill getAll
|
||||
[Index, ObjectStore].forEach((Constructor) => {
|
||||
if (Constructor.prototype.getAll) return;
|
||||
Constructor.prototype.getAll = function (query, count) {
|
||||
const instance = this;
|
||||
const items = [];
|
||||
|
||||
return new Promise((resolve) => {
|
||||
instance.iterateCursor(query, (cursor) => {
|
||||
if (!cursor) {
|
||||
resolve(items);
|
||||
return;
|
||||
}
|
||||
items.push(cursor.value);
|
||||
|
||||
if (!!count && items.length == count) {
|
||||
resolve(items);
|
||||
return;
|
||||
}
|
||||
cursor.continue();
|
||||
});
|
||||
});
|
||||
};
|
||||
});
|
||||
|
||||
const exp = {
|
||||
open(name, version, upgradeCallback) {
|
||||
const p = promisifyRequestCall(indexedDB, 'open', [name, version]);
|
||||
const { request } = p;
|
||||
|
||||
request.onupgradeneeded = function (event) {
|
||||
if (upgradeCallback) {
|
||||
upgradeCallback(new UpgradeDB(request.result, event.oldVersion, request.transaction));
|
||||
}
|
||||
};
|
||||
|
||||
return p.then((db) => new DB(db));
|
||||
},
|
||||
delete(name) {
|
||||
return promisifyRequestCall(indexedDB, 'deleteDatabase', [name]);
|
||||
},
|
||||
};
|
||||
|
||||
if (typeof module !== 'undefined') {
|
||||
module.exports = exp;
|
||||
module.exports.default = module.exports;
|
||||
} else {
|
||||
self.idb = exp;
|
||||
}
|
||||
}());
|
||||
10
public/js/material.min.js
vendored
Executable file
368
public/js/promise.js
Executable file
@@ -0,0 +1,368 @@
|
||||
/**
|
||||
* setImmediate polyfill v1.0.1, supports IE9+
|
||||
* © 2014–2015 Dmitry Korobkin
|
||||
* Released under the MIT license
|
||||
* github.com/Octane/setImmediate
|
||||
*/
|
||||
window.setImmediate || (function () {
|
||||
let uid = 0;
|
||||
const storage = {};
|
||||
let firstCall = true;
|
||||
const { slice } = Array.prototype;
|
||||
const message = 'setImmediatePolyfillMessage';
|
||||
|
||||
function fastApply(args) {
|
||||
const func = args[0];
|
||||
switch (args.length) {
|
||||
case 1:
|
||||
return func();
|
||||
case 2:
|
||||
return func(args[1]);
|
||||
case 3:
|
||||
return func(args[1], args[2]);
|
||||
}
|
||||
return func.apply(window, slice.call(args, 1));
|
||||
}
|
||||
|
||||
function callback(event) {
|
||||
const key = event.data;
|
||||
let data;
|
||||
if (typeof key === 'string' && key.indexOf(message) == 0) {
|
||||
data = storage[key];
|
||||
if (data) {
|
||||
delete storage[key];
|
||||
fastApply(data);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
window.setImmediate = function setImmediate() {
|
||||
const id = uid++;
|
||||
const key = message + id;
|
||||
let i = arguments.length;
|
||||
const args = new Array(i);
|
||||
while (i--) {
|
||||
args[i] = arguments[i];
|
||||
}
|
||||
storage[key] = args;
|
||||
if (firstCall) {
|
||||
firstCall = false;
|
||||
window.addEventListener('message', callback);
|
||||
}
|
||||
window.postMessage(key, '*');
|
||||
return id;
|
||||
};
|
||||
|
||||
window.clearImmediate = function clearImmediate(id) {
|
||||
delete storage[message + id];
|
||||
};
|
||||
}());
|
||||
|
||||
/**
|
||||
* Promise polyfill v1.0.10
|
||||
* requires setImmediate
|
||||
*
|
||||
* © 2014–2015 Dmitry Korobkin
|
||||
* Released under the MIT license
|
||||
* github.com/Octane/Promise
|
||||
*/
|
||||
(function (global) {
|
||||
const STATUS = '[[PromiseStatus]]';
|
||||
const VALUE = '[[PromiseValue]]';
|
||||
const ON_FUlFILLED = '[[OnFulfilled]]';
|
||||
const ON_REJECTED = '[[OnRejected]]';
|
||||
const ORIGINAL_ERROR = '[[OriginalError]]';
|
||||
const PENDING = 'pending';
|
||||
const INTERNAL_PENDING = 'internal pending';
|
||||
const FULFILLED = 'fulfilled';
|
||||
const REJECTED = 'rejected';
|
||||
const NOT_ARRAY = 'not an array.';
|
||||
const REQUIRES_NEW = 'constructor Promise requires "new".';
|
||||
const CHAINING_CYCLE = 'then() cannot return same Promise that it resolves.';
|
||||
|
||||
const setImmediate = global.setImmediate || require('timers').setImmediate;
|
||||
const isArray = Array.isArray || function (anything) {
|
||||
return Object.prototype.toString.call(anything) == '[object Array]';
|
||||
};
|
||||
|
||||
function InternalError(originalError) {
|
||||
this[ORIGINAL_ERROR] = originalError;
|
||||
}
|
||||
|
||||
function isInternalError(anything) {
|
||||
return anything instanceof InternalError;
|
||||
}
|
||||
|
||||
function isObject(anything) {
|
||||
// Object.create(null) instanceof Object → false
|
||||
return Object(anything) === anything;
|
||||
}
|
||||
|
||||
function isCallable(anything) {
|
||||
return typeof anything === 'function';
|
||||
}
|
||||
|
||||
function isPromise(anything) {
|
||||
return anything instanceof Promise;
|
||||
}
|
||||
|
||||
function identity(value) {
|
||||
return value;
|
||||
}
|
||||
|
||||
function thrower(reason) {
|
||||
throw reason;
|
||||
}
|
||||
|
||||
function enqueue(promise, onFulfilled, onRejected) {
|
||||
if (!promise[ON_FUlFILLED]) {
|
||||
promise[ON_FUlFILLED] = [];
|
||||
promise[ON_REJECTED] = [];
|
||||
}
|
||||
promise[ON_FUlFILLED].push(onFulfilled);
|
||||
promise[ON_REJECTED].push(onRejected);
|
||||
}
|
||||
|
||||
function clearAllQueues(promise) {
|
||||
delete promise[ON_FUlFILLED];
|
||||
delete promise[ON_REJECTED];
|
||||
}
|
||||
|
||||
function callEach(queue) {
|
||||
let i;
|
||||
const { length } = queue;
|
||||
for (i = 0; i < length; i++) {
|
||||
queue[i]();
|
||||
}
|
||||
}
|
||||
|
||||
function call(resolve, reject, value) {
|
||||
const anything = toPromise(value);
|
||||
if (isPromise(anything)) {
|
||||
anything.then(resolve, reject);
|
||||
} else if (isInternalError(anything)) {
|
||||
reject(anything[ORIGINAL_ERROR]);
|
||||
} else {
|
||||
resolve(value);
|
||||
}
|
||||
}
|
||||
|
||||
function toPromise(anything) {
|
||||
let then;
|
||||
if (isPromise(anything)) {
|
||||
return anything;
|
||||
}
|
||||
if (isObject(anything)) {
|
||||
try {
|
||||
then = anything.then;
|
||||
} catch (error) {
|
||||
return new InternalError(error);
|
||||
}
|
||||
if (isCallable(then)) {
|
||||
return new Promise((resolve, reject) => {
|
||||
setImmediate(() => {
|
||||
try {
|
||||
then.call(anything, resolve, reject);
|
||||
} catch (error) {
|
||||
reject(error);
|
||||
}
|
||||
});
|
||||
});
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
function resolvePromise(promise, resolver) {
|
||||
function resolve(value) {
|
||||
if (promise[STATUS] == PENDING) {
|
||||
fulfillPromise(promise, value);
|
||||
}
|
||||
}
|
||||
function reject(reason) {
|
||||
if (promise[STATUS] == PENDING) {
|
||||
rejectPromise(promise, reason);
|
||||
}
|
||||
}
|
||||
try {
|
||||
resolver(resolve, reject);
|
||||
} catch (error) {
|
||||
reject(error);
|
||||
}
|
||||
}
|
||||
|
||||
function fulfillPromise(promise, value) {
|
||||
let queue;
|
||||
const anything = toPromise(value);
|
||||
if (isPromise(anything)) {
|
||||
promise[STATUS] = INTERNAL_PENDING;
|
||||
anything.then(
|
||||
(value) => {
|
||||
fulfillPromise(promise, value);
|
||||
},
|
||||
(reason) => {
|
||||
rejectPromise(promise, reason);
|
||||
},
|
||||
);
|
||||
} else if (isInternalError(anything)) {
|
||||
rejectPromise(promise, anything[ORIGINAL_ERROR]);
|
||||
} else {
|
||||
promise[STATUS] = FULFILLED;
|
||||
promise[VALUE] = value;
|
||||
queue = promise[ON_FUlFILLED];
|
||||
if (queue && queue.length) {
|
||||
clearAllQueues(promise);
|
||||
callEach(queue);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function rejectPromise(promise, reason) {
|
||||
const queue = promise[ON_REJECTED];
|
||||
promise[STATUS] = REJECTED;
|
||||
promise[VALUE] = reason;
|
||||
if (queue && queue.length) {
|
||||
clearAllQueues(promise);
|
||||
callEach(queue);
|
||||
}
|
||||
}
|
||||
|
||||
function Promise(resolver) {
|
||||
const promise = this;
|
||||
if (!isPromise(promise)) {
|
||||
throw new TypeError(REQUIRES_NEW);
|
||||
}
|
||||
promise[STATUS] = PENDING;
|
||||
promise[VALUE] = undefined;
|
||||
resolvePromise(promise, resolver);
|
||||
}
|
||||
|
||||
Promise.prototype.then = function (onFulfilled, onRejected) {
|
||||
const promise = this;
|
||||
let nextPromise;
|
||||
onFulfilled = isCallable(onFulfilled) ? onFulfilled : identity;
|
||||
onRejected = isCallable(onRejected) ? onRejected : thrower;
|
||||
nextPromise = new Promise((resolve, reject) => {
|
||||
function tryCall(func) {
|
||||
let value;
|
||||
try {
|
||||
value = func(promise[VALUE]);
|
||||
} catch (error) {
|
||||
reject(error);
|
||||
return;
|
||||
}
|
||||
if (value === nextPromise) {
|
||||
reject(new TypeError(CHAINING_CYCLE));
|
||||
} else {
|
||||
call(resolve, reject, value);
|
||||
}
|
||||
}
|
||||
function asyncOnFulfilled() {
|
||||
setImmediate(tryCall, onFulfilled);
|
||||
}
|
||||
function asyncOnRejected() {
|
||||
setImmediate(tryCall, onRejected);
|
||||
}
|
||||
switch (promise[STATUS]) {
|
||||
case FULFILLED:
|
||||
asyncOnFulfilled();
|
||||
break;
|
||||
case REJECTED:
|
||||
asyncOnRejected();
|
||||
break;
|
||||
default:
|
||||
enqueue(promise, asyncOnFulfilled, asyncOnRejected);
|
||||
}
|
||||
});
|
||||
return nextPromise;
|
||||
};
|
||||
|
||||
Promise.prototype.catch = function (onRejected) {
|
||||
return this.then(identity, onRejected);
|
||||
};
|
||||
|
||||
Promise.resolve = function (value) {
|
||||
const anything = toPromise(value);
|
||||
if (isPromise(anything)) {
|
||||
return anything;
|
||||
}
|
||||
return new Promise((resolve, reject) => {
|
||||
if (isInternalError(anything)) {
|
||||
reject(anything[ORIGINAL_ERROR]);
|
||||
} else {
|
||||
resolve(value);
|
||||
}
|
||||
});
|
||||
};
|
||||
|
||||
Promise.reject = function (reason) {
|
||||
return new Promise((resolve, reject) => {
|
||||
reject(reason);
|
||||
});
|
||||
};
|
||||
|
||||
Promise.race = function (values) {
|
||||
return new Promise((resolve, reject) => {
|
||||
let i;
|
||||
let length;
|
||||
if (isArray(values)) {
|
||||
length = values.length;
|
||||
for (i = 0; i < length; i++) {
|
||||
call(resolve, reject, values[i]);
|
||||
}
|
||||
} else {
|
||||
reject(new TypeError(NOT_ARRAY));
|
||||
}
|
||||
});
|
||||
};
|
||||
|
||||
Promise.all = function (values) {
|
||||
return new Promise((resolve, reject) => {
|
||||
let fulfilledCount = 0;
|
||||
let promiseCount = 0;
|
||||
let anything;
|
||||
let length;
|
||||
let value;
|
||||
let i;
|
||||
if (isArray(values)) {
|
||||
values = values.slice(0);
|
||||
length = values.length;
|
||||
for (i = 0; i < length; i++) {
|
||||
value = values[i];
|
||||
anything = toPromise(value);
|
||||
if (isPromise(anything)) {
|
||||
promiseCount++;
|
||||
anything.then(
|
||||
(function (index) {
|
||||
return function (value) {
|
||||
values[index] = value;
|
||||
fulfilledCount++;
|
||||
if (fulfilledCount == promiseCount) {
|
||||
resolve(values);
|
||||
}
|
||||
};
|
||||
}(i)),
|
||||
reject,
|
||||
);
|
||||
} else if (isInternalError(anything)) {
|
||||
reject(anything[ORIGINAL_ERROR]);
|
||||
} else {
|
||||
// [1, , 3] → [1, undefined, 3]
|
||||
values[i] = value;
|
||||
}
|
||||
}
|
||||
if (!promiseCount) {
|
||||
resolve(values);
|
||||
}
|
||||
} else {
|
||||
reject(new TypeError(NOT_ARRAY));
|
||||
}
|
||||
});
|
||||
};
|
||||
|
||||
if (typeof module !== 'undefined' && module.exports) {
|
||||
module.exports = global.Promise || Promise;
|
||||
} else if (!global.Promise) {
|
||||
global.Promise = Promise;
|
||||
}
|
||||
}(this));
|
||||
156
public/js/storage.js
Executable file
@@ -0,0 +1,156 @@
|
||||
const OtherTables = ['categories', 'config', 'swmsg', 'notifications']
|
||||
const MainTables = ['todos', 'projects']
|
||||
const allMethod = ['sync_post_', 'sync_patch_', 'delete_']
|
||||
|
||||
// -------------------------------------
|
||||
|
||||
let idbKeyval = (() => {
|
||||
let db;
|
||||
|
||||
// console.log('idbKeyval...')
|
||||
|
||||
function getDB() {
|
||||
if (!db) {
|
||||
// console.log('CREO DB STORAGE JS !')
|
||||
db = new Promise((resolve, reject) => {
|
||||
const openreq = indexedDB.open('mydb3', 13);
|
||||
|
||||
openreq.onerror = () => {
|
||||
reject(openreq.error);
|
||||
};
|
||||
|
||||
openreq.onupgradeneeded = () => {
|
||||
// First time setup: create an empty object store
|
||||
for (const mytab of MainTables) {
|
||||
openreq.result.createObjectStore(mytab, { keyPath: '_id' });
|
||||
for (const mymeth of allMethod) {
|
||||
const tab = mymeth + mytab
|
||||
openreq.result.createObjectStore(tab, { keyPath: '_id' });
|
||||
}
|
||||
}
|
||||
for (const mytab of OtherTables) {
|
||||
openreq.result.createObjectStore(mytab, { keyPath: '_id' });
|
||||
}
|
||||
};
|
||||
|
||||
openreq.onsuccess = () => {
|
||||
resolve(openreq.result);
|
||||
};
|
||||
});
|
||||
}
|
||||
return db;
|
||||
}
|
||||
|
||||
async function withStore(type, table, callback) {
|
||||
const db = await getDB();
|
||||
return new Promise((resolve, reject) => {
|
||||
const transaction = db.transaction(table, type);
|
||||
transaction.oncomplete = () => resolve();
|
||||
transaction.onerror = () => reject(transaction.error);
|
||||
callback(transaction.objectStore(table));
|
||||
});
|
||||
}
|
||||
|
||||
return {
|
||||
getArrayByTable(nametable, data) {
|
||||
if (nametable === 'todos') {
|
||||
return data.todos
|
||||
} if (nametable === 'projects') {
|
||||
return data.projects
|
||||
}
|
||||
},
|
||||
|
||||
async get(key) {
|
||||
let req;
|
||||
await withStore('readonly', 'keyval', store => {
|
||||
req = store.get(key);
|
||||
});
|
||||
return req.result;
|
||||
},
|
||||
|
||||
// jsonCopy(src) {
|
||||
// return JSON.parse(JSON.stringify(src));
|
||||
// },
|
||||
|
||||
// contains(a, b) {
|
||||
// // array matches
|
||||
// if (Array.isArray(b)) {
|
||||
// return b.some(x => a.indexOf(x) > -1);
|
||||
// }
|
||||
// // string match
|
||||
// return a.indexOf(b) > -1;
|
||||
// },
|
||||
|
||||
async getdata(table, key) {
|
||||
let req;
|
||||
|
||||
console.log('getdata', table, key)
|
||||
|
||||
await withStore('readonly', table, store => {
|
||||
// console.log('store', store, 'key', key)
|
||||
req = store.get(key);
|
||||
// console.log(' req', req)
|
||||
});
|
||||
|
||||
if (req) {
|
||||
return req.result;
|
||||
} else {
|
||||
return null;
|
||||
}
|
||||
},
|
||||
async getalldata(table) {
|
||||
let req;
|
||||
await withStore('readonly', table, store => {
|
||||
req = store.getAll();
|
||||
});
|
||||
return req.result;
|
||||
},
|
||||
set(key, value) {
|
||||
let req;
|
||||
/*await withStore('readwrite', 'keyval', store => {
|
||||
req = store.put(value, key);
|
||||
});
|
||||
|
||||
*/
|
||||
if (req)
|
||||
return req.result;
|
||||
else
|
||||
return null
|
||||
},
|
||||
async setdata(table, value) {
|
||||
let req;
|
||||
// console.log('setdata', table, value)
|
||||
|
||||
await withStore('readwrite', table, store => {
|
||||
req = store.put(value);
|
||||
});
|
||||
return req.result;
|
||||
},
|
||||
async delete(key) {
|
||||
return withStore('readwrite', 'keyval', store => {
|
||||
store.delete(key);
|
||||
});
|
||||
},
|
||||
async deletedata(table, key) {
|
||||
return withStore('readwrite', table, store => {
|
||||
store.delete(key);
|
||||
});
|
||||
},
|
||||
async clearalldata(table) {
|
||||
// console.log('clearalldata', table)
|
||||
return withStore('readwrite', table, store => {
|
||||
store.clear();
|
||||
});
|
||||
},
|
||||
};
|
||||
})();
|
||||
|
||||
// iOS add-to-homescreen is missing IDB, or at least it used to.
|
||||
// I haven't tested this in a while.
|
||||
if (!self.indexedDB) {
|
||||
idbKeyval = {
|
||||
get: key => Promise.resolve(localStorage.getItem(key)),
|
||||
set: (key, val) => Promise.resolve(localStorage.setItem(key, val)),
|
||||
delete: key => Promise.resolve(localStorage.removeItem(key)),
|
||||
};
|
||||
}
|
||||
34
public/js/track.js
Executable file
@@ -0,0 +1,34 @@
|
||||
function geturl() {
|
||||
const miaurl = document.location.href
|
||||
|
||||
if (miaurl.includes('localhost')) {
|
||||
return 'https://127.0.0.1:8084'
|
||||
}
|
||||
return ''
|
||||
}
|
||||
|
||||
function getidtrack() {
|
||||
const miaurl = document.location.href
|
||||
|
||||
if (miaurl.includes('test.') || miaurl.includes('localhost')) {
|
||||
return '4c40a07bc88a9c50c9b70dc9c5cd8e2e'
|
||||
}
|
||||
return 'ccfd6c90e17b6809f9717675764c3f5d' // Associazione Shen
|
||||
}
|
||||
|
||||
let owa_baseUrl = `${geturl()}owa/`;
|
||||
if (owa_cmds) var owa_cmds = [];
|
||||
else var owa_cmds = owa_cmds || [];
|
||||
owa_cmds.push(['setSiteId', getidtrack()]);
|
||||
owa_cmds.push(['trackPageView']);
|
||||
// owa_cmds.push(['trackClicks']);
|
||||
|
||||
(function () {
|
||||
const _owa = document.createElement('script');
|
||||
_owa.type = 'text/javascript';
|
||||
_owa.async = true;
|
||||
owa_baseUrl = (document.location.protocol == 'https:' ? window.owa_baseSecUrl || owa_baseUrl.replace(/http:/, 'https:') : owa_baseUrl);
|
||||
_owa.src = `${owa_baseUrl}modules/base/js/owa.tracker-combined-min.js`;
|
||||
const _owa_s = document.getElementsByTagName('script')[0];
|
||||
_owa_s.parentNode.insertBefore(_owa, _owa_s);
|
||||
}());
|
||||
BIN
public/myicons/favicon-16x16.png
Normal file
|
After Width: | Height: | Size: 1.6 KiB |
BIN
public/myicons/favicon-32x32.png
Normal file
|
After Width: | Height: | Size: 3.2 KiB |
BIN
public/myicons/favicon-96x96.png
Normal file
|
After Width: | Height: | Size: 15 KiB |
2
public/workbox/workbox-sw.js
Normal file
@@ -0,0 +1,2 @@
|
||||
!function(){"use strict";try{self["workbox:sw:7.3.0"]&&_()}catch(t){}const t={backgroundSync:"background-sync",broadcastUpdate:"broadcast-update",cacheableResponse:"cacheable-response",core:"core",expiration:"expiration",googleAnalytics:"offline-ga",navigationPreload:"navigation-preload",precaching:"precaching",rangeRequests:"range-requests",routing:"routing",strategies:"strategies",streams:"streams",recipes:"recipes"};self.workbox=new class{constructor(){return this.v={},this.Pt={debug:"localhost"===self.location.hostname,modulePathPrefix:null,modulePathCb:null},this.$t=this.Pt.debug?"dev":"prod",this.jt=!1,new Proxy(this,{get(e,s){if(e[s])return e[s];const o=t[s];return o&&e.loadModule(`workbox-${o}`),e[s]}})}setConfig(t={}){if(this.jt)throw new Error("Config must be set before accessing workbox.* modules");Object.assign(this.Pt,t),this.$t=this.Pt.debug?"dev":"prod"}loadModule(t){const e=this.St(t);try{importScripts(e),this.jt=!0}catch(s){throw console.error(`Unable to import module '${t}' from '${e}'.`),s}}St(t){if(this.Pt.modulePathCb)return this.Pt.modulePathCb(t,this.Pt.debug);let e=["https://storage.googleapis.com/workbox-cdn/releases/7.3.0"];const s=`${t}.${this.$t}.js`,o=this.Pt.modulePathPrefix;return o&&(e=o.split("/"),""===e[e.length-1]&&e.splice(e.length-1,1)),e.push(s),e.join("/")}}}();
|
||||
//# sourceMappingURL=workbox-sw.js.map
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "cnm",
|
||||
"version": "1.2.28",
|
||||
"version": "1.2.29",
|
||||
"description": "Comunita Nuovo Mondo",
|
||||
"productName": "ComunitaNuovoMondo",
|
||||
"author": "Surya",
|
||||
@@ -9,7 +9,7 @@
|
||||
"license": "MIT",
|
||||
"type": "module",
|
||||
"scripts": {
|
||||
"dev": "PORT=8083:APP_VERSION='1.2.28' quasar dev",
|
||||
"dev": "PORT=8083 APP_VERSION='1.2.29' quasar dev",
|
||||
"dev_noCheck": "SKIP_TSC=true quasar dev",
|
||||
"build": "quasar build",
|
||||
"buildpwa": "NODE_ENV=production quasar build -m pwa",
|
||||
@@ -21,18 +21,19 @@
|
||||
"lintfile": "eslint --ext .js,.ts,.vue --ignore-path .gitignore ./ > file.out.txt",
|
||||
"lintfileNoJS": "eslint --ext .ts,.vue --ignore-path .gitignore ./ > file.out.txt",
|
||||
"fix": "eslint -c ./eslint.config.js \"./src*/**/*.{ts,js,cjs,mjs,vue}\" --ignore-pattern .gitignore ./ --fix > file.out.txt",
|
||||
"pwa": "NODE_ENV=development:PORT=8093:APP_VERSION='1.2.28' quasar dev -m pwa",
|
||||
"spa": "NODE_ENV=development:PORT=8083:APP_VERSION='1.2.28' quasar dev",
|
||||
"pwa": "NODE_ENV=development PORT=8093 APP_VERSION='1.2.29' quasar dev -m pwa",
|
||||
"spa": "NODE_ENV=development PORT=8083 APP_VERSION='1.2.29' quasar dev",
|
||||
"debug": "quasar dev --mode debug",
|
||||
"test": "echo \"No test specified\" && exit 0",
|
||||
"generate-sw": "workbox generateSW workbox-config.js",
|
||||
"postinstall": "quasar prepare"
|
||||
},
|
||||
"dependencies": {
|
||||
"@cubejs-client/core": "^1.2.19",
|
||||
"@cubejs-client/core": "^1.2.26",
|
||||
"@quasar/extras": "^1.16.17",
|
||||
"@quasar/quasar-ui-qcalendar": "^4.1.2",
|
||||
"@types/leaflet": "^1.9.16",
|
||||
"@types/jsbarcode": "^3.11.4",
|
||||
"@types/leaflet": "^1.9.17",
|
||||
"@vue/compat": "^3.5.13",
|
||||
"@vue/compiler-sfc": "^3.5.13",
|
||||
"@vuelidate/core": "^2.0.3",
|
||||
@@ -40,7 +41,7 @@
|
||||
"acorn": "^8.14.1",
|
||||
"animate.css": "^4.1.1",
|
||||
"autoprefixer": "^10.4.21",
|
||||
"axios": "^1.8.2",
|
||||
"axios": "^1.8.4",
|
||||
"bcryptjs": "^3.0.2",
|
||||
"chart.js": "^4.4.8",
|
||||
"core-js": "^3.41.0",
|
||||
@@ -55,6 +56,7 @@
|
||||
"html2pdf.js": "^0.10.3",
|
||||
"jquery": "^3.7.1",
|
||||
"js-cookie": "^3.0.5",
|
||||
"jsbarcode": "^3.11.6",
|
||||
"leaflet": "^1.9.4",
|
||||
"leaflet-routing-machine": "^3.2.12",
|
||||
"leaflet.markercluster": "^1.5.3",
|
||||
@@ -68,7 +70,7 @@
|
||||
"quasar-extras": "^2.0.9",
|
||||
"register-service-worker": "^1.7.2",
|
||||
"scrollreveal": "^4.0.9",
|
||||
"typescript-eslint": "^8.26.0",
|
||||
"typescript-eslint": "^8.27.0",
|
||||
"vee-validate": "^4.15.0",
|
||||
"vue": "^3.5.13",
|
||||
"vue-class-component": "^8.0.0-rc.1",
|
||||
@@ -95,14 +97,13 @@
|
||||
"workbox-window": "^7.3.0"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@eslint/js": "^9.22.0",
|
||||
"@intlify/unplugin-vue-i18n": "^6.0.3",
|
||||
"@eslint/js": "^9.23.0",
|
||||
"@intlify/unplugin-vue-i18n": "^6.0.5",
|
||||
"@quasar/app-vite": "^2.1.4",
|
||||
"@types/bcryptjs": "^2.4.6",
|
||||
"@types/google.maps": "^3.58.1",
|
||||
"@types/jest": "^29.5.14",
|
||||
"@types/js-cookie": "^3.0.6",
|
||||
"@types/node": "^22.13.10",
|
||||
"@types/node": "^22.13.11",
|
||||
"@types/nprogress": "^0.2.3",
|
||||
"@types/vue-tel-input": "^2.1.7",
|
||||
"@types/vuelidate": "^0.7.22",
|
||||
@@ -119,16 +120,17 @@
|
||||
"jest": "^29.7.0",
|
||||
"json-loader": "^0.5.7",
|
||||
"nodemon": "^3.1.9",
|
||||
"npm-check-updates": "^17.1.15",
|
||||
"parcel": "^2.13.3",
|
||||
"npm-check-updates": "^17.1.16",
|
||||
"parcel": "^2.14.1",
|
||||
"postcss": "^8.5.3",
|
||||
"postcss-loader": "^8.1.1",
|
||||
"prettier": "3",
|
||||
"strip-ansi": "=7.1.0",
|
||||
"ts-jest": "^29.2.6",
|
||||
"typescript": "5.7.3",
|
||||
"vite-plugin-checker": "^0.9.0",
|
||||
"vite-plugin-checker": "^0.9.1",
|
||||
"vue-cli-plugin-element-ui": "^1.1.4",
|
||||
"vue-eslint-parser": "^10.1.1",
|
||||
"vue-tsc": "^2.2.8",
|
||||
"vueify": "^9.4.1",
|
||||
"workbox-build": "^7.3.0"
|
||||
@@ -138,4 +140,4 @@
|
||||
"npm": ">= 6.13.4",
|
||||
"yarn": ">= 1.21.1"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,162 +1,143 @@
|
||||
{
|
||||
"name": "freeplanet",
|
||||
"version": "0.0.8",
|
||||
"description": "FreePlanet",
|
||||
"productName": "FreePlanet",
|
||||
"version": "1.2.29",
|
||||
"description": "freeplanet",
|
||||
"productName": "freeplanet",
|
||||
"author": "Surya",
|
||||
"private": true,
|
||||
"keywords": [
|
||||
],
|
||||
"keywords": [],
|
||||
"license": "MIT",
|
||||
"type": "module",
|
||||
"scripts": {
|
||||
"dev": "quasar dev",
|
||||
"build": "NODE_ENV=production quasar build",
|
||||
"buildpwa": "NODE_ENV=production quasar build -m pwa",
|
||||
"buildpwatest": "NODE_ENV=test quasar build -m pwa",
|
||||
"buildspa": "NODE_ENV=production quasar build -m spa",
|
||||
"lint": "eslint --ext .js,.ts,.vue --ignore-path .gitignore ./",
|
||||
"dev": "PORT=8087 APP_VERSION='1.2.29' quasar dev",
|
||||
"dev_noCheck": "SKIP_TSC=true quasar dev",
|
||||
"build": "quasar build",
|
||||
"buildpwa": "NODE_ENV=production APP_VERSION='1.2.29' quasar build -m pwa",
|
||||
"buildpwatest": "NODE_ENV=production APP_VERSION='1.2.29' quasar build -m pwa",
|
||||
"type-check": "vue-tsc --noEmit",
|
||||
"type-check:watch": "vue-tsc --noEmit --watch",
|
||||
"buildspa": "quasar build -m spa",
|
||||
"lint": "eslint -c ./eslint.config.js \"./src*/**/*.{ts,js,cjs,mjs,vue}\"",
|
||||
"lintfile": "eslint --ext .js,.ts,.vue --ignore-path .gitignore ./ > file.out.txt",
|
||||
"lintfileNoJS": "eslint --ext .ts,.vue --ignore-path .gitignore ./ > file.out.txt",
|
||||
"fix": "eslint --ext .ts,.vue --ignore-path .gitignore ./ --fix > file.out.txt",
|
||||
"pwa": "NODE_ENV=development NODE_OPTIONS=--max_old_space_size=4096 DEBUG=v8:* quasar dev -m pwa",
|
||||
"fix": "eslint -c ./eslint.config.js \"./src*/**/*.{ts,js,cjs,mjs,vue}\" --ignore-pattern .gitignore ./ --fix > file.out.txt",
|
||||
"pwa": "NODE_ENV=development PORT=8097 APP_VERSION='1.2.29' quasar dev -m pwa",
|
||||
"spa": "NODE_ENV=development PORT=8087 APP_VERSION='1.2.29' quasar dev",
|
||||
"debug": "quasar dev --mode debug",
|
||||
"test": "echo \"No test specified\" && exit 0",
|
||||
"generate-sw": "workbox generateSW workbox-config.js"
|
||||
"generate-sw": "workbox generateSW workbox-config.js",
|
||||
"postinstall": "quasar prepare"
|
||||
},
|
||||
"dependencies": {
|
||||
"@babel/plugin-proposal-class-properties": "^7.18.6",
|
||||
"@babel/plugin-proposal-export-namespace-from": "^7.18.9",
|
||||
"@babel/plugin-proposal-json-strings": "^7.18.6",
|
||||
"@babel/plugin-proposal-numeric-separator": "^7.18.6",
|
||||
"@babel/runtime": "^7.25.7",
|
||||
"@cubejs-client/core": "^0.36.4",
|
||||
"@quasar/extras": "^1.16.12",
|
||||
"@quasar/quasar-ui-qcalendar": "^4.0.0-beta.19",
|
||||
"@types/leaflet": "^1.9.12",
|
||||
"@vue/compat": "^3.5.10",
|
||||
"@vue/compiler-sfc": "^3.5.10",
|
||||
"@vue/eslint-config-standard": "^8.0.1",
|
||||
"@cubejs-client/core": "^1.2.26",
|
||||
"@quasar/extras": "^1.16.17",
|
||||
"@quasar/quasar-ui-qcalendar": "^4.1.2",
|
||||
"@types/jsbarcode": "^3.11.4",
|
||||
"@types/leaflet": "^1.9.17",
|
||||
"@vue/compat": "^3.5.13",
|
||||
"@vue/compiler-sfc": "^3.5.13",
|
||||
"@vuelidate/core": "^2.0.3",
|
||||
"@vuelidate/validators": "^2.0.4",
|
||||
"acorn": "^8.12.1",
|
||||
"acorn": "^8.14.1",
|
||||
"animate.css": "^4.1.1",
|
||||
"autoprefixer": "^10.4.20",
|
||||
"axios": "^1.7.7",
|
||||
"bcryptjs": "^2.4.3",
|
||||
"chart.js": "^4.4.4",
|
||||
"core-js": "^3.38.1",
|
||||
"crypto-browserify": "^3.12.0",
|
||||
"autoprefixer": "^10.4.21",
|
||||
"axios": "^1.8.4",
|
||||
"bcryptjs": "^3.0.2",
|
||||
"chart.js": "^4.4.8",
|
||||
"core-js": "^3.41.0",
|
||||
"crypto-browserify": "^3.12.1",
|
||||
"date-fns": "^4.1.0",
|
||||
"dotenv": "^16.4.5",
|
||||
"echarts": "5.5.1",
|
||||
"eslint-plugin-n": "^17.10.3",
|
||||
"echarts": "5.6.0",
|
||||
"eslint-plugin-n": "^17.16.2",
|
||||
"eslint-plugin-quasar": "^1.1.0",
|
||||
"graphql": "^16.9.0",
|
||||
"graphql": "^16.10.0",
|
||||
"graphql-tag": "^2.12.6",
|
||||
"gsap": "^3.12.5",
|
||||
"html2pdf.js": "^0.10.2",
|
||||
"gsap": "^3.12.7",
|
||||
"html2pdf.js": "^0.10.3",
|
||||
"jquery": "^3.7.1",
|
||||
"js-cookie": "^3.0.5",
|
||||
"jsbarcode": "^3.11.6",
|
||||
"leaflet": "^1.9.4",
|
||||
"leaflet-routing-machine": "^3.2.12",
|
||||
"leaflet.markercluster": "^1.5.3",
|
||||
"localforage": "^1.10.0",
|
||||
"lodash": "^4.17.21",
|
||||
"normalize.css": "^8.0.1",
|
||||
"npm": "^10.8.3",
|
||||
"nprogress": "^0.2.0",
|
||||
"pinia": "^2.2.4",
|
||||
"quasar": "^2.17.0",
|
||||
"pinia": "^3.0.1",
|
||||
"qrcode-vue3": "^1.7.1",
|
||||
"quasar": "^2.18.1",
|
||||
"quasar-extras": "^2.0.9",
|
||||
"register-service-worker": "^1.7.2",
|
||||
"typescript-eslint": "^8.8.0",
|
||||
"vee-validate": "^4.13.2",
|
||||
"vue": "^3.5.10",
|
||||
"scrollreveal": "^4.0.9",
|
||||
"typescript-eslint": "^8.27.0",
|
||||
"vee-validate": "^4.15.0",
|
||||
"vue": "^3.5.13",
|
||||
"vue-class-component": "^8.0.0-rc.1",
|
||||
"vue-country-code": "^1.1.3",
|
||||
"vue-echarts": "^7.0.3",
|
||||
"vue-i18n": "^9.14.1",
|
||||
"vue-i18n": "^11.1.2",
|
||||
"vue-idb": "^0.2.0",
|
||||
"vue-image-zoomer": "^2.4.1",
|
||||
"vue-loader": "^17.4.2",
|
||||
"vue-image-zoomer": "^2.4.4",
|
||||
"vue-property-decorator": "^10.0.0-rc.3",
|
||||
"vue-router": "^4.4.5",
|
||||
"vue-router": "^4.5.0",
|
||||
"vue-scroll-reveal": "^2.1.0",
|
||||
"vue-social-sharing": "^4.0.0-alpha4",
|
||||
"vue-svgicon": "^4.0.0-alpha.3",
|
||||
"vue-timeago3": "^2.3.2",
|
||||
"vue2-dragula": "^2.5.5",
|
||||
"vue3-pdf-app": "^1.0.3",
|
||||
"vue3-qr-reader": "^1.0.0",
|
||||
"vuex": "^4.1.0",
|
||||
"vuex-router-sync": "^6.0.0-rc.1"
|
||||
"vuex-router-sync": "^6.0.0-rc.1",
|
||||
"workbox-core": "^7.3.0",
|
||||
"workbox-precaching": "^7.3.0",
|
||||
"workbox-routing": "^7.3.0",
|
||||
"workbox-strategies": "^7.3.0",
|
||||
"workbox-window": "^7.3.0"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@babel/core": "^7.25.7",
|
||||
"@babel/plugin-transform-class-properties": "^7.25.7",
|
||||
"@babel/plugin-transform-export-namespace-from": "^7.25.7",
|
||||
"@babel/plugin-transform-json-strings": "^7.25.7",
|
||||
"@babel/plugin-transform-numeric-separator": "^7.25.7",
|
||||
"@babel/plugin-transform-runtime": "^7.25.7",
|
||||
"@quasar/app-webpack": "^3.14.0",
|
||||
"@types/bcryptjs": "^2.4.6",
|
||||
"@types/dotenv": "^8.2.0",
|
||||
"@eslint/js": "^9.23.0",
|
||||
"@intlify/unplugin-vue-i18n": "^6.0.5",
|
||||
"@quasar/app-vite": "^2.1.4",
|
||||
"@types/google.maps": "^3.58.1",
|
||||
"@types/jest": "^29.5.13",
|
||||
"@types/jest": "^29.5.14",
|
||||
"@types/js-cookie": "^3.0.6",
|
||||
"@types/node": "22.7.4",
|
||||
"@types/node": "^22.13.11",
|
||||
"@types/nprogress": "^0.2.3",
|
||||
"@types/vue-tel-input": "^2.1.7",
|
||||
"@types/vuelidate": "^0.7.21",
|
||||
"@typescript-eslint/eslint-plugin": "^8.8.0",
|
||||
"@typescript-eslint/parser": "^8.8.0",
|
||||
"babel-loader": "^9.2.1",
|
||||
"copy-webpack-plugin": "^12.0.2",
|
||||
"eslint": "^9.11.1",
|
||||
"eslint-config-prettier": "^9.1.0",
|
||||
"@types/vuelidate": "^0.7.22",
|
||||
"@vue/devtools": "^7.7.2",
|
||||
"@vue/eslint-config-prettier": "^10.2.0",
|
||||
"@vue/eslint-config-typescript": "^14.5.0",
|
||||
"autoprefixer": "^10.4.21",
|
||||
"eslint": "9",
|
||||
"eslint-plugin-import": "^2.31.0",
|
||||
"eslint-plugin-node": "^11.1.0",
|
||||
"eslint-plugin-promise": "^7.1.0",
|
||||
"eslint-plugin-vue": "^9.28.0",
|
||||
"eslint-plugin-vue": "^10.0.0",
|
||||
"file-loader": "^6.2.0",
|
||||
"fork-ts-checker-webpack-plugin": "^9.0.2",
|
||||
"friendly-errors-webpack-plugin": "^1.7.0",
|
||||
"html-webpack-plugin": "^5.6.0",
|
||||
"http-proxy-middleware": "^3.0.2",
|
||||
"globals": "^16.0.0",
|
||||
"http-proxy-middleware": "^3.0.3",
|
||||
"jest": "^29.7.0",
|
||||
"json-loader": "^0.5.7",
|
||||
"node-sass": "^9.0.0",
|
||||
"npm-check-updates": "^17.1.3",
|
||||
"optimize-css-assets-webpack-plugin": "^6.0.1",
|
||||
"parcel": "^2.12.0",
|
||||
"postcss": "^8.4.47",
|
||||
"nodemon": "^3.1.9",
|
||||
"npm-check-updates": "^17.1.16",
|
||||
"parcel": "^2.14.1",
|
||||
"postcss": "^8.5.3",
|
||||
"postcss-loader": "^8.1.1",
|
||||
"sass-loader": "^16.0.2",
|
||||
"prettier": "3",
|
||||
"strip-ansi": "=7.1.0",
|
||||
"ts-jest": "^29.2.5",
|
||||
"ts-loader": "^9.5.1",
|
||||
"typescript": "5.6.2",
|
||||
"ts-jest": "^29.2.6",
|
||||
"typescript": "5.7.3",
|
||||
"vite-plugin-checker": "^0.9.1",
|
||||
"vue-cli-plugin-element-ui": "^1.1.4",
|
||||
"vue-eslint-parser": "^10.1.1",
|
||||
"vue-tsc": "^2.2.8",
|
||||
"vueify": "^9.4.1",
|
||||
"webpack": "^5.95.0",
|
||||
"webpack-dashboard": "^3.3.8",
|
||||
"workbox-webpack-plugin": "^7.1.0"
|
||||
"workbox-build": "^7.3.0"
|
||||
},
|
||||
"browser": {
|
||||
"crypto": false
|
||||
},
|
||||
"browserslist": [
|
||||
"last 13 Chrome versions",
|
||||
"last 13 Firefox versions",
|
||||
"last 4 Edge versions",
|
||||
"last 13 Safari versions",
|
||||
"last 14 Android versions",
|
||||
"last 14 ChromeAndroid versions",
|
||||
"last 14 FirefoxAndroid versions",
|
||||
"last 10 iOS versions",
|
||||
"last 5 Opera versions"
|
||||
],
|
||||
"engines": {
|
||||
"node": ">= 16.14.0",
|
||||
"npm": ">= 6.14.8",
|
||||
"node": "^28 || ^26 || ^24 || ^22 || ^20 || ^18",
|
||||
"npm": ">= 6.13.4",
|
||||
"yarn": ">= 1.21.1"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "gruppomacro",
|
||||
"version": "1.2.28",
|
||||
"version": "1.2.29",
|
||||
"description": "Gruppo Macro",
|
||||
"productName": "Gruppo Macro",
|
||||
"author": "Surya",
|
||||
@@ -9,45 +9,46 @@
|
||||
"license": "MIT",
|
||||
"type": "module",
|
||||
"scripts": {
|
||||
"dev": "PORT=8089:APP_VERSION='1.2.28' quasar dev",
|
||||
"dev": "PORT=8089 APP_VERSION='1.2.29' quasar dev",
|
||||
"dev_noCheck": "SKIP_TSC=true quasar dev",
|
||||
"build": "quasar build",
|
||||
"buildpwa": "NODE_ENV=production:APP_VERSION='1.2.28' quasar build -m pwa",
|
||||
"buildpwatest": "NODE_ENV=production:APP_VERSION='1.2.28' quasar build -m pwa",
|
||||
"buildpwa": "NODE_ENV=production APP_VERSION='1.2.29' quasar build -m pwa",
|
||||
"buildpwatest": "NODE_ENV=production APP_VERSION='1.2.29' quasar build -m pwa",
|
||||
"type-check": "vue-tsc --noEmit",
|
||||
"type-check:watch": "vue-tsc --noEmit --watch",
|
||||
"buildspa": "APP_VERSION='1.2.28' quasar build -m spa",
|
||||
"buildspa": "APP_VERSION='1.2.29' quasar build -m spa",
|
||||
"lint": "eslint -c ./eslint.config.js \"./src*/**/*.{ts,js,cjs,mjs,vue}\"",
|
||||
"lintfile": "eslint --ext .js,.ts,.vue --ignore-path .gitignore ./ > file.out.txt",
|
||||
"lintfileNoJS": "eslint --ext .ts,.vue --ignore-path .gitignore ./ > file.out.txt",
|
||||
"fix": "eslint -c ./eslint.config.js \"./src*/**/*.{ts,js,cjs,mjs,vue}\" --ignore-pattern .gitignore ./ --fix > file.out.txt",
|
||||
"pwa": "NODE_ENV=development:PORT=8099:APP_VERSION='1.2.28' quasar dev -m pwa",
|
||||
"spa": "NODE_ENV=development:PORT=8089:APP_VERSION='1.2.28' quasar dev",
|
||||
"pwa": "NODE_ENV=development PORT=8099 APP_VERSION='1.2.29' quasar dev -m pwa",
|
||||
"spa": "NODE_ENV=development PORT=8089 APP_VERSION='1.2.29' quasar dev",
|
||||
"debug": "quasar dev --mode debug",
|
||||
"test": "echo \"No test specified\" && exit 0",
|
||||
"generate-sw": "workbox generateSW workbox-config.js",
|
||||
"postinstall": "quasar prepare"
|
||||
},
|
||||
"dependencies": {
|
||||
"@cubejs-client/core": "^1.2.13",
|
||||
"@cubejs-client/core": "^1.2.26",
|
||||
"@quasar/extras": "^1.16.17",
|
||||
"@quasar/quasar-ui-qcalendar": "^4.1.2",
|
||||
"@types/leaflet": "^1.9.16",
|
||||
"@types/jsbarcode": "^3.11.4",
|
||||
"@types/leaflet": "^1.9.17",
|
||||
"@vue/compat": "^3.5.13",
|
||||
"@vue/compiler-sfc": "^3.5.13",
|
||||
"@vuelidate/core": "^2.0.3",
|
||||
"@vuelidate/validators": "^2.0.4",
|
||||
"acorn": "^8.14.0",
|
||||
"acorn": "^8.14.1",
|
||||
"animate.css": "^4.1.1",
|
||||
"autoprefixer": "^10.4.20",
|
||||
"axios": "^1.8.1",
|
||||
"autoprefixer": "^10.4.21",
|
||||
"axios": "^1.8.4",
|
||||
"bcryptjs": "^3.0.2",
|
||||
"chart.js": "^4.4.8",
|
||||
"core-js": "^3.41.0",
|
||||
"crypto-browserify": "^3.12.1",
|
||||
"date-fns": "^4.1.0",
|
||||
"echarts": "5.6.0",
|
||||
"eslint-plugin-n": "^17.15.1",
|
||||
"eslint-plugin-n": "^17.16.2",
|
||||
"eslint-plugin-quasar": "^1.1.0",
|
||||
"graphql": "^16.10.0",
|
||||
"graphql-tag": "^2.12.6",
|
||||
@@ -55,6 +56,7 @@
|
||||
"html2pdf.js": "^0.10.3",
|
||||
"jquery": "^3.7.1",
|
||||
"js-cookie": "^3.0.5",
|
||||
"jsbarcode": "^3.11.6",
|
||||
"leaflet": "^1.9.4",
|
||||
"leaflet-routing-machine": "^3.2.12",
|
||||
"leaflet.markercluster": "^1.5.3",
|
||||
@@ -64,17 +66,17 @@
|
||||
"nprogress": "^0.2.0",
|
||||
"pinia": "^3.0.1",
|
||||
"qrcode-vue3": "^1.7.1",
|
||||
"quasar": "^2.18.0",
|
||||
"quasar": "^2.18.1",
|
||||
"quasar-extras": "^2.0.9",
|
||||
"register-service-worker": "^1.7.2",
|
||||
"scrollreveal": "^4.0.9",
|
||||
"typescript-eslint": "^8.25.0",
|
||||
"typescript-eslint": "^8.27.0",
|
||||
"vee-validate": "^4.15.0",
|
||||
"vue": "^3.5.13",
|
||||
"vue-class-component": "^8.0.0-rc.1",
|
||||
"vue-country-code": "^1.1.3",
|
||||
"vue-echarts": "^7.0.3",
|
||||
"vue-i18n": "^11.1.1",
|
||||
"vue-i18n": "^11.1.2",
|
||||
"vue-idb": "^0.2.0",
|
||||
"vue-image-zoomer": "^2.4.4",
|
||||
"vue-property-decorator": "^10.0.0-rc.3",
|
||||
@@ -95,41 +97,41 @@
|
||||
"workbox-window": "^7.3.0"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@eslint/js": "^9.21.0",
|
||||
"@intlify/unplugin-vue-i18n": "^6.0.3",
|
||||
"@quasar/app-vite": "^2.1.1",
|
||||
"@types/bcryptjs": "^2.4.6",
|
||||
"@eslint/js": "^9.23.0",
|
||||
"@intlify/unplugin-vue-i18n": "^6.0.5",
|
||||
"@quasar/app-vite": "^2.1.4",
|
||||
"@types/google.maps": "^3.58.1",
|
||||
"@types/jest": "^29.5.14",
|
||||
"@types/js-cookie": "^3.0.6",
|
||||
"@types/node": "^22.13.8",
|
||||
"@types/node": "^22.13.11",
|
||||
"@types/nprogress": "^0.2.3",
|
||||
"@types/vue-tel-input": "^2.1.7",
|
||||
"@types/vuelidate": "^0.7.22",
|
||||
"@vue/devtools": "^7.7.2",
|
||||
"@vue/eslint-config-prettier": "^10.2.0",
|
||||
"@vue/eslint-config-typescript": "^14.4.0",
|
||||
"autoprefixer": "^10.4.20",
|
||||
"@vue/eslint-config-typescript": "^14.5.0",
|
||||
"autoprefixer": "^10.4.21",
|
||||
"eslint": "9",
|
||||
"eslint-plugin-import": "^2.31.0",
|
||||
"eslint-plugin-vue": "^9.32.0",
|
||||
"eslint-plugin-vue": "^10.0.0",
|
||||
"file-loader": "^6.2.0",
|
||||
"globals": "^16.0.0",
|
||||
"http-proxy-middleware": "^3.0.3",
|
||||
"jest": "^29.7.0",
|
||||
"json-loader": "^0.5.7",
|
||||
"nodemon": "^3.1.9",
|
||||
"npm-check-updates": "^17.1.15",
|
||||
"parcel": "^2.13.3",
|
||||
"npm-check-updates": "^17.1.16",
|
||||
"parcel": "^2.14.1",
|
||||
"postcss": "^8.5.3",
|
||||
"postcss-loader": "^8.1.1",
|
||||
"prettier": "3",
|
||||
"strip-ansi": "=7.1.0",
|
||||
"ts-jest": "^29.2.6",
|
||||
"typescript": "5.7.3",
|
||||
"vite-plugin-checker": "^0.9.0",
|
||||
"vite-plugin-checker": "^0.9.1",
|
||||
"vue-cli-plugin-element-ui": "^1.1.4",
|
||||
"vue-tsc": "^2.2.6",
|
||||
"vue-eslint-parser": "^10.1.1",
|
||||
"vue-tsc": "^2.2.8",
|
||||
"vueify": "^9.4.1",
|
||||
"workbox-build": "^7.3.0"
|
||||
},
|
||||
@@ -138,4 +140,4 @@
|
||||
"npm": ">= 6.13.4",
|
||||
"yarn": ">= 1.21.1"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "kolibrilab",
|
||||
"version": "0.5.3",
|
||||
"version": "1.2.29",
|
||||
"description": "kolibrilab",
|
||||
"productName": "kolibrilab",
|
||||
"author": "Surya Paolo",
|
||||
@@ -8,132 +8,134 @@
|
||||
"keywords": [],
|
||||
"license": "MIT",
|
||||
"scripts": {
|
||||
"dev": "quasar dev",
|
||||
"dev": "PORT=8083 APP_VERSION='1.2.29' quasar dev",
|
||||
"dev_noCheck": "SKIP_TSC=true quasar dev",
|
||||
"build": "quasar build",
|
||||
"buildpwa": "NODE_ENV=production quasar build -m pwa",
|
||||
"buildpwa": "NODE_ENV=production APP_VERSION='1.2.29' quasar build -m pwa",
|
||||
"buildpwatest": "NODE_ENV=production APP_VERSION='1.2.29' quasar build -m pwa",
|
||||
"type-check": "vue-tsc --noEmit",
|
||||
"type-check:watch": "vue-tsc --noEmit --watch",
|
||||
"buildspa": "quasar build -m spa",
|
||||
"lint": "eslint --ext .js,.ts,.vue --ignore-path .gitignore ./",
|
||||
"lintfile": "eslint --ext .js,.ts,.vue --ignore-path .gitignore ./ > file.out.txt",
|
||||
"lintfileNoJS": "eslint --ext .ts,.vue --ignore-path .gitignore ./ > file.out.txt",
|
||||
"fix": "eslint --ext .ts,.vue --ignore-path .gitignore ./ --fix > file.out.txt",
|
||||
"pwa": "NODE_ENV=development NODE_OPTIONS=--max_old_space_size=4096 DEBUG=v8:* quasar dev -m pwa",
|
||||
"spa": "NODE_ENV=development NODE_OPTIONS=--max_old_space_size=4096 DEBUG=v8:* quasar dev -m spa",
|
||||
"pwa": "NODE_ENV=development PORT=8093 APP_VERSION='1.2.29' quasar dev -m pwa",
|
||||
"spa": "NODE_ENV=development PORT=8083 APP_VERSION='1.2.29' quasar dev",
|
||||
"spanorefresh": "NODE_ENV=development NODE_OPTIONS=--max_old_space_size=4096 DEBUG=v8:* quasar dev -m spa",
|
||||
"test": "echo \"No test specified\" && exit 0",
|
||||
"generate-sw": "workbox generateSW workbox-config.js"
|
||||
},
|
||||
"dependencies": {
|
||||
"@quasar/extras": "^1.15.5",
|
||||
"@quasar/quasar-ui-qcalendar": "^4.0.0-beta.13",
|
||||
"@vue-leaflet/vue-leaflet": "^0.6.1",
|
||||
"@vue/compat": "^3.2.45",
|
||||
"@vue/compiler-sfc": "^3.2.45",
|
||||
"@vue/eslint-config-standard": "7.0.0",
|
||||
"@vuelidate/core": "^2.0.0",
|
||||
"@vuelidate/validators": "^2.0.0",
|
||||
"acorn": "^8.8.1",
|
||||
"@cubejs-client/core": "^1.2.26",
|
||||
"@quasar/extras": "^1.16.17",
|
||||
"@quasar/quasar-ui-qcalendar": "^4.1.2",
|
||||
"@types/jsbarcode": "^3.11.4",
|
||||
"@types/leaflet": "^1.9.17",
|
||||
"@vue/compat": "^3.5.13",
|
||||
"@vue/compiler-sfc": "^3.5.13",
|
||||
"@vuelidate/core": "^2.0.3",
|
||||
"@vuelidate/validators": "^2.0.4",
|
||||
"acorn": "^8.14.1",
|
||||
"animate.css": "^4.1.1",
|
||||
"autoprefixer": "^10.4.13",
|
||||
"axios": "^1.1.3",
|
||||
"bcryptjs": "^2.4.3",
|
||||
"chart.js": "^3.9.1",
|
||||
"core-js": "^3.26.0",
|
||||
"date-fns": "^2.29.3",
|
||||
"dotenv": "^16.0.3",
|
||||
"echarts": "^5.4.0",
|
||||
"eslint-plugin-quasar": "^1.1.1",
|
||||
"eslint-plugin-standard": "^5.0.0",
|
||||
"graphql": "^16.6.0",
|
||||
"autoprefixer": "^10.4.21",
|
||||
"axios": "^1.8.4",
|
||||
"bcryptjs": "^3.0.2",
|
||||
"chart.js": "^4.4.8",
|
||||
"core-js": "^3.41.0",
|
||||
"crypto-browserify": "^3.12.1",
|
||||
"date-fns": "^4.1.0",
|
||||
"echarts": "5.6.0",
|
||||
"eslint-plugin-n": "^17.16.2",
|
||||
"eslint-plugin-quasar": "^1.1.0",
|
||||
"graphql": "^16.10.0",
|
||||
"graphql-tag": "^2.12.6",
|
||||
"gsap": "^3.11.3",
|
||||
"jquery": "^3.6.1",
|
||||
"js-cookie": "^3.0.1",
|
||||
"gsap": "^3.12.7",
|
||||
"html2pdf.js": "^0.10.3",
|
||||
"jquery": "^3.7.1",
|
||||
"js-cookie": "^3.0.5",
|
||||
"jsbarcode": "^3.11.6",
|
||||
"leaflet": "^1.9.4",
|
||||
"leaflet-routing-machine": "^3.2.12",
|
||||
"leaflet.markercluster": "^1.5.3",
|
||||
"localforage": "^1.10.0",
|
||||
"lodash": "^4.17.21",
|
||||
"normalize.css": "^8.0.1",
|
||||
"npm": "^9.1.1",
|
||||
"nprogress": "^0.2.0",
|
||||
"pinia": "^2.0.23",
|
||||
"prerender-spa-plugin": "^3.4.0",
|
||||
"quasar": "^2.10.1",
|
||||
"pinia": "^3.0.1",
|
||||
"qrcode-vue3": "^1.7.1",
|
||||
"quasar": "^2.18.1",
|
||||
"quasar-extras": "^2.0.9",
|
||||
"register-service-worker": "^1.7.2",
|
||||
"vee-validate": "^4.7.2",
|
||||
"vue": "^3.2.45",
|
||||
"vue-chart-3": "^3.1.8",
|
||||
"scrollreveal": "^4.0.9",
|
||||
"typescript-eslint": "^8.27.0",
|
||||
"vee-validate": "^4.15.0",
|
||||
"vue": "^3.5.13",
|
||||
"vue-class-component": "^8.0.0-rc.1",
|
||||
"vue-country-code": "^1.1.3",
|
||||
"vue-echarts": "^6.2.3",
|
||||
"vue-i18n": "^9.2.2",
|
||||
"vue-echarts": "^7.0.3",
|
||||
"vue-i18n": "^11.1.2",
|
||||
"vue-idb": "^0.2.0",
|
||||
"vue-loader": "^17.0.1",
|
||||
"vue-image-zoomer": "^2.4.4",
|
||||
"vue-property-decorator": "^10.0.0-rc.3",
|
||||
"vue-router": "^4.1.6",
|
||||
"vue-scroll-reveal": "^1.0.11",
|
||||
"vue-router": "^4.5.0",
|
||||
"vue-scroll-reveal": "^2.1.0",
|
||||
"vue-social-sharing": "^4.0.0-alpha4",
|
||||
"vue-svgicon": "^4.0.0-alpha.3",
|
||||
"vue-timeago3": "^2.3.2",
|
||||
"vue2-dragula": "^2.5.5",
|
||||
"vue3-pdf-app": "^1.0.3",
|
||||
"vue3-qr-reader": "^1.0.0",
|
||||
"vuex": "^4.1.0",
|
||||
"vuex-router-sync": "^6.0.0-rc.1"
|
||||
"vuex-router-sync": "^6.0.0-rc.1",
|
||||
"workbox-core": "^7.3.0",
|
||||
"workbox-precaching": "^7.3.0",
|
||||
"workbox-routing": "^7.3.0",
|
||||
"workbox-strategies": "^7.3.0",
|
||||
"workbox-window": "^7.3.0"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@quasar/app": "^3.3.3",
|
||||
"@types/bcryptjs": "^2.4.2",
|
||||
"@types/dotenv": "^8.2.0",
|
||||
"@types/googlemaps": "^3.43.3",
|
||||
"@types/jest": "^29.2.2",
|
||||
"@types/js-cookie": "^3.0.2",
|
||||
"@types/node": "18.11.9",
|
||||
"@types/nprogress": "^0.2.0",
|
||||
"@types/vue-tel-input": "^2.1.2",
|
||||
"@types/vuelidate": "^0.7.15",
|
||||
"@typescript-eslint/eslint-plugin": "^5.42.1",
|
||||
"@typescript-eslint/parser": "^5.42.1",
|
||||
"eslint": "^8.27.0",
|
||||
"eslint-config-prettier": "^8.5.0",
|
||||
"eslint-plugin-import": "^2.26.0",
|
||||
"eslint-plugin-node": "^11.1.1",
|
||||
"eslint-plugin-promise": "^6.1.1",
|
||||
"eslint-plugin-vue": "^9.7.0",
|
||||
"@eslint/js": "^9.23.0",
|
||||
"@intlify/unplugin-vue-i18n": "^6.0.5",
|
||||
"@quasar/app-vite": "^2.1.4",
|
||||
"@types/google.maps": "^3.58.1",
|
||||
"@types/jest": "^29.5.14",
|
||||
"@types/js-cookie": "^3.0.6",
|
||||
"@types/node": "^22.13.11",
|
||||
"@types/nprogress": "^0.2.3",
|
||||
"@types/vue-tel-input": "^2.1.7",
|
||||
"@types/vuelidate": "^0.7.22",
|
||||
"@vue/devtools": "^7.7.2",
|
||||
"@vue/eslint-config-prettier": "^10.2.0",
|
||||
"@vue/eslint-config-typescript": "^14.5.0",
|
||||
"autoprefixer": "^10.4.21",
|
||||
"eslint": "9",
|
||||
"eslint-plugin-import": "^2.31.0",
|
||||
"eslint-plugin-vue": "^10.0.0",
|
||||
"file-loader": "^6.2.0",
|
||||
"html-webpack-plugin": "^5.5.0",
|
||||
"http-proxy-middleware": "^2.0.6",
|
||||
"jest": "^29.3.1",
|
||||
"globals": "^16.0.0",
|
||||
"http-proxy-middleware": "^3.0.3",
|
||||
"jest": "^29.7.0",
|
||||
"json-loader": "^0.5.7",
|
||||
"node-sass": "7.0.1",
|
||||
"npm-check-updates": "^16.3.25",
|
||||
"optimize-css-assets-webpack-plugin": "^6.0.1",
|
||||
"postcss": "^8.4.19",
|
||||
"postcss-loader": "^7.0.1",
|
||||
"sass-loader": "^13.2.0",
|
||||
"strip-ansi": "=7.0.1",
|
||||
"ts-jest": "^29.0.3",
|
||||
"ts-loader": "^9.4.1",
|
||||
"tslint": "^6.1.3",
|
||||
"tslint-config-standard": "^9.0.0",
|
||||
"tslint-loader": "^3.5.4",
|
||||
"typescript": "^4.8.4",
|
||||
"nodemon": "^3.1.9",
|
||||
"npm-check-updates": "^17.1.16",
|
||||
"parcel": "^2.14.1",
|
||||
"postcss": "^8.5.3",
|
||||
"postcss-loader": "^8.1.1",
|
||||
"prettier": "3",
|
||||
"strip-ansi": "=7.1.0",
|
||||
"ts-jest": "^29.2.6",
|
||||
"typescript": "5.7.3",
|
||||
"vite-plugin-checker": "^0.9.1",
|
||||
"vue-cli-plugin-element-ui": "^1.1.4",
|
||||
"vue-eslint-parser": "^10.1.1",
|
||||
"vue-tsc": "^2.2.8",
|
||||
"vueify": "^9.4.1",
|
||||
"webpack": "^5.75.0",
|
||||
"workbox-webpack-plugin": "^6.5.4"
|
||||
"workbox-build": "^7.3.0"
|
||||
},
|
||||
"browser": {
|
||||
"crypto": false
|
||||
},
|
||||
"browserslist": [
|
||||
"last 16 Chrome versions",
|
||||
"last 16 Firefox versions",
|
||||
"last 4 Edge versions",
|
||||
"last 13 Safari versions",
|
||||
"last 16 Android versions",
|
||||
"last 16 ChromeAndroid versions",
|
||||
"last 16 FirefoxAndroid versions",
|
||||
"last 12 iOS versions",
|
||||
"last 7 Opera versions"
|
||||
],
|
||||
"engines": {
|
||||
"node": ">= 16.14.0",
|
||||
"npm": ">= 6.14.8",
|
||||
"node": "^28 || ^26 || ^24 || ^22 || ^20 || ^18",
|
||||
"npm": ">= 6.13.4",
|
||||
"yarn": ">= 1.21.1"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "piuchebuono",
|
||||
"version": "1.2.28",
|
||||
"version": "1.2.29",
|
||||
"description": "PiuCheBuono",
|
||||
"productName": "PiuCheBuono",
|
||||
"author": "Surya",
|
||||
@@ -9,11 +9,11 @@
|
||||
"license": "MIT",
|
||||
"type": "module",
|
||||
"scripts": {
|
||||
"dev": "PORT=8085;APP_VERSION='1.2.28' quasar dev",
|
||||
"dev": "PORT=8085 APP_VERSION='1.2.29' quasar dev",
|
||||
"dev_noCheck": "SKIP_TSC=true quasar dev",
|
||||
"build": "quasar build",
|
||||
"buildpwa": "NODE_ENV=production quasar build -m pwa",
|
||||
"buildpwatest": "NODE_ENV=production quasar build -m pwa",
|
||||
"buildpwa": "NODE_ENV=production APP_VERSION='1.2.29' quasar build -m pwa",
|
||||
"buildpwatest": "NODE_ENV=production APP_VERSION='1.2.29' quasar build -m pwa",
|
||||
"type-check": "vue-tsc --noEmit",
|
||||
"type-check:watch": "vue-tsc --noEmit --watch",
|
||||
"buildspa": "quasar build -m spa",
|
||||
@@ -21,33 +21,34 @@
|
||||
"lintfile": "eslint --ext .js,.ts,.vue --ignore-path .gitignore ./ > file.out.txt",
|
||||
"lintfileNoJS": "eslint --ext .ts,.vue --ignore-path .gitignore ./ > file.out.txt",
|
||||
"fix": "eslint -c ./eslint.config.js \"./src*/**/*.{ts,js,cjs,mjs,vue}\" --ignore-pattern .gitignore ./ --fix > file.out.txt",
|
||||
"pwa": "NODE_ENV=development:PORT=8095:APP_VERSION='1.2.28' quasar dev -m pwa",
|
||||
"spa": "NODE_ENV=development:PORT=8085:APP_VERSION='1.2.28' quasar dev",
|
||||
"pwa": "NODE_ENV=development PORT=8085 APP_VERSION='1.2.29' quasar dev -m pwa",
|
||||
"spa": "NODE_ENV=development PORT=8085 APP_VERSION='1.2.29' quasar dev",
|
||||
"debug": "quasar dev --mode debug",
|
||||
"test": "echo \"No test specified\" && exit 0",
|
||||
"generate-sw": "workbox generateSW workbox-config.js",
|
||||
"postinstall": "quasar prepare"
|
||||
},
|
||||
"dependencies": {
|
||||
"@cubejs-client/core": "^1.2.13",
|
||||
"@cubejs-client/core": "^1.2.26",
|
||||
"@quasar/extras": "^1.16.17",
|
||||
"@quasar/quasar-ui-qcalendar": "^4.1.2",
|
||||
"@types/leaflet": "^1.9.16",
|
||||
"@types/jsbarcode": "^3.11.4",
|
||||
"@types/leaflet": "^1.9.17",
|
||||
"@vue/compat": "^3.5.13",
|
||||
"@vue/compiler-sfc": "^3.5.13",
|
||||
"@vuelidate/core": "^2.0.3",
|
||||
"@vuelidate/validators": "^2.0.4",
|
||||
"acorn": "^8.14.0",
|
||||
"acorn": "^8.14.1",
|
||||
"animate.css": "^4.1.1",
|
||||
"autoprefixer": "^10.4.20",
|
||||
"axios": "^1.8.1",
|
||||
"autoprefixer": "^10.4.21",
|
||||
"axios": "^1.8.4",
|
||||
"bcryptjs": "^3.0.2",
|
||||
"chart.js": "^4.4.8",
|
||||
"core-js": "^3.41.0",
|
||||
"crypto-browserify": "^3.12.1",
|
||||
"date-fns": "^4.1.0",
|
||||
"echarts": "5.6.0",
|
||||
"eslint-plugin-n": "^17.15.1",
|
||||
"eslint-plugin-n": "^17.16.2",
|
||||
"eslint-plugin-quasar": "^1.1.0",
|
||||
"graphql": "^16.10.0",
|
||||
"graphql-tag": "^2.12.6",
|
||||
@@ -55,6 +56,7 @@
|
||||
"html2pdf.js": "^0.10.3",
|
||||
"jquery": "^3.7.1",
|
||||
"js-cookie": "^3.0.5",
|
||||
"jsbarcode": "^3.11.6",
|
||||
"leaflet": "^1.9.4",
|
||||
"leaflet-routing-machine": "^3.2.12",
|
||||
"leaflet.markercluster": "^1.5.3",
|
||||
@@ -64,17 +66,17 @@
|
||||
"nprogress": "^0.2.0",
|
||||
"pinia": "^3.0.1",
|
||||
"qrcode-vue3": "^1.7.1",
|
||||
"quasar": "^2.18.0",
|
||||
"quasar": "^2.18.1",
|
||||
"quasar-extras": "^2.0.9",
|
||||
"register-service-worker": "^1.7.2",
|
||||
"scrollreveal": "^4.0.9",
|
||||
"typescript-eslint": "^8.25.0",
|
||||
"typescript-eslint": "^8.27.0",
|
||||
"vee-validate": "^4.15.0",
|
||||
"vue": "^3.5.13",
|
||||
"vue-class-component": "^8.0.0-rc.1",
|
||||
"vue-country-code": "^1.1.3",
|
||||
"vue-echarts": "^7.0.3",
|
||||
"vue-i18n": "^11.1.1",
|
||||
"vue-i18n": "^11.1.2",
|
||||
"vue-idb": "^0.2.0",
|
||||
"vue-image-zoomer": "^2.4.4",
|
||||
"vue-property-decorator": "^10.0.0-rc.3",
|
||||
@@ -95,41 +97,41 @@
|
||||
"workbox-window": "^7.3.0"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@eslint/js": "^9.21.0",
|
||||
"@intlify/unplugin-vue-i18n": "^6.0.3",
|
||||
"@quasar/app-vite": "^2.1.1",
|
||||
"@types/bcryptjs": "^2.4.6",
|
||||
"@eslint/js": "^9.23.0",
|
||||
"@intlify/unplugin-vue-i18n": "^6.0.5",
|
||||
"@quasar/app-vite": "^2.1.4",
|
||||
"@types/google.maps": "^3.58.1",
|
||||
"@types/jest": "^29.5.14",
|
||||
"@types/js-cookie": "^3.0.6",
|
||||
"@types/node": "^22.13.8",
|
||||
"@types/node": "^22.13.11",
|
||||
"@types/nprogress": "^0.2.3",
|
||||
"@types/vue-tel-input": "^2.1.7",
|
||||
"@types/vuelidate": "^0.7.22",
|
||||
"@vue/devtools": "^7.7.2",
|
||||
"@vue/eslint-config-prettier": "^10.2.0",
|
||||
"@vue/eslint-config-typescript": "^14.4.0",
|
||||
"autoprefixer": "^10.4.20",
|
||||
"@vue/eslint-config-typescript": "^14.5.0",
|
||||
"autoprefixer": "^10.4.21",
|
||||
"eslint": "9",
|
||||
"eslint-plugin-import": "^2.31.0",
|
||||
"eslint-plugin-vue": "^9.32.0",
|
||||
"eslint-plugin-vue": "^10.0.0",
|
||||
"file-loader": "^6.2.0",
|
||||
"globals": "^16.0.0",
|
||||
"http-proxy-middleware": "^3.0.3",
|
||||
"jest": "^29.7.0",
|
||||
"json-loader": "^0.5.7",
|
||||
"nodemon": "^3.1.9",
|
||||
"npm-check-updates": "^17.1.15",
|
||||
"parcel": "^2.13.3",
|
||||
"npm-check-updates": "^17.1.16",
|
||||
"parcel": "^2.14.1",
|
||||
"postcss": "^8.5.3",
|
||||
"postcss-loader": "^8.1.1",
|
||||
"prettier": "3",
|
||||
"strip-ansi": "=7.1.0",
|
||||
"ts-jest": "^29.2.6",
|
||||
"typescript": "5.7.3",
|
||||
"vite-plugin-checker": "^0.9.0",
|
||||
"vite-plugin-checker": "^0.9.1",
|
||||
"vue-cli-plugin-element-ui": "^1.1.4",
|
||||
"vue-tsc": "^2.2.6",
|
||||
"vue-eslint-parser": "^10.1.1",
|
||||
"vue-tsc": "^2.2.8",
|
||||
"vueify": "^9.4.1",
|
||||
"workbox-build": "^7.3.0"
|
||||
},
|
||||
@@ -138,4 +140,4 @@
|
||||
"npm": ">= 6.13.4",
|
||||
"yarn": ">= 1.21.1"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "riso",
|
||||
"version": "1.2.28",
|
||||
"version": "1.2.29",
|
||||
"description": "Siamo la Rete Italiana di Scambio Orizzontale, abbiamo creato questa piattaforma per metterla al servizio di chi vuole riscoprire il valore della condivisione e della cooperazione. Valori semplici e profondi che ci aiutano a ritrovare il Senso della Vita, perduto in questa società consumista, e riporti quei Sani Pricìpi Naturali ed Umani di Fratellanza che intere popolazioni antiche conoscevano bene.",
|
||||
"productName": "Riso",
|
||||
"author": "Surya",
|
||||
@@ -9,11 +9,11 @@
|
||||
"license": "MIT",
|
||||
"type": "module",
|
||||
"scripts": {
|
||||
"dev": "PORT=8084:APP_VERSION='1.2.28' quasar dev",
|
||||
"dev": "PORT=8084 APP_VERSION='1.2.29' quasar dev",
|
||||
"dev_noCheck": "SKIP_TSC=true quasar dev",
|
||||
"build": "quasar build",
|
||||
"buildpwa": "NODE_ENV=production:APP_VERSION='1.2.28' quasar build -m pwa",
|
||||
"buildpwatest": "NODE_ENV=production:APP_VERSION='1.2.28' quasar build -m pwa",
|
||||
"buildpwa": "NODE_ENV=production APP_VERSION='1.2.29' quasar build -m pwa",
|
||||
"buildpwatest": "NODE_ENV=production APP_VERSION='1.2.29' quasar build -m pwa",
|
||||
"type-check": "vue-tsc --noEmit",
|
||||
"type-check:watch": "vue-tsc --noEmit --watch",
|
||||
"buildspa": "quasar build -m spa",
|
||||
@@ -21,8 +21,8 @@
|
||||
"lintfile": "eslint --ext .js,.ts,.vue --ignore-path .gitignore ./ > file.out.txt",
|
||||
"lintfileNoJS": "eslint --ext .ts,.vue --ignore-path .gitignore ./ > file.out.txt",
|
||||
"fix": "eslint -c ./eslint.config.js \"./src*/**/*.{ts,js,cjs,mjs,vue}\" --ignore-pattern .gitignore ./ --fix > file.out.txt",
|
||||
"pwa": "NODE_ENV=development:PORT=8099:APP_VERSION='1.2.28' quasar dev -m pwa",
|
||||
"spa": "NODE_ENV=development:PORT=8089:APP_VERSION='1.2.28' quasar dev",
|
||||
"pwa": "NODE_ENV=development PORT=8099 APP_VERSION='1.2.29' quasar dev -m pwa",
|
||||
"spa": "NODE_ENV=development PORT=8089 APP_VERSION='1.2.29' quasar dev",
|
||||
"debug": "quasar dev --mode debug",
|
||||
"test": "echo \"No test specified\" && exit 0",
|
||||
"generate-sw": "workbox generateSW workbox-config.js",
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
/* global workbox */
|
||||
/* global cfgenv */
|
||||
|
||||
const VITE_APP_VERSION = "1.2.28";
|
||||
const VITE_APP_VERSION = "1.2.29";
|
||||
|
||||
const CACHE_NAME = 'pwa-cache-' + VITE_APP_VERSION; // Nome della cache
|
||||
|
||||
@@ -259,89 +259,72 @@ if (workbox) {
|
||||
const DYNAMIC_CACHE = 'dynamic-cache-v2';
|
||||
const ENABLE_DYNAMIC_CACHING = true;
|
||||
const baseUrl = self.location.origin;
|
||||
console.log('baseUrl', baseUrl);
|
||||
const APP_DOMAIN = extractDomain(baseUrl);
|
||||
let API_DOMAIN = '';
|
||||
if (ISTEST) {
|
||||
API_DOMAIN = 'testapi.' + removeTestPrefix(APP_DOMAIN);
|
||||
} else {
|
||||
if (APP_DOMAIN.includes('localhost')) {
|
||||
API_DOMAIN = 'localhost:3000';
|
||||
} else {
|
||||
API_DOMAIN = 'api.' + APP_DOMAIN;
|
||||
}
|
||||
}
|
||||
const API_DOMAIN = determineApiDomain(APP_DOMAIN);
|
||||
|
||||
console.log('API_DOMAIN', API_DOMAIN);
|
||||
|
||||
// Funzione per gestire specificamente le richieste API
|
||||
// Funzione per determinare il dominio API
|
||||
function determineApiDomain(appDomain) {
|
||||
if (ISTEST) {
|
||||
return 'testapi.' + removeTestPrefix(appDomain);
|
||||
}
|
||||
return appDomain.includes('localhost') ? 'localhost:3000' : 'api.' + appDomain;
|
||||
}
|
||||
|
||||
// Funzione per gestire richieste API
|
||||
async function handleApiRequest(request) {
|
||||
const modifiedRequest = new Request(request.url, {
|
||||
method: request.method,
|
||||
headers: {
|
||||
...Object.fromEntries(request.headers.entries()),
|
||||
'Accept': 'application/json',
|
||||
},
|
||||
mode: 'cors',
|
||||
credentials: 'include', // Abilita le credenziali (cookie, token)
|
||||
});
|
||||
|
||||
try {
|
||||
const response = await fetch(modifiedRequest);
|
||||
const response = await fetch(request);
|
||||
|
||||
// Se la risposta non è valida, restituisci un errore personalizzato
|
||||
if (!response.ok) {
|
||||
console.warn('[SW] API Response Error:', response.status, response.statusText);
|
||||
|
||||
// Prova a recuperare una risposta dalla cache
|
||||
const cache = await caches.open('api-cache');
|
||||
const cachedResponse = await cache.match(request);
|
||||
if (cachedResponse) {
|
||||
return cachedResponse;
|
||||
}
|
||||
|
||||
// Fallback a una risposta personalizzata
|
||||
return new Response(JSON.stringify({
|
||||
error: 'API error',
|
||||
message: `❌ Invalid response from API: ${response.status} ${response.statusText}`,
|
||||
}), {
|
||||
status: response.status,
|
||||
headers: { 'Content-Type': 'application/json' },
|
||||
});
|
||||
}), { status: response.status, headers: { 'Content-Type': 'application/json' } });
|
||||
}
|
||||
|
||||
// Se la risposta è valida, restituiscila
|
||||
return response;
|
||||
} catch (error) {
|
||||
console.error('[Service Worker] API request error ❌:', error);
|
||||
|
||||
// Prova a recuperare una risposta dalla cache
|
||||
const cache = await caches.open('api-cache');
|
||||
const cachedResponse = await cache.match(request);
|
||||
if (cachedResponse) {
|
||||
return cachedResponse;
|
||||
}
|
||||
|
||||
// Restituisci una risposta di errore personalizzata
|
||||
return new Response(JSON.stringify({
|
||||
error: 'Network error',
|
||||
message: '❌ Unable to fetch from API: ' + error.message,
|
||||
}), {
|
||||
status: 503,
|
||||
headers: {
|
||||
'Content-Type': 'application/json',
|
||||
},
|
||||
});
|
||||
}), { status: 503, headers: { 'Content-Type': 'application/json' } });
|
||||
}
|
||||
}
|
||||
|
||||
// Funzione per effettuare una richiesta di rete e memorizzare nella cache
|
||||
async function fetchAndCache(request) {
|
||||
const cache = await caches.open(DYNAMIC_CACHE);
|
||||
try {
|
||||
const response = await fetch(request);
|
||||
|
||||
// Clona e salva la risposta nella cache solo se valida
|
||||
if (response.ok) {
|
||||
const responseClone = response.clone();
|
||||
cache.put(request, responseClone);
|
||||
}
|
||||
|
||||
return response;
|
||||
} catch (error) {
|
||||
console.error('[SW] Fetch and cache error ❌:', error);
|
||||
throw error;
|
||||
}
|
||||
}
|
||||
|
||||
// Strategia di caching: stale-while-revalidate
|
||||
async function cacheWithStaleWhileRevalidate(request, event) {
|
||||
const cache = await caches.open(CACHE_NAME);
|
||||
const cache = await caches.open(DYNAMIC_CACHE);
|
||||
|
||||
// Prova a recuperare la risorsa dalla cache
|
||||
const cachedResponse = await cache.match(request);
|
||||
if (cachedResponse) {
|
||||
// Restituisci la risposta in cache mentre aggiorni in background
|
||||
// Aggiorna in background mentre restituisci la risposta in cache
|
||||
event.waitUntil(fetchAndCache(request).catch((error) => {
|
||||
console.error('[SW] Background fetch and cache error ❌:', error);
|
||||
}));
|
||||
@@ -350,8 +333,7 @@ if (workbox) {
|
||||
|
||||
// Se non è in cache, fai la richiesta di rete
|
||||
try {
|
||||
const response = await fetchAndCache(request);
|
||||
return response;
|
||||
return await fetchAndCache(request);
|
||||
} catch (error) {
|
||||
console.error('[SW] Cache miss and network error ❌:', error);
|
||||
|
||||
@@ -359,40 +341,41 @@ if (workbox) {
|
||||
return new Response(JSON.stringify({
|
||||
error: 'Network error',
|
||||
message: 'Unable to fetch resource from network or cache.',
|
||||
}), {
|
||||
status: 503,
|
||||
headers: { 'Content-Type': 'application/json' },
|
||||
});
|
||||
}), { status: 503, headers: { 'Content-Type': 'application/json' } });
|
||||
}
|
||||
}
|
||||
|
||||
// Listener per gestire tutte le richieste
|
||||
self.addEventListener('fetch', (event) => {
|
||||
const request = event.request;
|
||||
const { request } = event;
|
||||
const url = new URL(request.url);
|
||||
try {
|
||||
|
||||
// Ignora richieste non gestibili
|
||||
if (request.method !== 'GET' || url.protocol !== 'https:') {
|
||||
return;
|
||||
}
|
||||
|
||||
// Gestione richieste API
|
||||
if (url.hostname === API_DOMAIN) {
|
||||
if (debug) {
|
||||
console.log('E\' una RICHIESTA API ! ')
|
||||
// Ignora richieste non gestibili
|
||||
if (request.method !== 'GET' || url.protocol !== 'https:') {
|
||||
return;
|
||||
}
|
||||
event.respondWith(handleApiRequest(request));
|
||||
return;
|
||||
}
|
||||
|
||||
if (debug) {
|
||||
console.log('E\' una RICHIESTA statica...')
|
||||
// Ignora richieste per file di sviluppo (es. /src/)
|
||||
if (url.pathname.startsWith('/src/') || url.search.includes('vue&type')) {
|
||||
return;
|
||||
}
|
||||
|
||||
// Gestione richieste API
|
||||
if (url.hostname === API_DOMAIN) {
|
||||
if (debug) console.log('E\' una RICHIESTA API!');
|
||||
event.respondWith(handleApiRequest(request));
|
||||
return;
|
||||
}
|
||||
|
||||
// Gestione risorse statiche e altre richieste
|
||||
if (debug) console.log('E\' una RICHIESTA statica...');
|
||||
event.respondWith(cacheWithStaleWhileRevalidate(request, event));
|
||||
} catch (error) {
|
||||
console.error('[Service Worker] Fetch error ❌:', error);
|
||||
}
|
||||
// Gestione risorse statiche e altre richieste
|
||||
event.respondWith(cacheWithStaleWhileRevalidate(request, event));
|
||||
});
|
||||
|
||||
|
||||
// Gestione degli errori non catturati
|
||||
self.addEventListener('unhandledrejection', event => {
|
||||
console.error('[Service Worker] Unhandled rejection ❌:', event.reason);
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"name": "Gruppo Macro",
|
||||
"short_name": "GruppoMacro",
|
||||
"description": "",
|
||||
"name": "Riso",
|
||||
"short_name": "Riso",
|
||||
"description": "Siamo la Rete Italiana di Scambio Orizzontale, abbiamo creato questa piattaforma per metterla al servizio di chi vuole riscoprire il valore della condivisione e della cooperazione. Valori semplici e profondi che ci aiutano a ritrovare il Senso della Vita, perduto in questa società consumista, e riporti quei Sani Pricìpi Naturali ed Umani di Fratellanza che intere popolazioni antiche conoscevano bene.",
|
||||
"display": "standalone",
|
||||
"orientation": "portrait",
|
||||
"background_color": "#fff",
|
||||
@@ -11,17 +11,47 @@
|
||||
"start_url": "/?homescreen=1",
|
||||
"icons": [
|
||||
{
|
||||
"src": "/images/gm-android-icon-512x512.png",
|
||||
"src:": "/images/riso-android-icon-512x512.png",
|
||||
"sizes": "512x512",
|
||||
"type": "image/png"
|
||||
},
|
||||
{
|
||||
"src": "/images/gm-android-icon-192x192.png",
|
||||
"src:": "/images/riso-android-icon-384x384.png",
|
||||
"sizes": "384x384",
|
||||
"type": "image/png"
|
||||
},
|
||||
{
|
||||
"src:": "/images/riso-android-icon-192x192.png",
|
||||
"sizes": "192x192",
|
||||
"type": "image/png"
|
||||
},
|
||||
{
|
||||
"src": "/images/gm-apple-touch-icon.png",
|
||||
"src:": "/images/riso-android-icon-144x144.png",
|
||||
"sizes": "144x144",
|
||||
"type": "image/png"
|
||||
},
|
||||
{
|
||||
"src:": "/images/riso-android-icon-96x96.png",
|
||||
"sizes": "96x96",
|
||||
"type": "image/png"
|
||||
},
|
||||
{
|
||||
"src:": "/images/riso-apple-icon-120x120.png",
|
||||
"sizes": "120x120",
|
||||
"type": "image/png"
|
||||
},
|
||||
{
|
||||
"src:": "/images/riso-apple-icon-144x144.png",
|
||||
"sizes": "144x144",
|
||||
"type": "image/png"
|
||||
},
|
||||
{
|
||||
"src:": "/images/riso-apple-icon-152x152.png",
|
||||
"sizes": "152x152",
|
||||
"type": "image/png"
|
||||
},
|
||||
{
|
||||
"src:": "/images/riso-apple-icon-180x180.png",
|
||||
"sizes": "180x180",
|
||||
"type": "image/png"
|
||||
}
|
||||
|
||||
@@ -5,9 +5,12 @@
|
||||
|
||||
import { register } from 'register-service-worker'
|
||||
|
||||
console.log('SWFILE: ', import.meta.env.VITE_SERVICE_WORKER_FILE);
|
||||
const SW_FILE = `/${import.meta.env.VITE_SERVICE_WORKER_FILE}`;
|
||||
|
||||
register(import.meta.env.VITE_SERVICE_WORKER_FILE, {
|
||||
|
||||
console.log('SWFILE: ', SW_FILE);
|
||||
|
||||
register(SW_FILE, {
|
||||
scope: '/',
|
||||
/************* ✨ Codeium Command ⭐ *************/
|
||||
/**
|
||||
|
||||
@@ -53,6 +53,7 @@ export default defineComponent({
|
||||
|
||||
const receiveRislist = computed(() => globalStore.datastat ? globalStore.datastat.receiveRislist : [])
|
||||
const receiveRislistgroup = computed(() => globalStore.datastat ? globalStore.datastat.receiveRislistgroup : [])
|
||||
const listlinksreg = computed(() => globalStore.datastat ? globalStore.datastat.listlinksreg : [])
|
||||
|
||||
const arrfilterand: any = ref([])
|
||||
const filtercustom: any = ref([])
|
||||
@@ -107,6 +108,8 @@ export default defineComponent({
|
||||
|
||||
function mounted() {
|
||||
|
||||
usersList.value.listlinkreg = listlinksreg
|
||||
|
||||
searchList.value = [
|
||||
{
|
||||
visible: true,
|
||||
@@ -190,6 +193,7 @@ export default defineComponent({
|
||||
|
||||
usersList.value.list = receiveRislist
|
||||
usersList.value.listgroup = receiveRislistgroup
|
||||
// usersList.value.listlinkreg = listlinksreg
|
||||
|
||||
loading.value = false
|
||||
}
|
||||
|
||||
@@ -41,7 +41,7 @@
|
||||
</CGridTableRec>
|
||||
</q-tab-panel>
|
||||
<q-tab-panel name="receivers">
|
||||
<div class="row centeritems">
|
||||
<div class="column centeritems">
|
||||
<q-btn-toggle
|
||||
v-if="arrTypesAccounts.length > 0"
|
||||
v-model="tipoConto"
|
||||
@@ -69,7 +69,7 @@
|
||||
:myuser="rec"
|
||||
:showBtnActivities="false"
|
||||
:sendRIS="tools.isUserOk() ? sendRIS : false"
|
||||
:actionType="actionType"
|
||||
:actionType="actionType"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
@@ -83,6 +83,7 @@
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="column"> </div>
|
||||
<br />
|
||||
<div class="row centeritems justify-evenly items-center">
|
||||
<q-btn
|
||||
|
||||
@@ -277,6 +277,8 @@ export default defineComponent({
|
||||
}
|
||||
|
||||
async function clickshare() {
|
||||
tools.addToTemporaryLinkReg()
|
||||
|
||||
const mytext = await tools.sendMsgTelegramCmd(
|
||||
$q,
|
||||
t,
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
import type { PropType} from 'vue';
|
||||
import type { PropType } from 'vue';
|
||||
import { defineComponent, onMounted, ref, watch } from 'vue'
|
||||
import { useUserStore } from '@store/UserStore'
|
||||
import type { ICircuit, IUserFields} from 'model';
|
||||
import type { ICircuit, IUserFields } from 'model';
|
||||
import { IImgGallery, IUserProfile } from 'model'
|
||||
import { costanti } from '@costanti'
|
||||
import { shared_consts } from '@src/common/shared_vuejs'
|
||||
@@ -123,6 +123,15 @@ export default defineComponent({
|
||||
emit('showInnerDialog', showsendCoinTo.value)
|
||||
}
|
||||
|
||||
function clickToUser(username: string) {
|
||||
if (props.actionType === costanti.ACTIONTYPE.SEND_RIS)
|
||||
naviga(`/my/` + username + '?sr=0')
|
||||
else if (props.actionType === costanti.ACTIONTYPE.LINK_REG)
|
||||
naviga(`/registrati/` + username)
|
||||
else
|
||||
naviga(`/my/` + username)
|
||||
}
|
||||
|
||||
onMounted(mounted)
|
||||
|
||||
return {
|
||||
@@ -138,6 +147,7 @@ export default defineComponent({
|
||||
showAccountInfo,
|
||||
showsendCoinTo,
|
||||
showsendCoin,
|
||||
clickToUser,
|
||||
}
|
||||
},
|
||||
})
|
||||
|
||||
@@ -3,11 +3,7 @@
|
||||
<q-item class="q-my-sm" clickable>
|
||||
<q-item-section
|
||||
avatar
|
||||
@click="
|
||||
actionType === costanti.ACTIONTYPE.SEND_RIS
|
||||
? naviga(`/my/` + contact.username + '?sr=0')
|
||||
: naviga(`/my/` + contact.username)
|
||||
"
|
||||
@click="clickToUser(contact.username)"
|
||||
>
|
||||
<q-avatar size="60px">
|
||||
<q-img
|
||||
@@ -20,11 +16,7 @@
|
||||
</q-item-section>
|
||||
|
||||
<q-item-section
|
||||
@click="
|
||||
actionType === costanti.ACTIONTYPE.SEND_RIS
|
||||
? naviga(`/my/` + contact.username + '?sr=0')
|
||||
: naviga(`/my/` + contact.username)
|
||||
"
|
||||
@click="clickToUser(contact.username)"
|
||||
>
|
||||
<q-item-label v-if="labelextra && labelextra !== contact.username"
|
||||
><strong>{{ labelextra }}</strong></q-item-label
|
||||
|
||||
@@ -1,7 +1,10 @@
|
||||
import { tools } from '@tools'
|
||||
import { costanti } from '@costanti'
|
||||
import { computed, defineComponent, onMounted, reactive, ref, watch } from 'vue'
|
||||
import { useQuasar } from 'quasar'
|
||||
import { useI18n } from 'vue-i18n'
|
||||
import { CContactUser } from '@src/components/CContactUser'
|
||||
import { CMyUser } from '@src/components/CMyUser'
|
||||
import { DefaultProfile, useUserStore } from '@store/UserStore'
|
||||
|
||||
import { useRoute, useRouter } from 'vue-router'
|
||||
@@ -11,7 +14,7 @@ import { useGlobalStore } from '@store/globalStore'
|
||||
export default defineComponent({
|
||||
name: 'CRegistration',
|
||||
emits: ['regEventEmail'],
|
||||
components: {},
|
||||
components: { CMyUser, CContactUser },
|
||||
props: {
|
||||
invited: {
|
||||
type: String,
|
||||
@@ -43,8 +46,12 @@ export default defineComponent({
|
||||
const noInvited = ref(false)
|
||||
const start = ref(false)
|
||||
|
||||
const listlinksreg = computed(() => globalStore.datastat ? globalStore.datastat.listlinksreg : [])
|
||||
|
||||
const slide = ref('start')
|
||||
|
||||
const actionType = ref(costanti.ACTIONTYPE.LINK_REG)
|
||||
|
||||
function clickToRegister() {
|
||||
|
||||
//if (site.value.confpages.enableRegByBot) {
|
||||
@@ -59,6 +66,8 @@ export default defineComponent({
|
||||
const invitante = tools.getInvitante()
|
||||
console.log('invitante', invitante)
|
||||
|
||||
|
||||
|
||||
if (props.invited) {
|
||||
start.value = true
|
||||
chooseReg.value = true
|
||||
@@ -99,6 +108,9 @@ export default defineComponent({
|
||||
slide,
|
||||
regEventEmail,
|
||||
buttRegistrati,
|
||||
costanti,
|
||||
listlinksreg,
|
||||
actionType,
|
||||
}
|
||||
},
|
||||
})
|
||||
|
||||
@@ -4,7 +4,6 @@
|
||||
class="row q-ma-sm centermydiv2 q-pa-sm justify-center align-center"
|
||||
>
|
||||
<div v-if="!start">
|
||||
|
||||
<q-btn
|
||||
rounded
|
||||
glossy
|
||||
@@ -28,8 +27,14 @@
|
||||
height="500px"
|
||||
:class="`text-white bg-primary shadow-1 rounded-borders`"
|
||||
>
|
||||
<q-carousel-slide name="start" class="column no-wrap flex-center">
|
||||
<q-icon name="fas fa-user-plus" size="56px" />
|
||||
<q-carousel-slide
|
||||
name="start"
|
||||
class="column no-wrap flex-center"
|
||||
>
|
||||
<q-icon
|
||||
name="fas fa-user-plus"
|
||||
size="56px"
|
||||
/>
|
||||
<div class="q-mt-md text-center">
|
||||
<span class="text-h6 text-white"> {{ $t('reg.invitante') }}</span>
|
||||
<q-card class="dialog_card q-mb-lg">
|
||||
@@ -40,7 +45,7 @@
|
||||
size="lg"
|
||||
color="positive"
|
||||
@click="
|
||||
slide = 'second';
|
||||
listlinksreg.length > 0 ? slide = 'sceglilink' : slide = 'second';
|
||||
noInvited = false;
|
||||
chooseReg = true;
|
||||
"
|
||||
@@ -65,11 +70,49 @@
|
||||
</q-card>
|
||||
</div>
|
||||
</q-carousel-slide>
|
||||
<q-carousel-slide name="sceglilink">
|
||||
<q-card class="dialog_card q-mb-lg">
|
||||
<q-card-section class="column q-ma-sm q-pa-sm q-col-gutter-sm">
|
||||
<div
|
||||
v-for="(rec, i) in listlinksreg"
|
||||
:key="i"
|
||||
>
|
||||
<div class="q-pa-xs q-ma-xs q-border q-rounded my-custom-border">
|
||||
<CMyUser
|
||||
:mycontact="rec"
|
||||
:visu="costanti.FIND_PEOPLE"
|
||||
@setCmd="tools.setCmd"
|
||||
:actionType="actionType"
|
||||
>
|
||||
</CMyUser>
|
||||
<!--<CContactUser
|
||||
:myuser="rec"
|
||||
:showBtnActivities="false"
|
||||
:sendRIS="false"
|
||||
:actionType="actionType"
|
||||
/>
|
||||
</div>-->
|
||||
</div>
|
||||
|
||||
<q-btn
|
||||
rounded
|
||||
glossy
|
||||
size="md"
|
||||
color="primary"
|
||||
@click="slide = 'start'"
|
||||
:label="$t('dialog.indietro')"
|
||||
>
|
||||
</q-btn>
|
||||
</div>
|
||||
</q-card-section>
|
||||
</q-card>
|
||||
</q-carousel-slide>
|
||||
<q-carousel-slide name="second">
|
||||
<div v-if="noInvited" class="text-h7">
|
||||
<div class="text-center text-bold text-h6">
|
||||
Se ancora non sei stato invitato:
|
||||
</div>
|
||||
<div
|
||||
v-if="noInvited"
|
||||
class="text-h7"
|
||||
>
|
||||
<div class="text-center text-bold text-h6">Se ancora non sei stato invitato:</div>
|
||||
<br />
|
||||
1️⃣ 👉🏻 Entra nei gruppi Territoriali su Telegram:<br />
|
||||
<div class="text-center">
|
||||
@@ -86,14 +129,17 @@
|
||||
</div>
|
||||
<br />
|
||||
|
||||
2️⃣ 👉🏻 sul post del canale fissato in alto, troverai tutte le info sul
|
||||
progetto e su come entrare nel gruppo della tua provincia.<br />
|
||||
Potrai cosi richiedere il link una volta entrato nella chat di
|
||||
gruppo.<br />
|
||||
2️⃣ 👉🏻 sul post del canale fissato in alto, troverai tutte le info sul progetto e su come entrare nel gruppo
|
||||
della tua provincia.<br />
|
||||
Potrai cosi richiedere il link una volta entrato nella chat di gruppo.<br />
|
||||
</div>
|
||||
<div v-else-if="chooseReg">
|
||||
<div class="row justify-center items-center">
|
||||
<q-icon name="fas fa-user-plus" size="27px" class="q-mx-md" />
|
||||
<q-icon
|
||||
name="fas fa-user-plus"
|
||||
size="27px"
|
||||
class="q-mx-md"
|
||||
/>
|
||||
<span class="text-h6 text-white"> {{ $t('reg.page_title') }}</span>
|
||||
<q-card class="q-mt-sm dialog_card q-mb-sm">
|
||||
<q-card-section>
|
||||
@@ -109,31 +155,22 @@
|
||||
icon="fab fa-telegram"
|
||||
size="md"
|
||||
color="primary"
|
||||
:href="
|
||||
invited
|
||||
? tools.getLinkBotTelegram(invited, regexpire)
|
||||
: `/bot`
|
||||
"
|
||||
:href="invited ? tools.getLinkBotTelegram(invited, regexpire) : `/bot`"
|
||||
:label="$t('reg.bytelegram')"
|
||||
>
|
||||
<q-badge color="red" align="bottom" floating
|
||||
<q-badge
|
||||
color="red"
|
||||
align="bottom"
|
||||
floating
|
||||
>Consigliato</q-badge
|
||||
>
|
||||
</q-btn>
|
||||
<br>
|
||||
<div
|
||||
:class="
|
||||
$q.dark.isActive
|
||||
? `text-white`
|
||||
: `text-black` + ` col-12 text-center`
|
||||
"
|
||||
>
|
||||
<br />
|
||||
<div :class="$q.dark.isActive ? `text-white` : `text-black` + ` col-12 text-center`">
|
||||
<div class="bg-grey-4">
|
||||
<br />
|
||||
se non hai Telegram puoi registrarti con solo l'email ma
|
||||
<span style="text-decoration: underline"
|
||||
>non potrai contattare gli iscritti</span
|
||||
>.
|
||||
<span style="text-decoration: underline">non potrai contattare gli iscritti</span>.
|
||||
<q-btn
|
||||
rounded
|
||||
class="flex-item-btn col-xs-12 col-sm-6"
|
||||
@@ -149,7 +186,10 @@
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div v-else style="margin-top: 10px; text-align: center">
|
||||
<div
|
||||
v-else
|
||||
style="margin-top: 10px; text-align: center"
|
||||
>
|
||||
Registrati<br />
|
||||
<q-btn
|
||||
rounded
|
||||
@@ -169,8 +209,7 @@
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script lang="ts" src="./CRegistration.ts">
|
||||
</script>
|
||||
<script lang="ts" src="./CRegistration.ts"></script>
|
||||
<style lang="scss" scoped>
|
||||
@import './CRegistration.scss';
|
||||
</style>
|
||||
|
||||
@@ -297,7 +297,6 @@ export default defineComponent({
|
||||
await aggiorna()
|
||||
|
||||
showpage.value = true
|
||||
loading.value = false
|
||||
|
||||
}
|
||||
|
||||
@@ -305,6 +304,8 @@ export default defineComponent({
|
||||
console.log('group', props.to_group)
|
||||
bothcircuits.value = userStore.getMyCircuitsInCommonByGroup(props.to_group)
|
||||
|
||||
console.log('bothcircuits', bothcircuits.value)
|
||||
|
||||
if (props.circuitname) {
|
||||
circuitsel.value = props.circuitname
|
||||
} else {
|
||||
@@ -318,6 +319,7 @@ export default defineComponent({
|
||||
|
||||
showpage.value = true
|
||||
}
|
||||
|
||||
if (props.to_contocom) {
|
||||
bothcircuits.value = userStore.getMyCircuits()
|
||||
|
||||
|
||||
@@ -125,7 +125,7 @@
|
||||
<q-img ratio="1" fit="cover" :src="getMyImg()" :alt="Username()" img-class="imgprofile_small"
|
||||
stretch="false" />
|
||||
</q-avatar>
|
||||
<q-btn v-else-if="$q.screen.gt.sm" class="q-mx-xs iconprofile_small" round dense flat
|
||||
<q-btn v-else-if="$q.screen.gt.xs" class="q-mx-xs iconprofile_small" round dense flat
|
||||
@click="rightDrawerOpen = !rightDrawerOpen" :icon="getMyImgforIcon()" :color="getcolormenu()">
|
||||
</q-btn>
|
||||
</q-toolbar>
|
||||
|
||||
@@ -16,12 +16,14 @@ export default defineComponent({
|
||||
},
|
||||
|
||||
setup() {
|
||||
const { t } = useI18n()
|
||||
|
||||
function logoimg() {
|
||||
return `${tools.getimglogo()}`
|
||||
}
|
||||
|
||||
function logoalt() {
|
||||
const { t } = useI18n();
|
||||
|
||||
return t('ws.sitename')
|
||||
}
|
||||
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
const msg_website_it = {
|
||||
ws: {
|
||||
sitename: 'Gruppo Macro',
|
||||
siteshortname: 'Gruppo Macro',
|
||||
description: '',
|
||||
keywords: '',
|
||||
sitename: 'Riso',
|
||||
siteshortname: 'RISO',
|
||||
description: 'Siamo la Rete Italiana di Scambio Orizzontale, abbiamo creato questa piattaforma per metterla al servizio di chi vuole riscoprire il valore della condivisione e della cooperazione. Valori semplici e profondi che ci aiutano a ritrovare il Senso della Vita, perduto in questa società consumista, e riporti quei Sani Pricìpi Naturali ed Umani di Fratellanza che intere popolazioni antiche conoscevano bene.',
|
||||
keywords: 'riso, piattaforma di scambio, rete italiana scambio orizzontale, riso app, riso piattaforma, scambio e baratto, momenta RIS',
|
||||
},
|
||||
hours: {
|
||||
descr: 'Descrizione',
|
||||
@@ -16,20 +16,29 @@ const msg_website_it = {
|
||||
pages: {
|
||||
home: 'Home',
|
||||
profile: 'Profilo',
|
||||
install_site: 'Installa Sito',
|
||||
profile2: 'ProfiloU',
|
||||
mypage2: 'mypage2',
|
||||
myservice2: 'myservice2',
|
||||
myhosps2: 'myhosps2',
|
||||
mygood2: 'mygood2',
|
||||
catalogo: 'Catalogo',
|
||||
fundraising: 'Sostieni il Progetto',
|
||||
notifs: 'Configura le Notifiche',
|
||||
unsubscribe: 'Disiscriviti',
|
||||
unsubscribe_user: 'Disiscriviti User',
|
||||
test: 'Test',
|
||||
projects: 'Progetti',
|
||||
report: 'Report Ore',
|
||||
producer: 'Produttore',
|
||||
orderinfo: 'Ordini Effettuati',
|
||||
products: 'Prodotti',
|
||||
productslist: 'Lista Prodotti',
|
||||
collabora: 'Collabora',
|
||||
storehouses: 'Magazzino',
|
||||
departments: 'Uffici',
|
||||
orders: 'Ordini Ricevuti',
|
||||
orders2: 'Ordini Ricevuti',
|
||||
sharewithus: 'Condividi con Noi',
|
||||
checkout: 'Carrello',
|
||||
payment: 'Pagamenti',
|
||||
regok: 'Registrazione Confermata',
|
||||
presentazione: 'Presentazione',
|
||||
presentazione2: 'Presentazione',
|
||||
@@ -80,6 +89,9 @@ const msg_website_it = {
|
||||
projectsShared: 'Condivisi da me',
|
||||
myprojects: 'Privati',
|
||||
favproj: 'Favoriti',
|
||||
admin_ecommerce: 'ECommerce',
|
||||
ecommerce: 'Prodotti',
|
||||
ecommerce_menu: 'ECommerce1',
|
||||
hours: 'Ore',
|
||||
department: 'Uffici',
|
||||
title: 'Titolo',
|
||||
@@ -109,9 +121,15 @@ const msg_website_it = {
|
||||
only_residenti: 'Solo Residenti',
|
||||
only_consiglio: 'Solo Consiglieri',
|
||||
color: 'Colore',
|
||||
mainMenu: 'Menu Principale',
|
||||
subtitle: 'Sottotitolo',
|
||||
lang: 'Lingua',
|
||||
keywords: 'Parole Chiave',
|
||||
desctiption: 'Descrizione',
|
||||
heightimg: 'Altezza Immagine',
|
||||
},
|
||||
msg: {
|
||||
myAppName: 'Più che Buono',
|
||||
myAppName: 'Riso',
|
||||
myAppDescription: 'Il primo Vero Social Libero, Equo e Solidale, dove Vive Consapevolezza e Aiuto Comunitario. Gratuito',
|
||||
underconstruction: 'App in costruzione...',
|
||||
myDescriz: '',
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/* GRUPPOMACRO APP
|
||||
/* RISO APP
|
||||
*/
|
||||
import {
|
||||
import type {
|
||||
IListRoutes,
|
||||
ILang,
|
||||
IPreloadImages,
|
||||
@@ -68,6 +68,39 @@ function getDynamicPages(site: ISites): IListRoutes[] {
|
||||
inmenu: false,
|
||||
infooter: false,
|
||||
},
|
||||
{
|
||||
active: true,
|
||||
order: 12,
|
||||
path: '/goods',
|
||||
materialIcon: 'fas fa-tshirt',
|
||||
name: 'mypages.goods',
|
||||
component: () => import('@src/root/goods/goods.vue'),
|
||||
meta: { requiresAuth: true },
|
||||
inmenu: true,
|
||||
infooter: true,
|
||||
},
|
||||
{
|
||||
active: true,
|
||||
order: 15,
|
||||
path: '/services',
|
||||
materialIcon: 'fas fa-house-user',
|
||||
name: 'mypages.services',
|
||||
component: () => import('@src/root/services/services.vue'),
|
||||
meta: { requiresAuth: true },
|
||||
inmenu: true,
|
||||
infooter: true,
|
||||
},
|
||||
{
|
||||
active: true,
|
||||
order: 15,
|
||||
path: '/activities',
|
||||
materialIcon: 'fas fa-house-user',
|
||||
name: 'mypages.activities',
|
||||
component: () => import('@src/root/activities/activities.vue'),
|
||||
meta: { requiresAuth: true },
|
||||
inmenu: false,
|
||||
infooter: false,
|
||||
},
|
||||
{
|
||||
active: true,
|
||||
order: 15,
|
||||
@@ -79,6 +112,17 @@ function getDynamicPages(site: ISites): IListRoutes[] {
|
||||
inmenu: false,
|
||||
infooter: false,
|
||||
},
|
||||
{
|
||||
active: true,
|
||||
order: 15,
|
||||
path: '/hosps',
|
||||
materialIcon: 'fas fa-bed',
|
||||
name: 'mypages.hosp',
|
||||
component: () => import('@src/root/hosp/hosp.vue'),
|
||||
meta: { requiresAuth: true },
|
||||
inmenu: true,
|
||||
infooter: true,
|
||||
},
|
||||
{
|
||||
active: site.confpages && site.confpages.enableCircuits,
|
||||
order: 16,
|
||||
@@ -91,7 +135,7 @@ function getDynamicPages(site: ISites): IListRoutes[] {
|
||||
infooter: true,
|
||||
},
|
||||
{
|
||||
active: site.confpages && site.confpages.enableEvents,
|
||||
active: true,
|
||||
order: 20,
|
||||
path: '/events',
|
||||
materialIcon: 'fas fa-bullhorn',
|
||||
@@ -113,7 +157,7 @@ function getDynamicPages(site: ISites): IListRoutes[] {
|
||||
infooter: false,
|
||||
},
|
||||
{
|
||||
active: site.confpages && site.confpages.showProfile,
|
||||
active: true,
|
||||
order: 120,
|
||||
path: '/myprofile',
|
||||
materialIcon: 'fas fa-user',
|
||||
@@ -124,7 +168,7 @@ function getDynamicPages(site: ISites): IListRoutes[] {
|
||||
infooter: true,
|
||||
},
|
||||
{
|
||||
active: site.confpages && site.confpages.showProfile,
|
||||
active: true,
|
||||
order: 120,
|
||||
path: '/editprofile',
|
||||
materialIcon: 'fas fa-user',
|
||||
@@ -135,7 +179,7 @@ function getDynamicPages(site: ISites): IListRoutes[] {
|
||||
infooter: false,
|
||||
},
|
||||
{
|
||||
active: site.confpages && site.confpages.showiscrittiMenu,
|
||||
active: true,
|
||||
order: 130,
|
||||
path: '/friends',
|
||||
materialIcon: 'fas fa-user-friends',
|
||||
@@ -230,6 +274,16 @@ function getDynamicPages(site: ISites): IListRoutes[] {
|
||||
inmenu: false,
|
||||
infooter: false,
|
||||
},
|
||||
{
|
||||
active: true,
|
||||
order: 150,
|
||||
path: '/sostieniilprogetto',
|
||||
materialIcon: 'fas fa-hand-holding-heart',
|
||||
name: 'pages.fundraising',
|
||||
component: () => import('@src/root/fundraising/fundraising.vue'),
|
||||
inmenu: false,
|
||||
infooter: false,
|
||||
},
|
||||
{
|
||||
active: true,
|
||||
order: 80,
|
||||
@@ -248,7 +302,7 @@ function getDynamicPages(site: ISites): IListRoutes[] {
|
||||
|
||||
export function firstimagehome() {
|
||||
|
||||
let img = 'statics/images/background.jpg'
|
||||
const img = 'statics/images/background.jpg'
|
||||
return img
|
||||
}
|
||||
|
||||
|
||||
@@ -40,6 +40,7 @@ export interface INotData {
|
||||
lastsonline?: IUserFields[]
|
||||
lastssharedlink?: IUserFields[]
|
||||
diffusorilist?: IUserFields[]
|
||||
listlinksreg?: IUserFields[]
|
||||
receiveRislist?: IUserFields[]
|
||||
receiveRislistgroup?: IMyGroup[]
|
||||
strettelist?: IUserFields[]
|
||||
|
||||
@@ -151,6 +151,7 @@ export interface IUserProfile {
|
||||
mycircuits: IMyCircuit[]
|
||||
last_circuitpath: string
|
||||
lastdate_reqRis?: Date
|
||||
lastdate_LinkReg?: Date
|
||||
userstoverify: IFriends[]
|
||||
manage_mygroups: IMyGroup[]
|
||||
notifs: IUserNotifType[]
|
||||
|
||||
@@ -1463,6 +1463,7 @@ const msg_it = {
|
||||
iscritti: 'iscritti trovati',
|
||||
addtothereceiverlist: 'Aggiungiti alla Lista dei Riceventi',
|
||||
coins_requestedris: 'Il tuo profilo {username} è ora visibile dalla "lista dei Riceventi di oggi".',
|
||||
listlinkreg: 'Il tuo profilo {username} è ora visibile dalla "lista degli invitanti di oggi".',
|
||||
coins_requestedrisgroup: 'Il Conto dell\'Organizzazione {groupname} sarà visibile sulla lista dei riceventi per 8 ore. Fai cliccare \'Invia RIS a..\' a chi ti deve inviare i RIS.',
|
||||
lista_ricev_title: 'Questa è la lista degli Utenti che hanno cliccato su "Ricevi RIS" nelle ultime 8 ore',
|
||||
info: 'Informazioni su questo Circuito',
|
||||
|
||||
@@ -60,6 +60,7 @@ export const costanti = {
|
||||
ACTIONTYPE: {
|
||||
NONE: 0,
|
||||
SEND_RIS: 1,
|
||||
LINK_REG: 2,
|
||||
},
|
||||
|
||||
Lang: {
|
||||
|
||||