- lista cataloghi: stato "active" (Pubblicati OnLine)

This commit is contained in:
Surya Paolo
2025-05-07 00:13:51 +02:00
parent 57cfa5858b
commit 2cc8fcda03
21 changed files with 400 additions and 347 deletions

4
.env
View File

@@ -1,6 +1,6 @@
VITE_APP_VERSION="1.2.37" VITE_APP_VERSION="1.2.38"
VITE_LANG_DEFAULT="it" VITE_LANG_DEFAULT="it"
VITE_PAO_APP_ID="KKPPAA5KJK435J3KSS9F9D8S9F8SD98F9SDF" VITE_PAO_APP_ID="KKPPAA5KJK435J3KSS9F9D8S9F8SD98F9SDF"
VITE_SERVICE_WORKER_FILE="sw-1.2.37.js" VITE_SERVICE_WORKER_FILE="sw-1.2.38.js"
VITE_PROJECT_ID_MAIN="5cc0a13fe5c9d156728f400a" VITE_PROJECT_ID_MAIN="5cc0a13fe5c9d156728f400a"
VITE_VUE_ROUTER_MODE="history" VITE_VUE_ROUTER_MODE="history"

View File

@@ -10,7 +10,7 @@
<meta name="description" content="<%= productDescription %>"> <meta name="description" content="<%= productDescription %>">
<meta name="format-detection" content="telephone=no"> <meta name="format-detection" content="telephone=no">
<meta name="msapplication-tap-highlight" content="no"> <meta name="msapplication-tap-highlight" content="no">
<meta name="version" content="1.2.37"> <meta name="version" content="1.2.38">
<meta name="viewport" <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<% } %>"> 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<% } %>">

View File

@@ -1,6 +1,6 @@
{ {
"name": "gruppomacro", "name": "gruppomacro",
"version": "1.2.37", "version": "1.2.38",
"description": "Gruppo Macro", "description": "Gruppo Macro",
"productName": "Gruppo Macro", "productName": "Gruppo Macro",
"author": "Surya", "author": "Surya",
@@ -9,20 +9,20 @@
"license": "MIT", "license": "MIT",
"type": "module", "type": "module",
"scripts": { "scripts": {
"dev": "PORT=8089 APP_VERSION='1.2.37' quasar dev", "dev": "PORT=8089 APP_VERSION='1.2.38' quasar dev",
"dev_noCheck": "SKIP_TSC=true quasar dev", "dev_noCheck": "SKIP_TSC=true quasar dev",
"build": "quasar build", "build": "quasar build",
"buildpwa": "NODE_ENV=production APP_VERSION='1.2.37' quasar build -m pwa", "buildpwa": "NODE_ENV=production APP_VERSION='1.2.38' quasar build -m pwa",
"buildpwatest": "NODE_ENV=production APP_VERSION='1.2.37' quasar build -m pwa", "buildpwatest": "NODE_ENV=production APP_VERSION='1.2.38' quasar build -m pwa",
"type-check": "vue-tsc --noEmit", "type-check": "vue-tsc --noEmit",
"type-check:watch": "vue-tsc --noEmit --watch", "type-check:watch": "vue-tsc --noEmit --watch",
"buildspa": "APP_VERSION='1.2.37' quasar build -m spa", "buildspa": "APP_VERSION='1.2.38' quasar build -m spa",
"lint": "eslint -c ./eslint.config.js \"./src*/**/*.{ts,js,cjs,mjs,vue}\"", "lint": "eslint -c ./eslint.config.js \"./src*/**/*.{ts,js,cjs,mjs,vue}\"",
"lintfile": "eslint --ext .js,.ts,.vue --ignore-path .gitignore ./ > file.out.txt", "lintfile": "eslint --ext .js,.ts,.vue --ignore-path .gitignore ./ > file.out.txt",
"lintfileNoJS": "eslint --ext .ts,.vue --ignore-path .gitignore ./ > file.out.txt", "lintfileNoJS": "eslint --ext .ts,.vue --ignore-path .gitignore ./ > file.out.txt",
"fix": "eslint -c ./eslint.config.js \"./src*/**/*.{ts,js,cjs,mjs,vue}\" --ignore-pattern .gitignore ./ --fix > file.out.txt", "fix": "eslint -c ./eslint.config.js \"./src*/**/*.{ts,js,cjs,mjs,vue}\" --ignore-pattern .gitignore ./ --fix > file.out.txt",
"pwa": "NODE_ENV=development PORT=8099 APP_VERSION='1.2.37' quasar dev -m pwa", "pwa": "NODE_ENV=development PORT=8099 APP_VERSION='1.2.38' quasar dev -m pwa",
"spa": "NODE_ENV=development PORT=8089 APP_VERSION='1.2.37' quasar dev", "spa": "NODE_ENV=development PORT=8089 APP_VERSION='1.2.38' quasar dev",
"debug": "quasar dev --mode debug", "debug": "quasar dev --mode debug",
"test": "echo \"No test specified\" && exit 0", "test": "echo \"No test specified\" && exit 0",
"generate-sw": "workbox generateSW workbox-config.js", "generate-sw": "workbox generateSW workbox-config.js",

View File

@@ -1,6 +1,6 @@
{ {
"name": "cnm", "name": "cnm",
"version": "1.2.37", "version": "1.2.38",
"description": "Comunita Nuovo Mondo", "description": "Comunita Nuovo Mondo",
"productName": "ComunitaNuovoMondo", "productName": "ComunitaNuovoMondo",
"author": "Surya", "author": "Surya",
@@ -9,7 +9,7 @@
"license": "MIT", "license": "MIT",
"type": "module", "type": "module",
"scripts": { "scripts": {
"dev": "PORT=8083 APP_VERSION='1.2.37' quasar dev", "dev": "PORT=8083 APP_VERSION='1.2.38' quasar dev",
"dev_noCheck": "SKIP_TSC=true quasar dev", "dev_noCheck": "SKIP_TSC=true quasar dev",
"build": "quasar build", "build": "quasar build",
"buildpwa": "NODE_ENV=production quasar build -m pwa", "buildpwa": "NODE_ENV=production quasar build -m pwa",
@@ -21,8 +21,8 @@
"lintfile": "eslint --ext .js,.ts,.vue --ignore-path .gitignore ./ > file.out.txt", "lintfile": "eslint --ext .js,.ts,.vue --ignore-path .gitignore ./ > file.out.txt",
"lintfileNoJS": "eslint --ext .ts,.vue --ignore-path .gitignore ./ > file.out.txt", "lintfileNoJS": "eslint --ext .ts,.vue --ignore-path .gitignore ./ > file.out.txt",
"fix": "eslint -c ./eslint.config.js \"./src*/**/*.{ts,js,cjs,mjs,vue}\" --ignore-pattern .gitignore ./ --fix > file.out.txt", "fix": "eslint -c ./eslint.config.js \"./src*/**/*.{ts,js,cjs,mjs,vue}\" --ignore-pattern .gitignore ./ --fix > file.out.txt",
"pwa": "NODE_ENV=development PORT=8093 APP_VERSION='1.2.37' quasar dev -m pwa", "pwa": "NODE_ENV=development PORT=8093 APP_VERSION='1.2.38' quasar dev -m pwa",
"spa": "NODE_ENV=development PORT=8083 APP_VERSION='1.2.37' quasar dev", "spa": "NODE_ENV=development PORT=8083 APP_VERSION='1.2.38' quasar dev",
"debug": "quasar dev --mode debug", "debug": "quasar dev --mode debug",
"test": "echo \"No test specified\" && exit 0", "test": "echo \"No test specified\" && exit 0",
"generate-sw": "workbox generateSW workbox-config.js", "generate-sw": "workbox generateSW workbox-config.js",

View File

@@ -1,6 +1,6 @@
{ {
"name": "freeplanet", "name": "freeplanet",
"version": "1.2.37", "version": "1.2.38",
"description": "freeplanet", "description": "freeplanet",
"productName": "freeplanet", "productName": "freeplanet",
"author": "Surya", "author": "Surya",
@@ -9,11 +9,11 @@
"license": "MIT", "license": "MIT",
"type": "module", "type": "module",
"scripts": { "scripts": {
"dev": "PORT=8087 APP_VERSION='1.2.37' quasar dev", "dev": "PORT=8087 APP_VERSION='1.2.38' quasar dev",
"dev_noCheck": "SKIP_TSC=true quasar dev", "dev_noCheck": "SKIP_TSC=true quasar dev",
"build": "quasar build", "build": "quasar build",
"buildpwa": "NODE_ENV=production APP_VERSION='1.2.37' quasar build -m pwa", "buildpwa": "NODE_ENV=production APP_VERSION='1.2.38' quasar build -m pwa",
"buildpwatest": "NODE_ENV=production APP_VERSION='1.2.37' quasar build -m pwa", "buildpwatest": "NODE_ENV=production APP_VERSION='1.2.38' quasar build -m pwa",
"type-check": "vue-tsc --noEmit", "type-check": "vue-tsc --noEmit",
"type-check:watch": "vue-tsc --noEmit --watch", "type-check:watch": "vue-tsc --noEmit --watch",
"buildspa": "quasar build -m spa", "buildspa": "quasar build -m spa",
@@ -21,8 +21,8 @@
"lintfile": "eslint --ext .js,.ts,.vue --ignore-path .gitignore ./ > file.out.txt", "lintfile": "eslint --ext .js,.ts,.vue --ignore-path .gitignore ./ > file.out.txt",
"lintfileNoJS": "eslint --ext .ts,.vue --ignore-path .gitignore ./ > file.out.txt", "lintfileNoJS": "eslint --ext .ts,.vue --ignore-path .gitignore ./ > file.out.txt",
"fix": "eslint -c ./eslint.config.js \"./src*/**/*.{ts,js,cjs,mjs,vue}\" --ignore-pattern .gitignore ./ --fix > file.out.txt", "fix": "eslint -c ./eslint.config.js \"./src*/**/*.{ts,js,cjs,mjs,vue}\" --ignore-pattern .gitignore ./ --fix > file.out.txt",
"pwa": "NODE_ENV=development PORT=8097 APP_VERSION='1.2.37' quasar dev -m pwa", "pwa": "NODE_ENV=development PORT=8097 APP_VERSION='1.2.38' quasar dev -m pwa",
"spa": "NODE_ENV=development PORT=8087 APP_VERSION='1.2.37' quasar dev", "spa": "NODE_ENV=development PORT=8087 APP_VERSION='1.2.38' quasar dev",
"debug": "quasar dev --mode debug", "debug": "quasar dev --mode debug",
"test": "echo \"No test specified\" && exit 0", "test": "echo \"No test specified\" && exit 0",
"generate-sw": "workbox generateSW workbox-config.js", "generate-sw": "workbox generateSW workbox-config.js",

View File

@@ -1,6 +1,6 @@
{ {
"name": "gruppomacro", "name": "gruppomacro",
"version": "1.2.37", "version": "1.2.38",
"description": "Gruppo Macro", "description": "Gruppo Macro",
"productName": "Gruppo Macro", "productName": "Gruppo Macro",
"author": "Surya", "author": "Surya",
@@ -9,20 +9,20 @@
"license": "MIT", "license": "MIT",
"type": "module", "type": "module",
"scripts": { "scripts": {
"dev": "PORT=8089 APP_VERSION='1.2.37' quasar dev", "dev": "PORT=8089 APP_VERSION='1.2.38' quasar dev",
"dev_noCheck": "SKIP_TSC=true quasar dev", "dev_noCheck": "SKIP_TSC=true quasar dev",
"build": "quasar build", "build": "quasar build",
"buildpwa": "NODE_ENV=production APP_VERSION='1.2.37' quasar build -m pwa", "buildpwa": "NODE_ENV=production APP_VERSION='1.2.38' quasar build -m pwa",
"buildpwatest": "NODE_ENV=production APP_VERSION='1.2.37' quasar build -m pwa", "buildpwatest": "NODE_ENV=production APP_VERSION='1.2.38' quasar build -m pwa",
"type-check": "vue-tsc --noEmit", "type-check": "vue-tsc --noEmit",
"type-check:watch": "vue-tsc --noEmit --watch", "type-check:watch": "vue-tsc --noEmit --watch",
"buildspa": "APP_VERSION='1.2.37' quasar build -m spa", "buildspa": "APP_VERSION='1.2.38' quasar build -m spa",
"lint": "eslint -c ./eslint.config.js \"./src*/**/*.{ts,js,cjs,mjs,vue}\"", "lint": "eslint -c ./eslint.config.js \"./src*/**/*.{ts,js,cjs,mjs,vue}\"",
"lintfile": "eslint --ext .js,.ts,.vue --ignore-path .gitignore ./ > file.out.txt", "lintfile": "eslint --ext .js,.ts,.vue --ignore-path .gitignore ./ > file.out.txt",
"lintfileNoJS": "eslint --ext .ts,.vue --ignore-path .gitignore ./ > file.out.txt", "lintfileNoJS": "eslint --ext .ts,.vue --ignore-path .gitignore ./ > file.out.txt",
"fix": "eslint -c ./eslint.config.js \"./src*/**/*.{ts,js,cjs,mjs,vue}\" --ignore-pattern .gitignore ./ --fix > file.out.txt", "fix": "eslint -c ./eslint.config.js \"./src*/**/*.{ts,js,cjs,mjs,vue}\" --ignore-pattern .gitignore ./ --fix > file.out.txt",
"pwa": "NODE_ENV=development PORT=8099 APP_VERSION='1.2.37' quasar dev -m pwa", "pwa": "NODE_ENV=development PORT=8099 APP_VERSION='1.2.38' quasar dev -m pwa",
"spa": "NODE_ENV=development PORT=8089 APP_VERSION='1.2.37' quasar dev", "spa": "NODE_ENV=development PORT=8089 APP_VERSION='1.2.38' quasar dev",
"debug": "quasar dev --mode debug", "debug": "quasar dev --mode debug",
"test": "echo \"No test specified\" && exit 0", "test": "echo \"No test specified\" && exit 0",
"generate-sw": "workbox generateSW workbox-config.js", "generate-sw": "workbox generateSW workbox-config.js",

View File

@@ -1,6 +1,6 @@
{ {
"name": "kolibrilab", "name": "kolibrilab",
"version": "1.2.37", "version": "1.2.38",
"description": "kolibrilab", "description": "kolibrilab",
"productName": "kolibrilab", "productName": "kolibrilab",
"author": "Surya Paolo", "author": "Surya Paolo",
@@ -8,11 +8,11 @@
"keywords": [], "keywords": [],
"license": "MIT", "license": "MIT",
"scripts": { "scripts": {
"dev": "PORT=8083 APP_VERSION='1.2.37' quasar dev", "dev": "PORT=8083 APP_VERSION='1.2.38' quasar dev",
"dev_noCheck": "SKIP_TSC=true quasar dev", "dev_noCheck": "SKIP_TSC=true quasar dev",
"build": "quasar build", "build": "quasar build",
"buildpwa": "NODE_ENV=production APP_VERSION='1.2.37' quasar build -m pwa", "buildpwa": "NODE_ENV=production APP_VERSION='1.2.38' quasar build -m pwa",
"buildpwatest": "NODE_ENV=production APP_VERSION='1.2.37' quasar build -m pwa", "buildpwatest": "NODE_ENV=production APP_VERSION='1.2.38' quasar build -m pwa",
"type-check": "vue-tsc --noEmit", "type-check": "vue-tsc --noEmit",
"type-check:watch": "vue-tsc --noEmit --watch", "type-check:watch": "vue-tsc --noEmit --watch",
"buildspa": "quasar build -m spa", "buildspa": "quasar build -m spa",
@@ -20,8 +20,8 @@
"lintfile": "eslint --ext .js,.ts,.vue --ignore-path .gitignore ./ > file.out.txt", "lintfile": "eslint --ext .js,.ts,.vue --ignore-path .gitignore ./ > file.out.txt",
"lintfileNoJS": "eslint --ext .ts,.vue --ignore-path .gitignore ./ > file.out.txt", "lintfileNoJS": "eslint --ext .ts,.vue --ignore-path .gitignore ./ > file.out.txt",
"fix": "eslint --ext .ts,.vue --ignore-path .gitignore ./ --fix > file.out.txt", "fix": "eslint --ext .ts,.vue --ignore-path .gitignore ./ --fix > file.out.txt",
"pwa": "NODE_ENV=development PORT=8093 APP_VERSION='1.2.37' quasar dev -m pwa", "pwa": "NODE_ENV=development PORT=8093 APP_VERSION='1.2.38' quasar dev -m pwa",
"spa": "NODE_ENV=development PORT=8083 APP_VERSION='1.2.37' quasar dev", "spa": "NODE_ENV=development PORT=8083 APP_VERSION='1.2.38' quasar dev",
"spanorefresh": "NODE_ENV=development NODE_OPTIONS=--max_old_space_size=4096 DEBUG=v8:* quasar dev -m spa", "spanorefresh": "NODE_ENV=development NODE_OPTIONS=--max_old_space_size=4096 DEBUG=v8:* quasar dev -m spa",
"test": "echo \"No test specified\" && exit 0", "test": "echo \"No test specified\" && exit 0",
"generate-sw": "workbox generateSW workbox-config.js" "generate-sw": "workbox generateSW workbox-config.js"

View File

@@ -1,6 +1,6 @@
{ {
"name": "piuchebuono", "name": "piuchebuono",
"version": "1.2.37", "version": "1.2.38",
"description": "PiuCheBuono", "description": "PiuCheBuono",
"productName": "PiuCheBuono", "productName": "PiuCheBuono",
"author": "Surya", "author": "Surya",
@@ -9,11 +9,11 @@
"license": "MIT", "license": "MIT",
"type": "module", "type": "module",
"scripts": { "scripts": {
"dev": "PORT=8085 APP_VERSION='1.2.37' quasar dev", "dev": "PORT=8085 APP_VERSION='1.2.38' quasar dev",
"dev_noCheck": "SKIP_TSC=true quasar dev", "dev_noCheck": "SKIP_TSC=true quasar dev",
"build": "quasar build", "build": "quasar build",
"buildpwa": "NODE_ENV=production APP_VERSION='1.2.37' quasar build -m pwa", "buildpwa": "NODE_ENV=production APP_VERSION='1.2.38' quasar build -m pwa",
"buildpwatest": "NODE_ENV=production APP_VERSION='1.2.37' quasar build -m pwa", "buildpwatest": "NODE_ENV=production APP_VERSION='1.2.38' quasar build -m pwa",
"type-check": "vue-tsc --noEmit", "type-check": "vue-tsc --noEmit",
"type-check:watch": "vue-tsc --noEmit --watch", "type-check:watch": "vue-tsc --noEmit --watch",
"buildspa": "quasar build -m spa", "buildspa": "quasar build -m spa",
@@ -21,8 +21,8 @@
"lintfile": "eslint --ext .js,.ts,.vue --ignore-path .gitignore ./ > file.out.txt", "lintfile": "eslint --ext .js,.ts,.vue --ignore-path .gitignore ./ > file.out.txt",
"lintfileNoJS": "eslint --ext .ts,.vue --ignore-path .gitignore ./ > file.out.txt", "lintfileNoJS": "eslint --ext .ts,.vue --ignore-path .gitignore ./ > file.out.txt",
"fix": "eslint -c ./eslint.config.js \"./src*/**/*.{ts,js,cjs,mjs,vue}\" --ignore-pattern .gitignore ./ --fix > file.out.txt", "fix": "eslint -c ./eslint.config.js \"./src*/**/*.{ts,js,cjs,mjs,vue}\" --ignore-pattern .gitignore ./ --fix > file.out.txt",
"pwa": "NODE_ENV=development PORT=8085 APP_VERSION='1.2.37' quasar dev -m pwa", "pwa": "NODE_ENV=development PORT=8085 APP_VERSION='1.2.38' quasar dev -m pwa",
"spa": "NODE_ENV=development PORT=8085 APP_VERSION='1.2.37' quasar dev", "spa": "NODE_ENV=development PORT=8085 APP_VERSION='1.2.38' quasar dev",
"debug": "quasar dev --mode debug", "debug": "quasar dev --mode debug",
"test": "echo \"No test specified\" && exit 0", "test": "echo \"No test specified\" && exit 0",
"generate-sw": "workbox generateSW workbox-config.js", "generate-sw": "workbox generateSW workbox-config.js",

View File

@@ -1,6 +1,6 @@
{ {
"name": "riso", "name": "riso",
"version": "1.2.37", "version": "1.2.38",
"description": "Siamo la Rete Italiana di Scambio Orizzontale, abbiamo creato questa piattaforma per metterla al servizio di chi vuole riscoprire il valore della condivisione e della cooperazione. Valori semplici e profondi che ci aiutano a ritrovare il Senso della Vita, perduto in questa società consumista, e riporti quei Sani Pricìpi Naturali ed Umani di Fratellanza che intere popolazioni antiche conoscevano bene.", "description": "Siamo la Rete Italiana di Scambio Orizzontale, abbiamo creato questa piattaforma per metterla al servizio di chi vuole riscoprire il valore della condivisione e della cooperazione. Valori semplici e profondi che ci aiutano a ritrovare il Senso della Vita, perduto in questa società consumista, e riporti quei Sani Pricìpi Naturali ed Umani di Fratellanza che intere popolazioni antiche conoscevano bene.",
"productName": "Riso", "productName": "Riso",
"author": "Surya", "author": "Surya",
@@ -9,11 +9,11 @@
"license": "MIT", "license": "MIT",
"type": "module", "type": "module",
"scripts": { "scripts": {
"dev": "APP_VERSION='1.2.37' PORT=8084 quasar dev", "dev": "APP_VERSION='1.2.38' PORT=8084 quasar dev",
"dev_noCheck": "SKIP_TSC=true quasar dev", "dev_noCheck": "SKIP_TSC=true quasar dev",
"build": "quasar build", "build": "quasar build",
"buildpwa": "NODE_ENV=production APP_VERSION='1.2.37' quasar build -m pwa", "buildpwa": "NODE_ENV=production APP_VERSION='1.2.38' quasar build -m pwa",
"buildpwatest": "NODE_ENV=production APP_VERSION='1.2.37' quasar build -m pwa", "buildpwatest": "NODE_ENV=production APP_VERSION='1.2.38' quasar build -m pwa",
"type-check": "vue-tsc --noEmit", "type-check": "vue-tsc --noEmit",
"type-check:watch": "vue-tsc --noEmit --watch", "type-check:watch": "vue-tsc --noEmit --watch",
"buildspa": "quasar build -m spa", "buildspa": "quasar build -m spa",
@@ -21,8 +21,8 @@
"lintfile": "eslint --ext .js,.ts,.vue --ignore-path .gitignore ./ > file.out.txt", "lintfile": "eslint --ext .js,.ts,.vue --ignore-path .gitignore ./ > file.out.txt",
"lintfileNoJS": "eslint --ext .ts,.vue --ignore-path .gitignore ./ > file.out.txt", "lintfileNoJS": "eslint --ext .ts,.vue --ignore-path .gitignore ./ > file.out.txt",
"fix": "eslint -c ./eslint.config.js \"./src*/**/*.{ts,js,cjs,mjs,vue}\" --ignore-pattern .gitignore ./ --fix > file.out.txt", "fix": "eslint -c ./eslint.config.js \"./src*/**/*.{ts,js,cjs,mjs,vue}\" --ignore-pattern .gitignore ./ --fix > file.out.txt",
"pwa": "NODE_ENV=development PORT=8094 APP_VERSION='1.2.37' quasar dev -m pwa", "pwa": "NODE_ENV=development PORT=8094 APP_VERSION='1.2.38' quasar dev -m pwa",
"spa": "NODE_ENV=development PORT=8084 APP_VERSION='1.2.37' quasar dev", "spa": "NODE_ENV=development PORT=8084 APP_VERSION='1.2.38' quasar dev",
"debug": "quasar dev --mode debug", "debug": "quasar dev --mode debug",
"test": "echo \"No test specified\" && exit 0", "test": "echo \"No test specified\" && exit 0",
"generate-sw": "workbox generateSW workbox-config.js", "generate-sw": "workbox generateSW workbox-config.js",

View File

@@ -3,7 +3,7 @@
/* global workbox */ /* global workbox */
/* global cfgenv */ /* global cfgenv */
const VITE_APP_VERSION = "1.2.37"; const VITE_APP_VERSION = "1.2.38";
// Costanti di configurazione // Costanti di configurazione
const DYNAMIC_CACHE = 'dynamic-cache-v2'; const DYNAMIC_CACHE = 'dynamic-cache-v2';

View File

@@ -128,7 +128,7 @@ export default defineComponent({
}) })
const hint = computed(() => { const hint = computed(() => {
return 'digita una parola da cercare' return 'digita un Argomento o Catalogo da cercare'
}) })
const visuType = computed(() => { const visuType = computed(() => {

View File

@@ -34,6 +34,7 @@
:prop_showMap="false" :prop_showMap="false"
:heightcarousel="heightcarousel" :heightcarousel="heightcarousel"
@clickButtBar="clickButtBar" @clickButtBar="clickButtBar"
:enableExport="true"
:opt="{ rowclass: true, widthcard, heightcard, widthimg, heightimg }" :opt="{ rowclass: true, widthcard, heightcard, widthimg, heightimg }"
> >
</CGridTableRec> </CGridTableRec>

View File

@@ -1064,7 +1064,7 @@ export default defineComponent({
filtersearch.push(objitem) filtersearch.push(objitem)
} }
} else if (item.value > 0) { } else if (item.value > 0 || (item.type === costanti.FieldType.boolean && item.value === true)) {
objitem[item.key] = item.value objitem[item.key] = item.value
filtersearch.push(objitem) filtersearch.push(objitem)

View File

@@ -1,12 +1,11 @@
<template> <template>
<div v-if="tools.isDebugOn()"></div> <div v-if="tools.isDebugOn()"></div>
<div :class="$q.screen.lt.sm ? `` : `q-pa-xs`" v-if="isfinishLoading"> <div
:class="$q.screen.lt.sm ? `` : `q-pa-xs`"
v-if="isfinishLoading"
>
<q-toggle <q-toggle
v-if=" v-if="(tools.isManager() || tools.isEditor() || tools.isGrafico()) && !showMap && editOn"
(tools.isManager() || tools.isEditor() || tools.isGrafico()) &&
!showMap &&
editOn
"
v-model="editOn" v-model="editOn"
color="green" color="green"
icon="fas fa-pencil-alt" icon="fas fa-pencil-alt"
@@ -32,18 +31,20 @@
v-if="butt_modif_new || mytitle" v-if="butt_modif_new || mytitle"
:class="$q.screen.lt.sm ? `` : `q-ma-xs` + ` `" :class="$q.screen.lt.sm ? `` : `q-ma-xs` + ` `"
> >
<q-toolbar v-if="mytitle" class="bg-primary text-white"> <q-toolbar
v-if="mytitle"
class="bg-primary text-white"
>
<q-toolbar-title>{{ mytitle }}</q-toolbar-title> <q-toolbar-title>{{ mytitle }}</q-toolbar-title>
</q-toolbar> </q-toolbar>
<q-space></q-space> <q-space></q-space>
<div v-if="butt_modif_new" class="row justify-center"> <div
v-if="butt_modif_new"
class="row justify-center"
>
<q-btn <q-btn
v-if=" v-if="mytable && !shared_consts.TABLES_FINDER.includes(mytable) && !showMap"
mytable &&
!shared_consts.TABLES_FINDER.includes(mytable) &&
!showMap
"
rounded rounded
dense dense
size="sm" size="sm"
@@ -72,7 +73,10 @@
</div> </div>
</div> </div>
<q-inner-loading :showing="spinner_visible"> <q-inner-loading :showing="spinner_visible">
<q-spinner-tail size="2em" color="primary" /> <q-spinner-tail
size="2em"
color="primary"
/>
</q-inner-loading> </q-inner-loading>
<CTitleBanner <CTitleBanner
@@ -84,7 +88,10 @@
</CTitleBanner> </CTitleBanner>
<div v-if="shared_consts.VERTIC_SHOW_GRID.includes(myvertical)"> <div v-if="shared_consts.VERTIC_SHOW_GRID.includes(myvertical)">
<div v-if="(prop_search || canEdit) && finder" class="q-my-xs text-right"> <div
v-if="(prop_search || canEdit) && finder"
class="q-my-xs text-right"
>
<!--<q-btn <!--<q-btn
size="sm" size="sm"
dense dense
@@ -100,8 +107,10 @@
v-show="searchList" v-show="searchList"
:class="$q.screen.lt.sm ? `` : `row` + ` text-blue `" :class="$q.screen.lt.sm ? `` : `row` + ` text-blue `"
> >
<span
<span v-for="(item, index) in searchList" :key="index"> v-for="(item, index) in searchList"
:key="index"
>
<div <div
class="text-center q-my-xs" class="text-center q-my-xs"
v-if="item.type === costanti.FieldType.separator" v-if="item.type === costanti.FieldType.separator"
@@ -110,17 +119,10 @@
size="sm" size="sm"
color="positive" color="positive"
rounded rounded
:icon=" :icon="!showfilteradv ? 'fas fa-arrow-down' : 'fas fa-arrow-up'"
!showfilteradv ? 'fas fa-arrow-down' : 'fas fa-arrow-up' :label="!showfilteradv ? $t('grid.advanced_filters') : $t('grid.hide_advanced_filters')"
"
:label="
!showfilteradv
? $t('grid.advanced_filters')
: $t('grid.hide_advanced_filters')
"
@click="showfilteradv = !showfilteradv" @click="showfilteradv = !showfilteradv"
></q-btn> ></q-btn>
</div> </div>
<div <div
@@ -130,8 +132,7 @@
<CMySelect <CMySelect
:col="fieldsTable.getColByColumns(mycolumns, item.key)" :col="fieldsTable.getColByColumns(mycolumns, item.key)"
v-if=" v-if="
(item.type === costanti.FieldType.select || (item.type === costanti.FieldType.select || item.type === costanti.FieldType.select_by_server) &&
item.type === costanti.FieldType.select_by_server) &&
lengthopt(item, false, false) > 1 lengthopt(item, false, false) > 1
" "
:label="labelcombo(item)" :label="labelcombo(item)"
@@ -139,11 +140,7 @@
@update:value="searchval(item.value, item.table)" @update:value="searchval(item.value, item.table)"
:addall="item.addall" :addall="item.addall"
:addnone="item.addnone" :addnone="item.addnone"
:tablesel=" :tablesel="item.type === costanti.FieldType.select_by_server ? item.tablesel : ''"
item.type === costanti.FieldType.select_by_server
? item.tablesel
: ''
"
:pickup="item.type === costanti.FieldType.select_by_server" :pickup="item.type === costanti.FieldType.select_by_server"
label-color="primary" label-color="primary"
class="combowidth" class="combowidth"
@@ -154,22 +151,12 @@
:options="valoriopt(item, item.addall, item.addnone)" :options="valoriopt(item, item.addall, item.addnone)"
:filter="item && item.filter ? item.filter : ''" :filter="item && item.filter ? item.filter : ''"
:filter_extra="item.filter_extra" :filter_extra="item.filter_extra"
:useinput=" :useinput="item.useinput && item.type !== costanti.FieldType.select_by_server"
item.useinput &&
item.type !== costanti.FieldType.select_by_server
"
> >
</CMySelect> </CMySelect>
<!--<div v-if="item.type === costanti.FieldType.multiselect_by_server">
item: {{ item}}
</div>-->
<CMySelect <CMySelect
v-if=" v-if="item.type === costanti.FieldType.multiselect_by_server && lengthopt(item, false) > 1"
item.type === costanti.FieldType.multiselect_by_server &&
lengthopt(item, false) > 1
"
:col="fieldsTable.getColByColumns(mycolumns, item.key)" :col="fieldsTable.getColByColumns(mycolumns, item.key)"
:multiselect_by_server="true" :multiselect_by_server="true"
:label="labelcombo(item)" :label="labelcombo(item)"
@@ -214,7 +201,10 @@
class="combowidth" class="combowidth"
:option-value="fieldsTable.getKeyByTable(item.table)" :option-value="fieldsTable.getKeyByTable(item.table)"
> >
<template v-if="item.icon" v-slot:prepend> <template
v-if="item.icon"
v-slot:prepend
>
<q-icon :name="item.icon" /> <q-icon :name="item.icon" />
</template> </template>
<template <template
@@ -223,8 +213,7 @@
> >
<div <div
v-if=" v-if="
scope.opt[fieldsTable.getLabelByTable(item.table)] || scope.opt[fieldsTable.getLabelByTable(item.table)] || (scope.opt && checkIfShowRec(scope.opt))
(scope.opt && checkIfShowRec(scope.opt))
" "
> >
<q-chip <q-chip
@@ -242,21 +231,14 @@
:icon="item.icon" :icon="item.icon"
size="12px" size="12px"
/> />
{{ {{ scope.opt[fieldsTable.getLabelByTable(item.table)] || scope.opt }}
scope.opt[fieldsTable.getLabelByTable(item.table)] ||
scope.opt
}}
</q-chip> </q-chip>
</div> </div>
</template> </template>
<template <template v-slot:option="{ itemProps, opt, selected, toggleOption }">
v-slot:option="{ itemProps, opt, selected, toggleOption }"
>
<q-item v-bind="itemProps"> <q-item v-bind="itemProps">
<q-item-section> <q-item-section>
<q-item-label>{{ <q-item-label>{{ opt[fieldsTable.getLabelByTable(item.table)] }}</q-item-label>
opt[fieldsTable.getLabelByTable(item.table)]
}}</q-item-label>
</q-item-section> </q-item-section>
<q-item-section side> <q-item-section side>
<q-toggle <q-toggle
@@ -267,14 +249,27 @@
</q-item> </q-item>
</template> </template>
</q-select> </q-select>
<q-toggle
v-else-if="item.type === costanti.FieldType.boolean"
:label="item.label"
v-model="item.value"
@update:model-value="refresh"
color="green"
/>
</div> </div>
</span> </span>
</div> </div>
</div> </div>
</q-slide-transition> </q-slide-transition>
<div v-if="prop_search || canEdit" class="q-gutter-sm"> <div
<div v-if="searchList && finder" class="row items-start"> v-if="prop_search || canEdit"
class="q-gutter-sm"
>
<div
v-if="searchList && finder"
class="row items-start"
>
<q-btn <q-btn
v-if="searchList && searchList.length > 0" v-if="searchList && searchList.length > 0"
class="q-mx-xs" class="q-mx-xs"
@@ -299,9 +294,7 @@
debounce="500" debounce="500"
:hint="!hintinbtnsearch ? hint : ''" :hint="!hintinbtnsearch ? hint : ''"
:error-message="noresultLabel" :error-message="noresultLabel"
:error=" :error="getNumRecFromQuery() === 0 && !startsearch && myfilter !== ''"
getNumRecFromQuery() === 0 && !startsearch && myfilter !== ''
"
:label="hintinbtnsearch ? hint : $t('grid.search')" :label="hintinbtnsearch ? hint : $t('grid.search')"
@keyup.enter="doSearch" @keyup.enter="doSearch"
@clear=" @clear="
@@ -313,7 +306,10 @@
class="col q-mx-xs" class="col q-mx-xs"
style="max-width: 400px" style="max-width: 400px"
> >
<template v-if="!search" v-slot:prepend> <template
v-if="!search"
v-slot:prepend
>
<q-icon name="search" /> <q-icon name="search" />
</template> </template>
</q-input> </q-input>
@@ -345,13 +341,7 @@
<q-space></q-space> <q-space></q-space>
<q-select <q-select
:behavior="$q.platform.is.ios === true ? 'dialog' : 'menu'" :behavior="$q.platform.is.ios === true ? 'dialog' : 'menu'"
v-if=" v-if="mytable && pagination.rowsNumber > 0 && (prop_search || canEdit) && showCol && myvertical === 0"
mytable &&
pagination.rowsNumber > 0 &&
(prop_search || canEdit) &&
showCol &&
myvertical === 0
"
v-model="colVisib" v-model="colVisib"
rounded rounded
outlined outlined
@@ -368,7 +358,10 @@
</q-select> </q-select>
</div> </div>
<div v-if="true" class=""> <div
v-if="true"
class=""
>
<div v-if="pagination.rowsNumber === 1 && prop_search"> <div v-if="pagination.rowsNumber === 1 && prop_search">
{{ pagination.rowsNumber }} elemento trovato {{ pagination.rowsNumber }} elemento trovato
<span v-html="getLabelAreaMap()"></span> <span v-html="getLabelAreaMap()"></span>
@@ -379,8 +372,15 @@
</div> </div>
</div> </div>
<div v-if="choose_visutype && $q.screen.gt.xs" class=""> <div
<q-radio v-model="myvertical" :val="2" label="Lista" /> v-if="choose_visutype && $q.screen.gt.xs"
class=""
>
<q-radio
v-model="myvertical"
:val="2"
label="Lista"
/>
<!--<q-radio v-if="mytable === toolsext.TAB" v-model="myvertical" :val="costanti.VISUTABLE_SCHEDA_GROUP" <!--<q-radio v-if="mytable === toolsext.TAB" v-model="myvertical" :val="costanti.VISUTABLE_SCHEDA_GROUP"
label="Scheda" label="Scheda"
@update:model-value="tools.setCookie('myv_' + prop_mytable, myvertical) "/> @update:model-value="tools.setCookie('myv_' + prop_mytable, myvertical) "/>
@@ -396,7 +396,10 @@
</div> </div>
</div> </div>
<div v-if="showMapAtLeast1" v-show="showMap"> <div
v-if="showMapAtLeast1"
v-show="showMap"
>
<CMapByTable <CMapByTable
ref="myMapComp" ref="myMapComp"
mytable="" mytable=""
@@ -495,11 +498,7 @@
<q-infinite-scroll <q-infinite-scroll
ref="myinfscroll" ref="myinfscroll"
v-else-if=" v-else-if="shared_consts.VERTIC_SHOW_GRID.includes(myvertical) && !loading && alreadymounting"
shared_consts.VERTIC_SHOW_GRID.includes(myvertical) &&
!loading &&
alreadymounting
"
:initial-index="0" :initial-index="0"
@load="onLoadScroll" @load="onLoadScroll"
:offset="350" :offset="350"
@@ -512,9 +511,7 @@
:key="col.name" :key="col.name"
class="text-italic text-weight-bold" class="text-italic text-weight-bold"
> >
<span <span v-if="col && showColCheck(col, tools.TIPOVIS_SHOW_RECORD, true)">
v-if="col && showColCheck(col, tools.TIPOVIS_SHOW_RECORD, true)"
>
{{ col.label }} {{ col.label }}
</span> </span>
</div> </div>
@@ -528,7 +525,10 @@
'justify-evenly': opt.rowclass, 'justify-evenly': opt.rowclass,
}" }"
> >
<div v-for="(row, indexrow) in serverData" :key="indexrow"> <div
v-for="(row, indexrow) in serverData"
:key="indexrow"
>
<div <div
v-if=" v-if="
showType === costanti.SHOW_MYCARD || showType === costanti.SHOW_MYCARD ||
@@ -542,9 +542,7 @@
<div v-if="setShowMonth(row, indexrow)"> <div v-if="setShowMonth(row, indexrow)">
<div> <div>
<div v-if="row.dateTimeStart"> <div v-if="row.dateTimeStart">
<strong>{{ <strong>{{ tools.getstrMonth(row.dateTimeStart) }}</strong>
tools.getstrMonth(row.dateTimeStart)
}}</strong>
</div> </div>
<div> <div>
<q-separator /> <q-separator />
@@ -589,10 +587,8 @@
</div> </div>
<div <div
v-else-if=" v-else-if="
(showType === costanti.SHOW_USERINFO && (showType === costanti.SHOW_USERINFO && myvertical !== costanti.VISUTABLE_SCHEDA_USER) ||
myvertical !== costanti.VISUTABLE_SCHEDA_USER) || (myvertical === 2 && shared_consts.TABLES_VISU_LISTA_USER.includes(tablesel))
(myvertical === 2 &&
shared_consts.TABLES_VISU_LISTA_USER.includes(tablesel))
" "
class="fill-all-width" class="fill-all-width"
> >
@@ -605,11 +601,7 @@
:circuitname="circuitname" :circuitname="circuitname"
:actionType="actionType" :actionType="actionType"
:labelextra="col_title ? row[col_title] : ''" :labelextra="col_title ? row[col_title] : ''"
:labelFooter=" :labelFooter="col_footer ? tools.getLabelFooterByRow(row, col_footer, tablesel) : ''"
col_footer
? tools.getLabelFooterByRow(row, col_footer, tablesel)
: ''
"
@showInnerDialog="showInnerDialog" @showInnerDialog="showInnerDialog"
> >
</CMyUser> </CMyUser>
@@ -619,8 +611,7 @@
</div> </div>
<div <div
v-else-if=" v-else-if="
(showType === costanti.SHOW_GROUPINFO && (showType === costanti.SHOW_GROUPINFO && myvertical !== costanti.VISUTABLE_SCHEDA_GROUP) ||
myvertical !== costanti.VISUTABLE_SCHEDA_GROUP) ||
(myvertical === 2 && tablesel === 'mygroups') || (myvertical === 2 && tablesel === 'mygroups') ||
myvertical === costanti.VISUTABLE_GROUP_CIRCUIT myvertical === costanti.VISUTABLE_GROUP_CIRCUIT
" "
@@ -636,32 +627,25 @@
/> />
</div> </div>
</div> </div>
<div <div v-else-if="showType === costanti.SHOW_MOVEMENTS && tablesel === 'movements'">
v-else-if="
showType === costanti.SHOW_MOVEMENTS && tablesel === 'movements'
"
>
<CSingleMovement :mov="row" /> <CSingleMovement :mov="row" />
</div> </div>
</div> </div>
</div> </div>
<template v-slot:loading> <template v-slot:loading>
<div class="row justify-center q-my-md"> <div class="row justify-center q-my-md">
<q-spinner-dots color="primary" size="40px" /> <q-spinner-dots
color="primary"
size="40px"
/>
</div> </div>
</template> </template>
</q-infinite-scroll> </q-infinite-scroll>
<q-table <q-table
v-else-if=" v-else-if="!shared_consts.VERTIC_SHOW_GRID.includes(myvertical) && !loading && serverData && mycolumns"
!shared_consts.VERTIC_SHOW_GRID.includes(myvertical) &&
!loading &&
serverData &&
mycolumns
"
:grid="shared_consts.VERTIC_SHOW_GRID.includes(myvertical)" :grid="shared_consts.VERTIC_SHOW_GRID.includes(myvertical)"
:grid-header=" :grid-header="
shared_consts.VERTIC_SHOW_GRID.includes(myvertical) && shared_consts.VERTIC_SHOW_GRID.includes(myvertical) && shared_consts.TABLES_WITH_SORTING.includes(mytable)
shared_consts.TABLES_WITH_SORTING.includes(mytable)
" "
flat flat
bordered bordered
@@ -701,19 +685,23 @@
:props="props" :props="props"
class="text-italic text-weight-bold" class="text-italic text-weight-bold"
> >
<span <span v-if="col && showColCheck(col, tools.TIPOVIS_SHOW_RECORD, true)">
v-if="col && showColCheck(col, tools.TIPOVIS_SHOW_RECORD, true)"
>
{{ col.label }} {{ col.label }}
</span> </span>
</q-th> </q-th>
</q-tr> </q-tr>
</template> </template>
<template v-else v-slot:header="props"> <template
v-else
v-slot:header="props"
>
<q-tr :props="props"> <q-tr :props="props">
<q-th> </q-th> <q-th> </q-th>
<span v-for="col in props.cols" :key="col.name"> <span
v-for="col in props.cols"
:key="col.name"
>
<q-th <q-th
v-if="col.sortable" v-if="col.sortable"
:key="col.name" :key="col.name"
@@ -732,7 +720,7 @@
v-slot:top-right v-slot:top-right
v-if="tablesList || arrfilters || enableExport" v-if="tablesList || arrfilters || enableExport"
> >
<span style="display: none">{{ (actual = null) }}</span> <span style="display: none">{{ actual = null }}</span>
<q-select <q-select
:behavior="$q.platform.is.ios === true ? 'dialog' : 'menu'" :behavior="$q.platform.is.ios === true ? 'dialog' : 'menu'"
@@ -781,7 +769,10 @@
v-if="searchList" v-if="searchList"
:class="$q.screen.lt.sm ? `` : `row` + ` text-blue `" :class="$q.screen.lt.sm ? `` : `row` + ` text-blue `"
> >
<span v-for="(item, index) in searchList" :key="index"> <span
v-for="(item, index) in searchList"
:key="index"
>
<div <div
class="text-center q-my-xs" class="text-center q-my-xs"
v-if="item.type === costanti.FieldType.separator" v-if="item.type === costanti.FieldType.separator"
@@ -789,35 +780,22 @@
<q-btn <q-btn
size="sm" size="sm"
color="positive" color="positive"
:icon=" :icon="!showfilteradv ? 'fas fa-arrow-down' : 'fas fa-arrow-up'"
!showfilteradv ? 'fas fa-arrow-down' : 'fas fa-arrow-up' :label="!showfilteradv ? $t('grid.advanced_filters') : $t('grid.hide_advanced_filters')"
"
:label="
!showfilteradv
? $t('grid.advanced_filters')
: $t('grid.hide_advanced_filters')
"
@click="showfilteradv = !showfilteradv" @click="showfilteradv = !showfilteradv"
></q-btn> ></q-btn>
</div> </div>
<CMySelect <CMySelect
:col="fieldsTable.getColByColumns(mycolumns, item.key)" :col="fieldsTable.getColByColumns(mycolumns, item.key)"
v-if=" v-if="item.type === costanti.FieldType.select || item.type === costanti.FieldType.select_by_server"
item.type === costanti.FieldType.select ||
item.type === costanti.FieldType.select_by_server
"
v-show="item.visible" v-show="item.visible"
:label="labelcombo(item)" :label="labelcombo(item)"
v-model:value="item.value" v-model:value="item.value"
@update:value="searchval(item.value, item.table)" @update:value="searchval(item.value, item.table)"
:addall="item.addall" :addall="item.addall"
:addnone="item.addnone" :addnone="item.addnone"
:tablesel=" :tablesel="item.type === costanti.FieldType.select_by_server ? item.tablesel : ''"
item.type === costanti.FieldType.select_by_server
? item.tablesel
: ''
"
:pickup="item.type === costanti.FieldType.select_by_server" :pickup="item.type === costanti.FieldType.select_by_server"
label-color="primary" label-color="primary"
class="combowidth" class="combowidth"
@@ -828,10 +806,7 @@
:options="valoriopt(item, item.addall, item.addnone)" :options="valoriopt(item, item.addall, item.addnone)"
:filter="item.filter" :filter="item.filter"
:filter_extra="item.filter_extra" :filter_extra="item.filter_extra"
:useinput=" :useinput="item.useinput && item.type !== costanti.FieldType.select_by_server"
item.useinput &&
item.type !== costanti.FieldType.select_by_server
"
> >
</CMySelect> </CMySelect>
@@ -887,7 +862,10 @@
class="combowidth" class="combowidth"
:option-value="fieldsTable.getKeyByTable(item.table)" :option-value="fieldsTable.getKeyByTable(item.table)"
> >
<template v-if="item.icon" v-slot:prepend> <template
v-if="item.icon"
v-slot:prepend
>
<q-icon :name="item.icon" /> <q-icon :name="item.icon" />
</template> </template>
<template <template
@@ -896,8 +874,7 @@
> >
<div <div
v-if=" v-if="
scope.opt[fieldsTable.getLabelByTable(item.table)] || scope.opt[fieldsTable.getLabelByTable(item.table)] || (scope.opt && checkIfShowRec(scope.opt))
(scope.opt && checkIfShowRec(scope.opt))
" "
> >
<q-chip <q-chip
@@ -915,21 +892,14 @@
:icon="item.icon" :icon="item.icon"
size="12px" size="12px"
/> />
{{ {{ scope.opt[fieldsTable.getLabelByTable(item.table)] || scope.opt }}
scope.opt[fieldsTable.getLabelByTable(item.table)] ||
scope.opt
}}
</q-chip> </q-chip>
</div> </div>
</template> </template>
<template <template v-slot:option="{ itemProps, opt, selected, toggleOption }">
v-slot:option="{ itemProps, opt, selected, toggleOption }"
>
<q-item v-bind="itemProps"> <q-item v-bind="itemProps">
<q-item-section> <q-item-section>
<q-item-label>{{ <q-item-label>{{ opt[fieldsTable.getLabelByTable(item.table)] }}</q-item-label>
opt[fieldsTable.getLabelByTable(item.table)]
}}</q-item-label>
</q-item-section> </q-item-section>
<q-item-section side> <q-item-section side>
<q-toggle <q-toggle
@@ -978,13 +948,7 @@
<q-space></q-space> <q-space></q-space>
<q-select <q-select
:behavior="$q.platform.is.ios === true ? 'dialog' : 'menu'" :behavior="$q.platform.is.ios === true ? 'dialog' : 'menu'"
v-if=" v-if="mytable && pagination.rowsNumber > 0 && (prop_search || canEdit) && showCol && myvertical === 0"
mytable &&
pagination.rowsNumber > 0 &&
(prop_search || canEdit) &&
showCol &&
myvertical === 0
"
v-model="colVisib" v-model="colVisib"
rounded rounded
outlined outlined
@@ -1001,15 +965,18 @@
</q-select> </q-select>
</div> </div>
<div v-if="pagination.rowsNumber === 1 && prop_search"> <div v-if="pagination.rowsNumber === 1 && prop_search">{{ pagination.rowsNumber }} elemento trovato</div>
{{ pagination.rowsNumber }} elemento trovato <div v-if="pagination.rowsNumber > 1 && prop_search">{{ pagination.rowsNumber }} elementi trovati</div>
</div>
<div v-if="pagination.rowsNumber > 1 && prop_search">
{{ pagination.rowsNumber }} elementi trovati
</div>
<div v-if="choose_visutype && $q.screen.gt.xs" class=""> <div
<q-radio v-model="myvertical" :val="2" label="Lista" /> v-if="choose_visutype && $q.screen.gt.xs"
class=""
>
<q-radio
v-model="myvertical"
:val="2"
label="Lista"
/>
<!--<q-radio v-if="mytable === toolsext.TAB" v-model="myvertical" :val="costanti.VISUTABLE_SCHEDA_GROUP" <!--<q-radio v-if="mytable === toolsext.TAB" v-model="myvertical" :val="costanti.VISUTABLE_SCHEDA_GROUP"
label="Scheda" label="Scheda"
@update:model-value="tools.setCookie('myv_' + prop_mytable, myvertical) "/> @update:model-value="tools.setCookie('myv_' + prop_mytable, myvertical) "/>
@@ -1026,30 +993,33 @@
</template> </template>
<template v-slot:body="props"> <template v-slot:body="props">
<q-tr :props="props" class="trclass"> <q-tr
<q-td auto-width class="tdclass"> :props="props"
<q-checkbox dense v-model="props.selected"></q-checkbox> class="trclass"
>
<q-td
auto-width
class="tdclass"
>
<q-checkbox
dense
v-model="props.selected"
></q-checkbox>
</q-td> </q-td>
<q-td v-for="col in mycolumns" :key="col.name" :props="props"> <q-td
v-for="col in mycolumns"
:key="col.name"
:props="props"
>
<div <div
v-if=" v-if="showColCheck(col, tools.TIPOVIS_SHOW_RECORD, true, 1, props.row)"
showColCheck(
col,
tools.TIPOVIS_SHOW_RECORD,
true,
1,
props.row
)
"
class="tdclass" class="tdclass"
> >
<div :class="getclrow(props.row)"> <div :class="getclrow(props.row)">
<CMyPopupEdit <CMyPopupEdit
:table="mytable" :table="mytable"
:canEdit="canEdit" :canEdit="canEdit"
:canModify=" :canModify="tools.canModifyThisRec(props.row, tablesel) || editOn"
tools.canModifyThisRec(props.row, tablesel) || editOn
"
:disable="disabilita()" :disable="disabilita()"
:mycol="col" :mycol="col"
v-model:row="props.row" v-model:row="props.row"
@@ -1065,8 +1035,15 @@
</div> </div>
</div> </div>
</q-td> </q-td>
<q-td v-for="col in mycolumns" :key="col.name" :props="props"> <q-td
<div v-if="colExtra.includes(col.name)" class="tdclass"> v-for="col in mycolumns"
:key="col.name"
:props="props"
>
<div
v-if="colExtra.includes(col.name)"
class="tdclass"
>
<div v-if="col.action && visCol(col)"> <div v-if="col.action && visCol(col)">
<q-btn <q-btn
flat flat
@@ -1089,20 +1066,11 @@
:style="props.selected ? 'transform: scale(0.95);' : ''" :style="props.selected ? 'transform: scale(0.95);' : ''"
> >
<q-card <q-card
:class=" :class="props.selected ? 'bg-grey-2 my-card-withshadow no-padding' : 'my-card-withshadow no-padding'"
props.selected style="background: radial-gradient(circle, #ffffff 0%, #bbddff 100%)"
? 'bg-grey-2 my-card-withshadow no-padding'
: 'my-card-withshadow no-padding'
"
style="
background: radial-gradient(circle, #ffffff 0%, #bbddff 100%);
"
> >
<q-bar <q-bar
v-if=" v-if="!visuinpage && (tools.canModifyThisRec(props.row, tablesel) || editOn)"
!visuinpage &&
(tools.canModifyThisRec(props.row, tablesel) || editOn)
"
dense dense
class="bg-primary text-white full-height" class="bg-primary text-white full-height"
> >
@@ -1110,13 +1078,7 @@
v-if="props.row['adType']" v-if="props.row['adType']"
:color="fieldsTable.getColByAdType(props.row['adType'])" :color="fieldsTable.getColByAdType(props.row['adType'])"
> >
{{ {{ fieldsTable.getValByTabAndId(tablesel, 'adType', props.row['adType']) }}
fieldsTable.getValByTabAndId(
tablesel,
"adType",
props.row["adType"]
)
}}
<!--<q-icon <!--<q-icon
:name="fieldsTable.getIconByAdType(props.row['adType'])" :name="fieldsTable.getIconByAdType(props.row['adType'])"
color="white" color="white"
@@ -1136,9 +1098,7 @@
@click=" @click="
clickFunz( clickFunz(
props.row, props.row,
prop_mycolumns.find( prop_mycolumns.find((rec) => rec.action === lists.MenuAction.CAN_EDIT_TABLE)
(rec) => rec.action === lists.MenuAction.CAN_EDIT_TABLE
)
) )
" "
></q-btn> ></q-btn>
@@ -1152,9 +1112,7 @@
@click=" @click="
clickFunz( clickFunz(
props.row, props.row,
prop_mycolumns.find( prop_mycolumns.find((rec) => rec.action === lists.MenuAction.DELETE_RECTABLE)
(rec) => rec.action === lists.MenuAction.DELETE_RECTABLE
)
) )
" "
></q-btn> ></q-btn>
@@ -1167,7 +1125,10 @@
<q-card-section class=""> <q-card-section class="">
<q-list dense> <q-list dense>
<div v-for="col in mycolumns" :key="col.name"> <div
v-for="col in mycolumns"
:key="col.name"
>
<q-item <q-item
v-if=" v-if="
showColCheck( showColCheck(
@@ -1180,16 +1141,20 @@
:class="clByCol(col)" :class="clByCol(col)"
class="riduci_pad" class="riduci_pad"
> >
<q-item-section avatar v-if="col.icon"> <q-item-section
avatar
v-if="col.icon"
>
<q-item-label class="q-table__col"> <q-item-label class="q-table__col">
<q-icon :name="col.icon"></q-icon> <q-icon :name="col.icon"></q-icon>
</q-item-label> </q-item-label>
</q-item-section> </q-item-section>
<q-item-section avatar v-if="visuIntestazCol(col)"> <q-item-section
<q-item-label class="q-table__col">{{ avatar
col.label v-if="visuIntestazCol(col)"
}}</q-item-label> >
<q-item-label class="q-table__col">{{ col.label }}</q-item-label>
</q-item-section> </q-item-section>
<q-item-section> <q-item-section>
<div class="tdclass"> <div class="tdclass">
@@ -1197,10 +1162,7 @@
<CMyPopupEdit <CMyPopupEdit
:table="mytable" :table="mytable"
:canEdit="canEdit" :canEdit="canEdit"
:canModify=" :canModify="tools.canModifyThisRec(props.row, tablesel) || editOn"
tools.canModifyThisRec(props.row, tablesel) ||
editOn
"
:disable="disabilita()" :disable="disabilita()"
:mycol="col" :mycol="col"
v-model:row="props.row" v-model:row="props.row"
@@ -1257,15 +1219,10 @@
type="search" type="search"
:hint=" :hint="
pagination.rowsNumber === 1 && prop_search pagination.rowsNumber === 1 && prop_search
? `${pagination.rowsNumber} ` + ? `${pagination.rowsNumber} ` + t('grid.found') + ' ' + getLabelAreaMap(false)
t('grid.found') +
' ' +
getLabelAreaMap(false)
: pagination.rowsNumber > 1 && prop_search : pagination.rowsNumber > 1 && prop_search
? `${pagination.rowsNumber} ${labelElemFind}` + ? `${pagination.rowsNumber} ${labelElemFind}` + ' ' + getLabelAreaMap(false)
' ' + : ''
getLabelAreaMap(false)
: ''
" "
debounce="500" debounce="500"
:error-message="noresultLabel" :error-message="noresultLabel"
@@ -1274,8 +1231,15 @@
v-on:keyup.enter="doSearch" v-on:keyup.enter="doSearch"
> >
<template v-slot:prepend> <template v-slot:prepend>
<q-spinner-oval v-if="startsearch" color="primary" size="1em" /> <q-spinner-oval
<q-icon v-else name="search" /> v-if="startsearch"
color="primary"
size="1em"
/>
<q-icon
v-else
name="search"
/>
</template> </template>
<template v-slot:append> <template v-slot:append>
<q-btn <q-btn
@@ -1322,10 +1286,7 @@
@hide="hidewindow" @hide="hidewindow"
:maximized="$q.screen.lt.sm" :maximized="$q.screen.lt.sm"
:persistent="false" :persistent="false"
:class=" :class="'dialog_annunci ' + ($q.screen.lt.sm ? 'bottom-dialog' : ' right-align-dialog')"
'dialog_annunci ' +
($q.screen.lt.sm ? 'bottom-dialog' : ' right-align-dialog')
"
> >
<CMyCardGrpPopup <CMyCardGrpPopup
v-if="mytable === shared_consts.TABLES_MYGROUPS" v-if="mytable === shared_consts.TABLES_MYGROUPS"
@@ -1354,7 +1315,11 @@
@showInMap="showInMap" @showInMap="showInMap"
> >
</CMyCardService> </CMyCardService>
<CMyCardPopup v-else :table="mytable" :prop_myrec="myrecdialog"> <CMyCardPopup
v-else
:table="mytable"
:prop_myrec="myrecdialog"
>
</CMyCardPopup> </CMyCardPopup>
</q-dialog> </q-dialog>
@@ -1376,7 +1341,10 @@
dense dense
> >
<template v-slot:control> <template v-slot:control>
<div class="self-center full-width no-outline" tabindex="0"> <div
class="self-center full-width no-outline"
tabindex="0"
>
{{ mycol.label }} {{ mycol.label }}
</div> </div>
</template> </template>
@@ -1389,9 +1357,7 @@
<CMyPopupEdit <CMyPopupEdit
:table="mytable" :table="mytable"
:canEdit="true" :canEdit="true"
:canModify=" :canModify="tools.canModifyThisRec(rowclicksel, tablesel) || editOn"
tools.canModifyThisRec(rowclicksel, tablesel) || editOn
"
:disable="disabilita()" :disable="disabilita()"
:isInModif="mycol.isInModif" :isInModif="mycol.isInModif"
view="field" view="field"
@@ -1422,10 +1388,19 @@
:maximized="$q.screen.lt.sm" :maximized="$q.screen.lt.sm"
> >
<q-card class="dialog_card"> <q-card class="dialog_card">
<q-bar dense class="bg-primary text-white"> <q-bar
{{ t("dialog.insert") }} {{ mytitlenew }}: dense
class="bg-primary text-white"
>
{{ t('dialog.insert') }} {{ mytitlenew }}:
<q-space /> <q-space />
<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-bar> </q-bar>
<q-card-section class="inset-shadow"> <q-card-section class="inset-shadow">
<div <div
@@ -1443,27 +1418,13 @@
dense dense
rounded rounded
:icon="!showfilteradv ? 'fas fa-arrow-down' : 'fas fa-arrow-up'" :icon="!showfilteradv ? 'fas fa-arrow-down' : 'fas fa-arrow-up'"
:label=" :label="showfilteradv ? $t('grid.hide_campi_avanzati') : $t('grid.show_campi_avanzati')"
showfilteradv
? $t('grid.hide_campi_avanzati')
: $t('grid.show_campi_avanzati')
"
:class="{ 'q-btn--active': showfilteradv }" :class="{ 'q-btn--active': showfilteradv }"
:aria-expanded="showfilteradv.toString()" :aria-expanded="showfilteradv.toString()"
@click="showfilteradv = !showfilteradv" @click="showfilteradv = !showfilteradv"
></q-btn> ></q-btn>
</div> </div>
<div <div v-if="showColCheck(col, tools.TIPOVIS_NEW_RECORD, true, 0, newRecord) && col.foredit">
v-if="
showColCheck(
col,
tools.TIPOVIS_NEW_RECORD,
true,
0,
newRecord
) && col.foredit
"
>
<div class=""> <div class="">
<CMyPopupEdit <CMyPopupEdit
:table="mytable" :table="mytable"
@@ -1512,13 +1473,25 @@
:maximized="$q.screen.lt.sm" :maximized="$q.screen.lt.sm"
> >
<q-card class="dialog_card"> <q-card class="dialog_card">
<q-bar dense class="bg-primary text-white"> <q-bar
dense
class="bg-primary text-white"
>
<span class="ellipsis">{{ recModif[col_title] }}</span> <span class="ellipsis">{{ recModif[col_title] }}</span>
<q-space /> <q-space />
<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-bar> </q-bar>
<q-card-section class="inset-shadow"> <q-card-section class="inset-shadow">
<div v-for="col in mycolumns" :key="col.name"> <div
v-for="col in mycolumns"
:key="col.name"
>
<div <div
class="text-center q-my-xs" class="text-center q-my-xs"
v-if="col.fieldtype === costanti.FieldType.separator" v-if="col.fieldtype === costanti.FieldType.separator"
@@ -1528,28 +1501,19 @@
size="md" size="md"
dense dense
:icon="!showfilteradv ? 'fas fa-arrow-down' : 'fas fa-arrow-up'" :icon="!showfilteradv ? 'fas fa-arrow-down' : 'fas fa-arrow-up'"
:label=" :label="!showfilteradv ? $t('grid.show_campi_avanzati') : $t('grid.hide_campi_avanzati')"
!showfilteradv
? $t('grid.show_campi_avanzati')
: $t('grid.hide_campi_avanzati')
"
@click="showfilteradv = !showfilteradv" @click="showfilteradv = !showfilteradv"
></q-btn> ></q-btn>
</div> </div>
<div <div
v-else-if=" v-else-if="showColCheck(col, tools.TIPOVIS_EDIT_RECORD, false) && col.foredit"
showColCheck(col, tools.TIPOVIS_EDIT_RECORD, false) &&
col.foredit
"
class="tdclass" class="tdclass"
> >
<div> <div>
<CMyPopupEdit <CMyPopupEdit
:table="mytable" :table="mytable"
:canEdit="true" :canEdit="true"
:canModify=" :canModify="tools.canModifyThisRec(recModif, tablesel) || editOn"
tools.canModifyThisRec(recModif, tablesel) || editOn
"
:tablesel="col.tablesel" :tablesel="col.tablesel"
:mycol="col" :mycol="col"
:isInModif="true" :isInModif="true"
@@ -1586,11 +1550,20 @@
</q-dialog> </q-dialog>
<span v-if="!hidetitleIfEmpty"> <br /></span> <span v-if="!hidetitleIfEmpty"> <br /></span>
</div> </div>
<q-dialog v-model="showNotification" :maximized="$q.screen.lt.sm"> <q-dialog
v-model="showNotification"
:maximized="$q.screen.lt.sm"
>
<q-card class="dialog_card"> <q-card class="dialog_card">
<q-toolbar class="bg-primary text-white"> <q-toolbar class="bg-primary text-white">
<q-toolbar-title> Notifiche </q-toolbar-title> <q-toolbar-title> Notifiche </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-toolbar>
<q-card-section class="inset-shadow"> <q-card-section class="inset-shadow">
@@ -1600,9 +1573,8 @@
</q-dialog> </q-dialog>
</template> </template>
<script lang="ts" src="./CGridTableRec.ts"> <script lang="ts" src="./CGridTableRec.ts"></script>
</script>
<style lang="scss"> <style lang="scss">
@import "./CGridTableRec.scss"; @import './CGridTableRec.scss';
</style> </style>

View File

@@ -13,7 +13,7 @@
/>--> />-->
<q-img <q-img
:width="opt.widthimg" :width="opt.widthimg"
@click="apriInfo = true" @click="naviga(pagina_collegata)"
:height="opt.heightimg" :height="opt.heightimg"
class="clickable-image" class="clickable-image"
fit="cover" fit="cover"
@@ -32,14 +32,21 @@
class="q-mb-sm text-center text-bold" class="q-mb-sm text-center text-bold"
style="font-size: 1.15rem" style="font-size: 1.15rem"
> >
{{ myrec.title }} <a
:href="pagina_collegata"
target="_blank"
>{{ myrec.title }}</a
>
</div> </div>
<div class=""> <div class="">
<div class="text-caption text-h7 text-grey q-pb-xs"> <div class="text-caption text-h7 text-grey q-pb-xs">
<q-icon name="fas fa-list-ol" /> {{ $t('cataloglist.numprodotti') }}: <q-icon name="fas fa-list-ol" /> {{ $t('cataloglist.numprodotti') }}:
<span :class="`text-` + (numprodottistr === 0 ? 'red' : 'blue')">{{ numprodottistr }}</span> <span :class="`text-` + (numprodottistr === 0 ? 'red' : 'blue')">{{ numprodottistr }}</span>
</div> </div>
<div class="text-caption text-h7 text-grey q-pb-xs"> <div
v-if="!tools.isUtente()"
class="text-caption text-h7 text-grey q-pb-xs"
>
<q-icon name="fas fa-user" /> {{ $t('cataloglist.referenti') }}: <q-icon name="fas fa-user" /> {{ $t('cataloglist.referenti') }}:
<span <span
v-if="myrec.referenti && myrec.referenti.length > 0" v-if="myrec.referenti && myrec.referenti.length > 0"
@@ -59,21 +66,21 @@
<span class="text-blue">{{ collanestr }}</span> <span class="text-blue">{{ collanestr }}</span>
</div> </div>
<div <div
v-if="argomentistr" v-if="!tools.isUtente() && argomentistr"
class="text-caption text-h7 text-grey q-pb-xs" class="text-caption text-h7 text-grey q-pb-xs"
> >
<q-icon name="fas fa-book" /> {{ $t('cataloglist.argomenti') }}: <q-icon name="fas fa-book" /> {{ $t('cataloglist.argomenti') }}:
<span class="text-blue">{{ argomentistr + ` (${numprodtot})` }}</span> <span class="text-blue">{{ argomentistr + ` (${numprodtot})` }}</span>
</div> </div>
<div <div
v-if="editorestr" v-if="!tools.isUtente() && editorestr"
class="text-caption text-h7 text-grey q-pb-xs" class="text-caption text-h7 text-grey q-pb-xs"
> >
<q-icon name="fas fa-book-open" /> {{ $t('cataloglist.casaeditrice') }}: <q-icon name="fas fa-book-open" /> {{ $t('cataloglist.casaeditrice') }}:
<span class="text-blue">{{ editorestr }}</span> <span class="text-blue">{{ editorestr }}</span>
</div> </div>
<div <div
v-if="!esiste_descrintro" v-if="!tools.isUtente() && !esiste_descrintro"
class="text-caption text-h7 text-grey q-pb-xs" class="text-caption text-h7 text-grey q-pb-xs"
> >
<q-icon name="fas fa-pencil-alt" /> Testo descrittivo: <q-icon name="fas fa-pencil-alt" /> Testo descrittivo:
@@ -82,7 +89,7 @@
}}</span> }}</span>
</div> </div>
<div <div
v-if="!myrec.img_bordata?.imagefile" v-if="!tools.isUtente() && !myrec.img_bordata?.imagefile"
class="text-caption text-h7 text-grey q-pb-xs" class="text-caption text-h7 text-grey q-pb-xs"
> >
<q-icon name="fas fa-image" /> Sfondo: <q-icon name="fas fa-image" /> Sfondo:
@@ -91,7 +98,7 @@
}}</span> }}</span>
</div> </div>
<div <div
v-if="!myrec.img_intro?.imagefile" v-if="!tools.isUtente() && !myrec.img_intro?.imagefile"
class="text-caption text-h7 text-grey q-pb-xs" class="text-caption text-h7 text-grey q-pb-xs"
> >
<q-icon name="fas fa-image" /> Copertina: <q-icon name="fas fa-image" /> Copertina:
@@ -111,7 +118,10 @@
> >
(Data: {{ tools.getstrDate(myrec.data_generato) }}) (Data: {{ tools.getstrDate(myrec.data_generato) }})
</div> </div>
<div class="text-caption text-h7 text-grey q-pb-xs"> <div
v-if="!tools.isUtente()"
class="text-caption text-h7 text-grey q-pb-xs"
>
<q-icon name="fas fa-list" /> Lista generata il: <q-icon name="fas fa-list" /> Lista generata il:
<span :class="`text-` + (tools.isDateValid(myrec.data_lista_generata) ? 'blue' : 'red')" <span :class="`text-` + (tools.isDateValid(myrec.data_lista_generata) ? 'blue' : 'red')"
>{{ tools.getstrDate(myrec.data_lista_generata) || '(non ancora generata)' }} da >{{ tools.getstrDate(myrec.data_lista_generata) || '(non ancora generata)' }} da

View File

@@ -120,9 +120,9 @@ export default defineComponent({
// Colonne della tabella // Colonne della tabella
const allColumns = [ const allColumns = [
{ name: "pos", label: "Ind", field: "pos", align: "left", style: "width: 50px" }, { name: "pos", label: "Ind", field: "pos", align: "left", style: "width: 50px" },
{ name: "drag", label: "Ord", field: "", align: "left", style: "width: 50px", edit: true }, { name: "drag", label: "Ord", field: "", align: "left", style: "width: 50px", edit: true, noexp: true },
{ name: "validato", label: "Val", field: "validato", align: "left", style: "" }, { name: "validato", label: "Val", field: "validato", align: "left", style: "" },
{ name: "image", label: "Foto", field: "image", align: "center" }, { name: "image", label: "Foto", field: "image", align: "center", noexp: true },
{ name: "name", label: "Titolo del Libro", field: "name", align: "left" }, { name: "name", label: "Titolo del Libro", field: "name", align: "left" },
{ name: "authors", label: "Autore", field: "authors", align: "left" }, { name: "authors", label: "Autore", field: "authors", align: "left" },
{ name: "isbn", label: "ISBN", field: "isbn", align: "left" }, { name: "isbn", label: "ISBN", field: "isbn", align: "left" },
@@ -150,7 +150,7 @@ export default defineComponent({
{ name: "totFat", label: "Fat 5A", field: "totFat", align: "right", visu: costanti.VISUCAMPI.PER_EDITORE }, { name: "totFat", label: "Fat 5A", field: "totFat", align: "right", visu: costanti.VISUCAMPI.PER_EDITORE },
{ name: "ult_ord", label: "Ult. Ordine", field: "ult_ord", align: "left", visu: costanti.VISUCAMPI.PER_EDITORE }, { name: "ult_ord", label: "Ult. Ordine", field: "ult_ord", align: "left", visu: costanti.VISUCAMPI.PER_EDITORE },
{ name: "quantity", label: "Magazz.", field: "quantity", align: "right", visu: costanti.VISUCAMPI.PER_EDITORE }, { name: "quantity", label: "Magazz.", field: "quantity", align: "right", visu: costanti.VISUCAMPI.PER_EDITORE },
{ name: "actions", label: "Azioni", field: "", align: "center", visu: costanti.VISUCAMPI.PER_EDITORE }, { name: "actions", label: "Azioni", field: "", align: "center", visu: costanti.VISUCAMPI.PER_EDITORE, noexp: true },
]; ];
function getFieldValue(element: any, field: any): any { function getFieldValue(element: any, field: any): any {
@@ -204,10 +204,10 @@ export default defineComponent({
return tools.getstrDate(element.productInfo?.date_pub); return tools.getstrDate(element.productInfo?.date_pub);
case 'prezzo': case 'prezzo':
return tools.getstrDate(element.price); return element.price ? '€ ' + element.price.toFixed(2) : '';
case 'prezzo_sconto': case 'prezzo_sconto':
return tools.getstrDate(element.sale_price); return element.sale_price ? '€ ' + element.sale_price.toFixed(2) : '';
case 'rank3M': case 'rank3M':
return element.productInfo?.rank3M; return element.productInfo?.rank3M;
@@ -315,6 +315,9 @@ export default defineComponent({
return {} return {}
switch (field.field) { switch (field.field) {
case 'prezzo':
case 'prezzo_sconto':
return { width: '55px', textAlign: 'right' };
case 'validato': case 'validato':
return { return {
cursor: 'pointer', cursor: 'pointer',
@@ -378,6 +381,11 @@ export default defineComponent({
return selectedColumns.value.includes(column) && ok; return selectedColumns.value.includes(column) && ok;
} }
const getColumnLabelByName = (name: string): string => {
const column = allColumns.find((col) => col.name === name);
return column ? column.label : '';
}
// Funzione per eliminare un prodotto // Funzione per eliminare un prodotto
const removeProduct = (product) => { const removeProduct = (product) => {
internalProducts.value = internalProducts.value.filter((p: any) => p._id !== product._id); internalProducts.value = internalProducts.value.filter((p: any) => p._id !== product._id);
@@ -535,6 +543,37 @@ export default defineComponent({
} }
} }
function exportToCSV() {
const csvContent = [
selectedColumns.value
.filter((col) => !allColumns.find((c) => c.name === col)?.noexp)
.map((col) => getColumnLabelByName(col))
.join('|'),
...internalProducts.value.map((product: any) => {
return selectedColumns.value
.filter((col) => !allColumns.find((c) => c.name === col)?.noexp)
.map((col: string) => {
const field = { field: col };
return field.field === 'pos' ? internalProducts.value.indexOf(product) + 1 : getFieldValue(product, field);
}).join('|');
}),
].join('\r\n');
const filename = 'prodotti_' + new Date().toISOString().slice(0, 10) + '.csv';
const blob = new Blob([csvContent], { type: 'text/csv;charset=utf-8;' });
const link = document.createElement('a');
const url = URL.createObjectURL(blob);
link.setAttribute('href', url);
link.setAttribute('download', filename);
link.style.visibility = 'hidden';
document.body.appendChild(link);
link.click();
document.body.removeChild(link);
}
onMounted(mounted) onMounted(mounted)
@@ -575,6 +614,7 @@ export default defineComponent({
getFieldStyle, getFieldStyle,
getFieldClick, getFieldClick,
handleUpdate, handleUpdate,
exportToCSV,
} }
} }
}) })

View File

@@ -21,6 +21,15 @@
<q-icon name="settings" /> <q-icon name="settings" />
</template> </template>
</q-select> </q-select>
<q-btn
class="q-ml-md float-right"
flat
outline
color="primary"
icon="archive"
label="Esporta Lista"
@click="exportToCSV"
/>
</div> </div>
<div class="row justify-center q-mx-auto q-pt-sm text-italic"> <div class="row justify-center q-mx-auto q-pt-sm text-italic">

View File

@@ -1686,6 +1686,7 @@ const msg_it = {
}, },
myelems: { myelems: {
pubblica_online: 'Pubblica OnLine',
active: 'Attiva', active: 'Attiva',
img: 'img', img: 'img',
image: 'Immagine:', image: 'Immagine:',

View File

@@ -125,7 +125,7 @@ export const colmailinglist = [
] ]
export const colTableCatalogList = [ export const colTableCatalogList = [
AddCol({ name: 'active', label_trans: 'myelems.active', fieldtype: costanti.FieldType.boolean }), AddCol({ name: 'active', label_trans: 'myelems.pubblica_online', fieldtype: costanti.FieldType.boolean }),
AddCol({ name: 'title', label_trans: 'gallery.title' }), AddCol({ name: 'title', label_trans: 'gallery.title' }),
AddCol({ AddCol({
name: 'foto_collana', name: 'foto_collana',

View File

@@ -9822,21 +9822,42 @@ export const tools = {
return Object.keys(obj).length === 0; return Object.keys(obj).length === 0;
}, },
isUtente() {
const userStore = useUserStore()
return (!userStore.isEditor && !userStore.isCommerciale && !userStore.isAdmin && !userStore.isManager & !userStore.isGrafico)
},
getsearchList_Cataloghi() { getsearchList_Cataloghi() {
const lista = [{ const lista = [
visible: true, {
visible: !this.isUtente(),
label: 'Editore', label: 'Editore',
table: 'lista_editori', table: 'lista_editori',
key: 'referenti', key: 'referenti',
type: costanti.FieldType.select, type: costanti.FieldType.select,
value: this.getCookie(this.COOK_SEARCH + costanti.FILTER_SEP + shared_consts.TABLES_LISTA_EDITORI + costanti.FILTER_SEP + 'referente', costanti.FILTER_TUTTI), value: this.isUtente() ? costanti.FILTER_TUTTI : this.getCookie(this.COOK_SEARCH + costanti.FILTER_SEP + shared_consts.TABLES_LISTA_EDITORI + costanti.FILTER_SEP + 'referente', costanti.FILTER_TUTTI),
keycookie: '', keycookie: '',
addall: true, addall: true,
arrvalue: [], arrvalue: [],
filter: null, filter: null,
useinput: false, useinput: false,
icon: 'fas fa-user' icon: 'fas fa-user'
}] },
{
visible: !this.isUtente(),
label: 'Pubblicati OnLine',
key: 'active',
type: costanti.FieldType.boolean,
value: this.isUtente() ? true: this.getCookie(this.COOK_SEARCH + costanti.FILTER_SEP + shared_consts.TABLES_CATALOG + costanti.FILTER_SEP + 'active', true),
keycookie: '',
addall: true,
arrvalue: [],
filter: null,
useinput: false,
icon: 'fas fa-globe'
},
]
console.log('getsearchList_Cataloghi', lista) console.log('getsearchList_Cataloghi', lista)

View File

@@ -165,7 +165,6 @@
color="primary" color="primary"
@click="clickaddNewBook()" @click="clickaddNewBook()"
></q-btn> ></q-btn>
<div <div
class="q-ma-sm row" class="q-ma-sm row"
style="border-radius: 10px; border: 1px solid #ccc" style="border-radius: 10px; border: 1px solid #ccc"