Version 4.9.2

This commit is contained in:
Chrystian Huot 2021-01-06 14:51:27 -05:00
parent e8d0f495c1
commit 627fab3bcb
12 changed files with 83 additions and 21 deletions

View file

@ -12,6 +12,10 @@ _v4.9.1_
- dirWatch.type="trunk-recorder" now deletes the JSON file in case the audio file is missing.
- Fix downstream sending wrong talkgroup id.
_v4.9.2_
- Add Config.options.disableKeyboardShortcuts to make everyone a happy camper.
# Version 4.8
- Add downstream.system.id_as property to allow export system with a different id.

View file

@ -1,6 +1,6 @@
{
"name": "rdio-scanner-client",
"version": "4.9.1",
"version": "4.9.2",
"lockfileVersion": 1,
"requires": true,
"dependencies": {

View file

@ -32,5 +32,5 @@
"build": "ng build --base-href ./ --prod",
"start": "ng serve"
},
"version": "4.9.1"
"version": "4.9.2"
}

View file

@ -118,8 +118,12 @@ export class AppRdioScannerMainComponent implements OnDestroy, OnInit {
}
}
@HostListener('document:keydown.a')
avoid(options?: RdioScannerAvoidOptions): void {
@HostListener('document:keydown.a', ['$event'])
avoid(options?: RdioScannerAvoidOptions, event?: KeyboardEvent): void {
if (event && !this.config?.keyboardShortcuts) {
return;
}
if (this.auth) {
this.authFocus();
@ -144,8 +148,12 @@ export class AppRdioScannerMainComponent implements OnDestroy, OnInit {
}
}
@HostListener('document:keydown.s')
holdSystem(): void {
@HostListener('document:keydown.s', ['$event'])
holdSystem(event?: KeyboardEvent): void {
if (event && !this.config?.keyboardShortcuts) {
return;
}
if (this.auth) {
this.authFocus();
@ -163,8 +171,12 @@ export class AppRdioScannerMainComponent implements OnDestroy, OnInit {
}
}
@HostListener('document:keydown.t')
holdTalkgroup(): void {
@HostListener('document:keydown.t', ['$event'])
holdTalkgroup(event?: KeyboardEvent): void {
if (event && !this.config?.keyboardShortcuts) {
return;
}
if (this.auth) {
this.authFocus();
@ -182,8 +194,12 @@ export class AppRdioScannerMainComponent implements OnDestroy, OnInit {
}
}
@HostListener('document:keydown.l')
livefeed(): void {
@HostListener('document:keydown.l', ['$event'])
livefeed(event?: KeyboardEvent): void {
if (event && !this.config?.keyboardShortcuts) {
return;
}
if (this.auth) {
this.authFocus();
@ -207,8 +223,12 @@ export class AppRdioScannerMainComponent implements OnDestroy, OnInit {
}
@HostListener('document:keydown.space', ['$event'])
@HostListener('document:keydown.p')
@HostListener('document:keydown.p', ['$event'])
pause(event?: KeyboardEvent): void {
if (event && !this.config?.keyboardShortcuts) {
return;
}
event?.preventDefault();
if (this.auth) {
@ -228,8 +248,12 @@ export class AppRdioScannerMainComponent implements OnDestroy, OnInit {
}
}
@HostListener('document:keydown.r')
replay(): void {
@HostListener('document:keydown.r', ['$event'])
replay(event?: KeyboardEvent): void {
if (event && !this.config?.keyboardShortcuts) {
return;
}
if (this.auth) {
this.authFocus();
@ -277,8 +301,12 @@ export class AppRdioScannerMainComponent implements OnDestroy, OnInit {
}
}
@HostListener('document:keydown.n')
skip(options?: { delay?: boolean }): void {
@HostListener('document:keydown.n', ['$event'])
skip(options?: { delay?: boolean }, event?: KeyboardEvent): void {
if (event && !this.config?.keyboardShortcuts) {
return;
}
if (this.auth) {
this.authFocus();

View file

@ -19,7 +19,7 @@
import { Component, ElementRef, HostListener, OnDestroy, ViewChild } from '@angular/core';
import { MatSidenav } from '@angular/material/sidenav';
import { RdioScannerEvent, RdioScannerLivefeedMode } from './rdio-scanner';
import { RdioScannerConfig, RdioScannerEvent, RdioScannerLivefeedMode } from './rdio-scanner';
import { AppRdioScannerService } from './rdio-scanner.service';
@Component({
@ -28,6 +28,8 @@ import { AppRdioScannerService } from './rdio-scanner.service';
templateUrl: './rdio-scanner.component.html',
})
export class AppRdioScannerComponent implements OnDestroy {
private config: RdioScannerConfig | undefined;
private eventSubscription = this.appRdioScannerService.event.subscribe((event: RdioScannerEvent) => this.eventHandler(event));
private livefeedMode: RdioScannerLivefeedMode = RdioScannerLivefeedMode.Offline;
@ -65,9 +67,13 @@ export class AppRdioScannerComponent implements OnDestroy {
this.eventSubscription.unsubscribe();
}
@HostListener('document:keydown.f')
@HostListener('document:keydown.f', ['$event'])
@HostListener('document:keydown.tab', ['$event'])
toggleFullscreen(event?: KeyboardEvent): void {
if (event && !this.config?.keyboardShortcuts) {
return;
}
event?.preventDefault();
if (document.fullscreenElement) {
@ -110,6 +116,10 @@ export class AppRdioScannerComponent implements OnDestroy {
}
private eventHandler(event: RdioScannerEvent): void {
if ('config' in event) {
this.config = event.config;
}
if (event.livefeedMode) {
this.livefeedMode = event.livefeedMode;
}
@ -117,6 +127,10 @@ export class AppRdioScannerComponent implements OnDestroy {
@HostListener('document:keydown.arrowleft', ['$event'])
private keyLeftArrow(event?: KeyboardEvent): void {
if (event && !this.config?.keyboardShortcuts) {
return;
}
event?.preventDefault();
if (this.selectPanel?.opened) {
@ -129,6 +143,10 @@ export class AppRdioScannerComponent implements OnDestroy {
@HostListener('document:keydown.arrowright', ['$event'])
private keyRightArrow(event?: KeyboardEvent): void {
if (event && !this.config?.keyboardShortcuts) {
return;
}
event?.preventDefault();
if (this.searchPanel?.opened) {

View file

@ -74,6 +74,7 @@ export class AppRdioScannerService implements OnDestroy {
private config: RdioScannerConfig = {
dimmerDelay: false,
groups: {},
keyboardShortcuts: true,
keypadBeeps: false,
systems: [],
tags: {},
@ -784,6 +785,7 @@ export class AppRdioScannerService implements OnDestroy {
this.config = {
dimmerDelay: typeof config.dimmerDelay === 'number' ? config.dimmerDelay : 5000,
groups: typeof config.groups !== null && typeof config.groups === 'object' ? config.groups : {},
keyboardShortcuts: config.keyboardShortcuts,
keypadBeeps: config.keypadBeeps !== null && typeof config.keypadBeeps === 'object' ? config.keypadBeeps : {},
systems: Array.isArray(config.systems) ? config.systems.slice() : [],
tags: typeof config.tags !== null && typeof config.tags === 'object' ? config.tags : {},

View file

@ -73,6 +73,7 @@ export interface RdioScannerCallSource {
export interface RdioScannerConfig {
dimmerDelay: number | false;
groups: { [key: string]: { [key: number]: number[] } };
keyboardShortcuts: boolean;
keypadBeeps: RdioScannerKeypadBeeps | false;
systems: RdioScannerSystem[];
tags: { [key: string]: { [key: number]: number[] } };

View file

@ -63,6 +63,10 @@ This file is at the heart of [Rdio Scanner](https://github.com/chuot/rdio-scanne
// Default value is false
"disableAudioConversion": false,
// (boolean) Disable the ability to control Rdio Scanner via keyboard shortcuts
// Default value is false
"disableKeyboardShortcuts": false,
// (boolean) Emit beeps when clicking buttons
// Default value is 1 which is preset #1
// See KeypadBeeps section below for more details

View file

@ -10,5 +10,5 @@
"start": "node run",
"update": "node update"
},
"version": "4.9.1"
"version": "4.9.2"
}

View file

@ -334,13 +334,15 @@ class Controller extends EventEmitter {
const dimmerDelay = this.config.options.dimmerDelay;
const keyboardShortcuts = !this.config.options.disableKeyboardShortcuts;
const keypadBeeps = options.keypadBeeps === false ? false
: options.keypadBeeps === 1 ? defaults.keypadBeeps.uniden
: options.keypadBeeps === 2 ? defaults.keypadBeeps.whistler
: options.keypadBeeps !== null && typeof options.keypadBeeps === 'object' ? options.keypadBeeps
: defaults.keypadBeeps.uniden;
return { dimmerDelay, keypadBeeps };
return { dimmerDelay, keyboardShortcuts, keypadBeeps };
}
getScope(token, store = this.config.access) {
@ -738,6 +740,9 @@ function parseConfig(config) {
delete config.disableAudioConversion;
}
config.options.disableKeyboardShortcuts = typeof config.options.disableKeyboardShortcuts === 'boolean'
? config.options.disableKeyboardShortcuts : false;
config.options.keypadBeeps = config.options.keypadBeeps === false ? false
: config.options.keyBeep === false ? false
: config.options.keypadBeeps !== null && typeof config.options.keypadBeeps === 'object' ? config.options.keypadBeeps

View file

@ -1,6 +1,6 @@
{
"name": "rdio-scanner-server",
"version": "4.9.1",
"version": "4.9.2",
"lockfileVersion": 1,
"requires": true,
"dependencies": {

View file

@ -39,5 +39,5 @@
"build": "webpack",
"start": "nodemon"
},
"version": "4.9.1"
"version": "4.9.2"
}