Добавлен data-loader для нового виджета на backend-е
This commit is contained in:
parent
20b70c5799
commit
77352a497b
4 changed files with 63 additions and 5 deletions
|
|
@ -119,11 +119,19 @@ export class RedmineDataLoader {
|
|||
skip_empty_lines: true,
|
||||
};
|
||||
}
|
||||
const resp = await fetch(urlQuery, {
|
||||
let resp;
|
||||
try {
|
||||
resp = await fetch(urlQuery, {
|
||||
headers: {
|
||||
'X-Redmine-API-Key': this.redmineToken,
|
||||
},
|
||||
});
|
||||
} catch (err) {
|
||||
this.logger.error(
|
||||
`Failed to fetch data from Redmine by url ${urlQuery}: ${err}`,
|
||||
);
|
||||
return null;
|
||||
}
|
||||
const rawData = await resp.text();
|
||||
let res;
|
||||
try {
|
||||
|
|
|
|||
|
|
@ -57,6 +57,7 @@ import { TelegramBotController } from './telegram-bot/telegram-bot.controller';
|
|||
import { DailyEccmV2ReportTaskRunnerService } from './reports/daily-eccm-v2-report-task-runner.service';
|
||||
import { DashboardsService } from '@app/event-emitter/dashboards/dashboards.service';
|
||||
import { DailyEccmReportsV2Datasource } from './couchdb-datasources/daily-eccm-reports-v2.datasource';
|
||||
import { DailyEccmReportsV2DataLoaderService } from './eccm-statistic/dashboards/widget-data-loader/daily-eccm-v2.widget-data-loader.service';
|
||||
|
||||
@Module({
|
||||
imports: [
|
||||
|
|
@ -121,6 +122,7 @@ import { DailyEccmReportsV2Datasource } from './couchdb-datasources/daily-eccm-r
|
|||
DashboardsService,
|
||||
DailyEccmReportsV2Datasource,
|
||||
DailyEccmV2ReportTaskRunnerService,
|
||||
DailyEccmReportsV2DataLoaderService,
|
||||
],
|
||||
})
|
||||
export class AppModule implements OnModuleInit {
|
||||
|
|
|
|||
|
|
@ -2,11 +2,14 @@ import { Injectable } from '@nestjs/common';
|
|||
import { WidgetsCollectionService } from '@app/event-emitter/dashboards/widgets-collection.service';
|
||||
import { IssuesByTagsWidgetDataLoaderService } from './widget-data-loader/issues-by-tags.widget-data-loader.service';
|
||||
import { createInteractiveWidget } from '@app/event-emitter/dashboards/interactive-widget-factory';
|
||||
import { DailyEccmReportsV2DataLoaderService } from 'src/eccm-statistic/dashboards/widget-data-loader/daily-eccm-v2.widget-data-loader.service';
|
||||
import { WIDGET_TYPE as DAILY_ECCM_V2_WIDGET_TYPE } from 'src/reports/daily-eccm-v2-report-task-runner.service';
|
||||
|
||||
@Injectable()
|
||||
export class DashboardInitService {
|
||||
constructor(
|
||||
private issuesByTagsWidgetDataLoaderService: IssuesByTagsWidgetDataLoaderService,
|
||||
private dailyEccmReportsV2DataLoaderService: DailyEccmReportsV2DataLoaderService,
|
||||
private widgetsCollectionService: WidgetsCollectionService,
|
||||
) {}
|
||||
|
||||
|
|
@ -20,6 +23,10 @@ export class DashboardInitService {
|
|||
this.issuesByTagsWidgetDataLoaderService,
|
||||
'issues_list_by_tags',
|
||||
),
|
||||
createInteractiveWidget(
|
||||
this.dailyEccmReportsV2DataLoaderService,
|
||||
DAILY_ECCM_V2_WIDGET_TYPE,
|
||||
),
|
||||
];
|
||||
collection.forEach((w) => this.widgetsCollectionService.appendWidget(w));
|
||||
}
|
||||
|
|
|
|||
|
|
@ -0,0 +1,41 @@
|
|||
import { WidgetDataLoaderInterface } from '@app/event-emitter/dashboards/widget-data-loader-interface';
|
||||
import {
|
||||
AppError,
|
||||
createAppError,
|
||||
fail,
|
||||
Result,
|
||||
success,
|
||||
} from '@app/event-emitter/utils/result';
|
||||
import { Injectable } from '@nestjs/common';
|
||||
import { DailyEccmReportsV2Datasource } from 'src/couchdb-datasources/daily-eccm-reports-v2.datasource';
|
||||
|
||||
@Injectable()
|
||||
export class DailyEccmReportsV2DataLoaderService
|
||||
implements WidgetDataLoaderInterface<any, any, any>
|
||||
{
|
||||
isMyConfig(): boolean {
|
||||
return true;
|
||||
}
|
||||
|
||||
async load(
|
||||
dataLoaderParams: any,
|
||||
dashboardParams: any,
|
||||
dashboardId: string,
|
||||
widgetId: string,
|
||||
): Promise<Result<any, AppError>> {
|
||||
const ds = await DailyEccmReportsV2Datasource.getDatasource();
|
||||
const response = await ds.find({
|
||||
selector: {
|
||||
dashboardId: dashboardId,
|
||||
widgetId: widgetId,
|
||||
latest: true,
|
||||
},
|
||||
limit: 1,
|
||||
});
|
||||
const data = response.docs[0];
|
||||
if (!data) {
|
||||
return fail(createAppError('No data found'));
|
||||
}
|
||||
return success(data);
|
||||
}
|
||||
}
|
||||
Loading…
Reference in a new issue