mirror of https://github.com/OpenVidu/openvidu.git
openvidu-testapp: allow disabling interim transcription events
parent
05c589c527
commit
6aadaf6a73
|
|
@ -6,11 +6,17 @@ import { MatSlideToggleModule } from '@angular/material/slide-toggle';
|
||||||
import { MatDividerModule } from '@angular/material/divider';
|
import { MatDividerModule } from '@angular/material/divider';
|
||||||
import { MatButtonModule } from '@angular/material/button';
|
import { MatButtonModule } from '@angular/material/button';
|
||||||
|
|
||||||
|
export interface ExtraToggle {
|
||||||
|
label: string;
|
||||||
|
checked: boolean;
|
||||||
|
}
|
||||||
|
|
||||||
export interface EventGroup {
|
export interface EventGroup {
|
||||||
label: string;
|
label: string;
|
||||||
eventCollection: Map<string, boolean>;
|
eventCollection: Map<string, boolean>;
|
||||||
eventArray: string[];
|
eventArray: string[];
|
||||||
checkAll: boolean;
|
checkAll: boolean;
|
||||||
|
extraToggles?: ExtraToggle[];
|
||||||
}
|
}
|
||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
|
|
@ -48,6 +54,18 @@ export interface EventGroup {
|
||||||
}
|
}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
@if (group.extraToggles && group.extraToggles.length > 0) {
|
||||||
|
<mat-divider></mat-divider>
|
||||||
|
@for (extraToggle of group.extraToggles; track extraToggle.label) {
|
||||||
|
<div class="toggle extra-toggle">
|
||||||
|
<mat-slide-toggle
|
||||||
|
[(ngModel)]="extraToggle.checked"
|
||||||
|
[name]="extraToggle.label"
|
||||||
|
color="warn">{{extraToggle.label}}
|
||||||
|
</mat-slide-toggle>
|
||||||
|
</div>
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
</mat-dialog-content>
|
</mat-dialog-content>
|
||||||
<mat-dialog-actions>
|
<mat-dialog-actions>
|
||||||
|
|
@ -60,7 +78,8 @@ export interface EventGroup {
|
||||||
'.col-50 {flex-basis: 50%; box-sizing: border-box; padding-left: 20px; }',
|
'.col-50 {flex-basis: 50%; box-sizing: border-box; padding-left: 20px; }',
|
||||||
'.toggle { }',
|
'.toggle { }',
|
||||||
'.group-label { margin-top: 15px; margin-bottom: 5px; }',
|
'.group-label { margin-top: 15px; margin-bottom: 5px; }',
|
||||||
'.group-label:first-child { margin-top: 0; }'
|
'.group-label:first-child { margin-top: 0; }',
|
||||||
|
'.extra-toggle { margin-top: 5px; }'
|
||||||
],
|
],
|
||||||
imports: [SlicePipe, FormsModule, MatDialogModule, MatSlideToggleModule, MatDividerModule, MatButtonModule],
|
imports: [SlicePipe, FormsModule, MatDialogModule, MatSlideToggleModule, MatDividerModule, MatButtonModule],
|
||||||
})
|
})
|
||||||
|
|
@ -76,11 +95,12 @@ export class EventsDialogComponent {
|
||||||
const data = this.dialogData;
|
const data = this.dialogData;
|
||||||
this.target = data.target;
|
this.target = data.target;
|
||||||
if (data.eventGroups) {
|
if (data.eventGroups) {
|
||||||
this.eventGroups = data.eventGroups.map((g: { label: string; eventCollection: Map<string, boolean> }) => ({
|
this.eventGroups = data.eventGroups.map((g: { label: string; eventCollection: Map<string, boolean>; extraToggles?: ExtraToggle[] }) => ({
|
||||||
label: g.label,
|
label: g.label,
|
||||||
eventCollection: g.eventCollection,
|
eventCollection: g.eventCollection,
|
||||||
eventArray: Array.from(g.eventCollection.keys()),
|
eventArray: Array.from(g.eventCollection.keys()),
|
||||||
checkAll: Array.from(g.eventCollection.values()).every(v => v),
|
checkAll: Array.from(g.eventCollection.values()).every(v => v),
|
||||||
|
extraToggles: g.extraToggles,
|
||||||
}));
|
}));
|
||||||
} else {
|
} else {
|
||||||
// Backward compatibility: single eventCollection
|
// Backward compatibility: single eventCollection
|
||||||
|
|
|
||||||
|
|
@ -84,6 +84,10 @@ export class OpenviduInstanceComponent {
|
||||||
participantEvents: Map<ParticipantEvent, boolean> = new Map<ParticipantEvent, boolean>();
|
participantEvents: Map<ParticipantEvent, boolean> = new Map<ParticipantEvent, boolean>();
|
||||||
trackEvents: Map<TrackEvent, boolean> = new Map<TrackEvent, boolean>();
|
trackEvents: Map<TrackEvent, boolean> = new Map<TrackEvent, boolean>();
|
||||||
|
|
||||||
|
// When false, interim transcription events are not added to the event list
|
||||||
|
// (only final transcription events are rendered)
|
||||||
|
renderInterimTranscriptionEvents: boolean = true;
|
||||||
|
|
||||||
private roomEventListeners: Map<string, (...args: any[]) => void> = new Map();
|
private roomEventListeners: Map<string, (...args: any[]) => void> = new Map();
|
||||||
|
|
||||||
// Early event registration: buffers events for participant/track components
|
// Early event registration: buffers events for participant/track components
|
||||||
|
|
@ -1251,6 +1255,9 @@ export class OpenviduInstanceComponent {
|
||||||
const message = await reader.readAll();
|
const message = await reader.readAll();
|
||||||
const isFinal =
|
const isFinal =
|
||||||
reader.info.attributes!['lk.transcription_final'] === 'true';
|
reader.info.attributes!['lk.transcription_final'] === 'true';
|
||||||
|
if (!isFinal && !this.renderInterimTranscriptionEvents) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
this.updateEventList(
|
this.updateEventList(
|
||||||
isFinal
|
isFinal
|
||||||
? ('finalTranscription' as any)
|
? ('finalTranscription' as any)
|
||||||
|
|
@ -1519,10 +1526,18 @@ export class OpenviduInstanceComponent {
|
||||||
const oldRoomValues: Map<string, boolean> = new Map(
|
const oldRoomValues: Map<string, boolean> = new Map(
|
||||||
JSON.parse(JSON.stringify([...this.roomEvents]))
|
JSON.parse(JSON.stringify([...this.roomEvents]))
|
||||||
);
|
);
|
||||||
|
const interimTranscriptionToggle = {
|
||||||
|
label: 'Render interim transcription events',
|
||||||
|
checked: this.renderInterimTranscriptionEvents,
|
||||||
|
};
|
||||||
const dialogRef = this.dialog.open(EventsDialogComponent, {
|
const dialogRef = this.dialog.open(EventsDialogComponent, {
|
||||||
data: {
|
data: {
|
||||||
eventGroups: [
|
eventGroups: [
|
||||||
{ label: 'RoomEvent', eventCollection: this.roomEvents },
|
{
|
||||||
|
label: 'RoomEvent',
|
||||||
|
eventCollection: this.roomEvents,
|
||||||
|
extraToggles: [interimTranscriptionToggle],
|
||||||
|
},
|
||||||
{ label: 'ParticipantEvent', eventCollection: this.participantEvents },
|
{ label: 'ParticipantEvent', eventCollection: this.participantEvents },
|
||||||
{ label: 'TrackEvent', eventCollection: this.trackEvents },
|
{ label: 'TrackEvent', eventCollection: this.trackEvents },
|
||||||
],
|
],
|
||||||
|
|
@ -1534,6 +1549,7 @@ export class OpenviduInstanceComponent {
|
||||||
});
|
});
|
||||||
|
|
||||||
dialogRef.afterClosed().subscribe((result) => {
|
dialogRef.afterClosed().subscribe((result) => {
|
||||||
|
this.renderInterimTranscriptionEvents = interimTranscriptionToggle.checked;
|
||||||
if (
|
if (
|
||||||
!!this.room &&
|
!!this.room &&
|
||||||
JSON.stringify(Array.from(this.roomEvents.entries())) !==
|
JSON.stringify(Array.from(this.roomEvents.entries())) !==
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue