UBERF-9705: Fix issues labels add remove (#8373)

Signed-off-by: Andrey Sobolev <haiodo@gmail.com>
This commit is contained in:
Andrey Sobolev
2025-03-28 11:23:06 +07:00
committed by GitHub
parent 9b7a85ec4e
commit 7acef2e057
9 changed files with 30 additions and 20 deletions
+1 -1
View File
@@ -96,7 +96,7 @@
"MODEL_JSON": "${workspaceRoot}/models/all/bundle/model.json",
// "SERVER_PROVIDER":"uweb"
"SERVER_PROVIDER": "ws",
"MODEL_VERSION": "0.7.24",
"MODEL_VERSION": "0.7.48",
// "VERSION": "0.6.289",
"ELASTIC_INDEX_NAME": "local_storage_index",
"UPLOAD_URL": "/files",
@@ -702,7 +702,7 @@
addTagRef(evt.detail)
}}
on:delete={(evt) => {
object.skills = object.skills.filter((it) => it._id !== evt.detail)
object.skills = object.skills.filter((it) => it.tag !== evt.detail._id)
}}
/>
{#if object.skills.length > 0}
@@ -67,10 +67,7 @@
if (result.action === 'add') {
void addRef(result.tag)
} else if (result.action === 'remove') {
const filtered = items.filter((it) => (it.tag ? it.tag === result.tag._id : it._id === result.tag._id))
if (filtered.length > 0) {
void removeTag(filtered[0].tag ?? filtered[0]._id)
}
void removeTag(result.tag)
}
}
},
@@ -82,8 +79,8 @@
)
}
async function removeTag (id: Ref<TagReference> | Ref<TagElement>): Promise<void> {
dispatch('delete', id)
async function removeTag (tag: TagElement): Promise<void> {
dispatch('delete', tag)
}
let countText = ''
@@ -47,7 +47,7 @@
getClient,
getMarkup
} from '@hcengineering/presentation'
import tags, { TagElement, TagReference } from '@hcengineering/tags'
import tags, { TagReference, type TagElement } from '@hcengineering/tags'
import { TaskType, makeRank } from '@hcengineering/task'
import { TaskKindSelector } from '@hcengineering/task-resources'
import { EmptyMarkup, isEmptyMarkup } from '@hcengineering/text'
@@ -957,7 +957,7 @@
addTagRef(evt.detail)
}}
on:delete={(evt) => {
object.labels = object.labels.filter((it) => it._id !== evt.detail)
object.labels = object.labels.filter((it) => it.tag !== evt.detail._id)
}}
/>
<ComponentSelector
@@ -154,6 +154,10 @@
_class={tracker.class.Project}
label={tracker.string.Project}
bind:space={_space}
on:object={(evt) => {
currentProject = evt.detail ?? undefined
}}
readonly={true}
kind={'regular'}
size={'large'}
component={ProjectPresenter}
@@ -225,7 +229,7 @@
addTagRef(evt.detail)
}}
on:delete={(evt) => {
labels = labels.filter((it) => it._id !== evt.detail)
labels = labels.filter((it) => it._id !== evt.detail._id)
}}
/>
<EstimationEditor kind={'regular'} size={'large'} value={object} />
@@ -249,7 +249,7 @@
addTagRef(evt.detail)
}}
on:delete={(evt) => {
object.labels = object.labels.filter((it) => it._id !== evt.detail)
object.labels = object.labels.filter((it) => it.tag !== evt.detail._id)
}}
/>
</div>
@@ -20,7 +20,7 @@
import { getResource } from '@hcengineering/platform'
import { createQuery, getClient } from '@hcengineering/presentation'
import setting, { settingId } from '@hcengineering/setting'
import tags from '@hcengineering/tags'
import tags, { type TagElement, type TagReference } from '@hcengineering/tags'
import { IssueTemplate, IssueTemplateChild, Project } from '@hcengineering/tracker'
import { Button, EditBox, IconMoreH, Label, getCurrentResolvedLocation, navigate } from '@hcengineering/ui'
import view from '@hcengineering/view'
@@ -74,8 +74,18 @@
}
currentProject = template.$lookup?.space
},
{ lookup: { space: tracker.class.Project, labels: tags.class.TagElement } }
{ lookup: { space: tracker.class.Project } }
)
let labels: TagElement[] = []
const tagsQuery = createQuery()
$: if ((template?.labels ?? []).length > 0) {
tagsQuery.query(tags.class.TagElement, { _id: { $in: template?.labels ?? [] } }, (res) => {
labels = res
})
} else {
tagsQuery.unsubscribe()
}
$: canSave = title.trim().length > 0
@@ -210,7 +220,7 @@
<svelte:fragment slot="custom-attributes">
{#if template !== undefined && currentProject}
<TemplateControlPanel issue={template} />
<TemplateControlPanel issue={template} labelIds={labels} />
{/if}
</svelte:fragment>
</Panel>
@@ -201,7 +201,7 @@
addTagRef(evt.detail)
}}
on:delete={(evt) => {
labels = labels.filter((it) => it._id !== evt.detail)
labels = labels.filter((it) => it._id !== evt.detail._id)
}}
/>
</div>
@@ -28,6 +28,7 @@
import MilestoneEditor from '../milestones/MilestoneEditor.svelte'
export let issue: WithLookup<IssueTemplate>
export let labelIds: TagElement[] = []
const client = getClient()
const hierarchy = client.getHierarchy()
@@ -48,16 +49,14 @@
let labelRefs: TagReference[] = []
$: labelIds = issue?.$lookup?.labels ?? []
$: if (labelIds !== undefined) {
labelRefs = (Array.isArray(labelIds) ? labelIds : [labelIds]).map(
(it) => ({ ...(it as unknown as TagReference), _id: generateId(), tag: it._id }) as unknown as TagReference
)
}
const onTagDelete = async (evt: CustomEvent<Ref<TagReference>>): Promise<void> => {
const itm = labelRefs.find((it) => it._id === evt.detail)
const onTagDelete = async (evt: CustomEvent<TagElement>): Promise<void> => {
const itm = labelRefs.find((it) => it.tag === evt.detail._id)
if (itm !== undefined) {
await client.update(issue, {
$pull: { labels: itm.tag as unknown as Ref<TagElement> }