Mercurial > libervia-web
annotate libervia/web/pages/chat/select/_browser/__init__.py @ 1547:383e1fee29f6
browser (chat/select): update dynamically JID items when search box is used
author | Goffi <goffi@goffi.org> |
---|---|
date | Thu, 06 Jul 2023 12:12:07 +0200 |
parents | |
children | 66aa6e140ebb |
rev | line source |
---|---|
1547
383e1fee29f6
browser (chat/select): update dynamically JID items when search box is used
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
1 from bridge import AsyncBridge as Bridge |
383e1fee29f6
browser (chat/select): update dynamically JID items when search box is used
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
2 from browser import aio, bind, console as log, document, window |
383e1fee29f6
browser (chat/select): update dynamically JID items when search box is used
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
3 from urllib.parse import urljoin, quote |
383e1fee29f6
browser (chat/select): update dynamically JID items when search box is used
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
4 from jid_search import JidSearch |
383e1fee29f6
browser (chat/select): update dynamically JID items when search box is used
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
5 from template import Template |
383e1fee29f6
browser (chat/select): update dynamically JID items when search box is used
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
6 from cache import cache |
383e1fee29f6
browser (chat/select): update dynamically JID items when search box is used
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
7 from pprint import pp |
383e1fee29f6
browser (chat/select): update dynamically JID items when search box is used
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
8 |
383e1fee29f6
browser (chat/select): update dynamically JID items when search box is used
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
9 log.warning = log.warn |
383e1fee29f6
browser (chat/select): update dynamically JID items when search box is used
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
10 profile = window.profile or "" |
383e1fee29f6
browser (chat/select): update dynamically JID items when search box is used
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
11 bridge = Bridge() |
383e1fee29f6
browser (chat/select): update dynamically JID items when search box is used
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
12 |
383e1fee29f6
browser (chat/select): update dynamically JID items when search box is used
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
13 |
383e1fee29f6
browser (chat/select): update dynamically JID items when search box is used
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
14 class ChatSelect: |
383e1fee29f6
browser (chat/select): update dynamically JID items when search box is used
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
15 |
383e1fee29f6
browser (chat/select): update dynamically JID items when search box is used
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
16 def __init__(self): |
383e1fee29f6
browser (chat/select): update dynamically JID items when search box is used
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
17 self.search_item_tpl = Template("chat/search_item.html") |
383e1fee29f6
browser (chat/select): update dynamically JID items when search box is used
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
18 self.chat_items_elt = document["chat_items"] |
383e1fee29f6
browser (chat/select): update dynamically JID items when search box is used
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
19 |
383e1fee29f6
browser (chat/select): update dynamically JID items when search box is used
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
20 def show_items(self, items) -> None: |
383e1fee29f6
browser (chat/select): update dynamically JID items when search box is used
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
21 for item in items: |
383e1fee29f6
browser (chat/select): update dynamically JID items when search box is used
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
22 search_item_elt = self.search_item_tpl.get_elt({ |
383e1fee29f6
browser (chat/select): update dynamically JID items when search box is used
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
23 "url": urljoin(f"{window.location.href}/", quote(item["entity"])), |
383e1fee29f6
browser (chat/select): update dynamically JID items when search box is used
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
24 "item": item, |
383e1fee29f6
browser (chat/select): update dynamically JID items when search box is used
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
25 "identities": cache.identities |
383e1fee29f6
browser (chat/select): update dynamically JID items when search box is used
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
26 }) |
383e1fee29f6
browser (chat/select): update dynamically JID items when search box is used
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
27 self.chat_items_elt <= search_item_elt |
383e1fee29f6
browser (chat/select): update dynamically JID items when search box is used
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
28 |
383e1fee29f6
browser (chat/select): update dynamically JID items when search box is used
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
29 def on_empty_search(self): |
383e1fee29f6
browser (chat/select): update dynamically JID items when search box is used
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
30 items = [ |
383e1fee29f6
browser (chat/select): update dynamically JID items when search box is used
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
31 { |
383e1fee29f6
browser (chat/select): update dynamically JID items when search box is used
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
32 "entity": jid_, |
383e1fee29f6
browser (chat/select): update dynamically JID items when search box is used
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
33 "groups": data["groups"] |
383e1fee29f6
browser (chat/select): update dynamically JID items when search box is used
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
34 } |
383e1fee29f6
browser (chat/select): update dynamically JID items when search box is used
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
35 for jid_, data in cache.roster.items() |
383e1fee29f6
browser (chat/select): update dynamically JID items when search box is used
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
36 ] |
383e1fee29f6
browser (chat/select): update dynamically JID items when search box is used
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
37 self.chat_items_elt.clear() |
383e1fee29f6
browser (chat/select): update dynamically JID items when search box is used
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
38 self.show_items(items) |
383e1fee29f6
browser (chat/select): update dynamically JID items when search box is used
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
39 |
383e1fee29f6
browser (chat/select): update dynamically JID items when search box is used
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
40 def on_search_filter(self, search_items): |
383e1fee29f6
browser (chat/select): update dynamically JID items when search box is used
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
41 self.chat_items_elt.clear() |
383e1fee29f6
browser (chat/select): update dynamically JID items when search box is used
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
42 pp(search_items) |
383e1fee29f6
browser (chat/select): update dynamically JID items when search box is used
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
43 self.show_items(search_items) |
383e1fee29f6
browser (chat/select): update dynamically JID items when search box is used
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
44 |
383e1fee29f6
browser (chat/select): update dynamically JID items when search box is used
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
45 |
383e1fee29f6
browser (chat/select): update dynamically JID items when search box is used
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
46 chat_select = ChatSelect() |
383e1fee29f6
browser (chat/select): update dynamically JID items when search box is used
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
47 jid_search = JidSearch( |
383e1fee29f6
browser (chat/select): update dynamically JID items when search box is used
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
48 document["search"], |
383e1fee29f6
browser (chat/select): update dynamically JID items when search box is used
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
49 chat_select.on_search_filter, |
383e1fee29f6
browser (chat/select): update dynamically JID items when search box is used
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
50 chat_select.on_empty_search |
383e1fee29f6
browser (chat/select): update dynamically JID items when search box is used
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
51 ) |