@memberjunction/ng-entity-viewer 5.39.0 → 5.40.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/__tests__/view-types.test.d.ts +2 -0
- package/dist/__tests__/view-types.test.d.ts.map +1 -0
- package/dist/__tests__/view-types.test.js +102 -0
- package/dist/__tests__/view-types.test.js.map +1 -0
- package/dist/lib/entity-data-grid/entity-data-grid.component.d.ts.map +1 -1
- package/dist/lib/entity-data-grid/entity-data-grid.component.js +8 -0
- package/dist/lib/entity-data-grid/entity-data-grid.component.js.map +1 -1
- package/dist/lib/entity-viewer/entity-viewer.component.d.ts +356 -341
- package/dist/lib/entity-viewer/entity-viewer.component.d.ts.map +1 -1
- package/dist/lib/entity-viewer/entity-viewer.component.js +993 -1097
- package/dist/lib/entity-viewer/entity-viewer.component.js.map +1 -1
- package/dist/lib/view-config-panel/view-config-panel.component.d.ts +126 -126
- package/dist/lib/view-config-panel/view-config-panel.component.js +635 -635
- package/dist/lib/view-config-panel/view-config-panel.component.js.map +1 -1
- package/dist/lib/view-selector/view-selector.component.d.ts +226 -0
- package/dist/lib/view-selector/view-selector.component.d.ts.map +1 -0
- package/dist/lib/view-selector/view-selector.component.js +861 -0
- package/dist/lib/view-selector/view-selector.component.js.map +1 -0
- package/dist/lib/view-type-switcher/view-type-switcher.component.d.ts +114 -0
- package/dist/lib/view-type-switcher/view-type-switcher.component.d.ts.map +1 -0
- package/dist/lib/view-type-switcher/view-type-switcher.component.js +209 -0
- package/dist/lib/view-type-switcher/view-type-switcher.component.js.map +1 -0
- package/dist/lib/view-types/descriptors/cards-view-type.d.ts +18 -0
- package/dist/lib/view-types/descriptors/cards-view-type.d.ts.map +1 -0
- package/dist/lib/view-types/descriptors/cards-view-type.js +31 -0
- package/dist/lib/view-types/descriptors/cards-view-type.js.map +1 -0
- package/dist/lib/view-types/descriptors/grid-view-type.d.ts +17 -0
- package/dist/lib/view-types/descriptors/grid-view-type.d.ts.map +1 -0
- package/dist/lib/view-types/descriptors/grid-view-type.js +30 -0
- package/dist/lib/view-types/descriptors/grid-view-type.js.map +1 -0
- package/dist/lib/view-types/descriptors/map-view-type.d.ts +21 -0
- package/dist/lib/view-types/descriptors/map-view-type.d.ts.map +1 -0
- package/dist/lib/view-types/descriptors/map-view-type.js +35 -0
- package/dist/lib/view-types/descriptors/map-view-type.js.map +1 -0
- package/dist/lib/view-types/descriptors/timeline-view-type.d.ts +22 -0
- package/dist/lib/view-types/descriptors/timeline-view-type.d.ts.map +1 -0
- package/dist/lib/view-types/descriptors/timeline-view-type.js +40 -0
- package/dist/lib/view-types/descriptors/timeline-view-type.js.map +1 -0
- package/dist/lib/view-types/index.d.ts +20 -0
- package/dist/lib/view-types/index.d.ts.map +1 -0
- package/dist/lib/view-types/index.js +29 -0
- package/dist/lib/view-types/index.js.map +1 -0
- package/dist/lib/view-types/renderers/cards-view-renderer.component.d.ts +93 -0
- package/dist/lib/view-types/renderers/cards-view-renderer.component.d.ts.map +1 -0
- package/dist/lib/view-types/renderers/cards-view-renderer.component.js +144 -0
- package/dist/lib/view-types/renderers/cards-view-renderer.component.js.map +1 -0
- package/dist/lib/view-types/renderers/grid-view-renderer.component.d.ts +273 -0
- package/dist/lib/view-types/renderers/grid-view-renderer.component.d.ts.map +1 -0
- package/dist/lib/view-types/renderers/grid-view-renderer.component.js +558 -0
- package/dist/lib/view-types/renderers/grid-view-renderer.component.js.map +1 -0
- package/dist/lib/view-types/renderers/map-view-renderer.component.d.ts +135 -0
- package/dist/lib/view-types/renderers/map-view-renderer.component.d.ts.map +1 -0
- package/dist/lib/view-types/renderers/map-view-renderer.component.js +216 -0
- package/dist/lib/view-types/renderers/map-view-renderer.component.js.map +1 -0
- package/dist/lib/view-types/renderers/timeline-view-renderer.component.d.ts +176 -0
- package/dist/lib/view-types/renderers/timeline-view-renderer.component.d.ts.map +1 -0
- package/dist/lib/view-types/renderers/timeline-view-renderer.component.js +535 -0
- package/dist/lib/view-types/renderers/timeline-view-renderer.component.js.map +1 -0
- package/dist/lib/view-types/view-type.contracts.d.ts +235 -0
- package/dist/lib/view-types/view-type.contracts.d.ts.map +1 -0
- package/dist/lib/view-types/view-type.contracts.js +51 -0
- package/dist/lib/view-types/view-type.contracts.js.map +1 -0
- package/dist/lib/view-types/view-type.engine.d.ts +76 -0
- package/dist/lib/view-types/view-type.engine.d.ts.map +1 -0
- package/dist/lib/view-types/view-type.engine.js +138 -0
- package/dist/lib/view-types/view-type.engine.js.map +1 -0
- package/dist/lib/view-workspace/view-workspace.component.d.ts +451 -0
- package/dist/lib/view-workspace/view-workspace.component.d.ts.map +1 -0
- package/dist/lib/view-workspace/view-workspace.component.js +1212 -0
- package/dist/lib/view-workspace/view-workspace.component.js.map +1 -0
- package/dist/module.d.ts +20 -11
- package/dist/module.d.ts.map +1 -1
- package/dist/module.js +50 -8
- package/dist/module.js.map +1 -1
- package/dist/public-api.d.ts +8 -0
- package/dist/public-api.d.ts.map +1 -1
- package/dist/public-api.js +14 -0
- package/dist/public-api.js.map +1 -1
- package/package.json +16 -15
|
@@ -0,0 +1,176 @@
|
|
|
1
|
+
import { EventEmitter, OnInit } from '@angular/core';
|
|
2
|
+
import { EntityInfo, EntityFieldInfo } from '@memberjunction/core';
|
|
3
|
+
import { BaseAngularComponent } from '@memberjunction/ng-base-types';
|
|
4
|
+
import { TimelineGroup, TimeSegmentGrouping, TimelineSortOrder, AfterEventClickArgs } from '@memberjunction/ng-timeline';
|
|
5
|
+
import { TimelineOrientation } from '../../types';
|
|
6
|
+
import { IViewRenderer } from '../view-type.contracts';
|
|
7
|
+
import * as i0 from "@angular/core";
|
|
8
|
+
/**
|
|
9
|
+
* The persisted configuration shape for the Timeline view type.
|
|
10
|
+
*
|
|
11
|
+
* This is the `config` payload the host hands to the renderer on mount and that the
|
|
12
|
+
* renderer emits back (in full) via {@link TimelineViewRendererComponent.configChanged}
|
|
13
|
+
* whenever the user changes any of the timeline chrome controls. The host treats it as an
|
|
14
|
+
* opaque blob — only this renderer (and an eventual prop-sheet) understands its keys — and
|
|
15
|
+
* persists it per `MJ: View Types` row.
|
|
16
|
+
*
|
|
17
|
+
* All fields are optional: on first mount the renderer falls back to sensible defaults
|
|
18
|
+
* (first available date field, vertical orientation, descending sort, monthly segments).
|
|
19
|
+
*/
|
|
20
|
+
export interface TimelineViewConfig {
|
|
21
|
+
/** The entity date-field used to place records on the timeline (e.g. `__mj_CreatedAt`). */
|
|
22
|
+
dateFieldName?: string;
|
|
23
|
+
/** Vertical (alternating) vs. horizontal (single-row) timeline layout. */
|
|
24
|
+
orientation?: TimelineOrientation;
|
|
25
|
+
/** Newest-first (`desc`) vs. oldest-first (`asc`) event ordering. */
|
|
26
|
+
sortOrder?: TimelineSortOrder;
|
|
27
|
+
/** How events are bucketed into collapsible segments (day/week/month/...). */
|
|
28
|
+
segmentGrouping?: TimeSegmentGrouping;
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* TimelineViewRendererComponent
|
|
32
|
+
* -----------------------------
|
|
33
|
+
* The Timeline **view type** as a self-contained {@link IViewRenderer} plug-in. Where the
|
|
34
|
+
* Timeline view used to be hard-wired into the generic `mj-entity-viewer` host (which owned
|
|
35
|
+
* the date-field detection, the record→{@link TimelineGroup} transformation, and the
|
|
36
|
+
* date-field / orientation / sort chrome), this component now OWNS all of it. The host simply
|
|
37
|
+
* dynamic-mounts this renderer when Timeline is the active view type and feeds it the standard
|
|
38
|
+
* renderer inputs (`entity` / `records` / `selectedRecordId` / `filterText` / `config`).
|
|
39
|
+
*
|
|
40
|
+
* It renders a small chrome header row (date-field selector + orientation toggle + sort toggle)
|
|
41
|
+
* above a flex-filling `<mj-timeline>`, exactly reproducing the host's previous timeline chrome
|
|
42
|
+
* and bindings. Because the host only mounts this plug-in when Timeline is active, the chrome
|
|
43
|
+
* always renders — no extra `EffectiveViewMode === 'timeline'` guard is needed.
|
|
44
|
+
*
|
|
45
|
+
* **What was absorbed from the host** (`EntityViewerComponent`): `detectDateFields()`,
|
|
46
|
+
* `sortDateFieldsByPriority()`, `AvailableDateFields`/`HasDateFields`, `configureTimeline()`,
|
|
47
|
+
* `updateTimelineGroups()` (+ `findTitleField`/`findDescriptionField`/`findSubtitleField`),
|
|
48
|
+
* `ToggleTimelineOrientation()`, `ToggleTimelineSortOrder()`, `SetTimelineDateField()`,
|
|
49
|
+
* `SelectedDateFieldDisplayName`, `OnTimelineEventClick()`, and the `TimelineSelectedEventID`
|
|
50
|
+
* composite-key→raw-id derivation.
|
|
51
|
+
*
|
|
52
|
+
* Inputs use the camelCase names mandated by the {@link IViewRenderer} contract (the host binds
|
|
53
|
+
* them by those exact names) rather than MJ's usual PascalCase for public members.
|
|
54
|
+
*/
|
|
55
|
+
export declare class TimelineViewRendererComponent extends BaseAngularComponent implements IViewRenderer<TimelineViewConfig>, OnInit {
|
|
56
|
+
private _entity;
|
|
57
|
+
/** The entity whose records are being rendered. Re-detects date fields + rebuilds groups on change. */
|
|
58
|
+
set entity(value: EntityInfo | null);
|
|
59
|
+
get entity(): EntityInfo | null;
|
|
60
|
+
private _records;
|
|
61
|
+
/** The records to render (already loaded/filtered by the host). Rebuilds groups on change. */
|
|
62
|
+
set records(value: Record<string, unknown>[]);
|
|
63
|
+
get records(): Record<string, unknown>[];
|
|
64
|
+
/** Primary-key string of the currently selected record, if any (composite-key encoded). */
|
|
65
|
+
selectedRecordId: string | null;
|
|
66
|
+
/** Active filter text — accepted for contract uniformity; the host pre-filters `records`. */
|
|
67
|
+
filterText: string | null;
|
|
68
|
+
private _config;
|
|
69
|
+
/**
|
|
70
|
+
* This view's persisted configuration. Seeding the chrome controls from it is deferred to
|
|
71
|
+
* {@link applyConfigToState}, called both here (for late updates) and in {@link ngOnInit}
|
|
72
|
+
* (for the initial mount, where the host sets `config` via `setInput` before init runs).
|
|
73
|
+
*/
|
|
74
|
+
set config(value: TimelineViewConfig);
|
|
75
|
+
get config(): TimelineViewConfig;
|
|
76
|
+
/** Emitted when a timeline event is clicked — payload is the RAW record object. */
|
|
77
|
+
recordSelected: EventEmitter<unknown>;
|
|
78
|
+
/** Emitted when a record should be opened — payload is the RAW record object. */
|
|
79
|
+
recordOpened: EventEmitter<unknown>;
|
|
80
|
+
/** Emitted (with the FULL updated config) whenever the user changes a chrome control. */
|
|
81
|
+
configChanged: EventEmitter<TimelineViewConfig>;
|
|
82
|
+
/** Whether the current entity has any date fields available for timeline view. */
|
|
83
|
+
HasDateFields: boolean;
|
|
84
|
+
/** Available date fields from the entity, sorted by priority. */
|
|
85
|
+
AvailableDateFields: EntityFieldInfo[];
|
|
86
|
+
/** The currently selected date field name for the timeline. */
|
|
87
|
+
SelectedTimelineDateField: string | null;
|
|
88
|
+
/** The built timeline groups handed to `<mj-timeline>`. */
|
|
89
|
+
TimelineGroups: TimelineGroup<Record<string, unknown>>[];
|
|
90
|
+
/**
|
|
91
|
+
* Timeline sort order. Named `…State` (not `TimelineSortOrder`) to avoid colliding with the
|
|
92
|
+
* imported {@link TimelineSortOrder} type symbol used in the template / signatures.
|
|
93
|
+
*/
|
|
94
|
+
TimelineSortOrderState: TimelineSortOrder;
|
|
95
|
+
/** Timeline segment grouping (day/week/month/...). */
|
|
96
|
+
TimelineSegmentGrouping: TimeSegmentGrouping;
|
|
97
|
+
/**
|
|
98
|
+
* Timeline orientation. Named `…State` to avoid colliding with the imported
|
|
99
|
+
* {@link TimelineOrientation} type symbol.
|
|
100
|
+
*/
|
|
101
|
+
TimelineOrientationState: TimelineOrientation;
|
|
102
|
+
private _initialized;
|
|
103
|
+
private cdr;
|
|
104
|
+
ngOnInit(): void;
|
|
105
|
+
/** Display name of the currently selected timeline date field. */
|
|
106
|
+
get SelectedDateFieldDisplayName(): string;
|
|
107
|
+
/**
|
|
108
|
+
* The raw ID value derived from {@link selectedRecordId} for timeline selection. The host
|
|
109
|
+
* passes the selection in composite-key format (`ID|abc-123` or `ID=abc-123`), but the
|
|
110
|
+
* timeline stores just the raw ID value — so strip the field-name prefix.
|
|
111
|
+
*/
|
|
112
|
+
get TimelineSelectedEventID(): string | null;
|
|
113
|
+
/** Toggle timeline orientation between vertical and horizontal, then persist via config. */
|
|
114
|
+
ToggleTimelineOrientation(): void;
|
|
115
|
+
/** Toggle timeline sort order between newest-first (desc) and oldest-first (asc), then persist. */
|
|
116
|
+
ToggleTimelineSortOrder(): void;
|
|
117
|
+
/** Change the date field used for the timeline, rebuild groups, then persist via config. */
|
|
118
|
+
SetTimelineDateField(fieldName: string): void;
|
|
119
|
+
/**
|
|
120
|
+
* Handle a timeline event click. Maps the {@link AfterEventClickArgs} to the underlying raw
|
|
121
|
+
* record (`event.event.entity`) and emits it on {@link recordSelected}. The host's dynamic
|
|
122
|
+
* handler builds the composite key from the raw record, so we emit the record object as-is.
|
|
123
|
+
*/
|
|
124
|
+
OnTimelineEventClick(event: AfterEventClickArgs): void;
|
|
125
|
+
/**
|
|
126
|
+
* Seed the chrome control state from {@link config}, applying sensible defaults where the
|
|
127
|
+
* config is silent (vertical orientation, descending sort, monthly segments). The selected
|
|
128
|
+
* date field is resolved against the currently-available date fields in {@link detectDateFields}.
|
|
129
|
+
*/
|
|
130
|
+
private applyConfigToState;
|
|
131
|
+
/** Emit the FULL current config object so the host can persist the change. */
|
|
132
|
+
private emitConfigChange;
|
|
133
|
+
/**
|
|
134
|
+
* Detect the entity's date fields and configure the timeline. Resolves the selected date
|
|
135
|
+
* field (preferring the configured one, falling back to the highest-priority available field)
|
|
136
|
+
* and rebuilds the groups. No-ops to an empty state when the entity has no date fields.
|
|
137
|
+
*/
|
|
138
|
+
private detectDateFields;
|
|
139
|
+
/**
|
|
140
|
+
* Sort date fields by priority: `DefaultInView` fields first (by Sequence), then the rest
|
|
141
|
+
* (by Sequence).
|
|
142
|
+
*/
|
|
143
|
+
private sortDateFieldsByPriority;
|
|
144
|
+
/**
|
|
145
|
+
* Resolve which date field to use: the configured `dateFieldName` when it's still a valid
|
|
146
|
+
* available field, otherwise the first (highest-priority) available date field.
|
|
147
|
+
*/
|
|
148
|
+
private getEffectiveTimelineDateField;
|
|
149
|
+
/**
|
|
150
|
+
* Build the single {@link TimelineGroup} for the current entity + records + selected date
|
|
151
|
+
* field, mirroring the host's previous `updateTimelineGroups()`. No-ops to an empty state
|
|
152
|
+
* when there is no entity or no selected date field.
|
|
153
|
+
*/
|
|
154
|
+
private updateTimelineGroups;
|
|
155
|
+
/**
|
|
156
|
+
* Find the best field to use as the event title: the entity's NameField, then a
|
|
157
|
+
* `DefaultInView` string field matching a common name pattern, then the first string field.
|
|
158
|
+
*/
|
|
159
|
+
private findTitleField;
|
|
160
|
+
/** Find a suitable description field by common naming pattern, or null. */
|
|
161
|
+
private findDescriptionField;
|
|
162
|
+
/**
|
|
163
|
+
* Find a suitable subtitle field (different from the title): a `DefaultInView` string field
|
|
164
|
+
* matching a classification pattern (status/type/category/...), else the first other string
|
|
165
|
+
* field, else null.
|
|
166
|
+
*/
|
|
167
|
+
private findSubtitleField;
|
|
168
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<TimelineViewRendererComponent, never>;
|
|
169
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<TimelineViewRendererComponent, "mj-timeline-view-renderer", never, { "entity": { "alias": "entity"; "required": false; }; "records": { "alias": "records"; "required": false; }; "selectedRecordId": { "alias": "selectedRecordId"; "required": false; }; "filterText": { "alias": "filterText"; "required": false; }; "config": { "alias": "config"; "required": false; }; }, { "recordSelected": "recordSelected"; "recordOpened": "recordOpened"; "configChanged": "configChanged"; }, never, never, false, never>;
|
|
170
|
+
}
|
|
171
|
+
/**
|
|
172
|
+
* Tree-shaking guard. Force-references the component class so bundlers don't drop this module
|
|
173
|
+
* when it's only mounted dynamically via the view-type descriptor's `RendererComponent`.
|
|
174
|
+
*/
|
|
175
|
+
export declare function LoadTimelineViewRenderer(): void;
|
|
176
|
+
//# sourceMappingURL=timeline-view-renderer.component.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"timeline-view-renderer.component.d.ts","sourceRoot":"","sources":["../../../../src/lib/view-types/renderers/timeline-view-renderer.component.ts"],"names":[],"mappings":"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"}
|