Notes/src/public/app/layouts/desktop_main_window_layout.js

202 lines
7.6 KiB
JavaScript
Raw Normal View History

2020-04-25 23:52:13 +02:00
import FlexContainer from "../widgets/flex_container.js";
import GlobalMenuWidget from "../widgets/global_menu.js";
import TabRowWidget from "../widgets/tab_row.js";
import TitleBarButtonsWidget from "../widgets/title_bar_buttons.js";
import StandardTopWidget from "../widgets/standard_top_widget.js";
import SidePaneContainer from "../widgets/side_pane_container.js";
import NoteTreeWidget from "../widgets/note_tree.js";
import TabCachingWidget from "../widgets/tab_caching_widget.js";
import NotePathsWidget from "../widgets/note_paths.js";
import NoteTitleWidget from "../widgets/note_title.js";
2021-01-30 15:50:46 +01:00
import OwnedAttributeListWidget from "../widgets/type_property_widgets/owned_attribute_list.js";
2020-04-25 23:52:13 +02:00
import NoteTypeWidget from "../widgets/note_type.js";
import NoteActionsWidget from "../widgets/note_actions.js";
import NoteDetailWidget from "../widgets/note_detail.js";
2020-04-26 09:40:02 +02:00
import NoteInfoWidget from "../widgets/collapsible_widgets/note_info.js";
import CalendarWidget from "../widgets/collapsible_widgets/calendar.js";
import LinkMapWidget from "../widgets/collapsible_widgets/link_map.js";
import NoteRevisionsWidget from "../widgets/collapsible_widgets/note_revisions.js";
import SimilarNotesWidget from "../widgets/similar_notes.js";
2020-04-26 09:40:02 +02:00
import WhatLinksHereWidget from "../widgets/collapsible_widgets/what_links_here.js";
2020-04-25 23:52:13 +02:00
import SidePaneToggles from "../widgets/side_pane_toggles.js";
import EditedNotesWidget from "../widgets/collapsible_widgets/edited_notes.js";
2020-10-30 22:57:26 +01:00
import CollapsibleSectionContainer from "../widgets/collapsible_section_container.js";
2021-01-30 15:50:46 +01:00
import PromotedAttributesWidget from "../widgets/type_property_widgets/promoted_attributes.js";
import InheritedAttributesWidget from "../widgets/type_property_widgets/inherited_attribute_list.js";
import NoteListWidget from "../widgets/note_list.js";
2021-01-30 15:50:46 +01:00
import SearchDefinitionWidget from "../widgets/type_property_widgets/search_definition.js";
2020-12-27 22:19:27 +01:00
import Container from "../widgets/container.js";
import SqlResultWidget from "../widgets/sql_result.js";
import SqlTableSchemasWidget from "../widgets/sql_table_schemas.js";
2021-01-30 15:50:46 +01:00
import FilePropertiesWidget from "../widgets/type_property_widgets/file_properties.js";
import ImagePropertiesWidget from "../widgets/type_property_widgets/image_properties.js";
2021-01-31 12:15:36 +01:00
import NotePropertiesWidget from "../widgets/type_property_widgets/note_properties.js";
2021-02-13 20:07:08 +01:00
import NoteIconWidget from "../widgets/note_icon.js";
2020-02-06 21:47:31 +01:00
2020-03-01 18:47:20 +01:00
const RIGHT_PANE_CSS = `
<style>
2020-03-07 14:18:58 +01:00
#right-pane {
overflow: auto;
}
2020-03-01 18:47:20 +01:00
#right-pane .card {
border: 0;
display: flex;
2020-03-07 14:18:58 +01:00
flex-shrink: 0;
2020-03-01 18:47:20 +01:00
flex-direction: column;
}
#right-pane .card-header {
background: inherit;
padding: 6px 10px 3px 0;
2020-03-01 18:47:20 +01:00
width: 99%; /* to give minimal right margin */
background-color: var(--button-background-color);
border-color: var(--button-border-color);
2020-09-24 21:58:00 +02:00
border-width: 0 0 1px 0;
2020-03-01 18:47:20 +01:00
border-radius: 4px;
border-style: solid;
display: flex;
justify-content: space-between;
}
#right-pane .widget-title {
border-radius: 0;
padding: 0;
border: 0;
background: inherit;
font-weight: bold;
text-transform: uppercase;
color: var(--muted-text-color) !important;
}
#right-pane .widget-header-action {
cursor: pointer;
color: var(--main-text-color) !important;
text-decoration: none;
font-size: large;
position: relative;
top: 2px;
2020-03-01 18:47:20 +01:00
}
#right-pane .widget-help {
color: var(--muted-text-color);
position: relative;
top: 2px;
font-size: large;
2020-03-01 18:47:20 +01:00
}
#right-pane .widget-help.no-link:hover {
cursor: default;
text-decoration: none;
}
#right-pane .widget-toggle-button {
cursor: pointer;
color: var(--main-text-color) !important;
}
#right-pane .widget-toggle-button:hover {
text-decoration: none !important;
}
#right-pane .widget-toggle-icon {
position: relative;
top: 2px;
font-size: large;
2021-02-13 21:52:31 +01:00
padding-left: 5px;
}
2020-03-01 18:47:20 +01:00
#right-pane .body-wrapper {
overflow: auto;
}
#right-pane .card-body {
width: 100%;
padding: 8px;
border: 0;
height: 100%;
overflow: auto;
max-height: 300px;
2020-03-01 18:47:20 +01:00
}
#right-pane .card-body ul {
padding-left: 25px;
margin-bottom: 5px;
}
</style>`;
2020-04-25 23:52:13 +02:00
export default class DesktopMainWindowLayout {
2020-03-16 21:16:09 +01:00
constructor(customWidgets) {
this.customWidgets = customWidgets;
}
2020-02-06 21:47:31 +01:00
getRootWidget(appContext) {
appContext.mainTreeWidget = new NoteTreeWidget("main");
2020-02-27 12:26:42 +01:00
return new FlexContainer('column')
.setParent(appContext)
.id('root-widget')
2020-02-27 12:41:15 +01:00
.css('height', '100vh')
.child(new FlexContainer('row').overflowing()
2020-08-27 22:03:56 +02:00
.css('height', '36px')
2020-02-27 00:58:10 +01:00
.child(new GlobalMenuWidget())
.child(new TabRowWidget())
.child(new TitleBarButtonsWidget()))
2020-03-01 19:16:30 +01:00
.child(new StandardTopWidget()
.hideInZenMode())
.child(new FlexContainer('row')
.collapsible()
2020-05-12 12:45:32 +02:00
.filling()
2020-02-27 10:03:14 +01:00
.child(new SidePaneContainer('left')
2020-03-01 19:16:30 +01:00
.hideInZenMode()
.child(appContext.mainTreeWidget)
.child(...this.customWidgets.get('left-pane'))
2020-02-27 10:03:14 +01:00
)
.child(new FlexContainer('column').id('center-pane')
2020-02-27 10:08:21 +01:00
.child(new FlexContainer('row').class('title-row')
2021-02-13 20:07:08 +01:00
.css('align-items: center;')
.cssBlock('.title-row > * { margin: 5px; }')
.overflowing()
2021-02-13 20:07:08 +01:00
.child(new NoteIconWidget())
2020-02-27 10:03:14 +01:00
.child(new NoteTitleWidget())
.child(new NotePathsWidget().hideInZenMode())
2020-03-01 19:16:30 +01:00
.child(new NoteTypeWidget().hideInZenMode())
.child(new NoteActionsWidget().hideInZenMode())
2020-02-27 10:03:14 +01:00
)
2020-10-30 22:57:26 +01:00
.child(
new TabCachingWidget(() => new CollapsibleSectionContainer()
2020-11-26 23:00:27 +01:00
.child(new SearchDefinitionWidget())
2021-01-31 12:15:36 +01:00
.child(new NotePropertiesWidget())
.child(new FilePropertiesWidget())
.child(new ImagePropertiesWidget())
2020-10-30 22:57:26 +01:00
.child(new PromotedAttributesWidget())
2020-10-31 22:47:15 +01:00
.child(new OwnedAttributeListWidget())
.child(new InheritedAttributesWidget())
2020-10-30 22:57:26 +01:00
)
)
2020-12-27 22:19:27 +01:00
.child(new Container()
.css('height: 100%; overflow: auto;')
.child(new TabCachingWidget(() => new SqlTableSchemasWidget()))
2020-12-27 22:19:27 +01:00
.child(new TabCachingWidget(() => new NoteDetailWidget()))
.child(new TabCachingWidget(() => new NoteListWidget()))
.child(new TabCachingWidget(() => new SqlResultWidget()))
2020-12-27 22:19:27 +01:00
)
.child(new TabCachingWidget(() => new SimilarNotesWidget()))
.child(...this.customWidgets.get('center-pane'))
2020-02-27 10:03:14 +01:00
)
2020-03-01 19:16:30 +01:00
.child(new SidePaneContainer('right')
.cssBlock(RIGHT_PANE_CSS)
.hideInZenMode()
2020-02-27 10:03:14 +01:00
.child(new NoteInfoWidget())
.child(new TabCachingWidget(() => new CalendarWidget()))
.child(new TabCachingWidget(() => new EditedNotesWidget()))
2020-02-27 10:03:14 +01:00
.child(new TabCachingWidget(() => new LinkMapWidget()))
.child(new TabCachingWidget(() => new NoteRevisionsWidget()))
.child(new TabCachingWidget(() => new WhatLinksHereWidget()))
2020-03-16 23:25:52 +01:00
.child(...this.customWidgets.get('right-pane'))
2020-02-27 10:03:14 +01:00
)
2020-03-01 19:16:30 +01:00
.child(new SidePaneToggles().hideInZenMode())
2020-02-27 10:03:14 +01:00
);
2020-02-06 21:47:31 +01:00
}
2020-05-12 12:45:32 +02:00
}