diff --git a/src/dashboards/simple-kanban-board.controller.ts b/src/dashboards/simple-kanban-board.controller.ts index 09c1961..aafc98f 100644 --- a/src/dashboards/simple-kanban-board.controller.ts +++ b/src/dashboards/simple-kanban-board.controller.ts @@ -1,7 +1,11 @@ import { DynamicLoader } from '@app/event-emitter/configs/dynamic-loader'; +import { RedmineEventsGateway } from '@app/event-emitter/events/redmine-events.gateway'; import { ListIssuesByUsersLikeJiraWidgetService } from '@app/event-emitter/project-dashboard/widgets/list-issues-by-users-like-jira.widget.service'; import { ListIssuesByUsersWidgetService } from '@app/event-emitter/project-dashboard/widgets/list-issues-by-users.widget.service'; -import { RootIssueSubTreesWidgetService } from '@app/event-emitter/project-dashboard/widgets/root-issue-subtrees.widget.service'; +import { + RootIssueSubTreesWidgetNs, + RootIssueSubTreesWidgetService, +} from '@app/event-emitter/project-dashboard/widgets/root-issue-subtrees.widget.service'; import { Controller, Get, Param, Render } from '@nestjs/common'; import { ConfigService } from '@nestjs/config'; import { parse } from 'jsonc-parser'; @@ -18,6 +22,7 @@ export class SimpleKanbanBoardController { private listIssuesByUsersWidgetService: ListIssuesByUsersWidgetService, private listIssuesByUsersLikeJiraWidgetService: ListIssuesByUsersLikeJiraWidgetService, private issuesByTagsWidgetService: IssuesByTagsWidgetService, + private redmineEventsGateway: RedmineEventsGateway, ) { this.path = this.configService.get('simpleKanbanBoard.path'); } @@ -38,6 +43,25 @@ export class SimpleKanbanBoardController { return await this.getRawData(name); } + @Get('/tree/:name/refresh') + async refreshTree(@Param('name') name: string): Promise { + const cfg = this.dynamicLoader.load(name, { + path: this.path, + ext: 'jsonc', + parser: parse, + }); + const issues = [] as number[]; + issues.push(cfg.rootIssueId); + if (cfg.groups) { + const groups = cfg.groups as RootIssueSubTreesWidgetNs.Models.GroupCfg; + groups.fromIssues.forEach((group) => { + issues.push(group.issueId); + }); + } + this.redmineEventsGateway.addIssues(issues); + return { success: true }; + } + @Get('/by-users/:name/raw') async getByUsersRawData(@Param('name') name: string): Promise { const cfg = this.dynamicLoader.load(name, {