@@ -10,12 +10,18 @@ import {LayoutItemType} from '../../page-editor/layout/LayoutItemType';
1010import { LayoutComponentView } from '../../page-editor/layout/LayoutComponentView' ;
1111import { Content } from '../content/Content' ;
1212import { ContentSummaryAndCompareStatus } from '../content/ContentSummaryAndCompareStatus' ;
13+ import { PartItemType } from '../../page-editor/part/PartItemType' ;
14+ import { PartComponentView } from '../../page-editor/part/PartComponentView' ;
15+ import { ComponentView } from '../../page-editor/ComponentView' ;
16+ import { GetPartDescriptorByKeyRequest } from './page/contextwindow/inspect/region/GetPartDescriptorByKeyRequest' ;
17+ import { GetLayoutDescriptorByKeyRequest } from './page/contextwindow/inspect/region/GetLayoutDescriptorByKeyRequest' ;
1318import GridColumnBuilder = api . ui . grid . GridColumnBuilder ;
1419import GridOptionsBuilder = api . ui . grid . GridOptionsBuilder ;
1520import TreeGrid = api . ui . treegrid . TreeGrid ;
1621import TreeNode = api . ui . treegrid . TreeNode ;
1722import TreeGridBuilder = api . ui . treegrid . TreeGridBuilder ;
1823import i18n = api . util . i18n ;
24+ import Descriptor = api . content . page . Descriptor ;
1925
2026export class PageComponentsTreeGrid
2127 extends TreeGrid < ItemView > {
@@ -124,26 +130,54 @@ export class PageComponentsTreeGrid
124130 }
125131
126132 fetch ( node : TreeNode < ItemView > , dataId ?: string ) : Q . Promise < ItemView > {
127- let deferred = wemQ . defer < ItemView > ( ) ;
128133 let itemViewId = dataId ? new ItemViewId ( parseInt ( dataId , 10 ) ) : node . getData ( ) . getItemId ( ) ;
129- deferred . resolve ( this . pageView . getItemViewById ( itemViewId ) ) ;
130- return deferred . promise ;
134+ return wemQ ( this . pageView . getItemViewById ( itemViewId ) ) ;
131135 }
132136
133137 fetchRoot ( ) : wemQ . Promise < ItemView [ ] > {
134- let deferred = wemQ . defer < ItemView [ ] > ( ) ;
135138 if ( this . pageView . getFragmentView ( ) ) {
136- deferred . resolve ( [ this . pageView . getFragmentView ( ) ] ) ;
139+ return wemQ ( [ this . pageView . getFragmentView ( ) ] ) ;
137140 } else {
138- deferred . resolve ( [ this . pageView ] ) ;
141+ return wemQ ( [ this . pageView ] ) ;
139142 }
140- return deferred . promise ;
141143 }
142144
143145 fetchChildren ( parentNode : TreeNode < ItemView > ) : Q . Promise < ItemView [ ] > {
144- let deferred = wemQ . defer < ItemView [ ] > ( ) ;
145- deferred . resolve ( this . getDataChildren ( parentNode . getData ( ) ) ) ;
146- return deferred . promise ;
146+ return wemQ . all ( this . getDataChildren ( parentNode . getData ( ) ) . map ( this . initDescriptor ) ) . then ( allItems => {
147+ return allItems ;
148+ } ) ;
149+ }
150+
151+ initDescriptor ( itemView : ItemView ) : wemQ . Promise < ItemView > {
152+
153+ let request ;
154+
155+ if ( PartItemType . get ( ) . equals ( itemView . getType ( ) ) ) {
156+ const component = ( < PartComponentView > itemView ) . getComponent ( ) ;
157+ if ( component ) {
158+ request = new GetPartDescriptorByKeyRequest ( ( < PartComponentView > itemView ) . getComponent ( ) . getDescriptor ( ) ) ;
159+ }
160+ }
161+ if ( LayoutItemType . get ( ) . equals ( itemView . getType ( ) ) ) {
162+ const component = ( < LayoutComponentView > itemView ) . getComponent ( ) ;
163+ if ( component ) {
164+ request = new GetLayoutDescriptorByKeyRequest ( ( < LayoutComponentView > itemView ) . getComponent ( ) . getDescriptor ( ) ) ;
165+ }
166+ }
167+
168+ if ( request ) {
169+ let component = ( < ComponentView < any > > itemView ) . getComponent ( ) ;
170+ if ( ! component . getDescription ( ) || component . hasDescriptor ( ) ) {
171+ request . sendAndParse ( ) . then (
172+ ( receivedDescriptor : Descriptor ) => {
173+ component . setDescriptor ( receivedDescriptor . getKey ( ) , receivedDescriptor ) ;
174+
175+ return itemView ;
176+ } ) ;
177+ }
178+ }
179+
180+ return wemQ ( itemView ) ;
147181 }
148182
149183 private getDataChildren ( data : ItemView ) : ItemView [ ] {
0 commit comments