bugfix
This commit is contained in:
parent
29e3fab227
commit
324612d67b
@ -150,18 +150,18 @@ bricks.DataViewer = class extends bricks.VBox {
|
||||
this.add_widget(this.toolbar_w);
|
||||
this.toolbar_w.bind('command', this.command_event_handle.bind(this));
|
||||
}
|
||||
command_event_handle(event){
|
||||
async command_event_handle(event){
|
||||
var tdesc = event.params;
|
||||
if (tdesc.selected_row && ! this.select_row){
|
||||
bricks.show_error({title:'Error', message:'need select a row'});
|
||||
return;
|
||||
}
|
||||
if (tdesc.name == 'add'){
|
||||
this.add_record();
|
||||
await this.add_record();
|
||||
return;
|
||||
}
|
||||
if (tdesc.name == 'update'){
|
||||
this.update_record(this.select_row);
|
||||
await this.update_record(this.select_row);
|
||||
return;
|
||||
}
|
||||
if (tdesc.name == 'delete'){
|
||||
@ -207,28 +207,57 @@ bricks.DataViewer = class extends bricks.VBox {
|
||||
}
|
||||
return fs;
|
||||
}
|
||||
add_record(info){
|
||||
async build_editform(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;
|
||||
if (data) {
|
||||
submit_url = this.editable.update_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++){
|
||||
fs.push(this.fields[i]);
|
||||
var f = bricks.extend({}, this.fields[i]);
|
||||
if (data){
|
||||
f.value = data[f.name];
|
||||
}
|
||||
fields.push(f);
|
||||
}
|
||||
var f = new bricks.ModalForm({
|
||||
opts.options.fields = fs
|
||||
var title = "Add record";
|
||||
if (data){
|
||||
title = "Edit record";
|
||||
}
|
||||
var f = new bricks.PopupWindow({
|
||||
"title": title,
|
||||
"widget":this,
|
||||
"archor":"cc",
|
||||
"movable":true,
|
||||
"resizable":true,
|
||||
"archor":"cc",
|
||||
"width":"90%",
|
||||
"height":"70%",
|
||||
"submit_url":this.editable.new_data_url,
|
||||
"fields":fs
|
||||
"height":"70%"
|
||||
});
|
||||
var form = await bricks.widgetBuild(opts, this);
|
||||
form.bind('cancel', f.dismiss.bind(f));
|
||||
f.add_widget(form);
|
||||
f.open();
|
||||
f.bind('submited', this.add_record_finish.bind(this, f));
|
||||
return {
|
||||
win: f,
|
||||
form:form
|
||||
}
|
||||
}
|
||||
async add_record(){
|
||||
var widgets = await build_editform(null);
|
||||
widgets.form.bind('submited', this.add_record_finish.bind(this, widgets.win));
|
||||
}
|
||||
async add_record_finish(f, event){
|
||||
f.dismiss();
|
||||
@ -237,29 +266,10 @@ bricks.DataViewer = class extends bricks.VBox {
|
||||
var desc = await resp.json();
|
||||
var w = await bricks.widgetBuild(desc);
|
||||
}
|
||||
update_record(){
|
||||
async update_record(){
|
||||
var record = this.select_row.user_data;
|
||||
var fields = this.get_hidefields();
|
||||
for (var i=0; i< this.fields.length; i++){
|
||||
var f = bricks.extend({}, this.fields[i]);
|
||||
f.value = record[f.name];
|
||||
fields.push(f);
|
||||
}
|
||||
var f = new bricks.ModalForm({
|
||||
"widget":this,
|
||||
"movable":true,
|
||||
"resizable":true,
|
||||
"archor":"cc",
|
||||
"width":"90%",
|
||||
"height":"70%",
|
||||
"submit_url":this.editable.update_data_url+'?id=' + record.id,
|
||||
"fields":fields
|
||||
});
|
||||
f.open();
|
||||
f.bind('submited', this.update_record_finish.bind(this, f));
|
||||
}
|
||||
update_cancel(f){
|
||||
f.dismiss();
|
||||
var widgets = await build_editform(record);
|
||||
widgets.form.bind('submited', this.update_record_finish.bind(this, widgets.win));
|
||||
}
|
||||
async update_record_finish(form, event){
|
||||
await this.renew_record_view(form, this.select_row);
|
||||
|
@ -46,6 +46,7 @@ bricks.FieldGroup = class {
|
||||
if (w){
|
||||
box.add_widget(w);
|
||||
form.name_inputs[fields[i].name] = w;
|
||||
w.set_id(fields[i].name);
|
||||
} else {
|
||||
bricks.debug(fields[i], 'createInput failed');
|
||||
}
|
||||
|
@ -959,14 +959,19 @@ bricks.UiCode =class extends bricks.UiType {
|
||||
}
|
||||
this.build_options(this.opts.data);
|
||||
}
|
||||
async loadData(params){
|
||||
var _params = bricks.extend({}, this.opts.params);
|
||||
bricks.extend(_params, params);
|
||||
await this.load_data(_params);
|
||||
}
|
||||
async get_data(event){
|
||||
var params = this.opts.params;
|
||||
if(event){
|
||||
bricks.extend(params, event.params);
|
||||
}
|
||||
await this.loadData(params);
|
||||
await this.load_data(params);
|
||||
}
|
||||
async loadData(params){
|
||||
async load_data(params){
|
||||
var jc = new bricks.HttpJson();
|
||||
var d = await jc.httpcall(this.opts.dataurl,
|
||||
{
|
||||
|
@ -129,7 +129,7 @@ bricks.HttpText = class {
|
||||
params: opts.params});
|
||||
if (fetchResult.status == 401 && bricks.app.login_url){
|
||||
console.log('go to login')
|
||||
return await this.withLoginInfo(url, _params);
|
||||
return await this.withLoginInfo(url, opts.params);
|
||||
}
|
||||
if (fetchResult.status == 403){
|
||||
var w = new bricks.Error({
|
||||
|
@ -183,11 +183,12 @@ bricks.ModalForm = class extends bricks.PopupWindow {
|
||||
description:
|
||||
fields:
|
||||
user_data:
|
||||
binds:
|
||||
}
|
||||
*/
|
||||
constructor(opts){
|
||||
super(opts);
|
||||
this.build_form();
|
||||
schedule_once(this.build_form.bind(this), 0.2);
|
||||
}
|
||||
_getValue(){
|
||||
return this.form._getValue();
|
||||
@ -195,17 +196,21 @@ bricks.ModalForm = class extends bricks.PopupWindow {
|
||||
getValue(){
|
||||
return this.form.getValue();
|
||||
}
|
||||
build_form(){
|
||||
async build_form(){
|
||||
var opts = {
|
||||
height:'100%',
|
||||
title:this.opts.title,
|
||||
description:this.opts.description,
|
||||
fields:this.opts.fields
|
||||
widgettype: "Form",
|
||||
options:{
|
||||
height:'100%',
|
||||
title:this.opts.title,
|
||||
description:this.opts.description,
|
||||
fields:this.opts.fields,
|
||||
binds:this.opts.binds || []
|
||||
}
|
||||
}
|
||||
if (this.submit_url){
|
||||
opts.submit_url = this.submit_url;
|
||||
}
|
||||
this.form = new bricks.Form(opts);
|
||||
this.form = await bricks.widgetBuild(opts, this);
|
||||
this.add_widget(this.form);
|
||||
this.form.bind('submit', this.form_submit.bind(this));
|
||||
this.form.bind('submited', this.form_submited.bind(this));
|
||||
|
@ -88,7 +88,6 @@ bricks.StatedSvg = class extends bricks.Svg {
|
||||
this.state = this.states[0].state;
|
||||
}
|
||||
var url = this.set_state(this.state);
|
||||
this.set_url(url);
|
||||
}
|
||||
}
|
||||
set_state(state){
|
||||
|
@ -115,13 +115,13 @@ bricks.TreeNode = class extends bricks.VBox {
|
||||
widget.add_widget(this.check_w);
|
||||
this.check_w.bind('changed', this.tree.node_checked.bind(this.tree, this))
|
||||
}
|
||||
var icon_url = self.this.icons_urls.leaf;
|
||||
var icon_url = this.icons_urls.leaf;
|
||||
if (this.is_leaf) icon_url = this.icons_urls.leaf;
|
||||
else if (this.node_state == 'expand') this.icon_url = this.icons_urls.open;
|
||||
else this.icon_url = this.icons_urls.close;
|
||||
var img = new bricks.Svg({
|
||||
rate:1,
|
||||
url:icon
|
||||
url:this.icon_url
|
||||
});
|
||||
widget.add_widget(img);
|
||||
if (this.tree.node_view){
|
||||
@ -246,7 +246,7 @@ bricks.Tree = class extends bricks.VScrollPanel {
|
||||
var tools = [];
|
||||
if (this.editable){
|
||||
tools.push({icon:bricks_resource('imgs/add.svg'), name:'add'});
|
||||
tools.push({icon:bricks_resource('imgs/update.svg'), name:'update'});
|
||||
tools.push({icon:bricks_resource('imgs/edit.svg'), name:'update'});
|
||||
tools.push({icon:bricks_resource('imgs/delete.svg'), name:'delete'});
|
||||
}
|
||||
if (toolbar.tools){
|
||||
|
Loading…
Reference in New Issue
Block a user