- Aggiornamento QUASAR
This commit is contained in:
Surya Paolo
2025-02-06 19:00:19 +01:00
parent 2533da3692
commit 4da257e43a
57 changed files with 3596699 additions and 4803 deletions

View File

@@ -1,19 +1,20 @@
APP_VERSION="1.1.20"
SERVICE_WORKER_FILE="service-worker.js"
APP_ID="13"
APP_ID="18"
DIRECTORY_LOCAL="newfreeplanet"
DIRECTORY_SERVER="freeplanet_serverside"
SERVERDIR_WEBSITE=""
SERVERPW_WEBSITE=""
APP_URL="https://localhost"
URL_FACEBOOK="https://www.facebook.com/freeplanetapp"
PROVA_PAOLO="PROVA ENV FUNZIONA!"
LANG_DEFAULT="it"
PAO_APP_ID="KKPPAA5KJK435J3KSS9F9D8S9F8SD98F9SDF"
MASTER_KEY="KKPPSS5KJK435J3KSS9F9D8S9F8SD3CR3T"
MONGODB_HOST="https://localhost:3000"
LOGO_REG='riso-logo-full.png'
TEST_NAME="Paolo"
TEST_SURNAME="Arena"
LOGO_REG='gruppomacro-logo-full.png'
TEST_NAME="Surya"
TEST_SURNAME=""
TEST_EMAIL=""
TEST_USERNAME=""
TEST_PASSWORD=""
@@ -24,5 +25,5 @@ DEBUG="1"
TELEGRAM_SUPPORT=""
PROJECT_ID_MAIN="5cc0a13fe5c9d156728f400a"
TEST_CELL=""
VUE_APP_ISTEST="1"
VUE_APP_INLOCALE="1"
VUE_APP_ISTEST=1
VUE_APP_INLOCALE=1

27
.env.production Normal file
View File

@@ -0,0 +1,27 @@
APP_VERSION="1.1.20"
SERVICE_WORKER_FILE="service-worker.js"
APP_ID="13"
DIRECTORY_LOCAL=newfreeplanet
DIRECTORY_SERVER=freeplanet_serverside
SERVERDIR_WEBSITE=riso.app
SERVERPW_WEBSITE=pwdadmin@1AOK
APP_URL="https://riso.app"
URL_FACEBOOK=""
PROVA_PAOLO=""
LANG_DEFAULT="it"
PAO_APP_ID="KKPPAA5KJK435J3KSS9F9D8S9F8SD98F9SDF"
MASTER_KEY="KKPPSS5KJK435J3KSS9F9D8S9F8SD3CR3T"
MONGODB_HOST="https://www.freeplanet.app:3000"
LOGO_REG='riso-logo-full.png'
TEST_NAME=""
TEST_SURNAME=""
TEST_EMAIL=""
TEST_USERNAME=""
TEST_PASSWORD=""
TEST_APORTADOR="------"
PUBLICKEY_PUSH="BNM-cEpTbPVc_ujXf3QOC8ggf7b-X44P44esfJUWqNOFq1XhWCoZJpOi71_cbXC5SnfO9HassQ6OouAYgtBA9Pw"
DEBUG="1"
TELEGRAM_SUPPORT=""
PROJECT_ID_MAIN="5cc0a13fe5c9d156728f400a"
TEST_CELL=""
VUE_APP_ISTEST=0

4
.gitignore vendored
View File

@@ -1,4 +1,6 @@
.env.production
.env.development
.env.test.*
.env.prod.*
.DS_Store
.thumbs.db
node_modules

View File

@@ -0,0 +1,27 @@
APP_VERSION="1.1.20"
SERVICE_WORKER_FILE="service-worker.js"
APP_ID="19"
DIRECTORY_LOCAL=newfreeplanet
DIRECTORY_SERVER=freeplanet_serverside
SERVERDIR_WEBSITE=abitaregliiblei.it
SERVERPW_WEBSITE=pwdadmin@1AOK
APP_URL="https://abitaregliiblei.it"
URL_FACEBOOK=""
PROVA_PAOLO=""
LANG_DEFAULT="it"
PAO_APP_ID="KKPPAA5KJK435J3KSS9F9D8S9F8SD98F9SDF"
MASTER_KEY="KKPPSS5KJK435J3KSS9F9D8S9F8SD3CR3T"
MONGODB_HOST="https://api.abitaregliiblei.it"
LOGO_REG='abitaregliiblei-logo-full.png'
TEST_NAME=""
TEST_SURNAME=""
TEST_EMAIL=""
TEST_USERNAME=""
TEST_PASSWORD=""
TEST_APORTADOR="------"
PUBLICKEY_PUSH="BNM-cEpTbPVc_ujXf3QOC8ggf7b-X44P44esfJUWqNOFq1XhWCoZJpOi71_cbXC5SnfO9HassQ6OouAYgtBA9Pw"
DEBUG="1"
TELEGRAM_SUPPORT=""
PROJECT_ID_MAIN="5cc0a13fe5c9d156728f400a"
TEST_CELL=""
VUE_APP_ISTEST=0

View File

@@ -0,0 +1,27 @@
APP_VERSION="1.1.20"
SERVICE_WORKER_FILE="service-worker.js"
APP_ID="13"
DIRECTORY_LOCAL=newfreeplanet
DIRECTORY_SERVER=freeplanet_serverside
SERVERDIR_WEBSITE=riso.app
SERVERPW_WEBSITE=pwdadmin@1AOK
APP_URL="https://riso.app"
URL_FACEBOOK=""
PROVA_PAOLO=""
LANG_DEFAULT="it"
PAO_APP_ID="KKPPAA5KJK435J3KSS9F9D8S9F8SD98F9SDF"
MASTER_KEY="KKPPSS5KJK435J3KSS9F9D8S9F8SD3CR3T"
MONGODB_HOST="https://www.freeplanet.app:3000"
LOGO_REG='riso-logo-full.png'
TEST_NAME=""
TEST_SURNAME=""
TEST_EMAIL=""
TEST_USERNAME=""
TEST_PASSWORD=""
TEST_APORTADOR="------"
PUBLICKEY_PUSH="BNM-cEpTbPVc_ujXf3QOC8ggf7b-X44P44esfJUWqNOFq1XhWCoZJpOi71_cbXC5SnfO9HassQ6OouAYgtBA9Pw"
DEBUG="1"
TELEGRAM_SUPPORT=""
PROJECT_ID_MAIN="5cc0a13fe5c9d156728f400a"
TEST_CELL=""
VUE_APP_ISTEST=0

View File

@@ -0,0 +1,27 @@
APP_VERSION="1.1.20"
SERVICE_WORKER_FILE="service-worker.js"
APP_ID="15"
DIRECTORY_LOCAL=newfreeplanet
DIRECTORY_SERVER=freeplanet_serverside
SERVERDIR_WEBSITE=fioredellavita.riso.app
SERVERPW_WEBSITE=pwdadmin@1AOK
APP_URL="https://fioredellavita.riso.app"
URL_FACEBOOK=""
PROVA_PAOLO=""
LANG_DEFAULT="it"
PAO_APP_ID="KKPPAA5KJK435J3KSS9F9D8S9F8SD98F9SDF"
MASTER_KEY="KKPPSS5KJK435J3KSS9F9D8S9F8SD3CR3T"
MONGODB_HOST="https://www.freeplanet.app:3000"
LOGO_REG='fioredellavita-logo-full.png'
TEST_NAME=""
TEST_SURNAME=""
TEST_EMAIL=""
TEST_USERNAME=""
TEST_PASSWORD=""
TEST_APORTADOR="------"
PUBLICKEY_PUSH="BNM-cEpTbPVc_ujXf3QOC8ggf7b-X44P44esfJUWqNOFq1XhWCoZJpOi71_cbXC5SnfO9HassQ6OouAYgtBA9Pw"
DEBUG="1"
TELEGRAM_SUPPORT=""
PROJECT_ID_MAIN="5cc0a13fe5c9d156728f400a"
TEST_CELL=""
VUE_APP_ISTEST=0

View File

@@ -0,0 +1,27 @@
APP_VERSION="0.5.28"
SERVICE_WORKER_FILE="service-worker.js"
APP_ID="16"
DIRECTORY_LOCAL=newfreeplanet
DIRECTORY_SERVER=freeplanet_serverside
SERVERDIR_WEBSITE=kolibrilab.it
SERVERPW_WEBSITE=pwdadmin@1AOK
APP_URL="https://kolibrilab.it"
URL_FACEBOOK=""
PROVA_PAOLO=""
LANG_DEFAULT="it"
PAO_APP_ID="KKPPAA5KJK435J3KSS9F9D8S9F8SD98F9SDF"
MASTER_KEY="KKPPSS5KJK435J3KSS9F9D8S9F8SD3CR3T"
MONGODB_HOST="https://www.freeplanet.app:3000"
LOGO_REG='kolibrilab-logo-full.png'
TEST_NAME=""
TEST_SURNAME=""
TEST_EMAIL=""
TEST_USERNAME=""
TEST_PASSWORD=""
TEST_APORTADOR="------"
PUBLICKEY_PUSH="BNM-cEpTbPVc_ujXf3QOC8ggf7b-X44P44esfJUWqNOFq1XhWCoZJpOi71_cbXC5SnfO9HassQ6OouAYgtBA9Pw"
DEBUG="1"
TELEGRAM_SUPPORT=""
PROJECT_ID_MAIN="5cc0a13fe5c9d156728f400a"
TEST_CELL=""
VUE_APP_ISTEST=0

View File

@@ -1 +1 @@
TERMINA DI LAVORARE SU gruppomacro.app: (Sovrascrivo !)
TERMINA DI LAVORARE SU riso.app: (Sovrascrivo !)

View File

@@ -28,32 +28,32 @@
"@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",
"@babel/runtime": "^7.26.7",
"@cubejs-client/core": "^1.2.1",
"@quasar/extras": "^1.16.16",
"@quasar/quasar-ui-qcalendar": "^4.1.1",
"@types/leaflet": "^1.9.16",
"@vue/compat": "^3.5.13",
"@vue/compiler-sfc": "^3.5.13",
"@vue/eslint-config-standard": "^8.0.1",
"@vuelidate/core": "^2.0.3",
"@vuelidate/validators": "^2.0.4",
"acorn": "^8.12.1",
"acorn": "^8.14.0",
"animate.css": "^4.1.1",
"autoprefixer": "^10.4.20",
"axios": "^1.7.7",
"axios": "^1.7.9",
"bcryptjs": "^2.4.3",
"chart.js": "^4.4.4",
"core-js": "^3.38.1",
"crypto-browserify": "^3.12.0",
"chart.js": "^4.4.7",
"core-js": "^3.40.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",
"dotenv": "^16.4.7",
"echarts": "5.6.0",
"eslint-plugin-n": "^17.15.1",
"eslint-plugin-quasar": "^1.1.0",
"graphql": "^16.9.0",
"graphql": "^16.10.0",
"graphql-tag": "^2.12.6",
"gsap": "^3.12.5",
"gsap": "^3.12.7",
"html2pdf.js": "^0.10.2",
"jquery": "^3.7.1",
"js-cookie": "^3.0.5",
@@ -63,25 +63,25 @@
"localforage": "^1.10.0",
"lodash": "^4.17.21",
"normalize.css": "^8.0.1",
"npm": "^10.8.3",
"npm": "^10.8.0",
"nprogress": "^0.2.0",
"pinia": "^2.2.4",
"pinia": "^2.3.1",
"qrcode-vue3": "^1.7.1",
"quasar": "^2.17.0",
"quasar": "^2.17.7",
"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",
"typescript-eslint": "^8.23.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.0",
"vue-idb": "^0.2.0",
"vue-image-zoomer": "^2.4.1",
"vue-image-zoomer": "^2.4.4",
"vue-loader": "^17.4.2",
"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",
@@ -93,54 +93,54 @@
"vuex-router-sync": "^6.0.0-rc.1"
},
"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",
"@babel/core": "^7.26.7",
"@babel/plugin-transform-class-properties": "^7.25.9",
"@babel/plugin-transform-export-namespace-from": "^7.25.9",
"@babel/plugin-transform-json-strings": "^7.25.9",
"@babel/plugin-transform-numeric-separator": "^7.25.9",
"@babel/plugin-transform-runtime": "^7.25.9",
"@quasar/app-webpack": "3.15.1",
"@types/bcryptjs": "^2.4.6",
"@types/dotenv": "^8.2.0",
"@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.1",
"@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",
"@types/vuelidate": "^0.7.22",
"@typescript-eslint/eslint-plugin": "^8.23.0",
"@typescript-eslint/parser": "^8.23.0",
"babel-loader": "^9.2.1",
"copy-webpack-plugin": "^12.0.2",
"eslint": "^9.11.1",
"eslint-config-prettier": "^9.1.0",
"eslint": "^9.19.0",
"eslint-config-prettier": "9.1.0",
"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-promise": "^7.2.1",
"eslint-plugin-vue": "^9.32.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",
"html-webpack-plugin": "^5.6.3",
"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",
"nodemon": "^3.1.9",
"npm-check-updates": "^17.1.14",
"optimize-css-assets-webpack-plugin": "^6.0.1",
"parcel": "^2.12.0",
"postcss": "^8.4.47",
"parcel": "^2.13.3",
"postcss": "^8.5.1",
"postcss-loader": "^8.1.1",
"sass-loader": "^16.0.2",
"sass-loader": "^16.0.4",
"strip-ansi": "=7.1.0",
"ts-jest": "^29.2.5",
"ts-loader": "^9.5.1",
"ts-loader": "^9.5.2",
"typescript": "5.6.2",
"vue-cli-plugin-element-ui": "^1.1.4",
"vueify": "^9.4.1",
"webpack": "^5.95.0",
"webpack": "^5.97.1",
"webpack-dashboard": "^3.3.8",
"workbox-webpack-plugin": "^7.1.0"
},

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

File diff suppressed because it is too large Load Diff

Binary file not shown.

Before

Width:  |  Height:  |  Size: 42 KiB

File diff suppressed because it is too large Load Diff

Before

Width:  |  Height:  |  Size: 90 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 30 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 158 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 27 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 81 KiB

BIN
public/images/novita.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

BIN
public/images/ombra.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 30 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 30 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 43 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: 424 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 279 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 258 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 124 KiB

View File

@@ -43,8 +43,7 @@ module.exports = configure((ctx) => ({
// https://v2.quasar.dev/quasar-cli/quasar-conf-js#Property%3A-css
css: [
'app.scss',
// '~quasar-ui-qcalendar/src/css/calendar-day.sass'
'app.scss' // '~quasar-ui-qcalendar/src/css/calendar-day.sass'
],
// https://github.com/quasarframework/quasar/tree/dev/extras
@@ -152,9 +151,9 @@ module.exports = configure((ctx) => ({
},
devServer: {
https: false,
port: 8084,
port: 8089,
open: false, // opens browser window automatically
hot: false, // Disable hot module replacement
hot: true, // Disable hot module replacement
headers: {
'Access-Control-Allow-Origin': '*',
'Access-Control-Allow-Headers': '*',
@@ -253,6 +252,7 @@ module.exports = configure((ctx) => ({
'AppVisibility',
'LocalStorage',
'SessionStorage',
],
get plugins_1() {
return this._plugins;
@@ -313,9 +313,9 @@ module.exports = configure((ctx) => ({
},
manifest: {
name: 'Riso',
short_name: 'Riso',
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.',
name: 'Gruppo Macro',
short_name: 'GruppoMacro',
description: '',
display: 'standalone',
orientation: 'portrait',
background_color: '#fff',
@@ -325,54 +325,24 @@ module.exports = configure((ctx) => ({
start_url: "/?homescreen=1",
icons: [
{
src: 'images/riso-android-icon-512x512.png',
src: 'images/gm-android-icon-512x512.png',
sizes: '512x512',
type: 'image/png',
},
{
src: 'images/riso-android-icon-384x384.png',
sizes: '384x384',
type: 'image/png',
},
{
src: 'images/riso-android-icon-192x192.png',
src: 'images/gm-android-icon-192x192.png',
sizes: '192x192',
type: 'image/png',
},
{
src: 'images/riso-android-icon-144x144.png',
sizes: '144x144',
type: 'image/png',
},
{
src: 'images/riso-android-icon-96x96.png',
sizes: '96x96',
type: 'image/png',
},
{
src: 'images/riso-apple-icon-120x120.png',
sizes: '120x120',
type: 'image/png',
},
{
src: 'images/riso-apple-icon-144x144.png',
sizes: '144x144',
type: 'image/png',
},
{
src: 'images/riso-apple-icon-152x152.png',
sizes: '152x152',
type: 'image/png',
},
{
src: 'images/riso-apple-icon-180x180.png',
src: 'images/gm-apple-touch-icon.png',
sizes: '180x180',
type: 'image/png',
},
],
related_applications: [{
"platform": "webapp",
"url": "https://www.riso.app/manifest.json"
"url": "https://www.gruppomacro.app/manifest.json"
}]
},
},
@@ -407,7 +377,7 @@ module.exports = configure((ctx) => ({
builder: {
// https://www.electron.build/configuration/configuration
appId: 'Riso',
appId: 'GruppoMacro',
},
// "chain" is a webpack-chain object https://github.com/neutrinojs/webpack-chain

View File

@@ -1,78 +1,10 @@
.colmodif {
cursor: pointer;
}
.coldate {
max-width: 250px;
min-width: 200px;
}
.tdclass, .trclass{
min-height: 20px !important;
margin-top: 5px;
}
.q-table td {
padding-left: 1px;
padding-right: 2px;
padding-top: 0;
padding-bottom: 0;
&__title {
font-size: 1rem;
}
}
.q-table {
&__col {
font-size: 1rem;
color: gray;
}
}
.newrec_fields{
display: flex;
padding: 2px;
margin: 2px;
align-items: center;
justify-content: center;
}
.riduci_pad {
min-height: 30px;
padding: 4px 8px !important;
}
.q-table__top{
padding-top: 0 !important;
}
.barselection {
padding: 0;
flex-wrap: nowrap;
display: flex;
align-items: center;
justify-content: space-between;
}
.myitem {
padding: 0px 0px 0px 0px !important;
}
.myitem-0 {
flex-grow: 0;
padding-left: 2px;
}
.myitem-1 {
flex-grow: 0;
}
.myitem-2 {
flex-grow: 0;
}
.myitem-3 {
flex-grow: 1;
.response-content {
white-space: pre-wrap;
word-break: break-word;
font-family: monospace;
font-size: 14px;
line-height: 1.5;
padding: 10px;
background-color: #f8f8f8;
border-radius: 4px;
}

View File

@@ -11,6 +11,8 @@ import { useQuasar } from 'quasar'
import { costanti } from '@costanti'
import { useRouter } from 'vue-router'
import { serv_constants } from '@store/Modules/serv_constants'
export default defineComponent({
name: 'CAITools',
props: {
@@ -26,14 +28,144 @@ export default defineComponent({
const $router = useRouter()
const options = ref(<any>{})
const querySel = ref('')
const contestSysteList = [
{ label: 'Standard', value: '' },
{ label: 'Matematica', value: 'Sei un esperto in Matematica' },
{ label: 'Editoriale', value: 'Sei un esperto in Editoria e scrittura di articoli e blog' },
{ label: 'Programmazione', value: 'Sei un esperto in programmazione' },
]
const modelList = [
{ label: 'DeepSeek', value: 'deepseek-chat' },
]
const outputTypeList = [
{ label: 'Formato Testo', value: 'Ritornami l\'output in formato testo' },
{ label: 'Per Telegram', value: 'Ritornami l\'output formattato per incollarlo sulla chat Telegram, usando delle emoticons in punti chiave e il grassetto (**) nelle parole chiave.' },
{ label: 'Formato JSON', value: 'Ritornami l\'output in formato JSON' },
{ label: 'Formato CSV (campi separati da \'|\')', value: 'Ritornami l\'output in formato CSV, con i campi separati da \'|\'' },
]
const tempList = [{ label: 'Temperatura a 0.3', value: 0.3 },
{ label: 'Temperatura a 0.5', value: 0.5 },
{ label: 'Temperatura a 1', value: 1 },
{ label: 'Temperatura a 1.2', value: 1.2 },
{ label: 'Temperatura a 1.5', value: 1.5 },
]
const tokenList = [
{ label: '50 Token', value: 50 },
{ label: '100 Token', value: 100 },
{ label: '200 Token', value: 200 },
{ label: '500 Token', value: 500 },
{ label: '1000 Token', value: 1000 },
{ label: '2500 Token', value: 2500 },
{ label: '4000 Token', value: 4000 },
{ label: '5000 Token', value: 5000 },
{ label: '10000 Token', value: 10000 },
]
const model = ref('deepseek-chat')
const max_tokens = ref(100)
const outputType = ref('')
const temp = ref(0.3)
const stream = ref(false)
const contestsystem = ref('')
const inputPrompt = ref('');
const result = ref('');
const isLoading = ref(false);
const errorMessage = ref('');
const finish_reason = ref('');
const withexplain = ref(false);
const querylist = ref(<any[]>[])
const modelLabel = computed(() => {
const foundModel = modelList.find((item: any) => item.value === model.value);
return foundModel ? foundModel.label : null;
})
function mount() {
// Mount
querylist.value = globalStore.getQueryAI()
outputType.value = outputTypeList[0].value
}
async function handleSubmit() {
isLoading.value = true;
errorMessage.value = '';
result.value = '';
options.value = {
model: model.value,
max_tokens: max_tokens.value,
temp: temp.value,
stream: stream.value,
withexplain: withexplain.value,
}
try {
const resdata = await globalStore.getQueryDS(inputPrompt.value, options.value)
if (resdata.code === serv_constants.RIS_CODE_OK) {
if (resdata.choice) {
finish_reason.value = resdata.choice.finish_reason || ''
}
if (resdata.choice.message) {
result.value = resdata.choice.message.content || ''
}
} else if (resdata.code === serv_constants.RIS_CODE_ERR) {
errorMessage.value = resdata.error.message || resdata.error;
$q.notify({
color: 'negative',
icon: 'error',
message: 'Errore durante la richiesta',
caption: errorMessage.value
});
}
} catch (error: any) {
errorMessage.value = error.response?.data?.error || error.message;
$q.notify({
color: 'negative',
icon: 'error',
message: 'Errore durante la richiesta',
caption: errorMessage.value
});
}
isLoading.value = false;
}
const copyToClipboard = () => {
if (!result.value) return;
navigator.clipboard.writeText(result.value).then(() => {
$q.notify({
message: 'Copiato negli appunti!',
color: 'positive',
icon: 'check',
});
}).catch(err => {
console.error('Errore nella copia:', err);
$q.notify({
message: 'Errore nella copia!',
color: 'negative',
icon: 'error',
});
});
};
onMounted(mount)
return {
@@ -41,6 +173,26 @@ export default defineComponent({
querySel,
$q,
globalStore,
inputPrompt,
result,
isLoading,
errorMessage,
handleSubmit,
querylist,
copyToClipboard,
max_tokens,
tokenList,
modelList,
tempList,
stream,
model,
contestSysteList,
contestsystem,
finish_reason,
modelLabel,
withexplain,
outputType,
outputTypeList,
}
}
})

View File

@@ -1,15 +1,173 @@
<template>
<div>
<q-page class="q-pa-md">
<div class="column text-center">
<div class="row justify-center">
<q-select
v-if="queryList"
:behavior="$q.platform.is.ios === true ? 'dialog' : 'menu'"
outlined
v-model="querySel"
:options="globalStore.getQueryAI()"
:label="t('ai.selectquery') + `:`"
:options="queryList"
:label="t('queryai.selectquery') + `:`"
emit-value
style="min-width: 200px"
map-options
option-value="_id"
option-label="descr"
>
</q-select>
<q-select
:behavior="$q.platform.is.ios === true ? 'dialog' : 'menu'"
outlined
v-model="model"
:options="modelList"
style="min-width: 200px"
:label="t('queryai.model') + `:`"
emit-value
map-options
option-value="value"
option-label="label"
>
</q-select>
<q-select
:behavior="$q.platform.is.ios === true ? 'dialog' : 'menu'"
outlined
v-model="contestsystem"
:options="contestSysteList"
style="min-width: 200px"
:label="t('queryai.contestsystem') + `:`"
emit-value
map-options
option-value="value"
option-label="label"
>
</q-select>
<q-select
:behavior="$q.platform.is.ios === true ? 'dialog' : 'menu'"
outlined
v-model="max_tokens"
style="min-width: 200px"
:options="tokenList"
:label="t('queryai.numtoken') + `:`"
emit-value
map-options
option-value="value"
option-label="label"
>
</q-select>
<q-select
:behavior="$q.platform.is.ios === true ? 'dialog' : 'menu'"
outlined
v-model="temp"
style="min-width: 200px"
:options="tempList"
:label="t('queryai.temp') + `:`"
emit-value
map-options
option-value="value"
option-label="label"
>
</q-select>
<q-select
:behavior="$q.platform.is.ios === true ? 'dialog' : 'menu'"
outlined
v-model="outputType"
style="min-width: 200px"
:options="outputTypeList"
:label="t('queryai.numtoken') + `:`"
emit-value
map-options
option-value="value"
option-label="label"
>
</q-select>
</div>
<div class="row justify-center">
<q-toggle
label="Stream"
v-model="stream"
color="green"
icon="fas fa-stream"
keep-color
>
</q-toggle>
<q-toggle
:label="t('queryai.withexplain')"
v-model="withexplain"
color="green"
icon="fas fa-comment"
keep-color
>
</q-toggle>
</div>
<q-separator></q-separator>
</div>
<div class="q-mt-md q-gutter-y-md">
<q-form @submit.prevent="handleSubmit">
<q-input
v-model="inputPrompt"
filled
autogrow
type="textarea"
label="Inserisci la tua richiesta"
hint="Scrivi qui il tuo prompt"
class="q-mb-md"
autofocus
/>
<div class="text-center">
<q-btn
:label="`Invia a ` + modelLabel"
type="submit"
color="primary"
:loading="isLoading"
icon="send"
/>
</div>
</q-form>
MARKDOWN:
<q-markdown :content="`L'altezza \( h \) di un triangolo isoscele con base 10 è \( h = \sqrt{l^2 - 25} \), dove \( l \) è la lunghezza dei lati congruenti.`" />
<q-card v-if="result" class="q-mt-md">
<q-card-section>
<div class="text-h6 row items-center justify-between">
<span>Risposta</span>
<q-btn
flat
round
dense
icon="content_copy"
@click="copyToClipboard"
v-tooltip="'Copia negli appunti'"
/>
</div>
<q-markdown :content="result" />
<q-scroll-area style="height: 300px">
<pre class="response-content">{{ result }}</pre>
</q-scroll-area>
<pre class="response-reason">Esito: {{ finish_reason }}</pre>
</q-card-section>
</q-card>
<q-banner
v-if="errorMessage"
class="q-mt-md bg-negative text-white"
rounded
>
{{ errorMessage }}
</q-banner>
<q-inner-loading :showing="isLoading">
<q-spinner-gears size="50px" color="primary" />
<div class="q-mt-sm">Elaborazione richiesta...</div>
</q-inner-loading>
</div>
</q-page>
</div>
</template>
<script lang="ts" src="./CAITools.ts">

View File

@@ -1,9 +1,9 @@
const msg_website_it = {
ws: {
sitename: 'Riso',
siteshortname: 'RISO',
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.',
keywords: 'riso, piattaforma di scambio, rete italiana scambio orizzontale, riso app, riso piattaforma, scambio e baratto, momenta RIS',
sitename: 'Gruppo Macro',
siteshortname: 'Gruppo Macro',
description: '',
keywords: '',
},
hours: {
descr: 'Descrizione',
@@ -16,29 +16,20 @@ const msg_website_it = {
pages: {
home: 'Home',
profile: 'Profilo',
install_site: 'Installa Sito',
profile2: 'ProfiloU',
mypage2: 'mypage2',
myservice2: 'myservice2',
myhosps2: 'myhosps2',
mygood2: 'mygood2',
catalogo: 'Catalogo',
fundraising: 'Sostieni il Progetto',
notifs: 'Configura le Notifiche',
unsubscribe: 'Disiscriviti',
unsubscribe_user: 'Disiscriviti User',
test: 'Test',
projects: 'Progetti',
report: 'Report Ore',
producer: 'Produttore',
orderinfo: 'Ordini Effettuati',
products: 'Prodotti',
productslist: 'Lista Prodotti',
collabora: 'Collabora',
storehouses: 'Magazzino',
departments: 'Uffici',
orders: 'Ordini Ricevuti',
orders2: 'Ordini Ricevuti',
sharewithus: 'Condividi con Noi',
checkout: 'Carrello',
payment: 'Pagamenti',
regok: 'Registrazione Confermata',
presentazione: 'Presentazione',
presentazione2: 'Presentazione',
@@ -89,9 +80,6 @@ const msg_website_it = {
projectsShared: 'Condivisi da me',
myprojects: 'Privati',
favproj: 'Favoriti',
admin_ecommerce: 'ECommerce',
ecommerce: 'Prodotti',
ecommerce_menu: 'ECommerce1',
hours: 'Ore',
department: 'Uffici',
title: 'Titolo',
@@ -121,15 +109,9 @@ const msg_website_it = {
only_residenti: 'Solo Residenti',
only_consiglio: 'Solo Consiglieri',
color: 'Colore',
mainMenu: 'Menu Principale',
subtitle: 'Sottotitolo',
lang: 'Lingua',
keywords: 'Parole Chiave',
desctiption: 'Descrizione',
heightimg: 'Altezza Immagine',
},
msg: {
myAppName: 'Riso',
myAppName: 'Più che Buono',
myAppDescription: 'Il primo Vero Social Libero, Equo e Solidale, dove Vive Consapevolezza e Aiuto Comunitario. Gratuito',
underconstruction: 'App in costruzione...',
myDescriz: '',

View File

@@ -67,39 +67,6 @@ function getDynamicPages(site: ISites): IListRoutes[] {
inmenu: false,
infooter: false,
},
{
active: true,
order: 12,
path: '/goods',
materialIcon: 'fas fa-tshirt',
name: 'mypages.goods',
component: () => import('@/root/goods/goods.vue'),
meta: { requiresAuth: true },
inmenu: true,
infooter: true,
},
{
active: true,
order: 15,
path: '/services',
materialIcon: 'fas fa-house-user',
name: 'mypages.services',
component: () => import('@/root/services/services.vue'),
meta: { requiresAuth: true },
inmenu: true,
infooter: true,
},
{
active: true,
order: 15,
path: '/activities',
materialIcon: 'fas fa-house-user',
name: 'mypages.activities',
component: () => import('@/root/activities/activities.vue'),
meta: { requiresAuth: true },
inmenu: false,
infooter: false,
},
{
active: true,
order: 15,
@@ -111,17 +78,6 @@ function getDynamicPages(site: ISites): IListRoutes[] {
inmenu: false,
infooter: false,
},
{
active: true,
order: 15,
path: '/hosps',
materialIcon: 'fas fa-bed',
name: 'mypages.hosp',
component: () => import('@/root/hosp/hosp.vue'),
meta: { requiresAuth: true },
inmenu: true,
infooter: true,
},
{
active: site.confpages && site.confpages.enableCircuits,
order: 16,
@@ -134,7 +90,7 @@ function getDynamicPages(site: ISites): IListRoutes[] {
infooter: true,
},
{
active: true,
active: site.confpages && site.confpages.enableEvents,
order: 20,
path: '/events',
materialIcon: 'fas fa-bullhorn',
@@ -156,7 +112,7 @@ function getDynamicPages(site: ISites): IListRoutes[] {
infooter: false,
},
{
active: true,
active: site.confpages && site.confpages.showProfile,
order: 120,
path: '/myprofile',
materialIcon: 'fas fa-user',
@@ -167,7 +123,7 @@ function getDynamicPages(site: ISites): IListRoutes[] {
infooter: true,
},
{
active: true,
active: site.confpages && site.confpages.showProfile,
order: 120,
path: '/editprofile',
materialIcon: 'fas fa-user',
@@ -178,7 +134,7 @@ function getDynamicPages(site: ISites): IListRoutes[] {
infooter: false,
},
{
active: true,
active: site.confpages && site.confpages.showiscrittiMenu,
order: 130,
path: '/friends',
materialIcon: 'fas fa-user-friends',
@@ -273,16 +229,6 @@ function getDynamicPages(site: ISites): IListRoutes[] {
inmenu: false,
infooter: false,
},
{
active: true,
order: 150,
path: '/sostieniilprogetto',
materialIcon: 'fas fa-hand-holding-heart',
name: 'pages.fundraising',
component: () => import('@src/root/fundraising/fundraising.vue'),
inmenu: false,
infooter: false,
},
{
active: true,
order: 80,

View File

@@ -6,7 +6,7 @@ import { CMyPage } from '@/components/CMyPage'
import { CTitleBanner } from '@/components/CTitleBanner'
import { CGridTableRec } from '@/components/CGridTableRec'
import { colTableCatAI } from '@src/store/Modules/fieldsTable'
import { colTableQueryAI } from '@src/store/Modules/fieldsTable'
import MixinMetaTags from '@/mixins/mixin-metatags'
export default defineComponent({
@@ -17,7 +17,7 @@ export default defineComponent({
const { setmeta } = MixinMetaTags()
return {
colTableCatAI,
colTableQueryAI,
setmeta,
}
}

View File

@@ -14,7 +14,7 @@
<CGridTableRec
prop_mytable="queryais"
prop_mytitle="Query AI"
:prop_mycolumns="colTableCatAI"
:prop_mycolumns="colTableQueryAI"
prop_colkey="name"
nodataLabel="Nessuna Query AI"
noresultLabel="Il filtro selezionato non ha trovato nessun risultato">

View File

@@ -8,7 +8,7 @@ function getRoutesAI(site: ISites) {
order: 30,
path: '/ai',
materialIcon: 'fas fa-book',
name: 'pages.aitools',
name: 'mypages.aitools',
component: () => import('@/views/toolsAI/main/main.vue'),
inmenu: true,
submenu: true,
@@ -23,7 +23,7 @@ function getRoutesAI(site: ISites) {
order: 32,
path: '/admin/ai/catAI',
materialIcon: 'fas fa-file-alt',
name: 'pages.catAI',
name: 'mypages.catAI',
component: () => import('@/rootgen/admin/catAI/catAI.vue'),
inmenu: true,
submenu: true,
@@ -37,7 +37,7 @@ function getRoutesAI(site: ISites) {
order: 32,
path: '/admin/ai/queryAI',
materialIcon: 'fas fa-file-alt',
name: 'pages.queryAI',
name: 'mypages.queryAI',
component: () => import('@/rootgen/admin/queryAI/queryAI.vue'),
inmenu: true,
submenu: true,
@@ -56,7 +56,7 @@ function getRoutesAI(site: ISites) {
order: 1402,
faIcon: 'fas fa-lemon',
materialIcon: 'fas fa-lemon',
name: 'pages.toolsAI',
name: 'mypages.toolsAI',
routes2: routes_ai,
inmenu: true,
onlyif_logged: true,
@@ -70,7 +70,7 @@ function getRoutesAI(site: ISites) {
path: '/admin/ai',
order: 1420,
materialIcon: 'next_week',
name: 'pages.admin_ai',
name: 'mypages.admin_ai',
routes2: routes_admin_ai,
inmenu: true,
solotitle: true,

View File

@@ -1241,6 +1241,11 @@ const msg_it = {
date_updated: 'Ult. Aggiornamento',
},
mypages: {
catAI: 'Categorie AI',
toolsAI: 'Strumenti AI',
aitools: 'Ricerca',
queryAI: 'Query AI',
admin_ai: 'Gestione AI',
admin_ecommerce: 'ECommerce',
ecommerce: 'Prodotti',
ecommerce_menu: 'ECommerce1',
@@ -1949,9 +1954,6 @@ const msg_it = {
confirmed: 'Confermato',
causale: 'Causale',
},
ai: {
selectquery: 'Scegli',
},
reaction: {
mipiace: 'Mi piace',
tipiace: 'Ti piace',
@@ -2016,6 +2018,20 @@ const msg_it = {
collane: 'Collane',
idPageAssigned: 'Pagina Assegnata',
descr_introduttiva: 'Descrizione Introduttiva',
},
queryai: {
descr: 'Descrizione',
catAI: 'Categoria',
query: 'Query',
selectquery: 'Scegli la Query',
queryai: 'Chiedi',
output_type: 'Tipo di Output',
numtoken: 'Numero di Token max',
model: 'Modello',
contestsystem: 'Contesto',
withexplain: 'Con Spiegazione',
temperatura: 'Temperatura',
}
},

View File

@@ -589,16 +589,16 @@ export const colTableCatAI = [
]
export const colTableQueryAI = [
AddCol({ name: 'descr', label_trans: 'categories.name' }),
AddCol({ name: 'descr', label_trans: 'queryai.descr' }),
AddCol({
name: 'catAI',
label_trans: 'products.category',
label_trans: 'queryai.catAI',
fieldtype: costanti.FieldType.select,
jointable: 'catais',
}),
AddCol({ name: 'query', label_trans: 'ai.query' }),
AddCol({ name: 'ask', label_trans: 'ai.ask' }),
AddCol({ name: 'output_type', label_trans: 'ai.output_type' }),
AddCol({ name: 'query', label_trans: 'queryai.query' }),
AddCol({ name: 'ask', label_trans: 'queryai.ask' }),
AddCol({ name: 'output_type', label_trans: 'queryai.output_type' }),
AddCol(DeleteRec),
AddCol(DuplicateRec),
]
@@ -1236,6 +1236,17 @@ export const colmyGoods = [
inline: true,
typeobj: 'radio',
}),
AddCol({
name: 'descr',
label_trans: 'proj.shortdescr',
fieldtype: costanti.FieldType.string,
showWhen: costanti.showWhen.NewRec + costanti.showWhen.InPage + costanti.showWhen.InEdit + costanti.showWhen.InView_OnlyifExist,
noshowlabel: true,
maxlength: 120,
required: true,
sortable: false,
numpag_carousel: 3,
}),
AddCol({
name: 'photos',
label_trans: 'skill.photos',
@@ -1776,14 +1787,6 @@ export const colmyHosp = [
sortable: false,
}),
AddCol({
name: 'pub_to_share',
label_trans: 'skill.pub_to_share',
fieldtype: costanti.FieldType.select,
jointable: 'pub_to_share',
icon: 'fas fa-users',
showWhen: costanti.showWhen.NewRec + costanti.showWhen.InPage + costanti.showWhen.InEdit + costanti.showWhen.InView_OnlyifExist,
}),
AddCol({
name: 'groupname',
label_trans: 'proj.gruppo',
@@ -1793,17 +1796,6 @@ export const colmyHosp = [
link: '/mygrp/groupname',
noshowlabel: true,
}),
AddCol({
name: 'idContribType',
label_trans: 'contribtype.name',
fieldtype: costanti.FieldType.multiselect,
jointable: 'contribtypes',
showWhen: costanti.showWhen.NewRec + costanti.showWhen.InPage + costanti.showWhen.InEdit + costanti.showWhen.InView_OnlyifExist,
noshowlabel: true,
icon: 'fas fa-hand-holding',
// icon: 'fas fa-hands-helping',
sortable: false,
}),
AddCol({
name: 'descr',
label_trans: 'proj.shortdescr',
@@ -1821,6 +1813,17 @@ export const colmyHosp = [
required: false,
sortable: false,
}),
AddCol({
name: 'idContribType',
label_trans: 'contribtype.name',
fieldtype: costanti.FieldType.multiselect,
jointable: 'contribtypes',
showWhen: costanti.showWhen.NewRec + costanti.showWhen.InPage + costanti.showWhen.InEdit + costanti.showWhen.InView_OnlyifExist,
noshowlabel: true,
icon: 'fas fa-hand-holding',
// icon: 'fas fa-hands-helping',
sortable: false,
}),
AddCol({
name: 'photos',
label_trans: 'skill.photos',
@@ -1844,6 +1847,15 @@ export const colmyHosp = [
sortable: false,
isadvanced_field: true,
}),
AddCol({
name: 'pub_to_share',
label_trans: 'skill.pub_to_share',
fieldtype: costanti.FieldType.select,
jointable: 'pub_to_share',
icon: 'fas fa-users',
showWhen: costanti.showWhen.NewRec + costanti.showWhen.InPage + costanti.showWhen.InEdit + costanti.showWhen.InView_OnlyifExist,
isadvanced_field: true,
}),
AddCol({
name: 'website', label_trans: 'reg.website', fieldtype: costanti.FieldType.link,
showWhen: costanti.showWhen.NewRec + costanti.showWhen.InEdit + costanti.showWhen.InView_OnlyifExist,

View File

@@ -2021,6 +2021,26 @@ export const useGlobalStore = defineStore('GlobalStore', {
},
async getQueryDS(prompt: string, options: any) {
const userStore = useUserStore()
const paramquery = {
locale: tools.getLocale(),
username: userStore.my.username,
prompt,
options,
}
return Api.SendReq('/aitools/ds', 'POST', paramquery)
.then((res) => {
return res.data
}).catch((error) => {
return {}
})
},
getItemDate(num: number, day: number, numdays: number, mystr: string) {
let mydate = tools.addDays(tools.getDateNow(), day)
let mydateend = tools.addDays(mydate, numdays)

7052
yarn.lock

File diff suppressed because it is too large Load Diff