From 35b360bf9ac209a7541f665c8b6c66fe25835cba Mon Sep 17 00:00:00 2001 From: Paolo Arena Date: Wed, 16 Oct 2019 15:27:49 +0200 Subject: [PATCH] - Booking not available if is in the past - Delete record only if "Active Edit" is on - Image stretch width reduced. - Signin more dense --- .../CEventsCalendar/CEventsCalendar.ts | 13 ++++ .../CEventsCalendar/CEventsCalendar.vue | 6 +- src/components/CGridTableRec/CGridTableRec.ts | 32 +++++++++- .../CGridTableRec/CGridTableRec.vue | 21 ++++--- src/components/CImgText/CImgText.scss | 1 + src/components/CSignIn/CSignIn.vue | 27 ++++---- src/components/Header/Header.ts | 3 +- src/components/Header/Header.vue | 12 ++-- src/components/index.ts | 1 + src/model/GlobalStore.ts | 3 + src/statics/i18n.js | 50 +++++++++------ .../Modules/Store/calendar/CalendarStore.ts | 2 +- src/store/Modules/UserStore.ts | 4 ++ src/store/Modules/tools.ts | 61 ++++++++++++------- 14 files changed, 160 insertions(+), 76 deletions(-) diff --git a/src/components/CEventsCalendar/CEventsCalendar.ts b/src/components/CEventsCalendar/CEventsCalendar.ts index dece984..f125114 100644 --- a/src/components/CEventsCalendar/CEventsCalendar.ts +++ b/src/components/CEventsCalendar/CEventsCalendar.ts @@ -858,4 +858,17 @@ export default class CEventsCalendar extends Vue { get mythis() { return this } + + public isEventEnabled(myevent) { + // check if event is in the past + const datenow = tools.addDays(tools.getDateNow(), -1) + + let dateEvent = new Date(myevent.date + ' 00:00:00') + + if (myevent.days) { + dateEvent = tools.addDays(dateEvent, myevent.days) + } + + return (dateEvent >= datenow) + } } diff --git a/src/components/CEventsCalendar/CEventsCalendar.vue b/src/components/CEventsCalendar/CEventsCalendar.vue index 4d4da07..9817f5a 100644 --- a/src/components/CEventsCalendar/CEventsCalendar.vue +++ b/src/components/CEventsCalendar/CEventsCalendar.vue @@ -90,7 +90,7 @@ $t(' @@ -258,7 +258,7 @@ $t('
- +
@@ -550,7 +550,7 @@ $t(' + :label="$t('cal.booking')" :disable="!isEventEnabled(event)"> { - if (elem.field) + if (elem.field !== '') this.colVisib.push(elem.field) + + if (elem.visible && elem.field === '') + this.colExtra.push(elem.name) + }) } @@ -253,7 +260,8 @@ export default class CGridTableRec extends Vue { public mounted() { this.mycolumns.forEach((rec: IColGridTable) => { - rec.label = this.$t(rec.label_trans) + if (rec.label_trans) + rec.label = this.$t(rec.label_trans) }) this.onRequest({ @@ -274,4 +282,24 @@ export default class CGridTableRec extends Vue { } } + public visCol(col) { + if (col.visuonlyEditVal) { + if (this.canEdit) { + return col.visuonlyEditVal + } else { + return false + } + } else { + return true + } + } + + public visuValByType(col, val) { + if (col.isdate) { + return tools.getstrDateTime(val) + } else { + return val + } + } + } diff --git a/src/components/CGridTableRec/CGridTableRec.vue b/src/components/CGridTableRec/CGridTableRec.vue index 0349664..e96a05c 100644 --- a/src/components/CGridTableRec/CGridTableRec.vue +++ b/src/components/CGridTableRec/CGridTableRec.vue @@ -10,6 +10,8 @@ @request="onRequest" binary-state-sort :visible-columns="colVisib" + :no-data-label="nodataLabel" + :no-results-label="noresultLabel" > @@ -20,7 +22,7 @@ v-if="colVisib.includes(col.field)" :key="col.name" :props="props" - class="text-italic text-red text-weight-bold" + class="text-italic text-weight-bold" > {{ col.label }} @@ -45,7 +47,7 @@ borderless dense options-dense - display-value="Colonne" + :display-value="$t('grid.columns')" emit-value map-options :options="mycolumns" @@ -57,14 +59,9 @@ - -
- -
-
- {{ props.row[col.name] }} +
+ {{ visuValByType(col, props.row[col.name]) }} @@ -73,6 +70,12 @@
+ +
+ +
+
- - + + + + + + +
- {{$t('login.enter')}}
- {{$t('reg.submit')}} + {{$t('reg.submit')}}
diff --git a/src/components/Header/Header.ts b/src/components/Header/Header.ts index fa3a853..ecc3f77 100644 --- a/src/components/Header/Header.ts +++ b/src/components/Header/Header.ts @@ -7,7 +7,7 @@ import { CSignIn } from '../../components/CSignIn' import { GlobalStore, UserStore } from '@modules' // import { StateConnection } from '../../model' -import { Watch } from 'vue-property-decorator' +import { Prop, Watch } from 'vue-property-decorator' import { tools } from '../../store/Modules/tools' import { toolsext } from '@src/store/Modules/toolsext' @@ -24,6 +24,7 @@ import globalroutines from '../../globalroutines' }) export default class Header extends Vue { + @Prop({ required: false, default: '' }) public extraContent: string public $t public $v public $q diff --git a/src/components/Header/Header.vue b/src/components/Header/Header.vue index 16a4539..ba57bbe 100644 --- a/src/components/Header/Header.vue +++ b/src/components/Header/Header.vue @@ -108,7 +108,7 @@ @click="right = !right"> + icon="img:statics/images/avatar/avatar3_small.png" @click="right = !right"> @@ -136,12 +136,13 @@
- + -
{{ Username }} - {{ myName }} [Admin] [Manager]
+
{{ Username }} - {{ myName }} [Admin] [Manager]
{{ $t('user.loggati') }}
@@ -172,8 +173,11 @@
-
+


+ + +
diff --git a/src/components/index.ts b/src/components/index.ts index 6284742..f9b2c6b 100644 --- a/src/components/index.ts +++ b/src/components/index.ts @@ -17,3 +17,4 @@ export * from './BannerCookies' export * from './PagePolicy' export * from './FormNewsletter' export * from './CGridTableRec' +export * from './Shen/CTesseraElettronica' diff --git a/src/model/GlobalStore.ts b/src/model/GlobalStore.ts index 3be0c98..f15afad 100644 --- a/src/model/GlobalStore.ts +++ b/src/model/GlobalStore.ts @@ -222,6 +222,9 @@ export interface IColGridTable { sortable?: boolean disable?: boolean titlepopupedit?: string + visible?: boolean icon?: string action?: any + foredit?: boolean + isdate?: boolean } diff --git a/src/statics/i18n.js b/src/statics/i18n.js index 0a49e6f..54aef51 100644 --- a/src/statics/i18n.js +++ b/src/statics/i18n.js @@ -4,12 +4,13 @@ const msgglobal = { it: { grid: { editvalues: 'Modifica Valori', - showprevedit: 'Mostra Eventi Passati' + showprevedit: 'Mostra Eventi Passati', + columns: 'Colonne', }, otherpages: { admin : { menu: 'Amministrazione', - eventlist: 'Prenotazioni', + eventlist: 'Le tue Prenotazioni', usereventlist: 'Prenotazioni Utenti', userlist: 'Lista Utenti', }, @@ -59,7 +60,7 @@ const msgglobal = { verify_email: 'Verifica la tua email', go_login: 'Torna al Login', incorrect_input: 'Inserimento incorretto.', - link_sent: 'Per confermare la Registrazione, leggi la tua casella di posta e Clicca su "Verifica Email".\nSe non la trovi, cerca nella cartella Spam.' + link_sent: 'Ora leggi la tua email e conferma la registrazione' } } }, @@ -96,7 +97,7 @@ const msgglobal = { email: 'inserire una email valida', errore_generico: 'Si prega di compilare correttamente i campi', atleast: 'dev\'essere lungo almeno di', - complexity: 'deve contenere almeno 1 minuscola, 1 maiuscola e 1 cifra', + complexity: 'deve contenere almeno 1 minuscola, 1 maiuscola, 1 cifra e 1 carattere speciale', notmore: 'non dev\'essere lungo più di', char: 'caratteri', terms: 'Devi accettare le condizioni, per continuare.', @@ -214,6 +215,7 @@ const msgglobal = { bookingtextdefault_of: 'di', data: 'Data', teachertitle: 'Insegnante', + peoplebooked: 'Prenotaz.', }, newsletter: { title: 'Desideri ricevere la nostra Newsletter?', @@ -235,12 +237,13 @@ const msgglobal = { es: { grid: { editvalues: 'Cambiar valores', - showprevedit: 'Mostrar eventos pasados' + showprevedit: 'Mostrar eventos pasados', + columns: 'Columnas', }, otherpages: { admin : { menu: 'Administración', - eventlist: 'Reserva', + eventlist: 'Sus Reservas', usereventlist: 'Reserva Usuarios', userlist: 'Lista de usuarios', }, @@ -290,7 +293,7 @@ const msgglobal = { verify_email: 'Revisa tu email', go_login: 'Vuelve al Login', incorrect_input: 'Entrada correcta.', - link_sent: 'Para confirmar el registro, lea su buzón y haga clic en "Verificar correo electrónico".\n' + 'Si no lo encuentras, busca en la carpeta Spam.' + link_sent: 'Ahora lea su correo electrónico y confirme el registro' } } }, @@ -327,7 +330,7 @@ const msgglobal = { email: 'Debe ser una email válida.', errore_generico: 'Por favor, rellene los campos correctamente', atleast: 'debe ser al menos largo', - complexity: 'debe contener al menos 1 minúscula, 1 mayúscula y 1 dígito', + complexity: 'debe contener al menos 1 minúscula, 1 mayúscula, 1 dígito y 1 caractér especial', notmore: 'no tiene que ser más largo que', char: 'caracteres', terms: 'Debes aceptar las condiciones, para continuar..', @@ -439,6 +442,7 @@ const msgglobal = { bookingtextdefault_of: 'de', data: 'Fecha', teachertitle: 'Maestro', + peoplebooked: 'Reserv.', }, newsletter: { title: '¿Desea recibir nuestro boletín informativo?', @@ -460,12 +464,13 @@ const msgglobal = { fr: { grid: { editvalues: 'Changer les valeurs', - showprevedit: 'Afficher les événements passés' + showprevedit: 'Afficher les événements passés', + columns: 'Colonnes', }, otherpages: { admin : { menu: 'Administration', - eventlist: 'Réservation', + eventlist: 'Vos réservations', usereventlist: 'Réservation Utilisateur', userlist: 'Liste d\'utilisateurs', }, @@ -515,7 +520,7 @@ const msgglobal = { verify_email: 'Vérifiez votre email', go_login: 'Retour à la connexion', incorrect_input: 'Entrée correcte.', - link_sent: 'Pour confirmer l’enregistrement, 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.' + link_sent: 'Maintenant, lisez votre email et confirmez votre inscription' } } }, @@ -551,7 +556,7 @@ const msgglobal = { 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', + complexity: 'doit contenir au moins 1 minuscule, 1 majuscule, 1 chiffre et 1 caractère spécial', notmore: 'il ne doit pas être plus long que', char: 'caractères', terms: 'Vous devez accepter les conditions, pour continuer..', @@ -663,6 +668,7 @@ const msgglobal = { bookingtextdefault_of: 'du', data: 'Date', teachertitle: 'Professeur', + peoplebooked: 'Réserv.', }, newsletter: { title: 'Souhaitez-vous recevoir notre newsletter?', @@ -684,12 +690,13 @@ const msgglobal = { enUs: { grid: { editvalues: 'Edit Values', - showprevedit: 'Show Past Events' + showprevedit: 'Show Past Events', + columns: 'Columns', }, otherpages: { admin : { menu: 'Administration', - eventlist: 'Booking', + eventlist: 'Your Booking', usereventlist: 'Users Booking', userlist: 'Users List', }, @@ -739,7 +746,7 @@ const msgglobal = { 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.' + link_sent: 'Now read your email and confirm registration' } } }, @@ -775,7 +782,7 @@ const msgglobal = { 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', + complexity: 'must contains at least 1 lowercase letter, 1 uppercase letter, 1 digit and one special symbol', notmore: 'must not be more than', char: 'characters long', terms: 'You need to agree with the terms & conditions.', @@ -886,6 +893,7 @@ const msgglobal = { bookingtextdefault_of: 'of', data: 'Date', teachertitle: 'Teacher', + peoplebooked: 'Booked', }, newsletter: { title: 'Would you like to receive our Newsletter?', @@ -907,12 +915,13 @@ const msgglobal = { de: { grid: { editvalues: 'Edit Values', - showprevedit: 'Show Past Events' + showprevedit: 'Show Past Events', + columns: 'Columns', }, otherpages: { admin : { menu: 'Administration', - eventlist: 'Booking', + eventlist: 'Your Booking', usereventlist: 'Users Booking', userlist: 'Users List', }, @@ -962,7 +971,7 @@ const msgglobal = { 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.' + link_sent: 'Now read your email and confirm registration' } } }, @@ -999,7 +1008,7 @@ const msgglobal = { 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', + complexity: 'must contains at least 1 lowercase letter, 1 uppercase letter, 1 digit and one special symbol', notmore: 'must not be more than', char: 'characters long', terms: 'You need to agree with the terms & conditions.', @@ -1111,6 +1120,7 @@ const msgglobal = { bookingtextdefault_of: 'of', data: 'Date', teachertitle: 'Teacher', + peoplebooked: 'Booked', }, newsletter: { title: 'Would you like to receive our Newsletter?', diff --git a/src/store/Modules/Store/calendar/CalendarStore.ts b/src/store/Modules/Store/calendar/CalendarStore.ts index 0cc40c7..3da9a8f 100644 --- a/src/store/Modules/Store/calendar/CalendarStore.ts +++ b/src/store/Modules/Store/calendar/CalendarStore.ts @@ -105,7 +105,7 @@ namespace Actions { let ris = null - const showall = UserStore.state.isAdmin ? '1' : '0' + const showall = UserStore.state.isAdmin || UserStore.state.isManager ? '1' : '0' ris = await Api.SendReq('/booking/' + UserStore.state.userId + '/' + process.env.APP_ID + '/' + showall, 'GET', null) .then((res) => { diff --git a/src/store/Modules/UserStore.ts b/src/store/Modules/UserStore.ts index 27910fd..a0ff41d 100644 --- a/src/store/Modules/UserStore.ts +++ b/src/store/Modules/UserStore.ts @@ -112,6 +112,10 @@ namespace Getters { }, 'IsMyGroup') const getUserByUserId = b.read((mystate: IUserState) => (userId): IUserState => { + // Check if is this User! + if (state.userId === userId) + return state + return mystate.usersList.find((item) => item._id === userId) }, 'getUserByUserId') diff --git a/src/store/Modules/tools.ts b/src/store/Modules/tools.ts index 1c8f52a..904a5dc 100644 --- a/src/store/Modules/tools.ts +++ b/src/store/Modules/tools.ts @@ -1317,7 +1317,10 @@ export const tools = { executefunc(myself: any, table, func: number, par: IParamDialog) { if (func === lists.MenuAction.DELETE) { console.log('param1', par.param1) - CalendarStore.actions.CancelBookingEvent({ideventbook: par.param1, notify: par.param2 === true ? '1' : '0'}).then((ris) => { + CalendarStore.actions.CancelBookingEvent({ + ideventbook: par.param1, + notify: par.param2 === true ? '1' : '0' + }).then((ris) => { if (ris) { tools.showPositiveNotif(myself.$q, myself.$t('cal.canceledbooking') + ' "' + par.param1.title + '"') if (myself.bookEventpage) @@ -1327,7 +1330,7 @@ export const tools = { }) } else if (func === lists.MenuAction.DELETE_RECTABLE) { console.log('param1', par.param1) - GlobalStore.actions.DeleteRec({table, id: par.param1}).then((ris) => { + GlobalStore.actions.DeleteRec({ table, id: par.param1 }).then((ris) => { if (ris) { myself.ActionAfterYes(func, par.param2) tools.showPositiveNotif(myself.$q, myself.$t('db.deletedrecord')) @@ -1622,8 +1625,15 @@ export const tools = { return date.formatDate(mytimestamp, 'DD/MM/YYYY') else return '' - } - , + }, + + getstrDateTime(mytimestamp) { + // console.log('getstrDate', mytimestamp) + if (!!mytimestamp) + return date.formatDate(mytimestamp, 'DD/MM/YYYY HH:MM') + else + return '' + }, getstrMMMDate(mytimestamp) { // console.log('getstrDate', mytimestamp) if (!!mytimestamp) @@ -1825,13 +1835,25 @@ export const tools = { }, heightgallery() { + return tools.heightGallVal().toString() + 'px' + }, + + heightGallVal() { + let maxh2 = 0 + if (Screen.width < 400) { - return '200px' + maxh2 = 350 } else if (Screen.width < 600) { - return '300px' + maxh2 = 400 + } else if (Screen.width < 800) { + maxh2 = 450 + } else if (Screen.width < 1000) { + maxh2 = 500 } else { - return '500px' + maxh2 = 600 } + + return maxh2 }, myheight_imgtitle(myheight?, myheightmobile?) { @@ -1849,18 +1871,7 @@ export const tools = { maxheight = 500 } - let maxh2 = 0 - if (Screen.width < 400) { - maxh2 = 350 - } else if (Screen.width < 600) { - maxh2 = 400 - } else if (Screen.width < 800) { - maxh2 = 450 - } else if (Screen.width < 1000) { - maxh2 = 500 - } else { - maxh2 = 500 - } + const maxh2 = this.heightGallVal() console.log('maxh2', maxh2) console.log('maxheight', maxheight) @@ -2223,7 +2234,7 @@ export const tools = { } else if (riscode === tools.OK) { mythis.$router.push('/signin') tools.showNotif(mythis.$q, mythis.$t('components.authentication.email_verification.link_sent'), { - color: 'warning', + color: 'info', textColor: 'black' }) } else { @@ -2250,11 +2261,17 @@ export const tools = { }, CancelBookingEvent(mythis, eventparam: IEvents, bookeventid: string, notify: boolean) { console.log('CancelBookingEvent ', eventparam) - tools.askConfirm(mythis.$q, translate('cal.titlebooking'), translate('cal.cancelbooking') + ' ' + tools.gettextevent(eventparam) + '?', translate('dialog.yes'), translate('dialog.no'), mythis, '', lists.MenuAction.DELETE, 0, { param1: bookeventid, param2: notify }) + tools.askConfirm(mythis.$q, translate('cal.titlebooking'), translate('cal.cancelbooking') + ' ' + tools.gettextevent(eventparam) + '?', translate('dialog.yes'), translate('dialog.no'), mythis, '', lists.MenuAction.DELETE, 0, { + param1: bookeventid, + param2: notify + }) }, ActionRecTable(mythis, action, table, id, item?) { console.log('CancelRecTable', id) - return tools.askConfirm(mythis.$q, translate('db.deleterecord'), translate('db.deletetherecord'), translate('dialog.yes'), translate('dialog.no'), mythis, table, action, 0, { param1: id, param2: item }) + return tools.askConfirm(mythis.$q, translate('db.deleterecord'), translate('db.deletetherecord'), translate('dialog.yes'), translate('dialog.no'), mythis, table, action, 0, { + param1: id, + param2: item + }) }, isBitActive(bit, whattofind) { return ((bit & whattofind) === whattofind)