@memberjunction/ng-explorer-core 1.8.1 → 2.0.0
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.
- package/dist/app-routing.module.d.ts +4 -0
- package/dist/app-routing.module.d.ts.map +1 -1
- package/dist/app-routing.module.js +60 -3
- package/dist/generic/Item.types.d.ts +5 -5
- package/dist/lib/app-view/application-view.component.d.ts +1 -2
- package/dist/lib/app-view/application-view.component.d.ts.map +1 -1
- package/dist/lib/app-view/application-view.component.js +25 -30
- package/dist/lib/auth-button/auth-button.component.js +1 -1
- package/dist/lib/base-browser-component/base-browser-component.d.ts +2 -1
- package/dist/lib/base-browser-component/base-browser-component.d.ts.map +1 -1
- package/dist/lib/base-browser-component/base-browser-component.js +7 -5
- package/dist/lib/dashboard-browser-component/dashboard-browser.component.d.ts.map +1 -1
- package/dist/lib/dashboard-browser-component/dashboard-browser.component.js +15 -3
- package/dist/lib/data-browser-component/data-browser.component.d.ts +2 -2
- package/dist/lib/data-browser-component/data-browser.component.d.ts.map +1 -1
- package/dist/lib/data-browser-component/data-browser.component.js +23 -9
- package/dist/lib/expansion-panel-component/expansion-panel-component.js +5 -5
- package/dist/lib/favorites/favorites.component.d.ts.map +1 -1
- package/dist/lib/favorites/favorites.component.js +11 -4
- package/dist/lib/files/files.component.d.ts +3 -1
- package/dist/lib/files/files.component.d.ts.map +1 -1
- package/dist/lib/files/files.component.js +20 -5
- package/dist/lib/generic/form-toolbar.js +1 -1
- package/dist/lib/generic/resource-container-component.js +1 -1
- package/dist/lib/generic-browse-list/generic-browse-list.component.js +1 -1
- package/dist/lib/generic-browser-list/generic-browser-list.component.d.ts +1 -1
- package/dist/lib/generic-browser-list/generic-browser-list.component.js +2 -2
- package/dist/lib/header/header.component.js +1 -1
- package/dist/lib/home-component/home.component.d.ts +5 -2
- package/dist/lib/home-component/home.component.d.ts.map +1 -1
- package/dist/lib/home-component/home.component.js +49 -51
- package/dist/lib/join-grid/join-grid.component.d.ts +31 -0
- package/dist/lib/join-grid/join-grid.component.d.ts.map +1 -0
- package/dist/lib/join-grid/join-grid.component.js +222 -0
- package/dist/lib/list-view/list-view.component.d.ts.map +1 -1
- package/dist/lib/list-view/list-view.component.js +15 -3
- package/dist/lib/navigation/navigation.component.d.ts +2 -2
- package/dist/lib/navigation/navigation.component.d.ts.map +1 -1
- package/dist/lib/navigation/navigation.component.js +43 -17
- package/dist/lib/query-browser-component/query-browser.component.d.ts.map +1 -1
- package/dist/lib/query-browser-component/query-browser.component.js +17 -5
- package/dist/lib/report-browser-component/report-browser.component.d.ts.map +1 -1
- package/dist/lib/report-browser-component/report-browser.component.js +15 -3
- package/dist/lib/resource-wrappers/dashboard-resource.component.js +1 -1
- package/dist/lib/resource-wrappers/query-resource.component.js +1 -1
- package/dist/lib/resource-wrappers/record-resource.component.js +1 -1
- package/dist/lib/resource-wrappers/report-resource.component.js +1 -1
- package/dist/lib/resource-wrappers/search-results-resource.component.js +1 -1
- package/dist/lib/resource-wrappers/view-resource.component.d.ts.map +1 -1
- package/dist/lib/resource-wrappers/view-resource.component.js +5 -4
- package/dist/lib/single-application/single-application.component.js +1 -1
- package/dist/lib/single-dashboard/Components/add-item/add-item.component.js +2 -2
- package/dist/lib/single-dashboard/Components/delete-item/delete-item.component.js +1 -1
- package/dist/lib/single-dashboard/Components/edit-dashboard/edit-dashboard.component.js +1 -1
- package/dist/lib/single-dashboard/single-dashboard.component.js +1 -1
- package/dist/lib/single-entity/single-entity.component.js +1 -1
- package/dist/lib/single-list-detail/single-list-detail.component.d.ts +14 -4
- package/dist/lib/single-list-detail/single-list-detail.component.d.ts.map +1 -1
- package/dist/lib/single-list-detail/single-list-detail.component.js +232 -120
- package/dist/lib/single-query/single-query.component.d.ts +1 -1
- package/dist/lib/single-query/single-query.component.js +1 -1
- package/dist/lib/single-record/single-record.component.js +1 -1
- package/dist/lib/single-report/single-report.component.d.ts +1 -1
- package/dist/lib/single-report/single-report.component.js +1 -1
- package/dist/lib/single-search-result/single-search-result.component.js +1 -1
- package/dist/lib/single-view/single-view.component.d.ts +1 -1
- package/dist/lib/single-view/single-view.component.js +2 -2
- package/dist/lib/user-notifications/user-notifications.component.js +2 -2
- package/dist/lib/user-profile/user-profile.component.js +1 -1
- package/package.json +18 -18
|
@@ -27,6 +27,10 @@ interface DetachedRouteHandleExt extends DetachedRouteHandle {
|
|
|
27
27
|
componentRef: ComponentRef<any>;
|
|
28
28
|
}
|
|
29
29
|
export declare class AppRoutingModule {
|
|
30
|
+
private router;
|
|
31
|
+
constructor(router: Router);
|
|
32
|
+
loadDynamicRoutes(): void;
|
|
33
|
+
protected innerLoadDynamicRoutes(): Promise<void>;
|
|
30
34
|
static ɵfac: i0.ɵɵFactoryDeclaration<AppRoutingModule, never>;
|
|
31
35
|
static ɵmod: i0.ɵɵNgModuleDeclaration<AppRoutingModule, never, [typeof i1.RouterModule], [typeof i1.RouterModule]>;
|
|
32
36
|
static ɵinj: i0.ɵɵInjectorDeclaration<AppRoutingModule>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"app-routing.module.d.ts","sourceRoot":"","sources":["../src/app-routing.module.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAwB,MAAM,eAAe,CAAC;AACnE,OAAO,EAAwB,OAAO,EAAE,sBAAsB,EAAE,mBAAmB,EAAE,MAAM,EAAoD,MAAM,iBAAiB,CAAC;AAoBvK,OAAO,EAAc,aAAa,
|
|
1
|
+
{"version":3,"file":"app-routing.module.d.ts","sourceRoot":"","sources":["../src/app-routing.module.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAwB,MAAM,eAAe,CAAC;AACnE,OAAO,EAAwB,OAAO,EAAE,sBAAsB,EAAE,mBAAmB,EAAE,MAAM,EAAoD,MAAM,iBAAiB,CAAC;AAoBvK,OAAO,EAAc,aAAa,EAAyC,MAAM,2BAA2B,CAAC;AAC7G,OAAO,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;;;AAG1E,qBAAa,mBAAoB,YAAW,kBAAkB;IAC5D,YAAY,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,sBAAsB,GAAG,IAAI,CAAA;KAAE,CAAM;IAGpE,YAAY,CAAC,KAAK,EAAE,sBAAsB,GAAG,OAAO;IAMpD,KAAK,CAAC,KAAK,EAAE,sBAAsB,EAAE,MAAM,EAAE,sBAAsB,GAAG,IAAI,GAAG,IAAI;IAYjF,YAAY,CAAC,KAAK,EAAE,sBAAsB,GAAG,OAAO;IAUpD,QAAQ,CAAC,KAAK,EAAE,sBAAsB,GAAG,mBAAmB,GAAG,IAAI;IAgBnE,gBAAgB,CAAC,MAAM,EAAE,sBAAsB,EAAE,IAAI,EAAE,sBAAsB,GAAG,OAAO;IAIvF,OAAO,CAAC,QAAQ;CAUjB;AAED,qBAGa,gBAAiB,YAAW,OAAO,CAAC,IAAI,CAAC;IACxC,OAAO,CAAC,aAAa;IAAiB,OAAO,CAAC,MAAM;gBAA5C,aAAa,EAAE,aAAa,EAAU,MAAM,EAAE,MAAM;IAexE,OAAO,CAAC,KAAK,EAAE,sBAAsB,EAAE,KAAK,EAAE,mBAAmB,GAAG,IAAI;yCAhB7D,gBAAgB;6CAAhB,gBAAgB;CAsF5B;AAmDD,UAAU,sBAAuB,SAAQ,mBAAmB;IAC1D,YAAY,EAAE,YAAY,CAAC,GAAG,CAAC,CAAC;CACjC;AAED,qBAIa,gBAAgB;IACf,OAAO,CAAC,MAAM;gBAAN,MAAM,EAAE,MAAM;IAIlC,iBAAiB;cAWD,sBAAsB;yCAhB3B,gBAAgB;0CAAhB,gBAAgB;0CAAhB,gBAAgB;CAoD5B"}
|
|
@@ -1,3 +1,12 @@
|
|
|
1
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
2
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
3
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
4
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
5
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
6
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
7
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
8
|
+
});
|
|
9
|
+
};
|
|
1
10
|
import { Injectable, NgModule } from '@angular/core';
|
|
2
11
|
import { RouterModule } from '@angular/router';
|
|
3
12
|
import { SingleApplicationComponent, SingleEntityComponent, SingleRecordComponent, HomeComponent, UserNotificationsComponent, DataBrowserComponent, ReportBrowserComponent, DashboardBrowserComponent, AuthGuardService as AuthGuard, FilesComponent, QueryBrowserComponent, ListViewComponent, SingleListDetailComponent } from './public-api';
|
|
@@ -5,7 +14,7 @@ import { SettingsComponent } from '@memberjunction/ng-explorer-settings';
|
|
|
5
14
|
import { LogError, Metadata } from '@memberjunction/core';
|
|
6
15
|
import { MJEventType, MJGlobal } from '@memberjunction/global';
|
|
7
16
|
import { SkipChatComponent } from '@memberjunction/ng-ask-skip';
|
|
8
|
-
import { EventCodes, ResourceData } from '@memberjunction/ng-shared';
|
|
17
|
+
import { EventCodes, ResourceData, BaseNavigationComponent } from '@memberjunction/ng-shared';
|
|
9
18
|
import * as i0 from "@angular/core";
|
|
10
19
|
import * as i1 from "@memberjunction/ng-shared";
|
|
11
20
|
import * as i2 from "@angular/router";
|
|
@@ -212,8 +221,56 @@ const routes = [
|
|
|
212
221
|
},
|
|
213
222
|
];
|
|
214
223
|
export class AppRoutingModule {
|
|
224
|
+
constructor(router) {
|
|
225
|
+
this.router = router;
|
|
226
|
+
this.loadDynamicRoutes();
|
|
227
|
+
}
|
|
228
|
+
loadDynamicRoutes() {
|
|
229
|
+
MJGlobal.Instance.GetEventListener(true) // true gets us replay of past events so we can "catch up" as needed
|
|
230
|
+
.subscribe((event) => {
|
|
231
|
+
// event handler
|
|
232
|
+
switch (event.event) {
|
|
233
|
+
case MJEventType.LoggedIn:
|
|
234
|
+
this.innerLoadDynamicRoutes();
|
|
235
|
+
}
|
|
236
|
+
});
|
|
237
|
+
}
|
|
238
|
+
innerLoadDynamicRoutes() {
|
|
239
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
240
|
+
// gets called after we're logged in
|
|
241
|
+
const md = new Metadata();
|
|
242
|
+
const dynamicRoutes = md.VisibleExplorerNavigationItems.map(item => {
|
|
243
|
+
const registration = MJGlobal.Instance.ClassFactory.GetRegistration(BaseNavigationComponent, item.Name);
|
|
244
|
+
if (registration) {
|
|
245
|
+
// remove the leading slash from the route if it exists
|
|
246
|
+
const route = item.Route.startsWith('/') ? item.Route.substring(1) : item.Route;
|
|
247
|
+
return {
|
|
248
|
+
path: route,
|
|
249
|
+
component: registration.SubClass,
|
|
250
|
+
canActivate: [AuthGuard],
|
|
251
|
+
};
|
|
252
|
+
}
|
|
253
|
+
else {
|
|
254
|
+
throw new Error(`No registration found for Explorer Navigation Item: ${item.Name}`);
|
|
255
|
+
}
|
|
256
|
+
});
|
|
257
|
+
// Find and remove the wildcard route
|
|
258
|
+
const wildcardRouteIndex = routes.findIndex(route => { var _a; return ((_a = route.path) === null || _a === void 0 ? void 0 : _a.trim()) === '**'; });
|
|
259
|
+
const wildcardRoute = routes[wildcardRouteIndex];
|
|
260
|
+
if (wildcardRouteIndex > -1) {
|
|
261
|
+
routes.splice(wildcardRouteIndex, 1);
|
|
262
|
+
}
|
|
263
|
+
// create a combined routes array and make sure that we filter out any dynamic routes that are ALREADY in the router config
|
|
264
|
+
const newCombinedRoutes = [...routes, ...dynamicRoutes.filter(route => !routes.some(r => { var _a, _b; return ((_a = r.path) === null || _a === void 0 ? void 0 : _a.trim().toLowerCase()) === ((_b = route.path) === null || _b === void 0 ? void 0 : _b.trim().toLowerCase()); }))];
|
|
265
|
+
// Re-add the wildcard route at the end
|
|
266
|
+
if (wildcardRoute) {
|
|
267
|
+
newCombinedRoutes.push(wildcardRoute);
|
|
268
|
+
}
|
|
269
|
+
this.router.resetConfig(newCombinedRoutes);
|
|
270
|
+
});
|
|
271
|
+
}
|
|
215
272
|
}
|
|
216
|
-
AppRoutingModule.ɵfac = function AppRoutingModule_Factory(t) { return new (t || AppRoutingModule)(); };
|
|
273
|
+
AppRoutingModule.ɵfac = function AppRoutingModule_Factory(t) { return new (t || AppRoutingModule)(i0.ɵɵinject(i2.Router)); };
|
|
217
274
|
AppRoutingModule.ɵmod = /*@__PURE__*/ i0.ɵɵdefineNgModule({ type: AppRoutingModule });
|
|
218
275
|
AppRoutingModule.ɵinj = /*@__PURE__*/ i0.ɵɵdefineInjector({ imports: [RouterModule.forRoot(routes, { initialNavigation: 'disabled' }), RouterModule] });
|
|
219
276
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(AppRoutingModule, [{
|
|
@@ -222,5 +279,5 @@ AppRoutingModule.ɵinj = /*@__PURE__*/ i0.ɵɵdefineInjector({ imports: [RouterM
|
|
|
222
279
|
imports: [RouterModule.forRoot(routes, { initialNavigation: 'disabled' })],
|
|
223
280
|
exports: [RouterModule],
|
|
224
281
|
}]
|
|
225
|
-
}],
|
|
282
|
+
}], () => [{ type: i2.Router }], null); })();
|
|
226
283
|
(function () { (typeof ngJitMode === "undefined" || ngJitMode) && i0.ɵɵsetNgModuleScope(AppRoutingModule, { imports: [i2.RouterModule], exports: [RouterModule] }); })();
|
|
@@ -24,14 +24,14 @@ export declare class TreeItem extends Item {
|
|
|
24
24
|
* Report Categories, Query Categories, etc.
|
|
25
25
|
*/
|
|
26
26
|
export declare class Folder {
|
|
27
|
-
ID:
|
|
28
|
-
ParentFolderID?:
|
|
27
|
+
ID: string;
|
|
28
|
+
ParentFolderID?: string | null;
|
|
29
29
|
Name: string;
|
|
30
30
|
Description: string | null;
|
|
31
|
-
constructor(id:
|
|
31
|
+
constructor(id: string, folderName: string);
|
|
32
32
|
}
|
|
33
33
|
export declare class TreeFolder extends Folder {
|
|
34
|
-
EntityID:
|
|
35
|
-
constructor(entityID:
|
|
34
|
+
EntityID: string;
|
|
35
|
+
constructor(entityID: string, id: string, folderName: string);
|
|
36
36
|
}
|
|
37
37
|
//# sourceMappingURL=Item.types.d.ts.map
|
|
@@ -17,7 +17,7 @@ export declare class ApplicationViewComponent extends BaseBrowserComponent imple
|
|
|
17
17
|
private cdr;
|
|
18
18
|
entityRowRef: Element | undefined;
|
|
19
19
|
viewPropertiesDialog: UserViewPropertiesDialogComponent;
|
|
20
|
-
categoryEntityID:
|
|
20
|
+
categoryEntityID: string;
|
|
21
21
|
currentlySelectedAppEntity: EntityEntity | undefined;
|
|
22
22
|
AppEntitySelectionDialogVisible: boolean;
|
|
23
23
|
AllAppEntities: EntityEntity[];
|
|
@@ -48,7 +48,6 @@ export declare class ApplicationViewComponent extends BaseBrowserComponent imple
|
|
|
48
48
|
}): Promise<void>;
|
|
49
49
|
GoToApps(event: Event): Promise<void>;
|
|
50
50
|
GoHome(event: Event): Promise<void>;
|
|
51
|
-
sortAppEntites(entities: EntityEntity[]): EntityEntity[];
|
|
52
51
|
static ɵfac: i0.ɵɵFactoryDeclaration<ApplicationViewComponent, never>;
|
|
53
52
|
static ɵcmp: i0.ɵɵComponentDeclaration<ApplicationViewComponent, "mj-application-view", never, { "categoryEntityID": { "alias": "categoryEntityID"; "required": false; }; }, {}, never, never, false, never>;
|
|
54
53
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"application-view.component.d.ts","sourceRoot":"","sources":["../../../src/lib/app-view/application-view.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAoB,MAAM,EAAwB,MAAM,eAAe,CAAC;AAClG,OAAO,EAAE,cAAc,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAA;AACxD,OAAO,EAAE,qBAAqB,EAA0C,eAAe,EAAc,MAAM,sBAAsB,CAAC;AAClI,OAAO,EAAE,YAAY,EAAE,qBAAqB,EAA+B,kBAAkB,EAAkB,sBAAsB,EAAE,MAAM,+BAA+B,CAAC;AAC7K,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAC1D,OAAO,EAAU,IAAI,EAAY,MAAM,0BAA0B,CAAC;AAClE,OAAO,EAAE,oBAAoB,EAAE,MAAM,kDAAkD,CAAC;AACxF,OAAO,EAAC,QAAQ,EAAC,MAAM,iBAAiB,CAAC;AACzC,OAAO,EAAE,iCAAiC,EAAE,MAAM,yCAAyC,CAAC;AAC5F,OAAO,EAAE,kBAAkB,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;;AAEvF,qBAKa,wBAAyB,SAAQ,oBAAqB,YAAW,MAAM;IAenE,OAAO,CAAC,MAAM;IAAU,OAAO,CAAC,KAAK;IAAkB,OAAO,CAAC,QAAQ;IAAY,OAAO,CAAC,aAAa;IAAiB,OAAO,CAAC,GAAG;IAdzH,YAAY,EAAE,OAAO,GAAG,SAAS,CAAC;IAC7B,oBAAoB,EAAG,iCAAiC,CAAC;IAEtE,gBAAgB,EAAG,MAAM,CAAC;IAEnC,0BAA0B,EAAE,YAAY,GAAG,SAAS,CAAC;IAErD,+BAA+B,EAAE,OAAO,CAAS;IACjD,cAAc,EAAE,YAAY,EAAE,CAAM;IACpC,mBAAmB,EAAE,YAAY,EAAE,CAAM;IACzC,qBAAqB,EAAE,YAAY,EAAE,CAAM;IAC3C,GAAG,EAAE,eAAe,GAAG,SAAS,CAAC;IACjC,OAAO,EAAE,qBAAqB,GAAG,SAAS,CAAC;gBAE7B,MAAM,EAAE,MAAM,EAAU,KAAK,EAAE,cAAc,EAAU,QAAQ,EAAE,QAAQ,EAAU,aAAa,EAAE,aAAa,EAAU,GAAG,EAAE,iBAAiB;IAM9J,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"application-view.component.d.ts","sourceRoot":"","sources":["../../../src/lib/app-view/application-view.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAoB,MAAM,EAAwB,MAAM,eAAe,CAAC;AAClG,OAAO,EAAE,cAAc,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAA;AACxD,OAAO,EAAE,qBAAqB,EAA0C,eAAe,EAAc,MAAM,sBAAsB,CAAC;AAClI,OAAO,EAAE,YAAY,EAAE,qBAAqB,EAA+B,kBAAkB,EAAkB,sBAAsB,EAAE,MAAM,+BAA+B,CAAC;AAC7K,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAC1D,OAAO,EAAU,IAAI,EAAY,MAAM,0BAA0B,CAAC;AAClE,OAAO,EAAE,oBAAoB,EAAE,MAAM,kDAAkD,CAAC;AACxF,OAAO,EAAC,QAAQ,EAAC,MAAM,iBAAiB,CAAC;AACzC,OAAO,EAAE,iCAAiC,EAAE,MAAM,yCAAyC,CAAC;AAC5F,OAAO,EAAE,kBAAkB,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;;AAEvF,qBAKa,wBAAyB,SAAQ,oBAAqB,YAAW,MAAM;IAenE,OAAO,CAAC,MAAM;IAAU,OAAO,CAAC,KAAK;IAAkB,OAAO,CAAC,QAAQ;IAAY,OAAO,CAAC,aAAa;IAAiB,OAAO,CAAC,GAAG;IAdzH,YAAY,EAAE,OAAO,GAAG,SAAS,CAAC;IAC7B,oBAAoB,EAAG,iCAAiC,CAAC;IAEtE,gBAAgB,EAAG,MAAM,CAAC;IAEnC,0BAA0B,EAAE,YAAY,GAAG,SAAS,CAAC;IAErD,+BAA+B,EAAE,OAAO,CAAS;IACjD,cAAc,EAAE,YAAY,EAAE,CAAM;IACpC,mBAAmB,EAAE,YAAY,EAAE,CAAM;IACzC,qBAAqB,EAAE,YAAY,EAAE,CAAM;IAC3C,GAAG,EAAE,eAAe,GAAG,SAAS,CAAC;IACjC,OAAO,EAAE,qBAAqB,GAAG,SAAS,CAAC;gBAE7B,MAAM,EAAE,MAAM,EAAU,KAAK,EAAE,cAAc,EAAU,QAAQ,EAAE,QAAQ,EAAU,aAAa,EAAE,aAAa,EAAU,GAAG,EAAE,iBAAiB;IAM9J,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IAyFxB,gBAAgB,CAAC,MAAM,EAAE,YAAY;IAMrC,4BAA4B;IAKtB,gCAAgC,CAAC,IAAI,EAAE,OAAO;IAgEpD,wBAAwB,CAAC,CAAC,EAAE,YAAY,GAAG,IAAI;cAStC,oBAAoB,CAAC,MAAM,EAAE,YAAY,GAAG,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC;IAqC9E,WAAW,CAAC,IAAI,EAAE,IAAI;IAc7B,eAAe,CAAC,IAAI,EAAE,qBAAqB;IAO3C,iBAAiB,CAAC,GAAG,EAAE,kBAAkB;IAYzC,OAAO,CAAC,qBAAqB;IAqB7B,OAAO,CAAC,WAAW;IAKZ,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;IAI/C,aAAa,CAAC,KAAK,EAAE,kBAAkB;IAW1B,QAAQ,CAAC,KAAK,EAAE,qBAAqB,GAAG,OAAO,CAAC,IAAI,CAAC;IAWrD,2BAA2B,CAAC,IAAI,EAAE;QAAC,KAAK,CAAC,EAAE,OAAO,CAAC;QAAC,UAAU,CAAC,EAAE,sBAAsB,CAAC;QAAC,MAAM,CAAC,EAAE,OAAO,CAAC;QAAC,UAAU,CAAC,EAAE,OAAO,CAAA;KAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAcvJ,QAAQ,CAAC,KAAK,EAAE,KAAK;IAKrB,MAAM,CAAC,KAAK,EAAE,KAAK;yCA/UhB,wBAAwB;2CAAxB,wBAAwB;CAoVpC"}
|
|
@@ -169,24 +169,31 @@ export class ApplicationViewComponent extends BaseBrowserComponent {
|
|
|
169
169
|
// next up we need to find the UserApplication record based on the app and the current user
|
|
170
170
|
const userAppResult = yield rv.RunView({
|
|
171
171
|
EntityName: "User Applications",
|
|
172
|
-
ExtraFilter: `UserID
|
|
172
|
+
ExtraFilter: `UserID='${md.CurrentUser.ID}' AND ApplicationID='${this.app.ID}'`,
|
|
173
173
|
ResultType: 'entity_object'
|
|
174
174
|
});
|
|
175
175
|
if (!userAppResult || userAppResult.Success === false || userAppResult.Results.length === 0)
|
|
176
176
|
throw new Error('User Application Record for current user and selected application not found');
|
|
177
177
|
this.userApp = userAppResult.Results[0];
|
|
178
|
-
const matches = this.app.ApplicationEntities
|
|
178
|
+
const matches = this.app.ApplicationEntities
|
|
179
|
+
.map(ae => md.Entities.find(e => e.ID === ae.EntityID))
|
|
180
|
+
.filter(e => e) // filter out null entries
|
|
181
|
+
.sort((a, b) => {
|
|
182
|
+
if (!a || !b) {
|
|
183
|
+
return 0;
|
|
184
|
+
}
|
|
185
|
+
return a.Name.localeCompare(b.Name);
|
|
186
|
+
}); // sort by name
|
|
179
187
|
// store the entire list of POSSIBLE app entities in this list
|
|
180
188
|
this.AllAppEntities = matches; // we filter out null above so this cast is safe;
|
|
181
189
|
const userAppEntities = yield rv.RunView({
|
|
182
190
|
EntityName: 'User Application Entities',
|
|
183
191
|
ResultType: 'entity_object',
|
|
184
|
-
ExtraFilter: `UserApplicationID = ${this.userApp.ID}`,
|
|
185
|
-
OrderBy: 'Sequence'
|
|
192
|
+
ExtraFilter: `UserApplicationID = '${this.userApp.ID}'`,
|
|
193
|
+
OrderBy: 'Sequence, Entity'
|
|
186
194
|
});
|
|
187
195
|
if (userAppEntities && userAppEntities.Success) {
|
|
188
|
-
this.SelectedAppEntities =
|
|
189
|
-
this.SelectedAppEntities = this.sortAppEntites(this.SelectedAppEntities);
|
|
196
|
+
this.SelectedAppEntities = userAppEntities.Results.map(uae => this.AllAppEntities.find(ae => uae.EntityID === ae.ID)).filter(val => val); // now we have our selected app entities and they're sorted properly
|
|
190
197
|
this.UnselectedAppEntities = this.AllAppEntities.filter(e => !this.SelectedAppEntities.some(sa => sa.ID === e.ID));
|
|
191
198
|
// special case - if we have NO user app entities and the application has entities that are marked as DefaultForNewUser=1 we will add them now
|
|
192
199
|
const defaultEntities = this.app.ApplicationEntities.filter(a => a.DefaultForNewUser);
|
|
@@ -241,7 +248,7 @@ export class ApplicationViewComponent extends BaseBrowserComponent {
|
|
|
241
248
|
const userAppEntities = yield rv.RunView({
|
|
242
249
|
EntityName: 'User Application Entities',
|
|
243
250
|
ResultType: 'entity_object',
|
|
244
|
-
ExtraFilter: `UserApplicationID = ${this.userApp.ID}`,
|
|
251
|
+
ExtraFilter: `UserApplicationID = '${this.userApp.ID}'`,
|
|
245
252
|
OrderBy: 'Sequence'
|
|
246
253
|
});
|
|
247
254
|
// userAppEntities.results is the current DB state, we need to now compare it to the SelectedAppEntities array
|
|
@@ -254,15 +261,17 @@ export class ApplicationViewComponent extends BaseBrowserComponent {
|
|
|
254
261
|
const e = this.SelectedAppEntities[index];
|
|
255
262
|
const existing = existingUserAppEntities.find(uae => uae.EntityID === e.ID);
|
|
256
263
|
if (existing) {
|
|
257
|
-
existing.Sequence
|
|
258
|
-
|
|
264
|
+
if (existing.Sequence !== index) {
|
|
265
|
+
existing.Sequence = index;
|
|
266
|
+
userAppEntitiesToSave.push(existing);
|
|
267
|
+
}
|
|
259
268
|
}
|
|
260
269
|
else {
|
|
261
270
|
// this is a new app entity that the user has selected
|
|
262
271
|
const newApp = yield md.GetEntityObject("User Application Entities");
|
|
263
272
|
newApp.UserApplicationID = this.userApp.ID;
|
|
264
|
-
newApp.EntityID = e.ID;
|
|
265
273
|
newApp.Sequence = index;
|
|
274
|
+
newApp.EntityID = e.ID;
|
|
266
275
|
userAppEntitiesToSave.push(newApp);
|
|
267
276
|
}
|
|
268
277
|
}
|
|
@@ -312,7 +321,7 @@ export class ApplicationViewComponent extends BaseBrowserComponent {
|
|
|
312
321
|
this.showLoader = true;
|
|
313
322
|
this.currentlySelectedAppEntity = entity;
|
|
314
323
|
if (this.selectedFolderID) {
|
|
315
|
-
let viewResult = yield _super.RunView.call(this, this.categoryEntityName, `ID
|
|
324
|
+
let viewResult = yield _super.RunView.call(this, this.categoryEntityName, `ID='${this.selectedFolderID}'`);
|
|
316
325
|
if (viewResult.length > 0) {
|
|
317
326
|
this.pageTitle = viewResult[0].Name;
|
|
318
327
|
}
|
|
@@ -321,10 +330,10 @@ export class ApplicationViewComponent extends BaseBrowserComponent {
|
|
|
321
330
|
this.pageTitle = this.currentlySelectedAppEntity.Name;
|
|
322
331
|
}
|
|
323
332
|
const md = new Metadata();
|
|
324
|
-
const parentFolderIDFilter = this.selectedFolderID ? `ParentID
|
|
325
|
-
const categoryFilter = `UserID
|
|
326
|
-
const categoryIDFilter = this.selectedFolderID ? `CategoryID
|
|
327
|
-
const userViewFilter = `UserID = ${md.CurrentUser.ID} AND EntityID
|
|
333
|
+
const parentFolderIDFilter = this.selectedFolderID ? `ParentID='${this.selectedFolderID}'` : 'ParentID IS NULL';
|
|
334
|
+
const categoryFilter = `UserID='${md.CurrentUser.ID}' AND EntityID='${this.currentlySelectedAppEntity.ID}' AND ` + parentFolderIDFilter;
|
|
335
|
+
const categoryIDFilter = this.selectedFolderID ? `CategoryID='${this.selectedFolderID}'` : 'CategoryID IS NULL';
|
|
336
|
+
const userViewFilter = `UserID = '${md.CurrentUser.ID}' AND EntityID='${this.currentlySelectedAppEntity.ID}' AND ` + categoryIDFilter;
|
|
328
337
|
yield _super.LoadData.call(this, {
|
|
329
338
|
sortItemsAfterLoad: true,
|
|
330
339
|
categoryItemFilter: categoryFilter,
|
|
@@ -438,20 +447,6 @@ export class ApplicationViewComponent extends BaseBrowserComponent {
|
|
|
438
447
|
this.router.navigate(['home']);
|
|
439
448
|
});
|
|
440
449
|
}
|
|
441
|
-
sortAppEntites(entities) {
|
|
442
|
-
entities.sort(function (a, b) {
|
|
443
|
-
const aName = a.Name.toLowerCase();
|
|
444
|
-
const bName = b.Name.toLowerCase();
|
|
445
|
-
if (aName < bName) {
|
|
446
|
-
return -1;
|
|
447
|
-
}
|
|
448
|
-
if (aName > bName) {
|
|
449
|
-
return 1;
|
|
450
|
-
}
|
|
451
|
-
return 0;
|
|
452
|
-
});
|
|
453
|
-
return entities;
|
|
454
|
-
}
|
|
455
450
|
}
|
|
456
451
|
ApplicationViewComponent.ɵfac = function ApplicationViewComponent_Factory(t) { return new (t || ApplicationViewComponent)(i0.ɵɵdirectiveInject(i1.Router), i0.ɵɵdirectiveInject(i1.ActivatedRoute), i0.ɵɵdirectiveInject(i2.Location), i0.ɵɵdirectiveInject(i3.SharedService), i0.ɵɵdirectiveInject(i0.ChangeDetectorRef)); };
|
|
457
452
|
ApplicationViewComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: ApplicationViewComponent, selectors: [["mj-application-view"]], viewQuery: function ApplicationViewComponent_Query(rf, ctx) { if (rf & 1) {
|
|
@@ -478,4 +473,4 @@ ApplicationViewComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: Ap
|
|
|
478
473
|
}], categoryEntityID: [{
|
|
479
474
|
type: Input
|
|
480
475
|
}] }); })();
|
|
481
|
-
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(ApplicationViewComponent, { className: "ApplicationViewComponent"
|
|
476
|
+
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(ApplicationViewComponent, { className: "ApplicationViewComponent" }); })();
|
|
@@ -41,4 +41,4 @@ AuthButtonComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: AuthBut
|
|
|
41
41
|
type: Inject,
|
|
42
42
|
args: [DOCUMENT]
|
|
43
43
|
}] }, { type: i1.MJAuthBase }], null); })();
|
|
44
|
-
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(AuthButtonComponent, { className: "AuthButtonComponent"
|
|
44
|
+
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(AuthButtonComponent, { className: "AuthButtonComponent" }); })();
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import { Folder, Item, ItemType } from "../../generic/Item.types";
|
|
2
2
|
import { Router, Params, ActivatedRoute } from '@angular/router';
|
|
3
3
|
import { BaseEvent } from "../../generic/Events.types";
|
|
4
|
-
|
|
4
|
+
import { BaseNavigationComponent } from "@memberjunction/ng-shared";
|
|
5
|
+
export declare class BaseBrowserComponent extends BaseNavigationComponent {
|
|
5
6
|
showLoader: boolean;
|
|
6
7
|
items: Item[];
|
|
7
8
|
folders: Folder[];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"base-browser-component.d.ts","sourceRoot":"","sources":["../../../src/lib/base-browser-component/base-browser-component.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AAClE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACjE,OAAO,EAAE,SAAS,EAAyD,MAAM,4BAA4B,CAAC;
|
|
1
|
+
{"version":3,"file":"base-browser-component.d.ts","sourceRoot":"","sources":["../../../src/lib/base-browser-component/base-browser-component.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AAClE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACjE,OAAO,EAAE,SAAS,EAAyD,MAAM,4BAA4B,CAAC;AAC9G,OAAO,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAC;AAEpE,qBAAa,oBAAqB,SAAQ,uBAAuB;IACtD,UAAU,EAAE,OAAO,CAAS;IAC5B,KAAK,EAAE,IAAI,EAAE,CAAC;IACd,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,UAAU,EAAE,GAAG,EAAE,CAAC;IAClB,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAQ;IACvC,SAAS,EAAE,MAAM,CAAM;IAE9B,SAAS,CAAC,QAAQ,EAAE,MAAM,CAAM;IAChC,SAAS,CAAC,SAAS,EAAE,MAAM,CAAM;IACjC,SAAS,CAAC,iBAAiB,EAAE,MAAM,CAAM;IACzC,SAAS,CAAC,cAAc,EAAE,MAAM,CAAM;IACtC,SAAS,CAAC,kBAAkB,EAAE,MAAM,CAAM;IAC1C,SAAS,CAAC,QAAQ,EAAE,MAAM,CAAU;IACpC,SAAS,CAAC,cAAc,EAAE,MAAM,GAAG,IAAI,CAAQ;;IAS/C,IAAW,aAAa,IAAI,OAAO,CAAqC;IAExE,SAAS,CAAC,oBAAoB,CAAC,WAAW,EAAE,MAAM,GAAG,SAAS,EAAE,KAAK,EAAE,cAAc,GAAG,IAAI;IAM/E,uBAAuB,IAAI,OAAO,CAAC,IAAI,CAAC;IAkBrD,SAAS,CAAC,eAAe,CAAC,MAAM,EAAE,cAAc,GAAG,IAAI;cAOvC,QAAQ,CAAC,MAAM,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC;IAkChE,SAAS,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,GAAG,IAAI,EAAE;cAY1B,OAAO,CAAC,UAAU,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IAmB5F,SAAS,CAAC,yBAAyB,CAAC,UAAU,EAAE,GAAG,EAAE,EAAE,QAAQ,EAAE,QAAQ,GAAG,IAAI,EAAE;IAUlF,SAAS,CAAC,sBAAsB,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE;IAa3D,SAAS,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI;IAe7D,OAAO,CAAC,KAAK,EAAE,SAAS,GAAG,IAAI;IAa/B,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;CAGlD;AAED,MAAM,MAAM,cAAc,GAAG;IACzB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,cAAc,CAAC,EAAE,QAAQ,CAAC;IAC1B,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,UAAU,CAAC,EAAE,OAAO,CAAA;CACvB,CAAA"}
|
|
@@ -10,8 +10,10 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
10
10
|
import { LogStatus, Metadata, RunView } from "@memberjunction/core";
|
|
11
11
|
import { Folder, Item, ItemType } from "../../generic/Item.types";
|
|
12
12
|
import { EventTypes } from "../../generic/Events.types";
|
|
13
|
-
|
|
13
|
+
import { BaseNavigationComponent } from "@memberjunction/ng-shared";
|
|
14
|
+
export class BaseBrowserComponent extends BaseNavigationComponent {
|
|
14
15
|
constructor() {
|
|
16
|
+
super();
|
|
15
17
|
this.showLoader = false;
|
|
16
18
|
this.selectedFolderID = null;
|
|
17
19
|
this.pageTitle = '';
|
|
@@ -35,11 +37,11 @@ export class BaseBrowserComponent {
|
|
|
35
37
|
buildFiltersAndLoadData() {
|
|
36
38
|
return __awaiter(this, void 0, void 0, function* () {
|
|
37
39
|
const md = new Metadata();
|
|
38
|
-
let categoryFilter = this.selectedFolderID ? `CategoryID = ${this.selectedFolderID}` : `CategoryID IS NULL`;
|
|
39
|
-
let resourceFilter = `UserID = ${md.CurrentUser.ID} AND ${categoryFilter}`;
|
|
40
|
+
let categoryFilter = this.selectedFolderID ? `CategoryID = '${this.selectedFolderID}'` : `CategoryID IS NULL`;
|
|
41
|
+
let resourceFilter = `UserID = '${md.CurrentUser.ID}' AND ${categoryFilter}`;
|
|
40
42
|
//filter for the folders
|
|
41
|
-
let resourceCategoryFilter = this.selectedFolderID ? `ParentID = ${this.selectedFolderID}` : `ParentID IS NULL`;
|
|
42
|
-
resourceCategoryFilter += ` AND UserID = ${md.CurrentUser.ID}`;
|
|
43
|
+
let resourceCategoryFilter = this.selectedFolderID ? `ParentID = '${this.selectedFolderID}'` : `ParentID IS NULL`;
|
|
44
|
+
resourceCategoryFilter += ` AND UserID = '${md.CurrentUser.ID}'`;
|
|
43
45
|
LogStatus("resourceFilter: " + resourceFilter + " category filter: " + resourceCategoryFilter);
|
|
44
46
|
yield this.LoadData({
|
|
45
47
|
sortItemsAfterLoad: true,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dashboard-browser.component.d.ts","sourceRoot":"","sources":["../../../src/lib/dashboard-browser-component/dashboard-browser.component.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAA;AACxD,OAAO,
|
|
1
|
+
{"version":3,"file":"dashboard-browser.component.d.ts","sourceRoot":"","sources":["../../../src/lib/dashboard-browser-component/dashboard-browser.component.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAA;AACxD,OAAO,EAA2B,aAAa,EAAE,MAAM,2BAA2B,CAAC;AACnF,OAAO,EAAE,IAAI,EAAE,MAAM,0BAA0B,CAAC;AAChD,OAAO,EAAE,oBAAoB,EAAE,MAAM,kDAAkD,CAAC;AAExF,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;;AAGnE,qBAMa,yBAA0B,SAAQ,oBAAoB;IAErD,OAAO,CAAC,MAAM;IAAU,OAAO,CAAC,KAAK;IAAkB,OAAO,CAAC,aAAa;gBAApE,MAAM,EAAE,MAAM,EAAU,KAAK,EAAE,cAAc,EAAU,aAAa,EAAE,aAAa;IAajG,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IAQxB,SAAS,CAAC,IAAI,EAAE,IAAI;IAWpB,uBAAuB,CAAC,KAAK,EAAE,qBAAqB,GAAG,IAAI;yCAlCvD,yBAAyB;2CAAzB,yBAAyB;CA0CrC"}
|
|
@@ -1,3 +1,9 @@
|
|
|
1
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
2
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
3
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
4
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
5
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
6
|
+
};
|
|
1
7
|
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
2
8
|
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
3
9
|
return new (P || (P = Promise))(function (resolve, reject) {
|
|
@@ -8,12 +14,14 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
8
14
|
});
|
|
9
15
|
};
|
|
10
16
|
import { Component } from '@angular/core';
|
|
17
|
+
import { BaseNavigationComponent } from '@memberjunction/ng-shared';
|
|
11
18
|
import { BaseBrowserComponent } from '../base-browser-component/base-browser-component';
|
|
19
|
+
import { RegisterClass } from '@memberjunction/global';
|
|
12
20
|
import * as i0 from "@angular/core";
|
|
13
21
|
import * as i1 from "@angular/router";
|
|
14
22
|
import * as i2 from "@memberjunction/ng-shared";
|
|
15
23
|
import * as i3 from "../generic-browser-list/generic-browser-list.component";
|
|
16
|
-
|
|
24
|
+
let DashboardBrowserComponent = class DashboardBrowserComponent extends BaseBrowserComponent {
|
|
17
25
|
constructor(router, route, sharedService) {
|
|
18
26
|
var _a;
|
|
19
27
|
super();
|
|
@@ -54,7 +62,7 @@ export class DashboardBrowserComponent extends BaseBrowserComponent {
|
|
|
54
62
|
let dashboard = item.Data;
|
|
55
63
|
this.router.navigate(['resource', this.routeNameSingular, dashboard.ID], { queryParams: { edit: true } });
|
|
56
64
|
}
|
|
57
|
-
}
|
|
65
|
+
};
|
|
58
66
|
DashboardBrowserComponent.ɵfac = function DashboardBrowserComponent_Factory(t) { return new (t || DashboardBrowserComponent)(i0.ɵɵdirectiveInject(i1.Router), i0.ɵɵdirectiveInject(i1.ActivatedRoute), i0.ɵɵdirectiveInject(i2.SharedService)); };
|
|
59
67
|
DashboardBrowserComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: DashboardBrowserComponent, selectors: [["app-dashboard-browser"]], features: [i0.ɵɵInheritDefinitionFeature], decls: 1, vars: 4, consts: [["title", "Dashboards", "itemType", "dashboard", "iconName", "aggregateFields", "addText", "Create New Dashboard", "ItemEntityName", "Dashboards", "resourceName", "Dashboard", "CategoryEntityName", "Dashboard Categories", 3, "itemClickEvent", "AfterAddFolderEvent", "AfterAddItemEvent", "AfterDeleteItemEvent", "AfterDeleteFolderEvent", "BeforeUpdateItemEvent", "viewModeChangeEvent", "items", "selectedFolderID", "showLoader", "displayAsGrid"]], template: function DashboardBrowserComponent_Template(rf, ctx) { if (rf & 1) {
|
|
60
68
|
i0.ɵɵelementStart(0, "app-generic-browser-list", 0);
|
|
@@ -63,8 +71,12 @@ DashboardBrowserComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: D
|
|
|
63
71
|
} if (rf & 2) {
|
|
64
72
|
i0.ɵɵproperty("items", ctx.items)("selectedFolderID", ctx.selectedFolderID)("showLoader", ctx.showLoader)("displayAsGrid", ctx.displayAsGrid);
|
|
65
73
|
} }, dependencies: [i3.GenericBrowserListComponent], styles: [".main-area[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n height: 100%;\n width: 100%;\n gap: 24px;\n padding: 24px 0;\n}\n.list-view[_ngcontent-%COMP%] {\n padding: 16px;\n min-width: 300px;\n border-radius: 4px;\n background: #FAFAFA;\n border: none;\n}\n .list-view .k-listview-header, \n .list-view .k-listview-footer {\n border: none;\n}\n .list-view .k-listview-content {\n border: 1px solid rgba(0, 0, 0, 0.08);\n border-radius: 4px;\n background: #fff;\n padding: 16px;\n}\n\n.header[_ngcontent-%COMP%], \n.footer[_ngcontent-%COMP%] {\n color: #424242;\n font-size: 16px;\n height: auto;\n margin:0;\n}\n\n.header[_ngcontent-%COMP%] {\n color: #424242;\n margin-bottom: 16px;\n display: flex;\n justify-content: space-between;\n align-items: center;\n}\n.header[_ngcontent-%COMP%] .head-tag[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n color: #424242;\nfont-size: 16px;\nfont-style: normal;\nfont-weight: 400;\nline-height: 20px;\n}\n\n.header[_ngcontent-%COMP%] .count[_ngcontent-%COMP%] {\n width: 24px;\n height: 24px;\n min-width: 24px;\n display: flex;\n justify-content: center;\n align-items: center;\n font-size: 10px;\n background: rgba(0, 0, 0, 0.08);\n border-radius: 50%;\n}\n.footer[_ngcontent-%COMP%] {\n font-size: 14px;\n margin-top: 16px;\n}\n\n.list-item[_ngcontent-%COMP%] {\n color: #424242;\n font-size: 14px;\n font-style: normal;\n font-weight: 400;\n line-height: 30px;\n cursor: pointer;\n margin: 4px;\n}\n.card-container[_ngcontent-%COMP%] {\n margin: 0;\n padding: 0;\n box-shadow: none;\n}\n.card-header-entity[_ngcontent-%COMP%] {\n display: flex;\n justify-content: space-between;\n align-items: flex-start;\n padding-bottom: 20px;\n border-bottom: 1px solid rgba(0, 0, 0, 0.08);\n}\n.card-header-entity[_ngcontent-%COMP%] .title-wrap[_ngcontent-%COMP%] h1[_ngcontent-%COMP%] {\n color: #424242;\n font-size: 28px;\n font-style: normal;\n font-weight: 300;\n line-height: 28px;\n margin-bottom: 15px;\n}\n.card-header-entity[_ngcontent-%COMP%] .title-wrap[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n}\n.card-header-entity[_ngcontent-%COMP%] .title-wrap[_ngcontent-%COMP%] p[_ngcontent-%COMP%] {\n margin: 0;\n display: flex;\n align-items: center;\n gap: 8px;\n color: #424242;\n font-size: 14px;\n font-style: normal;\n font-weight: 400;\n line-height: 20px;\n}\n\n\n\n\n \n.view-card[_ngcontent-%COMP%] .view-icon[_ngcontent-%COMP%] {\n color: var(--sideNav);\n}\n.card-wrapper[_ngcontent-%COMP%] {\n border: 1px solid rgba(0, 0, 0, 0.08);\n border-radius: 6px;\n width: 100% !important;\n}\n.card-wrapper[_ngcontent-%COMP%] .k-card-body[_ngcontent-%COMP%] {\n background: #fff;\n padding: 12px 20px;\n}\n.card-wrapper[_ngcontent-%COMP%] .view-card[_ngcontent-%COMP%] {\n overflow: auto;\n display: flex;\n justify-content: space-between;\n align-items: center;\n background: #fafafa;\n padding: 4px 15px;\n}\n.view-card[_ngcontent-%COMP%] .btn-wrapper[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n}\n\n.k-card-body[_ngcontent-%COMP%] .view-card-content[_ngcontent-%COMP%] h5[_ngcontent-%COMP%] {\n color: #424242;\n font-size: 16px;\n font-style: normal;\n font-weight: 400;\n line-height: 20px;\n margin-bottom: 0;\n letter-spacing: 0.18px;\n}\n.k-card-body[_ngcontent-%COMP%] .view-card-content[_ngcontent-%COMP%] p[_ngcontent-%COMP%] {\n color: #666;\n font-size: 14px;\n font-style: normal;\n font-weight: 400;\n line-height: 20px;\n height: 48px;\n margin-bottom: 0;\n}\n.card-container[_ngcontent-%COMP%] {\n padding: 0;\n margin: 0;\n box-shadow: none;\n}\n.card-header-entity[_ngcontent-%COMP%] {\n display: flex;\n justify-content: space-between;\n align-items: flex-start;\n padding-bottom: 20px;\n border-bottom: 1px solid rgba(0, 0, 0, 0.08);\n}\n\n.card-header-entity[_ngcontent-%COMP%] .title-wrap[_ngcontent-%COMP%] h1[_ngcontent-%COMP%] {\n color: #424242;\n font-size: 28px;\n font-style: normal;\n font-weight: 300;\n line-height: 28px;\n margin-bottom: 15px;\n}\n.card-header-entity[_ngcontent-%COMP%] .title-wrap[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n}\n.card-header-entity[_ngcontent-%COMP%] .title-wrap[_ngcontent-%COMP%] p[_ngcontent-%COMP%] {\n margin: 0;\n display: flex;\n align-items: center;\n gap: 8px;\n color: #424242;\n font-size: 14px;\n font-style: normal;\n font-weight: 400;\n line-height: 20px;\n}\n.main-area[_ngcontent-%COMP%] .card-list[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: repeat(4, 1fr);\n gap: 20px;\n}"] });
|
|
74
|
+
DashboardBrowserComponent = __decorate([
|
|
75
|
+
RegisterClass(BaseNavigationComponent, 'Dashboards')
|
|
76
|
+
], DashboardBrowserComponent);
|
|
77
|
+
export { DashboardBrowserComponent };
|
|
66
78
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(DashboardBrowserComponent, [{
|
|
67
79
|
type: Component,
|
|
68
80
|
args: [{ selector: 'app-dashboard-browser', template: "<app-generic-browser-list \n title=\"Dashboards\" \n itemType=\"dashboard\" \n iconName=\"aggregateFields\" \n [items]=\"items\" \n addText=\"Create New Dashboard\"\n ItemEntityName=\"Dashboards\"\n resourceName=\"Dashboard\"\n CategoryEntityName=\"Dashboard Categories\"\n (itemClickEvent)=\"itemClick($event)\" \n (AfterAddFolderEvent)=\"onEvent($event)\"\n (AfterAddItemEvent)=\"onEvent($event)\"\n (AfterDeleteItemEvent)=\"onEvent($event)\"\n (AfterDeleteFolderEvent)=\"onEvent($event)\"\n (BeforeUpdateItemEvent)=\"onBeforeUpdateItemEvent($event)\"\n [selectedFolderID]=\"selectedFolderID\"\n [showLoader]=\"showLoader\"\n [displayAsGrid]=\"displayAsGrid\"\n (viewModeChangeEvent)=\"onViewModeChange($event)\"\n/>\n", styles: ["\n.main-area {\n display: flex;\n flex-direction: column;\n height: 100%;\n width: 100%;\n gap: 24px;\n padding: 24px 0;\n}\n.list-view {\n padding: 16px;\n min-width: 300px;\n border-radius: 4px;\n background: #FAFAFA;\n border: none;\n}\n::ng-deep .list-view .k-listview-header, \n::ng-deep .list-view .k-listview-footer {\n border: none;\n}\n::ng-deep .list-view .k-listview-content {\n border: 1px solid rgba(0, 0, 0, 0.08);\n border-radius: 4px;\n background: #fff;\n padding: 16px;\n}\n\n.header,\n.footer {\n color: #424242;\n font-size: 16px;\n height: auto;\n margin:0;\n}\n\n.header {\n color: #424242;\n margin-bottom: 16px;\n display: flex;\n justify-content: space-between;\n align-items: center;\n}\n.header .head-tag {\n display: flex;\n align-items: center;\n gap: 8px;\n color: #424242;\nfont-size: 16px;\nfont-style: normal;\nfont-weight: 400;\nline-height: 20px;\n}\n\n.header .count {\n width: 24px;\n height: 24px;\n min-width: 24px;\n display: flex;\n justify-content: center;\n align-items: center;\n font-size: 10px;\n background: rgba(0, 0, 0, 0.08);\n border-radius: 50%;\n}\n.footer {\n font-size: 14px;\n margin-top: 16px;\n}\n\n.list-item {\n color: #424242;\n font-size: 14px;\n font-style: normal;\n font-weight: 400;\n line-height: 30px;\n cursor: pointer;\n margin: 4px;\n}\n.card-container {\n margin: 0;\n padding: 0;\n box-shadow: none;\n}\n.card-header-entity {\n display: flex;\n justify-content: space-between;\n align-items: flex-start;\n padding-bottom: 20px;\n border-bottom: 1px solid rgba(0, 0, 0, 0.08);\n}\n.card-header-entity .title-wrap h1 {\n color: #424242;\n font-size: 28px;\n font-style: normal;\n font-weight: 300;\n line-height: 28px;\n margin-bottom: 15px;\n}\n.card-header-entity .title-wrap {\n display: flex;\n flex-direction: column;\n}\n.card-header-entity .title-wrap p {\n margin: 0;\n display: flex;\n align-items: center;\n gap: 8px;\n color: #424242;\n font-size: 14px;\n font-style: normal;\n font-weight: 400;\n line-height: 20px;\n}\n\n\n\n\n \n.view-card .view-icon {\n color: var(--sideNav);\n}\n.card-wrapper {\n border: 1px solid rgba(0, 0, 0, 0.08);\n border-radius: 6px;\n width: 100% !important;\n}\n.card-wrapper .k-card-body {\n background: #fff;\n padding: 12px 20px;\n}\n.card-wrapper .view-card {\n overflow: auto;\n display: flex;\n justify-content: space-between;\n align-items: center;\n background: #fafafa;\n padding: 4px 15px;\n}\n.view-card .btn-wrapper {\n display: flex;\n align-items: center;\n}\n\n.k-card-body .view-card-content h5 {\n color: #424242;\n font-size: 16px;\n font-style: normal;\n font-weight: 400;\n line-height: 20px;\n margin-bottom: 0;\n letter-spacing: 0.18px;\n}\n.k-card-body .view-card-content p {\n color: #666;\n font-size: 14px;\n font-style: normal;\n font-weight: 400;\n line-height: 20px;\n height: 48px;\n margin-bottom: 0;\n}\n.card-container {\n padding: 0;\n margin: 0;\n box-shadow: none;\n}\n.card-header-entity {\n display: flex;\n justify-content: space-between;\n align-items: flex-start;\n padding-bottom: 20px;\n border-bottom: 1px solid rgba(0, 0, 0, 0.08);\n}\n\n.card-header-entity .title-wrap h1 {\n color: #424242;\n font-size: 28px;\n font-style: normal;\n font-weight: 300;\n line-height: 28px;\n margin-bottom: 15px;\n}\n.card-header-entity .title-wrap {\n display: flex;\n flex-direction: column;\n}\n.card-header-entity .title-wrap p {\n margin: 0;\n display: flex;\n align-items: center;\n gap: 8px;\n color: #424242;\n font-size: 14px;\n font-style: normal;\n font-weight: 400;\n line-height: 20px;\n}\n.main-area .card-list {\n display: grid;\n grid-template-columns: repeat(4, 1fr);\n gap: 20px;\n}\n"] }]
|
|
69
81
|
}], () => [{ type: i1.Router }, { type: i1.ActivatedRoute }, { type: i2.SharedService }], null); })();
|
|
70
|
-
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(DashboardBrowserComponent, { className: "DashboardBrowserComponent"
|
|
82
|
+
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(DashboardBrowserComponent, { className: "DashboardBrowserComponent" }); })();
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { Router } from '@angular/router';
|
|
2
2
|
import { ApplicationEntity } from '@memberjunction/core-entities';
|
|
3
|
-
import { SharedService } from '@memberjunction/ng-shared';
|
|
3
|
+
import { BaseNavigationComponent, SharedService } from '@memberjunction/ng-shared';
|
|
4
4
|
import * as i0 from "@angular/core";
|
|
5
|
-
export declare class DataBrowserComponent {
|
|
5
|
+
export declare class DataBrowserComponent extends BaseNavigationComponent {
|
|
6
6
|
sharedService: SharedService;
|
|
7
7
|
private router;
|
|
8
8
|
showLoader: boolean;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"data-browser.component.d.ts","sourceRoot":"","sources":["../../../src/lib/data-browser-component/data-browser.component.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAA;AAExC,OAAO,EAAE,iBAAiB,EAAyB,MAAM,+BAA+B,CAAC;
|
|
1
|
+
{"version":3,"file":"data-browser.component.d.ts","sourceRoot":"","sources":["../../../src/lib/data-browser-component/data-browser.component.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAA;AAExC,OAAO,EAAE,iBAAiB,EAAyB,MAAM,+BAA+B,CAAC;AAEzF,OAAO,EAAE,uBAAuB,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;;AAEnF,qBAMa,oBAAqB,SAAQ,uBAAuB;IAO5C,aAAa,EAAE,aAAa;IAAE,OAAO,CAAC,MAAM;IANxD,UAAU,EAAE,OAAO,CAAQ;IAE3B,eAAe,EAAE,iBAAiB,EAAE,CAAM;IAC1C,oBAAoB,EAAE,iBAAiB,EAAE,CAAM;IAC/C,sBAAsB,EAAE,iBAAiB,EAAE,CAAM;gBAErC,aAAa,EAAE,aAAa,EAAU,MAAM,EAAE,MAAM;IAIvE,QAAQ,IAAI,IAAI;IAGV,QAAQ;IA6BP,YAAY,CAAC,IAAI,EAAE,iBAAiB;IAMpC,yBAAyB,EAAE,OAAO,CAAS;IAC5C,sBAAsB;IAItB,MAAM,CAAC,KAAK,EAAE,KAAK;IAMnB,0BAA0B,CAAC,IAAI,EAAE,OAAO;yCA5DnC,oBAAoB;2CAApB,oBAAoB;CAsHhC"}
|
|
@@ -1,3 +1,9 @@
|
|
|
1
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
2
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
3
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
4
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
5
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
6
|
+
};
|
|
1
7
|
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
2
8
|
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
3
9
|
return new (P || (P = Promise))(function (resolve, reject) {
|
|
@@ -9,6 +15,8 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
9
15
|
};
|
|
10
16
|
import { Component } from '@angular/core';
|
|
11
17
|
import { Metadata, RunView } from '@memberjunction/core';
|
|
18
|
+
import { RegisterClass } from '@memberjunction/global';
|
|
19
|
+
import { BaseNavigationComponent } from '@memberjunction/ng-shared';
|
|
12
20
|
import * as i0 from "@angular/core";
|
|
13
21
|
import * as i1 from "@memberjunction/ng-shared";
|
|
14
22
|
import * as i2 from "@angular/router";
|
|
@@ -71,8 +79,9 @@ function DataBrowserComponent_div_17_Template(rf, ctx) { if (rf & 1) {
|
|
|
71
79
|
i0.ɵɵadvance();
|
|
72
80
|
i0.ɵɵconditional(ctx_r2.SelectedApplications.length === 0 && !ctx_r2.showLoader ? 2 : -1);
|
|
73
81
|
} }
|
|
74
|
-
|
|
82
|
+
let DataBrowserComponent = class DataBrowserComponent extends BaseNavigationComponent {
|
|
75
83
|
constructor(sharedService, router) {
|
|
84
|
+
super();
|
|
76
85
|
this.sharedService = sharedService;
|
|
77
86
|
this.router = router;
|
|
78
87
|
this.showLoader = true;
|
|
@@ -90,7 +99,8 @@ export class DataBrowserComponent {
|
|
|
90
99
|
const rv = new RunView();
|
|
91
100
|
const results = yield rv.RunView({
|
|
92
101
|
EntityName: 'Applications',
|
|
93
|
-
ResultType: 'entity_object'
|
|
102
|
+
ResultType: 'entity_object',
|
|
103
|
+
OrderBy: 'Name'
|
|
94
104
|
});
|
|
95
105
|
if (results && results.Success) {
|
|
96
106
|
this.AllApplications = results.Results;
|
|
@@ -98,8 +108,8 @@ export class DataBrowserComponent {
|
|
|
98
108
|
const userApps = yield rv.RunView({
|
|
99
109
|
EntityName: 'User Applications',
|
|
100
110
|
ResultType: 'entity_object',
|
|
101
|
-
ExtraFilter: `UserID = ${new Metadata().CurrentUser.ID}`,
|
|
102
|
-
OrderBy: 'Sequence'
|
|
111
|
+
ExtraFilter: `UserID = '${new Metadata().CurrentUser.ID}'`,
|
|
112
|
+
OrderBy: 'Sequence, Application'
|
|
103
113
|
});
|
|
104
114
|
if (userApps && userApps.Success) {
|
|
105
115
|
const apps = userApps.Results.map(ua => this.AllApplications.find(a => a.ID === ua.ApplicationID && ua.IsActive)).filter(a => a); // filter out null entries
|
|
@@ -138,9 +148,9 @@ export class DataBrowserComponent {
|
|
|
138
148
|
const rv = new RunView();
|
|
139
149
|
const userApps = yield rv.RunView({
|
|
140
150
|
EntityName: 'User Applications',
|
|
141
|
-
ExtraFilter: `UserID
|
|
151
|
+
ExtraFilter: `UserID='${md.CurrentUser.ID}'`,
|
|
142
152
|
ResultType: 'entity_object',
|
|
143
|
-
OrderBy: 'Sequence',
|
|
153
|
+
OrderBy: 'Sequence, Application',
|
|
144
154
|
});
|
|
145
155
|
// userApps.results is the current DB state, we need to now compare it to the SelectedApplications array
|
|
146
156
|
// and if there are changes either update sequence values or set IsActive=false for records that are not selected anyomre. We
|
|
@@ -189,9 +199,9 @@ export class DataBrowserComponent {
|
|
|
189
199
|
}
|
|
190
200
|
});
|
|
191
201
|
}
|
|
192
|
-
}
|
|
202
|
+
};
|
|
193
203
|
DataBrowserComponent.ɵfac = function DataBrowserComponent_Factory(t) { return new (t || DataBrowserComponent)(i0.ɵɵdirectiveInject(i1.SharedService), i0.ɵɵdirectiveInject(i2.Router)); };
|
|
194
|
-
DataBrowserComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: DataBrowserComponent, selectors: [["app-data-browser"]], decls: 18, vars: 6, consts: [[1, "data-browser-container"], [1, "card-header-entity"], [1, "title-wrap"], [1, "title-wrap-inner"], [1, "breadcrumb", 3, "click"], [1, "fa-solid", "fa-house", "home-icon"], [1, "breadcrumb-separator"], [1, "fa-solid", "fa-chevron-right"], [1, "breadcrumb-end"], [1, "config-button"], ["kendoButton", "", 3, "click"], [1, "fa-solid", "fa-gear"], ["DisplayField", "Name", "DisplayIconField", "Icon", 3, "DialogClosed", "AvailableRecords", "SelectedRecords", "UnselectedRecords", "DialogVisible"], [1, "main-area"], ["type", "converging-spinner", 4, "ngIf"], ["class", "card-list k-d-flex k-flex-row k-h-full k-flex-wrap", 4, "ngIf"], ["type", "converging-spinner"], [1, "card-list", "k-d-flex", "k-flex-row", "k-h-full", "k-flex-wrap"], ["class", "card-item", 3, "click", 4, "ngFor", "ngForOf"], [1, "card-item"], [1, "card-item", 3, "click"], [1, "card-wrapper"], [1, "view-card-content", "k-cursor-pointer"], [3, "ngClass"], ["kendoCardTitle", ""], ["kendoCardSubtitle", ""]], template: function DataBrowserComponent_Template(rf, ctx) { if (rf & 1) {
|
|
204
|
+
DataBrowserComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: DataBrowserComponent, selectors: [["app-data-browser"]], features: [i0.ɵɵInheritDefinitionFeature], decls: 18, vars: 6, consts: [[1, "data-browser-container"], [1, "card-header-entity"], [1, "title-wrap"], [1, "title-wrap-inner"], [1, "breadcrumb", 3, "click"], [1, "fa-solid", "fa-house", "home-icon"], [1, "breadcrumb-separator"], [1, "fa-solid", "fa-chevron-right"], [1, "breadcrumb-end"], [1, "config-button"], ["kendoButton", "", 3, "click"], [1, "fa-solid", "fa-gear"], ["DisplayField", "Name", "DisplayIconField", "Icon", 3, "DialogClosed", "AvailableRecords", "SelectedRecords", "UnselectedRecords", "DialogVisible"], [1, "main-area"], ["type", "converging-spinner", 4, "ngIf"], ["class", "card-list k-d-flex k-flex-row k-h-full k-flex-wrap", 4, "ngIf"], ["type", "converging-spinner"], [1, "card-list", "k-d-flex", "k-flex-row", "k-h-full", "k-flex-wrap"], ["class", "card-item", 3, "click", 4, "ngFor", "ngForOf"], [1, "card-item"], [1, "card-item", 3, "click"], [1, "card-wrapper"], [1, "view-card-content", "k-cursor-pointer"], [3, "ngClass"], ["kendoCardTitle", ""], ["kendoCardSubtitle", ""]], template: function DataBrowserComponent_Template(rf, ctx) { if (rf & 1) {
|
|
195
205
|
i0.ɵɵelementStart(0, "div", 0)(1, "div", 1)(2, "div", 2)(3, "div", 3)(4, "span", 4);
|
|
196
206
|
i0.ɵɵlistener("click", function DataBrowserComponent_Template_span_click_4_listener($event) { return ctx.GoHome($event); });
|
|
197
207
|
i0.ɵɵelement(5, "span", 5);
|
|
@@ -221,8 +231,12 @@ DataBrowserComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: DataBr
|
|
|
221
231
|
i0.ɵɵadvance();
|
|
222
232
|
i0.ɵɵproperty("ngIf", !ctx.showLoader);
|
|
223
233
|
} }, dependencies: [i3.NgClass, i3.NgForOf, i3.NgIf, i4.LoaderComponent, i5.ButtonComponent, i6.CardComponent, i6.CardBodyComponent, i6.CardTitleDirective, i6.CardSubtitleDirective, i7.RecordSelectorDialogComponent], styles: [".data-browser-container[_ngcontent-%COMP%] {\n padding: 15px;\n}\n.main-area[_ngcontent-%COMP%] .card-list[_ngcontent-%COMP%] .card-item[_ngcontent-%COMP%] {\n background: #fff;\n border-radius: 10px;\n height: 200px;\n border: 3px solid transparent;\n}\n\n.main-area[_ngcontent-%COMP%] .card-list[_ngcontent-%COMP%] .card-item[_ngcontent-%COMP%]:hover {\n border: 3px solid var(--border-active);\n box-shadow: 0px 0px 20px 0px rgba(60, 73, 99, 0.2);\n\n }\n .main-area[_ngcontent-%COMP%] .card-list[_ngcontent-%COMP%] .card-item[_ngcontent-%COMP%]:hover .view-card-content[_ngcontent-%COMP%] h2[_ngcontent-%COMP%] {\n color: var(--border-active);\n }\n .view-card-content[_ngcontent-%COMP%] h2[_ngcontent-%COMP%] {\n font-size: 36px;\n text-align: center;\n line-height: 42px;\n font-weight: 500;\n color: var(--text-darked);\n }\n .view-card-content[_ngcontent-%COMP%] p[_ngcontent-%COMP%] {\n text-align: center;\n font-size: 18px;\n line-height: 28px;\n color: var(--text-darked);\n }\n \n.view-card-content[_ngcontent-%COMP%] .icon[_ngcontent-%COMP%] {\n position: absolute;\n top: 20px; \n left: 20px; \n font-size: 32px;\n}\n.card-list[_ngcontent-%COMP%] .card-item[_ngcontent-%COMP%] {\n position: relative; \n}\n\n .card-wrapper[_ngcontent-%COMP%] {\n height: 100%;\n border: none;\n }\n .card-wrapper[_ngcontent-%COMP%] .k-card-body[_ngcontent-%COMP%] {\n display: flex;\n justify-content: center; \n align-items: center;\n }\n\n .card-header-entity[_ngcontent-%COMP%] {\n display: flex;\n justify-content: space-between;\n align-items: center;\n}\n\n.title-wrap[_ngcontent-%COMP%] {\n flex-grow: 1;\n font-size: 24px;\n}\n.title-wrap-inner[_ngcontent-%COMP%] {\n display: block;\n}\n\n.breadcrumb[_ngcontent-%COMP%] {\n color: darkblue;\n cursor: pointer;\n display: inline;\n margin-left: 5px;\n margin-right: 5px;\n}\n\n.breadcrumb-end[_ngcontent-%COMP%] {\n display: inline;\n margin-left: 5px;\n}\n\n.breadcrumb-separator[_ngcontent-%COMP%] {\n font-size: 14px;\n display: inline;\n margin-left: 5px;\n margin-right: 5px;\n}\n\n.home-icon[_ngcontent-%COMP%] {\n margin-right: 5px;\n font-size: 18px;\n vertical-align: middle;\n}\n\n.config-button[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n}", ".main-area[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n height: 100%;\n width: 100%;\n gap: 24px;\n padding: 24px 0;\n}\n.list-view[_ngcontent-%COMP%] {\n padding: 16px;\n min-width: 300px;\n border-radius: 4px;\n background: #FAFAFA;\n border: none;\n}\n .list-view .k-listview-header, \n .list-view .k-listview-footer {\n border: none;\n}\n .list-view .k-listview-content {\n border: 1px solid rgba(0, 0, 0, 0.08);\n border-radius: 4px;\n background: #fff;\n padding: 16px;\n}\n\n.header[_ngcontent-%COMP%], \n.footer[_ngcontent-%COMP%] {\n color: #424242;\n font-size: 16px;\n height: auto;\n margin:0;\n}\n\n.header[_ngcontent-%COMP%] {\n color: #424242;\n margin-bottom: 16px;\n display: flex;\n justify-content: space-between;\n align-items: center;\n}\n.header[_ngcontent-%COMP%] .head-tag[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n color: #424242;\nfont-size: 16px;\nfont-style: normal;\nfont-weight: 400;\nline-height: 20px;\n}\n\n.header[_ngcontent-%COMP%] .count[_ngcontent-%COMP%] {\n width: 24px;\n height: 24px;\n min-width: 24px;\n display: flex;\n justify-content: center;\n align-items: center;\n font-size: 10px;\n background: rgba(0, 0, 0, 0.08);\n border-radius: 50%;\n}\n.footer[_ngcontent-%COMP%] {\n font-size: 14px;\n margin-top: 16px;\n}\n\n.list-item[_ngcontent-%COMP%] {\n color: #424242;\n font-size: 14px;\n font-style: normal;\n font-weight: 400;\n line-height: 30px;\n cursor: pointer;\n margin: 4px;\n}\n.card-container[_ngcontent-%COMP%] {\n margin: 0;\n padding: 0;\n box-shadow: none;\n}\n.card-header-entity[_ngcontent-%COMP%] {\n display: flex;\n justify-content: space-between;\n align-items: flex-start;\n padding-bottom: 20px;\n border-bottom: 1px solid rgba(0, 0, 0, 0.08);\n}\n.card-header-entity[_ngcontent-%COMP%] .title-wrap[_ngcontent-%COMP%] h1[_ngcontent-%COMP%] {\n color: #424242;\n font-size: 28px;\n font-style: normal;\n font-weight: 300;\n line-height: 28px;\n margin-bottom: 15px;\n}\n.card-header-entity[_ngcontent-%COMP%] .title-wrap[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n}\n.card-header-entity[_ngcontent-%COMP%] .title-wrap[_ngcontent-%COMP%] p[_ngcontent-%COMP%] {\n margin: 0;\n display: flex;\n align-items: center;\n gap: 8px;\n color: #424242;\n font-size: 14px;\n font-style: normal;\n font-weight: 400;\n line-height: 20px;\n}\n\n\n\n\n \n.view-card[_ngcontent-%COMP%] .view-icon[_ngcontent-%COMP%] {\n color: var(--sideNav);\n}\n.card-wrapper[_ngcontent-%COMP%] {\n border: 1px solid rgba(0, 0, 0, 0.08);\n border-radius: 6px;\n width: 100% !important;\n}\n.card-wrapper[_ngcontent-%COMP%] .k-card-body[_ngcontent-%COMP%] {\n background: #fff;\n padding: 12px 20px;\n}\n.card-wrapper[_ngcontent-%COMP%] .view-card[_ngcontent-%COMP%] {\n overflow: auto;\n display: flex;\n justify-content: space-between;\n align-items: center;\n background: #fafafa;\n padding: 4px 15px;\n}\n.view-card[_ngcontent-%COMP%] .btn-wrapper[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n}\n\n.k-card-body[_ngcontent-%COMP%] .view-card-content[_ngcontent-%COMP%] h5[_ngcontent-%COMP%] {\n color: #424242;\n font-size: 16px;\n font-style: normal;\n font-weight: 400;\n line-height: 20px;\n margin-bottom: 0;\n letter-spacing: 0.18px;\n}\n.k-card-body[_ngcontent-%COMP%] .view-card-content[_ngcontent-%COMP%] p[_ngcontent-%COMP%] {\n color: #666;\n font-size: 14px;\n font-style: normal;\n font-weight: 400;\n line-height: 20px;\n height: 48px;\n margin-bottom: 0;\n}\n.card-container[_ngcontent-%COMP%] {\n padding: 0;\n margin: 0;\n box-shadow: none;\n}\n.card-header-entity[_ngcontent-%COMP%] {\n display: flex;\n justify-content: space-between;\n align-items: flex-start;\n padding-bottom: 20px;\n border-bottom: 1px solid rgba(0, 0, 0, 0.08);\n}\n\n.card-header-entity[_ngcontent-%COMP%] .title-wrap[_ngcontent-%COMP%] h1[_ngcontent-%COMP%] {\n color: #424242;\n font-size: 28px;\n font-style: normal;\n font-weight: 300;\n line-height: 28px;\n margin-bottom: 15px;\n}\n.card-header-entity[_ngcontent-%COMP%] .title-wrap[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n}\n.card-header-entity[_ngcontent-%COMP%] .title-wrap[_ngcontent-%COMP%] p[_ngcontent-%COMP%] {\n margin: 0;\n display: flex;\n align-items: center;\n gap: 8px;\n color: #424242;\n font-size: 14px;\n font-style: normal;\n font-weight: 400;\n line-height: 20px;\n}\n.main-area[_ngcontent-%COMP%] .card-list[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: repeat(4, 1fr);\n gap: 20px;\n}"] });
|
|
234
|
+
DataBrowserComponent = __decorate([
|
|
235
|
+
RegisterClass(BaseNavigationComponent, 'Data')
|
|
236
|
+
], DataBrowserComponent);
|
|
237
|
+
export { DataBrowserComponent };
|
|
224
238
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(DataBrowserComponent, [{
|
|
225
239
|
type: Component,
|
|
226
240
|
args: [{ selector: 'app-data-browser', template: "<div class=\"data-browser-container\">\n <div class=\"card-header-entity\">\n <div class=\"title-wrap\">\n <div class=\"title-wrap-inner\">\n <span class=\"breadcrumb\" (click)=\"GoHome($event)\">\n <span class=\"fa-solid fa-house home-icon\"></span>Home\n </span>\n <span class=\"breadcrumb-separator\"><span class=\"fa-solid fa-chevron-right\"></span></span>\n <span class=\"breadcrumb-end\">Applications</span>\n </div>\n </div>\n <div class=\"config-button\">\n <button kendoButton (click)=\"ShowAppSelectionDialog()\"><span class=\"fa-solid fa-gear\"></span></button>\n <mj-record-selector-dialog [AvailableRecords]=\"AllApplications\" \n [SelectedRecords]=\"SelectedApplications\" \n [UnselectedRecords]=\"UnselectedApplications\"\n [DialogVisible]=\"AppSelectionDialogVisible\"\n DisplayField=\"Name\"\n DisplayIconField=\"Icon\"\n (DialogClosed)=\"OnAppSelectionDialogClosed($event)\">\n </mj-record-selector-dialog>\n </div>\n </div>\n <div class=\"main-area\"> \n <kendo-loader *ngIf=\"showLoader\" type=\"converging-spinner\" ></kendo-loader>\n <div class=\"card-list k-d-flex k-flex-row k-h-full k-flex-wrap\" *ngIf=\"!showLoader\">\n <div class=\"card-item\" *ngFor=\"let app of SelectedApplications\" (click)=\"appItemClick(app)\">\n <kendo-card class=\"card-wrapper\">\n <kendo-card-body>\n <div class=\"view-card-content k-cursor-pointer\">\n @if (app.Icon && app.Icon.length > 0) {\n <span [ngClass]=\"app.Icon + ' icon'\"></span>\n }\n <h2 kendoCardTitle>{{ app.Name }}</h2>\n <p kendoCardSubtitle>{{ app.Description }}</p>\n </div>\n </kendo-card-body>\n </kendo-card>\n </div>\n @if (SelectedApplications.length === 0 && !showLoader) {\n <div class=\"card-item\" (click)=\"ShowAppSelectionDialog()\">\n <kendo-card class=\"card-wrapper\">\n <kendo-card-body>\n <div class=\"view-card-content k-cursor-pointer\">\n <span class=\"fa-solid fa-gear\"></span>\n <h2 kendoCardTitle>Select Apps</h2>\n <p kendoCardSubtitle>No apps selected yet, click here to add some</p>\n </div>\n </kendo-card-body>\n </kendo-card>\n </div>\n }\n </div>\n </div>\n</div>", styles: [".data-browser-container {\n padding: 15px;\n}\n.main-area .card-list .card-item {\n background: #fff;\n border-radius: 10px;\n height: 200px;\n border: 3px solid transparent;\n}\n\n.main-area .card-list .card-item:hover {\n border: 3px solid var(--border-active);\n box-shadow: 0px 0px 20px 0px rgba(60, 73, 99, 0.2);\n\n }\n .main-area .card-list .card-item:hover .view-card-content h2 {\n color: var(--border-active);\n }\n .view-card-content h2 {\n font-size: 36px;\n text-align: center;\n line-height: 42px;\n font-weight: 500;\n color: var(--text-darked);\n }\n .view-card-content p {\n text-align: center;\n font-size: 18px;\n line-height: 28px;\n color: var(--text-darked);\n }\n \n.view-card-content .icon {\n position: absolute;\n top: 20px; \n left: 20px; \n font-size: 32px;\n}\n.card-list .card-item {\n position: relative; \n}\n\n .card-wrapper {\n height: 100%;\n border: none;\n }\n .card-wrapper .k-card-body {\n display: flex;\n justify-content: center; \n align-items: center;\n }\n\n .card-header-entity {\n display: flex;\n justify-content: space-between;\n align-items: center;\n}\n\n.title-wrap {\n flex-grow: 1;\n font-size: 24px;\n}\n.title-wrap-inner {\n display: block;\n}\n\n.breadcrumb {\n color: darkblue;\n cursor: pointer;\n display: inline;\n margin-left: 5px;\n margin-right: 5px;\n}\n\n.breadcrumb-end {\n display: inline;\n margin-left: 5px;\n}\n\n.breadcrumb-separator {\n font-size: 14px;\n display: inline;\n margin-left: 5px;\n margin-right: 5px;\n}\n\n.home-icon {\n margin-right: 5px;\n font-size: 18px;\n vertical-align: middle;\n}\n\n.config-button {\n display: flex;\n align-items: center;\n}", "\n.main-area {\n display: flex;\n flex-direction: column;\n height: 100%;\n width: 100%;\n gap: 24px;\n padding: 24px 0;\n}\n.list-view {\n padding: 16px;\n min-width: 300px;\n border-radius: 4px;\n background: #FAFAFA;\n border: none;\n}\n::ng-deep .list-view .k-listview-header, \n::ng-deep .list-view .k-listview-footer {\n border: none;\n}\n::ng-deep .list-view .k-listview-content {\n border: 1px solid rgba(0, 0, 0, 0.08);\n border-radius: 4px;\n background: #fff;\n padding: 16px;\n}\n\n.header,\n.footer {\n color: #424242;\n font-size: 16px;\n height: auto;\n margin:0;\n}\n\n.header {\n color: #424242;\n margin-bottom: 16px;\n display: flex;\n justify-content: space-between;\n align-items: center;\n}\n.header .head-tag {\n display: flex;\n align-items: center;\n gap: 8px;\n color: #424242;\nfont-size: 16px;\nfont-style: normal;\nfont-weight: 400;\nline-height: 20px;\n}\n\n.header .count {\n width: 24px;\n height: 24px;\n min-width: 24px;\n display: flex;\n justify-content: center;\n align-items: center;\n font-size: 10px;\n background: rgba(0, 0, 0, 0.08);\n border-radius: 50%;\n}\n.footer {\n font-size: 14px;\n margin-top: 16px;\n}\n\n.list-item {\n color: #424242;\n font-size: 14px;\n font-style: normal;\n font-weight: 400;\n line-height: 30px;\n cursor: pointer;\n margin: 4px;\n}\n.card-container {\n margin: 0;\n padding: 0;\n box-shadow: none;\n}\n.card-header-entity {\n display: flex;\n justify-content: space-between;\n align-items: flex-start;\n padding-bottom: 20px;\n border-bottom: 1px solid rgba(0, 0, 0, 0.08);\n}\n.card-header-entity .title-wrap h1 {\n color: #424242;\n font-size: 28px;\n font-style: normal;\n font-weight: 300;\n line-height: 28px;\n margin-bottom: 15px;\n}\n.card-header-entity .title-wrap {\n display: flex;\n flex-direction: column;\n}\n.card-header-entity .title-wrap p {\n margin: 0;\n display: flex;\n align-items: center;\n gap: 8px;\n color: #424242;\n font-size: 14px;\n font-style: normal;\n font-weight: 400;\n line-height: 20px;\n}\n\n\n\n\n \n.view-card .view-icon {\n color: var(--sideNav);\n}\n.card-wrapper {\n border: 1px solid rgba(0, 0, 0, 0.08);\n border-radius: 6px;\n width: 100% !important;\n}\n.card-wrapper .k-card-body {\n background: #fff;\n padding: 12px 20px;\n}\n.card-wrapper .view-card {\n overflow: auto;\n display: flex;\n justify-content: space-between;\n align-items: center;\n background: #fafafa;\n padding: 4px 15px;\n}\n.view-card .btn-wrapper {\n display: flex;\n align-items: center;\n}\n\n.k-card-body .view-card-content h5 {\n color: #424242;\n font-size: 16px;\n font-style: normal;\n font-weight: 400;\n line-height: 20px;\n margin-bottom: 0;\n letter-spacing: 0.18px;\n}\n.k-card-body .view-card-content p {\n color: #666;\n font-size: 14px;\n font-style: normal;\n font-weight: 400;\n line-height: 20px;\n height: 48px;\n margin-bottom: 0;\n}\n.card-container {\n padding: 0;\n margin: 0;\n box-shadow: none;\n}\n.card-header-entity {\n display: flex;\n justify-content: space-between;\n align-items: flex-start;\n padding-bottom: 20px;\n border-bottom: 1px solid rgba(0, 0, 0, 0.08);\n}\n\n.card-header-entity .title-wrap h1 {\n color: #424242;\n font-size: 28px;\n font-style: normal;\n font-weight: 300;\n line-height: 28px;\n margin-bottom: 15px;\n}\n.card-header-entity .title-wrap {\n display: flex;\n flex-direction: column;\n}\n.card-header-entity .title-wrap p {\n margin: 0;\n display: flex;\n align-items: center;\n gap: 8px;\n color: #424242;\n font-size: 14px;\n font-style: normal;\n font-weight: 400;\n line-height: 20px;\n}\n.main-area .card-list {\n display: grid;\n grid-template-columns: repeat(4, 1fr);\n gap: 20px;\n}\n"] }]
|
|
227
241
|
}], () => [{ type: i1.SharedService }, { type: i2.Router }], null); })();
|
|
228
|
-
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(DataBrowserComponent, { className: "DataBrowserComponent"
|
|
242
|
+
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(DataBrowserComponent, { className: "DataBrowserComponent" }); })();
|
|
@@ -88,8 +88,8 @@ export class ExpansionPanelComponent {
|
|
|
88
88
|
getFoldersForTreeNode(entityID, selectedFolderID) {
|
|
89
89
|
return __awaiter(this, void 0, void 0, function* () {
|
|
90
90
|
const md = new Metadata();
|
|
91
|
-
const categoryIDFilter = selectedFolderID ? `ParentID
|
|
92
|
-
const userViewFilter = `EntityID = ${entityID} AND ` + categoryIDFilter;
|
|
91
|
+
const categoryIDFilter = selectedFolderID ? `ParentID='${selectedFolderID}'` : 'ParentID IS NULL';
|
|
92
|
+
const userViewFilter = `EntityID = '${entityID}' AND ` + categoryIDFilter;
|
|
93
93
|
const viewResults = yield this.RunView('User View Categories', userViewFilter);
|
|
94
94
|
return viewResults.map((result) => {
|
|
95
95
|
let treeFolder = new TreeFolder(result.EntityID, result.ID, result.Name);
|
|
@@ -104,8 +104,8 @@ export class ExpansionPanelComponent {
|
|
|
104
104
|
getUserViewsForTreeNode(entityID, selectedFolderID) {
|
|
105
105
|
return __awaiter(this, void 0, void 0, function* () {
|
|
106
106
|
const md = new Metadata();
|
|
107
|
-
const categoryIDFilter = selectedFolderID ? `CategoryID
|
|
108
|
-
const userViewFilter = `UserID = ${md.CurrentUser.ID} AND EntityID = ${entityID} AND ` + categoryIDFilter;
|
|
107
|
+
const categoryIDFilter = selectedFolderID ? `CategoryID='${selectedFolderID}'` : 'CategoryID IS NULL';
|
|
108
|
+
const userViewFilter = `UserID = '${md.CurrentUser.ID}' AND EntityID = '${entityID}' AND ` + categoryIDFilter;
|
|
109
109
|
const viewResults = yield this.RunView('User Views', userViewFilter);
|
|
110
110
|
return viewResults.map((result) => {
|
|
111
111
|
let treeItem = new TreeItem(result, ItemType.UserView);
|
|
@@ -171,4 +171,4 @@ ExpansionPanelComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: Exp
|
|
|
171
171
|
}], () => [{ type: i1.SharedService }, { type: i2.Router }], { items: [{
|
|
172
172
|
type: Input
|
|
173
173
|
}] }); })();
|
|
174
|
-
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(ExpansionPanelComponent, { className: "ExpansionPanelComponent"
|
|
174
|
+
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(ExpansionPanelComponent, { className: "ExpansionPanelComponent" }); })();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"favorites.component.d.ts","sourceRoot":"","sources":["../../../src/lib/favorites/favorites.component.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAEzC,OAAO,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAC;;
|
|
1
|
+
{"version":3,"file":"favorites.component.d.ts","sourceRoot":"","sources":["../../../src/lib/favorites/favorites.component.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAEzC,OAAO,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAC;;AAGnE,qBAKa,kBAAkB;IAIjB,OAAO,CAAC,MAAM;IAHnB,SAAS,EAAE,kBAAkB,EAAE,CAAM;IACrC,WAAW,EAAE,MAAM,CAAM;gBAEZ,MAAM,EAAE,MAAM;IAE5B,QAAQ;IAsCd,iBAAiB,CAAC,GAAG,EAAE,kBAAkB;IAiCzC,uBAAuB,CAAC,GAAG,EAAE,GAAG;yCA7ErB,kBAAkB;2CAAlB,kBAAkB;CAuF9B"}
|