@@ -49,23 +49,34 @@ qx.Class.define("osparc.support.Conversation", {
4949 members : {
5050 __messages : null ,
5151 __nextRequestParams : null ,
52- __messageScroll : null ,
53- __messagesList : null ,
54- __loadMoreMessages : null ,
5552
56- __buildLayout : function ( ) {
57- this . __messagesList = new qx . ui . container . Composite ( new qx . ui . layout . VBox ( 5 ) ) . set ( {
58- alignY : "middle"
59- } ) ;
60- const scrollView = this . __messageScroll = new qx . ui . container . Scroll ( ) ;
61- scrollView . add ( this . __messagesList ) ;
62- this . _add ( scrollView , {
63- flex : 1
64- } ) ;
53+ _createChildControlImpl : function ( id ) {
54+ let control ;
55+ switch ( id ) {
56+ case "messages-container-scroll" :
57+ control = new qx . ui . container . Scroll ( ) ;
58+ this . _add ( control , {
59+ flex : 1
60+ } ) ;
61+ break ;
62+ case "messages-container" :
63+ control = new qx . ui . container . Composite ( new qx . ui . layout . VBox ( 5 ) ) . set ( {
64+ alignY : "middle"
65+ } ) ;
66+ this . getChildControl ( "messages-container-scroll" ) . add ( control ) ;
67+ break ;
68+ case "load-more-button" :
69+ control = new osparc . ui . form . FetchButton ( this . tr ( "Load more messages..." ) ) ;
70+ control . addListener ( "execute" , ( ) => this . __reloadMessages ( false ) ) ;
71+ this . _add ( control ) ;
72+ break ;
73+ }
74+ return control || this . base ( arguments , id ) ;
75+ } ,
6576
66- this . __loadMoreMessages = new osparc . ui . form . FetchButton ( this . tr ( "Load more messages..." ) ) ;
67- this . __loadMoreMessages . addListener ( "execute" , ( ) => this . __reloadMessages ( false ) ) ;
68- this . _add ( this . __loadMoreMessages ) ;
77+ __buildLayout : function ( ) {
78+ this . getChildControl ( "messages-container" ) ;
79+ this . getChildControl ( "load-more-button" ) ;
6980
7081 const addMessages = new osparc . conversation . AddMessage ( ) . set ( {
7182 padding : 10 ,
@@ -108,31 +119,33 @@ qx.Class.define("osparc.support.Conversation", {
108119 } ,
109120
110121 __reloadMessages : function ( removeMessages = true ) {
122+ const messagesContainer = this . getChildControl ( "messages-container" ) ;
123+ const loadMoreMessages = this . getChildControl ( "load-more-button" ) ;
111124 if ( this . getConversationId ( ) === null ) {
112- this . __messagesList . hide ( ) ;
113- this . __loadMoreMessages . hide ( ) ;
125+ messagesContainer . hide ( ) ;
126+ loadMoreMessages . hide ( ) ;
114127 return ;
115128 }
116129
117- this . __messagesList . show ( ) ;
118- this . __loadMoreMessages . show ( ) ;
119- this . __loadMoreMessages . setFetching ( true ) ;
130+ messagesContainer . show ( ) ;
131+ loadMoreMessages . show ( ) ;
132+ loadMoreMessages . setFetching ( true ) ;
120133
121134 if ( removeMessages ) {
122135 this . __messages = [ ] ;
123- this . __messagesList . removeAll ( ) ;
136+ messagesContainer . removeAll ( ) ;
124137 }
125138
126139 this . __getNextRequest ( )
127140 . then ( resp => {
128141 const messages = resp [ "data" ] ;
129142 messages . forEach ( message => this . addMessage ( message ) ) ;
130143 this . __nextRequestParams = resp [ "_links" ] [ "next" ] ;
131- if ( this . __nextRequestParams === null && this . __loadMoreMessages ) {
132- this . __loadMoreMessages . exclude ( ) ;
144+ if ( this . __nextRequestParams === null && loadMoreMessages ) {
145+ loadMoreMessages . exclude ( ) ;
133146 }
134147 } )
135- . finally ( ( ) => this . __loadMoreMessages . setFetching ( false ) ) ;
148+ . finally ( ( ) => loadMoreMessages . setFetching ( false ) ) ;
136149 } ,
137150
138151 addMessage : function ( message ) {
@@ -166,13 +179,15 @@ qx.Class.define("osparc.support.Conversation", {
166179 }
167180 if ( control ) {
168181 // insert into the UI at the same position
169- this . __messagesList . addAt ( control , insertAt ) ;
182+ const messagesContainer = this . getChildControl ( "messages-container" ) ;
183+ messagesContainer . addAt ( control , insertAt ) ;
170184 }
171185
172186 // scroll to bottom
173187 // add timeout to ensure the scroll happens after the UI is updated
174188 setTimeout ( ( ) => {
175- this . __messageScroll . scrollToY ( this . __messageScroll . getChildControl ( "pane" ) . getScrollMaxY ( ) ) ;
189+ const messagesScroll = this . getChildControl ( "messages-container-scroll" ) ;
190+ messagesScroll . scrollToY ( messagesScroll . getChildControl ( "pane" ) . getScrollMaxY ( ) ) ;
176191 } , 50 ) ;
177192 } ,
178193
@@ -185,12 +200,13 @@ qx.Class.define("osparc.support.Conversation", {
185200 this . __messages . splice ( messageIndex , 1 ) ;
186201
187202 // Remove the UI element from the messages list
188- const children = this . __messagesList . getChildren ( ) ;
203+ const messagesContainer = this . getChildControl ( "messages-container" ) ;
204+ const children = messagesContainer . getChildren ( ) ;
189205 const controlIndex = children . findIndex (
190206 ctrl => ( "getMessage" in ctrl && ctrl . getMessage ( ) [ "messageId" ] === message [ "messageId" ] )
191207 ) ;
192208 if ( controlIndex > - 1 ) {
193- this . __messagesList . remove ( children [ controlIndex ] ) ;
209+ messagesContainer . remove ( children [ controlIndex ] ) ;
194210 }
195211 } ,
196212
@@ -203,7 +219,8 @@ qx.Class.define("osparc.support.Conversation", {
203219 this . __messages [ messageIndex ] = message ;
204220
205221 // Update the UI element from the messages list
206- this . __messagesList . getChildren ( ) . forEach ( control => {
222+ const messagesContainer = this . getChildControl ( "messages-container" ) ;
223+ messagesContainer . getChildren ( ) . forEach ( control => {
207224 if ( "getMessage" in control && control . getMessage ( ) [ "messageId" ] === message [ "messageId" ] ) {
208225 control . setMessage ( message ) ;
209226 return ;
0 commit comments