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 { MatDialogRef } from '@angular/material/dialog';
import { TbUnit } from '@shared/models/unit.models'; import { TbUnit } from '@shared/models/unit.models';
import { UnitService } from '@core/services/unit.service'; import { UnitService } from '@core/services/unit.service';
import { HttpOptionsResult, HttpUploadOptionsResult, QueryParams, RequestConfig } from '@core/http/http-utils';
export interface TimewindowFunctions { export interface TimewindowFunctions {
onUpdateTimewindow: (startTimeMs: number, endTimeMs: number, interval?: number) => void; onUpdateTimewindow: (startTimeMs: number, endTimeMs: number, interval?: number) => void;
@ -94,6 +95,14 @@ export interface IWidgetUtils {
getEntityDetailsPageURL: (id: string, entityType: EntityType) => string; 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 { export interface PlaceMapItemActionData {
action: WidgetAction | WidgetActionDescriptor; action: WidgetAction | WidgetActionDescriptor;
additionalParams?: any; additionalParams?: any;

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

@ -15,7 +15,7 @@
/// ///
import { InterceptorHttpParams } from '../interceptors/interceptor-http-params'; 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'; import { InterceptorConfig } from '../interceptors/interceptor-config';
export type QueryParams = { [param:string]: any }; export type QueryParams = { [param:string]: any };
@ -27,6 +27,15 @@ export interface RequestConfig {
queryParams?: QueryParams; queryParams?: QueryParams;
} }
export interface HttpOptionsResult {
headers: HttpHeaders;
params: HttpParams;
}
export interface HttpUploadOptionsResult {
params: HttpParams;
}
export function hasRequestConfig(config?: any): boolean { export function hasRequestConfig(config?: any): boolean {
if (!config) { if (!config) {
return false; 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 { import {
IAliasController, IAliasController,
IStateController, IStateController,
IWidgetHttpUtils,
IWidgetSubscription, IWidgetSubscription,
IWidgetUtils, IWidgetUtils,
RpcApi, RpcApi,
@ -58,6 +59,13 @@ import {
ViewContainerRef ViewContainerRef
} from '@angular/core'; } from '@angular/core';
import { HttpClient, HttpErrorResponse } from '@angular/common/http'; 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 { RafService } from '@core/services/raf.service';
import { WidgetTypeId } from '@shared/models/id/widget-type-id'; import { WidgetTypeId } from '@shared/models/id/widget-type-id';
import { TenantId } from '@shared/models/id/tenant-id'; import { TenantId } from '@shared/models/id/tenant-id';
@ -68,7 +76,8 @@ import {
formatValue, formatValue,
getEntityDetailsPageURL, getEntityDetailsPageURL,
hasDatasourceLabelsVariables, hasDatasourceLabelsVariables,
isDefined, isDefinedAndNotNull isDefined,
isDefinedAndNotNull
} from '@core/utils'; } from '@core/utils';
import { Store } from '@ngrx/store'; import { Store } from '@ngrx/store';
import { AppState } from '@core/core.state'; import { AppState } from '@core/core.state';
@ -294,6 +303,14 @@ export class WidgetContext {
getEntityDetailsPageURL getEntityDetailsPageURL
}; };
httpUtils: IWidgetHttpUtils = {
defaultHttpOptions,
defaultHttpOptionsFromConfig,
defaultHttpOptionsFromParams,
defaultHttpUploadOptions,
createDefaultHttpOptions
};
$widgetElement: JQuery<HTMLElement>; $widgetElement: JQuery<HTMLElement>;
$container: JQuery<HTMLElement>; $container: JQuery<HTMLElement>;
$containerParent: JQuery<HTMLElement>; $containerParent: JQuery<HTMLElement>;

Loading…
Cancel
Save