Compare commits

...

5 Commits

Author SHA1 Message Date
Paolo Arena
b9d451bd49 Project e Todos 2021-02-03 01:32:09 +01:00
Paolo Arena
316ebbb78b Ordini 2021-01-18 00:47:30 +01:00
Paolo Arena
d31a5e88ec Carrello Spesa 2020-12-25 03:54:41 +01:00
Paolo Arena
f094af396b Carrello Spesa 2020-12-25 03:53:36 +01:00
Paolo Arena
1ee08b57ab Creazione tabella Product 2020-12-21 02:15:34 +01:00
38 changed files with 557 additions and 28334 deletions

28137
package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@@ -70,7 +70,7 @@
"vue-scroll-reveal": "^1.0.11", "vue-scroll-reveal": "^1.0.11",
"vue-svgicon": "^3.1.0", "vue-svgicon": "^3.1.0",
"vue-tel-input": "^4.1.1", "vue-tel-input": "^4.1.1",
"vue2-dragula": "^2.5.4", "vue2-dragula": "2.5.5",
"vuelidate": "^0.7.4", "vuelidate": "^0.7.4",
"vuex": "^3.0.1", "vuex": "^3.0.1",
"vuex-class": "^0.3.1", "vuex-class": "^0.3.1",

View File

@@ -94,6 +94,7 @@ module.exports = function (ctx) {
store: 'src/store/index.ts' store: 'src/store/index.ts'
}, },
// app plugins (/src/plugins) // app plugins (/src/plugins)
// app plugins (/src/plugins)
boot: [ boot: [
{ path: 'vue-i18n', server: true, client: true }, { path: 'vue-i18n', server: true, client: true },
{ path: 'vue-meta', server: true, client: true }, { path: 'vue-meta', server: true, client: true },
@@ -104,10 +105,11 @@ module.exports = function (ctx) {
{ path: 'error-handler', server: true, client: true }, { path: 'error-handler', server: true, client: true },
{ path: 'globalroutines', server: true, client: true }, { path: 'globalroutines', server: true, client: true },
{ path: 'vue-idb', server: true, client: true }, { path: 'vue-idb', server: true, client: true },
{ path: 'dragula', server: true, client: true },
{ path: 'guard', server: true, client: true }, { path: 'guard', server: true, client: true },
{ path: 'vuetelinput', server: true, client: true }, { path: 'vuetelinput', server: true, client: true },
{ path: 'mycharts', server: true, client: true }], { path: 'mycharts', server: true, client: true }],
// { path: 'googlemap', server: true, client: true }], // { path: 'googlemap', server: true, client: true }],
css: [ css: [
'app.styl' 'app.styl'
], ],
@@ -306,12 +308,17 @@ module.exports = function (ctx) {
background_color: '#ffffff', background_color: '#ffffff',
icons: [ icons: [
{ {
'src': 'statics/icons/android-chrome-192x192.png', 'src': 'statics/icons/android-chrome-36x36.png',
'sizes': '192x192', 'sizes': '36x36',
'type': 'image/png' 'type': 'image/png'
}, },
{ {
'src': 'statics/icons/android-chrome-512x512', 'src': 'statics/icons/android-chrome-96x96.png',
'sizes': '96x96',
'type': 'image/png'
},
{
'src': 'statics/icons/android-chrome-512x512.png',
'sizes': '512x512', 'sizes': '512x512',
'type': 'image/png' 'type': 'image/png'
} }

View File

@@ -24,6 +24,9 @@ register(process.env.SERVICE_WORKER_FILE, {
}, },
updated(registration) { updated(registration) {
console.log('New content is available; please refresh.') console.log('New content is available; please refresh.')
document.dispatchEvent(
new CustomEvent('swUpdated', { detail: registration })
)
}, },
offline() { offline() {
console.log('No internet connection found. App is running in offline mode.') console.log('No internet connection found. App is running in offline mode.')

View File

@@ -201,6 +201,17 @@ $heightBtn: 100%;
} }
} }
.text-price {
margin-bottom: 6px;
font-size: 1.10rem;
font-weight: 400;
text-shadow: .25 .25rem .5rem $grayshadow;
letter-spacing: .00937em;
&.big {
font-size: 1.5rem;
}
}
.text-subtitle2, h3 { .text-subtitle2, h3 {
margin-bottom: 4px; margin-bottom: 4px;
font-size: 1.15rem; font-size: 1.15rem;
@@ -237,6 +248,10 @@ $heightBtn: 100%;
font-size: 0.75rem; font-size: 0.75rem;
} }
.text-subtitle4 {
font-size: 0.7rem;
}
.cltexth3 { .cltexth3 {
font-size: 1.25rem; font-size: 1.25rem;
} }
@@ -247,18 +262,25 @@ $heightBtn: 100%;
.text-sobig { .text-sobig {
font-size: 1.50rem; font-size: 1.50rem;
} }
} }
.my-card { .my-card {
width: 100%; width: 100%;
max-width: 350px; max-width: 300px;
min-width: 300px; min-width: 300px;
padding: 1rem 1rem; padding: 1rem 1rem;
box-shadow: none; box-shadow: none;
} }
.my-card-big {
width: 100%;
max-width: 400px;
padding: 1rem 1rem;
box-shadow: none;
}
.text-trans { .text-trans {
opacity: 0.9; opacity: 0.9;
-ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=90)"; -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=90)";
@@ -726,6 +748,13 @@ $heightBtn: 100%;
padding: 6px; padding: 6px;
} }
.clBorderShare {
border-radius: 32px;
font-size: 1rem;
padding: 6px;
border: #666cf6 solid 3px;
}
.clBorderImportant, .clBorderSteps { .clBorderImportant, .clBorderSteps {
border: red solid 5px; border: red solid 5px;
border-radius: 16px; border-radius: 16px;
@@ -793,6 +822,10 @@ $heightBtn: 100%;
font-size: 1rem; font-size: 1rem;
} }
.text-h8{
font-size: 0.85rem;
}
.bordo_stondato, .bordo_stondato_blu{ .bordo_stondato, .bordo_stondato_blu{
margin: 4px; margin: 4px;
border-radius: 3rem; border-radius: 3rem;
@@ -885,3 +918,31 @@ $heightBtn: 100%;
font-size: 0.8rem !important; font-size: 0.8rem !important;
} }
} }
#mycontainer {
min-height:100%;
position:relative;
}
.myheader {
padding: 5px;
@media (max-width: 500px) {
padding: 1px;
}
}
#mybody {
padding: 5px;
@media (max-width: 500px) {
padding: 1px;
}
}
.myfooter{
}
.iconplusminus{
font-size: 6px;
}
.clpos{
color: gray;
}

View File

@@ -8,13 +8,13 @@ import { Header } from './components/Header'
import globalroutines from './globalroutines/index' import globalroutines from './globalroutines/index'
import { GlobalStore } from './store/Modules' import { GlobalStore } from './store/Modules'
import { toolsext } from '@src/store/Modules/toolsext' import { toolsext } from '@src/store/Modules/toolsext'
import { BannerCookies, CPreloadImages, CTesseraElettronica } from '@components' import { BannerCookies, CPreloadImages } from '@components'
import { static_data } from '@src/db/static_data' import { static_data } from '@src/db/static_data'
@Component({ @Component({
components: { components: {
appHeader: Header, appHeader: Header,
BannerCookies, CPreloadImages, CTesseraElettronica BannerCookies, CPreloadImages
}, },
router router
}) })

View File

@@ -1,35 +1,35 @@
<template> <template>
<div id="q-app"> <div id="q-app">
<div> <div>
<q-layout view="hHh Lpr lff" class="shadow-2 rounded-borders"> <q-layout view="hHh Lpr lff" class="shadow-2 rounded-borders">
<app-header> <app-header>
</app-header> </app-header>
<q-ajax-bar></q-ajax-bar> <q-ajax-bar></q-ajax-bar>
<CPreloadImages :arrimg="static_data.preLoadImages"> <CPreloadImages :arrimg="static_data.preLoadImages">
</CPreloadImages> </CPreloadImages>
<q-page-container id="mypage" > <q-page-container id="mypage">
<div v-if="finishLoading"> <div v-if="finishLoading">
<transition name="fade" mode="out-in"> <transition name="fade" mode="out-in">
<router-view/> <router-view/>
</transition> </transition>
</div> </div>
<q-inner-loading id="spinner" :showing="!finishLoading"> <q-inner-loading id="spinner" :showing="!finishLoading">
<q-spinner-tail <q-spinner-tail
color="primary" color="primary"
size="4em"> size="4em">
</q-spinner-tail> </q-spinner-tail>
</q-inner-loading> </q-inner-loading>
</q-page-container> </q-page-container>
</q-layout> </q-layout>
</div>
<BannerCookies urlInfo="/policy"></BannerCookies>
</div> </div>
<BannerCookies urlInfo="/policy"></BannerCookies>
</div>
</template> </template>
<script lang="ts" src="./App.ts"> <script lang="ts" src="./App.ts">
</script> </script>
<style lang="scss"> <style lang="scss">
@import './App'; @import './App';
</style> </style>

View File

@@ -4,10 +4,26 @@ const msg_website_it = {
siteshortname: 'CNM', siteshortname: 'CNM',
botname: 'CNM BOT', botname: 'CNM BOT',
}, },
products: {
quantity: 'Quantità',
quantityAvailable: 'Disponibili',
weight: 'Peso',
stars: 'Voto',
},
pages: { pages: {
home: 'Home', home: 'Home',
profile: 'Profilo', profile: 'Profilo',
projects: 'Progetti', projects: 'Progetti',
producer: 'Produttore',
orderinfo: 'Ordini Effettuati',
products: 'Prodotti',
collabora: 'Collabora',
storehouses: 'Magazzino',
departments: 'Uffici',
orders: 'Ordini Ricevuti',
orders2: 'Ordini Ricevuti',
sharewithus: 'Condividi con Noi',
checkout: 'Carrello',
payment: 'Pagamenti', payment: 'Pagamenti',
regok: 'Registrazione Confermata', regok: 'Registrazione Confermata',
presentazione: 'Presentazione', presentazione: 'Presentazione',
@@ -41,6 +57,7 @@ const msg_website_it = {
prova: 'prova', prova: 'prova',
dbop: 'Operazioni', dbop: 'Operazioni',
projall: 'Tutti', projall: 'Tutti',
groups: 'Gruppi',
projectsShared: 'Miei Condivisi', projectsShared: 'Miei Condivisi',
myprojects: 'Miei Personali', myprojects: 'Miei Personali',
favproj: 'Favoriti', favproj: 'Favoriti',
@@ -57,7 +74,11 @@ const msg_website_it = {
req: 'Passi', req: 'Passi',
people: 'Inv.', people: 'Inv.',
peoplelegend: 'Numero d\'Invitati' peoplelegend: 'Numero d\'Invitati'
} },
admin_ecommerce: 'ECommerce',
ecommerce: 'E-Commerce',
ecommerce_menu: 'ECommerce1'
}, },
msg: { msg: {
myAppDescription: '', myAppDescription: '',

View File

@@ -18,11 +18,13 @@ const functionality: IFunctionality = {
ENABLE_REG_AYNI: false, ENABLE_REG_AYNI: false,
SHOW_NEWSLETTER: false, SHOW_NEWSLETTER: false,
SHOW_ONLY_POLICY: true, SHOW_ONLY_POLICY: true,
ENABLE_TODOS_LOADING: false, ENABLE_TODOS_LOADING: true,
ENABLE_PROJECTS_LOADING: true, ENABLE_PROJECTS_LOADING: true,
SHOW_IF_IS_SERVER_CONNECTION: true, SHOW_IF_IS_SERVER_CONNECTION: true,
SHOW_MESSAGES: false, SHOW_MESSAGES: false,
BOOKING_EVENTS: false BOOKING_EVENTS: true,
ENABLE_ECOMMERCE: true,
ENABLE_REG_CNM: true,
} }
const routes_admin: IListRoutes[] = [ const routes_admin: IListRoutes[] = [
@@ -51,70 +53,224 @@ const routes_admin: IListRoutes[] = [
inmenu: true, inmenu: true,
submenu: true, submenu: true,
onlyAdmin: true onlyAdmin: true
},
{
active: true,
order: 1030,
path: '/admin/sendpushnotif',
materialIcon: 'event_seat',
name: 'otherpages.manage.sendpushnotif',
component: () => import('@/rootgen/admin/sendpushnotif/sendpushnotif.vue'),
level_parent: 0.0,
level_child: 0.5,
inmenu: true,
submenu: true,
onlyAdmin: true
} }
] ]
const routes_projects: IListRoutes[] = [ const routes_projects: IListRoutes[] = [
{ {
active: functionality.ENABLE_PROJECTS_LOADING, active: functionality.ENABLE_PROJECTS_LOADING,
order: 10, order: 5,
path: '/' + RouteNames.projectsall + '/:idProj', path: '/admin/groups',
materialIcon: 'accessibility_new', materialIcon: 'accessibility_new',
name: RouteNames.projectsall, name: 'pages.groups',
level_parent: 0.0,
level_child: 0.5,
component: () => import('@/rootgen/admin/groups/groups.vue'),
inmenu: true,
onlyManager: true,
onlyAdmin: true,
infooter: functionality.ENABLE_PROJECTS_LOADING,
},
{
active: functionality.ENABLE_PROJECTS_LOADING,
order: 10,
path: '/projall/',
materialIcon: 'accessibility_new',
urlroute: 'projall',
name: 'pages.projall',
level_parent: 0.0, level_parent: 0.0,
level_child: 0.5, level_child: 0.5,
component: () => import('@/views/projects/proj-list/proj-list.vue'), component: () => import('@/views/projects/proj-list/proj-list.vue'),
inmenu: functionality.SHOW_MESSAGES, inmenu: functionality.SHOW_MESSAGES,
infooter: functionality.ENABLE_PROJECTS_LOADING, infooter: functionality.ENABLE_PROJECTS_LOADING,
meta: {
requiresAuth: false,
async asyncData() {
// await Todos.actions.dbLoad({ checkPending: false })
await Projects.actions.dbLoad({ checkPending: false, onlyiffirsttime: true })
}
},
idelem: process.env.PROJECT_ID_MAIN idelem: process.env.PROJECT_ID_MAIN
}, },
{ {
active: functionality.ENABLE_PROJECTS_LOADING, active: functionality.ENABLE_PROJECTS_LOADING,
order: 20, order: 20,
path: '/' + RouteNames.myprojects + '/:idProj', path: '/myprojects/',
materialIcon: 'accessibility_new', materialIcon: 'accessibility_new',
name: RouteNames.myprojects, name: 'pages.myprojects',
urlroute: 'myprojects',
level_parent: 0.0, level_parent: 0.0,
level_child: 0.5, level_child: 0.5,
component: () => import('@/views/projects/proj-list/proj-list.vue'), component: () => import('@/views/projects/proj-list/proj-list.vue'),
inmenu: functionality.SHOW_MESSAGES, inmenu: functionality.SHOW_MESSAGES,
infooter: functionality.ENABLE_PROJECTS_LOADING, infooter: functionality.ENABLE_PROJECTS_LOADING,
meta: {
requiresAuth: false,
async asyncData() {
// await Todos.actions.dbLoad({ checkPending: false })
await Projects.actions.dbLoad({ checkPending: false, onlyiffirsttime: true })
}
},
idelem: process.env.PROJECT_ID_MAIN idelem: process.env.PROJECT_ID_MAIN
}, },
{ {
active: functionality.ENABLE_PROJECTS_LOADING, active: functionality.ENABLE_PROJECTS_LOADING,
order: 30, order: 30,
path: '/' + RouteNames.projectsshared + '/:idProj', path: '/projectsShared/',
urlroute: 'projectsShared',
materialIcon: 'accessibility_new', materialIcon: 'accessibility_new',
name: RouteNames.projectsshared, name: 'pages.projectsShared',
level_parent: 0.0, level_parent: 0.0,
level_child: 0.5, level_child: 0.5,
component: () => import('@/views/projects/proj-list/proj-list.vue'), component: () => import('@/views/projects/proj-list/proj-list.vue'),
inmenu: functionality.SHOW_MESSAGES, inmenu: functionality.SHOW_MESSAGES,
infooter: functionality.ENABLE_PROJECTS_LOADING, infooter: functionality.ENABLE_PROJECTS_LOADING,
meta: {
requiresAuth: false,
async asyncData() {
// await Todos.actions.dbLoad({ checkPending: false })
await Projects.actions.dbLoad({ checkPending: false, onlyiffirsttime: true })
}
},
idelem: process.env.PROJECT_ID_MAIN idelem: process.env.PROJECT_ID_MAIN
} }
]
const routes_ecommerce: IListRoutes[] = [
{
active: true,
order: 30,
path: '/checkout',
materialIcon: 'fas fa-shopping-cart',
name: 'pages.checkout',
component: () => import('@/views/ecommerce/checkOut/checkOut.vue'),
inmenu: true,
submenu: true,
level_parent: 0,
level_child: 0.5,
},
{
active: true,
order: 30,
path: '/orderinfo',
materialIcon: 'fas fa-shopping-cart',
name: 'pages.orderinfo',
component: () => import('@/views/ecommerce/orderInfo/orderInfo.vue'),
inmenu: true,
submenu: true,
level_parent: 0,
level_child: 0.5,
},
{
active: true,
order: 35,
path: '/admin/ecommerce/orders',
materialIcon: 'fas fa-file-alt',
name: 'pages.orders',
component: () => import('@/rootgen/admin/orders/orders.vue'),
inmenu: true,
submenu: true,
level_parent: 0,
level_child: 0.5,
onlyDepartment: true
},
]
const routes_admin_ecommerce: IListRoutes[] = [
{
active: true,
order: 30,
path: '/admin/ecommerce/products',
materialIcon: 'fas fa-file-alt',
name: 'pages.products',
component: () => import('@/rootgen/admin/products/products.vue'),
inmenu: true,
submenu: true,
level_parent: 0,
level_child: 0.5,
onlyManager: true,
onlyTraduttrici: true
},
{
active: true,
order: 30,
path: '/admin/ecommerce/producers',
materialIcon: 'fas fa-file-alt',
name: 'pages.producer',
component: () => import('@/rootgen/admin/producer/producer.vue'),
inmenu: true,
submenu: true,
level_parent: 0,
level_child: 0.5,
onlyManager: true,
onlyTraduttrici: true
},
{
active: true,
order: 30,
path: '/admin/ecommerce/storehouses',
materialIcon: 'fas fa-file-alt',
name: 'pages.storehouses',
component: () => import('@/rootgen/admin/storehouses/storehouses.vue'),
inmenu: true,
submenu: true,
level_parent: 0,
level_child: 0.5,
onlyManager: true,
onlyTraduttrici: true
},
{
active: true,
order: 31,
path: '/admin/ecommerce/departments',
materialIcon: 'fas fa-file-alt',
name: 'pages.departments',
component: () => import('@/rootgen/admin/departments/departments.vue'),
inmenu: true,
submenu: true,
level_parent: 0,
level_child: 0.5,
onlyManager: true,
onlyTraduttrici: true
},
]
const routes_admin_ecommerce_menu: IListRoutes[] = [
{
active: true,
order: 30,
path: '/admin/ecommerce/products',
name: 'pages.products',
component: () => import('@/rootgen/admin/products/products.vue'),
inmenu: false,
infooter: false,
},
{
active: true,
order: 31,
path: '/admin/ecommerce/producers',
name: 'pages.producer',
component: () => import('@/rootgen/admin/producer/producer.vue'),
inmenu: false,
infooter: false,
},
{
active: true,
order: 32,
path: '/admin/ecommerce/storehouses',
name: 'pages.storehouses',
component: () => import('@/rootgen/admin/storehouses/storehouses.vue'),
infooter: false,
},
{
active: true,
order: 32,
path: '/admin/ecommerce/departments',
name: 'pages.departments',
component: () => import('@/rootgen/admin/departments/departments.vue'),
infooter: false,
},
{
active: true,
order: 35,
path: '/admin/ecommerce/orders',
name: 'pages.orders2',
component: () => import('@/rootgen/admin/orders/orders.vue'),
infooter: false,
},
] ]
@@ -236,7 +392,40 @@ const routes_manager: IListRoutes[] = [
}, },
{ {
active: true, active: true,
order: 30, path: '/admin/newsletter',
order: 60,
faIcon: 'fa fa-list-alt',
materialIcon: 'fas fa-users',
name: 'otherpages.admin.newsletter',
routes2: routes_newsletter,
inmenu: false,
submenu: true,
level_parent: 0.5,
level_child: 0.5,
solotitle: true,
onlyAdmin: true,
onlyManager: true
},
{
active: functionality.ENABLE_ECOMMERCE,
path: '/admin/ecommerce',
order: 31,
faIcon: 'fa fa-list-alt',
materialIcon: 'next_week',
name: 'pages.admin_ecommerce',
routes2: routes_admin_ecommerce,
inmenu: false,
submenu: true,
level_parent: 0.5,
level_child: 0.5,
solotitle: true,
onlyAdmin: true,
onlyManager: true,
onlyDepartment: true
},
{
active: true,
order: 35,
path: '/admin/msg_template', path: '/admin/msg_template',
materialIcon: 'fas fa-file-alt', materialIcon: 'fas fa-file-alt',
name: 'msgs.messages', name: 'msgs.messages',
@@ -277,21 +466,6 @@ const routes_manager: IListRoutes[] = [
onlyAdmin: true, onlyAdmin: true,
onlyManager: true onlyManager: true
}, },
{
active: true,
order: 60,
path: '/admin/newsletter',
materialIcon: 'fas fa-users',
name: 'otherpages.admin.newsletter',
inmenu: false,
submenu: true,
routes2: routes_newsletter,
solotitle: true,
level_parent: 0.5,
level_child: 0.5,
onlyAdmin: true,
onlyManager: true
},
{ {
active: functionality.BOOKING_EVENTS, active: functionality.BOOKING_EVENTS,
order: 70, order: 70,
@@ -349,6 +523,17 @@ const baseroutes: IListRoutes[] = [
inmenu: false, inmenu: false,
infooter: false infooter: false
}, },
{
active: true,
order: 1000,
path: '/product/:codprod',
materialIcon: 'event',
name: 'otherpages.product',
component: () => import('@/views/ecommerce/productInfo/productInfo.vue'),
inmenu: false,
infooter: false
},
...routes_admin_ecommerce_menu,
{ {
active: true, active: true,
order: 1000, order: 1000,
@@ -360,7 +545,7 @@ const baseroutes: IListRoutes[] = [
infooter: false infooter: false
}, },
{ {
active: true, active: functionality.ENABLE_PROJECTS_LOADING,
path: '', path: '',
order: 10001, order: 10001,
faIcon: 'fa fa-list-alt', faIcon: 'fa fa-list-alt',
@@ -369,9 +554,23 @@ const baseroutes: IListRoutes[] = [
routes2: routes_projects, routes2: routes_projects,
inmenu: true, inmenu: true,
solotitle: true, solotitle: true,
infooter: true,
onlySocioResidente: true,
onlyAdmin: true,
},
{
active: functionality.ENABLE_ECOMMERCE,
path: '',
order: 1402,
faIcon: 'fa fa-list-alt',
materialIcon: 'next_week',
name: 'pages.ecommerce',
routes2: routes_ecommerce,
inmenu: true,
solotitle: true,
infooter: true infooter: true
}, },
...routes_projects, ...routes_ecommerce,
{ {
active: true, active: true,
order: 2000, order: 2000,
@@ -425,7 +624,7 @@ const baseroutes: IListRoutes[] = [
path: '/signup', path: '/signup',
materialIcon: 'how_to_reg', materialIcon: 'how_to_reg',
name: 'pages.SignUp', name: 'pages.SignUp',
component: () => import('@/views/login/signup_complete/signup_complete.vue'), component: () => import('@/views/login/signup/signup.vue'),
inmenu: false, inmenu: false,
infooter: false, infooter: false,
separator: false separator: false
@@ -491,14 +690,64 @@ const baseroutes: IListRoutes[] = [
path: '/offline', path: '/offline',
name: 'Offline', name: 'Offline',
component: () => import('@/views/offline/offline.vue') component: () => import('@/views/offline/offline.vue')
},
{
active: functionality.ENABLE_PROJECTS_LOADING,
order: 5,
path: '/admin/groups',
materialIcon: 'accessibility_new',
name: 'pages.groups',
component: () => import('@/rootgen/admin/groups/groups.vue'),
inmenu: true,
onlyManager: true,
onlyAdmin: true,
infooter: functionality.ENABLE_PROJECTS_LOADING,
},
{
active: functionality.ENABLE_PROJECTS_LOADING,
order: 10,
path: '/projall/:idProj',
materialIcon: 'accessibility_new',
name: 'pages.projall',
urlroute: 'projall',
component: () => import('@/views/projects/proj-list/proj-list.vue'),
inmenu: false,
infooter: false,
// idelem: process.env.PROJECT_ID_MAIN
},
{
active: functionality.ENABLE_PROJECTS_LOADING,
order: 20,
path: '/myprojects/:idProj',
materialIcon: 'accessibility_new',
name: 'pages.myprojects',
urlroute: 'myprojects',
component: () => import('@/views/projects/proj-list/proj-list.vue'),
inmenu: false,
infooter: false,
// idelem: process.env.PROJECT_ID_MAIN
},
{
active: functionality.ENABLE_PROJECTS_LOADING,
order: 30,
path: '/projectsShared/:idProj',
urlroute: 'projectsShared',
materialIcon: 'accessibility_new',
name: 'pages.projectsShared',
component: () => import('@/views/projects/proj-list/proj-list.vue'),
inmenu: false,
infooter: false,
// idelem: process.env.PROJECT_ID_MAIN
} }
] ]
export const routes = baseroutes export const routes = baseroutes
const preLoadImages: IPreloadImages[] = [ const preLoadImages: IPreloadImages[] = [
{ imgname: '../../statics/images/logo.png', alt: 'logo', mobile: false }, { imgname: '../../statics/images/logo.png', alt: 'logo', mobile: false },
{ imgname: '../../statics/icons/flag_it.svg', alt: 'flag it', mobile: false } { imgname: '../../statics/icons/flag_it.svg', alt: 'flag it', mobile: false },
{ imgname: '../../statics/icons/flag_uk.svg', alt: 'flag en', mobile: false }
// { imgname: '../../statics/images/background.jpg', alt: 'corsi di formazione per operatori del massaggio del benessere', mobile: true }, // { imgname: '../../statics/images/background.jpg', alt: 'corsi di formazione per operatori del massaggio del benessere', mobile: true },
// { imgname: '../../statics/images/background2.jpg', alt: 'stanza con cuscini per seminario reiki', mobile: true }, // { imgname: '../../statics/images/background2.jpg', alt: 'stanza con cuscini per seminario reiki', mobile: true },
// { imgname: '../../statics/images/background3.jpg', alt: 'foto di gruppo seminaristi reiki', mobile: true }, // { imgname: '../../statics/images/background3.jpg', alt: 'foto di gruppo seminaristi reiki', mobile: true },
@@ -510,13 +759,13 @@ export function preloadedimages() {
} }
const arrLangUsed = [ const arrLangUsed = [
'it', 'it'
'enUs' // 'enUs'
] ]
const lang_available: ILang[] = [ const lang_available: ILang[] = [
{ label: 'Italiano', icon: 'fa-flag-it', value: 'it', image: '../statics/icons/flag_it.svg', short: 'IT' }, { label: 'Italiano', icon: 'fa-flag-it', value: 'it', image: '../statics/icons/flag_it.svg', short: 'IT' },
{ label: 'English', icon: 'fa-flag-us', value: 'enUs', image: '../statics/icons/flag_gb.svg', short: 'EN' } // { label: 'English', icon: 'fa-flag-us', value: 'enUs', image: '../statics/icons/flag_gb.svg', short: 'EN' }
// { label: 'German', icon: 'fa-flag-de', value: 'de', image: '../statics/images/de.png', short: 'DE' }, // { label: 'German', icon: 'fa-flag-de', value: 'de', image: '../statics/images/de.png', short: 'DE' },
] ]

View File

@@ -17,7 +17,7 @@
<link rel="icon" type="image/png" sizes="16x16" <link rel="icon" type="image/png" sizes="16x16"
href="<%= htmlWebpackPlugin.files.publicPath %>statics/icons/favicon-16x16.png"> href="<%= htmlWebpackPlugin.files.publicPath %>statics/icons/favicon-16x16.png">
<script src="<%= htmlWebpackPlugin.files.publicPath %>statics/js/track.js"></script> <!--<script src="<%= htmlWebpackPlugin.files.publicPath %>statics/js/track.js"></script>-->
<script src="https://www.gstatic.com/charts/loader.js"></script> <script src="https://www.gstatic.com/charts/loader.js"></script>

View File

@@ -505,3 +505,6 @@ body.mobile .landing:before {
background-repeat: no-repeat; background-repeat: no-repeat;
background-position: 50%; background-position: 50%;
} }
.add-button {
}

View File

@@ -1,16 +1,14 @@
import Vue from 'vue' import Vue from 'vue'
import { Component } from 'vue-property-decorator' import { Component } from 'vue-property-decorator'
import { GlobalStore, UserStore, NotevoleStore } from '@store' import { GlobalStore, UserStore } from '@store'
import { Logo } from '../../components/logo' import { Logo } from '../../components/logo'
import { Footer } from '../../components/Footer' import { Footer } from '../../components/Footer'
import { CMyPage } from '../../components/CMyPage/index' import { CMyPage } from '../../components/CMyPage/index'
import VueScrollReveal from 'vue-scroll-reveal'
import { tools } from '@src/store/Modules/tools' import { tools } from '@src/store/Modules/tools'
import { func_tools, toolsext } from '@src/store/Modules/toolsext' import { func_tools, toolsext } from '@src/store/Modules/toolsext'
import { Screen } from 'quasar'
import MixinMetaTags from '@src/mixins/mixin-metatags' import MixinMetaTags from '@src/mixins/mixin-metatags'
import { import {
CCardCarousel, CCardCarousel,
@@ -19,30 +17,33 @@ import {
CStatus, CStatus,
CStatusReg, CStatusReg,
CNextZoom, CNextZoom,
CVerifyTelegram, CVerifyEmail CVerifyTelegram, CVerifyEmail, CECommerce, CShareWithUs
} from '@components' } from '@components'
import MixinBase from '@src/mixins/mixin-base' import MixinBase from '@src/mixins/mixin-base'
import { static_data } from '@src/db/static_data' import { static_data } from '@src/db/static_data'
import { INotData } from '@src/model' import { INotData } from '@src/model'
// Vue.use(VueScrollReveal, {
// class: 'v-scroll-reveal', // A CSS class applied to elements with the v-scroll-reveal directive; useful for animation overrides.
// duration: 1200,
// scale: 0.95,
// distance: '10px',
// rotate: {
// x: 0,
// y: 0,
// z: 0
// }
// // mobile: true
// })
@Component({ @Component({
mixins: [MixinBase], mixins: [MixinBase],
components: { Logo, Footer, CMyPage, CCardCarousel, CTitleBanner, CImgText, CStatus, CStatusReg, CNextZoom, CVerifyTelegram, CVerifyEmail } components: {
Logo,
Footer,
CMyPage,
CCardCarousel,
CTitleBanner,
CImgText,
CStatus,
CStatusReg,
CNextZoom,
CVerifyTelegram,
CVerifyEmail,
CECommerce,
CShareWithUs
}
}) })
export default class Home extends MixinBase { export default class Home extends MixinBase {
public deferredPrompt: any = null
public showbuttonHS: boolean = false
public text: string = '' public text: string = ''
public visibile: boolean = false public visibile: boolean = false
public cardvisible: string = 'hidden' public cardvisible: string = 'hidden'
@@ -65,72 +66,19 @@ export default class Home extends MixinBase {
public arrvideo_yt = [] public arrvideo_yt = []
public arrvideo_mp4 = [] public arrvideo_mp4 = []
public arrsteps = [ public arrsteps = [
{ {
label: '1', label: '1',
value: 0, value: 0,
title: { title: {
it: '<strong>Passo 1 - Contributore Finanziario</strong><br><br>' + it: '<strong>Passo 1 - Contributore Finanziario</strong><br><br>' +
'A) Capisco come funziona e lo condivido ad altre 2 persone che vogliono partecipare.<br>' + 'A) Capisco come funziona e lo condivido ad altre 2 persone che vogliono partecipare.<br>' +
'B) Entro nella chat e dono i <strong>33€</strong> al gestore della Billettera.', 'B) Entro nella chat e dono i <strong>33€</strong> al gestore della Billettera.',
es: '', es: '',
enUs: '' enUs: ''
}, },
myicon: 'fas fa-donate', myicon: 'fas fa-donate',
},
{
label: '2',
value: 1,
title: {
it: '<strong>Passo 2 - Contributore solidale</strong><br><br>' +
'Invio il link per registrarsi alle mie 2 persone, che cosí verseranno i 33€.',
es: '',
enUs: ''
},
myicon: 'fas fa-user-friends',
myicon2: 'fas fa-coins'
},
{
label: '3',
value: 2,
title: {
it: '<strong>Passo 3 - Tesoriere/segretario</strong><br><br>' +
'Collaboro, aggiorno la lista dei doni, fornisco informazioni, ma anche conosco, condivido esperienze, passioni e sogni.',
es: '',
enUs: ''
},
myicon: 'fas fa-piggy-bank',
myicon2: 'far fa-laugh',
myicon3: 'far fa-comments'
},
{
label: '4',
value: 3,
title: {
it: '<strong>Passo 4 - Apertura tua Billettera</strong><br>' +
'Creo il mio gruppo Telegram nel quale entrano i miei 2 ospiti, i 2 ospiti dei miei 2 ospiti, che porteranno altre 8 persone (4x2).<br>' +
'<br>Ricevuti i 33€ da queste 8 persone (264€), mi tengo i mei <strong>iniziali 33€</strong> e <strong>dono 231 €</strong> alla Billettera "Mas Antigua".',
es: '',
enUs: ''
},
myicon: 'fab fa-whatsapp',
myicon2: 'fas fa-wallet'
},
{
label: '5',
value: 4,
title: {
it: '<strong>Passo 5</strong><br>' +
'Aspetto, da parte delle 8 nuove Billettere, le donazioni di 231€, per un totale di <strong>1848€</strong>.<br>' +
'<br>Ringrazio l\'<strong>Universo</strong> per il <strong>dono</strong> ricevuto e fornisco <strong>aiuto</strong> a chi ne ha bisogno.<br>' +
'Se desidero, posso <strong>ricominciare</strong>!',
es: '',
enUs: ''
},
myicon: 'far fa-clock',
myicon2: 'fas fa-euro-sign',
myicon3: 'fas fa-praying-hands',
myimg: '/' + tools.getimglogo(),
} }
] ]
@@ -144,26 +92,6 @@ export default class Home extends MixinBase {
color: 'white', icon: 'fas fa-hands-helping', color: 'white', icon: 'fas fa-hands-helping',
textcolor: 'black' textcolor: 'black'
}, },
{
title: {
it: 'È un lavoro di squadra, dove ognuno fa la sua parte.',
es: '',
enUs: ''
},
color: 'white',
icon: 'fas fa-users',
textcolor: 'black'
},
{
title: {
it: 'E\' un\'opportunità di risentire vecchi amici, ed avere un intento comune, per risentirci e di riconnetterci.<br>',
es: '',
enUs: ''
},
color: 'white',
icon: 'fas fa-hand-holding-heart',
textcolor: 'black'
}
] ]
constructor() { constructor() {
@@ -246,6 +174,14 @@ export default class Home extends MixinBase {
return UserStore.state.isLogged return UserStore.state.isLogged
} }
get isSocio() {
return UserStore.state.my.profile.socio
}
get isSocioResidente() {
return UserStore.state.my.profile.socioresidente
}
get static_data() { get static_data() {
return static_data return static_data
} }
@@ -271,13 +207,38 @@ export default class Home extends MixinBase {
tools.showNotif(this.$q, String(my)) tools.showNotif(this.$q, String(my))
} }
public addtoHomeScreen() {
if (!!this.deferredPrompt) {
this.deferredPrompt.prompt()
// Wait for the user to respond to the prompt
this.deferredPrompt.userChoice.then((choiceResult) => {
if (choiceResult.outcome === 'accepted') {
this.showbuttonHS = false
console.log('User accepted the A2HS prompt')
} else {
console.log('User dismissed the A2HS prompt')
}
this.deferredPrompt = null
})
}
}
public initprompt() { public initprompt() {
window.addEventListener('beforeinstallprompt', (event) => { window.addEventListener('beforeinstallprompt', (event) => {
// console.log('******************************** beforeinstallprompt fired') console.log('******************************** beforeinstallprompt fired')
event.preventDefault() event.preventDefault()
// console.log('§§§§§§§§§§§§§§§§§§§§ IMPOSTA DEFERRED PROMPT !!!!!!!!!!!!!!!!! ')
// #Todo++ IMPOSTA DEFERRED PROMPT this.deferredPrompt = event
return false
// Update UI to notify the user they can add to home screen
this.showbuttonHS = true
})
window.addEventListener('appinstalled', (evt) => {
// Log install to analytics
console.log('INSTALL: Success')
}) })
} }
@@ -349,7 +310,8 @@ export default class Home extends MixinBase {
} }
public openrighttoolbar() { public openrighttoolbar() {
GlobalStore.state.RightDrawerOpen = true GlobalStore.state.rightDrawerOpen = true
GlobalStore.state.rightCartOpen = false
} }
get TelegCode() { get TelegCode() {

View File

@@ -57,17 +57,69 @@
@input="changetab" @input="changetab"
> >
<q-tab name="guida" icon="fas fa-check" :label="$t('pages.home')"></q-tab> <q-tab name="guida" icon="fas fa-check" :label="$t('pages.home')"></q-tab>
<q-tab name="zoom" icon="fas fa-video" :label="$t('pages.nextzoom')"></q-tab> <q-tab v-if="isLogged && isSocio" name="prodotti" icon="fas fa-shopping-cart"
<q-tab name="statistiche" icon="fas fa-chart-line" :label="$t('pages.status')"></q-tab> :label="$t('pages.products')"></q-tab>
<q-tab v-if="isLogged" name="collabora" icon="fas fa-users" :label="$t('pages.collabora')"></q-tab>
<!--<q-tab name="zoom" icon="fas fa-video" :label="$t('pages.nextzoom')"></q-tab>-->
<!--<q-tab name="statistiche" icon="fas fa-chart-line" :label="$t('pages.status')"></q-tab>-->
</q-tabs> </q-tabs>
<q-tab-panels v-model="tab" animated> <q-tab-panels v-model="tab" animated>
<q-tab-panel name="guida"> <q-tab-panel name="guida">
<div v-if="isLogged"> <div class="q-ma-xs q-pa-xs text-center rounded-borders">
<div v-if="isLogged">
<div>
<!--<q-field-->
<!--v-if="getPermission() === 'granted'"-->
<!--icon="notifications"-->
<!--class="shadow"-->
<!--:label="$t('notification.titlegranted')"-->
<!--:helper="$t('notification.statusnot')">-->
<!--</q-field>-->
<q-field
v-if="NotServiceWorker()"
class="shadow"
icon="notifications"
label="Service Worker not present"
>
</q-field>
</div>
<div>
<q-btn v-if="getPermission() !== 'granted'"
class="enable-notifications shadow"
color="primary" rounded
size="md"
icon="notifications" @click="tools.askfornotification(mythis)"
:label="$t('notification.ask')"/>
<!--<q-btn v-if="getPermission() === 'granted'" class="enable-notifications" color="primary" rounded size="lg" icon="notifications" @click="showNotificationExample" label="Send Notification"/>-->
<!--<q-btn v-if="getPermission() === 'granted'" class="enable-notifications" color="secondary" rounded size="lg" icon="notifications" @click="createPushSubscription" label="Create Push Subscription !"/>-->
</div>
</div>
<q-btn class="enable-notifications shadow add-button" v-if="showbuttonHS" @click="addtoHomeScreen"
color="primary" rounded
size="md"
icon="fas fa-plus"
label="Aggiungi alle tue Applicazioni">
</q-btn>
<div class="q-pt-md q-pl-sm">
<div class="text-body2 text-italic text-grey">Versione App {{ getenv('APP_VERSION') }}</div>
</div>
</div> </div>
</q-tab-panel>
<q-tab-panel name="prodotti">
<CECommerce>
</CECommerce>
</q-tab-panel>
<q-tab-panel name="collabora">
<CShareWithUs></CShareWithUs>
</q-tab-panel> </q-tab-panel>
<q-tab-panel name="zoom"> <q-tab-panel name="zoom">
<CNextZoom> <CNextZoom>

View File

@@ -15,9 +15,9 @@
</CVideoPromo> </CVideoPromo>
<q-page v-if="!!invited" padding class="signup" > <q-page v-if="!!invited" padding class="signup" >
<CSignUpNotevole :showadultcheck="true" :showcell="true" :showaportador="true" :shownationality="true"> <CSignUp>
</CSignUpNotevole> </CSignUp>
</q-page> </q-page>
</div> </div>

View File

@@ -32,10 +32,11 @@ export interface IMyRouteRecord extends RouteRecord {
meta: IMyMeta, meta: IMyMeta,
} }
export interface IMyRouteConfig extends RouteConfig { /*export interface IMyRouteConfig extends RouteConfig {
children?: IMyRouteConfig[], children?: IMyRouteConfig[],
meta?: IMyMeta meta?: IMyMeta
} }*/
export const cfgrouter = { export const cfgrouter = {

View File

@@ -7,5 +7,6 @@ export const RouteNames = {
myprojects: 'myprojects', myprojects: 'myprojects',
favouriteprojects: 'favproj', favouriteprojects: 'favproj',
listprojects: 'listproj', listprojects: 'listproj',
livelli: 'livelli' livelli: 'livelli',
ecommerce: 'ecommerce'
} }

Binary file not shown.

After

Width:  |  Height:  |  Size: 50 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 85 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 451 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.5 KiB

After

Width:  |  Height:  |  Size: 34 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.5 KiB

After

Width:  |  Height:  |  Size: 813 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.2 KiB

After

Width:  |  Height:  |  Size: 2.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.1 KiB

After

Width:  |  Height:  |  Size: 4.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.4 KiB

After

Width:  |  Height:  |  Size: 288 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 63 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.4 KiB

After

Width:  |  Height:  |  Size: 288 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 17 KiB

After

Width:  |  Height:  |  Size: 207 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 17 KiB

After

Width:  |  Height:  |  Size: 27 KiB

BIN
src/statics/images/prodotti.jpg Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 808 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 35 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 29 KiB

View File

@@ -1,6 +1,6 @@
const OtherTables = ['categories', 'config', 'swmsg'] const OtherTables = ['categories', 'config', 'swmsg']
const MainTables = ['todos', 'projects'] const MainTables = ['todos', 'projects']
const allMethod = ['sync_post_', 'sync_patch_', 'delete_'] const allMethod = ['sync_post_', 'sync_patch_', 'delete_', 'hide_']
// ------------------------------------- // -------------------------------------