From 3c311cd2a4207fbebb773c563854e44a13e4cf83 Mon Sep 17 00:00:00 2001 From: zadam Date: Sat, 11 Apr 2020 22:06:04 +0200 Subject: [PATCH] loading indicator and optimisations for mobile --- package-lock.json | 24 ++--- package.json | 6 +- src/public/javascripts/desktop.js | 10 +- src/public/javascripts/mobile.js | 70 ++++++++++++-- .../javascripts/services/app_context.js | 6 +- src/public/javascripts/widgets/note_tree.js | 7 +- .../widgets/type_widgets/relation_map.js | 1 - src/views/mobile.ejs | 96 ++++++++++++++++++- 8 files changed, 187 insertions(+), 33 deletions(-) diff --git a/package-lock.json b/package-lock.json index 6009fc261..e0af94372 100644 --- a/package-lock.json +++ b/package-lock.json @@ -2165,9 +2165,9 @@ "integrity": "sha1-QGXiATz5+5Ft39gu+1Bq1MZ2kGI=" }, "dayjs": { - "version": "1.8.23", - "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.8.23.tgz", - "integrity": "sha512-NmYHMFONftoZbeOhVz6jfiXI4zSiPN6NoVWJgC0aZQfYVwzy/ZpESPHuCcI0B8BUMpSJQ08zenHDbofOLKq8hQ==" + "version": "1.8.24", + "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.8.24.tgz", + "integrity": "sha512-bImQZbBv86zcOWOq6fLg7r4aqMx8fScdmykA7cSh+gH1Yh8AM0Dbw0gHYrsOrza6oBBnkK+/OaR+UAa9UsMrDw==" }, "debug": { "version": "4.1.1", @@ -2687,9 +2687,9 @@ "integrity": "sha512-IncmUpn1yN84hy2shb0POJ80FWrfGNY0cxO9f4v+/sG7qcBvAtVWUA1IdzY/8EYUmOVhoKJVdJjNd3AZcnxOjA==" }, "electron": { - "version": "9.0.0-beta.14", - "resolved": "https://registry.npmjs.org/electron/-/electron-9.0.0-beta.14.tgz", - "integrity": "sha512-zk0TcX5Id4pbROx70h2XZohxAh2rlhtQ60NJ8AkNyaBVfIZKa6v1Ss0RMuJTe1YUmtFgUtogLEWyq8+xdsdHrg==", + "version": "9.0.0-beta.15", + "resolved": "https://registry.npmjs.org/electron/-/electron-9.0.0-beta.15.tgz", + "integrity": "sha512-trC0uHL11l5GWmMY8MZpj3QcyQnQWANiauLkeOvYv/QTbj5K0H3bRXmG3QhZcVNdNAG5tEd1hDMhQHe5oRrn9A==", "dev": true, "requires": { "@electron/get": "^1.0.1", @@ -8840,9 +8840,9 @@ } }, "semver": { - "version": "7.2.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.2.1.tgz", - "integrity": "sha512-aHhm1pD02jXXkyIpq25qBZjr3CQgg8KST8uX0OWXch3xE6jw+1bfbWnCjzMwojsTquroUmKFHNzU6x26mEiRxw==" + "version": "7.2.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.2.2.tgz", + "integrity": "sha512-Zo84u6o2PebMSK3zjJ6Zp5wi8VnQZnEaCP13Ul/lt1ANsLACxnJxq4EEm1PY94/por1Hm9+7xpIswdS5AkieMA==" }, "semver-compare": { "version": "1.0.0", @@ -9164,9 +9164,9 @@ "dev": true }, "sqlite": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/sqlite/-/sqlite-4.0.5.tgz", - "integrity": "sha512-O4UAFN+YsZJw5d+iAfFttP1rE26AQOdaEnQgbCSlLgg++b5/v3Zkp5zBLnfcZrQi+BA+urVDrTA/FC5o/DUNFg==" + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/sqlite/-/sqlite-4.0.6.tgz", + "integrity": "sha512-irh1vzqke8XzO+BZQnFAX9doIsILFxpjDPWSX005thjxqx+GXApAMarNkM6Ta7S/yT6KMJ9bniwiD0bRcQuuFQ==" }, "sqlite3": { "version": "4.1.1", diff --git a/package.json b/package.json index 3dae96569..31c757230 100644 --- a/package.json +++ b/package.json @@ -27,7 +27,7 @@ "commonmark": "0.29.1", "cookie-parser": "1.4.5", "csurf": "1.11.0", - "dayjs": "1.8.23", + "dayjs": "1.8.24", "debug": "4.1.1", "ejs": "3.0.2", "electron-debug": "3.0.1", @@ -61,11 +61,11 @@ "rimraf": "3.0.2", "sanitize-filename": "1.6.3", "sax": "1.2.4", - "semver": "7.2.1", + "semver": "7.2.2", "serve-favicon": "2.5.0", "session-file-store": "1.4.0", "simple-node-logger": "18.12.24", - "sqlite": "4.0.5", + "sqlite": "4.0.6", "sqlite3": "4.1.1", "string-similarity": "4.0.1", "tar-stream": "2.1.2", diff --git a/src/public/javascripts/desktop.js b/src/public/javascripts/desktop.js index 00a17b011..86295e9d3 100644 --- a/src/public/javascripts/desktop.js +++ b/src/public/javascripts/desktop.js @@ -1,3 +1,6 @@ +import treeCache from './services/tree_cache.js'; +import options from "./services/options.js"; +import appContext from "./services/app_context.js"; import glob from './services/glob.js'; import link from './services/link.js'; import ws from './services/ws.js'; @@ -14,7 +17,6 @@ import server from './services/server.js'; import Entrypoints from './services/entrypoints.js'; import noteTooltipService from './services/note_tooltip.js'; import bundle from "./services/bundle.js"; -import treeCache from "./services/tree_cache.js"; import libraryLoader from "./services/library_loader.js"; import hoistedNoteService from './services/hoisted_note.js'; import noteTypeService from './widgets/note_type.js'; @@ -25,9 +27,7 @@ import dateNoteService from './services/date_notes.js'; import importService from './services/import.js'; import keyboardActionService from "./services/keyboard_actions.js"; import splitService from "./services/split.js"; -import options from "./services/options.js"; import noteContentRenderer from "./services/note_content_renderer.js"; -import appContext from "./services/app_context.js"; import FlexContainer from "./widgets/flex_container.js"; import GlobalMenuWidget from "./widgets/global_menu.js"; import TabRowWidget from "./widgets/tab_row.js"; @@ -68,6 +68,10 @@ import BookTypeWidget from "./widgets/type_widgets/book.js"; import contextMenu from "./services/context_menu.js"; import DesktopLayout from "./widgets/desktop_layout.js"; import bundleService from "./services/bundle.js"; +import NoteShort from "./entities/note_short.js" +import NoteCompletement from "./entities/note_complement.js" +import Branch from "./entities/branch.js" +import Attribute from "./entities/attribute.js" if (utils.isElectron()) { require('electron').ipcRenderer.on('globalShortcut', async function(event, actionName) { diff --git a/src/public/javascripts/mobile.js b/src/public/javascripts/mobile.js index f4bb2d49d..e38edbaa6 100644 --- a/src/public/javascripts/mobile.js +++ b/src/public/javascripts/mobile.js @@ -1,11 +1,14 @@ -import glob from './services/glob.js'; -import macInit from './services/mac_init.js'; +import treeCache from './services/tree_cache.js'; import options from "./services/options.js"; -import noteContentRenderer from "./services/note_content_renderer.js"; import appContext from "./services/app_context.js"; +import glob from './services/glob.js'; +import noteContentRenderer from "./services/note_content_renderer.js"; import FlexContainer from "./widgets/flex_container.js"; import EmptyTypeWidget from "./widgets/type_widgets/empty.js"; -import TextTypeWidget from "./widgets/type_widgets/editable_text.js"; +import AbstractTextTypeWidget from "./widgets/type_widgets/abstract_text_type_widget.js"; +import EditableTextTypeWidget from "./widgets/type_widgets/editable_text.js"; +import ReadonlyTextTypeWidget from "./widgets/type_widgets/read_only_text.js"; +import DeletedTypeWidget from "./widgets/type_widgets/deleted.js"; import CodeTypeWidget from "./widgets/type_widgets/code.js"; import FileTypeWidget from "./widgets/type_widgets/file.js"; import ImageTypeWidget from "./widgets/type_widgets/image.js"; @@ -15,8 +18,63 @@ import RelationMapTypeWidget from "./widgets/type_widgets/relation_map.js"; import ProtectedSessionTypeWidget from "./widgets/type_widgets/protected_session.js"; import BookTypeWidget from "./widgets/type_widgets/book.js"; import MobileLayout from "./widgets/mobile_layout.js"; - -macInit.init(); +import utils from "./services/utils.js"; +import link from './services/link.js'; +import ws from './services/ws.js'; +import noteType from './widgets/note_type.js'; +import protectedSessionService from './services/protected_session.js'; +import protectedSessionHolder from './services/protected_session_holder.js'; +import treeService from './services/tree.js'; +import branchService from './services/branches.js'; +import server from './services/server.js'; +import Entrypoints from './services/entrypoints.js'; +import noteTooltipService from './services/note_tooltip.js'; +import bundle from "./services/bundle.js"; +import libraryLoader from "./services/library_loader.js"; +import hoistedNoteService from './services/hoisted_note.js'; +import noteTypeService from './widgets/note_type.js'; +import linkService from './services/link.js'; +import dateNoteService from './services/date_notes.js'; +import importService from './services/import.js'; +import keyboardActionService from "./services/keyboard_actions.js"; +import splitService from "./services/split.js"; +import GlobalMenuWidget from "./widgets/global_menu.js"; +import TabRowWidget from "./widgets/tab_row.js"; +import NoteTreeWidget from "./widgets/note_tree.js"; +import treeBuilderService from "./services/tree_builder.js"; +import spacedUpdateService from "./services/spaced_update.js"; +import toastService from "./services/toast.js"; +import BasicWidget from "./widgets/basic_widget.js"; +import TabAwareWidget from "./widgets/tab_aware_widget.js"; +import TabCachingWidget from "./widgets/tab_caching_widget.js"; +import NoteTitleWidget from "./widgets/note_title.js"; +import PromotedAttributesWidget from "./widgets/promoted_attributes.js"; +import NoteDetailWidget from "./widgets/note_detail.js"; +import bundleService from "./services/bundle.js"; +import dialogCommandExecutor from "./services/dialog_command_executor.js"; +import mainTreeExecutor from "./services/main_tree_executors.js"; +import zoom from "./services/zoom.js"; +import tabManager from "./services/tab_manager.js"; +import tabContext from "./services/tab_context.js"; +import Component from "./widgets/component.js"; +import mimeTypes from "./services/mime_types.js"; +import screenContainer from "./widgets/screen_container.js"; +import clipboard from "./services/clipboard.js"; +import renderService from "./services/render.js"; +import NoteShort from "./entities/note_short.js" +import NoteCompletement from "./entities/note_complement.js" +import Branch from "./entities/branch.js" +import Attribute from "./entities/attribute.js" +import mutex from "./services/mutex.js" +import noteCreateService from "./services/note_create.js" +import closeDetailWidget from "./widgets/close_detail_button.js" +import mobileDetailMenu from "./widgets/mobile_detail_menu.js" +import mobileGlobalButtons from "./widgets/mobile_global_buttons.js" +import mobileScreenSwitcher from "./widgets/mobile_screen_switcher.js"; +import frontendScriptApi from "./services/frontend_script_api.js"; +import CollapsibleWidget from "./widgets/collapsible_widget.js"; +import LoadResults from "./services/load_results.js"; +import syncService from "./services/sync.js"; appContext.setLayout(new MobileLayout()); appContext.start(); \ No newline at end of file diff --git a/src/public/javascripts/services/app_context.js b/src/public/javascripts/services/app_context.js index cb07a78ef..6dbcfa2db 100644 --- a/src/public/javascripts/services/app_context.js +++ b/src/public/javascripts/services/app_context.js @@ -20,11 +20,15 @@ class AppContext extends Component { async start() { await Promise.all([treeCache.initializedPromise, options.initializedPromise]); + $("#loading-indicator").hide(); + this.showWidgets(); this.tabManager.loadTabs(); - setTimeout(() => bundleService.executeStartupBundles(), 2000); + if (utils.isDesktop()) { + setTimeout(() => bundleService.executeStartupBundles(), 2000); + } } showWidgets() { diff --git a/src/public/javascripts/widgets/note_tree.js b/src/public/javascripts/widgets/note_tree.js index 628f5f191..368da7425 100644 --- a/src/public/javascripts/widgets/note_tree.js +++ b/src/public/javascripts/widgets/note_tree.js @@ -4,7 +4,6 @@ import utils from "../services/utils.js"; import contextMenu from "../services/context_menu.js"; import treeCache from "../services/tree_cache.js"; import treeBuilder from "../services/tree_builder.js"; -import TreeContextMenu from "../services/tree_context_menu.js"; import branchService from "../services/branches.js"; import ws from "../services/ws.js"; import TabAwareWidget from "./tab_aware_widget.js"; @@ -236,8 +235,10 @@ export default class NoteTreeWidget extends TabAwareWidget { this.$widget.on('contextmenu', '.fancytree-node', e => { const node = $.ui.fancytree.getNode(e); - const treeContextMenu = new TreeContextMenu(this, node); - treeContextMenu.show(e); + import("../services/tree_context_menu.js").then(({default: TreeContextMenu}) => { + const treeContextMenu = new TreeContextMenu(this, node); + treeContextMenu.show(e); + }); return false; // blocks default browser right click menu }); diff --git a/src/public/javascripts/widgets/type_widgets/relation_map.js b/src/public/javascripts/widgets/type_widgets/relation_map.js index e87ae63fd..4d70946dc 100644 --- a/src/public/javascripts/widgets/type_widgets/relation_map.js +++ b/src/public/javascripts/widgets/type_widgets/relation_map.js @@ -1,7 +1,6 @@ import server from "../../services/server.js"; import linkService from "../../services/link.js"; import libraryLoader from "../../services/library_loader.js"; -import treeService from "../../services/tree.js"; import contextMenu from "../../services/context_menu.js"; import toastService from "../../services/toast.js"; import attributeAutocompleteService from "../../services/attribute_autocomplete.js"; diff --git a/src/views/mobile.ejs b/src/views/mobile.ejs index 0d84a0762..10328f52a 100644 --- a/src/views/mobile.ejs +++ b/src/views/mobile.ejs @@ -6,10 +6,101 @@ Trilium Notes + + - + +
+
+
+
@@ -48,8 +139,5 @@ - \ No newline at end of file