@memberjunction/ng-tasks 3.4.0 → 4.1.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/.turbo/turbo-build.log +1 -1
- package/CHANGELOG.md +38 -0
- package/README.md +85 -198
- package/dist/lib/components/gantt-task-viewer.component.d.ts.map +1 -1
- package/dist/lib/components/gantt-task-viewer.component.js +51 -45
- package/dist/lib/components/gantt-task-viewer.component.js.map +1 -1
- package/dist/lib/components/simple-task-viewer.component.d.ts.map +1 -1
- package/dist/lib/components/simple-task-viewer.component.js +114 -97
- package/dist/lib/components/simple-task-viewer.component.js.map +1 -1
- package/dist/lib/components/task-detail-panel.component.d.ts.map +1 -1
- package/dist/lib/components/task-detail-panel.component.js +150 -130
- package/dist/lib/components/task-detail-panel.component.js.map +1 -1
- package/dist/lib/components/task.component.d.ts.map +1 -1
- package/dist/lib/components/task.component.js +86 -77
- package/dist/lib/components/task.component.js.map +1 -1
- package/dist/lib/ng-tasks.module.js +1 -2
- package/dist/lib/ng-tasks.module.js.map +1 -1
- package/package.json +13 -13
- package/src/lib/components/gantt-task-viewer.component.ts +28 -22
- package/src/lib/components/simple-task-viewer.component.ts +70 -56
- package/src/lib/components/task-detail-panel.component.ts +68 -52
- package/src/lib/components/task.component.ts +53 -44
- package/tsconfig.json +6 -24
|
@@ -1,30 +1,28 @@
|
|
|
1
1
|
import { Component, Input, Output, EventEmitter } from '@angular/core';
|
|
2
|
-
import { CommonModule } from '@angular/common';
|
|
3
2
|
import { AIEngineBase } from '@memberjunction/ai-engine-base';
|
|
4
3
|
import * as i0 from "@angular/core";
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
i0.ɵɵelementStart(0, "div", 6)(1, "label");
|
|
4
|
+
function TaskDetailPanelComponent_Conditional_7_Template(rf, ctx) { if (rf & 1) {
|
|
5
|
+
i0.ɵɵdomElementStart(0, "div", 5)(1, "label");
|
|
8
6
|
i0.ɵɵtext(2, "Description");
|
|
9
|
-
i0.ɵɵ
|
|
10
|
-
i0.ɵɵ
|
|
7
|
+
i0.ɵɵdomElementEnd();
|
|
8
|
+
i0.ɵɵdomElementStart(3, "p");
|
|
11
9
|
i0.ɵɵtext(4);
|
|
12
|
-
i0.ɵɵ
|
|
10
|
+
i0.ɵɵdomElementEnd()();
|
|
13
11
|
} if (rf & 2) {
|
|
14
12
|
const ctx_r0 = i0.ɵɵnextContext();
|
|
15
13
|
i0.ɵɵadvance(4);
|
|
16
14
|
i0.ɵɵtextInterpolate(ctx_r0.task.Description);
|
|
17
15
|
} }
|
|
18
|
-
function
|
|
19
|
-
i0.ɵɵ
|
|
16
|
+
function TaskDetailPanelComponent_Conditional_13_Template(rf, ctx) { if (rf & 1) {
|
|
17
|
+
i0.ɵɵdomElementStart(0, "div", 5)(1, "label");
|
|
20
18
|
i0.ɵɵtext(2, "Progress");
|
|
21
|
-
i0.ɵɵ
|
|
22
|
-
i0.ɵɵ
|
|
23
|
-
i0.ɵɵ
|
|
24
|
-
i0.ɵɵ
|
|
25
|
-
i0.ɵɵ
|
|
19
|
+
i0.ɵɵdomElementEnd();
|
|
20
|
+
i0.ɵɵdomElementStart(3, "div", 6)(4, "div", 7);
|
|
21
|
+
i0.ɵɵdomElement(5, "div", 8);
|
|
22
|
+
i0.ɵɵdomElementEnd();
|
|
23
|
+
i0.ɵɵdomElementStart(6, "span");
|
|
26
24
|
i0.ɵɵtext(7);
|
|
27
|
-
i0.ɵɵ
|
|
25
|
+
i0.ɵɵdomElementEnd()()();
|
|
28
26
|
} if (rf & 2) {
|
|
29
27
|
const ctx_r0 = i0.ɵɵnextContext();
|
|
30
28
|
i0.ɵɵadvance(5);
|
|
@@ -32,67 +30,67 @@ function TaskDetailPanelComponent_div_13_Template(rf, ctx) { if (rf & 1) {
|
|
|
32
30
|
i0.ɵɵadvance(2);
|
|
33
31
|
i0.ɵɵtextInterpolate1("", ctx_r0.task.PercentComplete, "%");
|
|
34
32
|
} }
|
|
35
|
-
function
|
|
36
|
-
i0.ɵɵ
|
|
33
|
+
function TaskDetailPanelComponent_Conditional_14_Template(rf, ctx) { if (rf & 1) {
|
|
34
|
+
i0.ɵɵdomElementStart(0, "div", 5)(1, "label");
|
|
37
35
|
i0.ɵɵtext(2, "Started");
|
|
38
|
-
i0.ɵɵ
|
|
39
|
-
i0.ɵɵ
|
|
36
|
+
i0.ɵɵdomElementEnd();
|
|
37
|
+
i0.ɵɵdomElementStart(3, "p");
|
|
40
38
|
i0.ɵɵtext(4);
|
|
41
|
-
i0.ɵɵ
|
|
39
|
+
i0.ɵɵdomElementEnd()();
|
|
42
40
|
} if (rf & 2) {
|
|
43
41
|
const ctx_r0 = i0.ɵɵnextContext();
|
|
44
42
|
i0.ɵɵadvance(4);
|
|
45
43
|
i0.ɵɵtextInterpolate(ctx_r0.formatDateTime(ctx_r0.task.StartedAt));
|
|
46
44
|
} }
|
|
47
|
-
function
|
|
48
|
-
i0.ɵɵ
|
|
45
|
+
function TaskDetailPanelComponent_Conditional_15_Template(rf, ctx) { if (rf & 1) {
|
|
46
|
+
i0.ɵɵdomElementStart(0, "div", 5)(1, "label");
|
|
49
47
|
i0.ɵɵtext(2, "Due");
|
|
50
|
-
i0.ɵɵ
|
|
51
|
-
i0.ɵɵ
|
|
48
|
+
i0.ɵɵdomElementEnd();
|
|
49
|
+
i0.ɵɵdomElementStart(3, "p");
|
|
52
50
|
i0.ɵɵtext(4);
|
|
53
|
-
i0.ɵɵ
|
|
51
|
+
i0.ɵɵdomElementEnd()();
|
|
54
52
|
} if (rf & 2) {
|
|
55
53
|
const ctx_r0 = i0.ɵɵnextContext();
|
|
56
54
|
i0.ɵɵadvance(4);
|
|
57
55
|
i0.ɵɵtextInterpolate(ctx_r0.formatDateTime(ctx_r0.task.DueAt));
|
|
58
56
|
} }
|
|
59
|
-
function
|
|
60
|
-
i0.ɵɵ
|
|
57
|
+
function TaskDetailPanelComponent_Conditional_16_Template(rf, ctx) { if (rf & 1) {
|
|
58
|
+
i0.ɵɵdomElementStart(0, "div", 5)(1, "label");
|
|
61
59
|
i0.ɵɵtext(2, "Completed");
|
|
62
|
-
i0.ɵɵ
|
|
63
|
-
i0.ɵɵ
|
|
60
|
+
i0.ɵɵdomElementEnd();
|
|
61
|
+
i0.ɵɵdomElementStart(3, "p");
|
|
64
62
|
i0.ɵɵtext(4);
|
|
65
|
-
i0.ɵɵ
|
|
63
|
+
i0.ɵɵdomElementEnd()();
|
|
66
64
|
} if (rf & 2) {
|
|
67
65
|
const ctx_r0 = i0.ɵɵnextContext();
|
|
68
66
|
i0.ɵɵadvance(4);
|
|
69
67
|
i0.ɵɵtextInterpolate(ctx_r0.formatDateTime(ctx_r0.task.CompletedAt));
|
|
70
68
|
} }
|
|
71
|
-
function
|
|
72
|
-
i0.ɵɵ
|
|
69
|
+
function TaskDetailPanelComponent_Conditional_17_Template(rf, ctx) { if (rf & 1) {
|
|
70
|
+
i0.ɵɵdomElementStart(0, "div", 5)(1, "label");
|
|
73
71
|
i0.ɵɵtext(2, "Assigned User");
|
|
74
|
-
i0.ɵɵ
|
|
75
|
-
i0.ɵɵ
|
|
72
|
+
i0.ɵɵdomElementEnd();
|
|
73
|
+
i0.ɵɵdomElementStart(3, "p");
|
|
76
74
|
i0.ɵɵtext(4);
|
|
77
|
-
i0.ɵɵ
|
|
75
|
+
i0.ɵɵdomElementEnd()();
|
|
78
76
|
} if (rf & 2) {
|
|
79
77
|
const ctx_r0 = i0.ɵɵnextContext();
|
|
80
78
|
i0.ɵɵadvance(4);
|
|
81
79
|
i0.ɵɵtextInterpolate(ctx_r0.task.User);
|
|
82
80
|
} }
|
|
83
|
-
function
|
|
81
|
+
function TaskDetailPanelComponent_Conditional_18_Template(rf, ctx) { if (rf & 1) {
|
|
84
82
|
const _r2 = i0.ɵɵgetCurrentView();
|
|
85
|
-
i0.ɵɵ
|
|
83
|
+
i0.ɵɵdomElementStart(0, "div", 5)(1, "label");
|
|
86
84
|
i0.ɵɵtext(2, "Agent");
|
|
87
|
-
i0.ɵɵ
|
|
88
|
-
i0.ɵɵ
|
|
89
|
-
i0.ɵɵ
|
|
90
|
-
i0.ɵɵ
|
|
91
|
-
i0.ɵɵ
|
|
85
|
+
i0.ɵɵdomElementEnd();
|
|
86
|
+
i0.ɵɵdomElementStart(3, "div", 9);
|
|
87
|
+
i0.ɵɵdomListener("click", function TaskDetailPanelComponent_Conditional_18_Template_div_click_3_listener() { i0.ɵɵrestoreView(_r2); const ctx_r0 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r0.openAgent()); });
|
|
88
|
+
i0.ɵɵdomElement(4, "i", 10);
|
|
89
|
+
i0.ɵɵdomElementStart(5, "span", 11);
|
|
92
90
|
i0.ɵɵtext(6);
|
|
93
|
-
i0.ɵɵ
|
|
94
|
-
i0.ɵɵ
|
|
95
|
-
i0.ɵɵ
|
|
91
|
+
i0.ɵɵdomElementEnd();
|
|
92
|
+
i0.ɵɵdomElement(7, "i", 12);
|
|
93
|
+
i0.ɵɵdomElementEnd()();
|
|
96
94
|
} if (rf & 2) {
|
|
97
95
|
const ctx_r0 = i0.ɵɵnextContext();
|
|
98
96
|
i0.ɵɵadvance(4);
|
|
@@ -100,18 +98,18 @@ function TaskDetailPanelComponent_div_18_Template(rf, ctx) { if (rf & 1) {
|
|
|
100
98
|
i0.ɵɵadvance(2);
|
|
101
99
|
i0.ɵɵtextInterpolate(ctx_r0.agent.Name);
|
|
102
100
|
} }
|
|
103
|
-
function
|
|
101
|
+
function TaskDetailPanelComponent_Conditional_19_Template(rf, ctx) { if (rf & 1) {
|
|
104
102
|
const _r3 = i0.ɵɵgetCurrentView();
|
|
105
|
-
i0.ɵɵ
|
|
103
|
+
i0.ɵɵdomElementStart(0, "div", 5)(1, "label");
|
|
106
104
|
i0.ɵɵtext(2, "Agent Run");
|
|
107
|
-
i0.ɵɵ
|
|
108
|
-
i0.ɵɵ
|
|
109
|
-
i0.ɵɵ
|
|
110
|
-
i0.ɵɵ
|
|
105
|
+
i0.ɵɵdomElementEnd();
|
|
106
|
+
i0.ɵɵdomElementStart(3, "div", 13);
|
|
107
|
+
i0.ɵɵdomListener("click", function TaskDetailPanelComponent_Conditional_19_Template_div_click_3_listener() { i0.ɵɵrestoreView(_r3); const ctx_r0 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r0.openAgentRun()); });
|
|
108
|
+
i0.ɵɵdomElementStart(4, "span");
|
|
111
109
|
i0.ɵɵtext(5, "View Run Details");
|
|
112
|
-
i0.ɵɵ
|
|
113
|
-
i0.ɵɵ
|
|
114
|
-
i0.ɵɵ
|
|
110
|
+
i0.ɵɵdomElementEnd();
|
|
111
|
+
i0.ɵɵdomElement(6, "i", 12);
|
|
112
|
+
i0.ɵɵdomElementEnd()();
|
|
115
113
|
} }
|
|
116
114
|
/**
|
|
117
115
|
* Task detail panel showing task information, agent details, and agent run
|
|
@@ -167,50 +165,56 @@ export class TaskDetailPanelComponent {
|
|
|
167
165
|
}
|
|
168
166
|
}
|
|
169
167
|
static ɵfac = function TaskDetailPanelComponent_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || TaskDetailPanelComponent)(); };
|
|
170
|
-
static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: TaskDetailPanelComponent, selectors: [["mj-task-detail-panel"]], inputs: { task: "task", agentRunId: "agentRunId" }, outputs: { closePanel: "closePanel", openEntityRecord: "openEntityRecord" },
|
|
171
|
-
i0.ɵɵ
|
|
168
|
+
static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: TaskDetailPanelComponent, selectors: [["mj-task-detail-panel"]], inputs: { task: "task", agentRunId: "agentRunId" }, outputs: { closePanel: "closePanel", openEntityRecord: "openEntityRecord" }, features: [i0.ɵɵNgOnChangesFeature], decls: 20, vars: 10, consts: [[1, "task-detail-panel"], [1, "detail-header"], [1, "close-detail-btn", 3, "click"], [1, "fas", "fa-times"], [1, "detail-content"], [1, "detail-field"], [1, "detail-progress"], [1, "progress-bar-detail"], [1, "progress-fill-detail"], [1, "agent-info", 3, "click"], [1, "agent-icon"], [1, "agent-name"], [1, "fas", "fa-external-link-alt", "link-icon"], [1, "agent-run-link", 3, "click"]], template: function TaskDetailPanelComponent_Template(rf, ctx) { if (rf & 1) {
|
|
169
|
+
i0.ɵɵdomElementStart(0, "div", 0)(1, "div", 1)(2, "h3");
|
|
172
170
|
i0.ɵɵtext(3);
|
|
173
|
-
i0.ɵɵ
|
|
174
|
-
i0.ɵɵ
|
|
175
|
-
i0.ɵɵ
|
|
176
|
-
i0.ɵɵ
|
|
177
|
-
i0.ɵɵ
|
|
178
|
-
i0.ɵɵ
|
|
179
|
-
i0.ɵɵ
|
|
180
|
-
i0.ɵɵ
|
|
171
|
+
i0.ɵɵdomElementEnd();
|
|
172
|
+
i0.ɵɵdomElementStart(4, "button", 2);
|
|
173
|
+
i0.ɵɵdomListener("click", function TaskDetailPanelComponent_Template_button_click_4_listener() { return ctx.closePanel.emit(); });
|
|
174
|
+
i0.ɵɵdomElement(5, "i", 3);
|
|
175
|
+
i0.ɵɵdomElementEnd()();
|
|
176
|
+
i0.ɵɵdomElementStart(6, "div", 4);
|
|
177
|
+
i0.ɵɵconditionalCreate(7, TaskDetailPanelComponent_Conditional_7_Template, 5, 1, "div", 5);
|
|
178
|
+
i0.ɵɵdomElementStart(8, "div", 5)(9, "label");
|
|
181
179
|
i0.ɵɵtext(10, "Status");
|
|
182
|
-
i0.ɵɵ
|
|
183
|
-
i0.ɵɵ
|
|
180
|
+
i0.ɵɵdomElementEnd();
|
|
181
|
+
i0.ɵɵdomElementStart(11, "p");
|
|
184
182
|
i0.ɵɵtext(12);
|
|
185
|
-
i0.ɵɵ
|
|
186
|
-
i0.ɵɵ
|
|
187
|
-
i0.ɵɵ
|
|
183
|
+
i0.ɵɵdomElementEnd()();
|
|
184
|
+
i0.ɵɵconditionalCreate(13, TaskDetailPanelComponent_Conditional_13_Template, 8, 3, "div", 5);
|
|
185
|
+
i0.ɵɵconditionalCreate(14, TaskDetailPanelComponent_Conditional_14_Template, 5, 1, "div", 5);
|
|
186
|
+
i0.ɵɵconditionalCreate(15, TaskDetailPanelComponent_Conditional_15_Template, 5, 1, "div", 5);
|
|
187
|
+
i0.ɵɵconditionalCreate(16, TaskDetailPanelComponent_Conditional_16_Template, 5, 1, "div", 5);
|
|
188
|
+
i0.ɵɵconditionalCreate(17, TaskDetailPanelComponent_Conditional_17_Template, 5, 1, "div", 5);
|
|
189
|
+
i0.ɵɵconditionalCreate(18, TaskDetailPanelComponent_Conditional_18_Template, 8, 3, "div", 5);
|
|
190
|
+
i0.ɵɵconditionalCreate(19, TaskDetailPanelComponent_Conditional_19_Template, 7, 0, "div", 5);
|
|
191
|
+
i0.ɵɵdomElementEnd()();
|
|
188
192
|
} if (rf & 2) {
|
|
189
193
|
i0.ɵɵadvance(3);
|
|
190
194
|
i0.ɵɵtextInterpolate(ctx.task.Name);
|
|
191
195
|
i0.ɵɵadvance(4);
|
|
192
|
-
i0.ɵɵ
|
|
196
|
+
i0.ɵɵconditional(ctx.task.Description ? 7 : -1);
|
|
193
197
|
i0.ɵɵadvance(5);
|
|
194
198
|
i0.ɵɵtextInterpolate(ctx.task.Status);
|
|
195
199
|
i0.ɵɵadvance();
|
|
196
|
-
i0.ɵɵ
|
|
200
|
+
i0.ɵɵconditional(ctx.task.PercentComplete != null ? 13 : -1);
|
|
197
201
|
i0.ɵɵadvance();
|
|
198
|
-
i0.ɵɵ
|
|
202
|
+
i0.ɵɵconditional(ctx.task.StartedAt ? 14 : -1);
|
|
199
203
|
i0.ɵɵadvance();
|
|
200
|
-
i0.ɵɵ
|
|
204
|
+
i0.ɵɵconditional(ctx.task.DueAt ? 15 : -1);
|
|
201
205
|
i0.ɵɵadvance();
|
|
202
|
-
i0.ɵɵ
|
|
206
|
+
i0.ɵɵconditional(ctx.task.CompletedAt ? 16 : -1);
|
|
203
207
|
i0.ɵɵadvance();
|
|
204
|
-
i0.ɵɵ
|
|
208
|
+
i0.ɵɵconditional(ctx.task.User ? 17 : -1);
|
|
205
209
|
i0.ɵɵadvance();
|
|
206
|
-
i0.ɵɵ
|
|
210
|
+
i0.ɵɵconditional(ctx.agent ? 18 : -1);
|
|
207
211
|
i0.ɵɵadvance();
|
|
208
|
-
i0.ɵɵ
|
|
209
|
-
} },
|
|
212
|
+
i0.ɵɵconditional(ctx.agentRunId ? 19 : -1);
|
|
213
|
+
} }, styles: [".task-detail-panel[_ngcontent-%COMP%] {\n width: 100%;\n height: calc(100% - 45px);\n background: white;\n display: flex;\n flex-direction: column;\n overflow: hidden;\n }\n\n .detail-header[_ngcontent-%COMP%] {\n padding: 20px;\n border-bottom: 1px solid #E5E7EB;\n display: flex;\n justify-content: space-between;\n align-items: flex-start;\n background: #F9FAFB;\n flex-shrink: 0;\n }\n\n .detail-header[_ngcontent-%COMP%] h3[_ngcontent-%COMP%] {\n margin: 0;\n font-size: 18px;\n font-weight: 600;\n color: #111827;\n flex: 1;\n padding-right: 12px;\n }\n\n .close-detail-btn[_ngcontent-%COMP%] {\n background: none;\n border: none;\n color: #6B7280;\n cursor: pointer;\n padding: 4px;\n width: 28px;\n height: 28px;\n border-radius: 4px;\n display: flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n }\n\n .close-detail-btn[_ngcontent-%COMP%]:hover {\n background: #E5E7EB;\n color: #111827;\n }\n\n .detail-content[_ngcontent-%COMP%] {\n padding: 20px;\n flex: 1;\n min-height: 0;\n overflow-y: auto;\n }\n\n .detail-field[_ngcontent-%COMP%] {\n margin-bottom: 20px;\n }\n\n .detail-field[_ngcontent-%COMP%]:last-child {\n margin-bottom: 0;\n }\n\n .detail-field[_ngcontent-%COMP%] label[_ngcontent-%COMP%] {\n display: block;\n font-size: 12px;\n font-weight: 600;\n color: #6B7280;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n margin-bottom: 6px;\n }\n\n .detail-field[_ngcontent-%COMP%] p[_ngcontent-%COMP%] {\n margin: 0;\n font-size: 14px;\n color: #111827;\n line-height: 1.5;\n }\n\n .detail-progress[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 12px;\n }\n\n .progress-bar-detail[_ngcontent-%COMP%] {\n flex: 1;\n height: 8px;\n background: #E5E7EB;\n border-radius: 4px;\n overflow: hidden;\n }\n\n .progress-fill-detail[_ngcontent-%COMP%] {\n height: calc(100% - 69px);\n background: #3B82F6;\n transition: width 0.3s ease;\n }\n\n .detail-progress[_ngcontent-%COMP%] span[_ngcontent-%COMP%] {\n font-size: 13px;\n font-weight: 600;\n color: #6B7280;\n min-width: 40px;\n }\n\n .agent-info[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 10px;\n padding: 10px 12px;\n background: #F3F4F6;\n border-radius: 6px;\n cursor: pointer;\n transition: all 0.15s;\n }\n\n .agent-info[_ngcontent-%COMP%]:hover {\n background: #E5E7EB;\n }\n\n .agent-icon[_ngcontent-%COMP%] {\n font-size: 18px;\n color: #3B82F6;\n }\n\n .agent-name[_ngcontent-%COMP%] {\n flex: 1;\n font-size: 14px;\n font-weight: 500;\n color: #111827;\n }\n\n .link-icon[_ngcontent-%COMP%] {\n font-size: 12px;\n color: #6B7280;\n }\n\n .agent-run-link[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 10px 12px;\n background: #F3F4F6;\n border-radius: 6px;\n cursor: pointer;\n transition: all 0.15s;\n }\n\n .agent-run-link[_ngcontent-%COMP%]:hover {\n background: #E5E7EB;\n }\n\n .agent-run-link[_ngcontent-%COMP%] span[_ngcontent-%COMP%] {\n flex: 1;\n font-size: 14px;\n font-weight: 500;\n color: #111827;\n }"] });
|
|
210
214
|
}
|
|
211
215
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(TaskDetailPanelComponent, [{
|
|
212
216
|
type: Component,
|
|
213
|
-
args: [{ selector: 'mj-task-detail-panel', standalone: true, imports: [
|
|
217
|
+
args: [{ selector: 'mj-task-detail-panel', standalone: true, imports: [], template: `
|
|
214
218
|
<div class="task-detail-panel">
|
|
215
219
|
<div class="detail-header">
|
|
216
220
|
<h3>{{ task.Name }}</h3>
|
|
@@ -218,69 +222,85 @@ export class TaskDetailPanelComponent {
|
|
|
218
222
|
<i class="fas fa-times"></i>
|
|
219
223
|
</button>
|
|
220
224
|
</div>
|
|
221
|
-
|
|
225
|
+
|
|
222
226
|
<div class="detail-content">
|
|
223
|
-
|
|
224
|
-
<
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
227
|
+
@if (task.Description) {
|
|
228
|
+
<div class="detail-field">
|
|
229
|
+
<label>Description</label>
|
|
230
|
+
<p>{{ task.Description }}</p>
|
|
231
|
+
</div>
|
|
232
|
+
}
|
|
233
|
+
|
|
228
234
|
<div class="detail-field">
|
|
229
235
|
<label>Status</label>
|
|
230
236
|
<p>{{ task.Status }}</p>
|
|
231
237
|
</div>
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
<
|
|
235
|
-
|
|
236
|
-
<div class="progress
|
|
237
|
-
<div class="progress-
|
|
238
|
+
|
|
239
|
+
@if (task.PercentComplete != null) {
|
|
240
|
+
<div class="detail-field">
|
|
241
|
+
<label>Progress</label>
|
|
242
|
+
<div class="detail-progress">
|
|
243
|
+
<div class="progress-bar-detail">
|
|
244
|
+
<div class="progress-fill-detail" [style.width.%]="task.PercentComplete"></div>
|
|
245
|
+
</div>
|
|
246
|
+
<span>{{ task.PercentComplete }}%</span>
|
|
238
247
|
</div>
|
|
239
|
-
<span>{{ task.PercentComplete }}%</span>
|
|
240
248
|
</div>
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
<
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
249
|
+
}
|
|
250
|
+
|
|
251
|
+
@if (task.StartedAt) {
|
|
252
|
+
<div class="detail-field">
|
|
253
|
+
<label>Started</label>
|
|
254
|
+
<p>{{ formatDateTime(task.StartedAt) }}</p>
|
|
255
|
+
</div>
|
|
256
|
+
}
|
|
257
|
+
|
|
258
|
+
@if (task.DueAt) {
|
|
259
|
+
<div class="detail-field">
|
|
260
|
+
<label>Due</label>
|
|
261
|
+
<p>{{ formatDateTime(task.DueAt) }}</p>
|
|
262
|
+
</div>
|
|
263
|
+
}
|
|
264
|
+
|
|
265
|
+
@if (task.CompletedAt) {
|
|
266
|
+
<div class="detail-field">
|
|
267
|
+
<label>Completed</label>
|
|
268
|
+
<p>{{ formatDateTime(task.CompletedAt) }}</p>
|
|
269
|
+
</div>
|
|
270
|
+
}
|
|
271
|
+
|
|
272
|
+
@if (task.User) {
|
|
273
|
+
<div class="detail-field">
|
|
274
|
+
<label>Assigned User</label>
|
|
275
|
+
<p>{{ task.User }}</p>
|
|
276
|
+
</div>
|
|
277
|
+
}
|
|
278
|
+
|
|
263
279
|
<!-- Agent Information -->
|
|
264
|
-
|
|
265
|
-
<
|
|
266
|
-
|
|
267
|
-
<
|
|
268
|
-
|
|
269
|
-
|
|
280
|
+
@if (agent) {
|
|
281
|
+
<div class="detail-field">
|
|
282
|
+
<label>Agent</label>
|
|
283
|
+
<div class="agent-info" (click)="openAgent()">
|
|
284
|
+
<i [class]="'fas fa-' + ('robot')" class="agent-icon"></i>
|
|
285
|
+
<span class="agent-name">{{ agent.Name }}</span>
|
|
286
|
+
<i class="fas fa-external-link-alt link-icon"></i>
|
|
287
|
+
</div>
|
|
270
288
|
</div>
|
|
271
|
-
|
|
272
|
-
|
|
289
|
+
}
|
|
290
|
+
|
|
273
291
|
<!-- Agent Run Information -->
|
|
274
|
-
|
|
275
|
-
<
|
|
276
|
-
|
|
277
|
-
<
|
|
278
|
-
|
|
292
|
+
@if (agentRunId) {
|
|
293
|
+
<div class="detail-field">
|
|
294
|
+
<label>Agent Run</label>
|
|
295
|
+
<div class="agent-run-link" (click)="openAgentRun()">
|
|
296
|
+
<span>View Run Details</span>
|
|
297
|
+
<i class="fas fa-external-link-alt link-icon"></i>
|
|
298
|
+
</div>
|
|
279
299
|
</div>
|
|
280
|
-
|
|
300
|
+
}
|
|
281
301
|
</div>
|
|
282
302
|
</div>
|
|
283
|
-
|
|
303
|
+
`, styles: ["\n .task-detail-panel {\n width: 100%;\n height: calc(100% - 45px);\n background: white;\n display: flex;\n flex-direction: column;\n overflow: hidden;\n }\n\n .detail-header {\n padding: 20px;\n border-bottom: 1px solid #E5E7EB;\n display: flex;\n justify-content: space-between;\n align-items: flex-start;\n background: #F9FAFB;\n flex-shrink: 0;\n }\n\n .detail-header h3 {\n margin: 0;\n font-size: 18px;\n font-weight: 600;\n color: #111827;\n flex: 1;\n padding-right: 12px;\n }\n\n .close-detail-btn {\n background: none;\n border: none;\n color: #6B7280;\n cursor: pointer;\n padding: 4px;\n width: 28px;\n height: 28px;\n border-radius: 4px;\n display: flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n }\n\n .close-detail-btn:hover {\n background: #E5E7EB;\n color: #111827;\n }\n\n .detail-content {\n padding: 20px;\n flex: 1;\n min-height: 0;\n overflow-y: auto;\n }\n\n .detail-field {\n margin-bottom: 20px;\n }\n\n .detail-field:last-child {\n margin-bottom: 0;\n }\n\n .detail-field label {\n display: block;\n font-size: 12px;\n font-weight: 600;\n color: #6B7280;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n margin-bottom: 6px;\n }\n\n .detail-field p {\n margin: 0;\n font-size: 14px;\n color: #111827;\n line-height: 1.5;\n }\n\n .detail-progress {\n display: flex;\n align-items: center;\n gap: 12px;\n }\n\n .progress-bar-detail {\n flex: 1;\n height: 8px;\n background: #E5E7EB;\n border-radius: 4px;\n overflow: hidden;\n }\n\n .progress-fill-detail {\n height: calc(100% - 69px);\n background: #3B82F6;\n transition: width 0.3s ease;\n }\n\n .detail-progress span {\n font-size: 13px;\n font-weight: 600;\n color: #6B7280;\n min-width: 40px;\n }\n\n .agent-info {\n display: flex;\n align-items: center;\n gap: 10px;\n padding: 10px 12px;\n background: #F3F4F6;\n border-radius: 6px;\n cursor: pointer;\n transition: all 0.15s;\n }\n\n .agent-info:hover {\n background: #E5E7EB;\n }\n\n .agent-icon {\n font-size: 18px;\n color: #3B82F6;\n }\n\n .agent-name {\n flex: 1;\n font-size: 14px;\n font-weight: 500;\n color: #111827;\n }\n\n .link-icon {\n font-size: 12px;\n color: #6B7280;\n }\n\n .agent-run-link {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 10px 12px;\n background: #F3F4F6;\n border-radius: 6px;\n cursor: pointer;\n transition: all 0.15s;\n }\n\n .agent-run-link:hover {\n background: #E5E7EB;\n }\n\n .agent-run-link span {\n flex: 1;\n font-size: 14px;\n font-weight: 500;\n color: #111827;\n }\n "] }]
|
|
284
304
|
}], null, { task: [{
|
|
285
305
|
type: Input
|
|
286
306
|
}], agentRunId: [{
|
|
@@ -290,5 +310,5 @@ export class TaskDetailPanelComponent {
|
|
|
290
310
|
}], openEntityRecord: [{
|
|
291
311
|
type: Output
|
|
292
312
|
}] }); })();
|
|
293
|
-
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(TaskDetailPanelComponent, { className: "TaskDetailPanelComponent", filePath: "src/lib/components/task-detail-panel.component.ts", lineNumber:
|
|
313
|
+
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(TaskDetailPanelComponent, { className: "TaskDetailPanelComponent", filePath: "src/lib/components/task-detail-panel.component.ts", lineNumber: 265 }); })();
|
|
294
314
|
//# sourceMappingURL=task-detail-panel.component.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"task-detail-panel.component.js","sourceRoot":"","sources":["../../../src/lib/components/task-detail-panel.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE,YAAY,EAAqB,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"task-detail-panel.component.js","sourceRoot":"","sources":["../../../src/lib/components/task-detail-panel.component.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"task.component.d.ts","sourceRoot":"","sources":["../../../src/lib/components/task.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAA4B,YAAY,EAAE,MAAM,eAAe,CAAC;AAEvE,OAAO,EAAE,UAAU,EAAE,oBAAoB,EAAE,MAAM,+BAA+B,CAAC;AACjF,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;;AAI1D;;;GAGG;AACH,
|
|
1
|
+
{"version":3,"file":"task.component.d.ts","sourceRoot":"","sources":["../../../src/lib/components/task.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAA4B,YAAY,EAAE,MAAM,eAAe,CAAC;AAEvE,OAAO,EAAE,UAAU,EAAE,oBAAoB,EAAE,MAAM,+BAA+B,CAAC;AACjF,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;;AAI1D;;;GAGG;AACH,qBAiJa,aAAa;IACf,KAAK,EAAE,UAAU,EAAE,CAAM;IACzB,UAAU,CAAC,EAAE,UAAU,EAAE,CAAC;IAC1B,gBAAgB,CAAC,EAAE,oBAAoB,EAAE,CAAC;IAC1C,WAAW,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAClC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,OAAO,CAAQ;IAC3B,cAAc,EAAE,OAAO,CAAQ;IAC/B,QAAQ,EAAE,YAAY,CAAY;IAEjC,eAAe,6BAAoC;IACnD,WAAW,2BAAkC;IAC7C,gBAAgB;oBAAkC,MAAM;kBAAY,MAAM;OAAM;IAEnF,WAAW,CAAC,IAAI,EAAE,YAAY,GAAG,IAAI;IAKrC,aAAa,CAAC,IAAI,EAAE,UAAU,GAAG,IAAI;IAIrC,kBAAkB,CAAC,KAAK,EAAE;QAAE,UAAU,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI;yCAxBrE,aAAa;2CAAb,aAAa;CA2BzB"}
|