sync status widget WIP

This commit is contained in:
zadam 2021-03-20 00:00:49 +01:00
parent 7e2186721f
commit b79d81a94d
5 changed files with 123 additions and 55 deletions

106
package-lock.json generated
View file

@ -1,6 +1,6 @@
{ {
"name": "trilium", "name": "trilium",
"version": "0.46.4-beta", "version": "0.46.5",
"lockfileVersion": 1, "lockfileVersion": 1,
"requires": true, "requires": true,
"dependencies": { "dependencies": {
@ -1894,9 +1894,9 @@
"dev": true "dev": true
}, },
"caniuse-lite": { "caniuse-lite": {
"version": "1.0.30001199", "version": "1.0.30001203",
"resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001199.tgz", "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001203.tgz",
"integrity": "sha512-ifbK2eChUCFUwGhlEzIoVwzFt1+iriSjyKKFYNfv6hN34483wyWpLLavYQXhnR036LhkdUYaSDpHg1El++VgHQ==", "integrity": "sha512-/I9tvnzU/PHMH7wBPrfDMSuecDeUKerjCPX7D0xBbaJZPxoT9m+yYxt0zCTkcijCkjTdim3H56Zm0i5Adxch4w==",
"dev": true "dev": true
}, },
"caseless": { "caseless": {
@ -2165,7 +2165,8 @@
"colorette": { "colorette": {
"version": "1.2.1", "version": "1.2.1",
"resolved": "https://registry.npmjs.org/colorette/-/colorette-1.2.1.tgz", "resolved": "https://registry.npmjs.org/colorette/-/colorette-1.2.1.tgz",
"integrity": "sha512-puCDz0CzydiSYOrnXpz/PKd69zRrribezjtE9yd4zvytoRc8+RY/KJPvtPFKZS3E3wP6neGyMe0vOTlHO5L3Pw==" "integrity": "sha512-puCDz0CzydiSYOrnXpz/PKd69zRrribezjtE9yd4zvytoRc8+RY/KJPvtPFKZS3E3wP6neGyMe0vOTlHO5L3Pw==",
"dev": true
}, },
"colors": { "colors": {
"version": "1.4.0", "version": "1.4.0",
@ -3593,9 +3594,9 @@
} }
}, },
"electron-to-chromium": { "electron-to-chromium": {
"version": "1.3.687", "version": "1.3.693",
"resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.687.tgz", "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.693.tgz",
"integrity": "sha512-IpzksdQNl3wdgkzf7dnA7/v10w0Utf1dF2L+B4+gKrloBrxCut+au+kky3PYvle3RMdSxZP+UiCZtLbcYRxSNQ==", "integrity": "sha512-vUdsE8yyeu30RecppQtI+XTz2++LWLVEIYmzeCaCRLSdtKZ2eXqdJcrs85KwLiPOPVc6PELgWyXBsfqIvzGZag==",
"dev": true "dev": true
}, },
"electron-window-state": { "electron-window-state": {
@ -4048,6 +4049,11 @@
"resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz",
"integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=" "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc="
}, },
"fast-xml-parser": {
"version": "3.19.0",
"resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-3.19.0.tgz",
"integrity": "sha512-4pXwmBplsCPv8FOY1WRakF970TjNGnGnfbOnLqjlYvMiF1SR3yOHyxMR/YCXpPTOspNF5gwudqktIP4VsWkvBg=="
},
"fastest-levenshtein": { "fastest-levenshtein": {
"version": "1.0.12", "version": "1.0.12",
"resolved": "https://registry.npmjs.org/fastest-levenshtein/-/fastest-levenshtein-1.0.12.tgz", "resolved": "https://registry.npmjs.org/fastest-levenshtein/-/fastest-levenshtein-1.0.12.tgz",
@ -4572,11 +4578,6 @@
"concat-stream": "^1.4.7" "concat-stream": "^1.4.7"
} }
}, },
"html-comment-regex": {
"version": "1.1.2",
"resolved": "https://registry.npmjs.org/html-comment-regex/-/html-comment-regex-1.1.2.tgz",
"integrity": "sha512-P+M65QY2JQ5Y0G9KKdlDpo0zK+/OHptU5AaBwUfAIDJZk1MYf32Frm84EcOytfJE0t5JvkAnKlmjsXDnWzCJmQ=="
},
"html-encoding-sniffer": { "html-encoding-sniffer": {
"version": "2.0.1", "version": "2.0.1",
"resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-2.0.1.tgz", "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-2.0.1.tgz",
@ -4903,11 +4904,11 @@
"dev": true "dev": true
}, },
"is-svg": { "is-svg": {
"version": "4.2.2", "version": "4.3.1",
"resolved": "https://registry.npmjs.org/is-svg/-/is-svg-4.2.2.tgz", "resolved": "https://registry.npmjs.org/is-svg/-/is-svg-4.3.1.tgz",
"integrity": "sha512-JlA7Mc7mfWjdxxTkJ094oUK9amGD7gQaj5xA/NCY0vlVvZ1stmj4VX+bRuwOMN93IHRZ2ctpPH/0FO6DqvQ5Rw==", "integrity": "sha512-h2CGs+yPUyvkgTJQS9cJzo9lYK06WgRiXUqBBHtglSzVKAuH4/oWsqk7LGfbSa1hGk9QcZ0SyQtVggvBA8LZXA==",
"requires": { "requires": {
"html-comment-regex": "^1.1.2" "fast-xml-parser": "^3.19.0"
} }
}, },
"is-typedarray": { "is-typedarray": {
@ -4980,19 +4981,19 @@
} }
}, },
"jasmine": { "jasmine": {
"version": "3.6.4", "version": "3.7.0",
"resolved": "https://registry.npmjs.org/jasmine/-/jasmine-3.6.4.tgz", "resolved": "https://registry.npmjs.org/jasmine/-/jasmine-3.7.0.tgz",
"integrity": "sha512-hIeOou6y0BgCOKYgXYveQvlY+PTHgDPajFf+vLCYbMTQ+VjAP9+EQv0nuC9+gyCAAWISRFauB1XUb9kFuOKtcQ==", "integrity": "sha512-wlzGQ+cIFzMEsI+wDqmOwvnjTvolLFwlcpYLCqSPPH0prOQaW3P+IzMhHYn934l1imNvw07oCyX+vGUv3wmtSQ==",
"dev": true, "dev": true,
"requires": { "requires": {
"glob": "^7.1.6", "glob": "^7.1.6",
"jasmine-core": "~3.6.0" "jasmine-core": "~3.7.0"
} }
}, },
"jasmine-core": { "jasmine-core": {
"version": "3.6.0", "version": "3.7.1",
"resolved": "https://registry.npmjs.org/jasmine-core/-/jasmine-core-3.6.0.tgz", "resolved": "https://registry.npmjs.org/jasmine-core/-/jasmine-core-3.7.1.tgz",
"integrity": "sha512-8uQYa7zJN8hq9z+g8z1bqCfdC8eoDAeVnM5sfqs7KHv9/ifoJ500m018fpFc7RDaO6SWCLCXwo/wPSNcdYTgcw==", "integrity": "sha512-DH3oYDS/AUvvr22+xUBW62m1Xoy7tUlY1tsxKEJvl5JeJ7q8zd1K5bUwiOxdH+erj6l2vAMM3hV25Xs9/WrmuQ==",
"dev": true "dev": true
}, },
"jest-worker": { "jest-worker": {
@ -5694,9 +5695,9 @@
} }
}, },
"nanoid": { "nanoid": {
"version": "3.1.20", "version": "3.1.22",
"resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.1.20.tgz", "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.1.22.tgz",
"integrity": "sha512-a1cQNyczgKbLX9jwbS/+d7W8fX/RfgYR7lVWwWOGIPNgK2m0MWvrGF6/m4kk6U3QcFMnZf3RIhL0v2Jgh/0Uxw==" "integrity": "sha512-/2ZUaJX2ANuLtTvqTlgqBQNJoQO398KyJgZloL0PZkC0dpysjncRUPsFe3DUPzz/y3h+u7C46np8RMuvF3jsSQ=="
}, },
"napi-build-utils": { "napi-build-utils": {
"version": "1.0.2", "version": "1.0.2",
@ -6041,9 +6042,9 @@
} }
}, },
"open": { "open": {
"version": "8.0.2", "version": "8.0.3",
"resolved": "https://registry.npmjs.org/open/-/open-8.0.2.tgz", "resolved": "https://registry.npmjs.org/open/-/open-8.0.3.tgz",
"integrity": "sha512-NV5QmWJrTaNBLHABJyrb+nd5dXI5zfea/suWawBhkHzAbVhLLiJdrqMgxMypGK9Eznp2Ltoh7SAVkQ3XAucX7Q==", "integrity": "sha512-7nsHNw3rOIPTwhF5iYkgE+LVM/oUHWC3cgrWNxPqa+W+Wl5Ekvo32qayB5PYX8zNjXzUkrTaJsWpaGmuw8Aspg==",
"requires": { "requires": {
"define-lazy-prop": "^2.0.0", "define-lazy-prop": "^2.0.0",
"is-docker": "^2.1.1", "is-docker": "^2.1.1",
@ -6377,13 +6378,20 @@
} }
}, },
"postcss": { "postcss": {
"version": "8.2.4", "version": "8.2.8",
"resolved": "https://registry.npmjs.org/postcss/-/postcss-8.2.4.tgz", "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.2.8.tgz",
"integrity": "sha512-kRFftRoExRVXZlwUuay9iC824qmXPcQQVzAjbCCgjpXnkdMCJYBu2gTwAaFBzv8ewND6O8xFb3aELmEkh9zTzg==", "integrity": "sha512-1F0Xb2T21xET7oQV9eKuctbM9S7BC0fetoHCc4H13z0PT6haiRLP4T0ZY4XWh7iLP0usgqykT6p9B2RtOf4FPw==",
"requires": { "requires": {
"colorette": "^1.2.1", "colorette": "^1.2.2",
"nanoid": "^3.1.20", "nanoid": "^3.1.20",
"source-map": "^0.6.1" "source-map": "^0.6.1"
},
"dependencies": {
"colorette": {
"version": "1.2.2",
"resolved": "https://registry.npmjs.org/colorette/-/colorette-1.2.2.tgz",
"integrity": "sha512-MKGMzyfeuutC/ZJ1cba9NqcNpfeqMUcYmyF1ZFY6/Cn7CNSAKx6a+s48sqLqyAiZuaP2TcqMhoo+dlwFnVxT9w=="
}
} }
}, },
"prebuild-install": { "prebuild-install": {
@ -6912,9 +6920,9 @@
} }
}, },
"sanitize-html": { "sanitize-html": {
"version": "2.3.2", "version": "2.3.3",
"resolved": "https://registry.npmjs.org/sanitize-html/-/sanitize-html-2.3.2.tgz", "resolved": "https://registry.npmjs.org/sanitize-html/-/sanitize-html-2.3.3.tgz",
"integrity": "sha512-p7neuskvC8pSurUjdVmbWPXmc9A4+QpOXIL+4gwFC+av5h+lYCXFT8uEneqsFQg/wEA1IH+cKQA60AaQI6p3cg==", "integrity": "sha512-DCFXPt7Di0c6JUnlT90eIgrjs6TsJl/8HYU3KLdmrVclFN4O0heTcVbJiMa23OKVr6aR051XYtsgd8EWwEBwUA==",
"requires": { "requires": {
"deepmerge": "^4.2.2", "deepmerge": "^4.2.2",
"escape-string-regexp": "^4.0.0", "escape-string-regexp": "^4.0.0",
@ -6949,9 +6957,9 @@
} }
}, },
"domutils": { "domutils": {
"version": "2.4.4", "version": "2.5.0",
"resolved": "https://registry.npmjs.org/domutils/-/domutils-2.4.4.tgz", "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.5.0.tgz",
"integrity": "sha512-jBC0vOsECI4OMdD0GC9mGn7NXPLb+Qt6KW1YDQzeQYRUFKmNG8lh7mO5HiELfr+lLQE7loDVI4QcAxV80HS+RA==", "integrity": "sha512-Ho16rzNMOFk2fPwChGh3D2D9OEHAfG19HgmRR2l+WLSsIstNsAYBzePH412bL0y5T44ejABIVfTHQ8nqi/tBCg==",
"requires": { "requires": {
"dom-serializer": "^1.0.1", "dom-serializer": "^1.0.1",
"domelementtype": "^2.0.1", "domelementtype": "^2.0.1",
@ -6969,9 +6977,9 @@
"integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==" "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA=="
}, },
"htmlparser2": { "htmlparser2": {
"version": "6.0.0", "version": "6.0.1",
"resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-6.0.0.tgz", "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-6.0.1.tgz",
"integrity": "sha512-numTQtDZMoh78zJpaNdJ9MXb2cv5G3jwUoe3dMQODubZvLoGvTE/Ofp6sHvH8OGKcN/8A47pGLi/k58xHP/Tfw==", "integrity": "sha512-GDKPd+vk4jvSuvCbyuzx/unmXkk090Azec7LovXP8as1Hn8q9p3hbjmDGbUqqhknw0ajwit6LiiWqfiTUPMK7w==",
"requires": { "requires": {
"domelementtype": "^2.0.1", "domelementtype": "^2.0.1",
"domhandler": "^4.0.0", "domhandler": "^4.0.0",
@ -7622,9 +7630,9 @@
} }
}, },
"terser": { "terser": {
"version": "5.6.0", "version": "5.6.1",
"resolved": "https://registry.npmjs.org/terser/-/terser-5.6.0.tgz", "resolved": "https://registry.npmjs.org/terser/-/terser-5.6.1.tgz",
"integrity": "sha512-vyqLMoqadC1uR0vywqOZzriDYzgEkNJFK4q9GeyOBHIbiECHiWLKcWfbQWAUaPfxkjDhapSlZB9f7fkMrvkVjA==", "integrity": "sha512-yv9YLFQQ+3ZqgWCUk+pvNJwgUTdlIxUk1WTN+RnaFJe2L7ipG2csPT0ra2XRm7Cs8cxN7QXmK1rFzEwYEQkzXw==",
"dev": true, "dev": true,
"requires": { "requires": {
"commander": "^2.20.0", "commander": "^2.20.0",
@ -8113,9 +8121,9 @@
"integrity": "sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w==" "integrity": "sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w=="
}, },
"webpack": { "webpack": {
"version": "5.25.0", "version": "5.27.0",
"resolved": "https://registry.npmjs.org/webpack/-/webpack-5.25.0.tgz", "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.27.0.tgz",
"integrity": "sha512-jqQZopNCzt9c4K6Qa7j6kIhzHfR9wgF84go58VoNp4JbZrBr2D2l5lcv72CW80yc6NJl8CR6OY8xctnIs0r2uw==", "integrity": "sha512-So7grHu//UyJ+80VrNHjWwW6WSZkfWWD6a7NV/88r8G92PO6TYOGzbtTiZBwbPVkx6LVP8OYvHD+IxuJ2KBz4g==",
"dev": true, "dev": true,
"requires": { "requires": {
"@types/eslint-scope": "^3.7.0", "@types/eslint-scope": "^3.7.0",

View file

@ -49,19 +49,19 @@
"image-type": "4.1.0", "image-type": "4.1.0",
"ini": "2.0.0", "ini": "2.0.0",
"is-animated": "^2.0.1", "is-animated": "^2.0.1",
"is-svg": "4.2.2", "is-svg": "4.3.1",
"jimp": "0.16.1", "jimp": "0.16.1",
"jsdom": "16.5.1", "jsdom": "16.5.1",
"mime-types": "2.1.29", "mime-types": "2.1.29",
"multer": "1.4.2", "multer": "1.4.2",
"node-abi": "2.21.0", "node-abi": "2.21.0",
"open": "8.0.2", "open": "8.0.3",
"portscanner": "2.2.0", "portscanner": "2.2.0",
"rand-token": "1.0.1", "rand-token": "1.0.1",
"request": "^2.88.2", "request": "^2.88.2",
"rimraf": "3.0.2", "rimraf": "3.0.2",
"sanitize-filename": "1.6.3", "sanitize-filename": "1.6.3",
"sanitize-html": "2.3.2", "sanitize-html": "2.3.3",
"sax": "1.2.4", "sax": "1.2.4",
"semver": "7.3.4", "semver": "7.3.4",
"serve-favicon": "2.5.0", "serve-favicon": "2.5.0",
@ -83,11 +83,11 @@
"electron-packager": "15.2.0", "electron-packager": "15.2.0",
"electron-rebuild": "2.3.5", "electron-rebuild": "2.3.5",
"esm": "3.2.25", "esm": "3.2.25",
"jasmine": "3.6.4", "jasmine": "3.7.0",
"jsdoc": "3.6.6", "jsdoc": "3.6.6",
"lorem-ipsum": "2.0.3", "lorem-ipsum": "2.0.3",
"rcedit": "3.0.0", "rcedit": "3.0.0",
"webpack": "5.25.0", "webpack": "5.27.0",
"webpack-cli": "4.5.0" "webpack-cli": "4.5.0"
}, },
"optionalDependencies": { "optionalDependencies": {

View file

@ -33,6 +33,7 @@ import ImagePropertiesWidget from "../widgets/type_property_widgets/image_proper
import NotePropertiesWidget from "../widgets/type_property_widgets/note_properties.js"; import NotePropertiesWidget from "../widgets/type_property_widgets/note_properties.js";
import NoteIconWidget from "../widgets/note_icon.js"; import NoteIconWidget from "../widgets/note_icon.js";
import SearchResultWidget from "../widgets/search_result.js"; import SearchResultWidget from "../widgets/search_result.js";
import SyncStatusWidget from "../widgets/sync_status.js";
const RIGHT_PANE_CSS = ` const RIGHT_PANE_CSS = `
<style> <style>
@ -141,6 +142,7 @@ export default class DesktopMainWindowLayout {
.child(new FlexContainer('row').overflowing() .child(new FlexContainer('row').overflowing()
.css('height', '36px') .css('height', '36px')
.child(new GlobalMenuWidget()) .child(new GlobalMenuWidget())
.child(new SyncStatusWidget())
.child(new TabRowWidget()) .child(new TabRowWidget())
.child(new TitleBarButtonsWidget())) .child(new TitleBarButtonsWidget()))
.child(new StandardTopWidget() .child(new StandardTopWidget()

View file

@ -63,7 +63,7 @@ const TPL = `
<span class="caret"></span> <span class="caret"></span>
</button> </button>
<div class="dropdown-menu dropdown-menu-right"> <div class="dropdown-menu dropdown-menu-right">
<a data-trigger-command="renderActiveNote" class="dropdown-item render-note-button">Re-render note</a> <a data-trigger-command="renderActiveNote" class="dropdown-item render-note-button"><kbd data-command="renderActiveNote"></kbd> Re-render note</a>
<div class="dropdown-item protect-button"> <div class="dropdown-item protect-button">
Protect the note Protect the note

View file

@ -0,0 +1,58 @@
import BasicWidget from "./basic_widget.js";
import utils from "../services/utils.js";
import syncService from "../services/sync.js";
const TPL = `
<div class="sync-status-wrapper">
<style>
.sync-status-wrapper {
height: 35px;
box-sizing: border-box;
border-bottom: 1px solid var(--main-border-color);
}
.sync-status {
height: 34px;
box-sizing: border-box;
}
.sync-status button {
margin-right: 5px;
margin-left: 5px;
height: 34px;
border: none;
font-size: 180%;
padding-left: 10px;
padding-right: 10px;
}
.sync-status button span {
position: relative;
top: -5px;
}
.sync-status button:hover {
background-color: var(--hover-item-background-color);
}
.sync-status .dropdown-menu {
width: 20em;
}
</style>
<div class="sync-status">
<button type="button" class="btn btn-sm" title="Sync status">
<span class="bx bx-badge-check"></span>
<!-- <span class="bx bx-cloud-upload"></span>-->
<!-- <span class="bx bx-sync bx-spin bx-flip-horizontal"></span>-->
</button>
</div>
</div>
`;
export default class SyncStatusWidget extends BasicWidget {
doRender() {
this.$widget = $(TPL);
this.overflowing();
}
}