@@ -20,6 +20,7 @@ body { | |||||
.sidebar-padding { | .sidebar-padding { | ||||
padding: 12px 14px; | padding: 12px 14px; | ||||
} | } | ||||
.offcanvas .sidebar .sidebar-menu > li > .btn-group, | |||||
.offcanvas .sidebar .sidebar-menu > li > a, | .offcanvas .sidebar .sidebar-menu > li > a, | ||||
.offcanvas .sidebar .dropdown-menu > li > a { | .offcanvas .sidebar .dropdown-menu > li > a { | ||||
padding: 12px 14px; | padding: 12px 14px; | ||||
@@ -20,6 +20,7 @@ body { | |||||
.sidebar-padding { | .sidebar-padding { | ||||
padding: 12px 14px; | padding: 12px 14px; | ||||
} | } | ||||
.offcanvas .sidebar .sidebar-menu > li > .btn-group, | |||||
.offcanvas .sidebar .sidebar-menu > li > a, | .offcanvas .sidebar .sidebar-menu > li > a, | ||||
.offcanvas .sidebar .dropdown-menu > li > a { | .offcanvas .sidebar .dropdown-menu > li > a { | ||||
padding: 12px 14px; | padding: 12px 14px; | ||||
@@ -20,6 +20,7 @@ body { | |||||
.sidebar-padding { | .sidebar-padding { | ||||
padding: 12px 14px; | padding: 12px 14px; | ||||
} | } | ||||
.offcanvas .sidebar .sidebar-menu > li > .btn-group, | |||||
.offcanvas .sidebar .sidebar-menu > li > a, | .offcanvas .sidebar .sidebar-menu > li > a, | ||||
.offcanvas .sidebar .dropdown-menu > li > a { | .offcanvas .sidebar .dropdown-menu > li > a { | ||||
padding: 12px 14px; | padding: 12px 14px; | ||||
@@ -20,6 +20,7 @@ body { | |||||
.sidebar-padding { | .sidebar-padding { | ||||
padding: 12px 14px; | padding: 12px 14px; | ||||
} | } | ||||
.offcanvas .sidebar .sidebar-menu > li > .btn-group, | |||||
.offcanvas .sidebar .sidebar-menu > li > a, | .offcanvas .sidebar .sidebar-menu > li > a, | ||||
.offcanvas .sidebar .dropdown-menu > li > a { | .offcanvas .sidebar .dropdown-menu > li > a { | ||||
padding: 12px 14px; | padding: 12px 14px; | ||||
@@ -20,6 +20,7 @@ body { | |||||
.sidebar-padding { | .sidebar-padding { | ||||
padding: 12px 14px; | padding: 12px 14px; | ||||
} | } | ||||
.offcanvas .sidebar .sidebar-menu > li > .btn-group, | |||||
.offcanvas .sidebar .sidebar-menu > li > a, | .offcanvas .sidebar .sidebar-menu > li > a, | ||||
.offcanvas .sidebar .dropdown-menu > li > a { | .offcanvas .sidebar .dropdown-menu > li > a { | ||||
padding: 12px 14px; | padding: 12px 14px; | ||||
@@ -81,7 +82,7 @@ body[data-route^="Module"] .main-menu .form-sidebar { | |||||
font-size: 12px; | font-size: 12px; | ||||
padding-right: 0px; | padding-right: 0px; | ||||
} | } | ||||
.layout-side-section .divider { | |||||
.layout-side-section > .divider { | |||||
display: none !important; | display: none !important; | ||||
} | } | ||||
.layout-side-section .sidebar-menu > li > a { | .layout-side-section .sidebar-menu > li > a { | ||||
@@ -112,7 +113,7 @@ body[data-route^="Module"] .main-menu .form-sidebar { | |||||
font-size: 10px; | font-size: 10px; | ||||
margin-top: 0px; | margin-top: 0px; | ||||
} | } | ||||
.sidebar-menu li { | |||||
.sidebar-menu > li { | |||||
position: relative; | position: relative; | ||||
margin-bottom: 7px; | margin-bottom: 7px; | ||||
} | } | ||||
@@ -768,6 +768,7 @@ body { | |||||
.sidebar-padding { | .sidebar-padding { | ||||
padding: 12px 14px; | padding: 12px 14px; | ||||
} | } | ||||
.offcanvas .sidebar .sidebar-menu > li > .btn-group, | |||||
.offcanvas .sidebar .sidebar-menu > li > a, | .offcanvas .sidebar .sidebar-menu > li > a, | ||||
.offcanvas .sidebar .dropdown-menu > li > a { | .offcanvas .sidebar .dropdown-menu > li > a { | ||||
padding: 12px 14px; | padding: 12px 14px; | ||||
@@ -3,7 +3,16 @@ | |||||
</ul> | </ul> | ||||
<ul class="list-unstyled sidebar-menu standard-actions"> | <ul class="list-unstyled sidebar-menu standard-actions"> | ||||
<li class="divider"></li> | <li class="divider"></li> | ||||
<li><a href="#Report/{%= doctype %}">{%= __("Report") %}</a></li> | |||||
<li> | |||||
<div class="btn-group"> | |||||
<a class="dropdown-toggle" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false"> | |||||
{{ __("Reports") }} <span class="caret"></span> | |||||
</a> | |||||
<ul class="dropdown-menu reports-dropdown"> | |||||
<li><a href="#Report/{{ doctype }}">{{ __("Report Builder") }}</a></li> | |||||
</ul> | |||||
</div> | |||||
</li> | |||||
<li class="hide calendar-link"><a href="#Calendar/{%= doctype %}">{%= __("Calendar") %}</a></li> | <li class="hide calendar-link"><a href="#Calendar/{%= doctype %}">{%= __("Calendar") %}</a></li> | ||||
<li class="hide gantt-link"><a href="#Gantt/{%= doctype %}">{%= __("Gantt") %}</a></li> | <li class="hide gantt-link"><a href="#Gantt/{%= doctype %}">{%= __("Gantt") %}</a></li> | ||||
<li class="assigned-to-me"> | <li class="assigned-to-me"> | ||||
@@ -25,12 +25,51 @@ frappe.views.ListSidebar = Class.extend({ | |||||
this.sidebar = this.page_sidebar.add(this.offcanvas_list_sidebar); | this.sidebar = this.page_sidebar.add(this.offcanvas_list_sidebar); | ||||
this.setup_reports(); | |||||
this.setup_assigned_to_me(); | this.setup_assigned_to_me(); | ||||
if(frappe.views.calendar[this.doctype]) { | if(frappe.views.calendar[this.doctype]) { | ||||
this.sidebar.find(".calendar-link, .gantt-link").removeClass("hide"); | this.sidebar.find(".calendar-link, .gantt-link").removeClass("hide"); | ||||
} | } | ||||
}, | }, | ||||
setup_reports: function() { | |||||
// add reports linked to this doctype to the dropdown | |||||
var me = this; | |||||
var added = []; | |||||
var dropdown = this.page.sidebar.find('.reports-dropdown'); | |||||
var divider = false; | |||||
var add_reports = function(reports) { | |||||
$.each(reports, function(name, r) { | |||||
if(!r.ref_doctype || r.ref_doctype==me.doctype) { | |||||
var report_type = r.report_type==='Report Builder' | |||||
? 'Report' : 'query-report'; | |||||
var route = r.route || report_type + '/' + r.name; | |||||
if(added.indexOf(route)===-1) { | |||||
// don't repeat | |||||
added.push(route); | |||||
if(!divider) { | |||||
$('<li role="separator" class="divider"></li>').appendTo(dropdown); | |||||
divider = true; | |||||
} | |||||
$('<li><a href="#'+ route + '">' | |||||
+ __(r.name)+'</a></li>').appendTo(dropdown); | |||||
} | |||||
} | |||||
}); | |||||
} | |||||
// from reference doctype | |||||
if(this.doclistview.listview.settings.reports) { | |||||
add_reports(this.doclistview.listview.settings.reports) | |||||
} | |||||
// from specially tagged reports | |||||
add_reports(frappe.boot.user.all_reports || []); | |||||
}, | |||||
setup_assigned_to_me: function() { | setup_assigned_to_me: function() { | ||||
var me = this; | var me = this; | ||||
this.page.sidebar.find(".assigned-to-me a").on("click", function() { | this.page.sidebar.find(".assigned-to-me a").on("click", function() { | ||||
@@ -27,6 +27,7 @@ body { | |||||
} | } | ||||
.offcanvas .sidebar { | .offcanvas .sidebar { | ||||
.sidebar-menu > li > .btn-group, | |||||
.sidebar-menu > li > a, | .sidebar-menu > li > a, | ||||
.dropdown-menu > li > a { | .dropdown-menu > li > a { | ||||
.sidebar-padding; | .sidebar-padding; | ||||
@@ -38,7 +38,7 @@ body[data-route^="Module"] .main-menu { | |||||
padding-right: 0px; | padding-right: 0px; | ||||
.divider { | |||||
> .divider { | |||||
display: none !important; | display: none !important; | ||||
} | } | ||||
@@ -79,7 +79,7 @@ body[data-route^="Module"] .main-menu { | |||||
margin-top: 0px; | margin-top: 0px; | ||||
} | } | ||||
li { | |||||
> li { | |||||
position: relative; | position: relative; | ||||
margin-bottom: 7px; | margin-bottom: 7px; | ||||
} | } | ||||