From 2c407a3d63f55ae6efcd2bce25a37eac9d097c61 Mon Sep 17 00:00:00 2001 From: pratu16x7 Date: Thu, 23 Feb 2017 13:15:15 +0530 Subject: [PATCH] Placeholder graphics, nav results preference, json fields update --- frappe/core/doctype/docfield/docfield.json | 2 +- .../customize_form_field.json | 5 +- frappe/public/css/desk.css | 18 +++ .../js/frappe/ui/toolbar/awesome_bar.js | 12 +- .../public/js/frappe/ui/toolbar/search.html | 3 +- frappe/public/js/frappe/ui/toolbar/search.js | 116 +++++++++++------- .../js/frappe/ui/toolbar/search_header.html | 4 +- frappe/public/js/frappe/ui/toolbar/toolbar.js | 5 +- frappe/public/less/desk.less | 22 ++++ 9 files changed, 127 insertions(+), 60 deletions(-) diff --git a/frappe/core/doctype/docfield/docfield.json b/frappe/core/doctype/docfield/docfield.json index 2052e4e141..f2f954c810 100644 --- a/frappe/core/doctype/docfield/docfield.json +++ b/frappe/core/doctype/docfield/docfield.json @@ -1288,7 +1288,7 @@ "issingle": 0, "istable": 1, "max_attachments": 0, - "modified": "2017-02-17 16:14:33.670631", + "modified": "2017-02-22 21:43:00.771400", "modified_by": "Administrator", "module": "Core", "name": "DocField", diff --git a/frappe/custom/doctype/customize_form_field/customize_form_field.json b/frappe/custom/doctype/customize_form_field/customize_form_field.json index 56b08933d6..ba6d51ee26 100644 --- a/frappe/custom/doctype/customize_form_field/customize_form_field.json +++ b/frappe/custom/doctype/customize_form_field/customize_form_field.json @@ -255,7 +255,7 @@ "bold": 0, "collapsible": 0, "columns": 0, - "depends_on": "eval:([\"Data\", \"Select\", \"Table\", \"Text\", \"Text Editor\", \"Link\", \"Small Text\", \"Long Text\", \"Read Only\", \"Heading\"].indexOf(doc.fieldtype) !== -1)", + "depends_on": "eval:([\"Data\", \"Select\", \"Table\", \"Text\", \"Text Editor\", \"Link\", \"Small Text\", \"Long Text\", \"Read Only\", \"Heading\", \"Dynamic Link\"].indexOf(doc.fieldtype) !== -1)", "fieldname": "in_global_search", "fieldtype": "Check", "hidden": 0, @@ -1104,7 +1104,7 @@ "issingle": 0, "istable": 1, "max_attachments": 0, - "modified": "2017-01-30 02:49:36.834130", + "modified": "2017-02-22 21:43:19.748233", "modified_by": "Administrator", "module": "Custom", "name": "Customize Form Field", @@ -1113,6 +1113,7 @@ "quick_entry": 0, "read_only": 0, "read_only_onload": 0, + "show_name_in_global_search": 0, "sort_order": "ASC", "track_changes": 0, "track_seen": 0 diff --git a/frappe/public/css/desk.css b/frappe/public/css/desk.css index 8c049e68d5..242843b35e 100644 --- a/frappe/public/css/desk.css +++ b/frappe/public/css/desk.css @@ -694,6 +694,24 @@ fieldset[disabled] .form-control { .search-dialog .layout-side-section .nav > li > a { padding-left: 20px; } +.search-dialog .results-area .search-intro-placeholder { + color: #d4d9dd; + height: inherit; + display: flex; + justify-content: center; + align-items: center; +} +.search-dialog .results-area .search-intro-placeholder span { + text-align: center; +} +.search-dialog .results-area .search-intro-placeholder span i{ + font-size: 120px; + display: block; +} +.search-dialog .results-area .search-intro-placeholder span p{ + font-size: 20px; + display: block; +} .search-dialog .results-area a { color: #5E64FF; } diff --git a/frappe/public/js/frappe/ui/toolbar/awesome_bar.js b/frappe/public/js/frappe/ui/toolbar/awesome_bar.js index 2f4daf6946..fd1037a0df 100644 --- a/frappe/public/js/frappe/ui/toolbar/awesome_bar.js +++ b/frappe/public/js/frappe/ui/toolbar/awesome_bar.js @@ -4,9 +4,11 @@ frappe.provide('frappe.search'); frappe.search.AwesomeBar = Class.extend({ setup: function(element) { + var me = this; + var $input = $(element); var input = $input.get(0); - var me = this; + this.search = new frappe.search.UnifiedSearch(); this.global = new frappe.search.GlobalSearch(); this.nav = new frappe.search.NavSearch(); @@ -102,7 +104,7 @@ frappe.search.AwesomeBar = Class.extend({ } }); awesomplete.list = out; - }, 200)); + }, 100)); }); @@ -346,11 +348,11 @@ frappe.search.AwesomeBar = Class.extend({ label: __("Search for '" + txt.bold() + "'"), value: __("Search for '" + txt + "'"), match: txt, - index: 22, + index: 19, default: "Search", onclick: function() { me.search.search_dialog.show(); - me.search.setup_search(txt, [me.global, me.nav, me.help]); + me.search.setup_search(txt, [me.nav, me.global, me.help]); } }); }, @@ -469,7 +471,7 @@ frappe.search.AwesomeBar = Class.extend({ index = result[1]; rendered_label = result[2]; if(target) { - // include 'making new' option (not working) + // include 'making new' option // if(in_list(frappe.boot.user.can_create, target)) { // out.push({ // label: rendered_label, diff --git a/frappe/public/js/frappe/ui/toolbar/search.html b/frappe/public/js/frappe/ui/toolbar/search.html index b964b1c5f5..67ea7cfe6d 100644 --- a/frappe/public/js/frappe/ui/toolbar/search.html +++ b/frappe/public/js/frappe/ui/toolbar/search.html @@ -1,7 +1,6 @@
diff --git a/frappe/public/js/frappe/ui/toolbar/search.js b/frappe/public/js/frappe/ui/toolbar/search.js index 44e2f62550..ff4377bc58 100644 --- a/frappe/public/js/frappe/ui/toolbar/search.js +++ b/frappe/public/js/frappe/ui/toolbar/search.js @@ -3,7 +3,15 @@ frappe.provide('frappe.search'); frappe.search.UnifiedSearch = Class.extend({ setup: function() { - var d = new frappe.ui.Dialog(); + var d; + if(!frappe.search.dialog) { + d = new frappe.ui.Dialog(); + frappe.search.dialog = d; + } else { + d = frappe.search.dialog; + $(d.body).empty(); + } + $(frappe.render_template("search")).appendTo($(d.body)); $(d.header).html($(frappe.render_template("search_header"))); @@ -12,12 +20,13 @@ frappe.search.UnifiedSearch = Class.extend({ this.search_modal.addClass('search-dialog'); this.input = this.search_modal.find(".search-input"); - this.sidelist = this.search_modal.find(".search-sidelist"); + this.sidebar = this.search_modal.find(".search-sidebar"); this.results_area = this.search_modal.find(".results-area"); }, - setup_search: function(keywords, search_objects) { + setup_search: function(init_keywords, search_objects) { var me = this; + var keywords = init_keywords; this.search_objects = search_objects; this.search_types = search_objects.map(function(s) { return s.search_type; @@ -29,37 +38,42 @@ frappe.search.UnifiedSearch = Class.extend({ var $this = $(this); clearTimeout($this.data('timeout')); - $this.data('timeout', setTimeout(function(){ - var keywords = me.input.val(); + $this.data('timeout', setTimeout(function() { + if(me.input.val() === keywords) return; + keywords = me.input.val(); me.reset(); if(keywords.length > 2) { me.build_results(keywords); } else { me.current_type = ''; } - }, 600)); + }, 300)); }); this.build_results(keywords); setTimeout(function() { me.input.select(); }, 500); }, reset: function() { - this.sidelist.empty(); + this.sidebar.empty(); this.results_area.empty(); + this.results_area.append($('
' + + '

Look for anything

')); }, build_results: function(keywords) { var me = this; this.summary = $('
'); + this.sidelist = $(''); this.full_lists = {}; this.current = 0; this.search_objects[me.current].build_results_object(me, keywords); }, - render_results: function(results_obj, keywords){ + render_results: function(results_obj, keywords) { var me = this; if(this.current === 0) { this.reset() } results_obj.sidelist.forEach(function(list_item) { + // Don't append to main sidebar here me.sidelist.append(list_item); }) this.results_area.find('.results-status').remove(); @@ -80,25 +94,26 @@ frappe.search.UnifiedSearch = Class.extend({ me.results_area.find('.module-section').each(function() { if(($(this).position().top < 120) && ($(this).position().top + $(this).height() > 120)) { var types = $(this).attr('data-type').split(','); - me.sidelist.find('.list-link').removeClass('active'); + me.sidebar.find('.list-link').removeClass('active'); types.forEach(function(type) { - me.sidelist.find('*[data-category="'+ type +'"]').addClass('active'); + me.sidebar.find('*[data-category="'+ type +'"]').addClass('active'); }); } }); }); - this.sidelist.find('.list-link').on('click', function() { - me.set_sidelist_link_action($(this)); + this.sidebar.find('.list-link').on('click', function() { + me.set_sidebar_link_action($(this)); }); this.results_area.find('.section-more').on('click', function() { var type = $(this).attr('data-category'); - me.sidelist.find('*[data-category="'+ type +'"]').trigger('click'); + me.sidebar.find('*[data-category="'+ type +'"]').trigger('click'); }); + this.results_area.find('.Help-result a').on('click', frappe.help.show_results); }, - set_sidelist_link_action: function(link) { - this.sidelist.find(".list-link").removeClass("active"); - this.sidelist.find(".list-link i").addClass("hide"); + set_sidebar_link_action: function(link) { + this.sidebar.find(".list-link").removeClass("active"); + this.sidebar.find(".list-link i").addClass("hide"); link.addClass("active"); link.find("i").removeClass("hide"); var type = link.attr('data-category'); @@ -108,6 +123,7 @@ frappe.search.UnifiedSearch = Class.extend({ this.set_back_link(); this.set_list_more_link(type); + this.results_area.find('.Help-result a').on('click', frappe.help.show_results); }, set_back_link: function() { @@ -120,9 +136,9 @@ frappe.search.UnifiedSearch = Class.extend({ show_summary: function() { this.current_type = ''; - this.sidelist.find(".list-link i").addClass("hide"); - this.sidelist.find(".list-link").removeClass("active"); - this.sidelist.find(".list-link").first().addClass("active"); + this.sidebar.find(".list-link i").addClass("hide"); + this.sidebar.find(".list-link").removeClass("active"); + this.sidebar.find(".list-link").first().addClass("active"); this.results_area.empty().html(this.summary); this.bind_events(); }, @@ -166,20 +182,24 @@ frappe.search.UnifiedSearch = Class.extend({ // More searches to go this.search_objects[this.current].build_results_object(this, keywords); } else { - // If there's only one link in sidelist, there's no summary (show its full list) - if(this.sidelist.find('.list-link').length === 1) { + this.sidebar.append(this.sidelist); + // If there's only one link in sidebar, there's no summary (show its full list) + if(this.sidebar.find('.list-link').length === 1) { this.bind_events(); - this.sidelist.find('.list-link').trigger('click'); + this.sidebar.find('.list-link').trigger('click'); this.results_area.find('.all-results-link').hide(); - } else if (this.sidelist.find('.list-link').length === 0) { + } else if (this.sidebar.find('.list-link').length === 0) { this.results_area.html('

'+ 'No results found for: '+ "'"+ keywords +"'" +'

'); } else { + this.sidebar.find('.search-sidelist').prepend(''); var list_types = this.get_all_list_types(); if(list_types.indexOf(this.current_type) >= 0) { this.bind_events(); - this.sidelist.find('*[data-category="'+ this.current_type +'"]').trigger('click'); + this.sidebar.find('*[data-category="'+ this.current_type +'"]').trigger('click'); } else { this.show_summary(); } @@ -189,11 +209,11 @@ frappe.search.UnifiedSearch = Class.extend({ get_all_list_types: function() { var types = []; - this.sidelist.find('.list-link').each(function() { + this.sidebar.find('.list-link').each(function() { types.push($(this).attr('data-category')); }); return types; - } + }, }); @@ -244,8 +264,9 @@ frappe.search.GlobalSearch = Class.extend({ }, make_sidelist_item: function(type) { - var sidelist_item = ''; + var sidelist_item = ''; return $(__(sidelist_item, [this.search_type, type])); }, @@ -349,8 +370,8 @@ frappe.search.GlobalSearch = Class.extend({ results_col.append(me.make_result_item(type, result)); }); if(results.length > this.section_length) { - results_col.append(''); + results_col.append('More...'); } return results_section; @@ -394,8 +415,8 @@ frappe.search.GlobalSearch = Class.extend({ results_col.append(me.make_result_item(type, result)); }); if(more) { - results_col.append(''); + results_col.append(' More...'); } return results_list; }, @@ -503,14 +524,8 @@ frappe.search.NavSearch = frappe.search.GlobalSearch.extend({ set_types: function() { var me = this; this.section_length = 4; - this.awesome_bar = new frappe.search.AwesomeBar(); - this.nav_results = { - "Search in ...": me.awesome_bar.make_search_in_list(me.keywords), - "Lists": me.awesome_bar.get_doctypes(me.keywords), - "Reports": me.awesome_bar.get_reports(me.keywords), - "Pages": me.awesome_bar.get_pages(me.keywords), - "Modules": me.awesome_bar.get_modules(me.keywords) - } + + this.set_nav_results(me.keywords); var types = ["Search in ...", "Lists", "Reports", "Pages", "Modules"]; types.forEach(function(type) { if(me.nav_results[type].length > 0) { @@ -526,6 +541,18 @@ frappe.search.NavSearch = frappe.search.GlobalSearch.extend({ } }, + set_nav_results: function(keywords) { + var me = this; + this.awesome_bar = new frappe.search.AwesomeBar(); + this.nav_results = { + "Search in ...": me.awesome_bar.make_search_in_list(keywords), + "Lists": me.awesome_bar.get_doctypes(keywords), + "Reports": me.awesome_bar.get_reports(keywords), + "Pages": me.awesome_bar.get_pages(keywords), + "Modules": me.awesome_bar.get_modules(keywords) + } + }, + get_results: function() { var me = this; this.types.forEach(function(type) { @@ -668,8 +695,8 @@ frappe.search.NavSearch = frappe.search.GlobalSearch.extend({ results_column.append(me.make_result_item(type, result)); }); if(results.length > this.section_length) { - results_column.append(''); + results_column.append('More...'); } return results_column; } @@ -688,9 +715,9 @@ frappe.search.HelpSearch = frappe.search.GlobalSearch.extend({ make_sidelist: function() { var sidelist = []; - var sidelist_item = ''; + this.search_type +''; sidelist.push(sidelist_item); return sidelist; }, @@ -726,7 +753,6 @@ frappe.search.HelpSearch = frappe.search.GlobalSearch.extend({ '

{2}

' + '
'; var link = $(__(link_html, [result[2], result[0], result[1]])); - link.find('a').on('click', frappe.help.show_results); return link; }, diff --git a/frappe/public/js/frappe/ui/toolbar/search_header.html b/frappe/public/js/frappe/ui/toolbar/search_header.html index 0e493f0ec2..dcacb8c453 100644 --- a/frappe/public/js/frappe/ui/toolbar/search_header.html +++ b/frappe/public/js/frappe/ui/toolbar/search_header.html @@ -1,7 +1,7 @@
- + - +
\ No newline at end of file diff --git a/frappe/public/js/frappe/ui/toolbar/toolbar.js b/frappe/public/js/frappe/ui/toolbar/toolbar.js index 6cbce74bb4..4fa42cbb61 100644 --- a/frappe/public/js/frappe/ui/toolbar/toolbar.js +++ b/frappe/public/js/frappe/ui/toolbar/toolbar.js @@ -16,9 +16,8 @@ frappe.ui.toolbar.Toolbar = Class.extend({ this.awesome_bar.setup("#navbar-search"); this.awesome_bar.setup("#modal-search"); - this.search = new frappe.search.UnifiedSearch(); - this.help = new frappe.search.HelpSearch(); - this.search.setup(); + this.search = this.awesome_bar.search; + this.help = this.awesome_bar.help; $(document).on("notification-update", function() { frappe.ui.notifications.update_notifications(); diff --git a/frappe/public/less/desk.less b/frappe/public/less/desk.less index 300120c7e2..817451c474 100644 --- a/frappe/public/less/desk.less +++ b/frappe/public/less/desk.less @@ -574,6 +574,28 @@ textarea.form-control { } .results-area { + .search-intro-placeholder { + color: #d4d9dd; + height: inherit; + display: flex; + justify-content: center; + align-items: center; + + span { + text-align: center; + + i { + font-size: 120px; + display: block; + } + + p { + font-size: 20px; + display: block; + } + } + } + a { color: #5E64FF; }