- 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_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_VUE_ROUTER_MODE="history"

View 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.37">
<meta name="version" content="1.2.38">
<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<% } %>">

View File

@@ -1,6 +1,6 @@
{
"name": "gruppomacro",
"version": "1.2.37",
"version": "1.2.38",
"description": "Gruppo Macro",
"productName": "Gruppo Macro",
"author": "Surya",
@@ -9,20 +9,20 @@
"license": "MIT",
"type": "module",
"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",
"build": "quasar build",
"buildpwa": "NODE_ENV=production APP_VERSION='1.2.37' quasar build -m pwa",
"buildpwatest": "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.38' quasar build -m pwa",
"type-check": "vue-tsc --noEmit",
"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}\"",
"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.37' quasar dev -m pwa",
"spa": "NODE_ENV=development PORT=8089 APP_VERSION='1.2.37' quasar dev",
"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.38' quasar dev",
"debug": "quasar dev --mode debug",
"test": "echo \"No test specified\" && exit 0",
"generate-sw": "workbox generateSW workbox-config.js",

View File

@@ -1,6 +1,6 @@
{
"name": "cnm",
"version": "1.2.37",
"version": "1.2.38",
"description": "Comunita Nuovo Mondo",
"productName": "ComunitaNuovoMondo",
"author": "Surya",
@@ -9,7 +9,7 @@
"license": "MIT",
"type": "module",
"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",
"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.37' quasar dev -m pwa",
"spa": "NODE_ENV=development PORT=8083 APP_VERSION='1.2.37' quasar dev",
"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.38' quasar dev",
"debug": "quasar dev --mode debug",
"test": "echo \"No test specified\" && exit 0",
"generate-sw": "workbox generateSW workbox-config.js",

View File

@@ -1,6 +1,6 @@
{
"name": "freeplanet",
"version": "1.2.37",
"version": "1.2.38",
"description": "freeplanet",
"productName": "freeplanet",
"author": "Surya",
@@ -9,11 +9,11 @@
"license": "MIT",
"type": "module",
"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",
"build": "quasar build",
"buildpwa": "NODE_ENV=production APP_VERSION='1.2.37' quasar build -m pwa",
"buildpwatest": "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.38' 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.37' quasar dev -m pwa",
"spa": "NODE_ENV=development PORT=8087 APP_VERSION='1.2.37' quasar dev",
"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.38' quasar dev",
"debug": "quasar dev --mode debug",
"test": "echo \"No test specified\" && exit 0",
"generate-sw": "workbox generateSW workbox-config.js",

View File

@@ -1,6 +1,6 @@
{
"name": "gruppomacro",
"version": "1.2.37",
"version": "1.2.38",
"description": "Gruppo Macro",
"productName": "Gruppo Macro",
"author": "Surya",
@@ -9,20 +9,20 @@
"license": "MIT",
"type": "module",
"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",
"build": "quasar build",
"buildpwa": "NODE_ENV=production APP_VERSION='1.2.37' quasar build -m pwa",
"buildpwatest": "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.38' quasar build -m pwa",
"type-check": "vue-tsc --noEmit",
"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}\"",
"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.37' quasar dev -m pwa",
"spa": "NODE_ENV=development PORT=8089 APP_VERSION='1.2.37' quasar dev",
"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.38' quasar dev",
"debug": "quasar dev --mode debug",
"test": "echo \"No test specified\" && exit 0",
"generate-sw": "workbox generateSW workbox-config.js",

View File

@@ -1,6 +1,6 @@
{
"name": "kolibrilab",
"version": "1.2.37",
"version": "1.2.38",
"description": "kolibrilab",
"productName": "kolibrilab",
"author": "Surya Paolo",
@@ -8,11 +8,11 @@
"keywords": [],
"license": "MIT",
"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",
"build": "quasar build",
"buildpwa": "NODE_ENV=production APP_VERSION='1.2.37' quasar build -m pwa",
"buildpwatest": "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.38' quasar build -m pwa",
"type-check": "vue-tsc --noEmit",
"type-check:watch": "vue-tsc --noEmit --watch",
"buildspa": "quasar build -m spa",
@@ -20,8 +20,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 --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",
"spa": "NODE_ENV=development PORT=8083 APP_VERSION='1.2.37' quasar dev",
"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.38' quasar dev",
"spanorefresh": "NODE_ENV=development NODE_OPTIONS=--max_old_space_size=4096 DEBUG=v8:* quasar dev -m spa",
"test": "echo \"No test specified\" && exit 0",
"generate-sw": "workbox generateSW workbox-config.js"

View File

@@ -1,6 +1,6 @@
{
"name": "piuchebuono",
"version": "1.2.37",
"version": "1.2.38",
"description": "PiuCheBuono",
"productName": "PiuCheBuono",
"author": "Surya",
@@ -9,11 +9,11 @@
"license": "MIT",
"type": "module",
"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",
"build": "quasar build",
"buildpwa": "NODE_ENV=production APP_VERSION='1.2.37' quasar build -m pwa",
"buildpwatest": "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.38' 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.37' quasar dev -m pwa",
"spa": "NODE_ENV=development PORT=8085 APP_VERSION='1.2.37' quasar dev",
"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.38' quasar dev",
"debug": "quasar dev --mode debug",
"test": "echo \"No test specified\" && exit 0",
"generate-sw": "workbox generateSW workbox-config.js",

View File

@@ -1,6 +1,6 @@
{
"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.",
"productName": "Riso",
"author": "Surya",
@@ -9,11 +9,11 @@
"license": "MIT",
"type": "module",
"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",
"build": "quasar build",
"buildpwa": "NODE_ENV=production APP_VERSION='1.2.37' quasar build -m pwa",
"buildpwatest": "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.38' 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.37' quasar dev -m pwa",
"spa": "NODE_ENV=development PORT=8084 APP_VERSION='1.2.37' quasar dev",
"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.38' quasar dev",
"debug": "quasar dev --mode debug",
"test": "echo \"No test specified\" && exit 0",
"generate-sw": "workbox generateSW workbox-config.js",

View File

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

View File

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

View File

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

View File

@@ -1064,7 +1064,7 @@ export default defineComponent({
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
filtersearch.push(objitem)

View File

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

View File

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

View File

@@ -120,9 +120,9 @@ export default defineComponent({
// Colonne della tabella
const allColumns = [
{ 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: "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: "authors", label: "Autore", field: "authors", 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: "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: "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 {
@@ -204,10 +204,10 @@ export default defineComponent({
return tools.getstrDate(element.productInfo?.date_pub);
case 'prezzo':
return tools.getstrDate(element.price);
return element.price ? '€ ' + element.price.toFixed(2) : '';
case 'prezzo_sconto':
return tools.getstrDate(element.sale_price);
return element.sale_price ? '€ ' + element.sale_price.toFixed(2) : '';
case 'rank3M':
return element.productInfo?.rank3M;
@@ -315,6 +315,9 @@ export default defineComponent({
return {}
switch (field.field) {
case 'prezzo':
case 'prezzo_sconto':
return { width: '55px', textAlign: 'right' };
case 'validato':
return {
cursor: 'pointer',
@@ -378,6 +381,11 @@ export default defineComponent({
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
const removeProduct = (product) => {
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)
@@ -575,6 +614,7 @@ export default defineComponent({
getFieldStyle,
getFieldClick,
handleUpdate,
exportToCSV,
}
}
})

View File

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

View File

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

View File

@@ -125,7 +125,7 @@ export const colmailinglist = [
]
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: 'foto_collana',

View File

@@ -9822,21 +9822,42 @@ export const tools = {
return Object.keys(obj).length === 0;
},
isUtente() {
const userStore = useUserStore()
return (!userStore.isEditor && !userStore.isCommerciale && !userStore.isAdmin && !userStore.isManager & !userStore.isGrafico)
},
getsearchList_Cataloghi() {
const lista = [{
visible: true,
const lista = [
{
visible: !this.isUtente(),
label: 'Editore',
table: 'lista_editori',
key: 'referenti',
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: '',
addall: true,
arrvalue: [],
filter: null,
useinput: false,
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)

View File

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