django-smartbase-admin 1.0.8__py3-none-any.whl → 1.0.9__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (22) hide show
  1. django_smartbase_admin/admin/admin_base.py +0 -3
  2. django_smartbase_admin/admin/widgets.py +28 -20
  3. django_smartbase_admin/engine/dashboard.py +15 -1
  4. django_smartbase_admin/engine/filter_widgets.py +3 -2
  5. django_smartbase_admin/static/sb_admin/dist/chart.js +1 -1
  6. django_smartbase_admin/static/sb_admin/dist/main.js +1 -1
  7. django_smartbase_admin/static/sb_admin/src/js/autocomplete.js +32 -0
  8. django_smartbase_admin/static/sb_admin/src/js/chart.js +4 -3
  9. django_smartbase_admin/static/sb_admin/src/js/main.js +1 -1
  10. django_smartbase_admin/static/sb_admin/src/js/multiselect.js +2 -2
  11. django_smartbase_admin/templates/sb_admin/actions/dashboard.html +1 -1
  12. django_smartbase_admin/templates/sb_admin/dashboard/chart_widget.html +1 -0
  13. django_smartbase_admin/templates/sb_admin/includes/inline_fieldset.html +48 -36
  14. django_smartbase_admin/templates/sb_admin/widgets/date.html +1 -1
  15. django_smartbase_admin/templates/sb_admin/widgets/includes/related_item_buttons.html +23 -18
  16. django_smartbase_admin/templates/sb_admin/widgets/multiwidget.html +1 -1
  17. django_smartbase_admin/templates/sb_admin/widgets/time.html +1 -1
  18. django_smartbase_admin/views/dashboard_view.py +6 -0
  19. {django_smartbase_admin-1.0.8.dist-info → django_smartbase_admin-1.0.9.dist-info}/METADATA +1 -1
  20. {django_smartbase_admin-1.0.8.dist-info → django_smartbase_admin-1.0.9.dist-info}/RECORD +22 -22
  21. {django_smartbase_admin-1.0.8.dist-info → django_smartbase_admin-1.0.9.dist-info}/LICENSE.md +0 -0
  22. {django_smartbase_admin-1.0.8.dist-info → django_smartbase_admin-1.0.9.dist-info}/WHEEL +0 -0
@@ -94,6 +94,9 @@ export default class Autocomplete {
94
94
  }, 200))
95
95
 
96
96
  choiceInput.addEventListener('selectItem', (event) => {
97
+ if(!event.target.hasAttribute('multiple')) {
98
+ this.updateEditButtonUrl(event)
99
+ }
97
100
  choicesJSListeners.selectItem(event.detail, inputEl)
98
101
  })
99
102
  choiceInput.addEventListener('addItem', () => {
@@ -105,6 +108,7 @@ export default class Autocomplete {
105
108
  choiceInput.addEventListener('change', (e) => {
106
109
  if(!e.target.hasAttribute('multiple')) {
107
110
  choicesJS.SBwrapperElButton.click()
111
+ this.updateEditButtonUrl(e)
108
112
  }
109
113
  inputEl.dispatchEvent(new CustomEvent('SBAutocompleteChange'))
110
114
  })
@@ -295,4 +299,32 @@ export default class Autocomplete {
295
299
  document.getElementById(`${field}-value`).textContent = label
296
300
  }
297
301
  }
302
+
303
+ updateEditButtonUrl(event) {
304
+ const group = event.srcElement.dataset.autocompleteDataId?.replace("_data", "-wrapper")
305
+ if (!group) return
306
+
307
+ const wrapper = document.getElementById(group)
308
+ const editButton = wrapper?.querySelector('.edit-button')
309
+ const value = event.detail?.value
310
+
311
+ if (editButton && value) {
312
+ let originalUrl = editButton.getAttribute('hx-get') || editButton.dataset.addUrl || ''
313
+ if (!originalUrl) return
314
+
315
+ const newUrl = originalUrl
316
+ .replace(/\/add\/\?/, `/${value}/change/?`)
317
+ .replace(/\/\d+\/change\/\?/, `/${value}/change/?`)
318
+
319
+ const newEditButton = editButton.cloneNode(true)
320
+ newEditButton.setAttribute('hx-get', newUrl)
321
+ newEditButton.classList.remove('hidden')
322
+
323
+ editButton.replaceWith(newEditButton)
324
+ window.htmx.process(newEditButton)
325
+ }
326
+ }
327
+
328
+
329
+
298
330
  }
@@ -24,6 +24,7 @@ class SBAdminChart {
24
24
  }
25
25
 
26
26
  initChart() {
27
+ this.options.formId = this.options.formId || `${this.options.widgetId}-filter-form`
27
28
  const ctx = document.getElementById(`${this.options.widgetId}-chart`)
28
29
  this.chart = new Chart(ctx, {
29
30
  type: this.options.chartType,
@@ -47,7 +48,7 @@ class SBAdminChart {
47
48
  }
48
49
 
49
50
  refreshData() {
50
- const filterForm = document.querySelector(`#${this.options.widgetId}-filter-form`)
51
+ const filterForm = document.getElementById(this.options.formId)
51
52
  const filterData = new FormData(filterForm).entries()
52
53
  const filterDataNotEmpty = {}
53
54
  for (const [key, value] of filterData) {
@@ -65,7 +66,7 @@ class SBAdminChart {
65
66
  .then(res => {
66
67
  this.chart.data.labels = res.data.main.labels
67
68
  this.chart.data.datasets = this.processDatasets(res.data.main.datasets)
68
- if (this.chart.data.labels.length > 1) {
69
+ if (this.chart.data.labels.length >= 1) {
69
70
  this.chart.canvas.classList.remove('!hidden')
70
71
  } else {
71
72
  this.chart.canvas.classList.add('!hidden')
@@ -101,7 +102,7 @@ class SBAdminChart {
101
102
  }
102
103
 
103
104
  initFilters() {
104
- filterInputValueChangeListener(`[form="${this.options.widgetId}-filter-form"]`, (event) => {
105
+ filterInputValueChangeListener(`[form="${this.options.formId}"]`, (event) => {
105
106
  this.refreshData()
106
107
  filterInputValueChangedUtil(event.target)
107
108
  })
@@ -284,7 +284,7 @@ class Main {
284
284
  const id = textarea.id
285
285
  if (!id) return
286
286
  if (window.CKEDITOR.instances[id]) {
287
- return
287
+ window.CKEDITOR.instances[id].destroy(true)
288
288
  }
289
289
  window.CKEDITOR.replace(id)
290
290
  })
@@ -10,7 +10,7 @@ export default class Multiselect {
10
10
  const wrapperEl = e.target.closest(this.wrapperSelector)
11
11
  const multiselectInput = wrapperEl?.querySelector(selector)
12
12
  const isCheckboxClicked = e.target.type === 'checkbox'
13
- const selectAllEl = wrapperEl.querySelector(`.${selectAllClass}`)
13
+ const selectAllEl = wrapperEl?.querySelector(`.${selectAllClass}`)
14
14
  if(multiselectInput && isCheckboxClicked) {
15
15
  const checkboxes = Array.from(this.getCheckboxes(multiselectInput))
16
16
  if(e.target.classList.contains(selectAllClass)) {
@@ -20,7 +20,7 @@ export default class Multiselect {
20
20
  } else {
21
21
  selectAllEl.checked = false
22
22
  }
23
- if(!checkboxes.some(el => el.checked)) {
23
+ if(!checkboxes.some(el => el.checked) && selectAllEl) {
24
24
  selectAllEl.checked = true
25
25
  }
26
26
  let checked = []
@@ -3,7 +3,7 @@
3
3
 
4
4
  {% block content %}
5
5
  <div class="w-full max-w-1180 mx-auto">
6
- {% for widget in sub_views %}
6
+ {% for widget in direct_sub_views %}
7
7
  {% render_widget widget request %}
8
8
  {% endfor %}
9
9
  </div>
@@ -17,6 +17,7 @@
17
17
  <script>
18
18
  window.SBAdminChart = window.SBAdminChart || {};
19
19
  window.SBAdminChart["{{ widget_id }}"] = new window.SBAdminChartClass({
20
+ "formId": "{{ widget_id }}-filter-form",
20
21
  "widgetId": "{{ widget_id }}",
21
22
  "ajaxUrl": "{{ ajax_url }}",
22
23
  "chartType": "{{ chart_type }}",
@@ -1,46 +1,58 @@
1
1
  {% load sb_admin_tags %}
2
2
 
3
- {% if fieldset.name %}
4
- <header class="mb-24">
5
- <span class="text-dark-900">{{ fieldset.name }}</span>
6
- <div class="ml-auto flex items-center">
7
- {% for action in fieldset_context.actions %}
8
- <a href="{{ action.url }}" class="btn btn-small">{{ action.title }}</a>
9
- {% endfor %}
10
- {% if fieldset.description %}
11
- <div class="js-tooltip ml-8" data-bs-toggle="tooltip" data-bs-placement="bottom" title="{{ fieldset.description|safe }}">
12
- <svg class="w-20 h-20">
13
- <use xlink:href="#Help"></use>
14
- </svg>
3
+ {% block content %}
4
+ {% block header %}
5
+ {% if fieldset.name %}
6
+ <header class="mb-24">
7
+ <span class="text-dark-900">{{ fieldset.name }}</span>
8
+ <div class="ml-auto flex items-center">
9
+ {% block actions %}
10
+ {% for action in fieldset_context.actions %}
11
+ <a href="{{ action.url }}" class="btn btn-small">{{ action.title }}</a>
12
+ {% endfor %}
13
+ {% endblock %}
14
+ {% block description %}
15
+ {% if fieldset.description %}
16
+ <div class="js-tooltip ml-8" data-bs-toggle="tooltip" data-bs-placement="bottom" title="{{ fieldset.description|safe }}">
17
+ <svg class="w-20 h-20">
18
+ <use xlink:href="#Help"></use>
19
+ </svg>
20
+ </div>
21
+ {% endif %}
22
+ {% endblock %}
15
23
  </div>
16
- {% endif %}
17
- </div>
18
- </header>
19
- {% endif %}
20
- {% for line in fieldset %}
21
- <div class="field{% if forloop.last %} -mb-24{% endif %}{% if line.fields|length == 1 and line.errors %} errors{% endif %}{% if not line.has_visible_field %} hidden{% endif %}{% for field in line %}{% if field.field.name %} field-{{ field.field.name }}{% endif %}{% endfor %}">
22
- {% if line.fields|length > 1 %}
23
- <div class="flex max-xs:flex-wrap gap-x-16">{% endif %}
24
+ </header>
25
+ {% endif %}
26
+ {% endblock %}
27
+
28
+ {% block lines %}
29
+ {% for line in fieldset %}
30
+ <div class="field{% if forloop.last %} -mb-24{% endif %}{% if line.fields|length == 1 and line.errors %} errors{% endif %}{% if not line.has_visible_field %} hidden{% endif %}{% for field in line %}{% if field.field.name %} field-{{ field.field.name }}{% endif %}{% endfor %}">
31
+ {% if line.fields|length > 1 %}
32
+ <div class="flex max-xs:flex-wrap gap-x-16">{% endif %}
33
+
34
+ {% for field in line %}
35
+ <div class="mb-16 sm:mb-24 max-xs:w-full sm:flex-1{% if field.field.is_hidden or field.field|is_row_class_field %} hidden{% endif %}">
36
+ {% if field.is_readonly %}
37
+ {% call_method field "contents" request %}
38
+ {% else %}
39
+ {{ field.field }}
40
+ {% if not line.fields|length == 1 %}{{ field.errors }}{% endif %}
41
+ {% endif %}
42
+ </div>
43
+ {% endfor %}
24
44
 
25
- {% for field in line %}
26
- <div class="mb-16 sm:mb-24 max-xs:w-full sm:flex-1{% if field.field.is_hidden or field.field|is_row_class_field %} hidden{% endif %}">
27
- {% if field.is_readonly %}
28
- {% call_method field "contents" request %}
29
- {% else %}
30
- {{ field.field }}
31
- {% if not line.fields|length == 1 %}{{ field.errors }}{% endif %}
45
+ {% if line.fields|length == 1 and line.errors %}
46
+ <div class="-mt-16 mb-24">
47
+ {{ line.errors }}
48
+ </div>
32
49
  {% endif %}
50
+ {% if line.fields|length > 1 %}</div>{% endif %}
33
51
  </div>
34
52
  {% endfor %}
35
53
 
36
- {% if line.fields|length == 1 and line.errors %}
37
- <div class="-mt-16 mb-24">
38
- {{ line.errors }}
39
- </div>
40
- {% endif %}
41
- {% if line.fields|length > 1 %}</div>{% endif %}
42
- </div>
43
- {% endfor %}
44
- {% block additional_fields %}
54
+ {% endblock %}
55
+ {% block additional_fields %}
45
56
 
57
+ {% endblock %}
46
58
  {% endblock %}
@@ -1,5 +1,5 @@
1
1
  {% include 'sb_admin/widgets/includes/field_label.html' %}
2
- <div class="relative inline-flex">
2
+ <div class="relative flex">
3
3
  {% include "sb_admin/widgets/input.html" %}
4
4
  <label class="absolute right-10 top-0 bottom-0 h-full flex items-center pointer-events-none" for="{{ widget.attrs.id }}">
5
5
  <svg class="w-20 h-20">
@@ -1,28 +1,33 @@
1
1
  {% load i18n %}
2
- <div class="flex items-center gap-4 flex-shrink-0">
3
- {% if widget.attrs.related_edit_url %}
4
- <a href="{{ widget.attrs.related_edit_url }}"
5
- class="btn btn-icon"
6
- title="{% trans 'Edit' %}"
7
- data-bs-toggle="modal"
8
- data-bs-target="#sb-admin-modal"
9
- hx-get="{{ widget.attrs.related_edit_url }}?_popup=1&sbadmin_is_modal=1&sb_admin_source_field={{ widget.attrs.id }}"
10
- hx-target="#sb-admin-modal .modal-content"
11
- hx-swap="innerHTML">
2
+ <div class="flex items-center gap-4 flex-shrink-0 related-item-buttons">
3
+ {% if widget.attrs.related_edit_url or widget.attrs.related_add_url %}
4
+ <a
5
+ class="btn btn-icon edit-button {% if not widget.attrs.related_edit_url %}hidden{% endif %}"
6
+ title="{% trans 'Edit' %}"
7
+ {% if widget.attrs.related_edit_url %}
8
+ hx-get="{{ widget.attrs.related_edit_url }}?_popup=1&sbadmin_is_modal=1&sb_admin_source_field={{ widget.attrs.id }}"
9
+ {% endif %}
10
+ {% if widget.attrs.related_add_url and not widget.attrs.related_edit_url %}
11
+ data-add-url="{{ widget.attrs.related_add_url }}?_popup=1&sbadmin_is_modal=1&sb_admin_source_field={{ widget.attrs.id }}"
12
+ {% endif %}
13
+ data-bs-toggle="modal"
14
+ data-bs-target="#sb-admin-modal"
15
+ hx-target="#sb-admin-modal .modal-content"
16
+ hx-swap="innerHTML">
12
17
  <svg class="w-20 h-20">
13
18
  <use xlink:href="#Preview-open"></use>
14
19
  </svg>
15
20
  </a>
16
21
  {% endif %}
17
22
  {% if widget.attrs.related_add_url %}
18
- <a href="{{ widget.attrs.related_add_url }}"
19
- class="btn btn-icon"
20
- title="{% trans 'Add' %}"
21
- data-bs-toggle="modal"
22
- data-bs-target="#sb-admin-modal"
23
- hx-get="{{ widget.attrs.related_add_url }}?_popup=1&sbadmin_is_modal=1&sb_admin_source_field={{ widget.attrs.id }}"
24
- hx-target="#sb-admin-modal .modal-content"
25
- hx-swap="innerHTML">
23
+ <a
24
+ class="btn btn-icon"
25
+ title="{% trans 'Add' %}"
26
+ data-bs-toggle="modal"
27
+ data-bs-target="#sb-admin-modal"
28
+ hx-get="{{ widget.attrs.related_add_url }}?_popup=1&sbadmin_is_modal=1&sb_admin_source_field={{ widget.attrs.id }}"
29
+ hx-target="#sb-admin-modal .modal-content"
30
+ hx-swap="innerHTML">
26
31
  <svg class="w-20 h-20">
27
32
  <use xlink:href="#Add-one"></use>
28
33
  </svg>
@@ -1,7 +1,7 @@
1
1
  {% include 'sb_admin/widgets/includes/field_label.html' %}
2
2
  <div class="flex gap-16">
3
3
  {% for widget in widget.subwidgets %}
4
- <div class="relative flex-1">
4
+ <div class="relative">
5
5
  {% include widget.template_name with subwidget=True %}
6
6
  </div>
7
7
  {% endfor %}
@@ -1,5 +1,5 @@
1
1
  {% include 'sb_admin/widgets/includes/field_label.html' %}
2
- <div class="relative inline-flex time-wrapper">
2
+ <div class="relative flex time-wrapper">
3
3
  {% include "sb_admin/widgets/input.html" %}
4
4
  <label class="absolute right-10 top-0 bottom-0 h-full flex items-center pointer-events-none" for="{{ widget.attrs.id }}">
5
5
  <svg class="w-20 h-20">
@@ -11,6 +11,7 @@ class SBAdminDashboardView(SBAdminView):
11
11
  menu_action = Action.DASHBOARD.value
12
12
  widgets = None
13
13
  title = None
14
+ direct_sub_views = None
14
15
 
15
16
  def __init__(self, title=None, widgets=None) -> None:
16
17
  super().__init__()
@@ -27,16 +28,21 @@ class SBAdminDashboardView(SBAdminView):
27
28
  view.init_view_dynamic(request, request_data, **kwargs)
28
29
 
29
30
  def get_sub_views(self, configuration):
31
+ self.direct_sub_views = []
30
32
  self.sub_views = []
31
33
  for idx, widget_view in enumerate(self.widgets):
32
34
  widget_view.widget_id = f"{self.get_id()}_{idx}"
33
35
  widget_view.init_widget_static(configuration)
36
+ widget_view_sub_views = widget_view.get_sub_views(configuration) or []
34
37
  self.sub_views.append(widget_view)
38
+ self.direct_sub_views.append(widget_view)
39
+ self.sub_views.extend(widget_view_sub_views)
35
40
  return self.sub_views
36
41
 
37
42
  def dashboard(self, request, modifier):
38
43
  context = self.get_global_context(request)
39
44
  context["sub_views"] = self.sub_views
45
+ context["direct_sub_views"] = self.direct_sub_views
40
46
  context["title"] = self.get_title()
41
47
  return TemplateResponse(
42
48
  request,
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: django-smartbase-admin
3
- Version: 1.0.8
3
+ Version: 1.0.9
4
4
  Summary:
5
5
  Home-page: https://smartbase-sk.github.io/django-smartbase-admin-docs/
6
6
  License: MIT
@@ -3,9 +3,9 @@ django_smartbase_admin/actions/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5
3
3
  django_smartbase_admin/actions/admin_action_list.py,sha256=iL311ryR9_LMlJkl6kF-4zfKHYo3DxoUKesclDDla9s,19678
4
4
  django_smartbase_admin/actions/advanced_filters.py,sha256=Vm8b6TAwNehR8INjolFG7pEYL4ADO7XUiVOWpb0btM0,13481
5
5
  django_smartbase_admin/admin/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
6
- django_smartbase_admin/admin/admin_base.py,sha256=Ck-E7ABXcbYjENLeUTvcHXOY9frtXfn2pOlH4MDtYPM,46156
6
+ django_smartbase_admin/admin/admin_base.py,sha256=XdwXouHzh8WLoUTs5WrN06awmA5I-aXQgSuGLNeagA0,46068
7
7
  django_smartbase_admin/admin/site.py,sha256=VrJBhwgZsLa2GohvjnNL7m4dVR3S4Ou1V1UzfE1qOoQ,6577
8
- django_smartbase_admin/admin/widgets.py,sha256=7_ys5HBQpzvGSD3r5fTKFoDMFP9I-UgfuCw1YkBpcoE,24925
8
+ django_smartbase_admin/admin/widgets.py,sha256=TlIN2mOSJ6qECmp5CEm2hsVRHNyvSik9B989l8hkmDQ,25183
9
9
  django_smartbase_admin/apps.py,sha256=C1wT1YUEZNKcUJfpD01nIZEFgYEsuav52WFKvEURRDU,545
10
10
  django_smartbase_admin/compilemessages.py,sha256=-_FEFQlOvE4L8UzSuUxSxZQjgGlwL9IZtmg59fW_kIQ,342
11
11
  django_smartbase_admin/engine/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -15,11 +15,11 @@ django_smartbase_admin/engine/admin_entrypoint_view.py,sha256=jfMfcYPfdre2abHfC4
15
15
  django_smartbase_admin/engine/admin_view.py,sha256=9wGffahDR3IYmhL9ZbX8uitwGdXdw5DIL5GnWBawmJM,4238
16
16
  django_smartbase_admin/engine/configuration.py,sha256=fg7CeG7Viv-QFx0S-uuk_P-_16Nl54gqj6-MXJUkK88,8422
17
17
  django_smartbase_admin/engine/const.py,sha256=0Ialr6Er6ThnXzEI6fs9Bm3dTTdSnQ6oaSxXFO2mW1k,2513
18
- django_smartbase_admin/engine/dashboard.py,sha256=l_i_KluSe83iA7-adNavj7WjHmh4mAxdVq7H3JrE8hc,23866
18
+ django_smartbase_admin/engine/dashboard.py,sha256=d2DgixV1olL4jXFylcOfRsJZ4GfjqFAjYLgb_Wwyzas,24321
19
19
  django_smartbase_admin/engine/fake_inline.py,sha256=9C2_mltg2P9-xa3vuoo5X_RcFaCRpKGNSy7t1_iiasE,5802
20
20
  django_smartbase_admin/engine/field.py,sha256=9yZfrc1UGqXoHhhBy08yLSjQB5ptfn9B-FQUDCcWtNc,10531
21
21
  django_smartbase_admin/engine/field_formatter.py,sha256=Ma4GoO2DMgCtx-zy_hgyW_095GWwflMdn8uN4GUatgw,2087
22
- django_smartbase_admin/engine/filter_widgets.py,sha256=GMu_f3A9YlWNcpFNXXTz8Rr_PPJq03oT6fUK7yMP4bM,31877
22
+ django_smartbase_admin/engine/filter_widgets.py,sha256=jGx1LuuprJ0DxwxbuyN_Oym3HKsqSJjePzyapFBcedo,31881
23
23
  django_smartbase_admin/engine/global_filter_form.py,sha256=jlj6e9VYWDPyUNjcgj3gTIkCZXO01NZOWAeU3jFtkoA,249
24
24
  django_smartbase_admin/engine/menu_item.py,sha256=rMJFG5xm1T0wF8lUmiAZHzKtt9C0LdbpRFvaP0PlngM,2936
25
25
  django_smartbase_admin/engine/modal_view.py,sha256=Qzx9kd9shoqCYes_lYkAvX1ItVL41oi2vORUrYUkZkE,2269
@@ -62,10 +62,10 @@ django_smartbase_admin/static/sb_admin/css/querybuilder/query-builder.default.mi
62
62
  django_smartbase_admin/static/sb_admin/dist/calendar.js,sha256=gifkzy5T_DZHFmJvpAW9nl0WKVWYwRzWCEAbqwneDIU,2533
63
63
  django_smartbase_admin/static/sb_admin/dist/calendar_style.css,sha256=4RCk4sWo7vDiLPuNv4SdABwP1K6UUDuVxJWRR4cXs7I,2684
64
64
  django_smartbase_admin/static/sb_admin/dist/calendar_style.js,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
65
- django_smartbase_admin/static/sb_admin/dist/chart.js,sha256=TTgR9c73x7zhLyQNCwHOwx2LKieWFQqjt2hJ24YNcRI,204878
65
+ django_smartbase_admin/static/sb_admin/dist/chart.js,sha256=85FPvSgZ2k34GIAKx1tLWF2vRas2cKDFQYIqFAvPOQ8,204926
66
66
  django_smartbase_admin/static/sb_admin/dist/chart.js.LICENSE.txt,sha256=m7M__mzLlrKDz-hky_AC848p_HzYWhziwCLIpXMsj4I,257
67
67
  django_smartbase_admin/static/sb_admin/dist/confirmation_modal.js,sha256=glK-x4oxSAHqiabqXmNFE3FRtzMbpg7TgZiKcPle9_o,1745
68
- django_smartbase_admin/static/sb_admin/dist/main.js,sha256=syHHNlzH8M6gI1njoCnEPtdwMzPqvzvx8h3jpXBQQXc,379977
68
+ django_smartbase_admin/static/sb_admin/dist/main.js,sha256=sc8UZnW-IarW3k_z5ZCjEw6HsnyPV9J0mSNjdmcBE5I,380699
69
69
  django_smartbase_admin/static/sb_admin/dist/main.js.LICENSE.txt,sha256=Z8-1IrzhOFV3eE_WGR7SRfbzN9GRXsvfiU7_E_BkX-k,5600
70
70
  django_smartbase_admin/static/sb_admin/dist/main_style.css,sha256=ThV9jdHV89YzK5a4ciTX7mn_XfInUH9lj99SYm8CRgw,170411
71
71
  django_smartbase_admin/static/sb_admin/dist/main_style.js,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -516,16 +516,16 @@ django_smartbase_admin/static/sb_admin/src/css/components/_toggle.css,sha256=Qiw
516
516
  django_smartbase_admin/static/sb_admin/src/css/components/_tooltip.css,sha256=RnJQcJ-1MX-9jsMOeApuMaMaENJyiD-8UIg8wmDrXRE,2291
517
517
  django_smartbase_admin/static/sb_admin/src/css/style.css,sha256=M6Z77etzClsxi1NCYiFg0kJurIqkuvYeYIbc5rxx4gQ,739
518
518
  django_smartbase_admin/static/sb_admin/src/css/tree_widget.css,sha256=dVltYkRkd8DciWc0iMW0hXkTO08LiWcS5PFesRQIr9M,11148
519
- django_smartbase_admin/static/sb_admin/src/js/autocomplete.js,sha256=CkLpXsQRhZiKVaTNYmpWJkmNTJRAl5F4kqkIVoiocUE,13289
519
+ django_smartbase_admin/static/sb_admin/src/js/autocomplete.js,sha256=xqI845bSuseCflXRb7LGo4ozJt70G6PHupYPlFMviro,14402
520
520
  django_smartbase_admin/static/sb_admin/src/js/calendar.js,sha256=FweC-a1YVl4rVoQV8kbXeCflwnBt0moODJCfxARQNl0,2036
521
- django_smartbase_admin/static/sb_admin/src/js/chart.js,sha256=1GDWFatDPaq_k0XJJ5IeJZZtEmNXNaoAktRSpBwbYSo,4437
521
+ django_smartbase_admin/static/sb_admin/src/js/chart.js,sha256=kAXTsM3pCasDDmj2HfqOksPts5O87By4HORJX36n3t0,4497
522
522
  django_smartbase_admin/static/sb_admin/src/js/choices.js,sha256=xyM1j_xDdA_oKou6fUZsr7Hc5zGF0oS8uQmyF5LdaEA,4842
523
523
  django_smartbase_admin/static/sb_admin/src/js/code.js,sha256=Q1jKpTsUZhxhaGDRrqHhs_jn9gZPYjB1xf7VSXfiCd0,486
524
524
  django_smartbase_admin/static/sb_admin/src/js/confirmation_modal.js,sha256=9xycy0sYJfT0SxeDucbOmvg9gHSrBo3KngZjCAHkVMM,3610
525
525
  django_smartbase_admin/static/sb_admin/src/js/datepicker.js,sha256=Nnc28kngTOnb8d2q6NOFGismUVp6l-sTVeBu3M1DgJY,6704
526
526
  django_smartbase_admin/static/sb_admin/src/js/datepicker_plugins.js,sha256=d_EkPi0qv_74diVL4inJs8n1os4t1Ss6hp6-gY4_6hU,12368
527
- django_smartbase_admin/static/sb_admin/src/js/main.js,sha256=IE6RMkQAQ7Gbf2BactgdClLu0FtOqTDofQlyEy0ivrs,11719
528
- django_smartbase_admin/static/sb_admin/src/js/multiselect.js,sha256=T8HHStvrO_fHJjyutgH2Ff39IUPnW91Hh9fLqUxUORc,4320
527
+ django_smartbase_admin/static/sb_admin/src/js/main.js,sha256=t7zR8aH8uSMqQBK53WbUeu_g6ubYbCfhEViEqddokf4,11756
528
+ django_smartbase_admin/static/sb_admin/src/js/multiselect.js,sha256=OlOTrBFR-Ds1as57G3al_3MJq5-_N77ytZngor1Q0UQ,4336
529
529
  django_smartbase_admin/static/sb_admin/src/js/range.js,sha256=k_1EIK0R-mrg3ScopUm2UDuYeaCg_VLTjtdJoN-8MXc,1794
530
530
  django_smartbase_admin/static/sb_admin/src/js/sb_ajax_params_tabulator_modifier.js,sha256=vJsAfRlXYeUH-hXLyVukim-UBRUHhv2J9UZHKAALOKo,650
531
531
  django_smartbase_admin/static/sb_admin/src/js/sidebar.js,sha256=gx0MqnLWIRb26-GDvETQ7CE4DucP-L-9-hZ9-oFjuUw,1570
@@ -548,7 +548,7 @@ django_smartbase_admin/static/sb_admin/src/js/tree_widget.js,sha256=rL0znvFm85f7
548
548
  django_smartbase_admin/static/sb_admin/src/js/utils.js,sha256=QsT-fmobc0HGFLhK5ZZlHnxX4wtbJ7nLxkWOkSJuxjY,4812
549
549
  django_smartbase_admin/templates/sb_admin/actions/change_form.html,sha256=6W_cvo9g6FobRuGS3wUvWbd9YEccidy9ALiiam4sASY,15453
550
550
  django_smartbase_admin/templates/sb_admin/actions/change_password.html,sha256=LhciaKCvlywKMJ6gY9JbEaTkOXjNSFO-mAnWIZfk6sA,3200
551
- django_smartbase_admin/templates/sb_admin/actions/dashboard.html,sha256=idjrEnXT0EP8gNHMu9QIneaLRhOJwB6QW92brrg7z1s,272
551
+ django_smartbase_admin/templates/sb_admin/actions/dashboard.html,sha256=KLy4Ix4Bs8u_-e2d6HT4Fz8MoAOsS2boCpD8qsnaHxU,279
552
552
  django_smartbase_admin/templates/sb_admin/actions/delete_confirmation.html,sha256=4AeJLqGGPVBYXS9XQSNTnMvsT3I6QttyNLThE8gEZHE,3205
553
553
  django_smartbase_admin/templates/sb_admin/actions/delete_selected_confirmation.html,sha256=hQl8C3j22LI6fVPAMqRd4d_kXNKzcCNJDuhOzEZKBGE,3308
554
554
  django_smartbase_admin/templates/sb_admin/actions/list.html,sha256=SUXoRQtaqw6vpjry0bkzXTPa8KWQonXubcJlDH7-SKM,6905
@@ -585,7 +585,7 @@ django_smartbase_admin/templates/sb_admin/components/inputs.html,sha256=h1rfHTk2
585
585
  django_smartbase_admin/templates/sb_admin/config/view.html,sha256=26X-VD2Y-l9yLrSavu1JxhrBOUSfB00bFFVC9q_sTL8,4177
586
586
  django_smartbase_admin/templates/sb_admin/dashboard/calendar_widget.html,sha256=7JfyRZP5C-MOx9Z8JmGt8VKiOqCTDag8vse42THQrJE,1486
587
587
  django_smartbase_admin/templates/sb_admin/dashboard/chart_aggregate_sub_widget.html,sha256=Dw7ksbdQykoXzj3UcGdkfajoN-q98_xSJul9wIle67Y,900
588
- django_smartbase_admin/templates/sb_admin/dashboard/chart_widget.html,sha256=Js-5POukdKmJxmpYuPwUqzqEicqKdw3AXqnEjPVMzqE,1764
588
+ django_smartbase_admin/templates/sb_admin/dashboard/chart_widget.html,sha256=yylKv5x_UCANdUTbMz6Eq7tO1C_UIln2o4wuiJu02xo,1825
589
589
  django_smartbase_admin/templates/sb_admin/dashboard/list_widget.html,sha256=uU6na3vZdRvWPpYDAOy-LxSoeM5S3qLErkpi2F6x0yw,141
590
590
  django_smartbase_admin/templates/sb_admin/dashboard/widget_base.html,sha256=wStFQ0N9C2bDcseoO8nOPRD70pGXLQe6-f4KLtZP_CY,720
591
591
  django_smartbase_admin/templates/sb_admin/filter_widgets/advanced_filters/autocomplete_field.html,sha256=YmiBxK1bTlJUkI2qOu9tNXVKACgxvsoigNRBkEbFMEM,1626
@@ -613,7 +613,7 @@ django_smartbase_admin/templates/sb_admin/includes/change_form_title.html,sha256
613
613
  django_smartbase_admin/templates/sb_admin/includes/components.html,sha256=ixhN__EcMbCfjXQXdCElda18sqWZYj9scV3nsR9nXts,18822
614
614
  django_smartbase_admin/templates/sb_admin/includes/confirmation.html,sha256=F2lgUPCIF6pveCSyS7L4k8ifZxa_DoJp-NZb4uwmtyI,1844
615
615
  django_smartbase_admin/templates/sb_admin/includes/fieldset.html,sha256=cSaqkdB2OOMXW4UFysoDQP4x-Wm4fgMtClPHqHepv1o,280
616
- django_smartbase_admin/templates/sb_admin/includes/inline_fieldset.html,sha256=CfTFCpV7F8p2WAZqTdz9peuvnuZz99193waPPoN2vac,1970
616
+ django_smartbase_admin/templates/sb_admin/includes/inline_fieldset.html,sha256=N8rlUUzlaHGOG_NDtjV6XvKL3whxkDA7jFBVS0D5qys,2592
617
617
  django_smartbase_admin/templates/sb_admin/includes/loading.html,sha256=mI-Ya6y0vTOqPVUS9n_GPXmQDvyaDdL9637I5oqcnBE,287
618
618
  django_smartbase_admin/templates/sb_admin/includes/loading_absolute.html,sha256=Eck62NW9ByTw6Mu5QOcYZZJVebhRUNbxTB29XmN5drE,304
619
619
  django_smartbase_admin/templates/sb_admin/includes/notifications.html,sha256=wEEcrcdX3Wrlz-tVCJouiUFSZV_vVEqrc5opV_nifAw,783
@@ -656,7 +656,7 @@ django_smartbase_admin/templates/sb_admin/widgets/ckeditor.html,sha256=-QoAaydUO
656
656
  django_smartbase_admin/templates/sb_admin/widgets/clearable_file_input.html,sha256=6vpo1APmpLRG9vG4PP96ZcbcOOFeYUlXqbdjscBITt8,2435
657
657
  django_smartbase_admin/templates/sb_admin/widgets/code.html,sha256=SQANQDS7cnjXcIVFKFQ-BpwDm0LVlfmu226TEZX3pvA,345
658
658
  django_smartbase_admin/templates/sb_admin/widgets/color_field.html,sha256=dkFtiBbU6wrzVpcS8DxIK_G682zwNoqwVo19zTx4rwM,1300
659
- django_smartbase_admin/templates/sb_admin/widgets/date.html,sha256=xdPmsmNemglUofATqNFOa5Q9ENYQHagdMeA-LOyS4KU,439
659
+ django_smartbase_admin/templates/sb_admin/widgets/date.html,sha256=84gwSiUWb1wp_4lV25gt5e6MaXtgo4q0fA29ny7jmiQ,432
660
660
  django_smartbase_admin/templates/sb_admin/widgets/datetime.html,sha256=NGn3jCAoRjAgIuhe6_jXQh8LkLqHs5HS_6u9uIdfDLI,44
661
661
  django_smartbase_admin/templates/sb_admin/widgets/email.html,sha256=0SO-LyKETJmx8G53F81h8s-3F_CDaHEKFMt0cwnZNQs,43
662
662
  django_smartbase_admin/templates/sb_admin/widgets/file.html,sha256=RBMxfR1PwTLAZ3ZbGJ58UAxtzhefbJWAvaOGZ-2mXls,44
@@ -665,12 +665,12 @@ django_smartbase_admin/templates/sb_admin/widgets/hidden.html,sha256=NGn3jCAoRjA
665
665
  django_smartbase_admin/templates/sb_admin/widgets/html_read_only.html,sha256=GBg8quVgHSJqNxRzkm56YZ4isWLzd1Wlz4CRmukz8i0,18
666
666
  django_smartbase_admin/templates/sb_admin/widgets/includes/field_label.html,sha256=1TdNDxKXM5wScPQxgvRy0ikVsmj0GTJi2YPM8UlrWTQ,148
667
667
  django_smartbase_admin/templates/sb_admin/widgets/includes/help_text.html,sha256=QXYllkl2cmu7tLkWCgiEJis7cYzi9qzqFle2gK_GJXY,148
668
- django_smartbase_admin/templates/sb_admin/widgets/includes/related_item_buttons.html,sha256=EiqRMkyJTXoRL35q28tvvoyP5XYATTEcsmv8JNy6oC0,1263
668
+ django_smartbase_admin/templates/sb_admin/widgets/includes/related_item_buttons.html,sha256=ks0sHsVqt_5KmbtCGralZSfqCJTUlCMlKwlOU3qZc0o,1722
669
669
  django_smartbase_admin/templates/sb_admin/widgets/includes/simple_field_label.html,sha256=P6XBwmJmcQbb1YhKnEB6wnfP2cN59T8U0GnUt5s_oWo,443
670
670
  django_smartbase_admin/templates/sb_admin/widgets/input.html,sha256=S-ClLUAP-ZdYxv77KQcBWD2JcrKDEyxHuNPPRhfAywk,185
671
671
  django_smartbase_admin/templates/sb_admin/widgets/input_option.html,sha256=6If56Z3ifRFpfpu0ukcs_RINx0goc6SjFJanAH3Wey8,209
672
672
  django_smartbase_admin/templates/sb_admin/widgets/multiple_hidden.html,sha256=azTJ6tBh_nZOmoW_HwtQW6IJEoKcpz-M8j0jVVfq2dU,50
673
- django_smartbase_admin/templates/sb_admin/widgets/multiwidget.html,sha256=mF63KLHFqxkCfNZ6-QYmQrEk47M4zRqKt8IuGRa14Tg,329
673
+ django_smartbase_admin/templates/sb_admin/widgets/multiwidget.html,sha256=7dqycRhhB-sIvs92hJvn-D8CRwM9ApA408-C5694nJQ,322
674
674
  django_smartbase_admin/templates/sb_admin/widgets/number.html,sha256=pZbRfDXtu-eFIO92GYiEsUWJHyrsOp0xg9cKYFhym3w,159
675
675
  django_smartbase_admin/templates/sb_admin/widgets/password.html,sha256=Ss3pHx4UpzGa4WAHrRm3e_QU7AKr9KGV81-YCKAFolg,585
676
676
  django_smartbase_admin/templates/sb_admin/widgets/radio.html,sha256=dIt2H5SExpN3JNLFOXQQzVXqtSExTkBMr2cNCxQnyiQ,363
@@ -683,7 +683,7 @@ django_smartbase_admin/templates/sb_admin/widgets/splitdatetime.html,sha256=Vq40
683
683
  django_smartbase_admin/templates/sb_admin/widgets/splithiddendatetime.html,sha256=Vq40uBmv89Qyq14IPqudLUoH-aAVocvnDSJPftbAMOs,50
684
684
  django_smartbase_admin/templates/sb_admin/widgets/text.html,sha256=piw2218tiWPfOwncIvSGAW14Gc5FIzkL_YllirK4yTs,160
685
685
  django_smartbase_admin/templates/sb_admin/widgets/textarea.html,sha256=JZ4Bf6l49dg2VVC5McXtQRehOHmZid1eknUKc2oIDGU,257
686
- django_smartbase_admin/templates/sb_admin/widgets/time.html,sha256=nuU83IZzNJoWuY0MjHU5oCi35BMsNnEt0UZPS6GdPi4,448
686
+ django_smartbase_admin/templates/sb_admin/widgets/time.html,sha256=mc9plPo31G2ntaqc84_ELe_ci-Q4Lf7lqLlhzaNmNWg,441
687
687
  django_smartbase_admin/templates/sb_admin/widgets/toggle.html,sha256=z7E1re0gy2Adkbsvp_iYgZ6_48TmZDz5A0s_D9Zsi2w,289
688
688
  django_smartbase_admin/templates/sb_admin/widgets/tree_base.html,sha256=Z0q84dLRMbdFeX-HcwCN2ow_xFqrzx-DwL91pApXgAA,2817
689
689
  django_smartbase_admin/templates/sb_admin/widgets/tree_select.html,sha256=FlUDS8ALj1nPsKTkyz9sMEugkl2RTvkUdN1VeL35ddc,1330
@@ -695,11 +695,11 @@ django_smartbase_admin/templatetags/sb_admin_tags.py,sha256=rvJufjS0mhGj6Wl6P-iE
695
695
  django_smartbase_admin/urls.py,sha256=Bjdewssljt0LIefjixBem9JN0kkghPvmrIETj3GdXbY,17
696
696
  django_smartbase_admin/utils.py,sha256=P8H2PbaHnF47eRkfMJXDZMkJwcLVZHLfD5YZIHndwUU,3385
697
697
  django_smartbase_admin/views/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
698
- django_smartbase_admin/views/dashboard_view.py,sha256=vtz5emYTQ5WDFeLA8HrcmjSOVdc0o2vYbjljbT67gvo,1495
698
+ django_smartbase_admin/views/dashboard_view.py,sha256=Rgdq3r3JoAGfi2oUC1N_8ZE5KXuI5S4MmRxIkT-EN78,1812
699
699
  django_smartbase_admin/views/global_filter_view.py,sha256=eYo1moJGyi7jc2cPDA5ZBiEgA7Hmc-DxbQvbqUpDkg8,1127
700
700
  django_smartbase_admin/views/media_view.py,sha256=5BLWXuzynF7nM34t-mf2BQSRN5ojY8HxpLIqt7Jiq9g,292
701
701
  django_smartbase_admin/views/translations_view.py,sha256=JlAE9EPrTmbEVXqX7r0NjdbEv0c9BK3YDj_BYCIPPck,20351
702
- django_smartbase_admin-1.0.8.dist-info/LICENSE.md,sha256=okRGMBOYvyhprt2eTpX_QXqpzC0MODF-U7zX-4fKPjQ,1078
703
- django_smartbase_admin-1.0.8.dist-info/METADATA,sha256=k0f_zOrJbEEZRlyoTjDuZ8zsWRw9D1POykgnIk-FKAU,5333
704
- django_smartbase_admin-1.0.8.dist-info/WHEEL,sha256=Nq82e9rUAnEjt98J6MlVmMCZb-t9cYE2Ir1kpBmnWfs,88
705
- django_smartbase_admin-1.0.8.dist-info/RECORD,,
702
+ django_smartbase_admin-1.0.9.dist-info/LICENSE.md,sha256=okRGMBOYvyhprt2eTpX_QXqpzC0MODF-U7zX-4fKPjQ,1078
703
+ django_smartbase_admin-1.0.9.dist-info/METADATA,sha256=PKc5sDfLO5b0EfWSNMNtXAIShe7yC4Eq1mre-1UBAc4,5333
704
+ django_smartbase_admin-1.0.9.dist-info/WHEEL,sha256=Nq82e9rUAnEjt98J6MlVmMCZb-t9cYE2Ir1kpBmnWfs,88
705
+ django_smartbase_admin-1.0.9.dist-info/RECORD,,