diff --git a/bricks/bricks.js b/bricks/bricks.js index a67677b..96d04bc 100644 --- a/bricks/bricks.js +++ b/bricks/bricks.js @@ -563,7 +563,10 @@ bricks.App = class extends bricks.Layout { this.wins_panel = null; } - show_windows_panel(){ + show_windows_panel(event){ + console.log('event=', event); + event.preventDefault(); + event.stopPropagation() this.wins_panel = new bricks.WindowsPanel({}) } get_color(){ diff --git a/bricks/cols.js b/bricks/cols.js index 5574c69..a7ee572 100644 --- a/bricks/cols.js +++ b/bricks/cols.js @@ -47,6 +47,7 @@ bricks.Cols = class extends bricks.VBox { this.toolbar_w.bind('command', this.command_handle.bind(this)); } this.add_widget(this.container); + this.create_main_widget(); schedule_once(this.load_first_page.bind(this), 0.5); } command_handle(event){ @@ -68,6 +69,7 @@ bricks.Cols = class extends bricks.VBox { console.log('record data=', rw.user_data); this.dispatch('record_click', rw.user_data); } + async dataHandle(d){ var data = d.rows; var page = d.add_page; @@ -101,40 +103,58 @@ bricks.Cols = class extends bricks.VBox { this.main.remove_widget(w); } } + create_main_widget(){ + this.container.clear_widgets(); + this.main = new bricks.DynamicColumn({ + width:"100%", + col_cwidth:this.col_cwidth, + mobile_cols:this.mobile_cols || 2 + }); + this.container.add_widget(this.main); + } + async show_with_data(data){ + this.data = data; + this.data_url = null; + await load_first_page(params); + } async load_first_page(params){ - var p = bricks.extend({}, this.data_params); - if (params){ - p = bricks.extend(p, params); - } - if (this.loading){ - bricks.debug('this.loading is set, do not thing'); - return; - } - var running = new bricks.Running({target:this}); - this.loading = true; + var running = null; try { - this.container.clear_widgets(); - this.main = new bricks.DynamicColumn({ - width:"100%", - col_cwidth:this.col_cwidth, - mobile_cols:this.mobile_cols || 2 - }); - this.container.add_widget(this.main); - var d = await this.loader.loadData(p); + var d; + running = new bricks.Running({target:this}); + if (this.data_url){ + if (this.loading){ + bricks.debug('this.loading is set, do not thing'); + throw 't'; + } + this.loading = true; + var p = bricks.extend({}, this.data_params); + if (params){ + p = bricks.extend(p, params); + } + var d = await this.loader.loadData(p); + } else { + if (this.data) { + d = this.data; + } + } if (d){ + this.main.clear_widgets(); this.dataHandle(d); var total = this.container.dom_element.scrollHeight - this.container.dom_element.clientHeight; // this.container.dom_element.scrollTop = d.pos_rate * total; } else { - bricks.debug(this.loader, 'load previous page error'); + bricks.debug(this.loader, 'data is null'); } } catch (e) { bricks.debug('e=', e); } this.loading = false; - running.dismiss(); + if (running) running.dismiss(); } + async load_previous_page(){ + if(! this.data_url) return; if (this.loading){ bricks.debug('this.loading is set, do not thing'); return; @@ -157,6 +177,7 @@ bricks.Cols = class extends bricks.VBox { running.dismiss(); } async load_next_page(){ + if(! this.data_url) return; if (this.loading){ bricks.debug('this.loading is set, do not thing'); return; diff --git a/bricks/popup.js b/bricks/popup.js index 1ee8a61..62c2095 100644 --- a/bricks/popup.js +++ b/bricks/popup.js @@ -419,13 +419,10 @@ bricks.WindowsPanel = class extends bricks.Popup { this.content.dataHandle(data); this.add_widget(this.content); } - add_window(win){ - bricks.app.mwins.push(win); - } del_window(event){ var pos = event.params.pos; - var w = this.mwins[pos]; + var w = bricks.app.mwins[pos]; w.open(); bricks.app.mwins.splice(pos, 1); this.dismiss(); @@ -458,7 +455,7 @@ bricks.PopupWindow = class extends bricks.Popup { this.content_w.set_css('flexbox'); filler.add_widget(this.content_w); if (this.auto_open){ - this.open(); + schedule_once(this.open.bind(this), 0.2); } } build_title_bar(){