added hotkeys
This commit is contained in:
parent
b977134109
commit
55bc557512
|
@ -3,6 +3,7 @@ import { Subscription, Observable } from "rxjs";
|
||||||
import { Store } from "@ngxs/store";
|
import { Store } from "@ngxs/store";
|
||||||
import { faPlus, faCog, faSearch } from "@fortawesome/free-solid-svg-icons";
|
import { faPlus, faCog, faSearch } from "@fortawesome/free-solid-svg-icons";
|
||||||
import { faCommentAlt, faCalendarAlt } from "@fortawesome/free-regular-svg-icons";
|
import { faCommentAlt, faCalendarAlt } from "@fortawesome/free-regular-svg-icons";
|
||||||
|
import { HotkeysService, Hotkey } from 'angular2-hotkeys';
|
||||||
|
|
||||||
import { AccountWrapper } from "../../models/account.models";
|
import { AccountWrapper } from "../../models/account.models";
|
||||||
import { AccountInfo, SelectAccount } from "../../states/accounts.state";
|
import { AccountInfo, SelectAccount } from "../../states/accounts.state";
|
||||||
|
@ -33,6 +34,7 @@ export class LeftSideBarComponent implements OnInit, OnDestroy {
|
||||||
private notificationSub: Subscription;
|
private notificationSub: Subscription;
|
||||||
|
|
||||||
constructor(
|
constructor(
|
||||||
|
private readonly hotkeysService: HotkeysService,
|
||||||
private readonly scheduledStatusService: ScheduledStatusService,
|
private readonly scheduledStatusService: ScheduledStatusService,
|
||||||
private readonly toolsService: ToolsService,
|
private readonly toolsService: ToolsService,
|
||||||
private readonly userNotificationServiceService: UserNotificationService,
|
private readonly userNotificationServiceService: UserNotificationService,
|
||||||
|
@ -40,6 +42,63 @@ export class LeftSideBarComponent implements OnInit, OnDestroy {
|
||||||
private readonly store: Store) {
|
private readonly store: Store) {
|
||||||
|
|
||||||
this.accounts$ = this.store.select(state => state.registeredaccounts.accounts);
|
this.accounts$ = this.store.select(state => state.registeredaccounts.accounts);
|
||||||
|
|
||||||
|
this.hotkeysService.add(new Hotkey('n', (event: KeyboardEvent): boolean => {
|
||||||
|
this.createNewStatus();
|
||||||
|
return false;
|
||||||
|
}));
|
||||||
|
|
||||||
|
this.hotkeysService.add(new Hotkey('s', (event: KeyboardEvent): boolean => {
|
||||||
|
this.openSearch();
|
||||||
|
return false;
|
||||||
|
}));
|
||||||
|
|
||||||
|
this.hotkeysService.add(new Hotkey('a', (event: KeyboardEvent): boolean => {
|
||||||
|
this.addNewAccount();
|
||||||
|
return false;
|
||||||
|
}));
|
||||||
|
|
||||||
|
this.hotkeysService.add(new Hotkey('c', (event: KeyboardEvent): boolean => {
|
||||||
|
this.navigationService.openPanel(LeftPanelType.Closed);
|
||||||
|
return false;
|
||||||
|
}));
|
||||||
|
|
||||||
|
this.hotkeysService.add(new Hotkey('escape', (event: KeyboardEvent): boolean => {
|
||||||
|
this.navigationService.openPanel(LeftPanelType.Closed);
|
||||||
|
return false;
|
||||||
|
}));
|
||||||
|
|
||||||
|
this.hotkeysService.add(new Hotkey('ctrl+up', (event: KeyboardEvent): boolean => {
|
||||||
|
this.selectPreviousAccount();
|
||||||
|
return false;
|
||||||
|
}));
|
||||||
|
|
||||||
|
this.hotkeysService.add(new Hotkey('ctrl+down', (event: KeyboardEvent): boolean => {
|
||||||
|
this.selectNextAccount();
|
||||||
|
return false;
|
||||||
|
}));
|
||||||
|
}
|
||||||
|
|
||||||
|
private selectPreviousAccount(){
|
||||||
|
let accounts = <AccountInfo[]>this.store.snapshot().registeredaccounts.accounts;
|
||||||
|
let selectedAccount = accounts.find(x => x.isSelected);
|
||||||
|
let selectedIndex = accounts.indexOf(selectedAccount);
|
||||||
|
|
||||||
|
if(selectedIndex > 0){
|
||||||
|
let previousAccount = accounts[selectedIndex - 1];
|
||||||
|
this.store.dispatch([new SelectAccount(previousAccount)]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private selectNextAccount(){
|
||||||
|
let accounts = <AccountInfo[]>this.store.snapshot().registeredaccounts.accounts;
|
||||||
|
let selectedAccount = accounts.find(x => x.isSelected);
|
||||||
|
let selectedIndex = accounts.indexOf(selectedAccount);
|
||||||
|
|
||||||
|
if(selectedIndex < accounts.length - 1){
|
||||||
|
let nextAccount = accounts[selectedIndex + 1];
|
||||||
|
this.store.dispatch([new SelectAccount(nextAccount)]);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
ngOnInit() {
|
ngOnInit() {
|
||||||
|
@ -100,6 +159,7 @@ export class LeftSideBarComponent implements OnInit, OnDestroy {
|
||||||
ngOnDestroy(): void {
|
ngOnDestroy(): void {
|
||||||
this.accountSub.unsubscribe();
|
this.accountSub.unsubscribe();
|
||||||
this.notificationSub.unsubscribe();
|
this.notificationSub.unsubscribe();
|
||||||
|
this.scheduledSub.unsubscribe();
|
||||||
}
|
}
|
||||||
|
|
||||||
onToogleAccountNotify(acc: AccountWrapper) {
|
onToogleAccountNotify(acc: AccountWrapper) {
|
||||||
|
|
|
@ -60,12 +60,12 @@ export class ToolsService {
|
||||||
}
|
}
|
||||||
|
|
||||||
getSelectedAccounts(): AccountInfo[] {
|
getSelectedAccounts(): AccountInfo[] {
|
||||||
var regAccounts = <AccountInfo[]>this.store.snapshot().registeredaccounts.accounts;
|
let regAccounts = <AccountInfo[]>this.store.snapshot().registeredaccounts.accounts;
|
||||||
return regAccounts.filter(x => x.isSelected);
|
return regAccounts.filter(x => x.isSelected);
|
||||||
}
|
}
|
||||||
|
|
||||||
getAccountSettings(account: AccountInfo): AccountSettings {
|
getAccountSettings(account: AccountInfo): AccountSettings {
|
||||||
var accountsSettings = <AccountSettings[]>this.store.snapshot().globalsettings.settings.accountSettings;
|
let accountsSettings = <AccountSettings[]>this.store.snapshot().globalsettings.settings.accountSettings;
|
||||||
let accountSettings = accountsSettings.find(x => x.accountId === account.id);
|
let accountSettings = accountsSettings.find(x => x.accountId === account.id);
|
||||||
if (!accountSettings) {
|
if (!accountSettings) {
|
||||||
accountSettings = new AccountSettings();
|
accountSettings = new AccountSettings();
|
||||||
|
|
Loading…
Reference in New Issue