pinkmine/src/dashboards/simple-kanban-board.controller.ts

88 lines
3.1 KiB
TypeScript

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<string>('simpleKanbanBoard.path');
}
@Get('/tree/:name/raw')
async getRawData(@Param('name') name: string): Promise<any> {
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<any> {
return await this.getRawData(name);
}
@Get('/by-users/:name/raw')
async getByUsersRawData(@Param('name') name: string): Promise<any> {
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<any> {
return await this.getByUsersRawData(name);
}
@Get('/by-users-like-jira/:name/raw')
async getByUsersLikeJiraRawData(@Param('name') name: string): Promise<any> {
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<any> {
return await this.getByUsersLikeJiraRawData(name);
}
@Get('/by-tags/:name/raw')
async getByTagsRawData(@Param('name') name: string): Promise<any> {
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<any> {
return await this.getByTagsRawData(name);
}
}