fix: data_filter form fields missing uitype and browserfields lookup

1. Default uitype to 'str' when no alter matches (text input)
2. Handle alter.uitype='select' by converting to code with inline data
3. Read browserfields from opts.row_options.browserfields (CRUD-generated
   UIs nest it under row_options, not at opts top level)
This commit is contained in:
yumoqing 2026-05-30 01:18:55 +08:00
parent 94a95b529b
commit 81fd808d02

View File

@ -268,7 +268,8 @@ bricks.DataViewer = class extends bricks.VBox {
get_filter_fields(){
var fields = [];
var self = this;
var alters = (this.opts.browserfields && this.opts.browserfields.alters) || {};
var bf = this.opts.browserfields || (this.opts.row_options && this.opts.row_options.browserfields) || {};
var alters = bf.alters || {};
var labels = this.opts.filter_labels || {};
function extract(node){
@ -304,6 +305,11 @@ bricks.DataViewer = class extends bricks.VBox {
if (alter.data_field){
f.data_field = alter.data_field;
}
} else if (alter.uitype === 'select' && alter.options){
f.uitype = 'code';
f.data = alter.options;
} else {
f.uitype = 'str';
}
fields.push(f);
}