Fix way to routing, using only one array ! ...continue

This commit is contained in:
Paolo Arena
2019-07-18 13:22:23 +02:00
parent a80bbe3236
commit 116703d6cc
13 changed files with 593 additions and 70 deletions

View File

@@ -11,6 +11,7 @@ import { tools } from '../../store/Modules/tools'
import { toolsext } from '@src/store/Modules/toolsext' import { toolsext } from '@src/store/Modules/toolsext'
import Quasar, { Screen } from 'quasar' import Quasar, { Screen } from 'quasar'
import { static_data } from '../../db/static_data'
@Component({ @Component({
name: 'Header', name: 'Header',
@@ -37,12 +38,10 @@ export default class Header extends Vue {
public photo = '' public photo = ''
public visuimg: boolean = true public visuimg: boolean = true
public selectOpLang = [ public selectOpLang() {
{ label: 'English', icon: 'fa-flag-us', value: 'enUs', image: '../statics/images/gb.png', short: 'EN' }, return static_data.lang_available
{ label: 'Español', icon: 'fa-flag-es', value: 'es', image: '../statics/images/es.png', short: 'ES' },
{ label: 'Italiano', icon: 'fa-facebook', value: 'it', image: '../statics/images/it.png', short: 'IT' } }
// { label: 'German', icon: 'fa-flag-de', value: 'de', image: '../statics/images/de.png', short: 'DE' },
]
get getappname(){ get getappname(){
if (Screen.width < 400) { if (Screen.width < 400) {
@@ -165,14 +164,17 @@ export default class Header extends Vue {
const color = (value === 'online') ? 'positive' : 'warning' const color = (value === 'online') ? 'positive' : 'warning'
if (!!oldValue) { if (this.static_data.SHOW_IF_IS_SERVER_CONNECTION) {
tools.showNotif(this.$q, this.$t('connection') + ` ${value}`, {
color,
icon: 'wifi'
})
}
this.changeIconConn() if (!!oldValue) {
tools.showNotif(this.$q, this.$t('connection') + ` ${value}`, {
color,
icon: 'wifi'
})
}
this.changeIconConn()
}
} }
} }
@@ -337,4 +339,8 @@ export default class Header extends Vue {
tools.showNotif(this.$q, this.$t('logout.uscito'), {icon: 'exit_to_app'}) tools.showNotif(this.$q, this.$t('logout.uscito'), {icon: 'exit_to_app'})
}) })
} }
get static_data(){
return static_data
}
} }

View File

@@ -58,7 +58,7 @@
--> -->
<q-btn <q-btn
v-if="!isonline" v-if="!isonline && static_data.SHOW_IF_IS_SERVER_CONNECTION"
flat flat
dense dense
round round
@@ -72,6 +72,7 @@
<q-btn-dropdown <q-btn-dropdown
stretch stretch
v-if="selectOpLang.length > 1"
flat flat
:label="langshort" :label="langshort"
auto-close auto-close

View File

@@ -17,7 +17,7 @@
} }
#logoimg { #logoimg {
height: 150px; height: 50px;
width: auto; width: auto;
@media screen and (max-width: 600px) { @media screen and (max-width: 600px) {
} }

66
src/db/db_data.js Normal file
View File

@@ -0,0 +1,66 @@
import { IEvents } from "../model";
export const db_data = {
URL_FACEBOOK: "https://www.facebook.com/associazioneshen",
events: [
{
title: 'Scambi Reiki',
details: 'Nelle serate esperienziali è possibile <span class="boldhigh">Dare e Ricevere</span> un trattamento completo.<br />' +
'Possono partecipare le persone che hanno già preso parte al <span class="boldhigh">seminario di 1° livello</span>, ma anche <span class="boldhigh">tutti quelli che hanno il desiderio di conoscere il Reiki</span> e sperimentarlo per la prima volta: in questo caso invitiamo gli interessati a contattarci per un appuntamento prima dellinizio della serata per ricevere le informazioni pratiche.',
date: '2019-07-11',
time: '21:00',
duration: 120,
side: 'left',
bgcolor: 'orange',
icon: 'fas fa-praying-hands',
img: 'images/reiki/reikisfondo.jpg',
where: 'Centro Shen',
// whereicon: 'shen.png',
teacher: 'Cristina Barattoni',
avatar: 'cristina.png',
infoextra: '',
linkpdf: 'files/eventi/Reiki_aMICHI.pdf',
},
{
title: 'Scambi Reiki',
details: 'Nelle serate esperienziali è possibile <span class="boldhigh">Dare e Ricevere</span> un trattamento completo.<br />' +
'Possono partecipare le persone che hanno già preso parte al <span class="boldhigh">seminario di 1° livello</span>, ma anche <span class="boldhigh">tutti quelli che hanno il desiderio di conoscere il Reiki</span> e sperimentarlo per la prima volta: in questo caso invitiamo gli interessati a contattarci per un appuntamento prima dellinizio della serata per ricevere le informazioni pratiche.',
date: '2019-07-20',
time: '21:00',
duration: 120,
side: 'left',
bgcolor: 'orange',
icon: 'fas fa-praying-hands',
img: 'images/reiki/reikisfondo.jpg',
where: 'Centro Shen',
// whereicon: 'shen.png',
teacher: 'Cristina Barattoni',
avatar: 'cristina.png',
infoextra: '',
linkpdf: '',
},
{
title: 'Seminario Reiki 1° Livello',
details: 'I seminari vengono organizzati volutamente in gruppi poco numerosi.\n' +
'Si crea così un ambiente accogliente e tranquillo con un atmosfera conviviale.<br />' +
'' +
'Per info vedi <a href="reiki/seminari">Seminari Reiki</a>',
date: '2019-07-22',
days: 2,
time: '9:00',
side: 'left',
bgcolor: 'red',
icon: 'fas fa-chalkboard-teacher',
img: 'images/reiki/reikisfondo.jpg',
where: 'Centro Shen',
// whereicon: 'shen.png',
teacher: 'Cristina Barattoni',
avatar: 'cristina.png',
teacher2: 'Elisa Ghizzardi',
avatar2: 'elisa.png',
infoextra: 'sabato e domenica dalle 10.00 alle 18.00',
linkpdf: '',
},
]
}

48
src/db/static_data.ts Normal file
View File

@@ -0,0 +1,48 @@
import { Todos, Projects, UserStore } from '@store'
import globalroutines from '../globalroutines/index'
import Quasar, { date, Screen } from 'quasar'
import { IListRoutes, ILang, IMenuList, IProject, ITodo, Privacy, IPerson } from '../model/index'
import { RouteNames } from '../router/route-names'
const ds_operatori: IPerson[] = [
{
index: 0,
name: 'Elisa Ghizzardi',
sub1: 'Presidente',
sub2: 'Reiki Master, Naturopata e Operatrice Olistica',
img: '../../statics/images/direttivo/elisa.jpg',
cell: '338-9344724',
email: 'elisa.ghizzardi@yahoo.com',
paginaweb: '',
paginafb: '',
intro: 'Il mio incontro con le discipline olistiche è iniziato nel 2000, in un momento di grossi cambiamenti che mi hanno spinta a pormi delle domande sullesistenza e sul percorso di vita che tocca a ciascuno di noi... <br>',
info: 'Il mio incontro con le discipline olistiche è iniziato nel 2000, in un momento di grossi cambiamenti che mi hanno spinta a pormi delle domande sullesistenza e sul percorso di vita che tocca a ciascuno di noi.<br>' +
'In mio aiuto sono arrivati i Fiori di Bach, che ho utilizzato per diverso tempo e grazie ai quali ho cominciato a prendere contatto con una parte di me che non conoscevo e che ha cominciato ad emergere sempre di più.<br><br>' +
'Qualche anno dopo ho conosciuto la Via del Reiki, attraverso la quale ho compreso che lessere umano ha un potenziale enorme, dimenticato, ma che può essere ritrovato ed alimentato grazie al collegamento con la potente Energia Universale, grazie al collegamento con la scintilla divina che alberga in ognuno di noi. Ho desiderato allora completare il percorso per diventare insegnante e poter far conoscere anche ad altri la magnifica via del Reiki per riscoprire questo grande dono che abbiamo dentro di noi e per ritrovare la connessione con lEsistenza, lAmore e la Gioia profonda.<br><br>' +
'Grazie a delle meravigliose sincronicità ho incontrato persone con cui condividere il percorso, partecipare attivamente alla conduzione di unassociazione culturale per la divulgazione delle discipline olistiche e questo percorso che sempre più chiaramente si è mostrato essere “ciò che volevo fare da grande”. Gli interessi si sono così trasformati in percorsi formativi professionali per diventare Operatrice Olistica e Naturopata.<br><br>' +
'Insieme a Cristina e Kathryna nel 2019 abbiamo deciso di fondare Lassociazione SHEN per creare un centro di formazione sia per chi desidera intraprendere una professione in ambito olistico sia per chi desidera fare un percorso di crescita personale.<br><br>' +
'E di certo il cammino non è ancora finito cè così tanto da conoscere e sperimentare...<br><br>' +
'<span class="citazione">I due giorni più importanti della vita sono quello in cui sei nato e quello in capisci perché. (Mark Twain)</span>',
}]
const arrLangUsed = [
'it',
'enUs',
'es'
]
const lang_available: ILang[] = [
{ label: 'Italiano', icon: 'fa-flag-it', value: 'it', image: '../statics/images/it.png', short: 'IT' },
{ label: 'English', icon: 'fa-flag-us', value: 'enUs', image: '../statics/images/gb.png', short: 'EN' },
{ label: 'Español', icon: 'fa-flag-es', value: 'es', image: '../statics/images/es.png', short: 'ES' }
// { label: 'Français', icon: 'fa-facebook', value: 'fr', image: '../statics/images/fr.png', short: 'FR' }
// { label: 'German', icon: 'fa-flag-de', value: 'de', image: '../statics/images/de.png', short: 'DE' },
]
export const static_data = {
SHOW_IF_IS_SERVER_CONNECTION: false,
ds_operatori,
lang_available,
arrLangUsed
}

View File

@@ -52,6 +52,7 @@
} }
.my-menu, .my-menu > i{ .my-menu, .my-menu > i{
min-height: 40px;
min-width: 26px; min-width: 26px;
font-size: 1rem; font-size: 1rem;
} }
@@ -63,7 +64,7 @@
.my-menu-icon > i{ .my-menu-icon > i{
min-width: 26px; min-width: 26px;
font-size: 1.5rem; font-size: 1.25rem;
} }
.clexpansion{ .clexpansion{

View File

@@ -2,6 +2,7 @@ import Vue from 'vue'
import { Watch } from 'vue-property-decorator' import { Watch } from 'vue-property-decorator'
import { GlobalStore } from '../../store/Modules' import { GlobalStore } from '../../store/Modules'
import Component from 'vue-class-component' import Component from 'vue-class-component'
import { static_data } from '../../db/static_data'
export default class MenuOne extends Vue { export default class MenuOne extends Vue {
@@ -29,7 +30,7 @@ export default class MenuOne extends Vue {
public setParentVisibilityBasedOnRoute(parent) { public setParentVisibilityBasedOnRoute(parent) {
parent.routes.forEach((item) => { parent.routes.forEach((item) => {
if (this.$route.path === item.route) { if (this.$route.path === item.path) {
parent.show = true parent.show = true
return return
} }
@@ -43,4 +44,8 @@ export default class MenuOne extends Vue {
return text return text
} }
get static_data(){
return static_data
}
} }

View File

@@ -3,8 +3,8 @@
<q-list class="rounded-borders text-primary"> <q-list class="rounded-borders text-primary">
<template v-for="(parent, index) in getmenu"> <template v-for="(parent, index) in getmenu">
<!--<div class="q-list-header">{{replaceUnderlineToSpace(index)}}</div>--> <!--<div class="q-list-header">{{replaceUnderlineToSpace(index)}}</div>-->
<div v-for="myitemmenu in parent.routes"> <div v-for="myitemmenu in static_data.routes">
<div v-if="!!myitemmenu.routes2"> <div v-if="!!myitemmenu.routes2 && myitemmenu.inmenu">
<q-expansion-item <q-expansion-item
:header-inset-level="myitemmenu.level_parent" :header-inset-level="myitemmenu.level_parent"
:content-inset-level="myitemmenu.level_parent" :content-inset-level="myitemmenu.level_parent"
@@ -16,7 +16,7 @@
<q-expansion-item v-for="(child2, index) in myitemmenu.routes2" <q-expansion-item v-for="(child2, index) in myitemmenu.routes2"
:key="index" :key="index"
:to="child2.route" :to="child2.path"
:header-inset-level="child2.level_child" :header-inset-level="child2.level_child"
:duration="300" :duration="300"
:icon="child2.materialIcon" :icon="child2.materialIcon"
@@ -26,7 +26,7 @@
:label="getLabelByItem(child2)"> :label="getLabelByItem(child2)">
<q-expansion-item v-if="!!child2.routes2" v-for="(child3, index) in child2.routes2" <q-expansion-item v-if="!!child2.routes2" v-for="(child3, index) in child2.routes2"
:key="index" :key="index"
:to="child3.route" :to="child3.path"
:header-inset-level="child3.level_child" :header-inset-level="child3.level_child"
:duration="300" :duration="300"
:icon="child3.materialIcon" :icon="child3.materialIcon"
@@ -42,18 +42,19 @@
</q-expansion-item> </q-expansion-item>
</div> </div>
<div v-else> <div v-else>
<q-slide-transition :duration=200> <div v-if="myitemmenu.inmenu && !myitemmenu.submenu">
<div v-show="true"> <q-slide-transition :duration=200>
<q-expansion-item <div v-show="true">
:to="myitemmenu.route" <q-expansion-item
:header-inset-level="myitemmenu.level_parent" :to="myitemmenu.path"
:content-inset-level="myitemmenu.level_parent" :header-inset-level="myitemmenu.level_parent"
:label="getLabelByItem(myitemmenu)" :content-inset-level="myitemmenu.level_parent"
:icon="myitemmenu.materialIcon" :label="getLabelByItem(myitemmenu)"
expand-icon="none" :icon="myitemmenu.materialIcon"
header-class="my-menu" expand-icon="none"
active-class="my-menu-active"> header-class="my-menu"
</q-expansion-item> active-class="my-menu-active">
</q-expansion-item>
<!-- <!--
@@ -72,8 +73,9 @@
</q-item-section> </q-item-section>
</q-item> </q-item>
--> -->
</div> </div>
</q-slide-transition> </q-slide-transition>
</div>
</div> </div>
</div> </div>
</template> </template>

View File

@@ -1,4 +1,5 @@
import { IAction } from '@src/model/Projects' import { IAction } from '@src/model/Projects'
import { Component } from 'vue-router/types/router'
export interface IPost { export interface IPost {
title: string title: string
@@ -72,12 +73,42 @@ export interface IMenuList {
} }
export interface IListRoutes { export interface IListRoutes {
route: string path: string
faIcon?: string
materialIcon?: string
name: string name: string
materialIcon?: string
component?: Component
reqauth?: boolean
inmenu?: boolean
submenu?: boolean
// ------------------------
faIcon?: string
text?: string text?: string
routes2?: IListRoutes[] routes2?: IListRoutes[]
level_parent?: number level_parent?: number
level_child?: number level_child?: number
} }
export interface IPerson {
index?: number
tab?: string
name: string
sub1: string
sub2?: string
sub3?: string
img: string
cell?: string
email?: string
paginaweb?: string
paginafb?: string
intro?: string
info?: string
vario?: string
}
export interface ILang {
label: string
icon: string
value: string
image: string
short: string
}

View File

@@ -1,4 +1,4 @@
import msg_website from './i18n_website' import msg_website from '../db/i18n_website'
const msgglobal = { const msgglobal = {
it: { it: {
@@ -44,6 +44,7 @@ const msgglobal = {
loggati: 'Utente non loggato' loggati: 'Utente non loggato'
}, },
reg: { reg: {
page_title: 'Registrazione',
incorso: 'Registrazione in corso...', incorso: 'Registrazione in corso...',
richiesto: 'Campo Richiesto', richiesto: 'Campo Richiesto',
email: 'Email', email: 'Email',
@@ -79,6 +80,7 @@ const msgglobal = {
} }
}, },
login: { login: {
page_title: 'Login',
incorso: 'Login in corso', incorso: 'Login in corso',
enter: 'Login', enter: 'Login',
errato: "Username o password errata. Riprovare", errato: "Username o password errata. Riprovare",
@@ -218,6 +220,7 @@ const msgglobal = {
loggati: 'Usuario no ha iniciado sesión' loggati: 'Usuario no ha iniciado sesión'
}, },
reg: { reg: {
page_title: 'Registro',
incorso: 'Registro en curso...', incorso: 'Registro en curso...',
richiesto: 'Campo requerido', richiesto: 'Campo requerido',
email: 'Email', email: 'Email',
@@ -246,6 +249,7 @@ const msgglobal = {
} }
}, },
login: { login: {
page_title: 'Login',
incorso: 'Login en curso', incorso: 'Login en curso',
enter: 'Entra', enter: 'Entra',
errato: "Nombre de usuario, correo o contraseña incorrectos. inténtelo de nuevo", errato: "Nombre de usuario, correo o contraseña incorrectos. inténtelo de nuevo",
@@ -343,6 +347,175 @@ const msgglobal = {
submitted: 'Subscrito' submitted: 'Subscrito'
} }
}, },
fr: {
dialog: {
ok: 'Bien',
yes: 'Oui',
no: 'Non',
delete: 'Supprimer',
cancel: 'annuler',
today: 'Aujourd\'hui',
msg: {
titledeleteTask: 'Supprimer la tâche',
deleteTask: 'Voulez-vous supprimer {mytodo}?'
}
},
comp: {
Conta: "Conta",
},
components: {
authentication: {
login: {
facebook: 'Facebook'
},
email_verification: {
title: 'Créer un compte',
introduce_email: 'entrez votre adresse email',
email: 'Email',
invalid_email: 'Votre email n\'est pas valide',
verify_email: 'Vérifiez votre email',
go_login: 'Retour à la connexion',
incorrect_input: 'Entrée correcte.',
link_sent: 'Pour confirmer lenregistrement, lisez votre boîte aux lettres et cliquez sur "Vérifier le courrier électronique".".\n' + 'Si vous ne le trouvez pas, regardez dans le dossier Spam.'
}
}
},
fetch: {
errore_generico: 'Erreur générique',
errore_server: 'Le serveur n\'est pas accessible. Essayez encore, Merci',
error_doppiologin: 'Re-connexion Accès ouvert par un autre appareil.',
},
user: {
notregistered: 'Vous devez vous inscrire auprès du service avant de pouvoir stocker les données.',
loggati: 'L\'utilisateur n\'est pas connecté'
},
reg: {
incorso: 'Inscription en cours...',
richiesto: 'Champ obligatoire',
email: 'Email',
username: 'Nom d\'utilisateur',
username_login: 'Nom d\'utilisateur ou email',
password: 'mot de passe',
repeatPassword: 'Répéter le mot de passe',
terms: "J'accepte les termes et conditions",
submit: "S'inscrire",
title_verif_reg: "Vérifier l'inscription",
verificato: "Vérifié",
non_verificato: "Non vérifié",
forgetpassword: "Vous avez oublié votre mot de passe?",
err: {
required: 'c\'est nécessaire',
email: 'Ce doit être un email valide.',
errore_generico: 'S\'il vous plaît remplir les champs correctement',
atleast: 'ça doit être au moins long',
complexity: 'doit contenir au moins 1 minuscule, 1 majuscule et 1 chiffre',
notmore: 'il ne doit pas être plus long que',
char: 'caractères',
terms: 'Vous devez accepter les conditions, pour continuer..',
duplicate_email: 'L\'email a déjà été enregistré',
duplicate_username: 'Le nom d\'utilisateur a déjà été utilisé',
sameaspassword: 'Les mots de passe doivent être identiques',
}
},
login: {
page_title: 'Login',
incorso: 'Connexion en cours',
enter: 'Entrez',
errato: "Nom d'utilisateur, email ou mot de passe incorrect. réessayer",
completato: 'Connexion faite!',
},
reset: {
title_reset_pwd: "Réinitialiser votre mot de passe",
send_reset_pwd: 'Envoyer un mot de passe de réinitialisation',
incorso: 'Demander un nouvel email...',
email_sent: 'Email envoyé',
check_email: 'Vérifiez votre email, vous recevrez un message avec un lien pour réinitialiser votre mot de passe. Ce lien, pour des raisons de sécurité, expirera au bout de 4 heures.',
title_update_pwd: 'Mettez à jour votre mot de passe',
update_password: 'Mettre à jour le mot de passe',
},
logout: {
uscito: 'Vous êtes déconnecté',
},
errors: {
graphql: {
undefined: 'non défini'
}
},
todo: {
titleprioritymenu: 'Prioridad:',
inserttop: 'Ingrese una nueva Tarea arriba',
insertbottom: 'Ingrese una nueva Tarea abajo',
edit: 'Descripción Tarea:',
completed: 'Ultimos Completados',
usernotdefined: 'Atención, debes iniciar sesión para agregar una Tarea',
start_date: 'Fecha inicio',
status: 'Estado',
completed_at: 'Fecha de finalización',
expiring_at: 'Fecha de Caducidad',
phase: 'Fase',
},
notification: {
status: 'Etat',
ask: 'Activer les notifications',
waitingconfirm: 'Confirmer la demande de notification.',
confirmed: 'Notifications activées!',
denied: 'Notifications désactivées! Attention, vous ne verrez pas les messages arriver. Réhabilitez-les pour les voir.',
titlegranted: 'Notifications activées activées!',
statusnot: 'Notifications d\'état',
titledenied: 'Notifications autorisées désactivées!',
title_subscribed: 'Abonnement au Site Web!',
subscribed: 'Maintenant, vous pouvez recevoir des messages et des notifications.',
newVersionAvailable: 'Mise à jour'
},
connection: 'Connexion',
proj: {
newproj: 'Título Projecto',
newsubproj: 'Título Sub-Projecto',
insertbottom: 'Añadir nuevo Proyecto',
longdescr: 'Descripción',
hoursplanned: 'Horas Estimadas',
hoursleft: 'Horas Restantes',
hoursadded: 'Horas Adicional',
hoursworked: 'Horas Trabajadas',
begin_development: 'Comienzo desarrollo',
begin_test: 'Comienzo Prueba',
progresstask: 'Progresion',
actualphase: 'Fase Actual',
hoursweeky_plannedtowork: 'Horarios semanales programados',
endwork_estimate: 'Fecha estimada de finalización',
privacyread: 'Quien puede verlo:',
privacywrite: 'Quien puede modificarlo:',
totalphases: 'Fases totales',
themecolor: 'Tema Colores',
themebgcolor: 'Tema Colores Fondo'
},
cal: {
starttime: 'Accueil',
endtime: 'fin',
duration: 'Durée',
hours: 'Le temps',
when: 'Quand',
where: 'Où',
teacher: 'Avec',
enterdate: 'Entrez la date',
details: 'Les détails',
infoextra: 'Extras Date et heure:',
alldayevent: 'Toute la journée',
eventstartdatetime: 'Date de début et heure de l\'événement',
enterEndDateTime: 'Date et heure de l\'événement final'
},
newsletter: {
name: 'Ton nom',
namehint: 'Nom et prénom',
email: 'votre e-mail',
submit: 'S\'abonner',
reset: 'Redémarrer',
typesomething: 'Remplir le champ',
acceptlicense: 'J\'accepte la licence et les termes',
license: 'Vous devez d\'abord accepter la licence et les termes',
submitted: 'Abonné'
}
},
'enUs': { 'enUs': {
dialog: { dialog: {
ok: 'Ok', ok: 'Ok',
@@ -511,30 +684,215 @@ const msgglobal = {
submitted: 'Subscribed' submitted: 'Subscribed'
} }
}, },
de: {
dialog: {
ok: 'Ok',
yes: 'Yes',
no: 'No',
delete: 'Delete',
cancel: 'Cancel',
today: 'Today',
msg: {
titledeleteTask: 'Delete Task',
deleteTask: 'Delete Task {mytodo}?'
}
},
comp: {
Conta: "Count",
},
components: {
authentication: {
login: {
facebook: 'Facebook'
},
email_verification: {
title: 'Begin your registration',
introduce_email: 'Enter your email',
email: 'Email',
invalid_email: 'Your email is invalid',
verify_email: 'Verify your email',
go_login: 'Back to Login',
incorrect_input: 'Incorrect input.',
link_sent: 'To confirm the Registration, read your mailbox and click on "Verify email".\nIf you can not find it check your junk mail or spam.'
}
}
},
fetch: {
errore_generico: 'Generic Error',
errore_server: 'Unable to access to the Server. Retry. Thank you.',
error_doppiologin: 'Signup again. Another access was made with another device.',
},
user: {
notregistered: 'You need first to SignUp before storing data',
loggati: 'User not logged in'
},
reg: {
page_title: 'Registration',
incorso: 'Registration please wait...',
richiesto: 'Field Required',
email: 'Email',
username_login: 'Username or email',
username: 'Username',
password: 'Password',
repeatPassword: 'Repeat password',
terms: "I agree with the terms and conditions",
submit: "Submit",
title_verif_reg: "Verify Registration",
verificato: "Verified",
non_verificato: "Not Verified",
forgetpassword: "Forget Password?",
err: {
required: 'is required',
email: 'must be a valid email',
errore_generico: 'Please review fields again',
atleast: 'must be at least',
complexity: 'must contains at least 1 lowercase letter, 1 uppercase letter, and 1 digit',
notmore: 'must not be more than',
char: 'characters long',
terms: 'You need to agree with the terms & conditions.',
duplicate_email: 'Email was already registered',
duplicate_username: 'Username is already taken',
sameaspassword: 'Passwords must be identical',
}
},
login: {
page_title: 'Login',
incorso: 'Login...',
enter: 'Login',
errato: "Username or password wrong. Please retry again",
completato: 'Login successfully!',
},
reset: {
title_reset_pwd: "Reset your Password",
send_reset_pwd: 'Send password request',
incorso: 'Request New Email...',
email_sent: 'Email sent',
check_email: 'Check your email for a message with a link to update your password. This link will expire in 4 hours for security reasons.',
title_update_pwd: 'Update your password',
update_password: 'Update Password',
},
logout: {
uscito: 'Logout successfully',
},
errors: {
graphql: {
undefined: 'undefined'
}
},
todo: {
titleprioritymenu: 'Priority:',
inserttop: 'Insert Task at the top',
insertbottom: 'Insert Task at the bottom',
edit: 'Task Description:',
completed: 'Lasts Completed',
usernotdefined: 'Attention, you need to be Signed In to add a new Task',
start_date: 'Start Date',
status: 'Status',
completed_at: 'Completition Date',
expiring_at: 'Expiring Date',
phase: 'Phase',
},
notification: {
status: 'Status',
ask: 'Enable Notification',
waitingconfirm: 'Confirm the Request Notification',
confirmed: 'Notifications Enabled!',
denied: 'Notifications Disabled! Attention, you will not see your messages incoming. Reenable it for see it',
titlegranted: 'Notification Permission Granted!',
statusnot: 'status Notification',
titledenied: 'Notification Permission Denied!',
title_subscribed: 'Subscribed to FreePlanet.app!',
subscribed: 'You can now receive Notification and Messages.',
newVersionAvailable: 'Upgrade'
},
connection: 'Conexión',
proj: {
newproj: 'Project Title',
newsubproj: 'SubProject Title',
insertbottom: 'Insert New Project',
longdescr: 'Description',
hoursplanned: 'Estimated Hours',
hoursleft: 'Left Hours',
hoursadded: 'Additional Hours',
hoursworked: 'Worked Hours',
begin_development: 'Start Dev',
begin_test: 'Start Test',
progresstask: 'Progression',
actualphase: 'Actual Phase',
hoursweeky_plannedtowork: 'Scheduled weekly hours',
endwork_estimate: 'Estimated completion date',
privacyread: 'Who can see it:',
privacywrite: 'Who can modify if:',
totalphases: 'Total Phase',
themecolor: 'Theme Color',
themebgcolor: 'Theme Color Background'
},
cal: {
starttime: 'From',
endtime: 'to',
duration: 'Duration',
hours: 'Hours',
when: 'When',
where: 'Where',
teacher: 'With',
enterdate: 'Enter date',
details: 'Details',
infoextra: 'Extra Info DateTime',
alldayevent: 'All-Day event',
eventstartdatetime: 'Event start date and time',
enterEndDateTime: 'Event end date and time'
},
newsletter: {
name: 'Your name',
namehint: 'Name and surname',
email: 'Your email',
submit: 'Subscribe',
reset: 'Reset',
typesomething: 'Please type something',
acceptlicense: 'I accept the license and terms',
license: 'You need to accept the license and terms first',
submitted: 'Subscribed'
}
},
}; };
const msgit = { ...msg_website.it, ...msgglobal.it } const msgit = { ...msg_website.it, ...msgglobal.it }
const msgde = { ...msg_website.de, ...msgglobal.de }
const msgfr = { ...msg_website.fr, ...msgglobal.fr }
const msges = { ...msg_website.es, ...msgglobal.es } const msges = { ...msg_website.es, ...msgglobal.es }
const msgenUs = { ...msg_website.enUs, ...msgglobal.enUs } const msgenUs = { ...msg_website.enUs, ...msgglobal.enUs }
const messages = { const messages = {
it: { ...msgit, it: {
...msges,
pages: { ...msg_website.it.pages, ...msgglobal.it.pages }, pages: { ...msg_website.it.pages, ...msgglobal.it.pages },
msg: { ...msg_website.it.msg, ...msgglobal.it.msg }, msg: { ...msg_website.it.msg, ...msgglobal.it.msg },
homepage: { ...msg_website.it.homepage, ...msgglobal.it.homepage }, homepage: { ...msg_website.it.homepage, ...msgglobal.it.homepage }
}, },
es: { ...msges , es: {
...msges,
pages: { ...msg_website.es.pages, ...msgglobal.es.pages }, pages: { ...msg_website.es.pages, ...msgglobal.es.pages },
msg: { ...msg_website.es.msg, ...msgglobal.es.msg }, msg: { ...msg_website.es.msg, ...msgglobal.es.msg },
homepage: { ...msg_website.es.homepage, ...msgglobal.es.homepage } homepage: { ...msg_website.es.homepage, ...msgglobal.es.homepage }
}, },
enUs: { ...msgenUs , enUs: {
...msgenUs,
pages: { ...msg_website.enUs.pages, ...msgglobal.enUs.pages }, pages: { ...msg_website.enUs.pages, ...msgglobal.enUs.pages },
msg: { ...msg_website.enUs.msg, ...msgglobal.enUs.msg }, msg: { ...msg_website.enUs.msg, ...msgglobal.enUs.msg },
homepage: { ...msg_website.enUs.homepage, ...msgglobal.enUs.homepage } homepage: { ...msg_website.enUs.homepage, ...msgglobal.enUs.homepage }
}, },
fr: {
...msgfr,
pages: { ...msg_website.fr.pages, ...msgglobal.fr.pages },
msg: { ...msg_website.fr.msg, ...msgglobal.fr.msg },
homepage: { ...msg_website.fr.homepage, ...msgglobal.fr.homepage },
},
de: {
...msgde,
pages: { ...msg_website.de.pages, ...msgglobal.de.pages },
msg: { ...msg_website.de.msg, ...msgglobal.de.msg },
homepage: { ...msg_website.de.homepage, ...msgglobal.de.homepage },
}
} }
export default messages; export default messages;

View File

@@ -10,6 +10,7 @@ import translate from '@src/globalroutines/util'
import { RouteNames } from '@src/router/route-names' import { RouteNames } from '@src/router/route-names'
import { lists } from './lists' import { lists } from './lists'
import { static_data } from '@src/db/static_data'
export interface INotify { export interface INotify {
color?: string | 'primary' color?: string | 'primary'
@@ -39,8 +40,6 @@ export const tools = {
languageid: 5, languageid: 5,
arrLangUsed: ['enUs', 'it', 'es'],
SERVKEY_VERS: 'vers', SERVKEY_VERS: 'vers',
localStorage: { localStorage: {
@@ -1322,10 +1321,16 @@ export const tools = {
if ((mylang.toLowerCase() === 'es') || (mylang.toLowerCase() === 'es-es') || (mylang.toLowerCase() === 'eses')) { if ((mylang.toLowerCase() === 'es') || (mylang.toLowerCase() === 'es-es') || (mylang.toLowerCase() === 'eses')) {
mylang = 'es' mylang = 'es'
} }
if ((mylang.toLowerCase() === 'fr') || (mylang.toLowerCase() === 'fr-fr') || (mylang.toLowerCase() === 'frfr')) {
mylang = 'fr'
}
if ((mylang.toLowerCase() === 'it') || (mylang.toLowerCase() === 'it-it') || (mylang.toLowerCase() === 'itit')) {
mylang = 'it'
}
if (!(tools.arrLangUsed.includes(mylang))) { if (!(static_data.arrLangUsed.includes(mylang))) {
console.log('non incluso ', mylang) console.log('non incluso ', mylang)
mylang = tools.arrLangUsed[0] mylang = static_data.arrLangUsed[0]
// Metti Inglese come default // Metti Inglese come default
UserStore.mutations.setlang(mylang) UserStore.mutations.setlang(mylang)
@@ -1590,26 +1595,26 @@ export const tools = {
return '/' + tipoproj + '/' return '/' + tipoproj + '/'
}, },
convertMenuListInListRoutes(arrlista: IMenuList[]) { // convertMenuListInListRoutes(arrlista: IMenuList[]) {
const lista = [] // const lista = []
if (arrlista === undefined) // if (arrlista === undefined)
return lista // return lista
for (const elem of arrlista) { // for (const elem of arrlista) {
const item: IListRoutes = { // const item: IListRoutes = {
faIcon: 'fa fa-list-alt', // faIcon: 'fa fa-list-alt',
materialIcon: elem.icon, // materialIcon: elem.icon,
name: elem.nametranslate, // name: elem.nametranslate,
text: elem.description, // text: elem.description,
route: tools.getUrlByTipoProj(false, elem.urlroute) + elem.idelem, // path: tools.getUrlByTipoProj(false, elem.urlroute) + elem.idelem,
routes2: tools.convertMenuListInListRoutes(elem.routes2), // routes2: tools.convertMenuListInListRoutes(elem.routes2),
level_parent: elem.level_parent, // level_parent: elem.level_parent,
level_child: elem.level_child // level_child: elem.level_child
//
} // }
lista.push(item) // lista.push(item)
} // }
return lista // return lista
}, // },
getprivacyreadbytipoproj(tipoproj) { getprivacyreadbytipoproj(tipoproj) {
if (tipoproj === RouteNames.myprojects) if (tipoproj === RouteNames.myprojects)

View File

@@ -9,7 +9,7 @@ import { IProgressState } from '@types'
export interface RootState { export interface RootState {
GlobalModule: IGlobalState GlobalModule: IGlobalState
route: Route path: Route
} }
Vue.use(Vuex) Vue.use(Vuex)