@memberjunction/ng-conversations 2.104.0 → 2.106.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/components/collection/collection-view.component.d.ts +5 -1
- package/dist/lib/components/collection/collection-view.component.d.ts.map +1 -1
- package/dist/lib/components/collection/collection-view.component.js +53 -11
- package/dist/lib/components/collection/collection-view.component.js.map +1 -1
- package/dist/lib/components/conversation/conversation-chat-area.component.d.ts +53 -13
- package/dist/lib/components/conversation/conversation-chat-area.component.d.ts.map +1 -1
- package/dist/lib/components/conversation/conversation-chat-area.component.js +455 -289
- package/dist/lib/components/conversation/conversation-chat-area.component.js.map +1 -1
- package/dist/lib/components/conversation/conversation-list.component.d.ts +9 -1
- package/dist/lib/components/conversation/conversation-list.component.d.ts.map +1 -1
- package/dist/lib/components/conversation/conversation-list.component.js +258 -71
- package/dist/lib/components/conversation/conversation-list.component.js.map +1 -1
- package/dist/lib/components/mention/mention-dropdown.component.d.ts +6 -0
- package/dist/lib/components/mention/mention-dropdown.component.d.ts.map +1 -1
- package/dist/lib/components/mention/mention-dropdown.component.js +35 -13
- package/dist/lib/components/mention/mention-dropdown.component.js.map +1 -1
- package/dist/lib/components/message/message-input.component.d.ts +49 -12
- package/dist/lib/components/message/message-input.component.d.ts.map +1 -1
- package/dist/lib/components/message/message-input.component.js +579 -221
- package/dist/lib/components/message/message-input.component.js.map +1 -1
- package/dist/lib/components/message/message-item.component.d.ts +16 -5
- package/dist/lib/components/message/message-item.component.d.ts.map +1 -1
- package/dist/lib/components/message/message-item.component.js +136 -64
- package/dist/lib/components/message/message-item.component.js.map +1 -1
- package/dist/lib/components/message/message-list.component.d.ts +11 -5
- package/dist/lib/components/message/message-list.component.d.ts.map +1 -1
- package/dist/lib/components/message/message-list.component.js +48 -9
- package/dist/lib/components/message/message-list.component.js.map +1 -1
- package/dist/lib/components/navigation/conversation-navigation.component.d.ts.map +1 -1
- package/dist/lib/components/navigation/conversation-navigation.component.js +24 -9
- package/dist/lib/components/navigation/conversation-navigation.component.js.map +1 -1
- package/dist/lib/components/task/tasks-full-view.component.d.ts +47 -0
- package/dist/lib/components/task/tasks-full-view.component.d.ts.map +1 -0
- package/dist/lib/components/task/tasks-full-view.component.js +368 -0
- package/dist/lib/components/task/tasks-full-view.component.js.map +1 -0
- package/dist/lib/components/tasks/task-widget.component.d.ts +29 -0
- package/dist/lib/components/tasks/task-widget.component.d.ts.map +1 -0
- package/dist/lib/components/tasks/task-widget.component.js +385 -0
- package/dist/lib/components/tasks/task-widget.component.js.map +1 -0
- package/dist/lib/components/tasks/tasks-dropdown.component.d.ts +22 -8
- package/dist/lib/components/tasks/tasks-dropdown.component.d.ts.map +1 -1
- package/dist/lib/components/tasks/tasks-dropdown.component.js +195 -99
- package/dist/lib/components/tasks/tasks-dropdown.component.js.map +1 -1
- package/dist/lib/components/thread/thread-panel.component.d.ts +3 -1
- package/dist/lib/components/thread/thread-panel.component.d.ts.map +1 -1
- package/dist/lib/components/thread/thread-panel.component.js +14 -14
- package/dist/lib/components/thread/thread-panel.component.js.map +1 -1
- package/dist/lib/components/workspace/conversation-workspace.component.d.ts +43 -4
- package/dist/lib/components/workspace/conversation-workspace.component.d.ts.map +1 -1
- package/dist/lib/components/workspace/conversation-workspace.component.js +288 -46
- package/dist/lib/components/workspace/conversation-workspace.component.js.map +1 -1
- package/dist/lib/conversations.module.d.ts +40 -46
- package/dist/lib/conversations.module.d.ts.map +1 -1
- package/dist/lib/conversations.module.js +28 -42
- package/dist/lib/conversations.module.js.map +1 -1
- package/dist/lib/models/conversation-state.model.d.ts +29 -1
- package/dist/lib/models/conversation-state.model.d.ts.map +1 -1
- package/dist/lib/services/conversation-agent.service.d.ts +6 -5
- package/dist/lib/services/conversation-agent.service.d.ts.map +1 -1
- package/dist/lib/services/conversation-agent.service.js +18 -19
- package/dist/lib/services/conversation-agent.service.js.map +1 -1
- package/dist/lib/services/data-cache.service.d.ts +96 -0
- package/dist/lib/services/data-cache.service.d.ts.map +1 -0
- package/dist/lib/services/data-cache.service.js +203 -0
- package/dist/lib/services/data-cache.service.js.map +1 -0
- package/dist/public-api.d.ts +3 -6
- package/dist/public-api.d.ts.map +1 -1
- package/dist/public-api.js +3 -6
- package/dist/public-api.js.map +1 -1
- package/package.json +12 -10
- package/dist/lib/components/artifact/artifact-panel.component.d.ts +0 -22
- package/dist/lib/components/artifact/artifact-panel.component.d.ts.map +0 -1
- package/dist/lib/components/artifact/artifact-panel.component.js +0 -237
- package/dist/lib/components/artifact/artifact-panel.component.js.map +0 -1
- package/dist/lib/components/artifact/artifact-upload-modal.component.d.ts +0 -39
- package/dist/lib/components/artifact/artifact-upload-modal.component.d.ts.map +0 -1
- package/dist/lib/components/artifact/artifact-upload-modal.component.js +0 -384
- package/dist/lib/components/artifact/artifact-upload-modal.component.js.map +0 -1
- package/dist/lib/components/artifact/artifact-version-history.component.d.ts +0 -28
- package/dist/lib/components/artifact/artifact-version-history.component.d.ts.map +0 -1
- package/dist/lib/components/artifact/artifact-version-history.component.js +0 -280
- package/dist/lib/components/artifact/artifact-version-history.component.js.map +0 -1
- package/dist/lib/components/artifact/artifact-viewer-panel.component.d.ts +0 -22
- package/dist/lib/components/artifact/artifact-viewer-panel.component.d.ts.map +0 -1
- package/dist/lib/components/artifact/artifact-viewer-panel.component.js +0 -182
- package/dist/lib/components/artifact/artifact-viewer-panel.component.js.map +0 -1
- package/dist/lib/components/artifact/artifact-viewer.component.d.ts +0 -27
- package/dist/lib/components/artifact/artifact-viewer.component.d.ts.map +0 -1
- package/dist/lib/components/artifact/artifact-viewer.component.js +0 -266
- package/dist/lib/components/artifact/artifact-viewer.component.js.map +0 -1
- package/dist/lib/components/artifact/inline-artifact.component.d.ts +0 -46
- package/dist/lib/components/artifact/inline-artifact.component.d.ts.map +0 -1
- package/dist/lib/components/artifact/inline-artifact.component.js +0 -447
- package/dist/lib/components/artifact/inline-artifact.component.js.map +0 -1
- package/dist/lib/components/task/task-form-modal.component.d.ts +0 -42
- package/dist/lib/components/task/task-form-modal.component.d.ts.map +0 -1
- package/dist/lib/components/task/task-form-modal.component.js +0 -329
- package/dist/lib/components/task/task-form-modal.component.js.map +0 -1
- package/dist/lib/components/task/task-item.component.d.ts +0 -22
- package/dist/lib/components/task/task-item.component.d.ts.map +0 -1
- package/dist/lib/components/task/task-item.component.js +0 -234
- package/dist/lib/components/task/task-item.component.js.map +0 -1
- package/dist/lib/components/task/task-list.component.d.ts +0 -32
- package/dist/lib/components/task/task-list.component.d.ts.map +0 -1
- package/dist/lib/components/task/task-list.component.js +0 -290
- package/dist/lib/components/task/task-list.component.js.map +0 -1
|
@@ -1,8 +1,12 @@
|
|
|
1
|
-
import { Component, Input } from '@angular/core';
|
|
1
|
+
import { Component, Input, Output, EventEmitter } from '@angular/core';
|
|
2
2
|
import { RunView } from '@memberjunction/core';
|
|
3
|
+
import { Subject } from 'rxjs';
|
|
4
|
+
import { takeUntil } from 'rxjs/operators';
|
|
3
5
|
import * as i0 from "@angular/core";
|
|
4
6
|
import * as i1 from "../../services/conversation-state.service";
|
|
5
|
-
import * as i2 from "
|
|
7
|
+
import * as i2 from "../../services/active-tasks.service";
|
|
8
|
+
import * as i3 from "@angular/common";
|
|
9
|
+
import * as i4 from "./task-widget.component";
|
|
6
10
|
function TasksDropdownComponent_span_5_Template(rf, ctx) { if (rf & 1) {
|
|
7
11
|
i0.ɵɵelementStart(0, "span", 5);
|
|
8
12
|
i0.ɵɵtext(1);
|
|
@@ -10,106 +14,148 @@ function TasksDropdownComponent_span_5_Template(rf, ctx) { if (rf & 1) {
|
|
|
10
14
|
} if (rf & 2) {
|
|
11
15
|
const ctx_r0 = i0.ɵɵnextContext();
|
|
12
16
|
i0.ɵɵadvance();
|
|
13
|
-
i0.ɵɵtextInterpolate(ctx_r0.
|
|
17
|
+
i0.ɵɵtextInterpolate(ctx_r0.totalTaskCount);
|
|
14
18
|
} }
|
|
15
|
-
function
|
|
16
|
-
i0.ɵɵelementStart(0, "div",
|
|
17
|
-
i0.ɵɵelement(1, "
|
|
18
|
-
i0.ɵɵelementStart(2, "
|
|
19
|
-
i0.ɵɵ
|
|
20
|
-
i0.ɵɵ
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
i0.ɵɵ
|
|
24
|
-
i0.ɵɵelement(1, "i", 23);
|
|
25
|
-
i0.ɵɵtext(2);
|
|
19
|
+
function TasksDropdownComponent_div_6_div_9_div_5_Template(rf, ctx) { if (rf & 1) {
|
|
20
|
+
i0.ɵɵelementStart(0, "div", 18);
|
|
21
|
+
i0.ɵɵelement(1, "div", 19);
|
|
22
|
+
i0.ɵɵelementStart(2, "div", 20)(3, "div", 21);
|
|
23
|
+
i0.ɵɵelement(4, "i", 22);
|
|
24
|
+
i0.ɵɵtext(5);
|
|
25
|
+
i0.ɵɵelementEnd();
|
|
26
|
+
i0.ɵɵelementStart(6, "div", 23);
|
|
27
|
+
i0.ɵɵtext(7);
|
|
26
28
|
i0.ɵɵelementEnd();
|
|
29
|
+
i0.ɵɵelementStart(8, "div", 24);
|
|
30
|
+
i0.ɵɵtext(9);
|
|
31
|
+
i0.ɵɵelementEnd()()();
|
|
27
32
|
} if (rf & 2) {
|
|
28
|
-
const task_r3 =
|
|
33
|
+
const task_r3 = ctx.$implicit;
|
|
34
|
+
const ctx_r0 = i0.ɵɵnextContext(3);
|
|
35
|
+
i0.ɵɵadvance(5);
|
|
36
|
+
i0.ɵɵtextInterpolate1(" ", task_r3.agentName, " ");
|
|
37
|
+
i0.ɵɵadvance(2);
|
|
38
|
+
i0.ɵɵtextInterpolate(ctx_r0.getTrimmedStatus(task_r3.status));
|
|
29
39
|
i0.ɵɵadvance(2);
|
|
30
|
-
i0.ɵɵ
|
|
40
|
+
i0.ɵɵtextInterpolate(ctx_r0.getElapsedTime(task_r3));
|
|
31
41
|
} }
|
|
32
|
-
function
|
|
33
|
-
i0.ɵɵelementStart(0, "
|
|
34
|
-
i0.ɵɵelement(
|
|
35
|
-
i0.ɵɵ
|
|
42
|
+
function TasksDropdownComponent_div_6_div_9_Template(rf, ctx) { if (rf & 1) {
|
|
43
|
+
i0.ɵɵelementStart(0, "div", 14)(1, "div", 15);
|
|
44
|
+
i0.ɵɵelement(2, "i", 16);
|
|
45
|
+
i0.ɵɵelementStart(3, "span");
|
|
46
|
+
i0.ɵɵtext(4);
|
|
47
|
+
i0.ɵɵelementEnd()();
|
|
48
|
+
i0.ɵɵtemplate(5, TasksDropdownComponent_div_6_div_9_div_5_Template, 10, 3, "div", 17);
|
|
36
49
|
i0.ɵɵelementEnd();
|
|
37
50
|
} if (rf & 2) {
|
|
38
|
-
const
|
|
39
|
-
i0.ɵɵadvance(
|
|
40
|
-
i0.ɵɵtextInterpolate1(" ",
|
|
51
|
+
const ctx_r0 = i0.ɵɵnextContext(2);
|
|
52
|
+
i0.ɵɵadvance(4);
|
|
53
|
+
i0.ɵɵtextInterpolate1("Active (", ctx_r0.activeTasks.length, ")");
|
|
54
|
+
i0.ɵɵadvance();
|
|
55
|
+
i0.ɵɵproperty("ngForOf", ctx_r0.activeTasks);
|
|
41
56
|
} }
|
|
42
|
-
function
|
|
43
|
-
i0.ɵɵ
|
|
44
|
-
i0.ɵɵ
|
|
45
|
-
i0.ɵɵ
|
|
57
|
+
function TasksDropdownComponent_div_6_div_10_mj_task_widget_5_Template(rf, ctx) { if (rf & 1) {
|
|
58
|
+
const _r4 = i0.ɵɵgetCurrentView();
|
|
59
|
+
i0.ɵɵelementStart(0, "mj-task-widget", 27);
|
|
60
|
+
i0.ɵɵlistener("taskClick", function TasksDropdownComponent_div_6_div_10_mj_task_widget_5_Template_mj_task_widget_taskClick_0_listener($event) { i0.ɵɵrestoreView(_r4); const ctx_r0 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r0.onTaskClick($event)); });
|
|
46
61
|
i0.ɵɵelementEnd();
|
|
47
62
|
} if (rf & 2) {
|
|
48
|
-
const
|
|
49
|
-
i0.ɵɵ
|
|
50
|
-
i0.ɵɵtextInterpolate1(" ", task_r3.Agent, " ");
|
|
63
|
+
const task_r5 = ctx.$implicit;
|
|
64
|
+
i0.ɵɵproperty("task", task_r5)("compact", true)("clickable", true)("showProgress", true)("showDuration", false);
|
|
51
65
|
} }
|
|
52
66
|
function TasksDropdownComponent_div_6_div_10_Template(rf, ctx) { if (rf & 1) {
|
|
53
|
-
i0.ɵɵelementStart(0, "div", 15);
|
|
54
|
-
i0.ɵɵelement(
|
|
55
|
-
i0.ɵɵelementStart(
|
|
67
|
+
i0.ɵɵelementStart(0, "div", 14)(1, "div", 15);
|
|
68
|
+
i0.ɵɵelement(2, "i", 25);
|
|
69
|
+
i0.ɵɵelementStart(3, "span");
|
|
56
70
|
i0.ɵɵtext(4);
|
|
71
|
+
i0.ɵɵelementEnd()();
|
|
72
|
+
i0.ɵɵtemplate(5, TasksDropdownComponent_div_6_div_10_mj_task_widget_5_Template, 1, 5, "mj-task-widget", 26);
|
|
57
73
|
i0.ɵɵelementEnd();
|
|
58
|
-
i0.ɵɵelementStart(5, "div", 19);
|
|
59
|
-
i0.ɵɵtemplate(6, TasksDropdownComponent_div_6_div_10_span_6_Template, 3, 1, "span", 20)(7, TasksDropdownComponent_div_6_div_10_span_7_Template, 3, 1, "span", 21)(8, TasksDropdownComponent_div_6_div_10_span_8_Template, 3, 1, "span", 21);
|
|
60
|
-
i0.ɵɵelementEnd()()();
|
|
61
74
|
} if (rf & 2) {
|
|
62
|
-
const
|
|
75
|
+
const ctx_r0 = i0.ɵɵnextContext(2);
|
|
76
|
+
i0.ɵɵadvance(4);
|
|
77
|
+
i0.ɵɵtextInterpolate1("In Progress (", ctx_r0.dbTasks.length, ")");
|
|
63
78
|
i0.ɵɵadvance();
|
|
64
|
-
i0.ɵɵ
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
i0.ɵɵ
|
|
68
|
-
i0.ɵɵ
|
|
69
|
-
i0.ɵɵ
|
|
70
|
-
i0.ɵɵ
|
|
71
|
-
i0.ɵɵ
|
|
72
|
-
i0.ɵɵproperty("ngIf", task_r3.Agent);
|
|
79
|
+
i0.ɵɵproperty("ngForOf", ctx_r0.dbTasks);
|
|
80
|
+
} }
|
|
81
|
+
function TasksDropdownComponent_div_6_div_11_Template(rf, ctx) { if (rf & 1) {
|
|
82
|
+
i0.ɵɵelementStart(0, "div", 28);
|
|
83
|
+
i0.ɵɵelement(1, "i", 2);
|
|
84
|
+
i0.ɵɵelementStart(2, "p");
|
|
85
|
+
i0.ɵɵtext(3, "No active tasks");
|
|
86
|
+
i0.ɵɵelementEnd()();
|
|
73
87
|
} }
|
|
74
88
|
function TasksDropdownComponent_div_6_Template(rf, ctx) { if (rf & 1) {
|
|
75
89
|
const _r2 = i0.ɵɵgetCurrentView();
|
|
76
90
|
i0.ɵɵelementStart(0, "div", 6)(1, "div", 7)(2, "div", 8);
|
|
77
91
|
i0.ɵɵelement(3, "i", 2);
|
|
78
92
|
i0.ɵɵelementStart(4, "span");
|
|
79
|
-
i0.ɵɵtext(5, "
|
|
93
|
+
i0.ɵɵtext(5, "Tasks");
|
|
80
94
|
i0.ɵɵelementEnd()();
|
|
81
95
|
i0.ɵɵelementStart(6, "button", 9);
|
|
82
96
|
i0.ɵɵlistener("click", function TasksDropdownComponent_div_6_Template_button_click_6_listener() { i0.ɵɵrestoreView(_r2); const ctx_r0 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r0.closeDropdown()); });
|
|
83
97
|
i0.ɵɵelement(7, "i", 10);
|
|
84
98
|
i0.ɵɵelementEnd()();
|
|
85
99
|
i0.ɵɵelementStart(8, "div", 11);
|
|
86
|
-
i0.ɵɵtemplate(9, TasksDropdownComponent_div_6_div_9_Template,
|
|
100
|
+
i0.ɵɵtemplate(9, TasksDropdownComponent_div_6_div_9_Template, 6, 2, "div", 12)(10, TasksDropdownComponent_div_6_div_10_Template, 6, 2, "div", 12)(11, TasksDropdownComponent_div_6_div_11_Template, 4, 0, "div", 13);
|
|
87
101
|
i0.ɵɵelementEnd()();
|
|
88
102
|
} if (rf & 2) {
|
|
89
103
|
const ctx_r0 = i0.ɵɵnextContext();
|
|
90
104
|
i0.ɵɵadvance(9);
|
|
91
|
-
i0.ɵɵproperty("ngIf", ctx_r0.
|
|
105
|
+
i0.ɵɵproperty("ngIf", ctx_r0.activeTasks.length > 0);
|
|
106
|
+
i0.ɵɵadvance();
|
|
107
|
+
i0.ɵɵproperty("ngIf", ctx_r0.dbTasks.length > 0);
|
|
92
108
|
i0.ɵɵadvance();
|
|
93
|
-
i0.ɵɵproperty("
|
|
109
|
+
i0.ɵɵproperty("ngIf", ctx_r0.activeTasks.length === 0 && ctx_r0.dbTasks.length === 0);
|
|
94
110
|
} }
|
|
95
111
|
/**
|
|
96
|
-
*
|
|
97
|
-
*
|
|
112
|
+
* Enhanced tasks dropdown component for chat header.
|
|
113
|
+
* Shows both:
|
|
114
|
+
* 1. Active (running) tasks from ActiveTasksService
|
|
115
|
+
* 2. Database tasks for the current conversation
|
|
98
116
|
*/
|
|
99
117
|
export class TasksDropdownComponent {
|
|
100
118
|
conversationState;
|
|
119
|
+
activeTasksService;
|
|
101
120
|
currentUser;
|
|
121
|
+
taskClicked = new EventEmitter();
|
|
102
122
|
isOpen = false;
|
|
103
|
-
|
|
104
|
-
|
|
123
|
+
activeTasks = [];
|
|
124
|
+
dbTasks = [];
|
|
125
|
+
totalTaskCount = 0;
|
|
105
126
|
previousConversationId = null;
|
|
106
|
-
|
|
127
|
+
destroy$ = new Subject();
|
|
128
|
+
pollingInterval = null;
|
|
129
|
+
constructor(conversationState, activeTasksService) {
|
|
107
130
|
this.conversationState = conversationState;
|
|
131
|
+
this.activeTasksService = activeTasksService;
|
|
108
132
|
}
|
|
109
133
|
ngOnInit() {
|
|
134
|
+
// Subscribe to active tasks from the service
|
|
135
|
+
this.activeTasksService.tasks$
|
|
136
|
+
.pipe(takeUntil(this.destroy$))
|
|
137
|
+
.subscribe(tasks => {
|
|
138
|
+
this.activeTasks = tasks;
|
|
139
|
+
this.updateTotalCount();
|
|
140
|
+
});
|
|
110
141
|
// Initial load if there's an active conversation
|
|
111
142
|
if (this.conversationState.activeConversationId) {
|
|
112
|
-
this.
|
|
143
|
+
this.loadDatabaseTasks();
|
|
144
|
+
}
|
|
145
|
+
// Poll for task updates every 3 seconds when conversation is active
|
|
146
|
+
this.startPolling();
|
|
147
|
+
}
|
|
148
|
+
startPolling() {
|
|
149
|
+
this.pollingInterval = setInterval(() => {
|
|
150
|
+
if (this.conversationState.activeConversationId) {
|
|
151
|
+
this.loadDatabaseTasks();
|
|
152
|
+
}
|
|
153
|
+
}, 3000); // Poll every 3 seconds
|
|
154
|
+
}
|
|
155
|
+
stopPolling() {
|
|
156
|
+
if (this.pollingInterval) {
|
|
157
|
+
clearInterval(this.pollingInterval);
|
|
158
|
+
this.pollingInterval = null;
|
|
113
159
|
}
|
|
114
160
|
}
|
|
115
161
|
ngDoCheck() {
|
|
@@ -118,24 +164,33 @@ export class TasksDropdownComponent {
|
|
|
118
164
|
if (currentId !== this.previousConversationId) {
|
|
119
165
|
this.previousConversationId = currentId;
|
|
120
166
|
if (currentId) {
|
|
121
|
-
this.
|
|
167
|
+
this.loadDatabaseTasks();
|
|
122
168
|
}
|
|
123
169
|
else {
|
|
124
|
-
this.
|
|
125
|
-
this.
|
|
170
|
+
this.dbTasks = [];
|
|
171
|
+
this.updateTotalCount();
|
|
126
172
|
}
|
|
127
173
|
}
|
|
128
174
|
}
|
|
129
175
|
ngOnDestroy() {
|
|
130
|
-
|
|
176
|
+
this.stopPolling();
|
|
177
|
+
this.destroy$.next();
|
|
178
|
+
this.destroy$.complete();
|
|
131
179
|
}
|
|
132
180
|
toggleDropdown() {
|
|
133
181
|
this.isOpen = !this.isOpen;
|
|
182
|
+
if (this.isOpen) {
|
|
183
|
+
// Refresh database tasks when opening
|
|
184
|
+
this.loadDatabaseTasks();
|
|
185
|
+
}
|
|
134
186
|
}
|
|
135
187
|
closeDropdown() {
|
|
136
188
|
this.isOpen = false;
|
|
137
189
|
}
|
|
138
|
-
|
|
190
|
+
updateTotalCount() {
|
|
191
|
+
this.totalTaskCount = this.activeTasks.length + this.dbTasks.length;
|
|
192
|
+
}
|
|
193
|
+
async loadDatabaseTasks() {
|
|
139
194
|
const activeId = this.conversationState.activeConversationId;
|
|
140
195
|
if (!activeId) {
|
|
141
196
|
return;
|
|
@@ -150,31 +205,52 @@ export class TasksDropdownComponent {
|
|
|
150
205
|
ResultType: 'entity_object'
|
|
151
206
|
}, this.currentUser);
|
|
152
207
|
if (!detailsResult.Success || !detailsResult.Results || detailsResult.Results.length === 0) {
|
|
153
|
-
this.
|
|
154
|
-
this.
|
|
208
|
+
this.dbTasks = [];
|
|
209
|
+
this.updateTotalCount();
|
|
155
210
|
return;
|
|
156
211
|
}
|
|
157
212
|
// Get all conversation detail IDs
|
|
158
213
|
const detailIds = detailsResult.Results.map(d => `'${d.ID}'`).join(',');
|
|
159
|
-
// Load tasks for these conversation details
|
|
214
|
+
// Load tasks for these conversation details (only top-level active ones)
|
|
160
215
|
const result = await rv.RunView({
|
|
161
216
|
EntityName: 'MJ: Tasks',
|
|
162
|
-
ExtraFilter: `ConversationDetailID IN (${detailIds}) AND Status IN ('Pending', 'In Progress')`,
|
|
217
|
+
ExtraFilter: `ConversationDetailID IN (${detailIds}) AND Status IN ('Pending', 'In Progress') AND ParentID IS NULL`,
|
|
163
218
|
OrderBy: '__mj_CreatedAt DESC',
|
|
164
219
|
MaxRows: 50,
|
|
165
220
|
ResultType: 'entity_object'
|
|
166
221
|
}, this.currentUser);
|
|
167
222
|
if (result.Success) {
|
|
168
|
-
this.
|
|
169
|
-
this.
|
|
223
|
+
this.dbTasks = result.Results || [];
|
|
224
|
+
this.updateTotalCount();
|
|
170
225
|
}
|
|
171
226
|
}
|
|
172
227
|
catch (error) {
|
|
173
|
-
console.error('Failed to load tasks:', error);
|
|
228
|
+
console.error('Failed to load database tasks:', error);
|
|
229
|
+
}
|
|
230
|
+
}
|
|
231
|
+
getElapsedTime(task) {
|
|
232
|
+
const elapsed = Date.now() - task.startTime;
|
|
233
|
+
const seconds = Math.floor(elapsed / 1000);
|
|
234
|
+
if (seconds < 60) {
|
|
235
|
+
return `${seconds}s`;
|
|
174
236
|
}
|
|
237
|
+
const minutes = Math.floor(seconds / 60);
|
|
238
|
+
const remainingSeconds = seconds % 60;
|
|
239
|
+
return `${minutes}:${remainingSeconds.toString().padStart(2, '0')}`;
|
|
240
|
+
}
|
|
241
|
+
getTrimmedStatus(status) {
|
|
242
|
+
const maxLength = 60;
|
|
243
|
+
if (status.length <= maxLength) {
|
|
244
|
+
return status;
|
|
245
|
+
}
|
|
246
|
+
return status.substring(0, maxLength) + '...';
|
|
247
|
+
}
|
|
248
|
+
onTaskClick(task) {
|
|
249
|
+
this.taskClicked.emit(task);
|
|
250
|
+
this.closeDropdown();
|
|
175
251
|
}
|
|
176
|
-
static ɵfac = function TasksDropdownComponent_Factory(t) { return new (t || TasksDropdownComponent)(i0.ɵɵdirectiveInject(i1.ConversationStateService)); };
|
|
177
|
-
static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: TasksDropdownComponent, selectors: [["mj-tasks-dropdown"]], inputs: { currentUser: "currentUser" }, decls: 7, vars: 4, consts: [[1, "tasks-dropdown-container"], ["title", "View
|
|
252
|
+
static ɵfac = function TasksDropdownComponent_Factory(t) { return new (t || TasksDropdownComponent)(i0.ɵɵdirectiveInject(i1.ConversationStateService), i0.ɵɵdirectiveInject(i2.ActiveTasksService)); };
|
|
253
|
+
static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: TasksDropdownComponent, selectors: [["mj-tasks-dropdown"]], inputs: { currentUser: "currentUser" }, outputs: { taskClicked: "taskClicked" }, decls: 7, vars: 4, consts: [[1, "tasks-dropdown-container"], ["title", "View tasks", 1, "active-tasks-btn", 3, "click"], [1, "fas", "fa-tasks"], ["class", "task-count-badge", 4, "ngIf"], ["class", "active-tasks-dropdown", 4, "ngIf"], [1, "task-count-badge"], [1, "active-tasks-dropdown"], [1, "dropdown-header"], [1, "header-left"], [1, "close-btn", 3, "click"], [1, "fas", "fa-times"], [1, "dropdown-content"], ["class", "section", 4, "ngIf"], ["class", "no-tasks", 4, "ngIf"], [1, "section"], [1, "section-header"], [1, "fas", "fa-circle-notch", "fa-spin"], ["class", "active-task-item", 4, "ngFor", "ngForOf"], [1, "active-task-item"], [1, "task-status-indicator", "active"], [1, "task-content"], [1, "task-title"], [1, "fas", "fa-robot"], [1, "task-status-text"], [1, "task-elapsed"], [1, "fas", "fa-list-check"], [3, "task", "compact", "clickable", "showProgress", "showDuration", "taskClick", 4, "ngFor", "ngForOf"], [3, "taskClick", "task", "compact", "clickable", "showProgress", "showDuration"], [1, "no-tasks"]], template: function TasksDropdownComponent_Template(rf, ctx) { if (rf & 1) {
|
|
178
254
|
i0.ɵɵelementStart(0, "div", 0)(1, "button", 1);
|
|
179
255
|
i0.ɵɵlistener("click", function TasksDropdownComponent_Template_button_click_1_listener() { return ctx.toggleDropdown(); });
|
|
180
256
|
i0.ɵɵelement(2, "i", 2);
|
|
@@ -183,16 +259,16 @@ export class TasksDropdownComponent {
|
|
|
183
259
|
i0.ɵɵelementEnd();
|
|
184
260
|
i0.ɵɵtemplate(5, TasksDropdownComponent_span_5_Template, 2, 1, "span", 3);
|
|
185
261
|
i0.ɵɵelementEnd();
|
|
186
|
-
i0.ɵɵtemplate(6, TasksDropdownComponent_div_6_Template,
|
|
262
|
+
i0.ɵɵtemplate(6, TasksDropdownComponent_div_6_Template, 12, 3, "div", 4);
|
|
187
263
|
i0.ɵɵelementEnd();
|
|
188
264
|
} if (rf & 2) {
|
|
189
265
|
i0.ɵɵadvance();
|
|
190
266
|
i0.ɵɵclassProp("active", ctx.isOpen);
|
|
191
267
|
i0.ɵɵadvance(4);
|
|
192
|
-
i0.ɵɵproperty("ngIf", ctx.
|
|
268
|
+
i0.ɵɵproperty("ngIf", ctx.totalTaskCount > 0);
|
|
193
269
|
i0.ɵɵadvance();
|
|
194
270
|
i0.ɵɵproperty("ngIf", ctx.isOpen);
|
|
195
|
-
} }, dependencies: [
|
|
271
|
+
} }, dependencies: [i3.NgForOf, i3.NgIf, i4.TaskWidgetComponent], styles: [".tasks-dropdown-container[_ngcontent-%COMP%] {\n position: relative;\n }\n\n .active-tasks-btn[_ngcontent-%COMP%] {\n background: var(--gray-700, #374151);\n color: white;\n padding: 6px 12px;\n border-radius: 6px;\n font-size: 13px;\n display: flex;\n align-items: center;\n gap: 6px;\n border: 1px solid #E5E7EB;\n cursor: pointer;\n transition: all 150ms ease;\n }\n\n .active-tasks-btn[_ngcontent-%COMP%]:hover {\n background: var(--gray-600, #4B5563);\n }\n\n .active-tasks-btn.active[_ngcontent-%COMP%] {\n background: var(--navy, #1e40af);\n }\n\n .task-count-badge[_ngcontent-%COMP%] {\n background: var(--navy, #1e40af);\n color: white;\n padding: 2px 6px;\n border-radius: 10px;\n font-size: 11px;\n font-weight: bold;\n min-width: 18px;\n text-align: center;\n }\n\n .active-tasks-dropdown[_ngcontent-%COMP%] {\n position: absolute;\n top: calc(100% + 8px);\n right: 0;\n background: white;\n border: 1px solid #E5E7EB;\n border-radius: 8px;\n box-shadow: 0 4px 12px rgba(0,0,0,0.15);\n z-index: 1000;\n min-width: 400px;\n max-width: 500px;\n }\n\n .dropdown-header[_ngcontent-%COMP%] {\n padding: 12px 16px;\n border-bottom: 1px solid #E5E7EB;\n display: flex;\n justify-content: space-between;\n align-items: center;\n }\n\n .header-left[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n font-weight: 600;\n color: #111827;\n }\n\n .header-left[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--accent, #1e40af);\n }\n\n .close-btn[_ngcontent-%COMP%] {\n background: none;\n border: none;\n color: #6B7280;\n cursor: pointer;\n font-size: 18px;\n padding: 0;\n width: 24px;\n height: 24px;\n display: flex;\n align-items: center;\n justify-content: center;\n border-radius: 4px;\n }\n\n .close-btn[_ngcontent-%COMP%]:hover {\n background: #F3F4F6;\n color: #111827;\n }\n\n .dropdown-content[_ngcontent-%COMP%] {\n max-height: 500px;\n overflow-y: auto;\n }\n\n .section[_ngcontent-%COMP%] {\n padding: 12px;\n border-bottom: 1px solid #F3F4F6;\n }\n\n .section[_ngcontent-%COMP%]:last-child {\n border-bottom: none;\n }\n\n .section-header[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n font-size: 12px;\n font-weight: 600;\n color: #6B7280;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n margin-bottom: 12px;\n padding: 0 4px;\n }\n\n .section-header[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 11px;\n }\n\n .active-task-item[_ngcontent-%COMP%] {\n display: flex;\n gap: 12px;\n padding: 10px 12px;\n border-radius: 6px;\n background: #F9FAFB;\n border: 1px solid #E5E7EB;\n margin-bottom: 8px;\n }\n\n .active-task-item[_ngcontent-%COMP%]:last-child {\n margin-bottom: 0;\n }\n\n .task-status-indicator[_ngcontent-%COMP%] {\n width: 4px;\n border-radius: 2px;\n flex-shrink: 0;\n }\n\n .task-status-indicator.active[_ngcontent-%COMP%] {\n background: #3B82F6;\n animation: _ngcontent-%COMP%_pulse 2s ease-in-out infinite;\n }\n\n @keyframes _ngcontent-%COMP%_pulse {\n 0%, 100% { opacity: 1; }\n 50% { opacity: 0.5; }\n }\n\n .task-content[_ngcontent-%COMP%] {\n flex: 1;\n min-width: 0;\n display: flex;\n flex-direction: column;\n gap: 4px;\n }\n\n .task-title[_ngcontent-%COMP%] {\n font-size: 14px;\n font-weight: 600;\n color: #111827;\n display: flex;\n align-items: center;\n gap: 6px;\n }\n\n .task-title[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: #3B82F6;\n font-size: 12px;\n }\n\n .task-status-text[_ngcontent-%COMP%] {\n font-size: 12px;\n color: #6B7280;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n }\n\n .task-elapsed[_ngcontent-%COMP%] {\n font-size: 11px;\n color: #3B82F6;\n font-weight: 600;\n }\n\n .no-tasks[_ngcontent-%COMP%] {\n padding: 40px 16px;\n text-align: center;\n color: #9CA3AF;\n }\n\n .no-tasks[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 32px;\n margin-bottom: 8px;\n opacity: 0.5;\n }\n\n .no-tasks[_ngcontent-%COMP%] p[_ngcontent-%COMP%] {\n margin: 0;\n font-size: 14px;\n }\n\n mj-task-widget[_ngcontent-%COMP%] {\n display: block;\n margin-bottom: 8px;\n }\n\n mj-task-widget[_ngcontent-%COMP%]:last-child {\n margin-bottom: 0;\n }"] });
|
|
196
272
|
}
|
|
197
273
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(TasksDropdownComponent, [{
|
|
198
274
|
type: Component,
|
|
@@ -202,53 +278,73 @@ export class TasksDropdownComponent {
|
|
|
202
278
|
class="active-tasks-btn"
|
|
203
279
|
(click)="toggleDropdown()"
|
|
204
280
|
[class.active]="isOpen"
|
|
205
|
-
title="View
|
|
281
|
+
title="View tasks">
|
|
206
282
|
<i class="fas fa-tasks"></i>
|
|
207
283
|
<span>Tasks</span>
|
|
208
|
-
<span class="task-count-badge" *ngIf="
|
|
284
|
+
<span class="task-count-badge" *ngIf="totalTaskCount > 0">{{ totalTaskCount }}</span>
|
|
209
285
|
</button>
|
|
210
286
|
|
|
211
287
|
<div class="active-tasks-dropdown" *ngIf="isOpen">
|
|
212
288
|
<div class="dropdown-header">
|
|
213
289
|
<div class="header-left">
|
|
214
290
|
<i class="fas fa-tasks"></i>
|
|
215
|
-
<span>
|
|
291
|
+
<span>Tasks</span>
|
|
216
292
|
</div>
|
|
217
293
|
<button class="close-btn" (click)="closeDropdown()">
|
|
218
294
|
<i class="fas fa-times"></i>
|
|
219
295
|
</button>
|
|
220
296
|
</div>
|
|
297
|
+
|
|
221
298
|
<div class="dropdown-content">
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
<
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
<div class="task-
|
|
229
|
-
<div class="task-
|
|
230
|
-
<div class="task-
|
|
231
|
-
<
|
|
232
|
-
<i class="fas fa-chart-line"></i>
|
|
233
|
-
{{ task.PercentComplete }}%
|
|
234
|
-
</span>
|
|
235
|
-
<span class="task-assigned" *ngIf="task.User">
|
|
236
|
-
<i class="fas fa-user"></i>
|
|
237
|
-
{{ task.User }}
|
|
238
|
-
</span>
|
|
239
|
-
<span class="task-assigned" *ngIf="task.Agent">
|
|
299
|
+
<!-- Active Running Tasks Section -->
|
|
300
|
+
<div class="section" *ngIf="activeTasks.length > 0">
|
|
301
|
+
<div class="section-header">
|
|
302
|
+
<i class="fas fa-circle-notch fa-spin"></i>
|
|
303
|
+
<span>Active ({{ activeTasks.length }})</span>
|
|
304
|
+
</div>
|
|
305
|
+
<div class="active-task-item" *ngFor="let task of activeTasks">
|
|
306
|
+
<div class="task-status-indicator active"></div>
|
|
307
|
+
<div class="task-content">
|
|
308
|
+
<div class="task-title">
|
|
240
309
|
<i class="fas fa-robot"></i>
|
|
241
|
-
{{ task.
|
|
242
|
-
</
|
|
310
|
+
{{ task.agentName }}
|
|
311
|
+
</div>
|
|
312
|
+
<div class="task-status-text">{{ getTrimmedStatus(task.status) }}</div>
|
|
313
|
+
<div class="task-elapsed">{{ getElapsedTime(task) }}</div>
|
|
243
314
|
</div>
|
|
244
315
|
</div>
|
|
245
316
|
</div>
|
|
317
|
+
|
|
318
|
+
<!-- Database Tasks Section -->
|
|
319
|
+
<div class="section" *ngIf="dbTasks.length > 0">
|
|
320
|
+
<div class="section-header">
|
|
321
|
+
<i class="fas fa-list-check"></i>
|
|
322
|
+
<span>In Progress ({{ dbTasks.length }})</span>
|
|
323
|
+
</div>
|
|
324
|
+
<mj-task-widget
|
|
325
|
+
*ngFor="let task of dbTasks"
|
|
326
|
+
[task]="task"
|
|
327
|
+
[compact]="true"
|
|
328
|
+
[clickable]="true"
|
|
329
|
+
[showProgress]="true"
|
|
330
|
+
[showDuration]="false"
|
|
331
|
+
(taskClick)="onTaskClick($event)">
|
|
332
|
+
</mj-task-widget>
|
|
333
|
+
</div>
|
|
334
|
+
|
|
335
|
+
<!-- No Tasks State -->
|
|
336
|
+
<div *ngIf="activeTasks.length === 0 && dbTasks.length === 0" class="no-tasks">
|
|
337
|
+
<i class="fas fa-tasks"></i>
|
|
338
|
+
<p>No active tasks</p>
|
|
339
|
+
</div>
|
|
246
340
|
</div>
|
|
247
341
|
</div>
|
|
248
342
|
</div>
|
|
249
|
-
`, styles: ["\n .tasks-dropdown-container {\n position: relative;\n }\n\n .active-tasks-btn {\n background: var(--gray-700, #374151);\n color: white;\n padding: 6px 12px;\n border-radius: 6px;\n font-size: 13px;\n display: flex;\n align-items: center;\n gap: 6px;\n border: 1px solid #E5E7EB;\n cursor: pointer;\n transition: all 150ms ease;\n }\n\n .active-tasks-btn:hover {\n background: var(--gray-600, #4B5563);\n }\n\n .active-tasks-btn.active {\n background: var(--navy, #1e40af);\n }\n\n .task-count-badge {\n background: var(--navy, #1e40af);\n color: white;\n padding: 2px 6px;\n border-radius: 10px;\n font-size: 11px;\n font-weight: bold;\n min-width: 18px;\n text-align: center;\n }\n\n .active-tasks-dropdown {\n position: absolute;\n top: calc(100% + 8px);\n right: 0;\n background: white;\n border: 1px solid #E5E7EB;\n border-radius: 8px;\n box-shadow: 0 4px 12px rgba(0,0,0,0.15);\n z-index: 1000;\n min-width: 400px;\n max-width: 500px;\n }\n\n .dropdown-header {\n padding: 12px 16px;\n border-bottom: 1px solid #E5E7EB;\n display: flex;\n justify-content: space-between;\n align-items: center;\n }\n\n .header-left {\n display: flex;\n align-items: center;\n gap: 8px;\n font-weight: 600;\n color: #111827;\n }\n\n .header-left i {\n color: var(--accent, #1e40af);\n }\n\n .close-btn {\n background: none;\n border: none;\n color: #6B7280;\n cursor: pointer;\n font-size: 18px;\n padding: 0;\n width: 24px;\n height: 24px;\n display: flex;\n align-items: center;\n justify-content: center;\n border-radius: 4px;\n }\n\n .close-btn:hover {\n background: #F3F4F6;\n color: #111827;\n }\n\n .dropdown-content {\n max-height:
|
|
250
|
-
}], () => [{ type: i1.ConversationStateService }], { currentUser: [{
|
|
343
|
+
`, styles: ["\n .tasks-dropdown-container {\n position: relative;\n }\n\n .active-tasks-btn {\n background: var(--gray-700, #374151);\n color: white;\n padding: 6px 12px;\n border-radius: 6px;\n font-size: 13px;\n display: flex;\n align-items: center;\n gap: 6px;\n border: 1px solid #E5E7EB;\n cursor: pointer;\n transition: all 150ms ease;\n }\n\n .active-tasks-btn:hover {\n background: var(--gray-600, #4B5563);\n }\n\n .active-tasks-btn.active {\n background: var(--navy, #1e40af);\n }\n\n .task-count-badge {\n background: var(--navy, #1e40af);\n color: white;\n padding: 2px 6px;\n border-radius: 10px;\n font-size: 11px;\n font-weight: bold;\n min-width: 18px;\n text-align: center;\n }\n\n .active-tasks-dropdown {\n position: absolute;\n top: calc(100% + 8px);\n right: 0;\n background: white;\n border: 1px solid #E5E7EB;\n border-radius: 8px;\n box-shadow: 0 4px 12px rgba(0,0,0,0.15);\n z-index: 1000;\n min-width: 400px;\n max-width: 500px;\n }\n\n .dropdown-header {\n padding: 12px 16px;\n border-bottom: 1px solid #E5E7EB;\n display: flex;\n justify-content: space-between;\n align-items: center;\n }\n\n .header-left {\n display: flex;\n align-items: center;\n gap: 8px;\n font-weight: 600;\n color: #111827;\n }\n\n .header-left i {\n color: var(--accent, #1e40af);\n }\n\n .close-btn {\n background: none;\n border: none;\n color: #6B7280;\n cursor: pointer;\n font-size: 18px;\n padding: 0;\n width: 24px;\n height: 24px;\n display: flex;\n align-items: center;\n justify-content: center;\n border-radius: 4px;\n }\n\n .close-btn:hover {\n background: #F3F4F6;\n color: #111827;\n }\n\n .dropdown-content {\n max-height: 500px;\n overflow-y: auto;\n }\n\n .section {\n padding: 12px;\n border-bottom: 1px solid #F3F4F6;\n }\n\n .section:last-child {\n border-bottom: none;\n }\n\n .section-header {\n display: flex;\n align-items: center;\n gap: 8px;\n font-size: 12px;\n font-weight: 600;\n color: #6B7280;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n margin-bottom: 12px;\n padding: 0 4px;\n }\n\n .section-header i {\n font-size: 11px;\n }\n\n .active-task-item {\n display: flex;\n gap: 12px;\n padding: 10px 12px;\n border-radius: 6px;\n background: #F9FAFB;\n border: 1px solid #E5E7EB;\n margin-bottom: 8px;\n }\n\n .active-task-item:last-child {\n margin-bottom: 0;\n }\n\n .task-status-indicator {\n width: 4px;\n border-radius: 2px;\n flex-shrink: 0;\n }\n\n .task-status-indicator.active {\n background: #3B82F6;\n animation: pulse 2s ease-in-out infinite;\n }\n\n @keyframes pulse {\n 0%, 100% { opacity: 1; }\n 50% { opacity: 0.5; }\n }\n\n .task-content {\n flex: 1;\n min-width: 0;\n display: flex;\n flex-direction: column;\n gap: 4px;\n }\n\n .task-title {\n font-size: 14px;\n font-weight: 600;\n color: #111827;\n display: flex;\n align-items: center;\n gap: 6px;\n }\n\n .task-title i {\n color: #3B82F6;\n font-size: 12px;\n }\n\n .task-status-text {\n font-size: 12px;\n color: #6B7280;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n }\n\n .task-elapsed {\n font-size: 11px;\n color: #3B82F6;\n font-weight: 600;\n }\n\n .no-tasks {\n padding: 40px 16px;\n text-align: center;\n color: #9CA3AF;\n }\n\n .no-tasks i {\n font-size: 32px;\n margin-bottom: 8px;\n opacity: 0.5;\n }\n\n .no-tasks p {\n margin: 0;\n font-size: 14px;\n }\n\n mj-task-widget {\n display: block;\n margin-bottom: 8px;\n }\n\n mj-task-widget:last-child {\n margin-bottom: 0;\n }\n "] }]
|
|
344
|
+
}], () => [{ type: i1.ConversationStateService }, { type: i2.ActiveTasksService }], { currentUser: [{
|
|
251
345
|
type: Input
|
|
346
|
+
}], taskClicked: [{
|
|
347
|
+
type: Output
|
|
252
348
|
}] }); })();
|
|
253
|
-
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(TasksDropdownComponent, { className: "TasksDropdownComponent", filePath: "src/lib/components/tasks/tasks-dropdown.component.ts", lineNumber:
|
|
349
|
+
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(TasksDropdownComponent, { className: "TasksDropdownComponent", filePath: "src/lib/components/tasks/tasks-dropdown.component.ts", lineNumber: 301 }); })();
|
|
254
350
|
//# sourceMappingURL=tasks-dropdown.component.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tasks-dropdown.component.js","sourceRoot":"","sources":["../../../../src/lib/components/tasks/tasks-dropdown.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,KAAK,EAA8B,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"tasks-dropdown.component.js","sourceRoot":"","sources":["../../../../src/lib/components/tasks/tasks-dropdown.component.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,12 +1,14 @@
|
|
|
1
1
|
import { EventEmitter, OnInit, OnDestroy, ChangeDetectorRef } from '@angular/core';
|
|
2
2
|
import { ConversationDetailEntity } from '@memberjunction/core-entities';
|
|
3
3
|
import { UserInfo } from '@memberjunction/core';
|
|
4
|
+
import { DataCacheService } from '../../services/data-cache.service';
|
|
4
5
|
import * as i0 from "@angular/core";
|
|
5
6
|
/**
|
|
6
7
|
* Side panel component for displaying and managing threaded message replies
|
|
7
8
|
* Shows parent message at top with all replies in chronological order
|
|
8
9
|
*/
|
|
9
10
|
export declare class ThreadPanelComponent implements OnInit, OnDestroy {
|
|
11
|
+
private dataCache;
|
|
10
12
|
private cdRef;
|
|
11
13
|
parentMessageId: string;
|
|
12
14
|
conversationId: string;
|
|
@@ -20,7 +22,7 @@ export declare class ThreadPanelComponent implements OnInit, OnDestroy {
|
|
|
20
22
|
isSending: boolean;
|
|
21
23
|
errorMessage: string;
|
|
22
24
|
private destroy$;
|
|
23
|
-
constructor(cdRef: ChangeDetectorRef);
|
|
25
|
+
constructor(dataCache: DataCacheService, cdRef: ChangeDetectorRef);
|
|
24
26
|
ngOnInit(): Promise<void>;
|
|
25
27
|
ngOnDestroy(): void;
|
|
26
28
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"thread-panel.component.d.ts","sourceRoot":"","sources":["../../../../src/lib/components/thread/thread-panel.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAA4B,YAAY,EAAE,MAAM,EAAE,SAAS,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAC7G,OAAO,EAAE,wBAAwB,EAAE,MAAM,+BAA+B,CAAC;AACzE,OAAO,EAAE,QAAQ,EAAqB,MAAM,sBAAsB,CAAC;;
|
|
1
|
+
{"version":3,"file":"thread-panel.component.d.ts","sourceRoot":"","sources":["../../../../src/lib/components/thread/thread-panel.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAA4B,YAAY,EAAE,MAAM,EAAE,SAAS,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAC7G,OAAO,EAAE,wBAAwB,EAAE,MAAM,+BAA+B,CAAC;AACzE,OAAO,EAAE,QAAQ,EAAqB,MAAM,sBAAsB,CAAC;AACnE,OAAO,EAAE,gBAAgB,EAAE,MAAM,mCAAmC,CAAC;;AAIrE;;;GAGG;AACH,qBAKa,oBAAqB,YAAW,MAAM,EAAE,SAAS;IAkB1D,OAAO,CAAC,SAAS;IACjB,OAAO,CAAC,KAAK;IAlBN,eAAe,EAAG,MAAM,CAAC;IACzB,cAAc,EAAG,MAAM,CAAC;IACxB,WAAW,EAAG,QAAQ,CAAC;IAEtB,MAAM,qBAA4B;IAClC,UAAU,yCAAgD;IAE7D,aAAa,EAAE,wBAAwB,GAAG,IAAI,CAAQ;IACtD,OAAO,EAAE,wBAAwB,EAAE,CAAM;IACzC,SAAS,EAAE,MAAM,CAAM;IACvB,SAAS,EAAE,OAAO,CAAS;IAC3B,SAAS,EAAE,OAAO,CAAS;IAC3B,YAAY,EAAE,MAAM,CAAM;IAEjC,OAAO,CAAC,QAAQ,CAAuB;gBAG7B,SAAS,EAAE,gBAAgB,EAC3B,KAAK,EAAE,iBAAiB;IAG5B,QAAQ;IAId,WAAW;IAKX;;OAEG;YACW,cAAc;IA2B5B;;OAEG;YACW,WAAW;IAyBzB;;OAEG;IACG,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC;IA2ClC;;OAEG;IACH,OAAO,IAAI,IAAI;IAIf;;OAEG;IACH,cAAc,CAAC,OAAO,EAAE,wBAAwB,GAAG,MAAM;IAIzD;;OAEG;IACH,cAAc,CAAC,OAAO,EAAE,wBAAwB,GAAG,MAAM;IAkBzD;;OAEG;IACH,aAAa,CAAC,OAAO,EAAE,wBAAwB,GAAG,MAAM;IAKxD;;OAEG;IACH,IAAI,YAAY,IAAI,OAAO,CAE1B;IAED;;OAEG;IACH,IAAI,cAAc,IAAI,MAAM,CAG3B;yCA/LU,oBAAoB;2CAApB,oBAAoB;CAgMhC"}
|