mirror of
https://github.com/inventree/InvenTree.git
synced 2025-06-19 13:35:40 +00:00
Revert to bootstrap-treeview
- More "bootstrappy" design - Already in code base - Cleaner API
This commit is contained in:
@ -240,12 +240,21 @@ class CategoryParameterList(generics.ListAPIView):
|
||||
|
||||
|
||||
class CategoryTree(generics.ListAPIView):
|
||||
""" API endpoint for accessing a list of PartCategory objects ready for rendering a jstree.
|
||||
"""
|
||||
API endpoint for accessing a list of PartCategory objects ready for rendering a tree.
|
||||
"""
|
||||
|
||||
queryset = PartCategory.objects.all()
|
||||
serializer_class = part_serializers.CategoryTree
|
||||
|
||||
filter_backends = [
|
||||
DjangoFilterBackend,
|
||||
filters.OrderingFilter,
|
||||
]
|
||||
|
||||
# Order by tree level (top levels first) and then name
|
||||
ordering = ['level', 'name']
|
||||
|
||||
|
||||
class PartSalePriceList(generics.ListCreateAPIView):
|
||||
"""
|
||||
|
@ -71,29 +71,16 @@ class CategorySerializer(InvenTreeModelSerializer):
|
||||
|
||||
|
||||
class CategoryTree(InvenTreeModelSerializer):
|
||||
""" Serializer for PartCategory """
|
||||
|
||||
id = serializers.IntegerField(source='pk', read_only=True)
|
||||
|
||||
text = serializers.CharField(source='name', read_only=True)
|
||||
|
||||
parent = serializers.SerializerMethodField()
|
||||
|
||||
def get_parent(self, obj):
|
||||
return obj.parent.pk if obj.parent else '#'
|
||||
|
||||
a_attr = serializers.SerializerMethodField()
|
||||
|
||||
def get_a_attr(self, obj):
|
||||
return {'href': obj.get_absolute_url()}
|
||||
"""
|
||||
Serializer for PartCategory tree
|
||||
"""
|
||||
|
||||
class Meta:
|
||||
model = PartCategory
|
||||
fields = [
|
||||
'id',
|
||||
'text',
|
||||
'pk',
|
||||
'name',
|
||||
'parent',
|
||||
'a_attr',
|
||||
]
|
||||
|
||||
|
||||
|
@ -247,7 +247,19 @@
|
||||
enableSidebar('category');
|
||||
|
||||
// Enable breadcrumb tree view
|
||||
enableBreadcrumbTree('category');
|
||||
enableBreadcrumbTree({
|
||||
label: 'category',
|
||||
url: '{% url "api-part-category-tree" %}',
|
||||
{% if category %}
|
||||
selected: {{ category.pk }},
|
||||
{% endif %}
|
||||
processNode: function(node) {
|
||||
node.text = node.name;
|
||||
node.href = `/part/category/${node.pk}/`;
|
||||
|
||||
return node;
|
||||
}
|
||||
});
|
||||
|
||||
loadPartCategoryTable(
|
||||
$('#subcategory-table'), {
|
||||
|
@ -1066,6 +1066,18 @@
|
||||
|
||||
enableSidebar('part');
|
||||
|
||||
enableBreadcrumbTree('part');
|
||||
enableBreadcrumbTree({
|
||||
label: 'part',
|
||||
url: '{% url "api-part-category-tree" %}',
|
||||
{% if part.category %}
|
||||
selected: {{ part.category.pk }},
|
||||
{% endif %}
|
||||
processNode: function(node) {
|
||||
node.text = node.name;
|
||||
node.href = `/part/category/${node.pk}/`;
|
||||
|
||||
return node;
|
||||
}
|
||||
});
|
||||
|
||||
{% endblock %}
|
||||
|
@ -20,4 +20,4 @@
|
||||
{% else %}
|
||||
{% include 'part/cat_link.html' with category=category %}
|
||||
{% endif %}
|
||||
{% endblock %}
|
||||
{% endblock breadcrumbs %}
|
||||
|
Reference in New Issue
Block a user