Browse Source

Expose http-utils functions via WidgetContext.httpUtils

Added IWidgetHttpUtils interface and httpUtils property to WidgetContext
so widget action code can use defaultHttpOptionsFromConfig and related
functions without modifying ThingsBoard source code.
pull/15396/head
Vladyslav_Prykhodko 6 months ago
committed by Vladyslav Prykhodko
parent
commit
5afd7cbfae
  1. 9
      ui-ngx/src/app/core/api/widget-api.models.ts
  2. 11
      ui-ngx/src/app/core/http/http-utils.ts
  3. 19
      ui-ngx/src/app/modules/home/models/widget-component.models.ts

9
ui-ngx/src/app/core/api/widget-api.models.ts

@ -67,6 +67,7 @@ import { DashboardUtilsService } from '@core/services/dashboard-utils.service';
import { MatDialogRef } from '@angular/material/dialog';
import { TbUnit } from '@shared/models/unit.models';
import { UnitService } from '@core/services/unit.service';
import { HttpOptionsResult, HttpUploadOptionsResult, QueryParams, RequestConfig } from '@core/http/http-utils';
export interface TimewindowFunctions {
onUpdateTimewindow: (startTimeMs: number, endTimeMs: number, interval?: number) => void;
@ -94,6 +95,14 @@ export interface IWidgetUtils {
getEntityDetailsPageURL: (id: string, entityType: EntityType) => string;
}
export interface IWidgetHttpUtils {
defaultHttpOptions: (ignoreLoading?: boolean, ignoreErrors?: boolean, resendRequest?: boolean, queryParams?: QueryParams) => HttpOptionsResult;
defaultHttpOptionsFromConfig: (config?: RequestConfig) => HttpOptionsResult;
defaultHttpOptionsFromParams: (queryParams?: QueryParams, config?: RequestConfig) => HttpOptionsResult;
defaultHttpUploadOptions: (ignoreLoading?: boolean, ignoreErrors?: boolean, resendRequest?: boolean, queryParams?: QueryParams) => HttpUploadOptionsResult;
createDefaultHttpOptions: (queryParamsOrConfig?: QueryParams | RequestConfig, config?: RequestConfig) => HttpOptionsResult;
}
export interface PlaceMapItemActionData {
action: WidgetAction | WidgetActionDescriptor;
additionalParams?: any;

11
ui-ngx/src/app/core/http/http-utils.ts

@ -15,7 +15,7 @@
///
import { InterceptorHttpParams } from '../interceptors/interceptor-http-params';
import { HttpHeaders } from '@angular/common/http';
import { HttpHeaders, HttpParams } from '@angular/common/http';
import { InterceptorConfig } from '../interceptors/interceptor-config';
export type QueryParams = { [param:string]: any };
@ -27,6 +27,15 @@ export interface RequestConfig {
queryParams?: QueryParams;
}
export interface HttpOptionsResult {
headers: HttpHeaders;
params: HttpParams;
}
export interface HttpUploadOptionsResult {
params: HttpParams;
}
export function hasRequestConfig(config?: any): boolean {
if (!config) {
return false;

19
ui-ngx/src/app/modules/home/models/widget-component.models.ts

@ -38,6 +38,7 @@ import { Timewindow, WidgetTimewindow } from '@shared/models/time/time.models';
import {
IAliasController,
IStateController,
IWidgetHttpUtils,
IWidgetSubscription,
IWidgetUtils,
RpcApi,
@ -58,6 +59,13 @@ import {
ViewContainerRef
} from '@angular/core';
import { HttpClient, HttpErrorResponse } from '@angular/common/http';
import {
createDefaultHttpOptions,
defaultHttpOptions,
defaultHttpOptionsFromConfig,
defaultHttpOptionsFromParams,
defaultHttpUploadOptions
} from '@core/http/http-utils';
import { RafService } from '@core/services/raf.service';
import { WidgetTypeId } from '@shared/models/id/widget-type-id';
import { TenantId } from '@shared/models/id/tenant-id';
@ -68,7 +76,8 @@ import {
formatValue,
getEntityDetailsPageURL,
hasDatasourceLabelsVariables,
isDefined, isDefinedAndNotNull
isDefined,
isDefinedAndNotNull
} from '@core/utils';
import { Store } from '@ngrx/store';
import { AppState } from '@core/core.state';
@ -294,6 +303,14 @@ export class WidgetContext {
getEntityDetailsPageURL
};
httpUtils: IWidgetHttpUtils = {
defaultHttpOptions,
defaultHttpOptionsFromConfig,
defaultHttpOptionsFromParams,
defaultHttpUploadOptions,
createDefaultHttpOptions
};
$widgetElement: JQuery<HTMLElement>;
$container: JQuery<HTMLElement>;
$containerParent: JQuery<HTMLElement>;

Loading…
Cancel
Save