Step 2: Creating page Messages: userlist last messages + a page for all the messages received and sent.

This commit is contained in:
Paolo Arena
2019-10-27 00:37:00 +02:00
parent 878ae96813
commit 4f895bdbe2
19 changed files with 407 additions and 159 deletions

View File

@@ -28,10 +28,12 @@ import router from '@router'
import { static_data } from '@src/db/static_data'
import translate from '@src/globalroutines/util'
import { lists } from '../../store/Modules/lists'
import { GlobalStore } from '../../store/Modules'
import { IMessagePage, IMessage, IIdentity } from '../../model'
import { GlobalStore, MessageStore } from '../../store/Modules'
import { IMessagePage, IMessage, IIdentity, MsgDefault } from '../../model'
import MixinUsers from '../../mixins/mixin-users'
@Component({
mixins: [MixinUsers],
name: 'CEventsCalendar',
components: { Logo, Footer, CTitle, CImgText, QDateTimeScroller, QDateScroller, CMySelect, CMyEditor }
})
@@ -370,10 +372,6 @@ export default class CEventsCalendar extends Vue {
}
}
get mythis() {
return this
}
public $refs: {
calendar: any
}
@@ -666,26 +664,17 @@ export default class CEventsCalendar extends Vue {
const data: IMessage = {
source: {
page: '',
event_id: myevent._id,
infoevent: tools.gettextevent(this, myevent)
},
idapp: process.env.APP_ID,
origin: {
idapp: process.env.APP_ID,
username: UserStore.state.username
},
dest: {
idapp: process.env.APP_ID,
username: myevent.teacher
},
read: false,
deleted: false,
message: this.askInfoForm.message,
datemsg: tools.getDateNow()
message: this.askInfoForm.message
}
this.SendMsgEvent(data).then((ris) => {
MessageStore.actions.SendMsgEvent(data).then((ris) => {
self.contextDay = null
if (ris)
tools.showPositiveNotif(self.$q, self.$t('cal.sendmsg_sent'))
@@ -841,10 +830,6 @@ export default class CEventsCalendar extends Vue {
return await CalendarStore.actions.BookEvent(eventparam)
}
public async SendMsgEvent(param: IMessage) {
return await UserStore.actions.SendMsgEvent(param)
}
public isAlreadyBooked(eventparam: IEvents) {
return CalendarStore.getters.findEventBooked(eventparam, true)
}
@@ -880,7 +865,7 @@ export default class CEventsCalendar extends Vue {
public createContribType(value) {
console.log('createContribType', value)
tools.createNewRecord(this, 'contribtype', { label: value }).then((myrec) => {
console.log('myrec')
// console.log('myrec')
CalendarStore.state.contribtype.push(myrec)
})
}
@@ -901,10 +886,6 @@ export default class CEventsCalendar extends Vue {
return myprice
}
public getTeacherName(teacherusername) {
return CalendarStore.getters.getTeacherName(teacherusername)
}
public getWhereIcon(where) {
const whererec = CalendarStore.getters.getWhereRec(where)
return (whererec) ? whererec.whereicon : ''
@@ -915,11 +896,6 @@ export default class CEventsCalendar extends Vue {
return (whererec) ? whererec.placename : ''
}
public getTeacherImg(teacherusername) {
const teacher = CalendarStore.getters.getTeacher(teacherusername)
return (teacher) ? teacher.img : ''
}
public badgeClasses(eventparam, type) {
const cssColor = tools.isCssColor(eventparam.bgcolor)
const isHeader = type === 'header'

View File

@@ -39,17 +39,17 @@
<span class="cal__teacher-content">
<q-chip>
<q-avatar>
<img :src="`../../statics/images/` + getTeacherImg(myevent.teacher)">
<img :src="`../../statics/images/` + getImgByUsername(myevent.teacher)">
</q-avatar>
<span class="cal__teacher-content">{{getTeacherName(myevent.teacher)}}</span>
<span class="cal__teacher-content">{{getUserByUsername(myevent.teacher)}}</span>
</q-chip>
<span v-if="getTeacherImg(myevent.teacher2) && myevent.teacher2"
<span v-if="getImgByUsername(myevent.teacher2) && myevent.teacher2"
class="margin_avatar2"></span>
<q-chip v-if="getTeacherImg(myevent.teacher2) && myevent.teacher2">
<q-chip v-if="getImgByUsername(myevent.teacher2) && myevent.teacher2">
<q-avatar>
<img :src="`../../statics/images/` + getTeacherImg(myevent.teacher2)">
<img :src="`../../statics/images/` + getImgByUsername(myevent.teacher2)">
</q-avatar>
<span class="cal__teacher-content">{{getTeacherName(myevent.teacher2)}}</span>
<span class="cal__teacher-content">{{getUserByUsername(myevent.teacher2)}}</span>
</q-chip>
</span>
</div>
@@ -75,7 +75,7 @@
</div>
<div v-if="myevent.dateTimeStart" class="cal__when">
<span class="cal__where-title">{{$t('cal.when')}}:
<span v-html="tools.getstrDateTimeEvent(mythis, myevent, true)"></span>
<span v-html="tools.getstrDateTimeEvent(mythis(), myevent, true)"></span>
</span>
</div>
<p v-if="myevent.linkpdf" style="margin-top: 10px; text-align: center">
@@ -294,7 +294,7 @@
</q-chip>
<div v-if="myevent.dateTimeStart" class="cal__when">
<span class="cal__where-title">{{$t('cal.when')}}:
<span v-html="tools.getstrDateTimeEvent(mythis, myevent, true)"></span>
<span v-html="tools.getstrDateTimeEvent(mythis(), myevent, true)"></span>
</span>
</div>
<div class="q-pa-xs">
@@ -334,7 +334,7 @@
<q-card-actions align="right">
<q-btn v-if="bookEventpage.state === EState.Modifying" flat :label="$t('cal.cancelbooking')"
color="negative"
@click="tools.CancelBookingEvent(mythis, myevent, bookEventForm._id, true)"></q-btn>
@click="tools.CancelBookingEvent(mythis(), myevent, bookEventForm._id, true)"></q-btn>
<q-btn v-if="checkseinviaMsg" flat :label="$t('dialog.sendonlymsg')" color="primary"
@click="sendMsg(myevent)"></q-btn>
<q-btn v-else flat :label="getTitleBtnBooking" color="primary" @click="saveBookEvent(myevent)"
@@ -370,7 +370,7 @@
</q-chip>
<div v-if="myevent.dateTimeStart" class="cal__when">
<span class="cal__where-title">{{$t('cal.when')}}:
<span v-html="tools.getstrDateTimeEvent(mythis, myevent, true)"></span>
<span v-html="tools.getstrDateTimeEvent(mythis(), myevent, true)"></span>
</span>
</div>
<div class="q-pa-xs">
@@ -560,7 +560,7 @@
</p>
<div class="listaev__date listaev__align_center_mobile">
<span v-html="tools.getstrDateTimeEvent(mythis, event, true)"></span>
<span v-html="tools.getstrDateTimeEvent(mythis(), event, true)"></span>
</div>
<div class="listaev__align_center_mobile">
@@ -600,16 +600,16 @@
<q-chip>
<q-avatar>
<img :src="`../../statics/images/` + getTeacherImg(event.teacher)">
<img :src="`../../statics/images/` + getImgByUsername(event.teacher)">
</q-avatar>
<span class="cal__teacher-content">{{getTeacherName(event.teacher)}}</span>
<span class="cal__teacher-content">{{getUserByUsername(event.teacher)}}</span>
</q-chip>
<span v-if="getTeacherImg(event.teacher2)" class="margin_avatar2"></span>
<q-chip v-if="getTeacherImg(event.teacher2) && event.teacher2">
<span v-if="getImgByUsername(event.teacher2)" class="margin_avatar2"></span>
<q-chip v-if="getImgByUsername(event.teacher2) && event.teacher2">
<q-avatar>
<img :src="`../../statics/images/` + getTeacherImg(event.teacher2)">
<img :src="`../../statics/images/` + getImgByUsername(event.teacher2)">
</q-avatar>
<span class="cal__teacher-content">{{getTeacherName(event.teacher2)}}</span>
<span class="cal__teacher-content">{{getUserByUsername(event.teacher2)}}</span>
</q-chip>
<span v-if="event.wherecode" class="">

View File

@@ -39,7 +39,7 @@
:label="$t('grid.editvalues')"></q-toggle>
<q-btn v-if="mytable" label="Refresh" color="primary" @click="refresh" class="q-mx-sm"></q-btn>
<q-btn v-if="mytable" flat dense color="primary" :disable="loading" label="Add Record"
<q-btn v-if="mytable" flat dense color="primary" :disable="loading || !canEdit" :label="$t('grid.addrecord')"
@click="createNewRecord"></q-btn>
<q-space/>
@@ -77,7 +77,7 @@
<q-inner-loading :showing="spinner_visible">
<q-spinner-gears size="50px" color="primary"/>
<q-spinner-tail size="2em" color="primary"/>
</q-inner-loading>
</template>

View File

@@ -39,7 +39,7 @@ export default class CMySelect extends Vue {
public mounted() {
const rec = this.options.find((myrec) => myrec[`${this.optval}`] === this.value)
console.log('rec', rec)
// console.log('rec', rec)
if (!this.useinput) {
this.myvalue = this.value
} else {
@@ -49,7 +49,7 @@ export default class CMySelect extends Vue {
else
this.myvalue = rec[`${this.optlab}`]
console.log('this.myvalue', this.myvalue, 'this.optval', this.optval, 'rec', rec[`${this.optval}`])
// console.log('this.myvalue', this.myvalue, 'this.optval', this.optval, 'rec', rec[`${this.optval}`])
}
}
}

View File

@@ -9,6 +9,7 @@
v-model.trim="precDescr"
autogrow
borderless
debounce="1000"
:label="getlabeltext"
dense
@focus="getFocus($event)"

View File

@@ -54,6 +54,7 @@
<q-input v-if="viewtaskTop" ref="insertTask" color="blue-12" v-model="todotop" :label="$t('todo.inserttop')"
style="margin-left: 6px;"
debounce="1000"
:after="[{icon: 'arrow_forward', content: true, handler () {}}]"
v-on:keyup.enter="dbInsert(true)">
<template v-slot:prepend>
@@ -116,9 +117,12 @@
<q-input v-if="(TodosCount > 0 || !viewtaskTop) && CanIModifyTodo" ref="insertTaskBottom" v-model="todobottom"
style="margin-left: 6px;"
color="blue-12"
debounce="1000"
:label="$t('todo.insertbottom')"
:after="[{icon: 'arrow_forward', content: true, handler () {}}]"
v-on:keyup.enter="dbInsert(false)"/>
v-on:keyup.enter="dbInsert(false)">
</q-input>
<br>

View File

@@ -13,6 +13,7 @@
<div class="flex-item donotdrag divdescrTot">
<q-input v-if="sel && inEdit && itemtodo.statustodo !== tools.Status.COMPLETED" hide-underline type="textarea" ref="inputdescr"
v-model.trim="precDescr"
debounce="1000"
autogrow
borderless
:readonly="!CanIModifyTodo"