mirror of
https://github.com/zadam/trilium.git
synced 2025-03-01 14:22:32 +01:00
more changes to import reporting through WS
This commit is contained in:
parent
cde68abec9
commit
5baa251944
@ -10,11 +10,12 @@ const $noteTitle = $dialog.find(".note-title");
|
|||||||
const $fileUploadInput = $("#import-file-upload-input");
|
const $fileUploadInput = $("#import-file-upload-input");
|
||||||
const $importNoteCountWrapper = $("#import-note-count-wrapper");
|
const $importNoteCountWrapper = $("#import-note-count-wrapper");
|
||||||
const $importNoteCount = $("#import-note-count");
|
const $importNoteCount = $("#import-note-count");
|
||||||
|
const $importButton = $("#import-button");
|
||||||
|
|
||||||
async function showDialog() {
|
async function showDialog() {
|
||||||
$importNoteCountWrapper.hide();
|
$importNoteCountWrapper.hide();
|
||||||
$importNoteCount.text('0');
|
$importNoteCount.text('0');
|
||||||
$fileUploadInput.val('');
|
$fileUploadInput.val('').change(); // to trigger Import button disabling listener below
|
||||||
|
|
||||||
glob.activeDialog = $dialog;
|
glob.activeDialog = $dialog;
|
||||||
|
|
||||||
@ -27,6 +28,9 @@ async function showDialog() {
|
|||||||
$form.submit(() => {
|
$form.submit(() => {
|
||||||
const currentNode = treeService.getCurrentNode();
|
const currentNode = treeService.getCurrentNode();
|
||||||
|
|
||||||
|
// disabling so that import is not triggered again.
|
||||||
|
$importButton.attr("disabled", "disabled");
|
||||||
|
|
||||||
importIntoNote(currentNode.data.noteId);
|
importIntoNote(currentNode.data.noteId);
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
@ -45,28 +49,38 @@ function importIntoNote(importNoteId) {
|
|||||||
contentType: false, // NEEDED, DON'T REMOVE THIS
|
contentType: false, // NEEDED, DON'T REMOVE THIS
|
||||||
processData: false, // NEEDED, DON'T REMOVE THIS
|
processData: false, // NEEDED, DON'T REMOVE THIS
|
||||||
})
|
})
|
||||||
.fail((xhr, status, error) => alert('Import error: ' + xhr.responseText))
|
// we actually ignore the error since it can be caused by HTTP timeout and use WS messages instead.
|
||||||
.done(async note => {
|
.fail((xhr, status, error) => {});
|
||||||
$dialog.modal('hide');
|
|
||||||
|
|
||||||
infoService.showMessage("Import finished successfully.");
|
|
||||||
|
|
||||||
await treeService.reload();
|
|
||||||
|
|
||||||
if (note) {
|
|
||||||
const node = await treeService.activateNote(note.noteId);
|
|
||||||
|
|
||||||
node.setExpanded(true);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
|
|
||||||
messagingService.subscribeToMessages(message => {
|
messagingService.subscribeToMessages(async message => {
|
||||||
if (message.type === 'importNoteCount') {
|
if (message.type === 'import-note-count') {
|
||||||
$importNoteCountWrapper.show();
|
$importNoteCountWrapper.show();
|
||||||
|
|
||||||
$importNoteCount.text(message.count);
|
$importNoteCount.text(message.count);
|
||||||
}
|
}
|
||||||
|
else if (message.type === 'import-finished') {
|
||||||
|
$dialog.modal('hide');
|
||||||
|
|
||||||
|
infoService.showMessage("Import finished successfully.");
|
||||||
|
|
||||||
|
await treeService.reload();
|
||||||
|
|
||||||
|
if (message.noteId) {
|
||||||
|
const node = await treeService.activateNote(message.noteId);
|
||||||
|
|
||||||
|
node.setExpanded(true);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
$fileUploadInput.change(() => {
|
||||||
|
if ($fileUploadInput.val()) {
|
||||||
|
$importButton.removeAttr("disabled");
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
$importButton.attr("disabled", "disabled");
|
||||||
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
|
@ -342,7 +342,7 @@ async function importTar(fileBuffer, importRootNote) {
|
|||||||
if (Date.now() - lastSentCountTs >= 1000) {
|
if (Date.now() - lastSentCountTs >= 1000) {
|
||||||
lastSentCountTs = Date.now();
|
lastSentCountTs = Date.now();
|
||||||
|
|
||||||
messagingService.sendMessageToAllClients({ type: 'importNoteCount', count: importNoteCount });
|
messagingService.importNoteCount(importNoteCount);
|
||||||
}
|
}
|
||||||
|
|
||||||
next(); // ready for next entry
|
next(); // ready for next entry
|
||||||
@ -379,6 +379,8 @@ async function importTar(fileBuffer, importRootNote) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
messagingService.importFinished(firstNote);
|
||||||
|
|
||||||
resolve(firstNote);
|
resolve(firstNote);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
@ -49,10 +49,6 @@ async function sendMessage(client, message) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
async function refreshTree() {
|
|
||||||
await sendMessageToAllClients({ type: 'refresh-tree' });
|
|
||||||
}
|
|
||||||
|
|
||||||
async function sendMessageToAllClients(message) {
|
async function sendMessageToAllClients(message) {
|
||||||
const jsonStr = JSON.stringify(message);
|
const jsonStr = JSON.stringify(message);
|
||||||
|
|
||||||
@ -78,8 +74,22 @@ async function sendPing(client, lastSentSyncId) {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
async function refreshTree() {
|
||||||
|
await sendMessageToAllClients({ type: 'refresh-tree' });
|
||||||
|
}
|
||||||
|
|
||||||
|
async function importNoteCount(count) {
|
||||||
|
await sendMessageToAllClients({ type: 'import-note-count', count: count });
|
||||||
|
}
|
||||||
|
|
||||||
|
async function importFinished(firstNote) {
|
||||||
|
await sendMessageToAllClients({ type: 'import-finished', noteId: firstNote.noteId });
|
||||||
|
}
|
||||||
|
|
||||||
module.exports = {
|
module.exports = {
|
||||||
init,
|
init,
|
||||||
|
sendMessageToAllClients,
|
||||||
refreshTree,
|
refreshTree,
|
||||||
sendMessageToAllClients
|
importNoteCount,
|
||||||
|
importFinished
|
||||||
};
|
};
|
@ -14,7 +14,7 @@
|
|||||||
|
|
||||||
<input type="file" id="import-file-upload-input" class="form-control-file" />
|
<input type="file" id="import-file-upload-input" class="form-control-file" />
|
||||||
|
|
||||||
<p>File will be imported as child note(s) into <strong class="note-title"></strong>. Import file must be of supported type and have correct extension - one of <code>.html</code>, <code>.md</code>, <code>.tar</code>, <code>.enex</code>.</p>
|
<p>Content of the file will be imported as child note(s) into <strong class="note-title"></strong>. Import file must be of supported type and have correct extension - one of <code>.html</code>, <code>.md</code>, <code>.tar</code>, <code>.enex</code>.</p>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
@ -33,7 +33,7 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="modal-footer">
|
<div class="modal-footer">
|
||||||
<button class="btn btn-primary">Import</button>
|
<button class="btn btn-primary" id="import-button">Import</button>
|
||||||
</div>
|
</div>
|
||||||
</form>
|
</form>
|
||||||
</div>
|
</div>
|
||||||
|
Loading…
x
Reference in New Issue
Block a user