147 Commits

Author SHA1 Message Date
Surya Paolo
7c1946debe aa 2025-12-17 10:26:12 +01:00
Surya Paolo
7aeced4232 ok 2025-12-17 10:20:07 +01:00
Surya Paolo
6d78f82099 - aggiornamento di tante cose...
- generazione Volantini
- pagina RIS
2025-12-17 10:07:42 +01:00
Surya Paolo
89a8d10eae - verifica email se non è stata verificata (componente)
- altri aggiornamenti grafica PAGERIS.
- OLLAMA AI
2025-12-11 18:34:39 +01:00
Surya Paolo
6fdb101092 categorie 2025-12-07 15:17:37 +01:00
Surya Paolo
f238630dd7 ok 2025-12-07 10:47:58 +01:00
Surya Paolo
a22eca0f58 - aggiornati anche i ContribTypes che appaiono sulla card degli annunci 2025-12-07 10:26:30 +01:00
Surya Paolo
a4ca394e49 - Aggiornate tutte le categorie ottimizzandole.
- Migrazione delle vecchie categ. con quelle nuove.
- Create le Categorie e sottocategorie degli Eventi (a parte).
- Aggiornato la card dell'Ospitalità
2025-12-07 02:13:18 +01:00
Surya Paolo
5d35930dc8 - pagine RISO 2025-12-05 17:56:05 +01:00
Surya Paolo
a51bc5a8a2 - aggiornamenti guida RIS, FAQ
- Editor HTML aggiunto CSS e Script
- Statistiche
- CRISBalanceBar
- Inizio Sync... (ma disattivato)
2025-12-02 22:16:24 +01:00
Surya Paolo
8b6a636a96 - Nuova Home Page RISO Moderna! Passo 1 - la struttura 2025-11-29 21:14:26 +01:00
Surya Paolo
2abdda3b44 - aggiornato Card service, e CGridTableRec. 2025-11-28 21:28:31 +01:00
Surya Paolo
3018542868 - email Abilitazione Circuito RISO 2025-11-28 18:53:37 +01:00
Surya Paolo
cfb830a0ad - fix zona provinciale
- email abilitazione circuito: invio email ad admin
- admin che abilita la fiducia cliccando sul bottone
2025-11-27 23:51:43 +01:00
Surya Paolo
1bd41058a6 - se password errata deve comparire msg giusto 2025-11-27 03:36:06 +01:00
Surya Paolo
281be361ba - comune residenza anche sulla email
- comune non obbligatorio... Skippa
2025-11-27 03:14:56 +01:00
Surya Paolo
2dca358cd3 - corretto altre cose sulla registrazione 2025-11-27 01:11:59 +01:00
Surya Paolo
05bf8ad495 - aggiunto il Comune di Residenza alla REgistrazione e al Tutorial 2025-11-27 00:48:53 +01:00
Surya Paolo
145327a6ca - Corretto campo "Comune di Residenza".
- Aggiornato Completamento Profilo: Comune di Residenza.
- Registrazione
2025-11-26 18:32:05 +01:00
Surya Paolo
b37204f543 - primo aggiornamento myreccard
- aggiunta sito germogliamo.app
- aggiornato login con il parametro "browser_random" che serve per fare un login anche su 2 pagine contemporaneamente.
2025-11-25 17:45:17 +01:00
Surya Paolo
e9fa53a637 - aggiornati form registrazione
- Login
- Password dimenticata
- Aggiorna password.
- Email registrazione
- Ammetti Utente
2025-11-24 17:42:26 +01:00
Surya Paolo
9faaa1a4c3 - aggiornato la guida per installare la App
- aggiornato la Guida Completa e Breve di RISO.
- pagina per ricevere i RIS.
- sistemato problema creazione nuovi Circuiti (admin non corretti).
- corretto giro delle email, invitante, invitato e ricezione msg su telegram.
2025-11-23 01:13:27 +01:00
Surya Paolo
8ab7594f16 - sistemazioni Email : registrazione, invio invito, email di benvenuto
- fix circuito
- profilo
2025-11-21 20:47:35 +01:00
Surya Paolo
3c5287a13c - risolto problema sull'attivazione del Circuito ITA. non arrivava il messaggio
- sistemazioni sul profilo
2025-11-19 19:44:21 +01:00
Surya Paolo
57436f088b - asggiunto bottone "installa app" sulla email di conferma registrazione e anche la Guida "/guida".
- migliorato InvitaAmico
2025-11-19 11:39:36 +01:00
Surya Paolo
05a3617103 - invita amico 2025-11-19 10:09:45 +01:00
Surya Paolo
05dc22dac6 - Installa App e pagina Home Riso. 2025-11-19 01:02:47 +01:00
Surya Paolo
4985e7565d - Sistemato INVITI alla App
- Completamento Profilo
- Registrazione tramite Invito, senza richiedere conferma email.
2025-11-18 23:56:08 +01:00
Surya Paolo
fc569192e7 fix: se aggiungi XLS non si aggiornava la lista correttamente, non ricaricava... 2025-11-18 13:08:47 +01:00
Surya Paolo
4eb8838dbc corretto bug GruppoMacro la lista veniva salvata ma anche aggiornata in memoria con solo gli ID... in questo caso TABLES_NON_AGGIORNARE_IN_MEMORIA_PERCHE_DIVERSA_STRUTTURA gli dice che alcune tabelle non devono essere aggiornate in memoria. 2025-11-18 11:19:32 +01:00
Surya Paolo
b8df3ea721 - aggiornata la grafica della Home di RISO
- Profilo Completition
- Email Verificata
- Invita un Amico (invio di email)
2025-11-15 19:38:39 +01:00
Surya Paolo
d812c6c799 - versione: 1.2.77
- aggiustamenti e miglioramenti estetici
2025-11-03 14:24:10 +01:00
Surya Paolo
a164db8bf3 - migliorata grafica statistiche valori
- corretto pagina profilo
2025-11-03 01:47:21 +01:00
Surya Paolo
7e156ca820 - risolto problema spazi vuoti in cima alla app
- risolto problema sulle card di telegram, immagini non alte uguali e non si vedono bene...
2025-11-02 21:16:41 +01:00
Surya Paolo
d179581b23 - check updates
- risolto problema della generazione dei PDF, avevo modificato in CMyPageElem , se si cambia qualcosa occorre stare attenti a mettere !hideHeader
2025-11-01 12:00:49 +01:00
Surya Paolo
df98ec9471 - corretto problema ROGNOSO : Risolvere la questione "Sessioni multiple", se apro 2 browser l'ultimo va a cancellare il precedente, e mi da errore di email non valida !
Il problema era sulla fetch nel service worker, gestita in quel modo personalizzato, andava in conflitto, non tenendo le chiamate bloccanti, ma uscivano prima che arrivasse la risposta del server.
- Per chi è da tanto che non si collega a RISO, compare "Email non verificata"... (si risolve chiudendo su ESCI e riloggandosi)... però andrebbe sistemata.
(stesso problema di prima).
2025-10-26 02:47:59 +02:00
Surya Paolo
eb0fb72c70 - Sistemato problema del Circuito ITALIA, quando veniva fatta la richiesta di entrare, ancora non si era entrati nel circuito territoriale.
- Ora pertanto viene inviata la richiesta agli admin solo dopo che l'utente viene abilitato al Circuito provinciale.
2025-10-11 18:36:04 +02:00
Surya Paolo
2f39d4f1d9 - corretto componente CDateTime
- aggiunto componente CDateTimeStartEnd
2025-10-05 23:58:57 +02:00
Surya Paolo
58db59a751 modif 2025-10-05 11:16:01 +02:00
Surya Paolo
e827744f51 - aggiornato tabella modifica prodotti.
- codice sconto etichetta.
2025-10-03 18:02:26 +02:00
Surya Paolo
b07d4c822f - Gestore Ordini GAS (aggiornato)
- Possibilità di modificare un record, click sulla matita rossa.
- corretto altre sistemazioni sui valori di minimo e massimo quantità.
2025-10-03 16:28:46 +02:00
Surya Paolo
fc1e9d4666 Versione 1.2.71:
- sistemato il carrello su GruppoMacro e su PiuCheBuono.
- Corretto visualizzazione della scontistica.
- Se un prodotto viene cancellato ora lo cancella anche sul carrello.
2025-10-02 16:17:52 +02:00
Surya Paolo
05c97ab231 - corretto visualizzazione dei prodotti,
- inserimento nuovi prodotti nella tabella.
2025-09-27 20:43:46 +02:00
Surya Paolo
d6c0bcf879 - corretto gruppomacro catalogo, info prodotti, estrazione dati da amazon corretto. 2025-09-27 17:24:40 +02:00
Surya Paolo
c8589e794f - aggiunto componenti per Home Template... ma ancora da provare
- sistemato catprods
- Sistemato menu
2025-09-22 19:09:14 +02:00
Surya Paolo
917cdaa754 - aggiunto FeaturesSection all'editor HTML 2025-09-17 01:21:40 +02:00
Surya Paolo
e40bf8b73d -drag menu continua 2025-09-16 22:18:21 +02:00
Surya Paolo
95fa0b9ac0 - gestione dell'editor delle pagine (non funzionante!) 2025-09-16 17:30:28 +02:00
Surya Paolo
cb3baf3dbb - migliorata la grafica dell'aggiungi elemento. 2025-09-08 20:42:36 +02:00
Surya Paolo
ac84755dbb - sistemato editor di pagine (elementi) 2025-09-08 19:23:41 +02:00
Surya Paolo
cb0c26a43c - Editor Pagine Elementi: Sezione, Righe, Colonne, Elementi. (rows, columns, elems) 2025-09-08 01:02:32 +02:00
Surya Paolo
63d0f865fd - inizio di modifiche all'editor di Pagine Web 2025-09-05 01:05:36 +02:00
Surya Paolo
574f389200 - creato editor di Pagine (iniziato)
- fix: mancano i "t," su alcuni componenti...
2025-09-02 16:22:13 +02:00
Surya Paolo
4f4297ca21 - Modifiche a ProductInfo... Continua 2025-08-29 23:34:37 +02:00
Surya Paolo
5d8e38fea6 galleria prodotto 2025-08-12 19:43:36 +02:00
Surya Paolo
f1f3f5ad07 - Iniziato a scrivere la CHATBOT... 2025-08-09 00:48:44 +02:00
Surya Paolo
6013a624f6 - controllo della @ sull'username telegram (sugli Eventi)
- controllo email di test, se funzionante o no
2025-07-29 12:54:40 +02:00
Surya Paolo
85db3b4a61 - Ricerca delle Organizzazioni, per inviare i RIS. 2025-07-21 22:49:49 +02:00
Surya Paolo
31161b6a32 - entra in Circuito Italia subito, senza aspettare conferma... 2025-07-21 19:44:24 +02:00
Surya Paolo
6779b0ea25 - Poter impostare per ogni Provincia un Circuito RIS specifico, anziché quello provinciale:
Esempio: Napoli: (Circuito RIS Campania) e Sud Sardegna: Cagliari.
2025-07-21 19:08:37 +02:00
Surya Paolo
f12341f780 - Aggiunta possibilità di disattivare i link alle immagini dei libri. (opzione sul catalogo: disattiva_link_immagini) 2025-07-18 10:43:08 +02:00
Surya Paolo
43938023ee - Aggiunta della copertina iniziale nelle raccolte (Catalogo Generale).
- Corretto altezza delle immagini che erano stretchate.
- Fix: poter spostare l'ordinamento dei libri corretto.
2025-07-15 17:46:30 +02:00
Surya Paolo
969e7b726e - corretto import XLS... 2025-07-11 15:03:06 +02:00
Surya Paolo
d37797fdad - Import di un file XLS contenente una lista di libri, all'interno di un catalogo. 2025-07-11 12:55:24 +02:00
Surya Paolo
2ce8a72286 . esportazione lista catalogo direttamente in EXCEL, e scelta dei campi. 2025-07-10 00:43:28 +02:00
Surya Paolo
be0d7efca2 -statistiche OK 2025-07-08 18:01:17 +02:00
Surya Paolo
68dac1b2f4 aa 2025-07-08 17:42:46 +02:00
Surya Paolo
40ec5465b2 - Aggiunto le Statistiche di visualizzazione delle pagine.
- Aggiunto il componente per visualizzare le statistiche
2025-07-08 16:19:12 +02:00
Surya Paolo
7f5ff3da64 - Non funziona l'ammetti il nuovo registrato, sulla App.
- All'interno di una Organizzazione, mostrare se non si è ancora entrati in un Circuito, mettere bottone per Entrare.
2025-07-08 10:24:58 +02:00
Surya Paolo
ee5ac4e554 - aggiornato la versione STAMPA, che non funzionava 2025-07-07 09:37:48 +02:00
Surya Paolo
e7ead2e66a - Raccolte Cataloghi corretto e migliorato.
- Bottoni "Apri" e "PDF".
2025-07-06 23:12:56 +02:00
Surya Paolo
9e95fe622b - Sistemato i Referenti (e non Editori), quando crei un nuovo Catalogo ti imposta la proprietà a te, ma chiunque Collaboratore potrebbe cmq modificartelo. 2025-07-01 12:59:39 +02:00
Surya Paolo
4b65400d50 - inserito il componente per scegliere il colore e la trasparenza, dello sfondo della pagina introduttiva
- corretto i margini del testo e la dimensione del font.
2025-06-29 18:33:20 +02:00
Surya Paolo
99fab39c4b - aggiunto filtro nella lista producttable
- ora compare il bottone aggiungi alla lista solo se non è presente.
2025-06-25 17:48:21 +02:00
Surya Paolo
bfc6ec04f6 - corretto il titolo che lo prendo dall'estrazione del sito... JSON. 2025-06-23 20:45:40 +02:00
Surya Paolo
1298184b2e - Corretta query di estrapolazione libri su GM (Marco)
- aggiornato bestseller su fatlast1Y
- non mostrare piu i libri che non hanno l'immagine (sul catalogo).
- metti online i compressi
2025-06-16 19:36:48 +02:00
Surya Paolo
f146b36173 - Sistemato link pdf che ogni volta che si aggiorna prendeva il PDF dalla cache...
- Raccolta Cataloghi, procedura che li AUTO genera in automatico.
2025-06-13 17:45:57 +02:00
Surya Paolo
286cc4e3a7 - Creazione di un Nuovo Catalogo (e la sua relativa pagina), a partire da un modello ed un catalogo esistente.
- Aggiunta dei bottoni sul Ccatalogocard
2025-06-12 23:49:13 +02:00
Surya Paolo
2dac04fb16 - aggiornato carrello e bottoni sul catalogo 2025-06-12 10:08:07 +02:00
Surya Paolo
d99ad47483 - corretto la gestione degli Sconti
- Duplicare un Catalogo
2025-06-11 01:05:20 +02:00
Surya Paolo
56d1870bc1 - Esporta Lista Carrello (Totale)
- Sconto Applicato
2025-06-09 09:48:34 +02:00
Surya Paolo
664975b1fd - Aggiunto bottone Aggiungi al Carrello sulla lista dei libri dei cataloghi 2025-06-06 00:07:47 +02:00
Surya Paolo
06fe6eb861 - sistemato "Pare che selezionando una condizione, non sempre viene aggiornato il record !"
- Aggiunto filtro "Escludi Editoriale"
2025-06-04 15:46:29 +02:00
Surya Paolo
12f816b738 - Corretto la possibilità di effettuare un Ordine di libri, sul sito gruppomacro.app. arriverà una email a "info@gruppomacro.app". 2025-06-03 01:01:40 +02:00
Surya Paolo
94d844c104 - generazione della raccolta PDF OK !!! 2025-05-30 16:44:55 +02:00
Surya Paolo
72d5574fab - aggiornato la visualoizzazione per scaricare il PDF e per aprirlo 2025-05-30 10:49:25 +02:00
Surya Paolo
5ba3bef8a1 - anche la versione file compressa del PDF ora è ok. 2025-05-29 19:19:35 +02:00
Surya Paolo
67aaf719f4 - generazione del PDF riscritto totalmente
- ora è possibile generarlo anche da backend
- FIX: corretto la qualità del PDF e la dimensione non esatta in pixel...
2025-05-29 18:23:02 +02:00
Surya Paolo
884afe4eb5 - versione 1.2.50 2025-05-23 19:02:45 +02:00
Surya Paolo
3d2d1cbdd7 - Finalmente risolto il calcolo e l'impaginazione del PDF, per WEb e per Stampa (300 dpi) !
- corretto altre cose sulla lista cataloghi.
2025-05-23 16:31:04 +02:00
Surya Paolo
e0583044d7 - corretto footer catalogo
- corretti il path delle immagini (quando hanno lo spazio nel nomefile).
- aggiunto colore di sfondo per il testo descrittivo, in trasparenza
2025-05-21 12:06:09 +02:00
Surya Paolo
fea40922cb - Per generare la sinossi è possibile estrarre con 1 click la descrizione sia da Amazon che da GruppoMacro.
- corretto piccolo bug sul catalogo.
2025-05-20 12:21:31 +02:00
Surya Paolo
8ff204657e - Estrazione dei dati da Amazon
- Ciclo di Estrapolazione di tutti i prodotti ed aggiornamento dei campi scraped e scraped_updated
- Creazione file CSV con i campi modificati.
2025-05-19 17:33:18 +02:00
Surya Paolo
859ba022fa - estrazione dei dati del libro sul sito di Amazon.
- possibilità di visualizzare i dati estratti e di aggiornare i dati, sia solo se vuoti, che sovrascrivere tutti i dati.
2025-05-16 18:52:12 +02:00
Surya Paolo
810815a12a - ver 1.2.47 :
- corretto errore di modifica scheda
- aggiunto scraping (fase 1)
2025-05-16 10:26:29 +02:00
Surya Paolo
b7ecd60fc3 fix altro 2025-05-15 22:37:39 +02:00
Surya Paolo
daeb865e93 corretto altre cose (workbox mancante) 2025-05-15 21:41:25 +02:00
Surya Paolo
685bc34bd0 - ho migliorato la grafica della generazione del PDF e PDF Stampa. 2025-05-15 19:18:50 +02:00
Surya Paolo
9e0634da05 - ottimizzato il caricamento del sito
- ottimizzato il caricamento del catalogo.
2025-05-15 18:22:37 +02:00
Surya Paolo
50015712f5 - sistemato timeout corto
- corretto errori sulla generazione del PDF
- corretto alcune directory
- corretto fs.promise
- corretto CORS !
2025-05-15 14:27:40 +02:00
Surya Paolo
300b8434ef - il catalogo si aggiorna in base alle impostazioni del template anche per la "Stampa" 2025-05-14 20:18:04 +02:00
Surya Paolo
f30cbf072a - Assegnazione di linkIdTemplate anche per la "Pagina di Default", in modo che posso da "Templates" cambiare le impostazioni. 2025-05-14 17:04:18 +02:00
Surya Paolo
fc8a954eb0 - Generazione della Raccolta dei Cataloghi (web e Stampa), e creazione del PDF Online.
- Lista Raccolta Cataloghi, aggiungi/togli catalogo.
2025-05-14 15:02:14 +02:00
Surya Paolo
85faf11d27 - Creazione PDF Temporanei (Generati)
- Assegnazione di questi su PDF OnLine e PDF per Stampa
2025-05-12 18:43:25 +02:00
Surya Paolo
89bbda59b3 - Creazione PDF Temporanei (Generati)
- Assegnazione di questi su PDF OnLine e PDF per Stampa
2025-05-12 18:43:06 +02:00
Surya Paolo
ef48d7e741 - Generazione PDF e per Stampa 2025-05-12 16:33:58 +02:00
Surya Paolo
6ed648f8b3 Creazione Nutriben-natoropatia.it 2025-05-11 21:59:16 +02:00
Surya Paolo
f9d73ae836 - Export Lista
- Ordinamento
- PDF Risolto Salvataggio ed invio al server direttamente.
2025-05-08 23:32:13 +02:00
Surya Paolo
ef36cd5e11 - aggiornamento lista catalogo, ordinamento tabelle 2025-05-08 11:06:01 +02:00
Surya Paolo
82e10ef6cf - Cron Completato 2025-05-08 00:53:27 +02:00
Surya Paolo
6eb6f236e4 - Aggiunta della funzione Cron
- Flag: Pubblicati OnLine + Solo CagalogoGenerale + Dettagli
2025-05-07 21:58:05 +02:00
Surya Paolo
2cc8fcda03 - lista cataloghi: stato "active" (Pubblicati OnLine) 2025-05-07 00:13:51 +02:00
Surya Paolo
57cfa5858b - newsletter: prende la lista utenti (flag news_on)
- Abilita a Tutti la Newsletter news_on
- isCommerciale
- JobsInProgress
- PCB: Corretto Totali che era a zero
2025-05-06 18:19:03 +02:00
Surya Paolo
70f1e5cbf1 - Aggiungere un campo "Vagliato dall'Editore" e aggiungere anche il campo "chi" e delle Note 2025-05-02 19:11:29 +02:00
Surya Paolo
8a20186e59 - ordinamento aggiornare la pagina "templates" per Fatturati ultimo anno
- bestseller
2025-05-02 10:10:04 +02:00
Surya Paolo
721d2ac38c - corretto scheda prodotto, record salvato 2025-05-01 00:20:02 +02:00
Surya Paolo
358f0d6816 - miglioramenti ricerca titoli e modifica del trafiletto
- miglior visualizzazione delle liste
2025-04-30 13:27:47 +02:00
Surya Paolo
493ebf51f3 - aggiornato scheda e rigenera lista
- corretto filtro sulla Collana
2025-04-29 02:30:00 +02:00
Surya Paolo
ec19bc3b87 - Altri aggiornamenti della scheda 2025-04-24 19:31:34 +02:00
Surya Paolo
8d6c53803e - scheda prodotto migliorata
- aggiornamento filtri
2025-04-24 01:03:20 +02:00
Surya Paolo
fc015404a6 - ordinamento tabella titoli
- migliorata la lista degli argomenti
2025-04-23 01:59:39 +02:00
Surya Paolo
ae4efab0f3 aggiornamento cataloghi, search 2025-04-22 18:30:42 +02:00
Surya Paolo
6d0efaadb9 - aggiornamento cataloghi.
possibilità di estrapolare i dati da GM direttamente
- migrazione delle tabelle di GM in locale
- corretto l'ordinamento del Catalogo
2025-04-18 13:23:52 +02:00
Surya Paolo
14375d6b15 - Aggiornamento dal DB di GM al DB Locale 2025-04-16 23:28:21 +02:00
Surya Paolo
383e0bb484 aaaaa 2025-04-11 18:51:33 +02:00
Surya Paolo
3616e2ca0f Aggiornamento cataloghi... 2025-04-11 18:49:42 +02:00
Surya Paolo
cea3bcfa0e Aggiornamento cataloghi... 2025-04-11 18:47:34 +02:00
Surya Paolo
9cfc308d09 - aggiornamento catalogo: lista titoli del catalogo
- scheda prodotto libro
- migliorata tabella prodotto
2025-04-04 18:15:14 +02:00
Surya Paolo
79d1c5fe1d - generato lista libri, con possibilità di cambiare l'ordinamento dei libri o di cancellare libri. 2025-04-01 18:36:45 +02:00
Surya Paolo
61c1dc3d0d - Ricerca Titolo per nome o autore o ISBN o codice articolo 2025-03-31 23:55:53 +02:00
Surya Paolo
7624f16723 - sendcoins
- font
- catalogo
2025-03-26 23:23:35 +01:00
Surya Paolo
285db5f995 - funzione per poter registrare le persone con l'username della persona che clicca su "Invita un Amico" comparirà per 8 ore. 2025-03-24 12:27:59 +01:00
Surya Paolo
2ba26f67cd fix: non riuscivi ad acquistare i RIS al gruppo
- lista linkREG
2025-03-23 22:53:53 +01:00
Surya Paolo
4c82015f27 aggiornamenti vari... 2025-03-21 19:51:55 +01:00
Surya Paolo
a09a49ac37 - corretto la registrazione 2025-03-15 15:35:24 +01:00
Surya Paolo
e9f37b3678 - fix: refresh token, codice di errore ... 2025-03-15 15:04:18 +01:00
Surya Paolo
201b739c8c - fix: refresh token, codice di errore ... 2025-03-15 14:52:25 +01:00
Surya Paolo
dfce2bc5eb - corretto che compare errore server mentre il token è scaduto 2025-03-14 20:21:32 +01:00
Surya Paolo
564a621aad - fix: authenticate_withUser mancava su alcuni...
- fix: '/signin' non riproponeva il login nel caso il token fosse invalido
2025-03-14 12:52:38 +01:00
Surya Paolo
d190d4800e - fix: nModified è stato sostituito con modifiedCount
- .ok con .acknowledged
- coretto la chiamata per il REFRESH TOKEN !
2025-03-14 10:55:30 +01:00
Surya Paolo
0f8721b144 - fix: ris da inviare al gruppo (nuovamente) e immagini rimaste ancora "images/" anzichè "/images/". 2025-03-13 18:58:17 +01:00
Surya Paolo
f5b0e693d0 - fix: sistemato pagina gruppo che non si visualizzava (errore per modifica)
- fix: corretto il "Invia RIS" al gruppo.
2025-03-13 18:19:35 +01:00
Surya Paolo
f187fb2146 - fatta ottimizzazione della funzione addExtraInfo, chiamando parallelamente tutte le promise... 2025-03-13 12:48:17 +01:00
Surya Paolo
404194b873 - risolto problema della non attesa della PWA durante la chiamata a Node.js.
- risolto problema dell'ambiente in Locale HTTPS certificato installato aggiornato.
2025-03-13 12:05:10 +01:00
Surya Paolo
09d738f4e9 - ver 1.2.14 2025-03-12 22:43:47 +01:00
Surya Paolo
834203ffbb versione 1.2.14 :
- aggiornati i file di configurazione, ENV e script non funzionanti., package.
- corretto custom-service-worker.js con CORS
- ottimizzato il server, la chiamata Load iniziale (senza promise, con async/await).
2025-03-12 21:02:51 +01:00
Surya Paolo
cc541b1e6f - corretta configurazione
- fix problemi al database su piuchebuono una chiamata dava errore...
const c = ....
if (mycart && mycart.length > 0) {
2025-03-10 19:58:57 +01:00
1416 changed files with 423920 additions and 43397 deletions

4
.env
View File

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

View File

@@ -1,13 +1,14 @@
VITE_MONGODB_HOST="https://localhost:3000"
VITE_PUBLICKEY_PUSH='BDncvMiUZmjaCG2Kr1V9N0_33hOG-AuNSbHSvL24y2dzBiUjAxKm02emx5SeJvz2IGmtRf6YqCgopeQwCwUmZw8'
VITE_PROJECT_ID_MAIN="5cc0a13fe5c9d156728f400a"
VITE_VUE_APP_ISTEST="1"
VITE_VUE_APP_INLOCALE="1"
VITE_DEBUG="1"
VITE_APP_ID="13"
VITE_LOGO_REG='riso-logo-full.png'
VITE_APP_URL="https://localhost"
DIRECTORY_LOCAL=myprojplanet_vite
DIRECTORY_SERVER=freeplanet_serverside
VITE_MONGODB_HOST="https://localhost:3000"
DEBUG_VITE_APP_URL="https://192.168.8.182"
DEBUG_VITE_MONGODB_HOST="https://192.168.8.182:3000"
VITE_LOGO_REG='riso-logo-full.png'
VITE_PUBLICKEY_PUSH='BDncvMiUZmjaCG2Kr1V9N0_33hOG-AuNSbHSvL24y2dzBiUjAxKm02emx5SeJvz2IGmtRf6YqCgopeQwCwUmZw8'
VITE_DEBUG="1"
VITE_VUE_APP_ISTEST=0
VITE_VUE_APP_INLOCALE=1
DIRECTORY_LOCAL="myprojplanet_vite"
DIRECTORY_SERVER="freeplanet_serverside"
SERVERDIR_WEBSITE=""
SERVERPW_WEBSITE=""
SERVERPW_WEBSITE=""

View File

@@ -3,9 +3,11 @@ VITE_APP_URL="https://gruppomacro.app"
VITE_MONGODB_HOST="https://api.gruppomacro.app"
VITE_LOGO_REG='gruppomacro-logo-full.png'
VITE_PUBLICKEY_PUSH="BJgo8XR_upbnbMLWgCAUELo6DK7dRXffYAnFOxbaMMz5favBgcQBKT-eISqouO-jRad4Sw8l5nd2wCF6KorGiTc"
VITE_DEBUG="1"
VITE_DEBUG="0"
VITE_VUE_APP_ISTEST="0"
DIRECTORY_LOCAL=newfreeplanet
DIRECTORY_SERVER=/var/www/freeplanet_serverside
DIRECTORY_LOCAL="myprojplanet_vite"
DIRECTORY_SERVER="/var/www/nodejs_piuchebuono_server"
SERVERDIR_WEBSITE="/var/www/gruppomacro.app"
SERVERPW_WEBSITE=pwdadmin@1AOK
SERVERPW_WEBSITE="pwdadmin@1AOK"
PORT_SPA="8089"
PORT_PWA="8099"

View File

@@ -1,11 +1,11 @@
VITE_APP_ID="13"
VITE_APP_URL="https://test.riso.app"
VITE_MONGODB_HOST="https://testapi.riso.app"
VITE_APP_URL="https://riso.app"
VITE_MONGODB_HOST="https://api.riso.app"
VITE_LOGO_REG='riso-logo-full.png'
VITE_PUBLICKEY_PUSH="BGXRf1TgcqocqD6J7qnRgCG7AvM2lxAoW7peb7UEzB4SxBb6DxGRdJ0UvD9ewnrB9KrSrh0-aDCODXBm7sZ1DDs"
VITE_DEBUG="1"
VITE_VUE_APP_ISTEST=1
VITE_DEBUG="0"
VITE_VUE_APP_ISTEST="0"
DIRECTORY_LOCAL=myprojplanet_vite
DIRECTORY_SERVER=/var/www/nodejs_test.riso_server
SERVERDIR_WEBSITE="/var/www/test.riso.app"
DIRECTORY_SERVER=/var/www/nodejs_riso_server
SERVERDIR_WEBSITE="/var/www/riso.app"
SERVERPW_WEBSITE="pwdadmin@1AOK"

View File

@@ -1,11 +1,11 @@
VITE_APP_ID="18"
VITE_APP_URL="https://test.gruppomacro.app"
VITE_MONGODB_HOST="https://testapi.gruppomacro.app"
VITE_LOGO_REG='gruppomacro-logo-full.png'
VITE_LOGO_REG="gruppomacro-logo-full.png"
VITE_PUBLICKEY_PUSH="BJgo8XR_upbnbMLWgCAUELo6DK7dRXffYAnFOxbaMMz5favBgcQBKT-eISqouO-jRad4Sw8l5nd2wCF6KorGiTc"
VITE_DEBUG="1"
VITE_VUE_APP_ISTEST=1
DIRECTORY_LOCAL=myprojplanet_vite
DIRECTORY_SERVER=/var/www/nodejs_test.piuchebuono_server
VITE_VUE_APP_ISTEST="1"
DIRECTORY_LOCAL="myprojplanet_vite"
DIRECTORY_SERVER="/var/www/nodejs_test.piuchebuono_server"
SERVERDIR_WEBSITE="/var/www/test.gruppomacro.app"
SERVERPW_WEBSITE="pwdadmin@1AOK"

View File

@@ -5,7 +5,7 @@ VITE_LOGO_REG="piuchebuono-logo-full.png"
VITE_PUBLICKEY_PUSH="BJgo8XR_upbnbMLWgCAUELo6DK7dRXffYAnFOxbaMMz5favBgcQBKT-eISqouO-jRad4Sw8l5nd2wCF6KorGiTc"
VITE_DEBUG="1"
VITE_VUE_APP_ISTEST="1"
DIRECTORY_LOCAL="newfreeplanet"
DIRECTORY_LOCAL="myprojplanet_vite"
DIRECTORY_SERVER="/var/www/nodejs_test.piuchebuono_server"
SERVERDIR_WEBSITE="/var/www/test.piuchebuono.app"
SERVERPW_WEBSITE="pwdadmin@1AOK"

View File

@@ -1,11 +1,11 @@
VITE_APP_ID="13"
VITE_APP_URL="https://test.riso.app"
VITE_MONGODB_HOST="https://testapi.riso.app"
VITE_LOGO_REG='riso-logo-full.png'
VITE_LOGO_REG="riso-logo-full.png"
VITE_PUBLICKEY_PUSH="BGXRf1TgcqocqD6J7qnRgCG7AvM2lxAoW7peb7UEzB4SxBb6DxGRdJ0UvD9ewnrB9KrSrh0-aDCODXBm7sZ1DDs"
VITE_DEBUG="1"
VITE_VUE_APP_ISTEST=1
DIRECTORY_LOCAL=myprojplanet_vite
DIRECTORY_SERVER=/var/www/nodejs_test.riso_server
VITE_VUE_APP_ISTEST="1"
DIRECTORY_LOCAL="myprojplanet_vite"
DIRECTORY_SERVER="/var/www/nodejs_test.riso_server"
SERVERDIR_WEBSITE="/var/www/test.riso.app"
SERVERPW_WEBSITE="pwdadmin@1AOK"

View File

@@ -122,7 +122,7 @@ export default {
'@typescript-eslint/no-unsafe-argument': 'off',
// allow debugger during development only
'no-debugger': import.meta.env.NODE_ENV === 'production' ? 'error' : 'off',
'no-debugger': process.env.NODE_ENV === 'production' ? 'error' : 'off',
'max-classes-per-file': 'off',
'no-useless-constructor': 'off',

6
.gitignore vendored
View File

@@ -30,7 +30,11 @@ yarn-error.log
/.scripts
key.pem
public/upload/
upload/
/upload/
scripts/_ALL_SITES/gruppomacro.app/public/upload/
._yarn.lock
.gitignore
._upload
scripts/localhost.pem
scripts/localhost-key.pem
scripts/_ALL_SITES/gruppomacro.app/products/

10
.prettierrc Normal file
View File

@@ -0,0 +1,10 @@
{
"singleAttributePerLine": true,
"printWidth": 90,
"tabWidth": 2,
"useTabs": false,
"singleQuote": true,
"trailingComma": "es5",
"bracketSpacing": true,
"arrowParens": "always"
}

21
.vscode/launch.json vendored
View File

@@ -4,13 +4,6 @@
// Per altre informazioni, visitare: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"command": "npm run dev_noCheck",
"name": "DEV (no-check-TS)",
"request": "launch",
"type": "node-terminal",
"sourceMaps": false,
},
{
"command": "npm run dev",
"name": "DEV",
@@ -24,13 +17,6 @@
"type": "node-terminal",
"sourceMaps": false,
},
{
"command": "npm run lint",
"name": "Lint (Check ERRORI)",
"request": "launch",
"type": "node-terminal",
"sourceMaps": false
},
{
"command": "npm run pwa",
"name": "PWA",
@@ -40,6 +26,13 @@
"NODE_ENV": "development"
}
},
{
"command": "npm run lint",
"name": "Lint (Check ERRORI)",
"request": "launch",
"type": "node-terminal",
"sourceMaps": false
},
{
"type": "chrome",
"request": "launch",

10
.vscode/settings.json vendored
View File

@@ -1,7 +1,7 @@
{
"editor.bracketPairColorization.enabled": true,
"editor.guides.bracketPairs": true,
"editor.formatOnSave": true,
"editor.formatOnSave": false,
"editor.defaultFormatter": "esbenp.prettier-vscode",
"editor.codeActionsOnSave": [],
"eslint.validate": [
@@ -10,5 +10,11 @@
"typescript",
"vue"
],
"typescript.tsdk": "node_modules/typescript/lib"
"typescript.tsdk": "node_modules/typescript/lib",
"[vue]": {
"editor.defaultFormatter": "esbenp.prettier-vscode"
},
"[typescript]": {
"editor.defaultFormatter": "esbenp.prettier-vscode"
}
}

BIN
1_module copia.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 536 KiB

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,234 @@
SELECT T.*
,i.DescrizioneTipologia
,f.DescrizioneStatoProdotto
,n.DescrizioneFormato
,y.DescrizioneCollana
,z.AutoriCompleti
,i2.DescrArgomento
,z3.CasaEditrice
,q.QtaDisponibile
FROM
T_WEB_Articoli T
WITH (noLock)
RIGHT JOIN
( SELECT IdArticolo,
MAX(DataOra) AS data
FROM
T_WEB_Articoli
GROUP BY
IdArticolo ) b
ON
T.IdArticolo = b.IdArticolo
AND T.DataOra = b.data
RIGHT JOIN
( SELECT
e.IdStatoProdotto,
e.Descrizione as DescrizioneStatoProdotto
FROM
T_WEB_StatiProdotto e
JOIN
(
SELECT
IdStatoProdotto,
MAX(DataOra) as data1
FROM
T_WEB_StatiProdotto
GROUP BY
IdStatoProdotto ) c
ON
e.IdStatoProdotto = c.IdStatoProdotto
AND e.DataOra = c.data1 ) f
ON
T.IdStatoProdotto = f.IdStatoProdotto
RIGHT JOIN
(
SELECT
g.IdTipologia,
g.Descrizione as DescrizioneTipologia
FROM
T_WEB_Tipologie g
JOIN
(
SELECT
IdTipologia,
MAX(DataOra) as data1
FROM
T_WEB_Tipologie
GROUP BY
IdTipologia ) h
ON
g.IdTipologia = h.IdTipologia
AND g.DataOra = h.data1 ) i
ON
T.IdTipologia = i.IdTipologia
RIGHT JOIN
(
SELECT
l.IdTipoFormato,
l.Descrizione as DescrizioneFormato
FROM
T_WEB_TipiFormato l
JOIN
(
SELECT
IdTipoFormato,
MAX(DataOra) as data1
FROM
T_WEB_TipiFormato
GROUP BY
IdTipoFormato ) m
ON
l.IdTipoFormato = m.IdTipoFormato
AND l.DataOra = m.data1 ) n
ON
T.IdTipoFormato = n.IdTipoFormato
RIGHT JOIN
(
SELECT
v.IdCollana,
v.Descrizione as DescrizioneCollana
FROM
T_WEB_Collane v
INNER JOIN
(
SELECT
IdCollana,
MAX(ID) as MaxID
FROM
T_WEB_Collane
GROUP BY
IdCollana ) x
ON
v.IdCollana = x.IdCollana
AND v.ID = x.MaxID ) y
ON
T.IdCollana = y.IdCollana
RIGHT JOIN
(
SELECT
g2.IdArgomento,
g2.Descrizione as DescrArgomento
FROM
T_WEB_Argomenti g2
INNER JOIN
(
SELECT
IdArgomento,
MAX(DataOra) as data12
FROM
T_WEB_Argomenti
GROUP BY
IdArgomento ) h
ON
g2.IdArgomento = h.IdArgomento
AND g2.DataOra = h.data12 ) i2
ON
T.ListaArgomenti = i2.IdArgomento
RIGHT JOIN ( SELECT
o.Codice,
o.QtaDisponibile
FROM
T_WEB_Disponibile o
JOIN
(
SELECT
Codice,
MAX(DataOra) as data1
FROM
T_WEB_Disponibile
GROUP BY
Codice ) p
ON
o.Codice = p.Codice
AND o.DataOra = p.data1 ) q
ON
T.IdArticolo = q.Codice
RIGHT JOIN
(
SELECT
a3.IdMarchioEditoriale,
a3.Descrizione as CasaEditrice
FROM
T_WEB_MarchiEditoriali a3
JOIN
(
SELECT
IdMarchioEditoriale,
MAX(DataOra) as maxData
FROM
T_WEB_MarchiEditoriali
GROUP BY
IdMarchioEditoriale ) aa3
ON
a3.IdMarchioEditoriale = aa3.IdMarchioEditoriale
AND a3.DataOra = aa3.maxData ) z3
ON
T.IdMarchioEditoriale = z3.IdMarchioEditoriale
RIGHT JOIN
(
SELECT T1.IdArticolo, STUFF((
SELECT
',' + ISNULL(A2.AutoreCompleto, '')
FROM
(
SELECT
CAST('<root><x>' + REPLACE(T1.ListaAutori, ',', '</x><x>') + '</x></root>' AS XML) AS DataXML ) X
CROSS APPLY
X.DataXML.nodes('/root/x') AS A(x)
CROSS APPLY
(
SELECT
TRY_CAST(LTRIM(RTRIM(A.x.value('.', 'VARCHAR(100)'))) AS INT) AS AutoreID ) CA
LEFT JOIN
(
SELECT
a.IdAutore,
CONCAT(a.Nome, ' ', a.Cognome) AS AutoreCompleto
FROM
T_WEB_Autori a
RIGHT JOIN
(
SELECT
IdAutore,
MAX(DataOra) AS maxData
FROM
T_WEB_Autori
GROUP BY
IdAutore ) aa
ON
a.IdAutore = aa.IdAutore
AND a.DataOra = aa.maxData
) A2
ON
CA.AutoreID = A2.IdAutore FOR XML PATH(''),
TYPE ).value('.', 'NVARCHAR(MAX)') ,
1 ,
1 ,
'') AS AutoriCompleti
FROM T_WEB_Articoli T1
WHERE t1.DataOra = (select max(DataOra) AS DataOra from T_web_articoli As h WHERE h.IdArticolo = T1.IdArticolo)
GROUP BY T1.IdArticolo, T1.ListaAutori ) z ON T.IdArticolo = z.IdArticolo
WHERE
(
DescrizioneStatoProdotto = 'In commercio'
OR DescrizioneStatoProdotto = 'Prossima uscita/pubblicazione'
OR DescrizioneStatoProdotto = 'Prossima uscita'
OR DescrizioneStatoProdotto = 'In prevendita'
OR DescrizioneStatoProdotto = '2023 in commercio')
AND (
DescrizioneTipologia = 'Libri'
OR DescrizioneTipologia = 'Cartolibro'
OR DescrizioneTipologia = 'Carte')
AND (
Ean13 NOT LIKE 'USATO%')
ORDER BY T.IdArticolo DESC, Id DESC

1026
_LIMBO/aaa.scss Normal file

File diff suppressed because it is too large Load Diff

284201
_LIMBO/dati.js Normal file

File diff suppressed because it is too large Load Diff

467
_LIMBO/esempio.htm Normal file
View File

@@ -0,0 +1,467 @@
<!DOCTYPE html>
<html lang="it">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Carrello Prodotti - Design Moderno</title>
<link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css" rel="stylesheet">
<style>
* {
margin: 0;
padding: 0;
box-sizing: border-box;
}
body {
font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;
background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
min-height: 100vh;
padding: 20px;
}
.cart-container {
max-width: 800px;
margin: 0 auto;
background: rgba(255, 255, 255, 0.95);
backdrop-filter: blur(20px);
border-radius: 24px;
padding: 32px;
box-shadow: 0 25px 50px rgba(0, 0, 0, 0.15);
border: 1px solid rgba(255, 255, 255, 0.2);
}
.cart-header {
text-align: center;
margin-bottom: 40px;
}
.cart-title {
font-size: 2.5rem;
font-weight: 700;
background: linear-gradient(135deg, #667eea, #764ba2);
-webkit-background-clip: text;
-webkit-text-fill-color: transparent;
margin-bottom: 8px;
}
.cart-subtitle {
color: #6b7280;
font-size: 1.1rem;
}
.product-card {
background: #ffffff;
border-radius: 20px;
padding: 24px;
margin-bottom: 20px;
box-shadow: 0 8px 32px rgba(0, 0, 0, 0.1);
border: 1px solid rgba(0, 0, 0, 0.05);
transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
transform: translateY(0);
}
.product-card:hover {
transform: translateY(-4px);
box-shadow: 0 16px 40px rgba(0, 0, 0, 0.15);
}
.product-card.removing {
opacity: 0;
transform: translateX(100px);
transition: all 0.5s ease;
}
.product-content {
display: flex;
align-items: center;
gap: 20px;
}
.product-image {
width: 80px;
height: 80px;
border-radius: 16px;
background: linear-gradient(135deg, #f093fb 0%, #f5576c 100%);
display: flex;
align-items: center;
justify-content: center;
font-size: 2rem;
flex-shrink: 0;
}
.product-info {
flex: 1;
}
.product-name {
font-size: 1.3rem;
font-weight: 600;
color: #1f2937;
margin-bottom: 4px;
}
.product-price {
font-size: 1.1rem;
color: #6b7280;
margin-bottom: 8px;
}
.product-total {
font-size: 1.2rem;
font-weight: 700;
color: #059669;
}
.quantity-controls {
display: flex;
align-items: center;
gap: 16px;
margin-top: 16px;
}
.quantity-btn {
width: 48px;
height: 48px;
border: none;
border-radius: 12px;
background: linear-gradient(135deg, #667eea, #764ba2);
color: white;
font-size: 1.2rem;
cursor: pointer;
transition: all 0.3s ease;
display: flex;
align-items: center;
justify-content: center;
box-shadow: 0 4px 12px rgba(102, 126, 234, 0.3);
}
.quantity-btn:hover:not(:disabled) {
transform: translateY(-2px);
box-shadow: 0 8px 20px rgba(102, 126, 234, 0.4);
}
.quantity-btn:active {
transform: translateY(0);
}
.quantity-btn:disabled {
opacity: 0.5;
cursor: not-allowed;
transform: none;
}
.quantity-display {
min-width: 60px;
text-align: center;
font-size: 1.4rem;
font-weight: 600;
color: #1f2937;
background: #f8fafc;
border-radius: 12px;
padding: 12px 16px;
border: 2px solid #e2e8f0;
transition: all 0.3s ease;
}
.quantity-display.updating {
transform: scale(1.1);
border-color: #667eea;
background: #eff6ff;
}
.remove-btn {
background: linear-gradient(135deg, #ef4444, #dc2626);
color: white;
border: none;
border-radius: 12px;
padding: 12px 20px;
font-size: 0.9rem;
font-weight: 500;
cursor: pointer;
transition: all 0.3s ease;
margin-left: auto;
}
.remove-btn:hover {
transform: translateY(-2px);
box-shadow: 0 8px 20px rgba(239, 68, 68, 0.3);
}
.cart-summary {
background: linear-gradient(135deg, #667eea, #764ba2);
color: white;
border-radius: 20px;
padding: 24px;
margin-top: 32px;
text-align: center;
opacity: 1;
transition: all 0.3s ease;
}
.cart-summary.hidden {
opacity: 0;
transform: translateY(20px);
}
.total-amount {
font-size: 2rem;
font-weight: 700;
margin-bottom: 8px;
}
.total-items {
opacity: 0.9;
margin-bottom: 20px;
}
.checkout-btn {
background: rgba(255, 255, 255, 0.2);
border: 2px solid rgba(255, 255, 255, 0.3);
color: white;
padding: 16px 32px;
border-radius: 12px;
font-size: 1.1rem;
font-weight: 600;
cursor: pointer;
transition: all 0.3s ease;
backdrop-filter: blur(10px);
}
.checkout-btn:hover {
background: rgba(255, 255, 255, 0.3);
transform: translateY(-2px);
}
.empty-cart {
text-align: center;
padding: 60px 20px;
color: #6b7280;
opacity: 0;
transition: opacity 0.5s ease;
}
.empty-cart.show {
opacity: 1;
}
.empty-cart i {
font-size: 4rem;
margin-bottom: 20px;
opacity: 0.5;
}
@keyframes pulse {
0%, 100% { transform: scale(1); }
50% { transform: scale(1.05); }
}
.pulse {
animation: pulse 0.3s ease-in-out;
}
@keyframes fadeInUp {
from {
opacity: 0;
transform: translateY(30px);
}
to {
opacity: 1;
transform: translateY(0);
}
}
.fade-in {
animation: fadeInUp 0.5s ease forwards;
}
@media (max-width: 768px) {
.product-content {
flex-direction: column;
text-align: center;
}
.quantity-controls {
justify-content: center;
}
.remove-btn {
margin: 16px auto 0;
}
}
</style>
</head>
<body>
<div class="cart-container">
<div class="cart-header">
<h1 class="cart-title">
<i class="fas fa-shopping-cart"></i>
Il Tuo Carrello
</h1>
<p class="cart-subtitle">Gestisci i tuoi prodotti preferiti</p>
</div>
<div id="empty-cart" class="empty-cart">
<i class="fas fa-shopping-bag"></i>
<h3>Il tuo carrello è vuoto</h3>
<p>Aggiungi alcuni prodotti per iniziare!</p>
</div>
<div id="cart-items"></div>
<div id="cart-summary" class="cart-summary">
<div class="total-amount" id="total-amount">€0.00</div>
<p class="total-items" id="total-items">0 articoli nel carrello</p>
<button class="checkout-btn" onclick="checkout()">
<i class="fas fa-credit-card"></i>
Procedi al Checkout
</button>
</div>
</div>
<script>
// Dati del carrello
let cartItems = [
{ id: 1, name: 'iPhone 15 Pro', price: 1199.99, quantity: 1, emoji: '📱' },
{ id: 2, name: 'MacBook Air M3', price: 1299.99, quantity: 2, emoji: '💻' },
{ id: 3, name: 'AirPods Pro', price: 279.99, quantity: 1, emoji: '🎧' },
{ id: 4, name: 'Apple Watch', price: 399.99, quantity: 1, emoji: '⌚' }
];
// Elementi DOM
const cartItemsContainer = document.getElementById('cart-items');
const emptyCartDiv = document.getElementById('empty-cart');
const cartSummaryDiv = document.getElementById('cart-summary');
const totalAmountSpan = document.getElementById('total-amount');
const totalItemsSpan = document.getElementById('total-items');
// Funzioni di calcolo
function calculateTotal() {
return cartItems.reduce((total, item) => total + (item.price * item.quantity), 0);
}
function calculateTotalItems() {
return cartItems.reduce((total, item) => total + item.quantity, 0);
}
// Funzione per creare HTML di un prodotto
function createProductHTML(item) {
return `
<div class="product-card fade-in" data-id="${item.id}">
<div class="product-content">
<div class="product-image">
${item.emoji}
</div>
<div class="product-info">
<h3 class="product-name">${item.name}</h3>
<p class="product-price">€${item.price.toFixed(2)} / unità</p>
<p class="product-total">Totale: €${(item.price * item.quantity).toFixed(2)}</p>
<div class="quantity-controls">
<button
class="quantity-btn"
onclick="decreaseQuantity(${item.id})"
${item.quantity <= 1 ? 'disabled' : ''}
>
<i class="fas fa-minus"></i>
</button>
<div class="quantity-display" id="qty-${item.id}">
${item.quantity}
</div>
<button
class="quantity-btn"
onclick="increaseQuantity(${item.id})"
>
<i class="fas fa-plus"></i>
</button>
</div>
</div>
<button
class="remove-btn"
onclick="removeItem(${item.id})"
>
<i class="fas fa-trash"></i>
Rimuovi
</button>
</div>
</div>
`;
}
// Funzione per aggiornare l'interfaccia
function updateUI() {
// Aggiorna contenuto carrello
if (cartItems.length === 0) {
cartItemsContainer.innerHTML = '';
emptyCartDiv.classList.add('show');
cartSummaryDiv.classList.add('hidden');
} else {
emptyCartDiv.classList.remove('show');
cartSummaryDiv.classList.remove('hidden');
cartItemsContainer.innerHTML = cartItems.map(createProductHTML).join('');
}
// Aggiorna totali
const total = calculateTotal();
const totalItems = calculateTotalItems();
totalAmountSpan.textContent = `${total.toFixed(2)}`;
totalItemsSpan.textContent = `${totalItems} ${totalItems === 1 ? 'articolo' : 'articoli'} nel carrello`;
}
// Funzioni per gestire quantità
function increaseQuantity(itemId) {
const item = cartItems.find(item => item.id === itemId);
if (item) {
item.quantity++;
// Animazione feedback
const qtyDisplay = document.getElementById(`qty-${itemId}`);
qtyDisplay.classList.add('updating');
setTimeout(() => qtyDisplay.classList.remove('updating'), 300);
updateUI();
}
}
function decreaseQuantity(itemId) {
const item = cartItems.find(item => item.id === itemId);
if (item && item.quantity > 1) {
item.quantity--;
// Animazione feedback
const qtyDisplay = document.getElementById(`qty-${itemId}`);
qtyDisplay.classList.add('updating');
setTimeout(() => qtyDisplay.classList.remove('updating'), 300);
updateUI();
}
}
// Funzione per rimuovere prodotto
function removeItem(itemId) {
const productCard = document.querySelector(`[data-id="${itemId}"]`);
productCard.classList.add('removing');
setTimeout(() => {
cartItems = cartItems.filter(item => item.id !== itemId);
updateUI();
}, 500);
}
// Funzione checkout
function checkout() {
const total = calculateTotal();
const totalItems = calculateTotalItems();
alert(`Checkout per €${total.toFixed(2)} - ${totalItems} articoli`);
}
// Inizializza l'interfaccia
document.addEventListener('DOMContentLoaded', function() {
updateUI();
});
</script>
</body>
</html>

2969
_LIMBO/faq_ris.html Normal file

File diff suppressed because it is too large Load Diff

482
_LIMBO/prova.json Normal file
View File

@@ -0,0 +1,482 @@
{
"_id": "67c081c848070128c51a85f9",
"idCity": [
6846
],
"visibility": [
0
],
"photos": [],
"date_created": "2025-02-27T15:16:24.794Z",
"admins": [
{
"username": "EmanuelaBattiston",
"_id": "68e677e16e7cd5feeb0bb540",
"profile": {
"img": "file_1558.jpg"
}
},
{
"username": "Surya1977",
"_id": "68e677e16e7cd5feeb0bb541"
}
],
"date_updated": "2025-10-08T14:40:33.593Z",
"idCatGrp": [
34,
37,
18,
4,
8,
41
],
"note": "",
"groupname": "GruppoYurta",
"website": "",
"link_telegram": "",
"title": "Gruppo Yurta Bagnarola Pn",
"descr": "Gruppo Yurta ",
"mycircuits": [
{
"_id": "64ede1fb25cbe40cd4a5f156",
"idCity": [
5429
],
"visibility": [],
"compara_valuta": 1,
"compara_euro": 1,
"valuta_per_euro": 1,
"deleted": false,
"numMembers": 48,
"status": 3,
"idapp": "13",
"name": "Circuito RIS Pordenone",
"path": "rispordenone",
"strProv": "PN",
"photos": [],
"color": "#ff5500",
"deperimento": false,
"transactionsEnabled": true,
"symbol": "RIS",
"fido_scoperto_default": 100,
"qta_max_default": 200,
"fido_scoperto_default_grp": 200,
"qta_max_default_grp": 400,
"totTransato": 1239.67,
"totCircolante": 298.8,
"date_created": "2023-08-29T12:18:03.441Z",
"admins": [
{
"_id": "652daab56db4df3e408322f7",
"username": "vivy_BORGO_cohousing",
"date": "2023-10-16T21:27:17.466Z"
},
{
"_id": "6771a4d6e9c03f06f5a6c8d1",
"username": "Rita_Lila",
"date": "2024-12-29T19:36:54.054Z"
}
],
"req_users": [
{
"username": "elpapais",
"date": "2024-07-26T13:48:57.280Z"
},
{
"username": "Funnyface",
"date": "2025-07-09T03:54:40.132Z"
}
],
"refused_users": [],
"req_groups": [
{
"groupname": "GruppoYurta",
"date": "2025-03-02T17:40:09.375Z"
}
],
"refused_groups": [],
"__v": 0,
"date_updated": "2024-12-12T17:10:07.913Z",
"createdBy": "surya1977",
"link_group": "https://t.me/+xXhBrUdnAL5mMjQ0",
"regulation": "",
"account": {
"_id": "67c497f9da76b7d9485f947d",
"importo_iniziale": 0,
"saldo": -4,
"totTransato": 4,
"saldo_pend": -4,
"totTransato_pend": 4,
"deleted": false,
"idapp": "13",
"username": "",
"groupname": "GruppoYurta",
"contocom": "",
"circuitId": "64ede1fb25cbe40cd4a5f156",
"deperibile": false,
"fidoConcesso": 200,
"qta_maxConcessa": 400,
"numtransactions": 1,
"date_created": "2025-03-02T17:40:09.370Z",
"__v": 0,
"date_updated": "2025-04-16T21:37:20.921Z"
}
},
{
"_id": "6530e646e6173ad77d585a59",
"idCity": [
4647
],
"visibility": [],
"compara_valuta": 1,
"compara_euro": 1,
"valuta_per_euro": 1,
"deleted": false,
"numMembers": 642,
"status": 3,
"name": "Circuito RIS Italia",
"subname": "",
"photos": [
{
"imagefile": "italia.jpg",
"_id": "65f4a4fced899d0f453a446e"
}
],
"admins": [
{
"username": "surya1977",
"_id": "6530e6466db4df3e4084e559"
},
{
"username": "ElenaEspx",
"date": "2023-12-02T13:58:54.136Z",
"_id": "656b381e896ebebd4352fee5"
},
{
"username": "LorenzoVT",
"date": "2023-12-02T16:23:01.100Z",
"_id": "656b59e5896ebebd43537648"
},
{
"username": "sergiomazzanti",
"date": "2023-12-03T19:26:14.691Z",
"_id": "656cd656e5afbcdb03401577"
},
{
"username": "GaetanoSant",
"date": "2024-04-01T15:08:31.262Z",
"_id": "660acdef3d8585261113e378"
}
],
"color": "#ff5500",
"deperimento": false,
"transactionsEnabled": true,
"symbol": "RIS",
"fido_scoperto_default": 200,
"qta_max_default": 400,
"fido_scoperto_default_grp": 400,
"qta_max_default_grp": 800,
"totTransato": 3235.98,
"totCircolante": 1788.66,
"idapp": "13",
"path": "ris_italia",
"longdescr": "Questo è il Circuito RIS Italia Nazionale",
"strProv": "ITA",
"createdBy": "surya1977",
"date_updated": "2025-11-19T16:49:21.786Z",
"req_users": [
{
"username": "MaxCerba",
"date": "2024-01-12T19:30:09.852Z"
},
{
"username": "moretta369",
"date": "2024-02-09T11:18:39.053Z"
},
{
"username": "Pennyboh",
"date": "2024-05-05T13:26:41.414Z"
},
{
"username": "matslats",
"date": "2024-05-11T07:35:03.008Z"
},
{
"username": "Versolaluce",
"date": "2024-05-13T14:59:17.053Z"
},
{
"username": "Nonnapapera",
"date": "2024-05-25T16:02:41.456Z"
},
{
"username": "bluvero",
"date": "2024-06-01T19:33:42.158Z"
},
{
"username": "HERMESRISO",
"date": "2024-06-01T19:48:33.955Z"
},
{
"username": "FrancescaM68",
"date": "2024-06-08T15:59:07.476Z"
},
{
"username": "lucamop",
"date": "2024-06-09T19:06:30.339Z"
},
{
"username": "Cinestesico",
"date": "2024-06-14T13:51:24.025Z"
},
{
"username": "BeataLei",
"date": "2024-06-25T08:10:37.853Z"
},
{
"username": "Fabiozero",
"date": "2024-06-30T18:46:27.545Z"
},
{
"username": "Giory73",
"date": "2024-07-03T06:37:53.633Z"
},
{
"username": "nadia_blu",
"date": "2024-07-20T10:49:53.924Z"
},
{
"username": "evi4evi",
"date": "2024-07-26T14:23:55.533Z"
},
{
"username": "edellatorre",
"date": "2024-07-27T18:26:24.688Z"
},
{
"username": "Carlo",
"date": "2024-07-27T19:45:29.135Z"
},
{
"username": "Moscadri",
"date": "2024-08-01T16:00:26.567Z"
},
{
"username": "LaMis69",
"date": "2024-08-03T18:59:12.520Z"
},
{
"username": "Lamary",
"date": "2024-08-05T04:42:44.688Z"
},
{
"username": "Germana69",
"date": "2024-08-20T20:05:04.213Z"
},
{
"username": "A_tempesta",
"date": "2024-09-22T11:56:09.201Z"
},
{
"username": "mammalella960",
"date": "2024-10-05T10:37:22.645Z"
},
{
"username": "stefanci87",
"date": "2024-10-12T12:18:00.174Z"
},
{
"username": "clarajam",
"date": "2024-10-17T09:25:01.462Z"
},
{
"username": "iceborg500",
"date": "2024-11-20T12:14:51.302Z"
},
{
"username": "francomario",
"date": "2024-12-09T21:57:33.730Z"
},
{
"username": "cristy",
"date": "2024-12-17T11:40:35.792Z"
},
{
"username": "Carla57",
"date": "2025-01-22T17:50:35.640Z"
},
{
"username": "Dasete68",
"date": "2025-02-01T20:31:10.078Z"
},
{
"username": "Mariarosa2025",
"date": "2025-02-02T17:41:51.850Z"
},
{
"username": "Lisa_Logozzo_albergo_del_pastore",
"date": "2025-02-23T18:37:27.362Z"
},
{
"username": "ClaudioPoliPaneArtigianale",
"date": "2025-03-11T11:15:59.012Z"
},
{
"username": "Dantib93",
"date": "2025-03-13T19:49:58.109Z"
},
{
"username": "sbubovic",
"date": "2025-03-16T21:52:00.958Z"
},
{
"username": "sdhc5Giancarlo",
"date": "2025-03-18T20:38:16.668Z"
},
{
"username": "Nicmestre",
"date": "2025-05-08T15:50:19.266Z"
},
{
"username": "ginoarrigo",
"date": "2025-07-30T14:03:30.143Z"
},
{
"username": "FaniaFida",
"date": "2025-08-12T06:38:18.063Z"
},
{
"username": "SismaLux",
"date": "2025-08-16T14:49:00.704Z"
},
{
"username": "valeindaco27",
"date": "2025-09-10T10:19:55.354Z"
},
{
"username": "WellnessProfessionalTreatments1",
"date": "2025-09-17T19:24:29.998Z"
},
{
"username": "manuelaFio",
"date": "2025-10-01T09:20:05.388Z"
},
{
"username": "Merylilith",
"date": "2025-10-02T09:48:26.045Z"
},
{
"username": "Fabiobrent",
"date": "2025-10-05T12:21:03.635Z"
},
{
"username": "attenomis67",
"date": "2025-10-08T22:31:40.981Z"
},
{
"username": "fioretav",
"date": "2025-10-18T03:13:23.773Z"
},
{
"username": "Toninonature",
"date": "2025-10-19T21:18:37.796Z"
},
{
"username": "surya4",
"date": "2025-11-11T16:37:40.467Z"
},
{
"username": "surya8",
"date": "2025-11-18T22:20:20.964Z"
}
],
"refused_users": [],
"req_groups": [
{
"groupname": "PiuCheBuono(GaseBottega)",
"date": "2024-01-03T10:32:03.312Z"
},
{
"groupname": "GruppoYurta",
"date": "2025-03-02T17:41:12.653Z"
},
{
"groupname": "LaValledelMirto",
"date": "2025-05-17T06:42:18.212Z"
}
],
"refused_groups": [],
"date_created": "2023-10-19T08:18:14.701Z",
"__v": 0,
"regulation": "",
"showAlways": true,
"isCircItalia": true,
"circuitiExtraProv": true,
"account": {
"_id": "67c49838da76b7d9485f947f",
"importo_iniziale": 0,
"saldo": 17,
"totTransato": 17,
"saldo_pend": 17,
"totTransato_pend": 17,
"deleted": false,
"idapp": "13",
"username": "",
"groupname": "GruppoYurta",
"contocom": "",
"circuitId": "6530e646e6173ad77d585a59",
"deperibile": false,
"fidoConcesso": 400,
"qta_maxConcessa": 800,
"numtransactions": 4,
"date_created": "2025-03-02T17:41:12.650Z",
"__v": 0,
"date_updated": "2025-04-16T20:33:06.262Z"
}
}
],
"recCatGrp": [
{
"_id": 4,
"descr": "Prodotti Artigianali e Artistici",
"__v": 0,
"color": "#9C27B0",
"icon": "fa fa-paint-brush"
},
{
"_id": 8,
"descr": "Servizi Formativi ed Educativi",
"__v": 0,
"color": "#FFC107",
"icon": "fa fa-book"
},
{
"_id": 18,
"descr": "Salute e Benessere",
"__v": 0,
"color": "#E91E63",
"icon": "fa fa-heart"
},
{
"_id": 34,
"descr": "Attività Ricreative e di Intrattenim.",
"__v": 0,
"color": "#FF5722",
"icon": "fa fa-music"
},
{
"_id": 37,
"descr": "Cura della persona",
"__v": 0,
"color": "#FFEB3B",
"icon": "fa fa-user"
},
{
"_id": 41,
"descr": "Servizi e prodotti per la casa",
"__v": 0,
"color": "#FF9800",
"icon": "fa fa-home"
}
]
}

113
_LIMBO/queryoriginale.sql Normal file
View File

@@ -0,0 +1,113 @@
SELECT TOP 10000
T.*
,i.DescrizioneTipologia
,f.DescrizioneStatoProdotto
,n.DescrizioneFormato
,y.DescrizioneCollana
,z.AutoriCompleti
,i2.DescrArgomento
,z3.CasaEditrice ,q.QtaDisponibile FROM T_WEB_Articoli T
JOIN(
SELECT IdArticolo, MAX(DataOra) AS data
FROM T_WEB_Articoli
GROUP BY IdArticolo
) b ON T.IdArticolo = b.IdArticolo AND T.DataOra = b.data LEFT JOIN(
SELECT e.IdStatoProdotto, e.Descrizione as DescrizioneStatoProdotto
FROM T_WEB_StatiProdotto e
JOIN(
SELECT IdStatoProdotto, MAX(DataOra) as data1
FROM T_WEB_StatiProdotto
GROUP BY IdStatoProdotto
) c ON e.IdStatoProdotto = c.IdStatoProdotto AND e.DataOra = c.data1
) f ON T.IdStatoProdotto = f.IdStatoProdotto
LEFT JOIN(
SELECT g.IdTipologia, g.Descrizione as DescrizioneTipologia
FROM T_WEB_Tipologie g
JOIN(
SELECT IdTipologia, MAX(DataOra) as data1
FROM T_WEB_Tipologie
GROUP BY IdTipologia
) h ON g.IdTipologia = h.IdTipologia AND g.DataOra = h.data1
) i ON T.IdTipologia = i.IdTipologia
LEFT JOIN(
SELECT l.IdTipoFormato, l.Descrizione as DescrizioneFormato
FROM T_WEB_TipiFormato l
JOIN(
SELECT IdTipoFormato, MAX(DataOra) as data1
FROM T_WEB_TipiFormato
GROUP BY IdTipoFormato
) m ON l.IdTipoFormato = m.IdTipoFormato AND l.DataOra = m.data1
) n ON T.IdTipoFormato = n.IdTipoFormato
LEFT JOIN(
SELECT v.IdCollana, v.Descrizione as DescrizioneCollana
FROM T_WEB_Collane v
INNER JOIN(
SELECT IdCollana, MAX(ID) as MaxID
FROM T_WEB_Collane
GROUP BY IdCollana
) x ON v.IdCollana = x.IdCollana AND v.ID = x.MaxID
) y ON T.IdCollana = y.IdCollana
LEFT JOIN(
SELECT g2.IdArgomento, g2.Descrizione as DescrArgomento
FROM T_WEB_Argomenti g2
INNER JOIN(
SELECT IdArgomento, MAX(DataOra) as data12
FROM T_WEB_Argomenti
GROUP BY IdArgomento
) h ON g2.IdArgomento = h.IdArgomento AND g2.DataOra = h.data12
) i2 ON T.ListaArgomenti = i2.IdArgomento
LEFT JOIN(
SELECT
T1.IdArticolo,
STUFF((
SELECT ',' + ISNULL(A2.AutoreCompleto, '')
FROM(
SELECT CAST('<root><x>' + REPLACE(T1.ListaAutori, ',', '</x><x>') + '</x></root>' AS XML) AS DataXML
) X
CROSS APPLY X.DataXML.nodes('/root/x') AS A(x)
CROSS APPLY(
SELECT TRY_CAST(LTRIM(RTRIM(A.x.value('.', 'VARCHAR(100)'))) AS INT) AS AutoreID
) CA
JOIN(
SELECT a.IdAutore, CONCAT(a.Nome, ' ', a.Cognome) AS AutoreCompleto
FROM T_WEB_Autori a
JOIN(
SELECT IdAutore, MAX(DataOra) AS maxData
FROM T_WEB_Autori
GROUP BY IdAutore
) aa ON a.IdAutore = aa.IdAutore AND a.DataOra = aa.maxData
) A2 ON CA.AutoreID = A2.IdAutore
FOR XML PATH(''), TYPE
).value('.', 'NVARCHAR(MAX)'), 1, 1, '') AS AutoriCompleti
FROM T_WEB_Articoli T1
GROUP BY T1.IdArticolo, T1.ListaAutori
) z ON T.IdArticolo = z.IdArticolo
LEFT JOIN(
SELECT a3.IdMarchioEditoriale, a3.Descrizione as CasaEditrice
FROM T_WEB_MarchiEditoriali a3
JOIN(
SELECT IdMarchioEditoriale, MAX(DataOra) as maxData
FROM T_WEB_MarchiEditoriali
GROUP BY IdMarchioEditoriale
) aa3 ON a3.IdMarchioEditoriale = aa3.IdMarchioEditoriale AND a3.DataOra = aa3.maxData
) z3 ON T.IdMarchioEditoriale = z3.IdMarchioEditoriale LEFT JOIN(
SELECT o.Codice, o.QtaDisponibile
FROM T_WEB_Disponibile o
JOIN(
SELECT Codice, MAX(DataOra) as data1
FROM T_WEB_Disponibile
GROUP BY Codice
) p ON o.Codice = p.Codice AND o.DataOra = p.data1
) q ON T.IdArticolo = q.Codice WHERE
(DescrizioneStatoProdotto = 'In commercio' OR
DescrizioneStatoProdotto = 'Prossima uscita/pubblicazione' OR
DescrizioneStatoProdotto = 'Prossima uscita' OR
DescrizioneStatoProdotto = 'In prevendita' OR
DescrizioneStatoProdotto = '2023 in commercio')
AND
(DescrizioneTipologia = 'Libri' OR
DescrizioneTipologia = 'Cartolibro' OR
DescrizioneTipologia = 'Carte')
AND
(Ean13 NOT LIKE 'USATO%')

2293
_LIMBO/risospiegazione.html Normal file

File diff suppressed because it is too large Load Diff

63
_LIMBO/tutorial.htm Normal file
View File

@@ -0,0 +1,63 @@
<div>
<br>
</div>
<div>
<b>
<font size="4">TUTORIAL</font>
</b>
</div>
<div>
<ul>
<li>
<font size="4">
<a href="https://gruppomacro.app/upload/video/Come_generare_un_Catalogo_Personalizzato.mp4?id=1">
Come generare un Catalogo Personalizzato
</a>
(1 luglio 2025)
</font>
</li>
<li>
<font size="4">
<a href="https://gruppomacro.app/upload/video/Come_cercare_un_Libro.mp4">
Come cercare un Libro
</a>
(23 giugno 2025)
</font>
</li>
<li>
<font size="4">
<a href="https://gruppomacro.app/upload/video/Come_Inserire_la_sinossi_del_libri_sul_Catalogo.mp4">
Come inserire la Sinossi di un libro
</a>
(30 maggio 2025)
</font>
</li>
<li>
<font size="4">
<a href="https://gruppomacro.app/upload/video/Come_generare_un_catalogo_per_argomento.mp4">
Come generare un Catalogo per argomento
</a>
(30 maggio 2025)
</font>
</li>
<li>
<font size="4">
<a href="https://gruppomacro.app/upload/video/Creazione_di_una_Lista_di_un_Catalogo.mp4">
Come creare (ed aggiornare) una lista di libri del Catalogo
</a>
(6 maggio 2025)
</font>
</li>
<li>
<font size="4">
<a href="https://gruppomacro.app/upload/video/Aggiungere_la_Sinossi_di_un_libro.mp4">
Come aggiungere la sinossi (trafiletto) di un libro
</a>
(6 maggio 2025)
</font>
</li>
</ul>
</div>

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.1 KiB

After

Width:  |  Height:  |  Size: 1.1 KiB

BIN
files.zip Normal file

Binary file not shown.

View File

@@ -10,7 +10,7 @@
<meta name="description" content="<%= productDescription %>">
<meta name="format-detection" content="telephone=no">
<meta name="msapplication-tap-highlight" content="no">
<meta name="version" content="1.2.2">
<meta name="version" content="1.2.86">
<meta name="viewport"
content="user-scalable=no, initial-scale=1, maximum-scale=1, minimum-scale=1, width=device-width<% if (ctx.mode.cordova || ctx.mode.capacitor) { %>, viewport-fit=cover<% } %>">

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.3 KiB

BIN
install_app_on_safari.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.3 KiB

28
localhost-key.pem Normal file
View File

@@ -0,0 +1,28 @@
-----BEGIN PRIVATE KEY-----
MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQDMj4l7a8snvjVf
3kj1WqOJPm5JV54l/GSOi6WQvjMfiW+nQoDgUINBbq7NrVgfdCMtDFmCInBxKQ6y
fD/jmOMfAjchr0xqkKil6JD6xU3IO5vTmn7wbnC3av5iwRrM8EoAQs2QqQCdCj8v
8ykxVzr2LxgEXIvtBaJLzq6KR4fHs7QHxDA6hF45MTzB+Ea8T2NKuoTLEfZKY7VA
oVYz2i+q5Elc+9w8LrZvp+6j3feSS3QlTj9IezblXj7dTApfkniwPuG756IzuaYo
ko7mnwxxruADI/4mXn/9K/KVFsUQ7I0vQ5SAB+YHHM/JMxTykfJCPjlM3BfblfXE
xhayCcLlAgMBAAECggEAPXPBcXpohX/2uN4mPM8F4e0HZLEVqYOxEcGR83GwGgFH
sY+g98I4LCf8C33Pw2M4Tggvu5BtBxG2gJgi+VSsplwcA9qNslXS1ESRiURMoaKG
pYL8L25+HhveX/xy+K4XDQ0EhDjBHmw9n0IFVfVGmT58kJLc1k+i+fMVLCVg/PTN
hmjp04tFEBQz8jZCkYBwX7bOiZ15A6rrQtvvafaM4AcYn9cJIEi1SPUEC5HuWvpY
JrqBP3MW1OBVj/XE3dEOaO0jt8E4Mhbef/VQzFatdgw7/NlJCFMpqgqzSYRmpz9i
riQhipnorrz7E63qzR5XbkpKcWN9d+xZJvtWmBS64QKBgQD1MOZqtouCVac5xduY
Ah/AzqlTi2IuX4Gv3xCYu7a1CCxpWFEGeI1pVD3SiADS7wf6rGSWrES6dLdHfPNn
OM7pK0tJL9xhIn3c6qWuJTWNE6MQoc4CIEBSJVqwVqLBsIToNHV2GuU6S2UXNkpu
f+mga0XcWEq+e5sgEKEXEgVQCwKBgQDVlBqfLVvhdmccmFNWGl42ZytTJ5rxMyCo
GgIYaZoUgPaXodmh+D3jFhRUe0dt6PMg1Lrz5bNV87tStFpybBHwVrgjdTLjMh3s
hVbeB4e+p+FXos042zS55N4WmoRyUkiEPqS4yAQmQ39ry+Z8R3kjYqZ8160jV70I
AeUo+05ezwKBgQCBU/G1h+O+M3+pMXvKihRFlrwpnPOEkkvNgFM4vIp6on0Kc9MJ
Hr04OX8CdUo5+Gq1BglokCUQVE/4HSgl4gkBZByp1dzgP1k0FXCeknHUn+767t3C
sVA8BAf5yzi+AWWZNVJfoYAXZ31C6RgJgN6yBuMqfkeugXQpTZwqlw7GUQKBgGku
Ven8OZqQZ/lSHwBxXeJm7pQ2Ff0hE70VieCh6Qqd9FL6lyZIDZpPHlX4nFXJeiq5
+RPyFF6I+MCjJ0Pgavk0i9ySdCwlW01G4V/Yz4YaQUSaXXzZn17JEoKJOB7g3Oub
uh1yC3EYnqDkuq6LuGGvzJQA1zhnliViYYvML21LAoGBAJ5JOztBX/6vXpBF0/JJ
BNuKr9CPQ5qjyThX0lJF0+o8ZVD/tttwAgA/FfmePqKSrrWs5RJfbjt5NUFXYykx
7UF9bitWfSVqERkZcOp4NgRjx/A6l27T5e6+zu0Ze7es1oUzR3Ov2FUDUt9skpdC
O8iSMszloFwh/gOG9F1vLLAz
-----END PRIVATE KEY-----

26
localhost.pem Normal file
View File

@@ -0,0 +1,26 @@
-----BEGIN CERTIFICATE-----
MIIEczCCAtugAwIBAgIQPkGxv6Tr58lKZlWBrK31KzANBgkqhkiG9w0BAQsFADCB
ozEeMBwGA1UEChMVbWtjZXJ0IGRldmVsb3BtZW50IENBMTwwOgYDVQQLDDNzdXJ5
YXBhb2xvQE1hY0Jvb2stQWlyLWRpLVN1cnlhLmxvY2FsIChTdXJ5YSBQYW9sbykx
QzBBBgNVBAMMOm1rY2VydCBzdXJ5YXBhb2xvQE1hY0Jvb2stQWlyLWRpLVN1cnlh
LmxvY2FsIChTdXJ5YSBQYW9sbykwHhcNMjUwMzEzMDgxODIxWhcNMjcwNjEzMDcx
ODIxWjBnMScwJQYDVQQKEx5ta2NlcnQgZGV2ZWxvcG1lbnQgY2VydGlmaWNhdGUx
PDA6BgNVBAsMM3N1cnlhcGFvbG9ATWFjQm9vay1BaXItZGktU3VyeWEubG9jYWwg
KFN1cnlhIFBhb2xvKTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAMyP
iXtryye+NV/eSPVao4k+bklXniX8ZI6LpZC+Mx+Jb6dCgOBQg0Furs2tWB90Iy0M
WYIicHEpDrJ8P+OY4x8CNyGvTGqQqKXokPrFTcg7m9OafvBucLdq/mLBGszwSgBC
zZCpAJ0KPy/zKTFXOvYvGARci+0FokvOropHh8eztAfEMDqEXjkxPMH4RrxPY0q6
hMsR9kpjtUChVjPaL6rkSVz73Dwutm+n7qPd95JLdCVOP0h7NuVePt1MCl+SeLA+
4bvnojO5piiSjuafDHGu4AMj/iZef/0r8pUWxRDsjS9DlIAH5gccz8kzFPKR8kI+
OUzcF9uV9cTGFrIJwuUCAwEAAaNeMFwwDgYDVR0PAQH/BAQDAgWgMBMGA1UdJQQM
MAoGCCsGAQUFBwMBMB8GA1UdIwQYMBaAFLFuWFq/xnNJeprfAy5ACMa9SjguMBQG
A1UdEQQNMAuCCWxvY2FsaG9zdDANBgkqhkiG9w0BAQsFAAOCAYEAtstXoeWi9WY/
4URXA4uUSFItGhmWmVkNI1Ak+iM4w7OgerohZ1bfDY/0vVDmX8aGtacnU9cwnz+H
y7yxrA42pJjk9GF1cKO+AKGr5oj6LJ8MQ7XfHhJ7Phv+QJHFo6sMBb0P5qR/TI4r
UNmzda8jBDpSE9vCe0XdM89R2UB/G0UBu4Gc2+tTpcG+2/B3P+L6dNrDbHcFHU6W
L/UpFiHUaKqFvTz62oYqCicgftXPrGy6RNd4tWj+YETxdYRRlUkLHgAQaj8QAs1g
9Krj0KOfyk3Kmxeis7XW7O3FglI3D/PDyOwWTN76EIzjGteNj3OZ49Ys4jt9V0pr
CeCnjq3lbSvX8xj139fc2fb/bvd3vzGjv39rRDQ3BDHwaWZrlyHhSGy/mLKQC/SH
FGhr/v+NcMe9uGh8aDM60Hm+wQEM+WOWCJkDG3Ajv+Rf0V8N03foS0ngAO0PQlDp
ZlhOlMNxkUSQkwMawOX33mzEaVALTQ6/OKMWbR8K5bjAIWUtG1AN
-----END CERTIFICATE-----

BIN
logo.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 424 KiB

28
migrate-repos.sh Executable file
View File

@@ -0,0 +1,28 @@
#!/bin/bash
# Salva come migrate-repos.sh
GITEA_URL="http://95.216.147.38:3000"
USERNAME="surya"
TOKEN="8ed0622aac269414f4d333d0c89e22b1c42dd4d1" # Crea su Gitea: Settings → Applications → Generate Token
SEARCH_PATH="$HOME/myproject"
# Trova tutti i repository
find "$SEARCH_PATH" -name ".git" -type d 2>/dev/null | while read gitdir; do
REPO_PATH=$(dirname "$gitdir")
REPO_NAME=$(basename "$REPO_PATH")
echo "Processing: $REPO_NAME"
# Crea repository su Gitea via API
curl -X POST "$GITEA_URL/api/v1/user/repos" \
-H "Authorization: token $TOKEN" \
-H "Content-Type: application/json" \
-d "{\"name\":\"$REPO_NAME\",\"private\":false}"
# Push
cd "$REPO_PATH"
git remote remove origin 2>/dev/null
git remote add origin "$GITEA_URL/$USERNAME/$REPO_NAME.git"
git push -u origin --all
git push -u origin --tags
done

View File

@@ -1,19 +1,19 @@
{
"name": "riso",
"version": "1.2.2",
"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",
"version": "1.2.86",
"productName": "Riso 💚 - Rete Italiana Scambio orizzontale",
"description": "Progetto RISO (Rete Italiana Scambio orizzontale) promuove una rete di comunità locali che favoriscono scambi di beni, servizi e ospitalità. Con l'App RISO, sviluppata per facilitare il baratto, il dono e l'uso di monete alternative come i RIS, il progetto crea legami autentici basati sulla fiducia e sostenibilità. Partecipa agli scambi e costruisci una comunità più consapevole e autosufficiente.",
"author": "Surya",
"private": true,
"keywords": [],
"license": "MIT",
"type": "module",
"scripts": {
"dev": "quasar dev",
"dev": "APP_VERSION='1.2.86' PORT=8084 quasar dev",
"dev_noCheck": "SKIP_TSC=true quasar dev",
"build": "quasar build",
"buildpwa": "quasar build -m pwa",
"buildpwatest": "NODE_ENV=test quasar build -m pwa",
"buildpwa": "NODE_ENV=production APP_VERSION='1.2.86' quasar build -m pwa",
"buildpwatest": "NODE_ENV=production APP_VERSION='1.2.86' quasar build -m pwa",
"type-check": "vue-tsc --noEmit",
"type-check:watch": "vue-tsc --noEmit --watch",
"buildspa": "quasar build -m spa",
@@ -21,121 +21,123 @@
"lintfile": "eslint --ext .js,.ts,.vue --ignore-path .gitignore ./ > file.out.txt",
"lintfileNoJS": "eslint --ext .ts,.vue --ignore-path .gitignore ./ > file.out.txt",
"fix": "eslint -c ./eslint.config.js \"./src*/**/*.{ts,js,cjs,mjs,vue}\" --ignore-pattern .gitignore ./ --fix > file.out.txt",
"pwa": "quasar dev -m pwa",
"spa": "quasar dev",
"pwa": "NODE_ENV=development PORT=8094 APP_VERSION='1.2.86' quasar dev -m pwa",
"spa": "NODE_ENV=development PORT=8084 APP_VERSION='1.2.86' quasar dev",
"debug": "quasar dev --mode debug",
"test": "echo \"No test specified\" && exit 0",
"generate-sw": "workbox generateSW workbox-config.js",
"postinstall": "quasar prepare"
},
"dependencies": {
"@cubejs-client/core": "^1.2.19",
"@quasar/extras": "^1.16.17",
"@cubejs-client/core": "^1.5.11",
"@quasar/extras": "^1.17.0",
"@quasar/quasar-ui-qcalendar": "^4.1.2",
"@types/leaflet": "^1.9.16",
"@vue/compat": "^3.5.13",
"@vue/compiler-sfc": "^3.5.13",
"@types/jsbarcode": "^3.11.4",
"@types/leaflet": "^1.9.21",
"@vue/compat": "^3.5.25",
"@vue/compiler-sfc": "^3.5.25",
"@vuelidate/core": "^2.0.3",
"@vuelidate/validators": "^2.0.4",
"acorn": "^8.14.1",
"acorn": "^8.15.0",
"animate.css": "^4.1.1",
"autoprefixer": "^10.4.21",
"axios": "^1.8.2",
"bcryptjs": "^3.0.2",
"chart.js": "^4.4.8",
"core-js": "^3.41.0",
"apexcharts": "^5.3.6",
"autoprefixer": "^10.4.22",
"axios": "^1.13.2",
"bcryptjs": "^3.0.3",
"chart.js": "^4.5.1",
"core-js": "^3.47.0",
"crypto-browserify": "^3.12.1",
"date-fns": "^4.1.0",
"echarts": "5.6.0",
"eslint-plugin-n": "^17.16.2",
"echarts": "6.0.0",
"eslint-plugin-n": "^17.23.1",
"eslint-plugin-quasar": "^1.1.0",
"graphql": "^16.10.0",
"graphql-tag": "^2.12.6",
"gsap": "^3.12.7",
"html2pdf.js": "^0.10.3",
"gsap": "^3.13.0",
"jquery": "^3.7.1",
"js-cookie": "^3.0.5",
"jsbarcode": "^3.12.1",
"leaflet": "^1.9.4",
"leaflet-routing-machine": "^3.2.12",
"leaflet.markercluster": "^1.5.3",
"localforage": "^1.10.0",
"lodash": "^4.17.21",
"mongoose-paginate-v2": "^1.9.1",
"normalize.css": "^8.0.1",
"nprogress": "^0.2.0",
"pinia": "^3.0.1",
"pinia": "^3.0.4",
"qrcode-vue3": "^1.7.1",
"quasar": "^2.18.1",
"quasar": "^2.18.6",
"quasar-extras": "^2.0.9",
"register-service-worker": "^1.7.2",
"scrollreveal": "^4.0.9",
"typescript-eslint": "^8.26.0",
"vee-validate": "^4.15.0",
"vue": "^3.5.13",
"typescript-eslint": "^8.48.1",
"vee-validate": "^4.15.1",
"vue": "^3.5.25",
"vue-class-component": "^8.0.0-rc.1",
"vue-country-code": "^1.1.3",
"vue-echarts": "^7.0.3",
"vue-i18n": "^11.1.2",
"vue-echarts": "^8.0.1",
"vue-i18n": "^11.2.2",
"vue-idb": "^0.2.0",
"vue-image-zoomer": "^2.4.4",
"vue-property-decorator": "^10.0.0-rc.3",
"vue-router": "^4.5.0",
"vue-router": "^4.6.3",
"vue-scroll-reveal": "^2.1.0",
"vue-social-sharing": "^4.0.0-alpha4",
"vue-svgicon": "^4.0.0-alpha.3",
"vue-timeago3": "^2.3.2",
"vue2-dragula": "^2.5.5",
"vue3-pdf-app": "^1.0.3",
"vue3-apexcharts": "^1.10.0",
"vue3-qr-reader": "^1.0.0",
"vuedraggable": "^4.1.0",
"vuex": "^4.1.0",
"vuex-router-sync": "^6.0.0-rc.1",
"workbox-core": "^7.3.0",
"workbox-precaching": "^7.3.0",
"workbox-routing": "^7.3.0",
"workbox-strategies": "^7.3.0",
"workbox-window": "^7.3.0"
"workbox-core": "^7.4.0",
"workbox-precaching": "^7.4.0",
"workbox-routing": "^7.4.0",
"workbox-strategies": "^7.4.0",
"workbox-window": "^7.4.0",
"xlsx": "^0.18.5"
},
"devDependencies": {
"@eslint/js": "^9.22.0",
"@intlify/unplugin-vue-i18n": "^6.0.3",
"@quasar/app-vite": "^2.1.4",
"@types/bcryptjs": "^2.4.6",
"@eslint/js": "^9.39.1",
"@intlify/unplugin-vue-i18n": "^11.0.1",
"@quasar/app-vite": "^2.4.0",
"@types/google.maps": "^3.58.1",
"@types/jest": "^29.5.14",
"@types/jest": "^30.0.0",
"@types/js-cookie": "^3.0.6",
"@types/node": "^22.13.10",
"@types/node": "^24.10.1",
"@types/nprogress": "^0.2.3",
"@types/vue-tel-input": "^2.1.7",
"@types/vuelidate": "^0.7.22",
"@vue/devtools": "^7.7.2",
"@vue/devtools": "^8.0.5",
"@vue/eslint-config-prettier": "^10.2.0",
"@vue/eslint-config-typescript": "^14.5.0",
"autoprefixer": "^10.4.21",
"@vue/eslint-config-typescript": "^14.6.0",
"autoprefixer": "^10.4.22",
"eslint": "9",
"eslint-plugin-import": "^2.31.0",
"eslint-plugin-vue": "^10.0.0",
"eslint-plugin-import": "^2.32.0",
"eslint-plugin-vue": "^10.6.2",
"file-loader": "^6.2.0",
"globals": "^16.0.0",
"http-proxy-middleware": "^3.0.3",
"jest": "^29.7.0",
"globals": "^16.5.0",
"http-proxy-middleware": "^3.0.5",
"jest": "^30.2.0",
"json-loader": "^0.5.7",
"nodemon": "^3.1.9",
"npm-check-updates": "^17.1.15",
"parcel": "^2.13.3",
"postcss": "^8.5.3",
"postcss-loader": "^8.1.1",
"nodemon": "^3.1.11",
"npm-check-updates": "^19.1.2",
"parcel": "^2.16.1",
"postcss": "^8.5.6",
"postcss-loader": "^8.2.0",
"prettier": "3",
"strip-ansi": "=7.1.0",
"ts-jest": "^29.2.6",
"typescript": "5.7.3",
"vite-plugin-checker": "^0.9.0",
"strip-ansi": "=7.1.2",
"ts-jest": "^29.4.6",
"typescript": "5.9.3",
"vite-plugin-checker": "^0.11.0",
"vue-cli-plugin-element-ui": "^1.1.4",
"vue-tsc": "^2.2.8",
"vue-eslint-parser": "^10.2.0",
"vue-tsc": "^3.1.5",
"vueify": "^9.4.1",
"workbox-build": "^7.3.0"
"workbox-build": "^7.4.0"
},
"engines": {
"node": "^28 || ^26 || ^24 || ^22 || ^20 || ^18",
"npm": ">= 6.13.4",
"yarn": ">= 1.21.1"
}
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 323 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 323 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 217 KiB

View File

Before

Width:  |  Height:  |  Size: 279 KiB

After

Width:  |  Height:  |  Size: 279 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 30 KiB

BIN
public/images/logo.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.0 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 98 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 30 KiB

After

Width:  |  Height:  |  Size: 38 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 43 KiB

After

Width:  |  Height:  |  Size: 61 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 138 KiB

After

Width:  |  Height:  |  Size: 180 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.8 KiB

After

Width:  |  Height:  |  Size: 7.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 185 KiB

After

Width:  |  Height:  |  Size: 276 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 17 KiB

After

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 21 KiB

After

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 23 KiB

After

Width:  |  Height:  |  Size: 28 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 30 KiB

After

Width:  |  Height:  |  Size: 38 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 33 KiB

After

Width:  |  Height:  |  Size: 41 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 42 KiB

After

Width:  |  Height:  |  Size: 55 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.6 KiB

After

Width:  |  Height:  |  Size: 9.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.1 KiB

After

Width:  |  Height:  |  Size: 9.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 11 KiB

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 12 KiB

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 44 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 424 KiB

After

Width:  |  Height:  |  Size: 1.0 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 140 KiB

View File

Before

Width:  |  Height:  |  Size: 14 KiB

After

Width:  |  Height:  |  Size: 14 KiB

View File

@@ -1,68 +1,107 @@
import { defineConfig } from '#q-app/wrappers'
import { defineConfig } from '#q-app/wrappers';
import { fileURLToPath } from 'node:url';
import path from 'path'
// console.log(process.env)
import path from 'path';
export default defineConfig((ctx) => {
return {
// https://v2.quasar.dev/quasar-cli/supporting-ts
// https://v2.quasar.dev/quasar-cli/prefetch-feature
// preFetch: true,
// app boot file (/src/boot)
// --> boot files are part of "main.js"
// https://v2.quasar.dev/quasar-cli/boot-files
// boot: ['vue-i18n', 'vue-meta', 'axios', 'vee-validate', 'myconfig', 'local-storage', 'error-handler', 'globalroutines', 'vue-idb', 'dragula', 'guard'],
boot: ['i18n', 'axios', 'pinia', 'vee-validate',
boot: [
'i18n',
'axios',
'pinia',
'vee-validate',
'myconfig',
'local-storage', 'error-handler', 'globalroutines',
'calendar', 'social-sharing', 'timeago', 'guard'],
// https://v2.quasar.dev/quasar-cli/quasar-conf-js#Property%3A-css
css: [
'app.scss',
// '~quasar-ui-qcalendar/src/css/calendar-day.sass'
'local-storage',
'globalroutines',
'calendar',
'social-sharing',
'timeago',
'guard',
'trackPageViews',
],
// https://github.com/quasarframework/quasar/tree/dev/extras
css: ['app.scss'],
extras: [
// 'ionicons-v4',
// 'mdi-v5',
// 'eva-icons',
// 'themify',
// 'line-awesome',
'ionicons-v4',
// 'mdi-v3',
'fontawesome-v5',
'roboto-font', // optional, you are not bound to it
'material-icons', // optional, you are not bound to it
'roboto-font',
'material-icons',
'material-icons-outlined',
],
// Full list of options: https://v2.quasar.dev/quasar-cli/quasar-conf-js#Property%3A-build
build: {
target: {
browser: ['es2022', 'firefox115', 'chrome115', 'safari14'],
node: 'node20'
browser: ['es2021', 'chrome100', 'firefox100', 'safari14'],
node: 'node20',
},
// env: envparser(),
// versionCode: package.version,
// ✅ AGGIUNTO: Importa automaticamente variables.scss ovunque
sassVariables: 'src/css/variables.scss',
vueRouterMode: 'history',
analyze: false, // true
analyze: false,
transpile: true,
transpileDependencies: [
/quasar-ui-qcalendar[\\/]src/
],
transpileDependencies: [/quasar-ui-qcalendar[\\/]src/],
typescript: {
strict: false,
vueShim: true,
},
// ✅ AGGIUNTO: Config SCSS globale per Vite
extendViteConf(viteConf, { isServer, isClient }) {
// Alias puliti
viteConf.resolve = {
...(viteConf.resolve || {}),
alias: {
...viteConf.resolve.alias,
'#q-app': path.resolve(__dirname, 'node_modules/quasar/app'),
// Alias essenziali (rimuovi duplicati)
'@': path.resolve(__dirname, 'src'),
'@components': path.resolve(__dirname, 'src/components'),
'@views': path.resolve(__dirname, 'src/views'),
'@boot': path.resolve(__dirname, 'src/boot'),
'@store': path.resolve(__dirname, 'src/store'),
'@storemod': path.resolve(__dirname, 'src/store/Modules'),
'@tools': path.resolve(__dirname, 'src/store/Modules/tools.ts'), // ✅ AGGIUNTO
'@costanti': path.resolve(__dirname, 'src/store/Modules/costanti.ts'), // ✅ AGGIUNTO
'@api': path.resolve(__dirname, 'src/store/Api'),
'@utils': path.resolve(__dirname, 'src/utils'),
'@model': path.resolve(__dirname, 'src/model'),
'@classes': path.resolve(__dirname, 'src/classes'),
'@router': path.resolve(__dirname, 'src/router'),
'@css': path.resolve(__dirname, 'src/css'),
'@paths': path.resolve(__dirname, 'src/store/Api/ApiRoutes.ts'),
'@images': path.resolve(__dirname, 'src/assets/images'),
'@icons': path.resolve(__dirname, 'src/public/myicons'),
},
};
// ✅ AGGIUNTO: SCSS preprocessor con variables.scss globale
viteConf.css = {
...(viteConf.css || {}),
preprocessorOptions: {
scss: {
additionalData: `@use "sass:color"; @use "@/css/variables.scss" as *;`,
},
},
};
},
viteConf: {
server: {
hmr: {
protocol: 'wss',
host: 'localhost',
port: 8094,
},
},
},
beforeDev(api) {
// Se la variabile d'ambiente SKIP_TSC è impostata, disabilita il type checking
if (process.env.SKIP_TSC === 'true') {
console.log('⚠️ TypeScript type checking is disabled');
// Disattiva TypeScript checking per Vite
if (api && api.chainWebpack) {
api.chainWebpack((chain) => {
chain.plugin('fork-ts-checker').tap((args) => {
@@ -73,170 +112,51 @@ export default defineConfig((ctx) => {
}
}
},
// @quasar/app-vite v2.0.3+
envFilter(originalEnv) {
const newEnv = {}
for (const key in originalEnv) {
/* ...decide if it goes in or not... */
if (true) {
newEnv[key] = originalEnv[key]
}
}
// remember to return your processed env
return newEnv
},
typescript: {
strict: false,
vueShim: true,
extendTsConfig(tsConfig) {
// You can use this hook to extend tsConfig dynamically
// For basic use cases, you can still update the usual tsconfig.json file to override some settings
},
/**
* Folder where Quasar CLI should look for .env* files.
* Can be an absolute path or a relative path to project root directory.
*
* @default project root directory
*/
// envFolder?: string
/**
* Additional .env* files to be loaded.
* Each entry can be an absolute path or a relative path to quasar.config > build > envFolder.
*
* @example ['.env.somefile', '../.env.someotherfile']
*/
// envFiles?: string[];
},
extendViteConf(viteConf, { isServer, isClient }) {
viteConf.resolve = {
...(viteConf.resolve || {}),
alias: {
...viteConf.resolve.alias,
'#q-app': path.resolve(__dirname, 'node_modules/quasar/app'), // Alias per #q-app
'app': path.resolve(__dirname),
'boot': path.resolve(__dirname, 'src/boot'),
'src': path.resolve(__dirname, 'src'),
'statics': path.resolve(__dirname, 'src/statics'),
'components': path.resolve(__dirname, 'src/components'),
'views': path.resolve(__dirname, 'src/views/index.ts'),
'images': path.resolve(__dirname, 'src/assets/images'),
'maps': path.resolve(__dirname, 'public/maps'),
'classes': path.resolve(__dirname, 'src/classes/index.ts'),
'fonts': path.resolve(__dirname, 'src/assets/fonts'),
'utils': path.resolve(__dirname, 'src/utils/index.ts'),
'css': path.resolve(__dirname, 'public/css/variables.scss'),
'router': path.resolve(__dirname, 'src/router/index.ts'),
'validators': path.resolve(__dirname, 'src/utils/validators.ts'),
'methods': path.resolve(__dirname, 'src/utils/methods.ts'),
'filters': path.resolve(__dirname, 'src/utils/filters.ts'),
'api': path.resolve(__dirname, 'src/store/Api/index.ts'),
'paths': path.resolve(__dirname, 'src/store/Api/ApiRoutes.ts'),
'modules': path.resolve(__dirname, 'src/store/Modules/index.ts'),
'model': path.resolve(__dirname, 'src/model/index.ts'),
'@components': path.resolve(__dirname, 'src/components'),
'@boot': path.resolve(__dirname, 'src/boot'),
'@costanti': path.resolve(__dirname, 'src/store/Modules/costanti.ts'),
'@views': path.resolve(__dirname, 'src/views/index.ts'),
'@src': path.resolve(__dirname, 'src'),
'@css': path.resolve(__dirname, 'src/public/css/variables.scss'),
'@icons': path.resolve(__dirname, 'src/public/public/myicons'),
'@images': path.resolve(__dirname, 'src/public/images/*'),
'@maps': path.resolve(__dirname, 'src/public/maps/*'),
'@classes': path.resolve(__dirname, 'src/classes/index.ts'),
'@utils': path.resolve(__dirname, 'src/utils/index.ts'),
'@router': path.resolve(__dirname, 'src/router/index.ts'),
'@validators': path.resolve(__dirname, 'src/utils/validators.ts'),
'@methods': path.resolve(__dirname, 'src/utils/methods.ts'),
'@api': path.resolve(__dirname, 'src/store/Api/index.ts'),
'@paths': path.resolve(__dirname, 'src/store/Api/ApiRoutes.ts'),
'@storemod': path.resolve(__dirname, 'src/store/Modules'),
'@store': path.resolve(__dirname, 'src/store'),
'@tools': path.resolve(__dirname, 'src/store/Modules/tools.ts'),
'@modules': path.resolve(__dirname, 'src/store/Modules/index.ts'),
'@model': path.resolve(__dirname, 'src/model/index.ts'),
},
};
return originalEnv; // Ritorna tutto per semplicità
},
vitePlugins: [
['@intlify/unplugin-vue-i18n/vite', {
// if you want to use Vue I18n Legacy API, you need to set `compositionOnly: false`
// compositionOnly: false,
// if you want to use named tokens in your Vue I18n messages, such as 'Hello {name}',
// you need to set `runtimeOnly: false`
// runtimeOnly: false,
ssr: ctx.modeName === 'ssr',
// you need to set i18n resource including paths !
include: [fileURLToPath(new URL('./src/i18n', import.meta.url))]
}],
['vite-plugin-checker', {
vueTsc: false,
OFF_eslint: {
lintCommand: 'eslint -c ./eslint.config.js "./src*/**/*.{ts,js,mjs,cjs,vue}"',
useFlatConfig: true
}
}, { server: false }]
]
// polyfillModulePreload: true,
// viteVuePluginOptions: {},
// extractCSS: false,
// transpile: false,
// Add dependencies for transpiling with Babel (Array of string/regex)
// (from node_modules, which are by default not transpiled).
// Applies only if "transpile" is set to true.
// transpileDependencies: [],
// rtl: true, // https://v2.quasar.dev/options/rtl-support
// preloadChunks: true,
// showProgress: false,
// gzip: true,
// analyze: true,
// Options below are automatically set depending on the env, set them if you want to override
// extractCSS: false,
// https://v2.quasar.dev/quasar-cli/handling-webpack
// "chain" is a webpack-chain object https://github.com/neutrinojs/webpack-chain
[
'@intlify/unplugin-vue-i18n/vite',
{
ssr: ctx.modeName === 'ssr',
include: [fileURLToPath(new URL('./src/i18n', import.meta.url))],
},
],
[
'vite-plugin-checker',
{
vueTsc: false,
OFF_eslint: {
lintCommand:
'eslint -c ./eslint.config.js "./src*/**/*.{ts,js,mjs,cjs,vue}"',
useFlatConfig: true,
},
},
{ server: false },
],
],
},
// Full list of options: https://v2.quasar.dev/quasar-cli/quasar-conf-js#Property%3A-devServer
devServer: {
https: false,
port: ctx.mode.spa ? 8084 : 8094,
vueDevtools: false, // automatically opening remote Vue Devtools
open: false, // opens browser window automatically
hot: true, // Disable hot module replacement
https: {
key: path.resolve(__dirname, 'localhost-key.pem'),
cert: path.resolve(__dirname, 'localhost.pem'),
},
port: parseInt(process.env.PORT, 10),
vueDevtools: false,
open: false,
hot: true,
headers: {
'Access-Control-Allow-Origin': '*',
'Access-Control-Allow-Headers': '*',
},
},
// https://v2.quasar.dev/quasar-cli/quasar-conf-js#Property%3A-framework
framework: {
config: {},
// iconSet: 'material-icons', // Quasar icon set
// lang: 'en-US', // Quasar language pack
// For special cases outside of where the auto-import strategy can have an impact
// (like functional components as one of the examples),
// you can manually specify Quasar components/directives to be available everywhere:
//
components: [
'QLayout',
'QDrawer',
@@ -304,12 +224,10 @@ export default defineConfig((ctx) => {
'QTabPanel',
'QTree',
'QSeparator',
'QPageSticky',
],
directives: [
'Ripple',
'ClosePopup',
],
_plugins: [
directives: ['Ripple', 'ClosePopup'],
plugins: [
'Meta',
'Dialog',
'Notify',
@@ -319,101 +237,41 @@ export default defineConfig((ctx) => {
'LocalStorage',
'SessionStorage',
],
get plugins_1() {
return this._plugins;
},
set plugins_1(value) {
this._plugins = value;
},
get plugins() {
return this._plugins;
},
set plugins(value) {
this._plugins = value;
},
iconSet: 'fontawesome-v5',
lang: 'it', // Quasar language
iconSet: 'material-icons',
lang: 'it',
},
animations: 'all', // --- includes all animations
// https://v2.quasar.dev/options/animations
// animations: [],
animations: 'all',
// https://v2.quasar.dev/quasar-cli/developing-ssr/configuring-ssr
ssr: {
pwa: false,
// manualStoreHydration: true,
// manualPostHydrationTrigger: true,
prodPort: 3000, // The default port that the production server should use
// (gets superseded if import.meta.env.PORT is specified at runtime)
prodPort: 3000,
maxAge: 1000 * 60 * 60 * 24 * 30,
// Tell browser when a file from the server should expire from cache (in ms)
middlewares: [
ctx.prod ? 'compression' : '',
'render', // keep this as last one
],
middlewares: [ctx.prod ? 'compression' : '', 'render'],
},
// https://v2.quasar.dev/quasar-cli/developing-pwa/configuring-pwa
pwa: {
workboxMode: 'InjectManifest', // 'GenerateSW' or 'InjectManifest'
swFilename: 'sw-' + "1.2.2" + '.js',
workboxMode: 'InjectManifest',
swFilename: 'sw-' + process.env.APP_VERSION + '.js',
workboxOptions: {
swSrc: 'src-pwa/custom-service-worker.js', // Assicurati che il file esista
},
extendGenerateSWOptions(cfg) {
cfg.skipWaiting = false
cfg.clientsClaim = false
swSrc: 'src-pwa/custom-service-worker.js',
include: [/\.html$/, /\.js$/, /\.css$/, /\.png$/, /\.svg$/, /\.json$/],
},
suppressWarnings: true,
},
sourceFiles: {
// DEFAULT: pwaRegisterServiceWorker: 'src-pwa/register-service-worker',
// DEFAULT: pwaServiceWorker: 'src-pwa/custom-service-worker',
// DEFAULT: pwaManifestFile: 'src-pwa/manifest.json',
// ...
pwaRegisterServiceWorker: 'src-pwa/register-service-worker',
pwaServiceWorker: 'src-pwa/custom-service-worker',
pwaManifestFile: 'src-pwa/manifest.json',
},
// Full list of options: https://v2.quasar.dev/quasar-cli/developing-cordova-apps/configuring-cordova
cordova: {
// noIosLegacyBuildFlag: true, // uncomment only if you know what you are doing
},
// Full list of options: https://v2.quasar.dev/quasar-cli/developing-capacitor-apps/configuring-capacitor
capacitor: {
hideSplashscreen: true,
},
// Full list of options: https://v2.quasar.dev/quasar-cli/developing-electron-apps/configuring-electron
cordova: {},
capacitor: { hideSplashscreen: true },
electron: {
bundler: 'packager', // 'packager' or 'builder'
packager: {
// https://github.com/electron-userland/electron-packager/blob/master/docs/api.md#options
// OS X / Mac App Store
// appBundleId: '',
// appCategoryType: '',
// osxSign: '',
// protocol: 'myapp://path',
// Windows only
// win32metadata: { ... }
},
builder: {
// https://www.electron.build/configuration/configuration
appId: 'Riso',
},
bundler: 'packager',
packager: {},
builder: { appId: '-' },
},
}
})
};
});

BIN
riso-logo-full.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 142 KiB

View File

@@ -1,11 +1,11 @@
VITE_APP_ID="...."
VITE_APP_URL="https://riso.app"
VITE_APP_ID="10"
VITE_APP_URL="https://comunitanuovomondo.app"
VITE_MONGODB_HOST="https://www.freeplanet.app:3000"
VITE_LOGO_REG='riso-logo-full.png'
VITE_LOGO_REG='cnm-logo-full.png'
VITE_PUBLICKEY_PUSH="BNM-cEpTbPVc_ujXf3QOC8ggf7b-X44P44esfJUWqNOFq1XhWCoZJpOi71_cbXC5SnfO9HassQ6OouAYgtBA9Pw"
VITE_DEBUG="1"
VITE_VUE_APP_ISTEST=0
DIRECTORY_LOCAL=newfreeplanet
DIRECTORY_SERVER=freeplanet_serverside
SERVERDIR_WEBSITE=riso.app
SERVERPW_WEBSITE=pwdadmin@1AOK
DIRECTORY_LOCAL="myprojplanet_vite"
DIRECTORY_SERVER="/var/www/nodejs_riso_server"
SERVERDIR_WEBSITE="/var/www/comunitanuovomondo.app"
SERVERPW_WEBSITE="pwdadmin@1AOK"

View File

@@ -1,11 +1,11 @@
VITE_APP_ID="16"
VITE_APP_URL="https://test.piuchebuono.app"
VITE_APP_ID="10"
VITE_APP_URL="https://test.comunitanuovomondo.app"
VITE_MONGODB_HOST="https://test.freeplanet.app:3001"
VITE_LOGO_REG='piuchebuono-logo-full.png'
VITE_LOGO_REG='cmn-logo-full.png'
VITE_PUBLICKEY_PUSH="BGXRf1TgcqocqD6J7qnRgCG7AvM2lxAoW7peb7UEzB4SxBb6DxGRdJ0UvD9ewnrB9KrSrh0-aDCODXBm7sZ1DDs"
VITE_DEBUG="1"
VITE_VUE_APP_ISTEST=1
DIRECTORY_LOCAL=newfreeplanet
DIRECTORY_SERVER=test.freeplanet_serverside
SERVERDIR_WEBSITE="test.piuchebuono.app"
SERVERPW_WEBSITE="pwdadmin@1AOK"
DIRECTORY_LOCAL="myprojplanet_vite"
DIRECTORY_SERVER="/var/www/nodejs_test.riso_server"
SERVERDIR_WEBSITE="/var/www/test.comunitanuovomondo.app"
SERVERPW_WEBSITE="pwdadmin@1AOK"

File diff suppressed because it is too large Load Diff

Before

Width:  |  Height:  |  Size: 90 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 30 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 138 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 185 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 21 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 23 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 30 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 33 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 42 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 44 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 634 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 258 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 124 KiB

View File

@@ -1,87 +1,86 @@
{
"name": "riso",
"version": "1.2.2",
"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",
"name": "cnm",
"version": "1.2.86",
"description": "Comunita Nuovo Mondo",
"productName": "ComunitaNuovoMondo",
"author": "Surya",
"private": true,
"keywords": [],
"license": "MIT",
"type": "module",
"scripts": {
"dev": "quasar dev",
"build": "NODE_ENV=production quasar build",
"dev": "PORT=8083 APP_VERSION='1.2.86' quasar dev",
"dev_noCheck": "SKIP_TSC=true quasar dev",
"build": "quasar build",
"buildpwa": "NODE_ENV=production quasar build -m pwa",
"buildpwatest": "NODE_ENV=test quasar build -m pwa",
"buildspa": "NODE_ENV=production quasar build -m spa",
"lint": "eslint --ext .js,.ts,.vue --ignore-path .gitignore ./",
"buildpwatest": "NODE_ENV=production quasar build -m pwa",
"type-check": "vue-tsc --noEmit",
"type-check:watch": "vue-tsc --noEmit --watch",
"buildspa": "quasar build -m spa",
"lint": "eslint -c ./eslint.config.js \"./src*/**/*.{ts,js,cjs,mjs,vue}\"",
"lintfile": "eslint --ext .js,.ts,.vue --ignore-path .gitignore ./ > file.out.txt",
"lintfileNoJS": "eslint --ext .ts,.vue --ignore-path .gitignore ./ > file.out.txt",
"fix": "eslint --ext .ts,.vue --ignore-path .gitignore ./ --fix > file.out.txt",
"pwa": "NODE_ENV=development NODE_OPTIONS=--max_old_space_size=6096 DEBUG=v8:* quasar dev -m pwa",
"spa": "NODE_ENV=development NODE_OPTIONS=--max_old_space_size=4096 DEBUG=v8:* quasar dev --debug",
"debug": "NODE_ENV=development NODE_OPTIONS=--max_old_space_size=4096 DEBUG=v8:* quasar dev --mode debug",
"fix": "eslint -c ./eslint.config.js \"./src*/**/*.{ts,js,cjs,mjs,vue}\" --ignore-pattern .gitignore ./ --fix > file.out.txt",
"pwa": "NODE_ENV=development PORT=8093 APP_VERSION='1.2.86' quasar dev -m pwa",
"spa": "NODE_ENV=development PORT=8083 APP_VERSION='1.2.86' quasar dev",
"debug": "quasar dev --mode debug",
"test": "echo \"No test specified\" && exit 0",
"generate-sw": "workbox generateSW workbox-config.js"
"generate-sw": "workbox generateSW workbox-config.js",
"postinstall": "quasar prepare"
},
"dependencies": {
"@babel/plugin-proposal-class-properties": "^7.18.6",
"@babel/plugin-proposal-export-namespace-from": "^7.18.9",
"@babel/plugin-proposal-json-strings": "^7.18.6",
"@babel/plugin-proposal-numeric-separator": "^7.18.6",
"@babel/runtime": "^7.25.7",
"@cubejs-client/core": "^0.36.4",
"@quasar/extras": "^1.16.12",
"@quasar/quasar-ui-qcalendar": "^4.0.0-beta.19",
"@types/leaflet": "^1.9.12",
"@vue/compat": "^3.5.10",
"@vue/compiler-sfc": "^3.5.10",
"@vue/eslint-config-standard": "^8.0.1",
"@cubejs-client/core": "^1.2.26",
"@quasar/extras": "^1.16.17",
"@quasar/quasar-ui-qcalendar": "^4.1.2",
"@types/jsbarcode": "^3.11.4",
"@types/leaflet": "^1.9.17",
"@vue/compat": "^3.5.13",
"@vue/compiler-sfc": "^3.5.13",
"@vuelidate/core": "^2.0.3",
"@vuelidate/validators": "^2.0.4",
"acorn": "^8.12.1",
"acorn": "^8.14.1",
"animate.css": "^4.1.1",
"autoprefixer": "^10.4.20",
"axios": "^1.7.7",
"bcryptjs": "^2.4.3",
"chart.js": "^4.4.4",
"core-js": "^3.38.1",
"crypto-browserify": "^3.12.0",
"autoprefixer": "^10.4.21",
"axios": "^1.8.4",
"bcryptjs": "^3.0.2",
"chart.js": "^4.4.8",
"core-js": "^3.41.0",
"crypto-browserify": "^3.12.1",
"date-fns": "^4.1.0",
"dotenv": "^16.4.5",
"echarts": "5.5.1",
"eslint-plugin-n": "^17.10.3",
"echarts": "5.6.0",
"eslint-plugin-n": "^17.16.2",
"eslint-plugin-quasar": "^1.1.0",
"graphql": "^16.9.0",
"graphql": "^16.10.0",
"graphql-tag": "^2.12.6",
"gsap": "^3.12.5",
"html2pdf.js": "^0.10.2",
"gsap": "^3.12.7",
"html2pdf.js": "^0.10.3",
"jquery": "^3.7.1",
"js-cookie": "^3.0.5",
"jsbarcode": "^3.11.6",
"leaflet": "^1.9.4",
"leaflet-routing-machine": "^3.2.12",
"leaflet.markercluster": "^1.5.3",
"localforage": "^1.10.0",
"lodash": "^4.17.21",
"normalize.css": "^8.0.1",
"npm": "^10.8.3",
"nprogress": "^0.2.0",
"pinia": "^2.2.4",
"pinia": "^3.0.1",
"qrcode-vue3": "^1.7.1",
"quasar": "^2.17.0",
"quasar": "^2.18.1",
"quasar-extras": "^2.0.9",
"register-service-worker": "^1.7.2",
"typescript-eslint": "^8.8.0",
"vee-validate": "^4.13.2",
"vue": "^3.5.10",
"scrollreveal": "^4.0.9",
"typescript-eslint": "^8.27.0",
"vee-validate": "^4.15.0",
"vue": "^3.5.13",
"vue-class-component": "^8.0.0-rc.1",
"vue-country-code": "^1.1.3",
"vue-echarts": "^7.0.3",
"vue-i18n": "^9.14.1",
"vue-i18n": "^11.1.2",
"vue-idb": "^0.2.0",
"vue-image-zoomer": "^2.4.1",
"vue-loader": "^17.4.2",
"vue-image-zoomer": "^2.4.4",
"vue-property-decorator": "^10.0.0-rc.3",
"vue-router": "^4.4.5",
"vue-router": "^4.5.0",
"vue-scroll-reveal": "^2.1.0",
"vue-social-sharing": "^4.0.0-alpha4",
"vue-svgicon": "^4.0.0-alpha.3",
@@ -90,79 +89,55 @@
"vue3-pdf-app": "^1.0.3",
"vue3-qr-reader": "^1.0.0",
"vuex": "^4.1.0",
"vuex-router-sync": "^6.0.0-rc.1"
"vuex-router-sync": "^6.0.0-rc.1",
"workbox-core": "^7.3.0",
"workbox-precaching": "^7.3.0",
"workbox-routing": "^7.3.0",
"workbox-strategies": "^7.3.0",
"workbox-window": "^7.3.0"
},
"devDependencies": {
"@babel/core": "^7.25.7",
"@babel/plugin-transform-class-properties": "^7.25.7",
"@babel/plugin-transform-export-namespace-from": "^7.25.7",
"@babel/plugin-transform-json-strings": "^7.25.7",
"@babel/plugin-transform-numeric-separator": "^7.25.7",
"@babel/plugin-transform-runtime": "^7.25.7",
"@quasar/app-webpack": "^3.14.0",
"@types/bcryptjs": "^2.4.6",
"@types/dotenv": "^8.2.0",
"@eslint/js": "^9.23.0",
"@intlify/unplugin-vue-i18n": "^6.0.5",
"@quasar/app-vite": "^2.1.4",
"@types/google.maps": "^3.58.1",
"@types/jest": "^29.5.13",
"@types/jest": "^29.5.14",
"@types/js-cookie": "^3.0.6",
"@types/node": "22.7.4",
"@types/node": "^22.13.11",
"@types/nprogress": "^0.2.3",
"@types/vue-tel-input": "^2.1.7",
"@types/vuelidate": "^0.7.21",
"@typescript-eslint/eslint-plugin": "^8.8.0",
"@typescript-eslint/parser": "^8.8.0",
"babel-loader": "^9.2.1",
"copy-webpack-plugin": "^12.0.2",
"eslint": "^9.11.1",
"eslint-config-prettier": "^9.1.0",
"@types/vuelidate": "^0.7.22",
"@vue/devtools": "^7.7.2",
"@vue/eslint-config-prettier": "^10.2.0",
"@vue/eslint-config-typescript": "^14.5.0",
"autoprefixer": "^10.4.21",
"eslint": "9",
"eslint-plugin-import": "^2.31.0",
"eslint-plugin-node": "^11.1.0",
"eslint-plugin-promise": "^7.1.0",
"eslint-plugin-vue": "^9.28.0",
"eslint-plugin-vue": "^10.0.0",
"file-loader": "^6.2.0",
"fork-ts-checker-webpack-plugin": "^9.0.2",
"friendly-errors-webpack-plugin": "^1.7.0",
"html-webpack-plugin": "^5.6.0",
"http-proxy-middleware": "^3.0.2",
"globals": "^16.0.0",
"http-proxy-middleware": "^3.0.3",
"jest": "^29.7.0",
"json-loader": "^0.5.7",
"node-sass": "^9.0.0",
"nodemon": "^3.1.7",
"npm-check-updates": "^17.1.3",
"optimize-css-assets-webpack-plugin": "^6.0.1",
"parcel": "^2.12.0",
"postcss": "^8.4.47",
"nodemon": "^3.1.9",
"npm-check-updates": "^17.1.16",
"parcel": "^2.14.1",
"postcss": "^8.5.3",
"postcss-loader": "^8.1.1",
"sass-loader": "^16.0.2",
"prettier": "3",
"strip-ansi": "=7.1.0",
"ts-jest": "^29.2.5",
"ts-loader": "^9.5.1",
"typescript": "5.6.2",
"ts-jest": "^29.2.6",
"typescript": "5.7.3",
"vite-plugin-checker": "^0.9.1",
"vue-cli-plugin-element-ui": "^1.1.4",
"vue-eslint-parser": "^10.1.1",
"vue-tsc": "^2.2.8",
"vueify": "^9.4.1",
"webpack": "^5.95.0",
"webpack-dashboard": "^3.3.8",
"workbox-webpack-plugin": "^7.1.0"
"workbox-build": "^7.3.0"
},
"browser": {
"crypto": false
},
"browserslist": [
"last 100 Chrome versions",
"last 40 Firefox versions",
"last 20 Edge versions",
"last 55 Safari versions",
"last 90 Android versions",
"last 250 ChromeAndroid versions",
"last 60 FirefoxAndroid versions",
"last 35 iOS versions",
"last 10 Opera versions",
"> 0.03%",
"not dead"
],
"engines": {
"node": ">= 18.18.0",
"npm": ">= 6.14.8",
"node": "^28 || ^26 || ^24 || ^22 || ^20 || ^18",
"npm": ">= 6.13.4",
"yarn": ">= 1.21.1"
}
}
}

View File

@@ -0,0 +1,22 @@
.gu-mirror {
position: fixed !important;
margin: 0 !important;
z-index: 9999 !important;
opacity: 0.8;
-ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=80)";
filter: alpha(opacity=80);
}
.gu-hide {
display: none !important;
}
.gu-unselectable {
-webkit-user-select: none !important;
-moz-user-select: none !important;
-ms-user-select: none !important;
user-select: none !important;
}
.gu-transit {
opacity: 0.2;
-ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=20)";
filter: alpha(opacity=20);
}

View File

Before

Width:  |  Height:  |  Size: 1.1 KiB

After

Width:  |  Height:  |  Size: 1.1 KiB

Some files were not shown because too many files have changed in this diff Show More