diff --git a/.env.development b/.env.development index 4267996f..2e49e3a2 100755 --- a/.env.development +++ b/.env.development @@ -1,13 +1,12 @@ -VITE_MONGODB_HOST="https://localhost:3000" -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_APP_ID="13" -VITE_LOGO_REG='riso-logo-full.png' +VITE_APP_ID="16" VITE_APP_URL="https://localhost" -DIRECTORY_LOCAL=myprojplanet_vite -DIRECTORY_SERVER=freeplanet_serverside +VITE_MONGODB_HOST="https://localhost:3000" +VITE_LOGO_REG='kolibrilab-logo-full.png' +VITE_PUBLICKEY_PUSH='BDncvMiUZmjaCG2Kr1V9N0_33hOG-AuNSbHSvL24y2dzBiUjAxKm02emx5SeJvz2IGmtRf6YqCgopeQwCwUmZw8' +VITE_DEBUG="1" +VITE_VUE_APP_ISTEST=0 +VITE_VUE_APP_INLOCALE=1 +DIRECTORY_LOCAL="newfreeplanet" +DIRECTORY_SERVER="freeplanet_serverside" SERVERDIR_WEBSITE="" -SERVERPW_WEBSITE="" \ No newline at end of file +SERVERPW_WEBSITE="" diff --git a/.env.prod.gruppomacro b/.env.prod.gruppomacro index b6e48097..806a4a4b 100644 --- a/.env.prod.gruppomacro +++ b/.env.prod.gruppomacro @@ -9,3 +9,5 @@ DIRECTORY_LOCAL="myprojplanet_vite" DIRECTORY_SERVER="/var/www/nodejs_piuchebuono_server" SERVERDIR_WEBSITE="/var/www/gruppomacro.app" SERVERPW_WEBSITE="pwdadmin@1AOK" +PORT_SPA="8089" +PORT_PWA="8099" \ No newline at end of file diff --git a/.env.production b/.env.production index 5e0af09a..8f1dd466 100644 --- a/.env.production +++ b/.env.production @@ -1,11 +1,11 @@ -VITE_APP_ID="13" -VITE_APP_URL="https://riso.app" -VITE_MONGODB_HOST="https://api.riso.app" -VITE_LOGO_REG='riso-logo-full.png' -VITE_PUBLICKEY_PUSH="BGXRf1TgcqocqD6J7qnRgCG7AvM2lxAoW7peb7UEzB4SxBb6DxGRdJ0UvD9ewnrB9KrSrh0-aDCODXBm7sZ1DDs" +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=myprojplanet_vite -DIRECTORY_SERVER=/var/www/nodejs_riso_server -SERVERDIR_WEBSITE="/var/www/riso.app" -SERVERPW_WEBSITE="pwdadmin@1AOK" \ No newline at end of file +VITE_VUE_APP_ISTEST=0 +DIRECTORY_LOCAL=newfreeplanet +DIRECTORY_SERVER=freeplanet_serverside +SERVERDIR_WEBSITE=kolibrilab.it +SERVERPW_WEBSITE=pwdadmin@1AOK diff --git a/.prettierrc b/.prettierrc new file mode 100644 index 00000000..4a09c985 --- /dev/null +++ b/.prettierrc @@ -0,0 +1,11 @@ +{ + "singleAttributePerLine": true, + "printWidth": 120, + "tabWidth": 2, + "useTabs": false, + "semi": true, + "singleQuote": true, + "trailingComma": "es5", + "bracketSpacing": true, + "arrowParens": "always" +} \ No newline at end of file diff --git a/.vscode/settings.json b/.vscode/settings.json index 5c6ed1a9..80b67816 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -1,7 +1,7 @@ { "editor.bracketPairColorization.enabled": true, "editor.guides.bracketPairs": true, - "editor.formatOnSave": true, + "editor.formatOnSave": false, "editor.defaultFormatter": "esbenp.prettier-vscode", "editor.codeActionsOnSave": [], "eslint.validate": [ @@ -12,6 +12,6 @@ ], "typescript.tsdk": "node_modules/typescript/lib", "[vue]": { - "editor.defaultFormatter": "Vue.volar" + "editor.defaultFormatter": "esbenp.prettier-vscode" } } \ No newline at end of file diff --git a/package.json b/package.json index 6faf0074..847e973f 100755 --- a/package.json +++ b/package.json @@ -1,141 +1,139 @@ { - "name": "riso", - "version": "1.2.28", - "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", + "name": "kolibrilab", + "version": "0.5.3", + "description": "kolibrilab", + "productName": "kolibrilab", + "author": "Surya Paolo", "private": true, "keywords": [], "license": "MIT", - "type": "module", "scripts": { "dev": "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", - "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}\"", + "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 -c ./eslint.config.js \"./src*/**/*.{ts,js,cjs,mjs,vue}\" --ignore-pattern .gitignore ./ --fix > file.out.txt", - "pwa": "quasar dev -m pwa", - "spa": "quasar dev", - "debug": "quasar dev --mode debug", + "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", "test": "echo \"No test specified\" && exit 0", - "generate-sw": "workbox generateSW workbox-config.js", - "postinstall": "quasar prepare" + "generate-sw": "workbox generateSW workbox-config.js" }, "dependencies": { - "@cubejs-client/core": "^1.2.19", - "@quasar/extras": "^1.16.17", - "@quasar/quasar-ui-qcalendar": "^4.1.2", - "@types/leaflet": "^1.9.16", - "@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", + "@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", "animate.css": "^4.1.1", - "autoprefixer": "^10.4.21", - "axios": "^1.8.2", - "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", + "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", "graphql-tag": "^2.12.6", - "gsap": "^3.12.7", - "html2pdf.js": "^0.10.3", - "jquery": "^3.7.1", - "js-cookie": "^3.0.5", - "leaflet": "^1.9.4", - "leaflet-routing-machine": "^3.2.12", - "leaflet.markercluster": "^1.5.3", + "gsap": "^3.11.3", + "jquery": "^3.6.1", + "js-cookie": "^3.0.1", "localforage": "^1.10.0", "lodash": "^4.17.21", "normalize.css": "^8.0.1", + "npm": "^9.1.1", "nprogress": "^0.2.0", - "pinia": "^3.0.1", - "qrcode-vue3": "^1.7.1", - "quasar": "^2.18.1", + "pinia": "^2.0.23", + "prerender-spa-plugin": "^3.4.0", + "quasar": "^2.10.1", "quasar-extras": "^2.0.9", "register-service-worker": "^1.7.2", - "scrollreveal": "^4.0.9", - "typescript-eslint": "^8.26.0", - "vee-validate": "^4.15.0", - "vue": "^3.5.13", + "vee-validate": "^4.7.2", + "vue": "^3.2.45", + "vue-chart-3": "^3.1.8", "vue-class-component": "^8.0.0-rc.1", "vue-country-code": "^1.1.3", - "vue-echarts": "^7.0.3", - "vue-i18n": "^11.1.2", + "vue-echarts": "^6.2.3", + "vue-i18n": "^9.2.2", "vue-idb": "^0.2.0", - "vue-image-zoomer": "^2.4.4", + "vue-loader": "^17.0.1", "vue-property-decorator": "^10.0.0-rc.3", - "vue-router": "^4.5.0", - "vue-scroll-reveal": "^2.1.0", - "vue-social-sharing": "^4.0.0-alpha4", + "vue-router": "^4.1.6", + "vue-scroll-reveal": "^1.0.11", "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", - "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" + "vuex-router-sync": "^6.0.0-rc.1" }, "devDependencies": { - "@eslint/js": "^9.22.0", - "@intlify/unplugin-vue-i18n": "^6.0.3", - "@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/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", + "@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", "file-loader": "^6.2.0", - "globals": "^16.0.0", - "http-proxy-middleware": "^3.0.3", - "jest": "^29.7.0", + "html-webpack-plugin": "^5.5.0", + "http-proxy-middleware": "^2.0.6", + "jest": "^29.3.1", "json-loader": "^0.5.7", - "nodemon": "^3.1.9", - "npm-check-updates": "^17.1.15", - "parcel": "^2.13.3", - "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", + "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", "vue-cli-plugin-element-ui": "^1.1.4", - "vue-tsc": "^2.2.8", "vueify": "^9.4.1", - "workbox-build": "^7.3.0" + "webpack": "^5.75.0", + "workbox-webpack-plugin": "^6.5.4" }, + "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": "^28 || ^26 || ^24 || ^22 || ^20 || ^18", - "npm": ">= 6.13.4", + "node": ">= 16.14.0", + "npm": ">= 6.14.8", "yarn": ">= 1.21.1" } } \ No newline at end of file diff --git a/public/favicon.ico b/public/favicon.ico index d283c964..d7267659 100644 Binary files a/public/favicon.ico and b/public/favicon.ico differ diff --git a/public/images/1ris_rosso.png b/public/images/1ris_rosso.png deleted file mode 100644 index c1aff3ec..00000000 Binary files a/public/images/1ris_rosso.png and /dev/null differ diff --git a/public/images/1ris_rosso_100.png b/public/images/1ris_rosso_100.png deleted file mode 100644 index 267f9158..00000000 Binary files a/public/images/1ris_rosso_100.png and /dev/null differ diff --git a/public/images/all_together.jpg b/public/images/all_together.jpg deleted file mode 100755 index 07667df4..00000000 Binary files a/public/images/all_together.jpg and /dev/null differ diff --git a/public/images/android-chrome-192x192.png b/public/images/android-chrome-192x192.png deleted file mode 100644 index 95b960e9..00000000 Binary files a/public/images/android-chrome-192x192.png and /dev/null differ diff --git a/public/images/avatar-1.svg b/public/images/avatar-1.svg deleted file mode 100755 index e12224c5..00000000 --- a/public/images/avatar-1.svg +++ /dev/null @@ -1,195 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/public/images/badge-96x96.png b/public/images/badge-96x96.png deleted file mode 100644 index d1a5cddf..00000000 Binary files a/public/images/badge-96x96.png and /dev/null differ diff --git a/public/images/calendario_eventi.jpg b/public/images/calendario_eventi.jpg deleted file mode 100755 index 0fb6962d..00000000 Binary files a/public/images/calendario_eventi.jpg and /dev/null differ diff --git a/public/images/cibo_sano.jpg b/public/images/cibo_sano.jpg deleted file mode 100755 index 7a88ebb5..00000000 Binary files a/public/images/cibo_sano.jpg and /dev/null differ diff --git a/public/images/cover.jpg b/public/images/cover.jpg deleted file mode 100755 index af6d14f1..00000000 Binary files a/public/images/cover.jpg and /dev/null differ diff --git a/public/images/de.png b/public/images/de.png deleted file mode 100755 index 97cb239c..00000000 Binary files a/public/images/de.png and /dev/null differ diff --git a/public/images/es.png b/public/images/es.png deleted file mode 100755 index d66a9504..00000000 Binary files a/public/images/es.png and /dev/null differ diff --git a/public/images/gb.png b/public/images/gb.png deleted file mode 100755 index fa38aaa5..00000000 Binary files a/public/images/gb.png and /dev/null differ diff --git a/public/images/group-together.jpg b/public/images/group-together.jpg deleted file mode 100755 index 58cafa43..00000000 Binary files a/public/images/group-together.jpg and /dev/null differ diff --git a/public/images/hand_people.jpg b/public/images/hand_people.jpg deleted file mode 100755 index 19671ef5..00000000 Binary files a/public/images/hand_people.jpg and /dev/null differ diff --git a/public/images/icon.png b/public/images/icon.png deleted file mode 100644 index ddf8a46c..00000000 Binary files a/public/images/icon.png and /dev/null differ diff --git a/public/images/imglogonotif.png b/public/images/imglogonotif.png deleted file mode 100644 index 95b960e9..00000000 Binary files a/public/images/imglogonotif.png and /dev/null differ diff --git a/public/images/install_app_on_android_1.jpg b/public/images/install_app_on_android_1.jpg deleted file mode 100644 index ec5a0899..00000000 Binary files a/public/images/install_app_on_android_1.jpg and /dev/null differ diff --git a/public/images/install_app_on_android_2.jpg b/public/images/install_app_on_android_2.jpg deleted file mode 100644 index 97df25c1..00000000 Binary files a/public/images/install_app_on_android_2.jpg and /dev/null differ diff --git a/public/images/install_app_on_android_3.jpg b/public/images/install_app_on_android_3.jpg deleted file mode 100644 index 88c316cb..00000000 Binary files a/public/images/install_app_on_android_3.jpg and /dev/null differ diff --git a/public/images/install_app_on_ios_1.png b/public/images/install_app_on_ios_1.png deleted file mode 100644 index bfe9f9de..00000000 Binary files a/public/images/install_app_on_ios_1.png and /dev/null differ diff --git a/public/images/install_app_on_ios_1b.jpg b/public/images/install_app_on_ios_1b.jpg deleted file mode 100644 index a9ff9893..00000000 Binary files a/public/images/install_app_on_ios_1b.jpg and /dev/null differ diff --git a/public/images/install_app_on_ios_2.jpg b/public/images/install_app_on_ios_2.jpg deleted file mode 100644 index f05f86d8..00000000 Binary files a/public/images/install_app_on_ios_2.jpg and /dev/null differ diff --git a/public/images/it.png b/public/images/it.png deleted file mode 100755 index 3db1442f..00000000 Binary files a/public/images/it.png and /dev/null differ diff --git a/public/images/landing_first_section.png b/public/images/landing_first_section.png deleted file mode 100755 index 328d9af7..00000000 Binary files a/public/images/landing_first_section.png and /dev/null differ diff --git a/public/images/layers-2x.png b/public/images/layers-2x.png deleted file mode 100644 index 200c333d..00000000 Binary files a/public/images/layers-2x.png and /dev/null differ diff --git a/public/images/layers.png b/public/images/layers.png deleted file mode 100644 index 1a72e578..00000000 Binary files a/public/images/layers.png and /dev/null differ diff --git a/public/images/marker-icon-2x.png b/public/images/marker-icon-2x.png deleted file mode 100644 index 88f9e501..00000000 Binary files a/public/images/marker-icon-2x.png and /dev/null differ diff --git a/public/images/marker-icon.png b/public/images/marker-icon.png deleted file mode 100644 index 950edf24..00000000 Binary files a/public/images/marker-icon.png and /dev/null differ diff --git a/public/images/marker-shadow.png b/public/images/marker-shadow.png deleted file mode 100644 index 9fd29795..00000000 Binary files a/public/images/marker-shadow.png and /dev/null differ diff --git a/public/images/mountains.jpg b/public/images/mountains.jpg deleted file mode 100755 index 83fef46b..00000000 Binary files a/public/images/mountains.jpg and /dev/null differ diff --git a/public/images/noimg-user.jpg b/public/images/noimg-user.jpg deleted file mode 100644 index af5c34a7..00000000 Binary files a/public/images/noimg-user.jpg and /dev/null differ diff --git a/public/images/noimg-user.svg b/public/images/noimg-user.svg deleted file mode 100644 index 10ea11c8..00000000 --- a/public/images/noimg-user.svg +++ /dev/null @@ -1 +0,0 @@ -profile pic \ No newline at end of file diff --git a/public/images/noimg.png b/public/images/noimg.png deleted file mode 100644 index dc14c4b5..00000000 Binary files a/public/images/noimg.png and /dev/null differ diff --git a/public/images/opz1-icon-96x96.jpg b/public/images/opz1-icon-96x96.jpg deleted file mode 100755 index 32d09c99..00000000 Binary files a/public/images/opz1-icon-96x96.jpg and /dev/null differ diff --git a/public/images/opz2-icon-96x96.jpg b/public/images/opz2-icon-96x96.jpg deleted file mode 100755 index 32d09c99..00000000 Binary files a/public/images/opz2-icon-96x96.jpg and /dev/null differ diff --git a/public/images/paypal.jpg b/public/images/paypal.jpg deleted file mode 100755 index a6173a79..00000000 Binary files a/public/images/paypal.jpg and /dev/null differ diff --git a/public/images/regalo.jpg b/public/images/regalo.jpg deleted file mode 100755 index 32d09c99..00000000 Binary files a/public/images/regalo.jpg and /dev/null differ diff --git a/public/images/revolut.jpg b/public/images/revolut.jpg deleted file mode 100755 index 35e00b0b..00000000 Binary files a/public/images/revolut.jpg and /dev/null differ diff --git a/public/images/riso-android-icon-144x144.png b/public/images/riso-android-icon-144x144.png deleted file mode 100644 index 37dcd661..00000000 Binary files a/public/images/riso-android-icon-144x144.png and /dev/null differ diff --git a/public/images/riso-android-icon-192x192.png b/public/images/riso-android-icon-192x192.png deleted file mode 100644 index 95b960e9..00000000 Binary files a/public/images/riso-android-icon-192x192.png and /dev/null differ diff --git a/public/images/riso-android-icon-384x384.png b/public/images/riso-android-icon-384x384.png deleted file mode 100644 index ce1ffc47..00000000 Binary files a/public/images/riso-android-icon-384x384.png and /dev/null differ diff --git a/public/images/riso-android-icon-48x48.png b/public/images/riso-android-icon-48x48.png deleted file mode 100644 index 499e8674..00000000 Binary files a/public/images/riso-android-icon-48x48.png and /dev/null differ diff --git a/public/images/riso-android-icon-512x512.png b/public/images/riso-android-icon-512x512.png deleted file mode 100644 index e1c31acd..00000000 Binary files a/public/images/riso-android-icon-512x512.png and /dev/null differ diff --git a/public/images/riso-android-icon-96x96.png b/public/images/riso-android-icon-96x96.png deleted file mode 100644 index 98dbf9d9..00000000 Binary files a/public/images/riso-android-icon-96x96.png and /dev/null differ diff --git a/public/images/riso-apple-icon-114x114.png b/public/images/riso-apple-icon-114x114.png deleted file mode 100644 index 882dd21c..00000000 Binary files a/public/images/riso-apple-icon-114x114.png and /dev/null differ diff --git a/public/images/riso-apple-icon-120x120.png b/public/images/riso-apple-icon-120x120.png deleted file mode 100644 index 734b0503..00000000 Binary files a/public/images/riso-apple-icon-120x120.png and /dev/null differ diff --git a/public/images/riso-apple-icon-144x144.png b/public/images/riso-apple-icon-144x144.png deleted file mode 100644 index 923da7be..00000000 Binary files a/public/images/riso-apple-icon-144x144.png and /dev/null differ diff --git a/public/images/riso-apple-icon-152x152.png b/public/images/riso-apple-icon-152x152.png deleted file mode 100644 index 84fd455d..00000000 Binary files a/public/images/riso-apple-icon-152x152.png and /dev/null differ diff --git a/public/images/riso-apple-icon-180x180.png b/public/images/riso-apple-icon-180x180.png deleted file mode 100644 index e457d906..00000000 Binary files a/public/images/riso-apple-icon-180x180.png and /dev/null differ diff --git a/public/images/riso-apple-icon-57x57.png b/public/images/riso-apple-icon-57x57.png deleted file mode 100644 index f5f538db..00000000 Binary files a/public/images/riso-apple-icon-57x57.png and /dev/null differ diff --git a/public/images/riso-apple-icon-60x60.png b/public/images/riso-apple-icon-60x60.png deleted file mode 100644 index 4121f834..00000000 Binary files a/public/images/riso-apple-icon-60x60.png and /dev/null differ diff --git a/public/images/riso-apple-icon-72x72.png b/public/images/riso-apple-icon-72x72.png deleted file mode 100644 index 5efd872d..00000000 Binary files a/public/images/riso-apple-icon-72x72.png and /dev/null differ diff --git a/public/images/riso-apple-icon-76x76.png b/public/images/riso-apple-icon-76x76.png deleted file mode 100644 index 6db4b76f..00000000 Binary files a/public/images/riso-apple-icon-76x76.png and /dev/null differ diff --git a/public/images/riso-apple-icon.png b/public/images/riso-apple-icon.png deleted file mode 100644 index cfaeb3c0..00000000 Binary files a/public/images/riso-apple-icon.png and /dev/null differ diff --git a/public/images/riso-logo-full.png b/public/images/riso-logo-full.png deleted file mode 100644 index 51a29654..00000000 Binary files a/public/images/riso-logo-full.png and /dev/null differ diff --git a/public/images/riso_home.png b/public/images/riso_home.png deleted file mode 100644 index 3d065405..00000000 Binary files a/public/images/riso_home.png and /dev/null differ diff --git a/public/images/riso_home_dark.png b/public/images/riso_home_dark.png deleted file mode 100644 index fe6b8225..00000000 Binary files a/public/images/riso_home_dark.png and /dev/null differ diff --git a/public/images/riso_services.png b/public/images/riso_services.png deleted file mode 100644 index 85a940bc..00000000 Binary files a/public/images/riso_services.png and /dev/null differ diff --git a/public/js/fetch.js b/public/js/fetch.js deleted file mode 100755 index 5516b6e6..00000000 --- a/public/js/fetch.js +++ /dev/null @@ -1,457 +0,0 @@ -(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)); diff --git a/public/js/globalenv.js b/public/js/globalenv.js deleted file mode 100755 index f88f9996..00000000 --- a/public/js/globalenv.js +++ /dev/null @@ -1,25 +0,0 @@ -// 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) -} - -*/ diff --git a/public/js/idb.js b/public/js/idb.js deleted file mode 100755 index 6dfbd1d7..00000000 --- a/public/js/idb.js +++ /dev/null @@ -1,307 +0,0 @@ -(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; - } -}()); diff --git a/public/js/material.min.js b/public/js/material.min.js deleted file mode 100755 index 46524fbc..00000000 --- a/public/js/material.min.js +++ /dev/null @@ -1,10 +0,0 @@ -/** - * material-design-lite - Material Design Components in CSS, JS and HTML - * @version v1.3.0 - * @license Apache-2.0 - * @copyright 2015 Google, Inc. - * @link https://github.com/google/material-design-lite - */ -!function(){"use strict";function e(e,t){if(e){if(t.element_.classList.contains(t.CssClasses_.MDL_JS_RIPPLE_EFFECT)){var s=document.createElement("span");s.classList.add(t.CssClasses_.MDL_RIPPLE_CONTAINER),s.classList.add(t.CssClasses_.MDL_JS_RIPPLE_EFFECT);var i=document.createElement("span");i.classList.add(t.CssClasses_.MDL_RIPPLE),s.appendChild(i),e.appendChild(s)}e.addEventListener("click",function(s){if("#"===e.getAttribute("href").charAt(0)){s.preventDefault();var i=e.href.split("#")[1],n=t.element_.querySelector("#"+i);t.resetTabState_(),t.resetPanelState_(),e.classList.add(t.CssClasses_.ACTIVE_CLASS),n.classList.add(t.CssClasses_.ACTIVE_CLASS)}})}}function t(e,t,s,i){function n(){var n=e.href.split("#")[1],a=i.content_.querySelector("#"+n);i.resetTabState_(t),i.resetPanelState_(s),e.classList.add(i.CssClasses_.IS_ACTIVE),a.classList.add(i.CssClasses_.IS_ACTIVE)}if(i.tabBar_.classList.contains(i.CssClasses_.JS_RIPPLE_EFFECT)){var a=document.createElement("span");a.classList.add(i.CssClasses_.RIPPLE_CONTAINER),a.classList.add(i.CssClasses_.JS_RIPPLE_EFFECT);var l=document.createElement("span");l.classList.add(i.CssClasses_.RIPPLE),a.appendChild(l),e.appendChild(a)}i.tabBar_.classList.contains(i.CssClasses_.TAB_MANUAL_SWITCH)||e.addEventListener("click",function(t){"#"===e.getAttribute("href").charAt(0)&&(t.preventDefault(),n())}),e.show=n}var s={upgradeDom:function(e,t){},upgradeElement:function(e,t){},upgradeElements:function(e){},upgradeAllRegistered:function(){},registerUpgradedCallback:function(e,t){},register:function(e){},downgradeElements:function(e){}};s=function(){function e(e,t){for(var s=0;s0&&l(t.children))}function o(t){var s="undefined"==typeof t.widget&&"undefined"==typeof t.widget,i=!0;s||(i=t.widget||t.widget);var n={classConstructor:t.constructor||t.constructor,className:t.classAsString||t.classAsString,cssClass:t.cssClass||t.cssClass,widget:i,callbacks:[]};if(c.forEach(function(e){if(e.cssClass===n.cssClass)throw new Error("The provided cssClass has already been registered: "+e.cssClass);if(e.className===n.className)throw new Error("The provided className has already been registered")}),t.constructor.prototype.hasOwnProperty(C))throw new Error("MDL component classes must not have "+C+" defined as a property.");var a=e(t.classAsString,n);a||c.push(n)}function r(t,s){var i=e(t);i&&i.callbacks.push(s)}function _(){for(var e=0;e0&&this.container_.classList.contains(this.CssClasses_.IS_VISIBLE)&&(e.keyCode===this.Keycodes_.UP_ARROW?(e.preventDefault(),t[t.length-1].focus()):e.keyCode===this.Keycodes_.DOWN_ARROW&&(e.preventDefault(),t[0].focus()))}},d.prototype.handleItemKeyboardEvent_=function(e){if(this.element_&&this.container_){var t=this.element_.querySelectorAll("."+this.CssClasses_.ITEM+":not([disabled])");if(t&&t.length>0&&this.container_.classList.contains(this.CssClasses_.IS_VISIBLE)){var s=Array.prototype.slice.call(t).indexOf(e.target);if(e.keyCode===this.Keycodes_.UP_ARROW)e.preventDefault(),s>0?t[s-1].focus():t[t.length-1].focus();else if(e.keyCode===this.Keycodes_.DOWN_ARROW)e.preventDefault(),t.length>s+1?t[s+1].focus():t[0].focus();else if(e.keyCode===this.Keycodes_.SPACE||e.keyCode===this.Keycodes_.ENTER){e.preventDefault();var i=new MouseEvent("mousedown");e.target.dispatchEvent(i),i=new MouseEvent("mouseup"),e.target.dispatchEvent(i),e.target.click()}else e.keyCode===this.Keycodes_.ESCAPE&&(e.preventDefault(),this.hide())}}},d.prototype.handleItemClick_=function(e){e.target.hasAttribute("disabled")?e.stopPropagation():(this.closing_=!0,window.setTimeout(function(e){this.hide(),this.closing_=!1}.bind(this),this.Constant_.CLOSE_TIMEOUT))},d.prototype.applyClip_=function(e,t){this.element_.classList.contains(this.CssClasses_.UNALIGNED)?this.element_.style.clip="":this.element_.classList.contains(this.CssClasses_.BOTTOM_RIGHT)?this.element_.style.clip="rect(0 "+t+"px 0 "+t+"px)":this.element_.classList.contains(this.CssClasses_.TOP_LEFT)?this.element_.style.clip="rect("+e+"px 0 "+e+"px 0)":this.element_.classList.contains(this.CssClasses_.TOP_RIGHT)?this.element_.style.clip="rect("+e+"px "+t+"px "+e+"px "+t+"px)":this.element_.style.clip=""},d.prototype.removeAnimationEndListener_=function(e){e.target.classList.remove(d.prototype.CssClasses_.IS_ANIMATING)},d.prototype.addAnimationEndListener_=function(){this.element_.addEventListener("transitionend",this.removeAnimationEndListener_),this.element_.addEventListener("webkitTransitionEnd",this.removeAnimationEndListener_)},d.prototype.show=function(e){if(this.element_&&this.container_&&this.outline_){var t=this.element_.getBoundingClientRect().height,s=this.element_.getBoundingClientRect().width;this.container_.style.width=s+"px",this.container_.style.height=t+"px",this.outline_.style.width=s+"px",this.outline_.style.height=t+"px";for(var i=this.Constant_.TRANSITION_DURATION_SECONDS*this.Constant_.TRANSITION_DURATION_FRACTION,n=this.element_.querySelectorAll("."+this.CssClasses_.ITEM),a=0;a0&&this.showSnackbar(this.queuedNotifications_.shift())},C.prototype.cleanup_=function(){this.element_.classList.remove(this.cssClasses_.ACTIVE),setTimeout(function(){this.element_.setAttribute("aria-hidden","true"),this.textElement_.textContent="",Boolean(this.actionElement_.getAttribute("aria-hidden"))||(this.setActionHidden_(!0),this.actionElement_.textContent="",this.actionElement_.removeEventListener("click",this.actionHandler_)),this.actionHandler_=void 0,this.message_=void 0,this.actionText_=void 0,this.active=!1,this.checkQueue_()}.bind(this),this.Constant_.ANIMATION_LENGTH)},C.prototype.setActionHidden_=function(e){e?this.actionElement_.setAttribute("aria-hidden","true"):this.actionElement_.removeAttribute("aria-hidden")},s.register({constructor:C,classAsString:"MaterialSnackbar",cssClass:"mdl-js-snackbar",widget:!0});var u=function(e){this.element_=e,this.init()};window.MaterialSpinner=u,u.prototype.Constant_={MDL_SPINNER_LAYER_COUNT:4},u.prototype.CssClasses_={MDL_SPINNER_LAYER:"mdl-spinner__layer",MDL_SPINNER_CIRCLE_CLIPPER:"mdl-spinner__circle-clipper",MDL_SPINNER_CIRCLE:"mdl-spinner__circle",MDL_SPINNER_GAP_PATCH:"mdl-spinner__gap-patch",MDL_SPINNER_LEFT:"mdl-spinner__left",MDL_SPINNER_RIGHT:"mdl-spinner__right"},u.prototype.createLayer=function(e){var t=document.createElement("div");t.classList.add(this.CssClasses_.MDL_SPINNER_LAYER),t.classList.add(this.CssClasses_.MDL_SPINNER_LAYER+"-"+e);var s=document.createElement("div");s.classList.add(this.CssClasses_.MDL_SPINNER_CIRCLE_CLIPPER),s.classList.add(this.CssClasses_.MDL_SPINNER_LEFT);var i=document.createElement("div");i.classList.add(this.CssClasses_.MDL_SPINNER_GAP_PATCH);var n=document.createElement("div");n.classList.add(this.CssClasses_.MDL_SPINNER_CIRCLE_CLIPPER),n.classList.add(this.CssClasses_.MDL_SPINNER_RIGHT);for(var a=[s,i,n],l=0;l=this.maxRows&&e.preventDefault()},L.prototype.onFocus_=function(e){this.element_.classList.add(this.CssClasses_.IS_FOCUSED)},L.prototype.onBlur_=function(e){this.element_.classList.remove(this.CssClasses_.IS_FOCUSED)},L.prototype.onReset_=function(e){this.updateClasses_()},L.prototype.updateClasses_=function(){this.checkDisabled(),this.checkValidity(),this.checkDirty(),this.checkFocus()},L.prototype.checkDisabled=function(){this.input_.disabled?this.element_.classList.add(this.CssClasses_.IS_DISABLED):this.element_.classList.remove(this.CssClasses_.IS_DISABLED)},L.prototype.checkDisabled=L.prototype.checkDisabled,L.prototype.checkFocus=function(){Boolean(this.element_.querySelector(":focus"))?this.element_.classList.add(this.CssClasses_.IS_FOCUSED):this.element_.classList.remove(this.CssClasses_.IS_FOCUSED)},L.prototype.checkFocus=L.prototype.checkFocus,L.prototype.checkValidity=function(){this.input_.validity&&(this.input_.validity.valid?this.element_.classList.remove(this.CssClasses_.IS_INVALID):this.element_.classList.add(this.CssClasses_.IS_INVALID))},L.prototype.checkValidity=L.prototype.checkValidity,L.prototype.checkDirty=function(){this.input_.value&&this.input_.value.length>0?this.element_.classList.add(this.CssClasses_.IS_DIRTY):this.element_.classList.remove(this.CssClasses_.IS_DIRTY)},L.prototype.checkDirty=L.prototype.checkDirty,L.prototype.disable=function(){this.input_.disabled=!0,this.updateClasses_()},L.prototype.disable=L.prototype.disable,L.prototype.enable=function(){this.input_.disabled=!1,this.updateClasses_()},L.prototype.enable=L.prototype.enable,L.prototype.change=function(e){this.input_.value=e||"",this.updateClasses_()},L.prototype.change=L.prototype.change,L.prototype.init=function(){if(this.element_&&(this.label_=this.element_.querySelector("."+this.CssClasses_.LABEL),this.input_=this.element_.querySelector("."+this.CssClasses_.INPUT),this.input_)){this.input_.hasAttribute(this.Constant_.MAX_ROWS_ATTRIBUTE)&&(this.maxRows=parseInt(this.input_.getAttribute(this.Constant_.MAX_ROWS_ATTRIBUTE),10),isNaN(this.maxRows)&&(this.maxRows=this.Constant_.NO_MAX_ROWS)),this.input_.hasAttribute("placeholder")&&this.element_.classList.add(this.CssClasses_.HAS_PLACEHOLDER),this.boundUpdateClassesHandler=this.updateClasses_.bind(this),this.boundFocusHandler=this.onFocus_.bind(this),this.boundBlurHandler=this.onBlur_.bind(this),this.boundResetHandler=this.onReset_.bind(this),this.input_.addEventListener("input",this.boundUpdateClassesHandler),this.input_.addEventListener("focus",this.boundFocusHandler),this.input_.addEventListener("blur",this.boundBlurHandler),this.input_.addEventListener("reset",this.boundResetHandler),this.maxRows!==this.Constant_.NO_MAX_ROWS&&(this.boundKeyDownHandler=this.onKeyDown_.bind(this),this.input_.addEventListener("keydown",this.boundKeyDownHandler));var e=this.element_.classList.contains(this.CssClasses_.IS_INVALID);this.updateClasses_(),this.element_.classList.add(this.CssClasses_.IS_UPGRADED),e&&this.element_.classList.add(this.CssClasses_.IS_INVALID),this.input_.hasAttribute("autofocus")&&(this.element_.focus(),this.checkFocus())}},s.register({constructor:L,classAsString:"MaterialTextfield",cssClass:"mdl-js-textfield",widget:!0});var I=function(e){this.element_=e,this.init()};window.MaterialTooltip=I,I.prototype.Constant_={},I.prototype.CssClasses_={IS_ACTIVE:"is-active",BOTTOM:"mdl-tooltip--bottom",LEFT:"mdl-tooltip--left",RIGHT:"mdl-tooltip--right",TOP:"mdl-tooltip--top"},I.prototype.handleMouseEnter_=function(e){var t=e.target.getBoundingClientRect(),s=t.left+t.width/2,i=t.top+t.height/2,n=-1*(this.element_.offsetWidth/2),a=-1*(this.element_.offsetHeight/2);this.element_.classList.contains(this.CssClasses_.LEFT)||this.element_.classList.contains(this.CssClasses_.RIGHT)?(s=t.width/2,i+a<0?(this.element_.style.top="0",this.element_.style.marginTop="0"):(this.element_.style.top=i+"px",this.element_.style.marginTop=a+"px")):s+n<0?(this.element_.style.left="0",this.element_.style.marginLeft="0"):(this.element_.style.left=s+"px",this.element_.style.marginLeft=n+"px"),this.element_.classList.contains(this.CssClasses_.TOP)?this.element_.style.top=t.top-this.element_.offsetHeight-10+"px":this.element_.classList.contains(this.CssClasses_.RIGHT)?this.element_.style.left=t.left+t.width+10+"px":this.element_.classList.contains(this.CssClasses_.LEFT)?this.element_.style.left=t.left-this.element_.offsetWidth-10+"px":this.element_.style.top=t.top+t.height+10+"px",this.element_.classList.add(this.CssClasses_.IS_ACTIVE)},I.prototype.hideTooltip_=function(){this.element_.classList.remove(this.CssClasses_.IS_ACTIVE)},I.prototype.init=function(){if(this.element_){var e=this.element_.getAttribute("for")||this.element_.getAttribute("data-mdl-for");e&&(this.forElement_=document.getElementById(e)),this.forElement_&&(this.forElement_.hasAttribute("tabindex")||this.forElement_.setAttribute("tabindex","0"),this.boundMouseEnterHandler=this.handleMouseEnter_.bind(this),this.boundMouseLeaveAndScrollHandler=this.hideTooltip_.bind(this),this.forElement_.addEventListener("mouseenter",this.boundMouseEnterHandler,!1),this.forElement_.addEventListener("touchend",this.boundMouseEnterHandler,!1),this.forElement_.addEventListener("mouseleave",this.boundMouseLeaveAndScrollHandler,!1),window.addEventListener("scroll",this.boundMouseLeaveAndScrollHandler,!0),window.addEventListener("touchstart",this.boundMouseLeaveAndScrollHandler))}},s.register({constructor:I,classAsString:"MaterialTooltip",cssClass:"mdl-tooltip"});var f=function(e){this.element_=e,this.init()};window.MaterialLayout=f,f.prototype.Constant_={MAX_WIDTH:"(max-width: 1024px)",TAB_SCROLL_PIXELS:100,RESIZE_TIMEOUT:100,MENU_ICON:"",CHEVRON_LEFT:"chevron_left",CHEVRON_RIGHT:"chevron_right"},f.prototype.Keycodes_={ENTER:13,ESCAPE:27,SPACE:32},f.prototype.Mode_={STANDARD:0,SEAMED:1,WATERFALL:2,SCROLL:3},f.prototype.CssClasses_={CONTAINER:"mdl-layout__container",HEADER:"mdl-layout__header",DRAWER:"mdl-layout__drawer",CONTENT:"mdl-layout__content",DRAWER_BTN:"mdl-layout__drawer-button",ICON:"material-icons",JS_RIPPLE_EFFECT:"mdl-js-ripple-effect",RIPPLE_CONTAINER:"mdl-layout__tab-ripple-container",RIPPLE:"mdl-ripple",RIPPLE_IGNORE_EVENTS:"mdl-js-ripple-effect--ignore-events",HEADER_SEAMED:"mdl-layout__header--seamed",HEADER_WATERFALL:"mdl-layout__header--waterfall",HEADER_SCROLL:"mdl-layout__header--scroll",FIXED_HEADER:"mdl-layout--fixed-header",OBFUSCATOR:"mdl-layout__obfuscator",TAB_BAR:"mdl-layout__tab-bar",TAB_CONTAINER:"mdl-layout__tab-bar-container",TAB:"mdl-layout__tab",TAB_BAR_BUTTON:"mdl-layout__tab-bar-button",TAB_BAR_LEFT_BUTTON:"mdl-layout__tab-bar-left-button",TAB_BAR_RIGHT_BUTTON:"mdl-layout__tab-bar-right-button",TAB_MANUAL_SWITCH:"mdl-layout__tab-manual-switch",PANEL:"mdl-layout__tab-panel",HAS_DRAWER:"has-drawer",HAS_TABS:"has-tabs",HAS_SCROLLING_HEADER:"has-scrolling-header",CASTING_SHADOW:"is-casting-shadow",IS_COMPACT:"is-compact",IS_SMALL_SCREEN:"is-small-screen",IS_DRAWER_OPEN:"is-visible",IS_ACTIVE:"is-active",IS_UPGRADED:"is-upgraded",IS_ANIMATING:"is-animating",ON_LARGE_SCREEN:"mdl-layout--large-screen-only",ON_SMALL_SCREEN:"mdl-layout--small-screen-only"},f.prototype.contentScrollHandler_=function(){if(!this.header_.classList.contains(this.CssClasses_.IS_ANIMATING)){var e=!this.element_.classList.contains(this.CssClasses_.IS_SMALL_SCREEN)||this.element_.classList.contains(this.CssClasses_.FIXED_HEADER);this.content_.scrollTop>0&&!this.header_.classList.contains(this.CssClasses_.IS_COMPACT)?(this.header_.classList.add(this.CssClasses_.CASTING_SHADOW),this.header_.classList.add(this.CssClasses_.IS_COMPACT),e&&this.header_.classList.add(this.CssClasses_.IS_ANIMATING)):this.content_.scrollTop<=0&&this.header_.classList.contains(this.CssClasses_.IS_COMPACT)&&(this.header_.classList.remove(this.CssClasses_.CASTING_SHADOW),this.header_.classList.remove(this.CssClasses_.IS_COMPACT),e&&this.header_.classList.add(this.CssClasses_.IS_ANIMATING))}},f.prototype.keyboardEventHandler_=function(e){e.keyCode===this.Keycodes_.ESCAPE&&this.drawer_.classList.contains(this.CssClasses_.IS_DRAWER_OPEN)&&this.toggleDrawer()},f.prototype.screenSizeHandler_=function(){this.screenSizeMediaQuery_.matches?this.element_.classList.add(this.CssClasses_.IS_SMALL_SCREEN):(this.element_.classList.remove(this.CssClasses_.IS_SMALL_SCREEN),this.drawer_&&(this.drawer_.classList.remove(this.CssClasses_.IS_DRAWER_OPEN),this.obfuscator_.classList.remove(this.CssClasses_.IS_DRAWER_OPEN)))},f.prototype.drawerToggleHandler_=function(e){if(e&&"keydown"===e.type){if(e.keyCode!==this.Keycodes_.SPACE&&e.keyCode!==this.Keycodes_.ENTER)return;e.preventDefault()}this.toggleDrawer()},f.prototype.headerTransitionEndHandler_=function(){this.header_.classList.remove(this.CssClasses_.IS_ANIMATING)},f.prototype.headerClickHandler_=function(){this.header_.classList.contains(this.CssClasses_.IS_COMPACT)&&(this.header_.classList.remove(this.CssClasses_.IS_COMPACT),this.header_.classList.add(this.CssClasses_.IS_ANIMATING))},f.prototype.resetTabState_=function(e){for(var t=0;t0?c.classList.add(this.CssClasses_.IS_ACTIVE):c.classList.remove(this.CssClasses_.IS_ACTIVE),this.tabBar_.scrollLeft0)return;this.setFrameCount(1);var i,n,a=e.currentTarget.getBoundingClientRect();if(0===e.clientX&&0===e.clientY)i=Math.round(a.width/2),n=Math.round(a.height/2);else{var l=void 0!==e.clientX?e.clientX:e.touches[0].clientX,o=void 0!==e.clientY?e.clientY:e.touches[0].clientY;i=Math.round(l-a.left),n=Math.round(o-a.top)}this.setRippleXY(i,n),this.setRippleStyles(!0),window.requestAnimationFrame(this.animFrameHandler.bind(this))}},S.prototype.upHandler_=function(e){e&&2!==e.detail&&window.setTimeout(function(){this.rippleElement_.classList.remove(this.CssClasses_.IS_VISIBLE)}.bind(this),0)},S.prototype.init=function(){if(this.element_){var e=this.element_.classList.contains(this.CssClasses_.RIPPLE_CENTER);this.element_.classList.contains(this.CssClasses_.RIPPLE_EFFECT_IGNORE_EVENTS)||(this.rippleElement_=this.element_.querySelector("."+this.CssClasses_.RIPPLE),this.frameCount_=0,this.rippleSize_=0,this.x_=0,this.y_=0,this.ignoringMouseDown_=!1,this.boundDownHandler=this.downHandler_.bind(this),this.element_.addEventListener("mousedown",this.boundDownHandler),this.element_.addEventListener("touchstart",this.boundDownHandler),this.boundUpHandler=this.upHandler_.bind(this),this.element_.addEventListener("mouseup",this.boundUpHandler),this.element_.addEventListener("mouseleave",this.boundUpHandler),this.element_.addEventListener("touchend",this.boundUpHandler),this.element_.addEventListener("blur",this.boundUpHandler),this.getFrameCount=function(){return this.frameCount_},this.setFrameCount=function(e){this.frameCount_=e},this.getRippleElement=function(){return this.rippleElement_},this.setRippleXY=function(e,t){this.x_=e,this.y_=t},this.setRippleStyles=function(t){if(null!==this.rippleElement_){var s,i,n,a="translate("+this.x_+"px, "+this.y_+"px)";t?(i=this.Constant_.INITIAL_SCALE,n=this.Constant_.INITIAL_SIZE):(i=this.Constant_.FINAL_SCALE,n=this.rippleSize_+"px",e&&(a="translate("+this.boundWidth/2+"px, "+this.boundHeight/2+"px)")),s="translate(-50%, -50%) "+a+i,this.rippleElement_.style.webkitTransform=s,this.rippleElement_.style.msTransform=s,this.rippleElement_.style.transform=s,t?this.rippleElement_.classList.remove(this.CssClasses_.IS_ANIMATING):this.rippleElement_.classList.add(this.CssClasses_.IS_ANIMATING)}},this.animFrameHandler=function(){this.frameCount_-- >0?window.requestAnimationFrame(this.animFrameHandler.bind(this)):this.setRippleStyles(!1)})}},s.register({constructor:S,classAsString:"MaterialRipple",cssClass:"mdl-js-ripple-effect",widget:!1})}(); -//# sourceMappingURL=material.min.js.map diff --git a/public/js/promise.js b/public/js/promise.js deleted file mode 100755 index b90788a6..00000000 --- a/public/js/promise.js +++ /dev/null @@ -1,368 +0,0 @@ -/** - * 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)); diff --git a/public/js/storage.js b/public/js/storage.js deleted file mode 100755 index 1900f2d5..00000000 --- a/public/js/storage.js +++ /dev/null @@ -1,156 +0,0 @@ -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)), - }; -} diff --git a/public/js/track.js b/public/js/track.js deleted file mode 100755 index da706b55..00000000 --- a/public/js/track.js +++ /dev/null @@ -1,34 +0,0 @@ -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); -}()); diff --git a/public/myicons/favicon-16x16.png b/public/myicons/favicon-16x16.png deleted file mode 100644 index c28cef9f..00000000 Binary files a/public/myicons/favicon-16x16.png and /dev/null differ diff --git a/public/myicons/favicon-32x32.png b/public/myicons/favicon-32x32.png deleted file mode 100644 index a02e38b0..00000000 Binary files a/public/myicons/favicon-32x32.png and /dev/null differ diff --git a/public/myicons/favicon-96x96.png b/public/myicons/favicon-96x96.png deleted file mode 100644 index f741b210..00000000 Binary files a/public/myicons/favicon-96x96.png and /dev/null differ diff --git a/public/workbox/workbox-sw.js b/public/workbox/workbox-sw.js deleted file mode 100644 index 1b972a40..00000000 --- a/public/workbox/workbox-sw.js +++ /dev/null @@ -1,2 +0,0 @@ -!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 diff --git a/quasar.config.ts b/quasar.config.ts index f1103345..9fe155a5 100644 --- a/quasar.config.ts +++ b/quasar.config.ts @@ -200,7 +200,7 @@ export default defineConfig((ctx) => { // Applies only if "transpile" is set to true. // transpileDependencies: [], - // rtl: true, // https://v2.quasar.dev/options/rtl-support + // rtl: true, // https://v2.quasar.dev/options/rtl-supg // preloadChunks: true, // showProgress: false, // gzip: true, @@ -219,7 +219,8 @@ export default defineConfig((ctx) => { key: path.resolve(__dirname, 'localhost-key.pem'), cert: path.resolve(__dirname, 'localhost.pem'), }, - port: ctx.mode.spa ? 8084 : 8094, + + port: parseInt(process.env.PORT, 10), vueDevtools: false, // automatically opening remote Vue Devtools open: false, // opens browser window automatically hot: true, // Disable hot module replacement @@ -366,7 +367,7 @@ export default defineConfig((ctx) => { // https://v2.quasar.dev/quasar-cli/developing-pwa/configuring-pwa pwa: { workboxMode: 'InjectManifest', // 'GenerateSW' or 'InjectManifest' - swFilename: 'sw-' + "1.2.28" + '.js', + swFilename: 'sw-' + process.env.APP_VERSION + '.js', workboxOptions: { swSrc: 'src-pwa/custom-service-worker.js', // Assicurati che il file esista include: [/\.html$/, /\.js$/, /\.css$/, /\.png$/, /\.svg$/, /\.json$/], // File da precacheare @@ -413,7 +414,7 @@ export default defineConfig((ctx) => { builder: { // https://www.electron.build/configuration/configuration - appId: 'Riso', + appId: '-', }, diff --git a/scripts/_ALL_SITES/comunitanuovomondo.app/package.json b/scripts/_ALL_SITES/comunitanuovomondo.app/package.json index d539ec9c..06a0a19b 100755 --- a/scripts/_ALL_SITES/comunitanuovomondo.app/package.json +++ b/scripts/_ALL_SITES/comunitanuovomondo.app/package.json @@ -9,7 +9,7 @@ "license": "MIT", "type": "module", "scripts": { - "dev": "quasar dev", + "dev": "PORT=8083:APP_VERSION='1.2.28' quasar dev", "dev_noCheck": "SKIP_TSC=true quasar dev", "build": "quasar build", "buildpwa": "NODE_ENV=production quasar build -m pwa", @@ -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": "quasar dev -m pwa", - "spa": "quasar dev", + "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", "debug": "quasar dev --mode debug", "test": "echo \"No test specified\" && exit 0", "generate-sw": "workbox generateSW workbox-config.js", diff --git a/scripts/_ALL_SITES/comunitanuovomondo.app/quasar.config.ts b/scripts/_ALL_SITES/comunitanuovomondo.app/quasar.config.ts deleted file mode 100644 index 75b36d23..00000000 --- a/scripts/_ALL_SITES/comunitanuovomondo.app/quasar.config.ts +++ /dev/null @@ -1,422 +0,0 @@ -import { defineConfig } from '#q-app/wrappers' -import { fileURLToPath } from 'node:url'; - -import path from 'path' - -// console.log(process.env) - -export default defineConfig((ctx) => { - return { - // https://v2.quasar.dev/quasar-cli/supporting-ts - - // https://v2.quasar.dev/quasar-cli/prefetch-feature - // preFetch: true, - - // app boot file (/src/boot) - // --> boot files are part of "main.js" - // https://v2.quasar.dev/quasar-cli/boot-files - // boot: ['vue-i18n', 'vue-meta', 'axios', 'vee-validate', 'myconfig', 'local-storage', 'error-handler', 'globalroutines', 'vue-idb', 'dragula', 'guard'], - boot: ['i18n', 'axios', 'pinia', 'vee-validate', - 'myconfig', - 'local-storage', 'error-handler', 'globalroutines', - 'calendar', 'social-sharing', 'timeago', 'guard'], - - // https://v2.quasar.dev/quasar-cli/quasar-conf-js#Property%3A-css - css: [ - 'app.scss', - // '~quasar-ui-qcalendar/src/css/calendar-day.sass' - ], - - // https://github.com/quasarframework/quasar/tree/dev/extras - extras: [ - // 'ionicons-v4', - // 'mdi-v5', - // 'eva-icons', - // 'themify', - // 'line-awesome', - 'ionicons-v4', - // 'mdi-v3', - 'fontawesome-v5', - 'roboto-font', // optional, you are not bound to it - 'material-icons', // optional, you are not bound to it - 'material-icons-outlined', - ], - - // Full list of options: https://v2.quasar.dev/quasar-cli/quasar-conf-js#Property%3A-build - - build: { - target: { - browser: ['es2022', 'firefox115', 'chrome115', 'safari14'], - node: 'node20' - }, - // env: envparser(), - // versionCode: package.version, - vueRouterMode: 'history', - analyze: false, // true - transpile: true, - transpileDependencies: [ - /quasar-ui-qcalendar[\\/]src/ - ], - beforeDev(api) { - // Se la variabile d'ambiente SKIP_TSC è impostata, disabilita il type checking - if (process.env.SKIP_TSC === 'true') { - console.log('⚠️ TypeScript type checking is disabled'); - - // Disattiva TypeScript checking per Vite - if (api && api.chainWebpack) { - api.chainWebpack((chain) => { - chain.plugin('fork-ts-checker').tap((args) => { - args[0].typescript = false; - return args; - }); - }); - } - } - }, - // @quasar/app-vite v2.0.3+ - envFilter(originalEnv) { - const newEnv = {} - for (const key in originalEnv) { - /* ...decide if it goes in or not... */ - if (true) { - newEnv[key] = originalEnv[key] - } - } - - // remember to return your processed env - return newEnv - }, - - typescript: { - strict: false, - vueShim: true, - extendTsConfig(tsConfig) { - // You can use this hook to extend tsConfig dynamically - // For basic use cases, you can still update the usual tsconfig.json file to override some settings - }, - - /** - * Folder where Quasar CLI should look for .env* files. - * Can be an absolute path or a relative path to project root directory. - * - * @default project root directory - */ - // envFolder?: string - /** - * Additional .env* files to be loaded. - * Each entry can be an absolute path or a relative path to quasar.config > build > envFolder. - * - * @example ['.env.somefile', '../.env.someotherfile'] - */ - // envFiles?: string[]; - }, - - extendViteConf(viteConf, { isServer, isClient }) { - viteConf.resolve = { - ...(viteConf.resolve || {}), - alias: { - ...viteConf.resolve.alias, - '#q-app': path.resolve(__dirname, 'node_modules/quasar/app'), // Alias per #q-app - 'app': path.resolve(__dirname), - 'boot': path.resolve(__dirname, 'src/boot'), - 'src': path.resolve(__dirname, 'src'), - 'statics': path.resolve(__dirname, 'src/statics'), - 'components': path.resolve(__dirname, 'src/components'), - 'views': path.resolve(__dirname, 'src/views/index.ts'), - 'images': path.resolve(__dirname, 'src/assets/images'), - 'maps': path.resolve(__dirname, 'public/maps'), - 'classes': path.resolve(__dirname, 'src/classes/index.ts'), - 'fonts': path.resolve(__dirname, 'src/assets/fonts'), - 'utils': path.resolve(__dirname, 'src/utils/index.ts'), - 'css': path.resolve(__dirname, 'public/css/variables.scss'), - 'router': path.resolve(__dirname, 'src/router/index.ts'), - 'validators': path.resolve(__dirname, 'src/utils/validators.ts'), - 'methods': path.resolve(__dirname, 'src/utils/methods.ts'), - 'filters': path.resolve(__dirname, 'src/utils/filters.ts'), - 'api': path.resolve(__dirname, 'src/store/Api/index.ts'), - 'paths': path.resolve(__dirname, 'src/store/Api/ApiRoutes.ts'), - 'modules': path.resolve(__dirname, 'src/store/Modules/index.ts'), - 'model': path.resolve(__dirname, 'src/model/index.ts'), - '@components': path.resolve(__dirname, 'src/components'), - '@boot': path.resolve(__dirname, 'src/boot'), - '@costanti': path.resolve(__dirname, 'src/store/Modules/costanti.ts'), - '@views': path.resolve(__dirname, 'src/views/index.ts'), - '@src': path.resolve(__dirname, 'src'), - '@css': path.resolve(__dirname, 'src/public/css/variables.scss'), - '@icons': path.resolve(__dirname, 'src/public/public/myicons'), - '@images': path.resolve(__dirname, 'src/public/images/*'), - '@maps': path.resolve(__dirname, 'src/public/maps/*'), - '@classes': path.resolve(__dirname, 'src/classes/index.ts'), - '@utils': path.resolve(__dirname, 'src/utils/index.ts'), - '@router': path.resolve(__dirname, 'src/router/index.ts'), - '@validators': path.resolve(__dirname, 'src/utils/validators.ts'), - '@methods': path.resolve(__dirname, 'src/utils/methods.ts'), - '@api': path.resolve(__dirname, 'src/store/Api/index.ts'), - '@paths': path.resolve(__dirname, 'src/store/Api/ApiRoutes.ts'), - '@storemod': path.resolve(__dirname, 'src/store/Modules'), - '@store': path.resolve(__dirname, 'src/store'), - '@tools': path.resolve(__dirname, 'src/store/Modules/tools.ts'), - '@modules': path.resolve(__dirname, 'src/store/Modules/index.ts'), - '@model': path.resolve(__dirname, 'src/model/index.ts'), - }, - }; - }, - - vitePlugins: [ - ['@intlify/unplugin-vue-i18n/vite', { - // if you want to use Vue I18n Legacy API, you need to set `compositionOnly: false` - // compositionOnly: false, - - // if you want to use named tokens in your Vue I18n messages, such as 'Hello {name}', - // you need to set `runtimeOnly: false` - // runtimeOnly: false, - - ssr: ctx.modeName === 'ssr', - - // you need to set i18n resource including paths ! - include: [fileURLToPath(new URL('./src/i18n', import.meta.url))] - }], - - ['vite-plugin-checker', { - vueTsc: false, - OFF_eslint: { - lintCommand: 'eslint -c ./eslint.config.js "./src*/**/*.{ts,js,mjs,cjs,vue}"', - useFlatConfig: true - } - }, { server: false }] - - - ] - - // polyfillModulePreload: true, - - // viteVuePluginOptions: {}, - - // extractCSS: false, - // transpile: false, - - // Add dependencies for transpiling with Babel (Array of string/regex) - // (from node_modules, which are by default not transpiled). - // Applies only if "transpile" is set to true. - // transpileDependencies: [], - - // rtl: true, // https://v2.quasar.dev/options/rtl-support - // preloadChunks: true, - // showProgress: false, - // gzip: true, - // analyze: true, - - // Options below are automatically set depending on the env, set them if you want to override - // extractCSS: false, - - // https://v2.quasar.dev/quasar-cli/handling-webpack - // "chain" is a webpack-chain object https://github.com/neutrinojs/webpack-chain - }, - - // Full list of options: https://v2.quasar.dev/quasar-cli/quasar-conf-js#Property%3A-devServer - devServer: { - https: { - key: path.resolve(__dirname, 'localhost-key.pem'), - cert: path.resolve(__dirname, 'localhost.pem'), - }, - port: ctx.mode.spa ? 8086 : 8096, - vueDevtools: false, // automatically opening remote Vue Devtools - open: false, // opens browser window automatically - hot: true, // Disable hot module replacement - headers: { - 'Access-Control-Allow-Origin': '*', - 'Access-Control-Allow-Headers': '*', - }, - }, - - // https://v2.quasar.dev/quasar-cli/quasar-conf-js#Property%3A-framework - framework: { - config: {}, - - // iconSet: 'material-icons', // Quasar icon set - // lang: 'en-US', // Quasar language pack - - // For special cases outside of where the auto-import strategy can have an impact - // (like functional components as one of the examples), - // you can manually specify Quasar components/directives to be available everywhere: - // - components: [ - 'QLayout', - 'QDrawer', - 'QItemSection', - 'QHeader', - 'QFooter', - 'QPageContainer', - 'QPage', - 'QPopupProxy', - 'QToolbar', - 'QToolbarTitle', - 'QBtn', - 'QBtnDropdown', - 'QColor', - 'QIcon', - 'QList', - 'QKnob', - 'QItemLabel', - 'QItem', - 'QCard', - 'QMarkupTable', - 'QSpace', - 'QDialog', - 'QBadge', - 'QForm', - 'QCardSection', - 'QCardActions', - 'QField', - 'QInput', - 'QSelect', - 'QMenu', - 'QToggle', - 'QFab', - 'QInfiniteScroll', - 'QAjaxBar', - 'QChip', - 'QExpansionItem', - 'QCheckbox', - 'QBanner', - 'QInnerLoading', - 'QSpinnerGears', - 'QSpinnerDots', - 'QDate', - 'QTime', - 'QSlideTransition', - 'QTable', - 'QTh', - 'QTr', - 'QTd', - 'QLinearProgress', - 'QSlider', - 'QPopupEdit', - 'QCarousel', - 'QCarouselControl', - 'QCarouselSlide', - 'QPageScroller', - 'QAvatar', - 'QImg', - 'QSplitter', - 'QRating', - 'QParallax', - 'QTab', - 'QTabs', - 'QTabPanels', - 'QTabPanel', - 'QTree', - 'QSeparator', - ], - directives: [ - 'Ripple', - 'ClosePopup', - ], - _plugins: [ - 'Meta', - 'Dialog', - 'Notify', - 'Cookies', - 'Loading', - 'AppVisibility', - 'LocalStorage', - 'SessionStorage', - ], - get plugins_1() { - return this._plugins; - }, - set plugins_1(value) { - this._plugins = value; - }, - get plugins() { - return this._plugins; - }, - set plugins(value) { - this._plugins = value; - }, - iconSet: 'fontawesome-v5', - lang: 'it', // Quasar language - }, - - animations: 'all', // --- includes all animations - // https://v2.quasar.dev/options/animations - // animations: [], - - // https://v2.quasar.dev/quasar-cli/developing-ssr/configuring-ssr - ssr: { - pwa: false, - - // manualStoreHydration: true, - // manualPostHydrationTrigger: true, - - prodPort: 3000, // The default port that the production server should use - // (gets superseded if import.meta.env.PORT is specified at runtime) - - maxAge: 1000 * 60 * 60 * 24 * 30, - // Tell browser when a file from the server should expire from cache (in ms) - - - middlewares: [ - ctx.prod ? 'compression' : '', - 'render', // keep this as last one - ], - }, - - - // https://v2.quasar.dev/quasar-cli/developing-pwa/configuring-pwa - pwa: { - workboxMode: 'InjectManifest', // 'GenerateSW' or 'InjectManifest' - swFilename: 'sw-' + "1.2.28" + '.js', - workboxOptions: { - swSrc: 'src-pwa/custom-service-worker.js', // Assicurati che il file esista - include: [/\.html$/, /\.js$/, /\.css$/, /\.png$/, /\.svg$/, /\.json$/], // File da precacheare - }, - /*extendGenerateSWOptions(cfg) { - cfg.skipWaiting = false - cfg.clientsClaim = false - },*/ - }, - - sourceFiles: { - pwaRegisterServiceWorker: 'src-pwa/register-service-worker', - pwaServiceWorker: 'src-pwa/custom-service-worker', - pwaManifestFile: 'src-pwa/manifest.json', - }, - - // Full list of options: https://v2.quasar.dev/quasar-cli/developing-cordova-apps/configuring-cordova - cordova: { - // noIosLegacyBuildFlag: true, // uncomment only if you know what you are doing - }, - - // Full list of options: https://v2.quasar.dev/quasar-cli/developing-capacitor-apps/configuring-capacitor - capacitor: { - hideSplashscreen: true, - }, - - // Full list of options: https://v2.quasar.dev/quasar-cli/developing-electron-apps/configuring-electron - electron: { - bundler: 'packager', // 'packager' or 'builder' - - packager: { - // https://github.com/electron-userland/electron-packager/blob/master/docs/api.md#options - - // OS X / Mac App Store - // appBundleId: '', - // appCategoryType: '', - // osxSign: '', - // protocol: 'myapp://path', - - // Windows only - // win32metadata: { ... } - }, - - builder: { - // https://www.electron.build/configuration/configuration - - appId: 'ComunitaNuovoMondo', - }, - - - }, - } -}) diff --git a/scripts/_ALL_SITES/gruppomacro.app/package.json b/scripts/_ALL_SITES/gruppomacro.app/package.json index 3ccadf1f..6451c3cd 100755 --- a/scripts/_ALL_SITES/gruppomacro.app/package.json +++ b/scripts/_ALL_SITES/gruppomacro.app/package.json @@ -9,20 +9,20 @@ "license": "MIT", "type": "module", "scripts": { - "dev": "quasar dev", + "dev": "PORT=8089:APP_VERSION='1.2.28' 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.28' quasar build -m pwa", + "buildpwatest": "NODE_ENV=production:APP_VERSION='1.2.28' quasar build -m pwa", "type-check": "vue-tsc --noEmit", "type-check:watch": "vue-tsc --noEmit --watch", - "buildspa": "quasar build -m spa", + "buildspa": "APP_VERSION='1.2.28' 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": "quasar dev -m pwa", - "spa": "NODE_ENV=development quasar dev", + "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", "debug": "quasar dev --mode debug", "test": "echo \"No test specified\" && exit 0", "generate-sw": "workbox generateSW workbox-config.js", diff --git a/scripts/_ALL_SITES/gruppomacro.app/quasar.config.ts b/scripts/_ALL_SITES/gruppomacro.app/quasar.config.ts deleted file mode 100644 index fd1cd662..00000000 --- a/scripts/_ALL_SITES/gruppomacro.app/quasar.config.ts +++ /dev/null @@ -1,416 +0,0 @@ -import { defineConfig } from '#q-app/wrappers' -import { fileURLToPath } from 'node:url'; - -import path from 'path' - -export default defineConfig((ctx) => { - return { - // https://v2.quasar.dev/quasar-cli/supporting-ts - - // https://v2.quasar.dev/quasar-cli/prefetch-feature - // preFetch: true, - - // app boot file (/src/boot) - // --> boot files are part of "main.js" - // https://v2.quasar.dev/quasar-cli/boot-files - // boot: ['vue-i18n', 'vue-meta', 'axios', 'vee-validate', 'myconfig', 'local-storage', 'error-handler', 'globalroutines', 'vue-idb', 'dragula', 'guard'], - boot: ['i18n', 'axios', 'pinia', 'vee-validate', - 'myconfig', - 'local-storage', 'error-handler', 'globalroutines', - 'calendar', 'social-sharing', 'timeago', 'guard'], - - // https://v2.quasar.dev/quasar-cli/quasar-conf-js#Property%3A-css - css: [ - 'app.scss', - // '~quasar-ui-qcalendar/src/css/calendar-day.sass' - ], - - // https://github.com/quasarframework/quasar/tree/dev/extras - extras: [ - // 'ionicons-v4', - // 'mdi-v5', - // 'eva-icons', - // 'themify', - // 'line-awesome', - 'ionicons-v4', - // 'mdi-v3', - 'fontawesome-v5', - 'roboto-font', // optional, you are not bound to it - 'material-icons', // optional, you are not bound to it - 'material-icons-outlined', - ], - - // Full list of options: https://v2.quasar.dev/quasar-cli/quasar-conf-js#Property%3A-build - - build: { - target: { - browser: ['es2022', 'firefox115', 'chrome115', 'safari14'], - node: 'node20' - }, - // env: envparser(), - // versionCode: package.version, - vueRouterMode: 'history', - analyze: false, // true - transpile: true, - transpileDependencies: [ - /quasar-ui-qcalendar[\\/]src/ - ], - beforeDev(api) { - // Se la variabile d'ambiente SKIP_TSC è impostata, disabilita il type checking - if (process.env.SKIP_TSC === 'true') { - console.log('⚠️ TypeScript type checking is disabled'); - - // Disattiva TypeScript checking per Vite - if (api && api.chainWebpack) { - api.chainWebpack((chain) => { - chain.plugin('fork-ts-checker').tap((args) => { - args[0].typescript = false; - return args; - }); - }); - } - } - }, - // @quasar/app-vite v2.0.3+ - envFilter(originalEnv) { - const newEnv = {} - for (const key in originalEnv) { - /* ...decide if it goes in or not... */ - if (true) { - newEnv[key] = originalEnv[key] - } - } - - // remember to return your processed env - return newEnv - }, - - typescript: { - strict: false, - vueShim: true, - extendTsConfig(tsConfig) { - // You can use this hook to extend tsConfig dynamically - // For basic use cases, you can still update the usual tsconfig.json file to override some settings - }, - - /** - * Folder where Quasar CLI should look for .env* files. - * Can be an absolute path or a relative path to project root directory. - * - * @default project root directory - */ - // envFolder?: string - /** - * Additional .env* files to be loaded. - * Each entry can be an absolute path or a relative path to quasar.config > build > envFolder. - * - * @example ['.env.somefile', '../.env.someotherfile'] - */ - // envFiles?: string[]; - }, - - extendViteConf(viteConf, { isServer, isClient }) { - viteConf.resolve = { - ...(viteConf.resolve || {}), - alias: { - ...viteConf.resolve.alias, - '#q-app': path.resolve(__dirname, 'node_modules/quasar/app'), // Alias per #q-app - 'app': path.resolve(__dirname), - 'boot': path.resolve(__dirname, 'src/boot'), - 'src': path.resolve(__dirname, 'src'), - 'statics': path.resolve(__dirname, 'src/statics'), - 'components': path.resolve(__dirname, 'src/components'), - 'views': path.resolve(__dirname, 'src/views/index.ts'), - 'icons': path.resolve(__dirname, 'public/myicons'), - 'images': path.resolve(__dirname, 'src/assets/images'), - 'maps': path.resolve(__dirname, 'public/maps'), - 'classes': path.resolve(__dirname, 'src/classes/index.ts'), - 'fonts': path.resolve(__dirname, 'src/assets/fonts'), - 'utils': path.resolve(__dirname, 'src/utils/index.ts'), - 'css': path.resolve(__dirname, 'public/css/variables.scss'), - 'router': path.resolve(__dirname, 'src/router/index.ts'), - 'validators': path.resolve(__dirname, 'src/utils/validators.ts'), - 'methods': path.resolve(__dirname, 'src/utils/methods.ts'), - 'filters': path.resolve(__dirname, 'src/utils/filters.ts'), - 'api': path.resolve(__dirname, 'src/store/Api/index.ts'), - 'paths': path.resolve(__dirname, 'src/store/Api/ApiRoutes.ts'), - 'modules': path.resolve(__dirname, 'src/store/Modules/index.ts'), - 'model': path.resolve(__dirname, 'src/model/index.ts'), - '@components': path.resolve(__dirname, 'src/components'), - '@boot': path.resolve(__dirname, 'src/boot'), - '@costanti': path.resolve(__dirname, 'src/store/Modules/costanti.ts'), - '@views': path.resolve(__dirname, 'src/views/index.ts'), - '@src': path.resolve(__dirname, 'src'), - '@css': path.resolve(__dirname, 'src/public/css/variables.scss'), - '@icons': path.resolve(__dirname, 'src/public/public/myicons'), - '@images': path.resolve(__dirname, 'src/public/images/*'), - '@maps': path.resolve(__dirname, 'src/public/maps/*'), - '@classes': path.resolve(__dirname, 'src/classes/index.ts'), - '@utils': path.resolve(__dirname, 'src/utils/index.ts'), - '@router': path.resolve(__dirname, 'src/router/index.ts'), - '@validators': path.resolve(__dirname, 'src/utils/validators.ts'), - '@methods': path.resolve(__dirname, 'src/utils/methods.ts'), - '@api': path.resolve(__dirname, 'src/store/Api/index.ts'), - '@paths': path.resolve(__dirname, 'src/store/Api/ApiRoutes.ts'), - '@storemod': path.resolve(__dirname, 'src/store/Modules'), - '@store': path.resolve(__dirname, 'src/store'), - '@tools': path.resolve(__dirname, 'src/store/Modules/tools.ts'), - '@modules': path.resolve(__dirname, 'src/store/Modules/index.ts'), - '@model': path.resolve(__dirname, 'src/model/index.ts'), - }, - }; - }, - - vitePlugins: [ - ['@intlify/unplugin-vue-i18n/vite', { - // if you want to use Vue I18n Legacy API, you need to set `compositionOnly: false` - // compositionOnly: false, - - // if you want to use named tokens in your Vue I18n messages, such as 'Hello {name}', - // you need to set `runtimeOnly: false` - // runtimeOnly: false, - - ssr: ctx.modeName === 'ssr', - - // you need to set i18n resource including paths ! - include: [fileURLToPath(new URL('./src/i18n', import.meta.url))] - }], - - ['vite-plugin-checker', { - vueTsc: false, - OFF_eslint: { - lintCommand: 'eslint -c ./eslint.config.js "./src*/**/*.{ts,js,mjs,cjs,vue}"', - useFlatConfig: true - } - }, { server: false }] - - - ] - - // polyfillModulePreload: true, - - // viteVuePluginOptions: {}, - - // extractCSS: false, - // transpile: false, - - // Add dependencies for transpiling with Babel (Array of string/regex) - // (from node_modules, which are by default not transpiled). - // Applies only if "transpile" is set to true. - // transpileDependencies: [], - - // rtl: true, // https://v2.quasar.dev/options/rtl-support - // preloadChunks: true, - // showProgress: false, - // gzip: true, - // analyze: true, - - // Options below are automatically set depending on the env, set them if you want to override - // extractCSS: false, - - // https://v2.quasar.dev/quasar-cli/handling-webpack - // "chain" is a webpack-chain object https://github.com/neutrinojs/webpack-chain - }, - - // Full list of options: https://v2.quasar.dev/quasar-cli/quasar-conf-js#Property%3A-devServer - devServer: { - https: false, - port: ctx.mode.spa ? 8089 : 8099, - vueDevtools: false, // automatically opening remote Vue Devtools - open: false, // opens browser window automatically - hot: true, // Disable hot module replacement - headers: { - 'Access-Control-Allow-Origin': '*', - 'Access-Control-Allow-Headers': '*', - }, - }, - - // https://v2.quasar.dev/quasar-cli/quasar-conf-js#Property%3A-framework - framework: { - config: {}, - - // iconSet: 'material-icons', // Quasar icon set - // lang: 'en-US', // Quasar language pack - - // For special cases outside of where the auto-import strategy can have an impact - // (like functional components as one of the examples), - // you can manually specify Quasar components/directives to be available everywhere: - // - components: [ - 'QLayout', - 'QDrawer', - 'QItemSection', - 'QHeader', - 'QFooter', - 'QPageContainer', - 'QPage', - 'QPopupProxy', - 'QToolbar', - 'QToolbarTitle', - 'QBtn', - 'QBtnDropdown', - 'QColor', - 'QIcon', - 'QList', - 'QKnob', - 'QItemLabel', - 'QItem', - 'QCard', - 'QMarkupTable', - 'QSpace', - 'QDialog', - 'QBadge', - 'QForm', - 'QCardSection', - 'QCardActions', - 'QField', - 'QInput', - 'QSelect', - 'QMenu', - 'QToggle', - 'QFab', - 'QInfiniteScroll', - 'QAjaxBar', - 'QChip', - 'QExpansionItem', - 'QCheckbox', - 'QBanner', - 'QInnerLoading', - 'QSpinnerGears', - 'QSpinnerDots', - 'QDate', - 'QTime', - 'QSlideTransition', - 'QTable', - 'QTh', - 'QTr', - 'QTd', - 'QLinearProgress', - 'QSlider', - 'QPopupEdit', - 'QCarousel', - 'QCarouselControl', - 'QCarouselSlide', - 'QPageScroller', - 'QAvatar', - 'QImg', - 'QSplitter', - 'QRating', - 'QParallax', - 'QTab', - 'QTabs', - 'QTabPanels', - 'QTabPanel', - 'QTree', - 'QSeparator', - ], - directives: [ - 'Ripple', - 'ClosePopup', - ], - _plugins: [ - 'Meta', - 'Dialog', - 'Notify', - 'Cookies', - 'Loading', - 'AppVisibility', - 'LocalStorage', - 'SessionStorage', - ], - get plugins_1() { - return this._plugins; - }, - set plugins_1(value) { - this._plugins = value; - }, - get plugins() { - return this._plugins; - }, - set plugins(value) { - this._plugins = value; - }, - iconSet: 'fontawesome-v5', - lang: 'it', // Quasar language - }, - - animations: 'all', // --- includes all animations - // https://v2.quasar.dev/options/animations - // animations: [], - - // https://v2.quasar.dev/quasar-cli/developing-ssr/configuring-ssr - ssr: { - pwa: false, - - // manualStoreHydration: true, - // manualPostHydrationTrigger: true, - - prodPort: 3000, // The default port that the production server should use - // (gets superseded if import.meta.env.PORT is specified at runtime) - - maxAge: 1000 * 60 * 60 * 24 * 30, - // Tell browser when a file from the server should expire from cache (in ms) - - - middlewares: [ - ctx.prod ? 'compression' : '', - 'render', // keep this as last one - ], - }, - - pwa: { - workboxMode: 'InjectManifest', // 'GenerateSW' or 'InjectManifest' - swFilename: 'sw-' + "1.2.28" + '.js', - workboxOptions: { - swSrc: 'src-pwa/custom-service-worker.js', // Assicurati che il file esista - include: [/\.html$/, /\.js$/, /\.css$/, /\.png$/, /\.svg$/, /\.json$/], // File da precacheare - }, - /*extendGenerateSWOptions(cfg) { - cfg.skipWaiting = false - cfg.clientsClaim = false - },*/ - }, - - sourceFiles: { - pwaRegisterServiceWorker: 'src-pwa/register-service-worker', - pwaServiceWorker: 'src-pwa/custom-service-worker', - pwaManifestFile: 'src-pwa/manifest.json', - }, - - // Full list of options: https://v2.quasar.dev/quasar-cli/developing-cordova-apps/configuring-cordova - cordova: { - // noIosLegacyBuildFlag: true, // uncomment only if you know what you are doing - }, - - // Full list of options: https://v2.quasar.dev/quasar-cli/developing-capacitor-apps/configuring-capacitor - capacitor: { - hideSplashscreen: true, - }, - - // Full list of options: https://v2.quasar.dev/quasar-cli/developing-electron-apps/configuring-electron - electron: { - bundler: 'packager', // 'packager' or 'builder' - - packager: { - // https://github.com/electron-userland/electron-packager/blob/master/docs/api.md#options - - // OS X / Mac App Store - // appBundleId: '', - // appCategoryType: '', - // osxSign: '', - // protocol: 'myapp://path', - - // Windows only - // win32metadata: { ... } - }, - - builder: { - // https://www.electron.build/configuration/configuration - - appId: 'GruppoMacro', - }, - - - }, - } -}) diff --git a/scripts/_ALL_SITES/kolibrilab.it/.env.test b/scripts/_ALL_SITES/kolibrilab.it/.env.test index 4bad83f1..6ac781eb 100755 --- a/scripts/_ALL_SITES/kolibrilab.it/.env.test +++ b/scripts/_ALL_SITES/kolibrilab.it/.env.test @@ -3,6 +3,7 @@ VITE_APP_URL="https://test.kolibrilab.it" VITE_MONGODB_HOST="https://test.freeplanet.app:3001" VITE_LOGO_REG='kolibrilab-logo-full.png' VITE_PUBLICKEY_PUSH="BGXRf1TgcqocqD6J7qnRgCG7AvM2lxAoW7peb7UEzB4SxBb6DxGRdJ0UvD9ewnrB9KrSrh0-aDCODXBm7sZ1DDs" +VITE_DEBUG="1" VITE_VUE_APP_ISTEST=1 DIRECTORY_LOCAL=newfreeplanet DIRECTORY_SERVER=test.freeplanet_serverside diff --git a/scripts/_ALL_SITES/piuchebuono.app/package.json b/scripts/_ALL_SITES/piuchebuono.app/package.json index 561a80ad..761e04ac 100755 --- a/scripts/_ALL_SITES/piuchebuono.app/package.json +++ b/scripts/_ALL_SITES/piuchebuono.app/package.json @@ -9,7 +9,7 @@ "license": "MIT", "type": "module", "scripts": { - "dev": "quasar dev", + "dev": "PORT=8085;APP_VERSION='1.2.28' quasar dev", "dev_noCheck": "SKIP_TSC=true quasar dev", "build": "quasar build", "buildpwa": "NODE_ENV=production quasar build -m pwa", @@ -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": "quasar dev -m pwa", - "spa": "quasar dev", + "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", "debug": "quasar dev --mode debug", "test": "echo \"No test specified\" && exit 0", "generate-sw": "workbox generateSW workbox-config.js", diff --git a/scripts/_ALL_SITES/piuchebuono.app/quasar.config.ts b/scripts/_ALL_SITES/piuchebuono.app/quasar.config.ts deleted file mode 100644 index aafd5bb4..00000000 --- a/scripts/_ALL_SITES/piuchebuono.app/quasar.config.ts +++ /dev/null @@ -1,417 +0,0 @@ -import { defineConfig } from '#q-app/wrappers' -import { fileURLToPath } from 'node:url'; - -import path from 'path' - -export default defineConfig((ctx) => { - return { - // https://v2.quasar.dev/quasar-cli/supporting-ts - - // https://v2.quasar.dev/quasar-cli/prefetch-feature - // preFetch: true, - - // app boot file (/src/boot) - // --> boot files are part of "main.js" - // https://v2.quasar.dev/quasar-cli/boot-files - // boot: ['vue-i18n', 'vue-meta', 'axios', 'vee-validate', 'myconfig', 'local-storage', 'error-handler', 'globalroutines', 'vue-idb', 'dragula', 'guard'], - boot: ['i18n', 'axios', 'pinia', 'vee-validate', - 'myconfig', - 'local-storage', 'error-handler', 'globalroutines', - 'calendar', 'social-sharing', 'timeago', 'guard'], - - // https://v2.quasar.dev/quasar-cli/quasar-conf-js#Property%3A-css - css: [ - 'app.scss', - // '~quasar-ui-qcalendar/src/css/calendar-day.sass' - ], - - // https://github.com/quasarframework/quasar/tree/dev/extras - extras: [ - // 'ionicons-v4', - // 'mdi-v5', - // 'eva-icons', - // 'themify', - // 'line-awesome', - 'ionicons-v4', - // 'mdi-v3', - 'fontawesome-v5', - 'roboto-font', // optional, you are not bound to it - 'material-icons', // optional, you are not bound to it - 'material-icons-outlined', - ], - - // Full list of options: https://v2.quasar.dev/quasar-cli/quasar-conf-js#Property%3A-build - - build: { - target: { - browser: ['es2022', 'firefox115', 'chrome115', 'safari14'], - node: 'node20' - }, - // env: envparser(), - // versionCode: package.version, - vueRouterMode: 'history', - analyze: false, // true - transpile: true, - transpileDependencies: [ - /quasar-ui-qcalendar[\\/]src/ - ], - beforeDev(api) { - // Se la variabile d'ambiente SKIP_TSC è impostata, disabilita il type checking - if (process.env.SKIP_TSC === 'true') { - console.log('⚠️ TypeScript type checking is disabled'); - - // Disattiva TypeScript checking per Vite - if (api && api.chainWebpack) { - api.chainWebpack((chain) => { - chain.plugin('fork-ts-checker').tap((args) => { - args[0].typescript = false; - return args; - }); - }); - } - } - }, - // @quasar/app-vite v2.0.3+ - envFilter(originalEnv) { - const newEnv = {} - for (const key in originalEnv) { - /* ...decide if it goes in or not... */ - if (true) { - newEnv[key] = originalEnv[key] - } - } - - // remember to return your processed env - return newEnv - }, - - typescript: { - strict: false, - vueShim: true, - extendTsConfig(tsConfig) { - // You can use this hook to extend tsConfig dynamically - // For basic use cases, you can still update the usual tsconfig.json file to override some settings - }, - - /** - * Folder where Quasar CLI should look for .env* files. - * Can be an absolute path or a relative path to project root directory. - * - * @default project root directory - */ - // envFolder?: string - /** - * Additional .env* files to be loaded. - * Each entry can be an absolute path or a relative path to quasar.config > build > envFolder. - * - * @example ['.env.somefile', '../.env.someotherfile'] - */ - // envFiles?: string[]; - }, - - extendViteConf(viteConf, { isServer, isClient }) { - viteConf.resolve = { - ...(viteConf.resolve || {}), - alias: { - ...viteConf.resolve.alias, - '#q-app': path.resolve(__dirname, 'node_modules/quasar/app'), // Alias per #q-app - 'app': path.resolve(__dirname), - 'boot': path.resolve(__dirname, 'src/boot'), - 'src': path.resolve(__dirname, 'src'), - 'statics': path.resolve(__dirname, 'src/statics'), - 'components': path.resolve(__dirname, 'src/components'), - 'views': path.resolve(__dirname, 'src/views/index.ts'), - 'icons': path.resolve(__dirname, 'public/myicons'), - 'images': path.resolve(__dirname, 'src/assets/images'), - 'maps': path.resolve(__dirname, 'public/maps'), - 'classes': path.resolve(__dirname, 'src/classes/index.ts'), - 'fonts': path.resolve(__dirname, 'src/assets/fonts'), - 'utils': path.resolve(__dirname, 'src/utils/index.ts'), - 'css': path.resolve(__dirname, 'public/css/variables.scss'), - 'router': path.resolve(__dirname, 'src/router/index.ts'), - 'validators': path.resolve(__dirname, 'src/utils/validators.ts'), - 'methods': path.resolve(__dirname, 'src/utils/methods.ts'), - 'filters': path.resolve(__dirname, 'src/utils/filters.ts'), - 'api': path.resolve(__dirname, 'src/store/Api/index.ts'), - 'paths': path.resolve(__dirname, 'src/store/Api/ApiRoutes.ts'), - 'modules': path.resolve(__dirname, 'src/store/Modules/index.ts'), - 'model': path.resolve(__dirname, 'src/model/index.ts'), - '@components': path.resolve(__dirname, 'src/components'), - '@boot': path.resolve(__dirname, 'src/boot'), - '@costanti': path.resolve(__dirname, 'src/store/Modules/costanti.ts'), - '@views': path.resolve(__dirname, 'src/views/index.ts'), - '@src': path.resolve(__dirname, 'src'), - '@css': path.resolve(__dirname, 'src/public/css/variables.scss'), - '@icons': path.resolve(__dirname, 'src/public/public/myicons'), - '@images': path.resolve(__dirname, 'src/public/images/*'), - '@maps': path.resolve(__dirname, 'src/public/maps/*'), - '@classes': path.resolve(__dirname, 'src/classes/index.ts'), - '@utils': path.resolve(__dirname, 'src/utils/index.ts'), - '@router': path.resolve(__dirname, 'src/router/index.ts'), - '@validators': path.resolve(__dirname, 'src/utils/validators.ts'), - '@methods': path.resolve(__dirname, 'src/utils/methods.ts'), - '@api': path.resolve(__dirname, 'src/store/Api/index.ts'), - '@paths': path.resolve(__dirname, 'src/store/Api/ApiRoutes.ts'), - '@storemod': path.resolve(__dirname, 'src/store/Modules'), - '@store': path.resolve(__dirname, 'src/store'), - '@tools': path.resolve(__dirname, 'src/store/Modules/tools.ts'), - '@modules': path.resolve(__dirname, 'src/store/Modules/index.ts'), - '@model': path.resolve(__dirname, 'src/model/index.ts'), - }, - }; - }, - - vitePlugins: [ - ['@intlify/unplugin-vue-i18n/vite', { - // if you want to use Vue I18n Legacy API, you need to set `compositionOnly: false` - // compositionOnly: false, - - // if you want to use named tokens in your Vue I18n messages, such as 'Hello {name}', - // you need to set `runtimeOnly: false` - // runtimeOnly: false, - - ssr: ctx.modeName === 'ssr', - - // you need to set i18n resource including paths ! - include: [fileURLToPath(new URL('./src/i18n', import.meta.url))] - }], - - ['vite-plugin-checker', { - vueTsc: false, - OFF_eslint: { - lintCommand: 'eslint -c ./eslint.config.js "./src*/**/*.{ts,js,mjs,cjs,vue}"', - useFlatConfig: true - } - }, { server: false }] - - - ] - - // polyfillModulePreload: true, - - // viteVuePluginOptions: {}, - - // extractCSS: false, - // transpile: false, - - // Add dependencies for transpiling with Babel (Array of string/regex) - // (from node_modules, which are by default not transpiled). - // Applies only if "transpile" is set to true. - // transpileDependencies: [], - - // rtl: true, // https://v2.quasar.dev/options/rtl-support - // preloadChunks: true, - // showProgress: false, - // gzip: true, - // analyze: true, - - // Options below are automatically set depending on the env, set them if you want to override - // extractCSS: false, - - // https://v2.quasar.dev/quasar-cli/handling-webpack - // "chain" is a webpack-chain object https://github.com/neutrinojs/webpack-chain - }, - - // Full list of options: https://v2.quasar.dev/quasar-cli/quasar-conf-js#Property%3A-devServer - devServer: { - https: false, - port: ctx.mode.spa ? 8088 : 8098, - vueDevtools: false, // automatically opening remote Vue Devtools - open: false, // opens browser window automatically - hot: true, // Disable hot module replacement - headers: { - 'Access-Control-Allow-Origin': '*', - 'Access-Control-Allow-Headers': '*', - }, - }, - - // https://v2.quasar.dev/quasar-cli/quasar-conf-js#Property%3A-framework - framework: { - config: {}, - - // iconSet: 'material-icons', // Quasar icon set - // lang: 'en-US', // Quasar language pack - - // For special cases outside of where the auto-import strategy can have an impact - // (like functional components as one of the examples), - // you can manually specify Quasar components/directives to be available everywhere: - // - components: [ - 'QLayout', - 'QDrawer', - 'QItemSection', - 'QHeader', - 'QFooter', - 'QPageContainer', - 'QPage', - 'QPopupProxy', - 'QToolbar', - 'QToolbarTitle', - 'QBtn', - 'QBtnDropdown', - 'QColor', - 'QIcon', - 'QList', - 'QKnob', - 'QItemLabel', - 'QItem', - 'QCard', - 'QMarkupTable', - 'QSpace', - 'QDialog', - 'QBadge', - 'QForm', - 'QCardSection', - 'QCardActions', - 'QField', - 'QInput', - 'QSelect', - 'QMenu', - 'QToggle', - 'QFab', - 'QInfiniteScroll', - 'QAjaxBar', - 'QChip', - 'QExpansionItem', - 'QCheckbox', - 'QBanner', - 'QInnerLoading', - 'QSpinnerGears', - 'QSpinnerDots', - 'QDate', - 'QTime', - 'QSlideTransition', - 'QTable', - 'QTh', - 'QTr', - 'QTd', - 'QLinearProgress', - 'QSlider', - 'QPopupEdit', - 'QCarousel', - 'QCarouselControl', - 'QCarouselSlide', - 'QPageScroller', - 'QAvatar', - 'QImg', - 'QSplitter', - 'QRating', - 'QParallax', - 'QTab', - 'QTabs', - 'QTabPanels', - 'QTabPanel', - 'QTree', - 'QSeparator', - ], - directives: [ - 'Ripple', - 'ClosePopup', - ], - _plugins: [ - 'Meta', - 'Dialog', - 'Notify', - 'Cookies', - 'Loading', - 'AppVisibility', - 'LocalStorage', - 'SessionStorage', - ], - get plugins_1() { - return this._plugins; - }, - set plugins_1(value) { - this._plugins = value; - }, - get plugins() { - return this._plugins; - }, - set plugins(value) { - this._plugins = value; - }, - iconSet: 'fontawesome-v5', - lang: 'it', // Quasar language - }, - - animations: 'all', // --- includes all animations - // https://v2.quasar.dev/options/animations - // animations: [], - - // https://v2.quasar.dev/quasar-cli/developing-ssr/configuring-ssr - ssr: { - pwa: false, - - // manualStoreHydration: true, - // manualPostHydrationTrigger: true, - - prodPort: 3000, // The default port that the production server should use - // (gets superseded if import.meta.env.PORT is specified at runtime) - - maxAge: 1000 * 60 * 60 * 24 * 30, - // Tell browser when a file from the server should expire from cache (in ms) - - - middlewares: [ - ctx.prod ? 'compression' : '', - 'render', // keep this as last one - ], - }, - - pwa: { - workboxMode: 'InjectManifest', // 'GenerateSW' or 'InjectManifest' - swFilename: 'sw-' + "1.2.28" + '.js', - workboxOptions: { - swSrc: 'src-pwa/custom-service-worker.js', // Assicurati che il file esista - include: [/\.html$/, /\.js$/, /\.css$/, /\.png$/, /\.svg$/, /\.json$/], // File da precacheare - }, - /*extendGenerateSWOptions(cfg) { - cfg.skipWaiting = false - cfg.clientsClaim = false - },*/ - }, - - sourceFiles: { - pwaRegisterServiceWorker: 'src-pwa/register-service-worker', - pwaServiceWorker: 'src-pwa/custom-service-worker', - pwaManifestFile: 'src-pwa/manifest.json', - // ... - }, - - // Full list of options: https://v2.quasar.dev/quasar-cli/developing-cordova-apps/configuring-cordova - cordova: { - // noIosLegacyBuildFlag: true, // uncomment only if you know what you are doing - }, - - // Full list of options: https://v2.quasar.dev/quasar-cli/developing-capacitor-apps/configuring-capacitor - capacitor: { - hideSplashscreen: true, - }, - - // Full list of options: https://v2.quasar.dev/quasar-cli/developing-electron-apps/configuring-electron - electron: { - bundler: 'packager', // 'packager' or 'builder' - - packager: { - // https://github.com/electron-userland/electron-packager/blob/master/docs/api.md#options - - // OS X / Mac App Store - // appBundleId: '', - // appCategoryType: '', - // osxSign: '', - // protocol: 'myapp://path', - - // Windows only - // win32metadata: { ... } - }, - - builder: { - // https://www.electron.build/configuration/configuration - - appId: 'PiuCheBuono', - }, - - - }, - } -}) diff --git a/scripts/_ALL_SITES/riso.app/.env.production b/scripts/_ALL_SITES/riso.app/.env.production index 5e0af09a..e834adfe 100644 --- a/scripts/_ALL_SITES/riso.app/.env.production +++ b/scripts/_ALL_SITES/riso.app/.env.production @@ -1,11 +1,11 @@ VITE_APP_ID="13" -VITE_APP_URL="https://riso.app" -VITE_MONGODB_HOST="https://api.riso.app" -VITE_LOGO_REG='riso-logo-full.png' +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="0" -VITE_VUE_APP_ISTEST="0" -DIRECTORY_LOCAL=myprojplanet_vite -DIRECTORY_SERVER=/var/www/nodejs_riso_server -SERVERDIR_WEBSITE="/var/www/riso.app" +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" \ No newline at end of file diff --git a/scripts/_ALL_SITES/riso.app/.env.test b/scripts/_ALL_SITES/riso.app/.env.test index e77eefed..f8d3beae 100755 --- a/scripts/_ALL_SITES/riso.app/.env.test +++ b/scripts/_ALL_SITES/riso.app/.env.test @@ -3,6 +3,7 @@ VITE_APP_URL="https://test.piuchebuono.app" VITE_MONGODB_HOST="https://test.freeplanet.app:3001" VITE_LOGO_REG='piuchebuono-logo-full.png' VITE_PUBLICKEY_PUSH="BGXRf1TgcqocqD6J7qnRgCG7AvM2lxAoW7peb7UEzB4SxBb6DxGRdJ0UvD9ewnrB9KrSrh0-aDCODXBm7sZ1DDs" +VITE_DEBUG="1" VITE_VUE_APP_ISTEST=1 DIRECTORY_LOCAL=newfreeplanet DIRECTORY_SERVER=test.freeplanet_serverside diff --git a/scripts/_ALL_SITES/riso.app/package.json b/scripts/_ALL_SITES/riso.app/package.json index 6faf0074..49226904 100755 --- a/scripts/_ALL_SITES/riso.app/package.json +++ b/scripts/_ALL_SITES/riso.app/package.json @@ -9,11 +9,11 @@ "license": "MIT", "type": "module", "scripts": { - "dev": "quasar dev", + "dev": "PORT=8084:APP_VERSION='1.2.28' 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.28' quasar build -m pwa", + "buildpwatest": "NODE_ENV=production:APP_VERSION='1.2.28' 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": "quasar dev -m pwa", - "spa": "quasar dev", + "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", "debug": "quasar dev --mode debug", "test": "echo \"No test specified\" && exit 0", "generate-sw": "workbox generateSW workbox-config.js", diff --git a/scripts/_ALL_SITES/riso.app/quasar.config.ts b/scripts/_ALL_SITES/riso.app/quasar.config.ts deleted file mode 100644 index f1103345..00000000 --- a/scripts/_ALL_SITES/riso.app/quasar.config.ts +++ /dev/null @@ -1,422 +0,0 @@ -import { defineConfig } from '#q-app/wrappers' -import { fileURLToPath } from 'node:url'; - -import path from 'path' - -// console.log(process.env) - -export default defineConfig((ctx) => { - return { - // https://v2.quasar.dev/quasar-cli/supporting-ts - - // https://v2.quasar.dev/quasar-cli/prefetch-feature - // preFetch: true, - - // app boot file (/src/boot) - // --> boot files are part of "main.js" - // https://v2.quasar.dev/quasar-cli/boot-files - // boot: ['vue-i18n', 'vue-meta', 'axios', 'vee-validate', 'myconfig', 'local-storage', 'error-handler', 'globalroutines', 'vue-idb', 'dragula', 'guard'], - boot: ['i18n', 'axios', 'pinia', 'vee-validate', - 'myconfig', - 'local-storage', 'error-handler', 'globalroutines', - 'calendar', 'social-sharing', 'timeago', 'guard'], - - // https://v2.quasar.dev/quasar-cli/quasar-conf-js#Property%3A-css - css: [ - 'app.scss', - // '~quasar-ui-qcalendar/src/css/calendar-day.sass' - ], - - // https://github.com/quasarframework/quasar/tree/dev/extras - extras: [ - // 'ionicons-v4', - // 'mdi-v5', - // 'eva-icons', - // 'themify', - // 'line-awesome', - 'ionicons-v4', - // 'mdi-v3', - 'fontawesome-v5', - 'roboto-font', // optional, you are not bound to it - 'material-icons', // optional, you are not bound to it - 'material-icons-outlined', - ], - - // Full list of options: https://v2.quasar.dev/quasar-cli/quasar-conf-js#Property%3A-build - - build: { - target: { - browser: ['es2022', 'firefox115', 'chrome115', 'safari14'], - node: 'node20' - }, - // env: envparser(), - // versionCode: package.version, - vueRouterMode: 'history', - analyze: false, // true - transpile: true, - transpileDependencies: [ - /quasar-ui-qcalendar[\\/]src/ - ], - beforeDev(api) { - // Se la variabile d'ambiente SKIP_TSC è impostata, disabilita il type checking - if (process.env.SKIP_TSC === 'true') { - console.log('⚠️ TypeScript type checking is disabled'); - - // Disattiva TypeScript checking per Vite - if (api && api.chainWebpack) { - api.chainWebpack((chain) => { - chain.plugin('fork-ts-checker').tap((args) => { - args[0].typescript = false; - return args; - }); - }); - } - } - }, - // @quasar/app-vite v2.0.3+ - envFilter(originalEnv) { - const newEnv = {} - for (const key in originalEnv) { - /* ...decide if it goes in or not... */ - if (true) { - newEnv[key] = originalEnv[key] - } - } - - // remember to return your processed env - return newEnv - }, - - typescript: { - strict: false, - vueShim: true, - extendTsConfig(tsConfig) { - // You can use this hook to extend tsConfig dynamically - // For basic use cases, you can still update the usual tsconfig.json file to override some settings - }, - - /** - * Folder where Quasar CLI should look for .env* files. - * Can be an absolute path or a relative path to project root directory. - * - * @default project root directory - */ - // envFolder?: string - /** - * Additional .env* files to be loaded. - * Each entry can be an absolute path or a relative path to quasar.config > build > envFolder. - * - * @example ['.env.somefile', '../.env.someotherfile'] - */ - // envFiles?: string[]; - }, - - extendViteConf(viteConf, { isServer, isClient }) { - viteConf.resolve = { - ...(viteConf.resolve || {}), - alias: { - ...viteConf.resolve.alias, - '#q-app': path.resolve(__dirname, 'node_modules/quasar/app'), // Alias per #q-app - 'app': path.resolve(__dirname), - 'boot': path.resolve(__dirname, 'src/boot'), - 'src': path.resolve(__dirname, 'src'), - 'statics': path.resolve(__dirname, 'src/statics'), - 'components': path.resolve(__dirname, 'src/components'), - 'views': path.resolve(__dirname, 'src/views/index.ts'), - 'images': path.resolve(__dirname, 'src/assets/images'), - 'maps': path.resolve(__dirname, 'public/maps'), - 'classes': path.resolve(__dirname, 'src/classes/index.ts'), - 'fonts': path.resolve(__dirname, 'src/assets/fonts'), - 'utils': path.resolve(__dirname, 'src/utils/index.ts'), - 'css': path.resolve(__dirname, 'public/css/variables.scss'), - 'router': path.resolve(__dirname, 'src/router/index.ts'), - 'validators': path.resolve(__dirname, 'src/utils/validators.ts'), - 'methods': path.resolve(__dirname, 'src/utils/methods.ts'), - 'filters': path.resolve(__dirname, 'src/utils/filters.ts'), - 'api': path.resolve(__dirname, 'src/store/Api/index.ts'), - 'paths': path.resolve(__dirname, 'src/store/Api/ApiRoutes.ts'), - 'modules': path.resolve(__dirname, 'src/store/Modules/index.ts'), - 'model': path.resolve(__dirname, 'src/model/index.ts'), - '@components': path.resolve(__dirname, 'src/components'), - '@boot': path.resolve(__dirname, 'src/boot'), - '@costanti': path.resolve(__dirname, 'src/store/Modules/costanti.ts'), - '@views': path.resolve(__dirname, 'src/views/index.ts'), - '@src': path.resolve(__dirname, 'src'), - '@css': path.resolve(__dirname, 'src/public/css/variables.scss'), - '@icons': path.resolve(__dirname, 'src/public/public/myicons'), - '@images': path.resolve(__dirname, 'src/public/images/*'), - '@maps': path.resolve(__dirname, 'src/public/maps/*'), - '@classes': path.resolve(__dirname, 'src/classes/index.ts'), - '@utils': path.resolve(__dirname, 'src/utils/index.ts'), - '@router': path.resolve(__dirname, 'src/router/index.ts'), - '@validators': path.resolve(__dirname, 'src/utils/validators.ts'), - '@methods': path.resolve(__dirname, 'src/utils/methods.ts'), - '@api': path.resolve(__dirname, 'src/store/Api/index.ts'), - '@paths': path.resolve(__dirname, 'src/store/Api/ApiRoutes.ts'), - '@storemod': path.resolve(__dirname, 'src/store/Modules'), - '@store': path.resolve(__dirname, 'src/store'), - '@tools': path.resolve(__dirname, 'src/store/Modules/tools.ts'), - '@modules': path.resolve(__dirname, 'src/store/Modules/index.ts'), - '@model': path.resolve(__dirname, 'src/model/index.ts'), - }, - }; - }, - - vitePlugins: [ - ['@intlify/unplugin-vue-i18n/vite', { - // if you want to use Vue I18n Legacy API, you need to set `compositionOnly: false` - // compositionOnly: false, - - // if you want to use named tokens in your Vue I18n messages, such as 'Hello {name}', - // you need to set `runtimeOnly: false` - // runtimeOnly: false, - - ssr: ctx.modeName === 'ssr', - - // you need to set i18n resource including paths ! - include: [fileURLToPath(new URL('./src/i18n', import.meta.url))] - }], - - ['vite-plugin-checker', { - vueTsc: false, - OFF_eslint: { - lintCommand: 'eslint -c ./eslint.config.js "./src*/**/*.{ts,js,mjs,cjs,vue}"', - useFlatConfig: true - } - }, { server: false }] - - - ] - - // polyfillModulePreload: true, - - // viteVuePluginOptions: {}, - - // extractCSS: false, - // transpile: false, - - // Add dependencies for transpiling with Babel (Array of string/regex) - // (from node_modules, which are by default not transpiled). - // Applies only if "transpile" is set to true. - // transpileDependencies: [], - - // rtl: true, // https://v2.quasar.dev/options/rtl-support - // preloadChunks: true, - // showProgress: false, - // gzip: true, - // analyze: true, - - // Options below are automatically set depending on the env, set them if you want to override - // extractCSS: false, - - // https://v2.quasar.dev/quasar-cli/handling-webpack - // "chain" is a webpack-chain object https://github.com/neutrinojs/webpack-chain - }, - - // Full list of options: https://v2.quasar.dev/quasar-cli/quasar-conf-js#Property%3A-devServer - devServer: { - https: { - key: path.resolve(__dirname, 'localhost-key.pem'), - cert: path.resolve(__dirname, 'localhost.pem'), - }, - port: ctx.mode.spa ? 8084 : 8094, - vueDevtools: false, // automatically opening remote Vue Devtools - open: false, // opens browser window automatically - hot: true, // Disable hot module replacement - headers: { - 'Access-Control-Allow-Origin': '*', - 'Access-Control-Allow-Headers': '*', - }, - }, - - // https://v2.quasar.dev/quasar-cli/quasar-conf-js#Property%3A-framework - framework: { - config: {}, - - // iconSet: 'material-icons', // Quasar icon set - // lang: 'en-US', // Quasar language pack - - // For special cases outside of where the auto-import strategy can have an impact - // (like functional components as one of the examples), - // you can manually specify Quasar components/directives to be available everywhere: - // - components: [ - 'QLayout', - 'QDrawer', - 'QItemSection', - 'QHeader', - 'QFooter', - 'QPageContainer', - 'QPage', - 'QPopupProxy', - 'QToolbar', - 'QToolbarTitle', - 'QBtn', - 'QBtnDropdown', - 'QColor', - 'QIcon', - 'QList', - 'QKnob', - 'QItemLabel', - 'QItem', - 'QCard', - 'QMarkupTable', - 'QSpace', - 'QDialog', - 'QBadge', - 'QForm', - 'QCardSection', - 'QCardActions', - 'QField', - 'QInput', - 'QSelect', - 'QMenu', - 'QToggle', - 'QFab', - 'QInfiniteScroll', - 'QAjaxBar', - 'QChip', - 'QExpansionItem', - 'QCheckbox', - 'QBanner', - 'QInnerLoading', - 'QSpinnerGears', - 'QSpinnerDots', - 'QDate', - 'QTime', - 'QSlideTransition', - 'QTable', - 'QTh', - 'QTr', - 'QTd', - 'QLinearProgress', - 'QSlider', - 'QPopupEdit', - 'QCarousel', - 'QCarouselControl', - 'QCarouselSlide', - 'QPageScroller', - 'QAvatar', - 'QImg', - 'QSplitter', - 'QRating', - 'QParallax', - 'QTab', - 'QTabs', - 'QTabPanels', - 'QTabPanel', - 'QTree', - 'QSeparator', - ], - directives: [ - 'Ripple', - 'ClosePopup', - ], - _plugins: [ - 'Meta', - 'Dialog', - 'Notify', - 'Cookies', - 'Loading', - 'AppVisibility', - 'LocalStorage', - 'SessionStorage', - ], - get plugins_1() { - return this._plugins; - }, - set plugins_1(value) { - this._plugins = value; - }, - get plugins() { - return this._plugins; - }, - set plugins(value) { - this._plugins = value; - }, - iconSet: 'fontawesome-v5', - lang: 'it', // Quasar language - }, - - animations: 'all', // --- includes all animations - // https://v2.quasar.dev/options/animations - // animations: [], - - // https://v2.quasar.dev/quasar-cli/developing-ssr/configuring-ssr - ssr: { - pwa: false, - - // manualStoreHydration: true, - // manualPostHydrationTrigger: true, - - prodPort: 3000, // The default port that the production server should use - // (gets superseded if import.meta.env.PORT is specified at runtime) - - maxAge: 1000 * 60 * 60 * 24 * 30, - // Tell browser when a file from the server should expire from cache (in ms) - - - middlewares: [ - ctx.prod ? 'compression' : '', - 'render', // keep this as last one - ], - }, - - - // https://v2.quasar.dev/quasar-cli/developing-pwa/configuring-pwa - pwa: { - workboxMode: 'InjectManifest', // 'GenerateSW' or 'InjectManifest' - swFilename: 'sw-' + "1.2.28" + '.js', - workboxOptions: { - swSrc: 'src-pwa/custom-service-worker.js', // Assicurati che il file esista - include: [/\.html$/, /\.js$/, /\.css$/, /\.png$/, /\.svg$/, /\.json$/], // File da precacheare - }, - /*extendGenerateSWOptions(cfg) { - cfg.skipWaiting = false - cfg.clientsClaim = false - },*/ - }, - - sourceFiles: { - pwaRegisterServiceWorker: 'src-pwa/register-service-worker', - pwaServiceWorker: 'src-pwa/custom-service-worker', - pwaManifestFile: 'src-pwa/manifest.json', - }, - - // Full list of options: https://v2.quasar.dev/quasar-cli/developing-cordova-apps/configuring-cordova - cordova: { - // noIosLegacyBuildFlag: true, // uncomment only if you know what you are doing - }, - - // Full list of options: https://v2.quasar.dev/quasar-cli/developing-capacitor-apps/configuring-capacitor - capacitor: { - hideSplashscreen: true, - }, - - // Full list of options: https://v2.quasar.dev/quasar-cli/developing-electron-apps/configuring-electron - electron: { - bundler: 'packager', // 'packager' or 'builder' - - packager: { - // https://github.com/electron-userland/electron-packager/blob/master/docs/api.md#options - - // OS X / Mac App Store - // appBundleId: '', - // appCategoryType: '', - // osxSign: '', - // protocol: 'myapp://path', - - // Windows only - // win32metadata: { ... } - }, - - builder: { - // https://www.electron.build/configuration/configuration - - appId: 'Riso', - }, - - - }, - } -}) diff --git a/scripts/__inizia.sh b/scripts/__inizia.sh index f7240db9..9e3cbd3f 100644 --- a/scripts/__inizia.sh +++ b/scripts/__inizia.sh @@ -17,7 +17,6 @@ mkdir -p "../../_BAK/1" backup_files=( "../src/db" "../src/root_spec" - "../quasar.config.ts" "../src-pwa/manifest.json" "../package.json" "../.env.development" @@ -42,7 +41,6 @@ done restore_files=( "src/db" "root_spec" - "quasar.config.ts" "src-pwa/manifest.json" "package.json" ".env.development" @@ -74,10 +72,34 @@ done # Copia delle cartelle upload upload_dirs=("products" "pages" "catalogo" "scheda") +echo "" +echo " *********** COPIA CARTELLE UPLOAD.............." +echo "" + for dir in "${upload_dirs[@]}"; do - [[ -d "_ALL_SITES/$site/upload/$dir" ]] && cp -Rv "_ALL_SITES/$site/upload/$dir/"* "../public/upload/$dir/" + echo " CARTELLA $dir ..." + echo "-----------------------" + + # Percorso della cartella di origine + source_dir="_ALL_SITES/$site/upload/$dir" + # Percorso della cartella di destinazione + dest_dir="../public/upload/$dir" + + # Verifica se la cartella di origine esiste + if [[ -d "$source_dir" ]]; then + # Crea la cartella di destinazione se non esiste + mkdir -p "$dest_dir" + + # Copia i file dalla cartella di origine a quella di destinazione + cp -Rv "$source_dir/"* "$dest_dir/" + else + echo "La cartella di origine '$source_dir' non esiste. Saltata." + fi done +ECHO "--------- FINE COPIA CARTELLE UPLOAD...." + + # Configurazione specifica per siti case "$site" in "piuchebuono.app" | "gruppomacro.app") diff --git a/scripts/__termine.sh b/scripts/__termine.sh index 16e0264a..039ee180 100644 --- a/scripts/__termine.sh +++ b/scripts/__termine.sh @@ -53,7 +53,6 @@ else items_to_copy=( "public" # Directory "src/db" # Directory - "quasar.config.ts" # File "src-pwa/manifest.json" # File "package.json" # File ".env.development" # File diff --git a/scripts/now.txt b/scripts/now.txt index 29373b53..a1eb1e45 100644 --- a/scripts/now.txt +++ b/scripts/now.txt @@ -1 +1 @@ -TERMINA DI LAVORARE SU comunitanuovomondo.app: (Sovrascrivo!) +TERMINA DI LAVORARE SU gruppomacro.app: (Sovrascrivo!) diff --git a/src-pwa/custom-service-worker.js b/src-pwa/custom-service-worker.js index 0571ea2b..b7ff5d1c 100755 --- a/src-pwa/custom-service-worker.js +++ b/src-pwa/custom-service-worker.js @@ -291,26 +291,44 @@ if (workbox) { 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' }, + }); } // Se la risposta è valida, restituiscila - if (response.ok) { - return response; - } - 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, + message: '❌ Unable to fetch from API: ' + error.message, }), { status: 503, headers: { 'Content-Type': 'application/json', - 'Access-Control-Allow-Origin': `https://${APP_DOMAIN}`, }, }); } @@ -324,26 +342,27 @@ if (workbox) { const cachedResponse = await cache.match(request); if (cachedResponse) { // Restituisci la risposta in cache mentre aggiorni in background - event.waitUntil(fetchAndCache(request)); + event.waitUntil(fetchAndCache(request).catch((error) => { + console.error('[SW] Background fetch and cache error ❌:', error); + })); return cachedResponse; } // Se non è in cache, fai la richiesta di rete - return await fetchAndCache(request); - } - - // Funzione per fare la richiesta di rete e aggiornare la cache - async function fetchAndCache(request) { - const cache = await caches.open(CACHE_NAME); try { - const response = await fetch(request); - if (response.ok) { - cache.put(request, response.clone()); - } + const response = await fetchAndCache(request); return response; } catch (error) { - console.error('[Service Worker] Fetch and cache error ❌:', error); - return new Response('Network error', { status: 503 }); + console.error('[SW] Cache miss and network error ❌:', error); + + // Restituisci una risposta di fallback personalizzata + return new Response(JSON.stringify({ + error: 'Network error', + message: 'Unable to fetch resource from network or cache.', + }), { + status: 503, + headers: { 'Content-Type': 'application/json' }, + }); } } diff --git a/src-pwa/manifest.json b/src-pwa/manifest.json index c4032e4f..d70a91e9 100644 --- a/src-pwa/manifest.json +++ b/src-pwa/manifest.json @@ -1,7 +1,7 @@ { - "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.", + "name": "Gruppo Macro", + "short_name": "GruppoMacro", + "description": "", "display": "standalone", "orientation": "portrait", "background_color": "#fff", @@ -11,47 +11,17 @@ "start_url": "/?homescreen=1", "icons": [ { - "src:": "/images/riso-android-icon-512x512.png", + "src": "/images/gm-android-icon-512x512.png", "sizes": "512x512", "type": "image/png" }, { - "src:": "/images/riso-android-icon-384x384.png", - "sizes": "384x384", - "type": "image/png" - }, - { - "src:": "/images/riso-android-icon-192x192.png", + "src": "/images/gm-android-icon-192x192.png", "sizes": "192x192", "type": "image/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", + "src": "/images/gm-apple-touch-icon.png", "sizes": "180x180", "type": "image/png" } diff --git a/src/App.ts b/src/App.ts index 6fbb9af6..053e154f 100755 --- a/src/App.ts +++ b/src/App.ts @@ -111,6 +111,7 @@ export default { if (tools.isLocale()) { console.info('SESSIONE IN LOCALE !') } + if (tools.isTest() && !import.meta.env.DEV) { console.info('SESSIONE IN TEST ! (TEST)') } else { diff --git a/src/common/shared_vuejs.ts b/src/common/shared_vuejs.ts index a57a9bb9..5844dd52 100755 --- a/src/common/shared_vuejs.ts +++ b/src/common/shared_vuejs.ts @@ -170,6 +170,7 @@ export const shared_consts = { GRID_ORIZ: 400, QRCODE: 410, CATALOGLIST: 420, + SEARCHPRODUCT: 430, }, QUERYTYPE_MYGROUP: 1, @@ -1816,6 +1817,10 @@ export const shared_consts = { value: 420, label: 'Lista Cataloghi', }, + { + value: 430, // SEARCHPRODUCT + label: 'Cerca Prodotto', + }, ], TypesElemAdminTools: [ diff --git a/src/components/CCatalogList/CCatalogList.ts b/src/components/CCatalogList/CCatalogList.ts index 9b6e149d..266bd150 100755 --- a/src/components/CCatalogList/CCatalogList.ts +++ b/src/components/CCatalogList/CCatalogList.ts @@ -39,9 +39,9 @@ export default defineComponent({ default: true, }, heightcarousel: { - type: Number, + type: String, required: false, - default: 0, + default: '', }, heightcard: { type: String, diff --git a/src/components/CCatalogList/CCatalogList.vue b/src/components/CCatalogList/CCatalogList.vue index c336cd5b..f46b0902 100755 --- a/src/components/CCatalogList/CCatalogList.vue +++ b/src/components/CCatalogList/CCatalogList.vue @@ -34,14 +34,13 @@ :prop_showMap="false" :heightcarousel="heightcarousel" @clickButtBar="clickButtBar" - :opt="{rowclass: true, widthcard, heightcard, widthimg, heightimg}" + :opt="{ rowclass: true, widthcard, heightcard, widthimg, heightimg }" > - + diff --git a/src/components/CCatalogoCard/CCatalogoCard copy.off b/src/components/CCatalogoCard/CCatalogoCard copy.off deleted file mode 100755 index 19a76ed9..00000000 --- a/src/components/CCatalogoCard/CCatalogoCard copy.off +++ /dev/null @@ -1,600 +0,0 @@ - - - - - diff --git a/src/components/CCatalogoCard/CCatalogoCard.ts b/src/components/CCatalogoCard/CCatalogoCard.ts index 5a5de10a..2dcafdcd 100755 --- a/src/components/CCatalogoCard/CCatalogoCard.ts +++ b/src/components/CCatalogoCard/CCatalogoCard.ts @@ -585,7 +585,7 @@ export default defineComponent({ emit('selauthor', id, autore) } - function click_opendetail(id: any, autore: any) { + function click_opendetail() { if (!optcatalogo.value.pdf) emit('opendetail') } diff --git a/src/components/CCatalogoCard/CCatalogoCard.vue b/src/components/CCatalogoCard/CCatalogoCard.vue index 9c6b5694..377b75f0 100755 --- a/src/components/CCatalogoCard/CCatalogoCard.vue +++ b/src/components/CCatalogoCard/CCatalogoCard.vue @@ -1,13 +1,15 @@