From 5d8808a2ad5809ca3d929a1a4f4d72eb6f50aa8f Mon Sep 17 00:00:00 2001 From: zadam Date: Wed, 6 May 2020 21:41:14 +0200 Subject: [PATCH] fix renaming existing attributes + added new label autoReadOnlyDisabled to control automatic setting to readOnly mode --- package-lock.json | 50 +++++++++++++-------------- src/public/app/widgets/note_detail.js | 8 +++-- src/routes/api/attributes.js | 3 +- 3 files changed, 33 insertions(+), 28 deletions(-) diff --git a/package-lock.json b/package-lock.json index 56d4c5c00..ef2d72d2d 100644 --- a/package-lock.json +++ b/package-lock.json @@ -6217,9 +6217,9 @@ } }, "jest-worker": { - "version": "25.4.0", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-25.4.0.tgz", - "integrity": "sha512-ghAs/1FtfYpMmYQ0AHqxV62XPvKdUDIBBApMZfly+E9JEmYh2K45G0R5dWxx986RN12pRCxsViwQVtGl+N4whw==", + "version": "25.5.0", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-25.5.0.tgz", + "integrity": "sha512-/dsSmUkIy5EBGfv/IjjqmFxrNAUpBERfGs1oHROyD7yxjG/w+t0GOJDX8O1k32ySmd7+a5IhnJU2qQFcJ4n1vw==", "dev": true, "requires": { "merge-stream": "^2.0.0", @@ -10117,9 +10117,9 @@ } }, "serialize-javascript": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-2.1.2.tgz", - "integrity": "sha512-rs9OggEUF0V4jUSecXazOYsLfu7OGK2qIn3c7IPBiffz32XniEp/TX9Xmc9LQfK2nQ2QKHvZ2oygKUGU0lG4jQ==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-3.0.0.tgz", + "integrity": "sha512-skZcHYw2vEX4bw90nAr2iTTsz6x2SrHEnfxgKYmZlvJYBEZrvbKtobJWlQ20zczKb3bsHHXXTYt48zBA7ni9cw==", "dev": true }, "serve-favicon": { @@ -10272,9 +10272,9 @@ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" }, "source-map-support": { - "version": "0.5.16", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.16.tgz", - "integrity": "sha512-efyLRJDr68D9hBBNIPWFjhpFzURh+KJykQwvMyW5UiZzYwoF6l4YMMDIJJEyFWxWCqfyxLzz6tSfUFR+kXXsVQ==", + "version": "0.5.19", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.19.tgz", + "integrity": "sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw==", "dev": true, "requires": { "buffer-from": "^1.0.0", @@ -10709,9 +10709,9 @@ "dev": true }, "terser": { - "version": "4.6.11", - "resolved": "https://registry.npmjs.org/terser/-/terser-4.6.11.tgz", - "integrity": "sha512-76Ynm7OXUG5xhOpblhytE7X58oeNSmC8xnNhjWVo8CksHit0U0kO4hfNbPrrYwowLWFgM2n9L176VNx2QaHmtA==", + "version": "4.6.13", + "resolved": "https://registry.npmjs.org/terser/-/terser-4.6.13.tgz", + "integrity": "sha512-wMvqukYgVpQlymbnNbabVZbtM6PN63AzqexpwJL8tbh/mRT9LE5o+ruVduAGL7D6Fpjl+Q+06U5I9Ul82odAhw==", "dev": true, "requires": { "commander": "^2.20.0", @@ -10728,19 +10728,19 @@ } }, "terser-webpack-plugin": { - "version": "2.3.5", - "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-2.3.5.tgz", - "integrity": "sha512-WlWksUoq+E4+JlJ+h+U+QUzXpcsMSSNXkDy9lBVkSqDn1w23Gg29L/ary9GeJVYCGiNJJX7LnVc4bwL1N3/g1w==", + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-2.3.6.tgz", + "integrity": "sha512-I8IDsQwZrqjdmOicNeE8L/MhwatAap3mUrtcAKJuilsemUNcX+Hier/eAzwStVqhlCxq0aG3ni9bK/0BESXkTg==", "dev": true, "requires": { "cacache": "^13.0.1", - "find-cache-dir": "^3.2.0", - "jest-worker": "^25.1.0", - "p-limit": "^2.2.2", - "schema-utils": "^2.6.4", - "serialize-javascript": "^2.1.2", + "find-cache-dir": "^3.3.1", + "jest-worker": "^25.4.0", + "p-limit": "^2.3.0", + "schema-utils": "^2.6.6", + "serialize-javascript": "^3.0.0", "source-map": "^0.6.1", - "terser": "^4.4.3", + "terser": "^4.6.12", "webpack-sources": "^1.4.3" }, "dependencies": { @@ -11466,9 +11466,9 @@ "integrity": "sha512-VlZwKPCkYKxQgeSbH5EyngOmRp7Ww7I9rQLERETtf5ofd9pGeswWiOtogpEO850jziPRarreGxn5QIiTqpb2wA==" }, "webpack": { - "version": "5.0.0-beta.15", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.0.0-beta.15.tgz", - "integrity": "sha512-nT+l7LteKTIzB3lmroEGL4qcCBqgHMpa3EJUvhQdfXRWjxCfWnnWdBARhp/To61omZhyNPz2Ye2J1ZEf070kWA==", + "version": "5.0.0-beta.16", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.0.0-beta.16.tgz", + "integrity": "sha512-O6YzI5H7XDPoXFrdC338P0GsSdhmYvz0//HL8LxVFHuRSbtHcV8mfx5U8ouWihFqwyvbfy27Bqoz2KY62kME9Q==", "dev": true, "requires": { "@webassemblyjs/ast": "1.9.0", @@ -11490,7 +11490,7 @@ "pkg-dir": "^4.2.0", "schema-utils": "^2.5.0", "tapable": "2.0.0-beta.9", - "terser-webpack-plugin": "^2.3.1", + "terser-webpack-plugin": "^2.3.6", "watchpack": "2.0.0-beta.13", "webpack-sources": "2.0.0-beta.8" } diff --git a/src/public/app/widgets/note_detail.js b/src/public/app/widgets/note_detail.js index 3cc970c48..6b690f13c 100644 --- a/src/public/app/widgets/note_detail.js +++ b/src/public/app/widgets/note_detail.js @@ -186,7 +186,9 @@ export default class NoteDetailWidget extends TabAwareWidget { const noteComplement = await this.tabContext.getNoteComplement(); if (note.hasLabel('readOnly') || - (noteComplement.content && noteComplement.content.length > 10000)) { + (noteComplement.content + && noteComplement.content.length > 10000) + && !note.hasLabel('autoReadOnlyDisabled')) { type = 'read-only-text'; } } @@ -195,7 +197,9 @@ export default class NoteDetailWidget extends TabAwareWidget { const noteComplement = await this.tabContext.getNoteComplement(); if (note.hasLabel('readOnly') || - (noteComplement.content && noteComplement.content.length > 30000)) { + (noteComplement.content + && noteComplement.content.length > 30000) + && !note.hasLabel('autoReadOnlyDisabled')) { type = 'read-only-code'; } } diff --git a/src/routes/api/attributes.js b/src/routes/api/attributes.js index b705e1181..25bbaaf7e 100644 --- a/src/routes/api/attributes.js +++ b/src/routes/api/attributes.js @@ -101,7 +101,7 @@ async function updateNoteAttributes(req) { || (attribute.type === 'relation' && attribute.value !== attributeEntity.value)) { if (attribute.type !== 'relation' || !!attribute.value.trim()) { - const newAttribute = attribute.createClone(attribute.type, attribute.name, attribute.value); + const newAttribute = attributeEntity.createClone(attribute.type, attribute.name, attribute.value); await newAttribute.save(); } @@ -139,6 +139,7 @@ async function updateNoteAttributes(req) { } const note = await repository.getNote(noteId); + note.invalidateAttributeCache(); return await note.getAttributes(); }