{% load i18n %} {% load static %} {% load inventree_extras %} // Javascript for Pricing panel onPanelLoad('pricing', function() { $('#btn-update-rates').click(function() { inventreePut( '{% url "api-currency-refresh" %}', {}, { method: 'POST', success: function(data) { location.reload(); } } ); }); $('#exchange-rate-table').inventreeTable({ url: '{% url "api-currency-exchange" %}', search: false, showColumns: false, sortable: true, sidePagination: 'client', onLoadSuccess: function(response) { var data = response.exchange_rates || {}; var rows = []; for (var currency in data) { rows.push({ 'currency': currency, 'rate': data[currency], }); } $('#exchange-rate-table').bootstrapTable('load', rows); }, columns: [ { field: 'currency', sortable: true, title: '{% trans "Currency" %}', }, { field: 'rate', sortable: true, title: '{% trans "Rate" %}', } ] }); }); // Javascript for project codes panel onPanelLoad('project-codes', function() { // Construct the project code table $('#project-code-table').bootstrapTable({ url: '{% url "api-project-code-list" %}', search: true, sortable: true, formatNoMatches: function() { return '{% trans "No project codes found" %}'; }, columns: [ { field: 'code', sortable: true, title: '{% trans "Project Code" %}', }, { field: 'description', sortable: false, title: '{% trans "Description" %}', formatter: function(value, row) { let html = value; let buttons = ''; buttons += makeEditButton('button-project-code-edit', row.pk, '{% trans "Edit Project Code" %}'); buttons += makeDeleteButton('button-project-code-delete', row.pk, '{% trans "Delete Project Code" %}'); html += wrapButtons(buttons); return html; } } ] }); $('#project-code-table').on('click', '.button-project-code-edit', function() { let pk = $(this).attr('pk'); constructForm(`{% url "api-project-code-list" %}${pk}/`, { title: '{% trans "Edit Project Code" %}', fields: { code: {}, description: {}, }, refreshTable: '#project-code-table', }); }); $('#project-code-table').on('click', '.button-project-code-delete', function() { let pk = $(this).attr('pk'); constructForm(`{% url "api-project-code-list" %}${pk}/`, { title: '{% trans "Delete Project Code" %}', method: 'DELETE', refreshTable: '#project-code-table', }); }); $('#new-project-code').click(function() { // Construct a new project code constructForm('{% url "api-project-code-list" %}', { fields: { code: {}, description: {}, }, title: '{% trans "New Project Code" %}', method: 'POST', refreshTable: '#project-code-table', }); }) }); // Javascript for Part Category panel onPanelLoad('category', 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_detail.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) { let buttons = ''; buttons += makeEditButton('template-edit', row.pk, '{% trans "Edit Template" %}'); buttons += makeDeleteButton('template-delete', row.pk, '{% trans "Delete Template" %}'); let html = value html += wrapButtons(buttons); return html; } } ] }); $("#cat-param-table").on('click', '.template-edit', function() { var category = $('#category-select').val(); var pk = $(this).attr('pk'); constructForm(`/api/part/category/parameters/${pk}/`, { title: '{% trans "Edit Category Parameter Template" %}', fields: { parameter_template: {}, category: { icon: 'fa-sitemap', }, default_value: {}, }, onSuccess: function() { loadTemplateTable(pk); } }); }); $("#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/`; constructForm(`/api/part/category/parameters/${pk}/`, { method: 'DELETE', title: '{% trans "Delete Category Parameter Template" %}', onSuccess: function() { loadTemplateTable(pk); } }); }); function loadTemplateTable(pk) { var query = {}; if (pk) { query['category'] = pk; } // Load the parameter table $("#cat-param-table").bootstrapTable('refresh', { query: query, url: '{% url "api-part-category-parameter-list" %}', }); } // Initially load table with *all* categories loadTemplateTable(); $('body').on('change', '#category-select', function() { var pk = $(this).val(); loadTemplateTable(pk); }); $("#new-cat-param").click(function() { var pk = $('#category-select').val(); constructForm('{% url "api-part-category-parameter-list" %}', { title: '{% trans "Create Category Parameter Template" %}', method: 'POST', fields: { parameter_template: {}, category: { icon: 'fa-sitemap', value: pk, }, default_value: {}, }, onSuccess: function() { loadTemplateTable(pk); } }); }); }); // Javascript for the Part settings panel onPanelLoad('parts', function() { $("#param-table").inventreeTable({ url: "{% url 'api-part-parameter-template-list' %}", queryParams: { ordering: 'name', }, formatNoMatches: function() { return '{% trans "No part parameter templates found" %}'; }, columns: [ { field: 'pk', title: '{% trans "ID" %}', visible: false, switchable: false, }, { field: 'name', title: '{% trans "Name" %}', sortable: true, }, { field: 'units', title: '{% trans "Units" %}', sortable: true, switchable: true, }, { field: 'description', title: '{% trans "Description" %}', sortable: false, switchable: true, }, { formatter: function(value, row, index, field) { var bEdit = ""; var bDel = ""; var html = "