Skip to content

Commit

Permalink
add: client-side sorting of select-entries (much easier for language-…
Browse files Browse the repository at this point in the history
…dependant sorting
  • Loading branch information
saemideluxe committed Jun 21, 2024
1 parent 7ceeafb commit d19ae42
Show file tree
Hide file tree
Showing 4 changed files with 12 additions and 4 deletions.
2 changes: 1 addition & 1 deletion basxbread/contrib/document_templates/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@ class DocumentTemplate(models.Model):
ContentType, on_delete=models.PROTECT, verbose_name=_("Model")
)
model.formfield_kwargs = {
"queryset": ContentType.objects.all().order_by("app_label", "model")
"widget": forms.Select(attrs={"_class": "autosort"}),
}
filename_template = models.TextField(_("Filename template"), blank=True)
filename_template.formfield_kwargs = {"widget": forms.Textarea(attrs={"rows": 1})}
Expand Down
2 changes: 1 addition & 1 deletion basxbread/contrib/reports/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ class Report(models.Model):
ContentType, on_delete=models.PROTECT, verbose_name=_("Model")
)
model.formfield_kwargs = {
"queryset": ContentType.objects.all().order_by("app_label", "model")
"widget": forms.Select(attrs={"_class": "autosort"}),
}
filter = QuerysetField(_("Filter"), modelfieldname="model")
custom_queryset = models.CharField(
Expand Down
5 changes: 3 additions & 2 deletions basxbread/contrib/triggers/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
import typing

import htmlgenerator as hg
from django import forms
from django.contrib.auth import get_user_model
from django.contrib.auth.models import Group
from django.contrib.contenttypes.models import ContentType
Expand Down Expand Up @@ -53,7 +54,7 @@ class Action(models.Model):
null=True, # just for backwards-compatability
)
model.formfield_kwargs = {
"queryset": ContentType.objects.all().order_by("app_label", "model")
"widget": forms.Select(attrs={"_class": "autosort"}),
}

def run(self, object):
Expand Down Expand Up @@ -129,7 +130,7 @@ class Trigger(models.Model):
on_delete=models.PROTECT,
)
model.formfield_kwargs = {
"queryset": ContentType.objects.all().order_by("app_label", "model")
"widget": forms.Select(attrs={"_class": "autosort"}),
}
filter = QuerysetField(_("Filter"), modelfieldname="model")
enable = models.BooleanField(default=True)
Expand Down
7 changes: 7 additions & 0 deletions basxbread/static/js/main.js
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ function basxbread_load_elements() {
$$(
"[onload]:not(body):not(frame):not(iframe):not(img):not(link):not(script):not(style)"
)._.fire("load");
$$("select.autosort").forEach(breadSortSelect);

setBasxBreadCookie("timezone", Intl.DateTimeFormat().resolvedOptions().timeZone);
}
Expand Down Expand Up @@ -198,3 +199,9 @@ function searchMatchRank(searchTerms, value) {
return score;
}

function breadSortSelect(selectNode) {
optionNodes = Array.from(selectNode.children);
comparator = new Intl.Collator().compare;
optionNodes.sort((a, b) => comparator(a.textContent, b.textContent));
optionNodes.forEach((option) => selectNode.appendChild(option));
}

0 comments on commit d19ae42

Please sign in to comment.