- Aggiornate tutte le categorie ottimizzandole.
- Migrazione delle vecchie categ. con quelle nuove. - Create le Categorie e sottocategorie degli Eventi (a parte). - Aggiornato la card dell'Ospitalità
This commit is contained in:
4
.env
4
.env
@@ -1,6 +1,6 @@
|
||||
VITE_APP_VERSION="1.2.85"
|
||||
VITE_APP_VERSION="1.2.86"
|
||||
VITE_LANG_DEFAULT="it"
|
||||
VITE_PAO_APP_ID="KKPPAA5KJK435J3KSS9F9D8S9F8SD98F9SDF"
|
||||
VITE_SERVICE_WORKER_FILE="sw-1.2.85.js"
|
||||
VITE_SERVICE_WORKER_FILE="sw-1.2.86.js"
|
||||
VITE_PROJECT_ID_MAIN="5cc0a13fe5c9d156728f400a"
|
||||
VITE_VUE_ROUTER_MODE="history"
|
||||
0
_LIMBO/grid.html
Normal file
0
_LIMBO/grid.html
Normal file
@@ -10,7 +10,7 @@
|
||||
<meta name="description" content="<%= productDescription %>">
|
||||
<meta name="format-detection" content="telephone=no">
|
||||
<meta name="msapplication-tap-highlight" content="no">
|
||||
<meta name="version" content="1.2.85">
|
||||
<meta name="version" content="1.2.86">
|
||||
<meta name="viewport"
|
||||
content="user-scalable=no, initial-scale=1, maximum-scale=1, minimum-scale=1, width=device-width<% if (ctx.mode.cordova || ctx.mode.capacitor) { %>, viewport-fit=cover<% } %>">
|
||||
|
||||
|
||||
12
package.json
12
package.json
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "riso",
|
||||
"version": "1.2.85",
|
||||
"version": "1.2.86",
|
||||
"productName": "Riso 💚 - Rete Italiana Scambio orizzontale",
|
||||
"description": "Progetto RISO (Rete Italiana Scambio orizzontale) 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.",
|
||||
"author": "Surya",
|
||||
@@ -9,11 +9,11 @@
|
||||
"license": "MIT",
|
||||
"type": "module",
|
||||
"scripts": {
|
||||
"dev": "APP_VERSION='1.2.85' PORT=8084 quasar dev",
|
||||
"dev": "APP_VERSION='1.2.86' PORT=8084 quasar dev",
|
||||
"dev_noCheck": "SKIP_TSC=true quasar dev",
|
||||
"build": "quasar build",
|
||||
"buildpwa": "NODE_ENV=production APP_VERSION='1.2.85' quasar build -m pwa",
|
||||
"buildpwatest": "NODE_ENV=production APP_VERSION='1.2.85' quasar build -m pwa",
|
||||
"buildpwa": "NODE_ENV=production APP_VERSION='1.2.86' quasar build -m pwa",
|
||||
"buildpwatest": "NODE_ENV=production APP_VERSION='1.2.86' quasar build -m pwa",
|
||||
"type-check": "vue-tsc --noEmit",
|
||||
"type-check:watch": "vue-tsc --noEmit --watch",
|
||||
"buildspa": "quasar build -m spa",
|
||||
@@ -21,8 +21,8 @@
|
||||
"lintfile": "eslint --ext .js,.ts,.vue --ignore-path .gitignore ./ > file.out.txt",
|
||||
"lintfileNoJS": "eslint --ext .ts,.vue --ignore-path .gitignore ./ > file.out.txt",
|
||||
"fix": "eslint -c ./eslint.config.js \"./src*/**/*.{ts,js,cjs,mjs,vue}\" --ignore-pattern .gitignore ./ --fix > file.out.txt",
|
||||
"pwa": "NODE_ENV=development PORT=8094 APP_VERSION='1.2.85' quasar dev -m pwa",
|
||||
"spa": "NODE_ENV=development PORT=8084 APP_VERSION='1.2.85' quasar dev",
|
||||
"pwa": "NODE_ENV=development PORT=8094 APP_VERSION='1.2.86' quasar dev -m pwa",
|
||||
"spa": "NODE_ENV=development PORT=8084 APP_VERSION='1.2.86' quasar dev",
|
||||
"debug": "quasar dev --mode debug",
|
||||
"test": "echo \"No test specified\" && exit 0",
|
||||
"generate-sw": "workbox generateSW workbox-config.js",
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "cnm",
|
||||
"version": "1.2.85",
|
||||
"version": "1.2.86",
|
||||
"description": "Comunita Nuovo Mondo",
|
||||
"productName": "ComunitaNuovoMondo",
|
||||
"author": "Surya",
|
||||
@@ -9,7 +9,7 @@
|
||||
"license": "MIT",
|
||||
"type": "module",
|
||||
"scripts": {
|
||||
"dev": "PORT=8083 APP_VERSION='1.2.85' quasar dev",
|
||||
"dev": "PORT=8083 APP_VERSION='1.2.86' quasar dev",
|
||||
"dev_noCheck": "SKIP_TSC=true quasar dev",
|
||||
"build": "quasar build",
|
||||
"buildpwa": "NODE_ENV=production quasar build -m pwa",
|
||||
@@ -21,8 +21,8 @@
|
||||
"lintfile": "eslint --ext .js,.ts,.vue --ignore-path .gitignore ./ > file.out.txt",
|
||||
"lintfileNoJS": "eslint --ext .ts,.vue --ignore-path .gitignore ./ > file.out.txt",
|
||||
"fix": "eslint -c ./eslint.config.js \"./src*/**/*.{ts,js,cjs,mjs,vue}\" --ignore-pattern .gitignore ./ --fix > file.out.txt",
|
||||
"pwa": "NODE_ENV=development PORT=8093 APP_VERSION='1.2.85' quasar dev -m pwa",
|
||||
"spa": "NODE_ENV=development PORT=8083 APP_VERSION='1.2.85' quasar dev",
|
||||
"pwa": "NODE_ENV=development PORT=8093 APP_VERSION='1.2.86' quasar dev -m pwa",
|
||||
"spa": "NODE_ENV=development PORT=8083 APP_VERSION='1.2.86' quasar dev",
|
||||
"debug": "quasar dev --mode debug",
|
||||
"test": "echo \"No test specified\" && exit 0",
|
||||
"generate-sw": "workbox generateSW workbox-config.js",
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "freeplanet",
|
||||
"version": "1.2.85",
|
||||
"version": "1.2.86",
|
||||
"description": "freeplanet",
|
||||
"productName": "freeplanet",
|
||||
"author": "Surya",
|
||||
@@ -9,11 +9,11 @@
|
||||
"license": "MIT",
|
||||
"type": "module",
|
||||
"scripts": {
|
||||
"dev": "PORT=8087 APP_VERSION='1.2.85' quasar dev",
|
||||
"dev": "PORT=8087 APP_VERSION='1.2.86' quasar dev",
|
||||
"dev_noCheck": "SKIP_TSC=true quasar dev",
|
||||
"build": "quasar build",
|
||||
"buildpwa": "NODE_ENV=production APP_VERSION='1.2.85' quasar build -m pwa",
|
||||
"buildpwatest": "NODE_ENV=production APP_VERSION='1.2.85' quasar build -m pwa",
|
||||
"buildpwa": "NODE_ENV=production APP_VERSION='1.2.86' quasar build -m pwa",
|
||||
"buildpwatest": "NODE_ENV=production APP_VERSION='1.2.86' quasar build -m pwa",
|
||||
"type-check": "vue-tsc --noEmit",
|
||||
"type-check:watch": "vue-tsc --noEmit --watch",
|
||||
"buildspa": "quasar build -m spa",
|
||||
@@ -21,8 +21,8 @@
|
||||
"lintfile": "eslint --ext .js,.ts,.vue --ignore-path .gitignore ./ > file.out.txt",
|
||||
"lintfileNoJS": "eslint --ext .ts,.vue --ignore-path .gitignore ./ > file.out.txt",
|
||||
"fix": "eslint -c ./eslint.config.js \"./src*/**/*.{ts,js,cjs,mjs,vue}\" --ignore-pattern .gitignore ./ --fix > file.out.txt",
|
||||
"pwa": "NODE_ENV=development PORT=8097 APP_VERSION='1.2.85' quasar dev -m pwa",
|
||||
"spa": "NODE_ENV=development PORT=8087 APP_VERSION='1.2.85' quasar dev",
|
||||
"pwa": "NODE_ENV=development PORT=8097 APP_VERSION='1.2.86' quasar dev -m pwa",
|
||||
"spa": "NODE_ENV=development PORT=8087 APP_VERSION='1.2.86' quasar dev",
|
||||
"debug": "quasar dev --mode debug",
|
||||
"test": "echo \"No test specified\" && exit 0",
|
||||
"generate-sw": "workbox generateSW workbox-config.js",
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "riso",
|
||||
"version": "1.2.85",
|
||||
"version": "1.2.86",
|
||||
"productName": "Riso 💚 - Rete Italiana Scambio orizzontale",
|
||||
"description": "Progetto RISO (Rete Italiana Scambio orizzontale) 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.",
|
||||
"author": "Surya",
|
||||
@@ -9,11 +9,11 @@
|
||||
"license": "MIT",
|
||||
"type": "module",
|
||||
"scripts": {
|
||||
"dev": "APP_VERSION='1.2.85' PORT=8084 quasar dev",
|
||||
"dev": "APP_VERSION='1.2.86' PORT=8084 quasar dev",
|
||||
"dev_noCheck": "SKIP_TSC=true quasar dev",
|
||||
"build": "quasar build",
|
||||
"buildpwa": "NODE_ENV=production APP_VERSION='1.2.85' quasar build -m pwa",
|
||||
"buildpwatest": "NODE_ENV=production APP_VERSION='1.2.85' quasar build -m pwa",
|
||||
"buildpwa": "NODE_ENV=production APP_VERSION='1.2.86' quasar build -m pwa",
|
||||
"buildpwatest": "NODE_ENV=production APP_VERSION='1.2.86' quasar build -m pwa",
|
||||
"type-check": "vue-tsc --noEmit",
|
||||
"type-check:watch": "vue-tsc --noEmit --watch",
|
||||
"buildspa": "quasar build -m spa",
|
||||
@@ -21,8 +21,8 @@
|
||||
"lintfile": "eslint --ext .js,.ts,.vue --ignore-path .gitignore ./ > file.out.txt",
|
||||
"lintfileNoJS": "eslint --ext .ts,.vue --ignore-path .gitignore ./ > file.out.txt",
|
||||
"fix": "eslint -c ./eslint.config.js \"./src*/**/*.{ts,js,cjs,mjs,vue}\" --ignore-pattern .gitignore ./ --fix > file.out.txt",
|
||||
"pwa": "NODE_ENV=development PORT=8094 APP_VERSION='1.2.85' quasar dev -m pwa",
|
||||
"spa": "NODE_ENV=development PORT=8084 APP_VERSION='1.2.85' quasar dev",
|
||||
"pwa": "NODE_ENV=development PORT=8094 APP_VERSION='1.2.86' quasar dev -m pwa",
|
||||
"spa": "NODE_ENV=development PORT=8084 APP_VERSION='1.2.86' quasar dev",
|
||||
"debug": "quasar dev --mode debug",
|
||||
"test": "echo \"No test specified\" && exit 0",
|
||||
"generate-sw": "workbox generateSW workbox-config.js",
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "gruppomacro",
|
||||
"version": "1.2.85",
|
||||
"version": "1.2.86",
|
||||
"productName": "Gruppo Macro",
|
||||
"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",
|
||||
@@ -9,20 +9,20 @@
|
||||
"license": "MIT",
|
||||
"type": "module",
|
||||
"scripts": {
|
||||
"dev": "PORT=8089 APP_VERSION='1.2.85' quasar dev",
|
||||
"dev": "PORT=8089 APP_VERSION='1.2.86' quasar dev",
|
||||
"dev_noCheck": "SKIP_TSC=true quasar dev",
|
||||
"build": "quasar build",
|
||||
"buildpwa": "NODE_ENV=production APP_VERSION='1.2.85' quasar build -m pwa",
|
||||
"buildpwatest": "NODE_ENV=production APP_VERSION='1.2.85' quasar build -m pwa",
|
||||
"buildpwa": "NODE_ENV=production APP_VERSION='1.2.86' quasar build -m pwa",
|
||||
"buildpwatest": "NODE_ENV=production APP_VERSION='1.2.86' quasar build -m pwa",
|
||||
"type-check": "vue-tsc --noEmit",
|
||||
"type-check:watch": "vue-tsc --noEmit --watch",
|
||||
"buildspa": "APP_VERSION='1.2.85' quasar build -m spa",
|
||||
"buildspa": "APP_VERSION='1.2.86' quasar build -m spa",
|
||||
"lint": "eslint -c ./eslint.config.js \"./src*/**/*.{ts,js,cjs,mjs,vue}\"",
|
||||
"lintfile": "eslint --ext .js,.ts,.vue --ignore-path .gitignore ./ > file.out.txt",
|
||||
"lintfileNoJS": "eslint --ext .ts,.vue --ignore-path .gitignore ./ > file.out.txt",
|
||||
"fix": "eslint -c ./eslint.config.js \"./src*/**/*.{ts,js,cjs,mjs,vue}\" --ignore-pattern .gitignore ./ --fix > file.out.txt",
|
||||
"pwa": "NODE_ENV=development PORT=8099 APP_VERSION='1.2.85' quasar dev -m pwa",
|
||||
"spa": "NODE_ENV=development PORT=8089 APP_VERSION='1.2.85' quasar dev",
|
||||
"pwa": "NODE_ENV=development PORT=8099 APP_VERSION='1.2.86' quasar dev -m pwa",
|
||||
"spa": "NODE_ENV=development PORT=8089 APP_VERSION='1.2.86' quasar dev",
|
||||
"debug": "quasar dev --mode debug",
|
||||
"test": "echo \"No test specified\" && exit 0",
|
||||
"generate-sw": "workbox generateSW workbox-config.js",
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "nuovomondo",
|
||||
"version": "1.2.85",
|
||||
"version": "1.2.86",
|
||||
"description": "Nuovo Mondo",
|
||||
"productName": "Nuovo Mondo",
|
||||
"author": "Surya",
|
||||
@@ -9,11 +9,11 @@
|
||||
"license": "MIT",
|
||||
"type": "module",
|
||||
"scripts": {
|
||||
"dev": "APP_VERSION='1.2.85' PORT=8083 quasar dev",
|
||||
"dev": "APP_VERSION='1.2.86' PORT=8083 quasar dev",
|
||||
"dev_noCheck": "SKIP_TSC=true quasar dev",
|
||||
"build": "quasar build",
|
||||
"buildpwa": "NODE_ENV=production APP_VERSION='1.2.85' quasar build -m pwa",
|
||||
"buildpwatest": "NODE_ENV=production APP_VERSION='1.2.85' quasar build -m pwa",
|
||||
"buildpwa": "NODE_ENV=production APP_VERSION='1.2.86' quasar build -m pwa",
|
||||
"buildpwatest": "NODE_ENV=production APP_VERSION='1.2.86' quasar build -m pwa",
|
||||
"type-check": "vue-tsc --noEmit",
|
||||
"type-check:watch": "vue-tsc --noEmit --watch",
|
||||
"buildspa": "quasar build -m spa",
|
||||
@@ -21,8 +21,8 @@
|
||||
"lintfile": "eslint --ext .js,.ts,.vue --ignore-path .gitignore ./ > file.out.txt",
|
||||
"lintfileNoJS": "eslint --ext .ts,.vue --ignore-path .gitignore ./ > file.out.txt",
|
||||
"fix": "eslint -c ./eslint.config.js \"./src*/**/*.{ts,js,cjs,mjs,vue}\" --ignore-pattern .gitignore ./ --fix > file.out.txt",
|
||||
"pwa": "NODE_ENV=development PORT=8094 APP_VERSION='1.2.85' quasar dev -m pwa",
|
||||
"spa": "NODE_ENV=development PORT=8083 APP_VERSION='1.2.85' quasar dev",
|
||||
"pwa": "NODE_ENV=development PORT=8094 APP_VERSION='1.2.86' quasar dev -m pwa",
|
||||
"spa": "NODE_ENV=development PORT=8083 APP_VERSION='1.2.86' quasar dev",
|
||||
"debug": "quasar dev --mode debug",
|
||||
"test": "echo \"No test specified\" && exit 0",
|
||||
"generate-sw": "workbox generateSW workbox-config.js",
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "nutriben",
|
||||
"version": "1.2.85",
|
||||
"version": "1.2.86",
|
||||
"description": "Nutriben",
|
||||
"productName": "Nutriben",
|
||||
"author": "Surya",
|
||||
@@ -9,20 +9,20 @@
|
||||
"license": "MIT",
|
||||
"type": "module",
|
||||
"scripts": {
|
||||
"dev": "PORT=8093 APP_VERSION='1.2.85' quasar dev",
|
||||
"dev": "PORT=8093 APP_VERSION='1.2.86' quasar dev",
|
||||
"dev_noCheck": "SKIP_TSC=true quasar dev",
|
||||
"build": "quasar build",
|
||||
"buildpwa": "NODE_ENV=production APP_VERSION='1.2.85' quasar build -m pwa",
|
||||
"buildpwatest": "NODE_ENV=production APP_VERSION='1.2.85' quasar build -m pwa",
|
||||
"buildpwa": "NODE_ENV=production APP_VERSION='1.2.86' quasar build -m pwa",
|
||||
"buildpwatest": "NODE_ENV=production APP_VERSION='1.2.86' quasar build -m pwa",
|
||||
"type-check": "vue-tsc --noEmit",
|
||||
"type-check:watch": "vue-tsc --noEmit --watch",
|
||||
"buildspa": "APP_VERSION='1.2.85' quasar build -m spa",
|
||||
"buildspa": "APP_VERSION='1.2.86' quasar build -m spa",
|
||||
"lint": "eslint -c ./eslint.config.js \"./src*/**/*.{ts,js,cjs,mjs,vue}\"",
|
||||
"lintfile": "eslint --ext .js,.ts,.vue --ignore-path .gitignore ./ > file.out.txt",
|
||||
"lintfileNoJS": "eslint --ext .ts,.vue --ignore-path .gitignore ./ > file.out.txt",
|
||||
"fix": "eslint -c ./eslint.config.js \"./src*/**/*.{ts,js,cjs,mjs,vue}\" --ignore-pattern .gitignore ./ --fix > file.out.txt",
|
||||
"pwa": "NODE_ENV=development PORT=8099 APP_VERSION='1.2.85' quasar dev -m pwa",
|
||||
"spa": "NODE_ENV=development PORT=8093 APP_VERSION='1.2.85' quasar dev",
|
||||
"pwa": "NODE_ENV=development PORT=8099 APP_VERSION='1.2.86' quasar dev -m pwa",
|
||||
"spa": "NODE_ENV=development PORT=8093 APP_VERSION='1.2.86' quasar dev",
|
||||
"debug": "quasar dev --mode debug",
|
||||
"test": "echo \"No test specified\" && exit 0",
|
||||
"generate-sw": "workbox generateSW workbox-config.js",
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "piuchebuono",
|
||||
"version": "1.2.85",
|
||||
"version": "1.2.86",
|
||||
"description": "PiuCheBuono",
|
||||
"productName": "PiuCheBuono",
|
||||
"author": "Surya",
|
||||
@@ -9,11 +9,11 @@
|
||||
"license": "MIT",
|
||||
"type": "module",
|
||||
"scripts": {
|
||||
"dev": "PORT=8085 APP_VERSION='1.2.85' quasar dev",
|
||||
"dev": "PORT=8085 APP_VERSION='1.2.86' quasar dev",
|
||||
"dev_noCheck": "SKIP_TSC=true quasar dev",
|
||||
"build": "quasar build",
|
||||
"buildpwa": "NODE_ENV=production APP_VERSION='1.2.85' quasar build -m pwa",
|
||||
"buildpwatest": "NODE_ENV=production APP_VERSION='1.2.85' quasar build -m pwa",
|
||||
"buildpwa": "NODE_ENV=production APP_VERSION='1.2.86' quasar build -m pwa",
|
||||
"buildpwatest": "NODE_ENV=production APP_VERSION='1.2.86' quasar build -m pwa",
|
||||
"type-check": "vue-tsc --noEmit",
|
||||
"type-check:watch": "vue-tsc --noEmit --watch",
|
||||
"buildspa": "quasar build -m spa",
|
||||
@@ -21,8 +21,8 @@
|
||||
"lintfile": "eslint --ext .js,.ts,.vue --ignore-path .gitignore ./ > file.out.txt",
|
||||
"lintfileNoJS": "eslint --ext .ts,.vue --ignore-path .gitignore ./ > file.out.txt",
|
||||
"fix": "eslint -c ./eslint.config.js \"./src*/**/*.{ts,js,cjs,mjs,vue}\" --ignore-pattern .gitignore ./ --fix > file.out.txt",
|
||||
"pwa": "NODE_ENV=development PORT=8085 APP_VERSION='1.2.85' quasar dev -m pwa",
|
||||
"spa": "NODE_ENV=development PORT=8085 APP_VERSION='1.2.85' quasar dev",
|
||||
"pwa": "NODE_ENV=development PORT=8085 APP_VERSION='1.2.86' quasar dev -m pwa",
|
||||
"spa": "NODE_ENV=development PORT=8085 APP_VERSION='1.2.86' quasar dev",
|
||||
"debug": "quasar dev --mode debug",
|
||||
"test": "echo \"No test specified\" && exit 0",
|
||||
"generate-sw": "workbox generateSW workbox-config.js",
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "riso",
|
||||
"version": "1.2.85",
|
||||
"version": "1.2.86",
|
||||
"productName": "Riso 💚 - Rete Italiana Scambio orizzontale",
|
||||
"description": "Progetto RISO (Rete Italiana Scambio orizzontale) 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.",
|
||||
"author": "Surya",
|
||||
@@ -9,11 +9,11 @@
|
||||
"license": "MIT",
|
||||
"type": "module",
|
||||
"scripts": {
|
||||
"dev": "APP_VERSION='1.2.85' PORT=8084 quasar dev",
|
||||
"dev": "APP_VERSION='1.2.86' PORT=8084 quasar dev",
|
||||
"dev_noCheck": "SKIP_TSC=true quasar dev",
|
||||
"build": "quasar build",
|
||||
"buildpwa": "NODE_ENV=production APP_VERSION='1.2.85' quasar build -m pwa",
|
||||
"buildpwatest": "NODE_ENV=production APP_VERSION='1.2.85' quasar build -m pwa",
|
||||
"buildpwa": "NODE_ENV=production APP_VERSION='1.2.86' quasar build -m pwa",
|
||||
"buildpwatest": "NODE_ENV=production APP_VERSION='1.2.86' quasar build -m pwa",
|
||||
"type-check": "vue-tsc --noEmit",
|
||||
"type-check:watch": "vue-tsc --noEmit --watch",
|
||||
"buildspa": "quasar build -m spa",
|
||||
@@ -21,8 +21,8 @@
|
||||
"lintfile": "eslint --ext .js,.ts,.vue --ignore-path .gitignore ./ > file.out.txt",
|
||||
"lintfileNoJS": "eslint --ext .ts,.vue --ignore-path .gitignore ./ > file.out.txt",
|
||||
"fix": "eslint -c ./eslint.config.js \"./src*/**/*.{ts,js,cjs,mjs,vue}\" --ignore-pattern .gitignore ./ --fix > file.out.txt",
|
||||
"pwa": "NODE_ENV=development PORT=8094 APP_VERSION='1.2.85' quasar dev -m pwa",
|
||||
"spa": "NODE_ENV=development PORT=8084 APP_VERSION='1.2.85' quasar dev",
|
||||
"pwa": "NODE_ENV=development PORT=8094 APP_VERSION='1.2.86' quasar dev -m pwa",
|
||||
"spa": "NODE_ENV=development PORT=8084 APP_VERSION='1.2.86' quasar dev",
|
||||
"debug": "quasar dev --mode debug",
|
||||
"test": "echo \"No test specified\" && exit 0",
|
||||
"generate-sw": "workbox generateSW workbox-config.js",
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
/* global workbox */
|
||||
/* global cfgenv */
|
||||
|
||||
const VITE_APP_VERSION = '1.2.85';
|
||||
const VITE_APP_VERSION = '1.2.86';
|
||||
|
||||
// Costanti di configurazione
|
||||
const DYNAMIC_CACHE = 'dynamic-cache-v2';
|
||||
|
||||
@@ -324,6 +324,8 @@ export const shared_consts = {
|
||||
'sectors',
|
||||
'goods',
|
||||
'sectorgoods',
|
||||
'bachecas',
|
||||
'sectorbachecas',
|
||||
'catgrps',
|
||||
'skills',
|
||||
'subskills',
|
||||
@@ -443,6 +445,7 @@ export const shared_consts = {
|
||||
TABLES_REC_ID: [
|
||||
'skills',
|
||||
'goods',
|
||||
'bachecas',
|
||||
'subskills',
|
||||
'myskills',
|
||||
'mybachecas',
|
||||
@@ -791,98 +794,266 @@ export const shared_consts = {
|
||||
{
|
||||
value: 2,
|
||||
label: 'Si accettano cani',
|
||||
icon: 'pets',
|
||||
color: '#795548', // brown
|
||||
},
|
||||
{
|
||||
value: 3,
|
||||
label: 'Si accettano gatti',
|
||||
icon: 'pets',
|
||||
color: '#FF9800', // orange
|
||||
},
|
||||
{
|
||||
value: 4,
|
||||
label: "E' consentito fumare in casa",
|
||||
icon: 'smoking_rooms',
|
||||
color: '#9E9E9E', // grey
|
||||
},
|
||||
{
|
||||
value: 5,
|
||||
label: 'Accessibile con sedia a rotelle',
|
||||
icon: 'accessible',
|
||||
color: '#2196F3', // blue
|
||||
},
|
||||
{
|
||||
value: 6,
|
||||
label: 'Parcheggio gratuito nella proprietà',
|
||||
icon: 'local_parking',
|
||||
color: '#3F51B5', // indigo
|
||||
},
|
||||
{
|
||||
value: 7,
|
||||
label: 'Wi-fi disponibile',
|
||||
icon: 'wifi',
|
||||
color: '#00BCD4', // cyan
|
||||
},
|
||||
{
|
||||
value: 8,
|
||||
label: 'Sono permessi soggiorni a lungo termine',
|
||||
icon: 'calendar_month',
|
||||
color: '#009688', // teal
|
||||
},
|
||||
{
|
||||
value: 9,
|
||||
label: 'Cucina Vegetariana',
|
||||
icon: 'restaurant',
|
||||
color: '#4CAF50', // green
|
||||
},
|
||||
{
|
||||
value: 10,
|
||||
label: 'Cucina Vegana',
|
||||
icon: 'spa',
|
||||
color: '#8BC34A', // light-green
|
||||
},
|
||||
{
|
||||
value: 11,
|
||||
label: 'Uso della Cucina',
|
||||
icon: 'kitchen',
|
||||
color: '#FFC107', // amber
|
||||
},
|
||||
{
|
||||
value: 12,
|
||||
label: 'Uso della Lavatrice',
|
||||
icon: 'local_laundry_service',
|
||||
color: '#607D8B', // blue-grey
|
||||
},
|
||||
{
|
||||
value: 13,
|
||||
label: 'Aria condizionata',
|
||||
icon: 'ac_unit',
|
||||
color: '#03A9F4', // light-blue
|
||||
},
|
||||
{
|
||||
value: 14,
|
||||
label: 'Ventilatore',
|
||||
icon: 'air',
|
||||
color: '#00BCD4', // cyan
|
||||
},
|
||||
{
|
||||
value: 15,
|
||||
label: "Doccia all'aperto",
|
||||
icon: 'shower',
|
||||
color: '#2196F3', // blue
|
||||
},
|
||||
{
|
||||
value: 16,
|
||||
label: 'TV',
|
||||
icon: 'tv',
|
||||
color: '#673AB7', // deep-purple
|
||||
},
|
||||
{
|
||||
value: 17,
|
||||
label: 'Eventi consentiti',
|
||||
icon: 'celebration',
|
||||
color: '#E91E63', // pink
|
||||
},
|
||||
{
|
||||
value: 18,
|
||||
label: 'Adatto a bambini da 2 a 12 anni',
|
||||
icon: 'child_care',
|
||||
color: '#F9A825'
|
||||
},
|
||||
{
|
||||
value: 19,
|
||||
label: 'Adatto ai neonati (fino ai 2 anni)',
|
||||
icon: 'baby_changing_station',
|
||||
color: '#F8BBD0', // pink-light
|
||||
},
|
||||
{
|
||||
value: 20,
|
||||
label: 'Biancheria inclusa',
|
||||
icon: 'bed',
|
||||
color: '#9C27B0', // purple
|
||||
},
|
||||
{
|
||||
value: 21,
|
||||
label: 'Biancheria su richiesta (a parte)',
|
||||
icon: 'bedroom_parent',
|
||||
color: '#673AB7', // deep-purple
|
||||
},
|
||||
{
|
||||
value: 22,
|
||||
label: 'Asciugamani',
|
||||
icon: 'dry_cleaning',
|
||||
color: '#009688', // teal
|
||||
},
|
||||
{
|
||||
value: 23,
|
||||
label: 'Asciugacapelli',
|
||||
icon: 'iron',
|
||||
color: '#F44336', // red
|
||||
},
|
||||
{
|
||||
value: 24,
|
||||
label: 'Riscaldamento a legna',
|
||||
icon: 'fireplace',
|
||||
color: '#FF5722', // deep-orange
|
||||
},
|
||||
{
|
||||
value: 25,
|
||||
label: 'Riscaldamento a gas',
|
||||
icon: 'heat_pump',
|
||||
color: '#FF9800', // orange
|
||||
},
|
||||
{
|
||||
value: 26,
|
||||
label: 'Colazione inclusa',
|
||||
icon: 'free_breakfast',
|
||||
color: '#FFC107', // amber
|
||||
},
|
||||
{
|
||||
value: 27,
|
||||
label: 'Giardino/Spazio esterno',
|
||||
icon: 'yard',
|
||||
color: '#4CAF50', // green
|
||||
},
|
||||
{
|
||||
value: 28,
|
||||
label: 'Terrazzo/Balcone',
|
||||
icon: 'balcony',
|
||||
color: '#CDDC39', // lime
|
||||
},
|
||||
{
|
||||
value: 29,
|
||||
label: 'Silenzioso/Zona tranquilla',
|
||||
icon: 'volume_off',
|
||||
color: '#607D8B', // blue-grey
|
||||
},
|
||||
{
|
||||
value: 30,
|
||||
label: 'Vicino a mezzi pubblici',
|
||||
icon: 'directions_bus',
|
||||
color: '#3F51B5', // indigo
|
||||
},
|
||||
{
|
||||
value: 31,
|
||||
label: 'Biciclette disponibili',
|
||||
icon: 'directions_bike',
|
||||
color: '#009688', // teal
|
||||
},
|
||||
{
|
||||
value: 32,
|
||||
label: 'Camino',
|
||||
icon: 'fireplace',
|
||||
color: '#795548', // brown
|
||||
},
|
||||
{
|
||||
value: 33,
|
||||
label: 'Barbecue',
|
||||
icon: 'outdoor_grill',
|
||||
color: '#F44336', // red
|
||||
},
|
||||
{
|
||||
value: 34,
|
||||
label: 'Piscina',
|
||||
icon: 'pool',
|
||||
color: '#03A9F4', // light-blue
|
||||
},
|
||||
{
|
||||
value: 35,
|
||||
label: 'Sauna',
|
||||
icon: 'hot_tub',
|
||||
color: '#FF5722', // deep-orange
|
||||
},
|
||||
{
|
||||
value: 36,
|
||||
label: 'Vista panoramica',
|
||||
icon: 'landscape',
|
||||
color: '#9C27B0', // purple
|
||||
},
|
||||
{
|
||||
value: 37,
|
||||
label: 'In campagna',
|
||||
icon: 'nature',
|
||||
color: '#4CAF50', // green
|
||||
},
|
||||
{
|
||||
value: 38,
|
||||
label: 'In montagna',
|
||||
icon: 'terrain',
|
||||
color: '#795548', // brown
|
||||
},
|
||||
{
|
||||
value: 39,
|
||||
label: 'Vicino al mare',
|
||||
icon: 'beach_access',
|
||||
color: '#2196F3', // blue
|
||||
},
|
||||
{
|
||||
value: 40,
|
||||
label: 'Animali da fattoria',
|
||||
icon: 'agriculture',
|
||||
color: '#795548', // brown
|
||||
},
|
||||
{
|
||||
value: 41,
|
||||
label: 'Orto/Permacultura',
|
||||
icon: 'eco',
|
||||
color: '#4CAF50', // green
|
||||
},
|
||||
{
|
||||
value: 42,
|
||||
label: 'Prodotti biologici/km zero',
|
||||
icon: 'local_florist',
|
||||
color: '#8BC34A', // light-green
|
||||
},
|
||||
{
|
||||
value: 43,
|
||||
label: 'Scambio lavoro/volontariato',
|
||||
icon: 'handshake',
|
||||
color: '#FF9800', // orange
|
||||
},
|
||||
{
|
||||
value: 44,
|
||||
label: 'Comunità/Ecovillaggio',
|
||||
icon: 'groups',
|
||||
color: '#9C27B0', // purple
|
||||
},
|
||||
{
|
||||
value: 45,
|
||||
label: 'Energie rinnovabili',
|
||||
icon: 'solar_power',
|
||||
color: '#FFEB3B', // yellow
|
||||
},
|
||||
],
|
||||
|
||||
@@ -1947,17 +2118,17 @@ export const shared_consts = {
|
||||
icon: 'fas fa-home',
|
||||
},
|
||||
{
|
||||
value: 1610, // RISOHOME_MODERN
|
||||
value: 1610, // RISOHOME_MODERN
|
||||
label: 'RISO Home Modern',
|
||||
icon: 'fas fa-home',
|
||||
},
|
||||
{
|
||||
value: 1620, // PAGERIS
|
||||
value: 1620, // PAGERIS
|
||||
label: 'Pagina RIS',
|
||||
icon: 'fas fa-home',
|
||||
},
|
||||
{
|
||||
value: 1630, // CMYCIRCUITS
|
||||
value: 1630, // CMYCIRCUITS
|
||||
label: 'CMyCircuits (Old Page)',
|
||||
icon: 'fas fa-home',
|
||||
},
|
||||
@@ -2406,9 +2577,9 @@ export const shared_consts = {
|
||||
} else if (table === this.TABLES_MYBACHECAS) {
|
||||
proj = {
|
||||
recSkill: 1,
|
||||
sector: 1,
|
||||
idSector: 1,
|
||||
idSkill: 1,
|
||||
sectorBacheca: 1,
|
||||
idSectorBacheca: 1,
|
||||
idBacheca: 1,
|
||||
// 'idSubSkill': 1,
|
||||
idStatusSkill: 1,
|
||||
idContribType: 1,
|
||||
@@ -2690,5 +2861,5 @@ export const shared_consts = {
|
||||
FILETYPE: {
|
||||
IMG: 1,
|
||||
PDF: 2,
|
||||
}
|
||||
},
|
||||
};
|
||||
|
||||
@@ -256,7 +256,11 @@ export default defineComponent({
|
||||
if (recSector) {
|
||||
tools.setCookie(tools.COOK_SEARCH + costanti.FILTER_SEP + props.table + costanti.FILTER_SEP + recSector.value, newval)
|
||||
}
|
||||
// setCategBySector('sectorgoods', table, newval)
|
||||
} else if (table === toolsext.TABMYBACHECAS) {
|
||||
const recSector = searchList.value.find((rec) => rec.table === toolsext.TABSECTORBACHECAS)
|
||||
if (recSector) {
|
||||
tools.setCookie(tools.COOK_SEARCH + costanti.FILTER_SEP + props.table + costanti.FILTER_SEP + recSector.value, newval)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -107,6 +107,13 @@
|
||||
/>
|
||||
|
||||
<div class="row justify-center">
|
||||
<q-btn
|
||||
label="Annulla"
|
||||
v-close-popup
|
||||
color="primary"
|
||||
flat
|
||||
class="q-ml-sm"
|
||||
/>
|
||||
<q-btn
|
||||
label="Aggiungi"
|
||||
type="submit"
|
||||
@@ -120,13 +127,6 @@
|
||||
"
|
||||
color="primary"
|
||||
/>
|
||||
<q-btn
|
||||
label="Annulla"
|
||||
v-close-popup
|
||||
color="primary"
|
||||
flat
|
||||
class="q-ml-sm"
|
||||
/>
|
||||
</div>
|
||||
</q-form>
|
||||
</q-card-section>
|
||||
|
||||
@@ -10,24 +10,48 @@
|
||||
</div>-->
|
||||
<div>
|
||||
<!-- display an myevent -->
|
||||
<q-dialog v-model="displayEvent" :maximized="$q.screen.lt.sm">
|
||||
<q-card v-if="myevent" class="dialog_card">
|
||||
<q-dialog
|
||||
v-model="displayEvent"
|
||||
:maximized="$q.screen.lt.sm"
|
||||
>
|
||||
<q-card
|
||||
v-if="myevent"
|
||||
class="dialog_card"
|
||||
>
|
||||
<q-toolbar class="bg-primary text-white">
|
||||
<!--<q-toolbar :class="tools.displayClasses(myevent)"-->
|
||||
<!--:style="tools.displayStyles(myevent) + ` min-width: `+ tools.myheight_dialog() + `px;`">-->
|
||||
<q-toolbar-title>
|
||||
{{ t('cal.event') }}
|
||||
</q-toolbar-title>
|
||||
<q-btn v-if="editable" flat round color="white" icon="fas fa-copy">
|
||||
<q-menu transition-show="flip-right" transition-hide="flip-left">
|
||||
<q-btn
|
||||
v-if="editable"
|
||||
flat
|
||||
round
|
||||
color="white"
|
||||
icon="fas fa-copy"
|
||||
>
|
||||
<q-menu
|
||||
transition-show="flip-right"
|
||||
transition-hide="flip-left"
|
||||
>
|
||||
<q-list style="min-width: 100px">
|
||||
<q-item clickable @click="duplicateEvent(myevent, 7)">
|
||||
<q-item
|
||||
clickable
|
||||
@click="duplicateEvent(myevent, 7)"
|
||||
>
|
||||
<q-item-section>Tra 1 Settimana</q-item-section>
|
||||
</q-item>
|
||||
<q-item clickable @click="duplicateEvent(myevent, 14)">
|
||||
<q-item
|
||||
clickable
|
||||
@click="duplicateEvent(myevent, 14)"
|
||||
>
|
||||
<q-item-section>Tra 2 Settimane</q-item-section>
|
||||
</q-item>
|
||||
<q-item clickable @click="duplicateEvent(myevent, 7, 4)">
|
||||
<q-item
|
||||
clickable
|
||||
@click="duplicateEvent(myevent, 7, 4)"
|
||||
>
|
||||
<q-item-section>4 Eventi ogni Settimana</q-item-section>
|
||||
</q-item>
|
||||
</q-list>
|
||||
@@ -86,7 +110,10 @@
|
||||
:class="`cal__details` + ($q.dark.isActive ? `_darktheme` : ``)"
|
||||
v-html="myevent.details"
|
||||
></div>
|
||||
<div v-if="myevent.teacher" class="cal__teacher">
|
||||
<div
|
||||
v-if="myevent.teacher"
|
||||
class="cal__teacher"
|
||||
>
|
||||
<span class="cal__teacher-title"
|
||||
>{{ t('cal.teacher') }}: <span class="margin_with"></span
|
||||
></span>
|
||||
@@ -96,16 +123,17 @@
|
||||
<CMyTeacher :username="myevent.teacher3"></CMyTeacher>
|
||||
<CMyTeacher :username="myevent.teacher4"></CMyTeacher>
|
||||
</div>
|
||||
<div v-if="myevent.wherecode" class="cal__where">
|
||||
<div
|
||||
v-if="myevent.wherecode"
|
||||
class="cal__where"
|
||||
>
|
||||
<!--<span v-if="tools.isMobile()"><br/></span>-->
|
||||
<span class="cal__where-title">{{ t('cal.where') }}: </span>
|
||||
<span class="cal__where-content">
|
||||
<q-chip>
|
||||
<q-avatar v-if="getWhereIcon(myevent.wherecode)">
|
||||
<img
|
||||
:src="
|
||||
`/images/avatar/` + getWhereIcon(myevent.wherecode)
|
||||
"
|
||||
:src="`/images/avatar/` + getWhereIcon(myevent.wherecode)"
|
||||
alt="Località"
|
||||
/>
|
||||
</q-avatar>
|
||||
@@ -129,17 +157,16 @@
|
||||
>
|
||||
<span class="cal__quota-title">{{ t('event.price') }}:</span>
|
||||
<q-chip>
|
||||
<span class="cal__quota-content">{{
|
||||
getPrice(myevent)
|
||||
}}</span>
|
||||
<span class="cal__quota-content">{{ getPrice(myevent) }}</span>
|
||||
</q-chip>
|
||||
</div>
|
||||
<div v-if="myevent.dateTimeStart" class="cal__when">
|
||||
<div
|
||||
v-if="myevent.dateTimeStart"
|
||||
class="cal__when"
|
||||
>
|
||||
<span class="cal__where-title"
|
||||
>{{ t('cal.when') }}:
|
||||
<span
|
||||
v-html="tools.getstrDateTimeEvent($t, myevent, true)"
|
||||
></span>
|
||||
<span v-html="tools.getstrDateTimeEvent($t, myevent, true)"></span>
|
||||
</span>
|
||||
</div>
|
||||
<p
|
||||
@@ -181,16 +208,33 @@
|
||||
</q-dialog>
|
||||
<!-- id_bookedeventadd/edit an myevent -->
|
||||
|
||||
<q-dialog v-model="addEvent" no-backdrop-dismiss persistent>
|
||||
<q-card v-if="addEvent" class="dialog_card">
|
||||
<q-dialog
|
||||
v-model="addEvent"
|
||||
no-backdrop-dismiss
|
||||
persistent
|
||||
>
|
||||
<q-card
|
||||
v-if="addEvent"
|
||||
class="dialog_card"
|
||||
>
|
||||
<q-toolbar class="bg-primary text-white">
|
||||
<q-toolbar-title>
|
||||
{{ addOrUpdateEvent() }} {{ t('cal.event') }}
|
||||
</q-toolbar-title>
|
||||
<q-btn flat round color="white" icon="close" v-close-popup></q-btn>
|
||||
<q-btn
|
||||
flat
|
||||
round
|
||||
color="white"
|
||||
icon="close"
|
||||
v-close-popup
|
||||
></q-btn>
|
||||
</q-toolbar>
|
||||
<q-card-section class="inset-shadow">
|
||||
<q-form v-if="contextDay" ref="myevent" class="q-gutter-sm">
|
||||
<q-form
|
||||
v-if="contextDay"
|
||||
ref="myevent"
|
||||
class="q-gutter-sm"
|
||||
>
|
||||
<CMySelect
|
||||
:label="$t('event.typol')"
|
||||
v-model:value="eventForm.typol"
|
||||
@@ -254,7 +298,10 @@
|
||||
/>
|
||||
</q-tabs>
|
||||
|
||||
<q-tab-panels v-model="tabeditor" animated>
|
||||
<q-tab-panels
|
||||
v-model="tabeditor"
|
||||
animated
|
||||
>
|
||||
<q-tab-panel name="details">
|
||||
<div class="q-gutter-sm myflex">
|
||||
<q-input
|
||||
@@ -320,7 +367,10 @@
|
||||
</CMyEditor>
|
||||
</q-tab-panel>
|
||||
|
||||
<q-tab-panel name="settings" class="q-gutter-sm">
|
||||
<q-tab-panel
|
||||
name="settings"
|
||||
class="q-gutter-sm"
|
||||
>
|
||||
<!--<q-checkbox v-model="eventForm.allday" :label="$t('cal.alldayevent')"></q-checkbox>-->
|
||||
|
||||
<div class="q-gutter-sm row myflex">
|
||||
@@ -507,28 +557,40 @@
|
||||
</q-form>
|
||||
</q-card-section>
|
||||
<q-card-actions align="right">
|
||||
<q-btn
|
||||
:label="$t('dialog.ok')"
|
||||
color="primary"
|
||||
@click="saveEvent"
|
||||
></q-btn>
|
||||
<q-btn
|
||||
flat
|
||||
:label="$t('dialog.cancel')"
|
||||
color="primary"
|
||||
v-close-popup
|
||||
></q-btn>
|
||||
<q-btn
|
||||
:label="$t('dialog.ok')"
|
||||
color="primary"
|
||||
@click="saveEvent"
|
||||
></q-btn>
|
||||
</q-card-actions>
|
||||
</q-card>
|
||||
</q-dialog>
|
||||
|
||||
<q-dialog v-model="bookEventpage.show" no-backdrop-dismiss>
|
||||
<q-card v-if="bookEventpage.show" class="dialog_card">
|
||||
<q-dialog
|
||||
v-model="bookEventpage.show"
|
||||
no-backdrop-dismiss
|
||||
>
|
||||
<q-card
|
||||
v-if="bookEventpage.show"
|
||||
class="dialog_card"
|
||||
>
|
||||
<q-toolbar class="bg-primary text-white">
|
||||
<q-toolbar-title>
|
||||
{{ t('cal.booking') }}
|
||||
</q-toolbar-title>
|
||||
<q-btn flat round color="white" icon="close" v-close-popup></q-btn>
|
||||
<q-btn
|
||||
flat
|
||||
round
|
||||
color="white"
|
||||
icon="close"
|
||||
v-close-popup
|
||||
></q-btn>
|
||||
</q-toolbar>
|
||||
|
||||
<q-card-section class="inset-shadow">
|
||||
@@ -548,16 +610,20 @@
|
||||
>
|
||||
{{ myevent.title }}
|
||||
</q-chip>
|
||||
<div v-if="myevent.dateTimeStart" class="cal__when">
|
||||
<div
|
||||
v-if="myevent.dateTimeStart"
|
||||
class="cal__when"
|
||||
>
|
||||
<span class="cal__where-title"
|
||||
>{{ t('cal.when') }}:
|
||||
<span
|
||||
v-html="tools.getstrDateTimeEvent($t, myevent, true)"
|
||||
></span>
|
||||
<span v-html="tools.getstrDateTimeEvent($t, myevent, true)"></span>
|
||||
</span>
|
||||
</div>
|
||||
<div class="q-pa-xs">
|
||||
<q-card class="text-white windowcol" style="display: block">
|
||||
<q-card
|
||||
class="text-white windowcol"
|
||||
style="display: block"
|
||||
>
|
||||
<q-card-section class="q-pa-xs">
|
||||
<div
|
||||
style="display: inline-flex"
|
||||
@@ -583,9 +649,7 @@
|
||||
style="min-width: 140px"
|
||||
>
|
||||
<q-select
|
||||
:behavior="
|
||||
$q.platform.is.ios === true ? 'dialog' : 'menu'
|
||||
"
|
||||
:behavior="$q.platform.is.ios === true ? 'dialog' : 'menu'"
|
||||
rounded
|
||||
outlined
|
||||
v-model="bookEventForm.numpeople"
|
||||
@@ -614,9 +678,7 @@
|
||||
style="min-width: 140px; margin-left: 10px"
|
||||
>
|
||||
<q-select
|
||||
:behavior="
|
||||
$q.platform.is.ios === true ? 'dialog' : 'menu'
|
||||
"
|
||||
:behavior="$q.platform.is.ios === true ? 'dialog' : 'menu'"
|
||||
rounded
|
||||
outlined
|
||||
v-model="bookEventForm.numpeopleLunch"
|
||||
@@ -647,9 +709,7 @@
|
||||
style="min-width: 180px; margin-left: 10px"
|
||||
>
|
||||
<q-select
|
||||
:behavior="
|
||||
$q.platform.is.ios === true ? 'dialog' : 'menu'
|
||||
"
|
||||
:behavior="$q.platform.is.ios === true ? 'dialog' : 'menu'"
|
||||
rounded
|
||||
outlined
|
||||
v-model="bookEventForm.numpeopleDinner"
|
||||
@@ -679,9 +739,7 @@
|
||||
style="min-width: 180px; margin-left: 10px"
|
||||
>
|
||||
<q-select
|
||||
:behavior="
|
||||
$q.platform.is.ios === true ? 'dialog' : 'menu'
|
||||
"
|
||||
:behavior="$q.platform.is.ios === true ? 'dialog' : 'menu'"
|
||||
rounded
|
||||
outlined
|
||||
v-model="bookEventForm.numpeopleDinnerShared"
|
||||
@@ -726,6 +784,13 @@
|
||||
</div>
|
||||
</q-card-section>
|
||||
<q-card-actions align="right">
|
||||
<q-btn
|
||||
flat
|
||||
:label="$t('dialog.cancel')"
|
||||
color="primary"
|
||||
v-close-popup
|
||||
></q-btn>
|
||||
|
||||
<q-btn
|
||||
v-if="bookEventpage.state === EState.Modifying"
|
||||
flat
|
||||
@@ -745,28 +810,31 @@
|
||||
:label="getTitleBtnBooking()"
|
||||
color="primary"
|
||||
@click="saveBookEvent(myevent)"
|
||||
:disable="
|
||||
!(bookEventpage.state === EState.Creating || hasModifiedBooking)
|
||||
"
|
||||
></q-btn>
|
||||
|
||||
<q-btn
|
||||
flat
|
||||
:label="$t('dialog.cancel')"
|
||||
color="primary"
|
||||
v-close-popup
|
||||
:disable="!(bookEventpage.state === EState.Creating || hasModifiedBooking)"
|
||||
></q-btn>
|
||||
</q-card-actions>
|
||||
</q-card>
|
||||
</q-dialog>
|
||||
|
||||
<q-dialog v-model="askInfopage.show" no-backdrop-dismiss>
|
||||
<q-card v-if="askInfopage.show" class="dialog_card">
|
||||
<q-dialog
|
||||
v-model="askInfopage.show"
|
||||
no-backdrop-dismiss
|
||||
>
|
||||
<q-card
|
||||
v-if="askInfopage.show"
|
||||
class="dialog_card"
|
||||
>
|
||||
<q-toolbar class="bg-primary text-white">
|
||||
<q-toolbar-title>
|
||||
{{ t('cal.booking') }}
|
||||
</q-toolbar-title>
|
||||
<q-btn flat round color="white" icon="close" v-close-popup></q-btn>
|
||||
<q-btn
|
||||
flat
|
||||
round
|
||||
color="white"
|
||||
icon="close"
|
||||
v-close-popup
|
||||
></q-btn>
|
||||
</q-toolbar>
|
||||
|
||||
<q-card-section class="inset-shadow">
|
||||
@@ -786,12 +854,13 @@
|
||||
>
|
||||
{{ myevent.title }}
|
||||
</q-chip>
|
||||
<div v-if="myevent.dateTimeStart" class="cal__when">
|
||||
<div
|
||||
v-if="myevent.dateTimeStart"
|
||||
class="cal__when"
|
||||
>
|
||||
<span class="cal__where-title"
|
||||
>{{ t('cal.when') }}:
|
||||
<span
|
||||
v-html="tools.getstrDateTimeEvent($t, myevent, true)"
|
||||
></span>
|
||||
<span v-html="tools.getstrDateTimeEvent($t, myevent, true)"></span>
|
||||
</span>
|
||||
</div>
|
||||
<div class="q-pa-xs">
|
||||
@@ -812,18 +881,17 @@
|
||||
</div>
|
||||
</q-card-section>
|
||||
<q-card-actions align="right">
|
||||
<q-btn
|
||||
flat
|
||||
:label="$t('dialog.sendmsg')"
|
||||
color="primary"
|
||||
@click="sendMsg(myevent)"
|
||||
></q-btn>
|
||||
<q-btn
|
||||
flat
|
||||
:label="$t('dialog.cancel')"
|
||||
color="primary"
|
||||
v-close-popup
|
||||
></q-btn>
|
||||
<q-btn
|
||||
:label="$t('dialog.sendmsg')"
|
||||
color="primary"
|
||||
@click="sendMsg(myevent)"
|
||||
></q-btn>
|
||||
</q-card-actions>
|
||||
</q-card>
|
||||
</q-dialog>
|
||||
@@ -956,20 +1024,13 @@
|
||||
class="q-ma-xs"
|
||||
:class="badgeClasses(event, 'header')"
|
||||
:style="badgeStyles(event, 'header')"
|
||||
style="
|
||||
width: 10px;
|
||||
max-width: 10px;
|
||||
height: 10px;
|
||||
max-height: 10px;
|
||||
"
|
||||
style="width: 10px; max-width: 10px; height: 10px; max-height: 10px"
|
||||
></q-badge>
|
||||
</template>
|
||||
</div>
|
||||
</template>
|
||||
<template
|
||||
#day-body="{
|
||||
scope: { timestamp, timeStartPos, timeDurationHeight },
|
||||
}"
|
||||
#day-body="{ scope: { timestamp, timeStartPos, timeDurationHeight } }"
|
||||
>
|
||||
<template
|
||||
v-for="(event, index) in getEvents(timestamp.date)"
|
||||
@@ -1012,12 +1073,7 @@
|
||||
class="my-event-rel justify-center rounded-borders"
|
||||
:class="badgeClasses(event, 'body')"
|
||||
:style="
|
||||
badgeStyles(
|
||||
event,
|
||||
'body',
|
||||
timeStartPos,
|
||||
timeDurationHeight
|
||||
)
|
||||
badgeStyles(event, 'body', timeStartPos, timeDurationHeight)
|
||||
"
|
||||
@click.stop.prevent="showEvent(event)"
|
||||
:draggable="tools.isManager()"
|
||||
@@ -1087,13 +1143,7 @@
|
||||
<img
|
||||
:src="getImgEvent(event)"
|
||||
@click="selectEvent(event)"
|
||||
class="
|
||||
text-left
|
||||
padding_cell
|
||||
listaev__tdimg listaev__img
|
||||
cursor-pointer
|
||||
q-mx-sm
|
||||
"
|
||||
class="text-left padding_cell listaev__tdimg listaev__img cursor-pointer q-mx-sm"
|
||||
:style="getStyleByEvent(event, event === myevent)"
|
||||
:alt="event.title"
|
||||
/>
|
||||
@@ -1139,9 +1189,7 @@
|
||||
clickable
|
||||
@click="duplicateEvent(myevent, 7, 4)"
|
||||
>
|
||||
<q-item-section
|
||||
>4 Eventi ogni Settimana</q-item-section
|
||||
>
|
||||
<q-item-section>4 Eventi ogni Settimana</q-item-section>
|
||||
</q-item>
|
||||
</q-list>
|
||||
</q-menu>
|
||||
@@ -1187,22 +1235,17 @@
|
||||
</q-chip>
|
||||
</div>
|
||||
|
||||
<div
|
||||
class="
|
||||
listaev__date listaev__align_center_mobile
|
||||
text-center
|
||||
"
|
||||
>
|
||||
<span
|
||||
v-html="tools.getstrDateTimeEvent($t, event, true)"
|
||||
></span>
|
||||
<div class="listaev__date listaev__align_center_mobile text-center">
|
||||
<span v-html="tools.getstrDateTimeEvent($t, event, true)"></span>
|
||||
</div>
|
||||
|
||||
<div class="listaev__align_center_mobile">
|
||||
<div style="margin: 10px"></div>
|
||||
|
||||
<div v-if="event.internal">
|
||||
<q-chip color="blue" text-color="white"
|
||||
<q-chip
|
||||
color="blue"
|
||||
text-color="white"
|
||||
>Evento Interno:</q-chip
|
||||
>
|
||||
</div>
|
||||
@@ -1247,17 +1290,15 @@
|
||||
<div style="margin: 10px"></div>
|
||||
|
||||
<p
|
||||
:class="
|
||||
`listaev__details` + ($q.dark.isActive
|
||||
? `_darktheme`
|
||||
: ``)
|
||||
"
|
||||
:class="`listaev__details` + ($q.dark.isActive ? `_darktheme` : ``)"
|
||||
v-html="event.details"
|
||||
></p>
|
||||
<div v-if="event.teacher" class="">
|
||||
<div
|
||||
v-if="event.teacher"
|
||||
class=""
|
||||
>
|
||||
<span class="cal__teacher-title"
|
||||
>{{ t('cal.teacher') }}:
|
||||
<span class="margin_with"></span
|
||||
>{{ t('cal.teacher') }}: <span class="margin_with"></span
|
||||
></span>
|
||||
|
||||
<CMyTeacher :username="event.teacher"></CMyTeacher>
|
||||
@@ -1265,18 +1306,17 @@
|
||||
<CMyTeacher :username="event.teacher3"></CMyTeacher>
|
||||
<CMyTeacher :username="event.teacher4"></CMyTeacher>
|
||||
|
||||
<span v-if="event.wherecode" class="">
|
||||
<span
|
||||
v-if="event.wherecode"
|
||||
class=""
|
||||
>
|
||||
<span v-if="tools.isMobile()"><br /></span>
|
||||
<span class="cal__where-title"
|
||||
>{{ t('cal.where') }}:
|
||||
</span>
|
||||
<span class="cal__where-title">{{ t('cal.where') }}: </span>
|
||||
|
||||
<q-chip>
|
||||
<q-avatar v-if="getWhereIcon(event.wherecode)">
|
||||
<img
|
||||
:src="
|
||||
`/images/avatar/` + getWhereIcon(event.wherecode)
|
||||
"
|
||||
:src="`/images/avatar/` + getWhereIcon(event.wherecode)"
|
||||
:alt="event.wherecode"
|
||||
/>
|
||||
</q-avatar>
|
||||
@@ -1293,13 +1333,17 @@
|
||||
</q-chip>
|
||||
</span>
|
||||
</div>
|
||||
<div v-if="event.contribtype" class="">
|
||||
<div
|
||||
v-if="event.contribtype"
|
||||
class=""
|
||||
>
|
||||
<span class="cal__quota-title"
|
||||
>{{ t('event.price') }}:<span
|
||||
class="margin_with"
|
||||
></span
|
||||
>{{ t('event.price') }}:<span class="margin_with"></span
|
||||
></span>
|
||||
<span v-if="!isShowPrice(event)" class="">
|
||||
<span
|
||||
v-if="!isShowPrice(event)"
|
||||
class=""
|
||||
>
|
||||
<q-chip
|
||||
class="glossy"
|
||||
color="orange"
|
||||
@@ -1318,9 +1362,7 @@
|
||||
text-color="white"
|
||||
icon-right="star"
|
||||
>
|
||||
<span class="cal__quota-content">{{
|
||||
getPrice(event)
|
||||
}}</span>
|
||||
<span class="cal__quota-content">{{ getPrice(event) }}</span>
|
||||
</q-chip>
|
||||
</div>
|
||||
|
||||
@@ -1418,8 +1460,7 @@
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
<script lang="ts" src="./CEventsCalendar.ts">
|
||||
</script>
|
||||
<script lang="ts" src="./CEventsCalendar.ts"></script>
|
||||
<style lang="scss" scoped>
|
||||
@import './CEventsCalendar.scss';
|
||||
</style>
|
||||
|
||||
@@ -306,7 +306,7 @@ export default defineComponent({
|
||||
}
|
||||
|
||||
function getFilterGoods(recGood: any, index: number, arr: any) {
|
||||
const recsectorGoods: any = searchList.value.find((rec) => rec.table === 'sectorgoods')
|
||||
const recsectorGoods: any = searchList.value.find((rec) => rec.table === toolsext.TABSECTORGOODS)
|
||||
// console.log('getFilterSkills', recSkill.idSector, recsectors.value)
|
||||
if (recsectorGoods && recGood.idSectorGood) {
|
||||
return recGood.idSectorGood.includes(recsectorGoods.value)
|
||||
@@ -314,6 +314,15 @@ export default defineComponent({
|
||||
return true
|
||||
}
|
||||
}
|
||||
function getFilterBachecas(recBacheca: any, index: number, arr: any) {
|
||||
const recsectorBachecas: any = searchList.value.find((rec) => rec.table === toolsext.TABSECTORBACHECAS)
|
||||
// console.log('getFilterSkills', recSkill.idSector, recsectors.value)
|
||||
if (recsectorBachecas && recBacheca.idSectorBacheca) {
|
||||
return recBacheca.idSectorBacheca.includes(recsectorBachecas.value)
|
||||
} else {
|
||||
return true
|
||||
}
|
||||
}
|
||||
|
||||
function getFilterSubSkills(recSubSkill: any, index: number, arr: any) {
|
||||
const recskills: any = searchList.value.find((rec) => rec.table === 'skills')
|
||||
@@ -614,9 +623,9 @@ export default defineComponent({
|
||||
{
|
||||
visible: true,
|
||||
label: 'Settore',
|
||||
table: toolsext.TABSECTORS,
|
||||
key: 'idSector',
|
||||
value: tools.getCookie(tools.COOK_SEARCH + costanti.FILTER_SEP + props.table + costanti.FILTER_SEP + toolsext.TABSECTORS, 0, true),
|
||||
table: toolsext.TABSECTORBACHECAS,
|
||||
key: 'idSectorBacheca',
|
||||
value: tools.getCookie(tools.COOK_SEARCH + costanti.FILTER_SEP + props.table + costanti.FILTER_SEP + toolsext.TABSECTORBACHECAS, 0, true),
|
||||
arrvalue: [],
|
||||
type: costanti.FieldType.select,
|
||||
filter: null,
|
||||
@@ -624,6 +633,19 @@ export default defineComponent({
|
||||
notinsearch: false,
|
||||
useinput: false,
|
||||
},
|
||||
{
|
||||
visible: true,
|
||||
label: 'Categoria',
|
||||
table: 'bachecas',
|
||||
key: 'idBacheca',
|
||||
value: tools.getCookie(tools.COOK_SEARCH + costanti.FILTER_SEP + props.table + costanti.FILTER_SEP + tools.getCookie(tools.COOK_SEARCH + toolsext.TABSECTORBACHECAS, costanti.FILTER_TUTTI), costanti.FILTER_TUTTI, true),
|
||||
arrvalue: [],
|
||||
type: costanti.FieldType.select,
|
||||
addall: true,
|
||||
filter: getFilterBachecas,
|
||||
showcount: true,
|
||||
useinput: false,
|
||||
},
|
||||
{
|
||||
visible: true,
|
||||
label: 'Data Inizio',
|
||||
@@ -898,7 +920,7 @@ export default defineComponent({
|
||||
{
|
||||
visible: true,
|
||||
label: 'Settore',
|
||||
table: 'sectorgoods',
|
||||
table: toolsext.TABSECTORGOODS,
|
||||
key: 'idSectorGood',
|
||||
value: tools.getCookie(tools.COOK_SEARCH + costanti.FILTER_SEP + props.table + costanti.FILTER_SEP + toolsext.TABSECTORGOODS, 0, true),
|
||||
arrvalue: [],
|
||||
@@ -911,7 +933,7 @@ export default defineComponent({
|
||||
{
|
||||
visible: true,
|
||||
label: 'Categoria',
|
||||
table: 'goods',
|
||||
table: toolsext.TABGOODS,
|
||||
key: 'idGood',
|
||||
value: tools.getCookie(tools.COOK_SEARCH + costanti.FILTER_SEP + props.table + costanti.FILTER_SEP + tools.getCookie(tools.COOK_SEARCH + toolsext.TABSECTORGOODS, costanti.FILTER_TUTTI), costanti.FILTER_TUTTI, true),
|
||||
arrvalue: [],
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -1,14 +1,3 @@
|
||||
// ========================================
|
||||
// BASE STYLES
|
||||
// ========================================
|
||||
$primary-color: #1976d2;
|
||||
$border-radius: 10px;
|
||||
$transition-speed: 0.3s;
|
||||
$mobile-breakpoint: 768px;
|
||||
|
||||
@use 'sass:color';
|
||||
|
||||
|
||||
$shadow-sm: 0 1px 2px rgba(0, 0, 0, 0.06);
|
||||
$shadow-md: 0 2px 6px rgba(0, 0, 0, 0.08);
|
||||
$shadow-hover: 0 4px 12px rgba(25, 118, 210, 0.15);
|
||||
@@ -169,7 +158,7 @@ $shadow-hover: 0 4px 12px rgba(25, 118, 210, 0.15);
|
||||
gap: 8px;
|
||||
|
||||
// Desktop: layout a griglia 2 colonne
|
||||
@media (min-width: $mobile-breakpoint + 1) {
|
||||
@media (min-width: $mobile-breakpoint) {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(2, 1fr);
|
||||
gap: 10px;
|
||||
@@ -178,7 +167,7 @@ $shadow-hover: 0 4px 12px rgba(25, 118, 210, 0.15);
|
||||
|
||||
// Desktop large: 3 colonne per schermi molto larghi
|
||||
@media (min-width: 1400px) {
|
||||
grid-template-columns: repeat(3, 1fr);
|
||||
grid-template-columns: repeat(2, 1fr);
|
||||
gap: 12px;
|
||||
}
|
||||
|
||||
|
||||
@@ -854,6 +854,8 @@ export default defineComponent({
|
||||
setCategBySector(shared_consts.TABLES_MYSKILLS, table, newval);
|
||||
} else if (table === toolsext.TABSECTORGOODS) {
|
||||
setCategBySector(toolsext.TABGOODS, table, newval);
|
||||
} else if (table === toolsext.TABSECTORBACHECAS) {
|
||||
setCategBySector(toolsext.TABBACHECAS, table, newval);
|
||||
} else if (table === toolsext.TABREGIONS) {
|
||||
setProvinceByRegion(toolsext.TABPROVINCE, table, newval);
|
||||
} else if (table === toolsext.TABGOODS) {
|
||||
@@ -872,6 +874,22 @@ export default defineComponent({
|
||||
newval
|
||||
);
|
||||
}
|
||||
} else if (table === toolsext.TABBACHECAS) {
|
||||
const recSector = searchList.value.find(
|
||||
(rec) => rec.table === toolsext.TABSECTORBACHECAS
|
||||
);
|
||||
if (recSector) {
|
||||
tools.setCookie(
|
||||
tools.COOK_SEARCH +
|
||||
costanti.FILTER_SEP +
|
||||
mytable.value +
|
||||
costanti.FILTER_SEP +
|
||||
table +
|
||||
costanti.FILTER_SEP +
|
||||
recSector.value,
|
||||
newval
|
||||
);
|
||||
}
|
||||
} else if (table === shared_consts.TABLES_LISTA_EDITORI) {
|
||||
const rec = searchList.value.find((rec) => rec.table === table);
|
||||
if (rec) {
|
||||
@@ -1029,12 +1047,14 @@ export default defineComponent({
|
||||
|
||||
let recSector = null;
|
||||
let recSectorGood = null;
|
||||
let recSectorBacheca = null;
|
||||
let recCities = null;
|
||||
let recRegion = null;
|
||||
let recProvince = null;
|
||||
let recSkill = null;
|
||||
let idSector = 0;
|
||||
let idSectorGood = 0;
|
||||
let idSectorBacheca = 0;
|
||||
let idProvince = 0;
|
||||
let idRegion = 0;
|
||||
let idSkill = 0;
|
||||
@@ -1046,10 +1066,16 @@ export default defineComponent({
|
||||
}
|
||||
if (searchList.value) {
|
||||
recSectorGood = searchList.value.find(
|
||||
(item: ISearchList) => item.table === 'sectorgoods'
|
||||
(item: ISearchList) => item.table === toolsext.TABSECTORGOODS
|
||||
);
|
||||
idSectorGood = recSectorGood ? recSectorGood.value : 0;
|
||||
}
|
||||
if (searchList.value) {
|
||||
recSectorBacheca = searchList.value.find(
|
||||
(item: ISearchList) => item.table === toolsext.TABSECTORBACHECAS
|
||||
);
|
||||
idSectorBacheca = recSectorBacheca ? recSectorBacheca.value : 0;
|
||||
}
|
||||
if (searchList.value) {
|
||||
recProvince = searchList.value.find(
|
||||
(item: ISearchList) => item.table === 'provinces'
|
||||
@@ -1315,13 +1341,20 @@ export default defineComponent({
|
||||
obj2.idSkill = idSkill;
|
||||
filtersearch2.push(obj2);
|
||||
}
|
||||
} else if (item.table === 'goods' && item.value === costanti.FILTER_TUTTI) {
|
||||
} else if (item.table === toolsext.TABGOODS && item.value === costanti.FILTER_TUTTI) {
|
||||
const obj2: any = {};
|
||||
if (idSectorGood > 0) {
|
||||
// idSectorGood
|
||||
obj2['sectorGood._id'] = idSectorGood;
|
||||
filtersearch2.push(obj2);
|
||||
}
|
||||
} else if (item.table === toolsext.TABBACHECAS && item.value === costanti.FILTER_TUTTI) {
|
||||
const obj2: any = {};
|
||||
if (idSectorBacheca > 0) {
|
||||
// idSectorBacheca
|
||||
obj2['sectorBacheca._id'] = idSectorBacheca;
|
||||
filtersearch2.push(obj2);
|
||||
}
|
||||
} else if (
|
||||
item.table === 'subskills' &&
|
||||
item.value === costanti.FILTER_TUTTI
|
||||
@@ -1843,6 +1876,14 @@ export default defineComponent({
|
||||
newRecord.value.idGood = item.idGood;
|
||||
console.log('newRecord', newRecord);
|
||||
}
|
||||
} else if (col.jointable === toolsext.TABSECTORBACHECAS) {
|
||||
// Sbianca la select della Categoria Eventi
|
||||
|
||||
if (tools.existProp(item, 'idBacheca')) {
|
||||
item.idGood = costanti.FILTER_NESSUNO;
|
||||
newRecord.value.idBacheca = item.idBacheca;
|
||||
console.log('newRecord', newRecord);
|
||||
}
|
||||
}
|
||||
rowsel.value = item;
|
||||
idsel = item._id;
|
||||
@@ -2800,7 +2841,7 @@ export default defineComponent({
|
||||
return '';
|
||||
}
|
||||
|
||||
function cmdExt(cmd: any, id: any, myrec: any) {
|
||||
async function cmdExt(cmd: any, id: any, myrec: any) {
|
||||
console.log('cmd', cmd);
|
||||
|
||||
if (cmd === costanti.CMD_CLONE) {
|
||||
@@ -2817,9 +2858,11 @@ export default defineComponent({
|
||||
}
|
||||
|
||||
if (cmd === costanti.CMD_SHOW_PAGE) {
|
||||
visupagedialog.value = true;
|
||||
visupagedialog.value = false;
|
||||
await nextTick();
|
||||
myrecdialog.value = myrec;
|
||||
myIdRecDialog.value = id;
|
||||
visupagedialog.value = true;
|
||||
return true;
|
||||
} else if (cmd === costanti.CMD_OPEN_PAGE) {
|
||||
router.push(tools.getPathByTableAndRec(mytable.value, myrec));
|
||||
|
||||
@@ -1318,6 +1318,7 @@
|
||||
|
||||
<q-dialog
|
||||
v-model="showSearchDialog"
|
||||
:seamless="$q.screen.gt.xs"
|
||||
transition-show="slide-up"
|
||||
transition-hide="slide-down"
|
||||
class="q-dialog-fullscreen no-padding-dialog"
|
||||
@@ -1404,6 +1405,7 @@
|
||||
@hide="hidewindow"
|
||||
:maximized="$q.screen.lt.sm"
|
||||
:persistent="false"
|
||||
:seamless="$q.screen.gt.xs"
|
||||
:class="
|
||||
'dialog_annunci ' + ($q.screen.lt.sm ? 'bottom-dialog' : ' right-align-dialog')
|
||||
"
|
||||
@@ -1504,6 +1506,7 @@
|
||||
@hide="hidewindow"
|
||||
class="dialog_class"
|
||||
:persistent="true"
|
||||
:seamless="$q.screen.gt.xs"
|
||||
:maximized="$q.screen.lt.sm"
|
||||
>
|
||||
<q-card class="dialog_card">
|
||||
@@ -1582,11 +1585,6 @@
|
||||
</div>
|
||||
</q-card-section>
|
||||
<q-card-actions align="center">
|
||||
<q-btn
|
||||
:label="t('dialog.insert')"
|
||||
color="primary"
|
||||
@click="saveNewRecord"
|
||||
></q-btn>
|
||||
<q-btn
|
||||
flat
|
||||
:label="t('dialog.cancel')"
|
||||
@@ -1594,12 +1592,18 @@
|
||||
v-close-popup
|
||||
@click="annulla"
|
||||
></q-btn>
|
||||
<q-btn
|
||||
:label="t('dialog.insert')"
|
||||
color="primary"
|
||||
@click="saveNewRecord"
|
||||
></q-btn>
|
||||
</q-card-actions>
|
||||
</q-card>
|
||||
</q-dialog>
|
||||
<q-dialog
|
||||
v-model="editRecordBool"
|
||||
@hide="hidewindowEdit"
|
||||
:seamless="$q.screen.gt.xs"
|
||||
:maximized="$q.screen.lt.sm"
|
||||
>
|
||||
<q-card class="dialog_card">
|
||||
@@ -1672,17 +1676,17 @@
|
||||
</div>
|
||||
</q-card-section>
|
||||
<q-card-actions align="center">
|
||||
<q-btn
|
||||
:label="t('dialog.save')"
|
||||
color="primary"
|
||||
@click="saverecModif"
|
||||
></q-btn>
|
||||
<q-btn
|
||||
flat
|
||||
:label="t('dialog.cancel')"
|
||||
color="primary"
|
||||
@click="cancelrecModif"
|
||||
></q-btn>
|
||||
<q-btn
|
||||
:label="t('dialog.save')"
|
||||
color="primary"
|
||||
@click="saverecModif"
|
||||
></q-btn>
|
||||
</q-card-actions>
|
||||
</q-card>
|
||||
</q-dialog>
|
||||
|
||||
@@ -1,16 +1,3 @@
|
||||
// ========================================
|
||||
// VARIABILI
|
||||
// ========================================
|
||||
$primary-color: #1976d2;
|
||||
$grey-color: #666;
|
||||
$grey-light: #999;
|
||||
|
||||
$border-radius: 8px;
|
||||
$border-radius-sm: 6px;
|
||||
$transition-speed: 0.3s;
|
||||
|
||||
$shadow-sm: 0 1px 3px rgba(0, 0, 0, 0.08);
|
||||
$mobile-breakpoint: 768px;
|
||||
|
||||
// ========================================
|
||||
// GRID CONTAINER
|
||||
|
||||
@@ -593,6 +593,8 @@ export default defineComponent({
|
||||
setCategBySector(shared_consts.TABLES_MYSKILLS, table, newval)
|
||||
} else if (table === toolsext.TABSECTORGOODS) {
|
||||
setCategBySector(toolsext.TABGOODS, table, newval)
|
||||
} else if (table === toolsext.TABSECTORBACHECAS) {
|
||||
setCategBySector(toolsext.TABBACHECAS, table, newval)
|
||||
} else if (table === toolsext.TABREGIONS) {
|
||||
setProvinceByRegion(toolsext.TABPROVINCE, table, newval)
|
||||
} else if (table === toolsext.TABGOODS) {
|
||||
@@ -600,7 +602,11 @@ export default defineComponent({
|
||||
if (recSector) {
|
||||
tools.setCookie(tools.COOK_SEARCH + costanti.FILTER_SEP + mytable.value + costanti.FILTER_SEP + table + costanti.FILTER_SEP + recSector.value, newval)
|
||||
}
|
||||
// setCategBySector('sectorgoods', table, newval)
|
||||
} else if (table === toolsext.TABBACHECAS) {
|
||||
const recSector = searchList.value.find((rec) => rec.table === toolsext.TABSECTORBACHECAS)
|
||||
if (recSector) {
|
||||
tools.setCookie(tools.COOK_SEARCH + costanti.FILTER_SEP + mytable.value + costanti.FILTER_SEP + table + costanti.FILTER_SEP + recSector.value, newval)
|
||||
}
|
||||
} else if (table === shared_consts.TAB_CITIES) {
|
||||
const rec = searchList.value.find((myrec) => myrec.table === shared_consts.TAB_CITIES) // check if exist
|
||||
if (rec) {
|
||||
@@ -722,12 +728,14 @@ export default defineComponent({
|
||||
|
||||
let recSector = null
|
||||
let recSectorGood = null
|
||||
let recSectorBacheca = null
|
||||
let recCities = null
|
||||
let recRegion = null
|
||||
let recProvince = null
|
||||
let recSkill = null
|
||||
let idSector = 0
|
||||
let idSectorGood = 0
|
||||
let idSectorBacheca = 0
|
||||
let idProvince = 0
|
||||
let idRegion = 0
|
||||
let idSkill = 0
|
||||
@@ -736,9 +744,12 @@ export default defineComponent({
|
||||
recSector = searchList.value.find((item: ISearchList) => item.table === toolsext.TABSECTORS)
|
||||
idSector = recSector ? recSector.value : 0
|
||||
|
||||
recSectorGood = searchList.value.find((item: ISearchList) => item.table === 'sectorgoods')
|
||||
recSectorGood = searchList.value.find((item: ISearchList) => item.table === toolsext.TABSECTORGOODS)
|
||||
idSectorGood = recSectorGood ? recSectorGood.value : 0
|
||||
|
||||
recSectorBacheca = searchList.value.find((item: ISearchList) => item.table === toolsext.TABSECTORBACHECAS)
|
||||
idSectorBacheca = recSectorBacheca ? recSectorBacheca.value : 0
|
||||
|
||||
recProvince = searchList.value.find((item: ISearchList) => item.table === 'provinces')
|
||||
idProvince = recProvince ? recProvince.value : 0
|
||||
|
||||
@@ -888,13 +899,20 @@ export default defineComponent({
|
||||
obj2.idSkill = idSkill
|
||||
filtersearch2.push(obj2)
|
||||
}
|
||||
} else if ((item.table === 'goods') && item.value === costanti.FILTER_TUTTI) {
|
||||
} else if ((item.table === toolsext.TABGOODS) && item.value === costanti.FILTER_TUTTI) {
|
||||
const obj2: any = {}
|
||||
if (idSectorGood > 0) {
|
||||
// idSectorGood
|
||||
obj2['sectorGood._id'] = idSectorGood
|
||||
filtersearch2.push(obj2)
|
||||
}
|
||||
} else if (item.table === toolsext.TABBACHECAS && item.value === costanti.FILTER_TUTTI) {
|
||||
const obj2: any = {};
|
||||
if (idSectorBacheca > 0) {
|
||||
// idSectorBacheca
|
||||
obj2['sectorBacheca._id'] = idSectorBacheca;
|
||||
filtersearch2.push(obj2);
|
||||
}
|
||||
} else if ((item.table === 'subskills') && item.value === costanti.FILTER_TUTTI) {
|
||||
const obj2: any = {}
|
||||
// idSector
|
||||
@@ -1313,6 +1331,14 @@ export default defineComponent({
|
||||
newRecord.value.idGood = item.idGood
|
||||
console.log('newRecord', newRecord)
|
||||
}
|
||||
} else if (col.jointable === toolsext.TABSECTORBACHECAS) {
|
||||
// Sbianca la select della Categoria Bacheca
|
||||
|
||||
if (tools.existProp(item, 'idBacheca')) {
|
||||
item.idBacheca = costanti.FILTER_NESSUNO
|
||||
newRecord.value.idBacheca = item.idBacheca
|
||||
console.log('newRecord', newRecord)
|
||||
}
|
||||
}
|
||||
rowsel.value = item
|
||||
idsel = item._id
|
||||
|
||||
@@ -354,11 +354,6 @@
|
||||
</div>
|
||||
</q-card-section>
|
||||
<q-card-actions align="center">
|
||||
<q-btn
|
||||
:label="$t('dialog.insert')"
|
||||
color="primary"
|
||||
@click="saveNewRecord"
|
||||
></q-btn>
|
||||
<q-btn
|
||||
flat
|
||||
:label="$t('dialog.cancel')"
|
||||
@@ -366,6 +361,11 @@
|
||||
v-close-popup
|
||||
@click="annulla"
|
||||
></q-btn>
|
||||
<q-btn
|
||||
:label="$t('dialog.insert')"
|
||||
color="primary"
|
||||
@click="saveNewRecord"
|
||||
></q-btn>
|
||||
</q-card-actions>
|
||||
</q-card>
|
||||
</q-dialog>
|
||||
@@ -428,17 +428,17 @@
|
||||
</div>
|
||||
</q-card-section>
|
||||
<q-card-actions align="center">
|
||||
<q-btn
|
||||
:label="$t('dialog.ok')"
|
||||
color="primary"
|
||||
@click="saverecModif"
|
||||
></q-btn>
|
||||
<q-btn
|
||||
flat
|
||||
:label="$t('dialog.cancel')"
|
||||
color="primary"
|
||||
@click="cancelrecModif"
|
||||
></q-btn>
|
||||
<q-btn
|
||||
:label="$t('dialog.ok')"
|
||||
color="primary"
|
||||
@click="saverecModif"
|
||||
></q-btn>
|
||||
</q-card-actions>
|
||||
</q-card>
|
||||
</q-dialog>
|
||||
|
||||
@@ -18,16 +18,16 @@
|
||||
v-if="editing"
|
||||
class="button-group"
|
||||
>
|
||||
<q-btn
|
||||
flat
|
||||
:label="$t('dialog.cancel')"
|
||||
@click="cancelUpdate"
|
||||
/>
|
||||
<q-btn
|
||||
:label="$t('dialog.save')"
|
||||
color="positive"
|
||||
@click="confirmUpdate"
|
||||
/>
|
||||
<q-btn
|
||||
:label="$t('dialog.cancel')"
|
||||
color="negative"
|
||||
@click="cancelUpdate"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
@@ -1,43 +1,3 @@
|
||||
// ========================================
|
||||
// VARIABILI MODERNE CON GRADIENTI
|
||||
// ========================================
|
||||
$primary-color: #1976d2;
|
||||
$primary-light: #42a5f5;
|
||||
$primary-dark: #1565c0;
|
||||
$secondary-color: #26a69a;
|
||||
$positive-color: #21ba45;
|
||||
$negative-color: #c10015;
|
||||
$info-color: #31ccec;
|
||||
$warning-color: #f2c037;
|
||||
|
||||
@use 'sass:color';
|
||||
|
||||
$grey-text: #555;
|
||||
$grey-light: #999;
|
||||
$grey-dark: #333;
|
||||
|
||||
$border-radius: 12px;
|
||||
$border-radius-sm: 8px;
|
||||
$border-radius-lg: 16px;
|
||||
|
||||
$transition-speed: 0.3s;
|
||||
$shadow-sm: 0 1px 3px rgba(0, 0, 0, 0.08);
|
||||
$shadow-md: 0 2px 8px rgba(0, 0, 0, 0.1);
|
||||
$shadow-lg: 0 4px 16px rgba(0, 0, 0, 0.15);
|
||||
|
||||
$mobile-breakpoint: 768px;
|
||||
$small-breakpoint: 600px;
|
||||
|
||||
// ========================================
|
||||
// GRADIENTI MODERNI
|
||||
// ========================================
|
||||
$gradient-primary: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
|
||||
$gradient-secondary: linear-gradient(135deg, #f093fb 0%, #f5576c 100%);
|
||||
$gradient-info: linear-gradient(135deg, #4facfe 0%, #00f2fe 100%);
|
||||
$gradient-positive: linear-gradient(135deg, #43e97b 0%, #38f9d7 100%);
|
||||
$gradient-card-light: linear-gradient(135deg, #fdfbfb 0%, #ebedee 100%);
|
||||
$gradient-card-white: linear-gradient(to bottom, #ffffff 0%, #f8f9fa 100%);
|
||||
$gradient-hover: linear-gradient(135deg, rgba(102, 126, 234, 0.05) 0%, rgba(118, 75, 162, 0.05) 100%);
|
||||
|
||||
// ========================================
|
||||
// PROFILE (con gradiente)
|
||||
@@ -858,4 +818,77 @@ $gradient-hover: linear-gradient(135deg, rgba(102, 126, 234, 0.05) 0%, rgba(118,
|
||||
border-left: 4px solid $positive-color;
|
||||
background: linear-gradient(to right, rgba(33, 186, 69, 0.08), transparent 20%);
|
||||
box-shadow: 0 2px 12px rgba(33, 186, 69, 0.1);
|
||||
}
|
||||
|
||||
.category-hierarchy {
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
align-items: center;
|
||||
gap: 2px;
|
||||
|
||||
.hierarchy-arrow {
|
||||
opacity: 0.5;
|
||||
font-size: 16px;
|
||||
}
|
||||
|
||||
@media (max-width: $mobile-breakpoint) {
|
||||
gap: 0px;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
.tag-chip {
|
||||
height: 20px;
|
||||
font-size: 0.9rem;
|
||||
padding: 0 px;
|
||||
border-radius: 4px;
|
||||
box-shadow: none;
|
||||
font-weight: 500;
|
||||
|
||||
// Categoria principale - più scura e intensa
|
||||
&.sector {
|
||||
background: linear-gradient(135deg, $primary-color, #1976d2);
|
||||
color: white;
|
||||
}
|
||||
|
||||
// Sottocategoria - stessa base ma più chiara
|
||||
&.subsector {
|
||||
background: linear-gradient(135deg, color.adjust($primary-color, $lightness: 10%), #42a5f5);
|
||||
color: white;
|
||||
opacity: 0.9; // Opzionale: leggera trasparenza
|
||||
}
|
||||
|
||||
@media (max-width: $mobile-breakpoint) {
|
||||
height: 19px;
|
||||
font-size: 0.8rem;
|
||||
padding: 0 4px;
|
||||
}
|
||||
|
||||
:deep(.q-chip__content) {
|
||||
padding: 0;
|
||||
}
|
||||
}
|
||||
|
||||
.categories-dialog {
|
||||
.dialog-header {
|
||||
padding: 16px 20px;
|
||||
}
|
||||
|
||||
.dialog-content {
|
||||
padding: 20px;
|
||||
max-height: 60vh;
|
||||
overflow-y: auto;
|
||||
}
|
||||
|
||||
.categories-grid {
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
gap: 10px;
|
||||
}
|
||||
|
||||
.category-chip {
|
||||
font-size: 14px;
|
||||
padding: 8px 12px;
|
||||
font-weight: 500;
|
||||
}
|
||||
}
|
||||
@@ -87,6 +87,7 @@ export default defineComponent({
|
||||
|
||||
const showPic = ref(false)
|
||||
const loading = ref(false)
|
||||
const showPreferencesDialog = ref(false)
|
||||
|
||||
const $router = useRouter()
|
||||
|
||||
@@ -275,19 +276,21 @@ export default defineComponent({
|
||||
}
|
||||
|
||||
function getRecGoodSkillByRec(rec: any) {
|
||||
if (props.table === 'myskills')
|
||||
if ((props.table === toolsext.TABMYSKILLS) || (props.table === toolsext.TABMYBACHECAS))
|
||||
return rec.recSkill
|
||||
else if (props.table === 'mygoods')
|
||||
else if (props.table === toolsext.TABMYGOODS)
|
||||
return rec.recGood
|
||||
|
||||
return null
|
||||
}
|
||||
|
||||
function getSectorByRec(rec: any) {
|
||||
if (props.table === 'myskills')
|
||||
if (props.table === toolsext.TABMYSKILLS)
|
||||
return rec.sector
|
||||
else if (props.table === 'mygoods')
|
||||
else if (props.table === toolsext.TABMYGOODS)
|
||||
return rec.sectorGood
|
||||
else if (props.table === toolsext.TABMYBACHECAS)
|
||||
return rec.sectorBacheca
|
||||
|
||||
return null
|
||||
}
|
||||
@@ -674,10 +677,24 @@ export default defineComponent({
|
||||
emit('showInMap', rec)
|
||||
}
|
||||
|
||||
const arrSubSector = computed(() => {
|
||||
return tools.getArrSubSector(props.table, myrec.value);
|
||||
});
|
||||
const arrSector = computed(() => {
|
||||
return tools.getArrSector(props.table, myrec.value);
|
||||
});
|
||||
|
||||
const getColorSubSector = computed(() => {
|
||||
return arrSector.value && arrSector.value.length == 1 ? arrSector.value[0].color : 'primary'
|
||||
})
|
||||
|
||||
|
||||
onMounted(mounted)
|
||||
|
||||
return {
|
||||
getColorSubSector,
|
||||
arrSector,
|
||||
arrSubSector,
|
||||
expandDialog,
|
||||
profile,
|
||||
tools,
|
||||
@@ -735,6 +752,7 @@ export default defineComponent({
|
||||
updatePart,
|
||||
numpart,
|
||||
colmyUserPeople,
|
||||
showPreferencesDialog,
|
||||
}
|
||||
}
|
||||
})
|
||||
|
||||
@@ -431,6 +431,30 @@
|
||||
>
|
||||
</q-item-section>
|
||||
</q-item>
|
||||
<!--<q-item v-if="table === shared_consts.TABLES_MYHOSPS">
|
||||
<div
|
||||
v-if="myrec.preferences && myrec.preferences.length > 0"
|
||||
class="preferences-section q-mb-sm"
|
||||
>
|
||||
<div class="preferences-icons-container">
|
||||
<q-avatar
|
||||
v-for="(prefId, ind) of myrec.preferences"
|
||||
:key="ind"
|
||||
size="32px"
|
||||
:style="`background-color: ${tools.getPreferenceById(prefId)?.color || 'grey'}; cursor: pointer;`"
|
||||
class="preference-icon-avatar"
|
||||
@click.stop="showPreferencesDialog = true"
|
||||
>
|
||||
<q-icon
|
||||
:name="tools.getPreferenceById(prefId)?.icon || 'help'"
|
||||
size="18px"
|
||||
color="white"
|
||||
/>
|
||||
<q-tooltip>{{ tools.getPreferenceById(prefId)?.label }}</q-tooltip>
|
||||
</q-avatar>
|
||||
</div>
|
||||
</div>
|
||||
</q-item>-->
|
||||
<q-item
|
||||
v-if="
|
||||
myrec.idStatusSkill &&
|
||||
@@ -504,28 +528,49 @@
|
||||
|
||||
<q-item-section>
|
||||
<q-item-label>
|
||||
<q-chip
|
||||
v-if="getSectorByRec(myrec) && getSectorByRec(myrec)[0].descr"
|
||||
class="glossy"
|
||||
color="blue"
|
||||
text-color="white"
|
||||
dense
|
||||
>
|
||||
<span>{{ getSectorByRec(myrec)[0].descr }}</span>
|
||||
</q-chip>
|
||||
<q-chip
|
||||
v-if="
|
||||
getRecGoodSkillByRec(myrec) &&
|
||||
getRecGoodSkillByRec(myrec).length > 0 &&
|
||||
getRecGoodSkillByRec(myrec)[0].descr
|
||||
"
|
||||
class="glossy"
|
||||
dense
|
||||
color="blue"
|
||||
text-color="white"
|
||||
>
|
||||
<span>{{ getRecGoodSkillByRec(myrec)[0].descr }}</span>
|
||||
</q-chip>
|
||||
<div class="category-hierarchy">
|
||||
<q-chip
|
||||
v-for="(recSect, ind) of arrSector"
|
||||
:key="'sec-' + ind"
|
||||
class="tag-chip sector"
|
||||
:style="{
|
||||
background: `linear-gradient(135deg, ${recSect.color}, ${recSect.color})`,
|
||||
}"
|
||||
:color="recSect.color"
|
||||
>
|
||||
<q-icon
|
||||
v-if="recSect.icon"
|
||||
:name="recSect.icon"
|
||||
size="xs"
|
||||
class="q-mr-xs"
|
||||
/>
|
||||
{{ recSect.descr }}
|
||||
</q-chip>
|
||||
<q-icon
|
||||
v-if="arrSubSector.length > 0"
|
||||
name="chevron_right"
|
||||
size="sm"
|
||||
class="hierarchy-arrow"
|
||||
/>
|
||||
<q-chip
|
||||
v-for="(rec, ind) of arrSubSector"
|
||||
:key="'sub-' + ind"
|
||||
class="tag-chip subsector"
|
||||
:style="{
|
||||
background: `linear-gradient(135deg, ${getColorSubSector}, ${getColorSubSector})`,
|
||||
opacity: 0.8,
|
||||
}"
|
||||
:color="getColorSubSector"
|
||||
>
|
||||
<q-icon
|
||||
v-if="rec.icon"
|
||||
:name="rec.icon"
|
||||
size="xs"
|
||||
class="q-mr-xs"
|
||||
/>
|
||||
{{ rec.descr }}
|
||||
</q-chip>
|
||||
</div>
|
||||
</q-item-label>
|
||||
</q-item-section>
|
||||
</q-item>
|
||||
@@ -579,6 +624,7 @@
|
||||
:rec="myrec"
|
||||
:type="costanti.FieldType.multiselect"
|
||||
:value="myrec.preferences"
|
||||
size="md"
|
||||
:options="
|
||||
globalStore.getTableJoinByName(
|
||||
toolsext.TABPREF,
|
||||
@@ -589,7 +635,7 @@
|
||||
"
|
||||
:optval="fieldsTable.getKeyByTable(toolsext.TABPREF)"
|
||||
:optlab="fieldsTable.getLabelByTable(toolsext.TABPREF)"
|
||||
:opticon="fieldsTable.getIconByTable(toolsext.TABPREF)"
|
||||
:dense="false"
|
||||
></CMyChipList>
|
||||
</q-item-label>
|
||||
</q-item-section>
|
||||
@@ -1041,7 +1087,9 @@
|
||||
<span v-if="myrec.createdBy"
|
||||
><br />{{ $t('services.createdBy') }}
|
||||
<span class="text-bold"
|
||||
><a :href="'my/' + myrec.createdBy">{{ myrec.createdBy }}</a></span
|
||||
><a :href="'my/' + myrec.createdBy">{{
|
||||
myrec.createdBy
|
||||
}}</a></span
|
||||
></span
|
||||
>
|
||||
</q-item-label>
|
||||
@@ -1415,21 +1463,64 @@
|
||||
</div>
|
||||
</q-card-section>
|
||||
<q-card-actions align="right">
|
||||
<q-btn
|
||||
flat
|
||||
:label="$t('dialog.sendmsg')"
|
||||
color="primary"
|
||||
@click="sendMsg(true)"
|
||||
></q-btn>
|
||||
<q-btn
|
||||
flat
|
||||
:label="$t('dialog.cancel')"
|
||||
color="primary"
|
||||
v-close-popup
|
||||
></q-btn>
|
||||
<q-btn
|
||||
flat
|
||||
:label="$t('dialog.sendmsg')"
|
||||
color="primary"
|
||||
@click="sendMsg(true)"
|
||||
></q-btn>
|
||||
</q-card-actions>
|
||||
</q-card>
|
||||
</q-dialog>
|
||||
<!-- Categories Dialog -->
|
||||
<q-dialog v-model="showPreferencesDialog">
|
||||
<q-card
|
||||
class="categories-dialog"
|
||||
:style="{ minWidth: $q.screen.lt.sm ? '90vw' : '400px' }"
|
||||
>
|
||||
<q-card-section class="dialog-header">
|
||||
<div class="text-h6">Categorie</div>
|
||||
</q-card-section>
|
||||
|
||||
<q-separator />
|
||||
|
||||
<q-card-section class="dialog-content">
|
||||
<div class="categories-grid">
|
||||
<q-chip
|
||||
v-for="(rec, ind) of myrec.preferences"
|
||||
:key="ind"
|
||||
class="category-chip shadow-3"
|
||||
:style="`background-color: ${tools.getPreferenceById(rec).color}; color: white;`"
|
||||
>
|
||||
<q-icon
|
||||
:name="tools.getPreferenceById(rec).icon"
|
||||
left
|
||||
size="18px"
|
||||
/>
|
||||
{{ tools.getPreferenceById(rec).label }}
|
||||
</q-chip>
|
||||
</div>
|
||||
</q-card-section>
|
||||
|
||||
<q-separator />
|
||||
|
||||
<q-card-actions align="right">
|
||||
<q-btn
|
||||
flat
|
||||
label="Chiudi"
|
||||
color="primary"
|
||||
v-close-popup
|
||||
/>
|
||||
</q-card-actions>
|
||||
</q-card>
|
||||
</q-dialog>
|
||||
|
||||
<q-dialog
|
||||
v-model="bookEventpage.show"
|
||||
no-backdrop-dismiss
|
||||
@@ -1504,6 +1595,12 @@
|
||||
</div>
|
||||
|
||||
<q-card-actions align="right">
|
||||
<q-btn
|
||||
flat
|
||||
:label="$t('dialog.cancel')"
|
||||
color="primary"
|
||||
v-close-popup
|
||||
></q-btn>
|
||||
<q-btn
|
||||
v-if="bookEventpage.state === EState.Modifying"
|
||||
flat
|
||||
@@ -1525,13 +1622,6 @@
|
||||
@click="saveBookEvent"
|
||||
:disable="!(bookEventpage.state === EState.Creating || hasModifiedBooking)"
|
||||
></q-btn>
|
||||
|
||||
<q-btn
|
||||
flat
|
||||
:label="$t('dialog.cancel')"
|
||||
color="primary"
|
||||
v-close-popup
|
||||
></q-btn>
|
||||
</q-card-actions>
|
||||
</q-card>
|
||||
</q-dialog>
|
||||
|
||||
@@ -1,80 +1,72 @@
|
||||
// ========================================
|
||||
// CMyChipList - SCSS Moderno con Gradienti
|
||||
// CMyChipList - RISO Design System
|
||||
// ========================================
|
||||
|
||||
$primary-color: #1976d2;
|
||||
$primary-light: #42a5f5;
|
||||
$secondary-color: #26a69a;
|
||||
$positive-color: #21ba45;
|
||||
$negative-color: #c10015;
|
||||
$info-color: #31ccec;
|
||||
$warning-color: #f2c037;
|
||||
.c-chiplist {
|
||||
margin-bottom: $s-sm;
|
||||
|
||||
@use 'sass:color';
|
||||
|
||||
$border-radius-sm: 8px;
|
||||
$border-radius: 10px;
|
||||
$transition-speed: 0.3s;
|
||||
$shadow-sm: 0 1px 3px rgba(0, 0, 0, 0.08);
|
||||
$shadow-md: 0 2px 8px rgba(0, 0, 0, 0.1);
|
||||
|
||||
$mobile-breakpoint: 768px;
|
||||
|
||||
// ========================================
|
||||
// CONTAINER
|
||||
// ========================================
|
||||
.q-mb-sm {
|
||||
// Padding e margini ottimizzati
|
||||
@media (max-width: $mobile-breakpoint) {
|
||||
margin-bottom: 10px !important;
|
||||
@media (max-width: $mobile) {
|
||||
margin-bottom: $s-xs;
|
||||
}
|
||||
}
|
||||
|
||||
// ========================================
|
||||
// LABEL/TITLE (con gradiente sottile)
|
||||
// LABEL
|
||||
// ========================================
|
||||
.text-subtitle2 {
|
||||
&.text-primary {
|
||||
background: linear-gradient(135deg, $primary-color, color.adjust($primary-color, $lightness: 15%));
|
||||
-webkit-background-clip: text;
|
||||
-webkit-text-fill-color: transparent;
|
||||
background-clip: text;
|
||||
font-weight: 600;
|
||||
letter-spacing: 0.02em;
|
||||
margin-bottom: 8px;
|
||||
.c-chiplist__label {
|
||||
font-size: 0.9125rem;
|
||||
font-weight: 600;
|
||||
color: $mainColor;
|
||||
margin-bottom: $s-xs;
|
||||
letter-spacing: 0.02em;
|
||||
background: linear-gradient(135deg, $mainColor, lighten($mainColor, 12%));
|
||||
-webkit-background-clip: text;
|
||||
-webkit-text-fill-color: transparent;
|
||||
background-clip: text;
|
||||
|
||||
@media (max-width: $mobile-breakpoint) {
|
||||
font-size: 0.875rem;
|
||||
margin-bottom: 6px;
|
||||
}
|
||||
@media (max-width: $mobile) {
|
||||
font-size: 0.85rem;
|
||||
margin-bottom: 4px;
|
||||
}
|
||||
}
|
||||
|
||||
// ========================================
|
||||
// CHIPS CONTAINER
|
||||
// ========================================
|
||||
.q-gutter-sm {
|
||||
&.row.wrap {
|
||||
gap: 8px;
|
||||
.c-chiplist__chips {
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
gap: 6px;
|
||||
|
||||
@media (max-width: $mobile-breakpoint) {
|
||||
gap: 6px;
|
||||
}
|
||||
@media (max-width: $mobile) {
|
||||
gap: 4px;
|
||||
}
|
||||
}
|
||||
|
||||
// ========================================
|
||||
// SINGLE CHIP (con gradienti bellissimi!)
|
||||
// SINGLE CHIP - RISO Style
|
||||
// ========================================
|
||||
.q-chip {
|
||||
.c-chip {
|
||||
position: relative;
|
||||
overflow: hidden;
|
||||
transition: all $transition-speed cubic-bezier(0.4, 0, 0.2, 1);
|
||||
border-radius: $border-radius !important;
|
||||
border-radius: 20px !important;
|
||||
font-size: 0.9125rem;
|
||||
font-weight: 500;
|
||||
letter-spacing: 0.01em;
|
||||
padding: 4px 10px !important;
|
||||
height: auto !important;
|
||||
min-height: 26px;
|
||||
transition: all 0.25s cubic-bezier(0.4, 0, 0.2, 1);
|
||||
box-shadow: 0 1px 3px rgba(0, 0, 0, 0.12), 0 1px 2px rgba(0, 0, 0, 0.08);
|
||||
|
||||
@media (max-width: $mobile) {
|
||||
font-size: 0.85rem;
|
||||
padding: 2px 4px !important;
|
||||
min-height: 24px;
|
||||
border-radius: 16px !important;
|
||||
}
|
||||
|
||||
// Effetto luce scorrevole
|
||||
// Gradiente di luce animato
|
||||
&::before {
|
||||
content: '';
|
||||
position: absolute;
|
||||
@@ -82,171 +74,255 @@ $mobile-breakpoint: 768px;
|
||||
left: -100%;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
background: linear-gradient(90deg, transparent, rgba(255, 255, 255, 0.3), transparent);
|
||||
background: linear-gradient(90deg,
|
||||
transparent,
|
||||
rgba(255, 255, 255, 0.25),
|
||||
transparent
|
||||
);
|
||||
transition: left 0.5s ease;
|
||||
}
|
||||
|
||||
// Shadow con gradiente
|
||||
&.shadow-1 {
|
||||
box-shadow: 0 2px 6px rgba(0, 0, 0, 0.12);
|
||||
// Testo con ombra per leggibilità
|
||||
&::v-deep(.q-chip__content) {
|
||||
text-shadow: 0 1px 2px rgba(0, 0, 0, 0.15);
|
||||
white-space: nowrap;
|
||||
|
||||
@media (max-width: $mobile) {
|
||||
font-size: 0.75rem;
|
||||
}
|
||||
}
|
||||
|
||||
// Padding compatto
|
||||
&.q-px-sm {
|
||||
padding-left: 10px !important;
|
||||
padding-right: 10px !important;
|
||||
|
||||
@media (max-width: $mobile-breakpoint) {
|
||||
padding-left: 8px !important;
|
||||
padding-right: 8px !important;
|
||||
font-size: 0.8125rem !important;
|
||||
// Icona
|
||||
&::v-deep(.q-icon) {
|
||||
font-size: 1rem;
|
||||
margin-right: 4px;
|
||||
transition: transform 0.25s ease;
|
||||
|
||||
@media (max-width: $mobile) {
|
||||
font-size: 0.875rem;
|
||||
margin-right: 3px;
|
||||
}
|
||||
}
|
||||
|
||||
// Hover effect
|
||||
&:hover {
|
||||
transform: translateY(-2px) scale(1.02);
|
||||
box-shadow: 0 4px 12px rgba(0, 0, 0, 0.18);
|
||||
transform: translateY(-1px) scale(1.02);
|
||||
box-shadow: 0 3px 8px rgba(0, 0, 0, 0.16), 0 2px 4px rgba(0, 0, 0, 0.12);
|
||||
|
||||
&::before {
|
||||
left: 100%;
|
||||
}
|
||||
}
|
||||
|
||||
// Colori con gradienti
|
||||
&[class*='bg-primary'],
|
||||
&[class*='bg-blue'] {
|
||||
background: linear-gradient(135deg, $primary-color, color.adjust($primary-color, $lightness: 10%)) !important;
|
||||
box-shadow: 0 2px 8px rgba($primary-color, 0.3);
|
||||
|
||||
&:hover {
|
||||
background: linear-gradient(135deg, color.adjust($primary-color, $lightness: -5%), $primary-color) !important;
|
||||
box-shadow: 0 4px 12px rgba($primary-color, 0.4);
|
||||
&::v-deep(.q-icon) {
|
||||
transform: scale(1.1) rotate(5deg);
|
||||
}
|
||||
}
|
||||
|
||||
&[class*='bg-secondary'],
|
||||
&[class*='bg-teal'] {
|
||||
background: linear-gradient(135deg, $secondary-color, color.adjust($secondary-color, $lightness: 10%)) !important;
|
||||
box-shadow: 0 2px 8px rgba($secondary-color, 0.3);
|
||||
|
||||
&:hover {
|
||||
background: linear-gradient(135deg, color.adjust($secondary-color, $lightness: -5%), $secondary-color) !important;
|
||||
box-shadow: 0 4px 12px rgba($secondary-color, 0.4);
|
||||
}
|
||||
}
|
||||
|
||||
&[class*='bg-positive'],
|
||||
&[class*='bg-green'] {
|
||||
background: linear-gradient(135deg, $positive-color, color.adjust($positive-color, $lightness: 10%)) !important;
|
||||
box-shadow: 0 2px 8px rgba($positive-color, 0.3);
|
||||
|
||||
&:hover {
|
||||
background: linear-gradient(135deg, color.adjust($positive-color, $lightness: -5%), $positive-color) !important;
|
||||
box-shadow: 0 4px 12px rgba($positive-color, 0.4);
|
||||
}
|
||||
}
|
||||
|
||||
&[class*='bg-negative'],
|
||||
&[class*='bg-red'] {
|
||||
background: linear-gradient(135deg, $negative-color, color.adjust($negative-color, $lightness: 10%)) !important;
|
||||
box-shadow: 0 2px 8px rgba($negative-color, 0.3);
|
||||
|
||||
&:hover {
|
||||
background: linear-gradient(135deg, color.adjust($negative-color, $lightness: -5%), $negative-color) !important;
|
||||
box-shadow: 0 4px 12px rgba($negative-color, 0.4);
|
||||
}
|
||||
}
|
||||
|
||||
&[class*='bg-warning'],
|
||||
&[class*='bg-orange'],
|
||||
&[class*='bg-amber'] {
|
||||
background: linear-gradient(135deg, $warning-color, color.adjust($warning-color, $lightness: 10%)) !important;
|
||||
box-shadow: 0 2px 8px rgba($warning-color, 0.3);
|
||||
|
||||
&:hover {
|
||||
background: linear-gradient(135deg, color.adjust($warning-color, $lightness: -5%), $warning-color) !important;
|
||||
box-shadow: 0 4px 12px rgba($warning-color, 0.4);
|
||||
}
|
||||
}
|
||||
|
||||
&[class*='bg-info'],
|
||||
&[class*='bg-cyan'] {
|
||||
background: linear-gradient(135deg, $info-color, color.adjust($info-color, $lightness: 10%)) !important;
|
||||
box-shadow: 0 2px 8px rgba($info-color, 0.3);
|
||||
|
||||
&:hover {
|
||||
background: linear-gradient(135deg, color.adjust($info-color, $lightness: -5%), $info-color) !important;
|
||||
box-shadow: 0 4px 12px rgba($info-color, 0.4);
|
||||
}
|
||||
}
|
||||
|
||||
&[class*='bg-purple'] {
|
||||
background: linear-gradient(135deg, #9c27b0, color.adjust(#9c27b0, $lightness: 10%)) !important;
|
||||
box-shadow: 0 2px 8px rgba(#9c27b0, 0.3);
|
||||
|
||||
&:hover {
|
||||
background: linear-gradient(135deg, color.adjust(#9c27b0, $lightness: -5%), #9c27b0) !important;
|
||||
box-shadow: 0 4px 12px rgba(#9c27b0, 0.4);
|
||||
}
|
||||
}
|
||||
|
||||
&[class*='bg-pink'] {
|
||||
background: linear-gradient(135deg, #e91e63, color.adjust(#e91e63, $lightness: 10%)) !important;
|
||||
box-shadow: 0 2px 8px rgba(#e91e63, 0.3);
|
||||
|
||||
&:hover {
|
||||
background: linear-gradient(135deg, color.adjust(#e91e63, $lightness: -5%), #e91e63) !important;
|
||||
box-shadow: 0 4px 12px rgba(#e91e63, 0.4);
|
||||
}
|
||||
}
|
||||
|
||||
&[class*='bg-grey'],
|
||||
&[class*='bg-gray'] {
|
||||
background: linear-gradient(135deg, #757575, color.adjust(#757575, $lightness: 10%)) !important;
|
||||
box-shadow: 0 2px 8px rgba(#757575, 0.3);
|
||||
|
||||
&:hover {
|
||||
background: linear-gradient(135deg, color.adjust(#757575, $lightness: -5%), #757575) !important;
|
||||
box-shadow: 0 4px 12px rgba(#757575, 0.4);
|
||||
}
|
||||
}
|
||||
|
||||
// Icon dentro il chip
|
||||
.q-icon {
|
||||
transition: transform $transition-speed ease;
|
||||
}
|
||||
|
||||
&:hover .q-icon {
|
||||
transform: scale(1.1) rotate(5deg);
|
||||
}
|
||||
|
||||
// Text color bianco con ombra sottile per leggibilità
|
||||
&[class*='text-white'] {
|
||||
text-shadow: 0 1px 2px rgba(0, 0, 0, 0.15);
|
||||
}
|
||||
}
|
||||
|
||||
// ========================================
|
||||
// DENSE VARIANT
|
||||
// ========================================
|
||||
.q-chip--dense {
|
||||
padding: 3px 8px !important;
|
||||
font-size: 0.8125rem;
|
||||
|
||||
@media (max-width: $mobile-breakpoint) {
|
||||
padding: 2px 6px !important;
|
||||
// Dense variant
|
||||
&.q-chip--dense {
|
||||
padding: 3px 8px !important;
|
||||
min-height: 24px;
|
||||
font-size: 0.75rem;
|
||||
|
||||
@media (max-width: $mobile) {
|
||||
padding: 2px 6px !important;
|
||||
min-height: 22px;
|
||||
font-size: 0.6875rem;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// ========================================
|
||||
// ANIMATION
|
||||
// SIZE VARIANTS
|
||||
// ========================================
|
||||
@keyframes chipAppear {
|
||||
|
||||
// Medium size
|
||||
.c-chip--md {
|
||||
font-size: 0.9375rem !important;
|
||||
padding: 6px 14px !important;
|
||||
min-height: 34px !important;
|
||||
border-radius: 24px !important;
|
||||
|
||||
&::v-deep(.q-chip__content) {
|
||||
font-size: 0.9375rem;
|
||||
}
|
||||
|
||||
&::v-deep(.q-icon) {
|
||||
font-size: 1.25rem !important;
|
||||
margin-right: 6px;
|
||||
}
|
||||
|
||||
@media (max-width: $mobile) {
|
||||
font-size: 0.875rem !important;
|
||||
padding: 5px 12px !important;
|
||||
min-height: 32px !important;
|
||||
border-radius: 20px !important;
|
||||
|
||||
&::v-deep(.q-chip__content) {
|
||||
font-size: 0.875rem;
|
||||
}
|
||||
|
||||
&::v-deep(.q-icon) {
|
||||
font-size: 1.125rem !important;
|
||||
margin-right: 5px;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Large size
|
||||
.c-chip--lg {
|
||||
font-size: 1.0625rem !important;
|
||||
padding: 8px 18px !important;
|
||||
min-height: 42px !important;
|
||||
border-radius: 28px !important;
|
||||
font-weight: 600;
|
||||
|
||||
&::v-deep(.q-chip__content) {
|
||||
font-size: 1.0625rem;
|
||||
font-weight: 600;
|
||||
}
|
||||
|
||||
&::v-deep(.q-icon) {
|
||||
font-size: 1.5rem !important;
|
||||
margin-right: 8px;
|
||||
}
|
||||
|
||||
@media (max-width: $mobile) {
|
||||
font-size: 1rem !important;
|
||||
padding: 7px 16px !important;
|
||||
min-height: 38px !important;
|
||||
border-radius: 24px !important;
|
||||
|
||||
&::v-deep(.q-chip__content) {
|
||||
font-size: 1rem;
|
||||
}
|
||||
|
||||
&::v-deep(.q-icon) {
|
||||
font-size: 1.375rem !important;
|
||||
margin-right: 7px;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// ========================================
|
||||
// GRADIENTI PER COLORI - RISO Style
|
||||
// ========================================
|
||||
|
||||
// Blue/Primary
|
||||
.c-chip.bg-blue,
|
||||
.c-chip.bg-primary,
|
||||
.c-chip.bg-indigo,
|
||||
.c-chip.bg-light-blue {
|
||||
background: linear-gradient(135deg, #1976d2, #42a5f5) !important;
|
||||
|
||||
&:hover {
|
||||
background: linear-gradient(135deg, #1565c0, #1976d2) !important;
|
||||
}
|
||||
}
|
||||
|
||||
// Teal/Cyan
|
||||
.c-chip.bg-teal,
|
||||
.c-chip.bg-cyan {
|
||||
background: linear-gradient(135deg, #00897b, #26a69a) !important;
|
||||
|
||||
&:hover {
|
||||
background: linear-gradient(135deg, #00796b, #00897b) !important;
|
||||
}
|
||||
}
|
||||
|
||||
// Green
|
||||
.c-chip.bg-green,
|
||||
.c-chip.bg-light-green {
|
||||
background: linear-gradient(135deg, #388e3c, #66bb6a) !important;
|
||||
|
||||
&:hover {
|
||||
background: linear-gradient(135deg, #2e7d32, #388e3c) !important;
|
||||
}
|
||||
}
|
||||
|
||||
// Purple/Deep Purple
|
||||
.c-chip.bg-purple,
|
||||
.c-chip.bg-deep-purple {
|
||||
background: linear-gradient(135deg, #7b1fa2, #9c27b0) !important;
|
||||
|
||||
&:hover {
|
||||
background: linear-gradient(135deg, #6a1b9a, #7b1fa2) !important;
|
||||
}
|
||||
}
|
||||
|
||||
// Pink
|
||||
.c-chip.bg-pink {
|
||||
background: linear-gradient(135deg, #c2185b, #e91e63) !important;
|
||||
|
||||
&:hover {
|
||||
background: linear-gradient(135deg, #ad1457, #c2185b) !important;
|
||||
}
|
||||
}
|
||||
|
||||
// Orange/Amber
|
||||
.c-chip.bg-orange,
|
||||
.c-chip.bg-amber,
|
||||
.c-chip.bg-deep-orange {
|
||||
background: linear-gradient(135deg, #f57c00, #ff9800) !important;
|
||||
|
||||
&:hover {
|
||||
background: linear-gradient(135deg, #ef6c00, #f57c00) !important;
|
||||
}
|
||||
}
|
||||
|
||||
// Yellow/Lime
|
||||
.c-chip.bg-yellow,
|
||||
.c-chip.bg-lime {
|
||||
background: linear-gradient(135deg, #f9a825, #fdd835) !important;
|
||||
color: rgba(0, 0, 0, 0.87) !important;
|
||||
|
||||
&::v-deep(.q-chip__content) {
|
||||
text-shadow: 0 1px 1px rgba(255, 255, 255, 0.5);
|
||||
color: rgba(0, 0, 0, 0.87) !important;
|
||||
}
|
||||
|
||||
&:hover {
|
||||
background: linear-gradient(135deg, #f57f17, #f9a825) !important;
|
||||
}
|
||||
}
|
||||
|
||||
// Red/Negative
|
||||
.c-chip.bg-red,
|
||||
.c-chip.bg-negative {
|
||||
background: linear-gradient(135deg, #c62828, #e53935) !important;
|
||||
|
||||
&:hover {
|
||||
background: linear-gradient(135deg, #b71c1c, #c62828) !important;
|
||||
}
|
||||
}
|
||||
|
||||
// Brown
|
||||
.c-chip.bg-brown {
|
||||
background: linear-gradient(135deg, #5d4037, #6d4c41) !important;
|
||||
|
||||
&:hover {
|
||||
background: linear-gradient(135deg, #4e342e, #5d4037) !important;
|
||||
}
|
||||
}
|
||||
|
||||
// Grey/Blue Grey
|
||||
.c-chip.bg-grey,
|
||||
.c-chip.bg-gray,
|
||||
.c-chip.bg-blue-grey {
|
||||
background: linear-gradient(135deg, #546e7a, #78909c) !important;
|
||||
|
||||
&:hover {
|
||||
background: linear-gradient(135deg, #455a64, #546e7a) !important;
|
||||
}
|
||||
}
|
||||
|
||||
// ========================================
|
||||
// ANIMAZIONE INGRESSO
|
||||
// ========================================
|
||||
@keyframes chipFadeIn {
|
||||
from {
|
||||
opacity: 0;
|
||||
transform: scale(0.8) translateY(10px);
|
||||
transform: scale(0.92) translateY(4px);
|
||||
}
|
||||
to {
|
||||
opacity: 1;
|
||||
@@ -254,29 +330,28 @@ $mobile-breakpoint: 768px;
|
||||
}
|
||||
}
|
||||
|
||||
.q-chip {
|
||||
animation: chipAppear 0.3s ease-out;
|
||||
animation-fill-mode: both;
|
||||
.c-chip {
|
||||
animation: chipFadeIn 0.25s ease-out backwards;
|
||||
|
||||
// Stagger animation per chip multipli
|
||||
@for $i from 1 through 20 {
|
||||
// Stagger per chip multipli
|
||||
@for $i from 1 through 25 {
|
||||
&:nth-child(#{$i}) {
|
||||
animation-delay: #{$i * 0.05}s;
|
||||
animation-delay: #{$i * 0.04}s;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// ========================================
|
||||
// GLASSMORPHISM VARIANT (opzionale)
|
||||
// RESPONSIVE TOUCH OPTIMIZATION
|
||||
// ========================================
|
||||
.q-chip.glass-effect {
|
||||
background: rgba(255, 255, 255, 0.2) !important;
|
||||
backdrop-filter: blur(10px);
|
||||
border: 1px solid rgba(255, 255, 255, 0.3);
|
||||
box-shadow: 0 4px 16px rgba(0, 0, 0, 0.1);
|
||||
|
||||
&:hover {
|
||||
background: rgba(255, 255, 255, 0.3) !important;
|
||||
box-shadow: 0 6px 20px rgba(0, 0, 0, 0.15);
|
||||
@media (max-width: $mobile) {
|
||||
.c-chip {
|
||||
// Touch target più grande su mobile
|
||||
min-height: 28px;
|
||||
|
||||
&:active {
|
||||
transform: scale(0.96);
|
||||
transition-duration: 0.1s;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -63,6 +63,12 @@ export default defineComponent({
|
||||
required: false,
|
||||
default: '',
|
||||
},
|
||||
size: {
|
||||
type: String,
|
||||
required: false,
|
||||
default: 'sm',
|
||||
validator: (value: string) => ['sm', 'md', 'lg'].includes(value),
|
||||
},
|
||||
},
|
||||
components: {},
|
||||
setup(props, { emit }) {
|
||||
@@ -85,7 +91,7 @@ export default defineComponent({
|
||||
// --- MULTISELECT: itera sulle selezioni, non sulle options ---
|
||||
if (props.type === costanti.FieldType.multiselect) {
|
||||
if (Array.isArray(myval.value) && myval.value.length) {
|
||||
myval.value.forEach((recout, idx) => {
|
||||
myval.value.forEach((recout: any, idx) => {
|
||||
// valore "chiave" della selezione
|
||||
const value =
|
||||
props.type_out === costanti.FieldType.object
|
||||
@@ -105,14 +111,14 @@ export default defineComponent({
|
||||
recFromOptions || (typeof recout === 'object' ? recout : null);
|
||||
|
||||
const mydata = {
|
||||
label: null,
|
||||
label: '',
|
||||
value,
|
||||
valbool: true,
|
||||
icon: '',
|
||||
icon: baseRec?.icon || '',
|
||||
// priorità: optcolor -> color su record -> fallback colore
|
||||
color:
|
||||
(props.optcolor && baseRec?.[props.optcolor]) ||
|
||||
baseRec?.color ||
|
||||
(props.optcolor && baseRec?.[props.optcolor]) ||
|
||||
tools.getColorByIndexBest(idx),
|
||||
};
|
||||
|
||||
@@ -146,17 +152,17 @@ export default defineComponent({
|
||||
} else if (props.type === costanti.FieldType.select) {
|
||||
// --- SELECT: itera sulle options e trova la corrispondenza ---
|
||||
if (Array.isArray(props.options) && props.options.length) {
|
||||
props.options.forEach((rec, index) => {
|
||||
props.options.forEach((rec: any, index) => {
|
||||
if (myval.value === rec?.[props.optval]) {
|
||||
const mydata = {
|
||||
value: myval.value,
|
||||
valbool: true,
|
||||
icon: '',
|
||||
color:
|
||||
(props.optcolor && rec?.[props.optcolor]) ||
|
||||
rec?.color ||
|
||||
(props.optcolor && rec?.[props.optcolor]) ||
|
||||
tools.getColorByIndexBest(index),
|
||||
label: null,
|
||||
label: '',
|
||||
};
|
||||
|
||||
if (props.opticon && rec?.[props.opticon]) mydata.icon = rec[props.opticon];
|
||||
@@ -182,23 +188,26 @@ export default defineComponent({
|
||||
} else {
|
||||
// --- BITMASK (o altro tipo legacy): itera sulle options e verifica i bit attivi ---
|
||||
if (Array.isArray(props.options) && props.options.length) {
|
||||
props.options.forEach((rec, index) => {
|
||||
props.options.forEach((rec: any, index) => {
|
||||
const optVal = rec?.[props.optval];
|
||||
if (optVal == null) return;
|
||||
|
||||
|
||||
if (tools.isBitActive(myval.value, optVal)) {
|
||||
const mydata = {
|
||||
label: t(tools.getValueByFunzOrVal(rec, props.optlab)),
|
||||
value: optVal,
|
||||
valbool: true,
|
||||
icon: '',
|
||||
icon: tools.getValueByFunzOrVal(rec, 'icon') || '',
|
||||
color:
|
||||
rec.color ||
|
||||
(props.optcolor && rec?.[props.optcolor]) ||
|
||||
rec?.color ||
|
||||
tools.getColorByIndexBest(index),
|
||||
};
|
||||
|
||||
if (props.opticon && rec?.[props.opticon]) mydata.icon = rec[props.opticon];
|
||||
if (rec[props.opticon]) {
|
||||
if (props.opticon && rec?.[props.opticon]) mydata.icon = rec[props.opticon];
|
||||
}
|
||||
|
||||
myarrvalues.value.push(mydata);
|
||||
}
|
||||
@@ -215,7 +224,7 @@ export default defineComponent({
|
||||
label: props.rec?.[props.optlab],
|
||||
value: 0,
|
||||
valbool: true,
|
||||
icon: '',
|
||||
icon: props.rec?.icon || '',
|
||||
color: tools.getColorByIndexBest(0),
|
||||
};
|
||||
|
||||
|
||||
@@ -1,21 +1,18 @@
|
||||
<template>
|
||||
<div class="q-mb-sm">
|
||||
<!-- Etichetta / Titolo -->
|
||||
<div class="text-subtitle2 text-primary text-weight-medium q-mb-xs">
|
||||
<div class="c-chiplist">
|
||||
<div v-if="label" class="c-chiplist__label">
|
||||
{{ label }}
|
||||
</div>
|
||||
|
||||
<!-- Chips come valori -->
|
||||
<div class="q-gutter-sm row wrap">
|
||||
<div class="c-chiplist__chips">
|
||||
<q-chip
|
||||
v-for="(rec, index) in myarrvalues"
|
||||
:key="index"
|
||||
:dense="dense"
|
||||
class="shadow-1 q-px-sm"
|
||||
:color="rec.color || 'primary'"
|
||||
:class="['c-chip', `c-chip--${size}`]"
|
||||
:style="{ 'background-color': rec.color || 'var(--q-primary)' }"
|
||||
text-color="white"
|
||||
:icon="rec.icon || undefined"
|
||||
style="border-radius: 10px;"
|
||||
>
|
||||
{{ rec.label }}
|
||||
</q-chip>
|
||||
|
||||
@@ -580,6 +580,12 @@
|
||||
</div>
|
||||
</q-card-section>
|
||||
<q-card-actions align="center">
|
||||
<q-btn
|
||||
outline
|
||||
:label="$t('dialog.cancel')"
|
||||
icon="close"
|
||||
v-close-popup
|
||||
></q-btn>
|
||||
<q-btn
|
||||
class="centeritems q-ma-lg"
|
||||
icon="fas fa-user-plus"
|
||||
@@ -597,12 +603,6 @@
|
||||
);
|
||||
"
|
||||
/>
|
||||
<q-btn
|
||||
outline
|
||||
:label="$t('dialog.cancel')"
|
||||
icon="close"
|
||||
v-close-popup
|
||||
></q-btn>
|
||||
</q-card-actions>
|
||||
</q-card>
|
||||
</q-dialog>
|
||||
|
||||
@@ -1,29 +1,3 @@
|
||||
// ========================================
|
||||
// CMyGroup - SCSS Moderno con Gradienti
|
||||
// ========================================
|
||||
|
||||
$primary-color: #1976d2;
|
||||
$primary-light: #42a5f5;
|
||||
$primary-dark: #1565c0;
|
||||
$secondary-color: #26a69a;
|
||||
$positive-color: #21ba45;
|
||||
$negative-color: #c10015;
|
||||
$info-color: #31ccec;
|
||||
$warning-color: #f2c037;
|
||||
|
||||
@use 'sass:color';
|
||||
|
||||
$grey-text: #555;
|
||||
$grey-light: #999;
|
||||
|
||||
$border-radius-sm: 8px;
|
||||
$border-radius: 12px;
|
||||
$transition-speed: 0.3s;
|
||||
$shadow-sm: 0 1px 3px rgba(0, 0, 0, 0.08);
|
||||
$shadow-md: 0 2px 8px rgba(0, 0, 0, 0.1);
|
||||
$shadow-lg: 0 4px 16px rgba(0, 0, 0, 0.15);
|
||||
|
||||
$mobile-breakpoint: 768px;
|
||||
|
||||
// Gradiente speciale per gruppi
|
||||
$gradient-group-primary: linear-gradient(135deg, $secondary-color 0%, color.adjust($secondary-color, $lightness: 15%) 100%);
|
||||
|
||||
@@ -1,23 +1,3 @@
|
||||
|
||||
// ========================================
|
||||
// VARIABILI
|
||||
// ========================================
|
||||
$primary-color: #1976d2;
|
||||
$positive-color: #21ba45;
|
||||
$negative-color: #c10015;
|
||||
$grey-color: #666;
|
||||
$grey-light: #999;
|
||||
|
||||
$border-radius: 10px;
|
||||
$border-radius-sm: 6px;
|
||||
$transition-speed: 0.3s;
|
||||
|
||||
$shadow-sm: 0 1px 2px rgba(0, 0, 0, 0.06);
|
||||
$shadow-md: 0 2px 6px rgba(0, 0, 0, 0.08);
|
||||
$shadow-hover: 0 4px 12px rgba(0, 0, 0, 0.12);
|
||||
|
||||
$mobile-breakpoint: 768px;
|
||||
|
||||
// ========================================
|
||||
// WRAPPER CARD - ALTERNATING COLORS
|
||||
// ========================================
|
||||
@@ -269,10 +249,16 @@ $mobile-breakpoint: 768px;
|
||||
|
||||
.tags-row {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
flex-wrap: wrap;
|
||||
gap: 3px;
|
||||
margin-bottom: 3px;
|
||||
align-items: center;
|
||||
|
||||
.status-row {
|
||||
display: flex;
|
||||
gap: $s-xs;
|
||||
flex-wrap: wrap;
|
||||
}
|
||||
|
||||
@media (max-width: $mobile-breakpoint) {
|
||||
gap: 2px;
|
||||
@@ -329,7 +315,8 @@ $mobile-breakpoint: 768px;
|
||||
|
||||
.description-text {
|
||||
font-size: 0.9375rem;
|
||||
color: #333;
|
||||
color: #2c3e50;
|
||||
font-weight: 500;
|
||||
line-height: 1.4;
|
||||
margin: 3px 0;
|
||||
word-break: break-word;
|
||||
@@ -345,54 +332,84 @@ $mobile-breakpoint: 768px;
|
||||
}
|
||||
}
|
||||
|
||||
// ========================================
|
||||
// PREFERENCES ROW (dopo descrizione)
|
||||
// ========================================
|
||||
.preferences-row {
|
||||
margin: 8px 0 6px 0;
|
||||
|
||||
@media (max-width: $mobile-breakpoint) {
|
||||
margin: 6px 0 4px 0;
|
||||
}
|
||||
}
|
||||
|
||||
.preferences-icons-container {
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
gap: 6px;
|
||||
align-items: center;
|
||||
|
||||
@media (max-width: $mobile-breakpoint) {
|
||||
gap: 5px;
|
||||
}
|
||||
}
|
||||
|
||||
.preference-icon-avatar {
|
||||
cursor: pointer;
|
||||
transition: all 0.25s cubic-bezier(0.4, 0, 0.2, 1);
|
||||
box-shadow: 0 2px 4px rgba(0, 0, 0, 0.15);
|
||||
|
||||
&:hover {
|
||||
transform: translateY(-2px) scale(1.08);
|
||||
box-shadow: 0 4px 8px rgba(0, 0, 0, 0.25);
|
||||
}
|
||||
|
||||
@media (max-width: $mobile-breakpoint) {
|
||||
width: 28px !important;
|
||||
height: 28px !important;
|
||||
|
||||
.q-icon {
|
||||
font-size: 16px !important;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.user-stats-row {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
align-items: center;
|
||||
margin: 3px 0;
|
||||
font-size: 0.8125rem;
|
||||
color: $grey-color;
|
||||
align-items: flex-start;
|
||||
gap: $s-sm;
|
||||
flex-wrap: wrap;
|
||||
|
||||
@media (max-width: $mobile-breakpoint) {
|
||||
font-size: 0.75rem;
|
||||
margin: 2px 0;
|
||||
.user-name {
|
||||
flex: 1 1 auto;
|
||||
min-width: 0;
|
||||
color: $mainColor;
|
||||
font-weight: 600;
|
||||
font-size: 0.9rem;
|
||||
|
||||
@media (max-width: $mobile) {
|
||||
font-size: 0.85rem;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.user-name {
|
||||
font-weight: 600;
|
||||
font-style: italic;
|
||||
color: #333;
|
||||
margin-right: 6px;
|
||||
overflow: hidden;
|
||||
text-overflow: ellipsis;
|
||||
white-space: nowrap;
|
||||
.stats-container {
|
||||
flex: 0 0 auto;
|
||||
white-space: nowrap;
|
||||
margin-left: auto;
|
||||
font-size: 0.85rem;
|
||||
|
||||
@media (max-width: $mobile-breakpoint) {
|
||||
margin-right: 5px;
|
||||
}
|
||||
}
|
||||
@media (max-width: $mobile) {
|
||||
font-size: 0.75rem;
|
||||
|
||||
.stats-container {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 5px;
|
||||
flex-shrink: 0;
|
||||
white-space: nowrap;
|
||||
.stat-item {
|
||||
margin-left: 4px;
|
||||
|
||||
@media (max-width: $mobile-breakpoint) {
|
||||
gap: 4px;
|
||||
}
|
||||
}
|
||||
|
||||
.stat-item {
|
||||
display: inline-flex;
|
||||
align-items: center;
|
||||
gap: 2px;
|
||||
font-weight: 500;
|
||||
|
||||
.q-icon {
|
||||
vertical-align: middle;
|
||||
.q-icon {
|
||||
font-size: 12px !important;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -418,15 +435,14 @@ $mobile-breakpoint: 768px;
|
||||
}
|
||||
|
||||
.cities-text {
|
||||
font-size: 0.8125rem;
|
||||
color: $grey-light;
|
||||
color: rgba(44, 62, 80, 0.7); // Grigio bluastro più caldo del grigio puro
|
||||
font-size: 0.85rem;
|
||||
display: flex;
|
||||
text-align: right;
|
||||
margin-top: 2px;
|
||||
overflow: hidden;
|
||||
text-overflow: ellipsis;
|
||||
gap: 4px;
|
||||
|
||||
@media (max-width: $mobile-breakpoint) {
|
||||
font-size: 0.75rem;
|
||||
i {
|
||||
color: rgba($mainColor, 0.6); // Icona location con colore primario attenuato
|
||||
}
|
||||
}
|
||||
|
||||
@@ -526,4 +542,27 @@ $mobile-breakpoint: 768px;
|
||||
gap: 0px;
|
||||
}
|
||||
|
||||
}
|
||||
.categories-dialog {
|
||||
.dialog-header {
|
||||
padding: 16px 20px;
|
||||
}
|
||||
|
||||
.dialog-content {
|
||||
padding: 20px;
|
||||
max-height: 60vh;
|
||||
overflow-y: auto;
|
||||
}
|
||||
|
||||
.categories-grid {
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
gap: 2px;
|
||||
}
|
||||
|
||||
.category-chip {
|
||||
font-size: 1.1rem;
|
||||
padding: 8px 12px;
|
||||
font-weight: 500;
|
||||
}
|
||||
}
|
||||
@@ -55,18 +55,23 @@ export default defineComponent({
|
||||
const $router = useRouter();
|
||||
|
||||
const myrec = ref(<any>null);
|
||||
const showPreferencesDialog = ref(false);
|
||||
|
||||
const visupage = ref(false);
|
||||
const disabilita = computed(() => {
|
||||
return props.table === shared_consts.TABLES_MYBACHECAS;
|
||||
});
|
||||
const arrSubSector = computed(() => {
|
||||
return tools.getArrSubSector(props.table, myrec.value)
|
||||
return tools.getArrSubSector(props.table, myrec.value);
|
||||
});
|
||||
const arrSector = computed(() => {
|
||||
return tools.getArrSector(props.table, myrec.value)
|
||||
return tools.getArrSector(props.table, myrec.value);
|
||||
});
|
||||
|
||||
const getColorSubSector = computed(() => {
|
||||
return arrSector.value && arrSector.value.length == 1 ? arrSector.value[0].color : 'primary'
|
||||
})
|
||||
|
||||
watch(
|
||||
() => props.prop_myrec,
|
||||
(newval, oldval) => {
|
||||
@@ -132,7 +137,12 @@ export default defineComponent({
|
||||
function computedWidth() {
|
||||
//const width = tools.getwidth($q) - 20;
|
||||
//return `${Math.min(width, 600)}px`; // Limita la larghezza massima a 600px
|
||||
return '100%'; // Rimuovi la limitazione a 600px
|
||||
|
||||
const width = tools.getwidth($q);
|
||||
// Limita la larghezza per evitare overflow
|
||||
return `${Math.min(width - 40, 600)}px`;
|
||||
|
||||
//return '100%'; // Rimuovi la limitazione a 600px
|
||||
}
|
||||
|
||||
function computedEventImageHeight() {
|
||||
@@ -176,6 +186,8 @@ export default defineComponent({
|
||||
computedEventImageHeight,
|
||||
arrSubSector,
|
||||
arrSector,
|
||||
getColorSubSector,
|
||||
showPreferencesDialog,
|
||||
};
|
||||
},
|
||||
});
|
||||
|
||||
@@ -121,7 +121,6 @@
|
||||
/>
|
||||
</q-avatar>
|
||||
</q-item-section>
|
||||
|
||||
<q-item-section
|
||||
v-else-if="!myrec.organisedBy && table !== shared_consts.TABLES_MYBACHECAS"
|
||||
avatar
|
||||
@@ -155,20 +154,21 @@
|
||||
<q-item-label class="tags-row">
|
||||
<div class="category-hierarchy">
|
||||
<q-chip
|
||||
v-for="(rec, ind) of arrSector"
|
||||
v-for="(recSect, ind) of arrSector"
|
||||
:key="'sec-' + ind"
|
||||
class="tag-chip sector"
|
||||
:style="{
|
||||
background: `linear-gradient(135deg, ${rec.color}, ${rec.color})`,
|
||||
background: `linear-gradient(135deg, ${recSect.color}, ${recSect.color})`,
|
||||
}"
|
||||
:color="recSect.color"
|
||||
>
|
||||
<q-icon
|
||||
v-if="rec.icon"
|
||||
:name="rec.icon"
|
||||
v-if="recSect.icon"
|
||||
:name="recSect.icon"
|
||||
size="xs"
|
||||
class="q-mr-xs"
|
||||
/>
|
||||
{{ rec.descr }}
|
||||
{{ recSect.descr }}
|
||||
</q-chip>
|
||||
<q-icon
|
||||
v-if="arrSubSector.length > 0"
|
||||
@@ -181,9 +181,10 @@
|
||||
:key="'sub-' + ind"
|
||||
class="tag-chip subsector"
|
||||
:style="{
|
||||
background: `linear-gradient(135deg, ${rec.color}, ${rec.color})`,
|
||||
background: `linear-gradient(135deg, ${getColorSubSector}, ${getColorSubSector})`,
|
||||
opacity: 0.8,
|
||||
}"
|
||||
:color="getColorSubSector"
|
||||
>
|
||||
<q-icon
|
||||
v-if="rec.icon"
|
||||
@@ -194,23 +195,25 @@
|
||||
{{ rec.descr }}
|
||||
</q-chip>
|
||||
</div>
|
||||
<template v-for="(recstatus, index) in myrec.idStatusSkill">
|
||||
<q-badge
|
||||
v-if="
|
||||
recstatus === shared_consts.STATUSSKILL_ONLINE ||
|
||||
myrec.idStatusSkill?.length > 1
|
||||
"
|
||||
:key="'stat-' + index"
|
||||
:color="globalStore.getColByStatusSkills(recstatus)"
|
||||
class="status-badge"
|
||||
>
|
||||
<q-icon
|
||||
:name="globalStore.getStatusSkillIconById(recstatus)"
|
||||
size="14px"
|
||||
/>
|
||||
{{ globalStore.getStatusSkillById(recstatus) }}
|
||||
</q-badge>
|
||||
</template>
|
||||
<div class="status-row">
|
||||
<div v-for="(recstatus, index) in myrec.idStatusSkill">
|
||||
<q-badge
|
||||
v-if="
|
||||
recstatus === shared_consts.STATUSSKILL_ONLINE ||
|
||||
myrec.idStatusSkill?.length > 1
|
||||
"
|
||||
:key="'stat-' + index"
|
||||
:color="globalStore.getColByStatusSkills(recstatus)"
|
||||
class="status-badge"
|
||||
>
|
||||
<q-icon
|
||||
:name="globalStore.getStatusSkillIconById(recstatus)"
|
||||
size="14px"
|
||||
/>
|
||||
{{ globalStore.getStatusSkillById(recstatus) }}
|
||||
</q-badge>
|
||||
</div>
|
||||
</div>
|
||||
</q-item-label>
|
||||
|
||||
<!-- Descrizione -->
|
||||
@@ -225,6 +228,30 @@
|
||||
{{ myrec.descr }}
|
||||
</q-item-label>
|
||||
|
||||
<!-- Preferences (solo per MYHOSPS) -->
|
||||
<q-item-label
|
||||
v-if="table === shared_consts.TABLES_MYHOSPS && myrec.preferences && myrec.preferences.length > 0"
|
||||
class="preferences-row"
|
||||
>
|
||||
<div class="preferences-icons-container">
|
||||
<q-avatar
|
||||
v-for="(prefId, ind) of myrec.preferences"
|
||||
:key="ind"
|
||||
size="32px"
|
||||
:style="`background-color: ${tools.getPreferenceById(prefId)?.color || 'grey'}; cursor: pointer;`"
|
||||
class="preference-icon-avatar"
|
||||
@click.stop="showPreferencesDialog = true"
|
||||
>
|
||||
<q-icon
|
||||
:name="tools.getPreferenceById(prefId)?.icon || 'help'"
|
||||
size="18px"
|
||||
color="white"
|
||||
/>
|
||||
<q-tooltip>{{ tools.getPreferenceById(prefId)?.label }}</q-tooltip>
|
||||
</q-avatar>
|
||||
</div>
|
||||
</q-item-label>
|
||||
|
||||
<!-- Info Utente e Stats -->
|
||||
<q-item-label class="user-stats-row">
|
||||
<div class="user-name">
|
||||
@@ -364,6 +391,49 @@
|
||||
</q-item>
|
||||
<q-separator />
|
||||
</div>
|
||||
<!-- Categories Dialog -->
|
||||
<q-dialog v-model="showPreferencesDialog">
|
||||
<q-card
|
||||
class="categories-dialog"
|
||||
:style="{ minWidth: $q.screen.lt.sm ? '90vw' : '400px' }"
|
||||
>
|
||||
<q-card-section class="dialog-header">
|
||||
<div class="text-h6">Categorie</div>
|
||||
</q-card-section>
|
||||
|
||||
<q-separator />
|
||||
|
||||
<q-card-section class="dialog-content">
|
||||
<div class="categories-grid">
|
||||
|
||||
<q-chip
|
||||
v-for="(rec, ind) of myrec.preferences"
|
||||
:key="ind"
|
||||
class="category-chip shadow-3"
|
||||
:style="`background-color: ${tools.getPreferenceById(rec).color}; color: white;`"
|
||||
>
|
||||
<q-icon
|
||||
:name="tools.getPreferenceById(rec).icon"
|
||||
left
|
||||
size="18px"
|
||||
/>
|
||||
{{ tools.getPreferenceById(rec).label }}
|
||||
</q-chip>
|
||||
</div>
|
||||
</q-card-section>
|
||||
|
||||
<q-separator />
|
||||
|
||||
<q-card-actions align="right">
|
||||
<q-btn
|
||||
flat
|
||||
label="Chiudi"
|
||||
color="primary"
|
||||
v-close-popup
|
||||
/>
|
||||
</q-card-actions>
|
||||
</q-card>
|
||||
</q-dialog>
|
||||
</template>
|
||||
|
||||
<script lang="ts" src="./CMyRecCard.ts"></script>
|
||||
|
||||
@@ -45,13 +45,13 @@
|
||||
>
|
||||
Clicca qui per cercarlo su GM
|
||||
</span>
|
||||
<span v-else>
|
||||
Testo non trovato: '{{ mystr }}'
|
||||
</span>
|
||||
<span v-else> Testo non trovato: '{{ mystr }}' </span>
|
||||
</q-item-section>
|
||||
</q-item>
|
||||
<q-item v-else>
|
||||
<q-item-section class="text-grey"> Digita il testo da cercare </q-item-section>
|
||||
<q-item-section class="text-grey">
|
||||
Digita il testo da cercare
|
||||
</q-item-section>
|
||||
</q-item>
|
||||
</template>
|
||||
|
||||
@@ -80,7 +80,9 @@
|
||||
<template v-slot:option="{ itemProps, opt, selected, toggleOption }">
|
||||
<q-item v-bind="itemProps">
|
||||
<q-item-section>
|
||||
<q-item-label>{{ opt[fieldsTable.getLabelByTable(tablesel)] }}</q-item-label>
|
||||
<q-item-label>{{
|
||||
opt[fieldsTable.getLabelByTable(tablesel)]
|
||||
}}</q-item-label>
|
||||
</q-item-section>
|
||||
<q-item-section side>
|
||||
<q-toggle
|
||||
@@ -137,20 +139,19 @@
|
||||
>
|
||||
Clicca qui per cercarlo su GM
|
||||
</span>
|
||||
<span v-else>
|
||||
Testo non trovato: '{{ mystr }}'
|
||||
</span>
|
||||
<span v-else> Testo non trovato: '{{ mystr }}' </span>
|
||||
</q-item-section>
|
||||
</q-item>
|
||||
<q-item v-else>
|
||||
<q-item-section class="text-grey"> Digita il testo da cercare </q-item-section>
|
||||
<q-item-section class="text-grey">
|
||||
Digita il testo da cercare
|
||||
</q-item-section>
|
||||
</q-item>
|
||||
</template>
|
||||
<template v-slot:option="scope">
|
||||
<q-item v-bind="scope.itemProps">
|
||||
<q-item-section :class="applyLabelColorBasedOnProductStatus(scope.opt)">
|
||||
<q-item-label >
|
||||
|
||||
<q-item-label>
|
||||
{{ tools.getValueByFunzOrVal(scope.opt, optlab) }}
|
||||
</q-item-label>
|
||||
</q-item-section>
|
||||
@@ -183,8 +184,6 @@
|
||||
:option-label="optlab"
|
||||
:dense="dense"
|
||||
>
|
||||
<!--options-selected-class="text-deep-blue"-->
|
||||
|
||||
<template
|
||||
v-if="getIcon()"
|
||||
v-slot:prepend
|
||||
@@ -198,15 +197,13 @@
|
||||
dense
|
||||
@remove="scope.removeAtIndex(scope.index)"
|
||||
v-if="checkIfShowRec(scope.opt)"
|
||||
:color="$q.dark.isActive ? `black` : `white`"
|
||||
:style="`background-color: ${scope.opt.color || ($q.dark.isActive ? `black` : `white`) }`"
|
||||
:text-color="
|
||||
scope.opt.color ? 'white' : $q.dark.isActive ? `white` : `black`
|
||||
"
|
||||
:icon="scope.opt.icon || undefined"
|
||||
class="q-my-none q-ml-xs q-mr-none"
|
||||
>
|
||||
<q-avatar
|
||||
color="primary"
|
||||
text-color="white"
|
||||
:icon="scope.opt.icon ? scope.opt.icon : ''"
|
||||
size="12px"
|
||||
/>
|
||||
{{ tools.getValueByFunzOrVal(scope.opt, optlab) }}
|
||||
</q-chip>
|
||||
</div>
|
||||
@@ -216,6 +213,12 @@
|
||||
v-slot:option="{ itemProps, opt, selected, toggleOption }"
|
||||
>
|
||||
<q-item v-bind="itemProps">
|
||||
<q-item-section avatar>
|
||||
<q-icon
|
||||
:name="opt.icon || ''"
|
||||
:style="`background-color: ${opt.color || 'var(--q-primary)'}`"
|
||||
/>
|
||||
</q-item-section>
|
||||
<q-item-section>
|
||||
<q-item-label>{{ tools.getValueByFunzOrVal(opt, optlab) }}</q-item-label>
|
||||
<q-item-label
|
||||
@@ -270,7 +273,9 @@
|
||||
<q-icon :name="scope.opt.icon ? scope.opt.icon : ''" />
|
||||
</q-item-section>
|
||||
<q-item-section>
|
||||
<q-item-label>{{ tools.getValueByFunzOrVal(scope.opt, optlab) }}</q-item-label>
|
||||
<q-item-label>{{
|
||||
tools.getValueByFunzOrVal(scope.opt, optlab)
|
||||
}}</q-item-label>
|
||||
<q-item-label
|
||||
v-if="'hint' in scope.opt"
|
||||
class="hint"
|
||||
|
||||
@@ -1,30 +1,3 @@
|
||||
// ========================================
|
||||
// CMyUser - SCSS Moderno con Gradienti
|
||||
// ========================================
|
||||
|
||||
$primary-color: #1976d2;
|
||||
$primary-light: #42a5f5;
|
||||
$primary-dark: #1565c0;
|
||||
$secondary-color: #26a69a;
|
||||
$positive-color: #21ba45;
|
||||
$negative-color: #c10015;
|
||||
$info-color: #31ccec;
|
||||
$warning-color: #f2c037;
|
||||
|
||||
@use 'sass:color';
|
||||
|
||||
$grey-text: #555;
|
||||
$grey-light: #999;
|
||||
|
||||
$border-radius-sm: 8px;
|
||||
$border-radius: 12px;
|
||||
$transition-speed: 0.3s;
|
||||
$shadow-sm: 0 1px 3px rgba(0, 0, 0, 0.08);
|
||||
$shadow-md: 0 2px 8px rgba(0, 0, 0, 0.1);
|
||||
$shadow-lg: 0 4px 16px rgba(0, 0, 0, 0.15);
|
||||
|
||||
$mobile-breakpoint: 768px;
|
||||
|
||||
// ========================================
|
||||
// Q-ITEM CONTAINER (con gradiente)
|
||||
// ========================================
|
||||
|
||||
@@ -1,24 +1,3 @@
|
||||
// ========================================
|
||||
// VARIABILI (Sincronizzate con CSignUp)
|
||||
// ========================================
|
||||
$primary-color: #1976d2;
|
||||
$primary-light: #42a5f5;
|
||||
$primary-dark: #1565c0;
|
||||
$accent-color: #26a69a;
|
||||
$positive-color: #21ba45;
|
||||
$negative-color: #c10015;
|
||||
$info-color: #31ccec;
|
||||
|
||||
$border-radius: 16px;
|
||||
$border-radius-sm: 12px;
|
||||
$border-radius-lg: 24px;
|
||||
|
||||
$transition-speed: 0.3s;
|
||||
$shadow-sm: 0 2px 8px rgba(0, 0, 0, 0.08);
|
||||
$shadow-md: 0 4px 16px rgba(0, 0, 0, 0.12);
|
||||
$shadow-lg: 0 8px 32px rgba(0, 0, 0, 0.16);
|
||||
|
||||
$mobile-breakpoint: 768px;
|
||||
|
||||
// ========================================
|
||||
// CONTAINER PRINCIPALE
|
||||
|
||||
@@ -1,24 +1,3 @@
|
||||
// ========================================
|
||||
// VARIABILI (Sincronizzate con CSignUp)
|
||||
// ========================================
|
||||
$primary-color: #1976d2;
|
||||
$primary-light: #42a5f5;
|
||||
$primary-dark: #1565c0;
|
||||
$accent-color: #26a69a;
|
||||
$positive-color: #21ba45;
|
||||
$negative-color: #c10015;
|
||||
|
||||
$border-radius: 16px;
|
||||
$border-radius-sm: 12px;
|
||||
$border-radius-lg: 24px;
|
||||
|
||||
$transition-speed: 0.3s;
|
||||
$shadow-sm: 0 2px 8px rgba(0, 0, 0, 0.08);
|
||||
$shadow-md: 0 4px 16px rgba(0, 0, 0, 0.12);
|
||||
$shadow-lg: 0 8px 32px rgba(0, 0, 0, 0.16);
|
||||
|
||||
$mobile-breakpoint: 768px;
|
||||
|
||||
// ========================================
|
||||
// CONTAINER PRINCIPALE
|
||||
// ========================================
|
||||
|
||||
@@ -1,27 +1,3 @@
|
||||
// ========================================
|
||||
// VARIABILI E CONFIGURAZIONE
|
||||
// ========================================
|
||||
$primary-color: #1976d2;
|
||||
$primary-light: #42a5f5;
|
||||
$primary-dark: #1565c0;
|
||||
$accent-color: #26a69a;
|
||||
$positive-color: #21ba45;
|
||||
$negative-color: #c10015;
|
||||
$warning-color: #f2c037;
|
||||
|
||||
@use 'sass:color';
|
||||
|
||||
$border-radius: 16px;
|
||||
$border-radius-sm: 12px;
|
||||
$border-radius-lg: 24px;
|
||||
|
||||
$transition-speed: 0.3s;
|
||||
$shadow-sm: 0 2px 8px rgba(0, 0, 0, 0.08);
|
||||
$shadow-md: 0 4px 16px rgba(0, 0, 0, 0.12);
|
||||
$shadow-lg: 0 8px 32px rgba(0, 0, 0, 0.16);
|
||||
|
||||
$mobile-breakpoint: 768px;
|
||||
$mobile-footer-height: 80px;
|
||||
|
||||
// ========================================
|
||||
// CONTAINER PRINCIPALE
|
||||
|
||||
@@ -6,6 +6,28 @@
|
||||
$mainStyle: #4975BA;
|
||||
$mainColor: #3c4858;
|
||||
|
||||
// Variables
|
||||
$primary-color: #1976d2;
|
||||
$primary-light: #42a5f5;
|
||||
$primary-dark: #1565c0;
|
||||
$accent-color: #26a69a;
|
||||
|
||||
$secondary-color: #26a69a;
|
||||
$positive-color: #21ba45;
|
||||
$negative-color: #c10015;
|
||||
$success-color: #21ba45;
|
||||
$warning-color: #f2c037;
|
||||
$info-color: #31ccec;
|
||||
$orange-color: #ff9800;
|
||||
$card-shadow: 0 2px 12px rgba(0, 0, 0, 0.08);
|
||||
$card-shadow-hover: 0 4px 20px rgba(0, 0, 0, 0.12);
|
||||
$border-radius: 16px;
|
||||
$transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
|
||||
|
||||
$grey-text: #555;
|
||||
$grey-color: #666;
|
||||
$grey-light: #999;
|
||||
|
||||
// Gialli
|
||||
$yellow1: #f8ab1c;
|
||||
$yellow2: rgb(221, 144, 35);
|
||||
@@ -65,6 +87,10 @@ $gradient-red: linear-gradient(135deg, #f56565 0%, #ed64a6 100%);
|
||||
$gradient-lime: linear-gradient(135deg, #84cc16 0%, #10b981 100%);
|
||||
$gradient-teal: linear-gradient(135deg, #14b8a6 0%, #06b6d4 100%);
|
||||
|
||||
$gradient-card-light: linear-gradient(135deg, #fdfbfb 0%, #ebedee 100%);
|
||||
$gradient-card-white: linear-gradient(to bottom, #ffffff 0%, #f8f9fa 100%);
|
||||
$gradient-hover: linear-gradient(135deg, rgba(102, 126, 234, 0.05) 0%, rgba(118, 75, 162, 0.05) 100%);
|
||||
|
||||
|
||||
// ==========================================
|
||||
// SCALA GRIGI - Stile RISO pulito
|
||||
@@ -116,6 +142,23 @@ $desktop: "(min-width: 1001px)";
|
||||
$tablet: "(min-width: 601px) and (max-width: 1000px)";
|
||||
$mobile: "(max-width: 600px)";
|
||||
|
||||
$border-radius: 16px;
|
||||
$border-radius-sm: 12px;
|
||||
$border-radius-lg: 24px;
|
||||
|
||||
$transition-speed: 0.3s;
|
||||
$shadow-sm: 0 2px 8px rgba(0, 0, 0, 0.08);
|
||||
$shadow-md: 0 4px 16px rgba(0, 0, 0, 0.12);
|
||||
$shadow-lg: 0 8px 32px rgba(0, 0, 0, 0.16);
|
||||
$shadow-hover: 0 4px 12px rgba(0, 0, 0, 0.12);
|
||||
|
||||
|
||||
$mobile-breakpoint: 768px;
|
||||
$mobile-footer-height: 80px;
|
||||
$small-breakpoint: 600px;
|
||||
|
||||
|
||||
|
||||
// ==========================================
|
||||
// DIMENSIONI HEADER - Più compatto
|
||||
// ==========================================
|
||||
|
||||
@@ -562,10 +562,12 @@ export interface IGlobalState {
|
||||
adtypegoods: IAdType[],
|
||||
skills: ISkill[],
|
||||
goods: IGood[],
|
||||
bachecas: IBacheca[],
|
||||
// subSkills: ISubSkill[],
|
||||
statusSkills: IStatusSkill[],
|
||||
sectors: ISector[],
|
||||
sectorgoods: ISectorGood[],
|
||||
sectorbachecas: ISectorBacheca[],
|
||||
catgrps: ICatGrp[],
|
||||
catAI: ICatAI[],
|
||||
queryAIList: IQueryAI[],
|
||||
@@ -1237,6 +1239,13 @@ export interface IGood {
|
||||
icon?: string
|
||||
img?: string
|
||||
}
|
||||
export interface IBacheca {
|
||||
_id: number
|
||||
descr: string
|
||||
idSectorBacheca: number[]
|
||||
icon?: string
|
||||
img?: string
|
||||
}
|
||||
|
||||
/*
|
||||
export interface ISubSkill {
|
||||
@@ -1278,6 +1287,15 @@ export interface ISectorGood {
|
||||
color: string
|
||||
theme: string
|
||||
}
|
||||
export interface ISectorBacheca {
|
||||
_id: number
|
||||
descr: string
|
||||
idSectorBacheca?: number
|
||||
icon?: string
|
||||
img?: string
|
||||
color: string
|
||||
theme: string
|
||||
}
|
||||
|
||||
export interface ICatGrp {
|
||||
_id: number
|
||||
@@ -1348,7 +1366,7 @@ export interface IMyMain {
|
||||
|
||||
export interface IMyGoods extends IMyMain {
|
||||
_id: string
|
||||
idSector: number
|
||||
idSectorGood: number
|
||||
idSkill: number
|
||||
idShipping: number[]
|
||||
idStatusSkill: number[]
|
||||
@@ -1369,8 +1387,10 @@ export interface IMyGoods extends IMyMain {
|
||||
|
||||
export interface IMyBacheca extends IMyMain {
|
||||
_id: string
|
||||
idSector: number
|
||||
idSkill: number
|
||||
//idSector: number
|
||||
//idSkill: number
|
||||
idSectorBacheca: number
|
||||
idBacheca: number
|
||||
// idSubSkill: number[]
|
||||
idStatusSkill: number[]
|
||||
idContribType: string[]
|
||||
|
||||
@@ -23,6 +23,7 @@ export default defineComponent({
|
||||
|
||||
const arrSector = ref(<any[]>[])
|
||||
const arrSectorGood = ref(<any[]>[])
|
||||
const arrSectorBacheca = ref(<any[]>[])
|
||||
const arrSkill = ref(<any[]>[])
|
||||
const arrGood = ref(<any[]>[])
|
||||
|
||||
@@ -58,6 +59,7 @@ export default defineComponent({
|
||||
if (!caricaDatiToggle.value) {
|
||||
arrSector.value = []
|
||||
arrSectorGood.value = []
|
||||
arrSectorBacheca.value = []
|
||||
arrSkill.value = []
|
||||
arrGood.value = []
|
||||
|
||||
@@ -102,6 +104,11 @@ export default defineComponent({
|
||||
arrSectorGood.value = data.rows
|
||||
})
|
||||
|
||||
params.table = 'sectorbachecas'
|
||||
globalStore.loadTable(params).then((data) => {
|
||||
arrSectorBacheca.value = data.rows
|
||||
})
|
||||
|
||||
params.table = 'skills'
|
||||
globalStore.loadTable(params).then((data) => {
|
||||
arrSkill.value = data.rows
|
||||
|
||||
@@ -23,6 +23,7 @@ export default defineComponent({
|
||||
|
||||
const arrSector = ref(<any[]>[])
|
||||
const arrSectorGood = ref(<any[]>[])
|
||||
const arrSectorBacheca = ref(<any[]>[])
|
||||
const arrSkill = ref(<any[]>[])
|
||||
const arrGood = ref(<any[]>[])
|
||||
|
||||
@@ -98,6 +99,7 @@ export default defineComponent({
|
||||
if (!caricaDatiToggle.value) {
|
||||
arrSector.value = []
|
||||
arrSectorGood.value = []
|
||||
arrSectorBacheca.value = []
|
||||
arrSkill.value = []
|
||||
arrGood.value = []
|
||||
|
||||
@@ -142,6 +144,11 @@ export default defineComponent({
|
||||
arrSectorGood.value = data.rows
|
||||
})
|
||||
|
||||
params.table = 'sectorbachecas'
|
||||
globalStore.loadTable(params).then((data) => {
|
||||
arrSectorBacheca.value = data.rows
|
||||
})
|
||||
|
||||
params.table = 'skills'
|
||||
globalStore.loadTable(params).then((data) => {
|
||||
arrSkill.value = data.rows
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
// src/services/SyncService.js
|
||||
import syncIDB from './idb'; // Usa il wrapper sopra
|
||||
import Api from './Api';
|
||||
import { Api } from '@api';
|
||||
|
||||
class SyncService {
|
||||
constructor() {
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
// src/services/idb.js (nuovo, usa storage.js esistente)
|
||||
import { idbKeyval } from '@/storage';
|
||||
import { idbKeyval } from '../js/storage';
|
||||
|
||||
class SyncIDB {
|
||||
constructor() {
|
||||
|
||||
@@ -1197,6 +1197,7 @@ const msg_it = {
|
||||
sector_select_details: 'Ti arriveranno le notifiche dei nuovi annunci, solo per i Settori selezionati qui sotto (se lasci su "nessuno" arriveranno tutti).',
|
||||
sector_goods: 'Settori dei Beni',
|
||||
sector_goods_select: 'Scegli i Settori Preferiti dei Beni',
|
||||
sector_bacheca_select: 'Scegli i Settori Preferiti degli Eventi',
|
||||
},
|
||||
services: {
|
||||
visit_website: 'Visita il Sito Web "{link}"',
|
||||
|
||||
@@ -1812,6 +1812,28 @@ export const colSectorGoods = [
|
||||
AddCol(DuplicateRec),
|
||||
];
|
||||
|
||||
export const colSectorBachecas = [
|
||||
AddCol({ name: '_id', label_trans: 'index', fieldtype: costanti.FieldType.number }),
|
||||
AddCol({ name: 'descr', label_trans: 'store.description' }),
|
||||
AddCol({
|
||||
name: 'idSectorBacheca',
|
||||
label_trans: 'sectors.name',
|
||||
fieldtype: costanti.FieldType.select,
|
||||
jointable: 'sectorbachecas',
|
||||
}),
|
||||
AddCol({
|
||||
name: 'main',
|
||||
label_trans: 'store.main',
|
||||
fieldtype: costanti.FieldType.boolean,
|
||||
}),
|
||||
AddCol({ name: 'color', label_trans: 'products.color' }),
|
||||
AddCol({ name: 'theme', label_trans: 'products.theme' }),
|
||||
AddCol({ name: 'img', label_trans: 'store.img' }),
|
||||
AddCol({ name: 'icon', label_trans: 'store.icon' }),
|
||||
AddCol(DeleteRec),
|
||||
AddCol(DuplicateRec),
|
||||
];
|
||||
|
||||
export const colCatGrps = [
|
||||
AddCol({ name: '_id', label_trans: 'index', fieldtype: costanti.FieldType.number }),
|
||||
AddCol({ name: 'descr', label_trans: 'store.description' }),
|
||||
@@ -1938,7 +1960,7 @@ export const colSkills = [
|
||||
AddCol(DeleteRec),
|
||||
];
|
||||
export const colGoods = [
|
||||
// AddCol({ name: '_id', label_trans: 'index', fieldtype: costanti.FieldType.number }),
|
||||
AddCol({ name: '_id', label_trans: 'index', fieldtype: costanti.FieldType.number }),
|
||||
AddCol({ name: 'descr', label_trans: 'store.description' }),
|
||||
AddCol({ name: 'img', label_trans: 'store.img' }),
|
||||
AddCol({ name: 'icon', label_trans: 'store.icon' }),
|
||||
@@ -1953,6 +1975,22 @@ export const colGoods = [
|
||||
AddCol(DuplicateRec),
|
||||
AddCol(DeleteRec),
|
||||
];
|
||||
export const colBachecas = [
|
||||
AddCol({ name: '_id', label_trans: 'index', fieldtype: costanti.FieldType.number }),
|
||||
AddCol({ name: 'descr', label_trans: 'store.description' }),
|
||||
AddCol({ name: 'img', label_trans: 'store.img' }),
|
||||
AddCol({ name: 'icon', label_trans: 'store.icon' }),
|
||||
AddCol({
|
||||
name: 'idSectorBacheca',
|
||||
label_trans: 'sectors.name',
|
||||
fieldtype: costanti.FieldType.multiselect,
|
||||
jointable: 'sectorbachecas',
|
||||
}),
|
||||
AddCol({ name: 'color', label_trans: 'products.color' }),
|
||||
AddCol({ name: 'theme', label_trans: 'products.theme' }),
|
||||
AddCol(DuplicateRec),
|
||||
AddCol(DeleteRec),
|
||||
];
|
||||
|
||||
/*
|
||||
export const colSubSkills = [
|
||||
@@ -3348,7 +3386,7 @@ export const colmyBachecas = [
|
||||
showifIsStatusDiPersona: true,
|
||||
showifIsStatusOnLine: false,
|
||||
}),
|
||||
AddCol({
|
||||
/*AddCol({
|
||||
name: 'idSector',
|
||||
label_trans: 'sectors.name',
|
||||
fieldtype: costanti.FieldType.select,
|
||||
@@ -3380,7 +3418,39 @@ export const colmyBachecas = [
|
||||
allowNewValue: false,
|
||||
required: false,
|
||||
sortable: false,
|
||||
}),*/
|
||||
AddCol({
|
||||
name: 'idSectorBacheca',
|
||||
label_trans: 'sectors.name',
|
||||
fieldtype: costanti.FieldType.select,
|
||||
required: true,
|
||||
jointable: 'sectorbachecas',
|
||||
showWhen:
|
||||
costanti.showWhen.NewRec +
|
||||
costanti.showWhen.InEdit +
|
||||
costanti.showWhen.InView_OnlyifExist,
|
||||
visible: true,
|
||||
icon: 'category',
|
||||
}),
|
||||
AddCol({
|
||||
name: 'idBacheca',
|
||||
label_trans: 'skill.name',
|
||||
fieldtype: costanti.FieldType.select,
|
||||
required: false,
|
||||
jointable: 'bachecas',
|
||||
addnone: true,
|
||||
filter_table: 'sectorbachecas',
|
||||
filter_field: 'idSectorBacheca',
|
||||
noshowlabel: true,
|
||||
icon: 'engineering',
|
||||
showWhen:
|
||||
costanti.showWhen.NewRec +
|
||||
costanti.showWhen.InPage +
|
||||
costanti.showWhen.InEdit +
|
||||
costanti.showWhen.InView_OnlyifExist,
|
||||
allowNewValue: false,
|
||||
}),
|
||||
|
||||
AddCol({
|
||||
name: 'note',
|
||||
label_trans: 'proj.descrapprof',
|
||||
@@ -7605,6 +7675,13 @@ export const fieldsTable = {
|
||||
colkey: '_id',
|
||||
collabel: 'descr',
|
||||
},
|
||||
{
|
||||
value: 'bachecas',
|
||||
label: 'Sottocategorie Eventi',
|
||||
columns: colBachecas,
|
||||
colkey: '_id',
|
||||
collabel: 'descr',
|
||||
},
|
||||
{
|
||||
value: 'caldate', // toolsext.TABCALDATE,
|
||||
label: 'Date',
|
||||
@@ -7651,6 +7728,13 @@ export const fieldsTable = {
|
||||
colkey: '_id',
|
||||
collabel: 'descr',
|
||||
},
|
||||
{
|
||||
value: 'sectorbachecas',
|
||||
label: 'Settori Eventi',
|
||||
columns: colSectorBachecas,
|
||||
colkey: '_id',
|
||||
collabel: 'descr',
|
||||
},
|
||||
{
|
||||
value: 'catgrps',
|
||||
label: 'Categorie Gruppi',
|
||||
|
||||
@@ -63,7 +63,6 @@ export const serv_constants = {
|
||||
TypeProj: {
|
||||
TYPE_PROJECT: 1,
|
||||
TYPE_SUBDIR: 2,
|
||||
}
|
||||
|
||||
},
|
||||
|
||||
}
|
||||
|
||||
@@ -8161,7 +8161,7 @@ export const tools = {
|
||||
obj.col_footer = 'idCity';
|
||||
obj.col_tabfooter = 'mycities';
|
||||
} else if (table === toolsext.TABMYBACHECAS) {
|
||||
obj.prop_colkey = 'idSkill';
|
||||
obj.prop_colkey = 'idBacheca';
|
||||
obj.col_title = 'descr';
|
||||
obj.col_footer = 'idCity';
|
||||
obj.col_tabfooter = 'mycities';
|
||||
@@ -8199,6 +8199,7 @@ export const tools = {
|
||||
'contribtypes',
|
||||
'adtypes',
|
||||
'sectorgoods',
|
||||
'sectorbachecas',
|
||||
'otherfilters',
|
||||
'shippings',
|
||||
'pub_to_share',
|
||||
@@ -8207,6 +8208,7 @@ export const tools = {
|
||||
const arrmultisel = [
|
||||
{ table: 'skills', join: 'sectors' },
|
||||
{ table: 'goods', join: 'sectorgoods' },
|
||||
{ table: 'bachecas', join: 'sectorbachecas' },
|
||||
];
|
||||
|
||||
let ris = mydef;
|
||||
@@ -8354,8 +8356,11 @@ export const tools = {
|
||||
|
||||
getdefaultnewrec_MyBacheca(extrarec: any): any {
|
||||
return {
|
||||
idSector: tools.getSelectionByTable('sectors', 0, true),
|
||||
idSkill: tools.getSelectionByTable('skills', 0, true),
|
||||
//idSector: tools.getSelectionByTable('sectors', 0, true),
|
||||
//idSkill: tools.getSelectionByTable('skills', 0, true),
|
||||
idSectorBacheca: tools.getSelectionByTable('sectorbachecas', 0),
|
||||
idBacheca: tools.getSelectionByTable('bachecas', 0),
|
||||
|
||||
idStatusSkill: tools.getSelectionByTable('statusSkills', [
|
||||
shared_consts.STATUSSKILL_DI_PERSONA,
|
||||
]),
|
||||
@@ -8881,20 +8886,17 @@ export const tools = {
|
||||
|
||||
getArrSector(table: string, rec: any) {
|
||||
if (table === toolsext.TABMYGOODS) return rec.sectorGood;
|
||||
else if (table === toolsext.TABMYBACHECAS || table === toolsext.TABMYSKILLS)
|
||||
return rec.sector;
|
||||
else if (table === toolsext.TABMYSKILLS) return rec.sector;
|
||||
else if (table === toolsext.TABMYBACHECAS) return rec.sectorBacheca;
|
||||
else if (table === toolsext.TABMYGROUPS) return [{ descr: rec.sector }];
|
||||
else if (table === toolsext.TABMYHOSPS) return [];
|
||||
},
|
||||
|
||||
getArrSubSector(table: string, rec: any) {
|
||||
if (table === toolsext.TABMYGOODS) return rec.recGood;
|
||||
else if (
|
||||
table === toolsext.TABMYBACHECAS ||
|
||||
table === toolsext.TABMYSKILLS ||
|
||||
table === toolsext.TABATTIVITA
|
||||
)
|
||||
else if (table === toolsext.TABMYSKILLS || table === toolsext.TABATTIVITA)
|
||||
return rec.recSkill;
|
||||
else if (table === toolsext.TABMYBACHECAS) return rec.recSkill;
|
||||
else if (table === toolsext.TABMYGROUPS) return [];
|
||||
else if (table === toolsext.TABMYHOSPS) return [];
|
||||
},
|
||||
@@ -9575,7 +9577,7 @@ export const tools = {
|
||||
af_objId_tab: 'myId',
|
||||
},
|
||||
lookup2: {
|
||||
lk_tab: 'goods',
|
||||
lk_tab: toolsext.TABGOODS,
|
||||
lk_LF: 'idGood',
|
||||
lk_FF: '_id',
|
||||
lk_as: 'recGood',
|
||||
@@ -9583,7 +9585,7 @@ export const tools = {
|
||||
lk_proj: shared_consts.getProjectForAll({}, table),
|
||||
},
|
||||
lookup3: {
|
||||
lk_tab: 'sectorgoods',
|
||||
lk_tab: toolsext.TABSECTORGOODS,
|
||||
// lk_LF: 'recGood.idSectorGood',
|
||||
lk_LF: 'idSectorGood',
|
||||
lk_FF: '_id',
|
||||
@@ -9617,19 +9619,18 @@ export const tools = {
|
||||
af_objId_tab: 'myId',
|
||||
},
|
||||
lookup2: {
|
||||
lk_tab: 'skills',
|
||||
lk_LF: 'idSkill',
|
||||
lk_tab: toolsext.TABBACHECAS,
|
||||
lk_LF: 'idBacheca',
|
||||
lk_FF: '_id',
|
||||
lk_as: 'recSkill',
|
||||
af_objId_tab: '',
|
||||
lk_proj: shared_consts.getProjectForAll({}, table),
|
||||
},
|
||||
lookup3: {
|
||||
lk_tab: toolsext.TABSECTORS,
|
||||
// lk_LF: 'recSkill.idSector',
|
||||
lk_LF: 'idSector',
|
||||
lk_tab: toolsext.TABSECTORBACHECAS,
|
||||
lk_LF: 'idSectorBacheca',
|
||||
lk_FF: '_id',
|
||||
lk_as: 'sector',
|
||||
lk_as: 'sectorBacheca',
|
||||
af_objId_tab: '',
|
||||
},
|
||||
lookup4: {
|
||||
@@ -11479,6 +11480,10 @@ export const tools = {
|
||||
return this.getIdApp() === this.IDAPP_MACRO;
|
||||
},
|
||||
|
||||
getPreferenceById(id: number) {
|
||||
return shared_consts.Preferences.find((p) => p.value === id);
|
||||
},
|
||||
|
||||
// FINE !
|
||||
|
||||
// getLocale() {
|
||||
|
||||
@@ -64,8 +64,10 @@ export const toolsext = {
|
||||
TABMYGROUPS: 'mygroups',
|
||||
TABSKILLS: 'skills',
|
||||
TABGOODS: 'goods',
|
||||
TABBACHECAS: 'bachecas',
|
||||
TABSECTORS: 'sectors',
|
||||
TABSECTORGOODS: 'sectorgoods',
|
||||
TABSECTORBACHECAS: 'sectorbachecas',
|
||||
TABREGIONS: 'regions',
|
||||
TABCITIES: 'cities',
|
||||
TABPROVINCE: 'provinces',
|
||||
|
||||
@@ -148,7 +148,9 @@ export const useGlobalStore = defineStore('GlobalStore', {
|
||||
// subSkills: [],
|
||||
statusSkills: [],
|
||||
sectors: [],
|
||||
bachecas: [],
|
||||
sectorgoods: [],
|
||||
sectorbachecas: [],
|
||||
catgrps: [],
|
||||
catAI: [],
|
||||
queryAIList: [],
|
||||
@@ -590,12 +592,14 @@ export const useGlobalStore = defineStore('GlobalStore', {
|
||||
else if (table === 'adtypes') return state.adtypes;
|
||||
else if (table === 'adtypegoods') return state.adtypegoods;
|
||||
else if (table === 'skills') return state.skills;
|
||||
else if (table === 'goods') return state.goods;
|
||||
else if (table === toolsext.TABGOODS) return state.goods;
|
||||
else if (table === toolsext.TABBACHECAS) return state.bachecas;
|
||||
// else if (table === 'subskills')
|
||||
// return state.subSkills
|
||||
else if (table === 'statusSkills') return state.statusSkills;
|
||||
else if (table === toolsext.TABSECTORS) return state.sectors;
|
||||
else if (table === 'sectorgoods') return state.sectorgoods;
|
||||
else if (table === toolsext.TABSECTORGOODS) return state.sectorgoods;
|
||||
else if (table === toolsext.TABSECTORBACHECAS) return state.sectorbachecas;
|
||||
else if (table === 'catgrps') return state.catgrps;
|
||||
else if (table === 'schedeopt')
|
||||
return Products.getSchedeOptByArrSchede(state.myschedas);
|
||||
@@ -2196,10 +2200,11 @@ export const useGlobalStore = defineStore('GlobalStore', {
|
||||
this.levels = res.data.levels ? [...res.data.levels] : [];
|
||||
this.skills = res.data.skills ? [...res.data.skills] : [];
|
||||
this.goods = res.data.goods ? [...res.data.goods] : [];
|
||||
// this.subSkills = (res.data.subSkills) ? [...res.data.subSkills] : []
|
||||
this.bachecas = res.data.bachecas ? [...res.data.bachecas] : [];
|
||||
this.statusSkills = res.data.statusSkills ? [...res.data.statusSkills] : [];
|
||||
this.sectors = res.data.sectors ? [...res.data.sectors] : [];
|
||||
this.sectorgoods = res.data.sectorgoods ? [...res.data.sectorgoods] : [];
|
||||
this.sectorbachecas = res.data.sectorbachecas ? [...res.data.sectorbachecas] : [];
|
||||
this.provinces = res.data.provinces ? [...res.data.provinces] : [];
|
||||
this.catgrps = res.data.catgrps ? [...res.data.catgrps] : [];
|
||||
this.catAI = res.data.catAI ? [...res.data.catAI] : [];
|
||||
@@ -2747,6 +2752,8 @@ export const useGlobalStore = defineStore('GlobalStore', {
|
||||
obj.idSectorGood = [];
|
||||
} else if (table === shared_consts.TABLES_MYSKILLS) {
|
||||
obj.idSector = [];
|
||||
} else if (table === shared_consts.TABLES_MYBACHECAS) {
|
||||
obj.idSectorBacheca = [];
|
||||
}
|
||||
|
||||
if (table === 'cards') {
|
||||
|
||||
@@ -1,23 +1,3 @@
|
||||
// ========================================
|
||||
// VARIABILI (Sincronizzate)
|
||||
// ========================================
|
||||
$primary-color: #1976d2;
|
||||
$primary-light: #42a5f5;
|
||||
$primary-dark: #1565c0;
|
||||
$accent-color: #26a69a;
|
||||
$positive-color: #21ba45;
|
||||
$negative-color: #c10015;
|
||||
|
||||
$border-radius: 16px;
|
||||
$border-radius-sm: 12px;
|
||||
$border-radius-lg: 24px;
|
||||
|
||||
$transition-speed: 0.3s;
|
||||
$shadow-sm: 0 2px 8px rgba(0, 0, 0, 0.08);
|
||||
$shadow-md: 0 4px 16px rgba(0, 0, 0, 0.12);
|
||||
$shadow-lg: 0 8px 32px rgba(0, 0, 0, 0.16);
|
||||
|
||||
$mobile-breakpoint: 768px;
|
||||
|
||||
// ========================================
|
||||
// CONTAINER PRINCIPALE
|
||||
|
||||
@@ -1,23 +1,3 @@
|
||||
// ========================================
|
||||
// VARIABILI (Sincronizzate)
|
||||
// ========================================
|
||||
$primary-color: #1976d2;
|
||||
$primary-light: #42a5f5;
|
||||
$primary-dark: #1565c0;
|
||||
$accent-color: #26a69a;
|
||||
$positive-color: #21ba45;
|
||||
$negative-color: #c10015;
|
||||
|
||||
$border-radius: 16px;
|
||||
$border-radius-sm: 12px;
|
||||
$border-radius-lg: 24px;
|
||||
|
||||
$transition-speed: 0.3s;
|
||||
$shadow-sm: 0 2px 8px rgba(0, 0, 0, 0.08);
|
||||
$shadow-md: 0 4px 16px rgba(0, 0, 0, 0.12);
|
||||
$shadow-lg: 0 8px 32px rgba(0, 0, 0, 0.16);
|
||||
|
||||
$mobile-breakpoint: 768px;
|
||||
|
||||
// ========================================
|
||||
// CONTAINER PRINCIPALE
|
||||
|
||||
@@ -83,6 +83,12 @@
|
||||
></div>
|
||||
</q-card-section>
|
||||
<q-card-actions align="center">
|
||||
<q-btn
|
||||
outline
|
||||
:label="$t('dialog.cancel')"
|
||||
icon="close"
|
||||
v-close-popup
|
||||
></q-btn>
|
||||
<q-btn
|
||||
class="centeritems"
|
||||
icon="fas fa-user-plus"
|
||||
@@ -100,12 +106,6 @@
|
||||
);
|
||||
"
|
||||
/>
|
||||
<q-btn
|
||||
outline
|
||||
:label="$t('dialog.cancel')"
|
||||
icon="close"
|
||||
v-close-popup
|
||||
></q-btn>
|
||||
</q-card-actions>
|
||||
</q-card>
|
||||
</q-dialog>
|
||||
|
||||
@@ -943,6 +943,12 @@
|
||||
></div>
|
||||
</q-card-section>
|
||||
<q-card-actions align="center">
|
||||
<q-btn
|
||||
outline
|
||||
:label="$t('dialog.cancel')"
|
||||
icon="close"
|
||||
v-close-popup
|
||||
></q-btn>
|
||||
<q-btn
|
||||
class="centeritems"
|
||||
icon="fas fa-user-plus"
|
||||
@@ -961,12 +967,6 @@
|
||||
requestToEnterCircuit = false;
|
||||
"
|
||||
/>
|
||||
<q-btn
|
||||
outline
|
||||
:label="$t('dialog.cancel')"
|
||||
icon="close"
|
||||
v-close-popup
|
||||
></q-btn>
|
||||
</q-card-actions>
|
||||
</q-card>
|
||||
</q-dialog>
|
||||
|
||||
Reference in New Issue
Block a user