trilium/src/public/javascripts/dialogs/import.js

75 lines
2.3 KiB
JavaScript
Raw Normal View History

2019-02-11 02:36:03 +08:00
import utils from '../services/utils.js';
2019-02-10 21:33:13 +08:00
import treeUtils from "../services/tree_utils.js";
import importService from "../services/import.js";
2019-02-10 21:33:13 +08:00
const $dialog = $("#import-dialog");
const $form = $("#import-form");
2019-05-06 00:24:59 +08:00
const $noteTitle = $dialog.find(".import-note-title");
2019-02-10 22:33:56 +08:00
const $fileUploadInput = $("#import-file-upload-input");
const $importButton = $("#import-button");
2019-02-24 19:24:28 +08:00
const $safeImportCheckbox = $("#safe-import-checkbox");
const $shrinkImagesCheckbox = $("#shrink-images-checkbox");
const $textImportedAsTextCheckbox = $("#text-imported-as-text-checkbox");
const $codeImportedAsCodeCheckbox = $("#code-imported-as-code-checkbox");
const $explodeArchivesCheckbox = $("#explode-archives-checkbox");
2019-02-10 21:33:13 +08:00
let parentNoteId = null;
2019-02-11 02:36:03 +08:00
export async function showDialog(node) {
utils.closeActiveDialog();
$fileUploadInput.val('').change(); // to trigger Import button disabling listener below
2019-02-24 19:24:28 +08:00
2019-02-26 05:28:15 +08:00
$safeImportCheckbox.prop("checked", true);
$shrinkImagesCheckbox.prop("checked", true);
$textImportedAsTextCheckbox.prop("checked", true);
$codeImportedAsCodeCheckbox.prop("checked", true);
$explodeArchivesCheckbox.prop("checked", true);
2019-02-10 23:36:25 +08:00
2019-02-10 21:33:13 +08:00
glob.activeDialog = $dialog;
parentNoteId = node.data.noteId;
$noteTitle.text(await treeUtils.getNoteTitle(parentNoteId));
2019-02-10 21:33:13 +08:00
$dialog.modal();
}
$form.submit(() => {
// disabling so that import is not triggered again.
$importButton.attr("disabled", "disabled");
importIntoNote(parentNoteId);
2019-02-10 21:33:13 +08:00
return false;
});
async function importIntoNote(parentNoteId) {
const files = Array.from($fileUploadInput[0].files); // shallow copy since we're resetting the upload button below
2019-02-10 22:33:56 +08:00
2019-02-26 05:28:15 +08:00
const options = {
safeImport: boolToString($safeImportCheckbox),
shrinkImages: boolToString($shrinkImagesCheckbox),
textImportedAsText: boolToString($textImportedAsTextCheckbox),
codeImportedAsCode: boolToString($codeImportedAsCodeCheckbox),
explodeArchives: boolToString($explodeArchivesCheckbox)
2019-02-26 05:28:15 +08:00
};
2019-02-24 19:24:28 +08:00
2019-02-26 05:28:15 +08:00
$dialog.modal('hide');
await importService.uploadFiles(parentNoteId, files, options);
}
2019-02-10 22:33:56 +08:00
2019-02-24 19:24:28 +08:00
function boolToString($el) {
return $el.is(":checked") ? "true" : "false";
}
$fileUploadInput.change(() => {
if ($fileUploadInput.val()) {
$importButton.removeAttr("disabled");
}
else {
$importButton.attr("disabled", "disabled");
2019-02-10 23:36:25 +08:00
}
});