diff options
| author | syuilo <4439005+syuilo@users.noreply.github.com> | 2025-06-28 19:24:55 +0900 |
|---|---|---|
| committer | syuilo <4439005+syuilo@users.noreply.github.com> | 2025-06-28 19:24:55 +0900 |
| commit | 012b2a9764e35ca0014b90326331b827f654f37d (patch) | |
| tree | 7cfd83ca9f627dac942a5f1f69d423e11295559e /packages/frontend/src/components/MkTl.vue | |
| parent | lint (diff) | |
| download | misskey-012b2a9764e35ca0014b90326331b827f654f37d.tar.gz misskey-012b2a9764e35ca0014b90326331b827f654f37d.tar.bz2 misskey-012b2a9764e35ca0014b90326331b827f654f37d.zip | |
enhance(frontend): improve MkTl rendering
Diffstat (limited to 'packages/frontend/src/components/MkTl.vue')
| -rw-r--r-- | packages/frontend/src/components/MkTl.vue | 48 |
1 files changed, 32 insertions, 16 deletions
diff --git a/packages/frontend/src/components/MkTl.vue b/packages/frontend/src/components/MkTl.vue index a9ae151261..a15561d9e0 100644 --- a/packages/frontend/src/components/MkTl.vue +++ b/packages/frontend/src/components/MkTl.vue @@ -32,9 +32,12 @@ export type TlEvent<E = any> = { <script lang="ts" setup generic="T extends unknown"> import { computed } from 'vue'; -const props = defineProps<{ +const props = withDefaults(defineProps<{ events: TlEvent<T>[]; -}>(); + groupBy?: 'd' | 'h'; +}>(), { + groupBy: 'd', +}); const events = computed(() => { return props.events.toSorted((a, b) => b.timestamp - a.timestamp); @@ -65,6 +68,7 @@ type TlItem<T> = ({ const items = computed<TlItem<T>[]>(() => { const results: TlItem<T>[] = []; + for (let i = 0; i < events.value.length; i++) { const item = events.value[i]; @@ -79,25 +83,37 @@ const items = computed<TlItem<T>[]>(() => { data: item.data, }); - if ( - i !== events.value.length - 1 && - nextDate != null && ( - date.getFullYear() !== nextDate.getFullYear() || + if (i !== events.value.length - 1 && nextDate != null) { + let needsSeparator = false; + + if (props.groupBy === 'd') { + needsSeparator = ( + date.getFullYear() !== nextDate.getFullYear() || + date.getMonth() !== nextDate.getMonth() || + date.getDate() !== nextDate.getDate() + ); + } else if (props.groupBy === 'h') { + needsSeparator = ( + date.getFullYear() !== nextDate.getFullYear() || date.getMonth() !== nextDate.getMonth() || date.getDate() !== nextDate.getDate() || date.getHours() !== nextDate.getHours() - ) - ) { - results.push({ - id: `date-${item.id}`, - type: 'date', - prev: date, - prevText: getDateText(date), - next: nextDate, - nextText: getDateText(nextDate), - }); + ); + } + + if (needsSeparator) { + results.push({ + id: `date-${item.id}`, + type: 'date', + prev: date, + prevText: getDateText(date), + next: nextDate, + nextText: getDateText(nextDate), + }); + } } } + return results; }); </script> |