aboutsummaryrefslogtreecommitdiff
path: root/html/item_preview.js
diff options
context:
space:
mode:
Diffstat (limited to 'html/item_preview.js')
-rw-r--r--html/item_preview.js46
1 files changed, 10 insertions, 36 deletions
diff --git a/html/item_preview.js b/html/item_preview.js
index dccf2d4..c55183c 100644
--- a/html/item_preview.js
+++ b/html/item_preview.js
@@ -44,10 +44,10 @@
#IMPORT common/indexeddb.js AS haketilodb
#IMPORT html/dialog.js
+#FROM common/browser.js IMPORT browser
#FROM html/DOM_helpers.js IMPORT clone_template
-function populate_list(ul, items)
-{
+function populate_list(ul, items) {
for (const item of items) {
const li = document.createElement("li");
li.append(item);
@@ -55,41 +55,21 @@ function populate_list(ul, items)
}
}
-/* Link click handler used in make_file_link(). */
-async function file_link_clicked(preview_object, file_ref, event)
-{
- event.preventDefault();
-
- const db = await haketilodb.get();
- const file = await haketilodb.idb_get(db.transaction("files"),
- "files", file_ref.hash_key);
- if (file === undefined) {
- dialog.error(preview_object.dialog_context,
- "File missing from Haketilo's internal database :(");
- } else {
- const encoded_file = encodeURIComponent(file.contents);
- open(`data:text/plain;charset=utf8,${encoded_file}`, '_blank');
- }
-}
+const file_preview_link = browser.runtime.getURL("html/file_preview.html");
/*
* The default function to use to create file preview link. Links it creates can
* be used to view files from IndexedDB.
*/
-function make_file_link(preview_object, file_ref)
-{
+function make_file_link(preview_object, file_ref) {
const a = document.createElement("a");
- a.href = "javascript:void(0)";
+ a.href = `${file_preview_link}#${file_ref.hash_key}`;
a.innerText = file_ref.file;
- a.addEventListener("click",
- e => file_link_clicked(preview_object, file_ref, e));
-
+ a.target = "_blank";
return a;
}
-function resource_preview(resource, preview_object, dialog_context,
- make_link_cb=make_file_link)
-{
+function resource_preview(resource, preview_object, link_cb=make_file_link) {
if (preview_object === undefined)
preview_object = clone_template("resource_preview");
@@ -104,7 +84,7 @@ function resource_preview(resource, preview_object, dialog_context,
[...preview_object.dependencies.childNodes].forEach(n => n.remove());
populate_list(preview_object.dependencies, resource.dependencies);
- const link_maker = file_ref => make_link_cb(preview_object, file_ref);
+ const link_maker = file_ref => link_cb(preview_object, file_ref);
[...preview_object.scripts.childNodes].forEach(n => n.remove());
populate_list(preview_object.scripts, resource.scripts.map(link_maker));
@@ -113,15 +93,11 @@ function resource_preview(resource, preview_object, dialog_context,
populate_list(preview_object.copyright,
resource.source_copyright.map(link_maker));
- preview_object.dialog_context = dialog_context;
-
return preview_object;
}
#EXPORT resource_preview
-function mapping_preview(mapping, preview_object, dialog_context,
- make_link_cb=make_file_link)
-{
+function mapping_preview(mapping, preview_object, link_cb=make_file_link) {
if (preview_object === undefined)
preview_object = clone_template("mapping_preview");
@@ -145,14 +121,12 @@ function mapping_preview(mapping, preview_object, dialog_context,
}
}
- const link_maker = file_ref => make_link_cb(preview_object, file_ref);
+ const link_maker = file_ref => link_cb(preview_object, file_ref);
[...preview_object.copyright.childNodes].forEach(n => n.remove());
populate_list(preview_object.copyright,
mapping.source_copyright.map(link_maker));
- preview_object.dialog_context = dialog_context;
-
return preview_object;
}
#EXPORT mapping_preview