Принудительное обновление корневых задач для доски основанной на дереве задач

This commit is contained in:
Pavel Gnedov 2023-02-17 02:37:31 +07:00
parent d031105c9f
commit fccdee5cbc

View file

@ -1,7 +1,11 @@
import { DynamicLoader } from '@app/event-emitter/configs/dynamic-loader'; 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 { 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 { 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 { Controller, Get, Param, Render } from '@nestjs/common';
import { ConfigService } from '@nestjs/config'; import { ConfigService } from '@nestjs/config';
import { parse } from 'jsonc-parser'; import { parse } from 'jsonc-parser';
@ -18,6 +22,7 @@ export class SimpleKanbanBoardController {
private listIssuesByUsersWidgetService: ListIssuesByUsersWidgetService, private listIssuesByUsersWidgetService: ListIssuesByUsersWidgetService,
private listIssuesByUsersLikeJiraWidgetService: ListIssuesByUsersLikeJiraWidgetService, private listIssuesByUsersLikeJiraWidgetService: ListIssuesByUsersLikeJiraWidgetService,
private issuesByTagsWidgetService: IssuesByTagsWidgetService, private issuesByTagsWidgetService: IssuesByTagsWidgetService,
private redmineEventsGateway: RedmineEventsGateway,
) { ) {
this.path = this.configService.get<string>('simpleKanbanBoard.path'); this.path = this.configService.get<string>('simpleKanbanBoard.path');
} }
@ -38,6 +43,25 @@ export class SimpleKanbanBoardController {
return await this.getRawData(name); return await this.getRawData(name);
} }
@Get('/tree/:name/refresh')
async refreshTree(@Param('name') name: string): Promise<any> {
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') @Get('/by-users/:name/raw')
async getByUsersRawData(@Param('name') name: string): Promise<any> { async getByUsersRawData(@Param('name') name: string): Promise<any> {
const cfg = this.dynamicLoader.load(name, { const cfg = this.dynamicLoader.load(name, {