Skip to content

Commit 94ec8b3

Browse files
Show visibility icon if component has constraints. Click on it to open advanced authoring with constraint tab opened.
1 parent 82acda6 commit 94ec8b3

28 files changed

Lines changed: 193 additions & 122 deletions

File tree

src/app/authoring-tool/edit-advanced-component/edit-advanced-component.component.ts

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,8 +10,11 @@ import { moveObjectDown, moveObjectUp } from '../../../assets/wise5/common/array
1010
export abstract class EditAdvancedComponentComponent {
1111
component: Component;
1212
componentContent: ComponentContent;
13+
protected selectedTabIndex: number = 0;
14+
1315
@Input() componentId: string;
1416
@Input() nodeId: string;
17+
@Input() tab: string = 'general';
1518

1619
constructor(
1720
protected nodeService: TeacherNodeService,
@@ -23,6 +26,15 @@ export abstract class EditAdvancedComponentComponent {
2326
this.componentContent = this.teacherProjectService.getComponent(this.nodeId, this.componentId);
2427
this.component = new Component(this.componentContent, this.nodeId);
2528
this.teacherProjectService.uiChanged();
29+
30+
switch (this.tab) {
31+
case 'visibility':
32+
this.selectedTabIndex = 1;
33+
break;
34+
default:
35+
this.selectedTabIndex = 0;
36+
break;
37+
}
2638
}
2739

2840
setShowSubmitButtonValue(show: boolean = false): void {

src/app/authoring-tool/edit-component-advanced/edit-component-advanced.component.spec.ts

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -19,9 +19,12 @@ describe('EditComponentAdvancedComponent', () => {
1919
{
2020
provide: MAT_DIALOG_DATA,
2121
useValue: {
22-
content: { type: 'ShowMyWork' },
23-
id: 'component1',
24-
nodeId: 'node1'
22+
component: {
23+
content: { type: 'ShowMyWork' },
24+
id: 'component1',
25+
nodeId: 'node1'
26+
},
27+
tab: 'general'
2528
}
2629
},
2730
{

src/app/authoring-tool/edit-component-advanced/edit-component-advanced.component.ts

Lines changed: 11 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -26,18 +26,22 @@ export class EditComponentAdvancedComponent {
2626
private componentRef: ComponentRef<WISEComponent>;
2727
constructor(
2828
private applicationRef: ApplicationRef,
29-
@Inject(MAT_DIALOG_DATA) protected component: WISEComponent,
29+
@Inject(MAT_DIALOG_DATA) protected data: { component: WISEComponent; tab?: string },
3030
private injector: EnvironmentInjector
3131
) {}
3232

3333
ngAfterViewInit(): void {
34-
this.componentRef = createComponent(components[this.component.content.type].authoringAdvanced, {
35-
hostElement: this.componentElementRef.nativeElement,
36-
environmentInjector: this.injector
37-
});
34+
this.componentRef = createComponent(
35+
components[this.data.component.content.type].authoringAdvanced,
36+
{
37+
hostElement: this.componentElementRef.nativeElement,
38+
environmentInjector: this.injector
39+
}
40+
);
3841
Object.assign(this.componentRef.instance, {
39-
nodeId: this.component.nodeId,
40-
componentId: this.component.id
42+
nodeId: this.data.component.nodeId,
43+
componentId: this.data.component.id,
44+
tab: this.data.tab
4145
});
4246
this.applicationRef.attachView(this.componentRef.hostView);
4347
}

src/assets/wise5/authoringTool/components/edit-component-advanced-button/edit-component-advanced-button.component.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ export class EditComponentAdvancedButtonComponent {
2020

2121
protected showComponentAdvancedAuthoring(): void {
2222
this.dialog.open(EditComponentAdvancedComponent, {
23-
data: new WiseComponent(this.componentContent, this.nodeId),
23+
data: { component: new WiseComponent(this.componentContent, this.nodeId), tab: 'general' },
2424
width: '80%'
2525
});
2626
}
Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
import { Component, inject, Input } from '@angular/core';
2+
import { MatButtonModule } from '@angular/material/button';
3+
import { MatDialog } from '@angular/material/dialog';
4+
import { MatIconModule } from '@angular/material/icon';
5+
import { MatTooltipModule } from '@angular/material/tooltip';
6+
import { EditComponentAdvancedComponent } from '../../../../../app/authoring-tool/edit-component-advanced/edit-component-advanced.component';
7+
import { Component as WiseComponent } from '../../../common/Component';
8+
import { ComponentContent } from '../../../common/ComponentContent';
9+
10+
@Component({
11+
imports: [MatButtonModule, MatIconModule, MatTooltipModule],
12+
selector: 'visibility-constraint-icon',
13+
template: `<button
14+
mat-icon-button
15+
(click)="openVisibilityConstraintAuthoring()"
16+
[matTooltip]="tooltip"
17+
matTooltipPosition="above"
18+
>
19+
<mat-icon>visibility_off</mat-icon>
20+
</button>`
21+
})
22+
export class VisibilityConstraintIconComponent {
23+
private dialog = inject(MatDialog);
24+
25+
@Input() componentContent: ComponentContent;
26+
@Input() nodeId: string;
27+
28+
protected tooltip = $localize`This activity is displayed to the student when certain conditions are met. Click to view and edit the conditions.`;
29+
30+
protected openVisibilityConstraintAuthoring(): void {
31+
this.dialog.open(EditComponentAdvancedComponent, {
32+
data: { component: new WiseComponent(this.componentContent, this.nodeId), tab: 'visibility' },
33+
width: '80%'
34+
});
35+
}
36+
}

src/assets/wise5/authoringTool/node/node-authoring/node-authoring.component.html

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,9 @@
4949
<span class="heavy">{{ i + 1 }}. {{ getComponentTypeLabel(component.type) }}</span>
5050
</div>
5151
<toggle-component-tag [component]="component" />
52+
@if (hasVisibilityConstraint(component)) {
53+
<visibility-constraint-icon [componentContent]="component" [nodeId]="nodeId" />
54+
}
5255
<span class="flex grow"></span>
5356
<div class="text flex justify-end items-center">
5457
@if (component.id === editingComponentId) {

src/assets/wise5/authoringTool/node/node-authoring/node-authoring.component.ts

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ import { ComponentAuthoringComponent } from '../../components/component-authorin
2727
import { RouterModule } from '@angular/router';
2828
import { EditComponentAdvancedButtonComponent } from '../../components/edit-component-advanced-button/edit-component-advanced-button.component';
2929
import { ToggleComponentTagComponent } from '../../components/toggle-component-tag/toggle-component-tag.component';
30+
import { VisibilityConstraintIconComponent } from '../../components/visibility-constraint-icon/visibility-constraint-icon.component';
3031

3132
@Component({
3233
imports: [
@@ -47,7 +48,8 @@ import { ToggleComponentTagComponent } from '../../components/toggle-component-t
4748
MatTooltipModule,
4849
RouterModule,
4950
TeacherNodeIconComponent,
50-
ToggleComponentTagComponent
51+
ToggleComponentTagComponent,
52+
VisibilityConstraintIconComponent
5153
],
5254
styleUrl: './node-authoring.component.scss',
5355
templateUrl: './node-authoring.component.html'
@@ -227,6 +229,10 @@ export class NodeAuthoringComponent implements OnInit {
227229
return this.componentTypeService.getComponentTypeLabel(componentType);
228230
}
229231

232+
protected hasVisibilityConstraint(component: ComponentContent): boolean {
233+
return component.constraints?.length > 0;
234+
}
235+
230236
private setShowSaveButtonForAllComponents(node: Node, showSaveButton: boolean): void {
231237
node.components
232238
.filter((component) =>

src/assets/wise5/components/aiChat/edit-ai-chat-advanced/edit-ai-chat-advanced.component.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
<mat-tab-group animationDuration="0ms">
1+
<mat-tab-group animationDuration="0ms" [selectedIndex]="selectedTabIndex">
22
<mat-tab>
33
<ng-template mat-tab-label>
44
<mat-icon>settings</mat-icon>&nbsp;<span i18n>General</span>

src/assets/wise5/components/animation/edit-animation-advanced/edit-animation-advanced.component.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
<mat-tab-group animationDuration="0ms">
1+
<mat-tab-group animationDuration="0ms" [selectedIndex]="selectedTabIndex">
22
<mat-tab>
33
<ng-template mat-tab-label>
44
<mat-icon>settings</mat-icon>&nbsp;<span i18n>General</span>

src/assets/wise5/components/audioOscillator/edit-audio-oscillator-advanced/edit-audio-oscillator-advanced.component.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
<mat-tab-group animationDuration="0ms">
1+
<mat-tab-group animationDuration="0ms" [selectedIndex]="selectedTabIndex">
22
<mat-tab>
33
<ng-template mat-tab-label>
44
<mat-icon>settings</mat-icon>&nbsp;<span i18n>General</span>

0 commit comments

Comments
 (0)