ver: 1.1.21:

- Lista dei Cataloghi
- Gestione Cataloghi in base alla configurazione
This commit is contained in:
Surya Paolo
2025-02-10 22:48:53 +01:00
parent 4da257e43a
commit 3d0e307e42
85 changed files with 1419 additions and 547 deletions

View File

@@ -1,4 +1,4 @@
APP_VERSION="1.1.20" APP_VERSION="1.1.21"
SERVICE_WORKER_FILE="service-worker.js" SERVICE_WORKER_FILE="service-worker.js"
APP_ID="18" APP_ID="18"
DIRECTORY_LOCAL="newfreeplanet" DIRECTORY_LOCAL="newfreeplanet"

View File

@@ -1,4 +1,4 @@
APP_VERSION="1.1.20" APP_VERSION="1.1.21"
SERVICE_WORKER_FILE="service-worker.js" SERVICE_WORKER_FILE="service-worker.js"
APP_ID="13" APP_ID="13"
DIRECTORY_LOCAL=newfreeplanet DIRECTORY_LOCAL=newfreeplanet

View File

@@ -1,4 +1,4 @@
APP_VERSION="1.1.20" APP_VERSION="1.1.21"
SERVICE_WORKER_FILE="service-worker.js" SERVICE_WORKER_FILE="service-worker.js"
APP_ID="18" APP_ID="18"
DIRECTORY_LOCAL=newfreeplanet DIRECTORY_LOCAL=newfreeplanet

View File

@@ -1,4 +1,4 @@
APP_VERSION="1.1.20" APP_VERSION="1.1.21"
SERVICE_WORKER_FILE="service-worker.js" SERVICE_WORKER_FILE="service-worker.js"
APP_ID="17" APP_ID="17"
DIRECTORY_LOCAL="newfreeplanet" DIRECTORY_LOCAL="newfreeplanet"

View File

@@ -1,4 +1,4 @@
APP_VERSION="1.1.20" APP_VERSION="1.1.21"
SERVICE_WORKER_FILE="service-worker.js" SERVICE_WORKER_FILE="service-worker.js"
APP_ID="13" APP_ID="13"
DIRECTORY_LOCAL=newfreeplanet DIRECTORY_LOCAL=newfreeplanet

View File

@@ -1,4 +1,4 @@
APP_VERSION="1.1.20" APP_VERSION="1.1.21"
SERVICE_WORKER_FILE="service-worker.js" SERVICE_WORKER_FILE="service-worker.js"
APP_ID="13" APP_ID="13"
DIRECTORY_LOCAL=newfreeplanet DIRECTORY_LOCAL=newfreeplanet

View File

@@ -1,4 +1,4 @@
APP_VERSION="1.1.20" APP_VERSION="1.1.21"
SERVICE_WORKER_FILE="service-worker.js" SERVICE_WORKER_FILE="service-worker.js"
APP_ID="19" APP_ID="19"
DIRECTORY_LOCAL=newfreeplanet DIRECTORY_LOCAL=newfreeplanet

View File

@@ -1,4 +1,4 @@
APP_VERSION="1.1.20" APP_VERSION="1.1.21"
SERVICE_WORKER_FILE="service-worker.js" SERVICE_WORKER_FILE="service-worker.js"
APP_ID="18" APP_ID="18"
DIRECTORY_LOCAL=newfreeplanet DIRECTORY_LOCAL=newfreeplanet

View File

@@ -1,4 +1,4 @@
APP_VERSION="1.1.20" APP_VERSION="1.1.21"
SERVICE_WORKER_FILE="service-worker.js" SERVICE_WORKER_FILE="service-worker.js"
APP_ID="17" APP_ID="17"
DIRECTORY_LOCAL="newfreeplanet" DIRECTORY_LOCAL="newfreeplanet"

View File

@@ -1,4 +1,4 @@
APP_VERSION="1.1.20" APP_VERSION="1.1.21"
SERVICE_WORKER_FILE="service-worker.js" SERVICE_WORKER_FILE="service-worker.js"
APP_ID="13" APP_ID="13"
DIRECTORY_LOCAL=newfreeplanet DIRECTORY_LOCAL=newfreeplanet

View File

@@ -1,4 +1,4 @@
APP_VERSION="1.1.20" APP_VERSION="1.1.21"
SERVICE_WORKER_FILE="service-worker.js" SERVICE_WORKER_FILE="service-worker.js"
APP_ID="13" APP_ID="13"
DIRECTORY_LOCAL=newfreeplanet DIRECTORY_LOCAL=newfreeplanet

View File

@@ -1,4 +1,4 @@
APP_VERSION="1.1.20" APP_VERSION="1.1.21"
SERVICE_WORKER_FILE="service-worker.js" SERVICE_WORKER_FILE="service-worker.js"
APP_ID="13" APP_ID="13"
DIRECTORY_LOCAL=newfreeplanet DIRECTORY_LOCAL=newfreeplanet

View File

@@ -1,4 +1,4 @@
APP_VERSION="1.1.20" APP_VERSION="1.1.21"
SERVICE_WORKER_FILE="service-worker.js" SERVICE_WORKER_FILE="service-worker.js"
APP_ID="19" APP_ID="19"
DIRECTORY_LOCAL="newfreeplanet" DIRECTORY_LOCAL="newfreeplanet"

View File

@@ -1,4 +1,4 @@
APP_VERSION="1.1.20" APP_VERSION="1.1.21"
SERVICE_WORKER_FILE="service-worker.js" SERVICE_WORKER_FILE="service-worker.js"
APP_ID="19" APP_ID="19"
DIRECTORY_LOCAL=newfreeplanet DIRECTORY_LOCAL=newfreeplanet

View File

@@ -1,6 +1,6 @@
{ {
"name": "abitaregliiblei", "name": "abitaregliiblei",
"version": "1.1.20", "version": "1.1.21",
"description": "Abitare Gli Iblei", "description": "Abitare Gli Iblei",
"productName": "AbitareGliIblei", "productName": "AbitareGliIblei",
"author": "Surya", "author": "Surya",

View File

@@ -1,4 +1,4 @@
APP_VERSION="1.1.20" APP_VERSION="1.1.21"
SERVICE_WORKER_FILE="service-worker.js" SERVICE_WORKER_FILE="service-worker.js"
APP_ID="13" APP_ID="13"
DIRECTORY_LOCAL="newfreeplanet" DIRECTORY_LOCAL="newfreeplanet"

View File

@@ -1,4 +1,4 @@
APP_VERSION="1.1.20" APP_VERSION="1.1.21"
SERVICE_WORKER_FILE="service-worker.js" SERVICE_WORKER_FILE="service-worker.js"
APP_ID="13" APP_ID="13"
DIRECTORY_LOCAL=newfreeplanet DIRECTORY_LOCAL=newfreeplanet

View File

@@ -1,4 +1,4 @@
APP_VERSION="1.1.20" APP_VERSION="1.1.21"
SERVICE_WORKER_FILE="service-worker.js" SERVICE_WORKER_FILE="service-worker.js"
APP_ID="16" APP_ID="16"
DIRECTORY_LOCAL=newfreeplanet DIRECTORY_LOCAL=newfreeplanet

View File

@@ -1,6 +1,6 @@
{ {
"name": "riso", "name": "riso",
"version": "1.1.20", "version": "1.1.21",
"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",

View File

@@ -1,4 +1,4 @@
APP_VERSION="1.1.20" APP_VERSION="1.1.21"
SERVICE_WORKER_FILE="service-worker.js" SERVICE_WORKER_FILE="service-worker.js"
APP_ID="15" APP_ID="15"
DIRECTORY_LOCAL="newfreeplanet" DIRECTORY_LOCAL="newfreeplanet"

View File

@@ -1,4 +1,4 @@
APP_VERSION="1.1.20" APP_VERSION="1.1.21"
SERVICE_WORKER_FILE="service-worker.js" SERVICE_WORKER_FILE="service-worker.js"
APP_ID="15" APP_ID="15"
DIRECTORY_LOCAL=newfreeplanet DIRECTORY_LOCAL=newfreeplanet

View File

@@ -1,4 +1,4 @@
APP_VERSION="1.1.20" APP_VERSION="1.1.21"
SERVICE_WORKER_FILE="service-worker.js" SERVICE_WORKER_FILE="service-worker.js"
APP_ID="15" APP_ID="15"
DIRECTORY_LOCAL=newfreeplanet DIRECTORY_LOCAL=newfreeplanet

View File

@@ -1,6 +1,6 @@
{ {
"name": "fioredellavita", "name": "fioredellavita",
"version": "1.1.20", "version": "1.1.21",
"description": "Fiore Della Vita", "description": "Fiore Della Vita",
"productName": "Fiore Della Vita", "productName": "Fiore Della Vita",
"author": "Surya", "author": "Surya",

View File

@@ -1,4 +1,4 @@
APP_VERSION="1.1.20" APP_VERSION="1.1.21"
SERVICE_WORKER_FILE="service-worker.js" SERVICE_WORKER_FILE="service-worker.js"
APP_ID="18" APP_ID="18"
DIRECTORY_LOCAL="newfreeplanet" DIRECTORY_LOCAL="newfreeplanet"

View File

@@ -1,4 +1,4 @@
APP_VERSION="1.1.20" APP_VERSION="1.1.21"
SERVICE_WORKER_FILE="service-worker.js" SERVICE_WORKER_FILE="service-worker.js"
APP_ID="18" APP_ID="18"
DIRECTORY_LOCAL=newfreeplanet DIRECTORY_LOCAL=newfreeplanet

View File

@@ -1,6 +1,6 @@
{ {
"name": "gruppomacro", "name": "gruppomacro",
"version": "1.1.20", "version": "1.1.21",
"description": "GruppoMacro", "description": "GruppoMacro",
"productName": "Gruppo Macro", "productName": "Gruppo Macro",
"author": "Surya", "author": "Surya",

View File

@@ -1,4 +1,4 @@
APP_VERSION="1.1.20" APP_VERSION="1.1.21"
SERVICE_WORKER_FILE="service-worker.js" SERVICE_WORKER_FILE="service-worker.js"
APP_ID="17" APP_ID="17"
DIRECTORY_LOCAL="newfreeplanet" DIRECTORY_LOCAL="newfreeplanet"

View File

@@ -1,4 +1,4 @@
APP_VERSION="1.1.20" APP_VERSION="1.1.21"
SERVICE_WORKER_FILE="service-worker.js" SERVICE_WORKER_FILE="service-worker.js"
APP_ID="17" APP_ID="17"
DIRECTORY_LOCAL="newfreeplanet" DIRECTORY_LOCAL="newfreeplanet"

View File

@@ -1,6 +1,6 @@
{ {
"name": "piuchebuono", "name": "piuchebuono",
"version": "1.1.20", "version": "1.1.21",
"description": "PiuCheBuono", "description": "PiuCheBuono",
"productName": "PiuCheBuono", "productName": "PiuCheBuono",
"author": "Surya", "author": "Surya",

View File

@@ -1,4 +1,4 @@
APP_VERSION="1.1.20" APP_VERSION="1.1.21"
SERVICE_WORKER_FILE="service-worker.js" SERVICE_WORKER_FILE="service-worker.js"
APP_ID="13" APP_ID="13"
DIRECTORY_LOCAL="newfreeplanet" DIRECTORY_LOCAL="newfreeplanet"

View File

@@ -1,4 +1,4 @@
APP_VERSION="1.1.20" APP_VERSION="1.1.21"
SERVICE_WORKER_FILE="service-worker.js" SERVICE_WORKER_FILE="service-worker.js"
APP_ID="13" APP_ID="13"
DIRECTORY_LOCAL=newfreeplanet DIRECTORY_LOCAL=newfreeplanet

View File

@@ -1,4 +1,4 @@
APP_VERSION="1.1.20" APP_VERSION="1.1.21"
SERVICE_WORKER_FILE="service-worker.js" SERVICE_WORKER_FILE="service-worker.js"
APP_ID="16" APP_ID="16"
DIRECTORY_LOCAL=newfreeplanet DIRECTORY_LOCAL=newfreeplanet

View File

@@ -1,6 +1,6 @@
{ {
"name": "riso", "name": "riso",
"version": "1.1.20", "version": "1.1.21",
"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",

View File

@@ -8,6 +8,7 @@ const postcssImport = require('postcss-import');
const helpers = require('./helpers'); const helpers = require('./helpers');
const baseConfig = { const baseConfig = {
mode: 'production',
entry: { entry: {
bundle: path.resolve(__dirname, '/src/main.ts'), bundle: path.resolve(__dirname, '/src/main.ts'),
}, },

View File

@@ -1,8 +1,8 @@
{ {
"name": "riso", "name": "gruppomacro",
"version": "1.1.20", "version": "1.1.21",
"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": "Gruppo Macro",
"productName": "Riso", "productName": "Gruppo Macro",
"author": "Surya", "author": "Surya",
"private": true, "private": true,
"keywords": [], "keywords": [],
@@ -35,7 +35,7 @@
"@types/leaflet": "^1.9.16", "@types/leaflet": "^1.9.16",
"@vue/compat": "^3.5.13", "@vue/compat": "^3.5.13",
"@vue/compiler-sfc": "^3.5.13", "@vue/compiler-sfc": "^3.5.13",
"@vue/eslint-config-standard": "^8.0.1", "@vue/eslint-config-standard": "^9.0.0",
"@vuelidate/core": "^2.0.3", "@vuelidate/core": "^2.0.3",
"@vuelidate/validators": "^2.0.4", "@vuelidate/validators": "^2.0.4",
"acorn": "^8.14.0", "acorn": "^8.14.0",
@@ -70,6 +70,7 @@
"quasar": "^2.17.7", "quasar": "^2.17.7",
"quasar-extras": "^2.0.9", "quasar-extras": "^2.0.9",
"register-service-worker": "^1.7.2", "register-service-worker": "^1.7.2",
"rxjs": "^7.8.1",
"typescript-eslint": "^8.23.0", "typescript-eslint": "^8.23.0",
"vee-validate": "^4.15.0", "vee-validate": "^4.15.0",
"vue": "^3.5.13", "vue": "^3.5.13",
@@ -114,7 +115,7 @@
"babel-loader": "^9.2.1", "babel-loader": "^9.2.1",
"copy-webpack-plugin": "^12.0.2", "copy-webpack-plugin": "^12.0.2",
"eslint": "^9.19.0", "eslint": "^9.19.0",
"eslint-config-prettier": "9.1.0", "eslint-config-prettier": "10.0.1",
"eslint-plugin-import": "^2.31.0", "eslint-plugin-import": "^2.31.0",
"eslint-plugin-node": "^11.1.0", "eslint-plugin-node": "^11.1.0",
"eslint-plugin-promise": "^7.2.1", "eslint-plugin-promise": "^7.2.1",
@@ -137,7 +138,7 @@
"strip-ansi": "=7.1.0", "strip-ansi": "=7.1.0",
"ts-jest": "^29.2.5", "ts-jest": "^29.2.5",
"ts-loader": "^9.5.2", "ts-loader": "^9.5.2",
"typescript": "5.6.2", "typescript": "5.7.3",
"vue-cli-plugin-element-ui": "^1.1.4", "vue-cli-plugin-element-ui": "^1.1.4",
"vueify": "^9.4.1", "vueify": "^9.4.1",
"webpack": "^5.97.1", "webpack": "^5.97.1",
@@ -161,7 +162,7 @@
"not dead" "not dead"
], ],
"engines": { "engines": {
"node": ">= 18.18.0", "node": ">= 22.13.1",
"npm": ">= 6.14.8", "npm": ">= 6.14.8",
"yarn": ">= 1.21.1" "yarn": ">= 1.21.1"
} }

View File

@@ -34,7 +34,7 @@ self.addEventListener('activate', (event) => {
}); });
const APP_VERSION = "1.1.20"; const APP_VERSION = "1.1.21";
console.log(' [ VER-' + APP_VERSION + ' ] _---------________------ PAO: this is my custom service worker'); console.log(' [ VER-' + APP_VERSION + ' ] _---------________------ PAO: this is my custom service worker');
@@ -295,13 +295,13 @@ if (workbox) {
return response; return response;
} catch (error) { } catch (error) {
console.error('[Service Worker] Fetch error:', error); console.error('[Service Worker] Fetch error:', error, request);
// Personalizza la risposta di errore in base al tipo di richiesta // Personalizza la risposta di errore in base al tipo di richiesta
if (request.headers.get('Accept')?.includes('application/json')) { if (request.headers.get('Accept')?.includes('application/json')) {
return new Response(JSON.stringify({ return new Response(JSON.stringify({
error: 'Network error', error: 'Network error',
message: 'Service unavailable' message: 'Servizio non disponibile, riprovare !'
}), { }), {
status: 503, status: 503,
headers: { headers: {

View File

@@ -2303,6 +2303,8 @@ export const shared_consts = {
return add + 'grp' + add return add + 'grp' + add
} else if (table === 'circuits') { } else if (table === 'circuits') {
return add + 'circuit' + add return add + 'circuit' + add
} else if (table === 'catalogs') {
return add + 'catalogs' + add
} }
return '' return ''

View File

@@ -59,24 +59,25 @@ export default defineComponent({
const tokenList = [ const tokenList = [
{ label: '50 Token', value: 50 }, { label: '50 Token', value: 50 },
{ label: '100 Token', value: 100 }, { label: '100 Token', value: 100 },
{ label: '200 Token', value: 200 }, { label: '200 Token', value: 200 },
{ label: '500 Token', value: 500 }, { label: '500 Token', value: 500 },
{ label: '1000 Token', value: 1000 }, { label: '1000 Token', value: 1000 },
{ label: '2500 Token', value: 2500 }, { label: '2500 Token', value: 2500 },
{ label: '4000 Token', value: 4000 }, { label: '4000 Token', value: 4000 },
{ label: '5000 Token', value: 5000 }, { label: '5000 Token', value: 5000 },
{ label: '10000 Token', value: 10000 }, { label: '10000 Token', value: 10000 },
] ]
const model = ref('deepseek-chat') const model = ref('deepseek-chat')
const max_tokens = ref(100) const max_tokens = ref(50)
const outputType = ref('') const outputType = ref('')
const temp = ref(0.3) const temperatura = ref(0.3)
const stream = ref(false) const stream = ref(false)
const contestsystem = ref('') const contestsystem = ref('')
const inputPrompt = ref(''); const inputPrompt = ref('');
const result = ref(''); const result = ref('');
const outputvisibile = ref('');
const isLoading = ref(false); const isLoading = ref(false);
const errorMessage = ref(''); const errorMessage = ref('');
const finish_reason = ref(''); const finish_reason = ref('');
@@ -95,56 +96,138 @@ export default defineComponent({
querylist.value = globalStore.getQueryAI() querylist.value = globalStore.getQueryAI()
outputType.value = outputTypeList[0].value model.value = tools.getCookie('AI_MOD', 'deepseek-chat')
max_tokens.value = tools.getCookie('AI_MT', 50, true)
withexplain.value = tools.getCookie('AI_WS', '0') === '1'
outputType.value = tools.getCookie('AI_OT', outputTypeList[0].value)
temperatura.value = tools.convstrToNum(tools.getCookie('AI_TEM', '0.3'))
stream.value = tools.getCookie('AI_ST', '0') === '1'
contestsystem.value = tools.getCookie('AI_CON', '')
inputPrompt.value = tools.getCookie('AI_PRO', '')
}
function getInput() {
return "Prompt:\n" + inputPrompt.value + '\n\nRisposta:\n'
} }
async function handleSubmit() { async function handleSubmit() {
isLoading.value = true; isLoading.value = true;
errorMessage.value = ''; errorMessage.value = '';
if (outputvisibile.value) {
outputvisibile.value += '\n\n'
}
outputvisibile.value += getInput();
result.value = ''; result.value = '';
finish_reason.value = '';
tools.setCookie('AI_MOD', model.value)
tools.setCookie('AI_MT', max_tokens.value.toString())
tools.setCookie('AI_OT', outputType.value)
tools.setCookie('AI_TEM', temperatura.value.toString())
tools.setCookie('AI_ST', stream.value ? '1' : '0')
tools.setCookie('AI_WE', withexplain.value ? '1' : '0')
tools.setCookie('AI_CON', contestsystem.value)
tools.setCookie('AI_PRO', inputPrompt.value)
options.value = { options.value = {
model: model.value, model: model.value,
max_tokens: max_tokens.value, max_tokens: max_tokens.value,
temp: temp.value, temp: temperatura.value,
stream: stream.value, stream: stream.value,
withexplain: withexplain.value, withexplain: withexplain.value,
} outputType: outputType.value,
};
try { try {
if (options.value.stream) {
// Modalità streaming
const response = await globalStore.getQueryDS(inputPrompt.value, options.value);
const resdata = await globalStore.getQueryDS(inputPrompt.value, options.value) console.log('uscita da getQueryDS')
if (resdata.code === serv_constants.RIS_CODE_OK) { isLoading.value = false;
if (resdata.choice) {
finish_reason.value = resdata.choice.finish_reason || '' // Leggi il flusso di dati
const reader = response.data.getReader();
const decoder = new TextDecoder('utf-8');
while (true) {
const { done, value } = await reader.read();
if (done) break;
// Decodifica il chunk e gestisci i dati
const chunk = decoder.decode(value);
console.log('Received chunk:', chunk); // Log del chunk ricevuto
const lines = chunk.split('\n\n').filter((line) => line.trim() !== '');
for (const line of lines) {
if (line.startsWith('data: ')) {
const data = JSON.parse(line.slice(6)); // Rimuovi "data: " e parsifica il JSON
if (data.choice && data.choice.delta && data.choice.delta.content) {
result.value += data.choice.delta.content || ''
outputvisibile.value += data.choice.delta.content || ''
}
/*errorMessage.value = data.error;
$q.notify({
color: 'negative',
icon: 'error',
message: 'Errore durante la richiesta',
caption: errorMessage.value,
});
break; // Interrompi il ciclo in caso di errore
}*/
} else if (line.startsWith('data: [DONE]')) {
const data = JSON.parse(line.slice(12)); // Rimuovi "data: " e parsifica il JSON
if (data.choice && data.choice.finish_reason) {
finish_reason.value = data.choice.finish_reason;
}
inputPrompt.value = '';
}
}
} }
if (resdata.choice.message) { } else {
result.value = resdata.choice.message.content || '' // Modalità non streaming
const resdata = await globalStore.getQueryDS(inputPrompt.value, options.value);
if (resdata.code === serv_constants.RIS_CODE_OK) {
inputPrompt.value = '';
if (resdata.choice) {
finish_reason.value = resdata.choice.finish_reason || '';
}
if (resdata.choice.message) {
result.value = resdata.choice.message.content || '';
outputvisibile.value += result.value
}
} else if (resdata.code === serv_constants.RIS_CODE_ERR) {
errorMessage.value = resdata.error.message || resdata.error;
$q.notify({
color: 'negative',
icon: 'error',
message: 'Errore durante la richiesta',
caption: errorMessage.value,
});
} }
} else if (resdata.code === serv_constants.RIS_CODE_ERR) {
errorMessage.value = resdata.error.message || resdata.error; isLoading.value = false;
$q.notify({
color: 'negative',
icon: 'error',
message: 'Errore durante la richiesta',
caption: errorMessage.value
});
} }
} catch (error) {
} catch (error: any) {
errorMessage.value = error.response?.data?.error || error.message; errorMessage.value = error.response?.data?.error || error.message;
$q.notify({ $q.notify({
color: 'negative', color: 'negative',
icon: 'error', icon: 'error',
message: 'Errore durante la richiesta', message: 'Errore durante la richiesta',
caption: errorMessage.value caption: errorMessage.value,
}); });
} }
isLoading.value = false;
} }
const copyToClipboard = () => { const copyToClipboard = () => {
@@ -164,7 +247,14 @@ export default defineComponent({
icon: 'error', icon: 'error',
}); });
}); });
}; }
function submitPrompt(event: any) {
if (inputPrompt.value.trim()) { // Controlla che l'input non sia vuoto
handleSubmit(); // Inviare la richiesta
}
}
onMounted(mount) onMounted(mount)
@@ -175,6 +265,7 @@ export default defineComponent({
globalStore, globalStore,
inputPrompt, inputPrompt,
result, result,
outputvisibile,
isLoading, isLoading,
errorMessage, errorMessage,
handleSubmit, handleSubmit,
@@ -193,6 +284,8 @@ export default defineComponent({
withexplain, withexplain,
outputType, outputType,
outputTypeList, outputTypeList,
temperatura,
submitPrompt,
} }
} }
}) })

View File

@@ -1,6 +1,6 @@
<template> <template>
<div> <div>
<q-page class="q-pa-md"> <q-page class="q-mt-sm q-pa-sm">
<div class="column text-center"> <div class="column text-center">
<div class="row justify-center"> <div class="row justify-center">
<q-select <q-select
@@ -60,10 +60,10 @@
<q-select <q-select
:behavior="$q.platform.is.ios === true ? 'dialog' : 'menu'" :behavior="$q.platform.is.ios === true ? 'dialog' : 'menu'"
outlined outlined
v-model="temp" v-model="temperatura"
style="min-width: 200px" style="min-width: 200px"
:options="tempList" :options="tempList"
:label="t('queryai.temp') + `:`" :label="t('queryai.temperatura') + `:`"
emit-value emit-value
map-options map-options
option-value="value" option-value="value"
@@ -76,7 +76,7 @@
v-model="outputType" v-model="outputType"
style="min-width: 200px" style="min-width: 200px"
:options="outputTypeList" :options="outputTypeList"
:label="t('queryai.numtoken') + `:`" :label="t('queryai.outputType') + `:`"
emit-value emit-value
map-options map-options
option-value="value" option-value="value"
@@ -105,54 +105,35 @@
<q-separator></q-separator> <q-separator></q-separator>
</div> </div>
<div class="q-mt-md q-gutter-y-md"> <q-card v-if="outputvisibile" class="q-mt-sm">
<q-form @submit.prevent="handleSubmit"> <q-card-section>
<q-input <q-scroll-area style="height: 300px">
v-model="inputPrompt" <pre class="response-content">{{ outputvisibile }}</pre>
filled </q-scroll-area>
autogrow <q-btn
type="textarea" flat
label="Inserisci la tua richiesta" round
hint="Scrivi qui il tuo prompt" dense
class="q-mb-md" label="Copia la Risposta"
autofocus icon="content_copy"
@click="copyToClipboard"
v-tooltip="'Copia negli appunti'"
/> />
<pre class="response-reason">Esito: {{ finish_reason }}</pre>
</q-card-section>
</q-card>
<div class="text-center"> <div class="q-mt-md q-gutter-y-md">
<q-btn <q-input
:label="`Invia a ` + modelLabel" v-model="inputPrompt"
type="submit" filled
color="primary" autogrow
:loading="isLoading" type="textarea"
icon="send" label="Inserisci la tua richiesta"
/> class="q-mb-md"
</div> autofocus
</q-form> @keydown.enter.prevent="submitPrompt"
/>
MARKDOWN:
<q-markdown :content="`L'altezza \( h \) di un triangolo isoscele con base 10 è \( h = \sqrt{l^2 - 25} \), dove \( l \) è la lunghezza dei lati congruenti.`" />
<q-card v-if="result" class="q-mt-md">
<q-card-section>
<div class="text-h6 row items-center justify-between">
<span>Risposta</span>
<q-btn
flat
round
dense
icon="content_copy"
@click="copyToClipboard"
v-tooltip="'Copia negli appunti'"
/>
</div>
<q-markdown :content="result" />
<q-scroll-area style="height: 300px">
<pre class="response-content">{{ result }}</pre>
</q-scroll-area>
<pre class="response-reason">Esito: {{ finish_reason }}</pre>
</q-card-section>
</q-card>
<q-banner <q-banner
v-if="errorMessage" v-if="errorMessage"
@@ -162,6 +143,18 @@ MARKDOWN:
{{ errorMessage }} {{ errorMessage }}
</q-banner> </q-banner>
<div class="text-center">
<q-btn
:label="`Invia a ` + modelLabel"
type="submit"
color="primary"
:disable="!inputPrompt"
:loading="isLoading"
icon="send"
@click="handleSubmit"
/>
</div>
<q-inner-loading :showing="isLoading"> <q-inner-loading :showing="isLoading">
<q-spinner-gears size="50px" color="primary" /> <q-spinner-gears size="50px" color="primary" />
<div class="q-mt-sm">Elaborazione richiesta...</div> <div class="q-mt-sm">Elaborazione richiesta...</div>

View File

@@ -40,19 +40,19 @@ export default defineComponent({
default: false, default: false,
}, },
height: { height: {
type: Number, type: String,
required: false, required: false,
default: 100, default: '100',
}, },
gap: { gap: {
type: Number, type: String,
required: false, required: false,
default: 0, default: '0',
}, },
fontsize: { fontsize: {
type: Number, type: String,
required: false, required: false,
default: 16, default: '16',
}, },
}, },
setup(props, { emit }) { setup(props, { emit }) {
@@ -68,14 +68,14 @@ export default defineComponent({
JsBarcode("#C" + value.value, value.value, { JsBarcode("#C" + value.value, value.value, {
format: format.value, format: format.value,
width: widthlines.value, width: widthlines.value,
height: height.value, height: tools.convstrToNum(height.value),
displayValue: true, displayValue: true,
lineColor: "#000", lineColor: "#000",
font: "monospace", font: "monospace",
margin: 0, margin: 0,
textMargin: 0, textMargin: 0,
marginTop: 0, marginTop: 0,
fontSize: fontsize.value, fontSize: tools.convstrToNum(fontsize.value),
textPosition: "bottom", textPosition: "bottom",
}); });
} }

View File

@@ -28,13 +28,13 @@
:prop_searchList="searchList" :prop_searchList="searchList"
:defaultnewrec="tools.getdefaultnewrec(table)" :defaultnewrec="tools.getdefaultnewrec(table)"
labelBtnAddRow="NONE" labelBtnAddRow="NONE"
:prop_SortFieldsAvailable="mySortFieldsAvailable" :prop_SortFieldsAvailable="mySortFieldsAvailable()"
labelBtnAddExtra="Aggiungi Catalogo" labelBtnAddExtra="Aggiungi Catalogo"
:extraparams="tools.extraparams(table, { myrecfiltertoggle })" :extraparams="tools.extraparams(table, { myrecfiltertoggle })"
:prop_showMap="false" :prop_showMap="false"
:heightcarousel="heightcarousel" :heightcarousel="heightcarousel"
@clickButtBar="clickButtBar" @clickButtBar="clickButtBar"
:opt="{rowclass: true, widthcard: '170px', heightcard: '170px'}" :opt="{rowclass: true, widthcard: $q.screen.gt.xs ? '300px' : '170px', heightcard: $q.screen.gt.xs ? '300px' : '170px'}"
> >
</CGridTableRec> </CGridTableRec>
</div> </div>

View File

@@ -13,6 +13,11 @@ export default defineComponent({
type: Object as PropType<IOptCatalogo>, type: Object as PropType<IOptCatalogo>,
required: true, required: true,
}, },
idPage: {
type: String,
required: false,
default: '',
},
}, },
setup(props, { emit }) { setup(props, { emit }) {

View File

@@ -1,6 +1,6 @@
<template> <template>
<div> <div>
<Catalogo v-model="localCatalogo" @updateCatalogo="updateCatalogoEmit()"> <Catalogo v-model="localCatalogo" @updateCatalogo="updateCatalogoEmit()" :idPage="idPage">
</Catalogo> </Catalogo>
</div> </div>

View File

@@ -66,6 +66,11 @@ export default defineComponent({
type: Object as PropType<IOptCatalogo>, type: Object as PropType<IOptCatalogo>,
required: true, required: true,
}, },
idPage: {
type: String,
required: false,
default: '',
},
scheda: { scheda: {
type: Object as PropType<IMyScheda>, type: Object as PropType<IMyScheda>,
required: false, required: false,
@@ -152,14 +157,16 @@ export default defineComponent({
return products.replaceKeyWordsByProduct( return products.replaceKeyWordsByProduct(
optcatalogo.value, optcatalogo.value,
myproduct.value!, myproduct.value!,
props.scheda!.testo_right! props.scheda!.testo_right!,
props.idPage,
) )
}) })
const getTesto_Right_attaccato = computed(() => { const getTesto_Right_attaccato = computed(() => {
return products.replaceKeyWordsByProduct( return products.replaceKeyWordsByProduct(
optcatalogo.value, optcatalogo.value,
myproduct.value!, myproduct.value!,
props.scheda!.testo_right_attaccato! props.scheda!.testo_right_attaccato!,
props.idPage,
) )
}) })
const getTesto_Debug = computed(() => { const getTesto_Debug = computed(() => {
@@ -167,6 +174,7 @@ export default defineComponent({
optcatalogo.value, optcatalogo.value,
myproduct.value!, myproduct.value!,
{ contenuto: '{debug}', maxlength: 10000 }, { contenuto: '{debug}', maxlength: 10000 },
props.idPage,
) )
}) })
@@ -174,7 +182,8 @@ export default defineComponent({
return products.replaceKeyWordsByProduct( return products.replaceKeyWordsByProduct(
optcatalogo.value, optcatalogo.value,
myproduct.value!, myproduct.value!,
props.scheda!.testo_bottom! props.scheda!.testo_bottom!,
props.idPage,
) )
}) })

View File

@@ -139,6 +139,7 @@
:myproduct="myproduct" :myproduct="myproduct"
:optcatalogo="optcatalogo" :optcatalogo="optcatalogo"
:scheda="scheda" :scheda="scheda"
:idPage="idPage"
> >
<div <div
v-if=" v-if="
@@ -163,6 +164,8 @@
:myproduct="myproduct" :myproduct="myproduct"
:optcatalogo="optcatalogo" :optcatalogo="optcatalogo"
:show_at_right="scheda.barcode.show_at_right" :show_at_right="scheda.barcode.show_at_right"
:scheda="scheda"
:idPage="idPage"
> >
<div class="row no-wrap items-center"> <div class="row no-wrap items-center">
<div v-if="scheda.barcode && scheda.barcode.show"> <div v-if="scheda.barcode && scheda.barcode.show">
@@ -241,6 +244,7 @@
:optcatalogo="optcatalogo" :optcatalogo="optcatalogo"
:scheda="scheda" :scheda="scheda"
:show_at_right="scheda.barcode.show_at_right" :show_at_right="scheda.barcode.show_at_right"
:idPage="idPage"
> >
<div class="row no-wrap items-center"> <div class="row no-wrap items-center">
<div v-if="scheda.barcode && scheda.barcode.show"> <div v-if="scheda.barcode && scheda.barcode.show">
@@ -320,6 +324,7 @@
:scheda="scheda" :scheda="scheda"
:myproduct="myproduct" :myproduct="myproduct"
:optcatalogo="optcatalogo" :optcatalogo="optcatalogo"
:idPage="idPage"
></CText> ></CText>
<!--<div v-if="optcatalogo.indebug">testo: "{{ getTesto_Bottom }}"</div>--> <!--<div v-if="optcatalogo.indebug">testo: "{{ getTesto_Bottom }}"</div>-->
</div> </div>
@@ -456,7 +461,7 @@
></iframe> ></iframe>
</q-card-section> </q-card-section>
</q-card> </q-card>
<q-card-actions align="bottom"> <q-card-actions align="center">
<q-btn color="primary" label="Chiudi" @click="apriSchedaPDF = false" /> <q-btn color="primary" label="Chiudi" @click="apriSchedaPDF = false" />
</q-card-actions> </q-card-actions>
</q-dialog> </q-dialog>

View File

@@ -51,6 +51,11 @@ export default defineComponent({
type: Object as PropType<IOptCatalogo>, type: Object as PropType<IOptCatalogo>,
required: true, required: true,
}, },
idPage: {
type: String,
required: false,
default: '',
},
scheda: { scheda: {
type: Object as PropType<IMyScheda>, type: Object as PropType<IMyScheda>,
required: false, required: false,

View File

@@ -3,6 +3,7 @@
:id="id" :id="id"
:product="product" :product="product"
:complete="complete" :complete="complete"
:idPage="idPage"
:cosa="cosa" :cosa="cosa"
:options="options" :options="options"
@selauthor="selauthor" @selauthor="selauthor"
@@ -33,6 +34,7 @@
in_3d: true, in_3d: true,
}" }"
v-model="optcatalogo" v-model="optcatalogo"
:idPage="idPage"
@selauthor="selauthor" @selauthor="selauthor"
:scheda="scheda" :scheda="scheda"
> >

View File

@@ -41,7 +41,7 @@
:prop_searchList="searchList" :prop_searchList="searchList"
:defaultnewrec="tools.getdefaultnewrec(table)" :defaultnewrec="tools.getdefaultnewrec(table)"
labelBtnAddRow="NONE" labelBtnAddRow="NONE"
:prop_SortFieldsAvailable="mySortFieldsAvailable" :prop_SortFieldsAvailable="mySortFieldsAvailable()"
:labelBtnAddExtra_OFF="noButtAdd ? `` : (ind >= 0) ? `Aggiungi ` + costanti.MAINCARDS[ind].strsingolo : ''" :labelBtnAddExtra_OFF="noButtAdd ? `` : (ind >= 0) ? `Aggiungi ` + costanti.MAINCARDS[ind].strsingolo : ''"
:labelBtnAddExtra="labelBtnAddExtra" :labelBtnAddExtra="labelBtnAddExtra"
:extraparams="tools.extraparams(table, {myrecfiltertoggle})" :extraparams="tools.extraparams(table, {myrecfiltertoggle})"

View File

@@ -29,7 +29,7 @@
:filtercustom="filtercustom" :filtercustom="filtercustom"
:prop_searchList="searchList" :prop_searchList="searchList"
labelBtnAddRow="NONE" labelBtnAddRow="NONE"
:prop_SortFieldsAvailable="mySortFieldsAvailable" :prop_SortFieldsAvailable="mySortFieldsAvailable()"
labelBtnAddExtra="" labelBtnAddExtra=""
:extraparams="tools.extraparams(table, { myrecfiltertoggle })" :extraparams="tools.extraparams(table, { myrecfiltertoggle })"
:prop_showMap="showMap" :prop_showMap="showMap"

View File

@@ -274,8 +274,9 @@ export default defineComponent({
default: 0, default: 0,
}, },
defaultnewrec: { defaultnewrec: {
type: Function, type: Object,
required: false, required: false,
default: {},
}, },
col_title: { col_title: {
type: String, type: String,
@@ -1722,7 +1723,7 @@ export default defineComponent({
// @ts-ignore // @ts-ignore
if (props.defaultnewrec) { if (!tools.isEmptyObject(props.defaultnewrec)) {
// @ts-ignore // @ts-ignore
newRecord.value = props.defaultnewrec newRecord.value = props.defaultnewrec
} else { } else {

View File

@@ -18,6 +18,16 @@ export default defineComponent({
required: true, required: true,
default: '', default: '',
}, },
color: {
type: String,
required: false,
default: '',
},
class_text: {
type: String,
required: false,
default: '',
},
copy: { copy: {
type: Boolean, type: Boolean,
required: false, required: false,

View File

@@ -12,7 +12,7 @@
</template> </template>
<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">
{{ value }} <span :class="class_text" :style="`color: ` + color ">{{ value }}</span>
<slot></slot> <slot></slot>
</div> </div>
</template> </template>

View File

@@ -1640,6 +1640,14 @@
@update:model-value="modifElem" @update:model-value="modifElem"
> >
</q-toggle> </q-toggle>
<q-toggle
v-model="recscheda.scheda.isPagIntro"
color="positive"
icon="fas fa-file-pdf"
:label="$t('scheda.isPagIntro')"
@update:model-value="modifElem"
>
</q-toggle>
<q-input <q-input
label="Nome Template" label="Nome Template"
@update:model-value="modifElem" @update:model-value="modifElem"

View File

@@ -34,12 +34,18 @@ export default defineComponent({
required: false, required: false,
default: false, default: false,
}, },
maxlength: {
type: Number,
required: false,
default: 0,
}
}, },
setup(props, { emit }) { setup(props, { emit }) {
const $q = useQuasar() const $q = useQuasar()
const editorRef = ref(<any>null) const editorRef = ref(<any>null)
const editor = ref('') const editor = ref('')
const characterCount = ref(0)
//const myvalue = toRef(props, 'value') //const myvalue = toRef(props, 'value')
const myvalue = ref('') const myvalue = ref('')
@@ -126,8 +132,16 @@ export default defineComponent({
}) })
function getTextLength(html: string) {
// Crea un elemento temporaneo per convertire HTML in testo
const div = document.createElement('div');
div.innerHTML = html; // Imposta l'HTML
return div.innerText.length; // Restituisce la lunghezza del testo
}
function changeval(newval: any) { function changeval(newval: any) {
// console.log('myEditor: changeval', newval) // console.log('myEditor: changeval', newval)
characterCount.value = getTextLength(newval)
emit('update:value', newval) emit('update:value', newval)
} }
@@ -186,6 +200,8 @@ export default defineComponent({
myvalue.value = props.value myvalue.value = props.value
showtools.value = tools.getCookie('showtools', '0') === '1' showtools.value = tools.getCookie('showtools', '0') === '1'
characterCount.value = getTextLength(myvalue.value)
} }
function onPaste (evt: any) { function onPaste (evt: any) {
@@ -228,6 +244,7 @@ export default defineComponent({
onPaste, onPaste,
editorRef, editorRef,
showtools, showtools,
characterCount,
} }
} }
}) })

View File

@@ -1,23 +1,30 @@
<template> <template>
<div> <div>
<q-card class="dialog_card"> <q-card class="dialog_card">
<q-toolbar v-if="showButtons" class="bg-primary text-white" style="min-height: 30px;"> <q-toolbar
<q-toolbar-title> v-if="showButtons"
Editor class="bg-primary text-white"
</q-toolbar-title> style="min-height: 30px"
<q-btn flat round color="white" icon="close" v-close-popup @click="showeditor=false"></q-btn> >
<q-toolbar-title> Editor </q-toolbar-title>
<q-btn
flat
round
color="white"
icon="close"
v-close-popup
@click="showeditor = false"
></q-btn>
</q-toolbar> </q-toolbar>
<q-card-section class="inset-shadow" style="padding: 4px !important;"> <q-card-section class="inset-shadow" style="padding: 4px !important">
<CTitleBanner v-if="title" :title="title"></CTitleBanner> <CTitleBanner v-if="title" :title="title"></CTitleBanner>
<form <form autocapitalize="off" autocomplete="off" spellcheck="false">
autocapitalize="off" <q-toggle
autocomplete="off" v-model="showtools"
spellcheck="false" :label="showtools ? $t('editor.hidetool') : $t('editor.showtool')"
> @click="tools.setCookie('showtools', showtools ? '1' : '0')"
></q-toggle>
<q-toggle v-model="showtools" :label="showtools ? $t('editor.hidetool') : $t('editor.showtool')" @click="tools.setCookie('showtools', showtools ? '1' : '0')"></q-toggle> <br />
<br>
<q-btn v-if="showtools" rounded size="sm" color="primary"> <q-btn v-if="showtools" rounded size="sm" color="primary">
<q-icon name="colorize" class="cursor-pointer"> <q-icon name="colorize" class="cursor-pointer">
<q-popup-proxy> <q-popup-proxy>
@@ -38,17 +45,35 @@
@update:model-value="changeval" @update:model-value="changeval"
@paste="onPaste" @paste="onPaste"
@keyup.enter.stop @keyup.enter.stop
v-model="myvalue"> v-model="myvalue"
>
</q-editor> </q-editor>
<div v-if="maxlength" class="text-gray text-italic">Caratteri: {{ characterCount }} / {{ maxlength }}</div>
</form> </form>
</q-card-section> </q-card-section>
<q-card-actions v-if="showButtons" align="center"> <q-card-actions v-if="showButtons" align="center">
<q-btn v-if="canModify" :label="$t('dialog.ok')" color="primary" @click="saveval"></q-btn> <q-btn
<q-btn v-if="canModify" flat :label="$t('dialog.cancel')" color="primary" v-close-popup @click="annulla"></q-btn> v-if="canModify"
<q-btn v-if="!canModify" :label="$t('dialog.ok')" color="primary" v-close-popup></q-btn> :label="$t('dialog.ok')"
color="primary"
@click="saveval"
></q-btn>
<q-btn
v-if="canModify"
flat
:label="$t('dialog.cancel')"
color="primary"
v-close-popup
@click="annulla"
></q-btn>
<q-btn
v-if="!canModify"
:label="$t('dialog.ok')"
color="primary"
v-close-popup
></q-btn>
</q-card-actions> </q-card-actions>
</q-card> </q-card>
</div> </div>
</template> </template>

View File

@@ -87,6 +87,11 @@ export default defineComponent({
required: false, required: false,
default: '', default: '',
}, },
idPage: {
type: String,
required: false,
default: '',
},
editOn: { editOn: {
type: Boolean, type: Boolean,
required: false, required: false,

View File

@@ -667,6 +667,7 @@
<div v-if="editOn" class="elemEdit">PRODOTTI CATALOGO:</div> <div v-if="editOn" class="elemEdit">PRODOTTI CATALOGO:</div>
<CCatalogo <CCatalogo
v-model="myel.catalogo" v-model="myel.catalogo"
:idPage="idPage"
@updateCatalogo="updateCatalogoEmit()" @updateCatalogo="updateCatalogoEmit()"
/> />
</div> </div>

View File

@@ -110,6 +110,7 @@
> >
<CMyElem <CMyElem
:myelem="myelem" :myelem="myelem"
:idPage="rec._id"
:editOn="editOn" :editOn="editOn"
:addOn="addOn" :addOn="addOn"
:path="!!rec.path ? rec.path : ''" :path="!!rec.path ? rec.path : ''"
@@ -123,6 +124,7 @@
:myelem="myelem" :myelem="myelem"
:editOn="editOn" :editOn="editOn"
:addOn="addOn" :addOn="addOn"
:idPage="rec._id"
:path="!!rec.path ? rec.path : ''" :path="!!rec.path ? rec.path : ''"
:selElem="selElem" :selElem="selElem"
@selElemClick="selElemClick" @selElemClick="selElemClick"
@@ -141,6 +143,7 @@
:myelem="myelemVoid" :myelem="myelemVoid"
:editOn="editOn" :editOn="editOn"
:addOn="addOn" :addOn="addOn"
:idPage="rec._id"
:selElem="selElem" :selElem="selElem"
:path="rec.path" :path="rec.path"
@selElemClick="selElemClick" @selElemClick="selElemClick"

View File

@@ -65,6 +65,7 @@
:myelem="myelem" :myelem="myelem"
:editOn="editOn" :editOn="editOn"
:addOn="addOn" :addOn="addOn"
:idPage="rec._id"
:path="rec.path" :path="rec.path"
:selElem="selElem" :selElem="selElem"
@selElemClick="selElemClick" @selElemClick="selElemClick"
@@ -77,6 +78,7 @@
:myelem="myelemVoid" :myelem="myelemVoid"
:editOn="editOn" :editOn="editOn"
:addOn="addOn" :addOn="addOn"
:idPage="rec._id"
:selElem="selElem" :selElem="selElem"
:path="rec.path" :path="rec.path"
@selElemClick="selElemClick" @selElemClick="selElemClick"

View File

@@ -1609,6 +1609,7 @@
:canModify="canModify" :canModify="canModify"
@update:value="changevalRec" @update:value="changevalRec"
@showandsave="Savedb" @showandsave="Savedb"
:maxlength="col.maxlength"
> >
</CMyEditor> </CMyEditor>
</div> </div>

View File

@@ -69,13 +69,15 @@
/* Arrotonda gli angoli dello sfondo */ /* Arrotonda gli angoli dello sfondo */
} }
.text-h6 {
font-family: 'Arial', sans-serif; .clickable-image {
/* Scegli un font accattivante e comune */ cursor: pointer;
font-size: 1.15rem; /* Cambia il cursore a puntatore quando si passa sopra */
/* Dimensione del font modificabile */ transition: transform 0.2s;
color: #FFF; /* Aggiunge una transizione dolce */
/* Colore del testo */ }
margin-top: auto;
/* Assicura che il titolo sia posizionato alla base della scheda */ .clickable-image:hover {
transform: scale(1.05);
/* Aumenta leggermente l'immagine al passaggio del mouse */
} }

View File

@@ -1,6 +1,6 @@
import { defineComponent, onMounted, PropType, ref, watch, computed } from 'vue' import { defineComponent, onMounted, PropType, ref, watch, computed } from 'vue'
import { useUserStore } from '@store/UserStore' import { useUserStore } from '@store/UserStore'
import { IImgGallery, IOptGrid, IUserFields, IUserProfile } from 'model' import { ICatalog, IImgGallery, IOptGrid, IUserFields, IUserProfile } from 'model'
import { costanti } from '@costanti' import { costanti } from '@costanti'
import { shared_consts } from '@/common/shared_vuejs' import { shared_consts } from '@/common/shared_vuejs'
import { fieldsTable } from '@store/Modules/fieldsTable' import { fieldsTable } from '@store/Modules/fieldsTable'
@@ -8,14 +8,18 @@ import { tools } from '@store/Modules/tools'
import { toolsext } from '@store/Modules/toolsext' import { toolsext } from '@store/Modules/toolsext'
import { useQuasar } from 'quasar' import { useQuasar } from 'quasar'
import { useI18n } from '@/boot/i18n' import { useI18n } from '@/boot/i18n'
import { CLabel } from '@/components/CLabel'
import { CMyCardPopup } from '@/components/CMyCardPopup' import { CMyCardPopup } from '@/components/CMyCardPopup'
import { useRouter } from 'vue-router' import { useRouter } from 'vue-router'
import { useCalendarStore } from '@src/store/CalendarStore' import { useCalendarStore } from '@src/store/CalendarStore'
import { useGlobalStore } from '@src/store/globalStore' import { useGlobalStore } from '@src/store/globalStore'
import { ICollana, IPublisher } from "@src/model/Products"
import { useProducts } from '@src/store/Products'
export default defineComponent({ export default defineComponent({
name: 'CMyRecCatalog', name: 'CMyRecCatalog',
components: { CMyCardPopup }, components: { CMyCardPopup, CLabel },
emits: ['setCmd', 'cmdext'], emits: ['setCmd', 'cmdext'],
props: { props: {
table: { table: {
@@ -53,12 +57,36 @@ export default defineComponent({
const { t } = useI18n() const { t } = useI18n()
const $router = useRouter() const $router = useRouter()
const myrec = ref(<any>null) const myrec = ref(<ICatalog>{})
const statecolor = ref('negative')
const apriInfo = ref(false)
const collanestr = ref('')
const editorestr = ref('')
const products = useProducts()
const visupage = ref(false) const visupage = ref(false)
const disabilita = computed(() => { const disabilita = computed(() => {
return props.table === shared_consts.TABLES_MYBACHECAS return props.table === shared_consts.TABLES_MYBACHECAS
}) })
const esiste_descrintro = computed(() => {
return myrec.value.descr_introduttiva && myrec.value.descr_introduttiva.length > 100
})
const pagina_collegata = computed(() => {
let linkpage = ''
let idpag = myrec.value.idPageAssigned
if (idpag) {
let mypage = globalStore.getPageById(idpag)
if (mypage)
linkpage = mypage.path!
}
return linkpage
})
watch(() => props.prop_myrec, (newval, oldval) => { watch(() => props.prop_myrec, (newval, oldval) => {
@@ -70,6 +98,30 @@ export default defineComponent({
if (props.prop_myrec) { if (props.prop_myrec) {
myrec.value = props.prop_myrec myrec.value = props.prop_myrec
} }
collanestr.value = ''
if (myrec.value.idCollane) {
for (const idcollana of myrec.value.idCollane!) {
const reccoll: ICollana = products.collane!.find((coll: ICollana) => coll.idCollana === idcollana)
collanestr.value += reccoll.title + ' '
}
}
editorestr.value = ''
if (myrec.value.editore) {
for (const receditore of myrec.value.editore!) {
const rectrovato: IPublisher = products.publishers!.find((editore: IPublisher) => editore._id === receditore)
editorestr.value += rectrovato!.name + ' '
}
}
statecolor.value = 'negative'
if (myrec.value.descr_introduttiva && myrec.value.img_bordata?.imagefile && myrec.value.img_intro?.imagefile) {
statecolor.value = 'orange-8'
if (myrec.value.pdf_generato) {
statecolor.value = 'positive'
}
}
} }
function showBadge() { function showBadge() {
@@ -88,6 +140,8 @@ export default defineComponent({
$router.push(path) $router.push(path)
} }
function setCmd($q: any, cmd: number, myusername: string, value: any, groupname: string) { function setCmd($q: any, cmd: number, myusername: string, value: any, groupname: string) {
emit('setCmd', $q, cmd, myusername, value, groupname) emit('setCmd', $q, cmd, myusername, value, groupname)
} }
@@ -138,6 +192,12 @@ export default defineComponent({
disabilita, disabilita,
globalStore, globalStore,
computedWidth, computedWidth,
statecolor,
apriInfo,
collanestr,
editorestr,
pagina_collegata,
esiste_descrintro,
} }
}, },
}) })

View File

@@ -1,76 +1,236 @@
<template> <template>
<div <div class="q-pa-sm row items-start q-gutter-sm">
v-if="myrec" <q-card
class="q-py-xs centermydiv cardrec back_img column justify-between" v-if="myrec"
:style="{ flat
width: opt.widthcard, bordered
height: opt.heightcard, :style="`width: ` + opt.widthcard + `; height: 540px;`"
backgroundImage: >
`url(` + <!--<q-skeleton
tools.getFullFileName( v-if="!myrec.foto_collana"
[myrec.foto_collana], type="QAvatar"
table, :width="opt.widthcard"
myrec.username, :height="opt.heightcard"
myrec._id />-->
) + <q-img
`)`, :width="opt.widthcard"
}" @click="apriInfo = true"
> :height="opt.heightcard"
<div class="flex-grow" /> class="clickable-image"
<!-- Questo elemento occupa spazio per separare l'immagine dal titolo --> :src="
<div class="title-container"> tools.getFullFileName(
<div class="text-h6 text-center"> [myrec.foto_collana],
{{ myrec.title }} table,
</div> myrec.username,
</div> myrec._id
)
"
>
<template v-slot:error>
<div class="absolute-full flex flex-center text-white">
immagine non impostata
</div>
</template>
<div class="text-h6 absolute-bottom text-left">
{{ myrec.title }}
</div>
</q-img>
<q-item> <q-card-section>
<q-item-section side v-if="tools.canModifyThisRec(myrec, table) || editOn"> <div
<q-item-label> v-if="!myrec.foto_collana"
<q-btn rounded dense icon="fas fa-pencil-alt" color="blue"> class="q-mt-sm q-mb-xs"
<q-menu> style="font-size: 1.15rem"
<q-list style="min-width: 150px"> >
<q-item {{ myrec.title }}
clickable </div>
v-close-popup <div class="text-caption text-h7 text-grey">
@click="cmdExt(costanti.CMD_MODIFY, myrec._id, null)" <q-icon name="fas fa-user" /> Referente:
> <span
<q-item-section side> v-if="myrec.referenti && myrec.referenti.length > 0"
<q-icon name="fas fa-pencil-alt" /> :class="
</q-item-section> `text-bold ` + myrec.referenti && myrec.referenti.length > 0
<q-item-section>{{ $t('reg.edit') }}</q-item-section> ? 'text-blue'
</q-item> : 'text-red'
</q-list> "
<q-list style="min-width: 150px"> >
<q-item {{ myrec.referenti ? myrec.referenti.join(', ') : '' }}
clickable </span>
v-close-popup <span v-else>
@click="cmdExt(costanti.CMD_CLONE, myrec._id, null)" <span class="text-red">[Nessuno]</span>
> </span>
<q-item-section side> </div>
<q-icon name="fas fa-copy" /> <div v-if="collanestr" class="text-caption text-h7 text-grey">
</q-item-section> <q-icon name="fas fa-book" /> Collana:
<q-item-section>{{ $t('event.duplicate') }}</q-item-section> <span class="text-blue">{{ collanestr }}</span>
</q-item> </div>
</q-list> <div v-if="editorestr" class="text-caption text-h7 text-grey">
<q-list style="min-width: 150px"> <q-icon name="fas fa-book-open" /> Editore:
<q-item <span class="text-blue">{{ editorestr }}</span>
clickable </div>
v-close-popup <div v-if="!esiste_descrintro" class="text-caption text-h7 text-grey">
@click="cmdExt(costanti.CMD_DELETE, myrec._id, null)" <q-icon name="fas fa-pencil-alt" /> Testo descrittivo:
> <span :style="`color: ` + (esiste_descrintro ? 'green' : 'red')">{{
<q-item-section side> esiste_descrintro ? 'Presente' : 'Mancante'
<q-icon name="fas fa-trash-alt" /> }}</span>
</q-item-section> </div>
<q-item-section>{{ $t('reg.elimina') }}</q-item-section> <div
</q-item> v-if="!myrec.img_bordata?.imagefile"
</q-list> class="text-caption text-h7 text-grey"
</q-menu> >
</q-btn> <q-icon name="fas fa-image" /> Sfondo:
</q-item-label> <span
</q-item-section> :style="
</q-item> `color: ` + (myrec.img_bordata?.imagefile ? 'green' : 'red')
"
>{{ esiste_descrintro ? 'Presente' : 'Mancante' }}</span
>
</div>
<div
v-if="!myrec.img_intro?.imagefile"
class="text-caption text-h7 text-grey"
>
<q-icon name="fas fa-image" /> Copertina:
<span
:style="`color: ` + (myrec.img_intro?.imagefile ? 'green' : 'red')"
>{{ esiste_descrintro ? 'Presente' : 'Mancante' }}</span
>
</div>
<div v-if="myrec.pdf_generato" class="text-caption text-h7 text-blue">
<q-icon name="fas fa-book" /> -
<a :href="myrec.pdf_generato" target="_blank">PDF Generato</a>
(Data: {{tools.getstrDate(myrec.data_generato)}})
</div>
<div v-if="myrec.pdf_online" class="text-caption text-h7 text-blue">
<q-icon name="fas fa-book" /> -
<a :href="myrec.pdf_online" target="_blank">PDF ONLINE</a>
(Data: {{tools.getstrDate(myrec.data_online)}})
</div>
<!--<div class="text-overline text-orange-9">{{collanestr}}</div>-->
</q-card-section>
<q-card-actions>
<div class="row justify-center">
<q-fab
color="primary"
icon="fas fa-caret-down"
label="Menu"
direction="up"
flat
dense
>
<q-fab-action
v-if="tools.canModifyThisRec(myrec, table) || editOn"
@click="cmdExt(costanti.CMD_DELETE, myrec._id, null)"
color="negative"
:label="$t('reg.elimina')"
icon="fas fa-trash-alt"
/>
<q-fab-action
v-if="tools.canModifyThisRec(myrec, table) || editOn"
@click="cmdExt(costanti.CMD_CLONE, myrec._id, null)"
color="accent"
:label="$t('event.duplicate')"
icon="fas fa-copy"
/>
<q-fab-action
color="positive"
label="Gestisci"
icon="fas fa-book-open"
@click="naviga(pagina_collegata)"
/>
<q-fab-action
v-if="tools.canModifyThisRec(myrec, table) || editOn"
@click="cmdExt(costanti.CMD_MODIFY, myrec._id, null)"
color="primary"
:label="$t('reg.edit')"
icon="fas fa-pencil-alt"
/>
</q-fab>
<q-btn
flat
color="primary"
label="Info"
icon="fas fa-info"
@click="apriInfo = true"
/>
<q-btn
flat
:color="statecolor"
label="PDF"
icon="fas fa-book"
:disable="!myrec.pdf_generato"
@click="naviga(myrec.pdf_generato)"
/>
</div>
</q-card-actions>
</q-card>
</div> </div>
<q-dialog v-model="apriInfo">
<q-card>
<q-toolbar class="bg-primary text-white">
<q-toolbar-title>
{{ myrec.title }}
</q-toolbar-title>
<q-btn
flat
round
color="white"
label="CHIUDI"
icon="close"
v-close-popup
></q-btn>
</q-toolbar>
<q-card-section>
<div class="row justify-center q-ma-sm q-pa-sm">
<div style="width: 300px" class="q-ma-sm">
<CLabel
:value="
myrec.referenti && myrec.referenti.length > 0
? myrec.referenti.join(', ')
: '[Non Assegnato]'
"
label="Referente/i:"
:color="
myrec.referenti && myrec.referenti.length > 0
? 'text-blue'
: 'text-red'
"
/>
</div>
<div style="width: 300px" class="q-ma-sm">
<CLabel v-if="collanestr" :value="collanestr" label="Collana/e:" />
</div>
<div style="width: 300px" class="q-ma-sm">
<CLabel
class_text="text-bold"
:value="esiste_descrintro ? 'PRESENTE ' : 'MANCANTE !'"
label="Testo descrittivo"
:color="esiste_descrintro ? 'green' : 'red'"
/>
</div>
<div style="width: 300px" class="q-ma-sm">
<CLabel
:value="myrec.pdf_generato || 'ancora non è stato generato'"
label="PDF generato"
:color="myrec.pdf_generato ? 'green' : 'red'"
:copy="true"
/>
<CLabel
:value="myrec.pdf_online || 'ancora non è andato ONLINE'"
label="PDF On-Line Ufficiale"
:color="myrec.pdf_online ? 'green' : 'red'"
:copy="true"
/>
</div>
</div>
</q-card-section>
</q-card>
<q-card-actions align="center">
<q-btn color="primary" label="Chiudi" @click="apriInfo = false" />
</q-card-actions>
</q-dialog>
</template> </template>
<script lang="ts" src="./CMyRecCatalog.ts"> <script lang="ts" src="./CMyRecCatalog.ts">
</script> </script>

View File

@@ -48,6 +48,8 @@ export default defineComponent({
const sliderValue = computed({ const sliderValue = computed({
get: () => { get: () => {
if (!props.modelValue)
return ''
let mystr = props.modelValue + '' let mystr = props.modelValue + ''
return mystr.replace(props.addstr, '') return mystr.replace(props.addstr, '')
}, },

View File

@@ -1031,7 +1031,7 @@
></iframe> ></iframe>
</q-card-section> </q-card-section>
</q-card> </q-card>
<q-card-actions align="bottom"> <q-card-actions align="center">
<q-btn color="primary" label="Chiudi" @click="apriSchedaPDF = false" /> <q-btn color="primary" label="Chiudi" @click="apriSchedaPDF = false" />
</q-card-actions> </q-card-actions>
</q-dialog> </q-dialog>

View File

@@ -36,6 +36,11 @@ export default defineComponent({
required: false, required: false,
default: false, default: false,
}, },
idPage: {
type: String,
required: false,
default: '',
},
}, },
setup(props, { attrs, slots, emit }) { setup(props, { attrs, slots, emit }) {
@@ -48,6 +53,7 @@ export default defineComponent({
props.optcatalogo, props.optcatalogo,
props.myproduct, props.myproduct,
props.rectext, props.rectext,
props.idPage,
) )
}) })

View File

@@ -905,6 +905,10 @@ h3 {
font-size: 1rem; font-size: 1rem;
} }
.text-h7 {
font-size: 1rem;
}
.text-h8 { .text-h8 {
font-size: 0.85rem !important; font-size: 0.85rem !important;
} }

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.1.20"> <meta name="version" content="1.1.21">
<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,33 +1,28 @@
import { IImg } from "./GlobalStore"
import { ICollana } from "./Products" import { ICollana } from "./Products"
export interface FotoCatalogo {
imagefile: string
alt: string
description: string
}
export interface FilesCataloghi {
per_web: string
per_stampa: string
}
export interface ICatalog { export interface ICatalog {
_id: string
idapp: string idapp: string
active?: boolean active?: boolean
versione_perstampa?: boolean
title: string title: string
foto_collana?: FotoCatalogo, foto_collana?: IImg,
idCollane?: number[] idCollane?: number[]
editore?: string[]
collana_info?: ICollana collana_info?: ICollana
descr_introduttiva?: string descr_introduttiva?: string
idPageAssigned?: string idPageAssigned?: string
referenti?: string[] referenti?: string[]
img_bordata_web?: FotoCatalogo, img_bordata?: IImg,
img_bordata_stampa?: FotoCatalogo, img_intro?: IImg,
img_intro_web?: FotoCatalogo, pagina_introduttiva_sfondo_nero?: boolean
img_intro_stampa?: FotoCatalogo,
generati?: FilesCataloghi, pdf_generato?: string
online?: FilesCataloghi, data_generato?: Date
pdf_online?: string
data_online?: Date
date_created?: Date, date_created?: Date,
date_updated?: Date, date_updated?: Date,

View File

@@ -783,6 +783,7 @@ export interface IMyScheda {
_id?: string, _id?: string,
idapp?: string, idapp?: string,
isTemplate?: boolean, isTemplate?: boolean,
isPagIntro?: boolean,
linkIdTemplate?: string, linkIdTemplate?: string,
name?: string, name?: string,
numschede_perRiga?: number numschede_perRiga?: number

View File

@@ -286,4 +286,6 @@ export interface IUserState {
countusers?: number countusers?: number
lastparamquery?: any lastparamquery?: any
updateTables?: boolean updateTables?: boolean
lista_editori?: IUserShort[]|null
} }

View File

@@ -1673,7 +1673,7 @@ const msg_it = {
}, },
myelems: { myelems: {
active: 'active', active: 'Attiva',
img: 'img', img: 'img',
image: 'Immagine:', image: 'Immagine:',
path: 'Path', path: 'Path',
@@ -2014,10 +2014,20 @@ const msg_it = {
cataloglist: { cataloglist: {
foto_collana: 'Foto Collana', foto_collana: 'Foto Collana',
referenti: 'Referenti', referenti: 'Referenti',
img_bordata_web: 'Foto Bordo per Web', img_bordata: 'Immagine di sfondo',
img_intro: 'Immagine sfondo pagina introduttiva',
pagina_introduttiva_sfondo_nero: 'Pagina intro a sfondo nero',
collane: 'Collane', collane: 'Collane',
idPageAssigned: 'Pagina Assegnata', idPageAssigned: 'Pagina Assegnata',
descr_introduttiva: 'Descrizione Introduttiva', descr_introduttiva: 'Descrizione Introduttiva (circa 1300 battute)',
editore: 'Editori',
versione_perstampa: 'Per Stampa',
pdf_generato: 'Pdf generato',
pdf_online: 'Pdf online Ufficiale',
},
scheda: {
isPagIntro: 'Pagina Introduttiva',
}, },
queryai: { queryai: {
@@ -2032,6 +2042,7 @@ const msg_it = {
contestsystem: 'Contesto', contestsystem: 'Contesto',
withexplain: 'Con Spiegazione', withexplain: 'Con Spiegazione',
temperatura: 'Temperatura', temperatura: 'Temperatura',
outputType: 'Formato di Uscita',
} }
}, },

View File

@@ -4,12 +4,12 @@ import axios, {
import { Api } from '@api' import { Api } from '@api'
import * as Types from '@src/store/Api/ApiTypes' import * as Types from '@src/store/Api/ApiTypes'
async function sendRequest(url: string, method: string, mydata: any, myformdata?: any, responsedata?: any) { async function sendRequest(url: string, method: string, mydata: any, myformdata?: any, responsedata?: any, options?: any) {
console.log('sendRequest', method, url, mydata) console.log('sendRequest', method, url, mydata)
let request let request
if (method === 'GET') request = Api.get(url, mydata, responsedata) if (method === 'GET') request = Api.get(url, mydata, responsedata)
else if (method === 'POST') request = Api.post(url, mydata, responsedata) else if (method === 'POST') request = Api.post(url, mydata, responsedata, options)
else if (method === 'postFormData') request = Api.postFormData(url, myformdata, responsedata) else if (method === 'postFormData') request = Api.postFormData(url, myformdata, responsedata)
else if (method === 'DELETE') request = Api.Delete(url, mydata, responsedata) else if (method === 'DELETE') request = Api.Delete(url, mydata, responsedata)
else if (method === 'PUT') request = Api.put(url, mydata, responsedata) else if (method === 'PUT') request = Api.put(url, mydata, responsedata)

View File

@@ -1,4 +1,5 @@
import axios, { AxiosInstance, AxiosResponse } from 'axios' import axios, { AxiosRequestConfig, AxiosInstance, AxiosResponse } from 'axios'
// import LoginModule from '../Modules/Auth/LoginStore' // import LoginModule from '../Modules/Auth/LoginStore'
import { toolsext } from '@src/store/Modules/toolsext' import { toolsext } from '@src/store/Modules/toolsext'
import { serv_constants } from '@src/store/Modules/serv_constants' import { serv_constants } from '@src/store/Modules/serv_constants'
@@ -7,6 +8,9 @@ import { useUserStore } from '@store/UserStore'
import { tools } from '@src/store/Modules/tools' import { tools } from '@src/store/Modules/tools'
import * as Types from './ApiTypes' import * as Types from './ApiTypes'
import { from, Observable } from 'rxjs';
import { mergeMap, toArray } from 'rxjs/operators';
export let API_URL = '' export let API_URL = ''
export const axiosInstance: AxiosInstance = axios.create({ export const axiosInstance: AxiosInstance = axios.create({
baseURL: API_URL, baseURL: API_URL,
@@ -15,6 +19,7 @@ export const axiosInstance: AxiosInstance = axios.create({
}, },
}) })
axiosInstance.interceptors.response.use( axiosInstance.interceptors.response.use(
(response) => { (response) => {
@@ -26,7 +31,7 @@ axiosInstance.interceptors.response.use(
// console.log('error', error) // console.log('error', error)
if (error.response) { if (error.response) {
if (process.env.DEBUGGING === '1') console.log('Status = ', error.response.status) if (process.env.DEBUGGING === '1') console.log('Status = ', error.response.status)
console.log('Request Error: ', error.response) console.log('Request Error: ', error.response)
if (error.response.status !== 0) { if (error.response.status !== 0) {
globalStore.setStateConnection('online') globalStore.setStateConnection('online')
} else { } else {
@@ -47,7 +52,64 @@ export const addAuthHeaders = () => {
// delete axiosInstance.defaults.headers.Authorization // delete axiosInstance.defaults.headers.Authorization
//} //}
async function Request(type: string, path: string, payload: any, responsedata?: any): Promise<Types.AxiosSuccess | Types.AxiosError | undefined> { async function generateStream(path: string, payload: any, config?: RequestInit, options?: any): Promise<AsyncIterable<any>> {
const userStore = useUserStore()
const mieiparam: any = {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'x-auth': userStore.x_auth_token,
'x-refrtok': userStore.refreshToken,
},
body: JSON.stringify(payload),
signal: options?.signal,
...config
}
console.log('marams: ', mieiparam)
const response = await fetch(
path,
mieiparam,
);
console.log('USCITA DA FETCH... !!!!!')
if (response.status !== 200) throw new Error(response.status.toString());
return getIterableStream(response);
}
function getIterableStream(stream: NodeJS.ReadableStream): AsyncIterable<any> {
return {
[Symbol.asyncIterator](): AsyncIterator<any> {
let buffer = '';
return {
async next(): Promise<IteratorResult<any>> {
while (true) {
const chunk = await new Promise<string>((resolve, reject) => {
stream.once('data', (data: Buffer) => resolve(data.toString()));
stream.once('error', (err) => reject(err));
stream.once('end', () => resolve(''));
});
buffer += chunk;
if (buffer.includes('\n\n')) {
const event = buffer.slice(0, buffer.indexOf('\n\n'));
buffer = buffer.slice(buffer.indexOf('\n\n') + 2);
try {
return { value: JSON.parse(event.slice('data: '.length)), done: false };
} catch (error) {
console.error('Error parsing event data:', error);
}
} else if (chunk === '') {
return { value: undefined, done: true };
}
}
},
};
},
};
}
async function Request(type: string, path: string, payload: any, responsedata?: any, options?: any): Promise<Types.AxiosSuccess | Types.AxiosError | undefined> {
let ricevuto = false let ricevuto = false
const userStore = useUserStore() const userStore = useUserStore()
@@ -57,59 +119,108 @@ async function Request(type: string, path: string, payload: any, responsedata?:
try { try {
if (tools.isDebug()) console.log('Axios Request', path, type, tools.notshowPwd(payload)) if (tools.isDebug()) console.log('Axios Request', path, type, tools.notshowPwd(payload))
let response: AxiosResponse let response: AxiosResponse
const config: AxiosRequestConfig = {
baseURL: globalStore.getServerHost(),
headers: {
'Content-Type': 'application/json',
'x-auth': userStore.x_auth_token,
'x-refrtok': userStore.refreshToken,
},
...responsedata,
}
if (options?.stream) {
config.responseType = 'stream';
}
if (type === 'post' || type === 'put' || type === 'patch') { if (type === 'post' || type === 'put' || type === 'patch') {
response = await axiosInstance[type](path, payload, {
baseURL: globalStore.getServerHost(),
headers: {
'Content-Type': 'application/json',
'x-auth': userStore.x_auth_token,
'x-refrtok': userStore.refreshToken,
},
...responsedata,
})
ricevuto = true
// console.log('Request Response: ', response)
// console.log(new Types.AxiosSuccess(response.data, response.status))
const setAuthToken = (path === '/updatepwd') || (path === '/users/login') if (options?.stream) {
console.log('GENERATESTREAM...')
const stream = await generateStream(path, payload, config, options);
console.log('USCITOOOOOOOOOOOOOOOOOOOOO ------------------------')
// console.log('--------- 0 ') return new Promise((resolve, reject) => {
const events$: Observable<any> = from(stream);
events$
.pipe(
mergeMap((event) => from([event])),
toArray()
)
.subscribe(
(data) => {
console.log('Received data:', data);
// Elabora i dati ricevuti
resolve({ data, status: response.status, statusText: response.statusText, headers: response.headers, config: response.config });
},
(error) => {
console.error('Stream error:', error);
reject(error);
},
() => {
console.log('Stream completed');
}
);
if (response && (response.status === 200)) { });
let x_auth_token = '' /*
let refreshToken = '' console.log('Stream response received, processing...');
try { return handleStreamResponse(response, (data) => {
if (setAuthToken || (path === '/users/login')) { console.log('data...' + data.content)
x_auth_token = String(response.headers['x-auth']) // Aggiorna lo stato dell'applicazione qui
refreshToken = String(response.headers['x-refrtok']) // Ad esempio:
// outputVisible.value += data.content;
});
*/
if (x_auth_token === '') { } else {
userStore.setServerCode(toolsext.ERR_AUTHENTICATION)
} response = await axiosInstance[type](path, payload, config)
if (setAuthToken) {
userStore.UpdatePwd(x_auth_token, refreshToken) ricevuto = true
// console.log('Request Response: ', response)
// console.log(new Types.AxiosSuccess(response.data, response.status))
const setAuthToken = (path === '/updatepwd') || (path === '/users/login')
// console.log('--------- 0 ')
if (response && (response.status === 200)) {
let x_auth_token = ''
let refreshToken = ''
try {
if (setAuthToken || (path === '/users/login')) {
x_auth_token = String(response.headers['x-auth'])
refreshToken = String(response.headers['x-refrtok'])
if (x_auth_token === '') {
userStore.setServerCode(toolsext.ERR_AUTHENTICATION)
}
if (setAuthToken) {
userStore.UpdatePwd(x_auth_token, refreshToken)
localStorage.setItem(toolsext.localStorage.token, x_auth_token)
localStorage.setItem(toolsext.localStorage.refreshToken, refreshToken)
}
userStore.setAuth(x_auth_token, refreshToken)
localStorage.setItem(toolsext.localStorage.token, x_auth_token) localStorage.setItem(toolsext.localStorage.token, x_auth_token)
localStorage.setItem(toolsext.localStorage.refreshToken, refreshToken) localStorage.setItem(toolsext.localStorage.refreshToken, refreshToken)
} }
userStore.setAuth(x_auth_token, refreshToken) globalStore.setStateConnection(ricevuto ? 'online' : 'offline')
localStorage.setItem(toolsext.localStorage.token, x_auth_token) userStore.setServerCode(tools.OK)
localStorage.setItem(toolsext.localStorage.refreshToken, refreshToken) } catch (e) {
if (setAuthToken) {
userStore.setServerCode(toolsext.ERR_AUTHENTICATION)
userStore.setAuth('', '')
}
globalStore.setStateConnection(ricevuto ? 'online' : 'offline')
return Promise.reject(new Types.AxiosError(serv_constants.RIS_CODE__HTTP_FORBIDDEN_INVALID_TOKEN, null, toolsext.ERR_AUTHENTICATION))
} }
globalStore.setStateConnection(ricevuto ? 'online' : 'offline')
userStore.setServerCode(tools.OK)
} catch (e) {
if (setAuthToken) {
userStore.setServerCode(toolsext.ERR_AUTHENTICATION)
userStore.setAuth('', '')
}
globalStore.setStateConnection(ricevuto ? 'online' : 'offline')
return Promise.reject(new Types.AxiosError(serv_constants.RIS_CODE__HTTP_FORBIDDEN_INVALID_TOKEN, null, toolsext.ERR_AUTHENTICATION))
} }
}
return new Types.AxiosSuccess(response.data, response.status) return new Types.AxiosSuccess(response.data, response.status)
}
} else if (type === 'get' || type === 'delete') { } else if (type === 'get' || type === 'delete') {
// @ts-ignore // @ts-ignore
response = await axiosInstance[type](path, { response = await axiosInstance[type](path, {
@@ -172,4 +283,33 @@ async function Request(type: string, path: string, payload: any, responsedata?:
} }
} }
function handleStreamResponse(response: AxiosResponse, updateCallback: (data: any) => void): Promise<any> {
return new Promise((resolve, reject) => {
// ... codice precedente ...
reader.on('data', (chunk: Buffer) => {
// ... codice precedente ...
if (line.startsWith('data: ')) {
const eventData = line.slice(6);
try {
const parsedData = JSON.parse(eventData);
console.log('Received data:', parsedData);
updateCallback(parsedData); // Chiamata alla callback per aggiornare lo stato
} catch (error) {
console.error('Error parsing event data:', error);
}
}
});
reader.on('end', () => {
console.log('Stream ended');
resolve('Stream completed');
});
reader.on('error', (error: Error) => {
console.error('Stream error:', error);
reject(error);
});
});
}
export default Request export default Request

View File

@@ -37,11 +37,11 @@ function ReceiveResponsefromServer(tablesync: string, nametab: string, method: s
// const algoliaApi = new AlgoliaSearch() // const algoliaApi = new AlgoliaSearch()
export const Api = { export const Api = {
async post(path: string, payload?: any, responsedata?: any) { async post(path: string, payload?: any, responsedata?: any, options?: any) {
const globalStore = useGlobalStore() const globalStore = useGlobalStore()
globalStore.connData.downloading_server = 1 globalStore.connData.downloading_server = 1
globalStore.connData.uploading_server = 1 globalStore.connData.uploading_server = 1
return Request('post', path, payload, responsedata) return Request('post', path, payload, responsedata, options)
}, },
async postFormData(path: string, payload?: any, responsedata?: any) { async postFormData(path: string, payload?: any, responsedata?: any) {
@@ -133,7 +133,6 @@ export const Api = {
async checkTokenScaduto(status: number, evitaloop: boolean, resolve: any, reject: any, url: string, method: string, mydata: any, setAuthToken = false) { async checkTokenScaduto(status: number, evitaloop: boolean, resolve: any, reject: any, url: string, method: string, mydata: any, setAuthToken = false) {
const userStore = useUserStore() const userStore = useUserStore()
const $router = useRouter()
if (status === serv_constants.RIS_CODE__HTTP_FORBIDDEN_TOKEN_EXPIRED) { if (status === serv_constants.RIS_CODE__HTTP_FORBIDDEN_TOKEN_EXPIRED) {
try { try {
@@ -146,6 +145,7 @@ export const Api = {
return resolve(this.SendReq(url, method, mydata, setAuthToken, true)); return resolve(this.SendReq(url, method, mydata, setAuthToken, true));
} }
} else { } else {
const $router = useRouter()
$router.push('/signin') $router.push('/signin')
} }
} catch (err2: any) { } catch (err2: any) {
@@ -162,7 +162,7 @@ export const Api = {
}, },
async SendReqBase(url: string, method: string, mydata: any, setAuthToken = false, evitaloop = false, myformdata?: any, responsedata?: any): Promise<Types.AxiosSuccess | Types.AxiosError> { async SendReqBase(url: string, method: string, mydata: any, setAuthToken = false, evitaloop = false, myformdata?: any, responsedata?: any, options?: any): Promise<Types.AxiosSuccess | Types.AxiosError> {
const mydataout = { const mydataout = {
...mydata, ...mydata,
keyappid: process.env.PAO_APP_ID, keyappid: process.env.PAO_APP_ID,
@@ -176,7 +176,7 @@ export const Api = {
userStore.setServerCode(tools.EMPTY) userStore.setServerCode(tools.EMPTY)
userStore.setResStatus(0) userStore.setResStatus(0)
return new Promise((resolve, reject) => sendRequest(url, method, mydataout, myformdata, responsedata) return new Promise((resolve, reject) => sendRequest(url, method, mydataout, myformdata, responsedata, options)
.then(async (res) => { .then(async (res) => {
setTimeout( () => { setTimeout( () => {
if (method === 'get') { if (method === 'get') {
@@ -268,9 +268,10 @@ export const Api = {
retryDelay = 5000, retryDelay = 5000,
myformdata?: any, myformdata?: any,
responsedata?: any, responsedata?: any,
options?: any,
): Promise<Types.AxiosSuccess | Types.AxiosError> { ): Promise<Types.AxiosSuccess | Types.AxiosError> {
try { try {
const response = await this.SendReqBase(url, method, mydata, setAuthToken, evitaloop, myformdata, responsedata); const response = await this.SendReqBase(url, method, mydata, setAuthToken, evitaloop, myformdata, responsedata, options);
return response; return response;
} catch (error: any) { } catch (error: any) {
let riprova = true let riprova = true

View File

@@ -107,6 +107,10 @@ function AddCol(params: IColGridTable) {
} }
} }
export const colTablePublisher = [
AddCol({ name: 'name', label_trans: 'reg.name' }),
]
export const colmailinglist = [ export const colmailinglist = [
AddCol({ name: 'name', label_trans: 'reg.name' }), AddCol({ name: 'name', label_trans: 'reg.name' }),
AddCol({ name: 'surname', label_trans: 'reg.surname' }), AddCol({ name: 'surname', label_trans: 'reg.surname' }),
@@ -119,6 +123,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.active', fieldtype: costanti.FieldType.boolean }),
AddCol({ name: 'versione_perstampa', label_trans: 'cataloglist.versione_perstampa', 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',
@@ -134,6 +139,12 @@ export const colTableCatalogList = [
fieldtype: costanti.FieldType.multiselect, fieldtype: costanti.FieldType.multiselect,
jointable: 'collanas', jointable: 'collanas',
}), }),
AddCol({
name: 'editore',
label_trans: 'cataloglist.editore',
fieldtype: costanti.FieldType.multiselect,
jointable: 'publishers',
}),
AddCol({ AddCol({
name: 'idPageAssigned', name: 'idPageAssigned',
@@ -146,21 +157,39 @@ export const colTableCatalogList = [
name: 'referenti', name: 'referenti',
label_trans: 'cataloglist.referenti', label_trans: 'cataloglist.referenti',
fieldtype: costanti.FieldType.multiselect, fieldtype: costanti.FieldType.multiselect,
jointable: 'friendsandme', jointable: 'lista_editori',
field_outtype: costanti.FieldType.object,
showWhen: costanti.showWhen.InView_OnlyifExist,
}), }),
AddCol({ name: 'descr_introduttiva', label_trans: 'cataloglist.descr_introduttiva', fieldtype: costanti.FieldType.html }), AddCol({ name: 'descr_introduttiva', label_trans: 'cataloglist.descr_introduttiva', fieldtype: costanti.FieldType.html, maxlength: 1300 }),
AddCol({ name: 'pagina_introduttiva_sfondo_nero', label_trans: 'cataloglist.pagina_introduttiva_sfondo_nero', fieldtype: costanti.FieldType.boolean }),
AddCol({ AddCol({
name: 'img_bordata_web', name: 'img_bordata',
label_trans: 'cataloglist.img_bordata_web', label_trans: 'cataloglist.img_bordata',
fieldtype: costanti.FieldType.image,
jointable: '',
showWhen: costanti.showWhen.NewRec + costanti.showWhen.InPage + costanti.showWhen.InEdit,
isadvanced_field: false,
}),
AddCol({
name: 'img_intro',
label_trans: 'cataloglist.img_intro',
fieldtype: costanti.FieldType.image, fieldtype: costanti.FieldType.image,
jointable: '', jointable: '',
showWhen: costanti.showWhen.NewRec + costanti.showWhen.InPage + costanti.showWhen.InEdit, showWhen: costanti.showWhen.NewRec + costanti.showWhen.InPage + costanti.showWhen.InEdit,
isadvanced_field: false, isadvanced_field: false,
}), }),
AddCol({
name: 'pdf_generato',
label_trans: 'cataloglist.pdf_generato',
}),
// AddCol({ name: 'data_generato', label_trans: 'dataloglist.data_generato', fieldtype: costanti.FieldType.date }),
AddCol({
name: 'pdf_online',
label_trans: 'cataloglist.pdf_online',
}),
// AddCol({ name: 'data_online', label_trans: 'dataloglist.data_online', fieldtype: costanti.FieldType.date }),
AddCol(ModifRec), AddCol(ModifRec),
AddCol(DuplicateRec), AddCol(DuplicateRec),
AddCol(DeleteRec), AddCol(DeleteRec),
@@ -225,6 +254,7 @@ export const colmyIImg = [
export const colmyScheda = [ export const colmyScheda = [
AddCol({ name: 'name', label_trans: 'scheda.name', fieldtype: costanti.FieldType.string }), AddCol({ name: 'name', label_trans: 'scheda.name', fieldtype: costanti.FieldType.string }),
AddCol({ name: 'isTemplate', label_trans: 'scheda.isTemplate', fieldtype: costanti.FieldType.boolean }), AddCol({ name: 'isTemplate', label_trans: 'scheda.isTemplate', fieldtype: costanti.FieldType.boolean }),
AddCol({ name: 'isPagIntro', label_trans: 'scheda.isPagIntro', fieldtype: costanti.FieldType.boolean }),
AddCol({ name: 'linkIdTemplate', label_trans: 'scheda.linkIdTemplate', fieldtype: costanti.FieldType.string }), AddCol({ name: 'linkIdTemplate', label_trans: 'scheda.linkIdTemplate', fieldtype: costanti.FieldType.string }),
AddCol({ name: 'widthscheda', label_trans: 'scheda.widthscheda', fieldtype: costanti.FieldType.number }), AddCol({ name: 'widthscheda', label_trans: 'scheda.widthscheda', fieldtype: costanti.FieldType.number }),
AddCol({ name: 'widthpag', label_trans: 'scheda.widthpag', fieldtype: costanti.FieldType.number }), AddCol({ name: 'widthpag', label_trans: 'scheda.widthpag', fieldtype: costanti.FieldType.number }),
@@ -573,8 +603,7 @@ export const colTableCatProd = [
] ]
export const colTableCollane = [ export const colTableCollane = [
AddCol({ name: 'idCollana', label_trans: 'collane.idCollana', fieldtype: costanti.FieldType.number }), AddCol({ name: 'idCollana', label_trans: 'collane.idCollana', fieldtype: costanti.FieldType.number }),
AddCol({ name: 'descrizione', label_trans: 'collane.descrizione' }), AddCol({ name: 'title', label_trans: 'collane.title' }),
AddCol({ name: 'descrizione_estesa', label_trans: 'collane.descrizione_estesa' }),
AddCol(DeleteRec), AddCol(DeleteRec),
AddCol(DuplicateRec), AddCol(DuplicateRec),
] ]
@@ -4301,6 +4330,13 @@ export const fieldsTable = {
colkey: 'idCollana', colkey: 'idCollana',
collabel: 'title', collabel: 'title',
}, },
{
value: 'publishers',
label: 'Nome',
columns: colTablePublisher,
colkey: '_id',
collabel: 'name',
},
{ {
value: 'catais', value: 'catais',
label: 'Categorie AI', label: 'Categorie AI',
@@ -4874,6 +4910,13 @@ export const fieldsTable = {
colkey: 'username', colkey: 'username',
collabel: 'username', collabel: 'username',
}, },
{
value: 'lista_editori',
label: 'Editori',
columns: colTableUsersGeneric,
colkey: 'username',
collabel: 'username',
},
{ {
value: 'mygroups', value: 'mygroups',
label: 'Organizzazioni', label: 'Organizzazioni',

View File

@@ -8438,7 +8438,7 @@ export const tools = {
} else if (table === toolsext.TABCATALOGS) { } else if (table === toolsext.TABCATALOGS) {
return tools.getdefaultnewrec_Catalog() return tools.getdefaultnewrec_Catalog()
} }
return null return {}
}, },
getNomeTabellaStrByTable(table: string, rec: any) { getNomeTabellaStrByTable(table: string, rec: any) {
@@ -9632,7 +9632,11 @@ export const tools = {
console.error('Errore durante l\'elaborazione dell\'URL:', error); console.error('Errore durante l\'elaborazione dell\'URL:', error);
return ''; return '';
} }
} },
isEmptyObject(obj: any) {
return Object.keys(obj).length === 0;
},
// FINE ! // FINE !

View File

@@ -1,4 +1,4 @@
import { IBaseOrder, ICart, IOrder, IOrderCart, IProduct, IProductsState, IProductInfo, ICatProd, IUserShort, IGasordine, IAuthor, ISubCatProd, IText, IOptCatalogo } from 'model' import { IBaseOrder, ICart, IOrder, IOrderCart, IProduct, IProductsState, IProductInfo, ICatProd, IUserShort, IGasordine, IAuthor, ISubCatProd, IText, IOptCatalogo, ICatalog } from 'model'
import { Api } from '@api' import { Api } from '@api'
import { serv_constants } from '@src/store/Modules/serv_constants' import { serv_constants } from '@src/store/Modules/serv_constants'
@@ -13,6 +13,7 @@ import { useGlobalStore } from './globalStore'
import { ref } from 'vue' import { ref } from 'vue'
import translate from '@src/globalroutines/util' import translate from '@src/globalroutines/util'
import { useCatalogStore } from './CatalogStore'
function getRecordOrdersCartEmpty(): IOrderCart { function getRecordOrdersCartEmpty(): IOrderCart {
return { return {
@@ -1295,7 +1296,7 @@ export const useProducts = defineStore('Products', {
} }
}, },
replaceKeyWordsByProduct(optcatalogo: IOptCatalogo, myproduct: IProduct, testo: IText) { replaceKeyWordsByProduct(optcatalogo: IOptCatalogo, myproduct: IProduct, testo: IText, idPage?: string) {
if (!myproduct || !testo.contenuto) { if (!myproduct || !testo.contenuto) {
return testo.contenuto; return testo.contenuto;
} }
@@ -1363,11 +1364,10 @@ export const useProducts = defineStore('Products', {
const prezzo_scontato = tools.arrotonda2Dec(myproduct.arrvariazioni![0].sale_price) || '' const prezzo_scontato = tools.arrotonda2Dec(myproduct.arrvariazioni![0].sale_price) || ''
const categoria = this.getCatProdsStrByCatProds(myproduct.productInfo.catprods!) const categoria = this.getCatProdsStrByCatProds(myproduct.productInfo.catprods!)
const sottocategoria = myproduct.productInfo.subcatprods && myproduct.productInfo.subcatprods.length > 0 ? myproduct.productInfo.subcatprods[0].name! : '' const sottocategoria = myproduct.productInfo.subcatprods && myproduct.productInfo.subcatprods.length > 0 ? myproduct.productInfo.subcatprods[0].name! : ''
const descr_categoria = myproduct.productInfo.catprods ? this.getCatProdDescrStrByIdCatProd(myproduct.productInfo.catprods![0]) : '' const descr_categoria = myproduct.productInfo.catprods ? this.getCatProdDescrStrByIdCatProd(myproduct.productInfo.catprods![0].name) : ''
const misure = myproduct.arrvariazioni![0].misure || '' const misure = myproduct.arrvariazioni![0].misure || ''
const formato = myproduct.arrvariazioni![0].formato || '' const formato = myproduct.arrvariazioni![0].formato || ''
const pagine = myproduct.arrvariazioni![0].pagine || '' const pagine = myproduct.arrvariazioni![0].pagine || ''
const scale = optcatalogo.printable ? optcatalogo.areadistampa?.scale : 1 const scale = optcatalogo.printable ? optcatalogo.areadistampa?.scale : 1
// Crea una mappa di sostituzioni // Crea una mappa di sostituzioni

View File

@@ -39,7 +39,7 @@ import { Router } from 'vue-router'
import { useProjectStore } from '@store/Projects' import { useProjectStore } from '@store/Projects'
import { shared_consts } from '@/common/shared_vuejs' import { shared_consts } from '@/common/shared_vuejs'
import { costanti } from '@costanti' import { costanti } from '@costanti'
import { IReaction, IBookmark, ISeen, IFavBook, IAttend, IFavorite, IGroupShort, IMyGroup, IUserAdmins } from '@model/UserStore' import { IReaction, IBookmark, ISeen, IFavBook, IAttend, IFavorite, IGroupShort, IMyGroup, IUserAdmins, IUserShort } from '@model/UserStore'
import globalroutines from '../globalroutines/index' import globalroutines from '../globalroutines/index'
import { useNotifStore } from '@store/NotifStore' import { useNotifStore } from '@store/NotifStore'
@@ -214,6 +214,7 @@ export const useUserStore = defineStore('UserStore', {
countusers: 0, countusers: 0,
lastparamquery: {}, lastparamquery: {},
updateTables: false, updateTables: false,
lista_editori: null,
}), }),
getters: { getters: {
@@ -222,6 +223,10 @@ export const useUserStore = defineStore('UserStore', {
return (this.servercode === toolsext.ERR_SERVERFETCH) return (this.servercode === toolsext.ERR_SERVERFETCH)
}, },
getListaEditori: (state: IUserState) => {
return state.lista_editori
},
getServerCode: (state: IUserState): number => (state.servercode ? state.servercode : 0), getServerCode: (state: IUserState): number => (state.servercode ? state.servercode : 0),
getMsg: (state: IUserState): string => (state.msg ? state.msg : ''), getMsg: (state: IUserState): string => (state.msg ? state.msg : ''),
@@ -2190,6 +2195,14 @@ export const useUserStore = defineStore('UserStore', {
return false return false
} }
}, },
async loadListaEditori() {
const globalStore = useGlobalStore();
if (!this.lista_editori) {
this.lista_editori = await globalStore.getObjOnServer('lista_editori');
}
return this.lista_editori
},
}, },
}) })

View File

@@ -339,7 +339,7 @@ export const useGlobalStore = defineStore('GlobalStore', {
return !!rec ? rec.name + ' ' + rec.surname : '' return !!rec ? rec.name + ' ' + rec.surname : ''
}, },
getSchedeOpt(): any [] { getSchedeOpt(): any[] {
const arrschede: ISchedaSingola[] = this.myschedas const arrschede: ISchedaSingola[] = this.myschedas
let arr: any = [] let arr: any = []
@@ -432,7 +432,9 @@ export const useGlobalStore = defineStore('GlobalStore', {
return userStore.usersList return userStore.usersList
else if (table === 'friends') else if (table === 'friends')
return userStore.my.profile.friends return userStore.my.profile.friends
else if (table === 'friendsandme') else if (table === 'lista_editori') {
ris = userStore.getListaEditori
} else if (table === 'friendsandme')
return [{ username: userStore.my.username }, ...userStore.my.profile.friends] return [{ username: userStore.my.username }, ...userStore.my.profile.friends]
// else if (table === 'mygroups') // else if (table === 'mygroups')
// return userStore.groups // return userStore.groups
@@ -1028,6 +1030,8 @@ export const useGlobalStore = defineStore('GlobalStore', {
}, },
async loadAfterLogin() { async loadAfterLogin() {
const userStore = useUserStore()
// console.log('loadAfterLogin') // console.log('loadAfterLogin')
this.clearDataAfterLoginOnlyIfActiveConnection() this.clearDataAfterLoginOnlyIfActiveConnection()
@@ -1041,6 +1045,8 @@ export const useGlobalStore = defineStore('GlobalStore', {
isok = true isok = true
} }
await userStore.loadListaEditori()
await globalroutines('readall', 'config', null) await globalroutines('readall', 'config', null)
if (tools.isLogged()) { if (tools.isLogged()) {
@@ -1113,7 +1119,6 @@ export const useGlobalStore = defineStore('GlobalStore', {
}, },
async loadTable(params: IParamsQuery) { async loadTable(params: IParamsQuery) {
// console.log('loadTable', params)
const userStore = useUserStore() const userStore = useUserStore()
return Api.SendReq('/gettable', 'POST', params) return Api.SendReq('/gettable', 'POST', params)
@@ -1132,6 +1137,23 @@ export const useGlobalStore = defineStore('GlobalStore', {
}) })
}, },
async getObjOnServer(cmd: string) {
const userStore = useUserStore()
return Api.SendReq('/getobj', 'POST', { cmd })
.then((res) => {
this.serverError = false
return res.data.data
})
.catch((error) => {
this.serverError = true
this.serverMsgError = error
console.log('error getObjOnServer', error)
userStore.setErrorCatch(error)
return null
})
},
async loadExp(params: any) { async loadExp(params: any) {
// console.log('loadTable', params) // console.log('loadTable', params)
params.filtersearch2 = 'fdsgas1' params.filtersearch2 = 'fdsgas1'
@@ -2032,9 +2054,9 @@ export const useGlobalStore = defineStore('GlobalStore', {
options, options,
} }
return Api.SendReq('/aitools/ds', 'POST', paramquery) return Api.SendReq('/aitools/ds', 'POST', paramquery, false, true, 1, 5000, null, null, options)
.then((res) => { .then((res) => {
return res.data return res.data
}).catch((error) => { }).catch((error) => {
return {} return {}
}) })

View File

@@ -14,7 +14,7 @@ import { CProductCard } from '@src/components/CProductCard'
import { CMySelect } from '@src/components/CMySelect' import { CMySelect } from '@src/components/CMySelect'
import { CContainerCatalogoCard } from '@src/components/CContainerCatalogoCard' import { CContainerCatalogoCard } from '@src/components/CContainerCatalogoCard'
import { CSelectUserActive } from '@src/components/CSelectUserActive' import { CSelectUserActive } from '@src/components/CSelectUserActive'
import { IOptCatalogo, IDimensioni, IFilterCatalogo, IMyScheda, IProdView, IProduct, ISchedaSingola, ISearchList, ICatalog } from 'model' import { IOptCatalogo, IDimensioni, IFilterCatalogo, IMyScheda, IProdView, IProduct, ISchedaSingola, ISearchList, ICatalog, IImg, IMyPage } from 'model'
import { fieldsTable } from '@store/Modules/fieldsTable' import { fieldsTable } from '@store/Modules/fieldsTable'
@@ -29,6 +29,11 @@ export default defineComponent({
type: Object as PropType<IOptCatalogo>, type: Object as PropType<IOptCatalogo>,
required: true, required: true,
}, },
idPage: {
type: String,
required: false,
default: '',
},
}, },
setup(props, { emit }) { setup(props, { emit }) {
const userStore = useUserStore() const userStore = useUserStore()
@@ -81,6 +86,8 @@ export default defineComponent({
const mycolumns = ref([]) const mycolumns = ref([])
const catalogStore = useCatalogStore()
const tabvisu = ref('categorie') const tabvisu = ref('categorie')
const tabcatalogo = ref('visu') const tabcatalogo = ref('visu')
@@ -111,6 +118,33 @@ export default defineComponent({
} }
}) })
const getTestoIntroduttivo = computed(() => (recscheda: ISchedaSingola) => {
let testo = recscheda.scheda!.dimensioni.pagina?.testo_up?.contenuto
if (recscheda.scheda!.isPagIntro) {
const catalogStore = useCatalogStore()
const catalog = catalogStore.catalogs?.find((catalog: ICatalog) => catalog.idPageAssigned === props.idPage)
if (catalog && catalog.descr_introduttiva) {
// Cerca se la descrizione introduttiva è stata impostata
testo = catalog.descr_introduttiva
let clcol = ''
if (catalog.pagina_introduttiva_sfondo_nero) {
clcol = `text-white`
}
testo = `<span class="book-text-up ${clcol}">` + testo + `</span>`
}
}
return testo
})
const getCatalogoByMyPage = computed(() => {
return catalogStore.catalogs?.find((catalog: ICatalog) => catalog.idPageAssigned === props.idPage)
})
// Register the scroll event on component mount // Register the scroll event on component mount
const handleScroll = () => { const handleScroll = () => {
const scrollTop = window.scrollY || document.documentElement.scrollTop; const scrollTop = window.scrollY || document.documentElement.scrollTop;
@@ -209,23 +243,91 @@ export default defineComponent({
return lista && lista.value && lista.value.hasOwnProperty('name') ? lista.value.name : '' return lista && lista.value && lista.value.hasOwnProperty('name') ? lista.value.name : ''
} }
function getIdCollaneDaFiltrare() { function getImgIntroCatalogo(scheda: IMyScheda): IImg {
let trovatocatalogo = getCatalogoByMyPage.value
let imagefile = ''
let fit = ''
if (trovatocatalogo && scheda.isPagIntro) {
const recimg = trovatocatalogo.img_intro
if (recimg) {
imagefile = recimg.imagefile!
fit = recimg.fit! || 'contain'
imagefile = imagefile ? `url(${costanti.DIR_UPLOAD + shared_consts.getDirectoryByTable(shared_consts.TABLES_CATALOG) + '/' + trovatocatalogo._id + '/' + imagefile})` : ''
}
}
return { imagefile, fit }
}
function getSfondoImgCatalogo(scheda?: IMyScheda | null, mypage?: IDimensioni): IImg {
let trovatocatalogo = getCatalogoByMyPage.value
let imagefile = ''
let fit = ''
if (trovatocatalogo) {
// Cerca prima se c'è un Immagine Introduttiva
const recimgintro = getImgIntroCatalogo(scheda!)
if (recimgintro.imagefile) {
imagefile = recimgintro.imagefile!
fit = recimgintro.fit! || 'contain'
}
// Poi cerca se c'è l'immagine di sfondo
const recimg = trovatocatalogo.img_bordata!
if (!imagefile && recimg) {
imagefile = recimg.imagefile!
fit = recimg.fit! || 'contain'
imagefile = imagefile ? `url(${costanti.DIR_UPLOAD + shared_consts.getDirectoryByTable(shared_consts.TABLES_CATALOG) + '/' + trovatocatalogo._id + '/' + imagefile})` : ''
}
}
if (!imagefile && scheda) {
imagefile = scheda.dimensioni?.pagina?.dimensioni?.imgsfondo!.imagefile!
imagefile = imagefile ? `url(${costanti.DIR_UPLOAD + costanti.DIR_SCHEDA + imagefile})` : ''
fit = scheda.dimensioni?.pagina?.dimensioni?.imgsfondo!.fit!
}
if (!imagefile && mypage) {
imagefile = mypage.imgsfondo!.imagefile!
imagefile = imagefile ? `url(${costanti.DIR_UPLOAD + costanti.DIR_CATALOGO + imagefile})` : ''
fit = mypage.imgsfondo!.fit!
}
return { imagefile, fit }
}
function getIdCollaneDaFiltrare(def_idCollane?: number[]) {
let idCollane: number[] = [] let idCollane: number[] = []
const catalogStore = useCatalogStore()
// Cerca se nella lista cataloghi c'è la Collana di questa Pagina ! // Cerca se nella lista cataloghi c'è la Collana di questa Pagina !
let trovato = catalogStore.catalogs?.find((catalog: ICatalog) => catalog.idPageAssigned) let trovatocatalogo = getCatalogoByMyPage.value
if (trovato) {
if (trovatocatalogo) {
idCollane = trovatocatalogo.idCollane! || []
} else { } else {
idCollane = optcatalogo.value.idCollane! || [] idCollane = def_idCollane || []
} }
return idCollane return idCollane
} }
function getEditoreDaFiltrare(def_editori?: string[]) {
let editore: string[] = []
// Cerca se nella lista cataloghi c'è la Collana di questa Pagina !
let trovatocatalogo = getCatalogoByMyPage.value
if (trovatocatalogo) {
editore = trovatocatalogo.editore! || []
} else {
editore = def_editori || []
}
return editore
}
function calcArrProducts() { function calcArrProducts() {
// console.log('calcArrProducts') // console.log('calcArrProducts')
@@ -245,9 +347,11 @@ export default defineComponent({
let boolfiltroVuotoProductTypes = (filtroProductTypes.length === 0 || (filtroProductTypes.length === 1 && (filtroProductTypes[0] === 0))) let boolfiltroVuotoProductTypes = (filtroProductTypes.length === 0 || (filtroProductTypes.length === 1 && (filtroProductTypes[0] === 0)))
let boolfiltroVuotoExcludeProductTypes = filtroExcludeProductTypes.length === 0 let boolfiltroVuotoExcludeProductTypes = filtroExcludeProductTypes.length === 0
let filtroPublishers = optcatalogo.value.editore || [] let editore = getEditoreDaFiltrare(optcatalogo.value.editore)
let filtroPublishers = editore || []
let filtroCollane = getIdCollaneDaFiltrare() let idCollane = getIdCollaneDaFiltrare(optcatalogo.value.idCollane!)
let filtroCollane = idCollane || []
let boolfiltroVuotoEditore = (filtroPublishers.length === 0) let boolfiltroVuotoEditore = (filtroPublishers.length === 0)
let boolfiltroVuotoCollane = (filtroCollane.length === 0) let boolfiltroVuotoCollane = (filtroCollane.length === 0)
@@ -296,10 +400,10 @@ export default defineComponent({
hasProductTypes = !optcatalogo.value.productTypes || (optcatalogo.value.productTypes && (product.productInfo.productTypes || []).some((item: any) => optcatalogo.value.productTypes!.includes(item))) hasProductTypes = !optcatalogo.value.productTypes || (optcatalogo.value.productTypes && (product.productInfo.productTypes || []).some((item: any) => optcatalogo.value.productTypes!.includes(item)))
} }
if (optcatalogo.value && !boolfiltroVuotoEditore) { if (optcatalogo.value && !boolfiltroVuotoEditore) {
hasPublished = !optcatalogo.value.editore || (optcatalogo.value.editore && optcatalogo.value.editore.includes(product.productInfo.idPublisher!)) hasPublished = !editore || (editore && editore.includes(product.productInfo.idPublisher!))
} }
if (optcatalogo.value && !boolfiltroVuotoCollane) { if (optcatalogo.value && !boolfiltroVuotoCollane) {
hasCollana = !optcatalogo.value.idCollane || (optcatalogo.value.idCollane && optcatalogo.value.idCollane.includes(product.productInfo.idCollana!)) hasCollana = !idCollane || (idCollane && idCollane.includes(product.productInfo.idCollana!))
} }
if (optcatalogo.value && !boolfiltroVuotoExcludeProductTypes) { if (optcatalogo.value && !boolfiltroVuotoExcludeProductTypes) {
@@ -359,6 +463,7 @@ export default defineComponent({
if (myschedatocopy) { if (myschedatocopy) {
myschedatocopy.scheda._id = origScheda.scheda?._id myschedatocopy.scheda._id = origScheda.scheda?._id
myschedatocopy.scheda.isTemplate = false myschedatocopy.scheda.isTemplate = false
myschedatocopy.scheda.isPagIntro = false
myschedatocopy.scheda.name = precname myschedatocopy.scheda.name = precname
myschedatocopy.scheda.linkIdTemplate = linkIdTemplate myschedatocopy.scheda.linkIdTemplate = linkIdTemplate
@@ -370,6 +475,7 @@ export default defineComponent({
} }
function populateDataWithlinkIdTemplate() { function populateDataWithlinkIdTemplate() {
console.log('populateDataWithlinkIdTemplate')
if (optcatalogo.value) { if (optcatalogo.value) {
@@ -402,8 +508,11 @@ export default defineComponent({
let boolfiltroVuotoProductTypes = (filtroProductTypes.length === 0 || (filtroProductTypes.length === 1 && (filtroProductTypes[0] === 0))) let boolfiltroVuotoProductTypes = (filtroProductTypes.length === 0 || (filtroProductTypes.length === 1 && (filtroProductTypes[0] === 0)))
let boolfiltroVuotoExcludeProductTypes = filtroExcludeProductTypes.length === 0 let boolfiltroVuotoExcludeProductTypes = filtroExcludeProductTypes.length === 0
let filtroPublishers = scheda.editore || [] let editore = getEditoreDaFiltrare(scheda.editore)
let filtroCollane = getIdCollaneDaFiltrare() let filtroPublishers = editore || []
let idCollane = getIdCollaneDaFiltrare(scheda.idCollane)
let filtroCollane = idCollane || []
let boolfiltroVuotoEditore = (filtroPublishers.length === 0) let boolfiltroVuotoEditore = (filtroPublishers.length === 0)
let boolfiltroVuotoCollane = (filtroCollane.length === 0) let boolfiltroVuotoCollane = (filtroCollane.length === 0)
@@ -464,11 +573,11 @@ export default defineComponent({
hasProductTypes = !scheda.productTypes || (scheda.productTypes && (product.productInfo.productTypes || []).some((item: any) => scheda.productTypes!.includes(item))) hasProductTypes = !scheda.productTypes || (scheda.productTypes && (product.productInfo.productTypes || []).some((item: any) => scheda.productTypes!.includes(item)))
} }
if (!boolfiltroVuotoEditore) { if (!boolfiltroVuotoEditore) {
hasPublished = !scheda.editore || (scheda.editore && scheda.editore.includes(product.productInfo.idPublisher!)) hasPublished = !editore || (editore && editore.includes(product.productInfo.idPublisher!))
} }
if (optcatalogo.value && !boolfiltroVuotoCollane) { if (optcatalogo.value && !boolfiltroVuotoCollane) {
hasCollane = !optcatalogo.value.idCollane || (optcatalogo.value.idCollane && optcatalogo.value.idCollane.includes(product.productInfo.idCollana!)) hasCollane = !idCollane || (idCollane && idCollane.includes(product.productInfo.idCollana!))
} }
if (!boolfiltroVuotoExcludeProductTypes) { if (!boolfiltroVuotoExcludeProductTypes) {
@@ -566,85 +675,90 @@ export default defineComponent({
function generatearrProdToViewSorted() { function generatearrProdToViewSorted() {
// console.log('generatearrProdToViewSorted', arrProducts.value) // console.log('generatearrProdToViewSorted', arrProducts.value)
// Svuota try {
arrProdToView.value = []
// gia filtrati // Svuota
const arrGeneraleProdotti = arrProducts.value; arrProdToView.value = []
let indprod = 0 // gia filtrati
let indprodGenerale = 0 const arrGeneraleProdotti = arrProducts.value;
for (const recscheda of optcatalogo.value.arrSchede!) { let indprod = 0
if (recscheda && recscheda.scheda) { let indprodGenerale = 0
let schedePerRiga = recscheda.scheda.numschede_perRiga || 1
let schedePerCol = recscheda.scheda.numschede_perCol || 1
let schedePerPagina = schedePerRiga * schedePerCol
let arrProdFiltrati: IProduct[] = [] for (const recscheda of optcatalogo.value.arrSchede!) {
if (recscheda && recscheda.scheda) {
let schedePerRiga = recscheda.scheda.numschede_perRiga || 1
let schedePerCol = recscheda.scheda.numschede_perCol || 1
let schedePerPagina = schedePerRiga * schedePerCol
if (recscheda.scheda.productTypes!.length > 0) { let arrProdFiltrati: IProduct[] = []
// Filtra i prodotti in base ai filtri impostati !
arrProdFiltrati = getProductsFilteredByScheda(recscheda.scheda) if (recscheda.scheda.productTypes!.length > 0) {
indprod = 0 // Filtra i prodotti in base ai filtri impostati !
} else { arrProdFiltrati = getProductsFilteredByScheda(recscheda.scheda)
if (recscheda.scheda?.sort_field!) {
arrProdFiltrati = getProductsSorted(arrGeneraleProdotti, recscheda.scheda.sort_field!, recscheda.scheda.sort_dir!);
indprod = 0 indprod = 0
} else { } else {
indprod = indprodGenerale if (recscheda.scheda?.sort_field!) {
arrProdFiltrati = arrGeneraleProdotti arrProdFiltrati = getProductsSorted(arrGeneraleProdotti, recscheda.scheda.sort_field!, recscheda.scheda.sort_dir!);
} indprod = 0
}
// console.log('arrProdFiltrati indiceRanking = ', arrProdFiltrati[0].indiceRanking)
let indadded = 0
recscheda.arrProdToShow = []
for (let pagina = 0; pagina < 100; pagina++) {
indadded = 0
if (!recscheda.arrProdToShow[pagina]) {
recscheda.arrProdToShow[pagina] = [];
}
for (let giro = 0; giro < schedePerPagina; giro++) {
// Aggiunge il prossimo prodotto che non è stato ancora inserito
const result = addNextProductToTheView(arrProdFiltrati, indprod);
if (result.end) {
break; // Esci dal ciclo se non ci sono più prodotti disponibili
} else { } else {
if (result.indprod) indprod = indprodGenerale
indprod = result.indprod // Aggiorna indprod per il prossimo giro arrProdFiltrati = arrGeneraleProdotti
if (result.myrec) {
let riga = Math.floor(indadded / schedePerCol)
let col = indadded % schedePerCol
if (!recscheda.arrProdToShow[pagina][riga]) {
recscheda.arrProdToShow[pagina][riga] = [];
}
// console.log('RANKING: ', result.myrec.indiceRanking!)
recscheda.arrProdToShow[pagina][riga][col] = result.myrec
indadded++
}
} }
} }
if (recscheda.numPagineMax! > 0) { let indadded = 0
if (pagina + 1 >= recscheda.numPagineMax!) recscheda.arrProdToShow = []
break; // fine pagine
for (let pagina = 0; pagina < 60; pagina++) {
indadded = 0
if (!recscheda.arrProdToShow[pagina]) {
recscheda.arrProdToShow[pagina] = [];
}
for (let giro = 0; giro < schedePerPagina; giro++) {
// Aggiunge il prossimo prodotto che non è stato ancora inserito
const result = addNextProductToTheView(arrProdFiltrati, indprod);
if (result.end) {
break; // Esci dal ciclo se non ci sono più prodotti disponibili
} else {
if (result.indprod)
indprod = result.indprod // Aggiorna indprod per il prossimo giro
if (result.myrec) {
let riga = Math.floor(indadded / schedePerCol)
let col = indadded % schedePerCol
if (!recscheda.arrProdToShow[pagina][riga]) {
recscheda.arrProdToShow[pagina][riga] = [];
}
// console.log('RANKING: ', result.myrec.indiceRanking!)
recscheda.arrProdToShow[pagina][riga][col] = result.myrec
indadded++
// console.log('indadded', indadded)
}
}
}
if (recscheda.numPagineMax! > 0) {
if (pagina + 1 >= recscheda.numPagineMax!)
break; // fine pagine
}
} }
// console.log('*** arrProdToShow', recscheda.arrProdToShow)
} }
// console.log('*** arrProdToShow', recscheda.arrProdToShow) // console.log('Fine Generazione')
} }
} catch (e) {
console.error('Err', e)
} }
// console.log('Fine...') // console.log('Fine...')
@@ -830,21 +944,11 @@ export default defineComponent({
const paddingLeft = scheda.dimensioni?.pagina?.dimensioni?.padding?.left ? tools.adjustSize(optcatalogo, scheda.dimensioni?.pagina?.dimensioni?.padding?.left) : (tools.adjustSize(optcatalogo, optcatalogo.dimensioni_def?.pagina?.padding?.left) || '') const paddingLeft = scheda.dimensioni?.pagina?.dimensioni?.padding?.left ? tools.adjustSize(optcatalogo, scheda.dimensioni?.pagina?.dimensioni?.padding?.left) : (tools.adjustSize(optcatalogo, optcatalogo.dimensioni_def?.pagina?.padding?.left) || '')
const paddingRight = scheda.dimensioni?.pagina?.dimensioni?.padding?.right ? tools.adjustSize(optcatalogo, scheda.dimensioni?.pagina?.dimensioni?.padding?.right) : (tools.adjustSize(optcatalogo, optcatalogo.dimensioni_def?.pagina?.padding?.right) || '') const paddingRight = scheda.dimensioni?.pagina?.dimensioni?.padding?.right ? tools.adjustSize(optcatalogo, scheda.dimensioni?.pagina?.dimensioni?.padding?.right) : (tools.adjustSize(optcatalogo, optcatalogo.dimensioni_def?.pagina?.padding?.right) || '')
// Esiste un immagine di sfondo specifica della singola pagina ? // Esiste un immagine di sfondo specifica della singola pagina ?
let fileimg = scheda.dimensioni?.pagina?.dimensioni?.imgsfondo?.imagefile let recimg = getSfondoImgCatalogo(scheda)
let backgroundSize = scheda.dimensioni?.pagina?.dimensioni?.imgsfondo?.fit let backgroundImage = recimg.imagefile! ?? ''
if (fileimg) { let backgroundSize = recimg.fit
fileimg = fileimg ? `url(${costanti.DIR_UPLOAD + costanti.DIR_SCHEDA + fileimg})` : ''
}
if (!fileimg) {
// Esiste un immagine di sfondo uguali per tutte le pagine ?
fileimg = optcatalogo.dimensioni_def?.pagina.imgsfondo?.imagefile
backgroundSize = optcatalogo.dimensioni_def?.pagina.imgsfondo?.fit
fileimg = fileimg ? `url(${costanti.DIR_UPLOAD + costanti.DIR_CATALOGO + fileimg})` : ''
}
let backgroundImage = fileimg ?? ''
let width = scheda.dimensioni?.pagina?.dimensioni?.size?.width ? tools.adjustSize(optcatalogo, scheda.dimensioni?.pagina?.dimensioni?.size?.width) : (tools.adjustSize(optcatalogo, optcatalogo.dimensioni_def?.pagina?.size?.width) ?? '') let width = scheda.dimensioni?.pagina?.dimensioni?.size?.width ? tools.adjustSize(optcatalogo, scheda.dimensioni?.pagina?.dimensioni?.size?.width) : (tools.adjustSize(optcatalogo, optcatalogo.dimensioni_def?.pagina?.size?.width) ?? '')
let height = scheda.dimensioni?.pagina?.dimensioni?.size?.height ? tools.adjustSize(optcatalogo, scheda.dimensioni?.pagina?.dimensioni?.size?.height) : (tools.adjustSize(optcatalogo, optcatalogo.dimensioni_def?.pagina?.size?.height) ?? '') let height = scheda.dimensioni?.pagina?.dimensioni?.size?.height ? tools.adjustSize(optcatalogo, scheda.dimensioni?.pagina?.dimensioni?.size?.height) : (tools.adjustSize(optcatalogo, optcatalogo.dimensioni_def?.pagina?.size?.height) ?? '')
@@ -862,8 +966,8 @@ export default defineComponent({
backgroundSize, backgroundSize,
'--width': width, '--width': width,
'--height': height, '--height': height,
...(width ? { width: `${width} !important;` } : {}), ...((width && width !== '0px') ? { width: `${width} !important` } : {}),
...(height ? { height: `${height} !important;` } : {}) // Aggiungi l'altezza solo se è valorizzata ...((height && height !== '0px') ? { height: `${height} !important` } : {}) // Aggiungi l'altezza solo se è valorizzata
}; };
} }
@@ -879,16 +983,14 @@ export default defineComponent({
const paddingRight = mypage!.padding?.right ? tools.adjustSize(optcatalogo, mypage!.padding?.right) : (tools.adjustSize(optcatalogo, optcatalogo.dimensioni_def?.pagina?.padding?.right) ?? '') const paddingRight = mypage!.padding?.right ? tools.adjustSize(optcatalogo, mypage!.padding?.right) : (tools.adjustSize(optcatalogo, optcatalogo.dimensioni_def?.pagina?.padding?.right) ?? '')
// Esiste un immagine di sfondo specifica della singola pagina ? // Esiste un immagine di sfondo specifica della singola pagina ?
let fileimg = mypage!.imgsfondo?.imagefile let recimg = getSfondoImgCatalogo(null, mypage)
let backgroundSize = mypage!.imgsfondo?.fit let fileimg = recimg.imagefile! ?? ''
if (fileimg) { let backgroundSize = recimg.fit
fileimg = fileimg ? `url(${costanti.DIR_UPLOAD + costanti.DIR_CATALOGO + fileimg})` : ''
}
if (!fileimg) { if (!fileimg) {
// Esiste un immagine di sfondo uguali per tutte le pagine ? // Esiste un immagine di sfondo uguali per tutte le pagine ?
fileimg = optcatalogo.dimensioni_def?.pagina.imgsfondo?.imagefile fileimg = optcatalogo.dimensioni_def?.pagina.imgsfondo?.imagefile!
backgroundSize = optcatalogo.dimensioni_def?.pagina.imgsfondo?.fit backgroundSize = optcatalogo.dimensioni_def?.pagina.imgsfondo?.fit!
fileimg = fileimg ? `url(${costanti.DIR_UPLOAD + costanti.DIR_CATALOGO + fileimg})` : '' fileimg = fileimg ? `url(${costanti.DIR_UPLOAD + costanti.DIR_CATALOGO + fileimg})` : ''
} }
@@ -910,8 +1012,8 @@ export default defineComponent({
backgroundSize, backgroundSize,
'--width': width, '--width': width,
'--height': height, '--height': height,
...(width ? { width: `${width} !important;` } : {}), ...((width && width !== '0px') ? { width: `${width} !important` } : {}),
...(height ? { height: `${height} !important;` } : {}) // Aggiungi l'altezza solo se è valorizzata ...((height && height !== '0px') ? { height: `${height} !important` } : {}) // Aggiungi l'altezza solo se è valorizzata
}; };
} }
@@ -936,7 +1038,7 @@ export default defineComponent({
const placeContent = 'center'; const placeContent = 'center';
const width = tools.adjustSize(optcatalogo.value, recscheda.scheda?.dimensioni?.riga?.size?.width) ?? ''; const width = tools.adjustSize(optcatalogo.value, recscheda.scheda?.dimensioni?.riga?.size?.width) ?? '';
const height = tools.adjustSize(optcatalogo.value, recscheda.scheda?.dimensioni?.riga?.size?.height); const height = tools.adjustSize(optcatalogo.value, recscheda.scheda?.dimensioni?.riga?.size?.height) ?? '';
const marginTop = tools.adjustSize(optcatalogo.value, recscheda.scheda?.dimensioni?.riga?.margini?.top) || '0'; const marginTop = tools.adjustSize(optcatalogo.value, recscheda.scheda?.dimensioni?.riga?.margini?.top) || '0';
const marginBottom = tools.adjustSize(optcatalogo.value, recscheda.scheda?.dimensioni?.riga?.margini?.bottom) || '0'; const marginBottom = tools.adjustSize(optcatalogo.value, recscheda.scheda?.dimensioni?.riga?.margini?.bottom) || '0';
@@ -950,17 +1052,19 @@ export default defineComponent({
let out: any = { let out: any = {
placeContent, placeContent,
flex: `0 1 ${width} !important;`, flex: `0 1 ${width} !important`,
margin: `${marginTop} ${marginRight} ${marginBottom} ${marginLeft}`, margin: `${marginTop} ${marginRight} ${marginBottom} ${marginLeft}`,
padding: `${paddingTop} ${paddingRight} ${paddingBottom} ${paddingLeft}` padding: `${paddingTop} ${paddingRight} ${paddingBottom} ${paddingLeft}`,
...((width && width !== '0px') ? { width: `${width} !important` } : {}),
...((height && height !== '0px') ? { height: `${height} !important` } : {})
} }
if (width) { /*if (width) {
out.width = `${width} !important;` out.width = `${width} !important`
} }
if (height) { if (height) {
out.height = `${height} !important;` out.height = `${height} !important`
} }*/
return out return out
@@ -985,10 +1089,10 @@ export default defineComponent({
return { return {
placeContent, placeContent,
alignSelf: 'flex-start', alignSelf: 'flex-start',
flex: `0 1 ${width} !important;`, flex: `0 1 ${width} !important`,
margin: `${marginTop} ${marginRight} ${marginBottom} ${marginLeft}`, margin: `${marginTop} ${marginRight} ${marginBottom} ${marginLeft}`,
padding: `${paddingTop} ${paddingRight} ${paddingBottom} ${paddingLeft}`, padding: `${paddingTop} ${paddingRight} ${paddingBottom} ${paddingLeft}`,
...(height ? { height: `${height} !important;` } : {}) // Aggiungi l'altezza solo se è valorizzata ...((height && height !== '0px') ? { height: `${height} !important` } : {}) // Aggiungi l'altezza solo se è valorizzata
}; };
} }
@@ -1047,6 +1151,7 @@ export default defineComponent({
containsProducts, containsProducts,
updateOptCatalogo, updateOptCatalogo,
optcatalogo, optcatalogo,
getTestoIntroduttivo,
} }
} }
}) })

View File

@@ -253,6 +253,7 @@
:complete="false" :complete="false"
:cosa="cosa" :cosa="cosa"
v-model="optcatalogo" v-model="optcatalogo"
:idPage="idPage"
:options="{ :options="{
show_short_descr: false, show_short_descr: false,
show_price: false, show_price: false,
@@ -321,8 +322,7 @@
> >
<div <div
v-html=" v-html="
recscheda.scheda.dimensioni.pagina?.testo_up getTestoIntroduttivo(recscheda)
?.contenuto
" "
style="display: flex; flex-direction: row" style="display: flex; flex-direction: row"
></div> ></div>
@@ -355,6 +355,7 @@
:complete="false" :complete="false"
:cosa="cosa" :cosa="cosa"
v-model="optcatalogo" v-model="optcatalogo"
:idPage="idPage"
:scheda="recscheda.scheda" :scheda="recscheda.scheda"
:options="{ :options="{
show_short_descr: false, show_short_descr: false,

View File

@@ -7,6 +7,7 @@
:id="id" :id="id"
:cosa="cosa" :cosa="cosa"
:complete="true" :complete="true"
:idPage="idPage"
:options="{ :options="{
show_short_descr: true, show_short_descr: true,
show_price: true, show_price: true,

View File

@@ -46,7 +46,7 @@
:prop_searchList="searchList" :prop_searchList="searchList"
:showType="costanti.SHOW_GROUPINFO" :showType="costanti.SHOW_GROUPINFO"
:showCol="false" :showCol="false"
:defaultnewrec="getdefaultnewrec" :defaultnewrec="getdefaultnewrec()"
:extraparams="extraparams()"> :extraparams="extraparams()">
</CGridTableRec> </CGridTableRec>

284
yarn.lock
View File

@@ -1217,6 +1217,28 @@
resolved "https://registry.yarnpkg.com/@discoveryjs/json-ext/-/json-ext-0.5.7.tgz#1d572bfbbe14b7704e0ba0f39b74815b84870d70" resolved "https://registry.yarnpkg.com/@discoveryjs/json-ext/-/json-ext-0.5.7.tgz#1d572bfbbe14b7704e0ba0f39b74815b84870d70"
integrity sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw== integrity sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw==
"@emnapi/core@^1.3.1":
version "1.3.1"
resolved "https://registry.yarnpkg.com/@emnapi/core/-/core-1.3.1.tgz#9c62d185372d1bddc94682b87f376e03dfac3f16"
integrity sha512-pVGjBIt1Y6gg3EJN8jTcfpP/+uuRksIo055oE/OBkDNcjZqVbfkWCksG1Jp4yZnj3iKWyWX8fdG/j6UDYPbFog==
dependencies:
"@emnapi/wasi-threads" "1.0.1"
tslib "^2.4.0"
"@emnapi/runtime@^1.3.1":
version "1.3.1"
resolved "https://registry.yarnpkg.com/@emnapi/runtime/-/runtime-1.3.1.tgz#0fcaa575afc31f455fd33534c19381cfce6c6f60"
integrity sha512-kEBmG8KyqtxJZv+ygbEim+KCGtIq1fC22Ms3S4ziXmYKm8uyoLX0MHONVKwp+9opg390VaKRNt4a7A9NwmpNhw==
dependencies:
tslib "^2.4.0"
"@emnapi/wasi-threads@1.0.1":
version "1.0.1"
resolved "https://registry.yarnpkg.com/@emnapi/wasi-threads/-/wasi-threads-1.0.1.tgz#d7ae71fd2166b1c916c6cd2d0df2ef565a2e1a5b"
integrity sha512-iIBu7mwkq4UQGeMEM8bLwNK962nXdhodeScX4slfQnRhEMMzvYivHhutCIk8uojvmASXXPC2WNEjwxFWk72Oqw==
dependencies:
tslib "^2.4.0"
"@eslint-community/eslint-utils@^4.1.2", "@eslint-community/eslint-utils@^4.2.0", "@eslint-community/eslint-utils@^4.4.0", "@eslint-community/eslint-utils@^4.4.1": "@eslint-community/eslint-utils@^4.1.2", "@eslint-community/eslint-utils@^4.2.0", "@eslint-community/eslint-utils@^4.4.0", "@eslint-community/eslint-utils@^4.4.1":
version "4.4.1" version "4.4.1"
resolved "https://registry.yarnpkg.com/@eslint-community/eslint-utils/-/eslint-utils-4.4.1.tgz#d1145bf2c20132d6400495d6df4bf59362fd9d56" resolved "https://registry.yarnpkg.com/@eslint-community/eslint-utils/-/eslint-utils-4.4.1.tgz#d1145bf2c20132d6400495d6df4bf59362fd9d56"
@@ -1727,6 +1749,15 @@
resolved "https://registry.yarnpkg.com/@msgpackr-extract/msgpackr-extract-win32-x64/-/msgpackr-extract-win32-x64-3.0.3.tgz#0aa5502d547b57abfc4ac492de68e2006e417242" resolved "https://registry.yarnpkg.com/@msgpackr-extract/msgpackr-extract-win32-x64/-/msgpackr-extract-win32-x64-3.0.3.tgz#0aa5502d547b57abfc4ac492de68e2006e417242"
integrity sha512-x0fWaQtYp4E6sktbsdAqnehxDgEc/VwM7uLsRCYWaiGu0ykYdZPiS8zCWdnjHwyiumousxfBm4SO31eXqwEZhQ== integrity sha512-x0fWaQtYp4E6sktbsdAqnehxDgEc/VwM7uLsRCYWaiGu0ykYdZPiS8zCWdnjHwyiumousxfBm4SO31eXqwEZhQ==
"@napi-rs/wasm-runtime@^0.2.6":
version "0.2.6"
resolved "https://registry.yarnpkg.com/@napi-rs/wasm-runtime/-/wasm-runtime-0.2.6.tgz#d1413a709622e7d6cf8a5b42fae76609184de6c9"
integrity sha512-z8YVS3XszxFTO73iwvFDNpQIzdMmSDTP/mB3E/ucR37V3Sx57hSExcXyMoNwaucWxnsWf4xfbZv0iZ30jr0M4Q==
dependencies:
"@emnapi/core" "^1.3.1"
"@emnapi/runtime" "^1.3.1"
"@tybys/wasm-util" "^0.9.0"
"@nodelib/fs.scandir@2.1.5": "@nodelib/fs.scandir@2.1.5":
version "2.1.5" version "2.1.5"
resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz#7619c2eb21b25483f6d167548b4cfd5a7488c3d5" resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz#7619c2eb21b25483f6d167548b4cfd5a7488c3d5"
@@ -1951,6 +1982,63 @@
proc-log "^5.0.0" proc-log "^5.0.0"
which "^5.0.0" which "^5.0.0"
"@oxc-resolver/binding-darwin-arm64@4.0.0":
version "4.0.0"
resolved "https://registry.yarnpkg.com/@oxc-resolver/binding-darwin-arm64/-/binding-darwin-arm64-4.0.0.tgz#79f26a57a362919376f19bbdfb44467286550f25"
integrity sha512-XVXnDT1wXOKK7lItASiZJWo0pL5SF6sUWfsmBzs+hE0+qBkHg30r4BLo5K3zsiMz7qgehaNi/rOMLaMBXXZ6kg==
"@oxc-resolver/binding-darwin-x64@4.0.0":
version "4.0.0"
resolved "https://registry.yarnpkg.com/@oxc-resolver/binding-darwin-x64/-/binding-darwin-x64-4.0.0.tgz#7abab549967370a4cc4173f2e098a2b3bed9460b"
integrity sha512-lkn7AGoOQ73c4RsxorDj8nfcXhCVoUQhy6ByfJoEb/6xIA/XiMCHupd7/rklHPD2GhNlBZH5T4XDJHM//dbj2g==
"@oxc-resolver/binding-freebsd-x64@4.0.0":
version "4.0.0"
resolved "https://registry.yarnpkg.com/@oxc-resolver/binding-freebsd-x64/-/binding-freebsd-x64-4.0.0.tgz#db9346c4f7e92675c82e9f6e65aef6e25873d241"
integrity sha512-hl0WHutF+IxyLvSNGmF+CF+o7CRNI0fr9hFhxkq/0nsU+ZCUwJcQTRBOyg3WauhuQIRzK/dbsmTbw4PTxk0ekA==
"@oxc-resolver/binding-linux-arm-gnueabihf@4.0.0":
version "4.0.0"
resolved "https://registry.yarnpkg.com/@oxc-resolver/binding-linux-arm-gnueabihf/-/binding-linux-arm-gnueabihf-4.0.0.tgz#45308be38a4f6a7a442aaf823416ed49b84d6fbf"
integrity sha512-zHDhBR0yUoSYltyfCx+1BNvQj3YcXjp8Co81jCZ32Zgj3TCSTg2rW3901GSB8/9+NkFC6Ch9IOvX1S1vWnyUxQ==
"@oxc-resolver/binding-linux-arm64-gnu@4.0.0":
version "4.0.0"
resolved "https://registry.yarnpkg.com/@oxc-resolver/binding-linux-arm64-gnu/-/binding-linux-arm64-gnu-4.0.0.tgz#d42da77319c8b5f27e09fa4bfd9ec7b555245cad"
integrity sha512-oq6ctQx5iZg/D5RYFp2AJg9QpcGpYXIsP2Gud3RnRqzMlv6mY7xDor7RMafB3fnjCQci8/W1XK+SyuT1NyTjIA==
"@oxc-resolver/binding-linux-arm64-musl@4.0.0":
version "4.0.0"
resolved "https://registry.yarnpkg.com/@oxc-resolver/binding-linux-arm64-musl/-/binding-linux-arm64-musl-4.0.0.tgz#9c76befa910223b04a1668ac8b16392fa713a29e"
integrity sha512-xcFQ1/2xJgfN3hF+WT4kOe4giIdxgFczBF/fMHBCyS0t5A2QJ/6RhT6yk2KdBdvFoqU5FEQ0pYjOYXRaVQgZtQ==
"@oxc-resolver/binding-linux-x64-gnu@4.0.0":
version "4.0.0"
resolved "https://registry.yarnpkg.com/@oxc-resolver/binding-linux-x64-gnu/-/binding-linux-x64-gnu-4.0.0.tgz#6963409664046ee5a4db647c31743f949dcde3c3"
integrity sha512-wZHvHwB52VzB1M82MOY1ylK+XBrgJyKojH2EEgaxJbzP2wLhG145Yp+dIUAJXTjyP0V1Cz/98Z+ZCmsU5ZPGjw==
"@oxc-resolver/binding-linux-x64-musl@4.0.0":
version "4.0.0"
resolved "https://registry.yarnpkg.com/@oxc-resolver/binding-linux-x64-musl/-/binding-linux-x64-musl-4.0.0.tgz#851a220db493fbfeb867128002b66e165be5757b"
integrity sha512-E+EN8INUxzdOJ2eCERmN86wNQzSY0PKrP/Jp1O1ACmJBsZNWd1SVabHhycpvIVaaptWyCCrZRBCWfz3PdnFiGQ==
"@oxc-resolver/binding-wasm32-wasi@4.0.0":
version "4.0.0"
resolved "https://registry.yarnpkg.com/@oxc-resolver/binding-wasm32-wasi/-/binding-wasm32-wasi-4.0.0.tgz#b5bf94dbec9911304db3756a155df802122adee2"
integrity sha512-d4hsgWnTVCj1ek+k199KzornlU9tJv8XK+RBnD/UBk7+XCmw36i3p4gMcNyuzP81x8QBQYNsbHjSbp8afyUHyA==
dependencies:
"@napi-rs/wasm-runtime" "^0.2.6"
"@oxc-resolver/binding-win32-arm64-msvc@4.0.0":
version "4.0.0"
resolved "https://registry.yarnpkg.com/@oxc-resolver/binding-win32-arm64-msvc/-/binding-win32-arm64-msvc-4.0.0.tgz#c6a7254a18d76b61d411a7196e7a3453bf69f91a"
integrity sha512-FU9c4CLI788abtUWhO21JXWwZWdDaRx4Zcu2w8PpsIPO4uE3V51r2krG5X3fWZRIX0srOA07KCNO0B/YgV4Tzg==
"@oxc-resolver/binding-win32-x64-msvc@4.0.0":
version "4.0.0"
resolved "https://registry.yarnpkg.com/@oxc-resolver/binding-win32-x64-msvc/-/binding-win32-x64-msvc-4.0.0.tgz#27dee207fcf53b3568c7cd44a6ae223c01cceadf"
integrity sha512-Cq/nh1CtnAqOR+3xhPCly41njaQWMOvjgplBgf+whRWW3Jg0hL1zfKUNU+RmUQ71UmcVwKi00fipLMoQYdEvfA==
"@parcel/bundler-default@2.13.3": "@parcel/bundler-default@2.13.3":
version "2.13.3" version "2.13.3"
resolved "https://registry.yarnpkg.com/@parcel/bundler-default/-/bundler-default-2.13.3.tgz#3a7b88f473b46321532dc0f187667f8e34f0722d" resolved "https://registry.yarnpkg.com/@parcel/bundler-default/-/bundler-default-2.13.3.tgz#3a7b88f473b46321532dc0f187667f8e34f0722d"
@@ -2894,6 +2982,17 @@
resolved "https://registry.yarnpkg.com/@socket.io/component-emitter/-/component-emitter-3.1.2.tgz#821f8442f4175d8f0467b9daf26e3a18e2d02af2" resolved "https://registry.yarnpkg.com/@socket.io/component-emitter/-/component-emitter-3.1.2.tgz#821f8442f4175d8f0467b9daf26e3a18e2d02af2"
integrity sha512-9BCxFwvbGg/RsZK9tjXd8s4UcwR0MWeFQ1XEKIQVVvAGJyINdrqKMcTRyLoK8Rse1GjzLV9cwjWV1olXRWEXVA== integrity sha512-9BCxFwvbGg/RsZK9tjXd8s4UcwR0MWeFQ1XEKIQVVvAGJyINdrqKMcTRyLoK8Rse1GjzLV9cwjWV1olXRWEXVA==
"@stylistic/eslint-plugin@^2.13.0":
version "2.13.0"
resolved "https://registry.yarnpkg.com/@stylistic/eslint-plugin/-/eslint-plugin-2.13.0.tgz#53bf175dac8c1ec055b370a6ff77d491cae9a70d"
integrity sha512-RnO1SaiCFHn666wNz2QfZEFxvmiNRqhzaMXHXxXXKt+MEP7aajlPxUSMIQpKAaJfverpovEYqjBOXDq6dDcaOQ==
dependencies:
"@typescript-eslint/utils" "^8.13.0"
eslint-visitor-keys "^4.2.0"
espree "^10.3.0"
estraverse "^5.3.0"
picomatch "^4.0.2"
"@surma/rollup-plugin-off-main-thread@^2.2.3": "@surma/rollup-plugin-off-main-thread@^2.2.3":
version "2.2.3" version "2.2.3"
resolved "https://registry.yarnpkg.com/@surma/rollup-plugin-off-main-thread/-/rollup-plugin-off-main-thread-2.2.3.tgz#ee34985952ca21558ab0d952f00298ad2190c053" resolved "https://registry.yarnpkg.com/@surma/rollup-plugin-off-main-thread/-/rollup-plugin-off-main-thread-2.2.3.tgz#ee34985952ca21558ab0d952f00298ad2190c053"
@@ -3020,6 +3119,13 @@
"@tufjs/canonical-json" "2.0.0" "@tufjs/canonical-json" "2.0.0"
minimatch "^9.0.5" minimatch "^9.0.5"
"@tybys/wasm-util@^0.9.0":
version "0.9.0"
resolved "https://registry.yarnpkg.com/@tybys/wasm-util/-/wasm-util-0.9.0.tgz#3e75eb00604c8d6db470bf18c37b7d984a0e3355"
integrity sha512-6+7nlbMVX/PVDCwaIQ8nTOPveOcFLSt8GcXdx8hD0bt39uWxYT88uXzqTd4fTvqta7oeUJqudepapKNt2DYJFw==
dependencies:
tslib "^2.4.0"
"@types/babel__core@^7.1.14": "@types/babel__core@^7.1.14":
version "7.20.5" version "7.20.5"
resolved "https://registry.yarnpkg.com/@types/babel__core/-/babel__core-7.20.5.tgz#3df15f27ba85319caa07ba08d0721889bb39c017" resolved "https://registry.yarnpkg.com/@types/babel__core/-/babel__core-7.20.5.tgz#3df15f27ba85319caa07ba08d0721889bb39c017"
@@ -3115,6 +3221,11 @@
dependencies: dependencies:
"@types/node" "*" "@types/node" "*"
"@types/doctrine@^0.0.9":
version "0.0.9"
resolved "https://registry.yarnpkg.com/@types/doctrine/-/doctrine-0.0.9.tgz#d86a5f452a15e3e3113b99e39616a9baa0f9863f"
integrity sha512-eOIHzCUSH7SMfonMG1LsC2f8vxBFtho6NGBznK41R84YzPuvSBzrhEps33IsQiOW9+VL6NQ9DbjQJznk/S4uRA==
"@types/dotenv@^8.2.0": "@types/dotenv@^8.2.0":
version "8.2.3" version "8.2.3"
resolved "https://registry.yarnpkg.com/@types/dotenv/-/dotenv-8.2.3.tgz#c97b3c5b2e97ff3873793a000999e86cd66ff354" resolved "https://registry.yarnpkg.com/@types/dotenv/-/dotenv-8.2.3.tgz#c97b3c5b2e97ff3873793a000999e86cd66ff354"
@@ -3466,7 +3577,7 @@
"@typescript-eslint/visitor-keys" "8.23.0" "@typescript-eslint/visitor-keys" "8.23.0"
debug "^4.3.4" debug "^4.3.4"
"@typescript-eslint/scope-manager@8.23.0": "@typescript-eslint/scope-manager@8.23.0", "@typescript-eslint/scope-manager@^8.1.0":
version "8.23.0" version "8.23.0"
resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-8.23.0.tgz#ee3bb7546421ca924b9b7a8b62a77d388193ddec" resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-8.23.0.tgz#ee3bb7546421ca924b9b7a8b62a77d388193ddec"
integrity sha512-OGqo7+dXHqI7Hfm+WqkZjKjsiRtFUQHPdGMXzk5mYXhJUedO7e/Y7i8AK3MyLMgZR93TX4bIzYrfyVjLC+0VSw== integrity sha512-OGqo7+dXHqI7Hfm+WqkZjKjsiRtFUQHPdGMXzk5mYXhJUedO7e/Y7i8AK3MyLMgZR93TX4bIzYrfyVjLC+0VSw==
@@ -3503,7 +3614,7 @@
semver "^7.6.0" semver "^7.6.0"
ts-api-utils "^2.0.1" ts-api-utils "^2.0.1"
"@typescript-eslint/utils@8.23.0": "@typescript-eslint/utils@8.23.0", "@typescript-eslint/utils@^8.1.0", "@typescript-eslint/utils@^8.13.0":
version "8.23.0" version "8.23.0"
resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-8.23.0.tgz#b269cbdc77129fd6e0e600b168b5ef740a625554" resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-8.23.0.tgz#b269cbdc77129fd6e0e600b168b5ef740a625554"
integrity sha512-uB/+PSo6Exu02b5ZEiVtmY6RVYO7YU5xqgzTIVZwTHvvK3HsL8tZZHFaTLFtRG3CsV4A5mhOv+NZx5BlhXPyIA== integrity sha512-uB/+PSo6Exu02b5ZEiVtmY6RVYO7YU5xqgzTIVZwTHvvK3HsL8tZZHFaTLFtRG3CsV4A5mhOv+NZx5BlhXPyIA==
@@ -3615,17 +3726,17 @@
dependencies: dependencies:
rfdc "^1.4.1" rfdc "^1.4.1"
"@vue/eslint-config-standard@^8.0.1": "@vue/eslint-config-standard@^9.0.0":
version "8.0.1" version "9.0.0"
resolved "https://registry.yarnpkg.com/@vue/eslint-config-standard/-/eslint-config-standard-8.0.1.tgz#d6e5f87bf99d142fc7adaaa5c32bc8d6af626ae3" resolved "https://registry.yarnpkg.com/@vue/eslint-config-standard/-/eslint-config-standard-9.0.0.tgz#3430b9e33cc24500eb9e38e2f155b0b1441912f6"
integrity sha512-+FsTb8kOf2GSbXXTwbigRBRRur/byMbwL6Ijii2JoXW4hsLB4arl9lbgV54OUOV5o20INLHDmBVONO16rP/a1g== integrity sha512-ue/LcEclYfNH6g8Vp9y/Kt8w3WOllMiwdrrVufwDvrWKIZAgGsFtepXGZN3N1oK/K8/SAaLNxUD6SYecfi2D4g==
dependencies: dependencies:
eslint-config-standard "^17.0.0" "@stylistic/eslint-plugin" "^2.13.0"
eslint-import-resolver-custom-alias "^1.3.0" eslint-import-resolver-next "^0.4.1"
eslint-import-resolver-node "^0.3.6" eslint-plugin-import-x "^4.6.1"
eslint-plugin-import "^2.26.0" eslint-plugin-n "^17.15.1"
eslint-plugin-n "^15.2.4" eslint-plugin-promise "^7.2.1"
eslint-plugin-promise "^6.0.0" globals "^15.14.0"
"@vue/reactivity@3.5.13": "@vue/reactivity@3.5.13":
version "3.5.13" version "3.5.13"
@@ -4630,13 +4741,6 @@ buffer@^5.5.0:
base64-js "^1.3.1" base64-js "^1.3.1"
ieee754 "^1.1.13" ieee754 "^1.1.13"
builtins@^5.0.1:
version "5.1.0"
resolved "https://registry.yarnpkg.com/builtins/-/builtins-5.1.0.tgz#6d85eeb360c4ebc166c3fdef922a15aa7316a5e8"
integrity sha512-SW9lzGTLvWTP1AY8xeAMZimqDrIaSdLQUcVr9DMef51niJ022Ri87SwRRKYm4A6iHfkPaiVUu/Duw2Wc4J7kKg==
dependencies:
semver "^7.0.0"
bytes@3.1.2: bytes@3.1.2:
version "3.1.2" version "3.1.2"
resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.1.2.tgz#8b0beeb98605adf1b128fa4386403c009e0221a5" resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.1.2.tgz#8b0beeb98605adf1b128fa4386403c009e0221a5"
@@ -5892,6 +5996,13 @@ doctrine@^2.1.0:
dependencies: dependencies:
esutils "^2.0.2" esutils "^2.0.2"
doctrine@^3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-3.0.0.tgz#addebead72a6574db783639dc87a121773973961"
integrity sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==
dependencies:
esutils "^2.0.2"
dom-converter@^0.2.0: dom-converter@^0.2.0:
version "0.2.0" version "0.2.0"
resolved "https://registry.yarnpkg.com/dom-converter/-/dom-converter-0.2.0.tgz#6721a9daee2e293682955b6afe416771627bb768" resolved "https://registry.yarnpkg.com/dom-converter/-/dom-converter-0.2.0.tgz#6721a9daee2e293682955b6afe416771627bb768"
@@ -6330,25 +6441,22 @@ eslint-compat-utils@^0.5.1:
dependencies: dependencies:
semver "^7.5.4" semver "^7.5.4"
eslint-config-prettier@9.1.0: eslint-config-prettier@10.0.1:
version "9.1.0" version "10.0.1"
resolved "https://registry.yarnpkg.com/eslint-config-prettier/-/eslint-config-prettier-9.1.0.tgz#31af3d94578645966c082fcb71a5846d3c94867f" resolved "https://registry.yarnpkg.com/eslint-config-prettier/-/eslint-config-prettier-10.0.1.tgz#fbb03bfc8db0651df9ce4e8b7150d11c5fe3addf"
integrity sha512-NSWl5BFQWEPi1j4TjVNItzYV7dZXZ+wP6I6ZhrBGpChQhZRUaElihE9uRRkcbRnNb76UMKDF3r+WTmNcGPKsqw== integrity sha512-lZBts941cyJyeaooiKxAtzoPHTN+GbQTJFAIdQbRhA4/8whaAraEh47Whw/ZFfrjNSnlAxqfm9i0XVAEkULjCw==
eslint-config-standard@^17.0.0: eslint-import-resolver-next@^0.4.1:
version "17.1.0" version "0.4.2"
resolved "https://registry.yarnpkg.com/eslint-config-standard/-/eslint-config-standard-17.1.0.tgz#40ffb8595d47a6b242e07cbfd49dc211ed128975" resolved "https://registry.yarnpkg.com/eslint-import-resolver-next/-/eslint-import-resolver-next-0.4.2.tgz#2d8eedba922586c72259f7afde9d8c56e92162f2"
integrity sha512-IwHwmaBNtDK4zDHQukFDW5u/aTb8+meQWZvNFWkiGmbWjD6bqyuSSBxxXKkCftCUzc1zwCH2m/baCNDLGmuO5Q== integrity sha512-GNwbV4WDvTZvoXiJ1OGvuSG/fURLQwXr0nxR++N/0w3alo5fmN4pmKuGI95j7EX8cAuDzrzswM+eboOFZMMDHA==
eslint-import-resolver-custom-alias@^1.3.0:
version "1.3.2"
resolved "https://registry.yarnpkg.com/eslint-import-resolver-custom-alias/-/eslint-import-resolver-custom-alias-1.3.2.tgz#e509097e87de7a10b8c205c24644c3eb3fdf03c4"
integrity sha512-wBPcZA2k6/IXaT8FsLMyiyVSG6WVEuaYIAbeKLXeGwr523BmeB9lKAAoLJWSqp3txsnU4gpkgD2x1q6K8k0uDQ==
dependencies: dependencies:
glob-parent "^6.0.2" fast-glob "^3.3.3"
resolve "^1.22.2" js-yaml "^4.1.0"
oxc-resolver "^4.0.0"
stable-hash "^0.0.4"
eslint-import-resolver-node@^0.3.6, eslint-import-resolver-node@^0.3.9: eslint-import-resolver-node@^0.3.9:
version "0.3.9" version "0.3.9"
resolved "https://registry.yarnpkg.com/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.9.tgz#d4eaac52b8a2e7c3cd1903eb00f7e053356118ac" resolved "https://registry.yarnpkg.com/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.9.tgz#d4eaac52b8a2e7c3cd1903eb00f7e053356118ac"
integrity sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g== integrity sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==
@@ -6381,15 +6489,26 @@ eslint-plugin-es@^3.0.0:
eslint-utils "^2.0.0" eslint-utils "^2.0.0"
regexpp "^3.0.0" regexpp "^3.0.0"
eslint-plugin-es@^4.1.0: eslint-plugin-import-x@^4.6.1:
version "4.1.0" version "4.6.1"
resolved "https://registry.yarnpkg.com/eslint-plugin-es/-/eslint-plugin-es-4.1.0.tgz#f0822f0c18a535a97c3e714e89f88586a7641ec9" resolved "https://registry.yarnpkg.com/eslint-plugin-import-x/-/eslint-plugin-import-x-4.6.1.tgz#2fdb9a25addd92247f5d9b198bfa654eeaea2f52"
integrity sha512-GILhQTnjYE2WorX5Jyi5i4dz5ALWxBIdQECVQavL6s7cI76IZTDWleTHkxz/QT3kvcs2QlGHvKLYsSlPOlPXnQ== integrity sha512-wluSUifMIb7UfwWXqx7Yx0lE/SGCcGXECLx/9bCmbY2nneLwvAZ4vkd1IXDjPKFvdcdUgr1BaRnaRpx3k2+Pfw==
dependencies: dependencies:
eslint-utils "^2.0.0" "@types/doctrine" "^0.0.9"
regexpp "^3.0.0" "@typescript-eslint/scope-manager" "^8.1.0"
"@typescript-eslint/utils" "^8.1.0"
debug "^4.3.4"
doctrine "^3.0.0"
enhanced-resolve "^5.17.1"
eslint-import-resolver-node "^0.3.9"
get-tsconfig "^4.7.3"
is-glob "^4.0.3"
minimatch "^9.0.3"
semver "^7.6.3"
stable-hash "^0.0.4"
tslib "^2.6.3"
eslint-plugin-import@^2.26.0, eslint-plugin-import@^2.31.0: eslint-plugin-import@^2.31.0:
version "2.31.0" version "2.31.0"
resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.31.0.tgz#310ce7e720ca1d9c0bb3f69adfd1c6bdd7d9e0e7" resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.31.0.tgz#310ce7e720ca1d9c0bb3f69adfd1c6bdd7d9e0e7"
integrity sha512-ixmkI62Rbc2/w8Vfxyh1jQRTdRTF52VxwRVHl/ykPAmqG+Nb7/kNn+byLP0LxPgI7zWA16Jt82SybJInmMia3A== integrity sha512-ixmkI62Rbc2/w8Vfxyh1jQRTdRTF52VxwRVHl/ykPAmqG+Nb7/kNn+byLP0LxPgI7zWA16Jt82SybJInmMia3A==
@@ -6414,20 +6533,6 @@ eslint-plugin-import@^2.26.0, eslint-plugin-import@^2.31.0:
string.prototype.trimend "^1.0.8" string.prototype.trimend "^1.0.8"
tsconfig-paths "^3.15.0" tsconfig-paths "^3.15.0"
eslint-plugin-n@^15.2.4:
version "15.7.0"
resolved "https://registry.yarnpkg.com/eslint-plugin-n/-/eslint-plugin-n-15.7.0.tgz#e29221d8f5174f84d18f2eb94765f2eeea033b90"
integrity sha512-jDex9s7D/Qial8AGVIHq4W7NswpUD5DPDL2RH8Lzd9EloWUuvUkHfv4FRLMipH5q2UtyurorBkPeNi1wVWNh3Q==
dependencies:
builtins "^5.0.1"
eslint-plugin-es "^4.1.0"
eslint-utils "^3.0.0"
ignore "^5.1.1"
is-core-module "^2.11.0"
minimatch "^3.1.2"
resolve "^1.22.1"
semver "^7.3.8"
eslint-plugin-n@^17.15.1: eslint-plugin-n@^17.15.1:
version "17.15.1" version "17.15.1"
resolved "https://registry.yarnpkg.com/eslint-plugin-n/-/eslint-plugin-n-17.15.1.tgz#2129bbc7b11466c3bfec57876a15aadfad3a83f2" resolved "https://registry.yarnpkg.com/eslint-plugin-n/-/eslint-plugin-n-17.15.1.tgz#2129bbc7b11466c3bfec57876a15aadfad3a83f2"
@@ -6454,11 +6559,6 @@ eslint-plugin-node@^11.1.0:
resolve "^1.10.1" resolve "^1.10.1"
semver "^6.1.0" semver "^6.1.0"
eslint-plugin-promise@^6.0.0:
version "6.6.0"
resolved "https://registry.yarnpkg.com/eslint-plugin-promise/-/eslint-plugin-promise-6.6.0.tgz#acd3fd7d55cead7a10f92cf698f36c0aafcd717a"
integrity sha512-57Zzfw8G6+Gq7axm2Pdo3gW/Rx3h9Yywgn61uE/3elTCOePEHVrn2i5CdfBwA1BLK0Q0WqctICIUSqXZW/VprQ==
eslint-plugin-promise@^7.2.1: eslint-plugin-promise@^7.2.1:
version "7.2.1" version "7.2.1"
resolved "https://registry.yarnpkg.com/eslint-plugin-promise/-/eslint-plugin-promise-7.2.1.tgz#a0652195700aea40b926dc3c74b38e373377bfb0" resolved "https://registry.yarnpkg.com/eslint-plugin-promise/-/eslint-plugin-promise-7.2.1.tgz#a0652195700aea40b926dc3c74b38e373377bfb0"
@@ -6519,23 +6619,11 @@ eslint-utils@^2.0.0:
dependencies: dependencies:
eslint-visitor-keys "^1.1.0" eslint-visitor-keys "^1.1.0"
eslint-utils@^3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-3.0.0.tgz#8aebaface7345bb33559db0a1f13a1d2d48c3672"
integrity sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==
dependencies:
eslint-visitor-keys "^2.0.0"
eslint-visitor-keys@^1.1.0: eslint-visitor-keys@^1.1.0:
version "1.3.0" version "1.3.0"
resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz#30ebd1ef7c2fdff01c3a4f151044af25fab0523e" resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz#30ebd1ef7c2fdff01c3a4f151044af25fab0523e"
integrity sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ== integrity sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==
eslint-visitor-keys@^2.0.0:
version "2.1.0"
resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz#f65328259305927392c938ed44eb0a5c9b2bd303"
integrity sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==
eslint-visitor-keys@^3.3.0, eslint-visitor-keys@^3.4.1, eslint-visitor-keys@^3.4.3: eslint-visitor-keys@^3.3.0, eslint-visitor-keys@^3.4.1, eslint-visitor-keys@^3.4.3:
version "3.4.3" version "3.4.3"
resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz#0cd72fe8550e3c2eae156a96a4dddcd1c8ac5800" resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz#0cd72fe8550e3c2eae156a96a4dddcd1c8ac5800"
@@ -6633,7 +6721,7 @@ estraverse@^4.1.1:
resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.3.0.tgz#398ad3f3c5a24948be7725e83d11a7de28cdbd1d" resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.3.0.tgz#398ad3f3c5a24948be7725e83d11a7de28cdbd1d"
integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw== integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==
estraverse@^5.1.0, estraverse@^5.2.0: estraverse@^5.1.0, estraverse@^5.2.0, estraverse@^5.3.0:
version "5.3.0" version "5.3.0"
resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.3.0.tgz#2eea5290702f26ab8fe5370370ff86c965d21123" resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.3.0.tgz#2eea5290702f26ab8fe5370370ff86c965d21123"
integrity sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA== integrity sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==
@@ -6779,7 +6867,7 @@ fast-glob@3.3.2:
merge2 "^1.3.0" merge2 "^1.3.0"
micromatch "^4.0.4" micromatch "^4.0.4"
fast-glob@^3.2.11, fast-glob@^3.2.9, fast-glob@^3.3.0, fast-glob@^3.3.2: fast-glob@^3.2.11, fast-glob@^3.2.9, fast-glob@^3.3.0, fast-glob@^3.3.2, fast-glob@^3.3.3:
version "3.3.3" version "3.3.3"
resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.3.3.tgz#d06d585ce8dba90a16b0505c543c3ccfb3aeb818" resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.3.3.tgz#d06d585ce8dba90a16b0505c543c3ccfb3aeb818"
integrity sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg== integrity sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==
@@ -7245,7 +7333,7 @@ get-symbol-description@^1.1.0:
es-errors "^1.3.0" es-errors "^1.3.0"
get-intrinsic "^1.2.6" get-intrinsic "^1.2.6"
get-tsconfig@^4.8.1: get-tsconfig@^4.7.3, get-tsconfig@^4.8.1:
version "4.10.0" version "4.10.0"
resolved "https://registry.yarnpkg.com/get-tsconfig/-/get-tsconfig-4.10.0.tgz#403a682b373a823612475a4c2928c7326fc0f6bb" resolved "https://registry.yarnpkg.com/get-tsconfig/-/get-tsconfig-4.10.0.tgz#403a682b373a823612475a4c2928c7326fc0f6bb"
integrity sha512-kGzZ3LWWQcGIAmg6iWvXn0ei6WDtV26wzHRMwDSzmAbcXrTEXxHy6IehI6/4eT6VRKyMP1eF1VqwrVUmE/LR7A== integrity sha512-kGzZ3LWWQcGIAmg6iWvXn0ei6WDtV26wzHRMwDSzmAbcXrTEXxHy6IehI6/4eT6VRKyMP1eF1VqwrVUmE/LR7A==
@@ -7345,7 +7433,7 @@ globals@^14.0.0:
resolved "https://registry.yarnpkg.com/globals/-/globals-14.0.0.tgz#898d7413c29babcf6bafe56fcadded858ada724e" resolved "https://registry.yarnpkg.com/globals/-/globals-14.0.0.tgz#898d7413c29babcf6bafe56fcadded858ada724e"
integrity sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ== integrity sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==
globals@^15.11.0: globals@^15.11.0, globals@^15.14.0:
version "15.14.0" version "15.14.0"
resolved "https://registry.yarnpkg.com/globals/-/globals-15.14.0.tgz#b8fd3a8941ff3b4d38f3319d433b61bbb482e73f" resolved "https://registry.yarnpkg.com/globals/-/globals-15.14.0.tgz#b8fd3a8941ff3b4d38f3319d433b61bbb482e73f"
integrity sha512-OkToC372DtlQeje9/zHIo5CT8lRP/FUgEOKBEhU4e0abL7J7CD24fD9ohiLN5hagG/kWCYj4K5oaxxtj2Z0Dig== integrity sha512-OkToC372DtlQeje9/zHIo5CT8lRP/FUgEOKBEhU4e0abL7J7CD24fD9ohiLN5hagG/kWCYj4K5oaxxtj2Z0Dig==
@@ -8129,7 +8217,7 @@ is-cidr@^5.1.0:
dependencies: dependencies:
cidr-regex "^4.1.1" cidr-regex "^4.1.1"
is-core-module@^2.11.0, is-core-module@^2.13.0, is-core-module@^2.15.1, is-core-module@^2.16.0, is-core-module@^2.5.0: is-core-module@^2.13.0, is-core-module@^2.15.1, is-core-module@^2.16.0, is-core-module@^2.5.0:
version "2.16.1" version "2.16.1"
resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.16.1.tgz#2a98801a849f43e2add644fbb6bc6229b19a4ef4" resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.16.1.tgz#2a98801a849f43e2add644fbb6bc6229b19a4ef4"
integrity sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w== integrity sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==
@@ -9783,7 +9871,7 @@ minimatch@^8.0.2:
dependencies: dependencies:
brace-expansion "^2.0.1" brace-expansion "^2.0.1"
minimatch@^9.0.0, minimatch@^9.0.4, minimatch@^9.0.5: minimatch@^9.0.0, minimatch@^9.0.3, minimatch@^9.0.4, minimatch@^9.0.5:
version "9.0.5" version "9.0.5"
resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-9.0.5.tgz#d74f9dd6b57d83d8e98cfb82133b03978bc929e5" resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-9.0.5.tgz#d74f9dd6b57d83d8e98cfb82133b03978bc929e5"
integrity sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow== integrity sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==
@@ -10624,6 +10712,23 @@ own-keys@^1.0.1:
object-keys "^1.1.1" object-keys "^1.1.1"
safe-push-apply "^1.0.0" safe-push-apply "^1.0.0"
oxc-resolver@^4.0.0:
version "4.0.0"
resolved "https://registry.yarnpkg.com/oxc-resolver/-/oxc-resolver-4.0.0.tgz#467c4592d5813abb1100780b6b1841aa78a26547"
integrity sha512-ElPTdsyZQTpup3TcGRYhpyrM+t0NI992IEERT4QF/+bbcD0sVxC7eveX6IZqIlgALQAouGC5cZvnBKbaeDVreQ==
optionalDependencies:
"@oxc-resolver/binding-darwin-arm64" "4.0.0"
"@oxc-resolver/binding-darwin-x64" "4.0.0"
"@oxc-resolver/binding-freebsd-x64" "4.0.0"
"@oxc-resolver/binding-linux-arm-gnueabihf" "4.0.0"
"@oxc-resolver/binding-linux-arm64-gnu" "4.0.0"
"@oxc-resolver/binding-linux-arm64-musl" "4.0.0"
"@oxc-resolver/binding-linux-x64-gnu" "4.0.0"
"@oxc-resolver/binding-linux-x64-musl" "4.0.0"
"@oxc-resolver/binding-wasm32-wasi" "4.0.0"
"@oxc-resolver/binding-win32-arm64-msvc" "4.0.0"
"@oxc-resolver/binding-win32-x64-msvc" "4.0.0"
p-filter@^2.1.0: p-filter@^2.1.0:
version "2.1.0" version "2.1.0"
resolved "https://registry.yarnpkg.com/p-filter/-/p-filter-2.1.0.tgz#1b1472562ae7a0f742f0f3d3d3718ea66ff9c09c" resolved "https://registry.yarnpkg.com/p-filter/-/p-filter-2.1.0.tgz#1b1472562ae7a0f742f0f3d3d3718ea66ff9c09c"
@@ -12047,7 +12152,7 @@ resolve.exports@^2.0.0:
resolved "https://registry.yarnpkg.com/resolve.exports/-/resolve.exports-2.0.3.tgz#41955e6f1b4013b7586f873749a635dea07ebe3f" resolved "https://registry.yarnpkg.com/resolve.exports/-/resolve.exports-2.0.3.tgz#41955e6f1b4013b7586f873749a635dea07ebe3f"
integrity sha512-OcXjMsGdhL4XnbShKpAcSqPMzQoYkYyhbEaeSko47MjRP9NfEQMhZkXL1DoFlt9LWQn4YttrdnV6X2OiyzBi+A== integrity sha512-OcXjMsGdhL4XnbShKpAcSqPMzQoYkYyhbEaeSko47MjRP9NfEQMhZkXL1DoFlt9LWQn4YttrdnV6X2OiyzBi+A==
resolve@^1.10.0, resolve@^1.10.1, resolve@^1.14.2, resolve@^1.20.0, resolve@^1.22.1, resolve@^1.22.2, resolve@^1.22.4, resolve@^1.22.8: resolve@^1.10.0, resolve@^1.10.1, resolve@^1.14.2, resolve@^1.20.0, resolve@^1.22.1, resolve@^1.22.4, resolve@^1.22.8:
version "1.22.10" version "1.22.10"
resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.10.tgz#b663e83ffb09bbf2386944736baae803029b8b39" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.10.tgz#b663e83ffb09bbf2386944736baae803029b8b39"
integrity sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w== integrity sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w==
@@ -12140,7 +12245,7 @@ run-parallel@^1.1.9:
dependencies: dependencies:
queue-microtask "^1.2.2" queue-microtask "^1.2.2"
rxjs@^7.4.0, rxjs@^7.5.5: rxjs@^7.4.0, rxjs@^7.5.5, rxjs@^7.8.1:
version "7.8.1" version "7.8.1"
resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-7.8.1.tgz#6f6f3d99ea8044291efd92e7c7fcf562c4057543" resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-7.8.1.tgz#6f6f3d99ea8044291efd92e7c7fcf562c4057543"
integrity sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg== integrity sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==
@@ -12416,7 +12521,7 @@ semver@^6.1.0, semver@^6.3.0, semver@^6.3.1:
resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.1.tgz#556d2ef8689146e46dcea4bfdd095f3434dffcb4" resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.1.tgz#556d2ef8689146e46dcea4bfdd095f3434dffcb4"
integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA== integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==
semver@^7.0.0, semver@^7.1.1, semver@^7.3.2, semver@^7.3.4, semver@^7.3.5, semver@^7.3.6, semver@^7.3.7, semver@^7.3.8, semver@^7.5.2, semver@^7.5.3, semver@^7.5.4, semver@^7.6.0, semver@^7.6.3: semver@^7.1.1, semver@^7.3.2, semver@^7.3.4, semver@^7.3.5, semver@^7.3.6, semver@^7.3.7, semver@^7.3.8, semver@^7.5.2, semver@^7.5.3, semver@^7.5.4, semver@^7.6.0, semver@^7.6.3:
version "7.7.1" version "7.7.1"
resolved "https://registry.yarnpkg.com/semver/-/semver-7.7.1.tgz#abd5098d82b18c6c81f6074ff2647fd3e7220c9f" resolved "https://registry.yarnpkg.com/semver/-/semver-7.7.1.tgz#abd5098d82b18c6c81f6074ff2647fd3e7220c9f"
integrity sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA== integrity sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==
@@ -12914,6 +13019,11 @@ ssri@^9.0.0:
dependencies: dependencies:
minipass "^3.1.1" minipass "^3.1.1"
stable-hash@^0.0.4:
version "0.0.4"
resolved "https://registry.yarnpkg.com/stable-hash/-/stable-hash-0.0.4.tgz#55ae7dadc13e4b3faed13601587cec41859b42f7"
integrity sha512-LjdcbuBeLcdETCrPn9i8AYAZ1eCtu4ECAWtP7UleOiZ9LzVxRzzUZEoZ8zB24nhkQnDWyET0I+3sWokSDS3E7g==
stable@^0.1.8: stable@^0.1.8:
version "0.1.8" version "0.1.8"
resolved "https://registry.yarnpkg.com/stable/-/stable-0.1.8.tgz#836eb3c8382fe2936feaf544631017ce7d47a3cf" resolved "https://registry.yarnpkg.com/stable/-/stable-0.1.8.tgz#836eb3c8382fe2936feaf544631017ce7d47a3cf"
@@ -13519,7 +13629,7 @@ tslib@2.3.0:
resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.3.0.tgz#803b8cdab3e12ba581a4ca41c8839bbb0dacb09e" resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.3.0.tgz#803b8cdab3e12ba581a4ca41c8839bbb0dacb09e"
integrity sha512-N82ooyxVNm6h1riLCoyS9e3fuJ3AMG2zIZs2Gd1ATcSFjSA23Q0fzjjZeh0jbJvWVDZ0cJT8yaNNaaXHzueNjg== integrity sha512-N82ooyxVNm6h1riLCoyS9e3fuJ3AMG2zIZs2Gd1ATcSFjSA23Q0fzjjZeh0jbJvWVDZ0cJT8yaNNaaXHzueNjg==
tslib@^2.0.3, tslib@^2.1.0, tslib@^2.8.0: tslib@^2.0.3, tslib@^2.1.0, tslib@^2.4.0, tslib@^2.6.3, tslib@^2.8.0:
version "2.8.1" version "2.8.1"
resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.8.1.tgz#612efe4ed235d567e8aba5f2a5fab70280ade83f" resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.8.1.tgz#612efe4ed235d567e8aba5f2a5fab70280ade83f"
integrity sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w== integrity sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==
@@ -13647,10 +13757,10 @@ typescript@4.9.4:
resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.9.4.tgz#a2a3d2756c079abda241d75f149df9d561091e78" resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.9.4.tgz#a2a3d2756c079abda241d75f149df9d561091e78"
integrity sha512-Uz+dTXYzxXXbsFpM86Wh3dKCxrQqUcVMxwU54orwlJjOpO3ao8L7j5lH+dWfTwgCwIuM9GQ2kvVotzYJMXTBZg== integrity sha512-Uz+dTXYzxXXbsFpM86Wh3dKCxrQqUcVMxwU54orwlJjOpO3ao8L7j5lH+dWfTwgCwIuM9GQ2kvVotzYJMXTBZg==
typescript@5.6.2: typescript@5.7.3:
version "5.6.2" version "5.7.3"
resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.6.2.tgz#d1de67b6bef77c41823f822df8f0b3bcff60a5a0" resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.7.3.tgz#919b44a7dbb8583a9b856d162be24a54bf80073e"
integrity sha512-NW8ByodCSNCwZeghjN3o+JX5OFH0Ojg6sadjEKY4huZ52TqbJTJnDo5+Tw98lSy63NZvi4n+ez5m2u5d4PkZyw== integrity sha512-84MVSjMEHP+FQRPy3pX9sTVV/INIex71s9TL2Gm5FG/WG1SqXeKyZ0k7/blY/4FdOzI12CBy1vGc4og/eus0fw==
uglify-js@^3.1.4: uglify-js@^3.1.4:
version "3.19.3" version "3.19.3"