diff --git a/models/love/src/index.ts b/models/love/src/index.ts index f89ae7afd0..fd82f43bf2 100644 --- a/models/love/src/index.ts +++ b/models/love/src/index.ts @@ -20,7 +20,8 @@ import { DOMAIN_TRANSIENT, IndexKind, type Ref, - type CollaborativeDoc + type CollaborativeDoc, + Doc } from '@hcengineering/core' import { type DevicesPreference, @@ -186,6 +187,11 @@ export class TMeeting extends TEvent implements Meeting { @Model(love.class.MeetingMinutes, core.class.Doc, DOMAIN_MEETING_MINUTES) @UX(love.string.MeetingMinutes, love.icon.Cam, undefined, undefined, love.string.MeetingsMinutes) export class TMeetingMinutes extends TAttachedDoc implements MeetingMinutes { + @Prop(TypeRef(core.class.Doc), love.string.Room, {editor: love.component.MeetingMinutesDocEditor }) + @Index(IndexKind.Indexed) + @ReadOnly() + declare attachedTo: Ref + @Hidden() sid!: string @@ -439,6 +445,10 @@ export function createModel (builder: Builder): void { presenter: love.component.MeetingMinutesPresenter }) + builder.mixin(love.class.Room, core.class.Class, view.mixin.ObjectPresenter, { + presenter: love.component.RoomPresenter + }) + builder.mixin(love.class.MeetingMinutes, core.class.Class, view.mixin.CollectionEditor, { editor: love.component.MeetingMinutesSection }) diff --git a/packages/presentation/src/utils.ts b/packages/presentation/src/utils.ts index 005e2e6883..005ec9aafd 100644 --- a/packages/presentation/src/utils.ts +++ b/packages/presentation/src/utils.ts @@ -626,7 +626,7 @@ export async function getAttributeEditor ( function filterKeys (hierarchy: Hierarchy, keys: KeyedAttribute[], ignoreKeys: string[]): KeyedAttribute[] { const docKeys: Set = new Set(hierarchy.getAllAttributes(core.class.AttachedDoc).keys()) - keys = keys.filter((k) => !docKeys.has(k.key)) + keys = keys.filter((k) => !docKeys.has(k.key) || k.attr.editor !== undefined) keys = keys.filter((k) => !ignoreKeys.includes(k.key)) return keys } diff --git a/plugins/love-resources/src/components/MeetingMinutesDocEditor.svelte b/plugins/love-resources/src/components/MeetingMinutesDocEditor.svelte new file mode 100644 index 0000000000..fee8bab934 --- /dev/null +++ b/plugins/love-resources/src/components/MeetingMinutesDocEditor.svelte @@ -0,0 +1,23 @@ + + + + diff --git a/plugins/love-resources/src/components/RoomPresenter.svelte b/plugins/love-resources/src/components/RoomPresenter.svelte new file mode 100644 index 0000000000..75082ceb22 --- /dev/null +++ b/plugins/love-resources/src/components/RoomPresenter.svelte @@ -0,0 +1,53 @@ + + + +{#if value} + {#if inline} + + {:else if type === 'link'} + +
+ {#if shouldShowAvatar} +
+ +
+ {/if} +
+ {value.name} +
+
+
+ {:else if type === 'text'} + + {value.name} + + {/if} +{/if} diff --git a/plugins/love-resources/src/index.ts b/plugins/love-resources/src/index.ts index 750c40d68e..c622c4f147 100644 --- a/plugins/love-resources/src/index.ts +++ b/plugins/love-resources/src/index.ts @@ -19,6 +19,8 @@ import FloorAttributePresenter from './components/FloorAttributePresenter.svelte import FloorView from './components/FloorView.svelte' import MeetingMinutesTable from './components/MeetingMinutesTable.svelte' import PanelControlBar from './components/PanelControlBar.svelte' +import RoomPresenter from './components/RoomPresenter.svelte' +import MeetingMinutesDocEditor from './components/MeetingMinutesDocEditor.svelte' import { copyGuestLink, @@ -51,7 +53,9 @@ export default async (): Promise => ({ FloorAttributePresenter, FloorView, MeetingMinutesTable, - PanelControlBar + PanelControlBar, + RoomPresenter, + MeetingMinutesDocEditor }, function: { CreateMeeting: createMeeting, diff --git a/plugins/love-resources/src/plugin.ts b/plugins/love-resources/src/plugin.ts index fcaa6e322f..d7ed3ed986 100644 --- a/plugins/love-resources/src/plugin.ts +++ b/plugins/love-resources/src/plugin.ts @@ -25,6 +25,7 @@ export default mergeIds(loveId, love, { MeetingData: '' as AnyComponent, EditMeetingData: '' as AnyComponent, MeetingMinutesPresenter: '' as AnyComponent, + RoomPresenter: '' as AnyComponent, MeetingMinutesSection: '' as AnyComponent, EditMeetingMinutes: '' as AnyComponent, EditRoom: '' as AnyComponent, @@ -32,6 +33,7 @@ export default mergeIds(loveId, love, { MeetingMinutesTable: '' as AnyComponent, FloorView: '' as AnyComponent, PanelControlBar: '' as AnyComponent, + MeetingMinutesDocEditor: '' as AnyComponent }, function: { CreateMeeting: '' as Resource,