diff --git a/book.html b/book.html index 2965f3f..84ec8b5 100644 --- a/book.html +++ b/book.html @@ -20,8 +20,11 @@ .state.reading{color:var(--muted)} .state.failed{color:#e0685f;border-color:#e0685f} .why{color:#e0685f;font-size:13px;margin-top:4px} - .drop.on{border-color:var(--accent)} .tiny{font-size:12px;color:var(--muted)} + .pick{display:flex;gap:14px;align-items:center;flex-wrap:wrap; + border:1px dashed var(--line);border-radius:12px;padding:18px} + .pick.on{border-color:var(--accent);border-style:solid} + .pick .or{color:var(--muted);font-size:13px} .writers{display:flex;flex-wrap:wrap;gap:10px;margin-top:8px} .wr{display:flex;gap:8px;align-items:center;border:1px solid var(--line); border-radius:10px;padding:9px 12px;cursor:pointer} @@ -44,20 +47,13 @@
Drop the manuscript here
-or click to choose a file
+ + A Word .docx or a .pdf, up to 6MB. A scanned PDF has no text in it and will be refused — upload the original document instead. +No manuscripts yet.
Reading ' + esc(file.name) + '…
'; + pickMsg.textContent = "reading " + file.name + "…"; var doc; try { doc = await readFileB64(file); } - catch (err) { resetDrop(); showMsg("msg", err.message); return; } - drop.innerHTML = 'Uploading ' + esc(file.name) + '…
'; + catch (err) { resetPick(); showMsg("msg", err.message); return; } + pickMsg.textContent = "uploading " + file.name + " (" + + (doc.bytes / 1048576).toFixed(1) + "MB)…"; var r = await api("upload_book", { filename: doc.name, data_b64: doc.b64 }); - resetDrop(); + resetPick(); if (!r.ok) { showMsg("msg", r.error || "That upload did not go through."); return; } PICKED = null; loadBooks(); } - function resetDrop() { - drop.innerHTML = 'Drop the manuscript here
' - + 'or click to choose a file
'; + function resetPick() { + pickMsg.textContent = "or drag the manuscript onto this panel"; } - document.getElementById("usepaste").addEventListener("click", async function () { - var btn = this; - var text = document.getElementById("paste").value; - if (text.trim().length < 2000) { - showMsg("msg", "That is " + text.trim().length + " characters. Paste the manuscript, not a summary."); - return; - } - hideMsg("msg"); - btn.disabled = true; btn.textContent = "Saving…"; - var r = await api("paste_book", { text: text, filename: "pasted.txt" }); - btn.disabled = false; btn.textContent = "Use this text"; - if (!r.ok) { showMsg("msg", r.error || "That did not save."); return; } - document.getElementById("paste").value = ""; - PICKED = null; - loadBooks(); - }); - // ---------------------------------------------------------------- writers function paintWriters() { @@ -292,7 +275,7 @@ function readFileB64(file) { // Writing is the cheap half. Drawing the storyboards is priced separately, // per writer, once you have read the scripts. el.innerHTML = n + " writer" + (n > 1 ? "s" : "") - + " · about $" + (n * 0.5).toFixed(2) + " to write" + + " · about $" + (n * 0.6).toFixed(2) + " to write" + " · storyboards are priced separately once you have read them"; }