Просмотр исходного кода

Tweak the table config form for generic use

Jeremy Stretch 5 лет назад
Родитель
Сommit
ff3d0b72b9

+ 23 - 6
netbox/project-static/js/tableconfig.js

@@ -1,10 +1,27 @@
 $(document).ready(function() {
-    $('form.tableconfigform').submit(function(event) {
+    $('form.userconfigform').submit(function(event) {
         event.preventDefault();
-        let table_name = this.getAttribute('data-table-name');
-        let data = {"tables": {}};
-        data['tables'][table_name] = {};
-        data['tables'][table_name]['columns'] = $('#id_columns').val();
+
+        // 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,
@@ -19,7 +36,7 @@ $(document).ready(function() {
             // Reload the page
             window.location.reload(true);
         }).fail(function (xhr, status, error) {
-            alert("Failed: " + error);
+            alert("Failed to update user config (" + status + "): " + error);
         });
     });
 });

+ 1 - 2
netbox/templates/inc/table_config_form.html

@@ -7,8 +7,7 @@
                 <h4 class="modal-title">Table Configuration</h4>
             </div>
             <div class="modal-body">
-                <form action="" method="post" class="form-horizontal tableconfigform" data-table-name="{{ table_config_form.table_name }}">
-                    {% csrf_token %}
+                <form class="form-horizontal userconfigform" data-config-root="tables.{{ table_config_form.table_name }}">
                     {% render_form table_config_form %}
                     <div class="row">
                         <div class="col-md-9 col-md-offset-3">