Merge branch 'master' into FunzProjects

This commit is contained in:
Paolo Arena
2019-10-10 17:03:07 +02:00
committed by GitHub
28 changed files with 448 additions and 85 deletions

View File

@@ -28,7 +28,7 @@
"dependencies": { "dependencies": {
"@babel/plugin-transform-runtime": "^7.4.0", "@babel/plugin-transform-runtime": "^7.4.0",
"@babel/runtime": "^7.0.0", "@babel/runtime": "^7.0.0",
"@quasar/extras": "^1.3.1", "@quasar/extras": "^1.3.2",
"@types/vuelidate": "^0.7.0", "@types/vuelidate": "^0.7.0",
"@vue/eslint-config-standard": "^4.0.0", "@vue/eslint-config-standard": "^4.0.0",
"acorn": "^6.0.0", "acorn": "^6.0.0",
@@ -50,7 +50,7 @@
"normalize.css": "^8.0.0", "normalize.css": "^8.0.0",
"npm": "^6.10.1", "npm": "^6.10.1",
"nprogress": "^0.2.0", "nprogress": "^0.2.0",
"quasar": "^1.1.0", "quasar": "^1.1.6",
"quasar-extras": "^2.0.8", "quasar-extras": "^2.0.8",
"register-service-worker": "^1.0.0", "register-service-worker": "^1.0.0",
"vee-validate": "^2.1.2", "vee-validate": "^2.1.2",
@@ -85,7 +85,8 @@
"@babel/plugin-syntax-dynamic-import": "^7.2.0", "@babel/plugin-syntax-dynamic-import": "^7.2.0",
"@babel/plugin-syntax-import-meta": "^7.2.0", "@babel/plugin-syntax-import-meta": "^7.2.0",
"@babel/preset-env": "^7.4.2", "@babel/preset-env": "^7.4.2",
"@quasar/app": "^1.0.6", "@quasar/app": "^1.1.2",
"@quasar/quasar-app-extension-colorize": "^1.0.0-alpha.1",
"@quasar/quasar-app-extension-typescript": "^1.0.0-alpha.11", "@quasar/quasar-app-extension-typescript": "^1.0.0-alpha.11",
"@types/dotenv": "^4.0.3", "@types/dotenv": "^4.0.3",
"@types/jest": "^23.1.4", "@types/jest": "^23.1.4",

View File

@@ -5,6 +5,10 @@
<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>
<q-page-container> <q-page-container>
<transition name="fade" mode="out-in"> <transition name="fade" mode="out-in">
<router-view/> <router-view/>
@@ -12,6 +16,7 @@
</q-page-container> </q-page-container>
</q-layout> </q-layout>
</div> </div>
<BannerCookies urlInfo="/policy"></BannerCookies>
</div> </div>
</template> </template>
<script lang="ts" src="./App.ts"> <script lang="ts" src="./App.ts">

View File

@@ -0,0 +1,114 @@
.imgtitle {
display: flex;
justify-content: space-between;
/* flex-flow: row nowrap; */
padding: 1rem 0 1rem 0;
margin: .125rem;
* {
width: 100%;
flex: 1;
margin-left: auto;
margin-right: auto;
}
&__img {
min-width: 250px;
}
&__imgh100 {
max-height: 100px;
}
&__imgh150 {
max-height: 150px;
}
&__imgw150 {
max-width: 150px;
}
&__imgw100 {
max-width: 100px;
}
}
@media (max-width: 2500px) {
.myclimg {
height: 550px !important;
}
}
@media (max-width: 1600px) {
.myclimg {
height: 550px !important;
}
}
@media (max-width: 1000px) {
.myclimg {
height: 450px !important;
}
}
@media (max-width: 800px) {
.myclimg {
height: 400px !important;
}
}
@media (max-width: 718px) {
// PER VERSIONE MOBILE
.landing > section.padding_testo {
padding-top: 0.5rem;
padding-bottom: 0.1rem;
}
.imgtitle {
padding: 0.25rem 0 0.25rem 0;
}
}
.landing > section.padding_testo {
padding-top: 1rem;
padding-bottom: 0.25rem;
}
.section_text {
padding: 10px;
}
.title{
font-size: 3.5rem;
padding: 10px;
text-shadow: .2rem .2rem .2rem #3d3d3d;
}
@media (max-width: 400px) {
.title{
padding: 5px;
font-size: 3rem;
}
}
.mylegendinside{
font-size: 1rem;
margin-bottom: 50px;
opacity: .8;
@media (max-width: 400px) {
margin-bottom: -10px;
}
}
.mylegend{
text-align: center;
color: black;
font-size: 1rem;
font-style: italic;
opacity: .8;
text-shadow: .05rem .05rem .05rem #aeaeae;
z-index: 1000;
@media (max-width: 400px) {
}
}

View File

@@ -0,0 +1,44 @@
import Vue from 'vue'
import { Component, Prop } from 'vue-property-decorator'
import { GlobalStore, UserStore } from '@store'
import VueScrollReveal from 'vue-scroll-reveal'
import { tools } from '@src/store/Modules/tools'
import { toolsext } from '@src/store/Modules/toolsext'
import { Screen } from 'quasar'
// 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({
name: 'CImgTitle'
})
export default class CImgTitle extends Vue {
@Prop({ required: false, default: '' }) public src: string
@Prop({ required: false, default: '' }) public title: string
@Prop({ required: false, default: 0 }) public myheight: number
@Prop({ required: false, default: 0 }) public myheightmobile: number
@Prop({ required: false, default: '' }) public legendinside: string
@Prop({ required: false, default: '' }) public legend: string
get tools() {
return tools
}
get getsrc() {
// return this.src
const filefull = tools.getimgFullpathbysize(this.src)
return tools.getimgbysize(filefull.path, filefull.file)
}
}

View File

@@ -0,0 +1,15 @@
<template>
<div>
<q-parallax :src="getsrc" :height="tools.myheight_imgtitle(myheight, myheightmobile)">
<h2 class="text-white center_to_image title">{{title}}</h2>
<div v-if="legendinside" class="mylegendinside absolute-bottom custom-caption center_to_image" v-html="legendinside"></div>
</q-parallax>
<div v-if="legend" class="mylegend" v-html="legend"></div>
</div>
</template>
<script lang="ts" src="./CImgTitle.ts">
</script>
<style lang="scss" scoped>
@import './CImgTitle.scss';
</style>

View File

@@ -0,0 +1 @@
export {default as CImgTitle} from './CImgTitle.vue'

View File

@@ -0,0 +1,66 @@
$heightBtn: 100%;
$grayshadow: #555;
.text-subtitle-carica {
font-size: 1rem;
font-weight: 400;
line-height: 1.75rem;
letter-spacing: .00937em;
text-shadow: .1rem .1rem .1rem $grayshadow;
}
.text-subtitle-certificato {
font-size: 0.75rem;
line-height: 1rem;
}
@media (max-width: 718px) {
// PER VERSIONE MOBILE
.text-subtitle-carica {
font-size: 1rem;
}
}
.op {
text-align: center !important;
font-size: 1rem;
font-weight: 400;
line-height: 1.75rem;
letter-spacing: .00937em;
text-shadow: .1rem .1rem .1rem $grayshadow;
&__cell {
font-size: 1rem;
color: red;
}
&__email {
font-size: 1rem;
color: #3b5998;
}
&__email a {
text-decoration: none;
}
&__facebook a {
font-size: 1rem;
text-decoration: none;
}
&__storia {
margin-top: 1rem;
margin-bottom: 1rem;
text-align: justify;
}
}
.myimg {
border-radius: 300px !important;
}
.q-img {
&__image {
border-radius: 300px !important;
}
}

View File

@@ -0,0 +1,29 @@
import Vue from 'vue'
import { Component, Prop, Watch } from 'vue-property-decorator'
import { tools } from '../../store/Modules/tools'
import { toolsext } from '@src/store/Modules/toolsext'
import { IPreloadImages } from '../../model'
@Component({
name: 'CPreloadImages'
})
export default class CPreloadImages extends Vue {
@Prop({ required: true }) public arrimg: IPreloadImages[]
get tools() {
return tools
}
public getimg(recimg: IPreloadImages) {
if (recimg.mobile) {
const filefull = tools.getimgFullpathbysize(recimg.imgname)
return tools.getimgbysize(filefull.path, filefull.file)
} else {
return recimg.imgname
}
}
}

View File

@@ -0,0 +1,14 @@
<template>
<div id="preloader">
<div v-for="(image, index) in arrimg">
<img :src="getimg(image)" width="1" height="1"/>
</div>
</div>
</template>
<script lang="ts" src="./CPreloadImages.ts">
</script>
<style lang="scss" scoped>
@import './CPreloadImages.scss';
</style>

View File

@@ -0,0 +1 @@
export {default as CPreloadImages} from './CPreloadImages.vue'

View File

@@ -320,7 +320,6 @@ export default class Header extends Vue {
get mySurname() { get mySurname() {
return UserStore.state.surname return UserStore.state.surname
} }
get Verificato() { get Verificato() {
return UserStore.state.verified_email return UserStore.state.verified_email
} }

View File

@@ -125,12 +125,12 @@
<div id="profile"> <div id="profile">
<q-img class="absolute-top" src="../../statics/images/landing_first_section.png" <q-img class="absolute-top" src="../../statics/images/landing_first_section.png"
style="height: 150px"> style="height: 150px">
<div class="absolute-bottom bg-transparent text-black"> <div class="absolute-bottom bg-transparent text-black center_img">
<q-avatar class="q-mb-sm"> <q-avatar class="q-mb-sm center_img">
<img src="../../statics/images/avatar-1.svg"> <img src="../../statics/images/avatar-1.svg">
</q-avatar> </q-avatar>
<div v-if="Username" class="text-weight-bold">{{ Username }}</div> <div v-if="Username" class="text-weight-bold text-user">{{ Username }} - {{ Name }}</div>
<div v-else class="text-italic">{{ $t('user.loggati') }}</div> <div v-else class="text-italic">{{ $t('user.loggati') }}</div>
<!--<span class="text-white" v-if="Verificato"> {{$t('reg.verificato')}} </span>--> <!--<span class="text-white" v-if="Verificato"> {{$t('reg.verificato')}} </span>-->

View File

@@ -266,11 +266,9 @@ const functionality: IFunctionality = {
SHOW_NEWSLETTER: false, SHOW_NEWSLETTER: false,
SHOW_ONLY_POLICY: false, SHOW_ONLY_POLICY: false,
BOOKING_EVENTS: false BOOKING_EVENTS: false
} }
export const static_data = { export const static_data = {
routes,
functionality, functionality,
ds_operatori, ds_operatori,
lang_available, lang_available,

View File

View File

@@ -0,0 +1,7 @@
import { IAction } from '@src/model/Projects'
import { Component } from 'vue-router/types/router'
import { IEvents } from '@src/model/Calendar'
export interface IBookingState {
bookinglist: IEvents[]
}

1
src/quasar.d.ts vendored Normal file
View File

@@ -0,0 +1 @@
declare module 'quasar'

View File

@@ -27,7 +27,7 @@ h4 {
} }
.landing_background { .landing_background {
background: #000 url(../../statics/images/cover.jpg) no-repeat 50% fixed; background: #000 url(../../statics/images/foto1.jpg) no-repeat 50% fixed;
background-size: cover background-size: cover
} }
@@ -281,17 +281,17 @@ body.mobile .landing:before {
} }
.homep-cover-img-1 { .homep-cover-img-1 {
background: #000 url(../../statics/images/cover.jpg) no-repeat 50% fixed; background: #000 url(../../statics/images/foto1.jpg) no-repeat 50% fixed;
//transition: background-image 1s ease-in-out; //transition: background-image 1s ease-in-out;
} }
.homep-cover-img-2 { .homep-cover-img-2 {
background: #000 url(../../statics/images/hand_people.jpg) no-repeat 50% fixed; background: #000 url(../../statics/images/foto2.jpg) no-repeat 50% fixed;
//transition: background-image 1s ease-in-out; //transition: background-image 1s ease-in-out;
} }
.homep-cover-img-3 { .homep-cover-img-3 {
background: #000 url(../../statics/images/cibo_sano.jpg) no-repeat 50% fixed; background: #000 url(../../statics/images/foto3.jpg) no-repeat 50% fixed;
//transition: background-image 1s ease-in-out; //transition: background-image 1s ease-in-out;
} }

View File

21
src/root/policy/policy.ts Normal file
View File

@@ -0,0 +1,21 @@
import Vue from 'vue'
import { Component } from 'vue-property-decorator'
import { static_data } from '@src/db/static_data'
import { PagePolicy } from '../../components/PagePolicy'
@Component({
name: 'Policy',
components: { PagePolicy }
})
export default class Policy extends Vue {
public mioalert = false
get static_data() {
return static_data
}
}

View File

@@ -0,0 +1,28 @@
<template>
<q-page class="">
<div class="landing">
<PagePolicy
owneremail="info@associazioneshen.it"
SiteName="Associazione Shen"
ownerDataName="Associazione Shen"
managerData="Cristina Barattoni"
includeData="dati anagrafici (ragione sociale, nome, cognome), recapiti (telefono, indirizzo email)"
url="www.associazioneshen.it"
lastdataupdate="11 luglio 2019"
country="Italia"
>
</PagePolicy>
<Footer></Footer>
</div>
</q-page>
</template>
<script lang="ts" src="./policy.ts">
</script>
<style lang="scss" scoped>
@import './policy.scss';
</style>

13
src/shims-quasar.d.ts vendored Normal file
View File

@@ -0,0 +1,13 @@
import Vue from 'vue'
declare module 'vue/types/vue' {
interface Vue {
$q: any
}
}
declare module 'vue/types/options' {
interface ComponentOptions<V extends Vue> {
preFectch?: (options: any) => void | Promise<void>
}
}

4
src/shims-vue.d.ts vendored Normal file
View File

@@ -0,0 +1,4 @@
declare module '*.vue' {
import Vue from 'vue'
export default Vue
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 40 KiB

View File

@@ -0,0 +1,3 @@
var workbox=function(){"use strict";try{self.workbox.v["workbox:sw:3.0.0"]=1}catch(t){}const t="https://storage.googleapis.com/workbox-cdn/releases/3.0.0",e={backgroundSync:"background-sync",core:"core",expiration:"cache-expiration",googleAnalytics:"google-analytics",strategies:"strategies",precaching:"precaching",routing:"routing",cacheableResponse:"cacheable-response",broadcastUpdate:"broadcast-cache-update",rangeRequests:"range-requests"};return new class{constructor(){return this.v={},this.t={debug:"localhost"===self.location.hostname,modulePathPrefix:null,modulePathCb:null},this.e=this.t.debug?"dev":"prod",this.s=!1,new Proxy(this,{get(t,s){if(t[s])return t[s];const o=e[s];return o&&t.loadModule(`workbox-${o}`),t[s]}})}setConfig(t={}){if(this.s)throw new Error("Config must be set before accessing workbox.* modules");Object.assign(this.t,t),this.e=this.t.debug?"dev":"prod"}skipWaiting(){self.addEventListener("install",()=>self.skipWaiting())}clientsClaim(){self.addEventListener("activate",()=>self.clients.claim())}loadModule(t){const e=this.o(t);try{importScripts(e),this.s=!0}catch(s){throw console.error(`Unable to import module '${t}' from '${e}'.`),s}}o(e){if(this.t.modulePathCb)return this.t.modulePathCb(e,this.t.debug);let s=[t];const o=`${e}.${this.e}.js`,r=this.t.modulePathPrefix;return r&&""===(s=r.split("/"))[s.length-1]&&s.splice(s.length-1,1),s.push(o),s.join("/")}}}();
//# sourceMappingURL=workbox-sw.js.map

View File

@@ -0,0 +1,3 @@
var workbox=function(){"use strict";try{self.workbox.v["workbox:sw:3.4.1"]=1}catch(t){}const t="https://storage.googleapis.com/workbox-cdn/releases/3.4.1",e={backgroundSync:"background-sync",broadcastUpdate:"broadcast-cache-update",cacheableResponse:"cacheable-response",core:"core",expiration:"cache-expiration",googleAnalytics:"google-analytics",navigationPreload:"navigation-preload",precaching:"precaching",rangeRequests:"range-requests",routing:"routing",strategies:"strategies",streams:"streams"};return new class{constructor(){return this.v={},this.t={debug:"localhost"===self.location.hostname,modulePathPrefix:null,modulePathCb:null},this.e=this.t.debug?"dev":"prod",this.s=!1,new Proxy(this,{get(t,s){if(t[s])return t[s];const o=e[s];return o&&t.loadModule(`workbox-${o}`),t[s]}})}setConfig(t={}){if(this.s)throw new Error("Config must be set before accessing workbox.* modules");Object.assign(this.t,t),this.e=this.t.debug?"dev":"prod"}skipWaiting(){self.addEventListener("install",()=>self.skipWaiting())}clientsClaim(){self.addEventListener("activate",()=>self.clients.claim())}loadModule(t){const e=this.o(t);try{importScripts(e),this.s=!0}catch(s){throw console.error(`Unable to import module '${t}' from '${e}'.`),s}}o(e){if(this.t.modulePathCb)return this.t.modulePathCb(e,this.t.debug);let s=[t];const o=`${e}.${this.e}.js`,r=this.t.modulePathPrefix;return r&&""===(s=r.split("/"))[s.length-1]&&s.splice(s.length-1,1),s.push(o),s.join("/")}}}();
//# sourceMappingURL=workbox-sw.js.map

View File

@@ -0,0 +1,3 @@
var workbox=function(){"use strict";try{self.workbox.v["workbox:sw:3.4.1"]=1}catch(t){}const t="https://storage.googleapis.com/workbox-cdn/releases/3.4.1",e={backgroundSync:"background-sync",broadcastUpdate:"broadcast-cache-update",cacheableResponse:"cacheable-response",core:"core",expiration:"cache-expiration",googleAnalytics:"google-analytics",navigationPreload:"navigation-preload",precaching:"precaching",rangeRequests:"range-requests",routing:"routing",strategies:"strategies",streams:"streams"};return new class{constructor(){return this.v={},this.t={debug:"localhost"===self.location.hostname,modulePathPrefix:null,modulePathCb:null},this.e=this.t.debug?"dev":"prod",this.s=!1,new Proxy(this,{get(t,s){if(t[s])return t[s];const o=e[s];return o&&t.loadModule(`workbox-${o}`),t[s]}})}setConfig(t={}){if(this.s)throw new Error("Config must be set before accessing workbox.* modules");Object.assign(this.t,t),this.e=this.t.debug?"dev":"prod"}skipWaiting(){self.addEventListener("install",()=>self.skipWaiting())}clientsClaim(){self.addEventListener("activate",()=>self.clients.claim())}loadModule(t){const e=this.o(t);try{importScripts(e),this.s=!0}catch(s){throw console.error(`Unable to import module '${t}' from '${e}'.`),s}}o(e){if(this.t.modulePathCb)return this.t.modulePathCb(e,this.t.debug);let s=[t];const o=`${e}.${this.e}.js`,r=this.t.modulePathPrefix;return r&&""===(s=r.split("/"))[s.length-1]&&s.splice(s.length-1,1),s.push(o),s.join("/")}}}();
//# sourceMappingURL=workbox-sw.js.map

View File

@@ -0,0 +1,65 @@
import { ICfgServer, IConfig, IBookingState, IListRoutes, IMenuList, StateConnection } from 'model'
import { storeBuilder } from './Store/Store'
import Vue from 'vue'
import translate from './../../globalroutines/util'
import urlBase64ToUint8Array from '../../js/utility'
import Api from '@api'
import * as Types from '@src/store/Api/ApiTypes'
import { costanti } from '@src/store/Modules/costanti'
import { tools } from '@src/store/Modules/tools'
import { toolsext } from '@src/store/Modules/toolsext'
import { GlobalStore, Projects, Todos, UserStore } from '@store'
import { static_data } from '@src/db/static_data'
import { db_data } from '@src/db/db_data'
import { IEvents } from '../../model'
import { serv_constants } from '@src/store/Modules/serv_constants'
const state: IBookingState = {
bookinglist: []
}
const b = storeBuilder.module<IBookingState>('BookingModule', state)
// Getters
namespace Getters {
export const getters = {
}
}
namespace Mutations {
export const mutations = {
}
}
namespace Actions {
async function loadAfterLogin(context) {
return true
}
export const actions = {
loadAfterLogin: b.dispatch(loadAfterLogin)
}
}
const stateGetter = b.state()
// Module
const BookingModule = {
get state() {
return stateGetter()
},
actions: Actions.actions,
getters: Getters.getters,
mutations: Mutations.mutations
}
export default BookingModule

View File

@@ -1,72 +0,0 @@
{
"defaultSeverity": "error",
"extends": [
"tslint:recommended"
],
"jsRules": {},
"rules": {
"no-console": false,
"curly": [false],
"object-literal-sort-keys": false,
// "no-restricted-syntax": [
// "error",
// {
// "selector": "CallExpression[callee.object.nametranslate='console'][callee.property.nametranslate!=/^(log|warn|error|info|trace)$/]",
// "message": "Unexpected property on console object was called"
// }
// ],
"class-name": true,
"comment-format": [
true,
"check-space"
],
"indent": [
true,
"spaces"
],
"ordered-imports": false,
"no-duplicate-variable": true,
"no-eval": true,
"no-internal-module": false,
"no-trailing-whitespace": false,
"no-var-keyword": true,
"max-line-length": false,
"one-line": [
true,
"check-open-brace",
"check-whitespace"
],
"quotemark": [
true,
"single"
],
"semicolon": [true, "never"],
"trailing-comma": [true, {"multiline": "never", "singleline": "never"}],
"triple-equals": [
true,
"allow-null-check"
],
"typedef-whitespace": [
true,
{
"call-signature": "nospace",
"index-signature": "nospace",
"parameter": "nospace",
"property-declaration": "nospace",
"variable-declaration": "nospace"
}
],
"variable-name": [
true,
"ban-keywords"
],
"whitespace": [
true,
"check-branch",
"check-decl",
"check-operator",
"check-separator",
"check-type"
]
}
}