Skip to content

Commit e59e79c

Browse files
committed
updating property from info panel if object
1 parent 94d0194 commit e59e79c

7 files changed

Lines changed: 25 additions & 11 deletions

File tree

src/backend/backend.ts

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -55,13 +55,17 @@ window.addEventListener('message', function(event) {
5555
}
5656

5757
} else if (event.data.message.message.actionType === 'UPDATE_PROPERTY') {
58+
5859
const highlightStr = '[batarangle-id=\"' +
5960
event.data.message.message.property.id + '\"]';
60-
6161
const dE = ng.probe(document.querySelector(highlightStr));
62-
if (dE.componentInstance[event.data.message.message.property.key]
63-
!== undefined) {
62+
const propertyTree: Array<string> =
63+
event.data.message.message.property.propertyTree.split(',');
64+
const property = propertyTree.pop();
65+
const value = propertyTree.reduce((previousValue, currentValue) =>
66+
previousValue[currentValue], dE.componentInstance);
6467

68+
if (value !== undefined) {
6569
const type: string = event.data.message.message.property.type;
6670
let newValue: any;
6771

@@ -75,8 +79,7 @@ window.addEventListener('message', function(event) {
7579
newValue = event.data.message.message.property.value;
7680
}
7781

78-
dE.componentInstance[event.data.message.message.property.key] =
79-
newValue;
82+
value[property] = newValue;
8083

8184
const appRef = dE.inject(ng.coreTokens.ApplicationRef);
8285
appRef.tick();

src/frontend/components/component-info/component-info.html

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,7 @@ <h4 *ngIf="node && node.output && node.output.length > 0"
4040
<h4 *ngIf="node && node.state" class="m3 bold">State</h4>
4141
<div style="padding-left: 15px;">
4242
<bt-render-state *ngIf="node && node.state"
43+
[propertyTree]="propertyTree"
4344
[id]="node.id"
4445
[state]="node.state"></bt-render-state>
4546
</div>

src/frontend/components/component-info/component-info.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ import RenderState from '../render-state/render-state';
1515
export default class ComponentInfo {
1616
private node: any;
1717
private selectDependency: EventEmitter<string> = new EventEmitter<string>();
18+
private propertyTree: string = '';
1819

1920
constructor(
2021
@Inject(ElementRef) private elementRef: ElementRef

src/frontend/components/render-state/render-state.html

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,12 +6,13 @@
66
</span>
77

88
<bt-state-values *ngIf="type(state[k]) !='object'"
9+
[propertyTree]="propertyTree + ',' + k"
910
[id]="id"
10-
[key]="k"
1111
[value]="state[k]">
1212
</bt-state-values>
1313

1414
<bt-render-state
15+
[propertyTree]="propertyTree + ',' + k"
1516
[id]="id"
1617
[hidden]="expanded[k]"
1718
*ngIf="type(state[k]) =='object'" [state]="state[k]">

src/frontend/components/render-state/render-state.ts

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,16 @@
1-
import {Component, EventEmitter} from 'angular2/core';
1+
import {Component, EventEmitter, Input} from 'angular2/core';
22
import StateValues from '../state-values/state-values';
33

44
@Component({
55
selector: 'bt-render-state',
66
templateUrl:
77
'/src/frontend/components/render-state/render-state.html',
8-
inputs: ['id', 'state'],
98
directives: [RenderState, StateValues]
109
})
1110
export default class RenderState {
11+
@Input() id: string;
12+
@Input() state: any;
13+
@Input() propertyTree: string;
1214

1315
private expanded = {};
1416

src/frontend/components/state-values/state-values.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
<div>
2-
<p class="node-item-property">{{key}}=</p>
2+
<p class="node-item-property">{{getPropertyKey(propertyTree)}}=</p>
33
<p class="node-item-value"
44
*ngIf="!editable"
55
(dblclick)="onDblClick($event)" >{{value}}</p>

src/frontend/components/state-values/state-values.ts

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,14 +10,19 @@ import ParseData from '../../utils/parse-data';
1010
export default class StateValues {
1111

1212
@Input() id: any;
13-
@Input() key: any;
1413
@Input() value: any;
14+
@Input() propertyTree: string;
1515

1616
private editable: boolean = false;
1717

1818
constructor(
1919
private userActions: UserActions
2020
) { }
21+
22+
getPropertyKey(tree: any): string {
23+
tree = tree.split(',');
24+
return tree[tree.length - 1] || '';
25+
}
2126

2227
onDblClick($event) {
2328
this.editable = true;
@@ -39,10 +44,11 @@ export default class StateValues {
3944
} else {
4045
newValue = value;
4146
}
47+
4248
if (newValue !== this.value) {
4349

4450
const property = {
45-
'key': this.key,
51+
'propertyTree': this.propertyTree.substr(1),
4652
'value': newValue,
4753
'id': this.id,
4854
'type': type

0 commit comments

Comments
 (0)