From a4eafb934ff3cdb46dbc138b1b02850872948699 Mon Sep 17 00:00:00 2001 From: azivner Date: Wed, 11 Apr 2018 00:10:11 -0400 Subject: [PATCH] non null note title and content in the DB schema, allow saving non-valid JSON notes, children overview style changes --- .../a2c75661-f9e2-478f-a69f-6a9409e69997.xml | 211 +++++++++--------- .../0088__non_null_note_title_content.sql | 34 +++ db/schema.sql | 46 ++-- src/entities/note.js | 9 +- src/public/javascripts/entities/note_full.js | 7 +- src/public/stylesheets/style.css | 15 +- src/services/app_info.js | 2 +- src/views/index.ejs | 3 +- 8 files changed, 189 insertions(+), 138 deletions(-) create mode 100644 db/migrations/0088__non_null_note_title_content.sql diff --git a/.idea/dataSources/a2c75661-f9e2-478f-a69f-6a9409e69997.xml b/.idea/dataSources/a2c75661-f9e2-478f-a69f-6a9409e69997.xml index 953e5646b..6c23a85af 100644 --- a/.idea/dataSources/a2c75661-f9e2-478f-a69f-6a9409e69997.xml +++ b/.idea/dataSources/a2c75661-f9e2-478f-a69f-6a9409e69997.xml @@ -1,7 +1,9 @@ - - + + + 3.16.1 + 1 1 @@ -107,8 +109,7 @@ noteId parentNoteId - - + noteId @@ -142,445 +143,449 @@ parentNoteId id 1 - - noteId - notes - noteId - - + 1 TEXT|0s 1 - + 2 TEXT|0s 1 - + 3 TEXT|0s 1 - + 4 TEXT|0s 1 - + 5 BLOB|0s - + 6 INT|0s 1 0 - + 7 TEXT|0s 1 - + 8 TEXT|0s 1 - + 1 imageId 1 - + imageId 1 sqlite_autoindex_images_1 - + 1 TEXT|0s 1 - + 2 TEXT|0s 1 - + 3 TEXT|0s 1 - + 4 TEXT|0s 1 '' - + 5 INT|0s 1 0 - + 6 TEXT|0s 1 - + 7 TEXT|0s 1 - + 8 INT|0s 1 - + 1 labelId 1 - + noteId - + name value - - + - + labelId 1 sqlite_autoindex_labels_1 - + 1 TEXT|0s 1 - + 2 TEXT|0s 1 - + 3 TEXT|0s 1 - + 4 INT|0s 1 0 - + 5 TEXT|0s 1 - + 6 TEXT|0s 1 - + 1 noteImageId 1 - + noteId imageId - - + - + noteId - + imageId - + noteImageId 1 sqlite_autoindex_note_images_1 - + 1 TEXT|0s 1 - + 2 TEXT|0s 1 - + 3 TEXT|0s - + 4 TEXT|0s - + 5 INT|0s 1 0 - + 6 TEXT|0s 1 - + 7 TEXT|0s 1 - + + 8 + TEXT|0s + 1 + '' + + + 9 + TEXT|0s + 1 + '' + + 1 noteRevisionId 1 - + noteId - + dateModifiedFrom - + dateModifiedTo - + noteRevisionId 1 sqlite_autoindex_note_revisions_1 - + 1 TEXT|0s 1 - + 2 TEXT|0s - + 3 TEXT|0s - + 4 INT|0s 1 0 - + 5 INT|0s 1 0 - + 6 TEXT|0s 1 - + 7 TEXT|0s 1 - + 8 TEXT|0s 1 'text' - + 9 TEXT|0s 1 'text/html' - + 1 noteId 1 - + isDeleted - + noteId 1 sqlite_autoindex_notes_1 - + 1 TEXT|0s 1 - + 2 TEXT|0s - + 3 INT|0s - + 4 INTEGER|0s 1 0 - + 1 name 1 - + name 1 sqlite_autoindex_options_1 - + 1 TEXT|0s 1 - + 2 TEXT|0s 1 - + 3 TEXT|0s 1 - + 4 INT|0s - + 1 branchId 1 - + branchId 1 sqlite_autoindex_recent_notes_1 - + 1 TEXT|0s 1 - + 2 TEXT|0s 1 - + 1 sourceId 1 - + sourceId 1 sqlite_autoindex_source_ids_1 - + 1 text|0s - + 2 text|0s - + 3 text|0s - + 4 integer|0s - + 5 text|0s - + 1 - + 2 - + 1 INTEGER|0s 1 1 - + 2 TEXT|0s 1 - + 3 TEXT|0s 1 - + 4 TEXT|0s 1 - + 5 TEXT|0s 1 - + entityName entityId - - + 1 - + syncDate - + id 1 diff --git a/db/migrations/0088__non_null_note_title_content.sql b/db/migrations/0088__non_null_note_title_content.sql new file mode 100644 index 000000000..313c2551b --- /dev/null +++ b/db/migrations/0088__non_null_note_title_content.sql @@ -0,0 +1,34 @@ +CREATE TABLE event_logc027 +( + id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, + noteId TEXT, + comment TEXT, + dateAdded TEXT NOT NULL +); +INSERT INTO event_logc027(id, noteId, comment, dateAdded) SELECT id, noteId, comment, dateAdded FROM event_log; +DROP TABLE event_log; +ALTER TABLE event_logc027 RENAME TO event_log; + +CREATE TABLE IF NOT EXISTS "notes_mig" ( + `noteId` TEXT NOT NULL, + `title` TEXT NOT NULL DEFAULT "unnamed", + `content` TEXT NOT NULL DEFAULT "", + `isProtected` INT NOT NULL DEFAULT 0, + `isDeleted` INT NOT NULL DEFAULT 0, + `dateCreated` TEXT NOT NULL, + `dateModified` TEXT NOT NULL, + type TEXT NOT NULL DEFAULT 'text', + mime TEXT NOT NULL DEFAULT 'text/html', + PRIMARY KEY(`noteId`) +); + +INSERT INTO notes_mig (noteId, title, content, isProtected, isDeleted, dateCreated, dateModified, type, mime) + SELECT noteId, title, content, isProtected, isDeleted, dateCreated, dateModified, type, mime FROM notes; + +DROP TABLE notes; + +ALTER TABLE notes_mig RENAME TO notes; + +CREATE INDEX `IDX_notes_isDeleted` ON `notes` ( + `isDeleted` +); \ No newline at end of file diff --git a/db/schema.sql b/db/schema.sql index d2cdd01ca..969927a84 100644 --- a/db/schema.sql +++ b/db/schema.sql @@ -21,28 +21,6 @@ CREATE TABLE IF NOT EXISTS "source_ids" ( `dateCreated` TEXT NOT NULL, PRIMARY KEY(`sourceId`) ); -CREATE TABLE IF NOT EXISTS "notes" ( - `noteId` TEXT NOT NULL, - `title` TEXT, - `content` TEXT, - `isProtected` INT NOT NULL DEFAULT 0, - `isDeleted` INT NOT NULL DEFAULT 0, - `dateCreated` TEXT NOT NULL, - `dateModified` TEXT NOT NULL, - type TEXT NOT NULL DEFAULT 'text', - mime TEXT NOT NULL DEFAULT 'text/html', - PRIMARY KEY(`noteId`) -); -CREATE INDEX `IDX_notes_isDeleted` ON `notes` ( - `isDeleted` -); -CREATE TABLE IF NOT EXISTS "event_log" ( - `id` INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT, - `noteId` TEXT, - `comment` TEXT, - `dateAdded` TEXT NOT NULL, - FOREIGN KEY(noteId) REFERENCES notes(noteId) -); CREATE TABLE IF NOT EXISTS "note_revisions" ( `noteRevisionId` TEXT NOT NULL PRIMARY KEY, `noteId` TEXT NOT NULL, @@ -51,7 +29,7 @@ CREATE TABLE IF NOT EXISTS "note_revisions" ( `isProtected` INT NOT NULL DEFAULT 0, `dateModifiedFrom` TEXT NOT NULL, `dateModifiedTo` TEXT NOT NULL -); +, type TEXT DEFAULT '' NOT NULL, mime TEXT DEFAULT '' NOT NULL); CREATE INDEX `IDX_note_revisions_noteId` ON `note_revisions` ( `noteId` ); @@ -130,3 +108,25 @@ CREATE INDEX IDX_labels_name_value on labels (name, value); CREATE INDEX IDX_labels_noteId on labels (noteId); +CREATE TABLE IF NOT EXISTS "event_log" +( + id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, + noteId TEXT, + comment TEXT, + dateAdded TEXT NOT NULL +); +CREATE TABLE IF NOT EXISTS "notes" ( + `noteId` TEXT NOT NULL, + `title` TEXT NOT NULL DEFAULT "unnamed", + `content` TEXT NOT NULL DEFAULT "", + `isProtected` INT NOT NULL DEFAULT 0, + `isDeleted` INT NOT NULL DEFAULT 0, + `dateCreated` TEXT NOT NULL, + `dateModified` TEXT NOT NULL, + type TEXT NOT NULL DEFAULT 'text', + mime TEXT NOT NULL DEFAULT 'text/html', + PRIMARY KEY(`noteId`) +); +CREATE INDEX `IDX_notes_isDeleted` ON `notes` ( + `isDeleted` +); diff --git a/src/entities/note.js b/src/entities/note.js index 9f599c5f1..c14cb1824 100644 --- a/src/entities/note.js +++ b/src/entities/note.js @@ -17,17 +17,16 @@ class Note extends Entity { protected_session.decryptNote(this); } - if (this.isJson()) { - this.jsonContent = JSON.parse(this.content); - } + this.setContent(this.content); } setContent(content) { this.content = content; - if (this.isJson()) { + try { this.jsonContent = JSON.parse(this.content); } + catch(e) {} } isJson() { @@ -142,7 +141,7 @@ class Note extends Entity { beforeSaving() { super.beforeSaving(); - if (this.isJson()) { + if (this.isJson() && this.jsonContent) { this.content = JSON.stringify(this.jsonContent, null, '\t'); } diff --git a/src/public/javascripts/entities/note_full.js b/src/public/javascripts/entities/note_full.js index 0f500b36e..4e6daf931 100644 --- a/src/public/javascripts/entities/note_full.js +++ b/src/public/javascripts/entities/note_full.js @@ -6,8 +6,11 @@ class NoteFull extends NoteShort { this.content = row.content; - if (this.isJson()) { - this.jsonContent = JSON.parse(this.content); + if (this.content !== "" && this.isJson()) { + try { + this.jsonContent = JSON.parse(this.content); + } + catch(e) {} } } } diff --git a/src/public/stylesheets/style.css b/src/public/stylesheets/style.css index 8b3bc0a0b..a99b283c2 100644 --- a/src/public/stylesheets/style.css +++ b/src/public/stylesheets/style.css @@ -249,7 +249,7 @@ div.ui-tooltip { } #note-detail-code { - height: 100%; + min-height: 200px; } .CodeMirror { @@ -291,6 +291,14 @@ div.ui-tooltip { } #children-overview { + flex-grow: 1000; + flex-shrink: 1000; + flex-basis: 0px; + display: flex; + flex-wrap: wrap; + align-content: flex-start; + height: 100px; + overflow: auto; } .child-overview { @@ -299,12 +307,15 @@ div.ui-tooltip { padding: 10px; background: #f4f4f4; width: 150px; - height: 95px; + height: 90px; + line-height: 2em; margin-right: 20px; border-radius: 15px; overflow: hidden; text-align: center; margin-top: 15px; + text-overflow: ellipsis; + word-wrap: break-word; } .child-overview a { diff --git a/src/services/app_info.js b/src/services/app_info.js index 0afd74203..3c2a5cd6b 100644 --- a/src/services/app_info.js +++ b/src/services/app_info.js @@ -3,7 +3,7 @@ const build = require('./build'); const packageJson = require('../../package'); -const APP_DB_VERSION = 87; +const APP_DB_VERSION = 88; module.exports = { appVersion: packageJson.version, diff --git a/src/views/index.ejs b/src/views/index.ejs index b98616b69..69bdad9c5 100644 --- a/src/views/index.ejs +++ b/src/views/index.ejs @@ -205,8 +205,7 @@ -
-
+