@takagaki/cortex-decisions-viewer 0.4.12 → 0.4.13
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.
- package/dist/render.js +35 -26
- package/package.json +1 -1
package/dist/render.js
CHANGED
|
@@ -660,14 +660,12 @@ const CLIENT_JS = `
|
|
|
660
660
|
var modal = el("div", { class: "modal" });
|
|
661
661
|
modal.appendChild(el("h2", { class: "modal-title", text: isT ? "会議の文字起こしを追加" : "共有資料を追加" }));
|
|
662
662
|
modal.appendChild(el("p", { class: "modal-desc", text: isT
|
|
663
|
-
? "文字起こしファイル(.txt / .docx
|
|
664
|
-
: "資料ファイル(PDF / PPT / Excel
|
|
663
|
+
? "文字起こしファイル(.txt / .docx 等)を選んで送信すると、議事録を自動生成します。"
|
|
664
|
+
: "資料ファイル(PDF / PPT / Excel 等)を選んで送信すると、Markdown 化して取り込みます。" }));
|
|
665
665
|
var fileInput = el("input", { type: "file", multiple: "multiple", class: "modal-file" });
|
|
666
|
-
var nameInput = el("input", { type: "text", class: "modal-name", placeholder: "
|
|
667
|
-
|
|
668
|
-
modal.appendChild(fieldRow("
|
|
669
|
-
modal.appendChild(fieldRow("お名前", nameInput));
|
|
670
|
-
modal.appendChild(fieldRow("テキスト(自由入力)", textArea));
|
|
666
|
+
var nameInput = el("input", { type: "text", class: "modal-name", placeholder: "投入者として記録されます" });
|
|
667
|
+
modal.appendChild(fieldRow("ファイル(必須)", fileInput));
|
|
668
|
+
modal.appendChild(fieldRow("お名前(必須)", nameInput));
|
|
671
669
|
var status = el("div", { class: "modal-status" });
|
|
672
670
|
var cancelBtn = el("button", { class: "modal-cancel", text: "閉じる" });
|
|
673
671
|
var submitBtn = el("button", { class: "ops-card-btn", text: "送信" });
|
|
@@ -679,40 +677,51 @@ const CLIENT_JS = `
|
|
|
679
677
|
cancelBtn.addEventListener("click", close);
|
|
680
678
|
overlay.addEventListener("click", function (e) { if (e.target === overlay) close(); });
|
|
681
679
|
submitBtn.addEventListener("click", function () {
|
|
682
|
-
submitIntake(kind, fileInput.files,
|
|
680
|
+
submitIntake(kind, fileInput.files, nameInput.value, status, submitBtn);
|
|
683
681
|
});
|
|
684
682
|
}
|
|
685
|
-
async function submitIntake(kind, fileList,
|
|
683
|
+
async function submitIntake(kind, fileList, submitter, status, submitBtn) {
|
|
686
684
|
var intake = SITE.intake;
|
|
687
685
|
var files = fileList ? Array.prototype.slice.call(fileList) : [];
|
|
688
|
-
|
|
686
|
+
// 必須: お名前 と ファイル
|
|
687
|
+
if (!submitter || !submitter.trim()) { status.textContent = "⚠ お名前を入力してください。"; return; }
|
|
688
|
+
if (!files.length) { status.textContent = "⚠ ファイルを選択してください。"; return; }
|
|
689
689
|
submitBtn.disabled = true;
|
|
690
690
|
var pfx = intake.url + (intake.url.indexOf("?") === -1 ? "?" : "&");
|
|
691
|
+
function fail(msg) { status.textContent = "✗ " + msg; submitBtn.disabled = false; }
|
|
691
692
|
try {
|
|
692
693
|
var uploaded = [];
|
|
693
694
|
for (var i = 0; i < files.length; i++) {
|
|
694
695
|
var f = files[i];
|
|
695
696
|
status.textContent = "アップロード中… (" + (i + 1) + "/" + files.length + ") " + f.name;
|
|
696
|
-
var pres
|
|
697
|
-
|
|
698
|
-
|
|
699
|
-
|
|
700
|
-
|
|
701
|
-
|
|
702
|
-
|
|
703
|
-
|
|
697
|
+
var pres;
|
|
698
|
+
try {
|
|
699
|
+
pres = await fetch(pfx + "op=presign&t=" + encodeURIComponent(intake.token), {
|
|
700
|
+
method: "POST", headers: { "content-type": "application/json" },
|
|
701
|
+
body: JSON.stringify({ projectKey: intake.projectKey, filename: f.name, contentType: f.type || "application/octet-stream" }),
|
|
702
|
+
}).then(function (r) { return r.json().then(function (j) { return { ok: r.ok, j: j }; }); });
|
|
703
|
+
} catch (net) { return fail("サーバーに接続できませんでした。通信環境を確認して、もう一度お試しください。"); }
|
|
704
|
+
if (!pres.ok || !pres.j.url) return fail((pres.j && pres.j.message) || "アップロードURLの取得に失敗しました。対応していないファイル形式かもしれません。");
|
|
705
|
+
var put;
|
|
706
|
+
try {
|
|
707
|
+
put = await fetch(pres.j.url, { method: "PUT", headers: { "content-type": f.type || "application/octet-stream" }, body: f });
|
|
708
|
+
} catch (net2) { return fail("ファイルのアップロードに失敗しました(通信エラー)。もう一度お試しください。"); }
|
|
709
|
+
if (!put.ok) return fail("ファイルのアップロードに失敗しました(" + put.status + ")。ファイルのサイズ・形式をご確認ください。");
|
|
710
|
+
uploaded.push({ key: pres.j.key, filename: f.name });
|
|
704
711
|
}
|
|
705
712
|
status.textContent = "取り込み中…";
|
|
706
|
-
var sub
|
|
707
|
-
|
|
708
|
-
|
|
709
|
-
|
|
710
|
-
|
|
711
|
-
|
|
713
|
+
var sub;
|
|
714
|
+
try {
|
|
715
|
+
sub = await fetch(pfx + "op=submit&t=" + encodeURIComponent(intake.token), {
|
|
716
|
+
method: "POST", headers: { "content-type": "application/json" },
|
|
717
|
+
body: JSON.stringify({ projectKey: intake.projectKey, kind: kind, files: uploaded, submitter: submitter.trim() }),
|
|
718
|
+
}).then(function (r) { return r.json().then(function (j) { return { ok: r.ok, j: j }; }); });
|
|
719
|
+
} catch (net3) { return fail("サーバーに接続できませんでした。もう一度お試しください。"); }
|
|
720
|
+
if (!sub.ok) return fail((sub.j && sub.j.message) || "取り込みに失敗しました。時間をおいて再度お試しください。");
|
|
721
|
+
status.textContent = "✓ 送信しました。数分後に" + (kind === "transcript" ? "議事録" : "資料") + "が反映されます。閉じて構いません。";
|
|
712
722
|
submitBtn.textContent = "完了";
|
|
713
723
|
} catch (e) {
|
|
714
|
-
|
|
715
|
-
submitBtn.disabled = false;
|
|
724
|
+
fail(e && e.message ? e.message : "予期しないエラーが発生しました。");
|
|
716
725
|
}
|
|
717
726
|
}
|
|
718
727
|
|
package/package.json
CHANGED