@mj-biz-apps/common-ng 5.63.0 → 5.64.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/lib/data/__tests__/directory-dashboard-days.test.js +61 -9
- package/dist/lib/data/__tests__/directory-dashboard-days.test.js.map +1 -1
- package/dist/lib/data/directory-queries.d.ts +4 -0
- package/dist/lib/data/directory-queries.d.ts.map +1 -1
- package/dist/lib/data/directory-queries.js +41 -13
- package/dist/lib/data/directory-queries.js.map +1 -1
- package/dist/lib/pages/common-dashboard.page.d.ts +15 -3
- package/dist/lib/pages/common-dashboard.page.d.ts.map +1 -1
- package/dist/lib/pages/common-dashboard.page.js +378 -313
- package/dist/lib/pages/common-dashboard.page.js.map +1 -1
- package/package.json +2 -2
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { ChangeDetectorRef, Component, inject } from '@angular/core';
|
|
2
2
|
import { CommonModule } from '@angular/common';
|
|
3
|
+
import { LogError } from '@memberjunction/core';
|
|
3
4
|
import { NavigationService } from '@memberjunction/ng-shared';
|
|
4
5
|
import { EntityViewerModule } from '@memberjunction/ng-entity-viewer';
|
|
5
6
|
import { MJAlertComponent, MJButtonDirective, MJEmptyStateComponent } from '@memberjunction/ng-ui-components';
|
|
@@ -19,275 +20,302 @@ function CommonDashboardPageComponent_Conditional_17_Template(rf, ctx) { if (rf
|
|
|
19
20
|
i0.ɵɵtext(1, "Loading the directory\u2026");
|
|
20
21
|
i0.ɵɵelementEnd();
|
|
21
22
|
} }
|
|
22
|
-
function
|
|
23
|
-
i0.ɵɵelementStart(0, "
|
|
23
|
+
function CommonDashboardPageComponent_Conditional_18_Conditional_0_Template(rf, ctx) { if (rf & 1) {
|
|
24
|
+
i0.ɵɵelementStart(0, "div", 12);
|
|
25
|
+
i0.ɵɵtext(1, "Counting the directory\u2026");
|
|
26
|
+
i0.ɵɵelementEnd();
|
|
27
|
+
} }
|
|
28
|
+
function CommonDashboardPageComponent_Conditional_18_Conditional_1_For_13_Conditional_6_Template(rf, ctx) { if (rf & 1) {
|
|
29
|
+
i0.ɵɵelementStart(0, "span", 42);
|
|
24
30
|
i0.ɵɵtext(1);
|
|
25
31
|
i0.ɵɵelementEnd();
|
|
26
32
|
} if (rf & 2) {
|
|
27
|
-
const
|
|
33
|
+
const queue_r5 = i0.ɵɵnextContext().$implicit;
|
|
28
34
|
i0.ɵɵadvance();
|
|
29
|
-
i0.ɵɵtextInterpolate(
|
|
35
|
+
i0.ɵɵtextInterpolate(queue_r5.Note);
|
|
30
36
|
} }
|
|
31
|
-
function
|
|
32
|
-
const
|
|
33
|
-
i0.ɵɵelementStart(0, "button",
|
|
34
|
-
i0.ɵɵlistener("click", function
|
|
35
|
-
i0.ɵɵelementStart(1, "span",
|
|
36
|
-
i0.ɵɵelement(2, "i",
|
|
37
|
+
function CommonDashboardPageComponent_Conditional_18_Conditional_1_For_13_Template(rf, ctx) { if (rf & 1) {
|
|
38
|
+
const _r4 = i0.ɵɵgetCurrentView();
|
|
39
|
+
i0.ɵɵelementStart(0, "button", 37);
|
|
40
|
+
i0.ɵɵlistener("click", function CommonDashboardPageComponent_Conditional_18_Conditional_1_For_13_Template_button_click_0_listener() { const queue_r5 = i0.ɵɵrestoreView(_r4).$implicit; const ctx_r2 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r2.OpenPage(queue_r5.PageId)); });
|
|
41
|
+
i0.ɵɵelementStart(1, "span", 38);
|
|
42
|
+
i0.ɵɵelement(2, "i", 39);
|
|
37
43
|
i0.ɵɵelementEnd();
|
|
38
|
-
i0.ɵɵelementStart(3, "span",
|
|
44
|
+
i0.ɵɵelementStart(3, "span", 40)(4, "span", 41);
|
|
39
45
|
i0.ɵɵtext(5);
|
|
40
46
|
i0.ɵɵelementEnd();
|
|
41
|
-
i0.ɵɵconditionalCreate(6,
|
|
47
|
+
i0.ɵɵconditionalCreate(6, CommonDashboardPageComponent_Conditional_18_Conditional_1_For_13_Conditional_6_Template, 2, 1, "span", 42);
|
|
42
48
|
i0.ɵɵelementEnd();
|
|
43
|
-
i0.ɵɵelementStart(7, "b",
|
|
49
|
+
i0.ɵɵelementStart(7, "b", 43);
|
|
44
50
|
i0.ɵɵtext(8);
|
|
45
51
|
i0.ɵɵelementEnd();
|
|
46
|
-
i0.ɵɵelement(9, "i",
|
|
52
|
+
i0.ɵɵelement(9, "i", 44);
|
|
47
53
|
i0.ɵɵelementEnd();
|
|
48
54
|
} if (rf & 2) {
|
|
49
|
-
const
|
|
55
|
+
const queue_r5 = ctx.$implicit;
|
|
50
56
|
i0.ɵɵadvance();
|
|
51
|
-
i0.ɵɵattribute("data-tone",
|
|
57
|
+
i0.ɵɵattribute("data-tone", queue_r5.Tone);
|
|
52
58
|
i0.ɵɵadvance();
|
|
53
|
-
i0.ɵɵclassMap(
|
|
59
|
+
i0.ɵɵclassMap(queue_r5.Icon);
|
|
54
60
|
i0.ɵɵadvance(3);
|
|
55
|
-
i0.ɵɵtextInterpolate(
|
|
61
|
+
i0.ɵɵtextInterpolate(queue_r5.Label);
|
|
56
62
|
i0.ɵɵadvance();
|
|
57
|
-
i0.ɵɵconditional(
|
|
63
|
+
i0.ɵɵconditional(queue_r5.Note ? 6 : -1);
|
|
58
64
|
i0.ɵɵadvance(2);
|
|
59
|
-
i0.ɵɵtextInterpolate(
|
|
65
|
+
i0.ɵɵtextInterpolate(queue_r5.Count);
|
|
60
66
|
} }
|
|
61
|
-
function
|
|
62
|
-
i0.ɵɵelement(0, "mj-empty-state",
|
|
67
|
+
function CommonDashboardPageComponent_Conditional_18_Conditional_1_ForEmpty_14_Conditional_0_Template(rf, ctx) { if (rf & 1) {
|
|
68
|
+
i0.ɵɵelement(0, "mj-empty-state", 33);
|
|
63
69
|
} }
|
|
64
|
-
function
|
|
65
|
-
i0.ɵɵelement(0, "mj-empty-state",
|
|
70
|
+
function CommonDashboardPageComponent_Conditional_18_Conditional_1_ForEmpty_14_Conditional_1_Template(rf, ctx) { if (rf & 1) {
|
|
71
|
+
i0.ɵɵelement(0, "mj-empty-state", 45);
|
|
66
72
|
} }
|
|
67
|
-
function
|
|
68
|
-
i0.ɵɵconditionalCreate(0,
|
|
73
|
+
function CommonDashboardPageComponent_Conditional_18_Conditional_1_ForEmpty_14_Template(rf, ctx) { if (rf & 1) {
|
|
74
|
+
i0.ɵɵconditionalCreate(0, CommonDashboardPageComponent_Conditional_18_Conditional_1_ForEmpty_14_Conditional_0_Template, 1, 0, "mj-empty-state", 33)(1, CommonDashboardPageComponent_Conditional_18_Conditional_1_ForEmpty_14_Conditional_1_Template, 1, 0, "mj-empty-state", 45);
|
|
69
75
|
} if (rf & 2) {
|
|
70
|
-
const
|
|
71
|
-
i0.ɵɵconditional(
|
|
76
|
+
const ctx_r2 = i0.ɵɵnextContext(3);
|
|
77
|
+
i0.ɵɵconditional(ctx_r2.Headline.ReadFailed ? 0 : 1);
|
|
72
78
|
} }
|
|
73
|
-
function
|
|
74
|
-
i0.ɵɵelement(0, "mj-empty-state",
|
|
79
|
+
function CommonDashboardPageComponent_Conditional_18_Conditional_1_Conditional_23_Template(rf, ctx) { if (rf & 1) {
|
|
80
|
+
i0.ɵɵelement(0, "mj-empty-state", 33);
|
|
75
81
|
} }
|
|
76
|
-
function
|
|
77
|
-
i0.ɵɵelementStart(0, "div",
|
|
82
|
+
function CommonDashboardPageComponent_Conditional_18_Conditional_1_Conditional_24_For_2_Template(rf, ctx) { if (rf & 1) {
|
|
83
|
+
i0.ɵɵelementStart(0, "div", 46)(1, "span", 47);
|
|
78
84
|
i0.ɵɵtext(2);
|
|
79
85
|
i0.ɵɵelementEnd();
|
|
80
|
-
i0.ɵɵelement(3, "span",
|
|
81
|
-
i0.ɵɵelementStart(4, "span",
|
|
86
|
+
i0.ɵɵelement(3, "span", 48);
|
|
87
|
+
i0.ɵɵelementStart(4, "span", 49);
|
|
82
88
|
i0.ɵɵtext(5);
|
|
83
89
|
i0.ɵɵelementEnd()();
|
|
84
90
|
} if (rf & 2) {
|
|
85
|
-
const
|
|
86
|
-
const
|
|
91
|
+
const bar_r6 = ctx.$implicit;
|
|
92
|
+
const ctx_r2 = i0.ɵɵnextContext(4);
|
|
87
93
|
i0.ɵɵadvance(2);
|
|
88
|
-
i0.ɵɵtextInterpolate(
|
|
94
|
+
i0.ɵɵtextInterpolate(bar_r6.Value);
|
|
89
95
|
i0.ɵɵadvance();
|
|
90
|
-
i0.ɵɵstyleProp("height",
|
|
91
|
-
i0.ɵɵclassProp("is-current",
|
|
96
|
+
i0.ɵɵstyleProp("height", ctx_r2.barHeight(bar_r6), "%");
|
|
97
|
+
i0.ɵɵclassProp("is-current", bar_r6.Current);
|
|
92
98
|
i0.ɵɵadvance(2);
|
|
93
|
-
i0.ɵɵtextInterpolate(
|
|
99
|
+
i0.ɵɵtextInterpolate(bar_r6.Label);
|
|
94
100
|
} }
|
|
95
|
-
function
|
|
96
|
-
i0.ɵɵelementStart(0, "div",
|
|
97
|
-
i0.ɵɵrepeaterCreate(1,
|
|
101
|
+
function CommonDashboardPageComponent_Conditional_18_Conditional_1_Conditional_24_Template(rf, ctx) { if (rf & 1) {
|
|
102
|
+
i0.ɵɵelementStart(0, "div", 34);
|
|
103
|
+
i0.ɵɵrepeaterCreate(1, CommonDashboardPageComponent_Conditional_18_Conditional_1_Conditional_24_For_2_Template, 6, 6, "div", 46, _forTrack0);
|
|
98
104
|
i0.ɵɵelementEnd();
|
|
99
105
|
} if (rf & 2) {
|
|
100
|
-
const
|
|
106
|
+
const ctx_r2 = i0.ɵɵnextContext(3);
|
|
101
107
|
i0.ɵɵattribute("aria-label", "People added per day, last 7 days");
|
|
102
108
|
i0.ɵɵadvance();
|
|
103
|
-
i0.ɵɵrepeater(
|
|
109
|
+
i0.ɵɵrepeater(ctx_r2.PeoplePerDay);
|
|
104
110
|
} }
|
|
105
|
-
function
|
|
106
|
-
i0.ɵɵelementStart(0, "div",
|
|
111
|
+
function CommonDashboardPageComponent_Conditional_18_Conditional_1_For_32_Template(rf, ctx) { if (rf & 1) {
|
|
112
|
+
i0.ɵɵelementStart(0, "div", 36)(1, "span", 50);
|
|
107
113
|
i0.ɵɵtext(2);
|
|
108
114
|
i0.ɵɵelementEnd();
|
|
109
|
-
i0.ɵɵelementStart(3, "span",
|
|
110
|
-
i0.ɵɵelement(4, "span",
|
|
115
|
+
i0.ɵɵelementStart(3, "span", 51);
|
|
116
|
+
i0.ɵɵelement(4, "span", 52);
|
|
111
117
|
i0.ɵɵelementEnd();
|
|
112
|
-
i0.ɵɵelementStart(5, "span",
|
|
118
|
+
i0.ɵɵelementStart(5, "span", 53);
|
|
113
119
|
i0.ɵɵtext(6);
|
|
114
120
|
i0.ɵɵelementEnd()();
|
|
115
121
|
} if (rf & 2) {
|
|
116
|
-
const
|
|
117
|
-
const
|
|
122
|
+
const row_r7 = ctx.$implicit;
|
|
123
|
+
const ctx_r2 = i0.ɵɵnextContext(3);
|
|
118
124
|
i0.ɵɵadvance(2);
|
|
119
|
-
i0.ɵɵtextInterpolate(
|
|
125
|
+
i0.ɵɵtextInterpolate(row_r7.Label);
|
|
120
126
|
i0.ɵɵadvance(2);
|
|
121
|
-
i0.ɵɵstyleProp("width",
|
|
127
|
+
i0.ɵɵstyleProp("width", ctx_r2.mixWidth(row_r7), "%");
|
|
122
128
|
i0.ɵɵadvance(2);
|
|
123
|
-
i0.ɵɵtextInterpolate(
|
|
129
|
+
i0.ɵɵtextInterpolate(row_r7.Value);
|
|
124
130
|
} }
|
|
125
|
-
function
|
|
126
|
-
i0.ɵɵelement(0, "mj-empty-state",
|
|
131
|
+
function CommonDashboardPageComponent_Conditional_18_Conditional_1_ForEmpty_33_Conditional_0_Template(rf, ctx) { if (rf & 1) {
|
|
132
|
+
i0.ɵɵelement(0, "mj-empty-state", 33);
|
|
127
133
|
} }
|
|
128
|
-
function
|
|
134
|
+
function CommonDashboardPageComponent_Conditional_18_Conditional_1_ForEmpty_33_Conditional_1_Template(rf, ctx) { if (rf & 1) {
|
|
129
135
|
i0.ɵɵelementStart(0, "p", 12);
|
|
130
136
|
i0.ɵɵtext(1, "No organizations yet.");
|
|
131
137
|
i0.ɵɵelementEnd();
|
|
132
138
|
} }
|
|
133
|
-
function
|
|
134
|
-
i0.ɵɵconditionalCreate(0,
|
|
139
|
+
function CommonDashboardPageComponent_Conditional_18_Conditional_1_ForEmpty_33_Template(rf, ctx) { if (rf & 1) {
|
|
140
|
+
i0.ɵɵconditionalCreate(0, CommonDashboardPageComponent_Conditional_18_Conditional_1_ForEmpty_33_Conditional_0_Template, 1, 0, "mj-empty-state", 33)(1, CommonDashboardPageComponent_Conditional_18_Conditional_1_ForEmpty_33_Conditional_1_Template, 2, 0, "p", 12);
|
|
135
141
|
} if (rf & 2) {
|
|
136
|
-
const
|
|
137
|
-
i0.ɵɵconditional(
|
|
142
|
+
const ctx_r2 = i0.ɵɵnextContext(3);
|
|
143
|
+
i0.ɵɵconditional(ctx_r2.Headline.ReadFailed ? 0 : 1);
|
|
144
|
+
} }
|
|
145
|
+
function CommonDashboardPageComponent_Conditional_18_Conditional_1_Template(rf, ctx) { if (rf & 1) {
|
|
146
|
+
const _r2 = i0.ɵɵgetCurrentView();
|
|
147
|
+
i0.ɵɵelementStart(0, "bizapps-stat-row", 23)(1, "bizapps-stat-tile", 24);
|
|
148
|
+
i0.ɵɵlistener("Clicked", function CommonDashboardPageComponent_Conditional_18_Conditional_1_Template_bizapps_stat_tile_Clicked_1_listener() { i0.ɵɵrestoreView(_r2); const ctx_r2 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r2.OpenPeople()); });
|
|
149
|
+
i0.ɵɵelementEnd();
|
|
150
|
+
i0.ɵɵelementStart(2, "bizapps-stat-tile", 25);
|
|
151
|
+
i0.ɵɵlistener("Clicked", function CommonDashboardPageComponent_Conditional_18_Conditional_1_Template_bizapps_stat_tile_Clicked_2_listener() { i0.ɵɵrestoreView(_r2); const ctx_r2 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r2.OpenOrganizations()); });
|
|
152
|
+
i0.ɵɵelementEnd();
|
|
153
|
+
i0.ɵɵelement(3, "bizapps-stat-tile", 26)(4, "bizapps-stat-tile", 27);
|
|
154
|
+
i0.ɵɵelementEnd();
|
|
155
|
+
i0.ɵɵelementStart(5, "div", 28)(6, "section", 14)(7, "header", 15);
|
|
156
|
+
i0.ɵɵelement(8, "i", 29);
|
|
157
|
+
i0.ɵɵelementStart(9, "h2");
|
|
158
|
+
i0.ɵɵtext(10, "Needs someone");
|
|
159
|
+
i0.ɵɵelementEnd()();
|
|
160
|
+
i0.ɵɵelementStart(11, "div", 21);
|
|
161
|
+
i0.ɵɵrepeaterCreate(12, CommonDashboardPageComponent_Conditional_18_Conditional_1_For_13_Template, 10, 6, "button", 30, _forTrack0, false, CommonDashboardPageComponent_Conditional_18_Conditional_1_ForEmpty_14_Template, 2, 1);
|
|
162
|
+
i0.ɵɵelementEnd()();
|
|
163
|
+
i0.ɵɵelementStart(15, "section", 14)(16, "header", 15);
|
|
164
|
+
i0.ɵɵelement(17, "i", 31);
|
|
165
|
+
i0.ɵɵelementStart(18, "h2");
|
|
166
|
+
i0.ɵɵtext(19, "People added");
|
|
167
|
+
i0.ɵɵelementEnd();
|
|
168
|
+
i0.ɵɵelementStart(20, "span", 32);
|
|
169
|
+
i0.ɵɵtext(21, "last 7 days");
|
|
170
|
+
i0.ɵɵelementEnd()();
|
|
171
|
+
i0.ɵɵelementStart(22, "div", 21);
|
|
172
|
+
i0.ɵɵconditionalCreate(23, CommonDashboardPageComponent_Conditional_18_Conditional_1_Conditional_23_Template, 1, 0, "mj-empty-state", 33)(24, CommonDashboardPageComponent_Conditional_18_Conditional_1_Conditional_24_Template, 3, 1, "div", 34);
|
|
173
|
+
i0.ɵɵelementEnd()();
|
|
174
|
+
i0.ɵɵelementStart(25, "section", 14)(26, "header", 15);
|
|
175
|
+
i0.ɵɵelement(27, "i", 35);
|
|
176
|
+
i0.ɵɵelementStart(28, "h2");
|
|
177
|
+
i0.ɵɵtext(29, "Organization types");
|
|
178
|
+
i0.ɵɵelementEnd()();
|
|
179
|
+
i0.ɵɵelementStart(30, "div", 21);
|
|
180
|
+
i0.ɵɵrepeaterCreate(31, CommonDashboardPageComponent_Conditional_18_Conditional_1_For_32_Template, 7, 4, "div", 36, _forTrack0, false, CommonDashboardPageComponent_Conditional_18_Conditional_1_ForEmpty_33_Template, 2, 1);
|
|
181
|
+
i0.ɵɵelementEnd()()();
|
|
182
|
+
} if (rf & 2) {
|
|
183
|
+
const ctx_r2 = i0.ɵɵnextContext(2);
|
|
184
|
+
i0.ɵɵproperty("Error", ctx_r2.Headline.Error);
|
|
185
|
+
i0.ɵɵadvance();
|
|
186
|
+
i0.ɵɵproperty("Value", ctx_r2.Headline.ActivePeopleCount)("Detail", ctx_r2.Headline.PeopleDetail)("Clickable", true);
|
|
187
|
+
i0.ɵɵadvance();
|
|
188
|
+
i0.ɵɵproperty("Value", ctx_r2.Headline.ActiveOrganizationCount)("Detail", ctx_r2.Headline.OrganizationDetail)("Clickable", true);
|
|
189
|
+
i0.ɵɵadvance();
|
|
190
|
+
i0.ɵɵproperty("Value", ctx_r2.Headline.RelationshipCount)("Clickable", false);
|
|
191
|
+
i0.ɵɵadvance();
|
|
192
|
+
i0.ɵɵproperty("Value", ctx_r2.Headline.GapCount)("Tone", ctx_r2.Headline.GapTone)("Clickable", false);
|
|
193
|
+
i0.ɵɵadvance(8);
|
|
194
|
+
i0.ɵɵrepeater(ctx_r2.Queues);
|
|
195
|
+
i0.ɵɵadvance(11);
|
|
196
|
+
i0.ɵɵconditional(ctx_r2.Headline.ReadFailed ? 23 : 24);
|
|
197
|
+
i0.ɵɵadvance(8);
|
|
198
|
+
i0.ɵɵrepeater(ctx_r2.OrganizationTypeMix);
|
|
138
199
|
} }
|
|
139
|
-
function
|
|
140
|
-
const
|
|
141
|
-
i0.ɵɵelementStart(0, "mj-entity-viewer",
|
|
142
|
-
i0.ɵɵlistener("RecordOpened", function
|
|
200
|
+
function CommonDashboardPageComponent_Conditional_18_Conditional_11_Template(rf, ctx) { if (rf & 1) {
|
|
201
|
+
const _r8 = i0.ɵɵgetCurrentView();
|
|
202
|
+
i0.ɵɵelementStart(0, "mj-entity-viewer", 54);
|
|
203
|
+
i0.ɵɵlistener("RecordOpened", function CommonDashboardPageComponent_Conditional_18_Conditional_11_Template_mj_entity_viewer_RecordOpened_0_listener($event) { i0.ɵɵrestoreView(_r8); const ctx_r2 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r2.OnPersonOpened($event)); });
|
|
143
204
|
i0.ɵɵelementEnd();
|
|
144
205
|
} if (rf & 2) {
|
|
145
|
-
const
|
|
146
|
-
i0.ɵɵproperty("Entity",
|
|
206
|
+
const ctx_r2 = i0.ɵɵnextContext(2);
|
|
207
|
+
i0.ɵɵproperty("Entity", ctx_r2.PersonEntity)("ViewEntity", ctx_r2.LatestPeopleView)("ShowRecycleBin", false)("Config", ctx_r2.PeekViewerConfig);
|
|
147
208
|
} }
|
|
148
|
-
function
|
|
209
|
+
function CommonDashboardPageComponent_Conditional_18_Conditional_12_Template(rf, ctx) { if (rf & 1) {
|
|
149
210
|
i0.ɵɵelementStart(0, "p", 12);
|
|
150
211
|
i0.ɵɵtext(1, "No people yet.");
|
|
151
212
|
i0.ɵɵelementEnd();
|
|
152
213
|
} }
|
|
153
|
-
function
|
|
154
|
-
|
|
155
|
-
i0.ɵɵ
|
|
214
|
+
function CommonDashboardPageComponent_Conditional_18_Conditional_19_Template(rf, ctx) { if (rf & 1) {
|
|
215
|
+
i0.ɵɵelementStart(0, "p", 12);
|
|
216
|
+
i0.ɵɵtext(1, "Counting\u2026");
|
|
217
|
+
i0.ɵɵelementEnd();
|
|
218
|
+
} }
|
|
219
|
+
function CommonDashboardPageComponent_Conditional_18_Conditional_20_For_1_Template(rf, ctx) { if (rf & 1) {
|
|
220
|
+
const _r9 = i0.ɵɵgetCurrentView();
|
|
221
|
+
i0.ɵɵelementStart(0, "mj-alert", 55)(1, "strong");
|
|
156
222
|
i0.ɵɵtext(2);
|
|
157
223
|
i0.ɵɵelementEnd();
|
|
158
224
|
i0.ɵɵtext(3);
|
|
159
|
-
i0.ɵɵelementStart(4, "button",
|
|
160
|
-
i0.ɵɵlistener("click", function
|
|
225
|
+
i0.ɵɵelementStart(4, "button", 17);
|
|
226
|
+
i0.ɵɵlistener("click", function CommonDashboardPageComponent_Conditional_18_Conditional_20_For_1_Template_button_click_4_listener() { const item_r10 = i0.ɵɵrestoreView(_r9).$implicit; const ctx_r2 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r2.OpenAttention(item_r10)); });
|
|
161
227
|
i0.ɵɵtext(5, "Work it \u2192");
|
|
162
228
|
i0.ɵɵelementEnd()();
|
|
163
229
|
} if (rf & 2) {
|
|
164
|
-
const
|
|
165
|
-
i0.ɵɵproperty("Variant",
|
|
230
|
+
const item_r10 = ctx.$implicit;
|
|
231
|
+
i0.ɵɵproperty("Variant", item_r10.Tone)("Icon", item_r10.Icon);
|
|
166
232
|
i0.ɵɵadvance(2);
|
|
167
|
-
i0.ɵɵtextInterpolate(
|
|
233
|
+
i0.ɵɵtextInterpolate(item_r10.Headline);
|
|
168
234
|
i0.ɵɵadvance();
|
|
169
|
-
i0.ɵɵtextInterpolate1(" ",
|
|
235
|
+
i0.ɵɵtextInterpolate1(" ", item_r10.Detail, " ");
|
|
170
236
|
} }
|
|
171
|
-
function
|
|
172
|
-
i0.ɵɵelement(0, "mj-empty-state",
|
|
237
|
+
function CommonDashboardPageComponent_Conditional_18_Conditional_20_ForEmpty_2_Conditional_0_Template(rf, ctx) { if (rf & 1) {
|
|
238
|
+
i0.ɵɵelement(0, "mj-empty-state", 33);
|
|
173
239
|
} }
|
|
174
|
-
function
|
|
240
|
+
function CommonDashboardPageComponent_Conditional_18_Conditional_20_ForEmpty_2_Conditional_1_Template(rf, ctx) { if (rf & 1) {
|
|
175
241
|
i0.ɵɵelement(0, "mj-empty-state", 56);
|
|
176
242
|
} }
|
|
177
|
-
function
|
|
178
|
-
i0.ɵɵconditionalCreate(0,
|
|
243
|
+
function CommonDashboardPageComponent_Conditional_18_Conditional_20_ForEmpty_2_Template(rf, ctx) { if (rf & 1) {
|
|
244
|
+
i0.ɵɵconditionalCreate(0, CommonDashboardPageComponent_Conditional_18_Conditional_20_ForEmpty_2_Conditional_0_Template, 1, 0, "mj-empty-state", 33)(1, CommonDashboardPageComponent_Conditional_18_Conditional_20_ForEmpty_2_Conditional_1_Template, 1, 0, "mj-empty-state", 56);
|
|
245
|
+
} if (rf & 2) {
|
|
246
|
+
const ctx_r2 = i0.ɵɵnextContext(3);
|
|
247
|
+
i0.ɵɵconditional(ctx_r2.Headline.ReadFailed ? 0 : 1);
|
|
248
|
+
} }
|
|
249
|
+
function CommonDashboardPageComponent_Conditional_18_Conditional_20_Template(rf, ctx) { if (rf & 1) {
|
|
250
|
+
i0.ɵɵrepeaterCreate(0, CommonDashboardPageComponent_Conditional_18_Conditional_20_For_1_Template, 6, 4, "mj-alert", 55, _forTrack1, false, CommonDashboardPageComponent_Conditional_18_Conditional_20_ForEmpty_2_Template, 2, 1);
|
|
179
251
|
} if (rf & 2) {
|
|
180
|
-
const
|
|
181
|
-
i0.ɵɵ
|
|
252
|
+
const ctx_r2 = i0.ɵɵnextContext(2);
|
|
253
|
+
i0.ɵɵrepeater(ctx_r2.WorthALook);
|
|
182
254
|
} }
|
|
183
|
-
function
|
|
184
|
-
const
|
|
185
|
-
i0.ɵɵelementStart(0, "mj-entity-viewer",
|
|
186
|
-
i0.ɵɵlistener("RecordOpened", function
|
|
255
|
+
function CommonDashboardPageComponent_Conditional_18_Conditional_27_Template(rf, ctx) { if (rf & 1) {
|
|
256
|
+
const _r11 = i0.ɵɵgetCurrentView();
|
|
257
|
+
i0.ɵɵelementStart(0, "mj-entity-viewer", 54);
|
|
258
|
+
i0.ɵɵlistener("RecordOpened", function CommonDashboardPageComponent_Conditional_18_Conditional_27_Template_mj_entity_viewer_RecordOpened_0_listener($event) { i0.ɵɵrestoreView(_r11); const ctx_r2 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r2.OnRelationshipOpened($event)); });
|
|
187
259
|
i0.ɵɵelementEnd();
|
|
188
260
|
} if (rf & 2) {
|
|
189
|
-
const
|
|
190
|
-
i0.ɵɵproperty("Entity",
|
|
261
|
+
const ctx_r2 = i0.ɵɵnextContext(2);
|
|
262
|
+
i0.ɵɵproperty("Entity", ctx_r2.RelationshipEntity)("ViewEntity", ctx_r2.LatestRelationshipsView)("ShowRecycleBin", false)("Config", ctx_r2.PeekViewerConfig);
|
|
191
263
|
} }
|
|
192
|
-
function
|
|
264
|
+
function CommonDashboardPageComponent_Conditional_18_Conditional_28_Template(rf, ctx) { if (rf & 1) {
|
|
193
265
|
i0.ɵɵelementStart(0, "p", 12);
|
|
194
266
|
i0.ɵɵtext(1, "No relationships yet.");
|
|
195
267
|
i0.ɵɵelementEnd();
|
|
196
268
|
} }
|
|
197
269
|
function CommonDashboardPageComponent_Conditional_18_Template(rf, ctx) { if (rf & 1) {
|
|
198
270
|
const _r1 = i0.ɵɵgetCurrentView();
|
|
199
|
-
i0.ɵɵ
|
|
200
|
-
i0.ɵɵ
|
|
201
|
-
i0.ɵɵ
|
|
202
|
-
i0.ɵɵelementStart(
|
|
203
|
-
i0.ɵɵ
|
|
271
|
+
i0.ɵɵconditionalCreate(0, CommonDashboardPageComponent_Conditional_18_Conditional_0_Template, 2, 0, "div", 12)(1, CommonDashboardPageComponent_Conditional_18_Conditional_1_Template, 34, 15);
|
|
272
|
+
i0.ɵɵelementStart(2, "div", 13)(3, "section", 14)(4, "header", 15);
|
|
273
|
+
i0.ɵɵelement(5, "i", 16);
|
|
274
|
+
i0.ɵɵelementStart(6, "h2");
|
|
275
|
+
i0.ɵɵtext(7, "Latest people");
|
|
204
276
|
i0.ɵɵelementEnd();
|
|
205
|
-
i0.ɵɵ
|
|
206
|
-
i0.ɵɵ
|
|
207
|
-
i0.ɵɵ
|
|
208
|
-
i0.ɵɵelement(8, "i", 21);
|
|
209
|
-
i0.ɵɵelementStart(9, "h2");
|
|
210
|
-
i0.ɵɵtext(10, "Needs someone");
|
|
277
|
+
i0.ɵɵelementStart(8, "button", 17);
|
|
278
|
+
i0.ɵɵlistener("click", function CommonDashboardPageComponent_Conditional_18_Template_button_click_8_listener() { i0.ɵɵrestoreView(_r1); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.OpenPeople()); });
|
|
279
|
+
i0.ɵɵtext(9, "All people \u2192");
|
|
211
280
|
i0.ɵɵelementEnd()();
|
|
212
|
-
i0.ɵɵelementStart(
|
|
213
|
-
i0.ɵɵ
|
|
281
|
+
i0.ɵɵelementStart(10, "div", 18);
|
|
282
|
+
i0.ɵɵconditionalCreate(11, CommonDashboardPageComponent_Conditional_18_Conditional_11_Template, 1, 4, "mj-entity-viewer", 19)(12, CommonDashboardPageComponent_Conditional_18_Conditional_12_Template, 2, 0, "p", 12);
|
|
214
283
|
i0.ɵɵelementEnd()();
|
|
215
|
-
i0.ɵɵelementStart(
|
|
216
|
-
i0.ɵɵelement(
|
|
217
|
-
i0.ɵɵelementStart(
|
|
218
|
-
i0.ɵɵtext(
|
|
219
|
-
i0.ɵɵelementEnd();
|
|
220
|
-
i0.ɵɵelementStart(20, "span", 25);
|
|
221
|
-
i0.ɵɵtext(21, "last 7 days");
|
|
284
|
+
i0.ɵɵelementStart(13, "section", 14)(14, "header", 15);
|
|
285
|
+
i0.ɵɵelement(15, "i", 20);
|
|
286
|
+
i0.ɵɵelementStart(16, "h2");
|
|
287
|
+
i0.ɵɵtext(17, "Worth a look");
|
|
222
288
|
i0.ɵɵelementEnd()();
|
|
223
|
-
i0.ɵɵelementStart(
|
|
224
|
-
i0.ɵɵconditionalCreate(
|
|
225
|
-
i0.ɵɵelementEnd()();
|
|
226
|
-
i0.ɵɵelementStart(25, "section", 19)(26, "header", 20);
|
|
227
|
-
i0.ɵɵelement(27, "i", 28);
|
|
228
|
-
i0.ɵɵelementStart(28, "h2");
|
|
229
|
-
i0.ɵɵtext(29, "Organization types");
|
|
230
|
-
i0.ɵɵelementEnd()();
|
|
231
|
-
i0.ɵɵelementStart(30, "div", 22);
|
|
232
|
-
i0.ɵɵrepeaterCreate(31, CommonDashboardPageComponent_Conditional_18_For_32_Template, 7, 4, "div", 29, _forTrack0, false, CommonDashboardPageComponent_Conditional_18_ForEmpty_33_Template, 2, 1);
|
|
233
|
-
i0.ɵɵelementEnd()()();
|
|
234
|
-
i0.ɵɵelementStart(34, "div", 30)(35, "section", 19)(36, "header", 20);
|
|
235
|
-
i0.ɵɵelement(37, "i", 31);
|
|
236
|
-
i0.ɵɵelementStart(38, "h2");
|
|
237
|
-
i0.ɵɵtext(39, "Latest people");
|
|
238
|
-
i0.ɵɵelementEnd();
|
|
239
|
-
i0.ɵɵelementStart(40, "button", 32);
|
|
240
|
-
i0.ɵɵlistener("click", function CommonDashboardPageComponent_Conditional_18_Template_button_click_40_listener() { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.OpenPeople()); });
|
|
241
|
-
i0.ɵɵtext(41, "All people \u2192");
|
|
242
|
-
i0.ɵɵelementEnd()();
|
|
243
|
-
i0.ɵɵelementStart(42, "div", 33);
|
|
244
|
-
i0.ɵɵconditionalCreate(43, CommonDashboardPageComponent_Conditional_18_Conditional_43_Template, 1, 4, "mj-entity-viewer", 34)(44, CommonDashboardPageComponent_Conditional_18_Conditional_44_Template, 2, 0, "p", 12);
|
|
245
|
-
i0.ɵɵelementEnd()();
|
|
246
|
-
i0.ɵɵelementStart(45, "section", 19)(46, "header", 20);
|
|
247
|
-
i0.ɵɵelement(47, "i", 35);
|
|
248
|
-
i0.ɵɵelementStart(48, "h2");
|
|
249
|
-
i0.ɵɵtext(49, "Worth a look");
|
|
250
|
-
i0.ɵɵelementEnd()();
|
|
251
|
-
i0.ɵɵelementStart(50, "div", 22);
|
|
252
|
-
i0.ɵɵrepeaterCreate(51, CommonDashboardPageComponent_Conditional_18_For_52_Template, 6, 4, "mj-alert", 36, _forTrack1, false, CommonDashboardPageComponent_Conditional_18_ForEmpty_53_Template, 2, 1);
|
|
289
|
+
i0.ɵɵelementStart(18, "div", 21);
|
|
290
|
+
i0.ɵɵconditionalCreate(19, CommonDashboardPageComponent_Conditional_18_Conditional_19_Template, 2, 0, "p", 12)(20, CommonDashboardPageComponent_Conditional_18_Conditional_20_Template, 3, 1);
|
|
253
291
|
i0.ɵɵelementEnd()()();
|
|
254
|
-
i0.ɵɵelementStart(
|
|
255
|
-
i0.ɵɵelement(
|
|
256
|
-
i0.ɵɵelementStart(
|
|
257
|
-
i0.ɵɵtext(
|
|
292
|
+
i0.ɵɵelementStart(21, "section", 14)(22, "header", 15);
|
|
293
|
+
i0.ɵɵelement(23, "i", 22);
|
|
294
|
+
i0.ɵɵelementStart(24, "h2");
|
|
295
|
+
i0.ɵɵtext(25, "Latest relationships");
|
|
258
296
|
i0.ɵɵelementEnd()();
|
|
259
|
-
i0.ɵɵelementStart(
|
|
260
|
-
i0.ɵɵconditionalCreate(
|
|
297
|
+
i0.ɵɵelementStart(26, "div", 18);
|
|
298
|
+
i0.ɵɵconditionalCreate(27, CommonDashboardPageComponent_Conditional_18_Conditional_27_Template, 1, 4, "mj-entity-viewer", 19)(28, CommonDashboardPageComponent_Conditional_18_Conditional_28_Template, 2, 0, "p", 12);
|
|
261
299
|
i0.ɵɵelementEnd()();
|
|
262
300
|
} if (rf & 2) {
|
|
263
|
-
const
|
|
264
|
-
i0.ɵɵ
|
|
265
|
-
i0.ɵɵadvance();
|
|
266
|
-
i0.ɵɵproperty("Value", ctx_r1.Headline.ActivePeopleCount)("Detail", ctx_r1.Headline.PeopleDetail)("Clickable", true);
|
|
267
|
-
i0.ɵɵadvance();
|
|
268
|
-
i0.ɵɵproperty("Value", ctx_r1.Headline.ActiveOrganizationCount)("Detail", ctx_r1.Headline.OrganizationDetail)("Clickable", true);
|
|
269
|
-
i0.ɵɵadvance();
|
|
270
|
-
i0.ɵɵproperty("Value", ctx_r1.Headline.RelationshipCount)("Clickable", false);
|
|
271
|
-
i0.ɵɵadvance();
|
|
272
|
-
i0.ɵɵproperty("Value", ctx_r1.Headline.GapCount)("Tone", ctx_r1.Headline.GapTone)("Clickable", false);
|
|
273
|
-
i0.ɵɵadvance(8);
|
|
274
|
-
i0.ɵɵrepeater(ctx_r1.Queues);
|
|
301
|
+
const ctx_r2 = i0.ɵɵnextContext();
|
|
302
|
+
i0.ɵɵconditional(ctx_r2.SummaryLoading ? 0 : 1);
|
|
275
303
|
i0.ɵɵadvance(11);
|
|
276
|
-
i0.ɵɵconditional(
|
|
304
|
+
i0.ɵɵconditional(ctx_r2.PersonEntity && ctx_r2.LatestPeopleView ? 11 : 12);
|
|
277
305
|
i0.ɵɵadvance(8);
|
|
278
|
-
i0.ɵɵ
|
|
279
|
-
i0.ɵɵadvance(12);
|
|
280
|
-
i0.ɵɵconditional(ctx_r1.PersonEntity && ctx_r1.LatestPeopleView ? 43 : 44);
|
|
306
|
+
i0.ɵɵconditional(ctx_r2.SummaryLoading ? 19 : 20);
|
|
281
307
|
i0.ɵɵadvance(8);
|
|
282
|
-
i0.ɵɵ
|
|
283
|
-
i0.ɵɵadvance(9);
|
|
284
|
-
i0.ɵɵconditional(ctx_r1.RelationshipEntity && ctx_r1.LatestRelationshipsView ? 60 : 61);
|
|
308
|
+
i0.ɵɵconditional(ctx_r2.RelationshipEntity && ctx_r2.LatestRelationshipsView ? 27 : 28);
|
|
285
309
|
} }
|
|
286
310
|
/**
|
|
287
311
|
* Directory home — is the party file complete, and what needs a person?
|
|
288
312
|
*
|
|
289
313
|
* Headline counts come from MJ Query `Common: Directory Dashboard Summary`
|
|
290
314
|
* (COUNT over the whole party file). RunView MaxRows must not feed these tiles.
|
|
315
|
+
*
|
|
316
|
+
* The page does not wait for the counts. On a large party file the summary takes seconds, so the
|
|
317
|
+
* page renders once the two grid views have loaded, and the count cards say "Counting…" until the
|
|
318
|
+
* summary arrives. Every load ends its loading state whether it succeeds, fails or throws.
|
|
291
319
|
*/
|
|
292
320
|
export class CommonDashboardPageComponent {
|
|
293
321
|
cdr = inject(ChangeDetectorRef);
|
|
@@ -299,7 +327,11 @@ export class CommonDashboardPageComponent {
|
|
|
299
327
|
showRecordCount: false,
|
|
300
328
|
showViewModeToggle: false,
|
|
301
329
|
};
|
|
330
|
+
/** The two grid views are loading; the page shows nothing else until they are done. */
|
|
302
331
|
IsLoading = true;
|
|
332
|
+
/** The summary counts are loading; the count cards say so until they are done. */
|
|
333
|
+
SummaryLoading = true;
|
|
334
|
+
destroyed = false;
|
|
303
335
|
Queues = [];
|
|
304
336
|
PeoplePerDay = [];
|
|
305
337
|
OrganizationTypeMix = [];
|
|
@@ -315,24 +347,49 @@ export class CommonDashboardPageComponent {
|
|
|
315
347
|
*/
|
|
316
348
|
Headline = BuildDirectoryHeadline(null);
|
|
317
349
|
async ngOnInit() {
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
LoadLatestPeopleView(),
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
this.WorthALook = summary.WorthALook;
|
|
350
|
+
void this.loadSummary();
|
|
351
|
+
try {
|
|
352
|
+
const [peopleView, relView] = await Promise.all([LoadLatestPeopleView(), LoadLatestRelationshipsView()]);
|
|
353
|
+
this.PersonEntity = peopleView.entity;
|
|
354
|
+
this.LatestPeopleView = peopleView.view;
|
|
355
|
+
this.RelationshipEntity = relView.entity;
|
|
356
|
+
this.LatestRelationshipsView = relView.view;
|
|
357
|
+
}
|
|
358
|
+
catch (e) {
|
|
359
|
+
LogError(`Common: directory dashboard views failed to load — ${e instanceof Error ? e.message : String(e)}`);
|
|
329
360
|
}
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
361
|
+
finally {
|
|
362
|
+
this.IsLoading = false;
|
|
363
|
+
this.render();
|
|
364
|
+
}
|
|
365
|
+
}
|
|
366
|
+
ngOnDestroy() {
|
|
367
|
+
this.destroyed = true;
|
|
368
|
+
}
|
|
369
|
+
async loadSummary() {
|
|
370
|
+
try {
|
|
371
|
+
const summary = await LoadDirectoryDashboardSummary();
|
|
372
|
+
this.Headline = BuildDirectoryHeadline(summary);
|
|
373
|
+
if (summary) {
|
|
374
|
+
this.Queues = summary.Queues;
|
|
375
|
+
this.PeoplePerDay = summary.PeoplePerDay;
|
|
376
|
+
this.OrganizationTypeMix = summary.OrganizationTypeMix;
|
|
377
|
+
this.WorthALook = summary.WorthALook;
|
|
378
|
+
}
|
|
379
|
+
}
|
|
380
|
+
catch (e) {
|
|
381
|
+
LogError(`Common: directory dashboard summary failed to load — ${e instanceof Error ? e.message : String(e)}`);
|
|
382
|
+
this.Headline = BuildDirectoryHeadline(null);
|
|
383
|
+
}
|
|
384
|
+
finally {
|
|
385
|
+
this.SummaryLoading = false;
|
|
386
|
+
this.render();
|
|
387
|
+
}
|
|
388
|
+
}
|
|
389
|
+
/** The loads finish after the user may have left the page; a destroyed view cannot be checked. */
|
|
390
|
+
render() {
|
|
391
|
+
if (!this.destroyed)
|
|
392
|
+
this.cdr.detectChanges();
|
|
336
393
|
}
|
|
337
394
|
barHeight(bar) {
|
|
338
395
|
const max = Math.max(1, ...this.PeoplePerDay.map((item) => item.Value));
|
|
@@ -382,7 +439,7 @@ export class CommonDashboardPageComponent {
|
|
|
382
439
|
OpenCommonRecord(COMMON_ENTITIES.Organization, rel.FromOrganizationID || rel.ToOrganizationID);
|
|
383
440
|
}
|
|
384
441
|
static ɵfac = function CommonDashboardPageComponent_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || CommonDashboardPageComponent)(); };
|
|
385
|
-
static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: CommonDashboardPageComponent, selectors: [["bizapps-common-dashboard-page"]], decls: 19, vars: 1, consts: [[1, "mjc-dash"], [1, "mjc-hero"], [1, "mjc-hero__identity"], ["aria-hidden", "true", 1, "mjc-hero__mark"], [1, "fa-solid", "fa-address-book"], [1, "mjc-hero__title"], [1, "mjc-hero__sub"], [1, "mjc-hero__actions"], ["mjButton", "", "variant", "outline", "size", "sm", "type", "button", 3, "click"], ["aria-hidden", "true", 1, "fa-solid", "fa-building"], ["mjButton", "", "variant", "primary", "size", "sm", "type", "button", 3, "click"], ["aria-hidden", "true", 1, "fa-solid", "fa-user-plus"], [1, "mjc-muted"], [3, "Error"], ["Label", "People", "Icon", "fa-solid fa-user", 3, "Clicked", "Value", "Detail", "Clickable"], ["Label", "Organizations", "Icon", "fa-solid fa-building", 3, "Clicked", "Value", "Detail", "Clickable"], ["Label", "Relationships", "Icon", "fa-solid fa-link", "Detail", "Who reports to whom, who works where", 3, "Value", "Clickable"], ["Label", "Gaps", "Icon", "fa-solid fa-clipboard-check", "Detail", "Missing email, org, type, or website", 3, "Value", "Tone", "Clickable"], [1, "mjc-split"], [
|
|
442
|
+
static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: CommonDashboardPageComponent, selectors: [["bizapps-common-dashboard-page"]], decls: 19, vars: 1, consts: [[1, "mjc-dash"], [1, "mjc-hero"], [1, "mjc-hero__identity"], ["aria-hidden", "true", 1, "mjc-hero__mark"], [1, "fa-solid", "fa-address-book"], [1, "mjc-hero__title"], [1, "mjc-hero__sub"], [1, "mjc-hero__actions"], ["mjButton", "", "variant", "outline", "size", "sm", "type", "button", 3, "click"], ["aria-hidden", "true", 1, "fa-solid", "fa-building"], ["mjButton", "", "variant", "primary", "size", "sm", "type", "button", 3, "click"], ["aria-hidden", "true", 1, "fa-solid", "fa-user-plus"], [1, "mjc-muted"], [1, "mjc-split", "mjc-split--wide"], [1, "mjc-card"], [1, "mjc-card__head"], ["aria-hidden", "true", 1, "fa-solid", "fa-clock-rotate-left"], ["type", "button", 1, "mjc-link", 3, "click"], [1, "mjc-viewer-host"], [3, "Entity", "ViewEntity", "ShowRecycleBin", "Config"], ["aria-hidden", "true", 1, "fa-solid", "fa-triangle-exclamation"], [1, "mjc-card__body"], ["aria-hidden", "true", 1, "fa-solid", "fa-diagram-project"], [3, "Error"], ["Label", "People", "Icon", "fa-solid fa-user", 3, "Clicked", "Value", "Detail", "Clickable"], ["Label", "Organizations", "Icon", "fa-solid fa-building", 3, "Clicked", "Value", "Detail", "Clickable"], ["Label", "Relationships", "Icon", "fa-solid fa-link", "Detail", "Who reports to whom, who works where", 3, "Value", "Clickable"], ["Label", "Gaps", "Icon", "fa-solid fa-clipboard-check", "Detail", "Missing email, org, type, or website", 3, "Value", "Tone", "Clickable"], [1, "mjc-split"], ["aria-hidden", "true", 1, "fa-solid", "fa-list-check"], ["type", "button", 1, "mjc-queue"], ["aria-hidden", "true", 1, "fa-solid", "fa-chart-simple"], [1, "mjc-card__meta"], ["Variant", "warning", "Title", "Could not be read", "Size", "compact"], ["role", "img", 1, "mjc-bars"], ["aria-hidden", "true", 1, "fa-solid", "fa-layer-group"], [1, "mjc-mix"], ["type", "button", 1, "mjc-queue", 3, "click"], [1, "mjc-queue__icon"], ["aria-hidden", "true"], [1, "mjc-queue__body"], [1, "mjc-queue__label"], [1, "mjc-queue__note"], [1, "mjc-queue__count"], ["aria-hidden", "true", 1, "fa-solid", "fa-chevron-right", "mjc-queue__chev"], ["Icon", "fa-solid fa-circle-check", "Title", "Nothing is waiting", "Size", "compact"], [1, "mjc-bars__col"], [1, "mjc-bars__value"], [1, "mjc-bars__fill"], [1, "mjc-bars__label"], [1, "mjc-mix__label"], [1, "mjc-mix__track"], [1, "mjc-mix__fill"], [1, "mjc-mix__value"], [3, "RecordOpened", "Entity", "ViewEntity", "ShowRecycleBin", "Config"], ["Role", "note", 3, "Variant", "Icon"], ["Icon", "fa-solid fa-circle-check", "Title", "Nothing is asking for attention", "Size", "compact"]], template: function CommonDashboardPageComponent_Template(rf, ctx) { if (rf & 1) {
|
|
386
443
|
i0.ɵɵelementStart(0, "div", 0)(1, "div", 1)(2, "div", 2)(3, "span", 3);
|
|
387
444
|
i0.ɵɵelement(4, "i", 4);
|
|
388
445
|
i0.ɵɵelementEnd();
|
|
@@ -402,7 +459,7 @@ export class CommonDashboardPageComponent {
|
|
|
402
459
|
i0.ɵɵelement(15, "i", 11);
|
|
403
460
|
i0.ɵɵtext(16, " New person ");
|
|
404
461
|
i0.ɵɵelementEnd()()();
|
|
405
|
-
i0.ɵɵconditionalCreate(17, CommonDashboardPageComponent_Conditional_17_Template, 2, 0, "div", 12)(18, CommonDashboardPageComponent_Conditional_18_Template,
|
|
462
|
+
i0.ɵɵconditionalCreate(17, CommonDashboardPageComponent_Conditional_17_Template, 2, 0, "div", 12)(18, CommonDashboardPageComponent_Conditional_18_Template, 29, 4);
|
|
406
463
|
i0.ɵɵelementEnd();
|
|
407
464
|
} if (rf & 2) {
|
|
408
465
|
i0.ɵɵadvance(17);
|
|
@@ -436,126 +493,130 @@ export class CommonDashboardPageComponent {
|
|
|
436
493
|
@if (IsLoading) {
|
|
437
494
|
<div class="mjc-muted">Loading the directory…</div>
|
|
438
495
|
} @else {
|
|
439
|
-
|
|
440
|
-
<
|
|
441
|
-
|
|
442
|
-
|
|
443
|
-
|
|
444
|
-
|
|
445
|
-
|
|
446
|
-
|
|
447
|
-
|
|
448
|
-
|
|
449
|
-
|
|
450
|
-
|
|
451
|
-
|
|
452
|
-
|
|
453
|
-
|
|
454
|
-
|
|
455
|
-
|
|
456
|
-
|
|
457
|
-
|
|
458
|
-
|
|
459
|
-
|
|
460
|
-
|
|
461
|
-
|
|
462
|
-
|
|
463
|
-
|
|
464
|
-
|
|
465
|
-
|
|
466
|
-
|
|
467
|
-
|
|
496
|
+
@if (SummaryLoading) {
|
|
497
|
+
<div class="mjc-muted">Counting the directory…</div>
|
|
498
|
+
} @else {
|
|
499
|
+
<bizapps-stat-row [Error]="Headline.Error">
|
|
500
|
+
<bizapps-stat-tile
|
|
501
|
+
Label="People"
|
|
502
|
+
Icon="fa-solid fa-user"
|
|
503
|
+
[Value]="Headline.ActivePeopleCount"
|
|
504
|
+
[Detail]="Headline.PeopleDetail"
|
|
505
|
+
[Clickable]="true"
|
|
506
|
+
(Clicked)="OpenPeople()" />
|
|
507
|
+
<bizapps-stat-tile
|
|
508
|
+
Label="Organizations"
|
|
509
|
+
Icon="fa-solid fa-building"
|
|
510
|
+
[Value]="Headline.ActiveOrganizationCount"
|
|
511
|
+
[Detail]="Headline.OrganizationDetail"
|
|
512
|
+
[Clickable]="true"
|
|
513
|
+
(Clicked)="OpenOrganizations()" />
|
|
514
|
+
<bizapps-stat-tile
|
|
515
|
+
Label="Relationships"
|
|
516
|
+
Icon="fa-solid fa-link"
|
|
517
|
+
[Value]="Headline.RelationshipCount"
|
|
518
|
+
Detail="Who reports to whom, who works where"
|
|
519
|
+
[Clickable]="false" />
|
|
520
|
+
<bizapps-stat-tile
|
|
521
|
+
Label="Gaps"
|
|
522
|
+
Icon="fa-solid fa-clipboard-check"
|
|
523
|
+
[Value]="Headline.GapCount"
|
|
524
|
+
Detail="Missing email, org, type, or website"
|
|
525
|
+
[Tone]="Headline.GapTone"
|
|
526
|
+
[Clickable]="false" />
|
|
527
|
+
</bizapps-stat-row>
|
|
468
528
|
|
|
469
|
-
|
|
470
|
-
|
|
471
|
-
|
|
472
|
-
|
|
473
|
-
|
|
474
|
-
|
|
475
|
-
|
|
476
|
-
|
|
477
|
-
|
|
478
|
-
|
|
479
|
-
|
|
480
|
-
|
|
481
|
-
|
|
482
|
-
|
|
483
|
-
|
|
484
|
-
|
|
485
|
-
|
|
486
|
-
|
|
487
|
-
|
|
488
|
-
|
|
489
|
-
|
|
490
|
-
|
|
529
|
+
<div class="mjc-split">
|
|
530
|
+
<section class="mjc-card">
|
|
531
|
+
<header class="mjc-card__head">
|
|
532
|
+
<i class="fa-solid fa-list-check" aria-hidden="true"></i>
|
|
533
|
+
<h2>Needs someone</h2>
|
|
534
|
+
</header>
|
|
535
|
+
<div class="mjc-card__body">
|
|
536
|
+
@for (queue of Queues; track queue.Label) {
|
|
537
|
+
<button type="button" class="mjc-queue" (click)="OpenPage(queue.PageId)">
|
|
538
|
+
<span class="mjc-queue__icon" [attr.data-tone]="queue.Tone">
|
|
539
|
+
<i [class]="queue.Icon" aria-hidden="true"></i>
|
|
540
|
+
</span>
|
|
541
|
+
<span class="mjc-queue__body">
|
|
542
|
+
<span class="mjc-queue__label">{{ queue.Label }}</span>
|
|
543
|
+
@if (queue.Note) {
|
|
544
|
+
<span class="mjc-queue__note">{{ queue.Note }}</span>
|
|
545
|
+
}
|
|
546
|
+
</span>
|
|
547
|
+
<b class="mjc-queue__count">{{ queue.Count }}</b>
|
|
548
|
+
<i class="fa-solid fa-chevron-right mjc-queue__chev" aria-hidden="true"></i>
|
|
549
|
+
</button>
|
|
550
|
+
} @empty {
|
|
551
|
+
@if (Headline.ReadFailed) {
|
|
552
|
+
<mj-empty-state
|
|
553
|
+
Variant="warning"
|
|
554
|
+
Title="Could not be read"
|
|
555
|
+
Size="compact" />
|
|
556
|
+
} @else {
|
|
557
|
+
<mj-empty-state
|
|
558
|
+
Icon="fa-solid fa-circle-check"
|
|
559
|
+
Title="Nothing is waiting"
|
|
560
|
+
Size="compact" />
|
|
561
|
+
}
|
|
562
|
+
}
|
|
563
|
+
</div>
|
|
564
|
+
</section>
|
|
565
|
+
|
|
566
|
+
<section class="mjc-card">
|
|
567
|
+
<header class="mjc-card__head">
|
|
568
|
+
<i class="fa-solid fa-chart-simple" aria-hidden="true"></i>
|
|
569
|
+
<h2>People added</h2>
|
|
570
|
+
<span class="mjc-card__meta">last 7 days</span>
|
|
571
|
+
</header>
|
|
572
|
+
<div class="mjc-card__body">
|
|
491
573
|
@if (Headline.ReadFailed) {
|
|
492
574
|
<mj-empty-state
|
|
493
575
|
Variant="warning"
|
|
494
576
|
Title="Could not be read"
|
|
495
577
|
Size="compact" />
|
|
496
578
|
} @else {
|
|
497
|
-
<
|
|
498
|
-
|
|
499
|
-
|
|
500
|
-
|
|
579
|
+
<div class="mjc-bars" role="img" [attr.aria-label]="'People added per day, last 7 days'">
|
|
580
|
+
@for (bar of PeoplePerDay; track bar.Label) {
|
|
581
|
+
<div class="mjc-bars__col">
|
|
582
|
+
<span class="mjc-bars__value">{{ bar.Value }}</span>
|
|
583
|
+
<span class="mjc-bars__fill" [class.is-current]="bar.Current" [style.height.%]="barHeight(bar)"></span>
|
|
584
|
+
<span class="mjc-bars__label">{{ bar.Label }}</span>
|
|
585
|
+
</div>
|
|
586
|
+
}
|
|
587
|
+
</div>
|
|
501
588
|
}
|
|
502
|
-
|
|
503
|
-
</
|
|
504
|
-
</section>
|
|
589
|
+
</div>
|
|
590
|
+
</section>
|
|
505
591
|
|
|
506
|
-
|
|
507
|
-
|
|
508
|
-
|
|
509
|
-
|
|
510
|
-
|
|
511
|
-
|
|
512
|
-
|
|
513
|
-
|
|
514
|
-
|
|
515
|
-
|
|
516
|
-
|
|
517
|
-
|
|
518
|
-
|
|
519
|
-
|
|
520
|
-
|
|
521
|
-
|
|
522
|
-
|
|
523
|
-
|
|
524
|
-
|
|
525
|
-
|
|
592
|
+
<section class="mjc-card">
|
|
593
|
+
<header class="mjc-card__head">
|
|
594
|
+
<i class="fa-solid fa-layer-group" aria-hidden="true"></i>
|
|
595
|
+
<h2>Organization types</h2>
|
|
596
|
+
</header>
|
|
597
|
+
<div class="mjc-card__body">
|
|
598
|
+
@for (row of OrganizationTypeMix; track row.Label) {
|
|
599
|
+
<div class="mjc-mix">
|
|
600
|
+
<span class="mjc-mix__label">{{ row.Label }}</span>
|
|
601
|
+
<span class="mjc-mix__track">
|
|
602
|
+
<span class="mjc-mix__fill" [style.width.%]="mixWidth(row)"></span>
|
|
603
|
+
</span>
|
|
604
|
+
<span class="mjc-mix__value">{{ row.Value }}</span>
|
|
605
|
+
</div>
|
|
606
|
+
} @empty {
|
|
607
|
+
@if (Headline.ReadFailed) {
|
|
608
|
+
<mj-empty-state
|
|
609
|
+
Variant="warning"
|
|
610
|
+
Title="Could not be read"
|
|
611
|
+
Size="compact" />
|
|
612
|
+
} @else {
|
|
613
|
+
<p class="mjc-muted">No organizations yet.</p>
|
|
526
614
|
}
|
|
527
|
-
</div>
|
|
528
|
-
}
|
|
529
|
-
</div>
|
|
530
|
-
</section>
|
|
531
|
-
|
|
532
|
-
<section class="mjc-card">
|
|
533
|
-
<header class="mjc-card__head">
|
|
534
|
-
<i class="fa-solid fa-layer-group" aria-hidden="true"></i>
|
|
535
|
-
<h2>Organization types</h2>
|
|
536
|
-
</header>
|
|
537
|
-
<div class="mjc-card__body">
|
|
538
|
-
@for (row of OrganizationTypeMix; track row.Label) {
|
|
539
|
-
<div class="mjc-mix">
|
|
540
|
-
<span class="mjc-mix__label">{{ row.Label }}</span>
|
|
541
|
-
<span class="mjc-mix__track">
|
|
542
|
-
<span class="mjc-mix__fill" [style.width.%]="mixWidth(row)"></span>
|
|
543
|
-
</span>
|
|
544
|
-
<span class="mjc-mix__value">{{ row.Value }}</span>
|
|
545
|
-
</div>
|
|
546
|
-
} @empty {
|
|
547
|
-
@if (Headline.ReadFailed) {
|
|
548
|
-
<mj-empty-state
|
|
549
|
-
Variant="warning"
|
|
550
|
-
Title="Could not be read"
|
|
551
|
-
Size="compact" />
|
|
552
|
-
} @else {
|
|
553
|
-
<p class="mjc-muted">No organizations yet.</p>
|
|
554
615
|
}
|
|
555
|
-
|
|
556
|
-
</
|
|
557
|
-
</
|
|
558
|
-
|
|
616
|
+
</div>
|
|
617
|
+
</section>
|
|
618
|
+
</div>
|
|
619
|
+
}
|
|
559
620
|
|
|
560
621
|
<div class="mjc-split mjc-split--wide">
|
|
561
622
|
<section class="mjc-card">
|
|
@@ -585,23 +646,27 @@ export class CommonDashboardPageComponent {
|
|
|
585
646
|
<h2>Worth a look</h2>
|
|
586
647
|
</header>
|
|
587
648
|
<div class="mjc-card__body">
|
|
588
|
-
@
|
|
589
|
-
<
|
|
590
|
-
|
|
591
|
-
|
|
592
|
-
<
|
|
593
|
-
|
|
594
|
-
|
|
595
|
-
|
|
596
|
-
|
|
597
|
-
|
|
598
|
-
|
|
599
|
-
|
|
600
|
-
|
|
601
|
-
|
|
602
|
-
|
|
603
|
-
|
|
604
|
-
|
|
649
|
+
@if (SummaryLoading) {
|
|
650
|
+
<p class="mjc-muted">Counting…</p>
|
|
651
|
+
} @else {
|
|
652
|
+
@for (item of WorthALook; track item.RecordID) {
|
|
653
|
+
<mj-alert [Variant]="item.Tone" [Icon]="item.Icon" Role="note">
|
|
654
|
+
<strong>{{ item.Headline }}</strong>
|
|
655
|
+
{{ item.Detail }}
|
|
656
|
+
<button type="button" class="mjc-link" (click)="OpenAttention(item)">Work it →</button>
|
|
657
|
+
</mj-alert>
|
|
658
|
+
} @empty {
|
|
659
|
+
@if (Headline.ReadFailed) {
|
|
660
|
+
<mj-empty-state
|
|
661
|
+
Variant="warning"
|
|
662
|
+
Title="Could not be read"
|
|
663
|
+
Size="compact" />
|
|
664
|
+
} @else {
|
|
665
|
+
<mj-empty-state
|
|
666
|
+
Icon="fa-solid fa-circle-check"
|
|
667
|
+
Title="Nothing is asking for attention"
|
|
668
|
+
Size="compact" />
|
|
669
|
+
}
|
|
605
670
|
}
|
|
606
671
|
}
|
|
607
672
|
</div>
|
|
@@ -631,5 +696,5 @@ export class CommonDashboardPageComponent {
|
|
|
631
696
|
</div>
|
|
632
697
|
`, styles: ["\n :host {\n display: block;\n height: 100%;\n overflow: auto;\n }\n .mjc-dash {\n display: flex;\n flex-direction: column;\n gap: var(--mj-space-5);\n padding: var(--mj-space-6);\n box-sizing: border-box;\n min-width: 0;\n }\n .mjc-hero {\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: var(--mj-space-4);\n flex-wrap: wrap;\n }\n .mjc-hero__identity {\n display: flex;\n align-items: center;\n gap: var(--mj-space-3);\n }\n .mjc-hero__mark {\n width: 48px;\n height: 48px;\n border-radius: var(--mj-radius-md);\n background: var(--mj-brand-primary);\n color: var(--mj-text-inverse);\n display: flex;\n align-items: center;\n justify-content: center;\n font-size: 20px;\n flex-shrink: 0;\n }\n .mjc-hero__title {\n margin: 0;\n font-size: 1.25rem;\n font-weight: 700;\n color: var(--mj-text-primary);\n }\n .mjc-hero__sub {\n margin: 0;\n font-size: 0.8125rem;\n color: var(--mj-text-muted);\n }\n .mjc-hero__actions {\n display: flex;\n gap: var(--mj-space-2);\n flex-wrap: wrap;\n }\n .mjc-split {\n display: grid;\n grid-template-columns: minmax(0, 1.3fr) minmax(0, 1fr) minmax(0, 1fr);\n gap: var(--mj-space-4);\n }\n .mjc-split--wide {\n grid-template-columns: minmax(0, 1.6fr) minmax(0, 1fr);\n }\n .mjc-card {\n background: var(--mj-bg-surface);\n border: 1px solid var(--mj-border-default);\n border-radius: var(--mj-radius-md);\n min-width: 0;\n }\n .mjc-card__head {\n display: flex;\n align-items: center;\n gap: var(--mj-space-2);\n padding: var(--mj-space-3) var(--mj-space-4);\n border-bottom: 1px solid var(--mj-border-subtle);\n color: var(--mj-text-secondary);\n }\n .mjc-card__head h2 {\n margin: 0;\n font-size: 0.9375rem;\n font-weight: 600;\n color: var(--mj-text-primary);\n flex: 1;\n }\n .mjc-card__meta {\n font-size: 0.75rem;\n color: var(--mj-text-muted);\n }\n .mjc-card__body {\n padding: var(--mj-space-4);\n display: flex;\n flex-direction: column;\n gap: var(--mj-space-3);\n }\n .mjc-queue {\n display: flex;\n align-items: center;\n gap: var(--mj-space-3);\n padding: var(--mj-space-2) 0;\n border: 0;\n border-bottom: 1px solid var(--mj-border-subtle);\n background: transparent;\n color: inherit;\n text-align: left;\n cursor: pointer;\n width: 100%;\n }\n .mjc-queue:last-child {\n border-bottom: 0;\n }\n .mjc-queue:hover .mjc-queue__label {\n color: var(--mj-brand-primary);\n }\n .mjc-queue__icon {\n width: 32px;\n height: 32px;\n border-radius: var(--mj-radius-md);\n display: flex;\n align-items: center;\n justify-content: center;\n flex: none;\n font-size: 13px;\n background: var(--mj-bg-surface-sunken);\n color: var(--mj-text-secondary);\n }\n .mjc-queue__icon[data-tone='warning'] {\n background: color-mix(in srgb, var(--mj-status-warning) 16%, var(--mj-bg-surface));\n color: var(--mj-status-warning-text);\n }\n .mjc-queue__icon[data-tone='info'] {\n background: color-mix(in srgb, var(--mj-status-info) 16%, var(--mj-bg-surface));\n color: var(--mj-status-info-text);\n }\n .mjc-queue__icon[data-tone='error'] {\n background: color-mix(in srgb, var(--mj-status-error) 16%, var(--mj-bg-surface));\n color: var(--mj-status-error-text);\n }\n .mjc-queue__body {\n flex: 1;\n min-width: 0;\n }\n .mjc-queue__label {\n display: block;\n font-weight: 600;\n }\n .mjc-queue__note {\n display: block;\n font-size: 0.75rem;\n color: var(--mj-text-muted);\n }\n .mjc-queue__count {\n font-size: 1rem;\n }\n .mjc-queue__chev {\n color: var(--mj-text-muted);\n font-size: 0.7rem;\n }\n .mjc-bars {\n display: flex;\n align-items: flex-end;\n gap: var(--mj-space-2);\n height: 140px;\n }\n .mjc-bars__col {\n flex: 1;\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: flex-end;\n gap: 4px;\n height: 100%;\n }\n .mjc-bars__fill {\n width: 100%;\n min-height: 4px;\n border-radius: var(--mj-radius-sm) var(--mj-radius-sm) 0 0;\n background: color-mix(in srgb, var(--mj-brand-primary) 35%, var(--mj-bg-surface-sunken));\n }\n .mjc-bars__fill.is-current {\n background: var(--mj-brand-primary);\n }\n .mjc-bars__value,\n .mjc-bars__label {\n font-size: 0.7rem;\n color: var(--mj-text-muted);\n }\n .mjc-mix {\n display: grid;\n grid-template-columns: minmax(0, 1.2fr) minmax(0, 2fr) auto;\n gap: var(--mj-space-2);\n align-items: center;\n }\n .mjc-mix__label {\n font-size: 0.8125rem;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n }\n .mjc-mix__track {\n height: 8px;\n background: var(--mj-bg-surface-sunken);\n border-radius: var(--mj-radius-pill, 999px);\n overflow: hidden;\n }\n .mjc-mix__fill {\n display: block;\n height: 100%;\n background: var(--mj-brand-primary);\n }\n .mjc-mix__value {\n font-size: 0.8125rem;\n font-weight: 600;\n }\n .mjc-table-wrap {\n overflow: auto;\n }\n .mjc-table {\n width: 100%;\n border-collapse: collapse;\n font-size: 0.875rem;\n }\n .mjc-table th,\n .mjc-table td {\n padding: var(--mj-space-2) var(--mj-space-4);\n text-align: left;\n border-bottom: 1px solid var(--mj-border-subtle);\n }\n .mjc-table th {\n font-size: 0.7rem;\n text-transform: uppercase;\n letter-spacing: 0.04em;\n color: var(--mj-text-muted);\n font-weight: 600;\n }\n .mjc-table tbody tr {\n cursor: pointer;\n }\n .mjc-table tbody tr:hover {\n background: var(--mj-bg-surface-hover);\n }\n .mjc-link {\n border: 0;\n background: transparent;\n color: var(--mj-text-link);\n cursor: pointer;\n font-size: 0.8125rem;\n padding: 0;\n }\n .mjc-muted {\n color: var(--mj-text-muted);\n font-size: 0.8125rem;\n }\n .mjc-viewer-host {\n height: 280px;\n min-height: 220px;\n }\n @media (max-width: 1200px) {\n .mjc-split {\n grid-template-columns: repeat(2, minmax(0, 1fr));\n }\n }\n @media (max-width: 760px) {\n .mjc-dash {\n padding: var(--mj-space-4);\n }\n .mjc-split,\n .mjc-split--wide {\n grid-template-columns: 1fr;\n }\n }\n "] }]
|
|
633
698
|
}], null, null); })();
|
|
634
|
-
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(CommonDashboardPageComponent, { className: "CommonDashboardPageComponent", filePath: "lib/pages/common-dashboard.page.ts", lineNumber:
|
|
699
|
+
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(CommonDashboardPageComponent, { className: "CommonDashboardPageComponent", filePath: "lib/pages/common-dashboard.page.ts", lineNumber: 538 }); })();
|
|
635
700
|
//# sourceMappingURL=common-dashboard.page.js.map
|