// Copyright (c) 2013, Web Notes Technologies Pvt. Ltd. and Contributors // MIT License. See license.txt // todo // - basic search in documents wn.pages['finder'].onload = function(wrapper) { wn.ui.make_app_page({ parent: wrapper, title: wn._('Finder'), single_column: true }); wrapper.appframe.add_module_icon("Finder"); var $body = $(wrapper).find(".layout-main").addClass("row"); var start = 0, doctype = null, module = null; var get_col = function(colsize, icon, label, panel_class) { return $('
\
\
\ '+label+'\ \
\
\
\
\
').appendTo($body); } var $modules = get_col(3, "briefcase", wn._("Modules"), "default").find(".list-group"); var $doctypes = get_col(3, "folder-close", wn._("Document Types"), "default").find(".list-group"); var $list = get_col(6, "file", wn._("Documents"), "info"); var $doctype_label = $list.find(".col-heading") var $list_link = $list.find(".panel-heading .pull-right") .append('') .find(".list-link") .click(function() { wn.set_route("List", doctype); }) .toggle(false); var $new_link = $list.find(".panel-heading .pull-right") .append(' ') .find(".new-link") .click(function() { new_doc(doctype); }) .toggle(false); $list = $list.find(".list-group"); var reset_module = function() { $doctypes.empty(); $('
'+ wn._("Select Module")+'
').appendTo($doctypes); module = null; reset_doctype(); } var reset_doctype = function() { $list.empty(); $new_link.toggle(false); $list_link.toggle(false); $doctype_label.html(wn._("Documents")); $('
'+ wn._("Select Document Type")+'
').appendTo($list); start=0; } reset_module(); // modules $.each(keys(wn.boot.notification_info.module_doctypes).sort(), function(i, module) { $($r('%(module)s\ ', {module: module})).appendTo($modules); }); $modules.on("click", ".module-link", function() { // list doctypes reset_module(); // select module $modules.find(".list-group-item.active").removeClass("active"); $(this).addClass("active"); // show doctypes $doctypes.find(".row-select").remove(); module = $(this).attr("data-module"); $.each(wn.boot.notification_info.module_doctypes[module].sort(), function(i, doctype) { $($r('%(doctype)s\ ', {doctype: doctype})).appendTo($doctypes) }); }); $doctypes.on("click", ".doctype-link", function() { reset_doctype(); // select doctype $doctypes.find(".list-group-item.active").removeClass("active"); $(this).addClass("active"); doctype = $(this).attr("data-doctype"); // label $doctype_label.html(wn._(doctype)); // new link $new_link.toggle(!!wn.model.can_create(doctype)); $list_link.toggle(!!wn.model.can_read(doctype)); render_list(); }) $list.on("click", ".btn-more", function() { start = start+20; render_list(); }); $list.on("click", ".btn-search", function() { filter_list(); }) $list.on("keypress", ".input-search", function(e) { if(e.which===13) filter_list(); }) var filter_list = function() { start = 0; $list.find(".document-item, .row-empty").remove(); render_list(); } var render_list = function() { // remove more btn if any $list.find(".row-more, .row-select").remove(); // loading indicator... add_list_row('') .addClass("row-loading text-center") var args = { doctype: doctype, fields: ["name", "modified", "owner"], limit_start: start || 0, limit_page_length: 20 }; if($(".input-search").val()) { args.filters = [[doctype, "name", "like", "%" + $(".input-search").val() + "%"]] } wn.call({ method: "webnotes.widgets.reportview.get", args: args, callback: function(r) { $list.find(".row-loading").remove(); if(!$list.find(".input-search").length) { // make search $('
\
\ \ \ \ \
\
').appendTo($list); } if(r.message.values) { $.each(r.message.values, function(i, v) { $($r('%(name)s\ %(owner)s\ %(modified)s', { doctype: doctype, name: v[1], owner: v[0], modified: comment_when(v[2]) })).appendTo($list); }) if(r.message.values.length==20) { add_list_row('More...').addClass("row-more text-center btn-more text-muted"); } } else { add_list_row('').addClass("text-center text-muted row-empty"); } } }) } var add_list_row = function(html) { return $(''+html+'').appendTo($list); } }