mirror of
https://github.com/inventree/InvenTree
synced 2024-08-30 18:33:04 +00:00
Refactor side navigation tree
This commit is contained in:
parent
5cdae04c62
commit
6f2ba71339
@ -725,6 +725,7 @@ input[type="submit"] {
|
||||
top: 70px;
|
||||
position: sticky;
|
||||
font-size: 115%;
|
||||
margin-left: 5px;
|
||||
}
|
||||
|
||||
.sidenav-right svg {
|
||||
|
@ -67,79 +67,91 @@ function loadTree(url, tree, options={}) {
|
||||
});
|
||||
}
|
||||
|
||||
function openSideNav(navId) {
|
||||
// document.getElementById("sidenav").style.display = "block";
|
||||
// document.getElementById("sidenav").style.width = "250px";
|
||||
|
||||
if (!navId) {
|
||||
navId = '#sidenav-left';
|
||||
/**
|
||||
* Initialize navigation tree display
|
||||
*/
|
||||
function initNavTree(options) {
|
||||
|
||||
var resize = true;
|
||||
|
||||
if ('resize' in options) {
|
||||
resize = options.resize;
|
||||
}
|
||||
|
||||
sessionStorage.setItem('inventree-sidenav-state', 'open');
|
||||
var label = options.label || 'nav';
|
||||
|
||||
$(navId).animate({
|
||||
width: '250px',
|
||||
'min-width': '200px',
|
||||
display: 'block'
|
||||
}, 50);
|
||||
var stateLabel = `${label}-tree-state`;
|
||||
var widthLabel = `${label}-tree-width`;
|
||||
|
||||
var treeId = options.treeId || '#sidenav-left';
|
||||
var toggleId = options.toggleId;
|
||||
|
||||
}
|
||||
|
||||
function closeSideNav(navId) {
|
||||
|
||||
if (!navId) {
|
||||
navId = '#sidenav-left';
|
||||
}
|
||||
|
||||
sessionStorage.setItem('inventree-sidenav-state', 'closed');
|
||||
|
||||
$(navId).animate({
|
||||
// Initially hide the tree
|
||||
$(treeId).animate({
|
||||
width: '0px',
|
||||
'min-width': '0px',
|
||||
display: 'none',
|
||||
}, 0, function() {
|
||||
|
||||
if (resize) {
|
||||
$(treeId).resizable({
|
||||
minWidth: '0px',
|
||||
maxWidth: '500px',
|
||||
handles: 'e, se',
|
||||
grid: [5, 5],
|
||||
stop: function(event, ui) {
|
||||
var width = Math.round(ui.element.width());
|
||||
|
||||
if (width < 75) {
|
||||
$(treeId).animate({
|
||||
width: '0px'
|
||||
}, 50);
|
||||
|
||||
//document.getElementById("sidenav").style.display = "none";
|
||||
//document.getElementById("sidenav").style.width = "0";
|
||||
//document.getElementById("inventree-content").style.marginLeft = "0px";
|
||||
|
||||
}
|
||||
|
||||
function toggleSideNav(nav) {
|
||||
if ($(nav).width() <= 0) {
|
||||
openSideNav(nav);
|
||||
}
|
||||
else {
|
||||
closeSideNav(nav);
|
||||
sessionStorage.setItem(stateLabel, 'closed');
|
||||
} else {
|
||||
sessionStorage.setItem(stateLabel, 'open');
|
||||
sessionStorage.setItem(widthLabel, `${width}px`);
|
||||
}
|
||||
}
|
||||
|
||||
function initSideNav(navId) {
|
||||
|
||||
// Make it resizable
|
||||
|
||||
if (!navId) {
|
||||
navId = '#sidenav-left';
|
||||
});
|
||||
}
|
||||
|
||||
$(navId).resizable({
|
||||
minWidth: '100px',
|
||||
maxWidth: '500px',
|
||||
stop: function(event, ui) {
|
||||
console.log(ui.element.width());
|
||||
//console.log(ui.size.width);
|
||||
var state = sessionStorage.getItem(stateLabel);
|
||||
var width = sessionStorage.getItem(widthLabel) || '300px';
|
||||
|
||||
if (state && state == 'open') {
|
||||
|
||||
$(treeId).animate({
|
||||
width: width,
|
||||
}, 50);
|
||||
}
|
||||
});
|
||||
|
||||
if (sessionStorage.getItem("inventree-sidenav-state") && sessionStorage.getItem('inventree-sidenav-state') == 'open') {
|
||||
openSideNav(navId);
|
||||
// Register callback for 'toggle' button
|
||||
if (toggleId) {
|
||||
|
||||
$(toggleId).click(function() {
|
||||
|
||||
var state = sessionStorage.getItem(stateLabel) || 'closed';
|
||||
var width = sessionStorage.getItem(widthLabel) || '300px';
|
||||
|
||||
if (state == 'open') {
|
||||
$(treeId).animate({
|
||||
width: '0px'
|
||||
}, 50);
|
||||
|
||||
sessionStorage.setItem(stateLabel, 'closed');
|
||||
} else {
|
||||
$(treeId).animate({
|
||||
width: width,
|
||||
}, 50);
|
||||
|
||||
sessionStorage.setItem(stateLabel, 'open');
|
||||
}
|
||||
else {
|
||||
closeSideNav(navId);
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Handle left-hand icon menubar display
|
||||
*/
|
||||
|
@ -29,8 +29,6 @@ InvenTree | {% trans "Part List" %}
|
||||
{% block js_ready %}
|
||||
{{ block.super }}
|
||||
|
||||
closeSideNav();
|
||||
|
||||
loadTree("{% url 'api-part-tree' %}",
|
||||
"#part-tree",
|
||||
{
|
||||
@ -38,11 +36,9 @@ InvenTree | {% trans "Part List" %}
|
||||
}
|
||||
);
|
||||
|
||||
$("#toggle-part-tree").click(function() {
|
||||
toggleSideNav("#sidenav-left");
|
||||
return false;
|
||||
initNavTree({
|
||||
label: 'part',
|
||||
treeId: '#sidenav-left',
|
||||
toggleId: '#toggle-part-tree',
|
||||
});
|
||||
|
||||
initSideNav();
|
||||
|
||||
{% endblock %}
|
@ -11,7 +11,9 @@ InvenTree | Stock
|
||||
{% endblock %}
|
||||
|
||||
{% block sidenav %}
|
||||
<div id='stock-tree'></div>
|
||||
<div id='stock-tree'>
|
||||
{% trans "Loading..." %}
|
||||
</div>
|
||||
{% endblock %}
|
||||
|
||||
{% block pre_content %}
|
||||
@ -24,6 +26,7 @@ InvenTree | Stock
|
||||
|
||||
{% block js_ready %}
|
||||
{{ block.super }}
|
||||
|
||||
loadTree("{% url 'api-stock-tree' %}",
|
||||
"#stock-tree",
|
||||
{
|
||||
@ -31,10 +34,10 @@ InvenTree | Stock
|
||||
}
|
||||
);
|
||||
|
||||
$("#toggle-stock-tree").click(function() {
|
||||
toggleSideNav("#sidenav-left");
|
||||
return false;
|
||||
})
|
||||
initNavTree({
|
||||
label: 'stock',
|
||||
treeId: '#sidenav-left',
|
||||
toggleId: '#toggle-stock-tree',
|
||||
});
|
||||
|
||||
initSideNav();
|
||||
{% endblock %}
|
Loading…
Reference in New Issue
Block a user