Добавлен 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,
|
skip_empty_lines: true,
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
const resp = await fetch(urlQuery, {
|
let resp;
|
||||||
headers: {
|
try {
|
||||||
'X-Redmine-API-Key': this.redmineToken,
|
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();
|
const rawData = await resp.text();
|
||||||
let res;
|
let res;
|
||||||
try {
|
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 { DailyEccmV2ReportTaskRunnerService } from './reports/daily-eccm-v2-report-task-runner.service';
|
||||||
import { DashboardsService } from '@app/event-emitter/dashboards/dashboards.service';
|
import { DashboardsService } from '@app/event-emitter/dashboards/dashboards.service';
|
||||||
import { DailyEccmReportsV2Datasource } from './couchdb-datasources/daily-eccm-reports-v2.datasource';
|
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({
|
@Module({
|
||||||
imports: [
|
imports: [
|
||||||
|
|
@ -121,6 +122,7 @@ import { DailyEccmReportsV2Datasource } from './couchdb-datasources/daily-eccm-r
|
||||||
DashboardsService,
|
DashboardsService,
|
||||||
DailyEccmReportsV2Datasource,
|
DailyEccmReportsV2Datasource,
|
||||||
DailyEccmV2ReportTaskRunnerService,
|
DailyEccmV2ReportTaskRunnerService,
|
||||||
|
DailyEccmReportsV2DataLoaderService,
|
||||||
],
|
],
|
||||||
})
|
})
|
||||||
export class AppModule implements OnModuleInit {
|
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 { WidgetsCollectionService } from '@app/event-emitter/dashboards/widgets-collection.service';
|
||||||
import { IssuesByTagsWidgetDataLoaderService } from './widget-data-loader/issues-by-tags.widget-data-loader.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 { 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()
|
@Injectable()
|
||||||
export class DashboardInitService {
|
export class DashboardInitService {
|
||||||
constructor(
|
constructor(
|
||||||
private issuesByTagsWidgetDataLoaderService: IssuesByTagsWidgetDataLoaderService,
|
private issuesByTagsWidgetDataLoaderService: IssuesByTagsWidgetDataLoaderService,
|
||||||
|
private dailyEccmReportsV2DataLoaderService: DailyEccmReportsV2DataLoaderService,
|
||||||
private widgetsCollectionService: WidgetsCollectionService,
|
private widgetsCollectionService: WidgetsCollectionService,
|
||||||
) {}
|
) {}
|
||||||
|
|
||||||
|
|
@ -20,6 +23,10 @@ export class DashboardInitService {
|
||||||
this.issuesByTagsWidgetDataLoaderService,
|
this.issuesByTagsWidgetDataLoaderService,
|
||||||
'issues_list_by_tags',
|
'issues_list_by_tags',
|
||||||
),
|
),
|
||||||
|
createInteractiveWidget(
|
||||||
|
this.dailyEccmReportsV2DataLoaderService,
|
||||||
|
DAILY_ECCM_V2_WIDGET_TYPE,
|
||||||
|
),
|
||||||
];
|
];
|
||||||
collection.forEach((w) => this.widgetsCollectionService.appendWidget(w));
|
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