export WIP + some unrelated changes

This commit is contained in:
azivner 2018-11-25 10:26:45 +01:00
parent e09b61d1ac
commit 551e1255ff
5 changed files with 33 additions and 17 deletions

View File

@ -0,0 +1 @@
UPDATE attributes SET name = 'archived' where name = 'hideInAutocomplete';

View File

@ -694,4 +694,8 @@ div[data-notify="container"] {
#export-form .format-choice {
padding-left: 40px;
display: none;
}
#export-form .form-check-label {
padding: 2px;
}

View File

@ -3,7 +3,7 @@
const build = require('./build');
const packageJson = require('../../package');
const APP_DB_VERSION = 119;
const APP_DB_VERSION = 120;
const SYNC_VERSION = 2;
module.exports = {

View File

@ -12,17 +12,24 @@ const TurndownService = require('turndown');
async function exportToTar(branch, format, res) {
const turndownService = new TurndownService();
// path -> number of occurences
const existingPaths = {};
const pack = tar.pack();
const exportedNoteIds = [];
const name = await exportNoteInner(branch, '');
async function exportNoteInner(branch, directory) {
function getUniqueFilename(fileName) {
}
async function exportNoteInner(branch, directory, existingNames) {
const note = await branch.getNote();
const childFileName = directory + sanitize(note.title);
const baseFileName = directory + sanitize(note.title);
if (exportedNoteIds.includes(note.noteId)) {
saveMetadataFile(childFileName, {
saveMetadataFile(baseFileName, {
version: 1,
clone: true,
noteId: note.noteId,
@ -67,26 +74,27 @@ async function exportToTar(branch, format, res) {
return;
}
saveMetadataFile(childFileName, metadata);
saveDataFile(childFileName, note);
saveMetadataFile(baseFileName, metadata);
saveDataFile(baseFileName, note);
exportedNoteIds.push(note.noteId);
const childBranches = await note.getChildBranches();
if (childBranches.length > 0) {
saveDirectory(childFileName);
saveDirectory(baseFileName);
}
for (const childBranch of childBranches) {
await exportNoteInner(await childBranch.getNote(), childBranch, childFileName + "/");
await exportNoteInner(childBranch, baseFileName + "/");
}
return childFileName;
return baseFileName;
}
function saveDataFile(childFileName, note) {
let content = note.content;
let extension;
if (note.type === 'text') {
if (format === 'html') {
@ -94,15 +102,18 @@ async function exportToTar(branch, format, res) {
}
else if (format === 'markdown') {
content = turndownService.turndown(note.content);
extension = 'md';
}
else {
throw new Error("Unknown format: " + format);
}
}
const extension = mimeTypes.extension(note.mime)
|| getExceptionalExtension(note.mime)
|| "dat";
if (!extension) {
extension = mimeTypes.extension(note.mime)
|| getExceptionalExtension(note.mime)
|| "dat";
}
if (!childFileName.toLowerCase().endsWith(extension)) {
childFileName += "." + extension;
@ -117,14 +128,14 @@ async function exportToTar(branch, format, res) {
}
}
function saveMetadataFile(childFileName, metadata) {
function saveMetadataFile(baseFileName, metadata) {
const metadataJson = JSON.stringify(metadata, null, '\t');
pack.entry({name: childFileName + ".meta", size: metadataJson.length}, metadataJson);
pack.entry({name: getUniqueFilename(baseFileName + ".meta"), size: metadataJson.length}, metadataJson);
}
function saveDirectory(childFileName) {
pack.entry({name: childFileName, type: 'directory'});
function saveDirectory(baseFileName) {
pack.entry({name: baseFileName, type: 'directory'});
}
pack.finalize();

View File

@ -53,7 +53,7 @@
<a id="collapse-tree-button" title="Collapse note tree. Shortcut ALT+C" class="icon-action jam jam-align-justify"></a>
<a id="scroll-to-current-note-button" title="Scroll to current note. Shortcut CTRL+." class="icon-action jam jam-target"></a>
<a id="scroll-to-current-note-button" title="Scroll to current note. Shortcut CTRL+." class="icon-action jam jam-download"></a>
<a id="toggle-search-button" title="Search in notes. Shortcut CTRL+S" class="icon-action jam jam-search"></a>
</div>