Слияние кода завершено, страница обновится автоматически
import { observable, action } from 'mobx';
import { getBrokersMetricsHistory } from 'lib/api';
import { IClusterMetrics } from 'types/base-type';
class AdminMonitor {
@observable
public currentClusterId = null as number;
@observable
public currentBrokerId = null as number;
@observable
public brokersMetricsHistory: IClusterMetrics[];
public requestId = null as any;
@action.bound
public setCurrentClusterId(clusterId: number) {
this.currentClusterId = clusterId;
}
@action.bound
public setCurrentBrokerId(brokeId: number) {
this.currentBrokerId = brokeId;
}
@action.bound
public setRequestId(requestId: any) {
this.requestId = requestId;
}
@action.bound
public setBrokersChartsData(data: IClusterMetrics[]) {
this.brokersMetricsHistory = data;
this.setRequestId(null);
return data;
}
public getBrokersMetricsList = async (startTime: string, endTime: string) => {
if (this.requestId && this.requestId !== 'error') {
return new Promise((res, rej) => {
window.setTimeout(() => {
if (this.requestId === 'error') {
rej();
} else {
res(this.brokersMetricsHistory);
}
}, 800); // TODO: 该实现方式待优化
});
}
this.setRequestId('requesting');
return getBrokersMetricsHistory(this.currentClusterId, this.currentBrokerId, startTime, endTime)
.then(this.setBrokersChartsData).catch(() => this.setRequestId('error'));
}
public getBrokersChartsData = async (startTime: string, endTime: string, reload?: boolean) => {
if (this.brokersMetricsHistory && !reload) {
return new Promise(res => res(this.brokersMetricsHistory));
}
return this.getBrokersMetricsList(startTime, endTime);
}
}
export const adminMonitor = new AdminMonitor();
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Комментарий ( 0 )