diff --git a/models/tracker/src/migration.ts b/models/tracker/src/migration.ts index 26f6d0168c..9cdf3dfeb2 100644 --- a/models/tracker/src/migration.ts +++ b/models/tracker/src/migration.ts @@ -185,6 +185,21 @@ async function fixTrackerTaskTypes (client: MigrationClient): Promise { }) } +async function passIdentifierToParentInfo (client: MigrationClient): Promise { + const issues = await client.find(DOMAIN_TASK, { _class: tracker.class.Issue, 'parents.0': { $exists: true } }) + for (const issue of issues) { + const parents = toIdMap( + await client.find(DOMAIN_TASK, { _id: { $in: issue.parents.map((p) => p.parentId) } }) + ) + for (const parent of issue.parents) { + const p = parents.get(parent.parentId) + if (p === undefined) continue + parent.identifier = p.identifier + } + await client.update(DOMAIN_TASK, { _id: issue._id }, { $set: { parents: issue.parents } }) + } +} + async function tryCreateStatus (client: MigrationClient): Promise> { const exists = await client.find(DOMAIN_STATUS, { _class: tracker.class.IssueStatus, @@ -484,6 +499,10 @@ export const trackerOperation: MigrateOperation = { { state: 'identifier', func: migrateIdentifiers + }, + { + state: 'passIdentifierToParentInfo', + func: passIdentifierToParentInfo } ]) }, diff --git a/plugins/tracker-resources/src/components/CreateIssue.svelte b/plugins/tracker-resources/src/components/CreateIssue.svelte index f2fe0053a3..fee054daa7 100644 --- a/plugins/tracker-resources/src/components/CreateIssue.svelte +++ b/plugins/tracker-resources/src/components/CreateIssue.svelte @@ -50,6 +50,7 @@ Component as ComponentType, Issue, IssueDraft, + IssueParentInfo, IssuePriority, IssueStatus, IssueTemplate, @@ -422,6 +423,8 @@ const number = (incResult as any).object.sequence + const identifier = `${currentProject?.identifier}-${number}` + const value: DocData = { title: getTitle(object.title), description: object.description, @@ -438,7 +441,7 @@ parents: parentIssue != null ? [ - { parentId: parentIssue._id, parentTitle: parentIssue.title, space: parentIssue.space }, + { parentId: parentIssue._id, parentTitle: parentIssue.title, space: parentIssue.space, identifier }, ...parentIssue.parents ] : [], @@ -449,7 +452,7 @@ relations: relatedTo !== undefined ? [{ _id: relatedTo._id, _class: relatedTo._class }] : [], childInfo: [], kind, - identifier: `${currentProject?.identifier}-${number}` + identifier } await docCreateManager.commit(operations, _id, _space, value) @@ -486,13 +489,13 @@ await operations.commit() await descriptionBox.createAttachments(_id) - const parents = parentIssue + const parents: IssueParentInfo[] = parentIssue ? [ - { parentId: _id, parentTitle: value.title, space: parentIssue.space }, - { parentId: parentIssue._id, parentTitle: parentIssue.title, space: parentIssue.space }, + { parentId: _id, parentTitle: value.title, space: parentIssue.space, identifier }, + { parentId: parentIssue._id, parentTitle: parentIssue.title, space: parentIssue.space, identifier }, ...parentIssue.parents ] - : [{ parentId: _id, parentTitle: value.title, space: _space }] + : [{ parentId: _id, parentTitle: value.title, space: _space, identifier }] await subIssuesComponent.save(parents, _id) addNotification( await translate(tracker.string.IssueCreated, {}, $themeStore.language), diff --git a/plugins/tracker-resources/src/components/issues/ParentNamesPresenter.svelte b/plugins/tracker-resources/src/components/issues/ParentNamesPresenter.svelte index cda4c499c8..d65eb64302 100644 --- a/plugins/tracker-resources/src/components/issues/ParentNamesPresenter.svelte +++ b/plugins/tracker-resources/src/components/issues/ParentNamesPresenter.svelte @@ -13,17 +13,20 @@ // limitations under the License. --> @@ -33,15 +36,11 @@ {#each value.parents as parentInfo} - { - handleIssueEditorOpened(parentInfo) - }} - > - {parentInfo.parentTitle} - + + + {parentInfo.parentTitle} + + {/each} @@ -61,6 +60,7 @@ .parent-label { flex-shrink: 5; + color: var(--theme-dark-color); &:hover { color: var(--theme-caption-color); diff --git a/plugins/tracker/src/index.ts b/plugins/tracker/src/index.ts index df573198f9..8ac034ddb9 100644 --- a/plugins/tracker/src/index.ts +++ b/plugins/tracker/src/index.ts @@ -301,6 +301,7 @@ export interface TimeSpendReport extends AttachedDoc { */ export interface IssueParentInfo { parentId: Ref + identifier: string parentTitle: string space: Ref } diff --git a/server-plugins/tracker-resources/src/index.ts b/server-plugins/tracker-resources/src/index.ts index 6f2670f704..2200a221e2 100644 --- a/server-plugins/tracker-resources/src/index.ts +++ b/server-plugins/tracker-resources/src/index.ts @@ -225,6 +225,7 @@ export async function OnIssueUpdate (tx: Tx, control: TriggerControl): Promise ({ parentId: it._id, parentTitle: it.title, + identifier: it.identifier, space: it.space })) updateIssueParentEstimations( @@ -358,9 +359,17 @@ async function doIssueUpdate ( { limit: 1 } ) - const updatedParents = + const updatedParents: IssueParentInfo[] = newParent !== undefined - ? [{ parentId: newParent._id, parentTitle: newParent.title, space: newParent.space }, ...newParent.parents] + ? [ + { + parentId: newParent._id, + parentTitle: newParent.title, + space: newParent.space, + identifier: newParent.identifier + }, + ...newParent.parents + ] : [] function update (issue: Issue): DocumentUpdate {