From 1fe00ef7df17d9e1da80106c83f2b60679ff2ee2 Mon Sep 17 00:00:00 2001 From: Oliver Date: Wed, 28 Jul 2021 14:16:55 +1000 Subject: [PATCH] Refactor 'category' setttings --- .../InvenTree/settings/category.html | 121 +++----------- .../templates/InvenTree/settings/navbar.html | 6 + .../InvenTree/settings/settings.html | 154 ++++++++++++++++++ 3 files changed, 180 insertions(+), 101 deletions(-) diff --git a/InvenTree/templates/InvenTree/settings/category.html b/InvenTree/templates/InvenTree/settings/category.html index 7ec323482c..9eb595ddde 100644 --- a/InvenTree/templates/InvenTree/settings/category.html +++ b/InvenTree/templates/InvenTree/settings/category.html @@ -1,114 +1,33 @@ -{% extends "InvenTree/settings/settings.html" %} +{% extends "panel.html" %} {% load i18n %} -{% block tabs %} -{% include "InvenTree/settings/tabs.html" with tab='category' %} -{% endblock %} +{% block label %}category{% endblock %} -{% block subtitle %} +{% block heading %} {% trans "Category Settings" %} {% endblock %} -{% block settings %} +{% block content %} -
- {% csrf_token %} - {% load crispy_forms_tags %} -
- {% crispy form %} -
-
+
+
+
+
+ +
+
+
+
-{% if category %} -
- -

{% trans "Category Parameter Templates" %}

- -
-
- +
-{% endif %} -{% endblock %} - -{% block js_ready %} -{{ block.super }} - - {# Convert dropdown to select2 format #} - $(document).ready(function() { - attachSelect('#category-select'); - }); - -{% if category %} - $("#param-table").inventreeTable({ - url: "{% url 'api-part-category-parameters' pk=category.pk %}", - queryParams: { - ordering: 'name', - }, - formatNoMatches: function() { return '{% trans "No category parameter templates found" %}'; }, - columns: [ - { - field: 'pk', - title: 'ID', - visible: false, - switchable: false, - }, - { - field: 'parameter_template.name', - title: '{% trans "Parameter Template" %}', - sortable: 'true', - }, - { - field: 'default_value', - title: '{% trans "Default Value" %}', - sortable: 'true', - formatter: function(value, row, index, field) { - var bEdit = ""; - var bDel = ""; - - var html = value - html += "
" + bEdit + bDel + "
"; - - return html; - } - } - ] - }); - - $("#new-param").click(function() { - launchModalForm("{% url 'category-param-template-create' category.pk %}", { - success: function() { - $("#param-table").bootstrapTable('refresh'); - }, - }); - }); - - $("#param-table").on('click', '.template-edit', function() { - var button = $(this); - - var url = "/part/category/{{ category.pk }}/parameters/" + button.attr('pk') + "/edit/"; - - launchModalForm(url, { - success: function() { - $("#param-table").bootstrapTable('refresh'); - } - }); - }); - - $("#param-table").on('click', '.template-delete', function() { - var button = $(this); - - var url = "/part/category/{{ category.pk }}/parameters/" + button.attr('pk') + "/delete/"; - - launchModalForm(url, { - success: function() { - $("#param-table").bootstrapTable('refresh'); - } - }); - }); -{% endif %} + {% endblock %} diff --git a/InvenTree/templates/InvenTree/settings/navbar.html b/InvenTree/templates/InvenTree/settings/navbar.html index e3c00f60be..83bbc10fe9 100644 --- a/InvenTree/templates/InvenTree/settings/navbar.html +++ b/InvenTree/templates/InvenTree/settings/navbar.html @@ -74,6 +74,12 @@ +
  • + + {% trans "Categories" %} + +
  • +
  • {% trans "Stock" %} diff --git a/InvenTree/templates/InvenTree/settings/settings.html b/InvenTree/templates/InvenTree/settings/settings.html index ad6edf00b8..330a1e617b 100644 --- a/InvenTree/templates/InvenTree/settings/settings.html +++ b/InvenTree/templates/InvenTree/settings/settings.html @@ -26,6 +26,7 @@ {% include "InvenTree/settings/currencies.html" %} {% include "InvenTree/settings/report.html" %} {% include "InvenTree/settings/part.html" %} +{% include "InvenTree/settings/category.html" %} {% include "InvenTree/settings/stock.html" %} {% include "InvenTree/settings/build.html" %} {% include "InvenTree/settings/po.html" %} @@ -86,6 +87,159 @@ $("#edit-password").on('click', function() { }); +$('#category-select').select2({ + placeholder: '', + width: '100%', + ajax: { + url: '{% url "api-part-category-list" %}', + dataType: 'json', + delay: 250, + cache: false, + data: function(params) { + if (!params.page) { + offset = 0; + } else { + offset = (params.page - 1) * 25; + } + + return { + search: params.term, + offset: offset, + limit: 25, + }; + }, + processResults: function(response) { + var data = []; + + var more = false; + + if ('count' in response && 'results' in response) { + // Response is paginated + data = response.results; + + // Any more data available? + if (response.next) { + more = true; + } + + } else { + // Non-paginated response + data = response; + } + + // Each 'row' must have the 'id' attribute + for (var idx = 0; idx < data.length; idx++) { + data[idx].id = data[idx].pk; + data[idx].text = data[idx].pathstring; + } + + // Ref: https://select2.org/data-sources/formats + var results = { + results: data, + pagination: { + more: more, + } + }; + + return results; + } + }, +}); + +$('#cat-param-table').inventreeTable({ + formatNoMatches: function() { return '{% trans "No category parameter templates found" %}'; }, + columns: [ + { + field: 'pk', + title: 'ID', + visible: false, + switchable: false, + }, + { + field: 'parameter_template.name', + title: '{% trans "Parameter Template" %}', + sortable: 'true', + }, + { + field: 'category_detail.pathstring', + title: '{% trans "Category" %}', + }, + { + field: 'default_value', + title: '{% trans "Default Value" %}', + sortable: 'true', + formatter: function(value, row, index, field) { + var bEdit = ""; + var bDel = ""; + + var html = value + html += "
    " + bEdit + bDel + "
    "; + + return html; + } + } + ] +}); + +function loadTemplateTable(pk) { + + console.log('refresh:', pk); + + // Enable the buttons + $('#new-cat-param').removeAttr('disabled'); + + // Load the parameter table + $("#cat-param-table").bootstrapTable('refresh', { + query: { + category: pk, + }, + url: '{% url "api-part-category-parameter-list" %}', + }); +} + +$('body').on('change', '#category-select', function() { + var pk = $(this).val(); + loadTemplateTable(pk); +}); + +$("#new-cat-param").click(function() { + + var pk = $('#category-select').val(); + + launchModalForm(`/part/category/${pk}/parameters/new/`, { + success: function() { + $("#cat-param-table").bootstrapTable('refresh'); + }, + }); +}); + +$("#cat-param-table").on('click', '.template-edit', function() { + + var category = $('#category-select').val(); + var pk = $(this).attr('pk'); + + var url = `/part/category/${category}/parameters/${pk}/edit/`; + + launchModalForm(url, { + success: function() { + $("#cat-param-table").bootstrapTable('refresh'); + } + }); +}); + +$("#cat-param-table").on('click', '.template-delete', function() { + + var category = $('#category-select').val(); + var pk = $(this).attr('pk'); + + var url = `/part/category/${category}/parameters/${pk}/delete/`; + + launchModalForm(url, { + success: function() { + $("#cat-param-table").bootstrapTable('refresh'); + } + }); +}); enableNavbar({ label: 'settings',