Merge branch 'feature/4661-gateway-sync' of github.com:maxunbearable/thingsboard into feature/4661-gateway-sync
This commit is contained in:
		
						commit
						24bcdd89e0
					
				@ -88,6 +88,7 @@ export enum MenuId {
 | 
			
		||||
  devices = 'devices',
 | 
			
		||||
  assets = 'assets',
 | 
			
		||||
  entity_views = 'entity_views',
 | 
			
		||||
  gateways = 'gateways',
 | 
			
		||||
  profiles = 'profiles',
 | 
			
		||||
  device_profiles = 'device_profiles',
 | 
			
		||||
  asset_profiles = 'asset_profiles',
 | 
			
		||||
@ -508,6 +509,16 @@ export const menuSectionMap = new Map<MenuId, MenuSection>([
 | 
			
		||||
      icon: 'view_quilt'
 | 
			
		||||
    }
 | 
			
		||||
  ],
 | 
			
		||||
  [
 | 
			
		||||
    MenuId.gateways,
 | 
			
		||||
    {
 | 
			
		||||
      id: MenuId.gateways,
 | 
			
		||||
      name: 'gateway.gateways',
 | 
			
		||||
      type: 'link',
 | 
			
		||||
      path: '/entities/gateways',
 | 
			
		||||
      icon: 'tb_gateway'
 | 
			
		||||
    }
 | 
			
		||||
  ],
 | 
			
		||||
  [
 | 
			
		||||
    MenuId.profiles,
 | 
			
		||||
    {
 | 
			
		||||
@ -725,7 +736,8 @@ const defaultUserMenuMap = new Map<Authority, MenuReference[]>([
 | 
			
		||||
        pages: [
 | 
			
		||||
          {id: MenuId.devices},
 | 
			
		||||
          {id: MenuId.assets},
 | 
			
		||||
          {id: MenuId.entity_views}
 | 
			
		||||
          {id: MenuId.entity_views},
 | 
			
		||||
          {id: MenuId.gateways}
 | 
			
		||||
        ]
 | 
			
		||||
      },
 | 
			
		||||
      {
 | 
			
		||||
 | 
			
		||||
@ -15,4 +15,4 @@
 | 
			
		||||
    limitations under the License.
 | 
			
		||||
 | 
			
		||||
-->
 | 
			
		||||
<tb-dashboard-page [embedded]="true" [dashboard]="apiUsageDashboard"></tb-dashboard-page>
 | 
			
		||||
<tb-dashboard-page [embedded]="true" [dashboard]="dashboard"></tb-dashboard-page>
 | 
			
		||||
@ -22,13 +22,13 @@ import { Dashboard } from '@shared/models/dashboard.models';
 | 
			
		||||
import { ActivatedRoute } from '@angular/router';
 | 
			
		||||
 | 
			
		||||
@Component({
 | 
			
		||||
  selector: 'tb-api-usage',
 | 
			
		||||
  templateUrl: './api-usage.component.html',
 | 
			
		||||
  styleUrls: ['./api-usage.component.scss']
 | 
			
		||||
  selector: 'tb-dashboard-view',
 | 
			
		||||
  templateUrl: './dashboard-view.component.html',
 | 
			
		||||
  styleUrls: ['./dashboard-view.component.scss']
 | 
			
		||||
})
 | 
			
		||||
export class ApiUsageComponent extends PageComponent {
 | 
			
		||||
export class DashboardViewComponent extends PageComponent {
 | 
			
		||||
 | 
			
		||||
  apiUsageDashboard: Dashboard = this.route.snapshot.data.apiUsageDashboard;
 | 
			
		||||
  dashboard: Dashboard = this.route.snapshot.data.dashboard;
 | 
			
		||||
 | 
			
		||||
  constructor(protected store: Store<AppState>,
 | 
			
		||||
              private route: ActivatedRoute) {
 | 
			
		||||
@ -182,6 +182,7 @@ import {
 | 
			
		||||
  SelectDashboardBreakpointComponent
 | 
			
		||||
} from '@home/components/dashboard-page/layout/select-dashboard-breakpoint.component';
 | 
			
		||||
import { EntityChipsComponent } from '@home/components/entity/entity-chips.component';
 | 
			
		||||
import { DashboardViewComponent } from '@home/components/dashboard-view/dashboard-view.component';
 | 
			
		||||
 | 
			
		||||
@NgModule({
 | 
			
		||||
  declarations:
 | 
			
		||||
@ -324,7 +325,8 @@ import { EntityChipsComponent } from '@home/components/entity/entity-chips.compo
 | 
			
		||||
      RateLimitsTextComponent,
 | 
			
		||||
      RateLimitsDetailsDialogComponent,
 | 
			
		||||
      SendNotificationButtonComponent,
 | 
			
		||||
      EntityChipsComponent
 | 
			
		||||
      EntityChipsComponent,
 | 
			
		||||
      DashboardViewComponent
 | 
			
		||||
    ],
 | 
			
		||||
  imports: [
 | 
			
		||||
    CommonModule,
 | 
			
		||||
@ -460,7 +462,8 @@ import { EntityChipsComponent } from '@home/components/entity/entity-chips.compo
 | 
			
		||||
    RateLimitsTextComponent,
 | 
			
		||||
    RateLimitsDetailsDialogComponent,
 | 
			
		||||
    SendNotificationButtonComponent,
 | 
			
		||||
    EntityChipsComponent
 | 
			
		||||
    EntityChipsComponent,
 | 
			
		||||
    DashboardViewComponent
 | 
			
		||||
  ],
 | 
			
		||||
  providers: [
 | 
			
		||||
    WidgetComponentService,
 | 
			
		||||
 | 
			
		||||
@ -17,11 +17,11 @@
 | 
			
		||||
import { inject, NgModule } from '@angular/core';
 | 
			
		||||
import { ActivatedRouteSnapshot, ResolveFn, RouterModule, RouterStateSnapshot, Routes } from '@angular/router';
 | 
			
		||||
import { Authority } from '@shared/models/authority.enum';
 | 
			
		||||
import { ApiUsageComponent } from '@home/pages/api-usage/api-usage.component';
 | 
			
		||||
import { Dashboard } from '@shared/models/dashboard.models';
 | 
			
		||||
import { ResourcesService } from '@core/services/resources.service';
 | 
			
		||||
import { Observable } from 'rxjs';
 | 
			
		||||
import { MenuId } from '@core/services/menu.models';
 | 
			
		||||
import { DashboardViewComponent } from '@home/components/dashboard-view/dashboard-view.component';
 | 
			
		||||
 | 
			
		||||
const apiUsageDashboardJson = '/assets/dashboard/api_usage.json';
 | 
			
		||||
 | 
			
		||||
@ -34,7 +34,7 @@ export const apiUsageDashboardResolver: ResolveFn<Dashboard> = (
 | 
			
		||||
const routes: Routes = [
 | 
			
		||||
  {
 | 
			
		||||
    path: 'usage',
 | 
			
		||||
    component: ApiUsageComponent,
 | 
			
		||||
    component: DashboardViewComponent,
 | 
			
		||||
    data: {
 | 
			
		||||
      auth: [Authority.TENANT_ADMIN],
 | 
			
		||||
      title: 'api-usage.api-usage',
 | 
			
		||||
@ -43,7 +43,7 @@ const routes: Routes = [
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    resolve: {
 | 
			
		||||
      apiUsageDashboard: apiUsageDashboardResolver
 | 
			
		||||
      dashboard: apiUsageDashboardResolver
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
];
 | 
			
		||||
 | 
			
		||||
@ -18,14 +18,9 @@ import { NgModule } from '@angular/core';
 | 
			
		||||
import { CommonModule } from '@angular/common';
 | 
			
		||||
import { SharedModule } from '@app/shared/shared.module';
 | 
			
		||||
import { HomeComponentsModule } from '@modules/home/components/home-components.module';
 | 
			
		||||
import { ApiUsageComponent } from '@home/pages/api-usage/api-usage.component';
 | 
			
		||||
import { ApiUsageRoutingModule } from '@home/pages/api-usage/api-usage-routing.module';
 | 
			
		||||
 | 
			
		||||
@NgModule({
 | 
			
		||||
  declarations:
 | 
			
		||||
    [
 | 
			
		||||
      ApiUsageComponent
 | 
			
		||||
    ],
 | 
			
		||||
  imports: [
 | 
			
		||||
    CommonModule,
 | 
			
		||||
    SharedModule,
 | 
			
		||||
 | 
			
		||||
@ -24,8 +24,6 @@ import { EntityDetailsPageComponent } from '@home/components/entity/entity-detai
 | 
			
		||||
import { ConfirmOnExitGuard } from '@core/guards/confirm-on-exit.guard';
 | 
			
		||||
import { entityDetailsPageBreadcrumbLabelFunction } from '@home/pages/home-pages.models';
 | 
			
		||||
import { BreadCrumbConfig } from '@shared/components/breadcrumb';
 | 
			
		||||
import { assetRoutes } from '@home/pages/asset/asset-routing.module';
 | 
			
		||||
import { entityViewRoutes } from '@home/pages/entity-view/entity-view-routing.module';
 | 
			
		||||
import { MenuId } from '@core/services/menu.models';
 | 
			
		||||
 | 
			
		||||
export const deviceRoutes: Routes = [
 | 
			
		||||
 | 
			
		||||
@ -20,6 +20,7 @@ import { NgModule } from '@angular/core';
 | 
			
		||||
import { deviceRoutes } from '@home/pages/device/device-routing.module';
 | 
			
		||||
import { assetRoutes } from '@home/pages/asset/asset-routing.module';
 | 
			
		||||
import { entityViewRoutes } from '@home/pages/entity-view/entity-view-routing.module';
 | 
			
		||||
import { gatewaysRoutes } from '@home/pages/gateways/gateways-routing.module';
 | 
			
		||||
 | 
			
		||||
const routes: Routes = [
 | 
			
		||||
  {
 | 
			
		||||
@ -41,7 +42,8 @@ const routes: Routes = [
 | 
			
		||||
      },
 | 
			
		||||
      ...deviceRoutes,
 | 
			
		||||
      ...assetRoutes,
 | 
			
		||||
      ...entityViewRoutes
 | 
			
		||||
      ...entityViewRoutes,
 | 
			
		||||
      ...gatewaysRoutes
 | 
			
		||||
    ]
 | 
			
		||||
  }
 | 
			
		||||
];
 | 
			
		||||
 | 
			
		||||
@ -0,0 +1,63 @@
 | 
			
		||||
///
 | 
			
		||||
/// Copyright © 2016-2024 The Thingsboard Authors
 | 
			
		||||
///
 | 
			
		||||
/// Licensed under the Apache License, Version 2.0 (the "License");
 | 
			
		||||
/// you may not use this file except in compliance with the License.
 | 
			
		||||
/// You may obtain a copy of the License at
 | 
			
		||||
///
 | 
			
		||||
///     http://www.apache.org/licenses/LICENSE-2.0
 | 
			
		||||
///
 | 
			
		||||
/// Unless required by applicable law or agreed to in writing, software
 | 
			
		||||
/// distributed under the License is distributed on an "AS IS" BASIS,
 | 
			
		||||
/// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 | 
			
		||||
/// See the License for the specific language governing permissions and
 | 
			
		||||
/// limitations under the License.
 | 
			
		||||
///
 | 
			
		||||
 | 
			
		||||
import { inject, NgModule } from '@angular/core';
 | 
			
		||||
import { ActivatedRouteSnapshot, ResolveFn, RouterModule, RouterStateSnapshot, Routes } from '@angular/router';
 | 
			
		||||
import { Authority } from '@shared/models/authority.enum';
 | 
			
		||||
import { Dashboard } from '@shared/models/dashboard.models';
 | 
			
		||||
import { ResourcesService } from '@core/services/resources.service';
 | 
			
		||||
import { Observable } from 'rxjs';
 | 
			
		||||
import { MenuId } from '@core/services/menu.models';
 | 
			
		||||
import { DashboardViewComponent } from '@home/components/dashboard-view/dashboard-view.component';
 | 
			
		||||
 | 
			
		||||
const gatewaysDashboardJson = '/api/resource/dashboard/system/gateways_dashboard.json';
 | 
			
		||||
 | 
			
		||||
export const gatewaysDashboardResolver: ResolveFn<Dashboard> = (
 | 
			
		||||
  route: ActivatedRouteSnapshot,
 | 
			
		||||
  state: RouterStateSnapshot,
 | 
			
		||||
  resourcesService = inject(ResourcesService)
 | 
			
		||||
): Observable<Dashboard> => resourcesService.loadJsonResource(gatewaysDashboardJson);
 | 
			
		||||
 | 
			
		||||
export const gatewaysRoutes: Routes = [
 | 
			
		||||
  {
 | 
			
		||||
    path: 'gateways',
 | 
			
		||||
    component: DashboardViewComponent,
 | 
			
		||||
    data: {
 | 
			
		||||
      auth: [Authority.TENANT_ADMIN],
 | 
			
		||||
      title: 'gateway.gateways',
 | 
			
		||||
      breadcrumb: {
 | 
			
		||||
        menuId: MenuId.gateways
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    resolve: {
 | 
			
		||||
      dashboard: gatewaysDashboardResolver
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
];
 | 
			
		||||
 | 
			
		||||
const routes: Routes = [
 | 
			
		||||
  {
 | 
			
		||||
    path: 'gateways',
 | 
			
		||||
    pathMatch: 'full',
 | 
			
		||||
    redirectTo: '/entities/gateways'
 | 
			
		||||
  },
 | 
			
		||||
];
 | 
			
		||||
 | 
			
		||||
@NgModule({
 | 
			
		||||
  imports: [RouterModule.forChild(routes)],
 | 
			
		||||
  exports: [RouterModule]
 | 
			
		||||
})
 | 
			
		||||
export class GatewaysRoutingModule { }
 | 
			
		||||
@ -0,0 +1,31 @@
 | 
			
		||||
///
 | 
			
		||||
/// Copyright © 2016-2024 The Thingsboard Authors
 | 
			
		||||
///
 | 
			
		||||
/// Licensed under the Apache License, Version 2.0 (the "License");
 | 
			
		||||
/// you may not use this file except in compliance with the License.
 | 
			
		||||
/// You may obtain a copy of the License at
 | 
			
		||||
///
 | 
			
		||||
///     http://www.apache.org/licenses/LICENSE-2.0
 | 
			
		||||
///
 | 
			
		||||
/// Unless required by applicable law or agreed to in writing, software
 | 
			
		||||
/// distributed under the License is distributed on an "AS IS" BASIS,
 | 
			
		||||
/// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 | 
			
		||||
/// See the License for the specific language governing permissions and
 | 
			
		||||
/// limitations under the License.
 | 
			
		||||
///
 | 
			
		||||
 | 
			
		||||
import { NgModule } from '@angular/core';
 | 
			
		||||
import { CommonModule } from '@angular/common';
 | 
			
		||||
import { SharedModule } from '@app/shared/shared.module';
 | 
			
		||||
import { HomeComponentsModule } from '@modules/home/components/home-components.module';
 | 
			
		||||
import { GatewaysRoutingModule } from '@home/pages/gateways/gateways-routing.module';
 | 
			
		||||
 | 
			
		||||
@NgModule({
 | 
			
		||||
  imports: [
 | 
			
		||||
    CommonModule,
 | 
			
		||||
    SharedModule,
 | 
			
		||||
    HomeComponentsModule,
 | 
			
		||||
    GatewaysRoutingModule
 | 
			
		||||
  ]
 | 
			
		||||
})
 | 
			
		||||
export class GatewaysModule { }
 | 
			
		||||
@ -44,6 +44,7 @@ import { FeaturesModule } from '@home/pages/features/features.module';
 | 
			
		||||
import { NotificationModule } from '@home/pages/notification/notification.module';
 | 
			
		||||
import { AccountModule } from '@home/pages/account/account.module';
 | 
			
		||||
import { ScadaSymbolModule } from '@home/pages/scada-symbol/scada-symbol.module';
 | 
			
		||||
import { GatewaysModule } from '@home/pages/gateways/gateways.module';
 | 
			
		||||
 | 
			
		||||
@NgModule({
 | 
			
		||||
  exports: [
 | 
			
		||||
@ -70,6 +71,7 @@ import { ScadaSymbolModule } from '@home/pages/scada-symbol/scada-symbol.module'
 | 
			
		||||
    DashboardModule,
 | 
			
		||||
    AuditLogModule,
 | 
			
		||||
    ApiUsageModule,
 | 
			
		||||
    GatewaysModule,
 | 
			
		||||
    OtaUpdateModule,
 | 
			
		||||
    UserModule,
 | 
			
		||||
    VcModule,
 | 
			
		||||
 | 
			
		||||
@ -62,7 +62,20 @@ export const svgIcons: {[key: string]: string} = {
 | 
			
		||||
    '4.6760606 4.678212,7.3604329 7.3397982,4.6839955 4.6657413,2.0041717 6.6653477,2.2309572e-4 9.3360035,2.6766286 11.997681,' +
 | 
			
		||||
    '0 14.659287,2.6765011 Z m -5.332255,4.0079963 1.999613,2.003945 -7.99844,8.0158157 -1.9996133,-2.004017 z m 1.676684,4.3522483 ' +
 | 
			
		||||
    '1.999613,2.0039454 -6.6654242,6.679793 -1.9996133,-2.003874 z m 2.988987,7.0033574 -1.999544,-2.003945 -4.6658108,4.675848 ' +
 | 
			
		||||
    '1.9996128,2.004015 z"/></svg>'
 | 
			
		||||
    '1.9996128,2.004015 z"/></svg>',
 | 
			
		||||
  tb_gateway: `<svg xmlns="http://www.w3.org/2000/svg" viewBox="6 4 42 46" width="18" height="18">
 | 
			
		||||
    <path d="M41.633 47.719c0-.559.453-1.012 1.008-1.012.554 0 1.007.453 1.007 1.012v1.008c0 .558-.453 1.011-1.007 1.011a1.011 1.011 0 0 1-1.008-1.011ZM38.617 47.719c0-.559.45-1.012 1.004-1.012.559 0 1.008.453 1.008 1.012v1.008c0 .558-.45 1.011-1.008 1.011a1.008 1.008 0 0 1-1.004-1.011ZM35.598 47.719c0-.559.449-1.012 1.004-1.012.558 0 1.007.453 1.007 1.012v1.008c0 .558-.449 1.011-1.007 1.011a1.008 1.008 0 0 1-1.004-1.011ZM32.578 47.719c0-.559.453-1.012 1.008-1.012.555 0 1.004.453 1.004 1.012v1.008c0 .558-.45 1.011-1.004 1.011a1.011 1.011 0 0 1-1.008-1.011ZM44.652 44.684a1.01 1.01 0 0 1 1.008-1.008h1.004c.559 0 1.008.453 1.008 1.008 0 .558-.45 1.011-1.008 1.011H45.66a1.011 1.011 0 0 1-1.008-1.011ZM28.555 44.684c0-.555.449-1.008 1.004-1.008h1.007a1.01 1.01 0 0 1 0 2.02H29.56a1.008 1.008 0 0 1-1.004-1.012Z"/>
 | 
			
		||||
    <path d="M15.477 35.59h-3.02v3.031c0 2.234 1.8 4.043 4.023 4.043h2.012a4.035 4.035 0 0 0 4.028-4.043V35.59H19.5v2.023h-4.023ZM7.074 41.309a.75.75 0 0 0-.746.75c0 3.73 3.012 6.754 6.723 6.754a.751.751 0 0 0 0-1.504c-2.887 0-5.227-2.352-5.227-5.25a.75.75 0 0 0-.75-.75Z"/>
 | 
			
		||||
    <path d="M9.977 41.023a.75.75 0 0 0-.747.75 4.118 4.118 0 0 0 4.11 4.125.747.747 0 0 0 .746-.75.747.747 0 0 0-.746-.75 2.622 2.622 0 0 1-2.617-2.625.747.747 0 0 0-.746-.75Z"/>
 | 
			
		||||
    <path d="M44.652 41.66c0-.558.453-1.012 1.008-1.012h1.004c.559 0 1.008.454 1.008 1.012 0 .555-.45 1.008-1.008 1.008H45.66a1.01 1.01 0 0 1-1.008-1.008ZM28.555 41.66c0-.558.449-1.012 1.004-1.012h1.007a1.01 1.01 0 0 1 0 2.02H29.56a1.007 1.007 0 0 1-1.004-1.008ZM44.652 38.621c0-.559.453-1.012 1.008-1.012h1.004c.559 0 1.008.453 1.008 1.012 0 .559-.45 1.012-1.008 1.012H45.66a1.011 1.011 0 0 1-1.008-1.012ZM28.555 38.621c0-.559.449-1.012 1.004-1.012h1.007a1.011 1.011 0 0 1 0 2.024H29.56a1.008 1.008 0 0 1-1.004-1.012ZM44.652 35.594c0-.559.453-1.012 1.008-1.012h1.004c.559 0 1.008.453 1.008 1.012 0 .558-.45 1.011-1.008 1.011H45.66a1.011 1.011 0 0 1-1.008-1.011ZM28.555 35.594c0-.559.449-1.012 1.004-1.012h1.007a1.011 1.011 0 0 1 0 2.023H29.56a1.008 1.008 0 0 1-1.004-1.011Z"/>
 | 
			
		||||
    <path d="M12.457 33.57c0-.558.45-1.011 1.004-1.011h8.05c.555 0 1.009.453 1.009 1.011v1.008H12.457Z"/>
 | 
			
		||||
    <path d="M41.633 31.55c0-.558.453-1.01 1.008-1.01.554 0 1.007.452 1.007 1.01v1.009c0 .558-.453 1.011-1.007 1.011a1.011 1.011 0 0 1-1.008-1.011Z"/>
 | 
			
		||||
    <path d="M27.547 10.184v2.168h2.015v-2.168a3.592 3.592 0 0 1-2.015 0Zm3.02 16.316v-4.043h2.011V26.5h4.027c1.11 0 2.012.906 2.012 2.023v2.02h-2.012v-2.02h-4.027a2.019 2.019 0 0 1-2.012-2.023Zm-4.024-4.043V26.5a2.019 2.019 0 0 1-2.012 2.023h-6.039v2.02H16.48v-2.02c0-1.117.903-2.023 2.012-2.023h6.04v-4.043Z"/>
 | 
			
		||||
    <path d="M32.578 31.55c0-.558.453-1.01 1.008-1.01.555 0 1.004.452 1.004 1.01v1.009c0 .558-.45 1.011-1.004 1.011a1.011 1.011 0 0 1-1.008-1.011Z"/>
 | 
			
		||||
    <path d="M32.578 32.559c-1.11 0-2.012.906-2.012 2.02v11.116c0 1.117.903 2.024 2.012 2.024h11.067a2.02 2.02 0 0 0 2.015-2.024V34.578c0-1.113-.902-2.02-2.015-2.02Zm1.008 2.02c-.559 0-1.008.452-1.008 1.01v9.099c0 .558.45 1.007 1.008 1.007h9.055c.554 0 1.004-.449 1.004-1.008V35.59c0-.559-.45-1.012-1.004-1.012Z"/>
 | 
			
		||||
    <path d="M38.617 40.648h3.016v3.032h-3.016ZM34.59 40.648h3.02v3.032h-3.02ZM38.617 36.602h3.016v3.035h-3.016ZM34.59 36.602h3.02v3.035h-3.02Z"/>
 | 
			
		||||
    <path d="M28.555 9.313a2.518 2.518 0 0 0 2.515-2.524 2.519 2.519 0 0 0-2.515-2.527 2.519 2.519 0 0 0-2.516 2.527 2.518 2.518 0 0 0 2.516 2.524Zm-11.067 4.042a2.02 2.02 0 0 0-2.015 2.024v4.043c0 1.113.902 2.02 2.015 2.02h22.133a2.016 2.016 0 0 0 2.012-2.02v-4.043a2.016 2.016 0 0 0-2.012-2.024Zm1.004 4.043a1.01 1.01 0 0 0 0-2.02c-.555 0-1.004.454-1.004 1.013 0 .554.45 1.007 1.004 1.007Zm4.028-1.007a1.01 1.01 0 0 1-1.008 1.007 1.01 1.01 0 0 1 0-2.02c.554 0 1.008.454 1.008 1.013Z"/>
 | 
			
		||||
  </svg>`,
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
export const svgIconsUrl: { [key: string]: string } = {
 | 
			
		||||
 | 
			
		||||
@ -2837,13 +2837,9 @@
 | 
			
		||||
        "function": "Function"
 | 
			
		||||
    },
 | 
			
		||||
    "gateway": {
 | 
			
		||||
        "gateway-exists": "Device with same name is already exists.",
 | 
			
		||||
        "gateway-name": "Gateway name",
 | 
			
		||||
        "gateway-name-required": "Gateway name is required.",
 | 
			
		||||
        "gateway-saved": "Gateway configuration successfully saved.",
 | 
			
		||||
        "gateway": "Gateway",
 | 
			
		||||
        "launch-gateway": "Launch gateway",
 | 
			
		||||
        "launch-command": "Launch command",
 | 
			
		||||
        "gateways": "Gateways",
 | 
			
		||||
        "create-new-gateway": "Create a new gateway",
 | 
			
		||||
        "create-new-gateway-text": "Are you sure you want create a new gateway with name: '{{gatewayName}}'?",
 | 
			
		||||
        "no-gateway-found": "No gateway found.",
 | 
			
		||||
 | 
			
		||||
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user