| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465 |
- $(document).ready(function() {
- // Select or reset table columns
- $('#save_tableconfig').click(function(event) {
- $('select[name="columns"] option').attr("selected", "selected");
- });
- $('#reset_tableconfig').click(function(event) {
- $('select[name="columns"]').val([]);
- });
- // Swap columns between available and selected lists
- $('#add_columns').click(function(e) {
- let selected_columns = $('#id_available_columns option:selected');
- $('#id_columns').append($(selected_columns).clone());
- $(selected_columns).remove();
- e.preventDefault();
- });
- $('#remove_columns').click(function(e) {
- let selected_columns = $('#id_columns option:selected');
- $('#id_available_columns').append($(selected_columns).clone());
- $(selected_columns).remove();
- e.preventDefault();
- });
- $('form.userconfigform').submit(function(event) {
- event.preventDefault();
- // Derive an array from the dotted path to the config root
- let path = this.getAttribute('data-config-root').split('.');
- let data = {};
- let pointer = data;
- // Construct a nested JSON object from the path
- let node;
- for (node of path) {
- pointer[node] = {};
- pointer = pointer[node];
- }
- // Assign the form data to the child node
- let field;
- $.each($(this).find('[id^="id_"]:input'), function(index, value) {
- field = $(value);
- pointer[field.attr("name")] = field.val();
- });
- // Make the REST API request
- $.ajax({
- url: netbox_api_path + 'users/config/',
- async: true,
- contentType: 'application/json',
- dataType: 'json',
- type: 'PATCH',
- beforeSend: function(xhr, settings) {
- xhr.setRequestHeader("X-CSRFToken", netbox_csrf_token);
- },
- data: JSON.stringify(data),
- }).done(function () {
- // Reload the page
- window.location.reload(true);
- }).fail(function (xhr, status, error) {
- alert("Failed to update user config (" + status + "): " + error);
- });
- });
- });
|