Skip to content

Commit c3369ee

Browse files
authored
Merge pull request #36 from rubberduck-vba/p0
Link inspections from quickfix details
2 parents 509a2cc + a3513b4 commit c3369ee

File tree

5 files changed

+77
-12
lines changed

5 files changed

+77
-12
lines changed

rubberduckvba.client/src/app/components/feature-item-box/quickfix-item-box/quickfix-item-box.component.html

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -85,6 +85,26 @@ <h5>Remarks</h5>
8585
<small class="text-black-50">This action can be applied simultaneously for all inspection results.</small>
8686
</div>
8787
</div>
88+
89+
<div class="row">
90+
<div *ngIf="quickFixInfo.inspections.length > 0">
91+
<hr />
92+
<h6>
93+
<fa-icon [icon]="'wand-magic-sparkles'"></fa-icon>&nbsp;Inspections
94+
</h6>
95+
<p class="small">This action is offered as quickfix to the following inspections:</p>
96+
<ul class="list-unstyled ms-2">
97+
<li *ngFor="let inspection of this.quickFixInfo.inspections" class="my-1">
98+
<a class="text-decoration-none" href="/inspections/{{inspection.name}}">
99+
<div class="card-highlight rounded-4 p-2">
100+
<h6><span [ngClass]="inspection.getSeverityIconClass"></span>&nbsp;{{inspection.name}}</h6>
101+
<p class="text-black-50 small" [innerHTML]="inspection.summary"></p>
102+
</div>
103+
</a>
104+
</li>
105+
</ul>
106+
</div>
107+
</div>
88108
</div>
89109

90110
<div *ngIf="quickFixInfo.examples && quickFixInfo.examples.length > 0" class="row my-3">

rubberduckvba.client/src/app/components/feature-item-box/quickfix-item-box/quickfix-item-box.component.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ import { FaIconLibrary } from "@fortawesome/angular-fontawesome";
33
import { fas } from "@fortawesome/free-solid-svg-icons";
44
import { NgbModal } from "@ng-bootstrap/ng-bootstrap";
55
import { BehaviorSubject } from "rxjs";
6-
import { XmlDocItemViewModel, QuickFixViewModel } from "../../../model/feature.model";
6+
import { XmlDocItemViewModel, QuickFixViewModel, QuickFixViewModelClass } from "../../../model/feature.model";
77

88
@Component({
99
selector: 'quickfix-item-box',
@@ -12,7 +12,7 @@ import { XmlDocItemViewModel, QuickFixViewModel } from "../../../model/feature.m
1212
export class QuickFixItemBoxComponent implements OnInit, OnChanges {
1313

1414
private readonly _info: BehaviorSubject<XmlDocItemViewModel> = new BehaviorSubject<XmlDocItemViewModel>(null!);
15-
private readonly _quickFixInfo: BehaviorSubject<QuickFixViewModel> = new BehaviorSubject<QuickFixViewModel>(null!);
15+
private readonly _quickFixInfo: BehaviorSubject<QuickFixViewModelClass> = new BehaviorSubject<QuickFixViewModelClass>(null!);
1616

1717
@ViewChild('quickFixDetails', { read: TemplateRef }) QuickFixDetails: TemplateRef<any> | undefined;
1818

@@ -34,7 +34,7 @@ export class QuickFixItemBoxComponent implements OnInit, OnChanges {
3434
if (value != null) {
3535
this._info.next(value);
3636

37-
this._quickFixInfo.next(value as QuickFixViewModel);
37+
this._quickFixInfo.next(value as QuickFixViewModelClass);
3838
}
3939
}
4040

@@ -47,7 +47,7 @@ export class QuickFixItemBoxComponent implements OnInit, OnChanges {
4747
this.modal.open(this.QuickFixDetails);
4848
}
4949

50-
public get quickFixInfo(): QuickFixViewModel {
50+
public get quickFixInfo(): QuickFixViewModelClass {
5151
return this._quickFixInfo.value;
5252
}
5353
}

rubberduckvba.client/src/app/model/feature.model.ts

Lines changed: 28 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -130,6 +130,31 @@ export interface AnnotationsFeatureViewModel extends SubFeatureViewModel {
130130

131131
export type XmlDocOrFeatureViewModel = SubFeatureViewModel | InspectionsFeatureViewModel | QuickFixesFeatureViewModel | AnnotationsFeatureViewModel;
132132

133+
export interface QuickFixInspectionLinkViewModel {
134+
name: string;
135+
summary: string;
136+
inspectionType: string;
137+
defaultSeverity: string;
138+
}
139+
140+
export class QuickFixInspectionLinkViewModelClass implements QuickFixInspectionLinkViewModel {
141+
name: string;
142+
summary: string;
143+
inspectionType: string;
144+
defaultSeverity: string;
145+
146+
constructor(model: QuickFixInspectionLinkViewModel) {
147+
this.name = model.name;
148+
this.summary = model.summary;
149+
this.inspectionType = model.inspectionType;
150+
this.defaultSeverity = model.defaultSeverity;
151+
}
152+
153+
public get getSeverityIconClass(): string {
154+
return `icon icon-severity-${this.defaultSeverity.toLowerCase()}`;
155+
}
156+
}
157+
133158
export interface QuickFixViewModel extends XmlDocViewModel {
134159
summary: string;
135160
remarks?: string;
@@ -139,7 +164,7 @@ export interface QuickFixViewModel extends XmlDocViewModel {
139164
canFixProject: boolean;
140165
canFixAll: boolean;
141166

142-
inspections: string[];
167+
inspections: QuickFixInspectionLinkViewModel[];
143168
examples: QuickFixExample[];
144169

145170
getGitHubViewLink(): string;
@@ -301,7 +326,7 @@ export class QuickFixViewModelClass extends SubFeatureViewModelClass implements
301326
canFixModule: boolean;
302327
canFixProject: boolean;
303328
canFixAll: boolean;
304-
inspections: string[];
329+
inspections: QuickFixInspectionLinkViewModelClass[];
305330
examples: QuickFixExample[];
306331
tagAssetId: number;
307332
tagName: string;
@@ -323,7 +348,7 @@ export class QuickFixViewModelClass extends SubFeatureViewModelClass implements
323348
this.remarks = model.remarks;
324349

325350
this.examples = model.examples;
326-
this.inspections = model.inspections;
351+
this.inspections = model.inspections.map(e => new QuickFixInspectionLinkViewModelClass(e));
327352

328353
this.tagAssetId = model.tagAssetId;
329354
this.tagName = model.tagName;

rubberduckvba.client/src/app/routes/quickfixes/quickfix.component.html

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,26 @@ <h5>Remarks</h5>
1616
</div>
1717
</div>
1818

19+
<div class="row">
20+
<div *ngIf="info.inspections.length > 0">
21+
<hr />
22+
<h6>
23+
<fa-icon [icon]="'lightbulb'"></fa-icon>&nbsp;Inspections
24+
</h6>
25+
<p class="small">This action is offered as quickfix to the following inspections:</p>
26+
<ul class="list-unstyled ms-2">
27+
<li *ngFor="let inspection of this.info.inspections" class="my-1">
28+
<a class="text-decoration-none" href="/inspections/{{inspection.name}}">
29+
<div class="card-highlight rounded-4 p-2">
30+
<h6><span [ngClass]="inspection.getSeverityIconClass"></span>&nbsp;{{inspection.name}}</h6>
31+
<p class="text-black-50 small" [innerHTML]="inspection.summary"></p>
32+
</div>
33+
</a>
34+
</li>
35+
</ul>
36+
</div>
37+
</div>
38+
1939
<div class="row">
2040
<div *ngFor="let example of info.examples">
2141
<example-box [quickFixExample]="example"></example-box>

rubberduckvba.client/src/app/routes/quickfixes/quickfix.component.ts

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ import { ActivatedRoute } from "@angular/router";
33
import { FaIconLibrary } from "@fortawesome/angular-fontawesome";
44
import { fas } from "@fortawesome/free-solid-svg-icons";
55
import { BehaviorSubject, switchMap } from "rxjs";
6-
import { QuickFixViewModel } from "../../model/feature.model";
6+
import { QuickFixViewModel, QuickFixViewModelClass } from "../../model/feature.model";
77
import { ApiClientService } from "../../services/api-client.service";
88

99
@Component({
@@ -12,12 +12,12 @@ import { ApiClientService } from "../../services/api-client.service";
1212
})
1313
export class QuickFixComponent implements OnInit {
1414

15-
private readonly _info: BehaviorSubject<QuickFixViewModel> = new BehaviorSubject<QuickFixViewModel>(null!);
15+
private readonly _info: BehaviorSubject<QuickFixViewModelClass> = new BehaviorSubject<QuickFixViewModelClass>(null!);
1616

17-
public set info(value: QuickFixViewModel) {
17+
public set info(value: QuickFixViewModelClass) {
1818
this._info.next(value);
1919
}
20-
public get info(): QuickFixViewModel {
20+
public get info(): QuickFixViewModelClass {
2121
return this._info.getValue();
2222
}
2323

@@ -31,7 +31,7 @@ export class QuickFixComponent implements OnInit {
3131
const name = params.get('name')!;
3232
return this.api.getQuickFix(name);
3333
})).subscribe(e => {
34-
this.info = <QuickFixViewModel>e;
34+
this.info = <QuickFixViewModelClass>e;
3535
console.log(this.info);
3636
});
3737
}

0 commit comments

Comments
 (0)