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';
|
|
@@ -2548,6 +2547,7 @@ class AudioPlayer {
|
|
|
2548
2547
|
return this._stopAction;
|
|
2549
2548
|
}
|
|
2550
2549
|
set audioClip(audioClip) {
|
|
2550
|
+
this._audioClip = audioClip;
|
|
2551
2551
|
let length = 0;
|
|
2552
2552
|
let chs = 0;
|
|
2553
2553
|
if (audioClip && audioClip.audioDataHolder) {
|
|
@@ -2570,7 +2570,6 @@ class AudioPlayer {
|
|
|
2570
2570
|
else {
|
|
2571
2571
|
this.audioSource = null;
|
|
2572
2572
|
}
|
|
2573
|
-
this._audioClip = audioClip;
|
|
2574
2573
|
}
|
|
2575
2574
|
get audioSource() {
|
|
2576
2575
|
return this._audioSource;
|
|
@@ -7825,6 +7824,26 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImpo
|
|
|
7825
7824
|
type: Input
|
|
7826
7825
|
}] } });
|
|
7827
7826
|
|
|
7827
|
+
class ResponsiveComponent {
|
|
7828
|
+
constructor(breakpointObserver) {
|
|
7829
|
+
this.breakpointObserver = breakpointObserver;
|
|
7830
|
+
this.screenXs = false;
|
|
7831
|
+
breakpointObserver
|
|
7832
|
+
.observe([
|
|
7833
|
+
Breakpoints.XSmall
|
|
7834
|
+
])
|
|
7835
|
+
.subscribe(result => {
|
|
7836
|
+
this.screenXs = (result.matches);
|
|
7837
|
+
//console.debug("Screen XS: "+this.screenXs);
|
|
7838
|
+
});
|
|
7839
|
+
}
|
|
7840
|
+
}
|
|
7841
|
+
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 });
|
|
7842
|
+
ResponsiveComponent.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "14.2.12", type: ResponsiveComponent, ngImport: i0 });
|
|
7843
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: ResponsiveComponent, decorators: [{
|
|
7844
|
+
type: Directive
|
|
7845
|
+
}], ctorParameters: function () { return [{ type: i1$3.BreakpointObserver }]; } });
|
|
7846
|
+
|
|
7828
7847
|
class ScrollIntoViewDirective {
|
|
7829
7848
|
constructor(elRef) {
|
|
7830
7849
|
this.elRef = elRef;
|
|
@@ -8479,8 +8498,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImpo
|
|
|
8479
8498
|
type: HostListener,
|
|
8480
8499
|
args: ['touchcancel', ['$event']]
|
|
8481
8500
|
}] } });
|
|
8482
|
-
class Prompting {
|
|
8483
|
-
constructor() {
|
|
8501
|
+
class Prompting extends ResponsiveComponent {
|
|
8502
|
+
constructor(bpo) {
|
|
8503
|
+
super(bpo);
|
|
8504
|
+
this.bpo = bpo;
|
|
8484
8505
|
this.promptItem = null;
|
|
8485
8506
|
this.showPrompt = false;
|
|
8486
8507
|
this.items = undefined;
|
|
@@ -8501,16 +8522,16 @@ class Prompting {
|
|
|
8501
8522
|
this.onPrevItem.emit();
|
|
8502
8523
|
}
|
|
8503
8524
|
}
|
|
8504
|
-
Prompting.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: Prompting, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
8505
|
-
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: `
|
|
8525
|
+
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 });
|
|
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 }], usesInheritance: true, ngImport: i0, template: `
|
|
8506
8527
|
|
|
8507
8528
|
<app-simpletrafficlight [status]="startStopSignalState"></app-simpletrafficlight>
|
|
8508
8529
|
<app-sprpromptingcontainer [projectName]="projectName" [promptItem]="promptItem" [showPrompt]="showPrompt"
|
|
8509
8530
|
[itemCount]="items?.length" [selectedItemIdx]="selectedItemIdx"
|
|
8510
8531
|
[transportActions]="transportActions"></app-sprpromptingcontainer>
|
|
8511
|
-
<app-sprprogress
|
|
8532
|
+
<app-sprprogress *ngIf="!screenXs" [items]="items" [selectedItemIdx]="selectedItemIdx"
|
|
8512
8533
|
(onRowSelect)="itemSelect($event)"></app-sprprogress>
|
|
8513
|
-
<div
|
|
8534
|
+
<div #asCt [class.active]="!audioSignalCollapsed && !screenXs">
|
|
8514
8535
|
|
|
8515
8536
|
<app-audiodisplay #audioSignalContainer [class.active]="!audioSignalCollapsed"
|
|
8516
8537
|
[audioClip]="displayAudioClip"
|
|
@@ -8524,7 +8545,7 @@ Prompting.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14
|
|
|
8524
8545
|
|
|
8525
8546
|
|
|
8526
8547
|
|
|
8527
|
-
`, 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$
|
|
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$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"] }] });
|
|
8528
8549
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: Prompting, decorators: [{
|
|
8529
8550
|
type: Component,
|
|
8530
8551
|
args: [{ selector: 'app-sprprompting', template: `
|
|
@@ -8533,9 +8554,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImpo
|
|
|
8533
8554
|
<app-sprpromptingcontainer [projectName]="projectName" [promptItem]="promptItem" [showPrompt]="showPrompt"
|
|
8534
8555
|
[itemCount]="items?.length" [selectedItemIdx]="selectedItemIdx"
|
|
8535
8556
|
[transportActions]="transportActions"></app-sprpromptingcontainer>
|
|
8536
|
-
<app-sprprogress
|
|
8557
|
+
<app-sprprogress *ngIf="!screenXs" [items]="items" [selectedItemIdx]="selectedItemIdx"
|
|
8537
8558
|
(onRowSelect)="itemSelect($event)"></app-sprprogress>
|
|
8538
|
-
<div
|
|
8559
|
+
<div #asCt [class.active]="!audioSignalCollapsed && !screenXs">
|
|
8539
8560
|
|
|
8540
8561
|
<app-audiodisplay #audioSignalContainer [class.active]="!audioSignalCollapsed"
|
|
8541
8562
|
[audioClip]="displayAudioClip"
|
|
@@ -8550,7 +8571,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImpo
|
|
|
8550
8571
|
|
|
8551
8572
|
|
|
8552
8573
|
`, 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"] }]
|
|
8553
|
-
}], propDecorators: { simpleTrafficLight: [{
|
|
8574
|
+
}], ctorParameters: function () { return [{ type: i1$3.BreakpointObserver }]; }, propDecorators: { simpleTrafficLight: [{
|
|
8554
8575
|
type: ViewChild,
|
|
8555
8576
|
args: [SimpleTrafficLight, { static: true }]
|
|
8556
8577
|
}], audioDisplay: [{
|
|
@@ -10542,6 +10563,7 @@ class UploadStatus {
|
|
|
10542
10563
|
constructor() {
|
|
10543
10564
|
this._awaitNewUpload = false;
|
|
10544
10565
|
this.spinnerMode = 'determinate';
|
|
10566
|
+
this._colorStatus = 'primary';
|
|
10545
10567
|
this._value = 100;
|
|
10546
10568
|
this.displayValue = null;
|
|
10547
10569
|
this.toolTipText = '';
|
|
@@ -10579,6 +10601,15 @@ class UploadStatus {
|
|
|
10579
10601
|
}
|
|
10580
10602
|
set status(status) {
|
|
10581
10603
|
this._status = status;
|
|
10604
|
+
if ('accent' === status) {
|
|
10605
|
+
this._colorStatus = 'accent';
|
|
10606
|
+
}
|
|
10607
|
+
else if ('warn' === status) {
|
|
10608
|
+
this._colorStatus = 'warn';
|
|
10609
|
+
}
|
|
10610
|
+
else {
|
|
10611
|
+
this._colorStatus = 'primary';
|
|
10612
|
+
}
|
|
10582
10613
|
this._updateSpinner();
|
|
10583
10614
|
}
|
|
10584
10615
|
get status() {
|
|
@@ -10627,8 +10658,9 @@ class TransportActions {
|
|
|
10627
10658
|
this.bwdAction = new Action('Backward');
|
|
10628
10659
|
}
|
|
10629
10660
|
}
|
|
10630
|
-
class TransportPanel {
|
|
10631
|
-
constructor() {
|
|
10661
|
+
class TransportPanel extends ResponsiveComponent {
|
|
10662
|
+
constructor(breakpointObserver) {
|
|
10663
|
+
super(breakpointObserver);
|
|
10632
10664
|
this.navigationEnabled = true;
|
|
10633
10665
|
this.pausingEnabled = true;
|
|
10634
10666
|
}
|
|
@@ -10700,28 +10732,28 @@ class TransportPanel {
|
|
|
10700
10732
|
}
|
|
10701
10733
|
}
|
|
10702
10734
|
}
|
|
10703
|
-
TransportPanel.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: TransportPanel, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
10704
|
-
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: `
|
|
10735
|
+
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 });
|
|
10736
|
+
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: `
|
|
10705
10737
|
<button id="bwdBtn" *ngIf="navigationEnabled" (click)="actions.bwdAction.perform()" [disabled]="bwdDisabled()"
|
|
10706
10738
|
mat-raised-button>
|
|
10707
10739
|
<mat-icon>chevron_left</mat-icon>
|
|
10708
10740
|
</button>
|
|
10709
10741
|
<button (click)="startStopNextPerform()" [disabled]="startDisabled() && stopDisabled() && nextDisabled()" mat-raised-button>
|
|
10710
10742
|
<mat-icon [style.color]="startStopNextIconColor()">{{startStopNextIconName()}}</mat-icon><mat-icon *ngIf="!nextDisabled()" [style.color]="nextDisabled() ? 'grey' : 'black'">chevron_right</mat-icon>
|
|
10711
|
-
<span
|
|
10743
|
+
<span *ngIf="!screenXs">{{startStopNextName()}}</span>
|
|
10712
10744
|
</button>
|
|
10713
10745
|
<button *ngIf="pausingEnabled" (click)="actions.pauseAction.perform()" [disabled]="pauseDisabled()" mat-raised-button>
|
|
10714
10746
|
<mat-icon>pause</mat-icon>
|
|
10715
|
-
<span
|
|
10747
|
+
<span *ngIf="!screenXs">Pause</span>
|
|
10716
10748
|
</button>
|
|
10717
|
-
<button id="fwdNextBtn" *ngIf="navigationEnabled"
|
|
10749
|
+
<button id="fwdNextBtn" *ngIf="navigationEnabled && !screenXs" (click)="actions.fwdNextAction.perform()" [disabled]="fwdNextDisabled()" mat-raised-button>
|
|
10718
10750
|
<mat-icon>redo</mat-icon>
|
|
10719
10751
|
</button>
|
|
10720
10752
|
<button id="fwdBtn" *ngIf="navigationEnabled" (click)="actions.fwdAction.perform()" [disabled]="fwdDisabled()" mat-raised-button>
|
|
10721
10753
|
<mat-icon>chevron_right</mat-icon>
|
|
10722
10754
|
</button>
|
|
10723
10755
|
|
|
10724
|
-
`, 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$
|
|
10756
|
+
`, 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"] }] });
|
|
10725
10757
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: TransportPanel, decorators: [{
|
|
10726
10758
|
type: Component,
|
|
10727
10759
|
args: [{ selector: 'app-sprtransport', template: `
|
|
@@ -10731,13 +10763,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImpo
|
|
|
10731
10763
|
</button>
|
|
10732
10764
|
<button (click)="startStopNextPerform()" [disabled]="startDisabled() && stopDisabled() && nextDisabled()" mat-raised-button>
|
|
10733
10765
|
<mat-icon [style.color]="startStopNextIconColor()">{{startStopNextIconName()}}</mat-icon><mat-icon *ngIf="!nextDisabled()" [style.color]="nextDisabled() ? 'grey' : 'black'">chevron_right</mat-icon>
|
|
10734
|
-
<span
|
|
10766
|
+
<span *ngIf="!screenXs">{{startStopNextName()}}</span>
|
|
10735
10767
|
</button>
|
|
10736
10768
|
<button *ngIf="pausingEnabled" (click)="actions.pauseAction.perform()" [disabled]="pauseDisabled()" mat-raised-button>
|
|
10737
10769
|
<mat-icon>pause</mat-icon>
|
|
10738
|
-
<span
|
|
10770
|
+
<span *ngIf="!screenXs">Pause</span>
|
|
10739
10771
|
</button>
|
|
10740
|
-
<button id="fwdNextBtn" *ngIf="navigationEnabled"
|
|
10772
|
+
<button id="fwdNextBtn" *ngIf="navigationEnabled && !screenXs" (click)="actions.fwdNextAction.perform()" [disabled]="fwdNextDisabled()" mat-raised-button>
|
|
10741
10773
|
<mat-icon>redo</mat-icon>
|
|
10742
10774
|
</button>
|
|
10743
10775
|
<button id="fwdBtn" *ngIf="navigationEnabled" (click)="actions.fwdAction.perform()" [disabled]="fwdDisabled()" mat-raised-button>
|
|
@@ -10745,7 +10777,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImpo
|
|
|
10745
10777
|
</button>
|
|
10746
10778
|
|
|
10747
10779
|
`, 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"] }]
|
|
10748
|
-
}], propDecorators: { readonly: [{
|
|
10780
|
+
}], ctorParameters: function () { return [{ type: i1$3.BreakpointObserver }]; }, propDecorators: { readonly: [{
|
|
10749
10781
|
type: Input
|
|
10750
10782
|
}], actions: [{
|
|
10751
10783
|
type: Input
|
|
@@ -10801,8 +10833,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImpo
|
|
|
10801
10833
|
}], ctorParameters: function () { return []; }, propDecorators: { ready: [{
|
|
10802
10834
|
type: Input
|
|
10803
10835
|
}] } });
|
|
10804
|
-
class ControlPanel {
|
|
10805
|
-
constructor(dialog) {
|
|
10836
|
+
class ControlPanel extends ResponsiveComponent {
|
|
10837
|
+
constructor(bpo, dialog) {
|
|
10838
|
+
super(bpo);
|
|
10839
|
+
this.bpo = bpo;
|
|
10806
10840
|
this.dialog = dialog;
|
|
10807
10841
|
this.processing = false;
|
|
10808
10842
|
this.navigationEnabled = true;
|
|
@@ -10815,44 +10849,44 @@ class ControlPanel {
|
|
|
10815
10849
|
return this._ready;
|
|
10816
10850
|
}
|
|
10817
10851
|
}
|
|
10818
|
-
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 });
|
|
10819
|
-
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: `
|
|
10820
|
-
<div
|
|
10821
|
-
<app-sprstatusdisplay
|
|
10852
|
+
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 });
|
|
10853
|
+
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: `
|
|
10854
|
+
<div *ngIf="!screenXs" style="flex-direction: row" >
|
|
10855
|
+
<app-sprstatusdisplay style="flex:0 0 0" [statusMsg]="statusMsg" [statusAlertType]="statusAlertType" [statusWaiting]="statusWaiting"
|
|
10822
10856
|
class="hidden-xs"></app-sprstatusdisplay>
|
|
10823
|
-
<app-sprtransport
|
|
10824
|
-
<app-uploadstatus
|
|
10857
|
+
<app-sprtransport style="flex:10 0 0" [readonly]="readonly" [actions]="transportActions" [navigationEnabled]="navigationEnabled"></app-sprtransport>
|
|
10858
|
+
<app-uploadstatus style="flex:0 0 0" *ngIf="enableUploadRecordings" [value]="uploadProgress"
|
|
10825
10859
|
[status]="uploadStatus" [awaitNewUpload]="processing"></app-uploadstatus>
|
|
10826
10860
|
<app-readystateindicator [ready]="_ready"></app-readystateindicator>
|
|
10827
10861
|
</div>
|
|
10828
|
-
<div
|
|
10829
|
-
<div
|
|
10830
|
-
<app-sprstatusdisplay
|
|
10862
|
+
<div *ngIf="screenXs"style="flex-direction: column" >
|
|
10863
|
+
<div style="flex-direction: row" class="flexFill" >
|
|
10864
|
+
<app-sprstatusdisplay style="flex:10 0 0;flex-align:left" [statusMsg]="statusMsg" [statusAlertType]="statusAlertType" [statusWaiting]="statusWaiting"
|
|
10831
10865
|
class="hidden-xs"></app-sprstatusdisplay>
|
|
10832
|
-
<app-uploadstatus
|
|
10866
|
+
<app-uploadstatus style="flex:0 0 0" *ngIf="enableUploadRecordings" [value]="uploadProgress"
|
|
10833
10867
|
[status]="uploadStatus" [awaitNewUpload]="processing"></app-uploadstatus>
|
|
10834
10868
|
<app-readystateindicator [ready]="_ready"></app-readystateindicator>
|
|
10835
10869
|
</div>
|
|
10836
10870
|
<app-sprtransport [readonly]="readonly" [actions]="transportActions" [navigationEnabled]="navigationEnabled"></app-sprtransport>
|
|
10837
10871
|
|
|
10838
10872
|
</div>
|
|
10839
|
-
`, isInline: true, styles: ["div{align-content:center;align-items:center;margin:0;padding:20px;min-height:min-content}\n"], dependencies: [{ kind: "directive", type:
|
|
10873
|
+
`, 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"] }] });
|
|
10840
10874
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: ControlPanel, decorators: [{
|
|
10841
10875
|
type: Component,
|
|
10842
10876
|
args: [{ selector: 'app-sprcontrolpanel', template: `
|
|
10843
|
-
<div
|
|
10844
|
-
<app-sprstatusdisplay
|
|
10877
|
+
<div *ngIf="!screenXs" style="flex-direction: row" >
|
|
10878
|
+
<app-sprstatusdisplay style="flex:0 0 0" [statusMsg]="statusMsg" [statusAlertType]="statusAlertType" [statusWaiting]="statusWaiting"
|
|
10845
10879
|
class="hidden-xs"></app-sprstatusdisplay>
|
|
10846
|
-
<app-sprtransport
|
|
10847
|
-
<app-uploadstatus
|
|
10880
|
+
<app-sprtransport style="flex:10 0 0" [readonly]="readonly" [actions]="transportActions" [navigationEnabled]="navigationEnabled"></app-sprtransport>
|
|
10881
|
+
<app-uploadstatus style="flex:0 0 0" *ngIf="enableUploadRecordings" [value]="uploadProgress"
|
|
10848
10882
|
[status]="uploadStatus" [awaitNewUpload]="processing"></app-uploadstatus>
|
|
10849
10883
|
<app-readystateindicator [ready]="_ready"></app-readystateindicator>
|
|
10850
10884
|
</div>
|
|
10851
|
-
<div
|
|
10852
|
-
<div
|
|
10853
|
-
<app-sprstatusdisplay
|
|
10885
|
+
<div *ngIf="screenXs"style="flex-direction: column" >
|
|
10886
|
+
<div style="flex-direction: row" class="flexFill" >
|
|
10887
|
+
<app-sprstatusdisplay style="flex:10 0 0;flex-align:left" [statusMsg]="statusMsg" [statusAlertType]="statusAlertType" [statusWaiting]="statusWaiting"
|
|
10854
10888
|
class="hidden-xs"></app-sprstatusdisplay>
|
|
10855
|
-
<app-uploadstatus
|
|
10889
|
+
<app-uploadstatus style="flex:0 0 0" *ngIf="enableUploadRecordings" [value]="uploadProgress"
|
|
10856
10890
|
[status]="uploadStatus" [awaitNewUpload]="processing"></app-uploadstatus>
|
|
10857
10891
|
<app-readystateindicator [ready]="_ready"></app-readystateindicator>
|
|
10858
10892
|
</div>
|
|
@@ -10860,7 +10894,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImpo
|
|
|
10860
10894
|
|
|
10861
10895
|
</div>
|
|
10862
10896
|
`, styles: ["div{align-content:center;align-items:center;margin:0;padding:20px;min-height:min-content}\n"] }]
|
|
10863
|
-
}], ctorParameters: function () { return [{ type: i1$4.MatDialog }]; }, propDecorators: { statusDisplay: [{
|
|
10897
|
+
}], ctorParameters: function () { return [{ type: i1$3.BreakpointObserver }, { type: i1$4.MatDialog }]; }, propDecorators: { statusDisplay: [{
|
|
10864
10898
|
type: ViewChild,
|
|
10865
10899
|
args: [StatusDisplay, { static: true }]
|
|
10866
10900
|
}], transportPanel: [{
|
|
@@ -11455,8 +11489,10 @@ class StreamLevelMeasure {
|
|
|
11455
11489
|
|
|
11456
11490
|
const MIN_DB_LEVEL = -40.0;
|
|
11457
11491
|
const DEFAULT_WARN_DB_LEVEL = -2;
|
|
11458
|
-
class RecordingItemControls {
|
|
11459
|
-
constructor(ref, changeDetectorRef) {
|
|
11492
|
+
class RecordingItemControls extends ResponsiveComponent {
|
|
11493
|
+
constructor(bpo, ref, changeDetectorRef) {
|
|
11494
|
+
super(bpo);
|
|
11495
|
+
this.bpo = bpo;
|
|
11460
11496
|
this.ref = ref;
|
|
11461
11497
|
this.changeDetectorRef = changeDetectorRef;
|
|
11462
11498
|
this.ce = null;
|
|
@@ -11509,8 +11545,8 @@ class RecordingItemControls {
|
|
|
11509
11545
|
// this.status = 'ERROR';
|
|
11510
11546
|
}
|
|
11511
11547
|
}
|
|
11512
|
-
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 });
|
|
11513
|
-
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: `
|
|
11548
|
+
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 });
|
|
11549
|
+
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: `
|
|
11514
11550
|
<button matTooltip="Start playback" (click)="playStartAction?.perform()"
|
|
11515
11551
|
[disabled]="playStartAction?.disabled"
|
|
11516
11552
|
[style.color]="playStartAction?.disabled ? 'grey' : 'green'">
|
|
@@ -11521,7 +11557,7 @@ RecordingItemControls.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0",
|
|
|
11521
11557
|
[style.color]="playStopAction?.disabled ? 'grey' : 'yellow'">
|
|
11522
11558
|
<mat-icon>stop</mat-icon>
|
|
11523
11559
|
</button>
|
|
11524
|
-
<button
|
|
11560
|
+
<button *ngIf="!screenXs" matTooltip="Toggle detailed audio display" [disabled]="disableAudioDetails || !audioLoaded"
|
|
11525
11561
|
(click)="showRecordingDetails()">
|
|
11526
11562
|
<mat-icon>{{(audioSignalCollapsed) ? "expand_less" : "expand_more"}}</mat-icon>
|
|
11527
11563
|
</button>
|
|
@@ -11532,7 +11568,7 @@ RecordingItemControls.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0",
|
|
|
11532
11568
|
<div style="min-width: 14ch;padding:2px"><table style="border-style: none"><tr><td>Peak:</td><td><span matTooltip="Peak level"
|
|
11533
11569
|
[style.color]="(peakDbLvl > warnDbLevel)?'red':'black'">{{peakDbLvl | number:'1.1-1'}} dB </span></td></tr>
|
|
11534
11570
|
<tr *ngIf="_agc"><td>AGC:</td><td><span matTooltip="Auto gain control">{{agcString}}</span></td></tr></table></div>
|
|
11535
|
-
`, 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$
|
|
11571
|
+
`, 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" }] });
|
|
11536
11572
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: RecordingItemControls, decorators: [{
|
|
11537
11573
|
type: Component,
|
|
11538
11574
|
args: [{ selector: 'spr-recordingitemcontrols', template: `
|
|
@@ -11546,7 +11582,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImpo
|
|
|
11546
11582
|
[style.color]="playStopAction?.disabled ? 'grey' : 'yellow'">
|
|
11547
11583
|
<mat-icon>stop</mat-icon>
|
|
11548
11584
|
</button>
|
|
11549
|
-
<button
|
|
11585
|
+
<button *ngIf="!screenXs" matTooltip="Toggle detailed audio display" [disabled]="disableAudioDetails || !audioLoaded"
|
|
11550
11586
|
(click)="showRecordingDetails()">
|
|
11551
11587
|
<mat-icon>{{(audioSignalCollapsed) ? "expand_less" : "expand_more"}}</mat-icon>
|
|
11552
11588
|
</button>
|
|
@@ -11558,7 +11594,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImpo
|
|
|
11558
11594
|
[style.color]="(peakDbLvl > warnDbLevel)?'red':'black'">{{peakDbLvl | number:'1.1-1'}} dB </span></td></tr>
|
|
11559
11595
|
<tr *ngIf="_agc"><td>AGC:</td><td><span matTooltip="Auto gain control">{{agcString}}</span></td></tr></table></div>
|
|
11560
11596
|
`, 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"] }]
|
|
11561
|
-
}], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { audioSignalCollapsed: [{
|
|
11597
|
+
}], ctorParameters: function () { return [{ type: i1$3.BreakpointObserver }, { type: i0.ElementRef }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { audioSignalCollapsed: [{
|
|
11562
11598
|
type: Input
|
|
11563
11599
|
}], enableDownload: [{
|
|
11564
11600
|
type: Input
|
|
@@ -11581,8 +11617,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImpo
|
|
|
11581
11617
|
}], displayLevelInfos: [{
|
|
11582
11618
|
type: Input
|
|
11583
11619
|
}] } });
|
|
11584
|
-
class RecordingItemDisplay {
|
|
11585
|
-
constructor(ref, changeDetectorRef) {
|
|
11620
|
+
class RecordingItemDisplay extends ResponsiveComponent {
|
|
11621
|
+
constructor(bpo, ref, changeDetectorRef) {
|
|
11622
|
+
super(bpo);
|
|
11623
|
+
this.bpo = bpo;
|
|
11586
11624
|
this.ref = ref;
|
|
11587
11625
|
this.changeDetectorRef = changeDetectorRef;
|
|
11588
11626
|
this.ce = null;
|
|
@@ -11653,22 +11691,22 @@ class RecordingItemDisplay {
|
|
|
11653
11691
|
this.changeDetectorRef.detectChanges();
|
|
11654
11692
|
}
|
|
11655
11693
|
}
|
|
11656
|
-
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 });
|
|
11657
|
-
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: `
|
|
11658
|
-
<div
|
|
11659
|
-
<audio-levelbar
|
|
11660
|
-
<spr-recordingitemcontrols
|
|
11694
|
+
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 });
|
|
11695
|
+
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: `
|
|
11696
|
+
<div [class]="{audioStatusDisplay:!screenXs,audioStatusDisplayXs:screenXs}">
|
|
11697
|
+
<audio-levelbar style="flex:1 0 1%" [streamingMode]="streamingMode" [displayLevelInfos]="_displayLevelInfos"></audio-levelbar>
|
|
11698
|
+
<spr-recordingitemcontrols style="flex:0 0 0px" [audioLoaded]="displayAudioBuffer!==null" [playStartAction]="playStartAction" [playStopAction]="playStopAction" [peakDbLvl]="peakDbLvl" [agc]="_agc" (onShowRecordingDetails)="onShowRecordingDetails.emit()"></spr-recordingitemcontrols>
|
|
11661
11699
|
</div>
|
|
11662
|
-
`, 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"
|
|
11700
|
+
`, 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"] }] });
|
|
11663
11701
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: RecordingItemDisplay, decorators: [{
|
|
11664
11702
|
type: Component,
|
|
11665
11703
|
args: [{ selector: 'spr-recordingitemdisplay', template: `
|
|
11666
|
-
<div
|
|
11667
|
-
<audio-levelbar
|
|
11668
|
-
<spr-recordingitemcontrols
|
|
11704
|
+
<div [class]="{audioStatusDisplay:!screenXs,audioStatusDisplayXs:screenXs}">
|
|
11705
|
+
<audio-levelbar style="flex:1 0 1%" [streamingMode]="streamingMode" [displayLevelInfos]="_displayLevelInfos"></audio-levelbar>
|
|
11706
|
+
<spr-recordingitemcontrols style="flex:0 0 0px" [audioLoaded]="displayAudioBuffer!==null" [playStartAction]="playStartAction" [playStopAction]="playStopAction" [peakDbLvl]="peakDbLvl" [agc]="_agc" (onShowRecordingDetails)="onShowRecordingDetails.emit()"></spr-recordingitemcontrols>
|
|
11669
11707
|
</div>
|
|
11670
|
-
`, styles: ["div{width:100%;background:darkgray;padding:4px;box-sizing:border-box;flex-wrap:nowrap}\n", "audio-levelbar{box-sizing:border-box}\n"] }]
|
|
11671
|
-
}], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { liveLevel: [{
|
|
11708
|
+
`, 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"] }]
|
|
11709
|
+
}], ctorParameters: function () { return [{ type: i1$3.BreakpointObserver }, { type: i0.ElementRef }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { liveLevel: [{
|
|
11672
11710
|
type: ViewChild,
|
|
11673
11711
|
args: [LevelBar, { static: true }]
|
|
11674
11712
|
}], streamingMode: [{
|
|
@@ -11950,8 +11988,10 @@ class ChunkManager {
|
|
|
11950
11988
|
return frameLen;
|
|
11951
11989
|
}
|
|
11952
11990
|
}
|
|
11953
|
-
let BasicRecorder = class BasicRecorder {
|
|
11954
|
-
constructor(changeDetectorRef, dialog, sessionService, uploader, config) {
|
|
11991
|
+
let BasicRecorder = class BasicRecorder extends ResponsiveComponent {
|
|
11992
|
+
constructor(bpo, changeDetectorRef, dialog, sessionService, uploader, config) {
|
|
11993
|
+
super(bpo);
|
|
11994
|
+
this.bpo = bpo;
|
|
11955
11995
|
this.changeDetectorRef = changeDetectorRef;
|
|
11956
11996
|
this.dialog = dialog;
|
|
11957
11997
|
this.sessionService = sessionService;
|
|
@@ -11979,6 +12019,7 @@ let BasicRecorder = class BasicRecorder {
|
|
|
11979
12019
|
this.peakLevelInDb = MIN_DB_LEVEL;
|
|
11980
12020
|
this.audioLoaded = false;
|
|
11981
12021
|
this.disableAudioDetails = false;
|
|
12022
|
+
this._controlAudioPlayer = null;
|
|
11982
12023
|
this.displayAudioClip = null;
|
|
11983
12024
|
this.audioFetchSubscription = null;
|
|
11984
12025
|
this.liveLevelDisplayState = State.READY;
|
|
@@ -12123,7 +12164,9 @@ let BasicRecorder = class BasicRecorder {
|
|
|
12123
12164
|
}
|
|
12124
12165
|
}
|
|
12125
12166
|
showRecording() {
|
|
12126
|
-
this._controlAudioPlayer
|
|
12167
|
+
if (this._controlAudioPlayer) {
|
|
12168
|
+
this._controlAudioPlayer.stop();
|
|
12169
|
+
}
|
|
12127
12170
|
if (this.calcBufferInfosSubscr) {
|
|
12128
12171
|
this.calcBufferInfosSubscr.unsubscribe();
|
|
12129
12172
|
}
|
|
@@ -12495,7 +12538,7 @@ BasicRecorder.DEFAULT_CHUNK_SIZE_SECONDS = 30;
|
|
|
12495
12538
|
// Enable only for developemnt/debug purposes of array audio buffers !!
|
|
12496
12539
|
BasicRecorder.FORCE_ARRRAY_AUDIO_BUFFER = false;
|
|
12497
12540
|
BasicRecorder = __decorate([
|
|
12498
|
-
__param(
|
|
12541
|
+
__param(5, Inject(SPEECHRECORDER_CONFIG))
|
|
12499
12542
|
], BasicRecorder);
|
|
12500
12543
|
|
|
12501
12544
|
class BasicRecFilesCache {
|
|
@@ -12741,8 +12784,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImpo
|
|
|
12741
12784
|
const DEFAULT_PRE_REC_DELAY = 1000;
|
|
12742
12785
|
const DEFAULT_POST_REC_DELAY = 500;
|
|
12743
12786
|
class SessionManager extends BasicRecorder {
|
|
12744
|
-
constructor(changeDetectorRef, renderer, dialog, sessionService, recFileService, uploader, config) {
|
|
12745
|
-
super(changeDetectorRef, dialog, sessionService, uploader, config);
|
|
12787
|
+
constructor(bpo, changeDetectorRef, renderer, dialog, sessionService, recFileService, uploader, config) {
|
|
12788
|
+
super(bpo, changeDetectorRef, dialog, sessionService, uploader, config);
|
|
12789
|
+
this.bpo = bpo;
|
|
12746
12790
|
this.renderer = renderer;
|
|
12747
12791
|
this.recFileService = recFileService;
|
|
12748
12792
|
this.enableUploadRecordings = true;
|
|
@@ -12873,7 +12917,7 @@ class SessionManager extends BasicRecorder {
|
|
|
12873
12917
|
this.transportActions.fwdAction.onAction = () => this.nextItem();
|
|
12874
12918
|
this.transportActions.fwdNextAction.onAction = () => this.nextUnrecordedItem();
|
|
12875
12919
|
this.transportActions.bwdAction.onAction = () => this.prevItem();
|
|
12876
|
-
this.playStartAction.onAction = () => this.controlAudioPlayer
|
|
12920
|
+
this.playStartAction.onAction = () => this.controlAudioPlayer?.start();
|
|
12877
12921
|
}
|
|
12878
12922
|
this.startStopSignalState = 4 /* OFF */;
|
|
12879
12923
|
}
|
|
@@ -13031,7 +13075,7 @@ class SessionManager extends BasicRecorder {
|
|
|
13031
13075
|
this.transportActions.fwdAction.disabled = true;
|
|
13032
13076
|
this.transportActions.fwdNextAction.disabled = true;
|
|
13033
13077
|
this.transportActions.bwdAction.disabled = true;
|
|
13034
|
-
this.
|
|
13078
|
+
this.updateDisplayRecFile(null);
|
|
13035
13079
|
this.displayRecFileVersion = 0;
|
|
13036
13080
|
this.displayAudioClip = null;
|
|
13037
13081
|
this.liveLevelDisplay.reset(true);
|
|
@@ -13129,6 +13173,9 @@ class SessionManager extends BasicRecorder {
|
|
|
13129
13173
|
}
|
|
13130
13174
|
set displayRecFile(displayRecFile) {
|
|
13131
13175
|
this._displayRecFile = displayRecFile;
|
|
13176
|
+
}
|
|
13177
|
+
updateDisplayRecFile(displayRecFile, fetchAndApplyRecordingFile = true) {
|
|
13178
|
+
this.displayRecFile = displayRecFile;
|
|
13132
13179
|
if (this._displayRecFile) {
|
|
13133
13180
|
if (this.items) {
|
|
13134
13181
|
this.items.currentRecordingFile = this._displayRecFile;
|
|
@@ -13136,7 +13183,9 @@ class SessionManager extends BasicRecorder {
|
|
|
13136
13183
|
let adh = this._displayRecFile.audioDataHolder;
|
|
13137
13184
|
if (adh) {
|
|
13138
13185
|
this.displayAudioClip = new AudioClip(adh);
|
|
13139
|
-
this.
|
|
13186
|
+
if (this._controlAudioPlayer) {
|
|
13187
|
+
this._controlAudioPlayer.audioClip = this.displayAudioClip;
|
|
13188
|
+
}
|
|
13140
13189
|
this.showRecording();
|
|
13141
13190
|
}
|
|
13142
13191
|
else {
|
|
@@ -13145,47 +13194,90 @@ class SessionManager extends BasicRecorder {
|
|
|
13145
13194
|
if (this.controlAudioPlayer) {
|
|
13146
13195
|
this.controlAudioPlayer.audioClip = null;
|
|
13147
13196
|
}
|
|
13148
|
-
if (
|
|
13149
|
-
|
|
13150
|
-
|
|
13151
|
-
|
|
13152
|
-
|
|
13153
|
-
|
|
13154
|
-
|
|
13155
|
-
|
|
13156
|
-
|
|
13157
|
-
|
|
13158
|
-
|
|
13159
|
-
|
|
13160
|
-
|
|
13161
|
-
|
|
13162
|
-
|
|
13163
|
-
|
|
13164
|
-
|
|
13197
|
+
if (fetchAndApplyRecordingFile) {
|
|
13198
|
+
if (this._controlAudioPlayer && this._session) {
|
|
13199
|
+
//... and try to fetch from server
|
|
13200
|
+
this.liveLevelDisplayState = State.LOADING;
|
|
13201
|
+
const rf = this._displayRecFile;
|
|
13202
|
+
let audioDownloadType = this._clientAudioStorageType;
|
|
13203
|
+
if (AudioStorageType.MEM_ENTIRE_AUTO_NET_CHUNKED === this._clientAudioStorageType || AudioStorageType.MEM_CHUNKED_AUTO_NET_CHUNKED === this._clientAudioStorageType) {
|
|
13204
|
+
// Default is network mode
|
|
13205
|
+
audioDownloadType = AudioStorageType.NET_CHUNKED;
|
|
13206
|
+
if (rf.channels && rf.frames) {
|
|
13207
|
+
const samples = rf.channels * rf.frames;
|
|
13208
|
+
if (samples <= this._maxAutoNetMemStoreSamples) {
|
|
13209
|
+
// But if audio file is small, load in continuous resp. chunked mode
|
|
13210
|
+
if (AudioStorageType.MEM_ENTIRE_AUTO_NET_CHUNKED === this._clientAudioStorageType) {
|
|
13211
|
+
audioDownloadType = AudioStorageType.MEM_ENTIRE;
|
|
13212
|
+
}
|
|
13213
|
+
else if (AudioStorageType.MEM_CHUNKED_AUTO_NET_CHUNKED === this._clientAudioStorageType) {
|
|
13214
|
+
audioDownloadType = AudioStorageType.MEM_CHUNKED;
|
|
13215
|
+
}
|
|
13165
13216
|
}
|
|
13166
13217
|
}
|
|
13167
13218
|
}
|
|
13168
|
-
|
|
13169
|
-
|
|
13170
|
-
|
|
13171
|
-
|
|
13172
|
-
|
|
13173
|
-
|
|
13174
|
-
|
|
13219
|
+
console.debug("Audio download type: " + audioDownloadType);
|
|
13220
|
+
if (AudioStorageType.DB_CHUNKED === this._clientAudioStorageType) {
|
|
13221
|
+
// Fetch chunked indexed db audio buffer
|
|
13222
|
+
let nextIab = null;
|
|
13223
|
+
if (!this._persistentAudioStorageTarget) {
|
|
13224
|
+
throw Error('Error: Persistent storage target not set.');
|
|
13225
|
+
}
|
|
13226
|
+
else {
|
|
13227
|
+
//console.debug("Fetch audio and store to indexed db...");
|
|
13228
|
+
this.audioFetchSubscription = this.recFileService.fetchSprRecordingFileIndDbAudioBuffer(this._controlAudioPlayer.context, this._persistentAudioStorageTarget, this._session.project, rf).subscribe({
|
|
13229
|
+
next: (iab) => {
|
|
13230
|
+
//console.debug("Sessionmanager: Received inddb audio buffer: "+iab);
|
|
13231
|
+
nextIab = iab;
|
|
13232
|
+
},
|
|
13233
|
+
complete: () => {
|
|
13234
|
+
this.liveLevelDisplayState = State.READY;
|
|
13235
|
+
let fabDh = null;
|
|
13236
|
+
if (nextIab) {
|
|
13237
|
+
if (rf && this.items) {
|
|
13238
|
+
fabDh = new AudioDataHolder(nextIab);
|
|
13239
|
+
this.items.setSprRecFileAudioData(rf, fabDh);
|
|
13240
|
+
}
|
|
13241
|
+
}
|
|
13242
|
+
else {
|
|
13243
|
+
// Should actually be handled by the error resolver
|
|
13244
|
+
this.statusMsg = 'Recording file could not be loaded.';
|
|
13245
|
+
this.statusAlertType = 'error';
|
|
13246
|
+
}
|
|
13247
|
+
if (fabDh) {
|
|
13248
|
+
// 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
|
|
13249
|
+
this.displayAudioClip = new AudioClip(fabDh);
|
|
13250
|
+
}
|
|
13251
|
+
if (this._controlAudioPlayer) {
|
|
13252
|
+
this._controlAudioPlayer.audioClip = this.displayAudioClip;
|
|
13253
|
+
}
|
|
13254
|
+
this.showRecording();
|
|
13255
|
+
},
|
|
13256
|
+
error: err => {
|
|
13257
|
+
console.error("Could not load recording file from server: " + err);
|
|
13258
|
+
this.liveLevelDisplayState = State.READY;
|
|
13259
|
+
this.statusMsg = 'Recording file could not be loaded: ' + err;
|
|
13260
|
+
this.statusAlertType = 'error';
|
|
13261
|
+
this.changeDetectorRef.detectChanges();
|
|
13262
|
+
}
|
|
13263
|
+
});
|
|
13264
|
+
}
|
|
13175
13265
|
}
|
|
13176
|
-
else {
|
|
13177
|
-
//
|
|
13178
|
-
|
|
13179
|
-
|
|
13180
|
-
|
|
13181
|
-
|
|
13266
|
+
else if (AudioStorageType.NET_CHUNKED === audioDownloadType) {
|
|
13267
|
+
// Fetch chunked audio buffer from network
|
|
13268
|
+
let nextNetAb = null;
|
|
13269
|
+
//console.debug("Fetch chunked audio from network");
|
|
13270
|
+
this.audioFetchSubscription = this.recFileService.fetchSprRecordingFileNetAudioBuffer(this._controlAudioPlayer.context, this._session.project, rf).subscribe({
|
|
13271
|
+
next: (netAb) => {
|
|
13272
|
+
//console.debug("Sessionmanager: Received net audio buffer: "+netAb);
|
|
13273
|
+
nextNetAb = netAb;
|
|
13182
13274
|
},
|
|
13183
13275
|
complete: () => {
|
|
13184
13276
|
this.liveLevelDisplayState = State.READY;
|
|
13185
13277
|
let fabDh = null;
|
|
13186
|
-
if (
|
|
13278
|
+
if (nextNetAb) {
|
|
13187
13279
|
if (rf && this.items) {
|
|
13188
|
-
fabDh = new AudioDataHolder(
|
|
13280
|
+
fabDh = new AudioDataHolder(nextNetAb);
|
|
13189
13281
|
this.items.setSprRecFileAudioData(rf, fabDh);
|
|
13190
13282
|
}
|
|
13191
13283
|
}
|
|
@@ -13196,9 +13288,12 @@ class SessionManager extends BasicRecorder {
|
|
|
13196
13288
|
}
|
|
13197
13289
|
if (fabDh) {
|
|
13198
13290
|
// 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
|
|
13291
|
+
//console.debug("set displayRecFile(): fetch net ab complete, set displayAudioClip.")
|
|
13199
13292
|
this.displayAudioClip = new AudioClip(fabDh);
|
|
13200
13293
|
}
|
|
13201
|
-
this.
|
|
13294
|
+
if (this._controlAudioPlayer) {
|
|
13295
|
+
this._controlAudioPlayer.audioClip = this.displayAudioClip;
|
|
13296
|
+
}
|
|
13202
13297
|
this.showRecording();
|
|
13203
13298
|
},
|
|
13204
13299
|
error: err => {
|
|
@@ -13210,126 +13305,90 @@ class SessionManager extends BasicRecorder {
|
|
|
13210
13305
|
}
|
|
13211
13306
|
});
|
|
13212
13307
|
}
|
|
13213
|
-
|
|
13214
|
-
|
|
13215
|
-
|
|
13216
|
-
|
|
13217
|
-
|
|
13218
|
-
|
|
13219
|
-
|
|
13220
|
-
|
|
13221
|
-
|
|
13222
|
-
|
|
13223
|
-
|
|
13224
|
-
|
|
13225
|
-
|
|
13226
|
-
|
|
13227
|
-
|
|
13228
|
-
|
|
13229
|
-
this.items.setSprRecFileAudioData(rf, fabDh);
|
|
13308
|
+
else if (AudioStorageType.MEM_CHUNKED === audioDownloadType) {
|
|
13309
|
+
// Fetch chunked array audio buffer
|
|
13310
|
+
let nextAab = null;
|
|
13311
|
+
//console.debug("Fetch audio and store to (chunked) array buffer...");
|
|
13312
|
+
this.audioFetchSubscription = this.recFileService.fetchSprRecordingFileArrayAudioBuffer(this._controlAudioPlayer.context, this._session.project, rf).subscribe({
|
|
13313
|
+
next: (aab) => {
|
|
13314
|
+
nextAab = aab;
|
|
13315
|
+
},
|
|
13316
|
+
complete: () => {
|
|
13317
|
+
this.liveLevelDisplayState = State.READY;
|
|
13318
|
+
let fabDh = null;
|
|
13319
|
+
if (nextAab) {
|
|
13320
|
+
if (rf && this.items) {
|
|
13321
|
+
fabDh = new AudioDataHolder(nextAab);
|
|
13322
|
+
this.items.setSprRecFileAudioData(rf, fabDh);
|
|
13323
|
+
}
|
|
13230
13324
|
}
|
|
13231
|
-
|
|
13232
|
-
|
|
13233
|
-
|
|
13234
|
-
|
|
13235
|
-
this.statusAlertType = 'error';
|
|
13236
|
-
}
|
|
13237
|
-
if (fabDh) {
|
|
13238
|
-
// 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
|
|
13239
|
-
//console.debug("set displayRecFile(): fetch net ab complete, set displayAudioClip.")
|
|
13240
|
-
this.displayAudioClip = new AudioClip(fabDh);
|
|
13241
|
-
}
|
|
13242
|
-
this.controlAudioPlayer.audioClip = this.displayAudioClip;
|
|
13243
|
-
this.showRecording();
|
|
13244
|
-
},
|
|
13245
|
-
error: err => {
|
|
13246
|
-
console.error("Could not load recording file from server: " + err);
|
|
13247
|
-
this.liveLevelDisplayState = State.READY;
|
|
13248
|
-
this.statusMsg = 'Recording file could not be loaded: ' + err;
|
|
13249
|
-
this.statusAlertType = 'error';
|
|
13250
|
-
this.changeDetectorRef.detectChanges();
|
|
13251
|
-
}
|
|
13252
|
-
});
|
|
13253
|
-
}
|
|
13254
|
-
else if (AudioStorageType.MEM_CHUNKED === audioDownloadType) {
|
|
13255
|
-
// Fetch chunked array audio buffer
|
|
13256
|
-
let nextAab = null;
|
|
13257
|
-
//console.debug("Fetch audio and store to (chunked) array buffer...");
|
|
13258
|
-
this.audioFetchSubscription = this.recFileService.fetchSprRecordingFileArrayAudioBuffer(this._controlAudioPlayer.context, this._session.project, rf).subscribe({
|
|
13259
|
-
next: (aab) => {
|
|
13260
|
-
nextAab = aab;
|
|
13261
|
-
},
|
|
13262
|
-
complete: () => {
|
|
13263
|
-
this.liveLevelDisplayState = State.READY;
|
|
13264
|
-
let fabDh = null;
|
|
13265
|
-
if (nextAab) {
|
|
13266
|
-
if (rf && this.items) {
|
|
13267
|
-
fabDh = new AudioDataHolder(nextAab);
|
|
13268
|
-
this.items.setSprRecFileAudioData(rf, fabDh);
|
|
13325
|
+
else {
|
|
13326
|
+
// Should actually be handled by the error resolver
|
|
13327
|
+
this.statusMsg = 'Recording file could not be loaded.';
|
|
13328
|
+
this.statusAlertType = 'error';
|
|
13269
13329
|
}
|
|
13270
|
-
|
|
13271
|
-
|
|
13272
|
-
|
|
13273
|
-
|
|
13330
|
+
if (fabDh) {
|
|
13331
|
+
// 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
|
|
13332
|
+
this.displayAudioClip = new AudioClip(fabDh);
|
|
13333
|
+
}
|
|
13334
|
+
if (this._controlAudioPlayer) {
|
|
13335
|
+
this._controlAudioPlayer.audioClip = this.displayAudioClip;
|
|
13336
|
+
}
|
|
13337
|
+
this.showRecording();
|
|
13338
|
+
},
|
|
13339
|
+
error: err => {
|
|
13340
|
+
console.error("Could not load recording file from server: " + err);
|
|
13341
|
+
this.liveLevelDisplayState = State.READY;
|
|
13342
|
+
this.statusMsg = 'Recording file could not be loaded: ' + err;
|
|
13274
13343
|
this.statusAlertType = 'error';
|
|
13275
13344
|
}
|
|
13276
|
-
|
|
13277
|
-
|
|
13278
|
-
|
|
13279
|
-
|
|
13280
|
-
|
|
13281
|
-
|
|
13282
|
-
|
|
13283
|
-
|
|
13284
|
-
|
|
13285
|
-
|
|
13286
|
-
|
|
13287
|
-
|
|
13288
|
-
|
|
13289
|
-
|
|
13290
|
-
|
|
13291
|
-
|
|
13292
|
-
|
|
13293
|
-
|
|
13294
|
-
|
|
13295
|
-
next: (ab) => {
|
|
13296
|
-
this.liveLevelDisplayState = State.READY;
|
|
13297
|
-
let fabDh = null;
|
|
13298
|
-
if (ab) {
|
|
13299
|
-
if (rf && this.items) {
|
|
13300
|
-
if (SessionManager.FORCE_ARRRAY_AUDIO_BUFFER) {
|
|
13301
|
-
let aab = ArrayAudioBuffer.fromAudioBuffer(ab);
|
|
13302
|
-
fabDh = new AudioDataHolder(aab);
|
|
13303
|
-
}
|
|
13304
|
-
else {
|
|
13305
|
-
fabDh = new AudioDataHolder(new AudioBufferSource(ab));
|
|
13345
|
+
});
|
|
13346
|
+
}
|
|
13347
|
+
else {
|
|
13348
|
+
// Fetch regular audio buffer
|
|
13349
|
+
//console.debug("Fetch audio and store to audio buffer...");
|
|
13350
|
+
this.audioFetchSubscription = this.recFileService.fetchSprRecordingFileAudioBuffer(this._controlAudioPlayer.context, this._session.project, rf).subscribe({
|
|
13351
|
+
next: (ab) => {
|
|
13352
|
+
this.liveLevelDisplayState = State.READY;
|
|
13353
|
+
let fabDh = null;
|
|
13354
|
+
if (ab) {
|
|
13355
|
+
if (rf && this.items) {
|
|
13356
|
+
if (SessionManager.FORCE_ARRRAY_AUDIO_BUFFER) {
|
|
13357
|
+
let aab = ArrayAudioBuffer.fromAudioBuffer(ab);
|
|
13358
|
+
fabDh = new AudioDataHolder(aab);
|
|
13359
|
+
}
|
|
13360
|
+
else {
|
|
13361
|
+
fabDh = new AudioDataHolder(new AudioBufferSource(ab));
|
|
13362
|
+
}
|
|
13363
|
+
this.items.setSprRecFileAudioData(rf, fabDh);
|
|
13306
13364
|
}
|
|
13307
|
-
this.items.setSprRecFileAudioData(rf, fabDh);
|
|
13308
13365
|
}
|
|
13309
|
-
|
|
13310
|
-
|
|
13311
|
-
|
|
13312
|
-
|
|
13366
|
+
else {
|
|
13367
|
+
// Should actually be handled by the error resolver
|
|
13368
|
+
this.statusMsg = 'Recording file could not be loaded.';
|
|
13369
|
+
this.statusAlertType = 'error';
|
|
13370
|
+
}
|
|
13371
|
+
if (fabDh) {
|
|
13372
|
+
// 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
|
|
13373
|
+
this.displayAudioClip = new AudioClip(fabDh);
|
|
13374
|
+
}
|
|
13375
|
+
if (this._controlAudioPlayer) {
|
|
13376
|
+
this._controlAudioPlayer.audioClip = this.displayAudioClip;
|
|
13377
|
+
}
|
|
13378
|
+
this.showRecording();
|
|
13379
|
+
}, error: err => {
|
|
13380
|
+
console.error("Could not load recording file from server: " + err);
|
|
13381
|
+
this.liveLevelDisplayState = State.READY;
|
|
13382
|
+
this.statusMsg = 'Recording file could not be loaded: ' + err;
|
|
13313
13383
|
this.statusAlertType = 'error';
|
|
13314
13384
|
}
|
|
13315
|
-
|
|
13316
|
-
|
|
13317
|
-
|
|
13318
|
-
|
|
13319
|
-
|
|
13320
|
-
|
|
13321
|
-
}, error: err => {
|
|
13322
|
-
console.error("Could not load recording file from server: " + err);
|
|
13323
|
-
this.liveLevelDisplayState = State.READY;
|
|
13324
|
-
this.statusMsg = 'Recording file could not be loaded: ' + err;
|
|
13325
|
-
this.statusAlertType = 'error';
|
|
13326
|
-
}
|
|
13327
|
-
});
|
|
13385
|
+
});
|
|
13386
|
+
}
|
|
13387
|
+
}
|
|
13388
|
+
else {
|
|
13389
|
+
this.statusMsg = 'Recording file could not be decoded. Audio context unavailable.';
|
|
13390
|
+
this.statusAlertType = 'error';
|
|
13328
13391
|
}
|
|
13329
|
-
}
|
|
13330
|
-
else {
|
|
13331
|
-
this.statusMsg = 'Recording file could not be decoded. Audio context unavailable.';
|
|
13332
|
-
this.statusAlertType = 'error';
|
|
13333
13392
|
}
|
|
13334
13393
|
}
|
|
13335
13394
|
}
|
|
@@ -13369,7 +13428,7 @@ class SessionManager extends BasicRecorder {
|
|
|
13369
13428
|
this.applyPrompt();
|
|
13370
13429
|
}
|
|
13371
13430
|
if (isNonrecording) {
|
|
13372
|
-
this.
|
|
13431
|
+
this.updateDisplayRecFile(null);
|
|
13373
13432
|
this.displayRecFileVersion = 0;
|
|
13374
13433
|
this.startStopSignalState = 4 /* OFF */;
|
|
13375
13434
|
}
|
|
@@ -13384,11 +13443,11 @@ class SessionManager extends BasicRecorder {
|
|
|
13384
13443
|
if (availRecfiles > 0) {
|
|
13385
13444
|
let rfVers = availRecfiles - 1;
|
|
13386
13445
|
recentRecFile = it.recs[rfVers];
|
|
13387
|
-
this.
|
|
13446
|
+
this.updateDisplayRecFile(recentRecFile, !temporary);
|
|
13388
13447
|
this.displayRecFileVersion = rfVers;
|
|
13389
13448
|
}
|
|
13390
13449
|
else {
|
|
13391
|
-
this.
|
|
13450
|
+
this.updateDisplayRecFile(null);
|
|
13392
13451
|
this.displayRecFileVersion = 0;
|
|
13393
13452
|
}
|
|
13394
13453
|
}
|
|
@@ -13868,9 +13927,14 @@ class SessionManager extends BasicRecorder {
|
|
|
13868
13927
|
}
|
|
13869
13928
|
}
|
|
13870
13929
|
updateControlPlaybackPosition() {
|
|
13871
|
-
if (this._controlAudioPlayer
|
|
13872
|
-
|
|
13873
|
-
|
|
13930
|
+
if (this._controlAudioPlayer) {
|
|
13931
|
+
const ppFrames = this._controlAudioPlayer.playPositionFrames;
|
|
13932
|
+
if (ppFrames !== null) {
|
|
13933
|
+
if (this.prompting.audioDisplay) {
|
|
13934
|
+
this.prompting.audioDisplay.playFramePosition = ppFrames;
|
|
13935
|
+
}
|
|
13936
|
+
this.liveLevelDisplay.playFramePosition = ppFrames;
|
|
13937
|
+
}
|
|
13874
13938
|
}
|
|
13875
13939
|
}
|
|
13876
13940
|
audioPlayerUpdate(e) {
|
|
@@ -13889,7 +13953,7 @@ class SessionManager extends BasicRecorder {
|
|
|
13889
13953
|
}
|
|
13890
13954
|
}
|
|
13891
13955
|
}
|
|
13892
|
-
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 });
|
|
13956
|
+
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 });
|
|
13893
13957
|
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: `
|
|
13894
13958
|
<app-warningbar [show]="isTestSession()" warningText="Test recording only!"></app-warningbar>
|
|
13895
13959
|
<app-warningbar [show]="isDefaultAudioTestSession()" warningText="This test uses default audio device! Regular sessions may require a particular audio device (microphone)!"></app-warningbar>
|
|
@@ -13905,13 +13969,13 @@ SessionManager.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version
|
|
|
13905
13969
|
[playStopAction]="controlAudioPlayer?.stopAction">
|
|
13906
13970
|
|
|
13907
13971
|
</app-sprprompting>
|
|
13908
|
-
<mat-progress-bar [value]="progressPercentValue()"
|
|
13972
|
+
<mat-progress-bar [value]="progressPercentValue()" *ngIf="screenXs" ></mat-progress-bar>
|
|
13909
13973
|
|
|
13910
13974
|
|
|
13911
|
-
<div
|
|
13912
|
-
<audio-levelbar
|
|
13913
|
-
<div
|
|
13914
|
-
<spr-recordingitemcontrols
|
|
13975
|
+
<div [class]="{audioStatusDisplay:!screenXs,audioStatusDisplayXs:screenXs}">
|
|
13976
|
+
<audio-levelbar style="flex:1 0 1%" [streamingMode]="isRecording() || keepLiveLevel" [displayLevelInfos]="displayAudioClip?.levelInfos" [state]="liveLevelDisplayState"></audio-levelbar>
|
|
13977
|
+
<div style="display:flex;flex-direction: row">
|
|
13978
|
+
<spr-recordingitemcontrols style="display:flex;flex:10 0 1px"
|
|
13915
13979
|
[audioLoaded]="audioLoaded"
|
|
13916
13980
|
[disableAudioDetails]="disableAudioDetails"
|
|
13917
13981
|
[playStartAction]="controlAudioPlayer?.startAction"
|
|
@@ -13921,25 +13985,25 @@ SessionManager.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version
|
|
|
13921
13985
|
(onShowRecordingDetails)="audioSignalCollapsed=!audioSignalCollapsed">
|
|
13922
13986
|
</spr-recordingitemcontrols>
|
|
13923
13987
|
|
|
13924
|
-
<app-uploadstatus class="ricontrols dark"
|
|
13988
|
+
<app-uploadstatus *ngIf="screenXs && enableUploadRecordings" class="ricontrols dark" style="flex:0 0 0" [value]="uploadProgress"
|
|
13925
13989
|
[status]="uploadStatus" [awaitNewUpload]="processingRecording"></app-uploadstatus>
|
|
13926
|
-
<app-wakelockindicator class="ricontrols dark"
|
|
13927
|
-
<app-readystateindicator class="ricontrols dark"
|
|
13990
|
+
<app-wakelockindicator *ngIf="screenXs" class="ricontrols dark" style="flex:0 0 0" [screenLocked]="screenLocked"></app-wakelockindicator>
|
|
13991
|
+
<app-readystateindicator *ngIf="screenXs" class="ricontrols dark" style="flex:0 0 0" [ready]="dataSaved && !isActive()"></app-readystateindicator>
|
|
13928
13992
|
</div>
|
|
13929
13993
|
</div>
|
|
13930
|
-
<div #controlpanel class="controlpanel"
|
|
13931
|
-
<div
|
|
13932
|
-
<app-sprstatusdisplay
|
|
13994
|
+
<div #controlpanel class="controlpanel">
|
|
13995
|
+
<div style="flex:1 1 30%;justify-content: flex-start;align-items: center; align-content: center">
|
|
13996
|
+
<app-sprstatusdisplay *ngIf="!screenXs" [statusMsg]="statusMsg" [statusAlertType]="statusAlertType" [statusWaiting]="statusWaiting"></app-sprstatusdisplay>
|
|
13933
13997
|
</div>
|
|
13934
|
-
<app-sprtransport
|
|
13935
|
-
<div
|
|
13936
|
-
<app-uploadstatus
|
|
13998
|
+
<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>
|
|
13999
|
+
<div style="display:flex;flex:1 1 30%;flex-direction:row;justify-content: flex-end;align-items: center; align-content: center">
|
|
14000
|
+
<app-uploadstatus *ngIf="!screenXs && enableUploadRecordings" class="ricontrols" [value]="uploadProgress"
|
|
13937
14001
|
[status]="uploadStatus" [awaitNewUpload]="processingRecording"></app-uploadstatus>
|
|
13938
|
-
<app-wakelockindicator
|
|
13939
|
-
<app-readystateindicator
|
|
14002
|
+
<app-wakelockindicator *ngIf="!screenXs" class="ricontrols" [screenLocked]="screenLocked"></app-wakelockindicator>
|
|
14003
|
+
<app-readystateindicator *ngIf="!screenXs" class="ricontrols" [ready]="dataSaved && !isActive()"></app-readystateindicator>
|
|
13940
14004
|
</div>
|
|
13941
14005
|
</div>
|
|
13942
|
-
`, 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
|
|
14006
|
+
`, 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"] }] });
|
|
13943
14007
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: SessionManager, decorators: [{
|
|
13944
14008
|
type: Component,
|
|
13945
14009
|
args: [{ selector: 'app-sprrecordingsession', providers: [SessionService], template: `
|
|
@@ -13957,13 +14021,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImpo
|
|
|
13957
14021
|
[playStopAction]="controlAudioPlayer?.stopAction">
|
|
13958
14022
|
|
|
13959
14023
|
</app-sprprompting>
|
|
13960
|
-
<mat-progress-bar [value]="progressPercentValue()"
|
|
14024
|
+
<mat-progress-bar [value]="progressPercentValue()" *ngIf="screenXs" ></mat-progress-bar>
|
|
13961
14025
|
|
|
13962
14026
|
|
|
13963
|
-
<div
|
|
13964
|
-
<audio-levelbar
|
|
13965
|
-
<div
|
|
13966
|
-
<spr-recordingitemcontrols
|
|
14027
|
+
<div [class]="{audioStatusDisplay:!screenXs,audioStatusDisplayXs:screenXs}">
|
|
14028
|
+
<audio-levelbar style="flex:1 0 1%" [streamingMode]="isRecording() || keepLiveLevel" [displayLevelInfos]="displayAudioClip?.levelInfos" [state]="liveLevelDisplayState"></audio-levelbar>
|
|
14029
|
+
<div style="display:flex;flex-direction: row">
|
|
14030
|
+
<spr-recordingitemcontrols style="display:flex;flex:10 0 1px"
|
|
13967
14031
|
[audioLoaded]="audioLoaded"
|
|
13968
14032
|
[disableAudioDetails]="disableAudioDetails"
|
|
13969
14033
|
[playStartAction]="controlAudioPlayer?.startAction"
|
|
@@ -13973,26 +14037,26 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImpo
|
|
|
13973
14037
|
(onShowRecordingDetails)="audioSignalCollapsed=!audioSignalCollapsed">
|
|
13974
14038
|
</spr-recordingitemcontrols>
|
|
13975
14039
|
|
|
13976
|
-
<app-uploadstatus class="ricontrols dark"
|
|
14040
|
+
<app-uploadstatus *ngIf="screenXs && enableUploadRecordings" class="ricontrols dark" style="flex:0 0 0" [value]="uploadProgress"
|
|
13977
14041
|
[status]="uploadStatus" [awaitNewUpload]="processingRecording"></app-uploadstatus>
|
|
13978
|
-
<app-wakelockindicator class="ricontrols dark"
|
|
13979
|
-
<app-readystateindicator class="ricontrols dark"
|
|
14042
|
+
<app-wakelockindicator *ngIf="screenXs" class="ricontrols dark" style="flex:0 0 0" [screenLocked]="screenLocked"></app-wakelockindicator>
|
|
14043
|
+
<app-readystateindicator *ngIf="screenXs" class="ricontrols dark" style="flex:0 0 0" [ready]="dataSaved && !isActive()"></app-readystateindicator>
|
|
13980
14044
|
</div>
|
|
13981
14045
|
</div>
|
|
13982
|
-
<div #controlpanel class="controlpanel"
|
|
13983
|
-
<div
|
|
13984
|
-
<app-sprstatusdisplay
|
|
14046
|
+
<div #controlpanel class="controlpanel">
|
|
14047
|
+
<div style="flex:1 1 30%;justify-content: flex-start;align-items: center; align-content: center">
|
|
14048
|
+
<app-sprstatusdisplay *ngIf="!screenXs" [statusMsg]="statusMsg" [statusAlertType]="statusAlertType" [statusWaiting]="statusWaiting"></app-sprstatusdisplay>
|
|
13985
14049
|
</div>
|
|
13986
|
-
<app-sprtransport
|
|
13987
|
-
<div
|
|
13988
|
-
<app-uploadstatus
|
|
14050
|
+
<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>
|
|
14051
|
+
<div style="display:flex;flex:1 1 30%;flex-direction:row;justify-content: flex-end;align-items: center; align-content: center">
|
|
14052
|
+
<app-uploadstatus *ngIf="!screenXs && enableUploadRecordings" class="ricontrols" [value]="uploadProgress"
|
|
13989
14053
|
[status]="uploadStatus" [awaitNewUpload]="processingRecording"></app-uploadstatus>
|
|
13990
|
-
<app-wakelockindicator
|
|
13991
|
-
<app-readystateindicator
|
|
14054
|
+
<app-wakelockindicator *ngIf="!screenXs" class="ricontrols" [screenLocked]="screenLocked"></app-wakelockindicator>
|
|
14055
|
+
<app-readystateindicator *ngIf="!screenXs" class="ricontrols" [ready]="dataSaved && !isActive()"></app-readystateindicator>
|
|
13992
14056
|
</div>
|
|
13993
14057
|
</div>
|
|
13994
|
-
`, 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
|
|
13995
|
-
}], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: i0.Renderer2 }, { type: i1$4.MatDialog }, { type: SessionService }, { type: RecordingService }, { type: SpeechRecorderUploader }, { type: SpeechRecorderConfig, decorators: [{
|
|
14058
|
+
`, 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"] }]
|
|
14059
|
+
}], ctorParameters: function () { return [{ type: i1$3.BreakpointObserver }, { type: i0.ChangeDetectorRef }, { type: i0.Renderer2 }, { type: i1$4.MatDialog }, { type: SessionService }, { type: RecordingService }, { type: SpeechRecorderUploader }, { type: SpeechRecorderConfig, decorators: [{
|
|
13996
14060
|
type: Inject,
|
|
13997
14061
|
args: [SPEECHRECORDER_CONFIG]
|
|
13998
14062
|
}] }]; }, propDecorators: { projectName: [{
|
|
@@ -14249,6 +14313,7 @@ class SpeechrecorderngComponent extends RecorderComponent {
|
|
|
14249
14313
|
this.scriptService = scriptService;
|
|
14250
14314
|
this.recFilesService = recFilesService;
|
|
14251
14315
|
this.uploader = uploader;
|
|
14316
|
+
this.controlAudioPlayer = null;
|
|
14252
14317
|
this._project = null;
|
|
14253
14318
|
}
|
|
14254
14319
|
handleError(err) {
|
|
@@ -15222,16 +15287,16 @@ RecordingFileNaviComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0
|
|
|
15222
15287
|
<legend>Navigate</legend>
|
|
15223
15288
|
<mat-progress-spinner *ngIf="naviInfoLoading" mode="indeterminate" [diameter]="15"></mat-progress-spinner>
|
|
15224
15289
|
<div *ngIf="!naviInfoLoading" style="flex: 0;display:flex;flex-direction: row;flex-wrap: nowrap">
|
|
15225
|
-
<button (click)="firstAction?.perform()" [disabled]="!firstAction || firstAction
|
|
15290
|
+
<button (click)="firstAction?.perform()" [disabled]="!firstAction || firstAction.disabled" matTooltip="First recording file">
|
|
15226
15291
|
<mat-icon>first_page</mat-icon>
|
|
15227
15292
|
</button>
|
|
15228
|
-
<button (click)="prevAction?.perform()" [disabled]="!prevAction || prevAction
|
|
15293
|
+
<button (click)="prevAction?.perform()" [disabled]="!prevAction || prevAction.disabled" matTooltip="Previous recording file">
|
|
15229
15294
|
<mat-icon>chevron_left</mat-icon>
|
|
15230
15295
|
</button>
|
|
15231
|
-
<button (click)="nextAction?.perform()" [disabled]="!nextAction || nextAction
|
|
15296
|
+
<button (click)="nextAction?.perform()" [disabled]="!nextAction || nextAction.disabled" matTooltip="Next recording file">
|
|
15232
15297
|
<mat-icon>chevron_right</mat-icon>
|
|
15233
15298
|
</button>
|
|
15234
|
-
<button (click)="lastAction?.perform()" [disabled]="!lastAction || lastAction
|
|
15299
|
+
<button (click)="lastAction?.perform()" [disabled]="!lastAction || lastAction.disabled" matTooltip="Last recording file">
|
|
15235
15300
|
<mat-icon>last_page</mat-icon>
|
|
15236
15301
|
</button>
|
|
15237
15302
|
</div>
|
|
@@ -15257,16 +15322,16 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImpo
|
|
|
15257
15322
|
<legend>Navigate</legend>
|
|
15258
15323
|
<mat-progress-spinner *ngIf="naviInfoLoading" mode="indeterminate" [diameter]="15"></mat-progress-spinner>
|
|
15259
15324
|
<div *ngIf="!naviInfoLoading" style="flex: 0;display:flex;flex-direction: row;flex-wrap: nowrap">
|
|
15260
|
-
<button (click)="firstAction?.perform()" [disabled]="!firstAction || firstAction
|
|
15325
|
+
<button (click)="firstAction?.perform()" [disabled]="!firstAction || firstAction.disabled" matTooltip="First recording file">
|
|
15261
15326
|
<mat-icon>first_page</mat-icon>
|
|
15262
15327
|
</button>
|
|
15263
|
-
<button (click)="prevAction?.perform()" [disabled]="!prevAction || prevAction
|
|
15328
|
+
<button (click)="prevAction?.perform()" [disabled]="!prevAction || prevAction.disabled" matTooltip="Previous recording file">
|
|
15264
15329
|
<mat-icon>chevron_left</mat-icon>
|
|
15265
15330
|
</button>
|
|
15266
|
-
<button (click)="nextAction?.perform()" [disabled]="!nextAction || nextAction
|
|
15331
|
+
<button (click)="nextAction?.perform()" [disabled]="!nextAction || nextAction.disabled" matTooltip="Next recording file">
|
|
15267
15332
|
<mat-icon>chevron_right</mat-icon>
|
|
15268
15333
|
</button>
|
|
15269
|
-
<button (click)="lastAction?.perform()" [disabled]="!lastAction || lastAction
|
|
15334
|
+
<button (click)="lastAction?.perform()" [disabled]="!lastAction || lastAction.disabled" matTooltip="Last recording file">
|
|
15270
15335
|
<mat-icon>last_page</mat-icon>
|
|
15271
15336
|
</button>
|
|
15272
15337
|
</div>
|
|
@@ -15788,7 +15853,7 @@ RecordingFileViewComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0
|
|
|
15788
15853
|
[zoomOutAction]="zoomOutAction"
|
|
15789
15854
|
[zoomSelectedAction]="zoomSelectedAction"
|
|
15790
15855
|
[zoomFitToPanelAction]="zoomFitToPanelAction"></audio-display-control>
|
|
15791
|
-
<app-recording-file-navi [items]="availRecFiles
|
|
15856
|
+
<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>
|
|
15792
15857
|
</div>
|
|
15793
15858
|
`, 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"] }] });
|
|
15794
15859
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: RecordingFileViewComponent, decorators: [{
|
|
@@ -15808,7 +15873,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImpo
|
|
|
15808
15873
|
[zoomOutAction]="zoomOutAction"
|
|
15809
15874
|
[zoomSelectedAction]="zoomSelectedAction"
|
|
15810
15875
|
[zoomFitToPanelAction]="zoomFitToPanelAction"></audio-display-control>
|
|
15811
|
-
<app-recording-file-navi [items]="availRecFiles
|
|
15876
|
+
<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>
|
|
15812
15877
|
</div>
|
|
15813
15878
|
`, 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"] }]
|
|
15814
15879
|
}], 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: [{
|
|
@@ -15913,7 +15978,7 @@ RecordingFileUI.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", versio
|
|
|
15913
15978
|
[zoomOutAction]="zoomOutAction"
|
|
15914
15979
|
[zoomSelectedAction]="zoomSelectedAction"
|
|
15915
15980
|
[zoomFitToPanelAction]="zoomFitToPanelAction"></audio-display-control>
|
|
15916
|
-
<app-recording-file-navi [items]="availRecFiles
|
|
15981
|
+
<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>
|
|
15917
15982
|
</div>
|
|
15918
15983
|
|
|
15919
15984
|
<button mat-raised-button color="accent" (click)="applySelection()" [disabled]="editSaved">{{this.applyButtonText()}}</button>
|
|
@@ -15936,7 +16001,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImpo
|
|
|
15936
16001
|
[zoomOutAction]="zoomOutAction"
|
|
15937
16002
|
[zoomSelectedAction]="zoomSelectedAction"
|
|
15938
16003
|
[zoomFitToPanelAction]="zoomFitToPanelAction"></audio-display-control>
|
|
15939
|
-
<app-recording-file-navi [items]="availRecFiles
|
|
16004
|
+
<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>
|
|
15940
16005
|
</div>
|
|
15941
16006
|
|
|
15942
16007
|
<button mat-raised-button color="accent" (click)="applySelection()" [disabled]="editSaved">{{this.applyButtonText()}}</button>
|
|
@@ -16078,7 +16143,7 @@ RecordingList.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version:
|
|
|
16078
16143
|
</mat-card-content>
|
|
16079
16144
|
</mat-card>
|
|
16080
16145
|
|
|
16081
|
-
`, 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" }] });
|
|
16146
|
+
`, 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" }] });
|
|
16082
16147
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: RecordingList, decorators: [{
|
|
16083
16148
|
type: Component,
|
|
16084
16149
|
args: [{ selector: 'app-recordinglist', template: `
|
|
@@ -16125,7 +16190,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImpo
|
|
|
16125
16190
|
</mat-card-content>
|
|
16126
16191
|
</mat-card>
|
|
16127
16192
|
|
|
16128
|
-
`, 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"] }]
|
|
16193
|
+
`, 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"] }]
|
|
16129
16194
|
}], ctorParameters: function () { return []; }, propDecorators: { selectDisabled: [{
|
|
16130
16195
|
type: Input
|
|
16131
16196
|
}], selectedRecordingFileChanged: [{
|
|
@@ -16134,8 +16199,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImpo
|
|
|
16134
16199
|
type: Input
|
|
16135
16200
|
}] } });
|
|
16136
16201
|
|
|
16137
|
-
class RecorderCombiPane {
|
|
16138
|
-
constructor() {
|
|
16202
|
+
class RecorderCombiPane extends ResponsiveComponent {
|
|
16203
|
+
constructor(bpo) {
|
|
16204
|
+
super(bpo);
|
|
16205
|
+
this.bpo = bpo;
|
|
16139
16206
|
this.selectDisabled = false;
|
|
16140
16207
|
this.selectedRecordingFileChanged = new EventEmitter();
|
|
16141
16208
|
this.selectedRecordingFile = null;
|
|
@@ -16157,12 +16224,12 @@ class RecorderCombiPane {
|
|
|
16157
16224
|
this.recordingListComp.selectTop();
|
|
16158
16225
|
}
|
|
16159
16226
|
}
|
|
16160
|
-
RecorderCombiPane.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: RecorderCombiPane, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
16161
|
-
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: `
|
|
16227
|
+
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 });
|
|
16228
|
+
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: `
|
|
16162
16229
|
<div class="scrollList">
|
|
16163
16230
|
<app-recordinglist [selectedRecordingFile]="selectedRecordingFile" [selectDisabled]="selectDisabled" (selectedRecordingFileChanged)="selectRecordingFile($event)"></app-recordinglist>
|
|
16164
16231
|
</div>
|
|
16165
|
-
<div class="collapsable"
|
|
16232
|
+
<div class="collapsable" #asCt [class.active]="!audioSignalCollapsed && !screenXs">
|
|
16166
16233
|
<app-audiodisplay #audioSignalContainer [class.active]="!audioSignalCollapsed"
|
|
16167
16234
|
[audioClip]="displayAudioClip"
|
|
16168
16235
|
[playStartAction]="playStartAction"
|
|
@@ -16170,14 +16237,14 @@ RecorderCombiPane.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", vers
|
|
|
16170
16237
|
[autoPlayOnSelectToggleAction]="autoPlayOnSelectToggleAction"
|
|
16171
16238
|
[playStopAction]="playStopAction"></app-audiodisplay>
|
|
16172
16239
|
</div>
|
|
16173
|
-
`, 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: "
|
|
16240
|
+
`, 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"] }] });
|
|
16174
16241
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: RecorderCombiPane, decorators: [{
|
|
16175
16242
|
type: Component,
|
|
16176
16243
|
args: [{ selector: 'app-recordercombipane', template: `
|
|
16177
16244
|
<div class="scrollList">
|
|
16178
16245
|
<app-recordinglist [selectedRecordingFile]="selectedRecordingFile" [selectDisabled]="selectDisabled" (selectedRecordingFileChanged)="selectRecordingFile($event)"></app-recordinglist>
|
|
16179
16246
|
</div>
|
|
16180
|
-
<div class="collapsable"
|
|
16247
|
+
<div class="collapsable" #asCt [class.active]="!audioSignalCollapsed && !screenXs">
|
|
16181
16248
|
<app-audiodisplay #audioSignalContainer [class.active]="!audioSignalCollapsed"
|
|
16182
16249
|
[audioClip]="displayAudioClip"
|
|
16183
16250
|
[playStartAction]="playStartAction"
|
|
@@ -16185,8 +16252,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImpo
|
|
|
16185
16252
|
[autoPlayOnSelectToggleAction]="autoPlayOnSelectToggleAction"
|
|
16186
16253
|
[playStopAction]="playStopAction"></app-audiodisplay>
|
|
16187
16254
|
</div>
|
|
16188
|
-
`, 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"] }]
|
|
16189
|
-
}], ctorParameters: function () { return []; }, propDecorators: { recordingListComp: [{
|
|
16255
|
+
`, 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"] }]
|
|
16256
|
+
}], ctorParameters: function () { return [{ type: i1$3.BreakpointObserver }]; }, propDecorators: { recordingListComp: [{
|
|
16190
16257
|
type: ViewChild,
|
|
16191
16258
|
args: [RecordingList]
|
|
16192
16259
|
}], selectDisabled: [{
|
|
@@ -16213,8 +16280,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImpo
|
|
|
16213
16280
|
}] } });
|
|
16214
16281
|
|
|
16215
16282
|
class AudioRecorder extends BasicRecorder {
|
|
16216
|
-
constructor(changeDetectorRef, renderer, route, dialog, sessionService, recFileService, uploader, config) {
|
|
16217
|
-
super(changeDetectorRef, dialog, sessionService, uploader, config);
|
|
16283
|
+
constructor(bpo, changeDetectorRef, renderer, route, dialog, sessionService, recFileService, uploader, config) {
|
|
16284
|
+
super(bpo, changeDetectorRef, dialog, sessionService, uploader, config);
|
|
16285
|
+
this.bpo = bpo;
|
|
16218
16286
|
this.renderer = renderer;
|
|
16219
16287
|
this.route = route;
|
|
16220
16288
|
this.recFileService = recFileService;
|
|
@@ -16333,7 +16401,7 @@ class AudioRecorder extends BasicRecorder {
|
|
|
16333
16401
|
this.transportActions.stopAction.onAction = () => this.stopItem();
|
|
16334
16402
|
this.transportActions.nextAction.onAction = () => this.stopItem();
|
|
16335
16403
|
//this.transportActions.pauseAction.onAction = () => this.pauseItem();
|
|
16336
|
-
this.playStartAction.onAction = () => this.controlAudioPlayer
|
|
16404
|
+
this.playStartAction.onAction = () => this.controlAudioPlayer?.start();
|
|
16337
16405
|
}
|
|
16338
16406
|
this.uploader.listener = (ue) => {
|
|
16339
16407
|
this.uploadUpdate(ue);
|
|
@@ -16602,14 +16670,18 @@ class AudioRecorder extends BasicRecorder {
|
|
|
16602
16670
|
this.displayAudioClip = new AudioClip(adh);
|
|
16603
16671
|
//this.audioLoaded=true;
|
|
16604
16672
|
//console.debug(" set recording file: display audio clip set");
|
|
16605
|
-
this.
|
|
16673
|
+
if (this._controlAudioPlayer) {
|
|
16674
|
+
this._controlAudioPlayer.audioClip = this.displayAudioClip;
|
|
16675
|
+
}
|
|
16606
16676
|
this.showRecording();
|
|
16607
16677
|
}
|
|
16608
16678
|
else {
|
|
16609
16679
|
// clear for now ...
|
|
16610
16680
|
this.displayAudioClip = null;
|
|
16611
16681
|
//console.debug("set recording file: display audio clip null");
|
|
16612
|
-
this.
|
|
16682
|
+
if (this._controlAudioPlayer) {
|
|
16683
|
+
this._controlAudioPlayer.audioClip = null;
|
|
16684
|
+
}
|
|
16613
16685
|
if (this._controlAudioPlayer && this._session) {
|
|
16614
16686
|
//... and try to fetch from server
|
|
16615
16687
|
this.liveLevelDisplayState = State.LOADING;
|
|
@@ -16663,7 +16735,9 @@ class AudioRecorder extends BasicRecorder {
|
|
|
16663
16735
|
// 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
|
|
16664
16736
|
this.displayAudioClip = new AudioClip(fabDh);
|
|
16665
16737
|
}
|
|
16666
|
-
this.
|
|
16738
|
+
if (this._controlAudioPlayer) {
|
|
16739
|
+
this._controlAudioPlayer.audioClip = this.displayAudioClip;
|
|
16740
|
+
}
|
|
16667
16741
|
this.showRecording();
|
|
16668
16742
|
},
|
|
16669
16743
|
error: err => {
|
|
@@ -16707,7 +16781,9 @@ class AudioRecorder extends BasicRecorder {
|
|
|
16707
16781
|
// this.audioLoaded=true;
|
|
16708
16782
|
// }
|
|
16709
16783
|
}
|
|
16710
|
-
this.
|
|
16784
|
+
if (this._controlAudioPlayer) {
|
|
16785
|
+
this._controlAudioPlayer.audioClip = this.displayAudioClip;
|
|
16786
|
+
}
|
|
16711
16787
|
this.showRecording();
|
|
16712
16788
|
},
|
|
16713
16789
|
error: err => {
|
|
@@ -16746,7 +16822,9 @@ class AudioRecorder extends BasicRecorder {
|
|
|
16746
16822
|
this.displayAudioClip = new AudioClip(fabDh);
|
|
16747
16823
|
//this.audioLoaded=true;
|
|
16748
16824
|
}
|
|
16749
|
-
this.
|
|
16825
|
+
if (this._controlAudioPlayer) {
|
|
16826
|
+
this._controlAudioPlayer.audioClip = this.displayAudioClip;
|
|
16827
|
+
}
|
|
16750
16828
|
this.showRecording();
|
|
16751
16829
|
},
|
|
16752
16830
|
error: err => {
|
|
@@ -16780,7 +16858,9 @@ class AudioRecorder extends BasicRecorder {
|
|
|
16780
16858
|
//this.audioLoaded=true;
|
|
16781
16859
|
//console.debug("set recording file: display audio clip from fetched audio buffer");
|
|
16782
16860
|
}
|
|
16783
|
-
this.
|
|
16861
|
+
if (this._controlAudioPlayer) {
|
|
16862
|
+
this._controlAudioPlayer.audioClip = this.displayAudioClip;
|
|
16863
|
+
}
|
|
16784
16864
|
this.showRecording();
|
|
16785
16865
|
}, error: err => {
|
|
16786
16866
|
console.error("Could not load recording file from server: " + err);
|
|
@@ -16800,7 +16880,9 @@ class AudioRecorder extends BasicRecorder {
|
|
|
16800
16880
|
else {
|
|
16801
16881
|
//console.debug("recording file null");
|
|
16802
16882
|
this.displayAudioClip = null;
|
|
16803
|
-
this.
|
|
16883
|
+
if (this._controlAudioPlayer) {
|
|
16884
|
+
this._controlAudioPlayer.audioClip = null;
|
|
16885
|
+
}
|
|
16804
16886
|
}
|
|
16805
16887
|
this.showRecording();
|
|
16806
16888
|
}
|
|
@@ -17086,9 +17168,12 @@ class AudioRecorder extends BasicRecorder {
|
|
|
17086
17168
|
}
|
|
17087
17169
|
}
|
|
17088
17170
|
updateControlPlaybackPosition() {
|
|
17089
|
-
if (this._controlAudioPlayer
|
|
17090
|
-
|
|
17091
|
-
|
|
17171
|
+
if (this._controlAudioPlayer) {
|
|
17172
|
+
const ppFrames = this._controlAudioPlayer.playPositionFrames;
|
|
17173
|
+
if (ppFrames !== null) {
|
|
17174
|
+
this.recorderCombiPane.audioDisplay.playFramePosition = ppFrames;
|
|
17175
|
+
this.liveLevelDisplay.playFramePosition = ppFrames;
|
|
17176
|
+
}
|
|
17092
17177
|
}
|
|
17093
17178
|
}
|
|
17094
17179
|
audioPlayerUpdate(e) {
|
|
@@ -17107,7 +17192,7 @@ class AudioRecorder extends BasicRecorder {
|
|
|
17107
17192
|
}
|
|
17108
17193
|
}
|
|
17109
17194
|
}
|
|
17110
|
-
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 });
|
|
17195
|
+
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 });
|
|
17111
17196
|
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: `
|
|
17112
17197
|
<app-warningbar [show]="isTestSession()" warningText="Test recording only!"></app-warningbar>
|
|
17113
17198
|
<app-warningbar [show]="isDefaultAudioTestSession()"
|
|
@@ -17117,18 +17202,17 @@ AudioRecorder.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version:
|
|
|
17117
17202
|
[selectedRecordingFile]="displayRecFile"
|
|
17118
17203
|
[selectDisabled]="isActive()"
|
|
17119
17204
|
[displayAudioClip]="displayAudioClip"
|
|
17120
|
-
[playStartAction]="controlAudioPlayer
|
|
17121
|
-
[playStopAction]="controlAudioPlayer
|
|
17122
|
-
[playSelectionAction]="controlAudioPlayer
|
|
17123
|
-
[autoPlayOnSelectToggleAction]="controlAudioPlayer
|
|
17205
|
+
[playStartAction]="controlAudioPlayer?.startAction"
|
|
17206
|
+
[playStopAction]="controlAudioPlayer?.stopAction"
|
|
17207
|
+
[playSelectionAction]="controlAudioPlayer?.startSelectionAction"
|
|
17208
|
+
[autoPlayOnSelectToggleAction]="controlAudioPlayer?.autoPlayOnSelectToggleAction"
|
|
17124
17209
|
></app-recordercombipane>
|
|
17125
17210
|
|
|
17126
|
-
<div
|
|
17127
|
-
|
|
17128
|
-
<audio-levelbar fxFlex="1 0 1" [streamingMode]="isRecording() || keepLiveLevel" [state]="liveLevelDisplayState"
|
|
17211
|
+
<div [class]="{audioStatusDisplay:!screenXs,audioStatusDisplayXs:screenXs}">
|
|
17212
|
+
<audio-levelbar style="flex:1 0 1%" [streamingMode]="isRecording() || keepLiveLevel" [state]="liveLevelDisplayState"
|
|
17129
17213
|
[displayLevelInfos]="displayAudioClip?.levelInfos"></audio-levelbar>
|
|
17130
|
-
<div
|
|
17131
|
-
<spr-recordingitemcontrols
|
|
17214
|
+
<div style="flex-direction: row">
|
|
17215
|
+
<spr-recordingitemcontrols style="flex:10 0 1%"
|
|
17132
17216
|
[disableAudioDetails]="disableAudioDetails"
|
|
17133
17217
|
[audioLoaded]="audioLoaded"
|
|
17134
17218
|
[playStartAction]="controlAudioPlayer?.startAction"
|
|
@@ -17138,19 +17222,19 @@ AudioRecorder.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version:
|
|
|
17138
17222
|
(onShowRecordingDetails)="audioSignalCollapsed=!audioSignalCollapsed">
|
|
17139
17223
|
</spr-recordingitemcontrols>
|
|
17140
17224
|
|
|
17141
|
-
<app-uploadstatus class="ricontrols dark"
|
|
17225
|
+
<app-uploadstatus *ngIf="screenXs && enableUploadRecordings" class="ricontrols dark" style="flex:0 0 0"
|
|
17142
17226
|
[value]="uploadProgress"
|
|
17143
17227
|
[status]="uploadStatus" [awaitNewUpload]="processingRecording"></app-uploadstatus>
|
|
17144
|
-
<app-wakelockindicator class="ricontrols dark"
|
|
17145
|
-
<app-readystateindicator class="ricontrols dark"
|
|
17228
|
+
<app-wakelockindicator *ngIf="screenXs" class="ricontrols dark" style="flex:0 0 0" [screenLocked]="screenLocked"></app-wakelockindicator>
|
|
17229
|
+
<app-readystateindicator *ngIf="screenXs" class="ricontrols dark" style="flex:0 0 0"
|
|
17146
17230
|
[ready]="dataSaved && !isActive()"></app-readystateindicator>
|
|
17147
17231
|
</div>
|
|
17148
17232
|
</div>
|
|
17149
|
-
<div #controlpanel class="controlpanel"
|
|
17150
|
-
<app-sprstatusdisplay
|
|
17233
|
+
<div #controlpanel class="controlpanel">
|
|
17234
|
+
<app-sprstatusdisplay *ngIf="!screenXs" style="flex:0.333 1 30%" [statusMsg]="statusMsg" [statusAlertType]="statusAlertType"
|
|
17151
17235
|
[statusWaiting]="statusWaiting"
|
|
17152
17236
|
class="hidden-xs"></app-sprstatusdisplay>
|
|
17153
|
-
<div
|
|
17237
|
+
<div style="flex:1 0 100%" class="startstop">
|
|
17154
17238
|
<div style="align-content: center">
|
|
17155
17239
|
<button (click)="startStopPerform()" [disabled]="startDisabled() && stopDisabled()" mat-raised-button class="bigbutton">
|
|
17156
17240
|
<mat-icon [style.color]="startStopNextIconColor()" inline="true">{{startStopNextIconName()}}</mat-icon>
|
|
@@ -17158,18 +17242,18 @@ AudioRecorder.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version:
|
|
|
17158
17242
|
</button>
|
|
17159
17243
|
</div>
|
|
17160
17244
|
</div>
|
|
17161
|
-
<div
|
|
17162
|
-
<div
|
|
17245
|
+
<div style="flex:0.333 1 30%" >
|
|
17246
|
+
<div style="flex:1 1 auto"></div>
|
|
17163
17247
|
|
|
17164
|
-
<app-uploadstatus class="ricontrols"
|
|
17248
|
+
<app-uploadstatus *ngIf="!screenXs && enableUploadRecordings" class="ricontrols" style="flex:0 0 0"
|
|
17165
17249
|
[value]="uploadProgress"
|
|
17166
17250
|
[status]="uploadStatus" [awaitNewUpload]="processingRecording"></app-uploadstatus>
|
|
17167
|
-
<app-wakelockindicator class="ricontrols"
|
|
17168
|
-
<app-readystateindicator class="ricontrols"
|
|
17251
|
+
<app-wakelockindicator *ngIf="!screenXs" class="ricontrols" [screenLocked]="screenLocked"></app-wakelockindicator>
|
|
17252
|
+
<app-readystateindicator *ngIf="!screenXs" class="ricontrols"
|
|
17169
17253
|
[ready]="dataSaved && !isActive()"></app-readystateindicator>
|
|
17170
17254
|
</div>
|
|
17171
17255
|
</div>
|
|
17172
|
-
`, 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"
|
|
17256
|
+
`, 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"] }] });
|
|
17173
17257
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: AudioRecorder, decorators: [{
|
|
17174
17258
|
type: Component,
|
|
17175
17259
|
args: [{ selector: 'app-audiorecorder', providers: [SessionService], template: `
|
|
@@ -17181,18 +17265,17 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImpo
|
|
|
17181
17265
|
[selectedRecordingFile]="displayRecFile"
|
|
17182
17266
|
[selectDisabled]="isActive()"
|
|
17183
17267
|
[displayAudioClip]="displayAudioClip"
|
|
17184
|
-
[playStartAction]="controlAudioPlayer
|
|
17185
|
-
[playStopAction]="controlAudioPlayer
|
|
17186
|
-
[playSelectionAction]="controlAudioPlayer
|
|
17187
|
-
[autoPlayOnSelectToggleAction]="controlAudioPlayer
|
|
17268
|
+
[playStartAction]="controlAudioPlayer?.startAction"
|
|
17269
|
+
[playStopAction]="controlAudioPlayer?.stopAction"
|
|
17270
|
+
[playSelectionAction]="controlAudioPlayer?.startSelectionAction"
|
|
17271
|
+
[autoPlayOnSelectToggleAction]="controlAudioPlayer?.autoPlayOnSelectToggleAction"
|
|
17188
17272
|
></app-recordercombipane>
|
|
17189
17273
|
|
|
17190
|
-
<div
|
|
17191
|
-
|
|
17192
|
-
<audio-levelbar fxFlex="1 0 1" [streamingMode]="isRecording() || keepLiveLevel" [state]="liveLevelDisplayState"
|
|
17274
|
+
<div [class]="{audioStatusDisplay:!screenXs,audioStatusDisplayXs:screenXs}">
|
|
17275
|
+
<audio-levelbar style="flex:1 0 1%" [streamingMode]="isRecording() || keepLiveLevel" [state]="liveLevelDisplayState"
|
|
17193
17276
|
[displayLevelInfos]="displayAudioClip?.levelInfos"></audio-levelbar>
|
|
17194
|
-
<div
|
|
17195
|
-
<spr-recordingitemcontrols
|
|
17277
|
+
<div style="flex-direction: row">
|
|
17278
|
+
<spr-recordingitemcontrols style="flex:10 0 1%"
|
|
17196
17279
|
[disableAudioDetails]="disableAudioDetails"
|
|
17197
17280
|
[audioLoaded]="audioLoaded"
|
|
17198
17281
|
[playStartAction]="controlAudioPlayer?.startAction"
|
|
@@ -17202,19 +17285,19 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImpo
|
|
|
17202
17285
|
(onShowRecordingDetails)="audioSignalCollapsed=!audioSignalCollapsed">
|
|
17203
17286
|
</spr-recordingitemcontrols>
|
|
17204
17287
|
|
|
17205
|
-
<app-uploadstatus class="ricontrols dark"
|
|
17288
|
+
<app-uploadstatus *ngIf="screenXs && enableUploadRecordings" class="ricontrols dark" style="flex:0 0 0"
|
|
17206
17289
|
[value]="uploadProgress"
|
|
17207
17290
|
[status]="uploadStatus" [awaitNewUpload]="processingRecording"></app-uploadstatus>
|
|
17208
|
-
<app-wakelockindicator class="ricontrols dark"
|
|
17209
|
-
<app-readystateindicator class="ricontrols dark"
|
|
17291
|
+
<app-wakelockindicator *ngIf="screenXs" class="ricontrols dark" style="flex:0 0 0" [screenLocked]="screenLocked"></app-wakelockindicator>
|
|
17292
|
+
<app-readystateindicator *ngIf="screenXs" class="ricontrols dark" style="flex:0 0 0"
|
|
17210
17293
|
[ready]="dataSaved && !isActive()"></app-readystateindicator>
|
|
17211
17294
|
</div>
|
|
17212
17295
|
</div>
|
|
17213
|
-
<div #controlpanel class="controlpanel"
|
|
17214
|
-
<app-sprstatusdisplay
|
|
17296
|
+
<div #controlpanel class="controlpanel">
|
|
17297
|
+
<app-sprstatusdisplay *ngIf="!screenXs" style="flex:0.333 1 30%" [statusMsg]="statusMsg" [statusAlertType]="statusAlertType"
|
|
17215
17298
|
[statusWaiting]="statusWaiting"
|
|
17216
17299
|
class="hidden-xs"></app-sprstatusdisplay>
|
|
17217
|
-
<div
|
|
17300
|
+
<div style="flex:1 0 100%" class="startstop">
|
|
17218
17301
|
<div style="align-content: center">
|
|
17219
17302
|
<button (click)="startStopPerform()" [disabled]="startDisabled() && stopDisabled()" mat-raised-button class="bigbutton">
|
|
17220
17303
|
<mat-icon [style.color]="startStopNextIconColor()" inline="true">{{startStopNextIconName()}}</mat-icon>
|
|
@@ -17222,19 +17305,19 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImpo
|
|
|
17222
17305
|
</button>
|
|
17223
17306
|
</div>
|
|
17224
17307
|
</div>
|
|
17225
|
-
<div
|
|
17226
|
-
<div
|
|
17308
|
+
<div style="flex:0.333 1 30%" >
|
|
17309
|
+
<div style="flex:1 1 auto"></div>
|
|
17227
17310
|
|
|
17228
|
-
<app-uploadstatus class="ricontrols"
|
|
17311
|
+
<app-uploadstatus *ngIf="!screenXs && enableUploadRecordings" class="ricontrols" style="flex:0 0 0"
|
|
17229
17312
|
[value]="uploadProgress"
|
|
17230
17313
|
[status]="uploadStatus" [awaitNewUpload]="processingRecording"></app-uploadstatus>
|
|
17231
|
-
<app-wakelockindicator class="ricontrols"
|
|
17232
|
-
<app-readystateindicator class="ricontrols"
|
|
17314
|
+
<app-wakelockindicator *ngIf="!screenXs" class="ricontrols" [screenLocked]="screenLocked"></app-wakelockindicator>
|
|
17315
|
+
<app-readystateindicator *ngIf="!screenXs" class="ricontrols"
|
|
17233
17316
|
[ready]="dataSaved && !isActive()"></app-readystateindicator>
|
|
17234
17317
|
</div>
|
|
17235
17318
|
</div>
|
|
17236
|
-
`, 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"] }]
|
|
17237
|
-
}], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: i0.Renderer2 }, { type: i1$2.ActivatedRoute }, { type: i1$4.MatDialog }, { type: SessionService }, { type: RecordingService }, { type: SpeechRecorderUploader }, { type: SpeechRecorderConfig, decorators: [{
|
|
17319
|
+
`, 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"] }]
|
|
17320
|
+
}], ctorParameters: function () { 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: [{
|
|
17238
17321
|
type: Inject,
|
|
17239
17322
|
args: [SPEECHRECORDER_CONFIG]
|
|
17240
17323
|
}] }]; }, propDecorators: { projectName: [{
|
|
@@ -17424,20 +17507,20 @@ class SpeechrecorderngModule {
|
|
|
17424
17507
|
}
|
|
17425
17508
|
SpeechrecorderngModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: SpeechrecorderngModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
17426
17509
|
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,
|
|
17427
|
-
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,
|
|
17428
|
-
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),
|
|
17510
|
+
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] });
|
|
17511
|
+
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] });
|
|
17429
17512
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: SpeechrecorderngModule, decorators: [{
|
|
17430
17513
|
type: NgModule,
|
|
17431
17514
|
args: [{
|
|
17432
17515
|
declarations: [AudioSignal, Sonagram, ScrollPaneHorizontal, AudioClipUIContainer, AudioDisplayScrollPane, AudioDisplay, AudioDisplayPlayer, AudioDisplayControl, LevelBar, Progress, SimpleTrafficLight, Recinstructions, Prompter, PromptContainer, PromptingContainer, Prompting, StatusDisplay,
|
|
17433
17516
|
ProgressDisplay, RecordingItemDisplay, RecordingItemControls, UploadStatus, TransportPanel, WakeLockIndicator, ReadyStateIndicator, ControlPanel, WarningBar, AudioRecorder, SessionManager, MessageDialog, SessionFinishedDialog, SpeechrecorderngComponent, AudioRecorderComponent, RecordingFileViewComponent, RecordingFileUI, ScrollIntoViewDirective, RecordingFileNaviComponent, RecordingFileMetaComponent, RecordingList, RecorderCombiPane, AudioRecorder],
|
|
17434
17517
|
exports: [MessageDialog, SpeechrecorderngComponent, ScrollPaneHorizontal, AudioClipUIContainer, AudioDisplayScrollPane, AudioDisplay, AudioDisplayPlayer, AudioDisplayControl, LevelBar, AudioRecorder],
|
|
17435
|
-
imports: [RouterModule.forChild(SPR_ROUTES),
|
|
17518
|
+
imports: [RouterModule.forChild(SPR_ROUTES), CommonModule, MatIconModule, MatButtonModule, MatDialogModule, MatProgressBarModule, MatProgressSpinnerModule, MatTooltipModule, HttpClientModule, MatCheckboxModule, MatCardModule, MatDividerModule, MatGridListModule, MatTableModule, MatInputModule, MatSelectModule, MatSnackBarModule, MatMenuModule],
|
|
17436
17519
|
providers: [SessionService, ProjectService, ScriptService, RecordingService, RecordingFileService, SpeechRecorderUploader]
|
|
17437
17520
|
}]
|
|
17438
17521
|
}] });
|
|
17439
17522
|
|
|
17440
|
-
const VERSION = '3.3.
|
|
17523
|
+
const VERSION = '3.3.4';
|
|
17441
17524
|
|
|
17442
17525
|
/*
|
|
17443
17526
|
* Public API Surface of speechrecorderng
|