1313// limitations under the License.
1414//
1515
16- import { Calendar , Event } from '@anticrm/calendar'
16+ import activity from '@anticrm/activity'
17+ import { Calendar , Event , Reminder } from '@anticrm/calendar'
1718import { Employee } from '@anticrm/contact'
1819import type { Domain , Markup , Ref , Timestamp } from '@anticrm/core'
1920import { IndexKind } from '@anticrm/core'
20- import { Builder , Collection , Index , Model , Prop , TypeDate , TypeMarkup , TypeString , UX } from '@anticrm/model'
21+ import { Builder , Collection , Index , Mixin , Model , Prop , TypeDate , TypeMarkup , TypeString , UX } from '@anticrm/model'
2122import attachment from '@anticrm/model-attachment'
2223import chunter from '@anticrm/model-chunter'
2324import contact from '@anticrm/model-contact'
2425import core , { TAttachedDoc } from '@anticrm/model-core'
2526import { TSpaceWithStates } from '@anticrm/model-task'
27+ import view from '@anticrm/model-view'
2628import workbench from '@anticrm/model-workbench'
29+ import notification from '@anticrm/notification'
2730import calendar from './plugin'
28- import view from '@anticrm/model-view'
2931
3032export * from '@anticrm/calendar'
3133
@@ -42,9 +44,6 @@ export class TEvent extends TAttachedDoc implements Event {
4244 @Index ( IndexKind . FullText )
4345 title ! : string
4446
45- @Prop ( TypeString ( ) , calendar . string . EventNumber )
46- number ! : number
47-
4847 @Prop ( TypeMarkup ( ) , calendar . string . Description )
4948 @Index ( IndexKind . FullText )
5049 description ! : Markup
@@ -69,8 +68,19 @@ export class TEvent extends TAttachedDoc implements Event {
6968 participants ! : Ref < Employee > [ ]
7069}
7170
71+ @Mixin ( calendar . mixin . Reminder , calendar . class . Event )
72+ @UX ( calendar . string . Reminder , calendar . icon . Calendar )
73+ export class TReminder extends TEvent implements Reminder {
74+ @Prop ( TypeDate ( true ) , calendar . string . Shift )
75+ shift ! : Timestamp
76+
77+ @Prop ( TypeString ( ) , calendar . string . State )
78+ @Index ( IndexKind . Indexed )
79+ state ! : 'active' | 'done'
80+ }
81+
7282export function createModel ( builder : Builder ) : void {
73- builder . createModel ( TCalendar , TEvent )
83+ builder . createModel ( TCalendar , TEvent , TReminder )
7484
7585 builder . createDoc ( workbench . class . Application , core . space . Model , {
7686 label : calendar . string . ApplicationLabelCalendar ,
@@ -88,6 +98,21 @@ export function createModel (builder: Builder): void {
8898 }
8999 } , calendar . app . Calendar )
90100
101+ builder . createDoc ( notification . class . NotificationType , core . space . Model , {
102+ label : calendar . string . Reminder
103+ } , calendar . ids . ReminderNotification )
104+
105+ builder . createDoc ( activity . class . TxViewlet , core . space . Model , {
106+ objectClass : calendar . mixin . Reminder ,
107+ icon : calendar . icon . Reminder ,
108+ txClass : core . class . TxMixin ,
109+ label : calendar . string . CreatedReminder ,
110+ component : calendar . activity . ReminderViewlet ,
111+ display : 'emphasized' ,
112+ editable : false ,
113+ hideOnRemove : true
114+ } , calendar . ids . ReminderViewlet )
115+
91116 builder . createDoc (
92117 view . class . ViewletDescriptor ,
93118 core . space . Model ,
@@ -99,6 +124,30 @@ export function createModel (builder: Builder): void {
99124 calendar . viewlet . Calendar
100125 )
101126
127+ builder . createDoc (
128+ view . class . Action ,
129+ core . space . Model ,
130+ {
131+ label : calendar . string . RemindMeAt ,
132+ icon : calendar . icon . Reminder ,
133+ action : calendar . actionImpl . SaveEventReminder
134+ } ,
135+ calendar . action . SaveEventReminder
136+ )
137+
138+ builder . createDoc ( view . class . ActionTarget , core . space . Model , {
139+ target : calendar . class . Event ,
140+ action : calendar . action . SaveEventReminder
141+ } )
142+
143+ builder . mixin ( calendar . mixin . Reminder , core . class . Class , view . mixin . AttributePresenter , {
144+ presenter : calendar . component . ReminderPresenter
145+ } )
146+
147+ builder . mixin ( calendar . class . Event , core . class . Class , view . mixin . ObjectEditor , {
148+ editor : calendar . component . EditEvent
149+ } )
150+
102151 // Use generic child presenter
103152 builder . mixin ( calendar . class . Event , core . class . Class , view . mixin . AttributePresenter , {
104153 presenter : view . component . ObjectPresenter
0 commit comments