このコミットが含まれているのは:
@@ -102,10 +102,33 @@ const compareTagName = (a: Tag, b: Tag): number =>
|
||||
a.name === b.name ? 0 : (a.name < b.name ? -1 : 1)
|
||||
|
||||
|
||||
const tagsByCategory = (tags: Tag[]): Partial<Record<Category, Tag[]>> => {
|
||||
const grouped: Partial<Record<Category, Tag[]>> = { }
|
||||
const flattenTags = (tags: Tag[]): Tag[] => {
|
||||
const flattened: Tag[] = []
|
||||
const seen = new Set<number> ()
|
||||
|
||||
const visit = (tag: Tag) => {
|
||||
if (seen.has (tag.id))
|
||||
return
|
||||
|
||||
seen.add (tag.id)
|
||||
flattened.push (tag)
|
||||
|
||||
for (const child of tag.children ?? [])
|
||||
visit (child)
|
||||
}
|
||||
|
||||
for (const tag of tags)
|
||||
visit (tag)
|
||||
|
||||
return flattened
|
||||
}
|
||||
|
||||
|
||||
const tagsByCategory = (tags: Tag[]): Partial<Record<Category, Tag[]>> => {
|
||||
const flattenedTags = flattenTags (tags)
|
||||
const grouped: Partial<Record<Category, Tag[]>> = { }
|
||||
|
||||
for (const tag of flattenedTags)
|
||||
{
|
||||
grouped[tag.category] ??= []
|
||||
grouped[tag.category]!.push (tag)
|
||||
|
||||
新しい課題から参照
ユーザをブロックする