listview in linked_with
This commit is contained in:
parent
09e2d37f78
commit
037ae044ac
4 changed files with 186 additions and 37 deletions
143
public/js/wn/form/assign_to.js
Normal file
143
public/js/wn/form/assign_to.js
Normal file
|
|
@ -0,0 +1,143 @@
|
|||
// Copyright (c) 2012 Web Notes Technologies Pvt Ltd (http://erpnext.com)
|
||||
//
|
||||
// MIT License (MIT)
|
||||
//
|
||||
// Permission is hereby granted, free of charge, to any person obtaining a
|
||||
// copy of this software and associated documentation files (the "Software"),
|
||||
// to deal in the Software without restriction, including without limitation
|
||||
// the rights to use, copy, modify, merge, publish, distribute, sublicense,
|
||||
// and/or sell copies of the Software, and to permit persons to whom the
|
||||
// Software is furnished to do so, subject to the following conditions:
|
||||
//
|
||||
// The above copyright notice and this permission notice shall be included in
|
||||
// all copies or substantial portions of the Software.
|
||||
//
|
||||
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,
|
||||
// INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
|
||||
// PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
|
||||
// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF
|
||||
// CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE
|
||||
// OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
//
|
||||
|
||||
// assign to is lined to todo
|
||||
// refresh - load todos
|
||||
// create - new todo
|
||||
// delete to do
|
||||
|
||||
wn.provide("wn.ui.form");
|
||||
|
||||
wn.ui.form.AssignTo = Class.extend({
|
||||
init: function(opts) {
|
||||
$.extend(this, opts);
|
||||
var me = this;
|
||||
this.wrapper = $('<div>\
|
||||
<button class="btn"><i class="icon-plus"></i></button>\
|
||||
<div class="alert-list"></div>\
|
||||
</div>').appendTo(this.parent);
|
||||
|
||||
this.$list = this.wrapper.find(".alert-list");
|
||||
|
||||
this.wrapper.find(".btn").click(function() {
|
||||
me.add();
|
||||
});
|
||||
},
|
||||
refresh: function() {
|
||||
if(this.frm.doc.__islocal) {
|
||||
this.parent.toggle(false);
|
||||
return;
|
||||
}
|
||||
this.parent.toggle(true);
|
||||
|
||||
var me = this;
|
||||
wn.call({
|
||||
method: 'webnotes.widgets.form.assign_to.get',
|
||||
args: {
|
||||
doctype: me.frm.doctype,
|
||||
name: me.frm.docname
|
||||
},
|
||||
callback: function(r) {
|
||||
me.render(r.message)
|
||||
}
|
||||
})
|
||||
},
|
||||
render: function(d) {
|
||||
var me = this;
|
||||
this.$list.empty();
|
||||
if(this.dialog) {
|
||||
this.dialog.hide();
|
||||
}
|
||||
|
||||
for(var i=0; i<d.length; i++) {
|
||||
$.extend(d[i], wn.user_info(d[i].owner));
|
||||
d[i].avatar = wn.avatar(d[i].owner);
|
||||
|
||||
$(repl('<div class="alert alert-success" style="height: 19px; margin-top: 3px">\
|
||||
%(avatar)s %(fullname)s \
|
||||
<a class="close" href="#" style="top: 1px;"\
|
||||
data-owner="%(owner)s">×</a></div>', d[i]))
|
||||
.appendTo(this.$list);
|
||||
|
||||
this.$list.find(".avatar").css("margin-top", "-7px")
|
||||
this.$list.find('.avatar img').centerImage();
|
||||
}
|
||||
|
||||
// set remove
|
||||
this.$list.find('a.close').click(function() {
|
||||
wn.call({
|
||||
method:'webnotes.widgets.form.assign_to.remove',
|
||||
args: {
|
||||
doctype: me.frm.doctype,
|
||||
name: me.frm.docname,
|
||||
assign_to: $(this).attr('data-owner')
|
||||
},
|
||||
callback:function(r,rt) {me.render(r.message);}
|
||||
});
|
||||
return false;
|
||||
});
|
||||
},
|
||||
add: function() {
|
||||
var me = this;
|
||||
if(!me.dialog) {
|
||||
me.dialog = new wn.ui.Dialog({
|
||||
title: 'Add to To Do',
|
||||
width: 350,
|
||||
fields: [
|
||||
{fieldtype:'Link', fieldname:'assign_to', options:'Profile',
|
||||
label:wn._("Assign To"),
|
||||
description:wn._("Add to To Do List of"), reqd:true},
|
||||
{fieldtype:'Data', fieldname:'description', label:wn._("Comment")},
|
||||
{fieldtype:'Date', fieldname:'date', label: wn._("Complete By")},
|
||||
{fieldtype:'Select', fieldname:'priority', label: wn._("Priority"),
|
||||
options:'Low\nMedium\nHigh', 'default':'Medium'},
|
||||
{fieldtype:'Check', fieldname:'notify', label: wn._("Notify By Email")},
|
||||
{fieldtype:'Button', label:wn._("Add"), fieldname:'add_btn'}
|
||||
]
|
||||
});
|
||||
me.dialog.fields_dict.add_btn.input.onclick = function() {
|
||||
|
||||
var assign_to = me.dialog.fields_dict.assign_to.get_value();
|
||||
if(assign_to) {
|
||||
wn.call({
|
||||
method:'webnotes.widgets.form.assign_to.add',
|
||||
args: {
|
||||
doctype: me.frm.doctype,
|
||||
name: me.frm.docname,
|
||||
assign_to: assign_to,
|
||||
description: me.dialog.fields_dict.description.get_value(),
|
||||
priority: me.dialog.fields_dict.priority.get_value(),
|
||||
date: me.dialog.fields_dict.date.get_value(),
|
||||
notify: me.dialog.fields_dict.notify.get_value()
|
||||
},
|
||||
callback: function(r,rt) {
|
||||
me.render(r.message);
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
me.dialog.clear();
|
||||
me.dialog.show();
|
||||
}
|
||||
});
|
||||
|
||||
|
|
@ -22,7 +22,7 @@ wn.ui.form.LinkedWith = Class.extend({
|
|||
}).sort(function(a, b) { return a.label > b.label ? 1 : -1 });
|
||||
|
||||
this.dialog = new wn.ui.Dialog({
|
||||
width: 640,
|
||||
width: 700,
|
||||
title: wn._("Linked With"),
|
||||
fields: [
|
||||
{ fieldtype: "HTML", label: "help",
|
||||
|
|
@ -60,6 +60,7 @@ wn.ui.form.LinkedWith = Class.extend({
|
|||
},
|
||||
make_listing: function() {
|
||||
var me = this;
|
||||
this.listview = wn.views.get_listview(this.doctype, this);
|
||||
this.lst = new wn.ui.Listing({
|
||||
hide_refresh: true,
|
||||
no_loading: true,
|
||||
|
|
@ -69,34 +70,37 @@ wn.ui.form.LinkedWith = Class.extend({
|
|||
parent: $(this.dialog.fields_dict.list.wrapper).empty().css("min-height", "300px")
|
||||
.get(0),
|
||||
method: 'webnotes.widgets.reportview.get',
|
||||
custom_new_doc: me.listview.make_new_doc || undefined,
|
||||
get_args: function() {
|
||||
return {
|
||||
doctype: me.doctype,
|
||||
fields: (!me.is_table
|
||||
? [ '`tab' + me.doctype + '`.name',
|
||||
'`tab' + me.doctype + '`.modified',
|
||||
'`tab' + me.doctype + '`.modified_by',
|
||||
'`tab' + me.doctype + '`.docstatus']
|
||||
: [ '`tab' + me.doctype + '`.parent',
|
||||
'`tab' + me.doctype + '`.parenttype',
|
||||
'`tab' + me.doctype + '`.modified_by',
|
||||
'`tab' + me.doctype + '`.docstatus']
|
||||
),
|
||||
filters: me.lst.filter_list.get_filters(),
|
||||
docstatus: ['0','1']
|
||||
var args = {
|
||||
doctype: this.doctype,
|
||||
fields: this.listview.fields,
|
||||
filters: this.filter_list.get_filters(),
|
||||
docstatus: ['0','1'],
|
||||
order_by: this.listview.order_by || undefined,
|
||||
group_by: this.listview.group_by || undefined,
|
||||
}
|
||||
return args;
|
||||
|
||||
// return {
|
||||
// doctype: me.doctype,
|
||||
// fields: (!me.is_table
|
||||
// ? [ '`tab' + me.doctype + '`.name',
|
||||
// '`tab' + me.doctype + '`.modified',
|
||||
// '`tab' + me.doctype + '`.modified_by',
|
||||
// '`tab' + me.doctype + '`.docstatus']
|
||||
// : [ '`tab' + me.doctype + '`.parent',
|
||||
// '`tab' + me.doctype + '`.parenttype',
|
||||
// '`tab' + me.doctype + '`.modified_by',
|
||||
// '`tab' + me.doctype + '`.docstatus']
|
||||
// ),
|
||||
// filters: me.lst.filter_list.get_filters(),
|
||||
// docstatus: ['0','1']
|
||||
// }
|
||||
},
|
||||
render_row: function(parent, data) {
|
||||
$(parent).html(repl('%(avatar)s \
|
||||
<a href="#Form/%(doctype)s/%(name)s" onclick="cur_dialog.hide()">\
|
||||
%(doctype)s: %(name)s</a>\
|
||||
<span class="help">Last Updated: %(modified)s</span>', {
|
||||
avatar: wn.avatar(data.modified_by, null,
|
||||
"Last Modified By: " + wn.user_info(data.modified_by).fullname),
|
||||
doctype: me.is_table ? data.parenttype : me.doctype,
|
||||
modified: dateutil.comment_when(data.modified),
|
||||
name: me.is_table ? data.parent : data.name
|
||||
})).find('.avatar img').centerImage();
|
||||
data.doctype = this.doctype;
|
||||
me.listview.render(parent, data, this);
|
||||
},
|
||||
get_no_result_message: function() {
|
||||
return repl("<div class='alert'>%(doctype)s: " + wn._("Not linked") + "</div>", {
|
||||
|
|
@ -108,5 +112,6 @@ wn.ui.form.LinkedWith = Class.extend({
|
|||
me.lst.filter_list.show_filters(true);
|
||||
me.lst.filter_list.clear_filters();
|
||||
me.lst.set_filter(me.linked_with[me.doctype], me.frm.doc.name);
|
||||
me.lst.listview = me.listview;
|
||||
}
|
||||
});
|
||||
|
|
@ -129,13 +129,7 @@ wn.views.DocListView = wn.ui.Listing.extend({
|
|||
}
|
||||
},
|
||||
setup_listview: function() {
|
||||
if(this.meta.__listjs) {
|
||||
eval(this.meta.__listjs);
|
||||
this.listview = new wn.doclistviews[this.doctype](this);
|
||||
} else {
|
||||
this.listview = new wn.views.ListView(this);
|
||||
}
|
||||
this.listview.parent = this;
|
||||
this.listview = wn.views.get_listview(this.doctype, this);
|
||||
this.wrapper = this.$page.find('.wnlist-area');
|
||||
this.page_length = 20;
|
||||
this.allow_delete = true;
|
||||
|
|
@ -155,7 +149,6 @@ wn.views.DocListView = wn.ui.Listing.extend({
|
|||
new_doctype: this.doctype,
|
||||
allow_delete: this.allow_delete,
|
||||
no_result_message: this.make_no_result(),
|
||||
columns: this.listview.fields,
|
||||
custom_new_doc: me.listview.make_new_doc || undefined,
|
||||
});
|
||||
|
||||
|
|
@ -188,9 +181,6 @@ wn.views.DocListView = wn.ui.Listing.extend({
|
|||
});
|
||||
data.doctype = this.doctype;
|
||||
this.listview.render(row, data, this);
|
||||
},
|
||||
get_query_fields: function() {
|
||||
return this.listview.fields;
|
||||
},
|
||||
get_args: function() {
|
||||
var docstatus_list = this.can_submit ? $.map(this.$page.find('.show-docstatus :checked'),
|
||||
|
|
@ -200,7 +190,7 @@ wn.views.DocListView = wn.ui.Listing.extend({
|
|||
|
||||
var args = {
|
||||
doctype: this.doctype,
|
||||
fields: this.get_query_fields(),
|
||||
fields: this.listview.fields,
|
||||
filters: this.filter_list.get_filters(),
|
||||
docstatus: docstatus_list,
|
||||
order_by: this.listview.order_by || undefined,
|
||||
|
|
|
|||
|
|
@ -1,3 +1,14 @@
|
|||
wn.views.get_listview = function(doctype, parent) {
|
||||
var meta = locals.DocType[doctype];
|
||||
if(meta.__listjs) {
|
||||
eval(meta.__listjs);
|
||||
var listview = new wn.doclistviews[doctype](parent);
|
||||
} else {
|
||||
var listview = new wn.views.ListView(parent);
|
||||
}
|
||||
return listview;
|
||||
}
|
||||
|
||||
wn.views.ListView = Class.extend({
|
||||
init: function(doclistview) {
|
||||
this.doclistview = doclistview;
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue