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

change ordering field, remove front-end changes

Arthur 3 недель назад
Родитель
Сommit
c4c3518bb4

+ 2 - 3
netbox/dcim/forms/model_forms.py

@@ -733,10 +733,9 @@ class ModuleForm(ModuleCommonForm, PrimaryModelForm):
     )
     module_bay = DynamicModelChoiceField(
         label=_('Module bay'),
-        queryset=ModuleBay.objects.order_by('name'),
+        queryset=ModuleBay.objects.all(),
         query_params={
-            'device_id': '$device',
-            'ordering': 'name',
+            'device_id': '$device'
         },
         context={
             'disabled': 'installed_module',

+ 1 - 1
netbox/dcim/models/device_components.py

@@ -1273,7 +1273,7 @@ class ModuleBay(ModularComponentModel, TrackingModelMixin, MPTTModel):
         verbose_name_plural = _('module bays')
 
     class MPTTMeta:
-        order_insertion_by = ('module',)
+        order_insertion_by = ('name',)
 
     def clean(self):
         super().clean()

Разница между файлами не показана из-за своего большого размера
+ 0 - 0
netbox/project-static/dist/netbox.js


Разница между файлами не показана из-за своего большого размера
+ 0 - 0
netbox/project-static/dist/netbox.js.map


+ 10 - 26
netbox/project-static/src/select/classes/dynamicTomSelect.ts

@@ -75,15 +75,11 @@ export class DynamicTomSelect extends TomSelect {
   load(value: string) {
     const self = this;
 
-    const currentValue = self.getValue();
-
     // Automatically clear any cached options. (Only options included
     // in the API response should be present.)
     self.clearOptions();
 
-    // Clear user_options to prevent the pre-selected option from being treated specially
-    (self as any).user_options = {};
-
+    // Populate the null option (if any) if not searching
     if (self.nullOption && !value) {
       self.addOption(self.nullOption);
     }
@@ -97,33 +93,21 @@ export class DynamicTomSelect extends TomSelect {
     addClasses(self.wrapper, self.settings.loadingClass);
     self.loading++;
 
+    // Make the API request
     fetch(url)
       .then(response => response.json())
       .then(apiData => {
         const results: Dict[] = apiData.results;
-
-        // Add options and set $order to preserve API response order
-        results.forEach((result, index) => {
+        const options: Dict[] = [];
+        for (const result of results) {
           const option = self.getOptionFromData(result);
-          self.addOption(option);
-          const key = option[self.settings.valueField as string] as string;
-          if (self.options[key]) {
-            (self.options[key] as any).$order = index;
-          }
-        });
-
-        if (self.loading > 0) {
-          self.loading--;
-          if (self.loading === 0) {
-            self.wrapper.classList.remove(self.settings.loadingClass as string);
-          }
-        }
-
-        if (currentValue && !self.items.includes(currentValue as string)) {
-          self.items.push(currentValue as string);
+          options.push(option);
         }
-
-        self.refreshOptions(false);
+        return options;
+      })
+      // Pass the options to the callback function
+      .then(options => {
+        self.loadCallback(options, []);
       })
       .catch(() => {
         self.loadCallback([], []);

Некоторые файлы не были показаны из-за большого количества измененных файлов