comparison libervia/pages/photos/album/_browser/__init__.py @ 1345:ce1217e3a9c0

browser (photos/album): use notifications to show error messages + use `ok_color` argument for delete confirmation
author Goffi <goffi@goffi.org>
date Tue, 25 Aug 2020 08:28:08 +0200
parents a75d82713a02
children cda5537c71d6
comparison
equal deleted inserted replaced
1344:472267dcd4d8 1345:ce1217e3a9c0
30 photo_elt.select_one('.action_delete').bind("click", on_delete) 30 photo_elt.select_one('.action_delete').bind("click", on_delete)
31 print(f"file {file_.name} uploaded correctly") 31 print(f"file {file_.name} uploaded correctly")
32 32
33 33
34 def on_error(failure, file_, photo_elt): 34 def on_error(failure, file_, photo_elt):
35 # TODO: cleaner error notification 35 dialog.notification(
36 window.alert(f"can't upload {file_.name}: failure") 36 f"can't upload {file_.name}: failure",
37 level="error"
38 )
37 39
38 40
39 def update_progress(photo_elt, new_value): 41 def update_progress(photo_elt, new_value):
40 progress_elt = photo_elt.select_one("progress") 42 progress_elt = photo_elt.select_one("progress")
41 progress_elt.value = new_value 43 progress_elt.value = new_value
53 xhr.setRequestHeader('Xmpp-File-No-Http', "true") 55 xhr.setRequestHeader('Xmpp-File-No-Http', "true")
54 xhr.send(file_) 56 xhr.send(file_)
55 57
56 58
57 def on_slot_eb(file_, failure, photo_elt): 59 def on_slot_eb(file_, failure, photo_elt):
58 breakpoint() 60 dialog.notification(
61 f"Can't get upload slot: {failure}",
62 level="error"
63 )
59 64
60 65
61 def upload_files(files): 66 def upload_files(files):
62 print(f"uploading {len(files)} files") 67 print(f"uploading {len(files)} files")
63 photo_tpl = Template('photo/item.html') 68 photo_tpl = Template('photo/item.html')
118 item_elt.bind("transitionend", lambda evt: item_elt.remove()) 123 item_elt.bind("transitionend", lambda evt: item_elt.remove())
119 print(f"deleted {item['name']}") 124 print(f"deleted {item['name']}")
120 125
121 126
122 def file_delete_eb(failure, item_elt, item): 127 def file_delete_eb(failure, item_elt, item):
123 # TODO: cleaner error notification 128 dialog.notification(
124 window.alert(f"error while deleting {item['name']}: failure") 129 f"error while deleting {item['name']}: failure",
130 level="error"
131 )
125 132
126 133
127 def delete_ok(evt, notif_elt, item_elt, item): 134 def delete_ok(evt, notif_elt, item_elt, item):
128 file_path = f"{files_path.rstrip('/')}/{item['name']}" 135 file_path = f"{files_path.rstrip('/')}/{item['name']}"
129 bridge.fileSharingDelete( 136 bridge.fileSharingDelete(
147 item_elt.classList.add("selected_for_deletion") 154 item_elt.classList.add("selected_for_deletion")
148 item = JSON.parse(item_elt.dataset.item) 155 item = JSON.parse(item_elt.dataset.item)
149 dialog.Confirm( 156 dialog.Confirm(
150 f"{item['name']!r} will be deleted, are you sure?", 157 f"{item['name']!r} will be deleted, are you sure?",
151 ok_label="delete", 158 ok_label="delete",
159 ok_color="danger",
152 ).show( 160 ).show(
153 ok_cb=lambda evt, notif_elt: delete_ok(evt, notif_elt, item_elt, item), 161 ok_cb=lambda evt, notif_elt: delete_ok(evt, notif_elt, item_elt, item),
154 cancel_cb=lambda evt, notif_elt: delete_cancel(evt, notif_elt, item_elt, item), 162 cancel_cb=lambda evt, notif_elt: delete_cancel(evt, notif_elt, item_elt, item),
155 ) 163 )
156 164