Skip to content

Commit 102e960

Browse files
committed
ai resolution
1 parent 566ec15 commit 102e960

File tree

3 files changed

+25
-9
lines changed

3 files changed

+25
-9
lines changed
Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,13 @@
11
<div class="panel-heading">
22
<div class="row">
3-
<div class="col-sm-6">
3+
<div class="col-sm-4">
44
<h2 id="issues-list">Issues</h2>
55
</div>
6-
<div *ngIf="canEdit" class="col-sm-6">
7-
<button class="btn btn-primary pull-right" id="create-issue-button" (click)="showCreate()">Create Issue</button>
6+
<div class="col-md-8">
7+
<div class="btn-group pull-right" role="group">
8+
<button *ngIf="canEdit" class="btn btn-primary" id="create-issue-button" (click)="showCreate()">Create Issue</button>
9+
<button *ngIf="isAiOn" class="btn btn-warning" id="generate-ai-issues" (click)="generateAiIssues()">Generate Issues with AI</button>
10+
</div>
811
</div>
912
</div>
1013
</div>
@@ -16,4 +19,4 @@ <h2 id="issues-list">Issues</h2>
1619
[hiddenColumns]="hiddenColumns" [defaultSortBy]="defSort" [queryParams]="true"
1720
(dataChange)="updateIssue($event)" (rowClick)="rowClicked($event)" rowsOnPage="20">
1821
</table-filter>
19-
</div>
22+
</div>

src/app/pages/project/issue/issue-list/issue-list.component.ts

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ import { ResultResolutionService } from 'src/app/services/result-resolution/resu
1010
import { TFColumn, TFSorting, TFOrder, TFColumnType } from 'src/app/elements/table-filter/tfColumn';
1111
import { ResultResolution } from 'src/app/shared/models/result-resolution';
1212
import { LocalPermissions } from 'src/app/shared/models/local-permissions';
13+
import {ProjectService} from '../../../../services/project/project.service';
1314

1415
@Component({
1516
templateUrl: './issue-list.component.html',
@@ -23,7 +24,8 @@ export class IssueListComponent implements OnInit {
2324
private route: ActivatedRoute,
2425
private issueService: IssueService,
2526
private permissions: PermissionsService,
26-
private resolutionService: ResultResolutionService
27+
private resolutionService: ResultResolutionService,
28+
private projectService: ProjectService
2729
) { }
2830

2931
projectId: number;
@@ -37,16 +39,18 @@ export class IssueListComponent implements OnInit {
3739
statuses: Label[];
3840
defSort: TFSorting = { property: 'created', order: TFOrder.asc };
3941
hideCreateModal = true;
42+
isAiOn: boolean;
4043

4144
async ngOnInit() {
4245
this.projectId = this.route.snapshot.params.projectId;
43-
[this.issues, this.resolutions, this.canEdit, this.projectUsers, this.statuses] = await Promise.all([
46+
[this.issues, this.resolutions, this.canEdit, this.projectUsers, this.statuses, this.isAiOn] = await Promise.all([
4447
this.issueService.getIssues({ project_id: this.projectId }),
4548
this.resolutionService.getResolution(this.projectId),
4649
this.permissions.hasProjectPermissions(this.projectId,
4750
[EGlobalPermissions.manager], [ELocalPermissions.manager, ELocalPermissions.engineer]),
4851
this.userService.getProjectUsers(this.projectId),
49-
this.issueService.getIssueStatuses()
52+
this.issueService.getIssueStatuses(),
53+
((await this.projectService.getProject(this.projectId)).ai_resolutions === 1)
5054
]);
5155
this.projectUsers = this.projectUsers.filter(user => user.admin === 1 || user.manager === 1 || user.engineer === 1);
5256
this.users = this.projectUsers.map(x => x.user);
@@ -79,6 +83,9 @@ export class IssueListComponent implements OnInit {
7983
showCreate() {
8084
this.hideCreateModal = false;
8185
}
86+
generateAiIssues() {
87+
this.issueService.getAiIssues(this.projectId);
88+
}
8289

8390
async execute(result: {executed: boolean, result?: Issue}) {
8491
this.hideCreateModal = true;

src/app/services/issue/issue.service.ts

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,8 @@ export class IssueService extends BaseHttpService {
99

1010
endpoints = {
1111
issues: '/issues',
12-
statuses: '/issue/status'
12+
statuses: '/issue/status',
13+
ai_issues: '/issues/ai'
1314
};
1415

1516
getIssues(issue: Issue): Promise<Issue[]> {
@@ -29,7 +30,8 @@ export class IssueService extends BaseHttpService {
2930
issue.external_url = DefaultProperties.blank;
3031
}
3132

32-
const result = await this.http.post<Issue>(this.endpoints.issues, issue, {params: { assign: String(updateResults), unassign: String(unassignIssue) }}).toPromise();
33+
const result = await this.http.post<Issue>(this.endpoints.issues, issue, {params: { assign: String(updateResults),
34+
unassign: String(unassignIssue) }}).toPromise();
3335
issue.id
3436
? this.handleSuccess(`The issue '${issue.title}' was updated.`)
3537
: this.handleSuccess(`The issue '${issue.title}' was created.`);
@@ -40,4 +42,8 @@ export class IssueService extends BaseHttpService {
4042
getIssueStatuses(): Promise<Label[]> {
4143
return this.http.get<Label[]>(this.endpoints.statuses).toPromise();
4244
}
45+
46+
getAiIssues(project_id: number): Promise<Label[]> {
47+
return this.http.get<Label[]>(this.endpoints.ai_issues, { params: { project_id: project_id.toString()}}).toPromise();
48+
}
4349
}

0 commit comments

Comments
 (0)