소스 검색

[linked with] show listview in linked with

version-14
Rushabh Mehta 11 년 전
부모
커밋
37168a0b95
3개의 변경된 파일30개의 추가작업 그리고 30개의 파일을 삭제
  1. +16
    -18
      public/js/wn/form/linked_with.js
  2. +2
    -4
      public/js/wn/views/listview.js
  3. +12
    -8
      webnotes/widgets/form/utils.py

+ 16
- 18
public/js/wn/form/linked_with.js 파일 보기

@@ -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);
}
})
}


+ 2
- 4
public/js/wn/views/listview.js 파일 보기

@@ -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)


+ 12
- 8
webnotes/widgets/form/utils.py 파일 보기

@@ -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

불러오는 중...
취소
저장