import { DynamicLoader } from '@app/event-emitter/configs/dynamic-loader'; 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 { Controller, Get, Param, Render } from '@nestjs/common'; import { ConfigService } from '@nestjs/config'; import { parse } from 'jsonc-parser'; import { IssuesByTagsWidgetService } from './widgets/issues-by-tags.widget.service'; @Controller('simple-kanban-board') export class SimpleKanbanBoardController { private path: string; constructor( private rootIssueSubTreesWidgetService: RootIssueSubTreesWidgetService, private dynamicLoader: DynamicLoader, private configService: ConfigService, private listIssuesByUsersWidgetService: ListIssuesByUsersWidgetService, private listIssuesByUsersLikeJiraWidgetService: ListIssuesByUsersLikeJiraWidgetService, private issuesByTagsWidgetService: IssuesByTagsWidgetService, ) { this.path = this.configService.get('simpleKanbanBoard.path'); } @Get('/tree/:name/raw') async getRawData(@Param('name') name: string): Promise { const cfg = this.dynamicLoader.load(name, { path: this.path, ext: 'jsonc', parser: parse, }); return await this.rootIssueSubTreesWidgetService.render(cfg); } @Get('/tree/:name') @Render('simple-kanban-board') async get(@Param('name') name: string): Promise { return await this.getRawData(name); } @Get('/by-users/:name/raw') async getByUsersRawData(@Param('name') name: string): Promise { const cfg = this.dynamicLoader.load(name, { path: this.path, ext: 'jsonc', parser: parse, }); return await this.listIssuesByUsersWidgetService.render(cfg); } @Get('/by-users/:name') @Render('simple-kanban-board') async getByUsers(@Param('name') name: string): Promise { return await this.getByUsersRawData(name); } @Get('/by-users-like-jira/:name/raw') async getByUsersLikeJiraRawData(@Param('name') name: string): Promise { const cfg = this.dynamicLoader.load(name, { path: this.path, ext: 'jsonc', parser: parse, }); return await this.listIssuesByUsersLikeJiraWidgetService.render(cfg); } @Get('/by-users-like-jira/:name') @Render('simple-kanban-board') async getByUsersLikeJira(@Param('name') name: string): Promise { return await this.getByUsersLikeJiraRawData(name); } @Get('/by-tags/:name/raw') async getByTagsRawData(@Param('name') name: string): Promise { const cfg = this.dynamicLoader.load(name, { path: this.path, ext: 'jsonc', parser: parse, }); return await this.issuesByTagsWidgetService.render(cfg); } @Get('/by-tags/:name') @Render('simple-kanban-board') async getByTags(@Param('name') name: string): Promise { return await this.getByTagsRawData(name); } }