@schneideress/dashboardframework 0.0.33 → 0.0.35

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,4 +1,4 @@
1
- import { __extends, __assign } from 'tslib';
1
+ import { __extends, __awaiter, __generator, __assign } from 'tslib';
2
2
  import { Injectable, Injector, ɵɵdefineInjectable, ɵɵinject, INJECTOR, Component, NgZone, Input, EventEmitter, ViewChild, Output, ViewEncapsulation, ElementRef, Renderer2, ChangeDetectorRef, Host, NgModule } from '@angular/core';
3
3
  import { of, Subject } from 'rxjs';
4
4
  import { BaseService } from '@schneideress/ess-util';
@@ -8,6 +8,7 @@ import { NotifierService, NotifierModule } from 'angular-notifier';
8
8
  import { TranslateService, TranslateModule } from '@schneideress/ess-base';
9
9
  import { BrowserModule } from '@angular/platform-browser';
10
10
  import { HttpClientModule } from '@angular/common/http';
11
+ import { PerfectScrollbarModule, PERFECT_SCROLLBAR_CONFIG } from 'ngx-perfect-scrollbar';
11
12
  import { CommonModule } from '@angular/common';
12
13
 
13
14
  /**
@@ -383,6 +384,8 @@ var RAEvent = {
383
384
  widgetLibraryDoneClick: "widgetLibraryDoneClick",
384
385
  /**refresh favorite icon after srtting and resetting favorites */
385
386
  favoriteIconRefresh: "favoriteIconRefresh",
387
+ /**to refresh menu content */
388
+ QuickLinkRefresh: "QuickLinkRefresh",
386
389
  };
387
390
  /** @enum {string} */
388
391
  var RAEventKey = {
@@ -919,10 +922,16 @@ var RADashboardArea = /** @class */ (function () {
919
922
  * @return {?}
920
923
  */
921
924
  function () {
925
+ var _this = this;
922
926
  /** @type {?} */
923
927
  var areaScrollHeight = 0;
924
928
  /** @type {?} */
925
929
  var areaHeight = 0;
930
+ /** @type {?} */
931
+ var curRowHeight = 0;
932
+ if (this.options.api) {
933
+ curRowHeight = this.options.api.getCurrentRowHeight();
934
+ }
926
935
  this.widgetList.forEach((/**
927
936
  * @param {?} t
928
937
  * @return {?}
@@ -933,6 +942,10 @@ var RADashboardArea = /** @class */ (function () {
933
942
  if (currentHeight > areaScrollHeight) {
934
943
  areaScrollHeight = currentHeight;
935
944
  }
945
+ if (curRowHeight == 0) {
946
+ currentHeight = _this.widgetList[0].curRowHeight;
947
+ }
948
+ t.widgetInfo.rowHeight = curRowHeight;
936
949
  }));
937
950
  if (this.options.api) {
938
951
  areaHeight = areaScrollHeight * this.options.api.getCurrentRowHeight() + 2;
@@ -1099,6 +1112,7 @@ var RADashboardArea = /** @class */ (function () {
1099
1112
  widget.width = widgetItem.cols;
1100
1113
  widget.position_x = widgetItem.x;
1101
1114
  widget.position_y = widgetItem.y;
1115
+ widget.rowHeight = widgetItem.curRowHeight;
1102
1116
  return widget;
1103
1117
  };
1104
1118
  /**
@@ -1125,7 +1139,7 @@ var RADashboardArea = /** @class */ (function () {
1125
1139
  RADashboardArea.decorators = [
1126
1140
  { type: Component, args: [{
1127
1141
  selector: 'ra-dashboard-area',
1128
- template: "<div #gridWrapper class=\"wrap gridster\" [style.height.px]=\"gridheight\">\r\n<!-- <div #gridWrapper class=\"wrap gridster\"> -->\r\n <gridster [options]=\"options\" style=\"height:100%;\">\r\n <gridster-item [item]=\"item\" *ngFor=\"let item of widgetList\">\r\n <ra-widget-container [app-config]=\"appConfig\" [event-bus]=\"raDashboardEventBus\" (widgetDeleted)=\"deleteWidget($event)\" [data]=\"item\"\r\n [global-filter]=\"globalFilter\" [widget-width]=\"item.cols\" [widget-instance-id]=\"item.widgetInstanceId\"></ra-widget-container>\r\n </gridster-item>\r\n </gridster>\r\n <notifier-container></notifier-container>\r\n</div>\r\n\r\n",
1142
+ template: "<div #gridWrapper class=\"wrap gridster\" [style.height.px]=\"gridheight\">\r\n<!-- <div #gridWrapper class=\"wrap gridster\"> -->\r\n <gridster [options]=\"options\" style=\"height:100%;\">\r\n <gridster-item [item]=\"item\" *ngFor=\"let item of widgetList\">\r\n <ra-widget-container [app-config]=\"appConfig\" [event-bus]=\"raDashboardEventBus\" (widgetDeleted)=\"deleteWidget($event)\" [data]=\"item\"\r\n [global-filter]=\"globalFilter\" [widget-width]=\"item.cols\" [widget-height]=\"item.rows\" [widget-instance-id]=\"item.widgetInstanceId\"></ra-widget-container>\r\n </gridster-item>\r\n </gridster>\r\n <notifier-container></notifier-container>\r\n</div>\r\n\r\n",
1129
1143
  styles: ["gridster{width:inherit;resize:height;display:flex}gridster-item{background:#fff!important}.dvheader{width:100%;height:35px;background:#000;color:#fff;padding:7px 3px 5px 6px;text-transform:uppercase}"]
1130
1144
  }] }
1131
1145
  ];
@@ -1234,8 +1248,7 @@ var RAWidgetContainer = /** @class */ (function () {
1234
1248
  this.notifier = notifier;
1235
1249
  this.isWidgetLoaded = false;
1236
1250
  this.isIEOrEdge = /msie\s|trident\/|edge\//i.test(window.navigator.userAgent);
1237
- this.lockStatus = "unlock";
1238
- this.lockClass = "unlock";
1251
+ this.lockClass = "unlocked";
1239
1252
  this.widgetDeleted = new EventEmitter();
1240
1253
  }
1241
1254
  /**
@@ -1265,11 +1278,14 @@ var RAWidgetContainer = /** @class */ (function () {
1265
1278
  if (this.widgetElement && changes.globalFilter && changes.globalFilter.currentValue != changes.globalFilter.previousValue) {
1266
1279
  this.refreshWidget(this.data.widgetInfo);
1267
1280
  }
1268
- if (changes.widgetWidth && changes.widgetWidth.currentValue != changes.widgetWidth.previousValue) {
1281
+ if (changes.width && changes.width.currentValue != changes.width.previousValue) {
1269
1282
  this.data.widgetInfo.isDimensionUpdate = true;
1270
1283
  this.refreshWidget(this.data.widgetInfo);
1271
1284
  this.data.widgetInfo.isDimensionUpdate = false;
1272
1285
  }
1286
+ if (changes.height && changes.height.currentValue != changes.height.previousValue) {
1287
+ this.setWidgetheight();
1288
+ }
1273
1289
  };
1274
1290
  /**
1275
1291
  * @return {?}
@@ -1375,6 +1391,15 @@ var RAWidgetContainer = /** @class */ (function () {
1375
1391
  this.refreshWidget(this.data.widgetInfo);
1376
1392
  // this.updateWidget(widgetInfo);
1377
1393
  };
1394
+ /**
1395
+ * @return {?}
1396
+ */
1397
+ RAWidgetContainer.prototype.setWidgetheight = /**
1398
+ * @return {?}
1399
+ */
1400
+ function () {
1401
+ this.widgetHeight = this.data.widgetInfo.height * this.data.widgetInfo.rowHeight + 2;
1402
+ };
1378
1403
  /** To load external custom element to the widget container*/
1379
1404
  /**
1380
1405
  * To load external custom element to the widget container
@@ -1387,32 +1412,47 @@ var RAWidgetContainer = /** @class */ (function () {
1387
1412
  * @return {?}
1388
1413
  */
1389
1414
  function (widgetInfo) {
1390
- var _this = this;
1391
- /** @type {?} */
1392
- var widgetConfigFilter = (/** @type {?} */ ({
1393
- config: widgetInfo.widgetConfigInfo.config,
1394
- globalFilter: this.globalFilter
1395
- }));
1396
- /** @type {?} */
1397
- var widgetContainer = this;
1398
- this.dashboardService.loadExternalScript(widgetInfo.scriptUrl, (/**
1399
- * @return {?}
1400
- */
1401
- function () {
1402
- widgetContainer.widgetElement = document.createElement(widgetInfo.customTag);
1403
- widgetContainer.widgetElement.setAttribute("widget-instance-id", widgetInfo.widgetInstanceId);
1404
- document.body.addEventListener('widgetinitiated' + widgetInfo.widgetInstanceId, (/**
1405
- * @return {?}
1406
- */
1407
- function () {
1408
- widgetContainer.isWidgetLoaded = true;
1409
- widgetConfigFilter.appConfig = _this.appConfig;
1410
- widgetConfigFilter.widgetInfo = (/** @type {?} */ ({}));
1411
- widgetConfigFilter.widgetInfo.widgetName = widgetInfo.widgetName;
1412
- widgetContainer.widgetElement.loadContent(widgetConfigFilter);
1413
- }));
1414
- _this.ctlWidget.nativeElement.appendChild(_this.widgetElement);
1415
- }));
1415
+ return __awaiter(this, void 0, void 0, function () {
1416
+ var widgetConfigFilter, widgetContainer;
1417
+ var _this = this;
1418
+ return __generator(this, function (_a) {
1419
+ widgetConfigFilter = (/** @type {?} */ ({
1420
+ config: widgetInfo.widgetConfigInfo.config,
1421
+ globalFilter: this.globalFilter
1422
+ }));
1423
+ widgetContainer = this;
1424
+ this.dashboardService.loadExternalScript(widgetInfo.scriptUrl, (/**
1425
+ * @return {?}
1426
+ */
1427
+ function () {
1428
+ widgetContainer.widgetElement = document.createElement(widgetInfo.customTag);
1429
+ widgetContainer.widgetElement.setAttribute("widget-instance-id", widgetInfo.widgetInstanceId);
1430
+ document.body.addEventListener('widgetinitiated' + widgetInfo.widgetInstanceId, (/**
1431
+ * @return {?}
1432
+ */
1433
+ function () { return __awaiter(_this, void 0, void 0, function () {
1434
+ return __generator(this, function (_a) {
1435
+ switch (_a.label) {
1436
+ case 0:
1437
+ console.log('widget initiate' + widgetInfo.widgetInstanceId);
1438
+ widgetContainer.isWidgetLoaded = true;
1439
+ widgetConfigFilter.appConfig = this.appConfig;
1440
+ widgetConfigFilter.widgetInfo = (/** @type {?} */ ({}));
1441
+ widgetConfigFilter.widgetInfo.widgetName = widgetInfo.widgetName;
1442
+ widgetContainer.widgetElement.loadContent(widgetConfigFilter);
1443
+ return [4 /*yield*/, widgetContainer.setClass()];
1444
+ case 1:
1445
+ _a.sent();
1446
+ return [2 /*return*/];
1447
+ }
1448
+ });
1449
+ }); }));
1450
+ _this.ctlWidget.nativeElement.appendChild(_this.widgetElement);
1451
+ }));
1452
+ this.setWidgetheight();
1453
+ return [2 /*return*/];
1454
+ });
1455
+ });
1416
1456
  };
1417
1457
  /** To refresh widget on input config changes */
1418
1458
  /**
@@ -1437,30 +1477,52 @@ var RAWidgetContainer = /** @class */ (function () {
1437
1477
  }));
1438
1478
  if (widgetContainerContext.isWidgetLoaded) {
1439
1479
  widgetContainerContext.widgetElement.loadContent(widgetConfigFilter);
1440
- this.lockStatus = widgetContainerContext.widgetElement.loadLockStatus();
1441
- if (this.lockStatus) {
1442
- switch (this.lockStatus) {
1443
- case "lock": {
1444
- this.lockClass = "fa fa-lock locked";
1445
- }
1446
- case "unlock": {
1447
- this.lockClass = "unlock";
1448
- }
1449
- case "partiallock": {
1450
- this.lockClass = "fa fa-lock partiallocked";
1451
- }
1452
- default: {
1453
- this.lockClass = "unlock";
1454
- }
1455
- }
1456
- }
1480
+ //await this.setClass();
1457
1481
  }
1458
1482
  };
1483
+ /**
1484
+ * @private
1485
+ * @return {?}
1486
+ */
1487
+ RAWidgetContainer.prototype.setClass = /**
1488
+ * @private
1489
+ * @return {?}
1490
+ */
1491
+ function () {
1492
+ return __awaiter(this, void 0, void 0, function () {
1493
+ var lockstatus;
1494
+ return __generator(this, function (_a) {
1495
+ switch (_a.label) {
1496
+ case 0: return [4 /*yield*/, this.widgetElement.loadLockStatus()];
1497
+ case 1:
1498
+ lockstatus = _a.sent();
1499
+ console.log('lock staus' + lockstatus);
1500
+ if (lockstatus) {
1501
+ switch (lockstatus) {
1502
+ case "lock": {
1503
+ this.lockClass = "fa fa-lock locked";
1504
+ }
1505
+ case "unlock": {
1506
+ this.lockClass = "unlocked";
1507
+ }
1508
+ case "partiallock": {
1509
+ this.lockClass = "fa fa-lock partiallocked";
1510
+ }
1511
+ default: {
1512
+ this.lockClass = "unlocked";
1513
+ }
1514
+ }
1515
+ }
1516
+ return [2 /*return*/];
1517
+ }
1518
+ });
1519
+ });
1520
+ };
1459
1521
  RAWidgetContainer.decorators = [
1460
1522
  { type: Component, args: [{
1461
1523
  selector: 'ra-widget-container',
1462
- template: "<div class=\"wc-wrapper\">\r\n <div class=\"wcheader\">\r\n <div class=\"col-md-12 wc-mover\">\r\n <div class=\"row\">\r\n <div class=\"col-md-11 float-left\" style=\"width:96%;\">{{data.widgetInfo.widgetTitle}}\r\n </div>\r\n <div class=\"col-md-1\">\r\n <div class=\"float-right\" style=\"display: flex\">\r\n <div><i [ngClass]=\"lockClass\"></i></div>\r\n <div class=\"dropdown\">\r\n <div class=\"dropbtn gearIcon\"> <i class=\"fal fa-cog\"></i></div>\r\n <div class=\"dropdown-content widget-config-item\">\r\n <a (click)=\"editWidget()\">\r\n <i class=\"fal fa-edit\"></i>\r\n <span>{{'Edit'|translate}}</span>\r\n </a>\r\n <a (click)=\"copyWidget()\">\r\n <i class=\"fal fa-copy\"></i>\r\n <span>{{'Copy'|translate}}</span>\r\n </a>\r\n <a (click)=\"moveWidget()\">\r\n <i class=\"fal fa-arrows-alt\"></i>\r\n <span>{{'Move'|translate}}</span>\r\n </a>\r\n <hr class=\"hr\">\r\n <a (click)=\"deleteWidget()\">\r\n <i class=\"fal fa-times\" style=\"padding-left: 3px;\"></i>\r\n <span>{{'Delete'|translate}}</span>\r\n </a>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"wcBody\">\r\n <div class=\"wcBodyBorder\" #ctlWidget></div>\r\n </div>\r\n</div>",
1463
- styles: [".wcheader{width:100%;height:26px;background:#fff;color:#3dcd58;padding:7px 7px 0 6px;font-family:\"Arial Rounded MT\";border-bottom:1px solid;border-color:#fff;font-size:16px}.wc-mover{cursor:all-scroll}.wcBody{padding:8px}.wcBodyBorder{border:1px dashed #e6e2e2}.sp_icon{float:left;margin:0 15% 0 0}.dropbtn{cursor:pointer;color:#42b4e6}.dropdown{visibility:hidden;opacity:0;transition:visibility,opacity .5s linear;position:relative}.dropdown hr{margin:0!important}.dropdown-content{display:none;position:absolute;right:0;background-color:#f9f9f9;min-width:100px;box-shadow:0 8px 16px 8px rgba(0,0,0,.2);z-index:1;font-size:12px;font-family:\"Arial Rounded MT\"}.dropdown-content a{color:#000;padding:5px 16px;text-decoration:none;display:block;cursor:pointer}.dropdown-content a:hover{background-color:#f1f1f1}.dropdown:hover .dropdown-content{display:block;-webkit-animation:.3s ease-out slide-down;animation:.3s ease-out slide-down}.wc-wrapper:hover .dropdown{visibility:visible;opacity:1}.dropdown:hover .dropbtn{color:#2b7797}.gearIcon{color:#42b4e6}.hr{border:0;border-top:1px solid rgba(0,0,0,.1)}@keyframes slide-down{0%{opacity:0;-webkit-transform:translateY(-20%);transform:translateY(-20%)}100%{opacity:1;-webkit-transform:translateY(0);transform:translateY(0)}}@-webkit-keyframes slide-down{0%{opacity:0;-webkit-transform:translateY(-20%)}100%{opacity:1;-webkit-transform:translateY(0)}}.widget-config-item i{font-size:17px;color:#42b4e6}.widget-config-item span{font-size:12px;font:inherit;padding-left:12px;color:#42b4e6}.locked{color:#42b4e6}.partiallocked{color:#a0d9f2}.unlock{display:none}"]
1524
+ template: "<div class=\"wc-wrapper\">\r\n <div class=\"wcheader\">\r\n <div class=\"col-md-12 wc-mover\">\r\n <div class=\"row\">\r\n <div class=\"col-md-10 float-left\" style=\"width:96%;\">{{data.widgetInfo.widgetTitle}}\r\n </div>\r\n <div class=\"col-md-2\">\r\n <div class=\"float-right\" style=\"display: flex\">\r\n <div class=\"pr-3\"><i [ngClass]=\"lockClass\"></i></div>\r\n <div class=\"dropdown\">\r\n <div class=\"dropbtn gearIcon\"> <i class=\"fal fa-cog\"></i></div>\r\n <div class=\"dropdown-content widget-config-item\">\r\n <a (click)=\"editWidget()\">\r\n <i class=\"fal fa-edit\"></i>\r\n <span>{{'Edit'|translate}}</span>\r\n </a>\r\n <a (click)=\"copyWidget()\">\r\n <i class=\"fal fa-copy\"></i>\r\n <span>{{'Copy'|translate}}</span>\r\n </a>\r\n <a (click)=\"moveWidget()\">\r\n <i class=\"fal fa-arrows-alt\"></i>\r\n <span>{{'Move'|translate}}</span>\r\n </a>\r\n <hr class=\"hr\">\r\n <a (click)=\"deleteWidget()\">\r\n <i class=\"fal fa-times\" style=\"padding-left: 3px;\"></i>\r\n <span>{{'Delete'|translate}}</span>\r\n </a>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"wcBody\" [style.height.px]=\"widgetHeight\">\r\n <perfect-scrollbar [scrollIndicators]=\"true\">\r\n <div class=\"wcBodyBorder\" #ctlWidget></div>\r\n </perfect-scrollbar>\r\n </div>\r\n</div>\r\n",
1525
+ styles: [".wcheader{width:100%;height:26px;background:#fff;color:#3dcd58;padding:7px 7px 0 6px;font-family:\"Arial Rounded MT\";border-bottom:1px solid;border-color:#fff;font-size:16px}.wc-mover{cursor:all-scroll}.wcBody{padding:8px}.wcBodyBorder{border:1px dashed #e6e2e2}.sp_icon{float:left;margin:0 15% 0 0}.dropbtn{cursor:pointer;color:#42b4e6}.dropdown{visibility:hidden;opacity:0;transition:visibility,opacity .5s linear;position:relative}.dropdown hr{margin:0!important}.dropdown-content{display:none;position:absolute;right:0;background-color:#f9f9f9;min-width:100px;box-shadow:0 8px 16px 8px rgba(0,0,0,.2);z-index:1;font-size:12px;font-family:\"Arial Rounded MT\"}.dropdown-content a{color:#000;padding:5px 16px;text-decoration:none;display:block;cursor:pointer}.dropdown-content a:hover{background-color:#f1f1f1}.dropdown:hover .dropdown-content{display:block;-webkit-animation:.3s ease-out slide-down;animation:.3s ease-out slide-down}.wc-wrapper:hover .dropdown{visibility:visible;opacity:1}.dropdown:hover .dropbtn{color:#2b7797}.gearIcon{color:#42b4e6}.hr{border:0;border-top:1px solid rgba(0,0,0,.1)}@keyframes slide-down{0%{opacity:0;-webkit-transform:translateY(-20%);transform:translateY(-20%)}100%{opacity:1;-webkit-transform:translateY(0);transform:translateY(0)}}@-webkit-keyframes slide-down{0%{opacity:0;-webkit-transform:translateY(-20%)}100%{opacity:1;-webkit-transform:translateY(0)}}.widget-config-item i{font-size:17px;color:#42b4e6}.widget-config-item span{font-size:12px;font:inherit;padding-left:12px;color:#42b4e6}.locked{color:#42b4e6}.partiallocked{color:#a0d9f2}.unlocked{display:none}"]
1464
1526
  }] }
1465
1527
  ];
1466
1528
  /** @nocollapse */
@@ -1478,7 +1540,8 @@ var RAWidgetContainer = /** @class */ (function () {
1478
1540
  data: [{ type: Input, args: ['data',] }],
1479
1541
  raDashboardEventBus: [{ type: Input, args: ['event-bus',] }],
1480
1542
  appConfig: [{ type: Input, args: ['app-config',] }],
1481
- widgetWidth: [{ type: Input, args: ['widget-width',] }],
1543
+ width: [{ type: Input, args: ['widget-width',] }],
1544
+ height: [{ type: Input, args: ['widget-height',] }],
1482
1545
  widgetDeleted: [{ type: Output }]
1483
1546
  };
1484
1547
  return RAWidgetContainer;
@@ -1505,7 +1568,7 @@ if (false) {
1505
1568
  */
1506
1569
  RAWidgetContainer.prototype.isIEOrEdge;
1507
1570
  /** @type {?} */
1508
- RAWidgetContainer.prototype.lockStatus;
1571
+ RAWidgetContainer.prototype.widgetHeight;
1509
1572
  /** @type {?} */
1510
1573
  RAWidgetContainer.prototype.lockClass;
1511
1574
  /** @type {?} */
@@ -1521,7 +1584,9 @@ if (false) {
1521
1584
  /** @type {?} */
1522
1585
  RAWidgetContainer.prototype.appConfig;
1523
1586
  /** @type {?} */
1524
- RAWidgetContainer.prototype.widgetWidth;
1587
+ RAWidgetContainer.prototype.width;
1588
+ /** @type {?} */
1589
+ RAWidgetContainer.prototype.height;
1525
1590
  /** @type {?} */
1526
1591
  RAWidgetContainer.prototype.widgetDeleted;
1527
1592
  /**
@@ -6608,6 +6673,11 @@ var GridsterModule = /** @class */ (function () {
6608
6673
  * @fileoverview added by tsickle
6609
6674
  * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
6610
6675
  */
6676
+ /** @type {?} */
6677
+ var DEFAULT_PERFECT_SCROLLBAR_CONFIG = {
6678
+ suppressScrollX: true
6679
+ };
6680
+ var ɵ0 = DEFAULT_PERFECT_SCROLLBAR_CONFIG;
6611
6681
  var DashboardFrameworkModule = /** @class */ (function () {
6612
6682
  function DashboardFrameworkModule() {
6613
6683
  }
@@ -6623,13 +6693,17 @@ var DashboardFrameworkModule = /** @class */ (function () {
6623
6693
  HttpClientModule,
6624
6694
  NgxUiLoaderModule,
6625
6695
  TranslateModule,
6626
- NotifierModule.withConfig(customNotifierOptions)
6696
+ NotifierModule.withConfig(customNotifierOptions),
6697
+ PerfectScrollbarModule
6627
6698
  ],
6628
6699
  exports: [
6629
6700
  RADashboardArea,
6630
6701
  TranslateModule
6631
6702
  ],
6632
- providers: [],
6703
+ providers: [{
6704
+ provide: PERFECT_SCROLLBAR_CONFIG,
6705
+ useValue: ɵ0
6706
+ },],
6633
6707
  bootstrap: [RADashboardArea]
6634
6708
  },] }
6635
6709
  ];