speechrecorderng 3.3.1 → 3.3.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2020/lib/audio/playback/player.mjs +2 -2
- package/esm2020/lib/speechrecorder/session/audiorecorder.mjs +92 -77
- package/esm2020/lib/speechrecorder/session/basicrecorder.mjs +11 -5
- package/esm2020/lib/speechrecorder/session/controlpanel.mjs +50 -37
- package/esm2020/lib/speechrecorder/session/prompting.mjs +19 -15
- package/esm2020/lib/speechrecorder/session/recorder_combi_pane.mjs +14 -11
- package/esm2020/lib/speechrecorder/session/recording_list.mjs +2 -2
- package/esm2020/lib/speechrecorder/session/recordingfile/recording-file-navi.component.mjs +9 -9
- package/esm2020/lib/speechrecorder/session/recordingfile/recording-file-u-i.component.mjs +3 -3
- package/esm2020/lib/speechrecorder/session/recordingfile/recording-file-view.component.mjs +3 -3
- package/esm2020/lib/speechrecorder/session/sessionmanager.mjs +226 -206
- package/esm2020/lib/speechrecorderng.component.mjs +2 -1
- package/esm2020/lib/speechrecorderng.module.mjs +5 -5
- package/esm2020/lib/spr.module.version.mjs +2 -2
- package/esm2020/lib/ui/recordingitem_display.mjs +29 -25
- package/esm2020/lib/ui/responsive_component.mjs +24 -0
- package/fesm2015/speechrecorderng.mjs +432 -349
- package/fesm2015/speechrecorderng.mjs.map +1 -1
- package/fesm2020/speechrecorderng.mjs +432 -349
- package/fesm2020/speechrecorderng.mjs.map +1 -1
- package/lib/speechrecorder/session/audiorecorder.d.ts +5 -3
- package/lib/speechrecorder/session/basicrecorder.d.ts +6 -3
- package/lib/speechrecorder/session/controlpanel.d.ts +9 -3
- package/lib/speechrecorder/session/prompting.d.ts +5 -1
- package/lib/speechrecorder/session/recorder_combi_pane.d.ts +5 -2
- package/lib/speechrecorder/session/sessionmanager.d.ts +6 -3
- package/lib/speechrecorderng.component.d.ts +1 -1
- package/lib/speechrecorderng.module.d.ts +18 -19
- package/lib/spr.module.version.d.ts +1 -1
- package/lib/ui/recordingitem_display.d.ts +8 -4
- package/lib/ui/responsive_component.d.ts +9 -0
- package/package.json +1 -2
|
@@ -14,7 +14,8 @@ import * as i2 from '@angular/material/icon';
|
|
|
14
14
|
import { MatIconModule } from '@angular/material/icon';
|
|
15
15
|
import * as i4 from '@angular/material/tooltip';
|
|
16
16
|
import { MatTooltipModule } from '@angular/material/tooltip';
|
|
17
|
-
import * as i1$3 from '@angular/
|
|
17
|
+
import * as i1$3 from '@angular/cdk/layout';
|
|
18
|
+
import { Breakpoints } from '@angular/cdk/layout';
|
|
18
19
|
import * as i1$4 from '@angular/material/dialog';
|
|
19
20
|
import { MAT_DIALOG_DATA, MatDialogModule } from '@angular/material/dialog';
|
|
20
21
|
import * as i3 from '@angular/material/button';
|
|
@@ -22,10 +23,8 @@ import { MatButtonModule } from '@angular/material/button';
|
|
|
22
23
|
import { __decorate, __param } from 'tslib';
|
|
23
24
|
import * as i3$1 from '@angular/material/progress-spinner';
|
|
24
25
|
import { MatProgressSpinnerModule } from '@angular/material/progress-spinner';
|
|
25
|
-
import * as
|
|
26
|
-
import * as i8 from '@angular/material/progress-bar';
|
|
26
|
+
import * as i7 from '@angular/material/progress-bar';
|
|
27
27
|
import { MatProgressBarModule } from '@angular/material/progress-bar';
|
|
28
|
-
import { FlexLayoutModule } from '@angular/flex-layout';
|
|
29
28
|
import * as i3$2 from '@angular/material/card';
|
|
30
29
|
import { MatCardModule } from '@angular/material/card';
|
|
31
30
|
import { MatDividerModule } from '@angular/material/divider';
|
|
@@ -2562,6 +2561,7 @@ class AudioPlayer {
|
|
|
2562
2561
|
return this._stopAction;
|
|
2563
2562
|
}
|
|
2564
2563
|
set audioClip(audioClip) {
|
|
2564
|
+
this._audioClip = audioClip;
|
|
2565
2565
|
let length = 0;
|
|
2566
2566
|
let chs = 0;
|
|
2567
2567
|
if (audioClip && audioClip.audioDataHolder) {
|
|
@@ -2584,7 +2584,6 @@ class AudioPlayer {
|
|
|
2584
2584
|
else {
|
|
2585
2585
|
this.audioSource = null;
|
|
2586
2586
|
}
|
|
2587
|
-
this._audioClip = audioClip;
|
|
2588
2587
|
}
|
|
2589
2588
|
get audioSource() {
|
|
2590
2589
|
return this._audioSource;
|
|
@@ -7846,6 +7845,26 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImpo
|
|
|
7846
7845
|
type: Input
|
|
7847
7846
|
}] } });
|
|
7848
7847
|
|
|
7848
|
+
class ResponsiveComponent {
|
|
7849
|
+
constructor(breakpointObserver) {
|
|
7850
|
+
this.breakpointObserver = breakpointObserver;
|
|
7851
|
+
this.screenXs = false;
|
|
7852
|
+
breakpointObserver
|
|
7853
|
+
.observe([
|
|
7854
|
+
Breakpoints.XSmall
|
|
7855
|
+
])
|
|
7856
|
+
.subscribe(result => {
|
|
7857
|
+
this.screenXs = (result.matches);
|
|
7858
|
+
//console.debug("Screen XS: "+this.screenXs);
|
|
7859
|
+
});
|
|
7860
|
+
}
|
|
7861
|
+
}
|
|
7862
|
+
ResponsiveComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: ResponsiveComponent, deps: [{ token: i1$3.BreakpointObserver }], target: i0.ɵɵFactoryTarget.Directive });
|
|
7863
|
+
ResponsiveComponent.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "14.2.12", type: ResponsiveComponent, ngImport: i0 });
|
|
7864
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: ResponsiveComponent, decorators: [{
|
|
7865
|
+
type: Directive
|
|
7866
|
+
}], ctorParameters: function () { return [{ type: i1$3.BreakpointObserver }]; } });
|
|
7867
|
+
|
|
7849
7868
|
class ScrollIntoViewDirective {
|
|
7850
7869
|
constructor(elRef) {
|
|
7851
7870
|
this.elRef = elRef;
|
|
@@ -8500,8 +8519,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImpo
|
|
|
8500
8519
|
type: HostListener,
|
|
8501
8520
|
args: ['touchcancel', ['$event']]
|
|
8502
8521
|
}] } });
|
|
8503
|
-
class Prompting {
|
|
8504
|
-
constructor() {
|
|
8522
|
+
class Prompting extends ResponsiveComponent {
|
|
8523
|
+
constructor(bpo) {
|
|
8524
|
+
super(bpo);
|
|
8525
|
+
this.bpo = bpo;
|
|
8505
8526
|
this.promptItem = null;
|
|
8506
8527
|
this.showPrompt = false;
|
|
8507
8528
|
this.items = undefined;
|
|
@@ -8522,16 +8543,16 @@ class Prompting {
|
|
|
8522
8543
|
this.onPrevItem.emit();
|
|
8523
8544
|
}
|
|
8524
8545
|
}
|
|
8525
|
-
Prompting.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: Prompting, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
8526
|
-
Prompting.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.12", type: Prompting, selector: "app-sprprompting", inputs: { projectName: "projectName", startStopSignalState: "startStopSignalState", promptItem: "promptItem", showPrompt: "showPrompt", items: "items", selectedItemIdx: "selectedItemIdx", transportActions: "transportActions", enableDownload: "enableDownload", audioSignalCollapsed: "audioSignalCollapsed", displayAudioClip: "displayAudioClip", playStartAction: "playStartAction", playSelectionAction: "playSelectionAction", autoPlayOnSelectToggleAction: "autoPlayOnSelectToggleAction", playStopAction: "playStopAction" }, outputs: { onItemSelect: "onItemSelect", onNextItem: "onNextItem", onPrevItem: "onPrevItem" }, viewQueries: [{ propertyName: "simpleTrafficLight", first: true, predicate: SimpleTrafficLight, descendants: true, static: true }, { propertyName: "audioDisplay", first: true, predicate: AudioDisplay, descendants: true, static: true }], ngImport: i0, template: `
|
|
8546
|
+
Prompting.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: Prompting, deps: [{ token: i1$3.BreakpointObserver }], target: i0.ɵɵFactoryTarget.Component });
|
|
8547
|
+
Prompting.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.12", type: Prompting, selector: "app-sprprompting", inputs: { projectName: "projectName", startStopSignalState: "startStopSignalState", promptItem: "promptItem", showPrompt: "showPrompt", items: "items", selectedItemIdx: "selectedItemIdx", transportActions: "transportActions", enableDownload: "enableDownload", audioSignalCollapsed: "audioSignalCollapsed", displayAudioClip: "displayAudioClip", playStartAction: "playStartAction", playSelectionAction: "playSelectionAction", autoPlayOnSelectToggleAction: "autoPlayOnSelectToggleAction", playStopAction: "playStopAction" }, outputs: { onItemSelect: "onItemSelect", onNextItem: "onNextItem", onPrevItem: "onPrevItem" }, viewQueries: [{ propertyName: "simpleTrafficLight", first: true, predicate: SimpleTrafficLight, descendants: true, static: true }, { propertyName: "audioDisplay", first: true, predicate: AudioDisplay, descendants: true, static: true }], usesInheritance: true, ngImport: i0, template: `
|
|
8527
8548
|
|
|
8528
8549
|
<app-simpletrafficlight [status]="startStopSignalState"></app-simpletrafficlight>
|
|
8529
8550
|
<app-sprpromptingcontainer [projectName]="projectName" [promptItem]="promptItem" [showPrompt]="showPrompt"
|
|
8530
8551
|
[itemCount]="items?.length" [selectedItemIdx]="selectedItemIdx"
|
|
8531
8552
|
[transportActions]="transportActions"></app-sprpromptingcontainer>
|
|
8532
|
-
<app-sprprogress
|
|
8553
|
+
<app-sprprogress *ngIf="!screenXs" [items]="items" [selectedItemIdx]="selectedItemIdx"
|
|
8533
8554
|
(onRowSelect)="itemSelect($event)"></app-sprprogress>
|
|
8534
|
-
<div
|
|
8555
|
+
<div #asCt [class.active]="!audioSignalCollapsed && !screenXs">
|
|
8535
8556
|
|
|
8536
8557
|
<app-audiodisplay #audioSignalContainer [class.active]="!audioSignalCollapsed"
|
|
8537
8558
|
[audioClip]="displayAudioClip"
|
|
@@ -8545,7 +8566,7 @@ Prompting.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14
|
|
|
8545
8566
|
|
|
8546
8567
|
|
|
8547
8568
|
|
|
8548
|
-
`, isInline: true, styles: [":host{position:relative;margin:0;padding:0;background:lightgrey;width:100%;flex:1;min-height:0px;display:flex;flex-direction:row;flex-wrap:nowrap}\n", "app-simpletrafficlight{margin:10px;min-height:0px;z-index:3}\n", "app-sprprogress{z-index:3}\n", "div{display:none;position:absolute;z-index:5}\n", "div.active{display:flex;position:absolute;bottom:0px;height:90%;width:100%;overflow:hidden;padding:0;z-index:5;box-sizing:border-box;background-color:#0000}\n"], dependencies: [{ kind: "directive", type: i1$
|
|
8569
|
+
`, isInline: true, styles: [":host{position:relative;margin:0;padding:0;background:lightgrey;width:100%;flex:1;min-height:0px;display:flex;flex-direction:row;flex-wrap:nowrap}\n", "app-simpletrafficlight{margin:10px;min-height:0px;z-index:3}\n", "app-sprprogress{z-index:3}\n", "div{display:none;position:absolute;z-index:5}\n", "div.active{display:flex;position:absolute;bottom:0px;height:90%;width:100%;overflow:hidden;padding:0;z-index:5;box-sizing:border-box;background-color:#0000}\n"], dependencies: [{ kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: AudioDisplay, selector: "app-audiodisplay", inputs: ["playStartAction", "playStopAction", "playSelectionAction", "autoPlayOnSelectToggleAction", "audioData", "audioClip"] }, { kind: "component", type: Progress, selector: "app-sprprogress", inputs: ["items", "selectedItemIdx", "enableDownload"], outputs: ["onRowSelect", "rowSelect", "onShowDoneAction", "clickDone", "onDownloadDoneAction", "clickDownloadDone"] }, { kind: "component", type: SimpleTrafficLight, selector: "app-simpletrafficlight", inputs: ["status"] }, { kind: "component", type: PromptingContainer, selector: "app-sprpromptingcontainer", inputs: ["projectName", "promptItem", "showPrompt", "selectedItemIdx", "itemCount", "transportActions"] }] });
|
|
8549
8570
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: Prompting, decorators: [{
|
|
8550
8571
|
type: Component,
|
|
8551
8572
|
args: [{ selector: 'app-sprprompting', template: `
|
|
@@ -8554,9 +8575,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImpo
|
|
|
8554
8575
|
<app-sprpromptingcontainer [projectName]="projectName" [promptItem]="promptItem" [showPrompt]="showPrompt"
|
|
8555
8576
|
[itemCount]="items?.length" [selectedItemIdx]="selectedItemIdx"
|
|
8556
8577
|
[transportActions]="transportActions"></app-sprpromptingcontainer>
|
|
8557
|
-
<app-sprprogress
|
|
8578
|
+
<app-sprprogress *ngIf="!screenXs" [items]="items" [selectedItemIdx]="selectedItemIdx"
|
|
8558
8579
|
(onRowSelect)="itemSelect($event)"></app-sprprogress>
|
|
8559
|
-
<div
|
|
8580
|
+
<div #asCt [class.active]="!audioSignalCollapsed && !screenXs">
|
|
8560
8581
|
|
|
8561
8582
|
<app-audiodisplay #audioSignalContainer [class.active]="!audioSignalCollapsed"
|
|
8562
8583
|
[audioClip]="displayAudioClip"
|
|
@@ -8571,7 +8592,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImpo
|
|
|
8571
8592
|
|
|
8572
8593
|
|
|
8573
8594
|
`, styles: [":host{position:relative;margin:0;padding:0;background:lightgrey;width:100%;flex:1;min-height:0px;display:flex;flex-direction:row;flex-wrap:nowrap}\n", "app-simpletrafficlight{margin:10px;min-height:0px;z-index:3}\n", "app-sprprogress{z-index:3}\n", "div{display:none;position:absolute;z-index:5}\n", "div.active{display:flex;position:absolute;bottom:0px;height:90%;width:100%;overflow:hidden;padding:0;z-index:5;box-sizing:border-box;background-color:#0000}\n"] }]
|
|
8574
|
-
}], propDecorators: { simpleTrafficLight: [{
|
|
8595
|
+
}], ctorParameters: function () { return [{ type: i1$3.BreakpointObserver }]; }, propDecorators: { simpleTrafficLight: [{
|
|
8575
8596
|
type: ViewChild,
|
|
8576
8597
|
args: [SimpleTrafficLight, { static: true }]
|
|
8577
8598
|
}], audioDisplay: [{
|
|
@@ -10570,6 +10591,7 @@ class UploadStatus {
|
|
|
10570
10591
|
constructor() {
|
|
10571
10592
|
this._awaitNewUpload = false;
|
|
10572
10593
|
this.spinnerMode = 'determinate';
|
|
10594
|
+
this._colorStatus = 'primary';
|
|
10573
10595
|
this._value = 100;
|
|
10574
10596
|
this.displayValue = null;
|
|
10575
10597
|
this.toolTipText = '';
|
|
@@ -10607,6 +10629,15 @@ class UploadStatus {
|
|
|
10607
10629
|
}
|
|
10608
10630
|
set status(status) {
|
|
10609
10631
|
this._status = status;
|
|
10632
|
+
if ('accent' === status) {
|
|
10633
|
+
this._colorStatus = 'accent';
|
|
10634
|
+
}
|
|
10635
|
+
else if ('warn' === status) {
|
|
10636
|
+
this._colorStatus = 'warn';
|
|
10637
|
+
}
|
|
10638
|
+
else {
|
|
10639
|
+
this._colorStatus = 'primary';
|
|
10640
|
+
}
|
|
10610
10641
|
this._updateSpinner();
|
|
10611
10642
|
}
|
|
10612
10643
|
get status() {
|
|
@@ -10655,8 +10686,9 @@ class TransportActions {
|
|
|
10655
10686
|
this.bwdAction = new Action('Backward');
|
|
10656
10687
|
}
|
|
10657
10688
|
}
|
|
10658
|
-
class TransportPanel {
|
|
10659
|
-
constructor() {
|
|
10689
|
+
class TransportPanel extends ResponsiveComponent {
|
|
10690
|
+
constructor(breakpointObserver) {
|
|
10691
|
+
super(breakpointObserver);
|
|
10660
10692
|
this.navigationEnabled = true;
|
|
10661
10693
|
this.pausingEnabled = true;
|
|
10662
10694
|
}
|
|
@@ -10728,28 +10760,28 @@ class TransportPanel {
|
|
|
10728
10760
|
}
|
|
10729
10761
|
}
|
|
10730
10762
|
}
|
|
10731
|
-
TransportPanel.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: TransportPanel, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
10732
|
-
TransportPanel.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.12", type: TransportPanel, selector: "app-sprtransport", inputs: { readonly: "readonly", actions: "actions", navigationEnabled: "navigationEnabled", pausingEnabled: "pausingEnabled" }, ngImport: i0, template: `
|
|
10763
|
+
TransportPanel.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: TransportPanel, deps: [{ token: i1$3.BreakpointObserver }], target: i0.ɵɵFactoryTarget.Component });
|
|
10764
|
+
TransportPanel.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.12", type: TransportPanel, selector: "app-sprtransport", inputs: { readonly: "readonly", actions: "actions", navigationEnabled: "navigationEnabled", pausingEnabled: "pausingEnabled" }, usesInheritance: true, ngImport: i0, template: `
|
|
10733
10765
|
<button id="bwdBtn" *ngIf="navigationEnabled" (click)="actions.bwdAction.perform()" [disabled]="bwdDisabled()"
|
|
10734
10766
|
mat-raised-button>
|
|
10735
10767
|
<mat-icon>chevron_left</mat-icon>
|
|
10736
10768
|
</button>
|
|
10737
10769
|
<button (click)="startStopNextPerform()" [disabled]="startDisabled() && stopDisabled() && nextDisabled()" mat-raised-button>
|
|
10738
10770
|
<mat-icon [style.color]="startStopNextIconColor()">{{startStopNextIconName()}}</mat-icon><mat-icon *ngIf="!nextDisabled()" [style.color]="nextDisabled() ? 'grey' : 'black'">chevron_right</mat-icon>
|
|
10739
|
-
<span
|
|
10771
|
+
<span *ngIf="!screenXs">{{startStopNextName()}}</span>
|
|
10740
10772
|
</button>
|
|
10741
10773
|
<button *ngIf="pausingEnabled" (click)="actions.pauseAction.perform()" [disabled]="pauseDisabled()" mat-raised-button>
|
|
10742
10774
|
<mat-icon>pause</mat-icon>
|
|
10743
|
-
<span
|
|
10775
|
+
<span *ngIf="!screenXs">Pause</span>
|
|
10744
10776
|
</button>
|
|
10745
|
-
<button id="fwdNextBtn" *ngIf="navigationEnabled"
|
|
10777
|
+
<button id="fwdNextBtn" *ngIf="navigationEnabled && !screenXs" (click)="actions.fwdNextAction.perform()" [disabled]="fwdNextDisabled()" mat-raised-button>
|
|
10746
10778
|
<mat-icon>redo</mat-icon>
|
|
10747
10779
|
</button>
|
|
10748
10780
|
<button id="fwdBtn" *ngIf="navigationEnabled" (click)="actions.fwdAction.perform()" [disabled]="fwdDisabled()" mat-raised-button>
|
|
10749
10781
|
<mat-icon>chevron_right</mat-icon>
|
|
10750
10782
|
</button>
|
|
10751
10783
|
|
|
10752
|
-
`, isInline: true, styles: [":host{flex:20;align-self:center;width:100%;text-align:center;align-content:center;margin:0}\n", "div{display:inline;flex:0}\n", "button{touch-action:manipulation}\n"], dependencies: [{ kind: "directive", type: i1$
|
|
10784
|
+
`, isInline: true, styles: [":host{flex:20;align-self:center;width:100%;text-align:center;align-content:center;margin:0}\n", "div{display:inline;flex:0}\n", "button{touch-action:manipulation}\n"], dependencies: [{ kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i3.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }] });
|
|
10753
10785
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: TransportPanel, decorators: [{
|
|
10754
10786
|
type: Component,
|
|
10755
10787
|
args: [{ selector: 'app-sprtransport', template: `
|
|
@@ -10759,13 +10791,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImpo
|
|
|
10759
10791
|
</button>
|
|
10760
10792
|
<button (click)="startStopNextPerform()" [disabled]="startDisabled() && stopDisabled() && nextDisabled()" mat-raised-button>
|
|
10761
10793
|
<mat-icon [style.color]="startStopNextIconColor()">{{startStopNextIconName()}}</mat-icon><mat-icon *ngIf="!nextDisabled()" [style.color]="nextDisabled() ? 'grey' : 'black'">chevron_right</mat-icon>
|
|
10762
|
-
<span
|
|
10794
|
+
<span *ngIf="!screenXs">{{startStopNextName()}}</span>
|
|
10763
10795
|
</button>
|
|
10764
10796
|
<button *ngIf="pausingEnabled" (click)="actions.pauseAction.perform()" [disabled]="pauseDisabled()" mat-raised-button>
|
|
10765
10797
|
<mat-icon>pause</mat-icon>
|
|
10766
|
-
<span
|
|
10798
|
+
<span *ngIf="!screenXs">Pause</span>
|
|
10767
10799
|
</button>
|
|
10768
|
-
<button id="fwdNextBtn" *ngIf="navigationEnabled"
|
|
10800
|
+
<button id="fwdNextBtn" *ngIf="navigationEnabled && !screenXs" (click)="actions.fwdNextAction.perform()" [disabled]="fwdNextDisabled()" mat-raised-button>
|
|
10769
10801
|
<mat-icon>redo</mat-icon>
|
|
10770
10802
|
</button>
|
|
10771
10803
|
<button id="fwdBtn" *ngIf="navigationEnabled" (click)="actions.fwdAction.perform()" [disabled]="fwdDisabled()" mat-raised-button>
|
|
@@ -10773,7 +10805,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImpo
|
|
|
10773
10805
|
</button>
|
|
10774
10806
|
|
|
10775
10807
|
`, styles: [":host{flex:20;align-self:center;width:100%;text-align:center;align-content:center;margin:0}\n", "div{display:inline;flex:0}\n", "button{touch-action:manipulation}\n"] }]
|
|
10776
|
-
}], propDecorators: { readonly: [{
|
|
10808
|
+
}], ctorParameters: function () { return [{ type: i1$3.BreakpointObserver }]; }, propDecorators: { readonly: [{
|
|
10777
10809
|
type: Input
|
|
10778
10810
|
}], actions: [{
|
|
10779
10811
|
type: Input
|
|
@@ -10829,8 +10861,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImpo
|
|
|
10829
10861
|
}], ctorParameters: function () { return []; }, propDecorators: { ready: [{
|
|
10830
10862
|
type: Input
|
|
10831
10863
|
}] } });
|
|
10832
|
-
class ControlPanel {
|
|
10833
|
-
constructor(dialog) {
|
|
10864
|
+
class ControlPanel extends ResponsiveComponent {
|
|
10865
|
+
constructor(bpo, dialog) {
|
|
10866
|
+
super(bpo);
|
|
10867
|
+
this.bpo = bpo;
|
|
10834
10868
|
this.dialog = dialog;
|
|
10835
10869
|
this.processing = false;
|
|
10836
10870
|
this.navigationEnabled = true;
|
|
@@ -10843,44 +10877,44 @@ class ControlPanel {
|
|
|
10843
10877
|
return this._ready;
|
|
10844
10878
|
}
|
|
10845
10879
|
}
|
|
10846
|
-
ControlPanel.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: ControlPanel, deps: [{ token: i1$4.MatDialog }], target: i0.ɵɵFactoryTarget.Component });
|
|
10847
|
-
ControlPanel.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.12", type: ControlPanel, selector: "app-sprcontrolpanel", inputs: { readonly: "readonly", transportActions: "transportActions", processing: "processing", statusMsg: "statusMsg", statusAlertType: "statusAlertType", statusWaiting: "statusWaiting", uploadStatus: "uploadStatus", uploadProgress: "uploadProgress", currentRecording: "currentRecording", enableUploadRecordings: "enableUploadRecordings", navigationEnabled: "navigationEnabled", ready: "ready" }, viewQueries: [{ propertyName: "statusDisplay", first: true, predicate: StatusDisplay, descendants: true, static: true }, { propertyName: "transportPanel", first: true, predicate: TransportPanel, descendants: true, static: true }], ngImport: i0, template: `
|
|
10848
|
-
<div
|
|
10849
|
-
<app-sprstatusdisplay
|
|
10880
|
+
ControlPanel.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: ControlPanel, deps: [{ token: i1$3.BreakpointObserver }, { token: i1$4.MatDialog }], target: i0.ɵɵFactoryTarget.Component });
|
|
10881
|
+
ControlPanel.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.12", type: ControlPanel, selector: "app-sprcontrolpanel", inputs: { readonly: "readonly", transportActions: "transportActions", processing: "processing", statusMsg: "statusMsg", statusAlertType: "statusAlertType", statusWaiting: "statusWaiting", uploadStatus: "uploadStatus", uploadProgress: "uploadProgress", currentRecording: "currentRecording", enableUploadRecordings: "enableUploadRecordings", navigationEnabled: "navigationEnabled", ready: "ready" }, viewQueries: [{ propertyName: "statusDisplay", first: true, predicate: StatusDisplay, descendants: true, static: true }, { propertyName: "transportPanel", first: true, predicate: TransportPanel, descendants: true, static: true }], usesInheritance: true, ngImport: i0, template: `
|
|
10882
|
+
<div *ngIf="!screenXs" style="flex-direction: row" >
|
|
10883
|
+
<app-sprstatusdisplay style="flex:0 0 0" [statusMsg]="statusMsg" [statusAlertType]="statusAlertType" [statusWaiting]="statusWaiting"
|
|
10850
10884
|
class="hidden-xs"></app-sprstatusdisplay>
|
|
10851
|
-
<app-sprtransport
|
|
10852
|
-
<app-uploadstatus
|
|
10885
|
+
<app-sprtransport style="flex:10 0 0" [readonly]="readonly" [actions]="transportActions" [navigationEnabled]="navigationEnabled"></app-sprtransport>
|
|
10886
|
+
<app-uploadstatus style="flex:0 0 0" *ngIf="enableUploadRecordings" [value]="uploadProgress"
|
|
10853
10887
|
[status]="uploadStatus" [awaitNewUpload]="processing"></app-uploadstatus>
|
|
10854
10888
|
<app-readystateindicator [ready]="_ready"></app-readystateindicator>
|
|
10855
10889
|
</div>
|
|
10856
|
-
<div
|
|
10857
|
-
<div
|
|
10858
|
-
<app-sprstatusdisplay
|
|
10890
|
+
<div *ngIf="screenXs"style="flex-direction: column" >
|
|
10891
|
+
<div style="flex-direction: row" class="flexFill" >
|
|
10892
|
+
<app-sprstatusdisplay style="flex:10 0 0;flex-align:left" [statusMsg]="statusMsg" [statusAlertType]="statusAlertType" [statusWaiting]="statusWaiting"
|
|
10859
10893
|
class="hidden-xs"></app-sprstatusdisplay>
|
|
10860
|
-
<app-uploadstatus
|
|
10894
|
+
<app-uploadstatus style="flex:0 0 0" *ngIf="enableUploadRecordings" [value]="uploadProgress"
|
|
10861
10895
|
[status]="uploadStatus" [awaitNewUpload]="processing"></app-uploadstatus>
|
|
10862
10896
|
<app-readystateindicator [ready]="_ready"></app-readystateindicator>
|
|
10863
10897
|
</div>
|
|
10864
10898
|
<app-sprtransport [readonly]="readonly" [actions]="transportActions" [navigationEnabled]="navigationEnabled"></app-sprtransport>
|
|
10865
10899
|
|
|
10866
10900
|
</div>
|
|
10867
|
-
`, isInline: true, styles: ["div{align-content:center;align-items:center;margin:0;padding:20px;min-height:min-content}\n"], dependencies: [{ kind: "directive", type:
|
|
10901
|
+
`, isInline: true, styles: ["div{align-content:center;align-items:center;margin:0;padding:20px;min-height:min-content}\n"], dependencies: [{ kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: StatusDisplay, selector: "app-sprstatusdisplay", inputs: ["statusAlertType", "statusMsg", "statusWaiting"] }, { kind: "component", type: UploadStatus, selector: "app-uploadstatus", inputs: ["value", "awaitNewUpload", "status"] }, { kind: "component", type: TransportPanel, selector: "app-sprtransport", inputs: ["readonly", "actions", "navigationEnabled", "pausingEnabled"] }, { kind: "component", type: ReadyStateIndicator, selector: "app-readystateindicator", inputs: ["ready"] }] });
|
|
10868
10902
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: ControlPanel, decorators: [{
|
|
10869
10903
|
type: Component,
|
|
10870
10904
|
args: [{ selector: 'app-sprcontrolpanel', template: `
|
|
10871
|
-
<div
|
|
10872
|
-
<app-sprstatusdisplay
|
|
10905
|
+
<div *ngIf="!screenXs" style="flex-direction: row" >
|
|
10906
|
+
<app-sprstatusdisplay style="flex:0 0 0" [statusMsg]="statusMsg" [statusAlertType]="statusAlertType" [statusWaiting]="statusWaiting"
|
|
10873
10907
|
class="hidden-xs"></app-sprstatusdisplay>
|
|
10874
|
-
<app-sprtransport
|
|
10875
|
-
<app-uploadstatus
|
|
10908
|
+
<app-sprtransport style="flex:10 0 0" [readonly]="readonly" [actions]="transportActions" [navigationEnabled]="navigationEnabled"></app-sprtransport>
|
|
10909
|
+
<app-uploadstatus style="flex:0 0 0" *ngIf="enableUploadRecordings" [value]="uploadProgress"
|
|
10876
10910
|
[status]="uploadStatus" [awaitNewUpload]="processing"></app-uploadstatus>
|
|
10877
10911
|
<app-readystateindicator [ready]="_ready"></app-readystateindicator>
|
|
10878
10912
|
</div>
|
|
10879
|
-
<div
|
|
10880
|
-
<div
|
|
10881
|
-
<app-sprstatusdisplay
|
|
10913
|
+
<div *ngIf="screenXs"style="flex-direction: column" >
|
|
10914
|
+
<div style="flex-direction: row" class="flexFill" >
|
|
10915
|
+
<app-sprstatusdisplay style="flex:10 0 0;flex-align:left" [statusMsg]="statusMsg" [statusAlertType]="statusAlertType" [statusWaiting]="statusWaiting"
|
|
10882
10916
|
class="hidden-xs"></app-sprstatusdisplay>
|
|
10883
|
-
<app-uploadstatus
|
|
10917
|
+
<app-uploadstatus style="flex:0 0 0" *ngIf="enableUploadRecordings" [value]="uploadProgress"
|
|
10884
10918
|
[status]="uploadStatus" [awaitNewUpload]="processing"></app-uploadstatus>
|
|
10885
10919
|
<app-readystateindicator [ready]="_ready"></app-readystateindicator>
|
|
10886
10920
|
</div>
|
|
@@ -10888,7 +10922,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImpo
|
|
|
10888
10922
|
|
|
10889
10923
|
</div>
|
|
10890
10924
|
`, styles: ["div{align-content:center;align-items:center;margin:0;padding:20px;min-height:min-content}\n"] }]
|
|
10891
|
-
}], ctorParameters: function () { return [{ type: i1$4.MatDialog }]; }, propDecorators: { statusDisplay: [{
|
|
10925
|
+
}], ctorParameters: function () { return [{ type: i1$3.BreakpointObserver }, { type: i1$4.MatDialog }]; }, propDecorators: { statusDisplay: [{
|
|
10892
10926
|
type: ViewChild,
|
|
10893
10927
|
args: [StatusDisplay, { static: true }]
|
|
10894
10928
|
}], transportPanel: [{
|
|
@@ -11487,8 +11521,10 @@ class StreamLevelMeasure {
|
|
|
11487
11521
|
|
|
11488
11522
|
const MIN_DB_LEVEL = -40.0;
|
|
11489
11523
|
const DEFAULT_WARN_DB_LEVEL = -2;
|
|
11490
|
-
class RecordingItemControls {
|
|
11491
|
-
constructor(ref, changeDetectorRef) {
|
|
11524
|
+
class RecordingItemControls extends ResponsiveComponent {
|
|
11525
|
+
constructor(bpo, ref, changeDetectorRef) {
|
|
11526
|
+
super(bpo);
|
|
11527
|
+
this.bpo = bpo;
|
|
11492
11528
|
this.ref = ref;
|
|
11493
11529
|
this.changeDetectorRef = changeDetectorRef;
|
|
11494
11530
|
this.ce = null;
|
|
@@ -11541,8 +11577,8 @@ class RecordingItemControls {
|
|
|
11541
11577
|
// this.status = 'ERROR';
|
|
11542
11578
|
}
|
|
11543
11579
|
}
|
|
11544
|
-
RecordingItemControls.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: RecordingItemControls, deps: [{ token: i0.ElementRef }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
|
|
11545
|
-
RecordingItemControls.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.12", type: RecordingItemControls, selector: "spr-recordingitemcontrols", inputs: { audioSignalCollapsed: "audioSignalCollapsed", enableDownload: "enableDownload", peakDbLvl: "peakDbLvl", agc: "agc", disableAudioDetails: "disableAudioDetails", audioLoaded: "audioLoaded", playStartAction: "playStartAction", playStopAction: "playStopAction", displayLevelInfos: "displayLevelInfos" }, outputs: { onShowRecordingDetails: "onShowRecordingDetails", onDownloadRecording: "onDownloadRecording" }, ngImport: i0, template: `
|
|
11580
|
+
RecordingItemControls.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: RecordingItemControls, deps: [{ token: i1$3.BreakpointObserver }, { token: i0.ElementRef }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
|
|
11581
|
+
RecordingItemControls.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.12", type: RecordingItemControls, selector: "spr-recordingitemcontrols", inputs: { audioSignalCollapsed: "audioSignalCollapsed", enableDownload: "enableDownload", peakDbLvl: "peakDbLvl", agc: "agc", disableAudioDetails: "disableAudioDetails", audioLoaded: "audioLoaded", playStartAction: "playStartAction", playStopAction: "playStopAction", displayLevelInfos: "displayLevelInfos" }, outputs: { onShowRecordingDetails: "onShowRecordingDetails", onDownloadRecording: "onDownloadRecording" }, usesInheritance: true, ngImport: i0, template: `
|
|
11546
11582
|
<button matTooltip="Start playback" (click)="playStartAction?.perform()"
|
|
11547
11583
|
[disabled]="playStartAction?.disabled"
|
|
11548
11584
|
[style.color]="playStartAction?.disabled ? 'grey' : 'green'">
|
|
@@ -11553,7 +11589,7 @@ RecordingItemControls.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0",
|
|
|
11553
11589
|
[style.color]="playStopAction?.disabled ? 'grey' : 'yellow'">
|
|
11554
11590
|
<mat-icon>stop</mat-icon>
|
|
11555
11591
|
</button>
|
|
11556
|
-
<button
|
|
11592
|
+
<button *ngIf="!screenXs" matTooltip="Toggle detailed audio display" [disabled]="disableAudioDetails || !audioLoaded"
|
|
11557
11593
|
(click)="showRecordingDetails()">
|
|
11558
11594
|
<mat-icon>{{(audioSignalCollapsed) ? "expand_less" : "expand_more"}}</mat-icon>
|
|
11559
11595
|
</button>
|
|
@@ -11564,7 +11600,7 @@ RecordingItemControls.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0",
|
|
|
11564
11600
|
<div style="min-width: 14ch;padding:2px"><table style="border-style: none"><tr><td>Peak:</td><td><span matTooltip="Peak level"
|
|
11565
11601
|
[style.color]="(peakDbLvl > warnDbLevel)?'red':'black'">{{peakDbLvl | number:'1.1-1'}} dB </span></td></tr>
|
|
11566
11602
|
<tr *ngIf="_agc"><td>AGC:</td><td><span matTooltip="Auto gain control">{{agcString}}</span></td></tr></table></div>
|
|
11567
|
-
`, isInline: true, styles: [":host{flex:0;width:100%;background:darkgray;padding:4px;box-sizing:border-box;height:100%;display:flex;flex-direction:row;flex-wrap:nowrap}\n", "span{flex:0;font-weight:700;display:inline-block;white-space:nowrap;box-sizing:border-box}\n", "button{touch-action:manipulation}\n"], dependencies: [{ kind: "directive", type: i1$
|
|
11603
|
+
`, isInline: true, styles: [":host{flex:0;width:100%;background:darkgray;padding:4px;box-sizing:border-box;height:100%;display:flex;flex-direction:row;flex-wrap:nowrap}\n", "span{flex:0;font-weight:700;display:inline-block;white-space:nowrap;box-sizing:border-box}\n", "button{touch-action:manipulation}\n"], dependencies: [{ kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i4.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }, { kind: "pipe", type: i1$1.DecimalPipe, name: "number" }] });
|
|
11568
11604
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: RecordingItemControls, decorators: [{
|
|
11569
11605
|
type: Component,
|
|
11570
11606
|
args: [{ selector: 'spr-recordingitemcontrols', template: `
|
|
@@ -11578,7 +11614,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImpo
|
|
|
11578
11614
|
[style.color]="playStopAction?.disabled ? 'grey' : 'yellow'">
|
|
11579
11615
|
<mat-icon>stop</mat-icon>
|
|
11580
11616
|
</button>
|
|
11581
|
-
<button
|
|
11617
|
+
<button *ngIf="!screenXs" matTooltip="Toggle detailed audio display" [disabled]="disableAudioDetails || !audioLoaded"
|
|
11582
11618
|
(click)="showRecordingDetails()">
|
|
11583
11619
|
<mat-icon>{{(audioSignalCollapsed) ? "expand_less" : "expand_more"}}</mat-icon>
|
|
11584
11620
|
</button>
|
|
@@ -11590,7 +11626,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImpo
|
|
|
11590
11626
|
[style.color]="(peakDbLvl > warnDbLevel)?'red':'black'">{{peakDbLvl | number:'1.1-1'}} dB </span></td></tr>
|
|
11591
11627
|
<tr *ngIf="_agc"><td>AGC:</td><td><span matTooltip="Auto gain control">{{agcString}}</span></td></tr></table></div>
|
|
11592
11628
|
`, styles: [":host{flex:0;width:100%;background:darkgray;padding:4px;box-sizing:border-box;height:100%;display:flex;flex-direction:row;flex-wrap:nowrap}\n", "span{flex:0;font-weight:700;display:inline-block;white-space:nowrap;box-sizing:border-box}\n", "button{touch-action:manipulation}\n"] }]
|
|
11593
|
-
}], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { audioSignalCollapsed: [{
|
|
11629
|
+
}], ctorParameters: function () { return [{ type: i1$3.BreakpointObserver }, { type: i0.ElementRef }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { audioSignalCollapsed: [{
|
|
11594
11630
|
type: Input
|
|
11595
11631
|
}], enableDownload: [{
|
|
11596
11632
|
type: Input
|
|
@@ -11613,8 +11649,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImpo
|
|
|
11613
11649
|
}], displayLevelInfos: [{
|
|
11614
11650
|
type: Input
|
|
11615
11651
|
}] } });
|
|
11616
|
-
class RecordingItemDisplay {
|
|
11617
|
-
constructor(ref, changeDetectorRef) {
|
|
11652
|
+
class RecordingItemDisplay extends ResponsiveComponent {
|
|
11653
|
+
constructor(bpo, ref, changeDetectorRef) {
|
|
11654
|
+
super(bpo);
|
|
11655
|
+
this.bpo = bpo;
|
|
11618
11656
|
this.ref = ref;
|
|
11619
11657
|
this.changeDetectorRef = changeDetectorRef;
|
|
11620
11658
|
this.ce = null;
|
|
@@ -11685,22 +11723,22 @@ class RecordingItemDisplay {
|
|
|
11685
11723
|
this.changeDetectorRef.detectChanges();
|
|
11686
11724
|
}
|
|
11687
11725
|
}
|
|
11688
|
-
RecordingItemDisplay.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: RecordingItemDisplay, deps: [{ token: i0.ElementRef }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
|
|
11689
|
-
RecordingItemDisplay.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.12", type: RecordingItemDisplay, selector: "spr-recordingitemdisplay", inputs: { streamingMode: "streamingMode", audioSignalCollapsed: "audioSignalCollapsed", enableDownload: "enableDownload", agc: "agc", playStartAction: "playStartAction", playStopAction: "playStopAction", displayAudioBuffer: "displayAudioBuffer", displayLevelInfos: "displayLevelInfos" }, outputs: { onShowRecordingDetails: "onShowRecordingDetails", onDownloadRecording: "onDownloadRecording" }, viewQueries: [{ propertyName: "liveLevel", first: true, predicate: LevelBar, descendants: true, static: true }], ngImport: i0, template: `
|
|
11690
|
-
<div
|
|
11691
|
-
<audio-levelbar
|
|
11692
|
-
<spr-recordingitemcontrols
|
|
11726
|
+
RecordingItemDisplay.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: RecordingItemDisplay, deps: [{ token: i1$3.BreakpointObserver }, { token: i0.ElementRef }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
|
|
11727
|
+
RecordingItemDisplay.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.12", type: RecordingItemDisplay, selector: "spr-recordingitemdisplay", inputs: { streamingMode: "streamingMode", audioSignalCollapsed: "audioSignalCollapsed", enableDownload: "enableDownload", agc: "agc", playStartAction: "playStartAction", playStopAction: "playStopAction", displayAudioBuffer: "displayAudioBuffer", displayLevelInfos: "displayLevelInfos" }, outputs: { onShowRecordingDetails: "onShowRecordingDetails", onDownloadRecording: "onDownloadRecording" }, viewQueries: [{ propertyName: "liveLevel", first: true, predicate: LevelBar, descendants: true, static: true }], usesInheritance: true, ngImport: i0, template: `
|
|
11728
|
+
<div [class]="{audioStatusDisplay:!screenXs,audioStatusDisplayXs:screenXs}">
|
|
11729
|
+
<audio-levelbar style="flex:1 0 1%" [streamingMode]="streamingMode" [displayLevelInfos]="_displayLevelInfos"></audio-levelbar>
|
|
11730
|
+
<spr-recordingitemcontrols style="flex:0 0 0px" [audioLoaded]="displayAudioBuffer!==null" [playStartAction]="playStartAction" [playStopAction]="playStopAction" [peakDbLvl]="peakDbLvl" [agc]="_agc" (onShowRecordingDetails)="onShowRecordingDetails.emit()"></spr-recordingitemcontrols>
|
|
11693
11731
|
</div>
|
|
11694
|
-
`, isInline: true, styles: ["div{width:100%;background:darkgray;padding:4px;box-sizing:border-box;flex-wrap:nowrap}\n", "audio-levelbar{box-sizing:border-box}\n"
|
|
11732
|
+
`, isInline: true, styles: ["div{width:100%;background:darkgray;padding:4px;box-sizing:border-box;flex-wrap:nowrap}\n", "audio-levelbar{box-sizing:border-box}\n", ".audioStatusDisplay{display:flex;flex-direction:row;height:100px;min-height:100px}\n", ".audioStatusDisplayXs{display:flex;flex-direction:column;height:125px;min-height:125px}\n"], dependencies: [{ kind: "component", type: LevelBar, selector: "audio-levelbar", inputs: ["streamingMode", "displayLevelInfos", "state"] }, { kind: "component", type: RecordingItemControls, selector: "spr-recordingitemcontrols", inputs: ["audioSignalCollapsed", "enableDownload", "peakDbLvl", "agc", "disableAudioDetails", "audioLoaded", "playStartAction", "playStopAction", "displayLevelInfos"], outputs: ["onShowRecordingDetails", "onDownloadRecording"] }] });
|
|
11695
11733
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: RecordingItemDisplay, decorators: [{
|
|
11696
11734
|
type: Component,
|
|
11697
11735
|
args: [{ selector: 'spr-recordingitemdisplay', template: `
|
|
11698
|
-
<div
|
|
11699
|
-
<audio-levelbar
|
|
11700
|
-
<spr-recordingitemcontrols
|
|
11736
|
+
<div [class]="{audioStatusDisplay:!screenXs,audioStatusDisplayXs:screenXs}">
|
|
11737
|
+
<audio-levelbar style="flex:1 0 1%" [streamingMode]="streamingMode" [displayLevelInfos]="_displayLevelInfos"></audio-levelbar>
|
|
11738
|
+
<spr-recordingitemcontrols style="flex:0 0 0px" [audioLoaded]="displayAudioBuffer!==null" [playStartAction]="playStartAction" [playStopAction]="playStopAction" [peakDbLvl]="peakDbLvl" [agc]="_agc" (onShowRecordingDetails)="onShowRecordingDetails.emit()"></spr-recordingitemcontrols>
|
|
11701
11739
|
</div>
|
|
11702
|
-
`, styles: ["div{width:100%;background:darkgray;padding:4px;box-sizing:border-box;flex-wrap:nowrap}\n", "audio-levelbar{box-sizing:border-box}\n"] }]
|
|
11703
|
-
}], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { liveLevel: [{
|
|
11740
|
+
`, styles: ["div{width:100%;background:darkgray;padding:4px;box-sizing:border-box;flex-wrap:nowrap}\n", "audio-levelbar{box-sizing:border-box}\n", ".audioStatusDisplay{display:flex;flex-direction:row;height:100px;min-height:100px}\n", ".audioStatusDisplayXs{display:flex;flex-direction:column;height:125px;min-height:125px}\n"] }]
|
|
11741
|
+
}], ctorParameters: function () { return [{ type: i1$3.BreakpointObserver }, { type: i0.ElementRef }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { liveLevel: [{
|
|
11704
11742
|
type: ViewChild,
|
|
11705
11743
|
args: [LevelBar, { static: true }]
|
|
11706
11744
|
}], streamingMode: [{
|
|
@@ -11983,8 +12021,10 @@ class ChunkManager {
|
|
|
11983
12021
|
return frameLen;
|
|
11984
12022
|
}
|
|
11985
12023
|
}
|
|
11986
|
-
let BasicRecorder = class BasicRecorder {
|
|
11987
|
-
constructor(changeDetectorRef, dialog, sessionService, uploader, config) {
|
|
12024
|
+
let BasicRecorder = class BasicRecorder extends ResponsiveComponent {
|
|
12025
|
+
constructor(bpo, changeDetectorRef, dialog, sessionService, uploader, config) {
|
|
12026
|
+
super(bpo);
|
|
12027
|
+
this.bpo = bpo;
|
|
11988
12028
|
this.changeDetectorRef = changeDetectorRef;
|
|
11989
12029
|
this.dialog = dialog;
|
|
11990
12030
|
this.sessionService = sessionService;
|
|
@@ -12012,6 +12052,7 @@ let BasicRecorder = class BasicRecorder {
|
|
|
12012
12052
|
this.peakLevelInDb = MIN_DB_LEVEL;
|
|
12013
12053
|
this.audioLoaded = false;
|
|
12014
12054
|
this.disableAudioDetails = false;
|
|
12055
|
+
this._controlAudioPlayer = null;
|
|
12015
12056
|
this.displayAudioClip = null;
|
|
12016
12057
|
this.audioFetchSubscription = null;
|
|
12017
12058
|
this.liveLevelDisplayState = State.READY;
|
|
@@ -12157,7 +12198,9 @@ let BasicRecorder = class BasicRecorder {
|
|
|
12157
12198
|
}
|
|
12158
12199
|
}
|
|
12159
12200
|
showRecording() {
|
|
12160
|
-
this._controlAudioPlayer
|
|
12201
|
+
if (this._controlAudioPlayer) {
|
|
12202
|
+
this._controlAudioPlayer.stop();
|
|
12203
|
+
}
|
|
12161
12204
|
if (this.calcBufferInfosSubscr) {
|
|
12162
12205
|
this.calcBufferInfosSubscr.unsubscribe();
|
|
12163
12206
|
}
|
|
@@ -12531,7 +12574,7 @@ BasicRecorder.DEFAULT_CHUNK_SIZE_SECONDS = 30;
|
|
|
12531
12574
|
// Enable only for developemnt/debug purposes of array audio buffers !!
|
|
12532
12575
|
BasicRecorder.FORCE_ARRRAY_AUDIO_BUFFER = false;
|
|
12533
12576
|
BasicRecorder = __decorate([
|
|
12534
|
-
__param(
|
|
12577
|
+
__param(5, Inject(SPEECHRECORDER_CONFIG))
|
|
12535
12578
|
], BasicRecorder);
|
|
12536
12579
|
|
|
12537
12580
|
class BasicRecFilesCache {
|
|
@@ -12779,8 +12822,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImpo
|
|
|
12779
12822
|
const DEFAULT_PRE_REC_DELAY = 1000;
|
|
12780
12823
|
const DEFAULT_POST_REC_DELAY = 500;
|
|
12781
12824
|
class SessionManager extends BasicRecorder {
|
|
12782
|
-
constructor(changeDetectorRef, renderer, dialog, sessionService, recFileService, uploader, config) {
|
|
12783
|
-
super(changeDetectorRef, dialog, sessionService, uploader, config);
|
|
12825
|
+
constructor(bpo, changeDetectorRef, renderer, dialog, sessionService, recFileService, uploader, config) {
|
|
12826
|
+
super(bpo, changeDetectorRef, dialog, sessionService, uploader, config);
|
|
12827
|
+
this.bpo = bpo;
|
|
12784
12828
|
this.renderer = renderer;
|
|
12785
12829
|
this.recFileService = recFileService;
|
|
12786
12830
|
this.enableUploadRecordings = true;
|
|
@@ -12911,7 +12955,7 @@ class SessionManager extends BasicRecorder {
|
|
|
12911
12955
|
this.transportActions.fwdAction.onAction = () => this.nextItem();
|
|
12912
12956
|
this.transportActions.fwdNextAction.onAction = () => this.nextUnrecordedItem();
|
|
12913
12957
|
this.transportActions.bwdAction.onAction = () => this.prevItem();
|
|
12914
|
-
this.playStartAction.onAction = () => this.controlAudioPlayer.start();
|
|
12958
|
+
this.playStartAction.onAction = () => { var _a; return (_a = this.controlAudioPlayer) === null || _a === void 0 ? void 0 : _a.start(); };
|
|
12915
12959
|
}
|
|
12916
12960
|
this.startStopSignalState = 4 /* OFF */;
|
|
12917
12961
|
}
|
|
@@ -13069,7 +13113,7 @@ class SessionManager extends BasicRecorder {
|
|
|
13069
13113
|
this.transportActions.fwdAction.disabled = true;
|
|
13070
13114
|
this.transportActions.fwdNextAction.disabled = true;
|
|
13071
13115
|
this.transportActions.bwdAction.disabled = true;
|
|
13072
|
-
this.
|
|
13116
|
+
this.updateDisplayRecFile(null);
|
|
13073
13117
|
this.displayRecFileVersion = 0;
|
|
13074
13118
|
this.displayAudioClip = null;
|
|
13075
13119
|
this.liveLevelDisplay.reset(true);
|
|
@@ -13167,6 +13211,9 @@ class SessionManager extends BasicRecorder {
|
|
|
13167
13211
|
}
|
|
13168
13212
|
set displayRecFile(displayRecFile) {
|
|
13169
13213
|
this._displayRecFile = displayRecFile;
|
|
13214
|
+
}
|
|
13215
|
+
updateDisplayRecFile(displayRecFile, fetchAndApplyRecordingFile = true) {
|
|
13216
|
+
this.displayRecFile = displayRecFile;
|
|
13170
13217
|
if (this._displayRecFile) {
|
|
13171
13218
|
if (this.items) {
|
|
13172
13219
|
this.items.currentRecordingFile = this._displayRecFile;
|
|
@@ -13174,7 +13221,9 @@ class SessionManager extends BasicRecorder {
|
|
|
13174
13221
|
let adh = this._displayRecFile.audioDataHolder;
|
|
13175
13222
|
if (adh) {
|
|
13176
13223
|
this.displayAudioClip = new AudioClip(adh);
|
|
13177
|
-
this.
|
|
13224
|
+
if (this._controlAudioPlayer) {
|
|
13225
|
+
this._controlAudioPlayer.audioClip = this.displayAudioClip;
|
|
13226
|
+
}
|
|
13178
13227
|
this.showRecording();
|
|
13179
13228
|
}
|
|
13180
13229
|
else {
|
|
@@ -13183,47 +13232,90 @@ class SessionManager extends BasicRecorder {
|
|
|
13183
13232
|
if (this.controlAudioPlayer) {
|
|
13184
13233
|
this.controlAudioPlayer.audioClip = null;
|
|
13185
13234
|
}
|
|
13186
|
-
if (
|
|
13187
|
-
|
|
13188
|
-
|
|
13189
|
-
|
|
13190
|
-
|
|
13191
|
-
|
|
13192
|
-
|
|
13193
|
-
|
|
13194
|
-
|
|
13195
|
-
|
|
13196
|
-
|
|
13197
|
-
|
|
13198
|
-
|
|
13199
|
-
|
|
13200
|
-
|
|
13201
|
-
|
|
13202
|
-
|
|
13235
|
+
if (fetchAndApplyRecordingFile) {
|
|
13236
|
+
if (this._controlAudioPlayer && this._session) {
|
|
13237
|
+
//... and try to fetch from server
|
|
13238
|
+
this.liveLevelDisplayState = State.LOADING;
|
|
13239
|
+
const rf = this._displayRecFile;
|
|
13240
|
+
let audioDownloadType = this._clientAudioStorageType;
|
|
13241
|
+
if (AudioStorageType.MEM_ENTIRE_AUTO_NET_CHUNKED === this._clientAudioStorageType || AudioStorageType.MEM_CHUNKED_AUTO_NET_CHUNKED === this._clientAudioStorageType) {
|
|
13242
|
+
// Default is network mode
|
|
13243
|
+
audioDownloadType = AudioStorageType.NET_CHUNKED;
|
|
13244
|
+
if (rf.channels && rf.frames) {
|
|
13245
|
+
const samples = rf.channels * rf.frames;
|
|
13246
|
+
if (samples <= this._maxAutoNetMemStoreSamples) {
|
|
13247
|
+
// But if audio file is small, load in continuous resp. chunked mode
|
|
13248
|
+
if (AudioStorageType.MEM_ENTIRE_AUTO_NET_CHUNKED === this._clientAudioStorageType) {
|
|
13249
|
+
audioDownloadType = AudioStorageType.MEM_ENTIRE;
|
|
13250
|
+
}
|
|
13251
|
+
else if (AudioStorageType.MEM_CHUNKED_AUTO_NET_CHUNKED === this._clientAudioStorageType) {
|
|
13252
|
+
audioDownloadType = AudioStorageType.MEM_CHUNKED;
|
|
13253
|
+
}
|
|
13203
13254
|
}
|
|
13204
13255
|
}
|
|
13205
13256
|
}
|
|
13206
|
-
|
|
13207
|
-
|
|
13208
|
-
|
|
13209
|
-
|
|
13210
|
-
|
|
13211
|
-
|
|
13212
|
-
|
|
13257
|
+
console.debug("Audio download type: " + audioDownloadType);
|
|
13258
|
+
if (AudioStorageType.DB_CHUNKED === this._clientAudioStorageType) {
|
|
13259
|
+
// Fetch chunked indexed db audio buffer
|
|
13260
|
+
let nextIab = null;
|
|
13261
|
+
if (!this._persistentAudioStorageTarget) {
|
|
13262
|
+
throw Error('Error: Persistent storage target not set.');
|
|
13263
|
+
}
|
|
13264
|
+
else {
|
|
13265
|
+
//console.debug("Fetch audio and store to indexed db...");
|
|
13266
|
+
this.audioFetchSubscription = this.recFileService.fetchSprRecordingFileIndDbAudioBuffer(this._controlAudioPlayer.context, this._persistentAudioStorageTarget, this._session.project, rf).subscribe({
|
|
13267
|
+
next: (iab) => {
|
|
13268
|
+
//console.debug("Sessionmanager: Received inddb audio buffer: "+iab);
|
|
13269
|
+
nextIab = iab;
|
|
13270
|
+
},
|
|
13271
|
+
complete: () => {
|
|
13272
|
+
this.liveLevelDisplayState = State.READY;
|
|
13273
|
+
let fabDh = null;
|
|
13274
|
+
if (nextIab) {
|
|
13275
|
+
if (rf && this.items) {
|
|
13276
|
+
fabDh = new AudioDataHolder(nextIab);
|
|
13277
|
+
this.items.setSprRecFileAudioData(rf, fabDh);
|
|
13278
|
+
}
|
|
13279
|
+
}
|
|
13280
|
+
else {
|
|
13281
|
+
// Should actually be handled by the error resolver
|
|
13282
|
+
this.statusMsg = 'Recording file could not be loaded.';
|
|
13283
|
+
this.statusAlertType = 'error';
|
|
13284
|
+
}
|
|
13285
|
+
if (fabDh) {
|
|
13286
|
+
// this.displayAudioClip could have been changed meanwhile, but the recorder unsubcribes before changing the item, therefore there should be no risk to set to wrong item
|
|
13287
|
+
this.displayAudioClip = new AudioClip(fabDh);
|
|
13288
|
+
}
|
|
13289
|
+
if (this._controlAudioPlayer) {
|
|
13290
|
+
this._controlAudioPlayer.audioClip = this.displayAudioClip;
|
|
13291
|
+
}
|
|
13292
|
+
this.showRecording();
|
|
13293
|
+
},
|
|
13294
|
+
error: err => {
|
|
13295
|
+
console.error("Could not load recording file from server: " + err);
|
|
13296
|
+
this.liveLevelDisplayState = State.READY;
|
|
13297
|
+
this.statusMsg = 'Recording file could not be loaded: ' + err;
|
|
13298
|
+
this.statusAlertType = 'error';
|
|
13299
|
+
this.changeDetectorRef.detectChanges();
|
|
13300
|
+
}
|
|
13301
|
+
});
|
|
13302
|
+
}
|
|
13213
13303
|
}
|
|
13214
|
-
else {
|
|
13215
|
-
//
|
|
13216
|
-
|
|
13217
|
-
|
|
13218
|
-
|
|
13219
|
-
|
|
13304
|
+
else if (AudioStorageType.NET_CHUNKED === audioDownloadType) {
|
|
13305
|
+
// Fetch chunked audio buffer from network
|
|
13306
|
+
let nextNetAb = null;
|
|
13307
|
+
//console.debug("Fetch chunked audio from network");
|
|
13308
|
+
this.audioFetchSubscription = this.recFileService.fetchSprRecordingFileNetAudioBuffer(this._controlAudioPlayer.context, this._session.project, rf).subscribe({
|
|
13309
|
+
next: (netAb) => {
|
|
13310
|
+
//console.debug("Sessionmanager: Received net audio buffer: "+netAb);
|
|
13311
|
+
nextNetAb = netAb;
|
|
13220
13312
|
},
|
|
13221
13313
|
complete: () => {
|
|
13222
13314
|
this.liveLevelDisplayState = State.READY;
|
|
13223
13315
|
let fabDh = null;
|
|
13224
|
-
if (
|
|
13316
|
+
if (nextNetAb) {
|
|
13225
13317
|
if (rf && this.items) {
|
|
13226
|
-
fabDh = new AudioDataHolder(
|
|
13318
|
+
fabDh = new AudioDataHolder(nextNetAb);
|
|
13227
13319
|
this.items.setSprRecFileAudioData(rf, fabDh);
|
|
13228
13320
|
}
|
|
13229
13321
|
}
|
|
@@ -13234,9 +13326,12 @@ class SessionManager extends BasicRecorder {
|
|
|
13234
13326
|
}
|
|
13235
13327
|
if (fabDh) {
|
|
13236
13328
|
// this.displayAudioClip could have been changed meanwhile, but the recorder unsubcribes before changing the item, therefore there should be no risk to set to wrong item
|
|
13329
|
+
//console.debug("set displayRecFile(): fetch net ab complete, set displayAudioClip.")
|
|
13237
13330
|
this.displayAudioClip = new AudioClip(fabDh);
|
|
13238
13331
|
}
|
|
13239
|
-
this.
|
|
13332
|
+
if (this._controlAudioPlayer) {
|
|
13333
|
+
this._controlAudioPlayer.audioClip = this.displayAudioClip;
|
|
13334
|
+
}
|
|
13240
13335
|
this.showRecording();
|
|
13241
13336
|
},
|
|
13242
13337
|
error: err => {
|
|
@@ -13248,126 +13343,90 @@ class SessionManager extends BasicRecorder {
|
|
|
13248
13343
|
}
|
|
13249
13344
|
});
|
|
13250
13345
|
}
|
|
13251
|
-
|
|
13252
|
-
|
|
13253
|
-
|
|
13254
|
-
|
|
13255
|
-
|
|
13256
|
-
|
|
13257
|
-
|
|
13258
|
-
|
|
13259
|
-
|
|
13260
|
-
|
|
13261
|
-
|
|
13262
|
-
|
|
13263
|
-
|
|
13264
|
-
|
|
13265
|
-
|
|
13266
|
-
|
|
13267
|
-
this.items.setSprRecFileAudioData(rf, fabDh);
|
|
13346
|
+
else if (AudioStorageType.MEM_CHUNKED === audioDownloadType) {
|
|
13347
|
+
// Fetch chunked array audio buffer
|
|
13348
|
+
let nextAab = null;
|
|
13349
|
+
//console.debug("Fetch audio and store to (chunked) array buffer...");
|
|
13350
|
+
this.audioFetchSubscription = this.recFileService.fetchSprRecordingFileArrayAudioBuffer(this._controlAudioPlayer.context, this._session.project, rf).subscribe({
|
|
13351
|
+
next: (aab) => {
|
|
13352
|
+
nextAab = aab;
|
|
13353
|
+
},
|
|
13354
|
+
complete: () => {
|
|
13355
|
+
this.liveLevelDisplayState = State.READY;
|
|
13356
|
+
let fabDh = null;
|
|
13357
|
+
if (nextAab) {
|
|
13358
|
+
if (rf && this.items) {
|
|
13359
|
+
fabDh = new AudioDataHolder(nextAab);
|
|
13360
|
+
this.items.setSprRecFileAudioData(rf, fabDh);
|
|
13361
|
+
}
|
|
13268
13362
|
}
|
|
13269
|
-
|
|
13270
|
-
|
|
13271
|
-
|
|
13272
|
-
|
|
13273
|
-
this.statusAlertType = 'error';
|
|
13274
|
-
}
|
|
13275
|
-
if (fabDh) {
|
|
13276
|
-
// this.displayAudioClip could have been changed meanwhile, but the recorder unsubcribes before changing the item, therefore there should be no risk to set to wrong item
|
|
13277
|
-
//console.debug("set displayRecFile(): fetch net ab complete, set displayAudioClip.")
|
|
13278
|
-
this.displayAudioClip = new AudioClip(fabDh);
|
|
13279
|
-
}
|
|
13280
|
-
this.controlAudioPlayer.audioClip = this.displayAudioClip;
|
|
13281
|
-
this.showRecording();
|
|
13282
|
-
},
|
|
13283
|
-
error: err => {
|
|
13284
|
-
console.error("Could not load recording file from server: " + err);
|
|
13285
|
-
this.liveLevelDisplayState = State.READY;
|
|
13286
|
-
this.statusMsg = 'Recording file could not be loaded: ' + err;
|
|
13287
|
-
this.statusAlertType = 'error';
|
|
13288
|
-
this.changeDetectorRef.detectChanges();
|
|
13289
|
-
}
|
|
13290
|
-
});
|
|
13291
|
-
}
|
|
13292
|
-
else if (AudioStorageType.MEM_CHUNKED === audioDownloadType) {
|
|
13293
|
-
// Fetch chunked array audio buffer
|
|
13294
|
-
let nextAab = null;
|
|
13295
|
-
//console.debug("Fetch audio and store to (chunked) array buffer...");
|
|
13296
|
-
this.audioFetchSubscription = this.recFileService.fetchSprRecordingFileArrayAudioBuffer(this._controlAudioPlayer.context, this._session.project, rf).subscribe({
|
|
13297
|
-
next: (aab) => {
|
|
13298
|
-
nextAab = aab;
|
|
13299
|
-
},
|
|
13300
|
-
complete: () => {
|
|
13301
|
-
this.liveLevelDisplayState = State.READY;
|
|
13302
|
-
let fabDh = null;
|
|
13303
|
-
if (nextAab) {
|
|
13304
|
-
if (rf && this.items) {
|
|
13305
|
-
fabDh = new AudioDataHolder(nextAab);
|
|
13306
|
-
this.items.setSprRecFileAudioData(rf, fabDh);
|
|
13363
|
+
else {
|
|
13364
|
+
// Should actually be handled by the error resolver
|
|
13365
|
+
this.statusMsg = 'Recording file could not be loaded.';
|
|
13366
|
+
this.statusAlertType = 'error';
|
|
13307
13367
|
}
|
|
13308
|
-
|
|
13309
|
-
|
|
13310
|
-
|
|
13311
|
-
|
|
13368
|
+
if (fabDh) {
|
|
13369
|
+
// this.displayAudioClip could have been changed meanwhile, but the recorder unsubcribes before changing the item, therefore there should be no risk to set to wrong item
|
|
13370
|
+
this.displayAudioClip = new AudioClip(fabDh);
|
|
13371
|
+
}
|
|
13372
|
+
if (this._controlAudioPlayer) {
|
|
13373
|
+
this._controlAudioPlayer.audioClip = this.displayAudioClip;
|
|
13374
|
+
}
|
|
13375
|
+
this.showRecording();
|
|
13376
|
+
},
|
|
13377
|
+
error: err => {
|
|
13378
|
+
console.error("Could not load recording file from server: " + err);
|
|
13379
|
+
this.liveLevelDisplayState = State.READY;
|
|
13380
|
+
this.statusMsg = 'Recording file could not be loaded: ' + err;
|
|
13312
13381
|
this.statusAlertType = 'error';
|
|
13313
13382
|
}
|
|
13314
|
-
|
|
13315
|
-
|
|
13316
|
-
|
|
13317
|
-
|
|
13318
|
-
|
|
13319
|
-
|
|
13320
|
-
|
|
13321
|
-
|
|
13322
|
-
|
|
13323
|
-
|
|
13324
|
-
|
|
13325
|
-
|
|
13326
|
-
|
|
13327
|
-
|
|
13328
|
-
|
|
13329
|
-
|
|
13330
|
-
|
|
13331
|
-
|
|
13332
|
-
|
|
13333
|
-
next: (ab) => {
|
|
13334
|
-
this.liveLevelDisplayState = State.READY;
|
|
13335
|
-
let fabDh = null;
|
|
13336
|
-
if (ab) {
|
|
13337
|
-
if (rf && this.items) {
|
|
13338
|
-
if (SessionManager.FORCE_ARRRAY_AUDIO_BUFFER) {
|
|
13339
|
-
let aab = ArrayAudioBuffer.fromAudioBuffer(ab);
|
|
13340
|
-
fabDh = new AudioDataHolder(aab);
|
|
13341
|
-
}
|
|
13342
|
-
else {
|
|
13343
|
-
fabDh = new AudioDataHolder(new AudioBufferSource(ab));
|
|
13383
|
+
});
|
|
13384
|
+
}
|
|
13385
|
+
else {
|
|
13386
|
+
// Fetch regular audio buffer
|
|
13387
|
+
//console.debug("Fetch audio and store to audio buffer...");
|
|
13388
|
+
this.audioFetchSubscription = this.recFileService.fetchSprRecordingFileAudioBuffer(this._controlAudioPlayer.context, this._session.project, rf).subscribe({
|
|
13389
|
+
next: (ab) => {
|
|
13390
|
+
this.liveLevelDisplayState = State.READY;
|
|
13391
|
+
let fabDh = null;
|
|
13392
|
+
if (ab) {
|
|
13393
|
+
if (rf && this.items) {
|
|
13394
|
+
if (SessionManager.FORCE_ARRRAY_AUDIO_BUFFER) {
|
|
13395
|
+
let aab = ArrayAudioBuffer.fromAudioBuffer(ab);
|
|
13396
|
+
fabDh = new AudioDataHolder(aab);
|
|
13397
|
+
}
|
|
13398
|
+
else {
|
|
13399
|
+
fabDh = new AudioDataHolder(new AudioBufferSource(ab));
|
|
13400
|
+
}
|
|
13401
|
+
this.items.setSprRecFileAudioData(rf, fabDh);
|
|
13344
13402
|
}
|
|
13345
|
-
this.items.setSprRecFileAudioData(rf, fabDh);
|
|
13346
13403
|
}
|
|
13347
|
-
|
|
13348
|
-
|
|
13349
|
-
|
|
13350
|
-
|
|
13404
|
+
else {
|
|
13405
|
+
// Should actually be handled by the error resolver
|
|
13406
|
+
this.statusMsg = 'Recording file could not be loaded.';
|
|
13407
|
+
this.statusAlertType = 'error';
|
|
13408
|
+
}
|
|
13409
|
+
if (fabDh) {
|
|
13410
|
+
// this.displayAudioClip could have been changed meanwhile, but the recorder unsubcribes before changing the item, therefore there should be no risk to set to wrong item
|
|
13411
|
+
this.displayAudioClip = new AudioClip(fabDh);
|
|
13412
|
+
}
|
|
13413
|
+
if (this._controlAudioPlayer) {
|
|
13414
|
+
this._controlAudioPlayer.audioClip = this.displayAudioClip;
|
|
13415
|
+
}
|
|
13416
|
+
this.showRecording();
|
|
13417
|
+
}, error: err => {
|
|
13418
|
+
console.error("Could not load recording file from server: " + err);
|
|
13419
|
+
this.liveLevelDisplayState = State.READY;
|
|
13420
|
+
this.statusMsg = 'Recording file could not be loaded: ' + err;
|
|
13351
13421
|
this.statusAlertType = 'error';
|
|
13352
13422
|
}
|
|
13353
|
-
|
|
13354
|
-
|
|
13355
|
-
|
|
13356
|
-
|
|
13357
|
-
|
|
13358
|
-
|
|
13359
|
-
}, error: err => {
|
|
13360
|
-
console.error("Could not load recording file from server: " + err);
|
|
13361
|
-
this.liveLevelDisplayState = State.READY;
|
|
13362
|
-
this.statusMsg = 'Recording file could not be loaded: ' + err;
|
|
13363
|
-
this.statusAlertType = 'error';
|
|
13364
|
-
}
|
|
13365
|
-
});
|
|
13423
|
+
});
|
|
13424
|
+
}
|
|
13425
|
+
}
|
|
13426
|
+
else {
|
|
13427
|
+
this.statusMsg = 'Recording file could not be decoded. Audio context unavailable.';
|
|
13428
|
+
this.statusAlertType = 'error';
|
|
13366
13429
|
}
|
|
13367
|
-
}
|
|
13368
|
-
else {
|
|
13369
|
-
this.statusMsg = 'Recording file could not be decoded. Audio context unavailable.';
|
|
13370
|
-
this.statusAlertType = 'error';
|
|
13371
13430
|
}
|
|
13372
13431
|
}
|
|
13373
13432
|
}
|
|
@@ -13407,7 +13466,7 @@ class SessionManager extends BasicRecorder {
|
|
|
13407
13466
|
this.applyPrompt();
|
|
13408
13467
|
}
|
|
13409
13468
|
if (isNonrecording) {
|
|
13410
|
-
this.
|
|
13469
|
+
this.updateDisplayRecFile(null);
|
|
13411
13470
|
this.displayRecFileVersion = 0;
|
|
13412
13471
|
this.startStopSignalState = 4 /* OFF */;
|
|
13413
13472
|
}
|
|
@@ -13422,11 +13481,11 @@ class SessionManager extends BasicRecorder {
|
|
|
13422
13481
|
if (availRecfiles > 0) {
|
|
13423
13482
|
let rfVers = availRecfiles - 1;
|
|
13424
13483
|
recentRecFile = it.recs[rfVers];
|
|
13425
|
-
this.
|
|
13484
|
+
this.updateDisplayRecFile(recentRecFile, !temporary);
|
|
13426
13485
|
this.displayRecFileVersion = rfVers;
|
|
13427
13486
|
}
|
|
13428
13487
|
else {
|
|
13429
|
-
this.
|
|
13488
|
+
this.updateDisplayRecFile(null);
|
|
13430
13489
|
this.displayRecFileVersion = 0;
|
|
13431
13490
|
}
|
|
13432
13491
|
}
|
|
@@ -13908,9 +13967,14 @@ class SessionManager extends BasicRecorder {
|
|
|
13908
13967
|
}
|
|
13909
13968
|
}
|
|
13910
13969
|
updateControlPlaybackPosition() {
|
|
13911
|
-
if (this._controlAudioPlayer
|
|
13912
|
-
|
|
13913
|
-
|
|
13970
|
+
if (this._controlAudioPlayer) {
|
|
13971
|
+
const ppFrames = this._controlAudioPlayer.playPositionFrames;
|
|
13972
|
+
if (ppFrames !== null) {
|
|
13973
|
+
if (this.prompting.audioDisplay) {
|
|
13974
|
+
this.prompting.audioDisplay.playFramePosition = ppFrames;
|
|
13975
|
+
}
|
|
13976
|
+
this.liveLevelDisplay.playFramePosition = ppFrames;
|
|
13977
|
+
}
|
|
13914
13978
|
}
|
|
13915
13979
|
}
|
|
13916
13980
|
audioPlayerUpdate(e) {
|
|
@@ -13929,7 +13993,7 @@ class SessionManager extends BasicRecorder {
|
|
|
13929
13993
|
}
|
|
13930
13994
|
}
|
|
13931
13995
|
}
|
|
13932
|
-
SessionManager.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: SessionManager, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.Renderer2 }, { token: i1$4.MatDialog }, { token: SessionService }, { token: RecordingService }, { token: SpeechRecorderUploader }, { token: SPEECHRECORDER_CONFIG }], target: i0.ɵɵFactoryTarget.Component });
|
|
13996
|
+
SessionManager.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: SessionManager, deps: [{ token: i1$3.BreakpointObserver }, { token: i0.ChangeDetectorRef }, { token: i0.Renderer2 }, { token: i1$4.MatDialog }, { token: SessionService }, { token: RecordingService }, { token: SpeechRecorderUploader }, { token: SPEECHRECORDER_CONFIG }], target: i0.ɵɵFactoryTarget.Component });
|
|
13933
13997
|
SessionManager.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.12", type: SessionManager, selector: "app-sprrecordingsession", inputs: { projectName: "projectName", dataSaved: "dataSaved" }, host: { listeners: { "window:keypress": "onKeyPress($event)", "window:keydown": "onKeyDown($event)" } }, providers: [SessionService], viewQueries: [{ propertyName: "prompting", first: true, predicate: Prompting, descendants: true, static: true }, { propertyName: "liveLevelDisplay", first: true, predicate: LevelBar, descendants: true, static: true }], usesInheritance: true, ngImport: i0, template: `
|
|
13934
13998
|
<app-warningbar [show]="isTestSession()" warningText="Test recording only!"></app-warningbar>
|
|
13935
13999
|
<app-warningbar [show]="isDefaultAudioTestSession()" warningText="This test uses default audio device! Regular sessions may require a particular audio device (microphone)!"></app-warningbar>
|
|
@@ -13945,13 +14009,13 @@ SessionManager.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version
|
|
|
13945
14009
|
[playStopAction]="controlAudioPlayer?.stopAction">
|
|
13946
14010
|
|
|
13947
14011
|
</app-sprprompting>
|
|
13948
|
-
<mat-progress-bar [value]="progressPercentValue()"
|
|
14012
|
+
<mat-progress-bar [value]="progressPercentValue()" *ngIf="screenXs" ></mat-progress-bar>
|
|
13949
14013
|
|
|
13950
14014
|
|
|
13951
|
-
<div
|
|
13952
|
-
<audio-levelbar
|
|
13953
|
-
<div
|
|
13954
|
-
<spr-recordingitemcontrols
|
|
14015
|
+
<div [class]="{audioStatusDisplay:!screenXs,audioStatusDisplayXs:screenXs}">
|
|
14016
|
+
<audio-levelbar style="flex:1 0 1%" [streamingMode]="isRecording() || keepLiveLevel" [displayLevelInfos]="displayAudioClip?.levelInfos" [state]="liveLevelDisplayState"></audio-levelbar>
|
|
14017
|
+
<div style="display:flex;flex-direction: row">
|
|
14018
|
+
<spr-recordingitemcontrols style="display:flex;flex:10 0 1px"
|
|
13955
14019
|
[audioLoaded]="audioLoaded"
|
|
13956
14020
|
[disableAudioDetails]="disableAudioDetails"
|
|
13957
14021
|
[playStartAction]="controlAudioPlayer?.startAction"
|
|
@@ -13961,25 +14025,25 @@ SessionManager.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version
|
|
|
13961
14025
|
(onShowRecordingDetails)="audioSignalCollapsed=!audioSignalCollapsed">
|
|
13962
14026
|
</spr-recordingitemcontrols>
|
|
13963
14027
|
|
|
13964
|
-
<app-uploadstatus class="ricontrols dark"
|
|
14028
|
+
<app-uploadstatus *ngIf="screenXs && enableUploadRecordings" class="ricontrols dark" style="flex:0 0 0" [value]="uploadProgress"
|
|
13965
14029
|
[status]="uploadStatus" [awaitNewUpload]="processingRecording"></app-uploadstatus>
|
|
13966
|
-
<app-wakelockindicator class="ricontrols dark"
|
|
13967
|
-
<app-readystateindicator class="ricontrols dark"
|
|
14030
|
+
<app-wakelockindicator *ngIf="screenXs" class="ricontrols dark" style="flex:0 0 0" [screenLocked]="screenLocked"></app-wakelockindicator>
|
|
14031
|
+
<app-readystateindicator *ngIf="screenXs" class="ricontrols dark" style="flex:0 0 0" [ready]="dataSaved && !isActive()"></app-readystateindicator>
|
|
13968
14032
|
</div>
|
|
13969
14033
|
</div>
|
|
13970
|
-
<div #controlpanel class="controlpanel"
|
|
13971
|
-
<div
|
|
13972
|
-
<app-sprstatusdisplay
|
|
14034
|
+
<div #controlpanel class="controlpanel">
|
|
14035
|
+
<div style="flex:1 1 30%;justify-content: flex-start;align-items: center; align-content: center">
|
|
14036
|
+
<app-sprstatusdisplay *ngIf="!screenXs" [statusMsg]="statusMsg" [statusAlertType]="statusAlertType" [statusWaiting]="statusWaiting"></app-sprstatusdisplay>
|
|
13973
14037
|
</div>
|
|
13974
|
-
<app-sprtransport
|
|
13975
|
-
<div
|
|
13976
|
-
<app-uploadstatus
|
|
14038
|
+
<app-sprtransport style="display:flex;flex:10 0 30%;justify-content: center;align-items: center; align-content: center" [readonly]="readonly" [actions]="transportActions" [navigationEnabled]="!items || items.length()>1"></app-sprtransport>
|
|
14039
|
+
<div style="display:flex;flex:1 1 30%;flex-direction:row;justify-content: flex-end;align-items: center; align-content: center">
|
|
14040
|
+
<app-uploadstatus *ngIf="!screenXs && enableUploadRecordings" class="ricontrols" [value]="uploadProgress"
|
|
13977
14041
|
[status]="uploadStatus" [awaitNewUpload]="processingRecording"></app-uploadstatus>
|
|
13978
|
-
<app-wakelockindicator
|
|
13979
|
-
<app-readystateindicator
|
|
14042
|
+
<app-wakelockindicator *ngIf="!screenXs" class="ricontrols" [screenLocked]="screenLocked"></app-wakelockindicator>
|
|
14043
|
+
<app-readystateindicator *ngIf="!screenXs" class="ricontrols" [ready]="dataSaved && !isActive()"></app-readystateindicator>
|
|
13980
14044
|
</div>
|
|
13981
14045
|
</div>
|
|
13982
|
-
`, isInline: true, styles: [":host{flex:2;background:lightgrey;display:flex;flex-direction:column;margin:0;padding:0;min-height:0px;overflow:hidden}\n", ".ricontrols{padding:4px;box-sizing:border-box;height:100
|
|
14046
|
+
`, isInline: true, styles: [":host{flex:2;background:lightgrey;display:flex;flex-direction:column;margin:0;padding:0;min-height:0px;overflow:hidden}\n", ".ricontrols{display:flex;padding:4px;box-sizing:border-box;height:100%;flex-direction:row;justify-content:flex-end;align-items:center;align-content:center}\n", ".dark{background:darkgray}\n", ".controlpanel{display:flex;flex-direction:row;align-content:center;align-items:center;margin:0;padding:20px;min-height:min-content}\n", ".audioStatusDisplay{display:flex;flex-direction:row;height:100px;min-height:100px}\n", ".audioStatusDisplayXs{display:flex;flex-direction:column;height:125px;min-height:125px}\n"], dependencies: [{ kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i7.MatProgressBar, selector: "mat-progress-bar", inputs: ["color", "value", "bufferValue", "mode"], outputs: ["animationEnd"], exportAs: ["matProgressBar"] }, { kind: "component", type: LevelBar, selector: "audio-levelbar", inputs: ["streamingMode", "displayLevelInfos", "state"] }, { kind: "component", type: Prompting, selector: "app-sprprompting", inputs: ["projectName", "startStopSignalState", "promptItem", "showPrompt", "items", "selectedItemIdx", "transportActions", "enableDownload", "audioSignalCollapsed", "displayAudioClip", "playStartAction", "playSelectionAction", "autoPlayOnSelectToggleAction", "playStopAction"], outputs: ["onItemSelect", "onNextItem", "onPrevItem"] }, { kind: "component", type: StatusDisplay, selector: "app-sprstatusdisplay", inputs: ["statusAlertType", "statusMsg", "statusWaiting"] }, { kind: "component", type: RecordingItemControls, selector: "spr-recordingitemcontrols", inputs: ["audioSignalCollapsed", "enableDownload", "peakDbLvl", "agc", "disableAudioDetails", "audioLoaded", "playStartAction", "playStopAction", "displayLevelInfos"], outputs: ["onShowRecordingDetails", "onDownloadRecording"] }, { kind: "component", type: UploadStatus, selector: "app-uploadstatus", inputs: ["value", "awaitNewUpload", "status"] }, { kind: "component", type: TransportPanel, selector: "app-sprtransport", inputs: ["readonly", "actions", "navigationEnabled", "pausingEnabled"] }, { kind: "component", type: WakeLockIndicator, selector: "app-wakelockindicator", inputs: ["screenLocked"] }, { kind: "component", type: ReadyStateIndicator, selector: "app-readystateindicator", inputs: ["ready"] }, { kind: "component", type: WarningBar, selector: "app-warningbar", inputs: ["warningText", "show"] }] });
|
|
13983
14047
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: SessionManager, decorators: [{
|
|
13984
14048
|
type: Component,
|
|
13985
14049
|
args: [{ selector: 'app-sprrecordingsession', providers: [SessionService], template: `
|
|
@@ -13997,13 +14061,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImpo
|
|
|
13997
14061
|
[playStopAction]="controlAudioPlayer?.stopAction">
|
|
13998
14062
|
|
|
13999
14063
|
</app-sprprompting>
|
|
14000
|
-
<mat-progress-bar [value]="progressPercentValue()"
|
|
14064
|
+
<mat-progress-bar [value]="progressPercentValue()" *ngIf="screenXs" ></mat-progress-bar>
|
|
14001
14065
|
|
|
14002
14066
|
|
|
14003
|
-
<div
|
|
14004
|
-
<audio-levelbar
|
|
14005
|
-
<div
|
|
14006
|
-
<spr-recordingitemcontrols
|
|
14067
|
+
<div [class]="{audioStatusDisplay:!screenXs,audioStatusDisplayXs:screenXs}">
|
|
14068
|
+
<audio-levelbar style="flex:1 0 1%" [streamingMode]="isRecording() || keepLiveLevel" [displayLevelInfos]="displayAudioClip?.levelInfos" [state]="liveLevelDisplayState"></audio-levelbar>
|
|
14069
|
+
<div style="display:flex;flex-direction: row">
|
|
14070
|
+
<spr-recordingitemcontrols style="display:flex;flex:10 0 1px"
|
|
14007
14071
|
[audioLoaded]="audioLoaded"
|
|
14008
14072
|
[disableAudioDetails]="disableAudioDetails"
|
|
14009
14073
|
[playStartAction]="controlAudioPlayer?.startAction"
|
|
@@ -14013,27 +14077,27 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImpo
|
|
|
14013
14077
|
(onShowRecordingDetails)="audioSignalCollapsed=!audioSignalCollapsed">
|
|
14014
14078
|
</spr-recordingitemcontrols>
|
|
14015
14079
|
|
|
14016
|
-
<app-uploadstatus class="ricontrols dark"
|
|
14080
|
+
<app-uploadstatus *ngIf="screenXs && enableUploadRecordings" class="ricontrols dark" style="flex:0 0 0" [value]="uploadProgress"
|
|
14017
14081
|
[status]="uploadStatus" [awaitNewUpload]="processingRecording"></app-uploadstatus>
|
|
14018
|
-
<app-wakelockindicator class="ricontrols dark"
|
|
14019
|
-
<app-readystateindicator class="ricontrols dark"
|
|
14082
|
+
<app-wakelockindicator *ngIf="screenXs" class="ricontrols dark" style="flex:0 0 0" [screenLocked]="screenLocked"></app-wakelockindicator>
|
|
14083
|
+
<app-readystateindicator *ngIf="screenXs" class="ricontrols dark" style="flex:0 0 0" [ready]="dataSaved && !isActive()"></app-readystateindicator>
|
|
14020
14084
|
</div>
|
|
14021
14085
|
</div>
|
|
14022
|
-
<div #controlpanel class="controlpanel"
|
|
14023
|
-
<div
|
|
14024
|
-
<app-sprstatusdisplay
|
|
14086
|
+
<div #controlpanel class="controlpanel">
|
|
14087
|
+
<div style="flex:1 1 30%;justify-content: flex-start;align-items: center; align-content: center">
|
|
14088
|
+
<app-sprstatusdisplay *ngIf="!screenXs" [statusMsg]="statusMsg" [statusAlertType]="statusAlertType" [statusWaiting]="statusWaiting"></app-sprstatusdisplay>
|
|
14025
14089
|
</div>
|
|
14026
|
-
<app-sprtransport
|
|
14027
|
-
<div
|
|
14028
|
-
<app-uploadstatus
|
|
14090
|
+
<app-sprtransport style="display:flex;flex:10 0 30%;justify-content: center;align-items: center; align-content: center" [readonly]="readonly" [actions]="transportActions" [navigationEnabled]="!items || items.length()>1"></app-sprtransport>
|
|
14091
|
+
<div style="display:flex;flex:1 1 30%;flex-direction:row;justify-content: flex-end;align-items: center; align-content: center">
|
|
14092
|
+
<app-uploadstatus *ngIf="!screenXs && enableUploadRecordings" class="ricontrols" [value]="uploadProgress"
|
|
14029
14093
|
[status]="uploadStatus" [awaitNewUpload]="processingRecording"></app-uploadstatus>
|
|
14030
|
-
<app-wakelockindicator
|
|
14031
|
-
<app-readystateindicator
|
|
14094
|
+
<app-wakelockindicator *ngIf="!screenXs" class="ricontrols" [screenLocked]="screenLocked"></app-wakelockindicator>
|
|
14095
|
+
<app-readystateindicator *ngIf="!screenXs" class="ricontrols" [ready]="dataSaved && !isActive()"></app-readystateindicator>
|
|
14032
14096
|
</div>
|
|
14033
14097
|
</div>
|
|
14034
|
-
`, styles: [":host{flex:2;background:lightgrey;display:flex;flex-direction:column;margin:0;padding:0;min-height:0px;overflow:hidden}\n", ".ricontrols{padding:4px;box-sizing:border-box;height:100
|
|
14098
|
+
`, styles: [":host{flex:2;background:lightgrey;display:flex;flex-direction:column;margin:0;padding:0;min-height:0px;overflow:hidden}\n", ".ricontrols{display:flex;padding:4px;box-sizing:border-box;height:100%;flex-direction:row;justify-content:flex-end;align-items:center;align-content:center}\n", ".dark{background:darkgray}\n", ".controlpanel{display:flex;flex-direction:row;align-content:center;align-items:center;margin:0;padding:20px;min-height:min-content}\n", ".audioStatusDisplay{display:flex;flex-direction:row;height:100px;min-height:100px}\n", ".audioStatusDisplayXs{display:flex;flex-direction:column;height:125px;min-height:125px}\n"] }]
|
|
14035
14099
|
}], ctorParameters: function () {
|
|
14036
|
-
return [{ type: i0.ChangeDetectorRef }, { type: i0.Renderer2 }, { type: i1$4.MatDialog }, { type: SessionService }, { type: RecordingService }, { type: SpeechRecorderUploader }, { type: SpeechRecorderConfig, decorators: [{
|
|
14100
|
+
return [{ type: i1$3.BreakpointObserver }, { type: i0.ChangeDetectorRef }, { type: i0.Renderer2 }, { type: i1$4.MatDialog }, { type: SessionService }, { type: RecordingService }, { type: SpeechRecorderUploader }, { type: SpeechRecorderConfig, decorators: [{
|
|
14037
14101
|
type: Inject,
|
|
14038
14102
|
args: [SPEECHRECORDER_CONFIG]
|
|
14039
14103
|
}] }];
|
|
@@ -14293,6 +14357,7 @@ class SpeechrecorderngComponent extends RecorderComponent {
|
|
|
14293
14357
|
this.scriptService = scriptService;
|
|
14294
14358
|
this.recFilesService = recFilesService;
|
|
14295
14359
|
this.uploader = uploader;
|
|
14360
|
+
this.controlAudioPlayer = null;
|
|
14296
14361
|
this._project = null;
|
|
14297
14362
|
}
|
|
14298
14363
|
handleError(err) {
|
|
@@ -15268,16 +15333,16 @@ RecordingFileNaviComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0
|
|
|
15268
15333
|
<legend>Navigate</legend>
|
|
15269
15334
|
<mat-progress-spinner *ngIf="naviInfoLoading" mode="indeterminate" [diameter]="15"></mat-progress-spinner>
|
|
15270
15335
|
<div *ngIf="!naviInfoLoading" style="flex: 0;display:flex;flex-direction: row;flex-wrap: nowrap">
|
|
15271
|
-
<button (click)="firstAction?.perform()" [disabled]="!firstAction || firstAction
|
|
15336
|
+
<button (click)="firstAction?.perform()" [disabled]="!firstAction || firstAction.disabled" matTooltip="First recording file">
|
|
15272
15337
|
<mat-icon>first_page</mat-icon>
|
|
15273
15338
|
</button>
|
|
15274
|
-
<button (click)="prevAction?.perform()" [disabled]="!prevAction || prevAction
|
|
15339
|
+
<button (click)="prevAction?.perform()" [disabled]="!prevAction || prevAction.disabled" matTooltip="Previous recording file">
|
|
15275
15340
|
<mat-icon>chevron_left</mat-icon>
|
|
15276
15341
|
</button>
|
|
15277
|
-
<button (click)="nextAction?.perform()" [disabled]="!nextAction || nextAction
|
|
15342
|
+
<button (click)="nextAction?.perform()" [disabled]="!nextAction || nextAction.disabled" matTooltip="Next recording file">
|
|
15278
15343
|
<mat-icon>chevron_right</mat-icon>
|
|
15279
15344
|
</button>
|
|
15280
|
-
<button (click)="lastAction?.perform()" [disabled]="!lastAction || lastAction
|
|
15345
|
+
<button (click)="lastAction?.perform()" [disabled]="!lastAction || lastAction.disabled" matTooltip="Last recording file">
|
|
15281
15346
|
<mat-icon>last_page</mat-icon>
|
|
15282
15347
|
</button>
|
|
15283
15348
|
</div>
|
|
@@ -15303,16 +15368,16 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImpo
|
|
|
15303
15368
|
<legend>Navigate</legend>
|
|
15304
15369
|
<mat-progress-spinner *ngIf="naviInfoLoading" mode="indeterminate" [diameter]="15"></mat-progress-spinner>
|
|
15305
15370
|
<div *ngIf="!naviInfoLoading" style="flex: 0;display:flex;flex-direction: row;flex-wrap: nowrap">
|
|
15306
|
-
<button (click)="firstAction?.perform()" [disabled]="!firstAction || firstAction
|
|
15371
|
+
<button (click)="firstAction?.perform()" [disabled]="!firstAction || firstAction.disabled" matTooltip="First recording file">
|
|
15307
15372
|
<mat-icon>first_page</mat-icon>
|
|
15308
15373
|
</button>
|
|
15309
|
-
<button (click)="prevAction?.perform()" [disabled]="!prevAction || prevAction
|
|
15374
|
+
<button (click)="prevAction?.perform()" [disabled]="!prevAction || prevAction.disabled" matTooltip="Previous recording file">
|
|
15310
15375
|
<mat-icon>chevron_left</mat-icon>
|
|
15311
15376
|
</button>
|
|
15312
|
-
<button (click)="nextAction?.perform()" [disabled]="!nextAction || nextAction
|
|
15377
|
+
<button (click)="nextAction?.perform()" [disabled]="!nextAction || nextAction.disabled" matTooltip="Next recording file">
|
|
15313
15378
|
<mat-icon>chevron_right</mat-icon>
|
|
15314
15379
|
</button>
|
|
15315
|
-
<button (click)="lastAction?.perform()" [disabled]="!lastAction || lastAction
|
|
15380
|
+
<button (click)="lastAction?.perform()" [disabled]="!lastAction || lastAction.disabled" matTooltip="Last recording file">
|
|
15316
15381
|
<mat-icon>last_page</mat-icon>
|
|
15317
15382
|
</button>
|
|
15318
15383
|
</div>
|
|
@@ -15837,7 +15902,7 @@ RecordingFileViewComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0
|
|
|
15837
15902
|
[zoomOutAction]="zoomOutAction"
|
|
15838
15903
|
[zoomSelectedAction]="zoomSelectedAction"
|
|
15839
15904
|
[zoomFitToPanelAction]="zoomFitToPanelAction"></audio-display-control>
|
|
15840
|
-
<app-recording-file-navi [items]="availRecFiles
|
|
15905
|
+
<app-recording-file-navi [items]="availRecFiles.length" [itemPos]="posInList" [version]="recordingFileVersion" [versions]="versions" [firstAction]="firstAction" [prevAction]="prevAction" [nextAction]="nextAction" [lastAction]="lastAction" [selectVersion]="toVersionAction" [naviInfoLoading]="naviInfoLoading"></app-recording-file-navi>
|
|
15841
15906
|
</div>
|
|
15842
15907
|
`, isInline: true, styles: [":host{flex:2;display:flex;flex-direction:column;min-height:0;overflow:hidden;padding:20px;z-index:5;box-sizing:border-box;background-color:#fff}\n", ".ctrlview{display:flex;flex-direction:row}\n", "audio-display-control{flex:3}\n"], dependencies: [{ kind: "component", type: AudioDisplayScrollPane, selector: "audio-display-scroll-pane", inputs: ["audioClip"], outputs: ["zoomInAction", "zoomOutAction", "zoomSelectedAction", "zoomFitToPanelAction"] }, { kind: "component", type: AudioDisplayControl, selector: "audio-display-control", inputs: ["audioClip", "playStartAction", "playSelectionAction", "playStopAction", "zoomInAction", "zoomOutAction", "zoomFitToPanelAction", "zoomSelectedAction", "autoPlayOnSelectToggleAction"] }, { kind: "component", type: RecordingFileNaviComponent, selector: "app-recording-file-navi", inputs: ["firstAction", "prevAction", "nextAction", "lastAction", "items", "itemPos", "selectVersion", "versions", "version", "naviInfoLoading"] }, { kind: "component", type: RecordingFileMetaComponent, selector: "app-recording-file-meta", inputs: ["sessionId", "stateLoading", "recordingFile"] }] });
|
|
15843
15908
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: RecordingFileViewComponent, decorators: [{
|
|
@@ -15857,7 +15922,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImpo
|
|
|
15857
15922
|
[zoomOutAction]="zoomOutAction"
|
|
15858
15923
|
[zoomSelectedAction]="zoomSelectedAction"
|
|
15859
15924
|
[zoomFitToPanelAction]="zoomFitToPanelAction"></audio-display-control>
|
|
15860
|
-
<app-recording-file-navi [items]="availRecFiles
|
|
15925
|
+
<app-recording-file-navi [items]="availRecFiles.length" [itemPos]="posInList" [version]="recordingFileVersion" [versions]="versions" [firstAction]="firstAction" [prevAction]="prevAction" [nextAction]="nextAction" [lastAction]="lastAction" [selectVersion]="toVersionAction" [naviInfoLoading]="naviInfoLoading"></app-recording-file-navi>
|
|
15861
15926
|
</div>
|
|
15862
15927
|
`, styles: [":host{flex:2;display:flex;flex-direction:column;min-height:0;overflow:hidden;padding:20px;z-index:5;box-sizing:border-box;background-color:#fff}\n", ".ctrlview{display:flex;flex-direction:row}\n", "audio-display-control{flex:3}\n"] }]
|
|
15863
15928
|
}], ctorParameters: function () { return [{ type: RecordingFileService }, { type: RecordingService }, { type: SessionService }, { type: i1$2.Router }, { type: i1$2.ActivatedRoute }, { type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i1$4.MatDialog }]; }, propDecorators: { ac: [{
|
|
@@ -15963,7 +16028,7 @@ RecordingFileUI.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", versio
|
|
|
15963
16028
|
[zoomOutAction]="zoomOutAction"
|
|
15964
16029
|
[zoomSelectedAction]="zoomSelectedAction"
|
|
15965
16030
|
[zoomFitToPanelAction]="zoomFitToPanelAction"></audio-display-control>
|
|
15966
|
-
<app-recording-file-navi [items]="availRecFiles
|
|
16031
|
+
<app-recording-file-navi [items]="availRecFiles.length" [itemPos]="posInList" [version]="recordingFileVersion" [versions]="versions" [firstAction]="firstAction" [prevAction]="prevAction" [nextAction]="nextAction" [lastAction]="lastAction" [selectVersion]="toVersionAction" [naviInfoLoading]="naviInfoLoading"></app-recording-file-navi>
|
|
15967
16032
|
</div>
|
|
15968
16033
|
|
|
15969
16034
|
<button mat-raised-button color="accent" (click)="applySelection()" [disabled]="editSaved">{{this.applyButtonText()}}</button>
|
|
@@ -15986,7 +16051,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImpo
|
|
|
15986
16051
|
[zoomOutAction]="zoomOutAction"
|
|
15987
16052
|
[zoomSelectedAction]="zoomSelectedAction"
|
|
15988
16053
|
[zoomFitToPanelAction]="zoomFitToPanelAction"></audio-display-control>
|
|
15989
|
-
<app-recording-file-navi [items]="availRecFiles
|
|
16054
|
+
<app-recording-file-navi [items]="availRecFiles.length" [itemPos]="posInList" [version]="recordingFileVersion" [versions]="versions" [firstAction]="firstAction" [prevAction]="prevAction" [nextAction]="nextAction" [lastAction]="lastAction" [selectVersion]="toVersionAction" [naviInfoLoading]="naviInfoLoading"></app-recording-file-navi>
|
|
15990
16055
|
</div>
|
|
15991
16056
|
|
|
15992
16057
|
<button mat-raised-button color="accent" (click)="applySelection()" [disabled]="editSaved">{{this.applyButtonText()}}</button>
|
|
@@ -16129,7 +16194,7 @@ RecordingList.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version:
|
|
|
16129
16194
|
</mat-card-content>
|
|
16130
16195
|
</mat-card>
|
|
16131
16196
|
|
|
16132
|
-
`, isInline: true, styles: [".monospaced{font-family:monospace}.mat-cell,.mat-header-cell{padding-left:5px;padding-right:5px}.mat-card,.mat-card-header,.mat-card-content{width:auto}.flexForm{display:flex;flex-direction:column;width:auto}\n", ":host{position:relative;margin:0;padding:0;background:lightgrey;width:100%;flex:1;overflow-y:auto;min-height:0px}\n", ".selected{font-weight:700}\n"], dependencies: [{ kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i3.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i3$2.MatCard, selector: "mat-card", exportAs: ["matCard"] }, { kind: "component", type: i3$2.MatCardHeader, selector: "mat-card-header" }, { kind: "directive", type: i3$2.MatCardContent, selector: "mat-card-content, [mat-card-content], [matCardContent]" }, { kind: "component", type: i4$2.MatTable, selector: "mat-table, table[mat-table]", exportAs: ["matTable"] }, { kind: "directive", type: i4$2.MatHeaderCellDef, selector: "[matHeaderCellDef]" }, { kind: "directive", type: i4$2.MatHeaderRowDef, selector: "[matHeaderRowDef]", inputs: ["matHeaderRowDef", "matHeaderRowDefSticky"] }, { kind: "directive", type: i4$2.MatColumnDef, selector: "[matColumnDef]", inputs: ["sticky", "matColumnDef"] }, { kind: "directive", type: i4$2.MatCellDef, selector: "[matCellDef]" }, { kind: "directive", type: i4$2.MatRowDef, selector: "[matRowDef]", inputs: ["matRowDefColumns", "matRowDefWhen"] }, { kind: "directive", type: i4$2.MatHeaderCell, selector: "mat-header-cell, th[mat-header-cell]" }, { kind: "directive", type: i4$2.MatCell, selector: "mat-cell, td[mat-cell]" }, { kind: "component", type: i4$2.MatHeaderRow, selector: "mat-header-row, tr[mat-header-row]", exportAs: ["matHeaderRow"] }, { kind: "component", type: i4$2.MatRow, selector: "mat-row, tr[mat-row]", exportAs: ["matRow"] }, { kind: "directive", type: ScrollIntoViewDirective, selector: "[scrollIntoViewToBottom]", inputs: ["scrollIntoViewToBottom"] }, { kind: "pipe", type: i1$1.DatePipe, name: "date" }] });
|
|
16197
|
+
`, isInline: true, styles: [".monospaced{font-family:monospace}.mat-cell,.mat-header-cell{padding-left:5px;padding-right:5px}.mat-card,.mat-card-header,.mat-card-content{width:auto}.flexForm{display:flex;flex-direction:column;width:auto}.flexFill{margin:0;width:100%;height:100%;min-width:100%;min-height:100%}\n", ":host{position:relative;margin:0;padding:0;background:lightgrey;width:100%;flex:1;overflow-y:auto;min-height:0px}\n", ".selected{font-weight:700}\n"], dependencies: [{ kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i3.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i3$2.MatCard, selector: "mat-card", exportAs: ["matCard"] }, { kind: "component", type: i3$2.MatCardHeader, selector: "mat-card-header" }, { kind: "directive", type: i3$2.MatCardContent, selector: "mat-card-content, [mat-card-content], [matCardContent]" }, { kind: "component", type: i4$2.MatTable, selector: "mat-table, table[mat-table]", exportAs: ["matTable"] }, { kind: "directive", type: i4$2.MatHeaderCellDef, selector: "[matHeaderCellDef]" }, { kind: "directive", type: i4$2.MatHeaderRowDef, selector: "[matHeaderRowDef]", inputs: ["matHeaderRowDef", "matHeaderRowDefSticky"] }, { kind: "directive", type: i4$2.MatColumnDef, selector: "[matColumnDef]", inputs: ["sticky", "matColumnDef"] }, { kind: "directive", type: i4$2.MatCellDef, selector: "[matCellDef]" }, { kind: "directive", type: i4$2.MatRowDef, selector: "[matRowDef]", inputs: ["matRowDefColumns", "matRowDefWhen"] }, { kind: "directive", type: i4$2.MatHeaderCell, selector: "mat-header-cell, th[mat-header-cell]" }, { kind: "directive", type: i4$2.MatCell, selector: "mat-cell, td[mat-cell]" }, { kind: "component", type: i4$2.MatHeaderRow, selector: "mat-header-row, tr[mat-header-row]", exportAs: ["matHeaderRow"] }, { kind: "component", type: i4$2.MatRow, selector: "mat-row, tr[mat-row]", exportAs: ["matRow"] }, { kind: "directive", type: ScrollIntoViewDirective, selector: "[scrollIntoViewToBottom]", inputs: ["scrollIntoViewToBottom"] }, { kind: "pipe", type: i1$1.DatePipe, name: "date" }] });
|
|
16133
16198
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: RecordingList, decorators: [{
|
|
16134
16199
|
type: Component,
|
|
16135
16200
|
args: [{ selector: 'app-recordinglist', template: `
|
|
@@ -16176,7 +16241,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImpo
|
|
|
16176
16241
|
</mat-card-content>
|
|
16177
16242
|
</mat-card>
|
|
16178
16243
|
|
|
16179
|
-
`, styles: [".monospaced{font-family:monospace}.mat-cell,.mat-header-cell{padding-left:5px;padding-right:5px}.mat-card,.mat-card-header,.mat-card-content{width:auto}.flexForm{display:flex;flex-direction:column;width:auto}\n", ":host{position:relative;margin:0;padding:0;background:lightgrey;width:100%;flex:1;overflow-y:auto;min-height:0px}\n", ".selected{font-weight:700}\n"] }]
|
|
16244
|
+
`, styles: [".monospaced{font-family:monospace}.mat-cell,.mat-header-cell{padding-left:5px;padding-right:5px}.mat-card,.mat-card-header,.mat-card-content{width:auto}.flexForm{display:flex;flex-direction:column;width:auto}.flexFill{margin:0;width:100%;height:100%;min-width:100%;min-height:100%}\n", ":host{position:relative;margin:0;padding:0;background:lightgrey;width:100%;flex:1;overflow-y:auto;min-height:0px}\n", ".selected{font-weight:700}\n"] }]
|
|
16180
16245
|
}], ctorParameters: function () { return []; }, propDecorators: { selectDisabled: [{
|
|
16181
16246
|
type: Input
|
|
16182
16247
|
}], selectedRecordingFileChanged: [{
|
|
@@ -16185,8 +16250,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImpo
|
|
|
16185
16250
|
type: Input
|
|
16186
16251
|
}] } });
|
|
16187
16252
|
|
|
16188
|
-
class RecorderCombiPane {
|
|
16189
|
-
constructor() {
|
|
16253
|
+
class RecorderCombiPane extends ResponsiveComponent {
|
|
16254
|
+
constructor(bpo) {
|
|
16255
|
+
super(bpo);
|
|
16256
|
+
this.bpo = bpo;
|
|
16190
16257
|
this.selectDisabled = false;
|
|
16191
16258
|
this.selectedRecordingFileChanged = new EventEmitter();
|
|
16192
16259
|
this.selectedRecordingFile = null;
|
|
@@ -16208,12 +16275,12 @@ class RecorderCombiPane {
|
|
|
16208
16275
|
this.recordingListComp.selectTop();
|
|
16209
16276
|
}
|
|
16210
16277
|
}
|
|
16211
|
-
RecorderCombiPane.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: RecorderCombiPane, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
16212
|
-
RecorderCombiPane.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.12", type: RecorderCombiPane, selector: "app-recordercombipane", inputs: { selectDisabled: "selectDisabled", selectedRecordingFile: "selectedRecordingFile", audioSignalCollapsed: "audioSignalCollapsed", displayAudioClip: "displayAudioClip", playStartAction: "playStartAction", playSelectionAction: "playSelectionAction", autoPlayOnSelectToggleAction: "autoPlayOnSelectToggleAction", playStopAction: "playStopAction" }, outputs: { selectedRecordingFileChanged: "selectedRecordingFileChanged" }, viewQueries: [{ propertyName: "recordingListComp", first: true, predicate: RecordingList, descendants: true }, { propertyName: "audioDisplay", first: true, predicate: AudioDisplay, descendants: true, static: true }], ngImport: i0, template: `
|
|
16278
|
+
RecorderCombiPane.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: RecorderCombiPane, deps: [{ token: i1$3.BreakpointObserver }], target: i0.ɵɵFactoryTarget.Component });
|
|
16279
|
+
RecorderCombiPane.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.12", type: RecorderCombiPane, selector: "app-recordercombipane", inputs: { selectDisabled: "selectDisabled", selectedRecordingFile: "selectedRecordingFile", audioSignalCollapsed: "audioSignalCollapsed", displayAudioClip: "displayAudioClip", playStartAction: "playStartAction", playSelectionAction: "playSelectionAction", autoPlayOnSelectToggleAction: "autoPlayOnSelectToggleAction", playStopAction: "playStopAction" }, outputs: { selectedRecordingFileChanged: "selectedRecordingFileChanged" }, viewQueries: [{ propertyName: "recordingListComp", first: true, predicate: RecordingList, descendants: true }, { propertyName: "audioDisplay", first: true, predicate: AudioDisplay, descendants: true, static: true }], usesInheritance: true, ngImport: i0, template: `
|
|
16213
16280
|
<div class="scrollList">
|
|
16214
16281
|
<app-recordinglist [selectedRecordingFile]="selectedRecordingFile" [selectDisabled]="selectDisabled" (selectedRecordingFileChanged)="selectRecordingFile($event)"></app-recordinglist>
|
|
16215
16282
|
</div>
|
|
16216
|
-
<div class="collapsable"
|
|
16283
|
+
<div class="collapsable" #asCt [class.active]="!audioSignalCollapsed && !screenXs">
|
|
16217
16284
|
<app-audiodisplay #audioSignalContainer [class.active]="!audioSignalCollapsed"
|
|
16218
16285
|
[audioClip]="displayAudioClip"
|
|
16219
16286
|
[playStartAction]="playStartAction"
|
|
@@ -16221,14 +16288,14 @@ RecorderCombiPane.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", vers
|
|
|
16221
16288
|
[autoPlayOnSelectToggleAction]="autoPlayOnSelectToggleAction"
|
|
16222
16289
|
[playStopAction]="playStopAction"></app-audiodisplay>
|
|
16223
16290
|
</div>
|
|
16224
|
-
`, isInline: true, styles: [".monospaced{font-family:monospace}.mat-cell,.mat-header-cell{padding-left:5px;padding-right:5px}.mat-card,.mat-card-header,.mat-card-content{width:auto}.flexForm{display:flex;flex-direction:column;width:auto}\n", ":host{background-color:#ff0;position:relative;margin:0;padding:0;background:lightgrey;width:100%;flex:1;min-height:0px}\n", ".scrollList{margin:0;padding:0;background:lightgrey;width:100%;height:100%;overflow-y:auto}\n", ".collapsable{display:none;position:absolute;z-index:5}\n", ".collapsable.active{display:flex;position:absolute;bottom:0px;height:90%;width:100%;overflow:hidden;padding:0;z-index:200;box-sizing:border-box;background-color:#0000}\n"], dependencies: [{ kind: "
|
|
16291
|
+
`, isInline: true, styles: [".monospaced{font-family:monospace}.mat-cell,.mat-header-cell{padding-left:5px;padding-right:5px}.mat-card,.mat-card-header,.mat-card-content{width:auto}.flexForm{display:flex;flex-direction:column;width:auto}.flexFill{margin:0;width:100%;height:100%;min-width:100%;min-height:100%}\n", ":host{background-color:#ff0;position:relative;margin:0;padding:0;background:lightgrey;width:100%;flex:1;min-height:0px}\n", ".scrollList{margin:0;padding:0;background:lightgrey;width:100%;height:100%;overflow-y:auto}\n", ".collapsable{display:none;position:absolute;z-index:5}\n", ".collapsable.active{display:flex;position:absolute;bottom:0px;height:90%;width:100%;overflow:hidden;padding:0;z-index:200;box-sizing:border-box;background-color:#0000}\n"], dependencies: [{ kind: "component", type: AudioDisplay, selector: "app-audiodisplay", inputs: ["playStartAction", "playStopAction", "playSelectionAction", "autoPlayOnSelectToggleAction", "audioData", "audioClip"] }, { kind: "component", type: RecordingList, selector: "app-recordinglist", inputs: ["selectDisabled", "selectedRecordingFile"], outputs: ["selectedRecordingFileChanged"] }] });
|
|
16225
16292
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: RecorderCombiPane, decorators: [{
|
|
16226
16293
|
type: Component,
|
|
16227
16294
|
args: [{ selector: 'app-recordercombipane', template: `
|
|
16228
16295
|
<div class="scrollList">
|
|
16229
16296
|
<app-recordinglist [selectedRecordingFile]="selectedRecordingFile" [selectDisabled]="selectDisabled" (selectedRecordingFileChanged)="selectRecordingFile($event)"></app-recordinglist>
|
|
16230
16297
|
</div>
|
|
16231
|
-
<div class="collapsable"
|
|
16298
|
+
<div class="collapsable" #asCt [class.active]="!audioSignalCollapsed && !screenXs">
|
|
16232
16299
|
<app-audiodisplay #audioSignalContainer [class.active]="!audioSignalCollapsed"
|
|
16233
16300
|
[audioClip]="displayAudioClip"
|
|
16234
16301
|
[playStartAction]="playStartAction"
|
|
@@ -16236,8 +16303,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImpo
|
|
|
16236
16303
|
[autoPlayOnSelectToggleAction]="autoPlayOnSelectToggleAction"
|
|
16237
16304
|
[playStopAction]="playStopAction"></app-audiodisplay>
|
|
16238
16305
|
</div>
|
|
16239
|
-
`, styles: [".monospaced{font-family:monospace}.mat-cell,.mat-header-cell{padding-left:5px;padding-right:5px}.mat-card,.mat-card-header,.mat-card-content{width:auto}.flexForm{display:flex;flex-direction:column;width:auto}\n", ":host{background-color:#ff0;position:relative;margin:0;padding:0;background:lightgrey;width:100%;flex:1;min-height:0px}\n", ".scrollList{margin:0;padding:0;background:lightgrey;width:100%;height:100%;overflow-y:auto}\n", ".collapsable{display:none;position:absolute;z-index:5}\n", ".collapsable.active{display:flex;position:absolute;bottom:0px;height:90%;width:100%;overflow:hidden;padding:0;z-index:200;box-sizing:border-box;background-color:#0000}\n"] }]
|
|
16240
|
-
}], ctorParameters: function () { return []; }, propDecorators: { recordingListComp: [{
|
|
16306
|
+
`, styles: [".monospaced{font-family:monospace}.mat-cell,.mat-header-cell{padding-left:5px;padding-right:5px}.mat-card,.mat-card-header,.mat-card-content{width:auto}.flexForm{display:flex;flex-direction:column;width:auto}.flexFill{margin:0;width:100%;height:100%;min-width:100%;min-height:100%}\n", ":host{background-color:#ff0;position:relative;margin:0;padding:0;background:lightgrey;width:100%;flex:1;min-height:0px}\n", ".scrollList{margin:0;padding:0;background:lightgrey;width:100%;height:100%;overflow-y:auto}\n", ".collapsable{display:none;position:absolute;z-index:5}\n", ".collapsable.active{display:flex;position:absolute;bottom:0px;height:90%;width:100%;overflow:hidden;padding:0;z-index:200;box-sizing:border-box;background-color:#0000}\n"] }]
|
|
16307
|
+
}], ctorParameters: function () { return [{ type: i1$3.BreakpointObserver }]; }, propDecorators: { recordingListComp: [{
|
|
16241
16308
|
type: ViewChild,
|
|
16242
16309
|
args: [RecordingList]
|
|
16243
16310
|
}], selectDisabled: [{
|
|
@@ -16264,8 +16331,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImpo
|
|
|
16264
16331
|
}] } });
|
|
16265
16332
|
|
|
16266
16333
|
class AudioRecorder extends BasicRecorder {
|
|
16267
|
-
constructor(changeDetectorRef, renderer, route, dialog, sessionService, recFileService, uploader, config) {
|
|
16268
|
-
super(changeDetectorRef, dialog, sessionService, uploader, config);
|
|
16334
|
+
constructor(bpo, changeDetectorRef, renderer, route, dialog, sessionService, recFileService, uploader, config) {
|
|
16335
|
+
super(bpo, changeDetectorRef, dialog, sessionService, uploader, config);
|
|
16336
|
+
this.bpo = bpo;
|
|
16269
16337
|
this.renderer = renderer;
|
|
16270
16338
|
this.route = route;
|
|
16271
16339
|
this.recFileService = recFileService;
|
|
@@ -16384,7 +16452,7 @@ class AudioRecorder extends BasicRecorder {
|
|
|
16384
16452
|
this.transportActions.stopAction.onAction = () => this.stopItem();
|
|
16385
16453
|
this.transportActions.nextAction.onAction = () => this.stopItem();
|
|
16386
16454
|
//this.transportActions.pauseAction.onAction = () => this.pauseItem();
|
|
16387
|
-
this.playStartAction.onAction = () => this.controlAudioPlayer.start();
|
|
16455
|
+
this.playStartAction.onAction = () => { var _a; return (_a = this.controlAudioPlayer) === null || _a === void 0 ? void 0 : _a.start(); };
|
|
16388
16456
|
}
|
|
16389
16457
|
this.uploader.listener = (ue) => {
|
|
16390
16458
|
this.uploadUpdate(ue);
|
|
@@ -16653,14 +16721,18 @@ class AudioRecorder extends BasicRecorder {
|
|
|
16653
16721
|
this.displayAudioClip = new AudioClip(adh);
|
|
16654
16722
|
//this.audioLoaded=true;
|
|
16655
16723
|
//console.debug(" set recording file: display audio clip set");
|
|
16656
|
-
this.
|
|
16724
|
+
if (this._controlAudioPlayer) {
|
|
16725
|
+
this._controlAudioPlayer.audioClip = this.displayAudioClip;
|
|
16726
|
+
}
|
|
16657
16727
|
this.showRecording();
|
|
16658
16728
|
}
|
|
16659
16729
|
else {
|
|
16660
16730
|
// clear for now ...
|
|
16661
16731
|
this.displayAudioClip = null;
|
|
16662
16732
|
//console.debug("set recording file: display audio clip null");
|
|
16663
|
-
this.
|
|
16733
|
+
if (this._controlAudioPlayer) {
|
|
16734
|
+
this._controlAudioPlayer.audioClip = null;
|
|
16735
|
+
}
|
|
16664
16736
|
if (this._controlAudioPlayer && this._session) {
|
|
16665
16737
|
//... and try to fetch from server
|
|
16666
16738
|
this.liveLevelDisplayState = State.LOADING;
|
|
@@ -16714,7 +16786,9 @@ class AudioRecorder extends BasicRecorder {
|
|
|
16714
16786
|
// this.displayAudioClip could have been changed meanwhile, but the recorder unsubcribes before changing the item. Therefore, there should be no risk to set to wrong item
|
|
16715
16787
|
this.displayAudioClip = new AudioClip(fabDh);
|
|
16716
16788
|
}
|
|
16717
|
-
this.
|
|
16789
|
+
if (this._controlAudioPlayer) {
|
|
16790
|
+
this._controlAudioPlayer.audioClip = this.displayAudioClip;
|
|
16791
|
+
}
|
|
16718
16792
|
this.showRecording();
|
|
16719
16793
|
},
|
|
16720
16794
|
error: err => {
|
|
@@ -16758,7 +16832,9 @@ class AudioRecorder extends BasicRecorder {
|
|
|
16758
16832
|
// this.audioLoaded=true;
|
|
16759
16833
|
// }
|
|
16760
16834
|
}
|
|
16761
|
-
this.
|
|
16835
|
+
if (this._controlAudioPlayer) {
|
|
16836
|
+
this._controlAudioPlayer.audioClip = this.displayAudioClip;
|
|
16837
|
+
}
|
|
16762
16838
|
this.showRecording();
|
|
16763
16839
|
},
|
|
16764
16840
|
error: err => {
|
|
@@ -16797,7 +16873,9 @@ class AudioRecorder extends BasicRecorder {
|
|
|
16797
16873
|
this.displayAudioClip = new AudioClip(fabDh);
|
|
16798
16874
|
//this.audioLoaded=true;
|
|
16799
16875
|
}
|
|
16800
|
-
this.
|
|
16876
|
+
if (this._controlAudioPlayer) {
|
|
16877
|
+
this._controlAudioPlayer.audioClip = this.displayAudioClip;
|
|
16878
|
+
}
|
|
16801
16879
|
this.showRecording();
|
|
16802
16880
|
},
|
|
16803
16881
|
error: err => {
|
|
@@ -16831,7 +16909,9 @@ class AudioRecorder extends BasicRecorder {
|
|
|
16831
16909
|
//this.audioLoaded=true;
|
|
16832
16910
|
//console.debug("set recording file: display audio clip from fetched audio buffer");
|
|
16833
16911
|
}
|
|
16834
|
-
this.
|
|
16912
|
+
if (this._controlAudioPlayer) {
|
|
16913
|
+
this._controlAudioPlayer.audioClip = this.displayAudioClip;
|
|
16914
|
+
}
|
|
16835
16915
|
this.showRecording();
|
|
16836
16916
|
}, error: err => {
|
|
16837
16917
|
console.error("Could not load recording file from server: " + err);
|
|
@@ -16851,7 +16931,9 @@ class AudioRecorder extends BasicRecorder {
|
|
|
16851
16931
|
else {
|
|
16852
16932
|
//console.debug("recording file null");
|
|
16853
16933
|
this.displayAudioClip = null;
|
|
16854
|
-
this.
|
|
16934
|
+
if (this._controlAudioPlayer) {
|
|
16935
|
+
this._controlAudioPlayer.audioClip = null;
|
|
16936
|
+
}
|
|
16855
16937
|
}
|
|
16856
16938
|
this.showRecording();
|
|
16857
16939
|
}
|
|
@@ -17139,9 +17221,12 @@ class AudioRecorder extends BasicRecorder {
|
|
|
17139
17221
|
}
|
|
17140
17222
|
}
|
|
17141
17223
|
updateControlPlaybackPosition() {
|
|
17142
|
-
if (this._controlAudioPlayer
|
|
17143
|
-
|
|
17144
|
-
|
|
17224
|
+
if (this._controlAudioPlayer) {
|
|
17225
|
+
const ppFrames = this._controlAudioPlayer.playPositionFrames;
|
|
17226
|
+
if (ppFrames !== null) {
|
|
17227
|
+
this.recorderCombiPane.audioDisplay.playFramePosition = ppFrames;
|
|
17228
|
+
this.liveLevelDisplay.playFramePosition = ppFrames;
|
|
17229
|
+
}
|
|
17145
17230
|
}
|
|
17146
17231
|
}
|
|
17147
17232
|
audioPlayerUpdate(e) {
|
|
@@ -17160,7 +17245,7 @@ class AudioRecorder extends BasicRecorder {
|
|
|
17160
17245
|
}
|
|
17161
17246
|
}
|
|
17162
17247
|
}
|
|
17163
|
-
AudioRecorder.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: AudioRecorder, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.Renderer2 }, { token: i1$2.ActivatedRoute }, { token: i1$4.MatDialog }, { token: SessionService }, { token: RecordingService }, { token: SpeechRecorderUploader }, { token: SPEECHRECORDER_CONFIG }], target: i0.ɵɵFactoryTarget.Component });
|
|
17248
|
+
AudioRecorder.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: AudioRecorder, deps: [{ token: i1$3.BreakpointObserver }, { token: i0.ChangeDetectorRef }, { token: i0.Renderer2 }, { token: i1$2.ActivatedRoute }, { token: i1$4.MatDialog }, { token: SessionService }, { token: RecordingService }, { token: SpeechRecorderUploader }, { token: SPEECHRECORDER_CONFIG }], target: i0.ɵɵFactoryTarget.Component });
|
|
17164
17249
|
AudioRecorder.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.12", type: AudioRecorder, selector: "app-audiorecorder", inputs: { projectName: "projectName", dataSaved: "dataSaved" }, host: { listeners: { "window:keypress": "onKeyPress($event)", "window:keydown": "onKeyDown($event)" } }, providers: [SessionService], viewQueries: [{ propertyName: "recorderCombiPane", first: true, predicate: RecorderCombiPane, descendants: true, static: true }, { propertyName: "liveLevelDisplay", first: true, predicate: LevelBar, descendants: true, static: true }], usesInheritance: true, ngImport: i0, template: `
|
|
17165
17250
|
<app-warningbar [show]="isTestSession()" warningText="Test recording only!"></app-warningbar>
|
|
17166
17251
|
<app-warningbar [show]="isDefaultAudioTestSession()"
|
|
@@ -17170,18 +17255,17 @@ AudioRecorder.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version:
|
|
|
17170
17255
|
[selectedRecordingFile]="displayRecFile"
|
|
17171
17256
|
[selectDisabled]="isActive()"
|
|
17172
17257
|
[displayAudioClip]="displayAudioClip"
|
|
17173
|
-
[playStartAction]="controlAudioPlayer
|
|
17174
|
-
[playStopAction]="controlAudioPlayer
|
|
17175
|
-
[playSelectionAction]="controlAudioPlayer
|
|
17176
|
-
[autoPlayOnSelectToggleAction]="controlAudioPlayer
|
|
17258
|
+
[playStartAction]="controlAudioPlayer?.startAction"
|
|
17259
|
+
[playStopAction]="controlAudioPlayer?.stopAction"
|
|
17260
|
+
[playSelectionAction]="controlAudioPlayer?.startSelectionAction"
|
|
17261
|
+
[autoPlayOnSelectToggleAction]="controlAudioPlayer?.autoPlayOnSelectToggleAction"
|
|
17177
17262
|
></app-recordercombipane>
|
|
17178
17263
|
|
|
17179
|
-
<div
|
|
17180
|
-
|
|
17181
|
-
<audio-levelbar fxFlex="1 0 1" [streamingMode]="isRecording() || keepLiveLevel" [state]="liveLevelDisplayState"
|
|
17264
|
+
<div [class]="{audioStatusDisplay:!screenXs,audioStatusDisplayXs:screenXs}">
|
|
17265
|
+
<audio-levelbar style="flex:1 0 1%" [streamingMode]="isRecording() || keepLiveLevel" [state]="liveLevelDisplayState"
|
|
17182
17266
|
[displayLevelInfos]="displayAudioClip?.levelInfos"></audio-levelbar>
|
|
17183
|
-
<div
|
|
17184
|
-
<spr-recordingitemcontrols
|
|
17267
|
+
<div style="flex-direction: row">
|
|
17268
|
+
<spr-recordingitemcontrols style="flex:10 0 1%"
|
|
17185
17269
|
[disableAudioDetails]="disableAudioDetails"
|
|
17186
17270
|
[audioLoaded]="audioLoaded"
|
|
17187
17271
|
[playStartAction]="controlAudioPlayer?.startAction"
|
|
@@ -17191,19 +17275,19 @@ AudioRecorder.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version:
|
|
|
17191
17275
|
(onShowRecordingDetails)="audioSignalCollapsed=!audioSignalCollapsed">
|
|
17192
17276
|
</spr-recordingitemcontrols>
|
|
17193
17277
|
|
|
17194
|
-
<app-uploadstatus class="ricontrols dark"
|
|
17278
|
+
<app-uploadstatus *ngIf="screenXs && enableUploadRecordings" class="ricontrols dark" style="flex:0 0 0"
|
|
17195
17279
|
[value]="uploadProgress"
|
|
17196
17280
|
[status]="uploadStatus" [awaitNewUpload]="processingRecording"></app-uploadstatus>
|
|
17197
|
-
<app-wakelockindicator class="ricontrols dark"
|
|
17198
|
-
<app-readystateindicator class="ricontrols dark"
|
|
17281
|
+
<app-wakelockindicator *ngIf="screenXs" class="ricontrols dark" style="flex:0 0 0" [screenLocked]="screenLocked"></app-wakelockindicator>
|
|
17282
|
+
<app-readystateindicator *ngIf="screenXs" class="ricontrols dark" style="flex:0 0 0"
|
|
17199
17283
|
[ready]="dataSaved && !isActive()"></app-readystateindicator>
|
|
17200
17284
|
</div>
|
|
17201
17285
|
</div>
|
|
17202
|
-
<div #controlpanel class="controlpanel"
|
|
17203
|
-
<app-sprstatusdisplay
|
|
17286
|
+
<div #controlpanel class="controlpanel">
|
|
17287
|
+
<app-sprstatusdisplay *ngIf="!screenXs" style="flex:0.333 1 30%" [statusMsg]="statusMsg" [statusAlertType]="statusAlertType"
|
|
17204
17288
|
[statusWaiting]="statusWaiting"
|
|
17205
17289
|
class="hidden-xs"></app-sprstatusdisplay>
|
|
17206
|
-
<div
|
|
17290
|
+
<div style="flex:1 0 100%" class="startstop">
|
|
17207
17291
|
<div style="align-content: center">
|
|
17208
17292
|
<button (click)="startStopPerform()" [disabled]="startDisabled() && stopDisabled()" mat-raised-button class="bigbutton">
|
|
17209
17293
|
<mat-icon [style.color]="startStopNextIconColor()" inline="true">{{startStopNextIconName()}}</mat-icon>
|
|
@@ -17211,18 +17295,18 @@ AudioRecorder.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version:
|
|
|
17211
17295
|
</button>
|
|
17212
17296
|
</div>
|
|
17213
17297
|
</div>
|
|
17214
|
-
<div
|
|
17215
|
-
<div
|
|
17298
|
+
<div style="flex:0.333 1 30%" >
|
|
17299
|
+
<div style="flex:1 1 auto"></div>
|
|
17216
17300
|
|
|
17217
|
-
<app-uploadstatus class="ricontrols"
|
|
17301
|
+
<app-uploadstatus *ngIf="!screenXs && enableUploadRecordings" class="ricontrols" style="flex:0 0 0"
|
|
17218
17302
|
[value]="uploadProgress"
|
|
17219
17303
|
[status]="uploadStatus" [awaitNewUpload]="processingRecording"></app-uploadstatus>
|
|
17220
|
-
<app-wakelockindicator class="ricontrols"
|
|
17221
|
-
<app-readystateindicator class="ricontrols"
|
|
17304
|
+
<app-wakelockindicator *ngIf="!screenXs" class="ricontrols" [screenLocked]="screenLocked"></app-wakelockindicator>
|
|
17305
|
+
<app-readystateindicator *ngIf="!screenXs" class="ricontrols"
|
|
17222
17306
|
[ready]="dataSaved && !isActive()"></app-readystateindicator>
|
|
17223
17307
|
</div>
|
|
17224
17308
|
</div>
|
|
17225
|
-
`, isInline: true, styles: [":host{flex:2;background:lightgrey;display:flex;flex-direction:column;margin:0;padding:0;height:100%;min-height:0px;overflow:hidden}\n", ".ricontrols{padding:4px;box-sizing:border-box;height:100%}\n", ".dark{background:darkgray}\n", ".controlpanel{align-content:center;align-items:center;margin:0;padding:20px;min-height:min-content}\n", ".startstop{width:100%;text-align:center;align-content:center;align-items:center}\n", ".bigbutton{min-width:70px;min-height:50px;font-size:50px;border-radius:20px}\n"
|
|
17309
|
+
`, isInline: true, styles: [":host{flex:2;background:lightgrey;display:flex;flex-direction:column;margin:0;padding:0;height:100%;min-height:0px;overflow:hidden}\n", ".ricontrols{padding:4px;box-sizing:border-box;height:100%}\n", ".dark{background:darkgray}\n", ".controlpanel{display:flex;flex-direction:row;align-content:center;align-items:center;margin:0;padding:20px;min-height:min-content}\n", ".startstop{width:100%;text-align:center;align-content:center;align-items:center}\n", ".bigbutton{min-width:70px;min-height:50px;font-size:50px;border-radius:20px}\n", ".audioStatusDisplay{display:flex;flex-direction:row;height:100px;min-height:100px}\n", ".audioStatusDisplayXs{display:flex;flex-direction:column;height:125px;min-height:125px}\n"], dependencies: [{ kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i3.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: LevelBar, selector: "audio-levelbar", inputs: ["streamingMode", "displayLevelInfos", "state"] }, { kind: "component", type: StatusDisplay, selector: "app-sprstatusdisplay", inputs: ["statusAlertType", "statusMsg", "statusWaiting"] }, { kind: "component", type: RecordingItemControls, selector: "spr-recordingitemcontrols", inputs: ["audioSignalCollapsed", "enableDownload", "peakDbLvl", "agc", "disableAudioDetails", "audioLoaded", "playStartAction", "playStopAction", "displayLevelInfos"], outputs: ["onShowRecordingDetails", "onDownloadRecording"] }, { kind: "component", type: UploadStatus, selector: "app-uploadstatus", inputs: ["value", "awaitNewUpload", "status"] }, { kind: "component", type: WakeLockIndicator, selector: "app-wakelockindicator", inputs: ["screenLocked"] }, { kind: "component", type: ReadyStateIndicator, selector: "app-readystateindicator", inputs: ["ready"] }, { kind: "component", type: WarningBar, selector: "app-warningbar", inputs: ["warningText", "show"] }, { kind: "component", type: RecorderCombiPane, selector: "app-recordercombipane", inputs: ["selectDisabled", "selectedRecordingFile", "audioSignalCollapsed", "displayAudioClip", "playStartAction", "playSelectionAction", "autoPlayOnSelectToggleAction", "playStopAction"], outputs: ["selectedRecordingFileChanged"] }] });
|
|
17226
17310
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: AudioRecorder, decorators: [{
|
|
17227
17311
|
type: Component,
|
|
17228
17312
|
args: [{ selector: 'app-audiorecorder', providers: [SessionService], template: `
|
|
@@ -17234,18 +17318,17 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImpo
|
|
|
17234
17318
|
[selectedRecordingFile]="displayRecFile"
|
|
17235
17319
|
[selectDisabled]="isActive()"
|
|
17236
17320
|
[displayAudioClip]="displayAudioClip"
|
|
17237
|
-
[playStartAction]="controlAudioPlayer
|
|
17238
|
-
[playStopAction]="controlAudioPlayer
|
|
17239
|
-
[playSelectionAction]="controlAudioPlayer
|
|
17240
|
-
[autoPlayOnSelectToggleAction]="controlAudioPlayer
|
|
17321
|
+
[playStartAction]="controlAudioPlayer?.startAction"
|
|
17322
|
+
[playStopAction]="controlAudioPlayer?.stopAction"
|
|
17323
|
+
[playSelectionAction]="controlAudioPlayer?.startSelectionAction"
|
|
17324
|
+
[autoPlayOnSelectToggleAction]="controlAudioPlayer?.autoPlayOnSelectToggleAction"
|
|
17241
17325
|
></app-recordercombipane>
|
|
17242
17326
|
|
|
17243
|
-
<div
|
|
17244
|
-
|
|
17245
|
-
<audio-levelbar fxFlex="1 0 1" [streamingMode]="isRecording() || keepLiveLevel" [state]="liveLevelDisplayState"
|
|
17327
|
+
<div [class]="{audioStatusDisplay:!screenXs,audioStatusDisplayXs:screenXs}">
|
|
17328
|
+
<audio-levelbar style="flex:1 0 1%" [streamingMode]="isRecording() || keepLiveLevel" [state]="liveLevelDisplayState"
|
|
17246
17329
|
[displayLevelInfos]="displayAudioClip?.levelInfos"></audio-levelbar>
|
|
17247
|
-
<div
|
|
17248
|
-
<spr-recordingitemcontrols
|
|
17330
|
+
<div style="flex-direction: row">
|
|
17331
|
+
<spr-recordingitemcontrols style="flex:10 0 1%"
|
|
17249
17332
|
[disableAudioDetails]="disableAudioDetails"
|
|
17250
17333
|
[audioLoaded]="audioLoaded"
|
|
17251
17334
|
[playStartAction]="controlAudioPlayer?.startAction"
|
|
@@ -17255,19 +17338,19 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImpo
|
|
|
17255
17338
|
(onShowRecordingDetails)="audioSignalCollapsed=!audioSignalCollapsed">
|
|
17256
17339
|
</spr-recordingitemcontrols>
|
|
17257
17340
|
|
|
17258
|
-
<app-uploadstatus class="ricontrols dark"
|
|
17341
|
+
<app-uploadstatus *ngIf="screenXs && enableUploadRecordings" class="ricontrols dark" style="flex:0 0 0"
|
|
17259
17342
|
[value]="uploadProgress"
|
|
17260
17343
|
[status]="uploadStatus" [awaitNewUpload]="processingRecording"></app-uploadstatus>
|
|
17261
|
-
<app-wakelockindicator class="ricontrols dark"
|
|
17262
|
-
<app-readystateindicator class="ricontrols dark"
|
|
17344
|
+
<app-wakelockindicator *ngIf="screenXs" class="ricontrols dark" style="flex:0 0 0" [screenLocked]="screenLocked"></app-wakelockindicator>
|
|
17345
|
+
<app-readystateindicator *ngIf="screenXs" class="ricontrols dark" style="flex:0 0 0"
|
|
17263
17346
|
[ready]="dataSaved && !isActive()"></app-readystateindicator>
|
|
17264
17347
|
</div>
|
|
17265
17348
|
</div>
|
|
17266
|
-
<div #controlpanel class="controlpanel"
|
|
17267
|
-
<app-sprstatusdisplay
|
|
17349
|
+
<div #controlpanel class="controlpanel">
|
|
17350
|
+
<app-sprstatusdisplay *ngIf="!screenXs" style="flex:0.333 1 30%" [statusMsg]="statusMsg" [statusAlertType]="statusAlertType"
|
|
17268
17351
|
[statusWaiting]="statusWaiting"
|
|
17269
17352
|
class="hidden-xs"></app-sprstatusdisplay>
|
|
17270
|
-
<div
|
|
17353
|
+
<div style="flex:1 0 100%" class="startstop">
|
|
17271
17354
|
<div style="align-content: center">
|
|
17272
17355
|
<button (click)="startStopPerform()" [disabled]="startDisabled() && stopDisabled()" mat-raised-button class="bigbutton">
|
|
17273
17356
|
<mat-icon [style.color]="startStopNextIconColor()" inline="true">{{startStopNextIconName()}}</mat-icon>
|
|
@@ -17275,20 +17358,20 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImpo
|
|
|
17275
17358
|
</button>
|
|
17276
17359
|
</div>
|
|
17277
17360
|
</div>
|
|
17278
|
-
<div
|
|
17279
|
-
<div
|
|
17361
|
+
<div style="flex:0.333 1 30%" >
|
|
17362
|
+
<div style="flex:1 1 auto"></div>
|
|
17280
17363
|
|
|
17281
|
-
<app-uploadstatus class="ricontrols"
|
|
17364
|
+
<app-uploadstatus *ngIf="!screenXs && enableUploadRecordings" class="ricontrols" style="flex:0 0 0"
|
|
17282
17365
|
[value]="uploadProgress"
|
|
17283
17366
|
[status]="uploadStatus" [awaitNewUpload]="processingRecording"></app-uploadstatus>
|
|
17284
|
-
<app-wakelockindicator class="ricontrols"
|
|
17285
|
-
<app-readystateindicator class="ricontrols"
|
|
17367
|
+
<app-wakelockindicator *ngIf="!screenXs" class="ricontrols" [screenLocked]="screenLocked"></app-wakelockindicator>
|
|
17368
|
+
<app-readystateindicator *ngIf="!screenXs" class="ricontrols"
|
|
17286
17369
|
[ready]="dataSaved && !isActive()"></app-readystateindicator>
|
|
17287
17370
|
</div>
|
|
17288
17371
|
</div>
|
|
17289
|
-
`, styles: [":host{flex:2;background:lightgrey;display:flex;flex-direction:column;margin:0;padding:0;height:100%;min-height:0px;overflow:hidden}\n", ".ricontrols{padding:4px;box-sizing:border-box;height:100%}\n", ".dark{background:darkgray}\n", ".controlpanel{align-content:center;align-items:center;margin:0;padding:20px;min-height:min-content}\n", ".startstop{width:100%;text-align:center;align-content:center;align-items:center}\n", ".bigbutton{min-width:70px;min-height:50px;font-size:50px;border-radius:20px}\n"] }]
|
|
17372
|
+
`, styles: [":host{flex:2;background:lightgrey;display:flex;flex-direction:column;margin:0;padding:0;height:100%;min-height:0px;overflow:hidden}\n", ".ricontrols{padding:4px;box-sizing:border-box;height:100%}\n", ".dark{background:darkgray}\n", ".controlpanel{display:flex;flex-direction:row;align-content:center;align-items:center;margin:0;padding:20px;min-height:min-content}\n", ".startstop{width:100%;text-align:center;align-content:center;align-items:center}\n", ".bigbutton{min-width:70px;min-height:50px;font-size:50px;border-radius:20px}\n", ".audioStatusDisplay{display:flex;flex-direction:row;height:100px;min-height:100px}\n", ".audioStatusDisplayXs{display:flex;flex-direction:column;height:125px;min-height:125px}\n"] }]
|
|
17290
17373
|
}], ctorParameters: function () {
|
|
17291
|
-
return [{ type: i0.ChangeDetectorRef }, { type: i0.Renderer2 }, { type: i1$2.ActivatedRoute }, { type: i1$4.MatDialog }, { type: SessionService }, { type: RecordingService }, { type: SpeechRecorderUploader }, { type: SpeechRecorderConfig, decorators: [{
|
|
17374
|
+
return [{ type: i1$3.BreakpointObserver }, { type: i0.ChangeDetectorRef }, { type: i0.Renderer2 }, { type: i1$2.ActivatedRoute }, { type: i1$4.MatDialog }, { type: SessionService }, { type: RecordingService }, { type: SpeechRecorderUploader }, { type: SpeechRecorderConfig, decorators: [{
|
|
17292
17375
|
type: Inject,
|
|
17293
17376
|
args: [SPEECHRECORDER_CONFIG]
|
|
17294
17377
|
}] }];
|
|
@@ -17479,20 +17562,20 @@ class SpeechrecorderngModule {
|
|
|
17479
17562
|
}
|
|
17480
17563
|
SpeechrecorderngModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: SpeechrecorderngModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
17481
17564
|
SpeechrecorderngModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.2.12", ngImport: i0, type: SpeechrecorderngModule, declarations: [AudioSignal, Sonagram, ScrollPaneHorizontal, AudioClipUIContainer, AudioDisplayScrollPane, AudioDisplay, AudioDisplayPlayer, AudioDisplayControl, LevelBar, Progress, SimpleTrafficLight, Recinstructions, Prompter, PromptContainer, PromptingContainer, Prompting, StatusDisplay,
|
|
17482
|
-
ProgressDisplay, RecordingItemDisplay, RecordingItemControls, UploadStatus, TransportPanel, WakeLockIndicator, ReadyStateIndicator, ControlPanel, WarningBar, AudioRecorder, SessionManager, MessageDialog, SessionFinishedDialog, SpeechrecorderngComponent, AudioRecorderComponent, RecordingFileViewComponent, RecordingFileUI, ScrollIntoViewDirective, RecordingFileNaviComponent, RecordingFileMetaComponent, RecordingList, RecorderCombiPane, AudioRecorder], imports: [i1$2.RouterModule,
|
|
17483
|
-
SpeechrecorderngModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: SpeechrecorderngModule, providers: [SessionService, ProjectService, ScriptService, RecordingService, RecordingFileService, SpeechRecorderUploader], imports: [RouterModule.forChild(SPR_ROUTES),
|
|
17565
|
+
ProgressDisplay, RecordingItemDisplay, RecordingItemControls, UploadStatus, TransportPanel, WakeLockIndicator, ReadyStateIndicator, ControlPanel, WarningBar, AudioRecorder, SessionManager, MessageDialog, SessionFinishedDialog, SpeechrecorderngComponent, AudioRecorderComponent, RecordingFileViewComponent, RecordingFileUI, ScrollIntoViewDirective, RecordingFileNaviComponent, RecordingFileMetaComponent, RecordingList, RecorderCombiPane, AudioRecorder], imports: [i1$2.RouterModule, CommonModule, MatIconModule, MatButtonModule, MatDialogModule, MatProgressBarModule, MatProgressSpinnerModule, MatTooltipModule, HttpClientModule, MatCheckboxModule, MatCardModule, MatDividerModule, MatGridListModule, MatTableModule, MatInputModule, MatSelectModule, MatSnackBarModule, MatMenuModule], exports: [MessageDialog, SpeechrecorderngComponent, ScrollPaneHorizontal, AudioClipUIContainer, AudioDisplayScrollPane, AudioDisplay, AudioDisplayPlayer, AudioDisplayControl, LevelBar, AudioRecorder] });
|
|
17566
|
+
SpeechrecorderngModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: SpeechrecorderngModule, providers: [SessionService, ProjectService, ScriptService, RecordingService, RecordingFileService, SpeechRecorderUploader], imports: [RouterModule.forChild(SPR_ROUTES), CommonModule, MatIconModule, MatButtonModule, MatDialogModule, MatProgressBarModule, MatProgressSpinnerModule, MatTooltipModule, HttpClientModule, MatCheckboxModule, MatCardModule, MatDividerModule, MatGridListModule, MatTableModule, MatInputModule, MatSelectModule, MatSnackBarModule, MatMenuModule] });
|
|
17484
17567
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: SpeechrecorderngModule, decorators: [{
|
|
17485
17568
|
type: NgModule,
|
|
17486
17569
|
args: [{
|
|
17487
17570
|
declarations: [AudioSignal, Sonagram, ScrollPaneHorizontal, AudioClipUIContainer, AudioDisplayScrollPane, AudioDisplay, AudioDisplayPlayer, AudioDisplayControl, LevelBar, Progress, SimpleTrafficLight, Recinstructions, Prompter, PromptContainer, PromptingContainer, Prompting, StatusDisplay,
|
|
17488
17571
|
ProgressDisplay, RecordingItemDisplay, RecordingItemControls, UploadStatus, TransportPanel, WakeLockIndicator, ReadyStateIndicator, ControlPanel, WarningBar, AudioRecorder, SessionManager, MessageDialog, SessionFinishedDialog, SpeechrecorderngComponent, AudioRecorderComponent, RecordingFileViewComponent, RecordingFileUI, ScrollIntoViewDirective, RecordingFileNaviComponent, RecordingFileMetaComponent, RecordingList, RecorderCombiPane, AudioRecorder],
|
|
17489
17572
|
exports: [MessageDialog, SpeechrecorderngComponent, ScrollPaneHorizontal, AudioClipUIContainer, AudioDisplayScrollPane, AudioDisplay, AudioDisplayPlayer, AudioDisplayControl, LevelBar, AudioRecorder],
|
|
17490
|
-
imports: [RouterModule.forChild(SPR_ROUTES),
|
|
17573
|
+
imports: [RouterModule.forChild(SPR_ROUTES), CommonModule, MatIconModule, MatButtonModule, MatDialogModule, MatProgressBarModule, MatProgressSpinnerModule, MatTooltipModule, HttpClientModule, MatCheckboxModule, MatCardModule, MatDividerModule, MatGridListModule, MatTableModule, MatInputModule, MatSelectModule, MatSnackBarModule, MatMenuModule],
|
|
17491
17574
|
providers: [SessionService, ProjectService, ScriptService, RecordingService, RecordingFileService, SpeechRecorderUploader]
|
|
17492
17575
|
}]
|
|
17493
17576
|
}] });
|
|
17494
17577
|
|
|
17495
|
-
const VERSION = '3.3.
|
|
17578
|
+
const VERSION = '3.3.4';
|
|
17496
17579
|
|
|
17497
17580
|
/*
|
|
17498
17581
|
* Public API Surface of speechrecorderng
|