import products dinamically
@@ -1,6 +1,6 @@
|
|||||||
APP_VERSION="1.0.25"
|
APP_VERSION="1.0.21"
|
||||||
SERVICE_WORKER_FILE="service-worker.js"
|
SERVICE_WORKER_FILE="service-worker.js"
|
||||||
APP_ID="13"
|
APP_ID="17"
|
||||||
DIRECTORY_LOCAL="newfreeplanet"
|
DIRECTORY_LOCAL="newfreeplanet"
|
||||||
DIRECTORY_SERVER="freeplanet_serverside"
|
DIRECTORY_SERVER="freeplanet_serverside"
|
||||||
SERVERDIR_WEBSITE=""
|
SERVERDIR_WEBSITE=""
|
||||||
@@ -12,7 +12,7 @@ LANG_DEFAULT="it"
|
|||||||
PAO_APP_ID="KKPPAA5KJK435J3KSS9F9D8S9F8SD98F9SDF"
|
PAO_APP_ID="KKPPAA5KJK435J3KSS9F9D8S9F8SD98F9SDF"
|
||||||
MASTER_KEY="KKPPSS5KJK435J3KSS9F9D8S9F8SD3CR3T"
|
MASTER_KEY="KKPPSS5KJK435J3KSS9F9D8S9F8SD3CR3T"
|
||||||
MONGODB_HOST="https://localhost:3000"
|
MONGODB_HOST="https://localhost:3000"
|
||||||
LOGO_REG='riso-logo-full.png'
|
LOGO_REG='piuchebuono-logo-full.png'
|
||||||
TEST_NAME="Paolo"
|
TEST_NAME="Paolo"
|
||||||
TEST_SURNAME="Arena"
|
TEST_SURNAME="Arena"
|
||||||
TEST_EMAIL=""
|
TEST_EMAIL=""
|
||||||
|
|||||||
21
.vscode/launch.json
vendored
@@ -17,7 +17,15 @@
|
|||||||
"command": "npm run spa",
|
"command": "npm run spa",
|
||||||
"name": "SPA",
|
"name": "SPA",
|
||||||
"request": "launch",
|
"request": "launch",
|
||||||
"type": "node-terminal"
|
"type": "node-terminal",
|
||||||
|
"sourceMaps": false,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"command": "npm run spa",
|
||||||
|
"name": "SPA DEBUG",
|
||||||
|
"request": "launch",
|
||||||
|
"type": "node-terminal",
|
||||||
|
"sourceMaps": true,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"command": "npm run dev",
|
"command": "npm run dev",
|
||||||
@@ -25,5 +33,16 @@
|
|||||||
"request": "launch",
|
"request": "launch",
|
||||||
"type": "node-terminal"
|
"type": "node-terminal"
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"type": "chrome",
|
||||||
|
"request": "launch",
|
||||||
|
"name": "vuejs: Launch Chrome DEBUG",
|
||||||
|
"url": "http://localhost:8088",
|
||||||
|
"breakOnLoad": true,
|
||||||
|
"webRoot": "${workspaceFolder}/src",
|
||||||
|
"sourceMapPathOverrides": {
|
||||||
|
"webpack:///src/*": "${webRoot}/*"
|
||||||
|
}
|
||||||
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|||||||
23
.vscode/tasks.json
vendored
Normal file
@@ -0,0 +1,23 @@
|
|||||||
|
{
|
||||||
|
"version": "2.0.0",
|
||||||
|
"tasks": [
|
||||||
|
{
|
||||||
|
"label": "serve",
|
||||||
|
"type": "npm",
|
||||||
|
"script": "serve",
|
||||||
|
"isBackground": true,
|
||||||
|
"problemMatcher": [{
|
||||||
|
"base": "$tsc-watch",
|
||||||
|
"background": {
|
||||||
|
"activeOnStart": true,
|
||||||
|
"beginsPattern": "Starting development server",
|
||||||
|
"endsPattern": "Compiled successfully"
|
||||||
|
}
|
||||||
|
}],
|
||||||
|
"group": {
|
||||||
|
"kind": "build",
|
||||||
|
"isDefault": true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
@@ -17,11 +17,12 @@
|
|||||||
"lintfileNoJS": "eslint --ext .ts,.vue --ignore-path .gitignore ./ > file.out.txt",
|
"lintfileNoJS": "eslint --ext .ts,.vue --ignore-path .gitignore ./ > file.out.txt",
|
||||||
"fix": "eslint --ext .ts,.vue --ignore-path .gitignore ./ --fix > file.out.txt",
|
"fix": "eslint --ext .ts,.vue --ignore-path .gitignore ./ --fix > file.out.txt",
|
||||||
"pwa": "NODE_ENV=development NODE_OPTIONS=--max_old_space_size=4096 DEBUG=v8:* quasar dev -m pwa",
|
"pwa": "NODE_ENV=development NODE_OPTIONS=--max_old_space_size=4096 DEBUG=v8:* quasar dev -m pwa",
|
||||||
"spa": "NODE_ENV=development NODE_OPTIONS=--max_old_space_size=4096 DEBUG=v8:* quasar dev -m spa",
|
"spa": "NODE_ENV=development NODE_OPTIONS=--max_old_space_size=4096 DEBUG=v8:* quasar dev --mode debug",
|
||||||
"test": "echo \"No test specified\" && exit 0",
|
"test": "echo \"No test specified\" && exit 0",
|
||||||
"generate-sw": "workbox generateSW workbox-config.js"
|
"generate-sw": "workbox generateSW workbox-config.js"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
|
"@cubejs-client/core": "^0.31.0",
|
||||||
"@quasar/extras": "^1.16.9",
|
"@quasar/extras": "^1.16.9",
|
||||||
"@quasar/quasar-ui-qcalendar": "^4.0.0-beta.16",
|
"@quasar/quasar-ui-qcalendar": "^4.0.0-beta.16",
|
||||||
"@vue-leaflet/vue-leaflet": "^0.10.1",
|
"@vue-leaflet/vue-leaflet": "^0.10.1",
|
||||||
@@ -35,7 +36,7 @@
|
|||||||
"autoprefixer": "^10.4.16",
|
"autoprefixer": "^10.4.16",
|
||||||
"axios": "^1.6.2",
|
"axios": "^1.6.2",
|
||||||
"bcryptjs": "^2.4.3",
|
"bcryptjs": "^2.4.3",
|
||||||
"chart.js": "3.9.1",
|
"chart.js": "^4.0.0",
|
||||||
"core-js": "^3.33.3",
|
"core-js": "^3.33.3",
|
||||||
"crypto": "^1.0.1",
|
"crypto": "^1.0.1",
|
||||||
"date-fns": "^2.30.0",
|
"date-fns": "^2.30.0",
|
||||||
@@ -47,6 +48,7 @@
|
|||||||
"gsap": "^3.12.3",
|
"gsap": "^3.12.3",
|
||||||
"jquery": "^3.7.1",
|
"jquery": "^3.7.1",
|
||||||
"js-cookie": "^3.0.5",
|
"js-cookie": "^3.0.5",
|
||||||
|
"leaflet": "^1.9.4",
|
||||||
"localforage": "^1.10.0",
|
"localforage": "^1.10.0",
|
||||||
"lodash": "^4.17.21",
|
"lodash": "^4.17.21",
|
||||||
"normalize.css": "^8.0.1",
|
"normalize.css": "^8.0.1",
|
||||||
@@ -60,7 +62,6 @@
|
|||||||
"typescript-eslint": "^0.0.1-alpha.0",
|
"typescript-eslint": "^0.0.1-alpha.0",
|
||||||
"vee-validate": "^4.12.2",
|
"vee-validate": "^4.12.2",
|
||||||
"vue": "^3.3.9",
|
"vue": "^3.3.9",
|
||||||
"vue-chart-3": "^3.1.8",
|
|
||||||
"vue-class-component": "^8.0.0-rc.1",
|
"vue-class-component": "^8.0.0-rc.1",
|
||||||
"vue-country-code": "^1.1.3",
|
"vue-country-code": "^1.1.3",
|
||||||
"vue-echarts": "^6.6.1",
|
"vue-echarts": "^6.6.1",
|
||||||
@@ -104,6 +105,7 @@
|
|||||||
"node-sass": "^9.0.0",
|
"node-sass": "^9.0.0",
|
||||||
"npm-check-updates": "^16.14.11",
|
"npm-check-updates": "^16.14.11",
|
||||||
"optimize-css-assets-webpack-plugin": "^6.0.1",
|
"optimize-css-assets-webpack-plugin": "^6.0.1",
|
||||||
|
"parcel": "^2.6.2",
|
||||||
"postcss": "^8.4.31",
|
"postcss": "^8.4.31",
|
||||||
"postcss-loader": "^7.3.3",
|
"postcss-loader": "^7.3.3",
|
||||||
"sass-loader": "^13.3.2",
|
"sass-loader": "^13.3.2",
|
||||||
|
|||||||
@@ -149,6 +149,7 @@ module.exports = configure((ctx) => ({
|
|||||||
https: false,
|
https: false,
|
||||||
port: 8084,
|
port: 8084,
|
||||||
open: false, // opens browser window automatically
|
open: false, // opens browser window automatically
|
||||||
|
hot: false, // Disable hot module replacement
|
||||||
headers: {
|
headers: {
|
||||||
'Access-Control-Allow-Origin': '*',
|
'Access-Control-Allow-Origin': '*',
|
||||||
'Access-Control-Allow-Headers': '*',
|
'Access-Control-Allow-Headers': '*',
|
||||||
|
|||||||
2
now.txt
@@ -1 +1 @@
|
|||||||
TERMINA DI LAVORARE SU gruppomacro.app: (Sovrascrivo !)
|
TERMINA DI LAVORARE SU riso.app: (Sovrascrivo !)
|
||||||
|
|||||||
112
package.json
@@ -1,8 +1,8 @@
|
|||||||
{
|
{
|
||||||
"name": "riso",
|
"name": "piuchebuono",
|
||||||
"version": "0.6.1",
|
"version": "2.0.1",
|
||||||
"description": "Siamo la Rete Italiana di Scambio Orizzontale, abbiamo creato questa piattaforma per metterla al servizio di chi vuole riscoprire il valore della condivisione e della cooperazione. Valori semplici e profondi che ci aiutano a ritrovare il Senso della Vita, perduto in questa società consumista, e riporti quei Sani Pricìpi Naturali ed Umani di Fratellanza che intere popolazioni antiche conoscevano bene.",
|
"description": "PiuCheBuono",
|
||||||
"productName": "Riso",
|
"productName": "PiuCheBuono",
|
||||||
"author": "Paolo Arena",
|
"author": "Paolo Arena",
|
||||||
"private": true,
|
"private": true,
|
||||||
"keywords": [],
|
"keywords": [],
|
||||||
@@ -17,107 +17,107 @@
|
|||||||
"lintfileNoJS": "eslint --ext .ts,.vue --ignore-path .gitignore ./ > file.out.txt",
|
"lintfileNoJS": "eslint --ext .ts,.vue --ignore-path .gitignore ./ > file.out.txt",
|
||||||
"fix": "eslint --ext .ts,.vue --ignore-path .gitignore ./ --fix > file.out.txt",
|
"fix": "eslint --ext .ts,.vue --ignore-path .gitignore ./ --fix > file.out.txt",
|
||||||
"pwa": "NODE_ENV=development NODE_OPTIONS=--max_old_space_size=4096 DEBUG=v8:* quasar dev -m pwa",
|
"pwa": "NODE_ENV=development NODE_OPTIONS=--max_old_space_size=4096 DEBUG=v8:* quasar dev -m pwa",
|
||||||
"spa": "NODE_ENV=development NODE_OPTIONS=--max_old_space_size=4096 DEBUG=v8:* quasar dev -m spa",
|
"spa": "NODE_ENV=development NODE_OPTIONS=--max_old_space_size=4096 DEBUG=v8:* quasar dev --debug",
|
||||||
"test": "echo \"No test specified\" && exit 0",
|
"test": "echo \"No test specified\" && exit 0",
|
||||||
"generate-sw": "workbox generateSW workbox-config.js"
|
"generate-sw": "workbox generateSW workbox-config.js"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@quasar/extras": "^1.16.9",
|
"@quasar/extras": "^1.16.7",
|
||||||
"@quasar/quasar-ui-qcalendar": "^4.0.0-beta.16",
|
"@quasar/quasar-ui-qcalendar": "^4.0.0-beta.16",
|
||||||
"@vue-leaflet/vue-leaflet": "^0.10.1",
|
"@vue-leaflet/vue-leaflet": "^0.9.0",
|
||||||
"@vue/compat": "^3.3.9",
|
"@vue/compat": "^3.2.47",
|
||||||
"@vue/compiler-sfc": "^3.3.9",
|
"@vue/compiler-sfc": "^3.2.47",
|
||||||
"@vue/eslint-config-standard": "7.0.0",
|
"@vue/eslint-config-standard": "7.0.0",
|
||||||
"@vuelidate/core": "^2.0.3",
|
"@vuelidate/core": "^2.0.2",
|
||||||
"@vuelidate/validators": "^2.0.4",
|
"@vuelidate/validators": "^2.0.2",
|
||||||
"acorn": "^8.11.2",
|
"acorn": "^8.8.2",
|
||||||
"animate.css": "^4.1.1",
|
"animate.css": "^4.1.1",
|
||||||
"autoprefixer": "^10.4.16",
|
"autoprefixer": "^10.4.14",
|
||||||
"axios": "^1.6.2",
|
"axios": "^1.3.5",
|
||||||
"bcryptjs": "^2.4.3",
|
"bcryptjs": "^2.4.3",
|
||||||
"chart.js": "3.9.1",
|
"chart.js": "3.9.1",
|
||||||
"core-js": "^3.33.3",
|
"core-js": "^3.30.0",
|
||||||
"crypto": "^1.0.1",
|
"crypto": "^1.0.1",
|
||||||
"date-fns": "^2.30.0",
|
"date-fns": "^2.29.3",
|
||||||
"dotenv": "^16.3.1",
|
"dotenv": "^16.0.3",
|
||||||
"echarts": "5.4.2",
|
"echarts": "5.4.2",
|
||||||
"eslint-plugin-quasar": "^1.1.0",
|
"eslint-plugin-quasar": "^1.1.0",
|
||||||
"graphql": "^16.8.1",
|
"graphql": "^16.6.0",
|
||||||
"graphql-tag": "^2.12.6",
|
"graphql-tag": "^2.12.6",
|
||||||
"gsap": "^3.12.3",
|
"gsap": "^3.11.5",
|
||||||
"jquery": "^3.7.1",
|
"jquery": "^3.6.4",
|
||||||
"js-cookie": "^3.0.5",
|
"js-cookie": "^3.0.1",
|
||||||
"localforage": "^1.10.0",
|
"localforage": "^1.10.0",
|
||||||
"lodash": "^4.17.21",
|
"lodash": "^4.17.21",
|
||||||
"normalize.css": "^8.0.1",
|
"normalize.css": "^8.0.1",
|
||||||
"npm": "^10.2.4",
|
"npm": "^9.6.4",
|
||||||
"nprogress": "^0.2.0",
|
"nprogress": "^0.2.0",
|
||||||
"pinia": "^2.1.7",
|
"pinia": "^2.0.33",
|
||||||
"prerender-spa-plugin": "^3.4.0",
|
"prerender-spa-plugin": "^3.4.0",
|
||||||
"quasar": "^2.12.07",
|
"quasar": "^2.12.07",
|
||||||
"quasar-extras": "^2.0.9",
|
"quasar-extras": "^2.0.9",
|
||||||
"register-service-worker": "^1.7.2",
|
"register-service-worker": "^1.7.2",
|
||||||
"typescript-eslint": "^0.0.1-alpha.0",
|
"typescript-eslint": "^0.0.1-alpha.0",
|
||||||
"vee-validate": "^4.12.2",
|
"vee-validate": "^4.8.4",
|
||||||
"vue": "^3.3.9",
|
"vue": "^3.2.47",
|
||||||
"vue-chart-3": "^3.1.8",
|
"vue-chart-3": "^3.1.8",
|
||||||
"vue-class-component": "^8.0.0-rc.1",
|
"vue-class-component": "^8.0.0-rc.1",
|
||||||
"vue-country-code": "^1.1.3",
|
"vue-country-code": "^1.1.3",
|
||||||
"vue-echarts": "^6.6.1",
|
"vue-echarts": "^6.5.4",
|
||||||
"vue-i18n": "^9.8.0",
|
"vue-i18n": "^9.2.2",
|
||||||
"vue-idb": "^0.2.0",
|
"vue-idb": "^0.2.0",
|
||||||
"vue-loader": "^17.3.1",
|
"vue-loader": "^17.0.1",
|
||||||
"vue-property-decorator": "^10.0.0-rc.3",
|
"vue-property-decorator": "^10.0.0-rc.3",
|
||||||
"vue-router": "^4.2.5",
|
"vue-router": "^4.1.6",
|
||||||
"vue-scroll-reveal": "^2.1.0",
|
"vue-scroll-reveal": "^1.0.11",
|
||||||
"vue-social-sharing": "^4.0.0-alpha4",
|
"vue-social-sharing": "^4.0.0-alpha4",
|
||||||
"vue-svgicon": "^4.0.0-alpha.3",
|
"vue-svgicon": "^4.0.0-alpha.3",
|
||||||
"vue-timeago3": "^2.3.2",
|
"vue-timeago3": "^2.3.0",
|
||||||
"vue2-dragula": "^2.5.5",
|
"vue2-dragula": "^2.5.5",
|
||||||
"vuex": "^4.1.0",
|
"vuex": "^4.1.0",
|
||||||
"vuex-router-sync": "^6.0.0-rc.1"
|
"vuex-router-sync": "^6.0.0-rc.1"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@quasar/app": "^3.3.3",
|
"@quasar/app": "^3.3.3",
|
||||||
"@types/bcryptjs": "^2.4.6",
|
"@types/bcryptjs": "^2.4.2",
|
||||||
"@types/dotenv": "^8.2.0",
|
"@types/dotenv": "^8.2.0",
|
||||||
"@types/googlemaps": "^3.43.3",
|
"@types/googlemaps": "^3.43.3",
|
||||||
"@types/jest": "^29.5.10",
|
"@types/jest": "^29.5.0",
|
||||||
"@types/js-cookie": "^3.0.6",
|
"@types/js-cookie": "^3.0.3",
|
||||||
"@types/node": "18.17.0",
|
"@types/node": "18.15.11",
|
||||||
"@types/nprogress": "^0.2.3",
|
"@types/nprogress": "^0.2.0",
|
||||||
"@types/vue-tel-input": "^2.1.6",
|
"@types/vue-tel-input": "^2.1.2",
|
||||||
"@types/vuelidate": "^0.7.21",
|
"@types/vuelidate": "^0.7.16",
|
||||||
"@typescript-eslint/eslint-plugin": "^6.13.1",
|
"@typescript-eslint/eslint-plugin": "^6.7.3",
|
||||||
"@typescript-eslint/parser": "^6.13.1",
|
"@typescript-eslint/parser": "^6.7.2",
|
||||||
"eslint": "^8.54.0",
|
"eslint": "^8.37.0",
|
||||||
"eslint-config-prettier": "^9.0.0",
|
"eslint-config-prettier": "^8.8.0",
|
||||||
"eslint-plugin-import": "^2.29.0",
|
"eslint-plugin-import": "^2.27.5",
|
||||||
"eslint-plugin-node": "^11.1.0",
|
"eslint-plugin-node": "^11.1.0",
|
||||||
"eslint-plugin-promise": "^6.1.1",
|
"eslint-plugin-promise": "^6.1.1",
|
||||||
"eslint-plugin-vue": "^9.19.2",
|
"eslint-plugin-vue": "^9.10.0",
|
||||||
"file-loader": "^6.2.0",
|
"file-loader": "^6.2.0",
|
||||||
"html-webpack-plugin": "^5.5.3",
|
"html-webpack-plugin": "^5.5.0",
|
||||||
"http-proxy-middleware": "^2.0.6",
|
"http-proxy-middleware": "^2.0.6",
|
||||||
"jest": "^29.7.0",
|
"jest": "^29.5.0",
|
||||||
"json-loader": "^0.5.7",
|
"json-loader": "^0.5.7",
|
||||||
"node-sass": "^9.0.0",
|
"node-sass": "^9.0.0",
|
||||||
"npm-check-updates": "^16.14.11",
|
"npm-check-updates": "^16.10.7",
|
||||||
"optimize-css-assets-webpack-plugin": "^6.0.1",
|
"optimize-css-assets-webpack-plugin": "^6.0.1",
|
||||||
"postcss": "^8.4.31",
|
"postcss": "^8.4.21",
|
||||||
"postcss-loader": "^7.3.3",
|
"postcss-loader": "^7.2.4",
|
||||||
"sass-loader": "^13.3.2",
|
"sass-loader": "^13.2.2",
|
||||||
"strip-ansi": "=7.1.0",
|
"strip-ansi": "=7.0.1",
|
||||||
"ts-jest": "^29.1.1",
|
"ts-jest": "^29.1.0",
|
||||||
"ts-loader": "^9.5.1",
|
"ts-loader": "^9.4.2",
|
||||||
"tslint": "^6.1.3",
|
"tslint": "^6.1.3",
|
||||||
"tslint-config-standard": "^9.0.0",
|
"tslint-config-standard": "^9.0.0",
|
||||||
"tslint-loader": "^3.5.4",
|
"tslint-loader": "^3.5.4",
|
||||||
"typescript": "^5.3.2",
|
"typescript": "^5.2.2",
|
||||||
"vue-cli-plugin-element-ui": "^1.1.4",
|
"vue-cli-plugin-element-ui": "^1.1.4",
|
||||||
"vueify": "^9.4.1",
|
"vueify": "^9.4.1",
|
||||||
"webpack": "^5.89.0",
|
"webpack": "^5.78.0",
|
||||||
"workbox-webpack-plugin": "^7.0.0"
|
"workbox-webpack-plugin": "^6.5.4"
|
||||||
},
|
},
|
||||||
"browser": {
|
"browser": {
|
||||||
"crypto": false
|
"crypto": false
|
||||||
|
|||||||
BIN
public/images/pcb-android-icon-144x144.png
Normal file
|
After Width: | Height: | Size: 36 KiB |
BIN
public/images/pcb-android-icon-192x192.png
Normal file
|
After Width: | Height: | Size: 63 KiB |
BIN
public/images/pcb-android-icon-36x36.png
Normal file
|
After Width: | Height: | Size: 3.5 KiB |
BIN
public/images/pcb-android-icon-48x48.png
Normal file
|
After Width: | Height: | Size: 5.5 KiB |
BIN
public/images/pcb-android-icon-72x72.png
Normal file
|
After Width: | Height: | Size: 10 KiB |
BIN
public/images/pcb-android-icon-96x96.png
Normal file
|
After Width: | Height: | Size: 17 KiB |
BIN
public/images/pcb-apple-icon-114x114.png
Normal file
|
After Width: | Height: | Size: 23 KiB |
BIN
public/images/pcb-apple-icon-120x120.png
Normal file
|
After Width: | Height: | Size: 26 KiB |
BIN
public/images/pcb-apple-icon-144x144.png
Normal file
|
After Width: | Height: | Size: 36 KiB |
BIN
public/images/pcb-apple-icon-152x152.png
Normal file
|
After Width: | Height: | Size: 39 KiB |
BIN
public/images/pcb-apple-icon-180x180.png
Normal file
|
After Width: | Height: | Size: 53 KiB |
BIN
public/images/pcb-apple-icon-57x57.png
Normal file
|
After Width: | Height: | Size: 7.1 KiB |
BIN
public/images/pcb-apple-icon-60x60.png
Normal file
|
After Width: | Height: | Size: 7.7 KiB |
BIN
public/images/pcb-apple-icon-72x72.png
Normal file
|
After Width: | Height: | Size: 10 KiB |
BIN
public/images/pcb-apple-icon-76x76.png
Normal file
|
After Width: | Height: | Size: 12 KiB |
BIN
public/images/pcb-apple-icon.png
Normal file
|
After Width: | Height: | Size: 63 KiB |
@@ -94,6 +94,7 @@ module.exports = configure((ctx) => ({
|
|||||||
transpileDependencies: [
|
transpileDependencies: [
|
||||||
/quasar-ui-qcalendar[\\/]src/
|
/quasar-ui-qcalendar[\\/]src/
|
||||||
],
|
],
|
||||||
|
devtool: 'source-map',
|
||||||
|
|
||||||
chainWebpack(chain, { isServer, isClient }) {
|
chainWebpack(chain, { isServer, isClient }) {
|
||||||
chain.resolve.alias
|
chain.resolve.alias
|
||||||
@@ -147,9 +148,8 @@ module.exports = configure((ctx) => ({
|
|||||||
},
|
},
|
||||||
devServer: {
|
devServer: {
|
||||||
https: false,
|
https: false,
|
||||||
port: 8084,
|
port: 8088,
|
||||||
open: false, // opens browser window automatically
|
open: false, // opens browser window automatically
|
||||||
hot: false, // Disable hot module replacement
|
|
||||||
headers: {
|
headers: {
|
||||||
'Access-Control-Allow-Origin': '*',
|
'Access-Control-Allow-Origin': '*',
|
||||||
'Access-Control-Allow-Headers': '*',
|
'Access-Control-Allow-Headers': '*',
|
||||||
@@ -306,9 +306,9 @@ module.exports = configure((ctx) => ({
|
|||||||
},
|
},
|
||||||
|
|
||||||
manifest: {
|
manifest: {
|
||||||
name: 'Riso',
|
name: 'Più che Buono',
|
||||||
short_name: 'Riso',
|
short_name: 'PiuCheBuono',
|
||||||
description: 'Siamo la Rete Italiana di Scambio Orizzontale, abbiamo creato questa piattaforma per metterla al servizio di chi vuole riscoprire il valore della condivisione e della cooperazione. Valori semplici e profondi che ci aiutano a ritrovare il Senso della Vita, perduto in questa società consumista, e riporti quei Sani Pricìpi Naturali ed Umani di Fratellanza che intere popolazioni antiche conoscevano bene.',
|
description: 'PiuCheBuono è un GAS e Bottega',
|
||||||
display: 'standalone',
|
display: 'standalone',
|
||||||
orientation: 'portrait',
|
orientation: 'portrait',
|
||||||
background_color: '#fff',
|
background_color: '#fff',
|
||||||
@@ -318,54 +318,54 @@ module.exports = configure((ctx) => ({
|
|||||||
start_url: "/?homescreen=1",
|
start_url: "/?homescreen=1",
|
||||||
icons: [
|
icons: [
|
||||||
{
|
{
|
||||||
src: 'images/riso-android-icon-512x512.png',
|
src: 'images/pcb-android-icon-512x512.png',
|
||||||
sizes: '512x512',
|
sizes: '512x512',
|
||||||
type: 'image/png',
|
type: 'image/png',
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
src: 'images/riso-android-icon-384x384.png',
|
src: 'images/pcb-android-icon-384x384.png',
|
||||||
sizes: '384x384',
|
sizes: '384x384',
|
||||||
type: 'image/png',
|
type: 'image/png',
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
src: 'images/riso-android-icon-192x192.png',
|
src: 'images/pcb-android-icon-192x192.png',
|
||||||
sizes: '192x192',
|
sizes: '192x192',
|
||||||
type: 'image/png',
|
type: 'image/png',
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
src: 'images/riso-android-icon-144x144.png',
|
src: 'images/pcb-android-icon-144x144.png',
|
||||||
sizes: '144x144',
|
sizes: '144x144',
|
||||||
type: 'image/png',
|
type: 'image/png',
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
src: 'images/riso-android-icon-96x96.png',
|
src: 'images/pcb-android-icon-96x96.png',
|
||||||
sizes: '96x96',
|
sizes: '96x96',
|
||||||
type: 'image/png',
|
type: 'image/png',
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
src: 'images/riso-apple-icon-120x120.png',
|
src: 'images/pcb-apple-icon-120x120.png',
|
||||||
sizes: '120x120',
|
sizes: '120x120',
|
||||||
type: 'image/png',
|
type: 'image/png',
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
src: 'images/riso-apple-icon-144x144.png',
|
src: 'images/pcb-apple-icon-144x144.png',
|
||||||
sizes: '144x144',
|
sizes: '144x144',
|
||||||
type: 'image/png',
|
type: 'image/png',
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
src: 'images/riso-apple-icon-152x152.png',
|
src: 'images/pcb-apple-icon-152x152.png',
|
||||||
sizes: '152x152',
|
sizes: '152x152',
|
||||||
type: 'image/png',
|
type: 'image/png',
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
src: 'images/riso-apple-icon-180x180.png',
|
src: 'images/pcb-apple-icon-180x180.png',
|
||||||
sizes: '180x180',
|
sizes: '180x180',
|
||||||
type: 'image/png',
|
type: 'image/png',
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
related_applications: [{
|
related_applications: [{
|
||||||
"platform": "webapp",
|
"platform": "webapp",
|
||||||
"url": "https://www.riso.app/manifest.json"
|
"url": "https://www.piuchebuono.app/manifest.json"
|
||||||
}]
|
}]
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
@@ -400,7 +400,7 @@ module.exports = configure((ctx) => ({
|
|||||||
builder: {
|
builder: {
|
||||||
// https://www.electron.build/configuration/configuration
|
// https://www.electron.build/configuration/configuration
|
||||||
|
|
||||||
appId: 'Riso',
|
appId: 'PiuCheBuono',
|
||||||
},
|
},
|
||||||
|
|
||||||
// "chain" is a webpack-chain object https://github.com/neutrinojs/webpack-chain
|
// "chain" is a webpack-chain object https://github.com/neutrinojs/webpack-chain
|
||||||
|
|||||||
@@ -66,7 +66,7 @@ export const shared_consts = {
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
label: 'Chili (kg)',
|
label: 'Chili (kg)',
|
||||||
short: 'Kg',
|
short: 'kg',
|
||||||
value: 2,
|
value: 2,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@@ -344,6 +344,7 @@ export const shared_consts = {
|
|||||||
CAT_NO_SPAZI: 5,
|
CAT_NO_SPAZI: 5,
|
||||||
CAT_GOODS_TXT: 10,
|
CAT_GOODS_TXT: 10,
|
||||||
PRODUCTS: 20,
|
PRODUCTS: 20,
|
||||||
|
PRODUCTS_V2: 22,
|
||||||
INVENTARIO: 30,
|
INVENTARIO: 30,
|
||||||
},
|
},
|
||||||
|
|
||||||
@@ -1806,6 +1807,8 @@ export const shared_consts = {
|
|||||||
MyBachecas: 1,
|
MyBachecas: 1,
|
||||||
},
|
},
|
||||||
|
|
||||||
|
MAX_QTA_PREORD: 5000,
|
||||||
|
|
||||||
getStatusStr(status: number) {
|
getStatusStr(status: number) {
|
||||||
const trovatorec = this.OrderStatusStr.find((rec) => rec.value === status)
|
const trovatorec = this.OrderStatusStr.find((rec) => rec.value === status)
|
||||||
return (trovatorec) ? trovatorec.label : ''
|
return (trovatorec) ? trovatorec.label : ''
|
||||||
|
|||||||
@@ -7,16 +7,12 @@ import { useGlobalStore } from '@store/globalStore'
|
|||||||
import { useI18n } from '@/boot/i18n'
|
import { useI18n } from '@/boot/i18n'
|
||||||
import { useQuasar } from 'quasar'
|
import { useQuasar } from 'quasar'
|
||||||
|
|
||||||
import { Chart, ChartData, ChartOptions, registerables } from 'chart.js'
|
import { Chart, ChartItem, ChartConfiguration } from 'chart.js/auto'
|
||||||
|
|
||||||
import { BarChart, useBarChart } from 'vue-chart-3'
|
|
||||||
|
|
||||||
|
|
||||||
Chart.register(...registerables)
|
|
||||||
|
|
||||||
export default defineComponent({
|
export default defineComponent({
|
||||||
name: 'CBarChart',
|
name: 'CLineChart',
|
||||||
components: { BarChart },
|
components: {},
|
||||||
props: {
|
props: {
|
||||||
mydata: { required: false, default: [] },
|
mydata: { required: false, default: [] },
|
||||||
title: { required: false, default: false },
|
title: { required: false, default: false },
|
||||||
@@ -25,6 +21,7 @@ export default defineComponent({
|
|||||||
bordercolor: { required: false, default: 'red' },
|
bordercolor: { required: false, default: 'red' },
|
||||||
mycolors: { required: false, default: null },
|
mycolors: { required: false, default: null },
|
||||||
offset: { required: false, default: 0 },
|
offset: { required: false, default: 0 },
|
||||||
|
showMedia: { required: false, default: false }
|
||||||
},
|
},
|
||||||
setup(props, { emit }) {
|
setup(props, { emit }) {
|
||||||
|
|
||||||
@@ -35,48 +32,44 @@ export default defineComponent({
|
|||||||
|
|
||||||
const myarrlabel = ref(<any>[])
|
const myarrlabel = ref(<any>[])
|
||||||
const myarrdata = ref(<any>[])
|
const myarrdata = ref(<any>[])
|
||||||
|
const myarrdataLine = ref(<any>[])
|
||||||
const myarrbg = ref(<any>[])
|
const myarrbg = ref(<any>[])
|
||||||
const myarrsum = ref(<any>[])
|
const myarrsum = ref(<any>[])
|
||||||
|
|
||||||
// @ts-ignore
|
|
||||||
const chartData = computed<ChartData<'bar'>>(() => ({
|
const chartDataLine = ref({
|
||||||
labels: myarrlabel.value,
|
labels: ['January', 'February', 'March', 'April', 'May', 'June', 'July'],
|
||||||
datasets: [
|
datasets: [
|
||||||
/*{
|
|
||||||
label: 'Totali',
|
|
||||||
data: myarrsum.value,
|
|
||||||
backgroundColor: tools.colourNameToHex('green'),
|
|
||||||
},*/
|
|
||||||
{
|
{
|
||||||
label: props.title,
|
label: 'Data One',
|
||||||
data: myarrdata.value,
|
backgroundColor: '#f87979',
|
||||||
borderColor: tools.colourNameToHex('red'),
|
data: [40, 39, 10, 40, 39, 80, 40]
|
||||||
backgroundColor: myarrbg.value,
|
|
||||||
fill: true,
|
|
||||||
},
|
|
||||||
],
|
|
||||||
}))
|
|
||||||
|
|
||||||
const options = computed<ChartOptions<'bar'>>(() => ({
|
|
||||||
bar: {
|
|
||||||
},
|
|
||||||
interaction: {
|
|
||||||
intersect: false
|
|
||||||
},
|
|
||||||
scales: {
|
|
||||||
y: {
|
|
||||||
beginAtZero: true
|
|
||||||
}
|
}
|
||||||
}
|
]
|
||||||
}))
|
|
||||||
|
|
||||||
const { barChartProps, barChartRef } = useBarChart({
|
|
||||||
chartData,
|
|
||||||
options,
|
|
||||||
})
|
})
|
||||||
|
|
||||||
|
const chartOptionsLine = ref({
|
||||||
|
responsive: true,
|
||||||
|
maintainAspectRatio: false
|
||||||
|
})
|
||||||
|
|
||||||
|
function calcolaMedia(myarray: any, periodi: number) {
|
||||||
|
if (myarray.length === 0 || myarray.length < periodi) {
|
||||||
|
return 0; // Se l'array è vuoto o più corto del numero di periodi, la media è 0.
|
||||||
|
}
|
||||||
|
|
||||||
|
const somma = myarray.slice(-periodi).reduce((accumulator: number, currentValue: number) => accumulator + currentValue, 0);
|
||||||
|
return somma / periodi;
|
||||||
|
}
|
||||||
|
|
||||||
|
function getRecordByDate(mydata: any, currentDate: Date) {
|
||||||
|
const targetDate = currentDate.toISOString().split('T')[0];
|
||||||
|
return mydata.find((record: any) => record._id === targetDate);
|
||||||
|
}
|
||||||
|
|
||||||
function mounted() {
|
function mounted() {
|
||||||
myarrdata.value = []
|
myarrdata.value = []
|
||||||
|
myarrdataLine.value = []
|
||||||
myarrbg.value = []
|
myarrbg.value = []
|
||||||
myarrlabel.value = []
|
myarrlabel.value = []
|
||||||
myarrsum.value = []
|
myarrsum.value = []
|
||||||
@@ -91,27 +84,119 @@ export default defineComponent({
|
|||||||
|
|
||||||
let num = 1
|
let num = 1
|
||||||
|
|
||||||
for (rec of props.mydata) {
|
let mostraggtutti = true
|
||||||
if (props.sum) {
|
|
||||||
somma += rec.count
|
if (mostraggtutti) {
|
||||||
} else {
|
let num = 1;
|
||||||
somma = rec.count
|
let strstartDate: any = props.mydata[0]
|
||||||
|
|
||||||
|
let startDate = new Date(strstartDate._id); // Data di inizio da props
|
||||||
|
let endDate = new Date(); // Data di fine da props
|
||||||
|
let currentDate = new Date(startDate);
|
||||||
|
|
||||||
|
// console.log('startDate', startDate, 'endDate', endDate)
|
||||||
|
|
||||||
|
while (currentDate <= endDate) {
|
||||||
|
let dataPresente = getRecordByDate(props.mydata, currentDate)
|
||||||
|
|
||||||
|
let count = dataPresente ? dataPresente.count : 0;
|
||||||
|
|
||||||
|
let day = currentDate.toISOString().split('T')[0].split('-');
|
||||||
|
let mydate = day[2] + '/' + day[1];
|
||||||
|
|
||||||
|
myarrlabel.value.push(mydate);
|
||||||
|
myarrdata.value.push(count);
|
||||||
|
|
||||||
|
let media = calcolaMedia(myarrdata.value, 30);
|
||||||
|
myarrdataLine.value.push(media ? media : undefined);
|
||||||
|
|
||||||
|
if (currentDate === endDate) {
|
||||||
|
myarrbg.value.push(tools.colourNameToHex('green'));
|
||||||
|
} else {
|
||||||
|
myarrbg.value.push(tools.colourNameToHex(props.color));
|
||||||
|
}
|
||||||
|
|
||||||
|
myarrsum.value.push(somma);
|
||||||
|
|
||||||
|
num++;
|
||||||
|
currentDate.setDate(currentDate.getDate() + 1); // Passa al giorno successivo
|
||||||
}
|
}
|
||||||
|
|
||||||
let day = rec._id.split('-')
|
} else {
|
||||||
ind = day[2] + '/' + day[1]
|
|
||||||
//myarrlabel.value.push(rec._id)
|
for (rec of props.mydata) {
|
||||||
myarrlabel.value.push(ind)
|
if (props.sum) {
|
||||||
myarrdata.value.push(rec.count)
|
somma += rec.count
|
||||||
if (num === props.mydata.length) {
|
} else {
|
||||||
myarrbg.value.push(tools.colourNameToHex('green'))
|
somma = rec.count
|
||||||
} else {
|
}
|
||||||
myarrbg.value.push(tools.colourNameToHex(props.color))
|
|
||||||
|
let day = rec._id.split('-')
|
||||||
|
ind = day[2] + '/' + day[1]
|
||||||
|
|
||||||
|
//myarrlabel.value.push(rec._id)
|
||||||
|
myarrlabel.value.push(ind)
|
||||||
|
myarrdata.value.push(rec.count)
|
||||||
|
let media = calcolaMedia(myarrdata.value, 14)
|
||||||
|
myarrdataLine.value.push(media ? media : undefined)
|
||||||
|
if (num === props.mydata.length) {
|
||||||
|
myarrbg.value.push(tools.colourNameToHex('green'))
|
||||||
|
} else {
|
||||||
|
myarrbg.value.push(tools.colourNameToHex(props.color))
|
||||||
|
}
|
||||||
|
myarrsum.value.push(somma)
|
||||||
|
num++
|
||||||
|
// ind++
|
||||||
}
|
}
|
||||||
myarrsum.value.push(somma)
|
|
||||||
num++
|
|
||||||
// ind++
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const chartData: any = {
|
||||||
|
labels: myarrlabel.value,
|
||||||
|
datasets: [
|
||||||
|
{
|
||||||
|
type: 'bar',
|
||||||
|
label: props.title,
|
||||||
|
data: myarrdata.value,
|
||||||
|
borderColor: tools.colourNameToHex('red'),
|
||||||
|
backgroundColor: myarrbg.value,
|
||||||
|
fill: true,
|
||||||
|
},
|
||||||
|
],
|
||||||
|
}
|
||||||
|
|
||||||
|
const media = {
|
||||||
|
type: 'line',
|
||||||
|
label: 'Media',
|
||||||
|
data: myarrdataLine.value,
|
||||||
|
borderColor: 'rgb(255, 99, 132)',
|
||||||
|
backgroundColor: 'rgb(255, 99, 132)',
|
||||||
|
fill: true,
|
||||||
|
}
|
||||||
|
|
||||||
|
if (props.showMedia)
|
||||||
|
chartData.datasets.push(media)
|
||||||
|
|
||||||
|
const configBar: ChartConfiguration = {
|
||||||
|
type: 'bar',
|
||||||
|
data: chartData,
|
||||||
|
options: {
|
||||||
|
scales: {
|
||||||
|
y: {
|
||||||
|
beginAtZero: true
|
||||||
|
}
|
||||||
|
},
|
||||||
|
interaction: {
|
||||||
|
intersect: false
|
||||||
|
},
|
||||||
|
},
|
||||||
|
};
|
||||||
|
|
||||||
|
const canvasTag = <ChartItem>document.getElementById('myChart')
|
||||||
|
|
||||||
|
const myChart = new Chart(
|
||||||
|
canvasTag,
|
||||||
|
configBar)
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function getoffset() {
|
function getoffset() {
|
||||||
@@ -124,11 +209,6 @@ export default defineComponent({
|
|||||||
tools,
|
tools,
|
||||||
getoffset,
|
getoffset,
|
||||||
q,
|
q,
|
||||||
options,
|
|
||||||
barChartProps,
|
|
||||||
barChartRef,
|
|
||||||
myarrdata,
|
|
||||||
myarrlabel,
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
})
|
})
|
||||||
|
|||||||
@@ -1,13 +1,6 @@
|
|||||||
<template>
|
<template>
|
||||||
<div>
|
<div>
|
||||||
<BarChart v-bind="barChartProps" />
|
<canvas id="myChart" width="400" height="400"></canvas>
|
||||||
<!--<DoughnutChart ref="doughnutRef" :chartData="objdata" :options="options" />-->
|
|
||||||
|
|
||||||
|
|
||||||
<!--<line-chart :width="tools.getwidthscale($q, 350, 400)+`px`" :title="title" :data="getmydata()" :offset="getoffset()"
|
|
||||||
:round="0" :colors="mycolors"></line-chart>
|
|
||||||
-->
|
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
|
|||||||
@@ -147,8 +147,9 @@
|
|||||||
color="green"
|
color="green"
|
||||||
>online</q-badge
|
>online</q-badge
|
||||||
>
|
>
|
||||||
|
|
||||||
<q-badge
|
<q-badge
|
||||||
v-if="!tools.isVerifiedByUser(row)"
|
v-if="tools.notisVerifiedByUser(row)"
|
||||||
align="bottom"
|
align="bottom"
|
||||||
floating
|
floating
|
||||||
color="red"
|
color="red"
|
||||||
|
|||||||
3
src/components/COSM/COSM.scss
Executable file
@@ -0,0 +1,3 @@
|
|||||||
|
.map-container {
|
||||||
|
height: 400px;
|
||||||
|
}
|
||||||
66
src/components/COSM/COSM.ts
Executable file
@@ -0,0 +1,66 @@
|
|||||||
|
import { tools } from '@store/Modules/tools'
|
||||||
|
import { useQuasar } from 'quasar'
|
||||||
|
import { PropType, defineComponent, onMounted } from 'vue'
|
||||||
|
|
||||||
|
import 'leaflet/dist/leaflet.css'
|
||||||
|
import { LMap, LTileLayer } from '@vue-leaflet/vue-leaflet'
|
||||||
|
import { ICoordinates } from '@src/model'
|
||||||
|
|
||||||
|
export default defineComponent({
|
||||||
|
name: 'COpenStreetMap',
|
||||||
|
components: {
|
||||||
|
LMap,
|
||||||
|
LTileLayer,
|
||||||
|
},
|
||||||
|
props: {
|
||||||
|
title: {
|
||||||
|
type: String,
|
||||||
|
required: true,
|
||||||
|
},
|
||||||
|
coordinates: {
|
||||||
|
type: Object as PropType<ICoordinates | null>,
|
||||||
|
required: false,
|
||||||
|
default: null,
|
||||||
|
},
|
||||||
|
coord_big: {
|
||||||
|
type: String,
|
||||||
|
required: false,
|
||||||
|
default: '',
|
||||||
|
},
|
||||||
|
urlmap: {
|
||||||
|
type: String,
|
||||||
|
required: false,
|
||||||
|
default: '',
|
||||||
|
},
|
||||||
|
imgmap: {
|
||||||
|
type: String,
|
||||||
|
required: false,
|
||||||
|
default: '',
|
||||||
|
},
|
||||||
|
zoom: {
|
||||||
|
type: Number,
|
||||||
|
required: false,
|
||||||
|
default: 2,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
setup(props, { emit }) {
|
||||||
|
const $q = useQuasar()
|
||||||
|
|
||||||
|
function mywidth() {
|
||||||
|
return tools.getwidth($q) - 20
|
||||||
|
}
|
||||||
|
|
||||||
|
function myheight() {
|
||||||
|
return 450
|
||||||
|
}
|
||||||
|
|
||||||
|
onMounted(() => {
|
||||||
|
|
||||||
|
});
|
||||||
|
|
||||||
|
return {
|
||||||
|
mywidth,
|
||||||
|
myheight,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
})
|
||||||
19
src/components/COSM/COSM.vue
Executable file
@@ -0,0 +1,19 @@
|
|||||||
|
<template>
|
||||||
|
<div>
|
||||||
|
<div style="height:600px; width:100%">
|
||||||
|
<l-map ref="map" v-model:zoom="zoom" :center="[47.41322, -1.219482]">
|
||||||
|
<l-tile-layer
|
||||||
|
url="https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png"
|
||||||
|
layer-type="base"
|
||||||
|
name="OpenStreetMap"
|
||||||
|
></l-tile-layer>
|
||||||
|
</l-map>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
<script lang="ts" src="./COSM.ts">
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="scss" scoped>
|
||||||
|
@import './COSM.scss';
|
||||||
|
</style>
|
||||||
1
src/components/COSM/index.ts
Executable file
@@ -0,0 +1 @@
|
|||||||
|
export {default as COSM} from './COSM.vue'
|
||||||
@@ -121,7 +121,8 @@
|
|||||||
</q-item>
|
</q-item>
|
||||||
<q-item
|
<q-item
|
||||||
v-if="
|
v-if="
|
||||||
cosa === shared_consts.PROD.TUTTI || cosa === shared_consts.PROD.BOTTEGA ||
|
(cosa === shared_consts.PROD.TUTTI && !isOrdGas()) ||
|
||||||
|
cosa === shared_consts.PROD.BOTTEGA ||
|
||||||
(cosa === shared_consts.PROD.GAS &&
|
(cosa === shared_consts.PROD.GAS &&
|
||||||
products.getQtyAvailable(myproduct) > 0)
|
products.getQtyAvailable(myproduct) > 0)
|
||||||
"
|
"
|
||||||
@@ -251,6 +252,19 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</q-card-section>
|
</q-card-section>
|
||||||
|
<q-card-section v-if="complete && myproduct.productInfo.link_scheda">
|
||||||
|
<div class="text-blue text-title row">
|
||||||
|
<q-icon size="sm" name="fas fa-list-ul" class="q-mr-sm" />
|
||||||
|
{{ t('products.link_scheda') }}
|
||||||
|
</div>
|
||||||
|
<div class="row items-center">
|
||||||
|
<div class="text-title text-grey-9">
|
||||||
|
<a :href="myproduct.productInfo.link_scheda" target="_blank"
|
||||||
|
>Apri Scheda</a
|
||||||
|
>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</q-card-section>
|
||||||
<q-card-section
|
<q-card-section
|
||||||
v-if="complete && myproduct.productInfo.valori_nutrizionali"
|
v-if="complete && myproduct.productInfo.valori_nutrizionali"
|
||||||
>
|
>
|
||||||
@@ -347,8 +361,8 @@
|
|||||||
<q-card-section v-if="isOrdGas()">
|
<q-card-section v-if="isOrdGas()">
|
||||||
<q-item
|
<q-item
|
||||||
v-if="
|
v-if="
|
||||||
myproduct.bookableAvailableQty > 0 ||
|
(myproduct.bookableAvailableQty > 0 && myproduct.bookableAvailableQty < shared_consts.MAX_QTA_PREORD) ||
|
||||||
myproduct.maxbookableGASQty > 0
|
(myproduct.maxbookableGASQty > 0 && myproduct.maxbookableGASQty < shared_consts.MAX_QTA_PREORD) || editOn
|
||||||
"
|
"
|
||||||
:clickable="tools.isManager()"
|
:clickable="tools.isManager()"
|
||||||
@click="
|
@click="
|
||||||
@@ -371,6 +385,19 @@
|
|||||||
<span v-if="!editOn" class="prod_preorder">
|
<span v-if="!editOn" class="prod_preorder">
|
||||||
{{ myproduct.bookableAvailableQty }}
|
{{ myproduct.bookableAvailableQty }}
|
||||||
</span>
|
</span>
|
||||||
|
<CMyValueDb
|
||||||
|
v-if="editOn"
|
||||||
|
:editOn="editOn"
|
||||||
|
:title="t('products.bookableAvailableQty')"
|
||||||
|
table="products"
|
||||||
|
:id="myproduct._id"
|
||||||
|
:rec="myproduct"
|
||||||
|
mykey="bookableAvailableQty"
|
||||||
|
debounce="1000"
|
||||||
|
:save="updateproductmodif()"
|
||||||
|
:type="costanti.FieldType.number"
|
||||||
|
>
|
||||||
|
</CMyValueDb>
|
||||||
<CMyValueDb
|
<CMyValueDb
|
||||||
v-if="editOn"
|
v-if="editOn"
|
||||||
:editOn="editOn"
|
:editOn="editOn"
|
||||||
@@ -448,7 +475,13 @@
|
|||||||
</q-item-section>
|
</q-item-section>
|
||||||
</q-item-section>
|
</q-item-section>
|
||||||
</q-item>
|
</q-item>
|
||||||
<q-item v-if="myproduct.gasordine && myproduct.gasordine.active && myproduct.idGasordine">
|
<q-item
|
||||||
|
v-if="
|
||||||
|
myproduct.gasordine &&
|
||||||
|
myproduct.gasordine.active &&
|
||||||
|
myproduct.idGasordine
|
||||||
|
"
|
||||||
|
>
|
||||||
<q-item-section avatar>
|
<q-item-section avatar>
|
||||||
<q-icon color="blue" name="fas fa-shipping-fast" />
|
<q-icon color="blue" name="fas fa-shipping-fast" />
|
||||||
</q-item-section>
|
</q-item-section>
|
||||||
@@ -577,7 +610,13 @@
|
|||||||
</q-item-section>
|
</q-item-section>
|
||||||
</q-item-section>
|
</q-item-section>
|
||||||
</q-item>
|
</q-item>
|
||||||
<q-item v-if="myproduct.gasordine && myproduct.gasordine.active && (myproduct.gasordine.dataora_chiusura_ordini || editOn)">
|
<q-item
|
||||||
|
v-if="
|
||||||
|
myproduct.gasordine &&
|
||||||
|
myproduct.gasordine.active &&
|
||||||
|
(myproduct.gasordine.dataora_chiusura_ordini || editOn)
|
||||||
|
"
|
||||||
|
>
|
||||||
<q-item-section avatar>
|
<q-item-section avatar>
|
||||||
<q-icon color="blue" name="fas fa-hourglass-half" />
|
<q-icon color="blue" name="fas fa-hourglass-half" />
|
||||||
</q-item-section>
|
</q-item-section>
|
||||||
@@ -604,7 +643,13 @@
|
|||||||
</q-item-label>
|
</q-item-label>
|
||||||
</q-item-section>
|
</q-item-section>
|
||||||
</q-item>
|
</q-item>
|
||||||
<q-item v-if="myproduct.gasordine && myproduct.gasordine.active && (labelDataArrivoMerce || editOn)">
|
<q-item
|
||||||
|
v-if="
|
||||||
|
myproduct.gasordine &&
|
||||||
|
myproduct.gasordine.active &&
|
||||||
|
(labelDataArrivoMerce || editOn)
|
||||||
|
"
|
||||||
|
>
|
||||||
<q-item-section avatar>
|
<q-item-section avatar>
|
||||||
<q-icon color="red" name="fas fa-shipping-fast" />
|
<q-icon color="red" name="fas fa-shipping-fast" />
|
||||||
</q-item-section>
|
</q-item-section>
|
||||||
@@ -627,7 +672,13 @@
|
|||||||
</q-item-label>
|
</q-item-label>
|
||||||
</q-item-section>
|
</q-item-section>
|
||||||
</q-item>
|
</q-item>
|
||||||
<q-item v-if="myproduct.gasordine && myproduct.gasordine.active && (labelDataRitiro || editOn)">
|
<q-item
|
||||||
|
v-if="
|
||||||
|
myproduct.gasordine &&
|
||||||
|
myproduct.gasordine.active &&
|
||||||
|
(labelDataRitiro || editOn)
|
||||||
|
"
|
||||||
|
>
|
||||||
<q-item-section avatar>
|
<q-item-section avatar>
|
||||||
<q-icon color="green" name="fas fa-people-carry" />
|
<q-icon color="green" name="fas fa-people-carry" />
|
||||||
</q-item-section>
|
</q-item-section>
|
||||||
|
|||||||
@@ -1,10 +1,10 @@
|
|||||||
<template>
|
<template>
|
||||||
<div v-if="order && order.product" class="q-pa-xs q-gutter-xs">
|
<div v-if="order && order.product && order.product.productInfo" class="q-pa-xs q-gutter-xs">
|
||||||
<div v-if="order.product">
|
<div v-if="order.product">
|
||||||
<q-item>
|
<q-item>
|
||||||
<q-item-section top thumbnail class="q-ml-none">
|
<q-item-section top thumbnail class="q-ml-none">
|
||||||
<img
|
<img
|
||||||
v-if="order.product && order.product.productInfo.img"
|
v-if="order.product && order.product.productInfo && order.product.productInfo.img"
|
||||||
:src="`` + order.product.productInfo.img"
|
:src="`` + order.product.productInfo.img"
|
||||||
:alt="order.product.productInfo.name"
|
:alt="order.product.productInfo.name"
|
||||||
:class="myimgclass()"
|
:class="myimgclass()"
|
||||||
|
|||||||
@@ -372,13 +372,10 @@
|
|||||||
color="blue"
|
color="blue"
|
||||||
bordercolor="blue"
|
bordercolor="blue"
|
||||||
:sum="true"
|
:sum="true"
|
||||||
|
:showMedia="true"
|
||||||
>
|
>
|
||||||
</CLineChart>
|
</CLineChart>
|
||||||
|
|
||||||
<!--<CLineChart :mydata="datastat.reg_weekly" :title="$t('stat.reg_weekly')" color="blue" bordercolor="green" :sum="true">
|
|
||||||
|
|
||||||
</CLineChart>-->
|
|
||||||
|
|
||||||
<!--<CLineChart :mydata="datastat.reg_daily" :title="$t('stat.reg_total')"
|
<!--<CLineChart :mydata="datastat.reg_daily" :title="$t('stat.reg_total')"
|
||||||
:offset="datastat.numreg_untilday" :sum="true"
|
:offset="datastat.numreg_untilday" :sum="true"
|
||||||
:mycolors="['#0b0', '#666']">
|
:mycolors="['#0b0', '#666']">
|
||||||
|
|||||||
@@ -8,6 +8,8 @@ const msg_website_enUs = {
|
|||||||
products: {
|
products: {
|
||||||
quantity: 'Quantità',
|
quantity: 'Quantità',
|
||||||
quantityAvailable: 'Disponibili',
|
quantityAvailable: 'Disponibili',
|
||||||
|
stockQty: 'In Magazzino',
|
||||||
|
stockBloccatiQty: 'Bloccati In Magazzino',
|
||||||
weight: 'Peso',
|
weight: 'Peso',
|
||||||
stars: 'Voto',
|
stars: 'Voto',
|
||||||
color: 'Colore',
|
color: 'Colore',
|
||||||
@@ -36,6 +38,7 @@ const msg_website_enUs = {
|
|||||||
productslist: 'Lista Prodotti',
|
productslist: 'Lista Prodotti',
|
||||||
collabora: 'Collabora',
|
collabora: 'Collabora',
|
||||||
storehouses: 'Magazzino',
|
storehouses: 'Magazzino',
|
||||||
|
providers: 'Fornitori',
|
||||||
departments: 'Uffici',
|
departments: 'Uffici',
|
||||||
orders: 'Ordini Ricevuti',
|
orders: 'Ordini Ricevuti',
|
||||||
orders2: 'Ordini Ricevuti',
|
orders2: 'Ordini Ricevuti',
|
||||||
|
|||||||
@@ -8,6 +8,7 @@ const msg_website_es = {
|
|||||||
products: {
|
products: {
|
||||||
quantity: 'Quantità',
|
quantity: 'Quantità',
|
||||||
quantityAvailable: 'Disponibili',
|
quantityAvailable: 'Disponibili',
|
||||||
|
stockQty: 'In Magazzino',
|
||||||
weight: 'Peso',
|
weight: 'Peso',
|
||||||
stars: 'Voto',
|
stars: 'Voto',
|
||||||
color: 'Colore',
|
color: 'Colore',
|
||||||
|
|||||||
@@ -1,9 +1,9 @@
|
|||||||
const msg_website_it = {
|
const msg_website_it = {
|
||||||
ws: {
|
ws: {
|
||||||
sitename: 'Riso',
|
sitename: 'Più che Buono',
|
||||||
siteshortname: 'RISO',
|
siteshortname: 'Più che Buono',
|
||||||
description: 'Siamo la Rete Italiana di Scambio Orizzontale, abbiamo creato questa piattaforma per metterla al servizio di chi vuole riscoprire il valore della condivisione e della cooperazione. Valori semplici e profondi che ci aiutano a ritrovare il Senso della Vita, perduto in questa società consumista, e riporti quei Sani Pricìpi Naturali ed Umani di Fratellanza che intere popolazioni antiche conoscevano bene.',
|
description: '',
|
||||||
keywords: 'riso, piattaforma di scambio, rete italiana scambio orizzontale, riso app, riso piattaforma, scambio e baratto, momenta RIS',
|
keywords: '',
|
||||||
},
|
},
|
||||||
hours: {
|
hours: {
|
||||||
descr: 'Descrizione',
|
descr: 'Descrizione',
|
||||||
@@ -16,11 +16,13 @@ const msg_website_it = {
|
|||||||
pages: {
|
pages: {
|
||||||
home: 'Home',
|
home: 'Home',
|
||||||
profile: 'Profilo',
|
profile: 'Profilo',
|
||||||
|
install_site: 'Installa Sito',
|
||||||
profile2: 'ProfiloU',
|
profile2: 'ProfiloU',
|
||||||
mypage2: 'mypage2',
|
mypage2: 'mypage2',
|
||||||
myservice2: 'myservice2',
|
myservice2: 'myservice2',
|
||||||
myhosps2: 'myhosps2',
|
myhosps2: 'myhosps2',
|
||||||
mygood2: 'mygood2',
|
mygood2: 'mygood2',
|
||||||
|
catalogo: 'Catalogo',
|
||||||
fundraising: 'Sostieni il Progetto',
|
fundraising: 'Sostieni il Progetto',
|
||||||
notifs: 'Configura le Notifiche',
|
notifs: 'Configura le Notifiche',
|
||||||
unsubscribe: 'Disiscriviti',
|
unsubscribe: 'Disiscriviti',
|
||||||
@@ -30,9 +32,18 @@ const msg_website_it = {
|
|||||||
producer: 'Produttore',
|
producer: 'Produttore',
|
||||||
orderinfo: 'Ordini Effettuati',
|
orderinfo: 'Ordini Effettuati',
|
||||||
products: 'Prodotti',
|
products: 'Prodotti',
|
||||||
|
cash: 'Cassa',
|
||||||
|
productInfos: 'Info Prodotti',
|
||||||
|
listinoprodotti: 'Listino Prodotti',
|
||||||
productslist: 'Lista Prodotti',
|
productslist: 'Lista Prodotti',
|
||||||
collabora: 'Collabora',
|
collabora: 'Collabora',
|
||||||
|
categories: 'Categorie',
|
||||||
storehouses: 'Magazzino',
|
storehouses: 'Magazzino',
|
||||||
|
providers: 'Fornitori',
|
||||||
|
catprods: 'Categorie',
|
||||||
|
subcatprods: 'Sotto-Categorie',
|
||||||
|
gasordine: 'Gas Ordine',
|
||||||
|
scontisticas: 'Scontistica',
|
||||||
departments: 'Uffici',
|
departments: 'Uffici',
|
||||||
orders: 'Ordini Ricevuti',
|
orders: 'Ordini Ricevuti',
|
||||||
orders2: 'Ordini Ricevuti',
|
orders2: 'Ordini Ricevuti',
|
||||||
@@ -121,9 +132,10 @@ const msg_website_it = {
|
|||||||
only_residenti: 'Solo Residenti',
|
only_residenti: 'Solo Residenti',
|
||||||
only_consiglio: 'Solo Consiglieri',
|
only_consiglio: 'Solo Consiglieri',
|
||||||
color: 'Colore',
|
color: 'Colore',
|
||||||
|
gasordini: 'Gas Ordini',
|
||||||
},
|
},
|
||||||
msg: {
|
msg: {
|
||||||
myAppName: 'Riso',
|
myAppName: 'Più che Buono',
|
||||||
myAppDescription: 'Il primo Vero Social Libero, Equo e Solidale, dove Vive Consapevolezza e Aiuto Comunitario. Gratuito',
|
myAppDescription: 'Il primo Vero Social Libero, Equo e Solidale, dove Vive Consapevolezza e Aiuto Comunitario. Gratuito',
|
||||||
underconstruction: 'App in costruzione...',
|
underconstruction: 'App in costruzione...',
|
||||||
myDescriz: '',
|
myDescriz: '',
|
||||||
|
|||||||
@@ -7,30 +7,6 @@ import {
|
|||||||
import { func } from '@store/Modules/fieldsTable'
|
import { func } from '@store/Modules/fieldsTable'
|
||||||
|
|
||||||
|
|
||||||
// const SHOW_PROJINTHEMENU = false
|
|
||||||
//
|
|
||||||
// let arrlistafavourite = []
|
|
||||||
// let arrlistaprojtutti = []
|
|
||||||
// let arrlistaprojmiei = []
|
|
||||||
// if (SHOW_PROJINTHEMENU) {
|
|
||||||
// arrlistaprojtutti = Projects.getters.listaprojects(RouteNames.projectsall)
|
|
||||||
// arrlistaprojmiei = Projects.getters.listaprojects(RouteNames.myprojects)
|
|
||||||
// arrlistafavourite = Projects.getters.listaprojects(RouteNames.favouriteprojects)
|
|
||||||
// }
|
|
||||||
// PROGETTI -> FAVORITI :
|
|
||||||
|
|
||||||
// if (arrlistafavourite.length > 0) {
|
|
||||||
// arrMenu.push({
|
|
||||||
// icon: 'favorite_border',
|
|
||||||
// nametranslate: 'pages.' + RouteNames.favouriteprojects,
|
|
||||||
// urlroute: RouteNames.favouriteprojects,
|
|
||||||
// level_parent: 0.0,
|
|
||||||
// level_child: 0.5,
|
|
||||||
// routes2: arrlistafavourite,
|
|
||||||
// idelem: ''
|
|
||||||
// })
|
|
||||||
// }
|
|
||||||
|
|
||||||
const firstPage = {
|
const firstPage = {
|
||||||
active: true,
|
active: true,
|
||||||
order: 5,
|
order: 5,
|
||||||
@@ -57,56 +33,57 @@ function getDynamicPages(site: ISites): IListRoutes[] {
|
|||||||
inmenu: true,
|
inmenu: true,
|
||||||
infooter: true,
|
infooter: true,
|
||||||
},
|
},
|
||||||
{
|
/*{
|
||||||
active: true,
|
active: true,
|
||||||
order: 400,
|
order: 20,
|
||||||
path: '/test',
|
path: '/events',
|
||||||
materialIcon: 'fas fa-test',
|
materialIcon: 'fas fa-bullhorn',
|
||||||
name: 'mypages.test',
|
name: 'mypages.events',
|
||||||
component: () => import('@/views/testServer/testServer.vue'),
|
component: () => import('@/root/eventi/eventi.vue'),
|
||||||
inmenu: false,
|
meta: { requiresAuth: true },
|
||||||
infooter: false,
|
inmenu: true,
|
||||||
},
|
infooter: true,
|
||||||
|
},*/
|
||||||
{
|
{
|
||||||
active: true,
|
active: site.confpages && site.confpages.showProfile,
|
||||||
order: 12,
|
order: 120,
|
||||||
path: '/goods',
|
path: '/myprofile',
|
||||||
materialIcon: 'fas fa-tshirt',
|
materialIcon: 'fas fa-user',
|
||||||
name: 'mypages.goods',
|
name: 'pages.profile',
|
||||||
component: () => import('@/root/goods/goods.vue'),
|
component: () => import('@/views/user/myprofile/myprofile.vue'),
|
||||||
meta: { requiresAuth: true },
|
meta: { requiresAuth: true },
|
||||||
inmenu: true,
|
inmenu: true,
|
||||||
infooter: true,
|
infooter: true,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
active: true,
|
active: true,
|
||||||
order: 15,
|
order: 120,
|
||||||
path: '/services',
|
path: '/install_site',
|
||||||
materialIcon: 'fas fa-house-user',
|
materialIcon: 'fas fa-user',
|
||||||
name: 'mypages.services',
|
name: 'pages.install_site',
|
||||||
component: () => import('@/root/services/services.vue'),
|
component: () => import('@/views/admin/install_site/install_site.vue'),
|
||||||
meta: { requiresAuth: true },
|
|
||||||
inmenu: true,
|
|
||||||
infooter: true,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
active: true,
|
|
||||||
order: 15,
|
|
||||||
path: '/provapao',
|
|
||||||
materialIcon: 'fas fa-house-user',
|
|
||||||
name: 'mypages.provapao',
|
|
||||||
component: () => import('@/root/provapao/provapao.vue'),
|
|
||||||
meta: { requiresAuth: true },
|
meta: { requiresAuth: true },
|
||||||
inmenu: false,
|
inmenu: false,
|
||||||
infooter: false,
|
infooter: false,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
active: true,
|
active: site.confpages && site.confpages.showProfile,
|
||||||
order: 15,
|
order: 120,
|
||||||
path: '/hosps',
|
path: '/editprofile',
|
||||||
materialIcon: 'fas fa-bed',
|
materialIcon: 'fas fa-user',
|
||||||
name: 'mypages.hosp',
|
name: 'pages.profile3',
|
||||||
component: () => import('@/root/hosp/hosp.vue'),
|
component: () => import('@/views/user/editprofile/editprofile.vue'),
|
||||||
|
meta: { requiresAuth: true },
|
||||||
|
inmenu: false,
|
||||||
|
infooter: false,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
active: site.confpages && site.confpages.showiscrittiMenu,
|
||||||
|
order: 130,
|
||||||
|
path: '/friends',
|
||||||
|
materialIcon: 'fas fa-user-friends',
|
||||||
|
name: 'mypages.iscritti',
|
||||||
|
component: () => import('@/views/user/myfriends/myfriends.vue'),
|
||||||
meta: { requiresAuth: true },
|
meta: { requiresAuth: true },
|
||||||
inmenu: true,
|
inmenu: true,
|
||||||
infooter: true,
|
infooter: true,
|
||||||
@@ -121,50 +98,8 @@ function getDynamicPages(site: ISites): IListRoutes[] {
|
|||||||
meta: { requiresAuth: true },
|
meta: { requiresAuth: true },
|
||||||
inmenu: true,
|
inmenu: true,
|
||||||
infooter: true,
|
infooter: true,
|
||||||
},
|
onlyAdmin: true,
|
||||||
{
|
onlyManager: true,
|
||||||
active: true,
|
|
||||||
order: 20,
|
|
||||||
path: '/events',
|
|
||||||
materialIcon: 'fas fa-bullhorn',
|
|
||||||
name: 'mypages.events',
|
|
||||||
component: () => import('@/root/eventi/eventi.vue'),
|
|
||||||
meta: { requiresAuth: true },
|
|
||||||
inmenu: true,
|
|
||||||
infooter: true,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
active: true,
|
|
||||||
order: 120,
|
|
||||||
path: '/myprofile',
|
|
||||||
materialIcon: 'fas fa-user',
|
|
||||||
name: 'pages.profile',
|
|
||||||
component: () => import('@/views/user/myprofile/myprofile.vue'),
|
|
||||||
meta: { requiresAuth: true },
|
|
||||||
inmenu: true,
|
|
||||||
infooter: true,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
active: true,
|
|
||||||
order: 120,
|
|
||||||
path: '/editprofile',
|
|
||||||
materialIcon: 'fas fa-user',
|
|
||||||
name: 'pages.profile3',
|
|
||||||
component: () => import('@/views/user/editprofile/editprofile.vue'),
|
|
||||||
meta: { requiresAuth: true },
|
|
||||||
inmenu: false,
|
|
||||||
infooter: false,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
active: true,
|
|
||||||
order: 130,
|
|
||||||
path: '/friends',
|
|
||||||
materialIcon: 'fas fa-user-friends',
|
|
||||||
name: 'mypages.iscritti',
|
|
||||||
component: () => import('@/views/user/myfriends/myfriends.vue'),
|
|
||||||
meta: { requiresAuth: true },
|
|
||||||
inmenu: true,
|
|
||||||
infooter: true,
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
active: site.confpages && site.confpages.enableGroups,
|
active: site.confpages && site.confpages.enableGroups,
|
||||||
@@ -176,6 +111,8 @@ function getDynamicPages(site: ISites): IListRoutes[] {
|
|||||||
meta: { requiresAuth: true },
|
meta: { requiresAuth: true },
|
||||||
inmenu: true,
|
inmenu: true,
|
||||||
infooter: false,
|
infooter: false,
|
||||||
|
onlyAdmin: true,
|
||||||
|
onlyManager: true,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
active: true,
|
active: true,
|
||||||
|
|||||||
@@ -1215,3 +1215,9 @@ export interface IAnim {
|
|||||||
cldelay: string,
|
cldelay: string,
|
||||||
timingtype: string,
|
timingtype: string,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
export interface ICoordinates {
|
||||||
|
lat: any
|
||||||
|
long: any
|
||||||
|
}
|
||||||
@@ -14,12 +14,15 @@ export interface IProductInfo {
|
|||||||
color?: string,
|
color?: string,
|
||||||
size?: string,
|
size?: string,
|
||||||
weight?: number,
|
weight?: number,
|
||||||
|
weight_lordo?: number,
|
||||||
unit: number,
|
unit: number,
|
||||||
|
unit_lordo?: number,
|
||||||
stars?: number,
|
stars?: number,
|
||||||
date?: Date,
|
date?: Date,
|
||||||
icon?: string,
|
icon?: string,
|
||||||
img?: string
|
img?: string
|
||||||
ingredienti?: string,
|
ingredienti?: string,
|
||||||
|
link_scheda?: string,
|
||||||
valori_nutrizionali?: string,
|
valori_nutrizionali?: string,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -32,7 +32,7 @@ export default defineComponent({
|
|||||||
const incaricamento = ref(false)
|
const incaricamento = ref(false)
|
||||||
const checkAggiornaQta = ref(false)
|
const checkAggiornaQta = ref(false)
|
||||||
|
|
||||||
const cosafare = ref(shared_consts.Cmd.PRODUCTS)
|
const cosafare = ref(shared_consts.Cmd.PRODUCTS_V2)
|
||||||
|
|
||||||
const inputfile = ref('')
|
const inputfile = ref('')
|
||||||
const risultato = ref('')
|
const risultato = ref('')
|
||||||
@@ -46,6 +46,10 @@ export default defineComponent({
|
|||||||
label: 'Importa Prodotti',
|
label: 'Importa Prodotti',
|
||||||
value: shared_consts.Cmd.PRODUCTS
|
value: shared_consts.Cmd.PRODUCTS
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
label: 'Importa Prodotti Versione 2',
|
||||||
|
value: shared_consts.Cmd.PRODUCTS_V2
|
||||||
|
},
|
||||||
{
|
{
|
||||||
label: 'Importa Inventario',
|
label: 'Importa Inventario',
|
||||||
value: shared_consts.Cmd.INVENTARIO
|
value: shared_consts.Cmd.INVENTARIO
|
||||||
@@ -375,10 +379,14 @@ export default defineComponent({
|
|||||||
let arrCols: any = []
|
let arrCols: any = []
|
||||||
|
|
||||||
if (skipfirstrow.value) {
|
if (skipfirstrow.value) {
|
||||||
arrCols = myarr[0].split(',');
|
arrCols = myarr[0]
|
||||||
}
|
}
|
||||||
console.log('arrCols', arrCols)
|
console.log('arrCols', arrCols)
|
||||||
|
|
||||||
|
if (cmd === shared_consts.Cmd.PRODUCTS_V2) {
|
||||||
|
skipfirstrow.value = false
|
||||||
|
}
|
||||||
|
|
||||||
for (const rec of myarr) {
|
for (const rec of myarr) {
|
||||||
|
|
||||||
if (skipfirstrow.value) {
|
if (skipfirstrow.value) {
|
||||||
@@ -425,10 +433,12 @@ export default defineComponent({
|
|||||||
strris += addfield(col, 'weight', rec, { isnumero: true }); col++;
|
strris += addfield(col, 'weight', rec, { isnumero: true }); col++;
|
||||||
strris += addfield(col, 'unit', rec, {}); col++;
|
strris += addfield(col, 'unit', rec, {}); col++;
|
||||||
strris += addfield(col, 'link', rec, {}); col++;
|
strris += addfield(col, 'link', rec, {}); col++;
|
||||||
|
|
||||||
strris += addfield(col, 'perc_iva', rec, {}); col++;
|
strris += addfield(col, 'perc_iva', rec, {}); col++;
|
||||||
strris += addfield(col, 'price_acquistato', rec, { isnumero: true }); col++;
|
strris += addfield(col, 'price_acquistato', rec, { isnumero: true }); col++;
|
||||||
strris += addfield(col, 'minBuyQty', rec, { isnumero: true }); col++;
|
strris += addfield(col, 'minBuyQty', rec, { isnumero: true }); col++;
|
||||||
strris += addfield(col, 'minStepQty', rec, { isnumero: true }); col++;
|
strris += addfield(col, 'minStepQty', rec, { isnumero: true }); col++;
|
||||||
|
|
||||||
strris += addfield(col, 'cat_name', rec, {}); col++;
|
strris += addfield(col, 'cat_name', rec, {}); col++;
|
||||||
strris += addfield(col, 'subcat_name', rec, {}); col++;
|
strris += addfield(col, 'subcat_name', rec, {}); col++;
|
||||||
strris += addfield(col, 'producer_name', rec, {}); col++;
|
strris += addfield(col, 'producer_name', rec, {}); col++;
|
||||||
@@ -442,6 +452,20 @@ export default defineComponent({
|
|||||||
strris += addfield(col, 'note', rec, {}); col++;
|
strris += addfield(col, 'note', rec, {}); col++;
|
||||||
strris += '} '
|
strris += '} '
|
||||||
|
|
||||||
|
} else if (cmd === shared_consts.Cmd.PRODUCTS_V2) {
|
||||||
|
if (!primo) {
|
||||||
|
strris += ', '
|
||||||
|
}
|
||||||
|
|
||||||
|
strris += '{ '
|
||||||
|
let col = 0;
|
||||||
|
strris += addfield(col, 'idapp', rec, { strinput: tools.appid(), primo: true });
|
||||||
|
for (const mycol of arrCols) {
|
||||||
|
strris += addfield(col, mycol, rec, {}); col++;
|
||||||
|
}
|
||||||
|
|
||||||
|
strris += '} '
|
||||||
|
|
||||||
} else if (cmd === shared_consts.Cmd.INVENTARIO) {
|
} else if (cmd === shared_consts.Cmd.INVENTARIO) {
|
||||||
if (!primo) {
|
if (!primo) {
|
||||||
strris += ', '
|
strris += ', '
|
||||||
@@ -453,7 +477,9 @@ export default defineComponent({
|
|||||||
for (const mycol of arrCols) {
|
for (const mycol of arrCols) {
|
||||||
strris += addfield(col, mycol, rec, {}); col++;
|
strris += addfield(col, mycol, rec, {}); col++;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
strris += '} '
|
||||||
|
|
||||||
} else if (cmd === shared_consts.Cmd.CITIES_SERVER) {
|
} else if (cmd === shared_consts.Cmd.CITIES_SERVER) {
|
||||||
strris += '{ \n'
|
strris += '{ \n'
|
||||||
strris += ' _id :' + ind + ',\n'
|
strris += ' _id :' + ind + ',\n'
|
||||||
@@ -474,7 +500,7 @@ export default defineComponent({
|
|||||||
|
|
||||||
if (cmd === shared_consts.Cmd.CITIES_SERVER) {
|
if (cmd === shared_consts.Cmd.CITIES_SERVER) {
|
||||||
userStore.importToServerCmd($q, t, cmd, null)
|
userStore.importToServerCmd($q, t, cmd, null)
|
||||||
} else if (cmd === shared_consts.Cmd.PRODUCTS) {
|
} else if ((cmd === shared_consts.Cmd.PRODUCTS) || (cmd === shared_consts.Cmd.PRODUCTS_V2)) {
|
||||||
let options = { aggiornaStockQty: checkAggiornaQta.value }
|
let options = { aggiornaStockQty: checkAggiornaQta.value }
|
||||||
if (importasulserver.value)
|
if (importasulserver.value)
|
||||||
userStore.importToServerCmd($q, t, cmd, { arrdata: strris, options })
|
userStore.importToServerCmd($q, t, cmd, { arrdata: strris, options })
|
||||||
@@ -485,19 +511,34 @@ export default defineComponent({
|
|||||||
return risultato
|
return risultato
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function reset() {
|
||||||
|
risultato.value = ''
|
||||||
|
risraw.value = ''
|
||||||
|
inputfile.value = ''
|
||||||
|
}
|
||||||
|
|
||||||
function loadTextFromFile(ev: any) {
|
function loadTextFromFile(ev: any) {
|
||||||
console.log('ev', ev)
|
try {
|
||||||
const file = ev.target.files[0]
|
console.log('ev', ev)
|
||||||
const reader = new FileReader()
|
reset()
|
||||||
|
|
||||||
|
if (ev.target && ev.target.files) {
|
||||||
|
const file = ev.target.files[0]
|
||||||
|
const reader = new FileReader()
|
||||||
|
|
||||||
reader.onload = (e: any) => {
|
reader.onload = (e: any) => {
|
||||||
|
|
||||||
const testo = e.target.result
|
const testo = e.target.result
|
||||||
|
|
||||||
risultato.value = importCmd(cosafare.value, testo)
|
risultato.value = importCmd(cosafare.value, testo)
|
||||||
|
}
|
||||||
|
|
||||||
|
if (file)
|
||||||
|
reader.readAsText(file)
|
||||||
|
}
|
||||||
|
} catch (e) {
|
||||||
|
risultato.value = ''
|
||||||
}
|
}
|
||||||
|
|
||||||
reader.readAsText(file)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function eseguiCmd() {
|
function eseguiCmd() {
|
||||||
@@ -508,11 +549,13 @@ export default defineComponent({
|
|||||||
function eseguiCmdProduct() {
|
function eseguiCmdProduct() {
|
||||||
let options = { aggiornaStockQty: checkAggiornaQta.value }
|
let options = { aggiornaStockQty: checkAggiornaQta.value }
|
||||||
userStore.importToServerCmd($q, t, cosafare.value, { arrdata: risultato.value, options })
|
userStore.importToServerCmd($q, t, cosafare.value, { arrdata: risultato.value, options })
|
||||||
|
risultato.value = ''
|
||||||
}
|
}
|
||||||
|
|
||||||
function eseguiCmdInventario() {
|
function eseguiCmdInventario() {
|
||||||
let options = { aggiornaStockQty: checkAggiornaQta.value }
|
let options = { aggiornaStockQty: checkAggiornaQta.value }
|
||||||
userStore.importToServerCmd($q, t, cosafare.value, { arrdata: risultato.value, options })
|
userStore.importToServerCmd($q, t, cosafare.value, { arrdata: risultato.value, options })
|
||||||
|
risultato.value = ''
|
||||||
}
|
}
|
||||||
|
|
||||||
function createProvLink() {
|
function createProvLink() {
|
||||||
|
|||||||
@@ -15,9 +15,9 @@
|
|||||||
<br>
|
<br>
|
||||||
|
|
||||||
<br>
|
<br>
|
||||||
<q-btn v-if="cosafare !== shared_consts.Cmd.PRODUCTS" label="Esegui" @click="eseguiCmd"></q-btn>
|
<q-btn v-if="(cosafare !== shared_consts.Cmd.PRODUCTS && cosafare !== shared_consts.Cmd.PRODUCTS_V2)" label="Esegui" @click="eseguiCmd"></q-btn>
|
||||||
|
|
||||||
<q-btn v-else-if="cosafare === shared_consts.Cmd.PRODUCTS" label="Importa Prodotti" @click="eseguiCmdProduct"></q-btn>
|
<q-btn v-else-if="cosafare === shared_consts.Cmd.PRODUCTS" label="Importa Prodotti" @click="eseguiCmdProduct"></q-btn>
|
||||||
|
<q-btn v-else-if="cosafare === shared_consts.Cmd.PRODUCTS_V2" label="Importa Prodotti Versione 2" @click="eseguiCmdProduct"></q-btn>
|
||||||
<q-btn v-else-if="cosafare === shared_consts.Cmd.INVENTARIO" label="Importa Inventario" @click="eseguiCmdInventario"></q-btn>
|
<q-btn v-else-if="cosafare === shared_consts.Cmd.INVENTARIO" label="Importa Inventario" @click="eseguiCmdInventario"></q-btn>
|
||||||
|
|
||||||
<br>
|
<br>
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
import { IListRoutes, ISites } from '@src/model'
|
import { IListRoutes, ISites } from '@src/model'
|
||||||
|
import { tools } from '@src/store/Modules/tools'
|
||||||
|
|
||||||
function getRoutesEcomm(site: ISites) {
|
function getRoutesEcomm(site: ISites) {
|
||||||
|
|
||||||
@@ -40,7 +41,7 @@ function getRoutesEcomm(site: ISites) {
|
|||||||
level_child: 0.5,
|
level_child: 0.5,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
active: true,
|
active: tools.isAdmin(),
|
||||||
order: 30,
|
order: 30,
|
||||||
path: '/orderinfo',
|
path: '/orderinfo',
|
||||||
materialIcon: 'fas fa-file-alt',
|
materialIcon: 'fas fa-file-alt',
|
||||||
|
|||||||
@@ -92,6 +92,7 @@ const msg_it = {
|
|||||||
gasordine: 'Ordine Gas',
|
gasordine: 'Ordine Gas',
|
||||||
select_gasordine: 'Scegli l\'Ordine del GAS',
|
select_gasordine: 'Scegli l\'Ordine del GAS',
|
||||||
productInfo: 'Info Prodotto',
|
productInfo: 'Info Prodotto',
|
||||||
|
link_scheda: 'Link Scheda',
|
||||||
},
|
},
|
||||||
storehouses: {
|
storehouses: {
|
||||||
name: 'Magazzino',
|
name: 'Magazzino',
|
||||||
@@ -1172,6 +1173,7 @@ const msg_it = {
|
|||||||
iscritti: 'Iscritti',
|
iscritti: 'Iscritti',
|
||||||
bacheca: 'Bacheca',
|
bacheca: 'Bacheca',
|
||||||
services: 'Servizi',
|
services: 'Servizi',
|
||||||
|
catalogo: 'Catalogo',
|
||||||
handshake: 'Rapporti di Fiducia',
|
handshake: 'Rapporti di Fiducia',
|
||||||
hosp: 'Ospitalità',
|
hosp: 'Ospitalità',
|
||||||
events: 'Eventi',
|
events: 'Eventi',
|
||||||
|
|||||||
@@ -2041,13 +2041,19 @@ export const colTableProductInfos = [
|
|||||||
AddCol({ name: 'color', label_trans: 'products.color' }),
|
AddCol({ name: 'color', label_trans: 'products.color' }),
|
||||||
AddCol({ name: 'size', label_trans: 'products.size' }),
|
AddCol({ name: 'size', label_trans: 'products.size' }),
|
||||||
AddCol({ name: 'weight', label_trans: 'products.weight', fieldtype: costanti.FieldType.number }),
|
AddCol({ name: 'weight', label_trans: 'products.weight', fieldtype: costanti.FieldType.number }),
|
||||||
|
AddCol({ name: 'weight_lordo', label_trans: 'products.weight_lordo', fieldtype: costanti.FieldType.number }),
|
||||||
AddCol({ name: 'vegan', label_trans: 'products.vegan', fieldtype: costanti.FieldType.boolean }),
|
AddCol({ name: 'vegan', label_trans: 'products.vegan', fieldtype: costanti.FieldType.boolean }),
|
||||||
AddCol({
|
AddCol({
|
||||||
name: 'unit', label_trans: 'products.unit',
|
name: 'unit', label_trans: 'products.unit',
|
||||||
fieldtype: costanti.FieldType.select, jointable: 'units',
|
fieldtype: costanti.FieldType.select, jointable: 'units',
|
||||||
}),
|
}),
|
||||||
|
AddCol({
|
||||||
|
name: 'unit_lordo', label_trans: 'products.unit_lordo',
|
||||||
|
fieldtype: costanti.FieldType.select, jointable: 'units',
|
||||||
|
}),
|
||||||
AddCol({ name: 'stars', label_trans: 'products.stars', fieldtype: costanti.FieldType.number }),
|
AddCol({ name: 'stars', label_trans: 'products.stars', fieldtype: costanti.FieldType.number }),
|
||||||
AddCol({ name: 'date', label_trans: 'products.date', fieldtype: costanti.FieldType.date }),
|
AddCol({ name: 'date', label_trans: 'products.date', fieldtype: costanti.FieldType.date }),
|
||||||
|
AddCol({ name: 'link_scheda', label_trans: 'products.link_scheda' }),
|
||||||
AddCol({ name: 'ingredienti', label_trans: 'products.ingredienti', fieldtype: costanti.FieldType.html }),
|
AddCol({ name: 'ingredienti', label_trans: 'products.ingredienti', fieldtype: costanti.FieldType.html }),
|
||||||
AddCol({ name: 'valori_nutrizionali', label_trans: 'products.valori_nutrizionali', fieldtype: costanti.FieldType.html }),
|
AddCol({ name: 'valori_nutrizionali', label_trans: 'products.valori_nutrizionali', fieldtype: costanti.FieldType.html }),
|
||||||
AddCol({ name: 'note', label_trans: 'products.note', fieldtype: costanti.FieldType.html }),
|
AddCol({ name: 'note', label_trans: 'products.note', fieldtype: costanti.FieldType.html }),
|
||||||
|
|||||||
@@ -3756,6 +3756,14 @@ export const tools = {
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
|
notisVerifiedByUser(user: IUserFields) {
|
||||||
|
try {
|
||||||
|
return user && user.hasOwnProperty('verified_by_aportador') && user.verified_by_aportador === false
|
||||||
|
} catch (e) {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
addMinutes(mydate: Date, minutes: number) {
|
addMinutes(mydate: Date, minutes: number) {
|
||||||
return date.addToDate(mydate, { minutes })
|
return date.addToDate(mydate, { minutes })
|
||||||
},
|
},
|
||||||
@@ -8301,6 +8309,7 @@ export const tools = {
|
|||||||
return weight
|
return weight
|
||||||
},
|
},
|
||||||
|
|
||||||
|
|
||||||
getWeightTotalByOrder(order: IOrder) {
|
getWeightTotalByOrder(order: IOrder) {
|
||||||
return (order.product && order.product.productInfo && order.product.productInfo.weight ? order.product.productInfo.weight : 1) * (order.quantitypreordered | 0 + order.quantity | 0)
|
return (order.product && order.product.productInfo && order.product.productInfo.weight ? order.product.productInfo.weight : 1) * (order.quantitypreordered | 0 + order.quantity | 0)
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -985,7 +985,7 @@ export const useProducts = defineStore('Products', {
|
|||||||
enableAddQty(myorder: IOrder, myproduct: IProduct): boolean {
|
enableAddQty(myorder: IOrder, myproduct: IProduct): boolean {
|
||||||
const globalStore = useGlobalStore()
|
const globalStore = useGlobalStore()
|
||||||
if (globalStore.site.ecomm && globalStore.site.ecomm.enablePreOrders) {
|
if (globalStore.site.ecomm && globalStore.site.ecomm.enablePreOrders) {
|
||||||
return (this.getQtyBookableAvailable(myproduct) > 0
|
return ((this.getQtyBookableAvailable(myproduct) > 0)
|
||||||
&& (myproduct.maxBookableSinglePersQty === 0
|
&& (myproduct.maxBookableSinglePersQty === 0
|
||||||
|| (myorder.quantitypreordered + 1 < myproduct.maxBookableSinglePersQty))
|
|| (myorder.quantitypreordered + 1 < myproduct.maxBookableSinglePersQty))
|
||||||
)
|
)
|
||||||
@@ -1011,6 +1011,10 @@ export const useProducts = defineStore('Products', {
|
|||||||
step = myproduct.minBuyQty
|
step = myproduct.minBuyQty
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (step === 0) {
|
||||||
|
step = 1
|
||||||
|
}
|
||||||
|
|
||||||
return step
|
return step
|
||||||
},
|
},
|
||||||
|
|
||||||
|
|||||||
@@ -626,6 +626,14 @@
|
|||||||
></q-btn>
|
></q-btn>
|
||||||
<br />
|
<br />
|
||||||
</div>
|
</div>
|
||||||
|
<div class="row">
|
||||||
|
<q-btn
|
||||||
|
label="removeRegulations"
|
||||||
|
color="primary"
|
||||||
|
@click="EseguiFunz('removeRegulations')"
|
||||||
|
></q-btn>
|
||||||
|
<br />
|
||||||
|
</div>
|
||||||
</template>
|
</template>
|
||||||
<script lang="ts" src="./dbop.ts">
|
<script lang="ts" src="./dbop.ts">
|
||||||
</script>
|
</script>
|
||||||
|
|||||||
@@ -17,8 +17,8 @@
|
|||||||
toggle-color="primary"
|
toggle-color="primary"
|
||||||
:options="[
|
:options="[
|
||||||
{ value: shared_consts.PROD.TUTTI, slot: 'tutti' },
|
{ value: shared_consts.PROD.TUTTI, slot: 'tutti' },
|
||||||
{ value: shared_consts.PROD.BOTTEGA, slot: 'bottega' },
|
|
||||||
{ value: shared_consts.PROD.GAS, slot: 'gas' },
|
{ value: shared_consts.PROD.GAS, slot: 'gas' },
|
||||||
|
{ value: shared_consts.PROD.BOTTEGA, slot: 'bottega' },
|
||||||
]"
|
]"
|
||||||
>
|
>
|
||||||
<template v-slot:tutti>
|
<template v-slot:tutti>
|
||||||
|
|||||||
@@ -197,6 +197,7 @@ export default defineComponent({
|
|||||||
{
|
{
|
||||||
$project: {
|
$project: {
|
||||||
username: 1,
|
username: 1,
|
||||||
|
verified_by_aportador: 1,
|
||||||
name: 1,
|
name: 1,
|
||||||
surname: 1,
|
surname: 1,
|
||||||
date_reg: 1,
|
date_reg: 1,
|
||||||
@@ -272,6 +273,7 @@ export default defineComponent({
|
|||||||
descr: 1,
|
descr: 1,
|
||||||
photos: 1,
|
photos: 1,
|
||||||
surname: 1,
|
surname: 1,
|
||||||
|
verified_by_aportador: 1,
|
||||||
admins: 1,
|
admins: 1,
|
||||||
idapp: 1,
|
idapp: 1,
|
||||||
'circuit.name': 1, 'circuit._id': 1
|
'circuit.name': 1, 'circuit._id': 1
|
||||||
|
|||||||
@@ -11,6 +11,7 @@
|
|||||||
"**/*.config.js" // for *.config.js files
|
"**/*.config.js" // for *.config.js files
|
||||||
],
|
],
|
||||||
"compilerOptions": {
|
"compilerOptions": {
|
||||||
|
"sourceMap": true,
|
||||||
"moduleResolution": "node",
|
"moduleResolution": "node",
|
||||||
"experimentalDecorators": true,
|
"experimentalDecorators": true,
|
||||||
"baseUrl": ".",
|
"baseUrl": ".",
|
||||||
|
|||||||