Components Gallery, Book, Card, CImgText .... continue...
This commit is contained in:
17
src/components/BannerCookies/BannerCookies.scss
Normal file
17
src/components/BannerCookies/BannerCookies.scss
Normal file
@@ -0,0 +1,17 @@
|
|||||||
|
// Animations
|
||||||
|
// slideFromBottom
|
||||||
|
.slideFromBottom-enter, .slideFromBottom-leave-to {
|
||||||
|
transform: translate(0px, 10em);
|
||||||
|
}
|
||||||
|
|
||||||
|
.slideFromBottom-enter-to, .slideFromBottom-leave {
|
||||||
|
transform: translate(0px, 0px);
|
||||||
|
}
|
||||||
|
|
||||||
|
.slideFromBottom-enter-active {
|
||||||
|
transition: transform .2s ease-out;
|
||||||
|
}
|
||||||
|
|
||||||
|
.slideFromBottom-leave-active {
|
||||||
|
transition: transform .2s ease-in;
|
||||||
|
}
|
||||||
128
src/components/BannerCookies/BannerCookies.ts
Normal file
128
src/components/BannerCookies/BannerCookies.ts
Normal file
@@ -0,0 +1,128 @@
|
|||||||
|
import Vue from 'vue'
|
||||||
|
import Component from 'vue-class-component'
|
||||||
|
|
||||||
|
import { tools } from '../../store/Modules/tools'
|
||||||
|
import { toolsext } from '@src/store/Modules/toolsext'
|
||||||
|
|
||||||
|
import Quasar, { Screen } from 'quasar'
|
||||||
|
import { Prop } from 'vue-property-decorator'
|
||||||
|
|
||||||
|
@Component({
|
||||||
|
name: 'BannerCookies'
|
||||||
|
})
|
||||||
|
|
||||||
|
export default class BannerCookies extends Vue {
|
||||||
|
public $t
|
||||||
|
@Prop({ required: true }) public urlInfo: string
|
||||||
|
|
||||||
|
public elementId = 'id'
|
||||||
|
public disableDecline = true
|
||||||
|
public debug = false
|
||||||
|
public status = null
|
||||||
|
public supportsLocalStorage = true
|
||||||
|
public isOpen = false
|
||||||
|
|
||||||
|
public init() {
|
||||||
|
const visitedType = this.getCookieStatus()
|
||||||
|
if (visitedType && (visitedType === 'accept' || visitedType === 'decline' || visitedType === 'postpone')) {
|
||||||
|
this.isOpen = false
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!visitedType) {
|
||||||
|
this.isOpen = true
|
||||||
|
}
|
||||||
|
if (!this.supportsLocalStorage)
|
||||||
|
this.isOpen = false
|
||||||
|
|
||||||
|
this.status = visitedType
|
||||||
|
this.$emit('status', visitedType)
|
||||||
|
}
|
||||||
|
|
||||||
|
public mounted() {
|
||||||
|
this.init()
|
||||||
|
}
|
||||||
|
|
||||||
|
public checkLocalStorageFunctionality() {
|
||||||
|
// Check for availability of localStorage
|
||||||
|
try {
|
||||||
|
const test = '__cookie-check-localStorage'
|
||||||
|
window.localStorage.setItem(test, test)
|
||||||
|
window.localStorage.removeItem(test)
|
||||||
|
} catch (e) {
|
||||||
|
console.error('Local storage is not supported, falling back to cookie use')
|
||||||
|
this.supportsLocalStorage = false
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public setCookieStatus(type) {
|
||||||
|
if (this.supportsLocalStorage) {
|
||||||
|
if (type === 'accept') {
|
||||||
|
localStorage.setItem(`cookie-${this.elementId}`, 'accept')
|
||||||
|
}
|
||||||
|
if (type === 'decline') {
|
||||||
|
localStorage.setItem(`cookie-${this.elementId}`, 'decline')
|
||||||
|
}
|
||||||
|
if (type === 'postpone') {
|
||||||
|
localStorage.setItem(`cookie-${this.elementId}`, 'postpone')
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
/*if (type === 'accept') {
|
||||||
|
tinyCookie.set(`cookie-${this.elementId}`, 'accept')
|
||||||
|
}
|
||||||
|
if (type === 'decline') {
|
||||||
|
tinyCookie.set(`cookie-${this.elementId}`, 'decline')
|
||||||
|
}
|
||||||
|
if (type === 'postpone') {
|
||||||
|
tinyCookie.set(`cookie-${this.elementId}`, 'postpone')
|
||||||
|
}*/
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public getCookieStatus() {
|
||||||
|
if (this.supportsLocalStorage) {
|
||||||
|
return localStorage.getItem(`cookie-${this.elementId}`)
|
||||||
|
} else {
|
||||||
|
// return tinyCookie.get(`cookie-${this.elementId}`)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public accept() {
|
||||||
|
if (!this.debug) {
|
||||||
|
this.setCookieStatus('accept')
|
||||||
|
}
|
||||||
|
|
||||||
|
this.status = 'accept'
|
||||||
|
this.isOpen = false
|
||||||
|
this.$emit('clicked-accept')
|
||||||
|
}
|
||||||
|
|
||||||
|
public decline() {
|
||||||
|
if (!this.debug) {
|
||||||
|
this.setCookieStatus('decline')
|
||||||
|
}
|
||||||
|
|
||||||
|
this.status = 'decline'
|
||||||
|
this.isOpen = false
|
||||||
|
this.$emit('clicked-decline')
|
||||||
|
}
|
||||||
|
|
||||||
|
public clickInfo() {
|
||||||
|
this.isOpen = false
|
||||||
|
}
|
||||||
|
|
||||||
|
public postpone() {
|
||||||
|
if (!this.debug) {
|
||||||
|
this.setCookieStatus('postpone')
|
||||||
|
}
|
||||||
|
|
||||||
|
this.status = 'postpone'
|
||||||
|
this.isOpen = false
|
||||||
|
this.$emit('clicked-postpone')
|
||||||
|
}
|
||||||
|
|
||||||
|
public removeCookie() {
|
||||||
|
localStorage.removeItem(`cookie-${this.elementId}`)
|
||||||
|
this.status = null
|
||||||
|
this.$emit('removed-cookie')
|
||||||
|
}
|
||||||
|
}
|
||||||
25
src/components/BannerCookies/BannerCookies.vue
Normal file
25
src/components/BannerCookies/BannerCookies.vue
Normal file
@@ -0,0 +1,25 @@
|
|||||||
|
<template>
|
||||||
|
<div v-if="isOpen">
|
||||||
|
<div class="q-pa-md q-gutter-sm tothebottomfixed">
|
||||||
|
<transition appear name="slide-up" mode="out-in" :duration="2000">
|
||||||
|
<q-banner class="bg-primary text-white" transition-show="jump-down">
|
||||||
|
Usiamo i Cookie per una migliore prestazione web.
|
||||||
|
<template v-slot:action>
|
||||||
|
<q-btn v-if="disableDecline === false" flat color="white" label="Declina"
|
||||||
|
@click="decline"></q-btn>
|
||||||
|
<q-btn flat color="white" label="INFO" type="a" :href="urlInfo" @click="clickInfo"></q-btn>
|
||||||
|
<q-btn flat color="white" label="OK" @click="accept"></q-btn>
|
||||||
|
</template>
|
||||||
|
</q-banner>
|
||||||
|
</transition>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script lang="ts" src="./BannerCookies.ts">
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="scss" scoped>
|
||||||
|
@import './BannerCookies.scss';
|
||||||
|
</style>
|
||||||
|
|
||||||
1
src/components/BannerCookies/index.ts
Normal file
1
src/components/BannerCookies/index.ts
Normal file
@@ -0,0 +1 @@
|
|||||||
|
export {default as BannerCookies} from './BannerCookies.vue'
|
||||||
66
src/components/CBook/CBook.scss
Normal file
66
src/components/CBook/CBook.scss
Normal 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;
|
||||||
|
}
|
||||||
|
}
|
||||||
52
src/components/CBook/CBook.ts
Normal file
52
src/components/CBook/CBook.ts
Normal file
@@ -0,0 +1,52 @@
|
|||||||
|
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 { IPerson } from '../../model/GlobalStore'
|
||||||
|
|
||||||
|
@Component({
|
||||||
|
name: 'CBook',
|
||||||
|
filters: {
|
||||||
|
firstchars(value) {
|
||||||
|
return tools.firstchars(value, 250)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
|
export default class CBook extends Vue {
|
||||||
|
@Prop({ required: true, default: 'one' }) public tab
|
||||||
|
|
||||||
|
public clicca() {
|
||||||
|
this.tab = 'two'
|
||||||
|
}
|
||||||
|
|
||||||
|
@Prop({ required: true }) public op: IPerson
|
||||||
|
|
||||||
|
get tools() {
|
||||||
|
return tools
|
||||||
|
}
|
||||||
|
|
||||||
|
get myop() {
|
||||||
|
if (!!this.op) {
|
||||||
|
return this.op
|
||||||
|
} else {
|
||||||
|
return {
|
||||||
|
index: 0,
|
||||||
|
tab: '',
|
||||||
|
name: '',
|
||||||
|
sub1: '',
|
||||||
|
sub2: '',
|
||||||
|
sub3: '',
|
||||||
|
img: '',
|
||||||
|
cell: '',
|
||||||
|
email: '',
|
||||||
|
paginaweb: '',
|
||||||
|
paginafb: '',
|
||||||
|
intro: '',
|
||||||
|
info: ''
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
47
src/components/CBook/CBook.vue
Normal file
47
src/components/CBook/CBook.vue
Normal file
@@ -0,0 +1,47 @@
|
|||||||
|
<template>
|
||||||
|
<q-card class="my-card text-center">
|
||||||
|
<q-img :src="myop.img" class="myimg">
|
||||||
|
<div class="absolute-bottom text-spacetrans text-shadow">
|
||||||
|
<div class="text-h6 text-trans">{{myop.name}}</div>
|
||||||
|
<div class="text-subtitle-carica text-trans">{{myop.sub1}}</div>
|
||||||
|
</div>
|
||||||
|
</q-img>
|
||||||
|
|
||||||
|
<q-tabs v-model="tab" class="text-teal">
|
||||||
|
<q-tab label="Info" name="one"></q-tab>
|
||||||
|
<q-tab label="Storia" name="two"></q-tab>
|
||||||
|
</q-tabs>
|
||||||
|
|
||||||
|
<q-separator></q-separator>
|
||||||
|
|
||||||
|
<q-tab-panels v-model="tab" animated>
|
||||||
|
<q-tab-panel name="one">
|
||||||
|
<div class="text-subtitle-carica">{{myop.sub2}}</div>
|
||||||
|
<div v-if="myop.sub3" class="text-subtitle-certificato">{{myop.sub3}}</div>
|
||||||
|
<div class="op__cell">
|
||||||
|
<q-icon class="flex-icon" name="mobile_friendly"></q-icon>
|
||||||
|
{{myop.cell}}
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="op__storia" v-html="myop.intro"></div>
|
||||||
|
<q-btn rounded size="sm" color="secondary" @click="clicca()">Continua ...</q-btn>
|
||||||
|
</q-tab-panel>
|
||||||
|
|
||||||
|
<q-tab-panel name="two">
|
||||||
|
<div class="op__storia" v-html="myop.info"></div>
|
||||||
|
</q-tab-panel>
|
||||||
|
</q-tab-panels>
|
||||||
|
|
||||||
|
<!--<q-card-section>-->
|
||||||
|
<!--<div class="text-subtitle3">{{myop.sub2}}</div>-->
|
||||||
|
<!--{{myop.info}}-->
|
||||||
|
<!--</q-card-section>-->
|
||||||
|
</q-card>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script lang="ts" src="./CBook.ts">
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="scss" scoped>
|
||||||
|
@import './CBook.scss';
|
||||||
|
</style>
|
||||||
1
src/components/CBook/index.ts
Normal file
1
src/components/CBook/index.ts
Normal file
@@ -0,0 +1 @@
|
|||||||
|
export {default as CBook} from './CBook.vue'
|
||||||
66
src/components/CCard/CCard.scss
Normal file
66
src/components/CCard/CCard.scss
Normal 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;
|
||||||
|
}
|
||||||
|
}
|
||||||
52
src/components/CCard/CCard.ts
Normal file
52
src/components/CCard/CCard.ts
Normal file
@@ -0,0 +1,52 @@
|
|||||||
|
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 { IPerson } from '../../model/GlobalStore'
|
||||||
|
|
||||||
|
@Component({
|
||||||
|
name: 'CCard',
|
||||||
|
filters: {
|
||||||
|
firstchars(value) {
|
||||||
|
return tools.firstchars(value, 250)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
|
export default class CCard extends Vue {
|
||||||
|
@Prop({ required: true, default: 'one' }) public tab
|
||||||
|
|
||||||
|
public clicca() {
|
||||||
|
this.tab = 'two'
|
||||||
|
}
|
||||||
|
|
||||||
|
@Prop({ required: true }) public op: IPerson
|
||||||
|
|
||||||
|
get tools() {
|
||||||
|
return tools
|
||||||
|
}
|
||||||
|
|
||||||
|
get myop() {
|
||||||
|
if (!!this.op) {
|
||||||
|
return this.op
|
||||||
|
} else {
|
||||||
|
return {
|
||||||
|
index: 0,
|
||||||
|
tab: '',
|
||||||
|
name: '',
|
||||||
|
sub1: '',
|
||||||
|
sub2: '',
|
||||||
|
sub3: '',
|
||||||
|
img: '',
|
||||||
|
cell: '',
|
||||||
|
email: '',
|
||||||
|
paginaweb: '',
|
||||||
|
paginafb: '',
|
||||||
|
intro: '',
|
||||||
|
info: ''
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
59
src/components/CCard/CCard.vue
Normal file
59
src/components/CCard/CCard.vue
Normal file
@@ -0,0 +1,59 @@
|
|||||||
|
<template>
|
||||||
|
<q-card class="my-card text-center">
|
||||||
|
<q-img :src="myop.img" class="myimg">
|
||||||
|
<div class="absolute-bottom text-spacetrans text-shadow">
|
||||||
|
<div class="text-h6 text-trans">{{myop.name}}</div>
|
||||||
|
<div class="text-subtitle-carica text-trans">{{myop.sub1}}</div>
|
||||||
|
</div>
|
||||||
|
</q-img>
|
||||||
|
|
||||||
|
<q-tabs v-model="tab" class="text-teal">
|
||||||
|
<q-tab label="Info" name="one"></q-tab>
|
||||||
|
<q-tab label="Storia" name="two"></q-tab>
|
||||||
|
</q-tabs>
|
||||||
|
|
||||||
|
<q-separator></q-separator>
|
||||||
|
|
||||||
|
<q-tab-panels v-model="tab" animated>
|
||||||
|
<q-tab-panel name="one">
|
||||||
|
<div class="text-subtitle-carica">{{myop.sub2}}</div>
|
||||||
|
<div v-if="myop.sub3" class="text-subtitle-certificato">{{myop.sub3}}</div>
|
||||||
|
<div class="op__cell">
|
||||||
|
<q-icon class="flex-icon" name="mobile_friendly"></q-icon>
|
||||||
|
{{myop.cell}}
|
||||||
|
</div>
|
||||||
|
<div class="op__email">
|
||||||
|
<q-icon class="flex-icon" name="contact_mail"> </q-icon>
|
||||||
|
<a :href="tools.getemailto(myop.email)" target="_blank">{{myop.email}}
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="op__facebook" v-if="myop.paginafb">
|
||||||
|
<a :href="myop.paginafb" target="_blank">
|
||||||
|
<i aria-hidden="true" class="q-icon fab fa-facebook-f icon_contact links"></i> Pagina Facebook
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
<div class="op__storia" v-html="myop.intro"></div>
|
||||||
|
<q-btn rounded size="sm" color="secondary" @click="clicca()">Continua ...</q-btn>
|
||||||
|
</q-tab-panel>
|
||||||
|
|
||||||
|
<q-tab-panel name="two">
|
||||||
|
<div class="op__storia" v-html="myop.info"></div>
|
||||||
|
</q-tab-panel>
|
||||||
|
</q-tab-panels>
|
||||||
|
|
||||||
|
<!--<q-card-section>-->
|
||||||
|
<!--<div class="text-subtitle3">{{myop.sub2}}</div>-->
|
||||||
|
<!--{{myop.info}}-->
|
||||||
|
<!--</q-card-section>-->
|
||||||
|
</q-card>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script lang="ts" src="./CCard.ts">
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="scss" scoped>
|
||||||
|
@import './CCard.scss';
|
||||||
|
</style>
|
||||||
1
src/components/CCard/index.ts
Normal file
1
src/components/CCard/index.ts
Normal file
@@ -0,0 +1 @@
|
|||||||
|
export {default as CCard} from './CCard.vue'
|
||||||
54
src/components/CImgText/CImgText.scss
Normal file
54
src/components/CImgText/CImgText.scss
Normal file
@@ -0,0 +1,54 @@
|
|||||||
|
|
||||||
|
.imgtext {
|
||||||
|
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: 718px) {
|
||||||
|
// PER VERSIONE MOBILE
|
||||||
|
.landing > section.padding_testo {
|
||||||
|
padding-top: 0.5rem;
|
||||||
|
padding-bottom: 0.1rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.imgtext {
|
||||||
|
padding: 0.25rem 0 0.25rem 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
.landing > section.padding_testo {
|
||||||
|
padding-top: 1rem;
|
||||||
|
padding-bottom: 0.25rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.section_text {
|
||||||
|
padding: 10px;
|
||||||
|
}
|
||||||
30
src/components/CImgText/CImgText.ts
Normal file
30
src/components/CImgText/CImgText.ts
Normal file
@@ -0,0 +1,30 @@
|
|||||||
|
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: 'CImgText'
|
||||||
|
})
|
||||||
|
export default class CImgText extends Vue {
|
||||||
|
@Prop({ required: false, default: '' }) public src: string
|
||||||
|
@Prop({ required: false, default: '' }) public class1: string
|
||||||
|
@Prop({ required: false, default: '' }) public style1: string
|
||||||
|
}
|
||||||
20
src/components/CImgText/CImgText.vue
Normal file
20
src/components/CImgText/CImgText.vue
Normal file
@@ -0,0 +1,20 @@
|
|||||||
|
<template>
|
||||||
|
<div>
|
||||||
|
<section class="padding_testo bg-white text-grey-10 text-justify" > <!-- v-scroll-reveal.reset -->
|
||||||
|
<div class="row items-start q-col-gutter-xs imgtext">
|
||||||
|
<div class="imgtext__img">
|
||||||
|
<img v-if="src" :src="src" :class="class1" :style="style1">
|
||||||
|
<div class="section_text">
|
||||||
|
<slot></slot>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script lang="ts" src="./CImgText.ts">
|
||||||
|
</script>
|
||||||
|
<style lang="scss" scoped>
|
||||||
|
@import './CImgText.scss';
|
||||||
|
</style>
|
||||||
1
src/components/CImgText/index.ts
Normal file
1
src/components/CImgText/index.ts
Normal file
@@ -0,0 +1 @@
|
|||||||
|
export {default as CImgText} from './CImgText.vue'
|
||||||
0
src/components/CPage/CPage.scss
Normal file
0
src/components/CPage/CPage.scss
Normal file
36
src/components/CPage/CPage.ts
Normal file
36
src/components/CPage/CPage.ts
Normal file
@@ -0,0 +1,36 @@
|
|||||||
|
import Vue from 'vue'
|
||||||
|
import { Component, Prop } from 'vue-property-decorator'
|
||||||
|
import { GlobalStore, UserStore } from '@store'
|
||||||
|
|
||||||
|
import { Logo } from '../../components/logo'
|
||||||
|
|
||||||
|
import { Footer } from '../../components/Footer'
|
||||||
|
|
||||||
|
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: 'CPage',
|
||||||
|
components: { Logo, Footer }
|
||||||
|
})
|
||||||
|
export default class CPage extends Vue {
|
||||||
|
@Prop({ required: true }) public imghead: string = ''
|
||||||
|
@Prop({ required: true }) public headtitle: string = ''
|
||||||
|
@Prop({ required: true }) public img1: string = ''
|
||||||
|
@Prop({ required: true }) public text1: string = ''
|
||||||
|
}
|
||||||
28
src/components/CPage/CPage.vue
Normal file
28
src/components/CPage/CPage.vue
Normal file
@@ -0,0 +1,28 @@
|
|||||||
|
<template>
|
||||||
|
<q-page class="text-white">
|
||||||
|
<div class="landing">
|
||||||
|
<CTitle :src="imghead" :title="headtitle">
|
||||||
|
</CTitle>
|
||||||
|
|
||||||
|
<section class="padding_testo bg-white text-grey-10 text-center" v-scroll-reveal.reset>
|
||||||
|
<div class="landing__features row items-start q-col-gutter-xs intro">
|
||||||
|
<div class="intro__associazione">
|
||||||
|
<!--<img src="../../statics/images/scuolaopbenessere/16427623_404497389905092_1266178961781563443_n.jpg">-->
|
||||||
|
<img :src="img1">
|
||||||
|
{{text1}}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<Footer></Footer>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</q-page>
|
||||||
|
|
||||||
|
|
||||||
|
</template>
|
||||||
|
<script lang="ts" src="./CPage.ts">
|
||||||
|
</script>
|
||||||
|
<style lang="scss" scoped>
|
||||||
|
@import './CPage.scss';
|
||||||
|
</style>
|
||||||
1
src/components/CPage/index.ts
Normal file
1
src/components/CPage/index.ts
Normal file
@@ -0,0 +1 @@
|
|||||||
|
export {default as CPage} from './CPage.vue'
|
||||||
18
src/components/CTitle/CTitle.scss
Normal file
18
src/components/CTitle/CTitle.scss
Normal file
@@ -0,0 +1,18 @@
|
|||||||
|
|
||||||
|
.cltitlebg{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
.titletext {
|
||||||
|
color: white;
|
||||||
|
font-size: 3rem;
|
||||||
|
font-weight: 500;
|
||||||
|
line-height: 3rem;
|
||||||
|
text-shadow: .25rem .25rem .5rem black;
|
||||||
|
letter-spacing: .00937em;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
.q-img__content > div{
|
||||||
|
background: rgba(0,0,0,0.17) !important;
|
||||||
|
}
|
||||||
20
src/components/CTitle/CTitle.ts
Normal file
20
src/components/CTitle/CTitle.ts
Normal file
@@ -0,0 +1,20 @@
|
|||||||
|
import Vue from 'vue'
|
||||||
|
import { Component, Prop } from 'vue-property-decorator'
|
||||||
|
import { GlobalStore, UserStore } from '@store'
|
||||||
|
|
||||||
|
import { tools } from '@src/store/Modules/tools'
|
||||||
|
import { toolsext } from '@src/store/Modules/toolsext'
|
||||||
|
import { Screen } from 'quasar'
|
||||||
|
|
||||||
|
@Component({
|
||||||
|
name: 'CTitle'
|
||||||
|
})
|
||||||
|
export default class CTitle extends Vue {
|
||||||
|
@Prop({ required: false, default: '' }) public imgbackground: string
|
||||||
|
@Prop({ required: false, default: '' }) public imghead: string
|
||||||
|
@Prop({ required: true }) public headtitle: string
|
||||||
|
|
||||||
|
get tools() {
|
||||||
|
return tools
|
||||||
|
}
|
||||||
|
}
|
||||||
27
src/components/CTitle/CTitle.vue
Normal file
27
src/components/CTitle/CTitle.vue
Normal file
@@ -0,0 +1,27 @@
|
|||||||
|
<template>
|
||||||
|
<div>
|
||||||
|
<q-img v-if="imgbackground" :src="imgbackground"
|
||||||
|
:style="tools.styles_imgtitle()">
|
||||||
|
|
||||||
|
<div class="absolute-bottom text-body1 text-center">
|
||||||
|
<h2 class="titletext">{{headtitle}}</h2>
|
||||||
|
</div>
|
||||||
|
</q-img>
|
||||||
|
|
||||||
|
<!--
|
||||||
|
<q-parallax :height="tools.myheight_imgtitle()" :width="tools.mywidth_imgtitle()">
|
||||||
|
<template v-slot:media>
|
||||||
|
<img :src="imgbackground" class="cltitlebg">
|
||||||
|
</template>
|
||||||
|
<h2 class="titletext">{{headtitle}}</h2>
|
||||||
|
</q-parallax>
|
||||||
|
-->
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script lang="ts" src="./CTitle.ts">
|
||||||
|
</script>
|
||||||
|
<style lang="scss" scoped>
|
||||||
|
@import './CTitle.scss';
|
||||||
|
</style>
|
||||||
1
src/components/CTitle/index.ts
Normal file
1
src/components/CTitle/index.ts
Normal file
@@ -0,0 +1 @@
|
|||||||
|
export {default as CTitle} from './CTitle.vue'
|
||||||
180
src/components/Footer/Footer.scss
Normal file
180
src/components/Footer/Footer.scss
Normal file
@@ -0,0 +1,180 @@
|
|||||||
|
$grayshadow: #555;
|
||||||
|
|
||||||
|
$textcol: blue;
|
||||||
|
$textcol_scuro: darkblue;
|
||||||
|
|
||||||
|
|
||||||
|
.landing__footer {
|
||||||
|
//background: -webkit-gradient(linear, left top, left bottom, color-stop(65%, rgba(0, 0, 0, .1)), to(#000));
|
||||||
|
background: linear-gradient(180deg, rgba(0, 0, 0, .8) 95%, #FFF);
|
||||||
|
padding-top: 4.5rem !important;
|
||||||
|
padding-bottom: 4.5rem !important;
|
||||||
|
padding-left: 1.25rem;
|
||||||
|
padding-right: 1.25rem;
|
||||||
|
color: #9f9f9f;
|
||||||
|
}
|
||||||
|
|
||||||
|
.icon_contact:hover {
|
||||||
|
color: blue;
|
||||||
|
border-color: white;
|
||||||
|
border-width: .0625rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.landing__footer .doc-link {
|
||||||
|
color: $textcol;
|
||||||
|
}
|
||||||
|
|
||||||
|
.landing__footer .doc-link:hover {
|
||||||
|
opacity: .8
|
||||||
|
}
|
||||||
|
|
||||||
|
.landing__swirl-bg {
|
||||||
|
background-repeat: no-repeat !important;
|
||||||
|
background-position: top;
|
||||||
|
background-size: contain !important;
|
||||||
|
background-image: url(../../statics/images/landing_first_section.png) !important
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
.landing__footer-icons {
|
||||||
|
font-size: 1.75rem
|
||||||
|
}
|
||||||
|
|
||||||
|
.landing__footer-icons a {
|
||||||
|
margin: 0 .5rem .5rem;
|
||||||
|
text-decoration: none;
|
||||||
|
outline: 0;
|
||||||
|
color: $textcol;
|
||||||
|
transition: color .28s
|
||||||
|
}
|
||||||
|
|
||||||
|
.landing__footer-icons a:hover {
|
||||||
|
color: $textcol_scuro;
|
||||||
|
}
|
||||||
|
|
||||||
|
.doc-img {
|
||||||
|
max-width: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.mylist {
|
||||||
|
background: #3fdaff;
|
||||||
|
padding-left: 1.25rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.clgutter {
|
||||||
|
margin-top: 1.25rem;
|
||||||
|
padding: .62rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.carousel_img_3 {
|
||||||
|
//background-image: url(../../statics/images/cibo_sano.jpg);
|
||||||
|
background-size: cover !important;
|
||||||
|
background-position: 50% center !important;
|
||||||
|
background-repeat: no-repeat !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@media (max-width: 718px) {
|
||||||
|
// PER VERSIONE MOBILE
|
||||||
|
|
||||||
|
.landing__hero {
|
||||||
|
text-align: center
|
||||||
|
}
|
||||||
|
.landing__header {
|
||||||
|
height: 7vh
|
||||||
|
}
|
||||||
|
.clgutter {
|
||||||
|
margin-top: 0;
|
||||||
|
padding: 0;
|
||||||
|
}
|
||||||
|
.landing__hero .text-h1 {
|
||||||
|
font-size: 3rem;
|
||||||
|
line-height: 3.05rem;
|
||||||
|
margin-bottom: 1.5rem
|
||||||
|
}
|
||||||
|
|
||||||
|
.landing > section.padding {
|
||||||
|
padding: 2.5rem 1rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.landing > section.padding_testo {
|
||||||
|
padding-top: 1.25rem;
|
||||||
|
padding-bottom: 1rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.landing > section.padding_gallery {
|
||||||
|
padding-top: 3.125rem;
|
||||||
|
padding-bottom: 5.625rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.landing__features h4, .landing__features h6 {
|
||||||
|
margin: 1.25rem 0
|
||||||
|
}
|
||||||
|
|
||||||
|
h4 {
|
||||||
|
line-height: 1.4;
|
||||||
|
text-shadow: 0.25rem 0.25rem 0.5rem $grayshadow;
|
||||||
|
}
|
||||||
|
|
||||||
|
.landing .feature-item {
|
||||||
|
text-align: center;
|
||||||
|
margin-top: 1.25rem;
|
||||||
|
}
|
||||||
|
.landing__hero-content {
|
||||||
|
padding-bottom: 11.25rem;
|
||||||
|
}
|
||||||
|
.landing__hero-btns {
|
||||||
|
-webkit-box-pack: center;
|
||||||
|
-ms-flex-pack: center;
|
||||||
|
justify-content: center
|
||||||
|
}
|
||||||
|
|
||||||
|
.q-col-gutter-sm {
|
||||||
|
padding: .625rem .315rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.text-vers{
|
||||||
|
font-size: 0.6rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.carousel_img_3 {
|
||||||
|
//background-image: url(../../statics/images/cibo_sano.jpg);
|
||||||
|
background-size: 620px 620px !important;
|
||||||
|
background-position: 50% top !important;
|
||||||
|
background-repeat: no-repeat !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
.custom-caption {
|
||||||
|
text-align: center;
|
||||||
|
padding: .75rem;
|
||||||
|
color: $textcol;
|
||||||
|
background-color: rgba(0, 0, 0, .3);
|
||||||
|
}
|
||||||
|
|
||||||
|
.mycontacts {
|
||||||
|
color: gray;
|
||||||
|
letter-spacing: 0.078rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.mycontacts_title {
|
||||||
|
text-shadow: 0.125rem 0.125rem 0.125rem #555;
|
||||||
|
font-weight: bold;
|
||||||
|
color: #999;
|
||||||
|
letter-spacing: 0.125rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.mycontacts_text {
|
||||||
|
color: #999;
|
||||||
|
letter-spacing: normal !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.footer_link {
|
||||||
|
font-size: 1rem;
|
||||||
|
color:gray;
|
||||||
|
}
|
||||||
|
|
||||||
|
.footer_link:hover {
|
||||||
|
color:white;
|
||||||
|
}
|
||||||
37
src/components/Footer/Footer.ts
Normal file
37
src/components/Footer/Footer.ts
Normal file
@@ -0,0 +1,37 @@
|
|||||||
|
import Vue from 'vue'
|
||||||
|
|
||||||
|
import { GlobalStore, UserStore } from '@modules'
|
||||||
|
import { Logo } from '../logo'
|
||||||
|
|
||||||
|
import { Component, Prop } from 'vue-property-decorator'
|
||||||
|
import { tools } from '@src/store/Modules/tools'
|
||||||
|
import { toolsext } from '@src/store/Modules/toolsext'
|
||||||
|
|
||||||
|
import { db_data } from '@src/db/db_data'
|
||||||
|
import { static_data } from '@src/db/static_data'
|
||||||
|
|
||||||
|
import Quasar from 'quasar'
|
||||||
|
import { FormNewsletter } from '../FormNewsletter'
|
||||||
|
|
||||||
|
@Component({
|
||||||
|
name: 'Footer',
|
||||||
|
components: { Logo, FormNewsletter }
|
||||||
|
})
|
||||||
|
|
||||||
|
export default class Footer extends Vue {
|
||||||
|
public $t
|
||||||
|
public $v
|
||||||
|
public $q
|
||||||
|
|
||||||
|
get TelegramSupport() {
|
||||||
|
return db_data.TELEGRAM_SUPPORT
|
||||||
|
}
|
||||||
|
|
||||||
|
get FBPage() {
|
||||||
|
return db_data.URL_FACEBOOK
|
||||||
|
}
|
||||||
|
|
||||||
|
get static_data(){
|
||||||
|
return static_data
|
||||||
|
}
|
||||||
|
}
|
||||||
87
src/components/Footer/Footer.vue
Normal file
87
src/components/Footer/Footer.vue
Normal file
@@ -0,0 +1,87 @@
|
|||||||
|
<template>
|
||||||
|
<div>
|
||||||
|
<section class="landing__footer">
|
||||||
|
<div class="row justify-between items-start q-col-gutter-xs">
|
||||||
|
<div class="col-12 col-sm-4 ">
|
||||||
|
<p style="text-align: center">
|
||||||
|
<logo></logo>
|
||||||
|
</p>
|
||||||
|
<!--<span v-html="$t('homepage.footer.description')">-->
|
||||||
|
<!--</span>-->
|
||||||
|
|
||||||
|
|
||||||
|
<FormNewsletter v-if="static_data.SHOW_NEWSLETTER"
|
||||||
|
|
||||||
|
>
|
||||||
|
</FormNewsletter>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
<div class="col-12 col-sm-4">
|
||||||
|
<div class="text-center">
|
||||||
|
|
||||||
|
<div class="q-mt-xs mycontacts">
|
||||||
|
<p class="mycontacts_title">{{$t('homepage.titlecontatti')}}</p>
|
||||||
|
|
||||||
|
|
||||||
|
<p class="mycontacts_text" v-html="$t('homepage.contacts')"></p>
|
||||||
|
</div>
|
||||||
|
<div class="landing__footer-icons row flex-center">
|
||||||
|
<a :href="FBPage" target="_blank">
|
||||||
|
<i aria-hidden="true" class="q-icon fab fa-facebook-f icon_contact links"> </i></a>
|
||||||
|
|
||||||
|
<a :href="TelegramSupport" target="_blank">
|
||||||
|
<i aria-hidden="true" class="q-icon fab fa-telegram icon_contact links"></i></a>
|
||||||
|
|
||||||
|
|
||||||
|
<!--<a href="" target="_blank"><i aria-hidden="true" class="q-icon fab fa-github"> </i></a>-->
|
||||||
|
<!--<a href="https://twitter.com/" target="_blank"><i aria-hidden="true" class="q-icon fab fa-twitter"> </i></a>-->
|
||||||
|
<!--<a href="https://discord.gg/5TDhbDg" target="_blank"><i aria-hidden="true"-->
|
||||||
|
<!--class="q-icon fab fa-discord"> </i></a><a-->
|
||||||
|
<!--href="https://forum.quasar-framework.org/" target="_blank"><i aria-hidden="true"-->
|
||||||
|
<!--class="q-icon fas fa-comments"> </i></a><a-->
|
||||||
|
<!--href="https://www.patreon.com/quasarframework" target="_blank"><i aria-hidden="true"-->
|
||||||
|
<!--class="q-icon fab fa-patreon"> </i></a>-->
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="col-12 col-sm-4 q-pa-md" v-for="">
|
||||||
|
<a href="/"><span class="footer_link">Home</span></a><br />
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<!--
|
||||||
|
<div class="col-12 col-sm-4 q-pa-md">
|
||||||
|
<a href="/"><span class="footer_link">Home</span></a><br />
|
||||||
|
<a href="/chisiamo"><span class="footer_link">Chi Siamo</span></a><br />
|
||||||
|
<a href="/calendarioeventi"><span class="footer_link">Calendario Eventi</span></a><br />
|
||||||
|
<a href="/reiki/significato"><span class="footer_link">Reiki</span></a><br />
|
||||||
|
<a href="/reiki/seminari"><span class="footer_link"> - Seminari Reiki</span></a><br />
|
||||||
|
<a href="/reiki/trattamentiindividuali"><span class="footer_link"> - Trattamenti Individuali</span></a><br />
|
||||||
|
<a href="/reiki/seratereikigruppo"><span class="footer_link"> - Serate di Gruppo</span></a><br />
|
||||||
|
<a href="/shiatsu/significato"><span class="footer_link">Shiatsu</span></a><br />
|
||||||
|
<a href="/shiatsu/trattamentiindividuali"><span class="footer_link"> - Trattamenti Individuali</span></a><br />
|
||||||
|
<a href="/shiatsu/energyyoga"><span class="footer_link"> - Energy Yoga</span></a><br />
|
||||||
|
<a href="/fioridibach"><span class="footer_link">Fiori di Bach</span></a><br />
|
||||||
|
<a href="/scuolaoperatoreolistico"><span class="footer_link">Scuola Operatore Olistico</span></a><br />
|
||||||
|
<a href="/scuoladinaturopatia"><span class="footer_link">Scuola di Naturopatia</span></a><br />
|
||||||
|
|
||||||
|
|
||||||
|
<br /><a href="/policy"><span class="footer_link">Privacy Policy</span></a><br />
|
||||||
|
</div>
|
||||||
|
-->
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
<q-page-scroller position="bottom-right" :scroll-offset="850" :offset="[18, 18]" style="opacity: 0.3">
|
||||||
|
<q-btn fab icon="keyboard_arrow_up" color="accent"/>
|
||||||
|
</q-page-scroller>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script lang="ts" src="./Footer.ts">
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="scss" scoped>
|
||||||
|
@import './Footer.scss';
|
||||||
|
</style>
|
||||||
1
src/components/Footer/index.ts
Normal file
1
src/components/Footer/index.ts
Normal file
@@ -0,0 +1 @@
|
|||||||
|
export {default as Footer} from './Footer.vue'
|
||||||
30
src/components/FormNewsletter/FormNewsletter.scss
Normal file
30
src/components/FormNewsletter/FormNewsletter.scss
Normal file
@@ -0,0 +1,30 @@
|
|||||||
|
// Animations
|
||||||
|
// slideFromBottom
|
||||||
|
.slideFromBottom-enter, .slideFromBottom-leave-to {
|
||||||
|
transform: translate(0px, 10em);
|
||||||
|
}
|
||||||
|
|
||||||
|
.slideFromBottom-enter-to, .slideFromBottom-leave {
|
||||||
|
transform: translate(0px, 0px);
|
||||||
|
}
|
||||||
|
|
||||||
|
.slideFromBottom-enter-active {
|
||||||
|
transition: transform .2s ease-out;
|
||||||
|
}
|
||||||
|
|
||||||
|
.slideFromBottom-leave-active {
|
||||||
|
transition: transform .2s ease-in;
|
||||||
|
}
|
||||||
|
|
||||||
|
.news_title {
|
||||||
|
color: white;
|
||||||
|
font-size: 1rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.news_link {
|
||||||
|
color: gray;
|
||||||
|
}
|
||||||
|
|
||||||
|
.news_link:hover {
|
||||||
|
color: white;
|
||||||
|
}
|
||||||
47
src/components/FormNewsletter/FormNewsletter.ts
Normal file
47
src/components/FormNewsletter/FormNewsletter.ts
Normal file
@@ -0,0 +1,47 @@
|
|||||||
|
import Vue from 'vue'
|
||||||
|
import Component from 'vue-class-component'
|
||||||
|
|
||||||
|
import { tools } from '../../store/Modules/tools'
|
||||||
|
import { toolsext } from '@src/store/Modules/toolsext'
|
||||||
|
|
||||||
|
import Quasar, { Screen } from 'quasar'
|
||||||
|
import { Prop } from 'vue-property-decorator'
|
||||||
|
|
||||||
|
@Component({
|
||||||
|
name: 'FormNewsletter'
|
||||||
|
})
|
||||||
|
|
||||||
|
export default class FormNewsletter extends Vue {
|
||||||
|
public $t
|
||||||
|
public $q
|
||||||
|
public name: string = null
|
||||||
|
public email: string = null
|
||||||
|
public accept: boolean = false
|
||||||
|
|
||||||
|
public onSubmit() {
|
||||||
|
if (this.accept !== true) {
|
||||||
|
|
||||||
|
this.$q.notify({
|
||||||
|
color: 'red-5',
|
||||||
|
textColor: 'white',
|
||||||
|
icon: 'fas fa-exclamation-triangle',
|
||||||
|
message: this.$t('newsletter.license')
|
||||||
|
})
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
this.$q.notify({
|
||||||
|
color: 'green-4',
|
||||||
|
textColor: 'white',
|
||||||
|
icon: 'fas fa-check-circle',
|
||||||
|
message: this.$t('newsletter.submitted')
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public onReset() {
|
||||||
|
this.name = null
|
||||||
|
this.email = null
|
||||||
|
this.accept = false
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
50
src/components/FormNewsletter/FormNewsletter.vue
Normal file
50
src/components/FormNewsletter/FormNewsletter.vue
Normal file
@@ -0,0 +1,50 @@
|
|||||||
|
<template>
|
||||||
|
<div>
|
||||||
|
<div class="q-pa-md q-gutter-sm text-white">
|
||||||
|
<p class="news_title">Desideri ricevere la nostra Newsletter?</p>
|
||||||
|
<q-form
|
||||||
|
@submit="onSubmit"
|
||||||
|
@reset="onReset"
|
||||||
|
class="q-gutter-md"
|
||||||
|
>
|
||||||
|
<q-input
|
||||||
|
filled
|
||||||
|
dark standout
|
||||||
|
v-model="name"
|
||||||
|
:label="$t('newsletter.name') + `*`"
|
||||||
|
:hint="$t('newsletter.namehint')"
|
||||||
|
lazy-rules
|
||||||
|
:rules="[ val => val && val.length > 0 || $t('newsletter.typesomething')]">
|
||||||
|
|
||||||
|
</q-input>
|
||||||
|
|
||||||
|
<q-input
|
||||||
|
filled
|
||||||
|
dark standout
|
||||||
|
v-model="email"
|
||||||
|
:label="$t('newsletter.email') + `*`"
|
||||||
|
lazy-rules
|
||||||
|
:rules="[ val => val && val.length > 6 || $t('newsletter.typesomething')]">
|
||||||
|
|
||||||
|
</q-input>
|
||||||
|
|
||||||
|
<a href="/policy"><span class="news_link">Privacy Policy</span></a>
|
||||||
|
|
||||||
|
<q-toggle dark v-model="accept" :label="$t('newsletter.acceptlicense')"/>
|
||||||
|
|
||||||
|
<div>
|
||||||
|
<q-btn :label="$t('newsletter.submit')" type="submit" color="primary"/>
|
||||||
|
<q-btn :label="$t('newsletter.reset')" type="reset" color="primary" flat class="q-ml-sm"/>
|
||||||
|
</div>
|
||||||
|
</q-form>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script lang="ts" src="./FormNewsletter.ts">
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="scss" scoped>
|
||||||
|
@import './FormNewsletter.scss';
|
||||||
|
</style>
|
||||||
|
|
||||||
1
src/components/FormNewsletter/index.ts
Normal file
1
src/components/FormNewsletter/index.ts
Normal file
@@ -0,0 +1 @@
|
|||||||
|
export {default as FormNewsletter} from './FormNewsletter.vue'
|
||||||
@@ -38,10 +38,6 @@ export default class Header extends Vue {
|
|||||||
public photo = ''
|
public photo = ''
|
||||||
public visuimg: boolean = true
|
public visuimg: boolean = true
|
||||||
|
|
||||||
public selectOpLang() {
|
|
||||||
return static_data.lang_available
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
get getappname(){
|
get getappname(){
|
||||||
if (Screen.width < 400) {
|
if (Screen.width < 400) {
|
||||||
@@ -205,10 +201,10 @@ export default class Header extends Vue {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public setshortlang(lang) {
|
public setshortlang(lang) {
|
||||||
for (const indrec in this.selectOpLang) {
|
for (const indrec in static_data.lang_available) {
|
||||||
if (this.selectOpLang[indrec].value === lang) {
|
if (static_data.lang_available[indrec].value === lang) {
|
||||||
// console.log('this.selectOpLang[indrec].short', this.selectOpLang[indrec].short, this.selectOpLang[indrec].value)
|
// console.log('static_data.lang_available[indrec].short', static_data.lang_available[indrec].short, static_data.lang_available[indrec].value)
|
||||||
this.langshort = this.selectOpLang[indrec].short
|
this.langshort = static_data.lang_available[indrec].short
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -220,7 +216,7 @@ export default class Header extends Vue {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public setLangAtt(mylang) {
|
public setLangAtt(mylang) {
|
||||||
console.log('MYLL=', mylang)
|
console.log('LANG =', mylang)
|
||||||
// console.log('PRIMA this.$q.lang.isoName', this.$q.lang.isoName)
|
// console.log('PRIMA this.$q.lang.isoName', this.$q.lang.isoName)
|
||||||
|
|
||||||
// dynamic import, so loading on demand only
|
// dynamic import, so loading on demand only
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
<template>
|
<template>
|
||||||
<div>
|
<div>
|
||||||
<q-header reveal elevated class="bg-primary text-white">
|
<q-header reveal elevated class="bg-primary">
|
||||||
<q-toolbar
|
<q-toolbar
|
||||||
color="primary"
|
color="primary"
|
||||||
:glossy="$q.theme === 'mat'"
|
:glossy="$q.theme === 'mat'"
|
||||||
@@ -72,7 +72,7 @@
|
|||||||
|
|
||||||
<q-btn-dropdown
|
<q-btn-dropdown
|
||||||
stretch
|
stretch
|
||||||
v-if="selectOpLang.length > 1"
|
v-if="static_data.lang_available.length > 1"
|
||||||
flat
|
flat
|
||||||
:label="langshort"
|
:label="langshort"
|
||||||
auto-close
|
auto-close
|
||||||
@@ -80,7 +80,7 @@
|
|||||||
<q-list bordered>
|
<q-list bordered>
|
||||||
<q-item clickable v-ripple
|
<q-item clickable v-ripple
|
||||||
|
|
||||||
v-for="langrec in selectOpLang" :key="langrec.value"
|
v-for="langrec in static_data.lang_available" :key="langrec.value"
|
||||||
@click="lang = langrec.value">
|
@click="lang = langrec.value">
|
||||||
<q-item-section avatar>
|
<q-item-section avatar>
|
||||||
<img :src="langrec.image" class="flagimg">
|
<img :src="langrec.image" class="flagimg">
|
||||||
@@ -102,7 +102,8 @@
|
|||||||
<label>{{ $t('msg.hello') }}</label> <span v-model="prova"></span> !
|
<label>{{ $t('msg.hello') }}</label> <span v-model="prova"></span> !
|
||||||
</div>-->
|
</div>-->
|
||||||
|
|
||||||
<q-btn dense flat round icon="menu" @click="right = !right"/>
|
<q-btn v-if="static_data.SHOW_USER_MENU" dense flat round icon="menu" @click="right = !right">
|
||||||
|
</q-btn>
|
||||||
|
|
||||||
</q-toolbar>
|
</q-toolbar>
|
||||||
|
|
||||||
@@ -120,11 +121,11 @@
|
|||||||
|
|
||||||
</q-drawer>
|
</q-drawer>
|
||||||
|
|
||||||
<q-drawer v-model="right" side="right" overlay bordered>
|
<q-drawer v-if="static_data.SHOW_USER_MENU" v-model="right" side="right" overlay bordered>
|
||||||
<div id="profile">
|
<div id="profile">
|
||||||
<q-img class="absolute-top" src="https://cdn.quasar-framework.org/img/material.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">
|
<div class="absolute-bottom bg-transparent text-black">
|
||||||
|
|
||||||
<q-avatar class="q-mb-sm">
|
<q-avatar class="q-mb-sm">
|
||||||
<img src="../../statics/images/avatar-1.svg">
|
<img src="../../statics/images/avatar-1.svg">
|
||||||
|
|||||||
11
src/components/PagePolicy/PagePolicy.scss
Normal file
11
src/components/PagePolicy/PagePolicy.scss
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
$grayshadow: #555;
|
||||||
|
|
||||||
|
$textcol: blue;
|
||||||
|
$textcol_scuro: darkblue;
|
||||||
|
|
||||||
|
|
||||||
|
p {
|
||||||
|
color: black;
|
||||||
|
margin: 0 0 1rem;
|
||||||
|
//text-shadow: .125rem .125rem .25rem $grayshadow;
|
||||||
|
}
|
||||||
23
src/components/PagePolicy/PagePolicy.ts
Normal file
23
src/components/PagePolicy/PagePolicy.ts
Normal file
@@ -0,0 +1,23 @@
|
|||||||
|
import Vue from 'vue'
|
||||||
|
import { Component, Prop } from 'vue-property-decorator'
|
||||||
|
|
||||||
|
import { tools } from '@src/store/Modules/tools'
|
||||||
|
import { toolsext } from '@src/store/Modules/toolsext'
|
||||||
|
import { Screen } from 'quasar'
|
||||||
|
import { ICategory } from '../../model'
|
||||||
|
import { Footer } from '../../components/Footer/index'
|
||||||
|
|
||||||
|
@Component({
|
||||||
|
name: 'PagePolicy',
|
||||||
|
components: { Footer }
|
||||||
|
})
|
||||||
|
export default class PagePolicy extends Vue {
|
||||||
|
@Prop({required: true}) public owneremail: string
|
||||||
|
@Prop({required: true}) public SiteName: string
|
||||||
|
@Prop({required: true}) public ownerDataName: string
|
||||||
|
@Prop({required: true}) public managerData: string
|
||||||
|
@Prop({required: true}) public includeData: string
|
||||||
|
@Prop({required: true}) public url: string
|
||||||
|
@Prop({required: true}) public lastdataupdate: string
|
||||||
|
|
||||||
|
}
|
||||||
130
src/components/PagePolicy/PagePolicy.vue
Normal file
130
src/components/PagePolicy/PagePolicy.vue
Normal file
@@ -0,0 +1,130 @@
|
|||||||
|
<template>
|
||||||
|
<q-page class="q-pa-md">
|
||||||
|
<p class="text-subtitle1">Privacy Policy di {{url}}</p>
|
||||||
|
<p class="text-subtitle1">Informativa sul trattamento dei dati personali ai sensi dell’art. 13 del Regolamento
|
||||||
|
(UE) n. 2016/679</p>
|
||||||
|
|
||||||
|
<p>Ai sensi dell’art. 13 del Regolamento (UE) n. 2016/679, anche denominato General Data Protection Regulation
|
||||||
|
(di
|
||||||
|
seguito il “GDPR“), {{SiteName}} La informa che i Suoi dati personali (di seguito i “Dati“),
|
||||||
|
saranno trattati nel rispetto di quanto previsto dal GDPR e di ogni normativa applicabile in riferimento al
|
||||||
|
trattamento dei dati personali in conformità all’informativa che segue.</p>
|
||||||
|
|
||||||
|
<p><span class="text-subtitle2">1. Titolare del trattamento</span><br/>
|
||||||
|
{{ownerDataName}}</p>
|
||||||
|
<p><span class="boldhigh">Responsabile trattamento e protezione dati:</span><br/>
|
||||||
|
{{managerData}}
|
||||||
|
</p>
|
||||||
|
|
||||||
|
|
||||||
|
<p>Il Responsabile della protezione dei Dati è contattabile via e-mail:
|
||||||
|
{{owneremail}} per informazioni sul trattamento dei Dati comunicati o comunque raccolti nel corso della
|
||||||
|
navigazione sul presente sito, nel rispetto della vigente disciplina in materia di privacy.</p>
|
||||||
|
|
||||||
|
<p class="text-subtitle2">2. Categorie di Dati</p>
|
||||||
|
|
||||||
|
<p>I Dati trattati dal Titolare includono: {{includeData}}.</p>
|
||||||
|
|
||||||
|
<p class="text-subtitle2">3. Finalità e base giuridica del trattamento. Legittimo interesse.</p>
|
||||||
|
|
||||||
|
<p>I Dati saranno trattati per l’adempimento di finalità informative, commerciali e amministrative ad obblighi
|
||||||
|
di
|
||||||
|
legge, ai sensi dell’art. 6, comma 1, lettera b) e c) del GDPR, nonché il perseguimento del legittimo
|
||||||
|
interesse
|
||||||
|
del Titolare, all’art. 6, comma 1, lettera f del GDPR, in riferimento a:
|
||||||
|
rispetto di procedure amministrative interne e adempimento di obblighi di legge o regolamenti vigenti in
|
||||||
|
Italia;
|
||||||
|
l’invio di comunicazioni di natura informativa, commerciale e promozionale.</p>
|
||||||
|
|
||||||
|
<p>In ogni caso, il trattamento dei Suoi Dati effettuato sulla base del proprio legittimo interesse del Titolare
|
||||||
|
avviene, oltre che nel rispetto di quanto previsto all’art. 6, comma 1, lettera f del GDPR, anche in
|
||||||
|
conformità
|
||||||
|
a quanto disposto al considerando n. 47 e all’Opinion n. 6/2014 Article 29 Data Protection Working Party,
|
||||||
|
par.
|
||||||
|
III.3.1.</p>
|
||||||
|
|
||||||
|
<p class="text-subtitle2">4. Modalità del trattamento.</p>
|
||||||
|
|
||||||
|
<p>I Suoi Dati sono raccolti e registrati in modo lecito e secondo correttezza per le finalità sopra indicate e
|
||||||
|
sono trattati anche con l’ausilio di strumenti elettronici e automatizzati, anche mediante l’inserimento e
|
||||||
|
l’organizzazione in banche dati, in conformità a quanto disposto dal GDPR in materia di misure di sicurezza,
|
||||||
|
e,
|
||||||
|
comunque, in modo tale da garantire la sicurezza e la riservatezza dei Dati stessi.</p>
|
||||||
|
|
||||||
|
<p class="text-subtitle2">5. Destinatari o categorie di destinatari.</p>
|
||||||
|
|
||||||
|
<p>I Dati potranno essere resi accessibili, portati a conoscenza di o comunicati ai seguenti soggetti, i quali
|
||||||
|
saranno nominati dal Titolare, a seconda dei casi, quali responsabili – la cui lista è disponibile presso la
|
||||||
|
sede del Titolare – o incaricati:
|
||||||
|
dipendenti e/o collaboratori a qualsivoglia titolo del Titolare;
|
||||||
|
soggetti pubblici o privati, persone fisiche o giuridiche, di cui il Titolare si avvalga per lo svolgimento
|
||||||
|
delle attività strumentali al raggiungimento della finalità di cui sopra o a cui il Titolare sia tenuto a
|
||||||
|
comunicare i Dati in forza di obblighi legali o contrattuali.</p>
|
||||||
|
|
||||||
|
<p>In ogni caso, i Dati non saranno diffusi.</p>
|
||||||
|
|
||||||
|
<p class="text-subtitle2">6. Luogo</p>
|
||||||
|
|
||||||
|
<p>I Dati sono trattati presso le sedi operative del Titolare ed in ogni altro luogo in cui le parti coinvolte
|
||||||
|
nel
|
||||||
|
trattamento siano localizzate. Per ulteriori informazioni, contattare il Titolare agli estremi riportati in
|
||||||
|
apertura.</p>
|
||||||
|
|
||||||
|
<p class="text-subtitle2">7. Periodo di conservazione.</p>
|
||||||
|
|
||||||
|
<p>I Dati saranno conservati per un periodo di tempo non superiore a 10 (dieci) anni per finalità amministrative
|
||||||
|
e,
|
||||||
|
comunque, per il tempo strettamente necessario al perseguimento dell’interesse legittimo del Titolare.</p>
|
||||||
|
|
||||||
|
<p class="text-subtitle2">8. Diritti di accesso, cancellazione, limitazione e portabilità.</p>
|
||||||
|
|
||||||
|
<p>Il Titolare La informa che Le sono riconosciuti i diritti di cui agli artt. da 15 a 20 del GDPR. A titolo
|
||||||
|
esemplificativo, inviando specifica richiesta all’indirizzo email {{owneremail}}, Lei potrà:
|
||||||
|
ottenere la conferma che sia o meno in corso un trattamento di dati personali che La riguardano;
|
||||||
|
qualora un trattamento sia in corso, ottenere l’accesso ai dati e alle informazioni relative al trattamento,
|
||||||
|
nonché richiedere una copia dei dati stessi;
|
||||||
|
ottenere la rettifica dei dati inesatti e l’integrazione dei dati personali incompleti;
|
||||||
|
ottenere, qualora sussista una delle condizioni previste dall’art. 17 del GDPR, la cancellazione dei Dati
|
||||||
|
che La
|
||||||
|
riguardano;
|
||||||
|
ottenere, nei casi previsti dall’art. 18 del GDPR, la limitazione del trattamento dei Dati che La
|
||||||
|
riguardano;
|
||||||
|
ricevere i Dati che La riguardano in un formato strutturato, di uso comune e leggibile da dispositivo
|
||||||
|
automatico
|
||||||
|
e richiedere la loro trasmissione ad un altro titolare, se tecnicamente fattibile.</p>
|
||||||
|
|
||||||
|
<p class="text-subtitle2">9. Diritto di opposizione.</p>
|
||||||
|
|
||||||
|
<p>Ai sensi dell’art. 21 del GDPR, Lei godrà altresì del diritto di opporsi in qualsiasi momento al trattamento
|
||||||
|
dei
|
||||||
|
propri Dati effettuato per il perseguimento del legittimo interesse del Titolare scrivendo all’indirizzo
|
||||||
|
email
|
||||||
|
{{owneremail}}. In caso di opposizione, i Dati non saranno più oggetto di trattamento, sempre che non
|
||||||
|
sussistano motivi legittimi per procedere al trattamento che prevalgono sugli interessi, sui diritti e sulle
|
||||||
|
libertà degli interessati, oppure per l’accertamento, l’esercizio o la difesa di un diritto in sede
|
||||||
|
giudiziaria.</p>
|
||||||
|
|
||||||
|
<p class="text-subtitle2">Responsabile della protezione dei dati</p>
|
||||||
|
<p>Il titolare ha provveduto a nominare il responsabile della protezione dei dati che è contattabile alla
|
||||||
|
seguente
|
||||||
|
casella di posta elettronica {{owneremail}}.</p>
|
||||||
|
|
||||||
|
<p class="text-subtitle2">10. Diritto di proporre reclamo al Garante.</p>
|
||||||
|
|
||||||
|
<p>Il Titolare La informa altresì che potrà proporre reclamo al Garante per la Protezione dei Dati Personali nel
|
||||||
|
caso in cui ritenga che siano stati violati i diritti di cui è titolare ai sensi del GDPR o di qualsiasi
|
||||||
|
altra
|
||||||
|
normativa applicabile, secondo le modalità indicate sul sito internet del Garante per la Protezione dei Dati
|
||||||
|
Personali accessibile all’indirizzo: <a href="http://www.garanteprivacy.it" target="_blank">www.garanteprivacy.it</a>.</p>
|
||||||
|
|
||||||
|
<p>Ultimo aggiornamento: {{lastdataupdate}}</p>
|
||||||
|
|
||||||
|
<Footer></Footer>
|
||||||
|
</q-page>
|
||||||
|
|
||||||
|
</template>
|
||||||
|
<script lang="ts" src="./PagePolicy.ts">
|
||||||
|
</script>
|
||||||
|
<style lang="scss" scoped>
|
||||||
|
@import './PagePolicy.scss';
|
||||||
|
</style>
|
||||||
1
src/components/PagePolicy/index.ts
Normal file
1
src/components/PagePolicy/index.ts
Normal file
@@ -0,0 +1 @@
|
|||||||
|
export {default as PagePolicy} from './PagePolicy.vue'
|
||||||
@@ -3,6 +3,7 @@ export * from './todos'
|
|||||||
export * from './logo'
|
export * from './logo'
|
||||||
export * from './CProgress'
|
export * from './CProgress'
|
||||||
export * from './CCard'
|
export * from './CCard'
|
||||||
|
export * from './CBook'
|
||||||
export * from './CPage'
|
export * from './CPage'
|
||||||
export * from './CTitle'
|
export * from './CTitle'
|
||||||
export * from './CDate'
|
export * from './CDate'
|
||||||
|
|||||||
44
src/model/Calendar.ts
Normal file
44
src/model/Calendar.ts
Normal file
@@ -0,0 +1,44 @@
|
|||||||
|
|
||||||
|
export interface IEvents {
|
||||||
|
time?: string
|
||||||
|
duration?: number
|
||||||
|
title?: string
|
||||||
|
details?: string
|
||||||
|
date?: string
|
||||||
|
side?: string
|
||||||
|
bgcolor?: string
|
||||||
|
days?: number
|
||||||
|
icon?: string
|
||||||
|
img?: string
|
||||||
|
where?: string
|
||||||
|
teacher?: string
|
||||||
|
teacher2?: string
|
||||||
|
avatar?: string
|
||||||
|
avatar2?: string
|
||||||
|
infoextra?: string
|
||||||
|
linkpdf?: string
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface ICalendarState {
|
||||||
|
titlebarHeight: number
|
||||||
|
locale: string,
|
||||||
|
maxDays: number,
|
||||||
|
fiveDayWorkWeek: boolean,
|
||||||
|
shortMonthLabel: boolean,
|
||||||
|
showDayOfYearLabel: boolean,
|
||||||
|
shortWeekdayLabel: boolean,
|
||||||
|
shortIntervalLabel: boolean,
|
||||||
|
hour24Format: boolean,
|
||||||
|
hideHeader: boolean,
|
||||||
|
noScroll: boolean,
|
||||||
|
showMonthLabel: boolean,
|
||||||
|
showWorkWeeks: boolean,
|
||||||
|
intervalRange: {min: number, max: number},
|
||||||
|
intervalRangeStep: number,
|
||||||
|
intervalHeight: number,
|
||||||
|
resourceHeight: number,
|
||||||
|
resourceWidth: number,
|
||||||
|
dayHeight: number,
|
||||||
|
enableThemes: boolean,
|
||||||
|
theme: {}
|
||||||
|
}
|
||||||
@@ -112,3 +112,39 @@ export interface ILang {
|
|||||||
image: string
|
image: string
|
||||||
short: string
|
short: string
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export interface IAllLang {
|
||||||
|
es?: string
|
||||||
|
enUs?: string
|
||||||
|
fr?: string
|
||||||
|
it?: string
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface ITimeLineEntry {
|
||||||
|
date: string
|
||||||
|
title: string
|
||||||
|
description: IAllLang
|
||||||
|
description2?: IAllLang
|
||||||
|
description3?: IAllLang
|
||||||
|
icon: string
|
||||||
|
image: string
|
||||||
|
image2?: string
|
||||||
|
image3?: string
|
||||||
|
image4?: string
|
||||||
|
side: string
|
||||||
|
link_url?: string
|
||||||
|
link_text?: IAllLang
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface ITimeLineMain {
|
||||||
|
titlemain: IAllLang
|
||||||
|
body: ITimeLineEntry[]
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface IGallery {
|
||||||
|
title: string
|
||||||
|
subtitle?: IAllLang
|
||||||
|
img: string
|
||||||
|
width?: number
|
||||||
|
height?: number
|
||||||
|
}
|
||||||
|
|||||||
@@ -432,7 +432,7 @@ namespace Actions {
|
|||||||
}
|
}
|
||||||
|
|
||||||
async function loadAfterLogin(context) {
|
async function loadAfterLogin(context) {
|
||||||
console.log('loadAfterLogin')
|
// console.log('loadAfterLogin')
|
||||||
actions.clearDataAfterLoginOnlyIfActiveConnection()
|
actions.clearDataAfterLoginOnlyIfActiveConnection()
|
||||||
|
|
||||||
state.arrConfig = await globalroutines(null, 'readall', 'config', null)
|
state.arrConfig = await globalroutines(null, 'readall', 'config', null)
|
||||||
|
|||||||
@@ -14,6 +14,7 @@ import { costanti } from '@src/store/Modules/costanti'
|
|||||||
import { RouteNames } from '@src/router/route-names'
|
import { RouteNames } from '@src/router/route-names'
|
||||||
import * as Types from '@src/store/Api/ApiTypes'
|
import * as Types from '@src/store/Api/ApiTypes'
|
||||||
import { serv_constants } from '@src/store/Modules/serv_constants'
|
import { serv_constants } from '@src/store/Modules/serv_constants'
|
||||||
|
import { static_data } from '@src/db/static_data'
|
||||||
|
|
||||||
const nametable = 'projects'
|
const nametable = 'projects'
|
||||||
|
|
||||||
@@ -273,6 +274,9 @@ namespace Actions {
|
|||||||
|
|
||||||
async function dbLoad(context, { checkPending, onlyiffirsttime }) {
|
async function dbLoad(context, { checkPending, onlyiffirsttime }) {
|
||||||
|
|
||||||
|
if (!static_data.ENABLE_PROJECTS_LOADING)
|
||||||
|
return null
|
||||||
|
|
||||||
if (onlyiffirsttime) {
|
if (onlyiffirsttime) {
|
||||||
if (stateglob.projects.length > 0) {
|
if (stateglob.projects.length > 0) {
|
||||||
// if already set, then exit.
|
// if already set, then exit.
|
||||||
|
|||||||
89
src/store/Modules/Store/calendar/CalendarStore.ts
Normal file
89
src/store/Modules/Store/calendar/CalendarStore.ts
Normal file
@@ -0,0 +1,89 @@
|
|||||||
|
import Api from '@api'
|
||||||
|
import { ICalendarState } from 'model'
|
||||||
|
import { ILinkReg, IResult, IIdToken, IToken } from 'model/other'
|
||||||
|
import { storeBuilder } from '../Store'
|
||||||
|
|
||||||
|
import { serv_constants } from '../../serv_constants'
|
||||||
|
import { tools } from '../../tools'
|
||||||
|
|
||||||
|
import translate from '../../../../globalroutines/util'
|
||||||
|
import * as Types from '../../../Api/ApiTypes'
|
||||||
|
|
||||||
|
// State
|
||||||
|
const state: ICalendarState = {
|
||||||
|
titlebarHeight: 0,
|
||||||
|
locale: 'it-IT',
|
||||||
|
maxDays: 1,
|
||||||
|
fiveDayWorkWeek: false,
|
||||||
|
shortMonthLabel: false,
|
||||||
|
showDayOfYearLabel: false,
|
||||||
|
shortWeekdayLabel: false,
|
||||||
|
shortIntervalLabel: false,
|
||||||
|
hour24Format: true,
|
||||||
|
hideHeader: false,
|
||||||
|
noScroll: false,
|
||||||
|
showMonthLabel: true,
|
||||||
|
showWorkWeeks: false,
|
||||||
|
intervalRange: {min: 9, max: 23},
|
||||||
|
intervalRangeStep: 1,
|
||||||
|
intervalHeight: 35,
|
||||||
|
resourceHeight: 60,
|
||||||
|
resourceWidth: 100,
|
||||||
|
dayHeight: 100,
|
||||||
|
enableThemes: false,
|
||||||
|
theme: {}
|
||||||
|
}
|
||||||
|
|
||||||
|
const b = storeBuilder.module<ICalendarState>('CalendarModule', state)
|
||||||
|
const stateGetter = b.state()
|
||||||
|
|
||||||
|
namespace Getters {
|
||||||
|
|
||||||
|
// const lang = b.read((state) => {
|
||||||
|
// if (state.lang !== '') {
|
||||||
|
// return state.lang
|
||||||
|
// } else {
|
||||||
|
// return process.env.LANG_DEFAULT
|
||||||
|
// }
|
||||||
|
// }, 'lang')
|
||||||
|
//
|
||||||
|
// export const getters = {
|
||||||
|
// get lang() {
|
||||||
|
// return lang()
|
||||||
|
// },
|
||||||
|
// }
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
namespace Mutations {
|
||||||
|
// function authUser(state: ICalendarState, data: ICalendarState) {
|
||||||
|
// state.userId = data.userId
|
||||||
|
// }
|
||||||
|
//
|
||||||
|
// export const mutations = {
|
||||||
|
// authUser: b.commit(authUser),
|
||||||
|
// }
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
namespace Actions {
|
||||||
|
|
||||||
|
// async function resetpwd(context, paramquery: ICalendarState) {
|
||||||
|
// }
|
||||||
|
//
|
||||||
|
// export const actions = {
|
||||||
|
// autologin_FromLocalStorage: b.dispatch(autologin_FromLocalStorage)
|
||||||
|
// }
|
||||||
|
}
|
||||||
|
|
||||||
|
// Module
|
||||||
|
const CalendarModule = {
|
||||||
|
get state() {
|
||||||
|
return stateGetter()
|
||||||
|
}
|
||||||
|
// actions: Actions.actions,
|
||||||
|
// getters: Getters.getters,
|
||||||
|
// mutations: Mutations.mutations
|
||||||
|
}
|
||||||
|
|
||||||
|
export default CalendarModule
|
||||||
@@ -15,6 +15,7 @@ import objectId from '@src/js/objectId'
|
|||||||
import { costanti } from '@src/store/Modules/costanti'
|
import { costanti } from '@src/store/Modules/costanti'
|
||||||
import { IAction } from '@src/model'
|
import { IAction } from '@src/model'
|
||||||
import * as Types from '@src/store/Api/ApiTypes'
|
import * as Types from '@src/store/Api/ApiTypes'
|
||||||
|
import { static_data } from '@src/db/static_data'
|
||||||
|
|
||||||
const nametable = 'todos'
|
const nametable = 'todos'
|
||||||
|
|
||||||
@@ -217,7 +218,7 @@ namespace Mutations {
|
|||||||
ApiTables.removeitemfromarray(stateparam.todos[indcat], ind)
|
ApiTables.removeitemfromarray(stateparam.todos[indcat], ind)
|
||||||
}
|
}
|
||||||
|
|
||||||
async function movemyitem(stateparam: ITodosState, { myitemorig, myitemdest } ) {
|
async function movemyitem(stateparam: ITodosState, { myitemorig, myitemdest }) {
|
||||||
|
|
||||||
const indcat = stateparam.categories.indexOf(myitemorig.category)
|
const indcat = stateparam.categories.indexOf(myitemorig.category)
|
||||||
const indorig = tools.getIndexById(stateparam.todos[indcat], myitemorig._id)
|
const indorig = tools.getIndexById(stateparam.todos[indcat], myitemorig._id)
|
||||||
@@ -251,13 +252,19 @@ namespace Mutations {
|
|||||||
namespace Actions {
|
namespace Actions {
|
||||||
|
|
||||||
async function dbLoad(context, { checkPending }) {
|
async function dbLoad(context, { checkPending }) {
|
||||||
|
|
||||||
|
if (!static_data.ENABLE_PROJECTS_LOADING)
|
||||||
|
return null
|
||||||
|
|
||||||
console.log('dbLoad', nametable, checkPending, 'userid=', UserStore.state.userId)
|
console.log('dbLoad', nametable, checkPending, 'userid=', UserStore.state.userId)
|
||||||
|
|
||||||
// if (UserStore.state.userId === '') {
|
// if (UserStore.state.userId === '') {
|
||||||
// return new Types.AxiosError(0, null, 0, '')
|
// return new Types.AxiosError(0, null, 0, '')
|
||||||
// }
|
// }
|
||||||
|
|
||||||
const ris = await Api.SendReq('/todos/' + UserStore.state.userId, 'GET', null)
|
let ris = null
|
||||||
|
|
||||||
|
ris = await Api.SendReq('/todos/' + UserStore.state.userId, 'GET', null)
|
||||||
.then((res) => {
|
.then((res) => {
|
||||||
if (res.data.todos) { // console.log('RISULTANTE CATEGORIES DAL SERVER = ', res.data.categories)
|
if (res.data.todos) { // console.log('RISULTANTE CATEGORIES DAL SERVER = ', res.data.categories)
|
||||||
state.todos = res.data.todos
|
state.todos = res.data.todos
|
||||||
|
|||||||
@@ -512,9 +512,10 @@ namespace Actions {
|
|||||||
}
|
}
|
||||||
|
|
||||||
async function setGlobal(isLogged: boolean) {
|
async function setGlobal(isLogged: boolean) {
|
||||||
state.isLogged = true
|
// state.isLogged = true
|
||||||
console.log('state.isLogged')
|
state.isLogged = isLogged
|
||||||
if (isLogged) {
|
if (isLogged) {
|
||||||
|
console.log('state.isLogged')
|
||||||
GlobalStore.mutations.setleftDrawerOpen(localStorage.getItem(tools.localStorage.leftDrawerOpen) === 'true')
|
GlobalStore.mutations.setleftDrawerOpen(localStorage.getItem(tools.localStorage.leftDrawerOpen) === 'true')
|
||||||
GlobalStore.mutations.setCategorySel(localStorage.getItem(tools.localStorage.categorySel))
|
GlobalStore.mutations.setCategorySel(localStorage.getItem(tools.localStorage.categorySel))
|
||||||
|
|
||||||
@@ -531,7 +532,7 @@ namespace Actions {
|
|||||||
|
|
||||||
async function autologin_FromLocalStorage(context) {
|
async function autologin_FromLocalStorage(context) {
|
||||||
try {
|
try {
|
||||||
console.log('*** autologin_FromLocalStorage ***')
|
// console.log('*** autologin_FromLocalStorage ***')
|
||||||
// INIT
|
// INIT
|
||||||
|
|
||||||
let isLogged = false
|
let isLogged = false
|
||||||
@@ -566,7 +567,7 @@ namespace Actions {
|
|||||||
|
|
||||||
await setGlobal(isLogged)
|
await setGlobal(isLogged)
|
||||||
|
|
||||||
console.log('autologin userId STATE ', state.userId)
|
// console.log('autologin userId STATE ', state.userId)
|
||||||
|
|
||||||
return true
|
return true
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
|
|||||||
@@ -1310,7 +1310,7 @@ export const tools = {
|
|||||||
,
|
,
|
||||||
|
|
||||||
checkLangPassed(mylang) {
|
checkLangPassed(mylang) {
|
||||||
console.log('checkLangPassed')
|
// console.log('checkLangPassed')
|
||||||
|
|
||||||
const mybrowserLang = Quasar.lang.isoName
|
const mybrowserLang = Quasar.lang.isoName
|
||||||
|
|
||||||
@@ -1345,7 +1345,7 @@ export const tools = {
|
|||||||
UserStore.mutations.setlang(mylang)
|
UserStore.mutations.setlang(mylang)
|
||||||
}
|
}
|
||||||
|
|
||||||
console.log('mylang calc : ', mylang)
|
// console.log('mylang calc : ', mylang)
|
||||||
|
|
||||||
return mylang
|
return mylang
|
||||||
},
|
},
|
||||||
@@ -1525,6 +1525,14 @@ export const tools = {
|
|||||||
return ''
|
return ''
|
||||||
}
|
}
|
||||||
,
|
,
|
||||||
|
getstrMMMDate(mytimestamp) {
|
||||||
|
// console.log('getstrDate', mytimestamp)
|
||||||
|
if (!!mytimestamp)
|
||||||
|
return date.formatDate(mytimestamp, 'DD MMM YYYY')
|
||||||
|
else
|
||||||
|
return ''
|
||||||
|
}
|
||||||
|
,
|
||||||
getstrYYMMDDDate(mytimestamp) {
|
getstrYYMMDDDate(mytimestamp) {
|
||||||
return date.formatDate(mytimestamp, 'YYYY-MM-DD')
|
return date.formatDate(mytimestamp, 'YYYY-MM-DD')
|
||||||
}
|
}
|
||||||
|
|||||||
41
src/store/Modules/toolsext.ts
Normal file
41
src/store/Modules/toolsext.ts
Normal file
@@ -0,0 +1,41 @@
|
|||||||
|
import { UserStore } from '@store'
|
||||||
|
|
||||||
|
export const toolsext = {
|
||||||
|
getLocale(vero?: boolean) {
|
||||||
|
if (UserStore) {
|
||||||
|
if (UserStore.state) {
|
||||||
|
return UserStore.state.lang
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return process.env.LANG_DEFAULT
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
export const func_tools = {
|
||||||
|
getLocale(vero?: boolean) {
|
||||||
|
if (UserStore) {
|
||||||
|
if (UserStore.state) {
|
||||||
|
return UserStore.state.lang
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return ''
|
||||||
|
},
|
||||||
|
|
||||||
|
getDateStr(mydate) {
|
||||||
|
if (costanti_tools.DateFormatter) {
|
||||||
|
const date = new Date(mydate)
|
||||||
|
return costanti_tools.DateFormatter.format(date)
|
||||||
|
}
|
||||||
|
return mydate
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
export const costanti_tools = {
|
||||||
|
DateFormatter: new Intl.DateTimeFormat(func_tools.getLocale() || void 0, {
|
||||||
|
weekday: 'long',
|
||||||
|
day: 'numeric',
|
||||||
|
month: 'long',
|
||||||
|
year: 'numeric'
|
||||||
|
// timeZone: 'UTC'
|
||||||
|
})
|
||||||
|
}
|
||||||
90
src/views/login/logoData.ts
Normal file
90
src/views/login/logoData.ts
Normal file
@@ -0,0 +1,90 @@
|
|||||||
|
/* eslint-disable */
|
||||||
|
export default {
|
||||||
|
Digitalizer: `<g>
|
||||||
|
<path fill="none" stroke="#FFFFFF" stroke-width="6" d="M259.476,280.364V247.5c0-12.958-10.542-23.5-23.5-23.5s-23.5,10.542-23.5,23.5v29.672 c0,35.757-13.173,70.087-37.094,96.665l-32.981,36.646c-2.771,3.079-2.521,7.821,0.558,10.593c3.078,2.771,7.82,2.521,10.592-0.558 l32.981-36.646c26.403-29.338,40.944-67.231,40.944-106.7V247.5c0-4.687,3.813-8.5,8.5-8.5s8.5,3.813,8.5,8.5v32.864 c0,44.003-16.301,86.167-45.901,118.727l-32.149,35.364c-2.786,3.064-2.56,7.809,0.505,10.595c1.437,1.307,3.242,1.95,5.042,1.95 c2.04,0,4.072-0.827,5.552-2.455l32.148-35.364C241.789,373.854,259.476,328.106,259.476,280.364z" />
|
||||||
|
<path fill="none" stroke="#FFFFFF" stroke-width="6" d="M291.476,247.5c0-30.603-24.897-55.5-55.5-55.5s-55.5,24.897-55.5,55.5v29.672c0,27.839-10.256,54.566-28.879,75.258 l-23.447,26.053c-2.771,3.079-2.521,7.821,0.558,10.593c3.079,2.771,7.82,2.519,10.592-0.558l23.447-26.053 c21.106-23.451,32.73-53.742,32.73-85.293V247.5c0-22.332,18.168-40.5,40.5-40.5c22.332,0,40.5,18.168,40.5,40.5v32.864 c0,51.979-19.256,101.789-54.223,140.252l-27.125,29.839c-2.787,3.064-2.561,7.809,0.504,10.595c1.437,1.307,3.242,1.95,5.042,1.95 c2.04,0,4.072-0.827,5.552-2.455l27.126-29.839c37.481-41.23,58.123-94.622,58.123-150.342V247.5z" />
|
||||||
|
<path fill="none" stroke="#FFFFFF" stroke-width="6" d="M323.476,247.5c0-48.248-39.252-87.5-87.5-87.5s-87.5,39.252-87.5,87.5v29.672c0,19.92-7.339,39.045-20.665,53.851 l-21.112,23.458c-2.771,3.079-2.521,7.821,0.558,10.593c3.078,2.771,7.821,2.519,10.592-0.558l21.112-23.458 c15.809-17.565,24.515-40.254,24.515-63.886V247.5c0-39.977,32.523-72.5,72.5-72.5s72.5,32.523,72.5,72.5v32.864 c0,59.958-22.212,117.412-62.545,161.777l-7.507,8.258c-2.786,3.065-2.56,7.809,0.505,10.595c1.437,1.306,3.243,1.95,5.042,1.95 c2.04,0,4.072-0.827,5.552-2.455l7.506-8.258c42.848-47.133,66.446-108.169,66.446-171.867V247.5z" />
|
||||||
|
<path fill="none" stroke="#FFFFFF" stroke-width="6" d="M116.476,247.5c0,4.143,3.358,7.5,7.5,7.5s7.5-3.357,7.5-7.5c0-25.255,9.169-49.651,25.819-68.695 c16.495-18.867,39.134-31.205,63.746-34.741c4.1-0.589,6.946-4.391,6.357-8.49c-0.589-4.1-4.394-6.942-8.49-6.357 c-28.16,4.046-54.052,18.15-72.906,39.716C126.962,190.71,116.476,218.613,116.476,247.5z" />
|
||||||
|
<path fill="none" stroke="#FFFFFF" stroke-width="6" d="M131.476,277.172c0-4.143-3.358-7.5-7.5-7.5s-7.5,3.357-7.5,7.5c0,12.002-4.421,23.523-12.449,32.443l-18.779,20.867 c-2.771,3.078-2.521,7.82,0.558,10.592c1.434,1.29,3.227,1.925,5.015,1.925c2.052,0,4.097-0.838,5.577-2.483l18.779-20.866 C125.687,307.971,131.476,292.886,131.476,277.172z" />
|
||||||
|
<path fill="none" stroke="#FFFFFF" stroke-width="6" d="M340.755,344.123c-4.009-1.044-8.105,1.351-9.155,5.357c-2.769,10.579-6.213,21.096-10.24,31.258 c-1.526,3.851,0.359,8.21,4.21,9.735c0.907,0.359,1.841,0.529,2.761,0.529c2.985,0,5.808-1.795,6.975-4.739 c4.249-10.725,7.884-21.822,10.806-32.986C347.16,349.271,344.761,345.172,340.755,344.123z" />
|
||||||
|
<path fill="none" stroke="#FFFFFF" stroke-width="6" d="M315.791,158.632c-3.081-2.771-7.823-2.517-10.592,0.563s-2.517,7.822,0.563,10.591 c22.061,19.832,34.713,48.157,34.713,77.714v32.864c0,12.473-0.86,25.042-2.557,37.359c-0.565,4.104,2.303,7.888,6.406,8.453 c0.347,0.048,0.692,0.071,1.033,0.071c3.688,0,6.903-2.722,7.42-6.478c1.79-12.993,2.698-26.251,2.698-39.406V247.5 C355.476,213.695,341.011,181.304,315.791,158.632z" />
|
||||||
|
<path fill="none" stroke="#FFFFFF" stroke-width="6" d="M280.729,153.076c1.041,0.496,2.138,0.73,3.219,0.73c2.803,0,5.492-1.579,6.777-4.278c1.781-3.739,0.192-8.215-3.547-9.995 c-10.806-5.145-22.291-8.616-34.136-10.317c-4.106-0.585-7.901,2.258-8.49,6.357s2.257,7.901,6.357,8.49 C261.257,145.55,271.289,148.582,280.729,153.076z" />
|
||||||
|
<path fill="none" stroke="#FFFFFF" stroke-width="6" d="M235.976,96c-2.806,0-5.644,0.078-8.437,0.232c-4.136,0.228-7.304,3.766-7.076,7.901c0.229,4.136,3.763,7.321,7.902,7.075 c2.519-0.139,5.079-0.209,7.61-0.209c75.266,0,136.5,61.233,136.5,136.5v32.864c0,4.143,3.358,7.5,7.5,7.5s7.5-3.357,7.5-7.5V247.5 C387.476,163.963,319.513,96,235.976,96z" />
|
||||||
|
<path fill="none" stroke="#FFFFFF" stroke-width="6" d="M153.972,136.693c1.477,0,2.97-0.436,4.275-1.343c12.478-8.677,26.182-15.155,40.733-19.258 c3.987-1.124,6.308-5.268,5.184-9.254s-5.269-6.304-9.254-5.184c-16.16,4.556-31.376,11.749-45.226,21.379 c-3.401,2.365-4.241,7.039-1.876,10.439C149.265,135.57,151.599,136.693,153.972,136.693z" />
|
||||||
|
<path fill="none" stroke="#FFFFFF" stroke-width="6" d="M99.476,277.172V247.5c0-34.89,13.213-68.118,37.205-93.565c2.841-3.014,2.702-7.76-0.312-10.602 s-7.761-2.701-10.602,0.312C99.14,171.886,84.476,208.77,84.476,247.5v29.672c0,4.083-1.504,8.002-4.234,11.035l-9.248,10.275 c-2.771,3.079-2.521,7.821,0.558,10.592c1.433,1.291,3.227,1.926,5.015,1.926c2.052,0,4.096-0.837,5.577-2.482l9.248-10.275 C96.605,292.449,99.476,284.966,99.476,277.172z" />
|
||||||
|
<path fill="none" stroke="#FFFFFF" stroke-width="6" d="M409.951,189.104c-8.226-24.446-21.299-46.531-38.856-65.642c-2.803-3.05-7.547-3.252-10.597-0.449 c-3.05,2.803-3.251,7.547-0.449,10.598c16.127,17.554,28.134,37.834,35.686,60.276c1.054,3.133,3.976,5.11,7.107,5.11 c0.793,0,1.6-0.127,2.393-0.394C409.16,197.282,411.272,193.029,409.951,189.104z" />
|
||||||
|
<path fill="none" stroke="#FFFFFF" stroke-width="6" d="M295.247,73.822c-3.917-1.341-8.183,0.748-9.524,4.668c-1.341,3.919,0.749,8.183,4.668,9.523 c16.538,5.659,32.065,13.857,46.15,24.369c1.347,1.005,2.92,1.489,4.48,1.489c2.286,0,4.544-1.041,6.017-3.015 c2.478-3.319,1.794-8.019-1.525-10.496C330.176,88.916,313.264,79.986,295.247,73.822z" />
|
||||||
|
<path fill="none" stroke="#FFFFFF" stroke-width="6" d="M119.442,125.908C150.991,95.659,192.377,79,235.976,79c8.096,0,16.237,0.583,24.196,1.731 c4.103,0.598,7.903-2.252,8.495-6.352c0.592-4.1-2.251-7.902-6.351-8.494C253.648,64.635,244.786,64,235.976,64 c-47.487,0-92.56,18.141-126.915,51.081c-34.248,32.838-54.277,76.905-56.397,124.084c-0.186,4.138,3.018,7.644,7.155,7.829 c0.115,0.006,0.229,0.008,0.343,0.008c3.987,0,7.306-3.14,7.487-7.163C69.594,196.527,87.988,156.066,119.442,125.908z" />
|
||||||
|
<path fill="none" stroke="#FFFFFF" stroke-width="6" d="M235.976,32c-16.772,0-33.485,1.944-49.674,5.778c-4.031,0.954-6.524,4.996-5.57,9.026c0.955,4.03,4.997,6.524,9.027,5.569 C204.817,48.809,220.366,47,235.976,47c54.996,0,106.332,21.911,144.55,61.695c1.473,1.533,3.439,2.305,5.41,2.305 c1.869,0,3.741-0.694,5.195-2.091c2.987-2.87,3.083-7.618,0.213-10.604c-19.913-20.729-43.304-37.036-69.522-48.465 C294.666,38.002,265.783,32,235.976,32z" />
|
||||||
|
<path fill="none" stroke="#FFFFFF" stroke-width="6" d="M67.507,125.404c1.372,1.074,3.001,1.595,4.619,1.595c2.227,0,4.431-0.987,5.91-2.876 c21.375-27.302,49.515-48.717,81.377-61.932c3.826-1.587,5.642-5.975,4.055-9.801s-5.977-5.644-9.801-4.055 c-34.241,14.201-64.478,37.21-87.441,66.539C63.672,118.137,64.246,122.851,67.507,125.404z" />
|
||||||
|
<path fill="none" stroke="#FFFFFF" stroke-width="6" d="M131.983,38.725c1.094,0,2.205-0.24,3.255-0.748C166.816,22.73,200.709,15,235.976,15c18.378,0,36.682,2.162,54.401,6.426 c4.025,0.966,8.077-1.51,9.046-5.537c0.969-4.027-1.51-8.078-5.538-9.047C275.019,2.302,255.535,0,235.976,0 c-37.544,0-73.631,8.232-107.259,24.469c-3.73,1.801-5.294,6.285-3.493,10.015C126.517,37.163,129.195,38.725,131.983,38.725z" />
|
||||||
|
<path fill="none" stroke="#FFFFFF" stroke-width="6" d="M321.724,31.383c7.732,3.079,15.385,6.619,22.746,10.52c1.119,0.594,2.321,0.875,3.505,0.875 c2.688,0,5.287-1.449,6.633-3.99c1.939-3.66,0.545-8.199-3.115-10.139c-7.837-4.153-15.986-7.922-24.22-11.201 c-3.849-1.533-8.21,0.345-9.743,4.192C315.998,25.488,317.876,29.851,321.724,31.383z" />
|
||||||
|
</svg>`,
|
||||||
|
Keytronic:
|
||||||
|
`<g>
|
||||||
|
<g>
|
||||||
|
<path fill="none" stroke-width="6" d="M478.665,72c0-39.704-32.296-72-72-72c-19.704,0-38.496,8.184-52,22.288C341.161,8.184,322.369,0,302.665,0 c-39.704,0-72,32.296-72,72c0,24.752,12.456,47.36,33.376,60.688L275.353,144L134.665,284.688l-26.344-26.344 c-3.128-3.128-8.184-3.128-11.312,0l-32,32c-3.128,3.128-3.128,8.184,0,11.312L91.353,328l-12.688,12.688l-26.344-26.344 c-3.128-3.128-8.184-3.128-11.312,0l-33,33c-3.128,3.128-3.128,8.184,0,11.312L34.353,385L4.345,415.008 c-3.128,3.128-3.128,8.184,0,11.312l52,52c1.56,1.56,3.608,2.344,5.656,2.344s4.096-0.784,5.656-2.344l51.008-51.008 l26.344,26.344c3.128,3.128,8.184,3.128,11.312,0l40-40c3.128-3.128,3.128-8.184,0-11.312L169.977,376l168.688-168.688 l7.312,7.312C359.305,235.544,381.913,248,406.665,248c39.704,0,72-32.296,72-72c0-19.704-8.184-38.496-22.288-52 C470.481,110.496,478.665,91.704,478.665,72z M462.665,176c0,30.872-25.128,56-56,56c-19.488,0-37.272-9.944-47.584-26.6 c-0.328-0.52-0.712-1.008-1.152-1.448l-13.608-13.608c-3.128-3.128-8.184-3.128-11.312,0l-180,180 c-3.128,3.128-3.128,8.184,0,11.312L179.353,408l-28.688,28.688l-26.344-26.344c-3.128-3.128-8.184-3.128-11.312,0l-51.008,51.008 l-40.688-40.688l30.008-30.008c3.128-3.128,3.128-8.184,0-11.312L24.977,353l21.688-21.688l26.344,26.344 c3.128,3.128,8.184,3.128,11.312,0l24-24c3.128-3.128,3.128-8.184,0-11.312L81.977,296l20.688-20.688l26.344,26.344 c3.128,3.128,8.184,3.128,11.312,0l152-152c3.128-3.128,3.128-8.184,0-11.312l-17.608-17.608c-0.44-0.44-0.92-0.824-1.448-1.152 c-16.656-10.312-26.6-28.096-26.6-47.584c0-30.872,25.128-56,56-56c17.96,0,34.968,8.768,45.504,23.456c3,4.184,10,4.184,13,0 C371.697,24.768,388.705,16,406.665,16c30.872,0,56,25.128,56,56c0,17.96-8.768,34.968-23.456,45.504 c-2.096,1.504-3.336,3.92-3.336,6.496s1.24,5,3.336,6.496C453.897,141.032,462.665,158.04,462.665,176z" stroke="#FFFFFF"/>
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
<g>
|
||||||
|
<g>
|
||||||
|
<rect fill="none" stroke-width="6" x="173.811" y="228.009" transform="matrix(0.7071 -0.7071 0.7071 0.7071 -91.1265 252.0189)" width="169.678" height="16" stroke="#FFFFFF"/>
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
<g>
|
||||||
|
<g>
|
||||||
|
<rect fill="none" stroke-width="6" x="163.35" y="311.983" transform="matrix(0.7071 -0.7071 0.7071 0.7071 -175.1045 217.2252)" width="22.624" height="16" stroke="#FFFFFF"/>
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
<g>
|
||||||
|
<g>
|
||||||
|
<path fill="none" stroke-width="6" d="M406.665,40c-17.648,0-32,14.352-32,32s14.352,32,32,32s32-14.352,32-32S424.313,40,406.665,40z M406.665,88 c-8.824,0-16-7.176-16-16s7.176-16,16-16c8.824,0,16,7.176,16,16S415.489,88,406.665,88z" stroke="#FFFFFF"/>
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
<g>
|
||||||
|
<g>
|
||||||
|
<rect fill="none" stroke-width="6" x="310.663" y="92.674" transform="matrix(0.7071 -0.7071 0.7071 0.7071 19.8046 255.7854)" width="16" height="22.624" stroke="#FFFFFF"/>
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
<g>
|
||||||
|
<g>
|
||||||
|
<rect fill="none" stroke-width="6" x="342.661" y="124.674" transform="matrix(0.7071 -0.7071 0.7071 0.7071 6.5493 287.7842)" width="16" height="22.624" stroke="#FFFFFF"/>
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
<g>
|
||||||
|
<g>
|
||||||
|
<rect fill="none" stroke-width="6" x="374.659" y="156.674" transform="matrix(0.7071 -0.7071 0.7071 0.7071 -6.706 319.7831)" width="16" height="22.624" stroke="#FFFFFF"/>
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
<g>
|
||||||
|
<g>
|
||||||
|
<path fill="none" stroke-width="6" d="M470.665,344h-14.032c-0.44-1.112-0.896-2.216-1.392-3.328l9.928-9.928c3.128-3.128,3.128-8.184,0-11.312l-33.936-33.936 c-3.128-3.128-8.184-3.128-11.312,0l-9.928,9.928c-1.112-0.496-2.216-0.952-3.328-1.392V280c0-4.424-3.576-8-8-8h-48 c-4.424,0-8,3.576-8,8v14.032c-1.112,0.44-2.216,0.896-3.328,1.392l-9.928-9.928c-3.128-3.128-8.184-3.128-11.312,0 l-33.936,33.936c-3.128,3.128-3.128,8.184,0,11.312l9.928,9.928c-0.496,1.112-0.952,2.216-1.392,3.328h-14.032 c-4.424,0-8,3.576-8,8v48c0,4.424,3.576,8,8,8h14.032c0.44,1.112,0.896,2.216,1.392,3.328l-9.928,9.928 c-3.128,3.128-3.128,8.184,0,11.312l33.936,33.936c3.128,3.128,8.184,3.128,11.312,0l9.928-9.928 c1.112,0.496,2.216,0.952,3.328,1.392V472c0,4.424,3.576,8,8,8h48c4.424,0,8-3.576,8-8v-14.032 c1.112-0.44,2.216-0.896,3.328-1.392l9.928,9.928c3.128,3.128,8.184,3.128,11.312,0l33.936-33.936 c3.128-3.128,3.128-8.184,0-11.312l-9.928-9.928c0.496-1.112,0.952-2.216,1.392-3.328h14.032c4.424,0,8-3.576,8-8v-48 C478.665,347.576,475.089,344,470.665,344z M462.665,392h-11.672c-3.496,0-6.576,2.264-7.632,5.592 c-1.216,3.864-2.856,7.8-4.88,11.672c-1.616,3.104-1.032,6.888,1.44,9.36l8.288,8.288l-22.624,22.624l-8.288-8.288 c-2.472-2.472-6.256-3.056-9.36-1.44c-3.872,2.024-7.808,3.664-11.672,4.88c-3.336,1.064-5.6,4.144-5.6,7.64V464h-32v-11.672 c0-3.496-2.264-6.576-5.592-7.632c-3.864-1.216-7.8-2.856-11.672-4.88c-3.104-1.616-6.88-1.032-9.36,1.44l-8.288,8.288 l-22.624-22.624l8.288-8.288c2.472-2.472,3.056-6.256,1.44-9.36c-2.024-3.872-3.664-7.808-4.88-11.672 c-1.064-3.336-4.144-5.6-7.64-5.6h-11.672v-32h11.672c3.496,0,6.576-2.264,7.632-5.592c1.216-3.864,2.856-7.8,4.88-11.672 c1.616-3.104,1.032-6.888-1.44-9.36l-8.288-8.288l22.624-22.624l8.288,8.288c2.48,2.48,6.256,3.048,9.36,1.44 c3.872-2.024,7.808-3.664,11.672-4.88c3.336-1.064,5.6-4.144,5.6-7.64V288h32v11.672c0,3.496,2.264,6.576,5.592,7.632 c3.864,1.216,7.8,2.856,11.672,4.88c3.104,1.608,6.888,1.04,9.36-1.44l8.288-8.288l22.624,22.624l-8.288,8.288 c-2.472,2.472-3.056,6.256-1.44,9.36c2.024,3.872,3.664,7.808,4.88,11.672c1.064,3.336,4.144,5.6,7.64,5.6h11.672V392z" stroke="#FFFFFF"/>
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
<g>
|
||||||
|
<g>
|
||||||
|
<path fill="none" stroke-width="6" d="M374.665,328c-26.472,0-48,21.528-48,48s21.528,48,48,48s48-21.528,48-48S401.137,328,374.665,328z M374.665,408 c-17.648,0-32-14.352-32-32s14.352-32,32-32s32,14.352,32,32S392.313,408,374.665,408z" stroke="#FFFFFF"/>
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
<g>
|
||||||
|
<g>
|
||||||
|
<path fill="none" stroke-width="6" d="M54.665,168h-16c0,13.232-10.768,24-24,24v16c13.232,0,24,10.768,24,24h16c0-13.232,10.768-24,24-24v-16 C65.433,192,54.665,181.232,54.665,168z M46.665,208.248c-2.336-3.144-5.104-5.912-8.248-8.248 c3.144-2.336,5.912-5.104,8.248-8.248c2.336,3.144,5.104,5.912,8.248,8.248C51.769,202.336,49.001,205.104,46.665,208.248z" stroke="#FFFFFF"/>
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
<g>
|
||||||
|
<g>
|
||||||
|
<path fill="none" stroke-width="6" d="M150.665,120h-16c0,13.232-10.768,24-24,24v16c13.232,0,24,10.768,24,24h16c0-13.232,10.768-24,24-24v-16 C161.433,144,150.665,133.232,150.665,120z M142.665,160.248c-2.336-3.144-5.104-5.912-8.248-8.248 c3.144-2.336,5.912-5.104,8.248-8.248c2.336,3.144,5.104,5.912,8.248,8.248C147.769,154.336,145.001,157.104,142.665,160.248z" stroke="#FFFFFF"/>
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
<g>
|
||||||
|
<g>
|
||||||
|
<path fill="none" stroke-width="6" d="M70.665,48h-16c0,13.232-10.768,24-24,24v16c13.232,0,24,10.768,24,24h16c0-13.232,10.768-24,24-24V72 C81.433,72,70.665,61.232,70.665,48z M62.665,88.248c-2.336-3.144-5.104-5.912-8.248-8.248c3.144-2.336,5.912-5.104,8.248-8.248 c2.336,3.144,5.104,5.912,8.248,8.248C67.769,82.336,65.001,85.104,62.665,88.248z" stroke="#FFFFFF"/>
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
`,
|
||||||
|
Molectron: `
|
||||||
|
<path stroke="#FFFFFF" fill="none" stroke-width="6" d="m398.559,166.02c-8.85-3.404-18.292-6.493-28.22-9.265 2.563-9.984 4.609-19.706 6.087-29.073 7.689-48.757-0.808-82.959-23.925-96.306-6.72-3.88-14.443-5.848-22.954-5.848-26.882,0-60.85,19.965-95.118,53.681-7.486-7.352-15.006-14.105-22.502-20.167-38.379-31.038-72.25-40.781-95.365-27.434-14.856,8.577-23.891,26.093-26.126,50.652-0.376,4.125 2.664,7.773 6.789,8.148 4.138,0.382 7.772-2.664 8.148-6.789 1.238-13.594 5.484-31.398 18.688-39.021 17.11-9.881 45.699-0.365 78.434,26.106 7.143,5.776 14.314,12.217 21.461,19.233-14.373,15.293-28.676,32.894-42.41,52.347-24.16,2.199-47.172,5.888-68.291,10.948-3.698-14.376-6.238-28.093-7.491-40.827-0.405-4.122-4.059-7.134-8.198-6.729-4.122,0.405-7.135,4.076-6.729,8.198 1.326,13.474 4.008,27.966 7.917,43.133-9.596,2.706-18.73,5.712-27.311,9.012-46.072,17.72-71.443,42.18-71.443,68.873s25.371,51.153 71.441,68.872c8.85,3.404 18.292,6.493 28.22,9.265-2.563,9.984-4.609,19.706-6.087,29.073-7.689,48.757 0.808,82.959 23.925,96.306 6.72,3.88 14.443,5.848 22.954,5.848 26.573,0 60.071-19.516 93.938-52.531 7.255,7.086 14.54,13.609 21.803,19.482 27.161,21.966 52.059,33.266 72.489,33.265 8.438-0.001 16.119-1.93 22.876-5.831 23.117-13.347 31.614-47.549 23.925-96.306-1.477-9.366-3.523-19.087-6.086-29.07 15.439-4.252 29.64-9.26 42.218-14.96 3.773-1.71 5.445-6.154 3.735-9.927-1.71-3.773-6.155-5.446-9.927-3.735-11.912,5.398-25.377,10.15-40.042,14.192-6.063-20.261-14.137-41.412-23.976-62.808 10.281-22.122 18.685-44.004 24.943-64.936 55.665,15.586 88.651,40.202 88.651,63.801 0,15.247-13.296,27.827-24.45,35.694-3.385,2.388-4.193,7.067-1.806,10.452 2.388,3.386 7.067,4.193 10.452,1.806 20.153-14.215 30.804-30.797 30.804-47.952 0-26.693-25.371-51.153-71.441-68.872zm-69.013-125.491c5.844,7.10543e-15 11.044,1.291 15.454,3.838 17.112,9.88 23.166,39.396 16.607,80.979-1.405,8.907-3.35,18.159-5.789,27.669-21.207-5.028-44.299-8.68-68.532-10.835-13.596-19.242-27.866-36.839-42.375-52.253 2.655-2.618 5.312-5.158 7.964-7.602 29.252-26.953 56.48-41.796 76.671-41.796zm-95.096,60.152c11.317,12.062 22.5,25.517 33.323,40.102-10.769-0.587-21.712-0.891-32.773-0.891-11.431,0-22.738,0.321-33.855,0.947 10.808-14.56 22.006-28.07 33.305-40.158zm-.053,269.657c-11.718-12.42-23.296-26.341-34.486-41.466 11.514,0.674 23.234,1.02 35.089,1.02 11.419,0 22.732-0.333 33.871-0.969-11.18,15.064-22.777,29.01-34.474,41.415zm.603-55.446c-16.115,0-31.578-0.624-46.314-1.784-8.277-12.076-16.284-24.78-23.907-37.984-7.503-12.995-14.405-26.107-20.657-39.155 6.49-13.661 13.707-27.412 21.596-41.077 7.64-13.232 15.75-26.063 24.177-38.307 14.374-1.099 29.429-1.693 45.105-1.693 15.273,0 29.956,0.564 43.994,1.609 8.434,12.267 16.59,25.185 24.349,38.623 7.85,13.597 15.034,27.279 21.5,40.873-6.219,12.942-13.091,25.957-20.56,38.894-7.625,13.207-15.72,26.015-24.13,38.239-14.716,1.158-29.83,1.762-45.153,1.762zm-65.615-3.655c-18.453-2.132-35.582-5.129-51.205-8.81 4.744-15.789 10.758-32.16 17.929-48.79 4.898,9.688 10.128,19.373 15.679,28.987 5.668,9.818 11.549,19.371 17.597,28.613zm1.19-152.829c-6.111,9.318-12.078,18.991-17.847,28.984-5.933,10.276-11.499,20.61-16.677,30.928-7.543-17.318-13.858-34.376-18.788-50.749 16.203-3.859 34.042-6.983 53.312-9.163zm-155.575,76.484c0-23.472 32.634-47.951 87.757-63.55 6.235,20.802 14.601,42.62 24.805,64.647-9.813,21.362-17.865,42.477-23.913,62.705-55.663-15.587-88.649-40.203-88.649-63.802zm125.454,194.363c-5.844,0-11.044-1.291-15.454-3.838-17.112-9.88-23.166-39.396-16.607-80.979 1.405-8.907 3.35-18.159 5.789-27.669 20.518,4.865 42.8,8.441 66.173,10.619 13.951,19.807 28.618,37.883 43.53,53.648-2.254,2.201-4.509,4.348-6.76,6.423-29.252,26.954-56.48,41.796-76.671,41.796zm220.214-84.584c6.559,41.583 0.505,71.099-16.607,80.979-17.113,9.879-45.699,0.364-78.434-26.106-6.893-5.574-13.814-11.767-20.712-18.499 14.761-15.578 29.462-33.603 43.563-53.579 23.432-2.151 45.822-5.697 66.389-10.509 2.445,9.526 4.394,18.793 5.801,27.714zm-9.83-42.153c-16.064,3.733-33.311,6.67-51.339,8.745 6.085-9.283 12.027-18.918 17.773-28.871 5.517-9.556 10.713-19.161 15.579-28.757 7.195,16.66 13.228,33.063 17.987,48.883zm-17.918-84.145c-5.152-10.259-10.688-20.532-16.587-30.749-5.818-10.078-11.859-19.878-18.077-29.348 19.355,2.146 37.276,5.243 53.564,9.081-4.955,16.493-11.302,33.623-18.9,51.016z"/>
|
||||||
|
<path stroke="#FFFFFF" fill="none" stroke-width="6" d="m235,197.392c-20.678,0-37.5,16.822-37.5,37.5s16.822,37.5 37.5,37.5 37.5-16.822 37.5-37.5-16.822-37.5-37.5-37.5zm0,60c-12.406,0-22.5-10.094-22.5-22.5s10.094-22.5 22.5-22.5 22.5,10.094 22.5,22.5-10.094,22.5-22.5,22.5z"/>
|
||||||
|
`
|
||||||
|
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user