This commit is contained in:
yumoqing 2024-02-28 11:49:58 +08:00
parent 81a82f46df
commit 638e629cf1
5 changed files with 57 additions and 20 deletions

View File

@ -91,11 +91,12 @@ bricks.widgetBuild = async function(desc, widget){
return null;
}
desc.options.baseURI = base_url;
let w = new klass(desc.options);
if (desc.hasOwnProperty('id')){
var options = desc.options || {};
let w = new klass(options);
if (desc.id){
w.set_id(desc.id);
}
if (desc.hasOwnProperty('subwidgets')){
if (desc.subwidgets){
for (let i=0; i<desc.subwidgets.length; i++){
let sdesc = desc.subwidgets[i];
let sw = await (bricks.widgetBuild(sdesc, w));
@ -213,6 +214,23 @@ bricks.getRealtimeData = function(w, desc){
return null;
}
var _buildWidget = async function(from_widget, target, mode, options){
console.log('target=', target, 'mode=', mode, 'options=', options);
var w = await (bricks.widgetBuild(options, from_widget));
if (!w){
console.log('options=', options, 'widgetBuild() failed');
return;
}
if (mode == 'replace'){
target.clear_widgets();
target.add_widget(w);
} else if (mode == 'insert'){
target.add_widget(w, 0);
} else {
target.add_widget(w);
}
}
bricks.buildUrlwidgetHandler = function(w, target, rtdata, desc){
var f = async function(target, mode, options){
console.log('target=', target, 'mode=', mode, 'options=', options);
@ -223,16 +241,20 @@ bricks.buildUrlwidgetHandler = function(w, target, rtdata, desc){
}
if (mode == 'replace'){
target.clear_widgets();
target.add_widget(w);
} else if (mode == 'insert'){
target.add_widget(w, 0);
} else {
target.add_widget(w);
}
target.add_widget(w);
}
var options = objcopy(desc.options);
var options = objcopy(desc.options||{});
bricks.extend(options.params, rtdata);
var opts = {
"widgettype":"urlwidget",
"options":options
}
return f.bind(target, target, desc.mode || 'replace', opts);
return _buildWidget.bind(w, target, target, desc.mode || 'replace', opts);
}
bricks.buildBricksHandler = function(w, target, rtdata, desc){
var f = async function(target, mode, options){
@ -247,9 +269,9 @@ bricks.buildBricksHandler = function(w, target, rtdata, desc){
}
target.add_widget(w);
}
var options = objcopy(desc.options);
var options = objcopy(desc.options||{});
bricks.extend(options.options, rtdata);
return f.bind(target, target, desc.mode || 'replace', options);
return _buildWidget.bind(w, target, target, desc.mode || 'replace', options);
}
bricks.buildRegisterFunctionHandler = function(w, target, rtdata, desc){
var f = objget(registerfunctions, desc.rfname);
@ -269,7 +291,7 @@ bricks.buildRegisterFunctionHandler = function(w, target, rtdata, desc){
bricks.buildMethodHandler = function(w, target, rtdata, desc){
var f = target[desc.method];
if (! f){
console.log('method:', desc.method, 'not exists in', target, 'w=', w);
console.log('desc:', 'not exists in', target, 'w=', w);
return null;
}
var params = {};

View File

@ -60,6 +60,7 @@ bricks.DynamicAccordion = class extends bricks.VScrollPanel {
}
render(params) {
console.log('params=', params, 'render() called');
this.clear_widgets();
this.pages = new Map(); // 用于存储已加载的页面数据
this.pageContents = new Map(); // 用于存储已加载的页面内容
@ -143,7 +144,7 @@ bricks.DynamicAccordion = class extends bricks.VScrollPanel {
});
content.set_css('accordion-item-content');
content.hide();
header.bind('click', this.toggle_content.bind(this, content, record));
header.bind('click', this.toggle_content.bind(this, header, content, record));
item.add_widget(header);
item.add_widget(content);
pageContent.add_widget(item);
@ -157,7 +158,9 @@ bricks.DynamicAccordion = class extends bricks.VScrollPanel {
this.add_widget(pageContent);
}
}
async toggle_content(content, record, event){
async toggle_content(header, content, record, event){
var h = this.dom_element.offsetHeight - 3 * header.dom_element.offsetHeight;
content.set_style('height', h + 'px');
if (this.active_content){
if (this.active_content != content){
this.active_content.clear_widgets();

View File

@ -123,16 +123,13 @@ bricks.UiStr =class extends bricks.UiType {
return v[0];
}
set_value_from_input(event){
var oldv = this.value;
var changed = false;
var e = event.target;
if (e.value == ''){
this.value = '';
return
var v = e.value;
if (e.value!='' && e.type != 'file'){
v = this.check_pattern(e.value);
}
if (e.type == 'file'){
this.value = e.value;
return;
}
var v = this.check_pattern(e.value);
if (v == null){
e.value = this.value;
return

View File

@ -31,15 +31,30 @@ bricks.Video = class extends bricks.Layout {
e.controls = true;
this.dom_element = e;
}
disable_captions(){
this.player.nativeTextTracks = false;
var tt = this.player.textTracks()
console.log('textTracks=', tt);
if (tt){
for(var i=0;i<tt.length;i++){
tt[i].mode = 'disabled';
}
}
}
auto_play(){
this.hidedbtn.dispatch('click');
schedule_once(this.disable_captions.bind(this), 2);
}
play(){
this.player.play();
}
create_player(){
console.log('here2');
this.player = videojs(this.dom_element);
this.player = videojs(this.dom_element, {
textTrackSettings: false
});
this.player.ready(this.auto_play.bind(this));
this._set_source();
if (this.opts.autoplay){
// schedule_once(this.auto_play.bind(this), 0.1);

Binary file not shown.