mirror of
https://github.com/hcengineering/platform.git
synced 2025-05-23 16:25:48 +00:00
Show room as attribute
Signed-off-by: Kristina Fefelova <kristin.fefelova@gmail.com>
This commit is contained in:
parent
e6cbd5ce31
commit
6a21296d2b
@ -20,7 +20,8 @@ import {
|
|||||||
DOMAIN_TRANSIENT,
|
DOMAIN_TRANSIENT,
|
||||||
IndexKind,
|
IndexKind,
|
||||||
type Ref,
|
type Ref,
|
||||||
type CollaborativeDoc
|
type CollaborativeDoc,
|
||||||
|
Doc
|
||||||
} from '@hcengineering/core'
|
} from '@hcengineering/core'
|
||||||
import {
|
import {
|
||||||
type DevicesPreference,
|
type DevicesPreference,
|
||||||
@ -186,6 +187,11 @@ export class TMeeting extends TEvent implements Meeting {
|
|||||||
@Model(love.class.MeetingMinutes, core.class.Doc, DOMAIN_MEETING_MINUTES)
|
@Model(love.class.MeetingMinutes, core.class.Doc, DOMAIN_MEETING_MINUTES)
|
||||||
@UX(love.string.MeetingMinutes, love.icon.Cam, undefined, undefined, love.string.MeetingsMinutes)
|
@UX(love.string.MeetingMinutes, love.icon.Cam, undefined, undefined, love.string.MeetingsMinutes)
|
||||||
export class TMeetingMinutes extends TAttachedDoc implements MeetingMinutes {
|
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<Doc>
|
||||||
|
|
||||||
@Hidden()
|
@Hidden()
|
||||||
sid!: string
|
sid!: string
|
||||||
|
|
||||||
@ -439,6 +445,10 @@ export function createModel (builder: Builder): void {
|
|||||||
presenter: love.component.MeetingMinutesPresenter
|
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, {
|
builder.mixin(love.class.MeetingMinutes, core.class.Class, view.mixin.CollectionEditor, {
|
||||||
editor: love.component.MeetingMinutesSection
|
editor: love.component.MeetingMinutesSection
|
||||||
})
|
})
|
||||||
|
@ -626,7 +626,7 @@ export async function getAttributeEditor (
|
|||||||
|
|
||||||
function filterKeys (hierarchy: Hierarchy, keys: KeyedAttribute[], ignoreKeys: string[]): KeyedAttribute[] {
|
function filterKeys (hierarchy: Hierarchy, keys: KeyedAttribute[], ignoreKeys: string[]): KeyedAttribute[] {
|
||||||
const docKeys: Set<string> = new Set<string>(hierarchy.getAllAttributes(core.class.AttachedDoc).keys())
|
const docKeys: Set<string> = new Set<string>(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))
|
keys = keys.filter((k) => !ignoreKeys.includes(k.key))
|
||||||
return keys
|
return keys
|
||||||
}
|
}
|
||||||
|
@ -0,0 +1,23 @@
|
|||||||
|
<!--
|
||||||
|
// Copyright © 2024 Hardcore Engineering Inc.
|
||||||
|
//
|
||||||
|
// Licensed under the Eclipse Public License, Version 2.0 (the "License");
|
||||||
|
// you may not use this file except in compliance with the License. You may
|
||||||
|
// obtain a copy of the License at https://www.eclipse.org/legal/epl-2.0
|
||||||
|
//
|
||||||
|
// Unless required by applicable law or agreed to in writing, software
|
||||||
|
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
//
|
||||||
|
// See the License for the specific language governing permissions and
|
||||||
|
// limitations under the License.
|
||||||
|
-->
|
||||||
|
<script lang="ts">
|
||||||
|
import { MeetingMinutes } from '@hcengineering/love'
|
||||||
|
import { ObjectPresenter } from '@hcengineering/view-resources'
|
||||||
|
|
||||||
|
export let object: MeetingMinutes
|
||||||
|
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<ObjectPresenter objectId={object.attachedTo} _class={object.attachedToClass} shouldShowAvatar={false} disabled props={{ type: 'text' }}/>
|
53
plugins/love-resources/src/components/RoomPresenter.svelte
Normal file
53
plugins/love-resources/src/components/RoomPresenter.svelte
Normal file
@ -0,0 +1,53 @@
|
|||||||
|
<!--
|
||||||
|
// Copyright © 2024 Hardcore Engineering Inc.
|
||||||
|
//
|
||||||
|
// Licensed under the Eclipse Public License, Version 2.0 (the "License");
|
||||||
|
// you may not use this file except in compliance with the License. You may
|
||||||
|
// obtain a copy of the License at https://www.eclipse.org/legal/epl-2.0
|
||||||
|
//
|
||||||
|
// Unless required by applicable law or agreed to in writing, software
|
||||||
|
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
//
|
||||||
|
// See the License for the specific language governing permissions and
|
||||||
|
// limitations under the License.
|
||||||
|
-->
|
||||||
|
<script lang="ts">
|
||||||
|
import love, { Room } from '@hcengineering/love'
|
||||||
|
import { WithLookup } from '@hcengineering/core'
|
||||||
|
import { ObjectPresenterType } from '@hcengineering/view'
|
||||||
|
import { getEmbeddedLabel } from '@hcengineering/platform'
|
||||||
|
import { DocNavLink, ObjectMention } from '@hcengineering/view-resources'
|
||||||
|
import { tooltip, Icon } from '@hcengineering/ui'
|
||||||
|
|
||||||
|
export let value: WithLookup<Room>
|
||||||
|
export let inline: boolean = false
|
||||||
|
export let disabled: boolean = false
|
||||||
|
export let accent: boolean = false
|
||||||
|
export let noUnderline: boolean = false
|
||||||
|
export let shouldShowAvatar = true
|
||||||
|
export let type: ObjectPresenterType = 'link'
|
||||||
|
</script>
|
||||||
|
|
||||||
|
{#if value}
|
||||||
|
{#if inline}
|
||||||
|
<ObjectMention object={value} {disabled} {accent} {noUnderline} />
|
||||||
|
{:else if type === 'link'}
|
||||||
|
<DocNavLink object={value} {disabled} {accent} {noUnderline}>
|
||||||
|
<div class="flex-presenter" use:tooltip={{ label: getEmbeddedLabel(value.name) }}>
|
||||||
|
{#if shouldShowAvatar}
|
||||||
|
<div class="icon">
|
||||||
|
<Icon icon={love.icon.Love} size={'small'} />
|
||||||
|
</div>
|
||||||
|
{/if}
|
||||||
|
<div class="label nowrap flex flex-gap-2" class:no-underline={noUnderline || disabled} class:fs-bold={accent}>
|
||||||
|
<span>{value.name}</span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</DocNavLink>
|
||||||
|
{:else if type === 'text'}
|
||||||
|
<span class="overflow-label" use:tooltip={{ label: getEmbeddedLabel(value.name) }}>
|
||||||
|
{value.name}
|
||||||
|
</span>
|
||||||
|
{/if}
|
||||||
|
{/if}
|
@ -19,6 +19,8 @@ import FloorAttributePresenter from './components/FloorAttributePresenter.svelte
|
|||||||
import FloorView from './components/FloorView.svelte'
|
import FloorView from './components/FloorView.svelte'
|
||||||
import MeetingMinutesTable from './components/MeetingMinutesTable.svelte'
|
import MeetingMinutesTable from './components/MeetingMinutesTable.svelte'
|
||||||
import PanelControlBar from './components/PanelControlBar.svelte'
|
import PanelControlBar from './components/PanelControlBar.svelte'
|
||||||
|
import RoomPresenter from './components/RoomPresenter.svelte'
|
||||||
|
import MeetingMinutesDocEditor from './components/MeetingMinutesDocEditor.svelte'
|
||||||
|
|
||||||
import {
|
import {
|
||||||
copyGuestLink,
|
copyGuestLink,
|
||||||
@ -51,7 +53,9 @@ export default async (): Promise<Resources> => ({
|
|||||||
FloorAttributePresenter,
|
FloorAttributePresenter,
|
||||||
FloorView,
|
FloorView,
|
||||||
MeetingMinutesTable,
|
MeetingMinutesTable,
|
||||||
PanelControlBar
|
PanelControlBar,
|
||||||
|
RoomPresenter,
|
||||||
|
MeetingMinutesDocEditor
|
||||||
},
|
},
|
||||||
function: {
|
function: {
|
||||||
CreateMeeting: createMeeting,
|
CreateMeeting: createMeeting,
|
||||||
|
@ -25,6 +25,7 @@ export default mergeIds(loveId, love, {
|
|||||||
MeetingData: '' as AnyComponent,
|
MeetingData: '' as AnyComponent,
|
||||||
EditMeetingData: '' as AnyComponent,
|
EditMeetingData: '' as AnyComponent,
|
||||||
MeetingMinutesPresenter: '' as AnyComponent,
|
MeetingMinutesPresenter: '' as AnyComponent,
|
||||||
|
RoomPresenter: '' as AnyComponent,
|
||||||
MeetingMinutesSection: '' as AnyComponent,
|
MeetingMinutesSection: '' as AnyComponent,
|
||||||
EditMeetingMinutes: '' as AnyComponent,
|
EditMeetingMinutes: '' as AnyComponent,
|
||||||
EditRoom: '' as AnyComponent,
|
EditRoom: '' as AnyComponent,
|
||||||
@ -32,6 +33,7 @@ export default mergeIds(loveId, love, {
|
|||||||
MeetingMinutesTable: '' as AnyComponent,
|
MeetingMinutesTable: '' as AnyComponent,
|
||||||
FloorView: '' as AnyComponent,
|
FloorView: '' as AnyComponent,
|
||||||
PanelControlBar: '' as AnyComponent,
|
PanelControlBar: '' as AnyComponent,
|
||||||
|
MeetingMinutesDocEditor: '' as AnyComponent
|
||||||
},
|
},
|
||||||
function: {
|
function: {
|
||||||
CreateMeeting: '' as Resource<DocCreateFunction>,
|
CreateMeeting: '' as Resource<DocCreateFunction>,
|
||||||
|
Loading…
Reference in New Issue
Block a user