@@ -47,36 +47,34 @@ wn.ui.form.LinkedWith = Class.extend({ | |||
} | |||
this.dialog.onshow = function() { | |||
me.dialog.fields_dict.list.$wrapper.html('<div class="progress">\ | |||
<div class="progress-bar progress-bar-striped" style="width: 100%;">\ | |||
me.dialog.fields_dict.list.$wrapper.html('<div class="progress progress-striped active">\ | |||
<div class="progress-bar" style="width: 100%;">\ | |||
</div></div>'); | |||
wn.call({ | |||
method:"webnotes.widgets.form.utils.get_linked_docs", | |||
args: { | |||
doctype: me.frm.doctype, | |||
name: me.frm.docname | |||
name: me.frm.docname, | |||
metadata_loaded: keys(locals.DocType) | |||
}, | |||
callback: function(r) { | |||
if(r.message) { | |||
var html = ""; | |||
$.each(keys(r.message).sort(), function(i, key) { | |||
html += "<h4>" + wn._(key) + "</h4><ul class='linked-with-list'>" | |||
$.each(r.message[key], function(i, d) { | |||
html += "<li><a href='#Form/"+key+"/"+d.name+"'>" + d.name + "</a>"+ | |||
'<span class="text-muted small"> ' + | |||
$.map(d, function(v, k) { | |||
return ["name", "modified"].indexOf(k)!==-1 ? null : v }).join(", ") | |||
+ '</span>' | |||
+ '<span class="pull-right text-muted small">' + comment_when(d.modified) + '<span>' | |||
+"</li>"; | |||
var parent = me.dialog.fields_dict.list.$wrapper.empty(); | |||
if(keys(r.message || {}).length) { | |||
$.each(keys(r.message).sort(), function(i, doctype) { | |||
var listview = wn.views.get_listview(doctype, me); | |||
listview.no_delete = true; | |||
$("<h4>").html(wn._(doctype)).appendTo(parent); | |||
$.each(r.message[doctype].values, function(i, d) { | |||
d.doctype = doctype; | |||
listview.render($("<div>").appendTo(parent), d, me); | |||
}) | |||
html+="</ul>" | |||
}) | |||
} else { | |||
html = wn._("Not Linked to any record."); | |||
parent.html(wn._("Not Linked to any record.")); | |||
} | |||
me.dialog.fields_dict.list.$wrapper.html(html); | |||
} | |||
}) | |||
} | |||
@@ -1,9 +1,7 @@ | |||
// Copyright (c) 2013, Web Notes Technologies Pvt. Ltd. and Contributors | |||
// MIT License. See license.txt | |||
wn.views.get_listview = function(doctype, parent) { | |||
var meta = locals.DocType[doctype]; | |||
wn.views.get_listview = function(doctype, parent) { | |||
if(wn.doclistviews[doctype]) { | |||
var listview = new wn.doclistviews[doctype](parent); | |||
} else { | |||
@@ -225,7 +223,7 @@ wn.views.ListView = Class.extend({ | |||
return col; | |||
}, | |||
render_avatar_and_id: function(data, parent) { | |||
if(wn.model.can_delete(this.doctype) || this.settings.selectable) { | |||
if((wn.model.can_delete(this.doctype) || this.settings.selectable) && !this.no_delete) { | |||
$('<input class="list-delete" type="checkbox">') | |||
.data('name', data.name) | |||
.data('data', data) | |||
@@ -85,20 +85,18 @@ def get_next(doctype, name, prev): | |||
return res[0][0] | |||
@webnotes.whitelist() | |||
def get_linked_docs(doctype, name): | |||
def get_linked_docs(doctype, name, metadata_loaded=[]): | |||
meta = webnotes.get_doctype(doctype, True) | |||
linkinfo = meta[0].get("__linked_with") | |||
results = {} | |||
for dt, link in linkinfo.items(): | |||
link["doctype"] = dt | |||
linkmeta = webnotes.get_doctype(dt) | |||
linkmeta = webnotes.get_doctype(dt, True) | |||
if not linkmeta[0].get("issingle"): | |||
fields = (linkmeta[0].get("search_fields") or "name").split(",") | |||
if not "name" in fields: | |||
fields.append("name") | |||
fields = [d.fieldname for d in linkmeta.get({"parent":dt, "in_list_view":1})] \ | |||
+ ["name", "modified"] | |||
fields = ["`tab{dt}`.`{fn}`".format(dt=dt, fn=sf.strip()) \ | |||
for sf in fields if sf] + ['`tab{dt}`.modified'.format(dt=dt)] | |||
fields = ["`tab{dt}`.`{fn}`".format(dt=dt, fn=sf.strip()) for sf in fields if sf] | |||
if link.get("child_doctype"): | |||
ret = webnotes.get_list(doctype=dt, fields=fields, | |||
@@ -108,6 +106,12 @@ def get_linked_docs(doctype, name): | |||
ret = webnotes.get_list(doctype=dt, fields=fields, | |||
filters=[[dt, link.get("fieldname"), '=', name]]) | |||
if ret: results[dt] = ret | |||
if ret: | |||
results[dt] = {"values":ret, "list_js":linkmeta[0].get("__list_js")} | |||
if not dt in metadata_loaded: | |||
if not "docs" in webnotes.local.response: | |||
webnotes.local.response.docs = [] | |||
webnotes.local.response.docs += linkmeta | |||
return results |