-
Notifications
You must be signed in to change notification settings - Fork 6
Expand file tree
/
Copy pathedit-connected-components.component.ts
More file actions
108 lines (91 loc) · 3.81 KB
/
Copy pathedit-connected-components.component.ts
File metadata and controls
108 lines (91 loc) · 3.81 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
import { Component, EventEmitter, inject, Input, OnInit, Output } from '@angular/core';
import { ProjectService } from '../../../assets/wise5/services/projectService';
import { EditConnectedComponentsAddButtonComponent } from '../edit-connected-components-add-button/edit-connected-components-add-button.component';
import { EditConnectedComponentDefaultSelectsComponent } from '../edit-connected-component-default-selects/edit-connected-component-default-selects.component';
import { EditConnectedComponentDeleteButtonComponent } from '../edit-connected-component-delete-button/edit-connected-component-delete-button.component';
@Component({
imports: [
EditConnectedComponentDefaultSelectsComponent,
EditConnectedComponentDeleteButtonComponent,
EditConnectedComponentsAddButtonComponent
],
selector: 'edit-connected-components',
styleUrl: './edit-connected-components.component.scss',
templateUrl: './edit-connected-components.component.html'
})
export class EditConnectedComponentsComponent implements OnInit {
@Input() componentContent: any;
@Input() componentId: string;
@Input() nodeId: string;
@Input() allowedConnectedComponentTypes: string[] = [];
@Input() connectedComponents: any[] = [];
@Output() connectedComponentsChanged: EventEmitter<any> = new EventEmitter();
nodeIds: string[];
protected projectService: ProjectService = inject(ProjectService);
ngOnInit(): void {
if (this.connectedComponents == null) {
this.connectedComponents = [];
}
}
addConnectedComponent(): void {
this.connectedComponents.push(this.createConnectedComponent());
this.connectedComponentChanged();
}
createConnectedComponent(): any {
return {
nodeId: this.nodeId,
componentId: null,
type: null
};
}
connectedComponentNodeIdChanged(connectedComponent: any): void {
this.connectedComponentChanged();
}
connectedComponentComponentIdChanged(connectedComponent: any): void {
this.automaticallySetConnectedComponentTypeIfPossible(connectedComponent);
this.afterComponentIdChanged(connectedComponent);
this.connectedComponentChanged();
}
automaticallySetConnectedComponentTypeIfPossible(connectedComponent: any): void {
if (connectedComponent.componentId != null && connectedComponent.type == null) {
connectedComponent.type = 'importWork';
}
this.automaticallySetConnectedComponentFieldsIfPossible(connectedComponent);
}
afterComponentIdChanged(connectedComponent: any): void {}
connectedComponentTypeChanged(connectedComponent: any): void {
this.connectedComponentChanged();
}
isConnectedComponentTypeAllowed(componentType: string): boolean {
return this.allowedConnectedComponentTypes.includes(componentType);
}
automaticallySetConnectedComponentFieldsIfPossible(connectedComponent: any): void {}
deleteConnectedComponent(index: number): void {
if (confirm($localize`Are you sure you want to delete this connected component?`)) {
this.connectedComponents.splice(index, 1);
this.connectedComponentChanged();
}
}
connectedComponentChanged(): void {
this.connectedComponentsChanged.emit(this.connectedComponents);
}
getComponents(nodeId: string): any[] {
return this.projectService.getComponents(nodeId);
}
getNodePositionAndTitle(nodeId: string): string {
return this.projectService.getNodePositionAndTitle(nodeId);
}
getConnectedComponentType(connectedComponent: any): string {
const component: any = this.projectService.getComponent(
connectedComponent.nodeId,
connectedComponent.componentId
);
if (component != null) {
return component.type;
}
return null;
}
connectedComponentTypeIsSpecificType(connectedComponent: any, componentType: string): boolean {
return this.getConnectedComponentType(connectedComponent) === componentType;
}
}