bugfix
This commit is contained in:
parent
1b624ff102
commit
8a32666043
@ -125,6 +125,12 @@ bricks.DataViewer = class extends bricks.VBox {
|
|||||||
selected_row:true,
|
selected_row:true,
|
||||||
icon:this.editable.update_icon || bricks_resource('imgs/edit.svg')
|
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',
|
name:'delete',
|
||||||
tip:'delete selected record',
|
tip:'delete selected record',
|
||||||
@ -164,6 +170,10 @@ bricks.DataViewer = class extends bricks.VBox {
|
|||||||
await this.update_record(this.select_row);
|
await this.update_record(this.select_row);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
if (tdesc.name == 'clone'){
|
||||||
|
await this.clone_record(this.select_row);
|
||||||
|
return;
|
||||||
|
}
|
||||||
if (tdesc.name == 'delete'){
|
if (tdesc.name == 'delete'){
|
||||||
this.delete_record(this.select_row);
|
this.delete_record(this.select_row);
|
||||||
return;
|
return;
|
||||||
@ -207,7 +217,7 @@ bricks.DataViewer = class extends bricks.VBox {
|
|||||||
}
|
}
|
||||||
return fs;
|
return fs;
|
||||||
}
|
}
|
||||||
async build_editform(data){
|
def build_add_form(){
|
||||||
var hidefields = [];
|
var hidefields = [];
|
||||||
if (!this.data_params){
|
if (!this.data_params){
|
||||||
this.data_params = {}
|
this.data_params = {}
|
||||||
@ -215,9 +225,6 @@ bricks.DataViewer = class extends bricks.VBox {
|
|||||||
var opts = this.opts.editor || {};
|
var opts = this.opts.editor || {};
|
||||||
opts.widgettype = 'Form';
|
opts.widgettype = 'Form';
|
||||||
var submit_url = this.editable.new_data_url;
|
var submit_url = this.editable.new_data_url;
|
||||||
if (data) {
|
|
||||||
submit_url = this.editable.update_data_url;
|
|
||||||
}
|
|
||||||
opts.options = {
|
opts.options = {
|
||||||
submit_url: submit_url,
|
submit_url: submit_url,
|
||||||
width: '100%',
|
width: '100%',
|
||||||
@ -226,21 +233,64 @@ bricks.DataViewer = class extends bricks.VBox {
|
|||||||
var fs = this.get_hidefields();
|
var fs = this.get_hidefields();
|
||||||
for (var i=0;i<this.fields.length;i++){
|
for (var i=0;i<this.fields.length;i++){
|
||||||
var f = bricks.extend({}, this.fields[i]);
|
var f = bricks.extend({}, this.fields[i]);
|
||||||
if (data){
|
|
||||||
f.value = data[f.name];
|
|
||||||
}
|
|
||||||
fs.push(f);
|
fs.push(f);
|
||||||
}
|
}
|
||||||
if (data){
|
opts.options.fields = fs
|
||||||
fs.push({name:'id', value:data.id, uitype:'hide'})
|
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
|
opts.options.fields = fs
|
||||||
var title = "Add record";
|
var formw = new bricks.Form(opts);
|
||||||
if (data){
|
return formw;
|
||||||
title = "Edit record";
|
}
|
||||||
}
|
def build_window(icon, title, form){
|
||||||
var f = new bricks.PopupWindow({
|
var f = new bricks.PopupWindow({
|
||||||
"title": title,
|
"title": title,
|
||||||
|
"icon": icon,
|
||||||
"widget":this,
|
"widget":this,
|
||||||
"archor":"cc",
|
"archor":"cc",
|
||||||
"movable":true,
|
"movable":true,
|
||||||
@ -249,18 +299,17 @@ bricks.DataViewer = class extends bricks.VBox {
|
|||||||
"width":"90%",
|
"width":"90%",
|
||||||
"height":"70%"
|
"height":"70%"
|
||||||
});
|
});
|
||||||
var form = await bricks.widgetBuild(opts, this);
|
|
||||||
form.bind('cancel', f.dismiss.bind(f));
|
form.bind('cancel', f.dismiss.bind(f));
|
||||||
f.add_widget(form);
|
f.add_widget(form);
|
||||||
f.open();
|
f.open();
|
||||||
return {
|
return f
|
||||||
win: f,
|
|
||||||
form:form
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
async add_record(){
|
async add_record(){
|
||||||
var widgets = await this.build_editform(null);
|
var icon = bricks_resource('imgs/add.svg');
|
||||||
widgets.form.bind('submited', this.add_record_finish.bind(this, widgets.win));
|
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){
|
async add_record_finish(f, event){
|
||||||
f.dismiss();
|
f.dismiss();
|
||||||
@ -271,8 +320,11 @@ bricks.DataViewer = class extends bricks.VBox {
|
|||||||
}
|
}
|
||||||
async update_record(){
|
async update_record(){
|
||||||
var record = this.select_row.user_data;
|
var record = this.select_row.user_data;
|
||||||
var widgets = await this.build_editform(record);
|
var icon = bricks_resource('imgs/edit.svg');
|
||||||
widgets.form.bind('submited', this.update_record_finish.bind(this, widgets.win, widgets.form));
|
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){
|
async update_record_finish(win, form, event){
|
||||||
await this.renew_record_view(form, this.select_row);
|
await this.renew_record_view(form, this.select_row);
|
||||||
@ -282,6 +334,14 @@ bricks.DataViewer = class extends bricks.VBox {
|
|||||||
w.open();
|
w.open();
|
||||||
win.dismiss();
|
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){
|
delete_record(row, record){
|
||||||
var conform_w = new bricks.Conform({
|
var conform_w = new bricks.Conform({
|
||||||
cwidth:16,
|
cwidth:16,
|
||||||
|
|||||||
@ -229,8 +229,10 @@ bricks.FormBase = class extends bricks.Layout {
|
|||||||
}
|
}
|
||||||
return this.get_formdata();
|
return this.get_formdata();
|
||||||
}
|
}
|
||||||
|
|
||||||
get_formdata(){
|
get_formdata(){
|
||||||
var data = new FormData();
|
var data = new FormData();
|
||||||
|
var changed = false;
|
||||||
for (var name in this.name_inputs){
|
for (var name in this.name_inputs){
|
||||||
if (! this.name_inputs.hasOwnProperty(name)){
|
if (! this.name_inputs.hasOwnProperty(name)){
|
||||||
continue;
|
continue;
|
||||||
@ -245,23 +247,23 @@ bricks.FormBase = class extends bricks.Layout {
|
|||||||
if (d[name] === null){
|
if (d[name] === null){
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
if (this.origin_data[name] == d[name]){
|
||||||
|
continue;
|
||||||
|
}
|
||||||
w.set_formdata(data);
|
w.set_formdata(data);
|
||||||
|
changed = true;
|
||||||
}
|
}
|
||||||
this.data = data;
|
this.data = data;
|
||||||
return data;
|
if (changed){
|
||||||
|
return data;
|
||||||
|
}
|
||||||
|
return null
|
||||||
}
|
}
|
||||||
async validation(){
|
async validation(){
|
||||||
var running = new bricks.Running({target:this});
|
var running = new bricks.Running({target:this});
|
||||||
try {
|
try {
|
||||||
var data;
|
var data;
|
||||||
data = this.get_formdata();
|
data = this.get_formdata();
|
||||||
/*
|
|
||||||
if (this.need_formdata){
|
|
||||||
data = this.get_formdata();
|
|
||||||
} else {
|
|
||||||
data = this.getValue();
|
|
||||||
}
|
|
||||||
*/
|
|
||||||
if (! data) {
|
if (! data) {
|
||||||
running.dismiss();
|
running.dismiss();
|
||||||
return;
|
return;
|
||||||
@ -282,6 +284,14 @@ bricks.FormBase = class extends bricks.Layout {
|
|||||||
}
|
}
|
||||||
running.dismiss();
|
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 {
|
bricks.InlineForm = class extends bricks.FormBase {
|
||||||
@ -293,6 +303,7 @@ bricks.InlineForm = class extends bricks.FormBase {
|
|||||||
this.fg = new bricks.FieldGroup({});
|
this.fg = new bricks.FieldGroup({});
|
||||||
this.fg.build_fields(this, this, this.opts.fields)
|
this.fg.build_fields(this, this, this.opts.fields)
|
||||||
this.build_toolbar(this.children[0]);
|
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);
|
filler.add_widget(this.body);
|
||||||
if (! opts.notoolbar)
|
if (! opts.notoolbar)
|
||||||
this.build_toolbar(this);
|
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:
|
user_icon:
|
||||||
list_models_url:
|
list_models_url:
|
||||||
input_fields:
|
input_fields:
|
||||||
input_view:
|
|
||||||
models:
|
models:
|
||||||
}
|
}
|
||||||
models:[
|
models:[
|
||||||
@ -303,7 +302,7 @@ bricks.LlmIO = class extends bricks.VBox {
|
|||||||
async show_input(params){
|
async show_input(params){
|
||||||
var box = new bricks.HBox({width:'100%'});
|
var box = new bricks.HBox({width:'100%'});
|
||||||
var data = inputdata2dic(params);
|
var data = inputdata2dic(params);
|
||||||
console.log('data=', data, 'input_view=', this.input_view);
|
console.log('data=', data);
|
||||||
var w = new bricks.UserInputView({
|
var w = new bricks.UserInputView({
|
||||||
width: '100%',
|
width: '100%',
|
||||||
input_fields: this.input_fields,
|
input_fields: this.input_fields,
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user