Cleanup views system

This commit is contained in:
the-djmaze 2022-03-08 12:28:16 +01:00
parent c0f494c758
commit 3e494f6519
12 changed files with 26 additions and 40 deletions

View file

@ -2,7 +2,7 @@ import ko from 'ko';
import { addObservablesTo, addComputablesTo, addSubscribablesTo } from 'External/ko'; import { addObservablesTo, addComputablesTo, addSubscribablesTo } from 'External/ko';
import { keyScope, SettingsGet, leftPanelDisabled } from 'Common/Globals'; import { keyScope, SettingsGet, leftPanelDisabled } from 'Common/Globals';
import { ViewType, showScreenPopup } from 'Knoin/Knoin'; import { ViewTypePopup, showScreenPopup } from 'Knoin/Knoin';
import { SaveSettingsStep } from 'Common/Enums'; import { SaveSettingsStep } from 'Common/Enums';
@ -10,8 +10,7 @@ class AbstractView {
constructor(templateID, type) constructor(templateID, type)
{ {
// Object.defineProperty(this, 'viewModelTemplateID', { value: templateID }); // Object.defineProperty(this, 'viewModelTemplateID', { value: templateID });
// this.viewModelTemplateID = this.constructor.name; this.viewModelTemplateID = templateID || this.constructor.name.replace('UserView', '');
this.viewModelTemplateID = templateID;
this.viewType = type; this.viewType = type;
this.viewModelDom = null; this.viewModelDom = null;
@ -57,7 +56,7 @@ export class AbstractViewPopup extends AbstractView
{ {
constructor(name) constructor(name)
{ {
super('Popups' + name, ViewType.Popup); super('Popups' + name, ViewTypePopup);
this.keyScope.scope = name; this.keyScope.scope = name;
this.modalVisible = ko.observable(false).extend({ rateLimit: 0 }); this.modalVisible = ko.observable(false).extend({ rateLimit: 0 });
shortcuts.add('escape,close', '', name, () => { shortcuts.add('escape,close', '', name, () => {
@ -92,19 +91,11 @@ AbstractViewPopup.hidden = function() {
return !this.__vm || !this.__vm.modalVisible(); return !this.__vm || !this.__vm.modalVisible();
} }
export class AbstractViewCenter extends AbstractView
{
constructor(templateID)
{
super(templateID, ViewType.Content);
}
}
export class AbstractViewLeft extends AbstractView export class AbstractViewLeft extends AbstractView
{ {
constructor(templateID) constructor(templateID)
{ {
super(templateID, ViewType.Left); super(templateID, 'Left');
this.leftPanelDisabled = leftPanelDisabled; this.leftPanelDisabled = leftPanelDisabled;
} }
} }
@ -113,7 +104,7 @@ export class AbstractViewRight extends AbstractView
{ {
constructor(templateID) constructor(templateID)
{ {
super(templateID, ViewType.Right); super(templateID, 'Right');
} }
} }
@ -158,9 +149,9 @@ export class AbstractViewSettings
} }
} }
export class AbstractViewLogin extends AbstractViewCenter { export class AbstractViewLogin extends AbstractView {
constructor(templateID) { constructor(templateID) {
super(templateID); super(templateID, 'Content');
this.hideSubmitButton = SettingsGet('hideSubmitButton'); this.hideSubmitButton = SettingsGet('hideSubmitButton');
this.formError = ko.observable(false).extend({ falseTimeout: 500 }); this.formError = ko.observable(false).extend({ falseTimeout: 500 });
} }

View file

@ -34,7 +34,7 @@ const
vm = new ViewModelClass(vmScreen), vm = new ViewModelClass(vmScreen),
id = vm.viewModelTemplateID, id = vm.viewModelTemplateID,
position = vm.viewType || '', position = vm.viewType || '',
dialog = ViewType.Popup === position, dialog = ViewTypePopup === position,
vmPlace = position ? doc.getElementById('rl-' + position.toLowerCase()) : null; vmPlace = position ? doc.getElementById('rl-' + position.toLowerCase()) : null;
ViewModelClass.__builded = true; ViewModelClass.__builded = true;
@ -49,7 +49,7 @@ const
vm.viewModelDom = vmDom; vm.viewModelDom = vmDom;
ViewModelClass.__dom = vmDom; ViewModelClass.__dom = vmDom;
if (ViewType.Popup === position) { if (ViewTypePopup === position) {
vm.close = () => hideScreenPopup(ViewModelClass); vm.close = () => hideScreenPopup(ViewModelClass);
// Firefox / Safari HTMLDialogElement not defined // Firefox / Safari HTMLDialogElement not defined
@ -133,7 +133,7 @@ const
if ( if (
ViewModelClass.__vm && ViewModelClass.__vm &&
ViewModelClass.__dom && ViewModelClass.__dom &&
ViewType.Popup !== ViewModelClass.__vm.viewType ViewTypePopup !== ViewModelClass.__vm.viewType
) { ) {
fn(ViewModelClass.__vm, ViewModelClass.__dom); fn(ViewModelClass.__vm, ViewModelClass.__dom);
} }
@ -230,12 +230,7 @@ const
export const export const
ViewType = { ViewTypePopup = 'Popups',
Popup: 'Popups',
Left: 'Left',
Right: 'Right',
Content: 'Content'
},
/** /**
* @param {Function} ViewModelClassToShow * @param {Function} ViewModelClassToShow

View file

@ -1,10 +1,10 @@
import { AbstractScreen } from 'Knoin/AbstractScreen'; import { AbstractScreen } from 'Knoin/AbstractScreen';
import { LoginAdminView } from 'View/Admin/Login'; import { AdminLoginView } from 'View/Admin/Login';
export class LoginAdminScreen extends AbstractScreen { export class LoginAdminScreen extends AbstractScreen {
constructor() { constructor() {
super('login', [LoginAdminView]); super('login', [AdminLoginView]);
} }
onShow() { onShow() {

View file

@ -18,12 +18,12 @@ import { UserSettingsFolders } from 'Settings/User/Folders';
import { UserSettingsThemes } from 'Settings/User/Themes'; import { UserSettingsThemes } from 'Settings/User/Themes';
import { SystemDropDownUserView } from 'View/User/SystemDropDown'; import { SystemDropDownUserView } from 'View/User/SystemDropDown';
import { MenuSettingsUserView } from 'View/User/Settings/Menu'; import { SettingsMenuUserView } from 'View/User/Settings/Menu';
import { PaneSettingsUserView } from 'View/User/Settings/Pane'; import { SettingsPaneUserView } from 'View/User/Settings/Pane';
export class SettingsUserScreen extends AbstractSettingsScreen { export class SettingsUserScreen extends AbstractSettingsScreen {
constructor() { constructor() {
super([SystemDropDownUserView, MenuSettingsUserView, PaneSettingsUserView]); super([SystemDropDownUserView, SettingsMenuUserView, SettingsPaneUserView]);
const views = [ const views = [
UserSettingsGeneral UserSettingsGeneral

View file

@ -6,7 +6,7 @@ import Remote from 'Remote/Admin/Fetch';
import { decorateKoCommands } from 'Knoin/Knoin'; import { decorateKoCommands } from 'Knoin/Knoin';
import { AbstractViewLogin } from 'Knoin/AbstractViews'; import { AbstractViewLogin } from 'Knoin/AbstractViews';
export class LoginAdminView extends AbstractViewLogin { export class AdminLoginView extends AbstractViewLogin {
constructor() { constructor() {
super('AdminLogin'); super('AdminLogin');

View file

@ -21,7 +21,7 @@ const SignMeOff = 0,
export class LoginUserView extends AbstractViewLogin { export class LoginUserView extends AbstractViewLogin {
constructor() { constructor() {
super('Login'); super();
this.addObservables({ this.addObservables({
loadingDesc: SettingsGet('LoadingDescription'), loadingDesc: SettingsGet('LoadingDescription'),

View file

@ -25,7 +25,7 @@ import { setExpandedFolder } from 'Model/FolderCollection';
export class MailFolderList extends AbstractViewLeft { export class MailFolderList extends AbstractViewLeft {
constructor() { constructor() {
super('MailFolderList'); super();
this.oContentScrollable = null; this.oContentScrollable = null;

View file

@ -58,7 +58,7 @@ const
export class MailMessageList extends AbstractViewRight { export class MailMessageList extends AbstractViewRight {
constructor() { constructor() {
super('MailMessageList'); super();
this.bPrefetch = false; this.bPrefetch = false;
this.emptySubjectValue = ''; this.emptySubjectValue = '';

View file

@ -62,7 +62,7 @@ const
export class MailMessageView extends AbstractViewRight { export class MailMessageView extends AbstractViewRight {
constructor() { constructor() {
super('MailMessageView'); super();
const const
/** /**

View file

@ -3,12 +3,12 @@ import { getFolderInboxName } from 'Common/Cache';
import { AbstractViewLeft } from 'Knoin/AbstractViews'; import { AbstractViewLeft } from 'Knoin/AbstractViews';
export class MenuSettingsUserView extends AbstractViewLeft { export class SettingsMenuUserView extends AbstractViewLeft {
/** /**
* @param {Object} screen * @param {Object} screen
*/ */
constructor(screen) { constructor(screen) {
super('SettingsMenu'); super();
this.menu = screen.menu; this.menu = screen.menu;
} }

View file

@ -7,9 +7,9 @@ import { ThemeStore } from 'Stores/Theme';
import { AbstractViewRight } from 'Knoin/AbstractViews'; import { AbstractViewRight } from 'Knoin/AbstractViews';
export class PaneSettingsUserView extends AbstractViewRight { export class SettingsPaneUserView extends AbstractViewRight {
constructor() { constructor() {
super('SettingsPane'); super();
this.isMobile = ThemeStore.isMobile; this.isMobile = ThemeStore.isMobile;
this.leftPanelDisabled = leftPanelDisabled; this.leftPanelDisabled = leftPanelDisabled;

View file

@ -24,7 +24,7 @@ import { getNotification } from 'Common/Translator';
export class SystemDropDownUserView extends AbstractViewRight { export class SystemDropDownUserView extends AbstractViewRight {
constructor() { constructor() {
super('SystemDropDown'); super();
this.allowAccounts = SettingsCapa('AdditionalAccounts'); this.allowAccounts = SettingsCapa('AdditionalAccounts');