@memberjunction/ng-explorer-core 0.9.8 → 0.9.9
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,6 +1,6 @@
|
|
|
1
1
|
import { EventEmitter, AfterViewInit, OnDestroy, ElementRef } from '@angular/core';
|
|
2
2
|
import { ActivatedRoute, Router } from "@angular/router";
|
|
3
|
-
import { Metadata, EntityFieldInfo } from "@memberjunction/core";
|
|
3
|
+
import { Metadata, EntityFieldInfo, EntityInfo } from "@memberjunction/core";
|
|
4
4
|
import { DragEndEvent } from '@progress/kendo-angular-sortable';
|
|
5
5
|
import { UserViewEntityExtended } from '@memberjunction/core-entities';
|
|
6
6
|
import { BaseFormComponent } from '../generic/base-form-component';
|
|
@@ -27,6 +27,7 @@ export declare class ViewPropertiesDialogComponent extends BaseFormComponent imp
|
|
|
27
27
|
localFilterState: any;
|
|
28
28
|
defaultFilterState: any;
|
|
29
29
|
record: UserViewEntityExtended;
|
|
30
|
+
ViewEntityInfo: EntityInfo;
|
|
30
31
|
private keyPressListener;
|
|
31
32
|
usedFields: Set<string>;
|
|
32
33
|
sortFields: any[];
|
|
@@ -113,7 +113,7 @@ function ViewPropertiesDialogComponent_kendo_window_3_ng_template_11_div_4_Templ
|
|
|
113
113
|
} if (rf & 2) {
|
|
114
114
|
const ctx_r24 = i0.ɵɵnextContext(3);
|
|
115
115
|
i0.ɵɵadvance(1);
|
|
116
|
-
i0.ɵɵproperty("filters", ctx_r24.
|
|
116
|
+
i0.ɵɵproperty("filters", ctx_r24.ViewEntityInfo.Fields.map(ctx_r24.toKendoFilterField))("value", ctx_r24.defaultFilterState);
|
|
117
117
|
} }
|
|
118
118
|
function ViewPropertiesDialogComponent_kendo_window_3_ng_template_11_Template(rf, ctx) { if (rf & 1) {
|
|
119
119
|
const _r30 = i0.ɵɵgetCurrentView();
|
|
@@ -353,12 +353,12 @@ export class ViewPropertiesDialogComponent extends BaseFormComponent {
|
|
|
353
353
|
}
|
|
354
354
|
FinishLoad(md) {
|
|
355
355
|
return __awaiter(this, void 0, void 0, function* () {
|
|
356
|
-
|
|
356
|
+
this.ViewEntityInfo = md.Entities.find(e => e.ID == this.record.EntityID);
|
|
357
357
|
// using all these local variables because the VSCode debugger doesn't know what "this" is all of a sudden
|
|
358
|
-
if (!this.
|
|
358
|
+
if (!this.ViewEntityInfo)
|
|
359
359
|
throw new Error(`Entity ${this.record.EntityID} not found in metadata`);
|
|
360
360
|
// prepare the sorting state
|
|
361
|
-
this.sortFields = this.
|
|
361
|
+
this.sortFields = this.ViewEntityInfo.Fields;
|
|
362
362
|
if (this.record.SortState === null || this.record.SortState === undefined || this.record.SortState.trim().length === 0)
|
|
363
363
|
this.sortState = [];
|
|
364
364
|
else
|
|
@@ -367,7 +367,7 @@ export class ViewPropertiesDialogComponent extends BaseFormComponent {
|
|
|
367
367
|
this.sortState = this.sortState.map((s) => {
|
|
368
368
|
var _a;
|
|
369
369
|
return {
|
|
370
|
-
field: (_a = this.
|
|
370
|
+
field: (_a = this.ViewEntityInfo) === null || _a === void 0 ? void 0 : _a.Fields.find((f) => f.Name === s.field),
|
|
371
371
|
direction: this.sortDirections.find((d) => d.Value === s.direction)
|
|
372
372
|
};
|
|
373
373
|
});
|
|
@@ -395,7 +395,7 @@ export class ViewPropertiesDialogComponent extends BaseFormComponent {
|
|
|
395
395
|
var _a;
|
|
396
396
|
// we go through our EntityFields and add any that aren't already in the columnSettings
|
|
397
397
|
// this is so that we can add new columns to the view that were not previously used in this view
|
|
398
|
-
const unusedFields = (_a = this.
|
|
398
|
+
const unusedFields = (_a = this.ViewEntityInfo) === null || _a === void 0 ? void 0 : _a.Fields.filter(f => {
|
|
399
399
|
if (gridState.columnSettings.find((col) => col.Name.trim().toLowerCase() === f.Name.trim().toLowerCase()))
|
|
400
400
|
return false; // this entity field is already in the columnSettings
|
|
401
401
|
else
|
|
@@ -503,7 +503,7 @@ export class ViewPropertiesDialogComponent extends BaseFormComponent {
|
|
|
503
503
|
}
|
|
504
504
|
addSort() {
|
|
505
505
|
var _a;
|
|
506
|
-
this.sortState = this.sortState.concat({ field: (_a = this.
|
|
506
|
+
this.sortState = this.sortState.concat({ field: (_a = this.ViewEntityInfo) === null || _a === void 0 ? void 0 : _a.Fields[0], direction: this.sortDirections[0] }); // add a new sort item
|
|
507
507
|
}
|
|
508
508
|
removeSort(item) {
|
|
509
509
|
this.sortState = this.sortState.filter((i) => i !== item);
|
|
@@ -544,7 +544,7 @@ ViewPropertiesDialogComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ typ
|
|
|
544
544
|
} }, dependencies: [i4.NgForOf, i4.NgIf, i3.DefaultValueAccessor, i3.CheckboxControlValueAccessor, i3.NgControlStatus, i3.NgModel, i5.WindowComponent, i6.Button, i7.LoaderComponent, i8.TabStripComponent, i8.TabStripTabComponent, i8.TabContentDirective, i9.TextAreaComponent, i9.TextBoxComponent, i9.SwitchComponent, i9.CheckBoxDirective, i10.LabelComponent, i11.IconComponent, i12.FillContainer, i13.SortableComponent, i13.SortableBindingDirective, i14.FilterComponent, i15.DropDownListComponent], styles: [".view-prop-tab-contents[_ngcontent-%COMP%] {\r\n display: flex;\r\n flex-direction: column;\r\n height: 100%; \r\n}\r\n\r\n.form-group[_ngcontent-%COMP%] {\r\n display: flex;\r\n flex-direction: row;\r\n align-items: flex-start;\r\n margin-bottom: 10px;\r\n}\r\n\r\n.form-group-description[_ngcontent-%COMP%] {\r\n flex-grow: 1;\r\n}\r\n\r\n.k-form-label[_ngcontent-%COMP%] {\r\n width: 150px; \r\n margin-right: 10px;\r\n}\r\n\r\n.view-description[_ngcontent-%COMP%] {\r\n flex-grow: 1;\r\n height: 100%;\r\n padding: 5px;\r\n resize: none;\r\n}\r\n\r\n\r\n\r\n.item-content[_ngcontent-%COMP%] {\r\n display: flex;\r\n justify-content: space-between;\r\n align-items: center;\r\n}\r\n\r\n.popup-content[_ngcontent-%COMP%] {\r\n height: calc(100% - 46px);\r\n}\r\n\r\n.popup-actions[_ngcontent-%COMP%] {\r\n padding: 16px 0 0;\r\n}\r\n\r\n.view-prop-tab-contents[_ngcontent-%COMP%] {\r\n overflow: hidden;\r\n}\r\n\r\n.sort-column[_ngcontent-%COMP%] {\r\n width: 300px;\r\n}\r\n\r\n.sort-direction[_ngcontent-%COMP%] {\r\n width: 125px;\r\n}\r\n\r\n.sort-header[_ngcontent-%COMP%] > button[_ngcontent-%COMP%] {\r\n margin-left: 5px;\r\n margin-bottom: 5px;\r\n width: 75px;\r\n}\r\n\r\n.smart-filter-label[_ngcontent-%COMP%] {\r\n margin-right: 10px;\r\n}\r\n\r\n.smart-filter-prompt[_ngcontent-%COMP%] {\r\n margin-top: 15px;\r\n}\r\n\r\n.advanced-tab-details[_ngcontent-%COMP%]\r\n{\r\n margin-bottom: 10px;\r\n}"] });
|
|
545
545
|
(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(ViewPropertiesDialogComponent, [{
|
|
546
546
|
type: Component,
|
|
547
|
-
args: [{ selector: 'app-view-properties-dialog', template: "<div>\r\n <button *ngIf=\"ShowPropertiesButton\"\r\n kendoButton\r\n [primary]=\"true\"\r\n icon=\"gear\"\r\n (click)=\"this.Open()\"\r\n >Properties</button>\r\n <div class=\"k-overlay\" *ngIf=\"isDialogOpened\"></div>\r\n <kendo-window\r\n [width]=\"700\"\r\n [height]=\"525\"\r\n [minHeight]=\"300\"\r\n [minWidth]=\"400\"\r\n [resizable]=\"true\"\r\n title=\"View Properties\"\r\n *ngIf=\"isDialogOpened\"\r\n (close)=\"closePropertiesDialog()\"\r\n (resizeEnd)=\"this.ResizeTab()\"\r\n (heightChange)=\"this.ResizeTab()\"\r\n (widthChange)=\"this.ResizeTab()\"\r\n >\r\n <kendo-loader *ngIf=\"showloader\" type=\"converging-spinner\" ></kendo-loader>\r\n <div class=\"k-d-flex k-flex-col k-justify-content-between k-h-full\" #dialogContainer>\r\n <div [class]=\"showloader ? 'disabled-div' : ''\">\r\n <kendo-tabstrip class=\"popup-content\" [keepTabContent]=\"true\" [animate] = \"false\" [height]=\"TabHeight\" >\r\n\r\n <kendo-tabstrip-tab title=\"General\" [selected]=\"true\">\r\n <ng-template kendoTabContent>\r\n <div class=\"view-prop-tab-contents\">\r\n <div class=\"form-group\">\r\n <kendo-label class=\"k-form-label\" text=\"Name\"></kendo-label>\r\n <kendo-textbox #nameField class=\"view-name\" [(ngModel)]=\"record.Name\"></kendo-textbox>\r\n </div>\r\n <div class=\"form-group form-group-description\">\r\n <kendo-label class=\"k-form-label\" text=\"Description\"></kendo-label>\r\n <textarea class=\"k-input k-input-solid view-description\" [(ngModel)]=\"record.Description\"></textarea>\r\n </div>\r\n </div>\r\n </ng-template>\r\n </kendo-tabstrip-tab>\r\n \r\n <kendo-tabstrip-tab title=\"Fields\">\r\n <ng-template kendoTabContent>\r\n \r\n <kendo-sortable\r\n [kendoSortableBinding]=\"this.localGridState.columnSettings\"\r\n [animation]=\"true\"\r\n itemClass=\"item\"\r\n activeItemClass=\"item active\"\r\n (dragEnd)=\"onDragEnd($event)\"\r\n >\r\n <ng-template let-col=\"item\">\r\n <div class=\"item-content\">\r\n <div>\r\n <input\r\n type=\"checkbox\"\r\n [(ngModel)]=\"!col.hidden\"\r\n id=\"column_{{col.ID}}\"\r\n kendoCheckBox\r\n (change)=\"toggleColumn(col)\"\r\n />\r\n <kendo-label\r\n [for]=\"'column_'+col.ID\"\r\n [text]=\"col.DisplayName ? col.DisplayName : col.Name\"\r\n class=\"k-checkbox-label\"\r\n ></kendo-label>\r\n </div>\r\n <kendo-icon name=\"reorder\"></kendo-icon>\r\n </div>\r\n </ng-template>\r\n </kendo-sortable>\r\n </ng-template>\r\n </kendo-tabstrip-tab>\r\n \r\n <kendo-tabstrip-tab title=\"Filters\">\r\n <ng-template kendoTabContent>\r\n <div class=\"smart-filter-container\">\r\n <kendo-label text=\"Smart Filter\" class=\"smart-filter-label\"></kendo-label>\r\n <kendo-switch [(ngModel)]=\"record.SmartFilterEnabled\"></kendo-switch>\r\n </div>\r\n <div *ngIf=\"record.SmartFilterEnabled\" class=\"smart-filter-prompt\" mjFillContainer [fillHeight]=\"true\">\r\n <kendo-textarea\r\n placeholder=\"Describe how you would like the data filtered\"\r\n [rows]=\"10\"\r\n [(ngModel)]=\"record.SmartFilterPrompt\"\r\n resizable=\"vertical\"\r\n ></kendo-textarea>\r\n </div>\r\n <div *ngIf=\"!record.SmartFilterEnabled\">\r\n <kendo-filter\r\n [filters]=\"
|
|
547
|
+
args: [{ selector: 'app-view-properties-dialog', template: "<div>\r\n <button *ngIf=\"ShowPropertiesButton\"\r\n kendoButton\r\n [primary]=\"true\"\r\n icon=\"gear\"\r\n (click)=\"this.Open()\"\r\n >Properties</button>\r\n <div class=\"k-overlay\" *ngIf=\"isDialogOpened\"></div>\r\n <kendo-window\r\n [width]=\"700\"\r\n [height]=\"525\"\r\n [minHeight]=\"300\"\r\n [minWidth]=\"400\"\r\n [resizable]=\"true\"\r\n title=\"View Properties\"\r\n *ngIf=\"isDialogOpened\"\r\n (close)=\"closePropertiesDialog()\"\r\n (resizeEnd)=\"this.ResizeTab()\"\r\n (heightChange)=\"this.ResizeTab()\"\r\n (widthChange)=\"this.ResizeTab()\"\r\n >\r\n <kendo-loader *ngIf=\"showloader\" type=\"converging-spinner\" ></kendo-loader>\r\n <div class=\"k-d-flex k-flex-col k-justify-content-between k-h-full\" #dialogContainer>\r\n <div [class]=\"showloader ? 'disabled-div' : ''\">\r\n <kendo-tabstrip class=\"popup-content\" [keepTabContent]=\"true\" [animate] = \"false\" [height]=\"TabHeight\" >\r\n\r\n <kendo-tabstrip-tab title=\"General\" [selected]=\"true\">\r\n <ng-template kendoTabContent>\r\n <div class=\"view-prop-tab-contents\">\r\n <div class=\"form-group\">\r\n <kendo-label class=\"k-form-label\" text=\"Name\"></kendo-label>\r\n <kendo-textbox #nameField class=\"view-name\" [(ngModel)]=\"record.Name\"></kendo-textbox>\r\n </div>\r\n <div class=\"form-group form-group-description\">\r\n <kendo-label class=\"k-form-label\" text=\"Description\"></kendo-label>\r\n <textarea class=\"k-input k-input-solid view-description\" [(ngModel)]=\"record.Description\"></textarea>\r\n </div>\r\n </div>\r\n </ng-template>\r\n </kendo-tabstrip-tab>\r\n \r\n <kendo-tabstrip-tab title=\"Fields\">\r\n <ng-template kendoTabContent>\r\n \r\n <kendo-sortable\r\n [kendoSortableBinding]=\"this.localGridState.columnSettings\"\r\n [animation]=\"true\"\r\n itemClass=\"item\"\r\n activeItemClass=\"item active\"\r\n (dragEnd)=\"onDragEnd($event)\"\r\n >\r\n <ng-template let-col=\"item\">\r\n <div class=\"item-content\">\r\n <div>\r\n <input\r\n type=\"checkbox\"\r\n [(ngModel)]=\"!col.hidden\"\r\n id=\"column_{{col.ID}}\"\r\n kendoCheckBox\r\n (change)=\"toggleColumn(col)\"\r\n />\r\n <kendo-label\r\n [for]=\"'column_'+col.ID\"\r\n [text]=\"col.DisplayName ? col.DisplayName : col.Name\"\r\n class=\"k-checkbox-label\"\r\n ></kendo-label>\r\n </div>\r\n <kendo-icon name=\"reorder\"></kendo-icon>\r\n </div>\r\n </ng-template>\r\n </kendo-sortable>\r\n </ng-template>\r\n </kendo-tabstrip-tab>\r\n \r\n <kendo-tabstrip-tab title=\"Filters\">\r\n <ng-template kendoTabContent>\r\n <div class=\"smart-filter-container\">\r\n <kendo-label text=\"Smart Filter\" class=\"smart-filter-label\"></kendo-label>\r\n <kendo-switch [(ngModel)]=\"record.SmartFilterEnabled\"></kendo-switch>\r\n </div>\r\n <div *ngIf=\"record.SmartFilterEnabled\" class=\"smart-filter-prompt\" mjFillContainer [fillHeight]=\"true\">\r\n <kendo-textarea\r\n placeholder=\"Describe how you would like the data filtered\"\r\n [rows]=\"10\"\r\n [(ngModel)]=\"record.SmartFilterPrompt\"\r\n resizable=\"vertical\"\r\n ></kendo-textarea>\r\n </div>\r\n <div *ngIf=\"!record.SmartFilterEnabled\">\r\n <kendo-filter\r\n [filters]=\"ViewEntityInfo!.Fields.map(toKendoFilterField)\"\r\n [value]=\"defaultFilterState\"\r\n (valueChange)=\"onFilterChange($event)\"\r\n >\r\n </kendo-filter>\r\n </div>\r\n </ng-template>\r\n </kendo-tabstrip-tab>\r\n\r\n <kendo-tabstrip-tab title=\"Sorting\">\r\n <ng-template kendoTabContent>\r\n <div class=\"sort-header\">\r\n <button kendoButton (click)=\"addSort()\" icon=\"add\"></button>\r\n \r\n </div>\r\n <div *ngFor=\"let s of this.sortState\"> \r\n <kendo-dropdownlist \r\n class=\"sort-column\"\r\n [data]=\"sortFields\"\r\n textField=\"Name\"\r\n valueField=\"Name\"\r\n (valueChange)=\"sortColumnValueChange(s, $event)\"\r\n [(ngModel)]=\"s.field\"\r\n >\r\n </kendo-dropdownlist>\r\n <kendo-dropdownlist\r\n class=\"sort-direction\"\r\n [data]=\"sortDirections\"\r\n textField=\"Name\"\r\n valueField=\"Value\"\r\n (valueChange)=\"sortDirectionValueChange(s, $event)\"\r\n [(ngModel)]=\"s.direction\"\r\n >\r\n </kendo-dropdownlist>\r\n <button kendoButton (click)=\"removeSort(s)\" icon=\"delete\"></button>\r\n </div> \r\n </ng-template>\r\n </kendo-tabstrip-tab>\r\n\r\n <kendo-tabstrip-tab title=\"Advanced\">\r\n <ng-template kendoTabContent>\r\n <div *ngIf=\"record.SmartFilterEnabled\">\r\n <kendo-textarea\r\n [readonly]=\"true\"\r\n [rows]=\"5\"\r\n [(ngModel)]=\"record.SmartFilterExplanation\"\r\n resizable=\"vertical\"\r\n class=\"advanced-tab-details\"\r\n ></kendo-textarea>\r\n <kendo-textarea\r\n [readonly]=\"true\"\r\n [rows]=\"5\"\r\n [(ngModel)]=\"record.SmartFilterWhereClause\"\r\n resizable=\"vertical\"\r\n class=\"advanced-tab-details\"\r\n ></kendo-textarea> \r\n </div>\r\n <div *ngElse>\r\n <kendo-textarea\r\n [readonly]=\"true\"\r\n [rows]=\"7\"\r\n [(ngModel)]=\"record.WhereClause\"\r\n resizable=\"vertical\"\r\n class=\"advanced-tab-details\"\r\n ></kendo-textarea>\r\n </div>\r\n\r\n </ng-template>\r\n </kendo-tabstrip-tab>\r\n\r\n </kendo-tabstrip>\r\n \r\n <div class=\"k-actions k-actions-end popup-actions\">\r\n <button kendoButton icon=\"save\" (click)=\"saveProperties()\" themeColor=\"primary\">\r\n Save\r\n </button>\r\n <button kendoButton (click)=\"closePropertiesDialog()\">Cancel</button>\r\n </div>\r\n </div>\r\n </div>\r\n </kendo-window>\r\n</div>\r\n", styles: [".view-prop-tab-contents {\r\n display: flex;\r\n flex-direction: column;\r\n height: 100%; /* Set to the height you want */\r\n}\r\n\r\n.form-group {\r\n display: flex;\r\n flex-direction: row;\r\n align-items: flex-start;\r\n margin-bottom: 10px;\r\n}\r\n\r\n.form-group-description {\r\n flex-grow: 1;\r\n}\r\n\r\n.k-form-label {\r\n width: 150px; /* Adjust as needed */\r\n margin-right: 10px;\r\n}\r\n\r\n.view-description {\r\n flex-grow: 1;\r\n height: 100%;\r\n padding: 5px;\r\n resize: none;\r\n}\r\n\r\n\r\n\r\n.item-content {\r\n display: flex;\r\n justify-content: space-between;\r\n align-items: center;\r\n}\r\n\r\n.popup-content {\r\n height: calc(100% - 46px);\r\n}\r\n\r\n.popup-actions {\r\n padding: 16px 0 0;\r\n}\r\n\r\n.view-prop-tab-contents {\r\n overflow: hidden;\r\n}\r\n\r\n.sort-column {\r\n width: 300px;\r\n}\r\n\r\n.sort-direction {\r\n width: 125px;\r\n}\r\n\r\n.sort-header > button {\r\n margin-left: 5px;\r\n margin-bottom: 5px;\r\n width: 75px;\r\n}\r\n\r\n.smart-filter-label {\r\n margin-right: 10px;\r\n}\r\n\r\n.smart-filter-prompt {\r\n margin-top: 15px;\r\n}\r\n\r\n.advanced-tab-details\r\n{\r\n margin-bottom: 10px;\r\n}"] }]
|
|
548
548
|
}], function () { return [{ type: i1.ActivatedRoute }, { type: i0.ElementRef }, { type: i2.SharedService }, { type: i3.FormBuilder }, { type: i1.Router }]; }, { ViewID: [{
|
|
549
549
|
type: Input
|
|
550
550
|
}], EntityName: [{
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@memberjunction/ng-explorer-core",
|
|
3
|
-
"version": "0.9.
|
|
3
|
+
"version": "0.9.9",
|
|
4
4
|
"description": "MemberJunction Explorer: Core Angular Components",
|
|
5
5
|
"main": "./dist/public-api.js",
|
|
6
6
|
"typings": "./dist/public-api.d.ts",
|
|
@@ -27,12 +27,12 @@
|
|
|
27
27
|
"@progress/kendo-angular-listview": "^12.1.0"
|
|
28
28
|
},
|
|
29
29
|
"dependencies": {
|
|
30
|
-
"@memberjunction/global": "^0.9.
|
|
31
|
-
"@memberjunction/core": "^0.9.
|
|
32
|
-
"@memberjunction/ng-compare-records": "^0.9.
|
|
33
|
-
"@memberjunction/ng-record-changes": "^0.9.
|
|
34
|
-
"@memberjunction/ng-container-directives": "^0.9.
|
|
35
|
-
"@memberjunction/ng-user-view-grid": "^0.9.
|
|
30
|
+
"@memberjunction/global": "^0.9.70",
|
|
31
|
+
"@memberjunction/core": "^0.9.67",
|
|
32
|
+
"@memberjunction/ng-compare-records": "^0.9.69",
|
|
33
|
+
"@memberjunction/ng-record-changes": "^0.9.7",
|
|
34
|
+
"@memberjunction/ng-container-directives": "^0.9.45",
|
|
35
|
+
"@memberjunction/ng-user-view-grid": "^0.9.49",
|
|
36
36
|
"tslib": "^2.3.0"
|
|
37
37
|
},
|
|
38
38
|
"sideEffects": false
|