Skip to content

Commit 05284e6

Browse files
author
oko-x
committed
triv: tabs are independent of each other and other tabs gets cleared, refactor
1 parent 8cb6e41 commit 05284e6

File tree

8 files changed

+80
-50
lines changed

8 files changed

+80
-50
lines changed

pyproject.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[tool.poetry]
22
name = "django-smartbase-admin"
3-
version = "0.2.39"
3+
version = "0.2.40"
44
description = ""
55
authors = ["SmartBase <[email protected]>"]
66
readme = "README.md"

src/django_smartbase_admin/engine/admin_base_view.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -393,7 +393,7 @@ def get_tabulator_definition(self, request):
393393
[
394394
"advancedFilterModule",
395395
"fullTextSearchModule",
396-
"filterOptionsModule",
396+
"headerTabsModule",
397397
]
398398
)
399399
return tabulator_definition

src/django_smartbase_admin/static/sb_admin/src/js/table.js

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ import {AdvancedFilterModule} from "./table_modules/advanced_filter_module"
99
import {MovableColumnsModule} from "./table_modules/movable_columns_module"
1010
import {DataEditModule} from "./table_modules/data_edit_module"
1111
import {FullTextSearchModule} from "./table_modules/full_text_search_module"
12-
import { FilterOptionsModule } from "./table_modules/filter_options_module"
12+
import { HeaderTabsModule } from "./table_modules/header_tabs_module"
1313

1414

1515
class SBAdminTable {
@@ -88,6 +88,7 @@ class SBAdminTable {
8888

8989
refreshTableDataIfNotUrlLoad() {
9090
if (!this.loadingFromUrl) {
91+
this.callModuleAction('beforeRefreshTableDataIfNotUrlLoad')
9192
// apply fixed height to prevent loosing scroll position
9293
this.tabulator.element.style.height = `${this.tabulator.element.offsetHeight}px`
9394
this.tabulator.setData().finally(() => {
@@ -285,5 +286,5 @@ window.SBAdminTableModulesClass = {
285286
'movableColumnsModule': MovableColumnsModule,
286287
'dataEditModule': DataEditModule,
287288
'fullTextSearchModule': FullTextSearchModule,
288-
'filterOptionsModule': FilterOptionsModule,
289+
'headerTabsModule': HeaderTabsModule,
289290
}

src/django_smartbase_admin/static/sb_admin/src/js/table_modules/base_module.js

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,9 @@ export class SBAdminTableModule {
2727
getUrlParams() {
2828
}
2929

30+
beforeRefreshTableDataIfNotUrlLoad() {
31+
}
32+
3033
modifyTabulatorOptions(tabulatorOptions) {
3134
return tabulatorOptions
3235
}

src/django_smartbase_admin/static/sb_admin/src/js/table_modules/filter_module.js

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -17,8 +17,8 @@ export class FilterModule extends SBAdminTableModule {
1717
const params = this.table.getParamsFromUrl()
1818
const filterData = params[this.table.constants.FILTER_DATA_NAME]
1919
document.querySelector(`#${this.table.filterFormId}`).reset()
20-
document.querySelectorAll(`.filter-wrapper`).forEach((el)=>{
21-
if(!el.hasAttribute('data-all-filters-visible')) {
20+
document.querySelectorAll(`.filter-wrapper`).forEach((el) => {
21+
if (!el.hasAttribute('data-all-filters-visible')) {
2222
this.hideFilter(el.getAttribute('data-filter-input-name'))
2323
}
2424
})
@@ -41,15 +41,15 @@ export class FilterModule extends SBAdminTableModule {
4141

4242
filterInputValueChanged(field) {
4343
const valueElem = filterInputValueChangedUtil(field)
44-
if(!valueElem) {
44+
if (!valueElem) {
4545
return
4646
}
4747
this.changeFilterButtonState(valueElem)
4848
}
4949

5050
changeFilterButtonState(valueElem) {
5151
const dropdownButton = valueElem.closest('button')
52-
if(valueElem.innerHTML) {
52+
if (valueElem.innerHTML) {
5353
dropdownButton.classList.remove('empty')
5454
return
5555
}
@@ -71,13 +71,13 @@ export class FilterModule extends SBAdminTableModule {
7171
}
7272

7373
focusOnFilterInput(filterElem) {
74-
setTimeout(()=>{
74+
setTimeout(() => {
7575
filterElem.children[0].click()
7676
filterElem.querySelector('input:not([type="hidden"])')?.focus()
77-
},100)
77+
}, 100)
7878
}
7979

80-
showFilter(field, focus=true) {
80+
showFilter(field, focus = true) {
8181
const fieldElem = this.getFormField(field)
8282
const filterElem = document.querySelector(`#${this.table.viewId}-${field}-wrapper`)
8383
if (!filterElem) {
@@ -90,7 +90,7 @@ export class FilterModule extends SBAdminTableModule {
9090
}
9191
fieldElem.disabled = false
9292
filterElem.classList.remove('hidden')
93-
if(focus){
93+
if (focus) {
9494
this.focusOnFilterInput(filterElem)
9595
}
9696
this.table.refreshTableDataIfNotUrlLoad()

src/django_smartbase_admin/static/sb_admin/src/js/table_modules/filter_options_module.js

Lines changed: 0 additions & 36 deletions
This file was deleted.
Lines changed: 63 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,63 @@
1+
import {SBAdminTableModule} from "./base_module"
2+
import {filterInputValueChangedUtil} from "../utils"
3+
4+
5+
export class HeaderTabsModule extends SBAdminTableModule {
6+
afterInit() {
7+
const filterOptionsWrapper = document.querySelector(".js-filters-options")
8+
const targetInput = document.querySelector(`[name=${this.table.constants.TABLE_PARAMS_SELECTED_FILTER_TYPE}]`)
9+
if (!filterOptionsWrapper || !targetInput) {
10+
return
11+
}
12+
filterOptionsWrapper.querySelectorAll('[data-bs-toggle]').forEach(el => {
13+
el.addEventListener("show.bs.tab", (event) => {
14+
const targetId = event.target.id
15+
if (targetId !== 'tab_saved_views') {
16+
targetInput.value = event.target.id
17+
}
18+
})
19+
})
20+
}
21+
22+
beforeRefreshTableDataIfNotUrlLoad() {
23+
const tabs = document.querySelectorAll('.tabulator-custom-header .tab-pane')
24+
const tabSelectInput = document.querySelector(`[name=${this.table.constants.TABLE_PARAMS_SELECTED_FILTER_TYPE}]`)
25+
tabs.forEach((tab) => {
26+
if (tabSelectInput.value !== tab.getAttribute('aria-labelledby')) {
27+
tab.querySelectorAll(`[form=${this.table.filterFormId}]`).forEach((input) => {
28+
if (input !== tabSelectInput) {
29+
input.value = ''
30+
filterInputValueChangedUtil(input)
31+
input.dispatchEvent(new CustomEvent('clearSelectedItems'))
32+
}
33+
})
34+
}
35+
})
36+
if (tabSelectInput.value !== "tab_advanced_filters") {
37+
const queryBuilder = document.querySelector(`#${this.table.advancedFilterId}`)
38+
const emptyRules = {
39+
"condition": "AND",
40+
"rules": [{empty: true}]
41+
}
42+
$(queryBuilder).queryBuilder("setRules", emptyRules)
43+
}
44+
}
45+
46+
47+
loadFromUrlAfterInit() {
48+
const targetInput = document.querySelector(`[name=${this.table.constants.TABLE_PARAMS_SELECTED_FILTER_TYPE}]`)
49+
if (!targetInput) {
50+
return
51+
}
52+
if (targetInput.value === "") {
53+
const filterOptionsWrapper = document.querySelector(".js-filters-options")
54+
targetInput.value = filterOptionsWrapper.querySelector('[data-bs-toggle="tab"]').id
55+
}
56+
const params = this.table.getParamsFromUrl()
57+
const targetTabValue = params[this.table.constants.FILTER_DATA_NAME]?.[this.table.constants.TABLE_PARAMS_SELECTED_FILTER_TYPE]
58+
if (targetTabValue) {
59+
targetInput.value = targetTabValue
60+
}
61+
document.getElementById(targetInput.value).click()
62+
}
63+
}

src/django_smartbase_admin/templates/sb_admin/components/filters_v2.html

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,6 @@
4343
operators: {{ content_context.advanced_filters_data.all_operators|safe }},
4444
templates: {
4545
group: function({ group_id, level, conditions, icons, settings, translate, builder }) {
46-
console.log(group_id, level, conditions, icons, settings, translate, builder)
4746
return `
4847
<div id="${group_id}" class="rules-group-container">
4948
<div class="rules-group-header">
@@ -108,4 +107,4 @@
108107
})
109108
</script>
110109
</div>
111-
{% endblock %}
110+
{% endblock %}

0 commit comments

Comments
 (0)