difonlib 0.4.2__tar.gz → 0.4.3__tar.gz
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.
- {difonlib-0.4.2 → difonlib-0.4.3}/PKG-INFO +1 -1
- {difonlib-0.4.2 → difonlib-0.4.3}/pyproject.toml +1 -1
- {difonlib-0.4.2 → difonlib-0.4.3}/src/difonlib/ng_lib.py +40 -4
- {difonlib-0.4.2 → difonlib-0.4.3}/src/difonlib/ng_lib_test3.py +30 -3
- {difonlib-0.4.2 → difonlib-0.4.3}/src/difonlib.egg-info/PKG-INFO +1 -1
- {difonlib-0.4.2 → difonlib-0.4.3}/README.md +0 -0
- {difonlib-0.4.2 → difonlib-0.4.3}/setup.cfg +0 -0
- {difonlib-0.4.2 → difonlib-0.4.3}/src/difonlib/__init__.py +0 -0
- {difonlib-0.4.2 → difonlib-0.4.3}/src/difonlib/bt_scanner.py +0 -0
- {difonlib-0.4.2 → difonlib-0.4.3}/src/difonlib/bt_utils.py +0 -0
- {difonlib-0.4.2 → difonlib-0.4.3}/src/difonlib/conn_kbd_devs.py +0 -0
- {difonlib-0.4.2 → difonlib-0.4.3}/src/difonlib/docker-android/get_tuya_preferences.py +0 -0
- {difonlib-0.4.2 → difonlib-0.4.3}/src/difonlib/input_devs.py +0 -0
- {difonlib-0.4.2 → difonlib-0.4.3}/src/difonlib/py.typed +0 -0
- {difonlib-0.4.2 → difonlib-0.4.3}/src/difonlib/remctrl.py +0 -0
- {difonlib-0.4.2 → difonlib-0.4.3}/src/difonlib/tuya_devs.py +0 -0
- {difonlib-0.4.2 → difonlib-0.4.3}/src/difonlib/utils.py +0 -0
- {difonlib-0.4.2 → difonlib-0.4.3}/src/difonlib.egg-info/SOURCES.txt +0 -0
- {difonlib-0.4.2 → difonlib-0.4.3}/src/difonlib.egg-info/dependency_links.txt +0 -0
- {difonlib-0.4.2 → difonlib-0.4.3}/src/difonlib.egg-info/requires.txt +0 -0
- {difonlib-0.4.2 → difonlib-0.4.3}/src/difonlib.egg-info/top_level.txt +0 -0
- {difonlib-0.4.2 → difonlib-0.4.3}/tests/test_bt_utils.py +0 -0
- {difonlib-0.4.2 → difonlib-0.4.3}/tests/test_utils.py +0 -0
|
@@ -80,7 +80,7 @@ class DialogBox:
|
|
|
80
80
|
|
|
81
81
|
|
|
82
82
|
class CardTable:
|
|
83
|
-
_current_yes_handler: Callable[[], None | Awaitable[None]] | None = None
|
|
83
|
+
# _current_yes_handler: Callable[[], None | Awaitable[None]] | None = None
|
|
84
84
|
|
|
85
85
|
def __init__(
|
|
86
86
|
self,
|
|
@@ -96,6 +96,8 @@ class CardTable:
|
|
|
96
96
|
self.buttons_on_row_select_changed: list = []
|
|
97
97
|
self.marked_text_color = marked_text_color
|
|
98
98
|
self.marked_field = marked_field
|
|
99
|
+
self.filter_value: str | bool = ""
|
|
100
|
+
self._current_yes_handler: Callable[[], None | Awaitable[None]] | None = None
|
|
99
101
|
|
|
100
102
|
with ui.card().classes("p-4 shadow-lg") as self.card:
|
|
101
103
|
with ui.row().classes("items-center justify-between w-full mb-2"):
|
|
@@ -153,10 +155,43 @@ class CardTable:
|
|
|
153
155
|
"""Add field 'name', needed for Quasar GUI"""
|
|
154
156
|
return [{**col, "name": col.get("name", col["field"])} for col in columns]
|
|
155
157
|
|
|
158
|
+
def set_row_display_filter(self, field_name: str, field_value: str | bool) -> None:
|
|
159
|
+
"""
|
|
160
|
+
card_table.set_row_display_filter("id","123456")
|
|
161
|
+
Show rows with field id='123456':
|
|
162
|
+
card_table.row_display_filter(state_on=True)
|
|
163
|
+
Show all rows:
|
|
164
|
+
card_table.row_display_filter()
|
|
165
|
+
"""
|
|
166
|
+
if isinstance(field_value, bool):
|
|
167
|
+
self.filter_value = field_value
|
|
168
|
+
else:
|
|
169
|
+
self.filter_value = f"\\'{field_value}\\'"
|
|
170
|
+
|
|
171
|
+
self.table.props(rf"""
|
|
172
|
+
:filter-method="(rows, terms) => !terms ? rows : rows.filter(r => r.{field_name} === terms)"
|
|
173
|
+
""")
|
|
174
|
+
|
|
175
|
+
def row_display_filter(self, state_on: bool = False) -> None:
|
|
176
|
+
"""
|
|
177
|
+
card_table.set_row_display_filter(field_name="id", field_value="123456")
|
|
178
|
+
card_table.row_display_filter(state_on=True)
|
|
179
|
+
Show rows with field id='123456'
|
|
180
|
+
card_table.set_row_display_filter("_marked", True)
|
|
181
|
+
card_table.row_display_filter(True)
|
|
182
|
+
Show rows with field _marked=True
|
|
183
|
+
"""
|
|
184
|
+
dbg(f"self.filter_value: {self.filter_value}") # //Dima
|
|
185
|
+
if state_on:
|
|
186
|
+
self.table.props(f':filter="{self.filter_value}"')
|
|
187
|
+
else:
|
|
188
|
+
self.table.props(':filter=""')
|
|
189
|
+
self.table.update()
|
|
190
|
+
|
|
156
191
|
def mark_row(self, mark: bool = True, **kwrds: Any) -> list[dict[str, Any]]:
|
|
157
192
|
"""
|
|
158
|
-
card_table.mark_row(id="123456", name="
|
|
159
|
-
card_table.mark_row(ip="192.168.0.18", mark=False)
|
|
193
|
+
card_table.mark_row(id="123456", name="IRDevice.Lounge1")
|
|
194
|
+
card_table.mark_row(ip="192.168.0.18", mark=False) #Unmark
|
|
160
195
|
"""
|
|
161
196
|
found = []
|
|
162
197
|
for row in self.table.rows:
|
|
@@ -224,7 +259,8 @@ class CardTable:
|
|
|
224
259
|
else:
|
|
225
260
|
on_change(e.sender.value)
|
|
226
261
|
|
|
227
|
-
chbox.on("click", handle_change)
|
|
262
|
+
# chbox.on("click", handle_change)
|
|
263
|
+
chbox.on("update:model-value", handle_change)
|
|
228
264
|
setattr(self, f"chbox{chbox_txt.replace(' ', '_')}", chbox)
|
|
229
265
|
return chbox
|
|
230
266
|
|
|
@@ -33,9 +33,36 @@ def main() -> None:
|
|
|
33
33
|
found = card_table.mark_row(id="129956")
|
|
34
34
|
print(f" ==> found: {found}") # //Dima
|
|
35
35
|
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
36
|
+
card_table.set_row_display_filter("_marked", True)
|
|
37
|
+
# card_table.set_row_display_filter(field_name="id", field_value="123456")
|
|
38
|
+
|
|
39
|
+
# self.table.props(':filter="\'online\'"')
|
|
40
|
+
# self.table.update()
|
|
41
|
+
|
|
42
|
+
# def only_marked(mark: bool = False, def_value="\\'\\'") -> None:
|
|
43
|
+
# print(f"table rows: {card_table.table.rows}")
|
|
44
|
+
# field_value = def_value
|
|
45
|
+
# vv = "123456"
|
|
46
|
+
# vv = mark
|
|
47
|
+
# # vv = "true"
|
|
48
|
+
# if mark:
|
|
49
|
+
# dbg(f" === MARK ===") # //Dima
|
|
50
|
+
# if isinstance(vv, str):
|
|
51
|
+
# field_value = f"\\'{vv}\\'"
|
|
52
|
+
# else:
|
|
53
|
+
# field_value = mark
|
|
54
|
+
# else:
|
|
55
|
+
# dbg(f" === NOT MARK ===") # //Dima
|
|
56
|
+
# dbg(f" * field_value: {field_value}") # //Dima
|
|
57
|
+
# card_table.table.props(f':filter="{field_value}"')
|
|
58
|
+
# card_table.table.update()
|
|
59
|
+
|
|
60
|
+
# card_table.add_checkbox(chbox_txt="Used Only", on_change=lambda v: ui.notify(v))
|
|
61
|
+
# card_table.add_checkbox(chbox_txt="Used Only", on_change=lambda v: only_marked(v))
|
|
62
|
+
card_table.add_checkbox(
|
|
63
|
+
chbox_txt="Used Only",
|
|
64
|
+
on_change=lambda v: card_table.row_display_filter(v),
|
|
65
|
+
)
|
|
39
66
|
|
|
40
67
|
dialog_box = DialogBox()
|
|
41
68
|
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|