mirror of
https://github.com/inventree/InvenTree.git
synced 2025-04-30 12:36:45 +00:00
Save and recall expansion state of tree
- Save choices to sessionStorage
This commit is contained in:
parent
206720849c
commit
cc7fb31d6d
@ -22,6 +22,10 @@ from rest_framework import views
|
|||||||
|
|
||||||
class TreeSerializer(views.APIView):
|
class TreeSerializer(views.APIView):
|
||||||
""" JSON View for serializing a Tree object.
|
""" JSON View for serializing a Tree object.
|
||||||
|
|
||||||
|
Turns a 'tree' model into a JSON object compatible with bootstrap-treview.
|
||||||
|
|
||||||
|
Ref: https://github.com/jonmiles/bootstrap-treeview
|
||||||
"""
|
"""
|
||||||
|
|
||||||
def itemToJson(self, item):
|
def itemToJson(self, item):
|
||||||
|
@ -11,6 +11,29 @@ function loadTree(url, tree, data) {
|
|||||||
data: response.tree,
|
data: response.tree,
|
||||||
enableLinks: true
|
enableLinks: true
|
||||||
});
|
});
|
||||||
|
|
||||||
|
var saved_exp = sessionStorage.getItem('inventree-sidenav-expanded-items').split(",");
|
||||||
|
|
||||||
|
// Automatically expand the desired notes
|
||||||
|
for (var q = 0; q < saved_exp.length; q++) {
|
||||||
|
$(tree).treeview('expandNode', parseInt(saved_exp[q]));
|
||||||
|
}
|
||||||
|
|
||||||
|
// Setup a callback whenever a node is toggled
|
||||||
|
$(tree).on('nodeExpanded nodeCollapsed', function(event, data) {
|
||||||
|
|
||||||
|
// Record the entire list of expanded items
|
||||||
|
var expanded = $(tree).treeview('getExpanded');
|
||||||
|
|
||||||
|
var exp = [];
|
||||||
|
|
||||||
|
for (var i = 0; i < expanded.length; i++) {
|
||||||
|
exp.push(expanded[i].nodeId);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Save the expanded nodes
|
||||||
|
sessionStorage.setItem('inventree-sidenav-expanded-items', exp);
|
||||||
|
});
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
error: function (xhr, ajaxOptions, thrownError) {
|
error: function (xhr, ajaxOptions, thrownError) {
|
||||||
@ -24,6 +47,8 @@ function openSideNav() {
|
|||||||
document.getElementById("inventree-content").style.marginLeft = "270px";
|
document.getElementById("inventree-content").style.marginLeft = "270px";
|
||||||
|
|
||||||
sessionStorage.setItem('inventree-sidenav-state', 'open');
|
sessionStorage.setItem('inventree-sidenav-state', 'open');
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function closeSideNav() {
|
function closeSideNav() {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user