@memberjunction/ng-tasks 3.4.0 → 4.0.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.
@@ -1,5 +1,5 @@
1
1
  import { Component, Input, Output, EventEmitter, OnInit, OnChanges } from '@angular/core';
2
- import { CommonModule } from '@angular/common';
2
+
3
3
  import { TaskEntity } from '@memberjunction/core-entities';
4
4
  import { AIEngineBase } from '@memberjunction/ai-engine-base';
5
5
  import { AIAgentEntityExtended } from '@memberjunction/ai-core-plus';
@@ -11,7 +11,7 @@ import { AIAgentEntityExtended } from '@memberjunction/ai-core-plus';
11
11
  @Component({
12
12
  selector: 'mj-task-detail-panel',
13
13
  standalone: true,
14
- imports: [CommonModule],
14
+ imports: [],
15
15
  template: `
16
16
  <div class="task-detail-panel">
17
17
  <div class="detail-header">
@@ -20,69 +20,85 @@ import { AIAgentEntityExtended } from '@memberjunction/ai-core-plus';
20
20
  <i class="fas fa-times"></i>
21
21
  </button>
22
22
  </div>
23
-
23
+
24
24
  <div class="detail-content">
25
- <div class="detail-field" *ngIf="task.Description">
26
- <label>Description</label>
27
- <p>{{ task.Description }}</p>
28
- </div>
29
-
25
+ @if (task.Description) {
26
+ <div class="detail-field">
27
+ <label>Description</label>
28
+ <p>{{ task.Description }}</p>
29
+ </div>
30
+ }
31
+
30
32
  <div class="detail-field">
31
33
  <label>Status</label>
32
34
  <p>{{ task.Status }}</p>
33
35
  </div>
34
-
35
- <div class="detail-field" *ngIf="task.PercentComplete != null">
36
- <label>Progress</label>
37
- <div class="detail-progress">
38
- <div class="progress-bar-detail">
39
- <div class="progress-fill-detail" [style.width.%]="task.PercentComplete"></div>
36
+
37
+ @if (task.PercentComplete != null) {
38
+ <div class="detail-field">
39
+ <label>Progress</label>
40
+ <div class="detail-progress">
41
+ <div class="progress-bar-detail">
42
+ <div class="progress-fill-detail" [style.width.%]="task.PercentComplete"></div>
43
+ </div>
44
+ <span>{{ task.PercentComplete }}%</span>
40
45
  </div>
41
- <span>{{ task.PercentComplete }}%</span>
42
46
  </div>
43
- </div>
44
-
45
- <div class="detail-field" *ngIf="task.StartedAt">
46
- <label>Started</label>
47
- <p>{{ formatDateTime(task.StartedAt) }}</p>
48
- </div>
49
-
50
- <div class="detail-field" *ngIf="task.DueAt">
51
- <label>Due</label>
52
- <p>{{ formatDateTime(task.DueAt) }}</p>
53
- </div>
54
-
55
- <div class="detail-field" *ngIf="task.CompletedAt">
56
- <label>Completed</label>
57
- <p>{{ formatDateTime(task.CompletedAt) }}</p>
58
- </div>
59
-
60
- <div class="detail-field" *ngIf="task.User">
61
- <label>Assigned User</label>
62
- <p>{{ task.User }}</p>
63
- </div>
64
-
47
+ }
48
+
49
+ @if (task.StartedAt) {
50
+ <div class="detail-field">
51
+ <label>Started</label>
52
+ <p>{{ formatDateTime(task.StartedAt) }}</p>
53
+ </div>
54
+ }
55
+
56
+ @if (task.DueAt) {
57
+ <div class="detail-field">
58
+ <label>Due</label>
59
+ <p>{{ formatDateTime(task.DueAt) }}</p>
60
+ </div>
61
+ }
62
+
63
+ @if (task.CompletedAt) {
64
+ <div class="detail-field">
65
+ <label>Completed</label>
66
+ <p>{{ formatDateTime(task.CompletedAt) }}</p>
67
+ </div>
68
+ }
69
+
70
+ @if (task.User) {
71
+ <div class="detail-field">
72
+ <label>Assigned User</label>
73
+ <p>{{ task.User }}</p>
74
+ </div>
75
+ }
76
+
65
77
  <!-- Agent Information -->
66
- <div class="detail-field" *ngIf="agent">
67
- <label>Agent</label>
68
- <div class="agent-info" (click)="openAgent()">
69
- <i [class]="'fas fa-' + ('robot')" class="agent-icon"></i>
70
- <span class="agent-name">{{ agent.Name }}</span>
71
- <i class="fas fa-external-link-alt link-icon"></i>
78
+ @if (agent) {
79
+ <div class="detail-field">
80
+ <label>Agent</label>
81
+ <div class="agent-info" (click)="openAgent()">
82
+ <i [class]="'fas fa-' + ('robot')" class="agent-icon"></i>
83
+ <span class="agent-name">{{ agent.Name }}</span>
84
+ <i class="fas fa-external-link-alt link-icon"></i>
85
+ </div>
72
86
  </div>
73
- </div>
74
-
87
+ }
88
+
75
89
  <!-- Agent Run Information -->
76
- <div class="detail-field" *ngIf="agentRunId">
77
- <label>Agent Run</label>
78
- <div class="agent-run-link" (click)="openAgentRun()">
79
- <span>View Run Details</span>
80
- <i class="fas fa-external-link-alt link-icon"></i>
90
+ @if (agentRunId) {
91
+ <div class="detail-field">
92
+ <label>Agent Run</label>
93
+ <div class="agent-run-link" (click)="openAgentRun()">
94
+ <span>View Run Details</span>
95
+ <i class="fas fa-external-link-alt link-icon"></i>
96
+ </div>
81
97
  </div>
82
- </div>
98
+ }
83
99
  </div>
84
100
  </div>
85
- `,
101
+ `,
86
102
  styles: [`
87
103
  .task-detail-panel {
88
104
  width: 100%;
@@ -1,5 +1,5 @@
1
1
  import { Component, Input, Output, EventEmitter } from '@angular/core';
2
- import { CommonModule } from '@angular/common';
2
+
3
3
  import { TaskEntity, TaskDependencyEntity } from '@memberjunction/core-entities';
4
4
  import { TaskViewMode } from '../models/task-view.models';
5
5
  import { SimpleTaskViewerComponent } from './simple-task-viewer.component';
@@ -12,57 +12,66 @@ import { GanttTaskViewerComponent } from './gantt-task-viewer.component';
12
12
  @Component({
13
13
  selector: 'mj-task',
14
14
  standalone: true,
15
- imports: [CommonModule, SimpleTaskViewerComponent, GanttTaskViewerComponent],
15
+ imports: [SimpleTaskViewerComponent, GanttTaskViewerComponent],
16
16
  template: `
17
17
  <div class="task-component">
18
18
  <!-- Header with View Toggle -->
19
- <div class="task-header" *ngIf="showHeader">
20
- <div class="header-left">
21
- <h2 class="task-title" *ngIf="title">{{ title }}</h2>
22
- <p class="task-description" *ngIf="description">{{ description }}</p>
23
- </div>
24
-
25
- <div class="view-toggle" *ngIf="showViewToggle">
26
- <button
27
- class="toggle-btn"
28
- [class.active]="viewMode === 'gantt'"
29
- (click)="setViewMode('gantt')"
30
- title="Gantt Chart">
31
- <i class="fas fa-chart-gantt"></i>
32
- <span>Gantt</span>
33
- </button>
34
- <button
35
- class="toggle-btn"
36
- [class.active]="viewMode === 'simple'"
37
- (click)="setViewMode('simple')"
38
- title="List View">
39
- <i class="fas fa-list"></i>
40
- <span>List</span>
41
- </button>
19
+ @if (showHeader) {
20
+ <div class="task-header">
21
+ <div class="header-left">
22
+ @if (title) {
23
+ <h2 class="task-title">{{ title }}</h2>
24
+ }
25
+ @if (description) {
26
+ <p class="task-description">{{ description }}</p>
27
+ }
28
+ </div>
29
+ @if (showViewToggle) {
30
+ <div class="view-toggle">
31
+ <button
32
+ class="toggle-btn"
33
+ [class.active]="viewMode === 'gantt'"
34
+ (click)="setViewMode('gantt')"
35
+ title="Gantt Chart">
36
+ <i class="fas fa-chart-gantt"></i>
37
+ <span>Gantt</span>
38
+ </button>
39
+ <button
40
+ class="toggle-btn"
41
+ [class.active]="viewMode === 'simple'"
42
+ (click)="setViewMode('simple')"
43
+ title="List View">
44
+ <i class="fas fa-list"></i>
45
+ <span>List</span>
46
+ </button>
47
+ </div>
48
+ }
42
49
  </div>
43
- </div>
44
-
50
+ }
51
+
45
52
  <!-- Task Viewer (Simple or Gantt) -->
46
53
  <div class="task-viewer">
47
- <mj-simple-task-viewer
48
- *ngIf="viewMode === 'simple'"
49
- [tasks]="tasks"
50
- [agentRunMap]="agentRunMap"
51
- (taskClicked)="onTaskClicked($event)"
52
- (openEntityRecord)="onOpenEntityRecord($event)">
53
- </mj-simple-task-viewer>
54
-
55
- <mj-gantt-task-viewer
56
- *ngIf="viewMode === 'gantt'"
57
- [tasks]="ganttTasks || tasks"
58
- [taskDependencies]="taskDependencies || []"
59
- [agentRunMap]="agentRunMap"
60
- (taskClicked)="onTaskClicked($event)"
61
- (openEntityRecord)="onOpenEntityRecord($event)">
62
- </mj-gantt-task-viewer>
54
+ @if (viewMode === 'simple') {
55
+ <mj-simple-task-viewer
56
+ [tasks]="tasks"
57
+ [agentRunMap]="agentRunMap"
58
+ (taskClicked)="onTaskClicked($event)"
59
+ (openEntityRecord)="onOpenEntityRecord($event)">
60
+ </mj-simple-task-viewer>
61
+ }
62
+
63
+ @if (viewMode === 'gantt') {
64
+ <mj-gantt-task-viewer
65
+ [tasks]="ganttTasks || tasks"
66
+ [taskDependencies]="taskDependencies || []"
67
+ [agentRunMap]="agentRunMap"
68
+ (taskClicked)="onTaskClicked($event)"
69
+ (openEntityRecord)="onOpenEntityRecord($event)">
70
+ </mj-gantt-task-viewer>
71
+ }
63
72
  </div>
64
73
  </div>
65
- `,
74
+ `,
66
75
  styles: [`
67
76
  .task-component {
68
77
  display: flex;
package/tsconfig.json CHANGED
@@ -1,25 +1,7 @@
1
1
  {
2
- "compilerOptions": {
3
- "target": "es2022",
4
- "module": "es2022",
5
- "moduleResolution": "node",
6
- "declaration": true,
7
- "declarationMap": true,
8
- "sourceMap": true,
9
- "experimentalDecorators": true,
10
- "outDir": "./dist",
11
- "strict": true,
12
- "skipLibCheck": true,
13
- "lib": ["es2022", "dom"]
14
- },
15
- "angularCompilerOptions": {
16
- "skipTemplateCodegen": true,
17
- "strictMetadataEmit": true,
18
- "enableResourceInlining": true,
19
- "strictTemplates": true
20
- },
21
- "include": [
22
- "src/**/*.ts"
23
- ]
24
- }
25
-
2
+ "extends": "../../../../tsconfig.angular.json",
3
+ "compilerOptions": {
4
+ "outDir": "./dist"
5
+ },
6
+ "include": ["src/**/*.ts"]
7
+ }