platform/plugins/time-resources/src/components/team/agenda/DayPlan.svelte
Denis Bykhov cbddcf9a3e
Fix team planning event duplicates (#5605)
Signed-off-by: Denis Bykhov <bykhov.denis@gmail.com>
2024-05-16 01:13:42 +07:00

49 lines
1.8 KiB
Svelte

<script lang="ts">
import { Event } from '@hcengineering/calendar'
import { Person, PersonAccount } from '@hcengineering/contact'
import { IdMap, Ref, Timestamp } from '@hcengineering/core'
import { IntlString, getEmbeddedLabel } from '@hcengineering/platform'
import { Project } from '@hcengineering/task'
import { ToDo, WorkSlot } from '@hcengineering/time'
import { Label, Scroller, areDatesEqual, ticker } from '@hcengineering/ui'
import time from '../../../plugin'
import PlanGroup from './PlanGroup.svelte'
export let day: Date
export let slots: WorkSlot[]
export let events: Event[]
export let showAssignee: boolean = false
export let persons: Ref<Person>[]
export let personAccounts: PersonAccount[]
export let project: Project
export let todos: IdMap<ToDo>
function getTitle (day: Date, now: Timestamp): IntlString {
const today = new Date(now)
const tomorrow = new Date(new Date(now).setDate(new Date(now).getDate() + 1))
const yesterday = new Date(new Date(now).setDate(new Date(now).getDate() - 1))
if (areDatesEqual(day, today)) return time.string.Today
if (areDatesEqual(day, yesterday)) return time.string.Yesterday
if (areDatesEqual(day, tomorrow)) return time.string.Tomorrow
const isCurrentYear = day.getFullYear() === new Date().getFullYear()
return getEmbeddedLabel(
day.toLocaleDateString('default', {
month: 'long',
day: 'numeric',
year: isCurrentYear ? undefined : 'numeric'
})
)
}
$: title = getTitle(day, $ticker)
</script>
<div class="caption-color text-xl p-4">
<Label label={title} />
</div>
<Scroller padding={'0 1rem'} noStretch shrink>
<PlanGroup {slots} {events} {showAssignee} {personAccounts} {todos} />
</Scroller>
<div class="antiVSpacer x4" />