bugfix
This commit is contained in:
parent
1b624ff102
commit
8a32666043
@ -125,6 +125,12 @@ bricks.DataViewer = class extends bricks.VBox {
|
||||
selected_row:true,
|
||||
icon:this.editable.update_icon || bricks_resource('imgs/edit.svg')
|
||||
},
|
||||
{
|
||||
name:'clone',
|
||||
tip:'update selected record',
|
||||
selected_row:true,
|
||||
icon:this.editable.clone_icon || bricks_resource('imgs/clonevg')
|
||||
},
|
||||
{
|
||||
name:'delete',
|
||||
tip:'delete selected record',
|
||||
@ -164,6 +170,10 @@ bricks.DataViewer = class extends bricks.VBox {
|
||||
await this.update_record(this.select_row);
|
||||
return;
|
||||
}
|
||||
if (tdesc.name == 'clone'){
|
||||
await this.clone_record(this.select_row);
|
||||
return;
|
||||
}
|
||||
if (tdesc.name == 'delete'){
|
||||
this.delete_record(this.select_row);
|
||||
return;
|
||||
@ -207,7 +217,7 @@ bricks.DataViewer = class extends bricks.VBox {
|
||||
}
|
||||
return fs;
|
||||
}
|
||||
async build_editform(data){
|
||||
def build_add_form(){
|
||||
var hidefields = [];
|
||||
if (!this.data_params){
|
||||
this.data_params = {}
|
||||
@ -215,9 +225,6 @@ bricks.DataViewer = class extends bricks.VBox {
|
||||
var opts = this.opts.editor || {};
|
||||
opts.widgettype = 'Form';
|
||||
var submit_url = this.editable.new_data_url;
|
||||
if (data) {
|
||||
submit_url = this.editable.update_data_url;
|
||||
}
|
||||
opts.options = {
|
||||
submit_url: submit_url,
|
||||
width: '100%',
|
||||
@ -226,21 +233,64 @@ bricks.DataViewer = class extends bricks.VBox {
|
||||
var fs = this.get_hidefields();
|
||||
for (var i=0;i<this.fields.length;i++){
|
||||
var f = bricks.extend({}, this.fields[i]);
|
||||
if (data){
|
||||
f.value = data[f.name];
|
||||
}
|
||||
fs.push(f);
|
||||
}
|
||||
if (data){
|
||||
opts.options.fields = fs
|
||||
var formw = new bricks.Form(opts);
|
||||
return formw;
|
||||
}
|
||||
def build_update_form(data){
|
||||
var hidefields = [];
|
||||
if (!this.data_params){
|
||||
this.data_params = {}
|
||||
}
|
||||
var opts = this.opts.editor || {};
|
||||
opts.widgettype = 'Form';
|
||||
var submit_url = this.editable.new_data_url;
|
||||
opts.options = {
|
||||
submit_url: submit_url,
|
||||
submit_changed:true,
|
||||
width: '100%',
|
||||
height: '100%'
|
||||
};
|
||||
var fs = this.get_hidefields();
|
||||
for (var i=0;i<this.fields.length;i++){
|
||||
var f = bricks.extend({}, this.fields[i]);
|
||||
f.value = data[f.name];
|
||||
fs.push(f);
|
||||
}
|
||||
fs.push({name:'id', value:data.id, uitype:'hide'})
|
||||
opts.options.fields = fs
|
||||
var formw = new bricks.Form(opts);
|
||||
return formw;
|
||||
}
|
||||
def build_clone_form(data){
|
||||
var hidefields = [];
|
||||
if (!this.data_params){
|
||||
this.data_params = {}
|
||||
}
|
||||
var opts = this.opts.editor || {};
|
||||
opts.widgettype = 'Form';
|
||||
var submit_url = this.editable.new_data_url;
|
||||
opts.options = {
|
||||
submit_url: submit_url,
|
||||
width: '100%',
|
||||
height: '100%'
|
||||
};
|
||||
var fs = this.get_hidefields();
|
||||
for (var i=0;i<this.fields.length;i++){
|
||||
var f = bricks.extend({}, this.fields[i]);
|
||||
f.value = data[f.name];
|
||||
fs.push(f);
|
||||
}
|
||||
opts.options.fields = fs
|
||||
var title = "Add record";
|
||||
if (data){
|
||||
title = "Edit record";
|
||||
var formw = new bricks.Form(opts);
|
||||
return formw;
|
||||
}
|
||||
def build_window(icon, title, form){
|
||||
var f = new bricks.PopupWindow({
|
||||
"title": title,
|
||||
"icon": icon,
|
||||
"widget":this,
|
||||
"archor":"cc",
|
||||
"movable":true,
|
||||
@ -249,18 +299,17 @@ bricks.DataViewer = class extends bricks.VBox {
|
||||
"width":"90%",
|
||||
"height":"70%"
|
||||
});
|
||||
var form = await bricks.widgetBuild(opts, this);
|
||||
form.bind('cancel', f.dismiss.bind(f));
|
||||
f.add_widget(form);
|
||||
f.open();
|
||||
return {
|
||||
win: f,
|
||||
form:form
|
||||
}
|
||||
return f
|
||||
}
|
||||
async add_record(){
|
||||
var widgets = await this.build_editform(null);
|
||||
widgets.form.bind('submited', this.add_record_finish.bind(this, widgets.win));
|
||||
var icon = bricks_resource('imgs/add.svg');
|
||||
var title = bricks.app.i18n._("Add record");
|
||||
var form = this.build_add_form();
|
||||
var win = this.build_window(icon, title, form);
|
||||
form.bind('submited', this.add_record_finish.bind(this, win));
|
||||
}
|
||||
async add_record_finish(f, event){
|
||||
f.dismiss();
|
||||
@ -271,8 +320,11 @@ bricks.DataViewer = class extends bricks.VBox {
|
||||
}
|
||||
async update_record(){
|
||||
var record = this.select_row.user_data;
|
||||
var widgets = await this.build_editform(record);
|
||||
widgets.form.bind('submited', this.update_record_finish.bind(this, widgets.win, widgets.form));
|
||||
var icon = bricks_resource('imgs/edit.svg');
|
||||
var title = bricks.app.i18n._("Update record");
|
||||
var form = this.build_update_form(record);
|
||||
var win = this.build_window(icon, title, form);
|
||||
form.bind('submited', this.update_record_finish.bind(this, win));
|
||||
}
|
||||
async update_record_finish(win, form, event){
|
||||
await this.renew_record_view(form, this.select_row);
|
||||
@ -282,6 +334,14 @@ bricks.DataViewer = class extends bricks.VBox {
|
||||
w.open();
|
||||
win.dismiss();
|
||||
}
|
||||
async def clone_record(){
|
||||
var record = this.select_row.user_data;
|
||||
var icon = bricks_resource('imgs/clone.svg');
|
||||
var title = bricks.app.i18n._("Clone record");
|
||||
var form = this.build_update_form(record);
|
||||
var win = this.build_window(icon, title, form);
|
||||
form.bind('submited', this.add_record_finish.bind(this, win));
|
||||
}
|
||||
delete_record(row, record){
|
||||
var conform_w = new bricks.Conform({
|
||||
cwidth:16,
|
||||
|
||||
@ -229,8 +229,10 @@ bricks.FormBase = class extends bricks.Layout {
|
||||
}
|
||||
return this.get_formdata();
|
||||
}
|
||||
|
||||
get_formdata(){
|
||||
var data = new FormData();
|
||||
var changed = false;
|
||||
for (var name in this.name_inputs){
|
||||
if (! this.name_inputs.hasOwnProperty(name)){
|
||||
continue;
|
||||
@ -245,23 +247,23 @@ bricks.FormBase = class extends bricks.Layout {
|
||||
if (d[name] === null){
|
||||
continue;
|
||||
}
|
||||
if (this.origin_data[name] == d[name]){
|
||||
continue;
|
||||
}
|
||||
w.set_formdata(data);
|
||||
changed = true;
|
||||
}
|
||||
this.data = data;
|
||||
if (changed){
|
||||
return data;
|
||||
}
|
||||
return null
|
||||
}
|
||||
async validation(){
|
||||
var running = new bricks.Running({target:this});
|
||||
try {
|
||||
var data;
|
||||
data = this.get_formdata();
|
||||
/*
|
||||
if (this.need_formdata){
|
||||
data = this.get_formdata();
|
||||
} else {
|
||||
data = this.getValue();
|
||||
}
|
||||
*/
|
||||
if (! data) {
|
||||
running.dismiss();
|
||||
return;
|
||||
@ -282,6 +284,14 @@ bricks.FormBase = class extends bricks.Layout {
|
||||
}
|
||||
running.dismiss();
|
||||
}
|
||||
save_origin_data(){
|
||||
this.origin_data = {};
|
||||
for (var name in this.name_inputs){
|
||||
var w = this.name_inputs[name];
|
||||
var d = w.getValue();
|
||||
this.origin_data[name] = d[name];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
bricks.InlineForm = class extends bricks.FormBase {
|
||||
@ -293,6 +303,7 @@ bricks.InlineForm = class extends bricks.FormBase {
|
||||
this.fg = new bricks.FieldGroup({});
|
||||
this.fg.build_fields(this, this, this.opts.fields)
|
||||
this.build_toolbar(this.children[0]);
|
||||
this.save_origin_data();
|
||||
}
|
||||
}
|
||||
|
||||
@ -381,6 +392,7 @@ bricks.Form = class extends bricks.FormBase {
|
||||
filler.add_widget(this.body);
|
||||
if (! opts.notoolbar)
|
||||
this.build_toolbar(this);
|
||||
this.save_origin_data();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
2
bricks/imgs/clone.svg
Normal file
2
bricks/imgs/clone.svg
Normal file
@ -0,0 +1,2 @@
|
||||
<svg t="1758835169250" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="6259" width="100% height="100%"><path d="M901 256H317c-33 0-60 27-60 60v584c0 33 27 60 60 60h584c33 0 60-27 60-60V316c0-33-27-60-60-60z m0 643.893a0.901 0.901 0 0 1-0.107 0.107H317.108a0.901 0.901 0 0 1-0.107-0.107V316.108a0.901 0.901 0 0 1 0.107-0.107h583.784V316c0.037 0.031 0.076 0.07 0.108 0.108v583.785z" fill="#ee8080"" p-id="6260"></path>
|
||||
<path d="M783.5 578h-145V433.578c0-15.188-11.071-28.423-26.138-30.333C594.16 400.938 578.5 415.229 578.5 433v145h-145c-16.5 0-30 13.5-30 30s13.5 30 30 30h145v144.422c0 15.188 11.071 28.423 26.138 30.333C622.84 815.062 638.5 800.771 638.5 783V638h145c16.5 0 30-13.5 30-30s-13.5-30-30-30zM482 124h189c16.5 0 30-13.5 30-30s-13.5-30-30-30H125c-33 0-60 27-60 60v547c0 16.5 13.5 30 30 30s30-13.5 30-30V124h357z" fill="${color}" p-id="6261"></path></svg>
|
||||
|
After Width: | Height: | Size: 909 B |
@ -244,7 +244,6 @@ bricks.LlmIO = class extends bricks.VBox {
|
||||
user_icon:
|
||||
list_models_url:
|
||||
input_fields:
|
||||
input_view:
|
||||
models:
|
||||
}
|
||||
models:[
|
||||
@ -303,7 +302,7 @@ bricks.LlmIO = class extends bricks.VBox {
|
||||
async show_input(params){
|
||||
var box = new bricks.HBox({width:'100%'});
|
||||
var data = inputdata2dic(params);
|
||||
console.log('data=', data, 'input_view=', this.input_view);
|
||||
console.log('data=', data);
|
||||
var w = new bricks.UserInputView({
|
||||
width: '100%',
|
||||
input_fields: this.input_fields,
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user