corretto bug GruppoMacro la lista veniva salvata ma anche aggiornata in memoria con solo gli ID... in questo caso TABLES_NON_AGGIORNARE_IN_MEMORIA_PERCHE_DIVERSA_STRUTTURA gli dice che alcune tabelle non devono essere aggiornate in memoria.
@@ -1,14 +1,12 @@
|
|||||||
VITE_APP_ID="13"
|
VITE_APP_ID="18"
|
||||||
VITE_APP_URL="https://localhost"
|
VITE_APP_URL="https://localhost"
|
||||||
VITE_MONGODB_HOST="https://localhost:3000"
|
VITE_MONGODB_HOST="https://localhost:3000"
|
||||||
DEBUG_VITE_APP_URL="https://192.168.8.182"
|
VITE_LOGO_REG='gruppomacro-logo-full.png'
|
||||||
DEBUG_VITE_MONGODB_HOST="https://192.168.8.182:3000"
|
|
||||||
VITE_LOGO_REG='riso-logo-full.png'
|
|
||||||
VITE_PUBLICKEY_PUSH='BDncvMiUZmjaCG2Kr1V9N0_33hOG-AuNSbHSvL24y2dzBiUjAxKm02emx5SeJvz2IGmtRf6YqCgopeQwCwUmZw8'
|
VITE_PUBLICKEY_PUSH='BDncvMiUZmjaCG2Kr1V9N0_33hOG-AuNSbHSvL24y2dzBiUjAxKm02emx5SeJvz2IGmtRf6YqCgopeQwCwUmZw8'
|
||||||
VITE_DEBUG="1"
|
VITE_DEBUG="1"
|
||||||
VITE_VUE_APP_ISTEST=0
|
VITE_VUE_APP_ISTEST=0
|
||||||
VITE_VUE_APP_INLOCALE=1
|
VITE_VUE_APP_INLOCALE=1
|
||||||
DIRECTORY_LOCAL="myprojplanet_vite"
|
DIRECTORY_LOCAL="newfreeplanet"
|
||||||
DIRECTORY_SERVER="freeplanet_serverside"
|
DIRECTORY_SERVER="freeplanet_serverside"
|
||||||
SERVERDIR_WEBSITE=""
|
SERVERDIR_WEBSITE=""
|
||||||
SERVERPW_WEBSITE=""
|
SERVERPW_WEBSITE=""
|
||||||
|
|||||||
@@ -1,11 +1,13 @@
|
|||||||
VITE_APP_ID="13"
|
VITE_APP_ID="18"
|
||||||
VITE_APP_URL="https://riso.app"
|
VITE_APP_URL="https://gruppomacro.app"
|
||||||
VITE_MONGODB_HOST="https://api.riso.app"
|
VITE_MONGODB_HOST="https://api.gruppomacro.app"
|
||||||
VITE_LOGO_REG='riso-logo-full.png'
|
VITE_LOGO_REG='gruppomacro-logo-full.png'
|
||||||
VITE_PUBLICKEY_PUSH="BGXRf1TgcqocqD6J7qnRgCG7AvM2lxAoW7peb7UEzB4SxBb6DxGRdJ0UvD9ewnrB9KrSrh0-aDCODXBm7sZ1DDs"
|
VITE_PUBLICKEY_PUSH="BJgo8XR_upbnbMLWgCAUELo6DK7dRXffYAnFOxbaMMz5favBgcQBKT-eISqouO-jRad4Sw8l5nd2wCF6KorGiTc"
|
||||||
VITE_DEBUG="0"
|
VITE_DEBUG="0"
|
||||||
VITE_VUE_APP_ISTEST="0"
|
VITE_VUE_APP_ISTEST="0"
|
||||||
DIRECTORY_LOCAL=myprojplanet_vite
|
DIRECTORY_LOCAL="myprojplanet_vite"
|
||||||
DIRECTORY_SERVER=/var/www/nodejs_riso_server
|
DIRECTORY_SERVER="/var/www/nodejs_piuchebuono_server"
|
||||||
SERVERDIR_WEBSITE="/var/www/riso.app"
|
SERVERDIR_WEBSITE="/var/www/gruppomacro.app"
|
||||||
SERVERPW_WEBSITE="pwdadmin@1AOK"
|
SERVERPW_WEBSITE="pwdadmin@1AOK"
|
||||||
|
PORT_SPA="8089"
|
||||||
|
PORT_PWA="8099"
|
||||||
15
package.json
@@ -1,28 +1,28 @@
|
|||||||
{
|
{
|
||||||
"name": "riso",
|
"name": "gruppomacro",
|
||||||
"version": "1.2.77",
|
"version": "1.2.77",
|
||||||
"productName": "Riso 💚 - Rete Italiana Scambi Orizzontali",
|
"productName": "Gruppo Macro",
|
||||||
"description": "Progetto RISO (Rete Italiana Scambi Orizzontali) promuove una rete di comunità locali che favoriscono scambi di beni, servizi e ospitalità. Con l'App RISO, sviluppata per facilitare il baratto, il dono e l'uso di monete alternative come i RIS, il progetto crea legami autentici basati sulla fiducia e sostenibilità. Partecipa agli scambi e costruisci una comunità più consapevole e autosufficiente.",
|
"description": "Il Gruppo Editoriale Macro, attivo dal 1987, è leader europeo nella pubblicazione di libri per il benessere e la consapevolezza. Con oltre 1.500 titoli, promuove una visione armonica del mondo, offrendo opere di autori internazionali e italiani come Gregg Braden, Bruce Lipton, Joe Dispenza, Louise Hay, Eckhart Tolle e molti altri. Scopri un'editoria che abbraccia il corpo, la mente, lo spirito e l'ecologia.",
|
||||||
"author": "Surya",
|
"author": "Surya",
|
||||||
"private": true,
|
"private": true,
|
||||||
"keywords": [],
|
"keywords": [],
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"type": "module",
|
"type": "module",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"dev": "APP_VERSION='1.2.77' PORT=8084 quasar dev",
|
"dev": "PORT=8089 APP_VERSION='1.2.77' quasar dev",
|
||||||
"dev_noCheck": "SKIP_TSC=true quasar dev",
|
"dev_noCheck": "SKIP_TSC=true quasar dev",
|
||||||
"build": "quasar build",
|
"build": "quasar build",
|
||||||
"buildpwa": "NODE_ENV=production APP_VERSION='1.2.77' quasar build -m pwa",
|
"buildpwa": "NODE_ENV=production APP_VERSION='1.2.77' quasar build -m pwa",
|
||||||
"buildpwatest": "NODE_ENV=production APP_VERSION='1.2.77' quasar build -m pwa",
|
"buildpwatest": "NODE_ENV=production APP_VERSION='1.2.77' quasar build -m pwa",
|
||||||
"type-check": "vue-tsc --noEmit",
|
"type-check": "vue-tsc --noEmit",
|
||||||
"type-check:watch": "vue-tsc --noEmit --watch",
|
"type-check:watch": "vue-tsc --noEmit --watch",
|
||||||
"buildspa": "quasar build -m spa",
|
"buildspa": "APP_VERSION='1.2.77' quasar build -m spa",
|
||||||
"lint": "eslint -c ./eslint.config.js \"./src*/**/*.{ts,js,cjs,mjs,vue}\"",
|
"lint": "eslint -c ./eslint.config.js \"./src*/**/*.{ts,js,cjs,mjs,vue}\"",
|
||||||
"lintfile": "eslint --ext .js,.ts,.vue --ignore-path .gitignore ./ > file.out.txt",
|
"lintfile": "eslint --ext .js,.ts,.vue --ignore-path .gitignore ./ > file.out.txt",
|
||||||
"lintfileNoJS": "eslint --ext .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",
|
"fix": "eslint -c ./eslint.config.js \"./src*/**/*.{ts,js,cjs,mjs,vue}\" --ignore-pattern .gitignore ./ --fix > file.out.txt",
|
||||||
"pwa": "NODE_ENV=development PORT=8094 APP_VERSION='1.2.77' quasar dev -m pwa",
|
"pwa": "NODE_ENV=development PORT=8099 APP_VERSION='1.2.77' quasar dev -m pwa",
|
||||||
"spa": "NODE_ENV=development PORT=8084 APP_VERSION='1.2.77' quasar dev",
|
"spa": "NODE_ENV=development PORT=8089 APP_VERSION='1.2.77' quasar dev",
|
||||||
"debug": "quasar dev --mode debug",
|
"debug": "quasar dev --mode debug",
|
||||||
"test": "echo \"No test specified\" && exit 0",
|
"test": "echo \"No test specified\" && exit 0",
|
||||||
"generate-sw": "workbox generateSW workbox-config.js",
|
"generate-sw": "workbox generateSW workbox-config.js",
|
||||||
@@ -52,7 +52,6 @@
|
|||||||
"eslint-plugin-n": "^17.19.0",
|
"eslint-plugin-n": "^17.19.0",
|
||||||
"eslint-plugin-quasar": "^1.1.0",
|
"eslint-plugin-quasar": "^1.1.0",
|
||||||
"gsap": "^3.13.0",
|
"gsap": "^3.13.0",
|
||||||
"html2pdf.js": "^0.10.3",
|
|
||||||
"jquery": "^3.7.1",
|
"jquery": "^3.7.1",
|
||||||
"js-cookie": "^3.0.5",
|
"js-cookie": "^3.0.5",
|
||||||
"jsbarcode": "^3.12.1",
|
"jsbarcode": "^3.12.1",
|
||||||
|
|||||||
|
Before Width: | Height: | Size: 1.1 KiB After Width: | Height: | Size: 1.1 KiB |
|
Before Width: | Height: | Size: 43 KiB After Width: | Height: | Size: 43 KiB |
BIN
public/images/bestseller.png
Normal file
|
After Width: | Height: | Size: 14 KiB |
3592316
public/images/comuni_italia.geojson
Normal file
BIN
public/images/foto1.jpg
Executable file
|
After Width: | Height: | Size: 12 KiB |
BIN
public/images/foto2.jpg
Executable file
|
After Width: | Height: | Size: 12 KiB |
BIN
public/images/foto3.jpg
Executable file
|
After Width: | Height: | Size: 12 KiB |
BIN
public/images/gm-android-icon-192x192.png
Normal file
|
After Width: | Height: | Size: 30 KiB |
BIN
public/images/gm-android-icon-512x512.png
Normal file
|
After Width: | Height: | Size: 158 KiB |
BIN
public/images/gm-apple-touch-icon.png
Normal file
|
After Width: | Height: | Size: 27 KiB |
BIN
public/images/gruppomacro-logo-full.png
Normal file
|
After Width: | Height: | Size: 81 KiB |
|
Before Width: | Height: | Size: 1.2 KiB |
|
Before Width: | Height: | Size: 696 B |
|
Before Width: | Height: | Size: 424 KiB |
|
Before Width: | Height: | Size: 2.4 KiB |
|
Before Width: | Height: | Size: 1.4 KiB |
BIN
public/images/novita.png
Normal file
|
After Width: | Height: | Size: 19 KiB |
BIN
public/images/ombra.png
Normal file
|
After Width: | Height: | Size: 30 KiB |
|
Before Width: | Height: | Size: 36 KiB |
|
Before Width: | Height: | Size: 61 KiB |
|
Before Width: | Height: | Size: 202 KiB |
|
Before Width: | Height: | Size: 6.0 KiB |
|
Before Width: | Height: | Size: 316 KiB |
|
Before Width: | Height: | Size: 18 KiB |
|
Before Width: | Height: | Size: 24 KiB |
|
Before Width: | Height: | Size: 26 KiB |
|
Before Width: | Height: | Size: 36 KiB |
|
Before Width: | Height: | Size: 40 KiB |
|
Before Width: | Height: | Size: 53 KiB |
|
Before Width: | Height: | Size: 7.8 KiB |
|
Before Width: | Height: | Size: 8.5 KiB |
|
Before Width: | Height: | Size: 11 KiB |
|
Before Width: | Height: | Size: 12 KiB |
|
Before Width: | Height: | Size: 61 KiB |
|
Before Width: | Height: | Size: 424 KiB |
|
Before Width: | Height: | Size: 279 KiB |
|
Before Width: | Height: | Size: 258 KiB |
|
Before Width: | Height: | Size: 124 KiB |
2
public/js/workbox-sw-6-1.js
Executable file
@@ -0,0 +1,2 @@
|
|||||||
|
!function(){'use strict';try{self['workbox:sw:6.1.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/6.1.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
|
||||||
2
public/js/workbox-sw.js
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
!function(){"use strict";try{self["workbox:sw:5.1.4"]&&_()}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"};self.workbox=new class{constructor(){return this.v={},this.t={debug:"localhost"===self.location.hostname,modulePathPrefix:null,modulePathCb:null},this.s=this.t.debug?"dev":"prod",this.o=!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.o)throw new Error("Config must be set before accessing workbox.* modules");Object.assign(this.t,t),this.s=this.t.debug?"dev":"prod"}loadModule(t){const e=this.i(t);try{importScripts(e),this.o=!0}catch(s){throw console.error(`Unable to import module '${t}' from '${e}'.`),s}}i(t){if(this.t.modulePathCb)return this.t.modulePathCb(t,this.t.debug);let e=["https://storage.googleapis.com/workbox-cdn/releases/5.1.4"];const s=`${t}.${this.s}.js`,o=this.t.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
|
||||||
|
Before Width: | Height: | Size: 1.6 KiB |
|
Before Width: | Height: | Size: 3.2 KiB |
|
Before Width: | Height: | Size: 15 KiB |
@@ -1,2 +1,2 @@
|
|||||||
!function(){"use strict";try{self["workbox:sw:7.3.0"]&&_()}catch(t){}const t={backgroundSync:"background-sync",broadcastUpdate:"broadcast-update",cacheableResponse:"cacheable-response",core:"core",expiration:"expiration",googleAnalytics:"offline-ga",navigationPreload:"navigation-preload",precaching:"precaching",rangeRequests:"range-requests",routing:"routing",strategies:"strategies",streams:"streams",recipes:"recipes"};self.workbox=new class{constructor(){return this.v={},this.Pt={debug:"localhost"===self.location.hostname,modulePathPrefix:null,modulePathCb:null},this.$t=this.Pt.debug?"dev":"prod",this.jt=!1,new Proxy(this,{get(e,s){if(e[s])return e[s];const o=t[s];return o&&e.loadModule(`workbox-${o}`),e[s]}})}setConfig(t={}){if(this.jt)throw new Error("Config must be set before accessing workbox.* modules");Object.assign(this.Pt,t),this.$t=this.Pt.debug?"dev":"prod"}loadModule(t){const e=this.St(t);try{importScripts(e),this.jt=!0}catch(s){throw console.error(`Unable to import module '${t}' from '${e}'.`),s}}St(t){if(this.Pt.modulePathCb)return this.Pt.modulePathCb(t,this.Pt.debug);let e=["https://storage.googleapis.com/workbox-cdn/releases/7.3.0"];const s=`${t}.${this.$t}.js`,o=this.Pt.modulePathPrefix;return o&&(e=o.split("/"),""===e[e.length-1]&&e.splice(e.length-1,1)),e.push(s),e.join("/")}}}();
|
!function(){"use strict";try{self["workbox:sw:5.1.4"]&&_()}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"};self.workbox=new class{constructor(){return this.v={},this.t={debug:"localhost"===self.location.hostname,modulePathPrefix:null,modulePathCb:null},this.s=this.t.debug?"dev":"prod",this.o=!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.o)throw new Error("Config must be set before accessing workbox.* modules");Object.assign(this.t,t),this.s=this.t.debug?"dev":"prod"}loadModule(t){const e=this.i(t);try{importScripts(e),this.o=!0}catch(s){throw console.error(`Unable to import module '${t}' from '${e}'.`),s}}i(t){if(this.t.modulePathCb)return this.t.modulePathCb(t,this.t.debug);let e=["https://storage.googleapis.com/workbox-cdn/releases/5.1.4"];const s=`${t}.${this.s}.js`,o=this.t.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
|
//# sourceMappingURL=workbox-sw.js.map
|
||||||
|
|||||||
@@ -1,11 +1,11 @@
|
|||||||
VITE_APP_ID="13"
|
VITE_APP_ID="13"
|
||||||
VITE_APP_URL="https://test.riso.app"
|
VITE_APP_URL="https://riso.app"
|
||||||
VITE_MONGODB_HOST="https://testapi.riso.app"
|
VITE_MONGODB_HOST="https://api.riso.app"
|
||||||
VITE_LOGO_REG="riso-logo-full.png"
|
VITE_LOGO_REG='riso-logo-full.png'
|
||||||
VITE_PUBLICKEY_PUSH="BGXRf1TgcqocqD6J7qnRgCG7AvM2lxAoW7peb7UEzB4SxBb6DxGRdJ0UvD9ewnrB9KrSrh0-aDCODXBm7sZ1DDs"
|
VITE_PUBLICKEY_PUSH="BGXRf1TgcqocqD6J7qnRgCG7AvM2lxAoW7peb7UEzB4SxBb6DxGRdJ0UvD9ewnrB9KrSrh0-aDCODXBm7sZ1DDs"
|
||||||
VITE_DEBUG="1"
|
VITE_DEBUG="0"
|
||||||
VITE_VUE_APP_ISTEST="1"
|
VITE_VUE_APP_ISTEST="0"
|
||||||
DIRECTORY_LOCAL="myprojplanet_vite"
|
DIRECTORY_LOCAL=myprojplanet_vite
|
||||||
DIRECTORY_SERVER="/var/www/nodejs_test.riso_server"
|
DIRECTORY_SERVER=/var/www/nodejs_riso_server
|
||||||
SERVERDIR_WEBSITE="/var/www/test.riso.app"
|
SERVERDIR_WEBSITE="/var/www/riso.app"
|
||||||
SERVERPW_WEBSITE="pwdadmin@1AOK"
|
SERVERPW_WEBSITE="pwdadmin@1AOK"
|
||||||
@@ -52,7 +52,6 @@
|
|||||||
"eslint-plugin-n": "^17.19.0",
|
"eslint-plugin-n": "^17.19.0",
|
||||||
"eslint-plugin-quasar": "^1.1.0",
|
"eslint-plugin-quasar": "^1.1.0",
|
||||||
"gsap": "^3.13.0",
|
"gsap": "^3.13.0",
|
||||||
"html2pdf.js": "^0.10.3",
|
|
||||||
"jquery": "^3.7.1",
|
"jquery": "^3.7.1",
|
||||||
"js-cookie": "^3.0.5",
|
"js-cookie": "^3.0.5",
|
||||||
"jsbarcode": "^3.12.1",
|
"jsbarcode": "^3.12.1",
|
||||||
|
|||||||
|
Before Width: | Height: | Size: 323 KiB After Width: | Height: | Size: 323 KiB |
|
Before Width: | Height: | Size: 323 KiB After Width: | Height: | Size: 323 KiB |
|
Before Width: | Height: | Size: 237 KiB After Width: | Height: | Size: 237 KiB |
|
Before Width: | Height: | Size: 279 KiB After Width: | Height: | Size: 279 KiB |
|
Before Width: | Height: | Size: 30 KiB After Width: | Height: | Size: 36 KiB |
|
Before Width: | Height: | Size: 43 KiB After Width: | Height: | Size: 61 KiB |
|
Before Width: | Height: | Size: 3.9 KiB After Width: | Height: | Size: 3.9 KiB |
|
Before Width: | Height: | Size: 138 KiB After Width: | Height: | Size: 202 KiB |
|
Before Width: | Height: | Size: 5.8 KiB After Width: | Height: | Size: 6.0 KiB |
|
Before Width: | Height: | Size: 185 KiB After Width: | Height: | Size: 316 KiB |
|
Before Width: | Height: | Size: 11 KiB After Width: | Height: | Size: 11 KiB |
|
Before Width: | Height: | Size: 17 KiB After Width: | Height: | Size: 18 KiB |
|
Before Width: | Height: | Size: 21 KiB After Width: | Height: | Size: 24 KiB |
|
Before Width: | Height: | Size: 23 KiB After Width: | Height: | Size: 26 KiB |
|
Before Width: | Height: | Size: 30 KiB After Width: | Height: | Size: 36 KiB |
|
Before Width: | Height: | Size: 33 KiB After Width: | Height: | Size: 40 KiB |
|
Before Width: | Height: | Size: 42 KiB After Width: | Height: | Size: 53 KiB |
|
Before Width: | Height: | Size: 7.6 KiB After Width: | Height: | Size: 7.8 KiB |
|
Before Width: | Height: | Size: 8.1 KiB After Width: | Height: | Size: 8.5 KiB |
|
Before Width: | Height: | Size: 11 KiB After Width: | Height: | Size: 11 KiB |
|
Before Width: | Height: | Size: 12 KiB After Width: | Height: | Size: 12 KiB |
|
Before Width: | Height: | Size: 61 KiB After Width: | Height: | Size: 61 KiB |
|
Before Width: | Height: | Size: 44 KiB After Width: | Height: | Size: 61 KiB |
@@ -167,17 +167,17 @@ function getDynamicPages(site: ISites): IListRoutes[] {
|
|||||||
inmenu: true,
|
inmenu: true,
|
||||||
infooter: true,
|
infooter: true,
|
||||||
},
|
},
|
||||||
{
|
/*{
|
||||||
active: true,
|
active: true,
|
||||||
order: 120,
|
order: 120,
|
||||||
path: '/editprofile',
|
path: '/editprofile',
|
||||||
materialIcon: 'fas fa-user',
|
materialIcon: 'fas fa-user',
|
||||||
name: 'pages.profile3',
|
name: 'pages.profile3',
|
||||||
component: () => import('@src/views/user/editprofile/editprofile.vue'),
|
// component: () => import('app/src/components/editprofile/editprofile.vue'),
|
||||||
meta: { requiresAuth: true },
|
meta: { requiresAuth: true },
|
||||||
inmenu: false,
|
inmenu: false,
|
||||||
infooter: false,
|
infooter: false,
|
||||||
},
|
},*/
|
||||||
{
|
{
|
||||||
active: true,
|
active: true,
|
||||||
order: 130,
|
order: 130,
|
||||||
|
|||||||
@@ -1 +1 @@
|
|||||||
TERMINA DI LAVORARE SU gruppomacro.app: (Sovrascrivo!)
|
TERMINA DI LAVORARE SU riso.app: (Sovrascrivo!)
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"name": "Riso",
|
"name": "Gruppo Macro",
|
||||||
"short_name": "Riso",
|
"short_name": "GruppoMacro",
|
||||||
"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.",
|
"description": "",
|
||||||
"display": "standalone",
|
"display": "standalone",
|
||||||
"orientation": "portrait",
|
"orientation": "portrait",
|
||||||
"background_color": "#fff",
|
"background_color": "#fff",
|
||||||
@@ -11,47 +11,17 @@
|
|||||||
"start_url": "/?homescreen=1",
|
"start_url": "/?homescreen=1",
|
||||||
"icons": [
|
"icons": [
|
||||||
{
|
{
|
||||||
"src": "/images/riso-android-icon-512x512.png",
|
"src": "/images/gm-android-icon-512x512.png",
|
||||||
"sizes": "512x512",
|
"sizes": "512x512",
|
||||||
"type": "image/png"
|
"type": "image/png"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"src": "/images/riso-android-icon-384x384.png",
|
"src": "/images/gm-android-icon-192x192.png",
|
||||||
"sizes": "384x384",
|
|
||||||
"type": "image/png"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"src": "/images/riso-android-icon-192x192.png",
|
|
||||||
"sizes": "192x192",
|
"sizes": "192x192",
|
||||||
"type": "image/png"
|
"type": "image/png"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"src": "/images/riso-android-icon-144x144.png",
|
"src": "/images/gm-apple-touch-icon.png",
|
||||||
"sizes": "144x144",
|
|
||||||
"type": "image/png"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"src": "/images/riso-android-icon-96x96.png",
|
|
||||||
"sizes": "96x96",
|
|
||||||
"type": "image/png"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"src": "/images/riso-apple-icon-120x120.png",
|
|
||||||
"sizes": "120x120",
|
|
||||||
"type": "image/png"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"src": "/images/riso-apple-icon-144x144.png",
|
|
||||||
"sizes": "144x144",
|
|
||||||
"type": "image/png"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"src": "/images/riso-apple-icon-152x152.png",
|
|
||||||
"sizes": "152x152",
|
|
||||||
"type": "image/png"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"src": "/images/riso-apple-icon-180x180.png",
|
|
||||||
"sizes": "180x180",
|
"sizes": "180x180",
|
||||||
"type": "image/png"
|
"type": "image/png"
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -453,6 +453,9 @@ export const shared_consts = {
|
|||||||
'catalogs',
|
'catalogs',
|
||||||
'raccoltacataloghis',
|
'raccoltacataloghis',
|
||||||
],
|
],
|
||||||
|
|
||||||
|
TABLES_NON_AGGIORNARE_IN_MEMORIA_PERCHE_DIVERSA_STRUTTURA: ['catalogs'],
|
||||||
|
|
||||||
TABLES_SHOW_ADTYPE: ['myskills', 'mygoods', 'myhosps'],
|
TABLES_SHOW_ADTYPE: ['myskills', 'mygoods', 'myhosps'],
|
||||||
|
|
||||||
TABLES_VISU_LISTA_USER: ['myskills', 'mybachecas', 'myhosps', 'mygoods', 'users'],
|
TABLES_VISU_LISTA_USER: ['myskills', 'mybachecas', 'myhosps', 'mygoods', 'users'],
|
||||||
|
|||||||
@@ -65,39 +65,40 @@
|
|||||||
|
|
||||||
<!-- Contenuto pagina -->
|
<!-- Contenuto pagina -->
|
||||||
<div
|
<div
|
||||||
:class="[{ 'q-ma-xs': !hideHeader, 'q-mx-auto': !hideHeader }]"
|
:class="[{ 'q-mx-auto': !hideHeader }]"
|
||||||
:style="hideHeader ? [{ 'margin-left': 0, 'margin-right': 0 }] : containerStyle"
|
:style="hideHeader ? [{ 'margin-left': 0, 'margin-right': 0 }] : containerStyle"
|
||||||
>
|
>
|
||||||
<div v-if="globalStore.showHeader">
|
<div v-if="globalStore.showHeader && mediaBlocks.length > 0">
|
||||||
<!-- Media/Content blocks (1..3) -->
|
<!-- Media/Content blocks (1..3) -->
|
||||||
<section
|
<template
|
||||||
v-for="(blk, i) in mediaBlocks"
|
v-for="(blk, i) in mediaBlocks"
|
||||||
:key="`mblk-${i}`"
|
:key="`mblk-${i}`"
|
||||||
class="q-mb-md"
|
|
||||||
>
|
>
|
||||||
<div
|
<section
|
||||||
v-if="blk.img"
|
v-if="blk.img"
|
||||||
class="text-center q-mb-sm"
|
|
||||||
>
|
|
||||||
<q-img
|
|
||||||
:src="blk.img"
|
|
||||||
class="page-img"
|
|
||||||
:ratio="16 / 9"
|
|
||||||
loading="lazy"
|
|
||||||
/>
|
|
||||||
</div>
|
|
||||||
<div
|
|
||||||
v-if="blk.html"
|
|
||||||
v-html="blk.html"
|
|
||||||
class="q-mb-sm content-html"
|
|
||||||
></div>
|
|
||||||
<q-video
|
|
||||||
v-if="blk.video"
|
|
||||||
:src="blk.video"
|
|
||||||
:ratio="blk.ratio || 16 / 9"
|
|
||||||
class="q-mb-md"
|
class="q-mb-md"
|
||||||
/>
|
>
|
||||||
</section>
|
<div class="text-center q-mb-sm">
|
||||||
|
<q-img
|
||||||
|
:src="blk.img"
|
||||||
|
class="page-img"
|
||||||
|
:ratio="16 / 9"
|
||||||
|
loading="lazy"
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
<div
|
||||||
|
v-if="blk.html"
|
||||||
|
v-html="blk.html"
|
||||||
|
class="q-mb-sm content-html"
|
||||||
|
></div>
|
||||||
|
<q-video
|
||||||
|
v-if="blk.video"
|
||||||
|
:src="blk.video"
|
||||||
|
:ratio="blk.ratio || 16 / 9"
|
||||||
|
class="q-mb-md"
|
||||||
|
/>
|
||||||
|
</section>
|
||||||
|
</template>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<!-- Contenuti extra HTML -->
|
<!-- Contenuti extra HTML -->
|
||||||
|
|||||||
@@ -140,7 +140,7 @@ export default defineComponent({
|
|||||||
|
|
||||||
const optionscatalogo = ref(<any>{ maxlength: 0 });
|
const optionscatalogo = ref(<any>{ maxlength: 0 });
|
||||||
|
|
||||||
function handleUpdate(newList) {
|
function handleUpdate(newList: any) {
|
||||||
internalProducts.value = newList;
|
internalProducts.value = newList;
|
||||||
riaggiornaListaProdAlGenitore();
|
riaggiornaListaProdAlGenitore();
|
||||||
}
|
}
|
||||||
@@ -164,8 +164,10 @@ export default defineComponent({
|
|||||||
() => props.lista_prodotti,
|
() => props.lista_prodotti,
|
||||||
(newVal) => {
|
(newVal) => {
|
||||||
internalProducts.value = [...newVal];
|
internalProducts.value = [...newVal];
|
||||||
internalProducts.value.forEach((p: IProduct) => {
|
internalProducts.value.forEach((p: any) => {
|
||||||
p.myorder = ProductStore.createMyOrder();
|
if (typeof p === 'object' && p !== null) {
|
||||||
|
p.myorder = ProductStore.createMyOrder();
|
||||||
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
),
|
),
|
||||||
|
|||||||
@@ -86,6 +86,11 @@ export default defineComponent({
|
|||||||
required: false,
|
required: false,
|
||||||
default: false,
|
default: false,
|
||||||
},
|
},
|
||||||
|
token: {
|
||||||
|
type: String,
|
||||||
|
required: false,
|
||||||
|
default: '',
|
||||||
|
},
|
||||||
},
|
},
|
||||||
setup(props, { emit }) {
|
setup(props, { emit }) {
|
||||||
const $q = useQuasar()
|
const $q = useQuasar()
|
||||||
@@ -407,6 +412,13 @@ export default defineComponent({
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
onMounted(() => {
|
||||||
|
const token = props.token
|
||||||
|
|
||||||
|
// carica
|
||||||
|
})
|
||||||
|
|
||||||
|
|
||||||
created()
|
created()
|
||||||
|
|
||||||
return {
|
return {
|
||||||
|
|||||||
@@ -37,7 +37,7 @@
|
|||||||
<CCardStat :mytext="$t('stat.accepted')" :myval="datastat.num_part_accepted"></CCardStat>
|
<CCardStat :mytext="$t('stat.accepted')" :myval="datastat.num_part_accepted"></CCardStat>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<q-list bordered>
|
<q-list bordered v-if="tools.isLogged()">
|
||||||
<q-expansion-item group="somegroup" icon="fas fa-user-plus" :label="$t('statusreg.newreg')" default-opened
|
<q-expansion-item group="somegroup" icon="fas fa-user-plus" :label="$t('statusreg.newreg')" default-opened
|
||||||
header-class="text-primary">
|
header-class="text-primary">
|
||||||
<q-card>
|
<q-card>
|
||||||
|
|||||||
884
src/components/HomeRiso/HomeRiso copy.vue
Normal file
@@ -0,0 +1,884 @@
|
|||||||
|
<template>
|
||||||
|
<q-page class="riso-homepage">
|
||||||
|
<!-- Hero Section -->
|
||||||
|
<!-- Hero Section con Slideshow -->
|
||||||
|
<section class="hero-section">
|
||||||
|
<!-- Background Slideshow -->
|
||||||
|
<div class="hero-slideshow">
|
||||||
|
<div
|
||||||
|
v-for="(image, index) in heroImages"
|
||||||
|
:key="index"
|
||||||
|
class="hero-slide"
|
||||||
|
:class="{ active: currentSlide === index }"
|
||||||
|
:style="{ backgroundImage: `url(${image.src})` }"
|
||||||
|
>
|
||||||
|
<div class="hero-overlay"></div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<!-- Slideshow Indicators -->
|
||||||
|
<div class="slideshow-indicators">
|
||||||
|
<button
|
||||||
|
v-for="(image, index) in heroImages"
|
||||||
|
:key="index"
|
||||||
|
class="indicator-dot"
|
||||||
|
:class="{ active: currentSlide === index }"
|
||||||
|
@click="goToSlide(index)"
|
||||||
|
:aria-label="`Vai alla slide ${index + 1}`"
|
||||||
|
></button>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<!-- Hero Content -->
|
||||||
|
<div class="hero-content">
|
||||||
|
<q-img
|
||||||
|
src="/images/logo.png"
|
||||||
|
alt="RISO Logo"
|
||||||
|
class="hero-logo"
|
||||||
|
:ratio="1"
|
||||||
|
/>
|
||||||
|
|
||||||
|
<h1 class="hero-title animate-fade-in">
|
||||||
|
<span class="riso-text">RISO</span>
|
||||||
|
</h1>
|
||||||
|
|
||||||
|
<h2 class="hero-subtitle animate-fade-in-delay">
|
||||||
|
Rete Italiana di Scambio Orizzontale
|
||||||
|
</h2>
|
||||||
|
|
||||||
|
<p class="hero-description animate-fade-in-delay-2">
|
||||||
|
Una rete di comunità consapevoli, basata sul sostegno reciproco,<br />
|
||||||
|
la fiducia, la condivisione e l'ascolto.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<div class="hero-actions animate-fade-in-delay-3">
|
||||||
|
<q-btn
|
||||||
|
v-if="!tools.isLogged()"
|
||||||
|
label="Unisciti a RISO"
|
||||||
|
:size="$q.platform.is.mobile ? 'lg' : 'xl'"
|
||||||
|
color="primary"
|
||||||
|
rounded
|
||||||
|
unelevated
|
||||||
|
class="cta-button"
|
||||||
|
@click="scrollToRegistrazione"
|
||||||
|
/>
|
||||||
|
<q-btn
|
||||||
|
v-else
|
||||||
|
label="ACCEDI"
|
||||||
|
:size="$q.platform.is.mobile ? 'lg' : 'xl'"
|
||||||
|
color="primary"
|
||||||
|
rounded
|
||||||
|
unelevated
|
||||||
|
class="cta-button"
|
||||||
|
@click="goToHome"
|
||||||
|
/>
|
||||||
|
|
||||||
|
<q-btn
|
||||||
|
label="Scopri di più"
|
||||||
|
size="md"
|
||||||
|
outline
|
||||||
|
rounded
|
||||||
|
class="secondary-button"
|
||||||
|
@click="scrollToAbout"
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<!-- Cos'è RISO Section -->
|
||||||
|
<section
|
||||||
|
id="about"
|
||||||
|
class="about-section"
|
||||||
|
>
|
||||||
|
<div class="contain_riso">
|
||||||
|
<h2 class="section-title">
|
||||||
|
<q-icon
|
||||||
|
name="eco"
|
||||||
|
size="md"
|
||||||
|
class="title-icon"
|
||||||
|
/>
|
||||||
|
Cos'è RISO?
|
||||||
|
</h2>
|
||||||
|
|
||||||
|
<div class="content-cards">
|
||||||
|
<q-card
|
||||||
|
class="info-card"
|
||||||
|
flat
|
||||||
|
bordered
|
||||||
|
>
|
||||||
|
<q-card-section class="card-icon-section">
|
||||||
|
<div class="icon-circle">🫂</div>
|
||||||
|
</q-card-section>
|
||||||
|
<q-card-section>
|
||||||
|
<div class="card-title">Una Rete di Comunità</div>
|
||||||
|
<p class="card-text">
|
||||||
|
RISO è una rete di comunità che vuole creare un nuovo mondo, attraverso
|
||||||
|
l'incontro e la condivisione, con il sor<strong>RISO</strong> sulle
|
||||||
|
labbra.
|
||||||
|
</p>
|
||||||
|
</q-card-section>
|
||||||
|
</q-card>
|
||||||
|
|
||||||
|
<q-card
|
||||||
|
class="info-card"
|
||||||
|
flat
|
||||||
|
bordered
|
||||||
|
>
|
||||||
|
<q-card-section class="card-icon-section">
|
||||||
|
<div class="icon-circle">🌾</div>
|
||||||
|
</q-card-section>
|
||||||
|
<q-card-section>
|
||||||
|
<div class="card-title">Simbolo di Vita</div>
|
||||||
|
<p class="card-text">
|
||||||
|
Il RISO è fonte di vita, simbolo del ciclo della vita e del valore della
|
||||||
|
terra. Una delle prime forme di scambio, una moneta basata su uno dei beni
|
||||||
|
più preziosi.
|
||||||
|
</p>
|
||||||
|
</q-card-section>
|
||||||
|
</q-card>
|
||||||
|
|
||||||
|
<q-card
|
||||||
|
class="info-card"
|
||||||
|
flat
|
||||||
|
bordered
|
||||||
|
>
|
||||||
|
<q-card-section class="card-icon-section">
|
||||||
|
<div class="icon-circle">🤝</div>
|
||||||
|
</q-card-section>
|
||||||
|
<q-card-section>
|
||||||
|
<div class="card-title">Decisioni Orizzontali</div>
|
||||||
|
<p class="card-text">
|
||||||
|
Il progetto è orizzontale: ogni decisione viene presa nei territori
|
||||||
|
attraverso la condivisione e la partecipazione.
|
||||||
|
</p>
|
||||||
|
</q-card-section>
|
||||||
|
</q-card>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<!-- Il Sogno Section -->
|
||||||
|
<section class="dream-section">
|
||||||
|
<div class="contain_riso">
|
||||||
|
<div class="dream-content">
|
||||||
|
<div class="dream-text">
|
||||||
|
<h2 class="section-title light">
|
||||||
|
<q-icon
|
||||||
|
name="auto_awesome"
|
||||||
|
size="md"
|
||||||
|
class="title-icon"
|
||||||
|
/>
|
||||||
|
Il Sogno di RISO
|
||||||
|
</h2>
|
||||||
|
<p class="dream-description">
|
||||||
|
Siamo una rete di comunità consapevoli, basata sul sostegno reciproco, la
|
||||||
|
fiducia, la condivisione e l'ascolto. Coltiviamo terreno fertile per creare,
|
||||||
|
in armonia con la natura, un mondo di collettività
|
||||||
|
<strong>libere e autosufficienti</strong>, attraverso un circuito di scambio
|
||||||
|
di esperienze umane, beni e servizi.
|
||||||
|
</p>
|
||||||
|
<div class="dream-highlight">
|
||||||
|
<q-icon
|
||||||
|
name="campaign"
|
||||||
|
size="lg"
|
||||||
|
/>
|
||||||
|
<div>
|
||||||
|
<strong>Partecipa al cambiamento.</strong><br />
|
||||||
|
RISO sei anche tu!
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="dream-image">
|
||||||
|
<q-img
|
||||||
|
src="/images/cerchio_riso.jpg"
|
||||||
|
alt="Comunità RISO"
|
||||||
|
class="rounded-image"
|
||||||
|
ratio="1"
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<!-- Valori Section -->
|
||||||
|
<section class="values-section">
|
||||||
|
<div class="contain_riso">
|
||||||
|
<h2 class="section-title">
|
||||||
|
<q-icon
|
||||||
|
name="favorite"
|
||||||
|
size="md"
|
||||||
|
class="title-icon"
|
||||||
|
/>
|
||||||
|
I Nostri Valori
|
||||||
|
</h2>
|
||||||
|
|
||||||
|
<div class="values-grid">
|
||||||
|
<div
|
||||||
|
v-for="(value, index) in values"
|
||||||
|
:key="index"
|
||||||
|
class="value-item"
|
||||||
|
>
|
||||||
|
<div class="value-icon">{{ value.icon }}</div>
|
||||||
|
<h3 class="value-title">{{ value.title }}</h3>
|
||||||
|
<p class="value-text">{{ value.text }}</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<!-- Come Funziona Section -->
|
||||||
|
<section class="how-it-works-section">
|
||||||
|
<div class="contain_riso">
|
||||||
|
<h2 class="section-title">
|
||||||
|
<q-icon
|
||||||
|
name="settings"
|
||||||
|
size="md"
|
||||||
|
class="title-icon"
|
||||||
|
/>
|
||||||
|
Come Funziona
|
||||||
|
</h2>
|
||||||
|
|
||||||
|
<div class="steps-timeline">
|
||||||
|
<div
|
||||||
|
v-for="(step, index) in steps"
|
||||||
|
:key="index"
|
||||||
|
class="step-item"
|
||||||
|
>
|
||||||
|
<div class="step-number">{{ index + 1 }}</div>
|
||||||
|
<div class="step-content">
|
||||||
|
<h3 class="step-title">{{ step.title }}</h3>
|
||||||
|
<p class="step-text">{{ step.text }}</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<!-- Video Section - Aggiungi dopo la sezione "How it works" -->
|
||||||
|
<section class="video-section">
|
||||||
|
<div class="container">
|
||||||
|
<h2 class="section-title">
|
||||||
|
<q-icon
|
||||||
|
name="play_circle"
|
||||||
|
size="md"
|
||||||
|
class="title-icon"
|
||||||
|
/>
|
||||||
|
Guarda il Video di Presentazione
|
||||||
|
</h2>
|
||||||
|
|
||||||
|
<div class="video-container">
|
||||||
|
<iframe
|
||||||
|
width="100%"
|
||||||
|
height="100%"
|
||||||
|
src="https://rumble.com/embed/v5opfsn/?pub=46vc7z"
|
||||||
|
title="Video presentazione Progetto RISO"
|
||||||
|
frameborder="0"
|
||||||
|
allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture"
|
||||||
|
allowfullscreen
|
||||||
|
></iframe>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<p class="video-description">
|
||||||
|
Scopri come funziona il Progetto RISO e come puoi contribuire a creare
|
||||||
|
un'economia più sostenibile e solidale nella tua comunità.
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<!-- Comunità Territoriali Section -->
|
||||||
|
<section class="communities-section">
|
||||||
|
<div class="contain_riso">
|
||||||
|
<h2 class="section-title">
|
||||||
|
<q-icon
|
||||||
|
name="groups"
|
||||||
|
size="md"
|
||||||
|
class="title-icon"
|
||||||
|
/>
|
||||||
|
Comunità Territoriali
|
||||||
|
</h2>
|
||||||
|
|
||||||
|
<div class="communities-content">
|
||||||
|
<p class="section-intro">
|
||||||
|
Le colonne portanti di RISO sono le <strong>Comunità Territoriali</strong>.
|
||||||
|
Ogni comunità ha pieno potere decisionale al suo interno, nel rispetto dei
|
||||||
|
principi e delle finalità di RISO.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<div class="features-grid">
|
||||||
|
<q-card
|
||||||
|
class="feature-card"
|
||||||
|
flat
|
||||||
|
>
|
||||||
|
<q-card-section>
|
||||||
|
<div class="feature-icon">🏘️</div>
|
||||||
|
<div class="feature-title">Autonomia Locale</div>
|
||||||
|
<p class="feature-text">
|
||||||
|
Ogni comunità decide autonomamente, tessendo relazioni con i gruppi del
|
||||||
|
territorio.
|
||||||
|
</p>
|
||||||
|
</q-card-section>
|
||||||
|
</q-card>
|
||||||
|
|
||||||
|
<q-card
|
||||||
|
class="feature-card"
|
||||||
|
flat
|
||||||
|
>
|
||||||
|
<q-card-section>
|
||||||
|
<div class="feature-icon">👥</div>
|
||||||
|
<div class="feature-title">Facilitatori</div>
|
||||||
|
<p class="feature-text">
|
||||||
|
Idealmente servirebbero almeno 3 facilitatori per comunità, scelti dai
|
||||||
|
membri per aiutare nella comunicazione e nel coordinamento.
|
||||||
|
</p>
|
||||||
|
</q-card-section>
|
||||||
|
</q-card>
|
||||||
|
|
||||||
|
<q-card
|
||||||
|
class="feature-card"
|
||||||
|
flat
|
||||||
|
>
|
||||||
|
<q-card-section>
|
||||||
|
<div class="feature-icon">🔗</div>
|
||||||
|
<div class="feature-title">Nodi Regionali</div>
|
||||||
|
<p class="feature-text">
|
||||||
|
I facilitatori regionali supportano le comunità territoriali e
|
||||||
|
condividono iniziative.
|
||||||
|
</p>
|
||||||
|
</q-card-section>
|
||||||
|
</q-card>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<!-- RIS e Scambi Section -->
|
||||||
|
<section class="ris-section">
|
||||||
|
<div class="contain_riso">
|
||||||
|
<h2 class="section-title">
|
||||||
|
<q-icon
|
||||||
|
name="currency_exchange"
|
||||||
|
size="md"
|
||||||
|
class="title-icon"
|
||||||
|
/>
|
||||||
|
I Circuiti di Scambio e il RIS
|
||||||
|
</h2>
|
||||||
|
|
||||||
|
<div class="ris-content">
|
||||||
|
<!-- Card principale cos'è il RIS -->
|
||||||
|
<div class="ris-card-main">
|
||||||
|
<q-card
|
||||||
|
class="ris-info-card"
|
||||||
|
flat
|
||||||
|
bordered
|
||||||
|
>
|
||||||
|
<q-card-section class="ris-header">
|
||||||
|
<div class="ris-icon">💰</div>
|
||||||
|
<h3>Cos'è il RIS?</h3>
|
||||||
|
</q-card-section>
|
||||||
|
<q-card-section>
|
||||||
|
<p class="ris-description">
|
||||||
|
Il <strong>RIS</strong> è l'unità di misura del valore dei beni e
|
||||||
|
servizi per lo scambio tra i membri di una comunità territoriale. È una
|
||||||
|
moneta complementare basata sulla <strong>fiducia reciproca</strong>
|
||||||
|
tra i membri della comunità.
|
||||||
|
</p>
|
||||||
|
<q-separator class="q-my-md" />
|
||||||
|
<div class="ris-features">
|
||||||
|
<div class="ris-feature-item">
|
||||||
|
<q-icon
|
||||||
|
name="check_circle"
|
||||||
|
color="positive"
|
||||||
|
/>
|
||||||
|
<span
|
||||||
|
>Parti da 0 RIS: ricevere = credito (+), offrire = debito (-)</span
|
||||||
|
>
|
||||||
|
</div>
|
||||||
|
<div class="ris-feature-item">
|
||||||
|
<q-icon
|
||||||
|
name="check_circle"
|
||||||
|
color="positive"
|
||||||
|
/>
|
||||||
|
<span>Non si accumula: serve per far circolare beni e servizi</span>
|
||||||
|
</div>
|
||||||
|
<div class="ris-feature-item">
|
||||||
|
<q-icon
|
||||||
|
name="check_circle"
|
||||||
|
color="positive"
|
||||||
|
/>
|
||||||
|
<span>Il bilancio totale della comunità è sempre zero</span>
|
||||||
|
</div>
|
||||||
|
<div class="ris-feature-item">
|
||||||
|
<q-icon
|
||||||
|
name="check_circle"
|
||||||
|
color="positive"
|
||||||
|
/>
|
||||||
|
<span>Puoi combinarlo con Euro, baratto o dono</span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</q-card-section>
|
||||||
|
</q-card>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<!-- Limiti RIS -->
|
||||||
|
<div class="ris-limits-section">
|
||||||
|
<h3 class="subsection-title">📊 Limiti di Utilizzo</h3>
|
||||||
|
<p class="limits-intro">
|
||||||
|
Per garantire la circolazione equilibrata, esistono dei limiti al saldo RIS
|
||||||
|
che ogni membro può avere:
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<div class="limits-grid">
|
||||||
|
<q-card
|
||||||
|
class="limit-card"
|
||||||
|
flat
|
||||||
|
bordered
|
||||||
|
>
|
||||||
|
<q-card-section>
|
||||||
|
<div class="limit-icon">🏘️</div>
|
||||||
|
<h4 class="limit-title">Circuito Territoriale</h4>
|
||||||
|
<p class="limit-subtitle">(Provincia)</p>
|
||||||
|
<div class="limit-values">
|
||||||
|
<div class="limit-value negative">
|
||||||
|
<div class="limit-label">
|
||||||
|
Fiducia Concessa<br />(Limite negativo)
|
||||||
|
</div>
|
||||||
|
<div class="limit-number">-100 RIS</div>
|
||||||
|
</div>
|
||||||
|
<div class="limit-separator">↔️</div>
|
||||||
|
<div class="limit-value positive">
|
||||||
|
<div class="limit-label">
|
||||||
|
Massimo Accumulo<br />(Limite positivo)
|
||||||
|
</div>
|
||||||
|
<div class="limit-number">+200 RIS</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</q-card-section>
|
||||||
|
</q-card>
|
||||||
|
|
||||||
|
<q-card
|
||||||
|
class="limit-card"
|
||||||
|
flat
|
||||||
|
bordered
|
||||||
|
>
|
||||||
|
<q-card-section>
|
||||||
|
<div class="limit-icon">🇮🇹</div>
|
||||||
|
<h4 class="limit-title">Circuito Nazionale</h4>
|
||||||
|
<p class="limit-subtitle">(Tutta Italia)</p>
|
||||||
|
<div class="limit-values">
|
||||||
|
<div class="limit-value negative">
|
||||||
|
<div class="limit-label">
|
||||||
|
Fiducia Concessa<br />(Limite negativo)
|
||||||
|
</div>
|
||||||
|
<div class="limit-number">-200 RIS</div>
|
||||||
|
</div>
|
||||||
|
<div class="limit-separator">↔️</div>
|
||||||
|
<div class="limit-value positive">
|
||||||
|
<div class="limit-label">
|
||||||
|
Massimo Accumulo<br />(Limite positivo)
|
||||||
|
</div>
|
||||||
|
<div class="limit-number">+400 RIS</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</q-card-section>
|
||||||
|
</q-card>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<q-banner
|
||||||
|
class="limits-note"
|
||||||
|
rounded
|
||||||
|
>
|
||||||
|
<template v-slot:avatar>
|
||||||
|
<q-icon
|
||||||
|
name="info"
|
||||||
|
color="primary"
|
||||||
|
/>
|
||||||
|
</template>
|
||||||
|
I limiti servono a evitare accumulo eccessivo e garantire che i RIS
|
||||||
|
circolino continuamente nella comunità, mantenendo il bilancio totale a
|
||||||
|
zero. Ogni comunita territoriale provinciale può decidere
|
||||||
|
<strong>autonomamente di modificare</strong> i limiti all'occorrenza.
|
||||||
|
</q-banner>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<!-- Esempio 1: Scambio circolare -->
|
||||||
|
<div class="example-section">
|
||||||
|
<h3 class="subsection-title">🔄 Esempio 1: Scambio Circolare</h3>
|
||||||
|
<p class="example-intro">
|
||||||
|
Vediamo come funzionano gli scambi in RIS con 3 persone che offrono e
|
||||||
|
ricevono servizi dello stesso valore (10 RIS):
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<q-card
|
||||||
|
class="example-card"
|
||||||
|
flat
|
||||||
|
bordered
|
||||||
|
>
|
||||||
|
<q-card-section>
|
||||||
|
<div class="example-steps">
|
||||||
|
<!-- Step 1 -->
|
||||||
|
<div class="example-step">
|
||||||
|
<div class="step-header">
|
||||||
|
<div class="step-badge">1</div>
|
||||||
|
<div class="step-title">
|
||||||
|
Mario riceve verdure da Laura e le invia 10 RIS (va a -10)
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="step-content">
|
||||||
|
<div class="transaction">
|
||||||
|
<div class="person">
|
||||||
|
<div class="person-name">👨 Mario</div>
|
||||||
|
<div class="balance negative">-10 RIS</div>
|
||||||
|
<div class="balance-detail">(0 -10) = -10</div>
|
||||||
|
</div>
|
||||||
|
<div class="arrow">→</div>
|
||||||
|
<div class="person">
|
||||||
|
<div class="person-name">👩 Laura</div>
|
||||||
|
<div class="balance positive">+10 RIS</div>
|
||||||
|
<div class="balance-detail">(0 +10) = +10</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<q-separator class="q-my-md" />
|
||||||
|
|
||||||
|
<!-- Step 2 -->
|
||||||
|
<div class="example-step">
|
||||||
|
<div class="step-header">
|
||||||
|
<div class="step-badge">2</div>
|
||||||
|
<div class="step-title">
|
||||||
|
Laura si fa riparare la bici da Paolo e gli invia 10 RIS, Laura
|
||||||
|
torna così a zero.
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="step-content">
|
||||||
|
<div class="transaction">
|
||||||
|
<div class="person">
|
||||||
|
<div class="person-name">👩 Laura</div>
|
||||||
|
<div class="balance neutral">0 RIS</div>
|
||||||
|
<div class="balance-detail">(+10 -10) = 0</div>
|
||||||
|
</div>
|
||||||
|
<div class="arrow">→</div>
|
||||||
|
<div class="person">
|
||||||
|
<div class="person-name">👨 Paolo</div>
|
||||||
|
<div class="balance positive">+10 RIS</div>
|
||||||
|
<div class="balance-detail">(+10 -10) = 0</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<q-separator class="q-my-md" />
|
||||||
|
|
||||||
|
<!-- Step 3 -->
|
||||||
|
<div class="example-step">
|
||||||
|
<div class="step-header">
|
||||||
|
<div class="step-badge">3</div>
|
||||||
|
<div class="step-title">
|
||||||
|
Paolo riceve del miele da Mario e gli invia 10 RIS.
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="step-content">
|
||||||
|
<div class="transaction">
|
||||||
|
<div class="person">
|
||||||
|
<div class="person-name">👨 Paolo</div>
|
||||||
|
<div class="balance neutral">0 RIS</div>
|
||||||
|
<div class="balance-detail">(+10 -10) = 0</div>
|
||||||
|
</div>
|
||||||
|
<div class="arrow">→</div>
|
||||||
|
<div class="person">
|
||||||
|
<div class="person-name">👨 Mario</div>
|
||||||
|
<div class="balance neutral">0 RIS</div>
|
||||||
|
<div class="balance-detail">(-10 +10) = 0</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<!-- Risultato finale -->
|
||||||
|
<q-banner
|
||||||
|
class="example-result"
|
||||||
|
rounded
|
||||||
|
>
|
||||||
|
<template v-slot:avatar>
|
||||||
|
<q-icon
|
||||||
|
name="check_circle"
|
||||||
|
color="positive"
|
||||||
|
size="lg"
|
||||||
|
/>
|
||||||
|
</template>
|
||||||
|
<div class="result-content">
|
||||||
|
<strong>Risultato finale:</strong> Tutti e tre tornano a
|
||||||
|
<strong>0 RIS</strong>, ma ciascuno ha ricevuto e offerto qualcosa
|
||||||
|
di valore! Il bilancio totale della comunità rimane sempre zero.
|
||||||
|
</div>
|
||||||
|
</q-banner>
|
||||||
|
</div>
|
||||||
|
</q-card-section>
|
||||||
|
</q-card>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<!-- Esempio 2: Scambio misto -->
|
||||||
|
<div class="example-section">
|
||||||
|
<h3 class="subsection-title">💶 Esempio 2: Scambio Misto (RIS + Euro)</h3>
|
||||||
|
<p class="example-intro">
|
||||||
|
Puoi combinare RIS con Euro nella stessa transazione per ridurre
|
||||||
|
gradualmente la dipendenza dalla moneta tradizionale:
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<q-card
|
||||||
|
class="example-card mixed"
|
||||||
|
flat
|
||||||
|
bordered
|
||||||
|
>
|
||||||
|
<q-card-section>
|
||||||
|
<div class="mixed-example">
|
||||||
|
<div class="scenario">
|
||||||
|
<div class="scenario-title">
|
||||||
|
🥬 Scenario: Cassetta di verdure settimanale
|
||||||
|
</div>
|
||||||
|
<div class="scenario-desc">Valore totale: <strong>20€</strong></div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="mixed-options">
|
||||||
|
<!-- Opzione 1: Solo Euro -->
|
||||||
|
<div class="option">
|
||||||
|
<div class="option-label">❌ Economia tradizionale</div>
|
||||||
|
<div class="option-detail">
|
||||||
|
<div class="payment-item">100% Euro = <strong>20€</strong></div>
|
||||||
|
<div class="payment-item ris">
|
||||||
|
0% RIS = <strong>0 RIS</strong>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="option-divider">VS</div>
|
||||||
|
|
||||||
|
<!-- Opzione 2: Misto -->
|
||||||
|
<div class="option highlighted">
|
||||||
|
<div class="option-label">✅ Scambio RISO</div>
|
||||||
|
<div class="option-detail">
|
||||||
|
<div class="payment-item">80% Euro = <strong>16€</strong></div>
|
||||||
|
<div class="payment-item ris">
|
||||||
|
20% RIS = <strong>4 RIS</strong>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<q-banner
|
||||||
|
class="mixed-benefit"
|
||||||
|
rounded
|
||||||
|
>
|
||||||
|
<template v-slot:avatar>
|
||||||
|
<q-icon
|
||||||
|
name="trending_down"
|
||||||
|
color="positive"
|
||||||
|
size="lg"
|
||||||
|
/>
|
||||||
|
</template>
|
||||||
|
<div class="benefit-content">
|
||||||
|
<strong>Beneficio:</strong> Hai ridotto del 20% l'uso degli Euro,
|
||||||
|
sostenendo il produttore locale e rafforzando la comunità! Puoi
|
||||||
|
iniziare con percentuali basse (5-10%) e aumentare gradualmente man
|
||||||
|
mano che la fiducia nella comunità cresce.
|
||||||
|
</div>
|
||||||
|
</q-banner>
|
||||||
|
</div>
|
||||||
|
</q-card-section>
|
||||||
|
</q-card>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<!-- CTA Section -->
|
||||||
|
<section
|
||||||
|
id="registrazione"
|
||||||
|
class="cta-section"
|
||||||
|
>
|
||||||
|
<div class="contain_riso">
|
||||||
|
<div class="cta-content">
|
||||||
|
<h2 class="cta-title">Pronto a Fare Parte del Cambiamento?</h2>
|
||||||
|
<p class="cta-subtitle">
|
||||||
|
Unisciti alla comunità RISO e inizia a scambiare in modo sostenibile e
|
||||||
|
solidale
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<div class="cta-buttons">
|
||||||
|
<q-btn
|
||||||
|
label="Registrati a RISO"
|
||||||
|
:size="$q.platform.is.mobile ? 'lg' : 'xl'"
|
||||||
|
color="primary"
|
||||||
|
rounded
|
||||||
|
unelevated
|
||||||
|
icon="person_add"
|
||||||
|
class="cta-main-button"
|
||||||
|
@click="goToApp"
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<!-- Info App -->
|
||||||
|
<div class="app-features">
|
||||||
|
<div class="feature-badge">
|
||||||
|
<q-icon
|
||||||
|
name="devices"
|
||||||
|
size="md"
|
||||||
|
/>
|
||||||
|
<div class="cta-feature-text">
|
||||||
|
<strong>Multi-piattaforma</strong>
|
||||||
|
<span>Chrome, Firefox, Safari, Android, iPhone, PC</span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="feature-badge">
|
||||||
|
<q-icon
|
||||||
|
name="download"
|
||||||
|
size="md"
|
||||||
|
/>
|
||||||
|
<div class="cta-feature-text">
|
||||||
|
<strong>Installazione facile</strong>
|
||||||
|
<span>Senza passare dallo store, direttamente da riso.app</span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="feature-badge">
|
||||||
|
<q-icon
|
||||||
|
name="volunteer_activism"
|
||||||
|
size="md"
|
||||||
|
/>
|
||||||
|
<div class="cta-feature-text">
|
||||||
|
<strong>100% Gratuita</strong>
|
||||||
|
<span>Open Source, nessuna pubblicità</span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<!-- Footer -->
|
||||||
|
<footer class="riso-footer">
|
||||||
|
<div class="contain_riso">
|
||||||
|
<div class="footer-content">
|
||||||
|
<div class="footer-section">
|
||||||
|
<h4>Link Utili</h4>
|
||||||
|
<ul class="footer-links">
|
||||||
|
<li><a @click="scrollToAbout">Cos'è RISO</a></li>
|
||||||
|
<li>
|
||||||
|
<a
|
||||||
|
href="https://t.me/+pZ40VpmL1NhkZjE0"
|
||||||
|
target="_blank"
|
||||||
|
>
|
||||||
|
🟢 Canale pubblico - PROGETTO RISO
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<a
|
||||||
|
href="https://t.me/c/1565097581/3"
|
||||||
|
target="_blank"
|
||||||
|
>
|
||||||
|
🔵 Gruppi territoriali - ELENCO
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<a
|
||||||
|
href="https://riso.app/riso_gruppo"
|
||||||
|
target="_blank"
|
||||||
|
>
|
||||||
|
🟠 Gruppo nazionale - RISO Italia
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<a
|
||||||
|
href="https://sicrenacc.info/"
|
||||||
|
target="_blank"
|
||||||
|
>
|
||||||
|
Si.cre.na.C.C - Sistema di Credito Naturale
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
<div class="footer-section">
|
||||||
|
<h4>Menu</h4>
|
||||||
|
<ul>
|
||||||
|
<template
|
||||||
|
v-for="(myitemmenu, ind) in static_data.routes"
|
||||||
|
:key="ind"
|
||||||
|
>
|
||||||
|
<li v-if="myitemmenu.infooter && tools.visumenu(myitemmenu) && !myitemmenu.solotitle">
|
||||||
|
<router-link
|
||||||
|
:to="myitemmenu.path"
|
||||||
|
custom
|
||||||
|
v-slot="{ navigate }"
|
||||||
|
>
|
||||||
|
<span
|
||||||
|
class="footer_link"
|
||||||
|
@click="navigate"
|
||||||
|
@keypress.enter="navigate"
|
||||||
|
role="link"
|
||||||
|
>
|
||||||
|
<span v-if="myitemmenu.level_child > 0"> </span>
|
||||||
|
{{ tools.getLabelByItem(myitemmenu) }}
|
||||||
|
</span>
|
||||||
|
</router-link>
|
||||||
|
</li>
|
||||||
|
</template>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
<div class="footer-section">
|
||||||
|
<h4>Contatti</h4>
|
||||||
|
<ul class="footer-links">
|
||||||
|
<li>
|
||||||
|
👴
|
||||||
|
<q-icon
|
||||||
|
name="telegram"
|
||||||
|
color="light-blue-7"
|
||||||
|
size="18px"
|
||||||
|
style="vertical-align: middle; margin-right: 4px"
|
||||||
|
/>
|
||||||
|
<a href="https://t.me/surya1977">Surya</a>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
👩
|
||||||
|
<q-icon
|
||||||
|
name="telegram"
|
||||||
|
color="light-blue-7"
|
||||||
|
size="18px"
|
||||||
|
style="vertical-align: middle; margin-right: 4px"
|
||||||
|
/>
|
||||||
|
<a href="https://t.me/ElenaEspx">Elena</a>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<q-separator class="footer-separator" />
|
||||||
|
|
||||||
|
<div class="footer-bottom">
|
||||||
|
<p>{{ currentYear }} RISO - Rete Italiana di Scambio Orizzontale</p>
|
||||||
|
<p class="footer-values">
|
||||||
|
Comunità · Fiducia · Scambi Solidali · Sostenibilità
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</footer>
|
||||||
|
|
||||||
|
<!-- Floating Action Button per tornare su -->
|
||||||
|
<q-page-sticky
|
||||||
|
position="bottom-right"
|
||||||
|
:offset="[18, 18]"
|
||||||
|
>
|
||||||
|
<q-btn
|
||||||
|
v-show="showScrollTop"
|
||||||
|
fab
|
||||||
|
icon="keyboard_arrow_up"
|
||||||
|
color="primary"
|
||||||
|
@click="scrollToTop"
|
||||||
|
/>
|
||||||
|
</q-page-sticky>
|
||||||
|
</q-page>
|
||||||
|
</template>
|
||||||
|
<script lang="ts" src="./HomeRiso.ts"></script>
|
||||||
|
<style lang="scss" scoped>
|
||||||
|
@import './HomeRiso.scss';
|
||||||
|
</style>
|
||||||
@@ -14,7 +14,7 @@ $text-light: #666; // Grigio medio
|
|||||||
// ==========================================
|
// ==========================================
|
||||||
.riso-homepage {
|
.riso-homepage {
|
||||||
min-height: 100vh;
|
min-height: 100vh;
|
||||||
background: white;
|
background-color: white;
|
||||||
}
|
}
|
||||||
|
|
||||||
.contain_riso {
|
.contain_riso {
|
||||||
@@ -57,7 +57,7 @@ $text-light: #666; // Grigio medio
|
|||||||
// HERO SECTION CON SLIDESHOW
|
// HERO SECTION CON SLIDESHOW
|
||||||
// ==========================================
|
// ==========================================
|
||||||
.hero-section {
|
.hero-section {
|
||||||
min-height: 90vh;
|
min-height: 85vh;
|
||||||
display: flex;
|
display: flex;
|
||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
@@ -114,12 +114,16 @@ $text-light: #666; // Grigio medio
|
|||||||
// Indicatori slideshow
|
// Indicatori slideshow
|
||||||
.slideshow-indicators {
|
.slideshow-indicators {
|
||||||
position: absolute;
|
position: absolute;
|
||||||
bottom: 80px;
|
bottom: 70px;
|
||||||
left: 50%;
|
left: 50%;
|
||||||
transform: translateX(-50%);
|
transform: translateX(-50%);
|
||||||
display: flex;
|
display: flex;
|
||||||
gap: 12px;
|
gap: 12px;
|
||||||
z-index: 3;
|
z-index: 3;
|
||||||
|
|
||||||
|
@media (max-width: 768px) {
|
||||||
|
bottom: 20px;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.indicator-dot {
|
.indicator-dot {
|
||||||
@@ -215,7 +219,7 @@ $text-light: #666; // Grigio medio
|
|||||||
text-shadow: 0 2px 6px rgba(0, 0, 0, 0.4);
|
text-shadow: 0 2px 6px rgba(0, 0, 0, 0.4);
|
||||||
|
|
||||||
@media (max-width: 768px) {
|
@media (max-width: 768px) {
|
||||||
margin-bottom: 3rem;
|
margin-bottom: 1rem;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -340,7 +344,7 @@ $text-light: #666; // Grigio medio
|
|||||||
}
|
}
|
||||||
|
|
||||||
.slideshow-indicators {
|
.slideshow-indicators {
|
||||||
bottom: 10px;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.indicator-dot {
|
.indicator-dot {
|
||||||
@@ -365,7 +369,7 @@ $text-light: #666; // Grigio medio
|
|||||||
// ABOUT SECTION
|
// ABOUT SECTION
|
||||||
// ==========================================
|
// ==========================================
|
||||||
.about-section {
|
.about-section {
|
||||||
padding: 100px 20px;
|
padding: 50px 20px;
|
||||||
background: white;
|
background: white;
|
||||||
|
|
||||||
@media (max-width: 768px) {
|
@media (max-width: 768px) {
|
||||||
@@ -428,7 +432,7 @@ $text-light: #666; // Grigio medio
|
|||||||
// DREAM SECTION
|
// DREAM SECTION
|
||||||
// ==========================================
|
// ==========================================
|
||||||
.dream-section {
|
.dream-section {
|
||||||
padding: 100px 20px;
|
padding: 50px 20px;
|
||||||
background: linear-gradient(135deg, $primary-color 0%, $primary-dark 100%);
|
background: linear-gradient(135deg, $primary-color 0%, $primary-dark 100%);
|
||||||
color: white;
|
color: white;
|
||||||
|
|
||||||
@@ -477,7 +481,7 @@ $text-light: #666; // Grigio medio
|
|||||||
// VALUES SECTION
|
// VALUES SECTION
|
||||||
// ==========================================
|
// ==========================================
|
||||||
.values-section {
|
.values-section {
|
||||||
padding: 100px 20px;
|
padding: 50px 20px;
|
||||||
background: $bg-light;
|
background: $bg-light;
|
||||||
|
|
||||||
@media (max-width: 768px) {
|
@media (max-width: 768px) {
|
||||||
@@ -526,7 +530,7 @@ $text-light: #666; // Grigio medio
|
|||||||
// HOW IT WORKS SECTION
|
// HOW IT WORKS SECTION
|
||||||
// ==========================================
|
// ==========================================
|
||||||
.how-it-works-section {
|
.how-it-works-section {
|
||||||
padding: 100px 20px;
|
padding: 50px 20px;
|
||||||
background: white;
|
background: white;
|
||||||
|
|
||||||
@media (max-width: 768px) {
|
@media (max-width: 768px) {
|
||||||
@@ -581,7 +585,7 @@ $text-light: #666; // Grigio medio
|
|||||||
// COMMUNITIES SECTION
|
// COMMUNITIES SECTION
|
||||||
// ==========================================
|
// ==========================================
|
||||||
.communities-section {
|
.communities-section {
|
||||||
padding: 100px 20px;
|
padding: 50px 20px;
|
||||||
background: $bg-light;
|
background: $bg-light;
|
||||||
|
|
||||||
@media (max-width: 768px) {
|
@media (max-width: 768px) {
|
||||||
@@ -647,7 +651,7 @@ $text-light: #666; // Grigio medio
|
|||||||
// RIS SECTION
|
// RIS SECTION
|
||||||
// ==========================================
|
// ==========================================
|
||||||
.ris-section {
|
.ris-section {
|
||||||
padding: 100px 20px;
|
padding: 50px 20px;
|
||||||
background: white;
|
background: white;
|
||||||
|
|
||||||
@media (max-width: 768px) {
|
@media (max-width: 768px) {
|
||||||
@@ -751,7 +755,7 @@ $text-light: #666; // Grigio medio
|
|||||||
// PARTICIPATION SECTION
|
// PARTICIPATION SECTION
|
||||||
// ==========================================
|
// ==========================================
|
||||||
.participation-section {
|
.participation-section {
|
||||||
padding: 100px 20px;
|
padding: 50px 20px;
|
||||||
background: $bg-light;
|
background: $bg-light;
|
||||||
|
|
||||||
@media (max-width: 768px) {
|
@media (max-width: 768px) {
|
||||||
@@ -998,10 +1002,29 @@ $text-light: #666; // Grigio medio
|
|||||||
|
|
||||||
&:hover {
|
&:hover {
|
||||||
color: $primary-color !important;
|
color: $primary-color !important;
|
||||||
|
transform: translateX(4px);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// ==========================================
|
||||||
|
// FOOTER LINKS
|
||||||
|
// ==========================================
|
||||||
|
.footer_link {
|
||||||
|
font-size: 1rem;
|
||||||
|
color: $primary-color;
|
||||||
|
text-decoration: none;
|
||||||
|
transition: all 0.3s ease;
|
||||||
|
display: inline-block;
|
||||||
|
cursor: pointer;
|
||||||
|
|
||||||
|
&:hover {
|
||||||
|
color: $primary-color;
|
||||||
|
transform: translateX(4px);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
.footer-separator {
|
.footer-separator {
|
||||||
background: rgba(255, 255, 255, 0.2) !important;
|
background: rgba(255, 255, 255, 0.2) !important;
|
||||||
margin: 2rem 0;
|
margin: 2rem 0;
|
||||||
@@ -1518,8 +1541,11 @@ $text-light: #666; // Grigio medio
|
|||||||
// VIDEO SECTION
|
// VIDEO SECTION
|
||||||
// ==========================================
|
// ==========================================
|
||||||
.video-section {
|
.video-section {
|
||||||
padding: 100px 20px;
|
padding: 50px 20px;
|
||||||
background: white;
|
background: white;
|
||||||
|
@media (max-width: 768px) {
|
||||||
|
padding: 10px 20px;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.video-container {
|
.video-container {
|
||||||
@@ -1549,4 +1575,31 @@ $text-light: #666; // Grigio medio
|
|||||||
max-width: 700px;
|
max-width: 700px;
|
||||||
margin: 0 auto;
|
margin: 0 auto;
|
||||||
line-height: 1.6;
|
line-height: 1.6;
|
||||||
|
}
|
||||||
|
|
||||||
|
// ==========================================
|
||||||
|
// LINK UTILI SECTION
|
||||||
|
// ==========================================
|
||||||
|
.footer-links-section {
|
||||||
|
.footer-links {
|
||||||
|
list-style: none;
|
||||||
|
padding: 0;
|
||||||
|
|
||||||
|
li {
|
||||||
|
margin-bottom: 0.8rem;
|
||||||
|
|
||||||
|
a {
|
||||||
|
color: rgba(255, 255, 255, 0.85) !important;
|
||||||
|
text-decoration: none;
|
||||||
|
transition: all 0.3s ease;
|
||||||
|
cursor: pointer;
|
||||||
|
display: inline-block;
|
||||||
|
|
||||||
|
&:hover {
|
||||||
|
color: var(--q-primary) !important;
|
||||||
|
transform: translateX(4px);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
@@ -4,6 +4,8 @@ import { useRouter } from 'vue-router';
|
|||||||
import { tools } from '@tools';
|
import { tools } from '@tools';
|
||||||
import { useGlobalStore } from 'app/src/store';
|
import { useGlobalStore } from 'app/src/store';
|
||||||
|
|
||||||
|
import { static_data } from '@src/db/static_data'
|
||||||
|
|
||||||
// ==========================================
|
// ==========================================
|
||||||
// TYPES
|
// TYPES
|
||||||
// ==========================================
|
// ==========================================
|
||||||
@@ -208,6 +210,7 @@ export default defineComponent({
|
|||||||
tools,
|
tools,
|
||||||
globalStore,
|
globalStore,
|
||||||
goToHome,
|
goToHome,
|
||||||
|
static_data,
|
||||||
};
|
};
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -82,7 +82,6 @@
|
|||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
<!-- Cos'è RISO Section -->
|
<!-- Cos'è RISO Section -->
|
||||||
@@ -112,82 +111,14 @@
|
|||||||
<q-card-section>
|
<q-card-section>
|
||||||
<div class="card-title">Una Rete di Comunità</div>
|
<div class="card-title">Una Rete di Comunità</div>
|
||||||
<p class="card-text">
|
<p class="card-text">
|
||||||
RISO è una rete di comunità che vuole creare un nuovo mondo, attraverso
|
Siamo una rete di comunità consapevoli, basata sul sostegno reciproco, la
|
||||||
l'incontro e la condivisione, con il sor<strong>RISO</strong> sulle
|
fiducia, la condivisione e l'ascolto. Coltiviamo terreno fertile per
|
||||||
labbra.
|
creare, in armonia con la natura, un mondo di collettività
|
||||||
|
<strong>libere e autosufficienti</strong>, attraverso un circuito di
|
||||||
|
scambio di esperienze umane, beni, servizi, ospitalità.
|
||||||
</p>
|
</p>
|
||||||
</q-card-section>
|
</q-card-section>
|
||||||
</q-card>
|
</q-card>
|
||||||
|
|
||||||
<q-card
|
|
||||||
class="info-card"
|
|
||||||
flat
|
|
||||||
bordered
|
|
||||||
>
|
|
||||||
<q-card-section class="card-icon-section">
|
|
||||||
<div class="icon-circle">🌾</div>
|
|
||||||
</q-card-section>
|
|
||||||
<q-card-section>
|
|
||||||
<div class="card-title">Simbolo di Vita</div>
|
|
||||||
<p class="card-text">
|
|
||||||
Il RISO è fonte di vita, simbolo del ciclo della vita e del valore della
|
|
||||||
terra. Una delle prime forme di scambio, una moneta basata su uno dei beni
|
|
||||||
più preziosi.
|
|
||||||
</p>
|
|
||||||
</q-card-section>
|
|
||||||
</q-card>
|
|
||||||
|
|
||||||
<q-card
|
|
||||||
class="info-card"
|
|
||||||
flat
|
|
||||||
bordered
|
|
||||||
>
|
|
||||||
<q-card-section class="card-icon-section">
|
|
||||||
<div class="icon-circle">🤝</div>
|
|
||||||
</q-card-section>
|
|
||||||
<q-card-section>
|
|
||||||
<div class="card-title">Decisioni Orizzontali</div>
|
|
||||||
<p class="card-text">
|
|
||||||
Il progetto è orizzontale: ogni decisione viene presa nei territori
|
|
||||||
attraverso la condivisione e la partecipazione.
|
|
||||||
</p>
|
|
||||||
</q-card-section>
|
|
||||||
</q-card>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</section>
|
|
||||||
|
|
||||||
<!-- Il Sogno Section -->
|
|
||||||
<section class="dream-section">
|
|
||||||
<div class="contain_riso">
|
|
||||||
<div class="dream-content">
|
|
||||||
<div class="dream-text">
|
|
||||||
<h2 class="section-title light">
|
|
||||||
<q-icon
|
|
||||||
name="auto_awesome"
|
|
||||||
size="md"
|
|
||||||
class="title-icon"
|
|
||||||
/>
|
|
||||||
Il Sogno di RISO
|
|
||||||
</h2>
|
|
||||||
<p class="dream-description">
|
|
||||||
Siamo una rete di comunità consapevoli, basata sul sostegno reciproco, la
|
|
||||||
fiducia, la condivisione e l'ascolto. Coltiviamo terreno fertile per creare,
|
|
||||||
in armonia con la natura, un mondo di collettività
|
|
||||||
<strong>libere e autosufficienti</strong>, attraverso un circuito di scambio
|
|
||||||
di esperienze umane, beni e servizi.
|
|
||||||
</p>
|
|
||||||
<div class="dream-highlight">
|
|
||||||
<q-icon
|
|
||||||
name="campaign"
|
|
||||||
size="lg"
|
|
||||||
/>
|
|
||||||
<div>
|
|
||||||
<strong>Partecipa al cambiamento.</strong><br />
|
|
||||||
RISO sei anche tu!
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="dream-image">
|
<div class="dream-image">
|
||||||
<q-img
|
<q-img
|
||||||
src="/images/cerchio_riso.jpg"
|
src="/images/cerchio_riso.jpg"
|
||||||
@@ -439,12 +370,16 @@
|
|||||||
<p class="limit-subtitle">(Provincia)</p>
|
<p class="limit-subtitle">(Provincia)</p>
|
||||||
<div class="limit-values">
|
<div class="limit-values">
|
||||||
<div class="limit-value negative">
|
<div class="limit-value negative">
|
||||||
<div class="limit-label">Fiducia Concessa<br>(Limite negativo)</div>
|
<div class="limit-label">
|
||||||
|
Fiducia Concessa<br />(Limite negativo)
|
||||||
|
</div>
|
||||||
<div class="limit-number">-100 RIS</div>
|
<div class="limit-number">-100 RIS</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="limit-separator">↔️</div>
|
<div class="limit-separator">↔️</div>
|
||||||
<div class="limit-value positive">
|
<div class="limit-value positive">
|
||||||
<div class="limit-label">Massimo Accumulo<br>(Limite positivo)</div>
|
<div class="limit-label">
|
||||||
|
Massimo Accumulo<br />(Limite positivo)
|
||||||
|
</div>
|
||||||
<div class="limit-number">+200 RIS</div>
|
<div class="limit-number">+200 RIS</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -462,12 +397,16 @@
|
|||||||
<p class="limit-subtitle">(Tutta Italia)</p>
|
<p class="limit-subtitle">(Tutta Italia)</p>
|
||||||
<div class="limit-values">
|
<div class="limit-values">
|
||||||
<div class="limit-value negative">
|
<div class="limit-value negative">
|
||||||
<div class="limit-label">Fiducia Concessa<br>(Limite negativo)</div>
|
<div class="limit-label">
|
||||||
|
Fiducia Concessa<br />(Limite negativo)
|
||||||
|
</div>
|
||||||
<div class="limit-number">-200 RIS</div>
|
<div class="limit-number">-200 RIS</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="limit-separator">↔️</div>
|
<div class="limit-separator">↔️</div>
|
||||||
<div class="limit-value positive">
|
<div class="limit-value positive">
|
||||||
<div class="limit-label">Massimo Accumulo<br>(Limite positivo)</div>
|
<div class="limit-label">
|
||||||
|
Massimo Accumulo<br />(Limite positivo)
|
||||||
|
</div>
|
||||||
<div class="limit-number">+400 RIS</div>
|
<div class="limit-number">+400 RIS</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -511,7 +450,9 @@
|
|||||||
<div class="example-step">
|
<div class="example-step">
|
||||||
<div class="step-header">
|
<div class="step-header">
|
||||||
<div class="step-badge">1</div>
|
<div class="step-badge">1</div>
|
||||||
<div class="step-title">Mario riceve verdure da Laura e le invia 10 RIS (va a -10)</div>
|
<div class="step-title">
|
||||||
|
Mario riceve verdure da Laura e le invia 10 RIS (va a -10)
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="step-content">
|
<div class="step-content">
|
||||||
<div class="transaction">
|
<div class="transaction">
|
||||||
@@ -536,7 +477,10 @@
|
|||||||
<div class="example-step">
|
<div class="example-step">
|
||||||
<div class="step-header">
|
<div class="step-header">
|
||||||
<div class="step-badge">2</div>
|
<div class="step-badge">2</div>
|
||||||
<div class="step-title">Laura si fa riparare la bici da Paolo e gli invia 10 RIS, Laura torna così a zero.</div>
|
<div class="step-title">
|
||||||
|
Laura si fa riparare la bici da Paolo e gli invia 10 RIS, Laura
|
||||||
|
torna così a zero.
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="step-content">
|
<div class="step-content">
|
||||||
<div class="transaction">
|
<div class="transaction">
|
||||||
@@ -561,7 +505,9 @@
|
|||||||
<div class="example-step">
|
<div class="example-step">
|
||||||
<div class="step-header">
|
<div class="step-header">
|
||||||
<div class="step-badge">3</div>
|
<div class="step-badge">3</div>
|
||||||
<div class="step-title">Paolo riceve del miele da Mario e gli invia 10 RIS.</div>
|
<div class="step-title">
|
||||||
|
Paolo riceve del miele da Mario e gli invia 10 RIS.
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="step-content">
|
<div class="step-content">
|
||||||
<div class="transaction">
|
<div class="transaction">
|
||||||
@@ -784,7 +730,39 @@
|
|||||||
</li>
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
|
<div class="footer-section">
|
||||||
|
<h4>Menu</h4>
|
||||||
|
<ul>
|
||||||
|
<template
|
||||||
|
v-for="(myitemmenu, ind) in static_data.routes"
|
||||||
|
:key="ind"
|
||||||
|
>
|
||||||
|
<li
|
||||||
|
v-if="
|
||||||
|
myitemmenu.infooter &&
|
||||||
|
tools.visumenu(myitemmenu) &&
|
||||||
|
!myitemmenu.solotitle
|
||||||
|
"
|
||||||
|
>
|
||||||
|
<router-link
|
||||||
|
:to="myitemmenu.path"
|
||||||
|
custom
|
||||||
|
v-slot="{ navigate }"
|
||||||
|
>
|
||||||
|
<span
|
||||||
|
class="footer_link"
|
||||||
|
@click="navigate"
|
||||||
|
@keypress.enter="navigate"
|
||||||
|
role="link"
|
||||||
|
>
|
||||||
|
<span v-if="myitemmenu.level_child > 0"> </span>
|
||||||
|
{{ tools.getLabelByItem(myitemmenu) }}
|
||||||
|
</span>
|
||||||
|
</router-link>
|
||||||
|
</li>
|
||||||
|
</template>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
<div class="footer-section">
|
<div class="footer-section">
|
||||||
<h4>Contatti</h4>
|
<h4>Contatti</h4>
|
||||||
<ul class="footer-links">
|
<ul class="footer-links">
|
||||||
|
|||||||
@@ -175,6 +175,7 @@ export default defineComponent({
|
|||||||
formatDate,
|
formatDate,
|
||||||
invitaStore,
|
invitaStore,
|
||||||
cancellaMessaggioSalvato,
|
cancellaMessaggioSalvato,
|
||||||
|
tools,
|
||||||
};
|
};
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -27,7 +27,7 @@
|
|||||||
>
|
>
|
||||||
{{ invitaStore.contatoreInvitiRiusciti }} inviati
|
{{ invitaStore.contatoreInvitiRiusciti }} inviati
|
||||||
</q-chip>
|
</q-chip>
|
||||||
<q-chip
|
<!--<q-chip
|
||||||
v-if="invitaStore.percentualeSuccesso > 0"
|
v-if="invitaStore.percentualeSuccesso > 0"
|
||||||
color="white"
|
color="white"
|
||||||
text-color="primary"
|
text-color="primary"
|
||||||
@@ -35,7 +35,7 @@
|
|||||||
class="q-mx-xs"
|
class="q-mx-xs"
|
||||||
>
|
>
|
||||||
{{ invitaStore.percentualeSuccesso }}% successo
|
{{ invitaStore.percentualeSuccesso }}% successo
|
||||||
</q-chip>
|
</q-chip>-->
|
||||||
</div>
|
</div>
|
||||||
</q-card-section>
|
</q-card-section>
|
||||||
|
|
||||||
@@ -188,7 +188,7 @@
|
|||||||
class="q-mr-xs"
|
class="q-mr-xs"
|
||||||
/>
|
/>
|
||||||
<span class="text-grey-8">
|
<span class="text-grey-8">
|
||||||
Il tuo amico riceverà un link per registrarsi all'app
|
Riceverai sul {{ tools.getBotName() }} il messaggio da inoltrare alla persona amica.
|
||||||
</span>
|
</span>
|
||||||
</div>
|
</div>
|
||||||
</q-card-section>
|
</q-card-section>
|
||||||
|
|||||||
@@ -1,32 +1,240 @@
|
|||||||
|
// LandingFooter.scss - VERSIONE MIGLIORATA (mantiene tutto il codice originale)
|
||||||
|
|
||||||
|
// ==========================================
|
||||||
|
// VARIABLES
|
||||||
|
// ==========================================
|
||||||
$grayshadow: #555;
|
$grayshadow: #555;
|
||||||
|
$textcol: #9caf88; // Primary color verde oliva
|
||||||
|
$textcol_scuro: #6b8e23; // Primary dark
|
||||||
|
$footer-bg: linear-gradient(180deg, #2c3e50 95%, #FFF);
|
||||||
|
$footer-text: rgba(255, 255, 255, 0.85);
|
||||||
|
$footer-heading: rgba(255, 255, 255, 0.95);
|
||||||
|
|
||||||
$textcol: blue;
|
// ==========================================
|
||||||
$textcol_scuro: darkblue;
|
// FOOTER PRINCIPALE
|
||||||
|
// ==========================================
|
||||||
|
|
||||||
.landing__footer {
|
.landing__footer {
|
||||||
//background: -webkit-gradient(linear, left top, left bottom, color-stop(65%, rgba(0, 0, 0, .1)), to(#000));
|
background: $footer-bg;
|
||||||
background: linear-gradient(180deg, #061f5c 95%, #FFF);
|
|
||||||
padding-top: 3.5rem !important;
|
padding-top: 3.5rem !important;
|
||||||
padding-bottom: 3.5rem !important;
|
padding-bottom: 3.5rem !important;
|
||||||
padding-left: 1.25rem;
|
padding-left: 1.25rem;
|
||||||
padding-right: 1.25rem;
|
padding-right: 1.25rem;
|
||||||
color: #9f9f9f;
|
color: $footer-text;
|
||||||
}
|
}
|
||||||
|
|
||||||
.icon_contact:hover {
|
// ==========================================
|
||||||
color: blue;
|
// SOCIAL ICONS
|
||||||
border-color: white;
|
// ==========================================
|
||||||
border-width: .0625rem;
|
.icon_contact {
|
||||||
|
font-size: 1.8rem;
|
||||||
|
color: $footer-text;
|
||||||
|
transition: all 0.3s ease;
|
||||||
|
margin: 0 0.5rem;
|
||||||
|
|
||||||
|
&:hover {
|
||||||
|
color: $textcol;
|
||||||
|
transform: translateY(-4px) scale(1.2);
|
||||||
|
filter: drop-shadow(0 4px 8px rgba(156, 175, 136, 0.4));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.landing__footer-icons {
|
||||||
|
margin-top: 1rem;
|
||||||
|
margin-bottom: 1rem;
|
||||||
|
|
||||||
|
a {
|
||||||
|
display: inline-flex;
|
||||||
|
align-items: center;
|
||||||
|
gap: 0.5rem;
|
||||||
|
|
||||||
|
.text-h5 {
|
||||||
|
color: $footer-heading;
|
||||||
|
font-size: 1rem;
|
||||||
|
font-weight: 600;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// ==========================================
|
||||||
|
// CONTATTI
|
||||||
|
// ==========================================
|
||||||
|
.mycontacts_title {
|
||||||
|
text-shadow: 0.125rem 0.125rem 0.25rem rgba(0, 0, 0, 0.5);
|
||||||
|
font-weight: 700;
|
||||||
|
color: $footer-heading;
|
||||||
|
letter-spacing: 0.05rem;
|
||||||
|
font-size: 1.2rem;
|
||||||
|
margin-bottom: 1rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.mycontacts_email {
|
||||||
|
text-shadow: 0.125rem 0.125rem 0.25rem rgba(0, 0, 0, 0.5);
|
||||||
|
font-weight: 600;
|
||||||
|
color: $footer-text;
|
||||||
|
transition: color 0.3s ease;
|
||||||
|
|
||||||
|
&:hover {
|
||||||
|
color: $textcol;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.mycontacts_cell {
|
||||||
|
text-shadow: 0.125rem 0.125rem 0.25rem rgba(0, 0, 0, 0.5);
|
||||||
|
font-weight: 700;
|
||||||
|
color: $textcol;
|
||||||
|
font-size: 1.3rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.mycontacts_text {
|
||||||
|
font-size: 1rem;
|
||||||
|
color: $footer-text;
|
||||||
|
letter-spacing: normal !important;
|
||||||
|
line-height: 1.6;
|
||||||
|
}
|
||||||
|
|
||||||
|
.mycontacts_address {
|
||||||
|
font-size: 1rem;
|
||||||
|
color: $footer-text;
|
||||||
|
line-height: 1.6;
|
||||||
|
margin-top: 0.5rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.mycontacts {
|
||||||
|
color: $footer-text;
|
||||||
|
letter-spacing: 0.05rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
// ==========================================
|
||||||
|
// BUTTONS
|
||||||
|
// ==========================================
|
||||||
|
.margin_buttons_footer {
|
||||||
|
margin: -4px -4px;
|
||||||
|
|
||||||
|
> * {
|
||||||
|
margin: 4px 8px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.q-btn {
|
||||||
|
transition: all 0.3s ease;
|
||||||
|
|
||||||
|
&:hover {
|
||||||
|
transform: translateY(-2px);
|
||||||
|
box-shadow: 0 4px 12px rgba(0, 0, 0, 0.3);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.margin_buttons {
|
||||||
|
margin-top: 1rem;
|
||||||
|
margin-bottom: 1rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.margin_buttons_x {
|
||||||
|
margin-bottom: 0.8rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
// ==========================================
|
||||||
|
// FOOTER LINKS
|
||||||
|
// ==========================================
|
||||||
|
.footer_link {
|
||||||
|
font-size: 1rem;
|
||||||
|
color: $footer-text;
|
||||||
|
text-decoration: none;
|
||||||
|
transition: all 0.3s ease;
|
||||||
|
display: inline-block;
|
||||||
|
cursor: pointer;
|
||||||
|
|
||||||
|
&:hover {
|
||||||
|
color: $textcol;
|
||||||
|
transform: translateX(4px);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// ==========================================
|
||||||
|
// LINK UTILI SECTION (NUOVA)
|
||||||
|
// ==========================================
|
||||||
|
.footer-links-section {
|
||||||
|
padding: 2rem 1rem;
|
||||||
|
background: rgba(0, 0, 0, 0.2);
|
||||||
|
border-radius: 12px;
|
||||||
|
margin-top: 2rem;
|
||||||
|
|
||||||
|
h4 {
|
||||||
|
font-size: 1.3rem;
|
||||||
|
font-weight: 700;
|
||||||
|
color: $textcol;
|
||||||
|
margin-bottom: 1.5rem;
|
||||||
|
text-transform: uppercase;
|
||||||
|
letter-spacing: 1px;
|
||||||
|
border-bottom: 2px solid $textcol;
|
||||||
|
padding-bottom: 0.5rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.footer-links {
|
||||||
|
list-style: none;
|
||||||
|
padding: 0;
|
||||||
|
margin: 0;
|
||||||
|
display: grid;
|
||||||
|
grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));
|
||||||
|
gap: 1rem;
|
||||||
|
|
||||||
|
li {
|
||||||
|
margin-bottom: 0.8rem;
|
||||||
|
|
||||||
|
a {
|
||||||
|
color: $footer-text;
|
||||||
|
text-decoration: none;
|
||||||
|
transition: all 0.3s ease;
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
gap: 0.5rem;
|
||||||
|
padding: 0.5rem;
|
||||||
|
border-radius: 6px;
|
||||||
|
|
||||||
|
&:hover {
|
||||||
|
color: $textcol;
|
||||||
|
background: rgba(156, 175, 136, 0.1);
|
||||||
|
transform: translateX(4px);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// ==========================================
|
||||||
|
// LOGO
|
||||||
|
// ==========================================
|
||||||
|
.logo {
|
||||||
|
filter: drop-shadow(0 2px 8px rgba(0, 0, 0, 0.3));
|
||||||
|
margin-bottom: 1rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
// ==========================================
|
||||||
|
// STICKY BUTTONS
|
||||||
|
// ==========================================
|
||||||
|
.mybtn_sticky {
|
||||||
|
box-shadow: 0 4px 12px rgba(0, 0, 0, 0.3);
|
||||||
|
transition: all 0.3s ease;
|
||||||
|
|
||||||
|
&:hover {
|
||||||
|
transform: scale(1.1);
|
||||||
|
box-shadow: 0 6px 16px rgba(0, 0, 0, 0.4);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// ==========================================
|
||||||
|
// MISC
|
||||||
|
// ==========================================
|
||||||
.doc-img {
|
.doc-img {
|
||||||
max-width: 100%;
|
max-width: 100%;
|
||||||
|
border-radius: 8px;
|
||||||
|
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.2);
|
||||||
}
|
}
|
||||||
|
|
||||||
.mylist {
|
.mylist {
|
||||||
background: #3fdaff;
|
background: $textcol;
|
||||||
padding-left: 1.25rem;
|
padding-left: 1.25rem;
|
||||||
|
border-radius: 6px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.clgutter {
|
.clgutter {
|
||||||
@@ -34,17 +242,42 @@ $textcol_scuro: darkblue;
|
|||||||
padding: .62rem;
|
padding: .62rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.copyrights {
|
||||||
|
color: rgba(255, 255, 255, 0.6);
|
||||||
|
letter-spacing: 0.05rem;
|
||||||
|
font-size: 0.9rem;
|
||||||
|
text-align: center;
|
||||||
|
margin-top: 2rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.custom-caption {
|
||||||
|
text-align: center;
|
||||||
|
padding: .75rem;
|
||||||
|
color: $textcol;
|
||||||
|
background-color: rgba(0, 0, 0, .5);
|
||||||
|
border-radius: 6px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.links {
|
||||||
|
color: $footer-text;
|
||||||
|
text-decoration: none;
|
||||||
|
transition: color 0.3s ease;
|
||||||
|
|
||||||
|
&:hover {
|
||||||
|
color: $textcol;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// ==========================================
|
||||||
|
// RESPONSIVE
|
||||||
|
// ==========================================
|
||||||
@media (max-width: 718px) {
|
@media (max-width: 718px) {
|
||||||
// PER VERSIONE MOBILE
|
|
||||||
|
|
||||||
.landing__hero {
|
.landing__hero {
|
||||||
text-align: center
|
text-align: center;
|
||||||
}
|
}
|
||||||
|
|
||||||
.landing__header {
|
.landing__header {
|
||||||
height: 7vh
|
height: 7vh;
|
||||||
}
|
}
|
||||||
|
|
||||||
.clgutter {
|
.clgutter {
|
||||||
@@ -55,26 +288,26 @@ $textcol_scuro: darkblue;
|
|||||||
.landing__hero .text-h1 {
|
.landing__hero .text-h1 {
|
||||||
font-size: 3rem;
|
font-size: 3rem;
|
||||||
line-height: 3.05rem;
|
line-height: 3.05rem;
|
||||||
margin-bottom: 1.5rem
|
margin-bottom: 1.5rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
.landing>section.padding {
|
.landing > section.padding {
|
||||||
padding: 2.5rem 1rem;
|
padding: 2.5rem 1rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
.landing>section.padding_testo {
|
.landing > section.padding_testo {
|
||||||
padding-top: 1.25rem;
|
padding-top: 1.25rem;
|
||||||
padding-bottom: 1rem;
|
padding-bottom: 1rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
.landing>section.padding_gallery {
|
.landing > section.padding_gallery {
|
||||||
padding-top: 3.125rem;
|
padding-top: 3.125rem;
|
||||||
padding-bottom: 5.625rem;
|
padding-bottom: 5.625rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
.landing__features h4,
|
.landing__features h4,
|
||||||
.landing__features h6 {
|
.landing__features h6 {
|
||||||
margin: 1.25rem 0
|
margin: 1.25rem 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
h4 {
|
h4 {
|
||||||
@@ -94,7 +327,7 @@ $textcol_scuro: darkblue;
|
|||||||
.landing__hero-btns {
|
.landing__hero-btns {
|
||||||
-webkit-box-pack: center;
|
-webkit-box-pack: center;
|
||||||
-ms-flex-pack: center;
|
-ms-flex-pack: center;
|
||||||
justify-content: center
|
justify-content: center;
|
||||||
}
|
}
|
||||||
|
|
||||||
.q-col-gutter-sm {
|
.q-col-gutter-sm {
|
||||||
@@ -104,72 +337,115 @@ $textcol_scuro: darkblue;
|
|||||||
.text-vers {
|
.text-vers {
|
||||||
font-size: 0.6rem;
|
font-size: 0.6rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Mobile optimizations per footer
|
||||||
|
.landing__footer {
|
||||||
|
padding-left: 0.75rem;
|
||||||
|
padding-right: 0.75rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.footer-links-section {
|
||||||
|
.footer-links {
|
||||||
|
grid-template-columns: 1fr;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.icon_contact {
|
||||||
|
font-size: 1.5rem;
|
||||||
|
margin: 0 0.3rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.mycontacts_cell {
|
||||||
|
font-size: 1.1rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.landing__footer-icons a {
|
||||||
|
flex-wrap: wrap;
|
||||||
|
justify-content: center;
|
||||||
|
|
||||||
|
.text-h5 {
|
||||||
|
font-size: 0.9rem;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.custom-caption {
|
@media (max-width: 480px) {
|
||||||
text-align: center;
|
.footer-links-section {
|
||||||
padding: .75rem;
|
padding: 1.5rem 0.75rem;
|
||||||
color: $textcol;
|
|
||||||
background-color: rgba(0, 0, 0, .3);
|
h4 {
|
||||||
|
font-size: 1.1rem;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.mycontacts_title {
|
||||||
|
font-size: 1.1rem;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.mycontacts {
|
// ==========================================
|
||||||
color: gray;
|
// MIGLIORAMENTI LAYOUT COLONNE
|
||||||
letter-spacing: 0.078rem;
|
// ==========================================
|
||||||
|
|
||||||
|
// Gutter migliorato
|
||||||
|
.landing__footer {
|
||||||
|
.q-col-gutter-md {
|
||||||
|
> div {
|
||||||
|
padding-bottom: 1.5rem;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.copyrights {
|
// Footer Links Section - aggiustamenti
|
||||||
color: gray;
|
.footer-links-section {
|
||||||
letter-spacing: 0.078rem;
|
padding: 1rem 0;
|
||||||
|
|
||||||
|
h4 {
|
||||||
|
text-align: left;
|
||||||
|
}
|
||||||
|
|
||||||
|
.footer-links {
|
||||||
|
text-align: left;
|
||||||
|
|
||||||
|
li {
|
||||||
|
text-align: left;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.mycontacts_title {
|
// ==========================================
|
||||||
text-shadow: 0.125rem 0.125rem 0.125rem #555;
|
// RESPONSIVE MIGLIORATO
|
||||||
font-weight: bold;
|
// ==========================================
|
||||||
color: #999;
|
@media (max-width: 1023px) and (min-width: 600px) {
|
||||||
letter-spacing: 0.125rem;
|
// Tablet: 2 colonne
|
||||||
|
.landing__footer {
|
||||||
|
.col-md-3 {
|
||||||
|
margin-bottom: 1.5rem;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.mycontacts_email {
|
@media (max-width: 599px) {
|
||||||
text-shadow: 0.125rem 0.125rem 0.125rem #555;
|
// Mobile: 1 colonna, tutto centrato
|
||||||
font-weight: bold;
|
.landing__footer {
|
||||||
color: #999;
|
text-align: center;
|
||||||
}
|
|
||||||
|
.col-12 {
|
||||||
.mycontacts_cell {
|
margin-bottom: 2rem;
|
||||||
text-shadow: 0.125rem 0.125rem 0.125rem #555;
|
}
|
||||||
font-weight: bold;
|
}
|
||||||
color: #999;
|
|
||||||
font-size: 1.25rem;
|
.footer-links-section {
|
||||||
}
|
h4 {
|
||||||
|
text-align: center;
|
||||||
.mycontacts_text {
|
}
|
||||||
font-size: 1rem;
|
|
||||||
color: #999;
|
.footer-links {
|
||||||
letter-spacing: normal !important;
|
text-align: center;
|
||||||
}
|
|
||||||
|
li {
|
||||||
.footer_link {
|
text-align: center;
|
||||||
font-size: 1rem;
|
}
|
||||||
color: gray;
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.footer_link:hover {
|
|
||||||
color: white;
|
|
||||||
cursor: pointer;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
.margin_buttons_footer {
|
|
||||||
margin: -4px -4px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.margin_buttons_footer>* {
|
|
||||||
margin: 4px 8px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.mycontacts_address {
|
|
||||||
font-size: 1rem;
|
|
||||||
color: gray;
|
|
||||||
}
|
}
|
||||||
@@ -87,15 +87,6 @@
|
|||||||
class="q-icon fab fa-telegram icon_contact links"
|
class="q-icon fab fa-telegram icon_contact links"
|
||||||
></i
|
></i
|
||||||
></a>
|
></a>
|
||||||
|
|
||||||
<!--<a href="" target="_blank"><i aria-hidden="true" class="q-icon fab fa-github"> </i></a>-->
|
|
||||||
<!--<a href="https://twitter.com/" target="_blank"><i aria-hidden="true" class="q-icon fab fa-twitter"> </i></a>-->
|
|
||||||
<!--<a href="https://discord.gg/5TDhbDg" target="_blank"><i aria-hidden="true"-->
|
|
||||||
<!--class="q-icon fab fa-discord"> </i></a><a-->
|
|
||||||
<!--href="https://forum.quasar-framework.org/" target="_blank"><i aria-hidden="true"-->
|
|
||||||
<!--class="q-icon fas fa-comments"> </i></a><a-->
|
|
||||||
<!--href="https://www.patreon.com/quasarframework" target="_blank"><i aria-hidden="true"-->
|
|
||||||
<!--class="q-icon fab fa-patreon"> </i></a>-->
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@@ -107,9 +98,6 @@
|
|||||||
>
|
>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<!--<div class="q-mt-xs copyrights">-->
|
|
||||||
<!--<p class="mycontacts_text" v-html="t('homepage.copyrights')"></p>-->
|
|
||||||
<!--</div>-->
|
|
||||||
</div>
|
</div>
|
||||||
<div class="col-12 col-sm-4">
|
<div class="col-12 col-sm-4">
|
||||||
<p class="mycontacts_title q-mt-sm">{{ t('homepage.titlecontatti') }}:</p>
|
<p class="mycontacts_title q-mt-sm">{{ t('homepage.titlecontatti') }}:</p>
|
||||||
@@ -283,7 +271,7 @@
|
|||||||
</div>
|
</div>
|
||||||
</section>
|
</section>
|
||||||
<q-page-sticky
|
<q-page-sticky
|
||||||
v-if="site.whatsapp_home"
|
v-if="site.contacts.whatsapp_home"
|
||||||
position="bottom-right"
|
position="bottom-right"
|
||||||
:offset="[18, 78]"
|
:offset="[18, 78]"
|
||||||
>
|
>
|
||||||
|
|||||||
@@ -63,6 +63,12 @@
|
|||||||
label="Presente nel menu"
|
label="Presente nel menu"
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
|
<div class="col-auto">
|
||||||
|
<q-toggle
|
||||||
|
v-model="draft.showFooter"
|
||||||
|
label="Mostra Footer"
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
<div class="col-auto">
|
<div class="col-auto">
|
||||||
<q-toggle
|
<q-toggle
|
||||||
v-model="draft.onlyif_logged"
|
v-model="draft.onlyif_logged"
|
||||||
|
|||||||
@@ -62,6 +62,7 @@
|
|||||||
:depth="0"
|
:depth="0"
|
||||||
@select="selectedKey = element.__key"
|
@select="selectedKey = element.__key"
|
||||||
@delete="removePage(element.__key)"
|
@delete="removePage(element.__key)"
|
||||||
|
@edit="editPage(element.__key)"
|
||||||
@open="openPage(element.__key)"
|
@open="openPage(element.__key)"
|
||||||
/>
|
/>
|
||||||
</template>
|
</template>
|
||||||
|
|||||||
@@ -1,9 +1,9 @@
|
|||||||
const msg_website_it = {
|
const msg_website_it = {
|
||||||
ws: {
|
ws: {
|
||||||
sitename: 'RISO',
|
sitename: 'Gruppo Macro',
|
||||||
siteshortname: 'RISO',
|
siteshortname: 'Gruppo Macro',
|
||||||
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.',
|
description: '',
|
||||||
keywords: 'riso, piattaforma di scambio, rete italiana scambio orizzontale, riso app, riso piattaforma, scambio e baratto, momenta RIS',
|
keywords: '',
|
||||||
},
|
},
|
||||||
hours: {
|
hours: {
|
||||||
descr: 'Descrizione',
|
descr: 'Descrizione',
|
||||||
@@ -16,29 +16,20 @@ const msg_website_it = {
|
|||||||
pages: {
|
pages: {
|
||||||
home: 'Home',
|
home: 'Home',
|
||||||
profile: 'Profilo',
|
profile: 'Profilo',
|
||||||
|
install_site: 'Installa Sito',
|
||||||
profile2: 'ProfiloU',
|
profile2: 'ProfiloU',
|
||||||
mypage2: 'mypage2',
|
mypage2: 'mypage2',
|
||||||
myservice2: 'myservice2',
|
myservice2: 'myservice2',
|
||||||
myhosps2: 'myhosps2',
|
myhosps2: 'myhosps2',
|
||||||
mygood2: 'mygood2',
|
mygood2: 'mygood2',
|
||||||
|
catalogo: 'Catalogo',
|
||||||
fundraising: 'Sostieni il Progetto',
|
fundraising: 'Sostieni il Progetto',
|
||||||
notifs: 'Configura le Notifiche',
|
notifs: 'Configura le Notifiche',
|
||||||
unsubscribe: 'Disiscriviti',
|
unsubscribe: 'Disiscriviti',
|
||||||
|
unsubscribe_user: 'Disiscriviti User',
|
||||||
test: 'Test',
|
test: 'Test',
|
||||||
projects: 'Progetti',
|
projects: 'Progetti',
|
||||||
report: 'Report Ore',
|
report: 'Report Ore',
|
||||||
producer: 'Produttore',
|
|
||||||
orderinfo: 'Ordini Effettuati',
|
|
||||||
products: 'Prodotti',
|
|
||||||
productslist: 'Lista Prodotti',
|
|
||||||
collabora: 'Collabora',
|
|
||||||
storehouses: 'Magazzino',
|
|
||||||
departments: 'Uffici',
|
|
||||||
orders: 'Ordini Ricevuti',
|
|
||||||
orders2: 'Ordini Ricevuti',
|
|
||||||
sharewithus: 'Condividi con Noi',
|
|
||||||
checkout: 'Carrello',
|
|
||||||
payment: 'Pagamenti',
|
|
||||||
regok: 'Registrazione Confermata',
|
regok: 'Registrazione Confermata',
|
||||||
presentazione: 'Presentazione',
|
presentazione: 'Presentazione',
|
||||||
presentazione2: 'Presentazione',
|
presentazione2: 'Presentazione',
|
||||||
@@ -84,14 +75,12 @@ const msg_website_it = {
|
|||||||
eventodef: 'Evento:',
|
eventodef: 'Evento:',
|
||||||
prova: 'prova',
|
prova: 'prova',
|
||||||
dbop: 'Operazioni',
|
dbop: 'Operazioni',
|
||||||
|
dbopmacro: 'Operazioni Macro',
|
||||||
projall: 'Comunitari',
|
projall: 'Comunitari',
|
||||||
groups: 'Lista Gruppi',
|
groups: 'Lista Gruppi',
|
||||||
projectsShared: 'Condivisi da me',
|
projectsShared: 'Condivisi da me',
|
||||||
myprojects: 'Privati',
|
myprojects: 'Privati',
|
||||||
favproj: 'Favoriti',
|
favproj: 'Favoriti',
|
||||||
admin_ecommerce: 'ECommerce',
|
|
||||||
ecommerce: 'Prodotti',
|
|
||||||
ecommerce_menu: 'ECommerce1',
|
|
||||||
hours: 'Ore',
|
hours: 'Ore',
|
||||||
department: 'Uffici',
|
department: 'Uffici',
|
||||||
title: 'Titolo',
|
title: 'Titolo',
|
||||||
@@ -120,16 +109,11 @@ const msg_website_it = {
|
|||||||
onlyif_logged: 'Solo se Loggati',
|
onlyif_logged: 'Solo se Loggati',
|
||||||
only_residenti: 'Solo Residenti',
|
only_residenti: 'Solo Residenti',
|
||||||
only_consiglio: 'Solo Consiglieri',
|
only_consiglio: 'Solo Consiglieri',
|
||||||
|
only_collab: 'Solo Collaboratori',
|
||||||
color: 'Colore',
|
color: 'Colore',
|
||||||
mainMenu: 'Menu Principale',
|
|
||||||
subtitle: 'Sottotitolo',
|
|
||||||
lang: 'Lingua',
|
|
||||||
keywords: 'Parole Chiave',
|
|
||||||
desctiption: 'Descrizione',
|
|
||||||
heightimg: 'Altezza Immagine',
|
|
||||||
},
|
},
|
||||||
msg: {
|
msg: {
|
||||||
myAppName: 'Riso',
|
myAppName: 'Più che Buono',
|
||||||
myAppDescription: 'Il primo Vero Social Libero, Equo e Solidale, dove Vive Consapevolezza e Aiuto Comunitario. Gratuito',
|
myAppDescription: 'Il primo Vero Social Libero, Equo e Solidale, dove Vive Consapevolezza e Aiuto Comunitario. Gratuito',
|
||||||
underconstruction: 'App in costruzione...',
|
underconstruction: 'App in costruzione...',
|
||||||
myDescriz: '',
|
myDescriz: '',
|
||||||
@@ -188,7 +172,18 @@ const msg_website_it = {
|
|||||||
descr: '<ul class="mylist" style="padding-left: 20px;">'
|
descr: '<ul class="mylist" style="padding-left: 20px;">'
|
||||||
+ '<li>📱<strong>Condividendo la APP</strong> a tutti coloro che vogliono far parte insieme della crescita e sviluppo di una Nuova Era</li>'
|
+ '<li>📱<strong>Condividendo la APP</strong> a tutti coloro che vogliono far parte insieme della crescita e sviluppo di una Nuova Era</li>'
|
||||||
+ '<li>👥 Aiutando a creare Gruppi Territoriali nella vostra città, impegnandosi a realizzare progetti per il Bene Comune, in onore ai principi Amorevoli e di condivisione.</li>'
|
+ '<li>👥 Aiutando a creare Gruppi Territoriali nella vostra città, impegnandosi a realizzare progetti per il Bene Comune, in onore ai principi Amorevoli e di condivisione.</li>'
|
||||||
+ '<li>🌱 Sostenendo le persone attorno a voi, e rispettando la nostra vera Casa: Madre Natura e Tutti gli Esseri Viventi. ❤️</li>' +
|
+ '<li>🌱 Sostenendo le persone attorno a voi, e rispettando la nostra vera Casa: Madre Natura e Tutti gli Esseri Viventi. ❤️</li>'
|
||||||
|
+ '<li>👨🏻💻 Con una <strong>piccola donazione</strong> per le spese dei Server, manutenzione e per i continui sviluppi e miglioramenti</li></ul>' +
|
||||||
|
'1) Tramite <strong><a href="https://paypal.me/paoloarena" target="_blank">Paypal</a></strong>:<br>' +
|
||||||
|
'<br>2) Tramite <strong>Satispay</strong>: <a href="https://www.satispay.com/app/match/link/money-box/S6Y-SVN--62712D42-35B0-4BB9-8511-410C2AB8CD45" target="_blank">Clicca qui</a><br>' +
|
||||||
|
'<div style="font-size: 1rem; background-color: white; color: blue; border: solid 2px #f00; margin: 5px; padding: 5px; border-radius: 10px; " ' +
|
||||||
|
'class="row justify-around">' +
|
||||||
|
'Se ancora non hai Satispay <a href="https://www.satispay.com/promo/PAOLOARENA4">Richiedila cliccando qui</a></br>' +
|
||||||
|
'</div>' +
|
||||||
|
'<br>3) Tramite <strong>Bonifico Bancario</strong>:<br>' +
|
||||||
|
'(Scrivi a Surya (<a href="https://t.me/surya1977">@surya1977</a>) per le coordinate</br>' +
|
||||||
|
'' +
|
||||||
|
'4) In alternativa scegli tu una forma di Dono <br />' +
|
||||||
'Grazie Mille per l\'Aiuto ed il Supporto' +
|
'Grazie Mille per l\'Aiuto ed il Supporto' +
|
||||||
'<br>',
|
'<br>',
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
/* RISO APP
|
/* GRUPPOMACRO APP
|
||||||
*/
|
*/
|
||||||
import type {
|
import {
|
||||||
IListRoutes,
|
IListRoutes,
|
||||||
ILang,
|
ILang,
|
||||||
IPreloadImages,
|
IPreloadImages,
|
||||||
@@ -44,6 +44,7 @@ const firstPage = {
|
|||||||
infooter: true,
|
infooter: true,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
function getDynamicPages(site: ISites): IListRoutes[] {
|
function getDynamicPages(site: ISites): IListRoutes[] {
|
||||||
|
|
||||||
const baseroutes: IListRoutes[] = [
|
const baseroutes: IListRoutes[] = [
|
||||||
@@ -70,34 +71,11 @@ function getDynamicPages(site: ISites): IListRoutes[] {
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
active: true,
|
active: true,
|
||||||
order: 12,
|
order: 400,
|
||||||
path: '/goods',
|
path: '/test-lungo',
|
||||||
materialIcon: 'fas fa-tshirt',
|
materialIcon: 'fas fa-test',
|
||||||
name: 'mypages.goods',
|
name: 'mypages.test_lungo',
|
||||||
component: () => import('@src/root/goods/goods.vue'),
|
component: () => import('@src/views/testLungo/testLungo.vue'),
|
||||||
meta: { requiresAuth: true },
|
|
||||||
inmenu: true,
|
|
||||||
infooter: true,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
active: true,
|
|
||||||
order: 15,
|
|
||||||
path: '/services',
|
|
||||||
materialIcon: 'fas fa-house-user',
|
|
||||||
name: 'mypages.services',
|
|
||||||
component: () => import('@src/root/services/services.vue'),
|
|
||||||
meta: { requiresAuth: true },
|
|
||||||
inmenu: true,
|
|
||||||
infooter: true,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
active: true,
|
|
||||||
order: 15,
|
|
||||||
path: '/activities',
|
|
||||||
materialIcon: 'fas fa-house-user',
|
|
||||||
name: 'mypages.activities',
|
|
||||||
component: () => import('@src/root/activities/activities.vue'),
|
|
||||||
meta: { requiresAuth: true },
|
|
||||||
inmenu: false,
|
inmenu: false,
|
||||||
infooter: false,
|
infooter: false,
|
||||||
},
|
},
|
||||||
@@ -112,17 +90,6 @@ function getDynamicPages(site: ISites): IListRoutes[] {
|
|||||||
inmenu: false,
|
inmenu: false,
|
||||||
infooter: false,
|
infooter: false,
|
||||||
},
|
},
|
||||||
{
|
|
||||||
active: true,
|
|
||||||
order: 15,
|
|
||||||
path: '/hosps',
|
|
||||||
materialIcon: 'fas fa-bed',
|
|
||||||
name: 'mypages.hosp',
|
|
||||||
component: () => import('@src/root/hosp/hosp.vue'),
|
|
||||||
meta: { requiresAuth: true },
|
|
||||||
inmenu: true,
|
|
||||||
infooter: true,
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
active: site.confpages && site.confpages.enableCircuits,
|
active: site.confpages && site.confpages.enableCircuits,
|
||||||
order: 16,
|
order: 16,
|
||||||
@@ -135,7 +102,7 @@ function getDynamicPages(site: ISites): IListRoutes[] {
|
|||||||
infooter: true,
|
infooter: true,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
active: true,
|
active: site.confpages && site.confpages.enableEvents,
|
||||||
order: 20,
|
order: 20,
|
||||||
path: '/events',
|
path: '/events',
|
||||||
materialIcon: 'fas fa-bullhorn',
|
materialIcon: 'fas fa-bullhorn',
|
||||||
@@ -157,7 +124,7 @@ function getDynamicPages(site: ISites): IListRoutes[] {
|
|||||||
infooter: false,
|
infooter: false,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
active: true,
|
active: site.confpages && site.confpages.showProfile,
|
||||||
order: 120,
|
order: 120,
|
||||||
path: '/myprofile',
|
path: '/myprofile',
|
||||||
materialIcon: 'fas fa-user',
|
materialIcon: 'fas fa-user',
|
||||||
@@ -167,19 +134,8 @@ function getDynamicPages(site: ISites): IListRoutes[] {
|
|||||||
inmenu: true,
|
inmenu: true,
|
||||||
infooter: true,
|
infooter: true,
|
||||||
},
|
},
|
||||||
/*{
|
|
||||||
active: true,
|
|
||||||
order: 120,
|
|
||||||
path: '/editprofile',
|
|
||||||
materialIcon: 'fas fa-user',
|
|
||||||
name: 'pages.profile3',
|
|
||||||
// component: () => import('app/src/components/editprofile/editprofile.vue'),
|
|
||||||
meta: { requiresAuth: true },
|
|
||||||
inmenu: false,
|
|
||||||
infooter: false,
|
|
||||||
},*/
|
|
||||||
{
|
{
|
||||||
active: true,
|
active: site.confpages && site.confpages.showiscrittiMenu,
|
||||||
order: 130,
|
order: 130,
|
||||||
path: '/friends',
|
path: '/friends',
|
||||||
materialIcon: 'fas fa-user-friends',
|
materialIcon: 'fas fa-user-friends',
|
||||||
@@ -274,16 +230,6 @@ function getDynamicPages(site: ISites): IListRoutes[] {
|
|||||||
inmenu: false,
|
inmenu: false,
|
||||||
infooter: false,
|
infooter: false,
|
||||||
},
|
},
|
||||||
{
|
|
||||||
active: true,
|
|
||||||
order: 150,
|
|
||||||
path: '/sostieniilprogetto',
|
|
||||||
materialIcon: 'fas fa-hand-holding-heart',
|
|
||||||
name: 'pages.fundraising',
|
|
||||||
component: () => import('@src/root/fundraising/fundraising.vue'),
|
|
||||||
inmenu: false,
|
|
||||||
infooter: false,
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
active: true,
|
active: true,
|
||||||
order: 80,
|
order: 80,
|
||||||
@@ -302,7 +248,7 @@ function getDynamicPages(site: ISites): IListRoutes[] {
|
|||||||
|
|
||||||
export function firstimagehome() {
|
export function firstimagehome() {
|
||||||
|
|
||||||
const img = 'statics/images/background.jpg'
|
let img = 'statics/images/background.jpg'
|
||||||
return img
|
return img
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -857,6 +857,7 @@ export interface IMyScheda {
|
|||||||
idTipologie?: number[]
|
idTipologie?: number[]
|
||||||
idTipoFormato?: number[]
|
idTipoFormato?: number[]
|
||||||
editore?: string[]
|
editore?: string[]
|
||||||
|
editore_escludi?: string[]
|
||||||
argomenti?: string[]
|
argomenti?: string[]
|
||||||
idCollane?: string[]
|
idCollane?: string[]
|
||||||
author?: string
|
author?: string
|
||||||
@@ -910,6 +911,7 @@ export interface IOptCatalogo {
|
|||||||
idTipoFormato?: number[]
|
idTipoFormato?: number[]
|
||||||
Categoria?: string[]
|
Categoria?: string[]
|
||||||
editore?: string[]
|
editore?: string[]
|
||||||
|
editore_escludi?: string[]
|
||||||
argomenti?: string[]
|
argomenti?: string[]
|
||||||
idCollane?: string[]
|
idCollane?: string[]
|
||||||
sort_field?: string
|
sort_field?: string
|
||||||
|
|||||||
@@ -16,21 +16,27 @@
|
|||||||
</div>
|
</div>
|
||||||
<div v-else>
|
<div v-else>
|
||||||
<div v-if="isfinishLoading">
|
<div v-if="isfinishLoading">
|
||||||
<CMyPageElem title="Home" mypath="home"> </CMyPageElem>
|
<CMyPageElem
|
||||||
|
title="Home"
|
||||||
|
mypath="home"
|
||||||
|
>
|
||||||
|
</CMyPageElem>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
<LandingFooter></LandingFooter>
|
||||||
</div>
|
</div>
|
||||||
<div v-else>
|
<div v-else>
|
||||||
<div v-if="isfinishLoading">
|
<div v-if="isfinishLoading">
|
||||||
<CMyPageElem title="Home" mypath="home_logout"> </CMyPageElem>
|
<CMyPageElem
|
||||||
</div>
|
title="Home"
|
||||||
|
mypath="home_logout"
|
||||||
|
>
|
||||||
|
</CMyPageElem>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<LandingFooter></LandingFooter>
|
|
||||||
</q-page>
|
</q-page>
|
||||||
</template>
|
</template>
|
||||||
<script lang="ts" src="./mainview.ts">
|
<script lang="ts" src="./mainview.ts"></script>
|
||||||
</script>
|
|
||||||
<style lang="scss" scoped>
|
<style lang="scss" scoped>
|
||||||
@import './mainview.scss';
|
@import './mainview.scss';
|
||||||
</style>
|
</style>
|
||||||
|
|||||||
@@ -655,6 +655,17 @@ function getRoutesAd(site: ISites) {
|
|||||||
infooter: false,
|
infooter: false,
|
||||||
separator: false
|
separator: false
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
active: true,
|
||||||
|
order: 1005,
|
||||||
|
path: '/invitetoreg/:token',
|
||||||
|
materialIcon: 'how_to_reg',
|
||||||
|
name: 'pages.InvitoReg',
|
||||||
|
component: () => import('@src/views/login/invitoreg/invitoreg.vue'),
|
||||||
|
inmenu: false,
|
||||||
|
infooter: false,
|
||||||
|
separator: false
|
||||||
|
},
|
||||||
{
|
{
|
||||||
active: true,
|
active: true,
|
||||||
order: 1001,
|
order: 1001,
|
||||||
|
|||||||
@@ -10692,7 +10692,7 @@ export const tools = {
|
|||||||
mysize: any,
|
mysize: any,
|
||||||
scheda: ISchedaSingola,
|
scheda: ISchedaSingola,
|
||||||
isX: boolean,
|
isX: boolean,
|
||||||
options: any,
|
options?: any,
|
||||||
add: number = 0
|
add: number = 0
|
||||||
) {
|
) {
|
||||||
if (!mysize) {
|
if (!mysize) {
|
||||||
|
|||||||
@@ -263,34 +263,34 @@ export const useProducts = defineStore('Products', {
|
|||||||
isPubblicato:
|
isPubblicato:
|
||||||
(state: IProductsState) =>
|
(state: IProductsState) =>
|
||||||
(productInfo: IProductInfo): boolean => {
|
(productInfo: IProductInfo): boolean => {
|
||||||
return state.isPubblicatoById(productInfo.idStatoProdotto);
|
return state.isPubblicatoById(productInfo?.idStatoProdotto);
|
||||||
},
|
},
|
||||||
|
|
||||||
isNovita:
|
isNovita:
|
||||||
(state: IProductsState) =>
|
(state: IProductsState) =>
|
||||||
(productInfo: IProductInfo): boolean => {
|
(productInfo: IProductInfo): boolean => {
|
||||||
return state.isNovitaById(productInfo.date_pub);
|
return state.isNovitaById(productInfo?.date_pub);
|
||||||
},
|
},
|
||||||
|
|
||||||
isNonVendibile:
|
isNonVendibile:
|
||||||
(state: IProductsState) =>
|
(state: IProductsState) =>
|
||||||
(productInfo: IProductInfo): boolean => {
|
(productInfo: IProductInfo): boolean => {
|
||||||
return (
|
return (
|
||||||
!state.isPubblicatoById(productInfo.idStatoProdotto) &&
|
!state.isPubblicatoById(productInfo?.idStatoProdotto) &&
|
||||||
!state.isProssimaUscitaById(productInfo.idStatoProdotto)
|
!state.isProssimaUscitaById(productInfo?.idStatoProdotto)
|
||||||
);
|
);
|
||||||
},
|
},
|
||||||
|
|
||||||
isProssimaUscita:
|
isProssimaUscita:
|
||||||
(state: IProductsState) =>
|
(state: IProductsState) =>
|
||||||
(productInfo: IProductInfo): boolean => {
|
(productInfo: IProductInfo): boolean => {
|
||||||
return state.isProssimaUscitaById(productInfo.idStatoProdotto);
|
return state.isProssimaUscitaById(productInfo?.idStatoProdotto);
|
||||||
},
|
},
|
||||||
|
|
||||||
isPrevendita:
|
isPrevendita:
|
||||||
(state: IProductsState) =>
|
(state: IProductsState) =>
|
||||||
(productInfo: IProductInfo): boolean => {
|
(productInfo: IProductInfo): boolean => {
|
||||||
return state.isPrevenditaById(productInfo.idStatoProdotto);
|
return state.isPrevenditaById(productInfo?.idStatoProdotto);
|
||||||
},
|
},
|
||||||
|
|
||||||
getDescrStatiProdottoByIdStatoProdotto:
|
getDescrStatiProdottoByIdStatoProdotto:
|
||||||
|
|||||||
@@ -995,6 +995,9 @@ export const useGlobalStore = defineStore('GlobalStore', {
|
|||||||
const { table } = mydata;
|
const { table } = mydata;
|
||||||
|
|
||||||
try {
|
try {
|
||||||
|
if (shared_consts.TABLES_NON_AGGIORNARE_IN_MEMORIA_PERCHE_DIVERSA_STRUTTURA.includes(table))
|
||||||
|
return;
|
||||||
|
|
||||||
const mylist = this.getListByTable(table!);
|
const mylist = this.getListByTable(table!);
|
||||||
const mykey = fieldsTable.getKeyByTable(table!);
|
const mykey = fieldsTable.getKeyByTable(table!);
|
||||||
|
|
||||||
|
|||||||
@@ -32,9 +32,6 @@ import { CSearchProduct } from '@src/components/CSearchProduct';
|
|||||||
import { CContainerCatalogoCard } from '@src/components/CContainerCatalogoCard';
|
import { CContainerCatalogoCard } from '@src/components/CContainerCatalogoCard';
|
||||||
import { CSelectUserActive } from '@src/components/CSelectUserActive';
|
import { CSelectUserActive } from '@src/components/CSelectUserActive';
|
||||||
|
|
||||||
import html2pdf from 'html2pdf.js';
|
|
||||||
import { saveAs } from 'file-saver';
|
|
||||||
|
|
||||||
import type {
|
import type {
|
||||||
IOptCatalogo,
|
IOptCatalogo,
|
||||||
IDimensioni,
|
IDimensioni,
|
||||||
@@ -1206,7 +1203,7 @@ export default defineComponent({
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
function arraysEqual(arr1, arr2) {
|
function arraysEqual(arr1: any, arr2: any) {
|
||||||
return (
|
return (
|
||||||
Array.isArray(arr1) &&
|
Array.isArray(arr1) &&
|
||||||
Array.isArray(arr2) &&
|
Array.isArray(arr2) &&
|
||||||
@@ -1300,10 +1297,6 @@ export default defineComponent({
|
|||||||
sort_dir: number
|
sort_dir: number
|
||||||
): IProduct[] {
|
): IProduct[] {
|
||||||
if (sort_field) {
|
if (sort_field) {
|
||||||
// console.log('--- Primi 10 elementi INIZIALI:');
|
|
||||||
/*arrprod.slice(0, 15).forEach((product, index) => {
|
|
||||||
console.log(`${index + 1}. ${product.productInfo?.name} (${product.productInfo?.date_pub})`);
|
|
||||||
});*/
|
|
||||||
|
|
||||||
// Crea una copia dell'array per non modificare l'originale
|
// Crea una copia dell'array per non modificare l'originale
|
||||||
const sortedArr = [...arrprod].sort((a: IProduct, b: IProduct) => {
|
const sortedArr = [...arrprod].sort((a: IProduct, b: IProduct) => {
|
||||||
@@ -1367,7 +1360,7 @@ export default defineComponent({
|
|||||||
return { end: true };
|
return { end: true };
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
console.error(e);
|
console.error(e);
|
||||||
return { rec: null, indprod };
|
return { indprod };
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1384,17 +1377,17 @@ export default defineComponent({
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function generatearrProdToViewSorted(
|
async function generatearrProdToViewSorted(
|
||||||
usaprodottiSalvati?: boolean,
|
usaprodottiSalvati?: boolean,
|
||||||
salva?: boolean,
|
salva?: boolean,
|
||||||
salvasudb?: boolean
|
salvasudb?: boolean
|
||||||
) {
|
) {
|
||||||
/*console.log(
|
console.log(
|
||||||
'generatearrProdToViewSorted... usaprodottiSalvati=',
|
'generatearrProdToViewSorted... usaprodottiSalvati=',
|
||||||
usaprodottiSalvati,
|
usaprodottiSalvati,
|
||||||
' salva=',
|
' salva=',
|
||||||
salva
|
salva
|
||||||
);*/
|
);
|
||||||
|
|
||||||
try {
|
try {
|
||||||
// Svuota
|
// Svuota
|
||||||
@@ -1533,7 +1526,7 @@ export default defineComponent({
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (salvasudb) {
|
if (salvasudb) {
|
||||||
salvaListaProdotti(false);
|
await salvaListaProdotti(false);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1544,7 +1537,7 @@ export default defineComponent({
|
|||||||
// console.log('Fine...')
|
// console.log('Fine...')
|
||||||
}
|
}
|
||||||
|
|
||||||
function salvaListaProdotti(ricarica: boolean) {
|
async function salvaListaProdotti(ricarica: boolean) {
|
||||||
// Estrai solo gli ID dei prodotti filtrati
|
// Estrai solo gli ID dei prodotti filtrati
|
||||||
const myarr = [...myCatalog.value.lista_prodotti];
|
const myarr = [...myCatalog.value.lista_prodotti];
|
||||||
const productIds = myarr.map((product) => product._id);
|
const productIds = myarr.map((product) => product._id);
|
||||||
@@ -1556,7 +1549,7 @@ export default defineComponent({
|
|||||||
};
|
};
|
||||||
|
|
||||||
// Salva gli ID dei prodotti nel catalogo
|
// Salva gli ID dei prodotti nel catalogo
|
||||||
tools.saveFieldToServer(
|
await tools.saveFieldToServer(
|
||||||
$q,
|
$q,
|
||||||
'catalogs',
|
'catalogs',
|
||||||
myCatalog.value._id,
|
myCatalog.value._id,
|
||||||
@@ -1566,7 +1559,7 @@ export default defineComponent({
|
|||||||
);
|
);
|
||||||
|
|
||||||
if (ricarica) {
|
if (ricarica) {
|
||||||
generatearrProdToViewSorted(true, false);
|
await generatearrProdToViewSorted(true, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
// lista_Aggiornata();
|
// lista_Aggiornata();
|
||||||
@@ -2376,7 +2369,8 @@ export default defineComponent({
|
|||||||
router.push(path);
|
router.push(path);
|
||||||
}
|
}
|
||||||
|
|
||||||
function updateProducts(arr: any, aggiorna?: boolean) {
|
async function updateProducts(arr: any, aggiorna?: boolean) {
|
||||||
|
console.log('UpdateProducts', arr.length)
|
||||||
if (myCatalog.value && myCatalog.value?.lista_prodotti) {
|
if (myCatalog.value && myCatalog.value?.lista_prodotti) {
|
||||||
if (
|
if (
|
||||||
myCatalog.value.lista_prodotti?.length !== arr.length ||
|
myCatalog.value.lista_prodotti?.length !== arr.length ||
|
||||||
@@ -2387,13 +2381,16 @@ export default defineComponent({
|
|||||||
) {
|
) {
|
||||||
myCatalog.value.lista_prodotti = [...arr];
|
myCatalog.value.lista_prodotti = [...arr];
|
||||||
|
|
||||||
if (!showListaFiltrata.value && !tools.isUtente()) salvaListaProdotti(true);
|
if (!showListaFiltrata.value && !tools.isUtente()) {
|
||||||
else generatearrProdToViewSorted(true, false);
|
await salvaListaProdotti(true);
|
||||||
|
} else {
|
||||||
|
await generatearrProdToViewSorted(true, false);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function addProductToList(element: IProduct, where: string) {
|
async function addProductToList(element: IProduct, where: string) {
|
||||||
console.log('addProductToList', element)
|
console.log('addProductToList', element)
|
||||||
|
|
||||||
if (element) {
|
if (element) {
|
||||||
@@ -2407,7 +2404,7 @@ export default defineComponent({
|
|||||||
if (where === shared_consts.WHERE_INSERT.ONTOP) arr.unshift(element);
|
if (where === shared_consts.WHERE_INSERT.ONTOP) arr.unshift(element);
|
||||||
else if (where === shared_consts.WHERE_INSERT.ONBOTTOM) arr.push(element);
|
else if (where === shared_consts.WHERE_INSERT.ONBOTTOM) arr.push(element);
|
||||||
|
|
||||||
updateProducts(arr, true);
|
await updateProducts(arr, true);
|
||||||
|
|
||||||
addnewProd.value = false;
|
addnewProd.value = false;
|
||||||
}
|
}
|
||||||
@@ -2697,9 +2694,9 @@ export default defineComponent({
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
function convertiProps(obj?: Record<string, string | undefined>, props: string[]) {
|
function convertiProps(obj: Record<string, string | undefined>, myprops: string[]) {
|
||||||
if (!obj) return;
|
if (!obj) return;
|
||||||
props.forEach((prop) => {
|
myprops.forEach((prop) => {
|
||||||
if (obj[prop] !== undefined) obj[prop] = converti(obj[prop]!);
|
if (obj[prop] !== undefined) obj[prop] = converti(obj[prop]!);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -29,9 +29,6 @@ import { CSearchProduct } from '@src/components/CSearchProduct';
|
|||||||
import { CContainerCatalogoCard } from '@src/components/CContainerCatalogoCard';
|
import { CContainerCatalogoCard } from '@src/components/CContainerCatalogoCard';
|
||||||
import { CSelectUserActive } from '@src/components/CSelectUserActive';
|
import { CSelectUserActive } from '@src/components/CSelectUserActive';
|
||||||
|
|
||||||
import html2pdf from 'html2pdf.js';
|
|
||||||
import { saveAs } from 'file-saver';
|
|
||||||
|
|
||||||
import type {
|
import type {
|
||||||
IOptCatalogo,
|
IOptCatalogo,
|
||||||
IDimensioni,
|
IDimensioni,
|
||||||
|
|||||||