diff --git a/openvidu-testapp/src/app/components/openvidu-instance/openvidu-instance.component.html b/openvidu-testapp/src/app/components/openvidu-instance/openvidu-instance.component.html index 5c1e9a3d..80f8dee3 100644 --- a/openvidu-testapp/src/app/components/openvidu-instance/openvidu-instance.component.html +++ b/openvidu-testapp/src/app/components/openvidu-instance/openvidu-instance.component.html @@ -85,8 +85,11 @@
{{sessionName}}
+ '; + videoElement.parentNode.insertBefore(dataNode, videoElement.nextSibling); + document.getElementById('sub-btn-' + this.session.connection.connectionId + '-' + connection.connectionId).addEventListener('click', + this.subUnsubFromSubscriber.bind(this, connection.connectionId)); + } + + private removeUserData(connectionId: string): void { + $('#remote-vid-' + this.session.connection.connectionId) + .find('#data-' + this.session.connection.connectionId + '-' + connectionId).remove(); } private updateEventList(event: string, content: string) { @@ -418,4 +445,39 @@ export class OpenviduInstanceComponent implements OnInit, OnChanges, OnDestroy { }); } + publishUnpublish(): void { + if (this.unpublished) { + this.session.publish(this.publisher); + } else { + this.session.unpublish(this.publisher); + } + this.unpublished = !this.unpublished; + this.updatePublishIcon(); + } + + subUnsubFromSubscriber(connectionId: string) { + let subscriber: Subscriber = this.subscribers[connectionId].subscriber; + if (this.subscribers[connectionId].subbed) { + this.session.unsubscribe(subscriber); + document.getElementById('data-' + this.session.connection.connectionId + '-' + connectionId).style.marginLeft = '0'; + document.getElementById('icon-' + this.session.connection.connectionId + '-' + connectionId).innerHTML = 'notifications_off'; + } else { + subscriber = this.session.subscribe(subscriber.stream, 'remote-vid-' + this.session.connection.connectionId); + this.subscribers[connectionId].subscriber = subscriber; + subscriber.on('videoElementCreated', (e) => { + if (!subscriber.stream.getRecvVideo()) { + $(e.element).css({ 'background-color': '#4d4d4d' }); + $(e.element).attr('poster', 'assets/images/volume.png'); + } + this.removeUserData(connectionId); + this.appendUserData(e.element, subscriber.stream.connection); + this.updateEventList('videoElementCreated', e.element.id); + }); + subscriber.on('videoPlaying', (e) => { + this.updateEventList('videoPlaying', e.element.id); + }); + } + this.subscribers[connectionId].subbed = !this.subscribers[connectionId].subbed; + } + } diff --git a/openvidu-testapp/src/styles.css b/openvidu-testapp/src/styles.css index f389ac30..a6dc82f6 100644 --- a/openvidu-testapp/src/styles.css +++ b/openvidu-testapp/src/styles.css @@ -43,13 +43,17 @@ button { } .video-container div.data-node { + width: 120px; + height: 90px; float: left; position: relative; margin-left: -120px; - margin-top: -14px; + margin-top: 0; } .video-container p { + margin-top: 0; + width: fit-content; background: #ffffff; padding-left: 5px; padding-right: 5px; @@ -59,6 +63,26 @@ button { border-bottom-right-radius: 2px; } +.video-container div.data-node .sub-btn { + outline: 0; + border: none; + background: white; + cursor: pointer; + padding: 0; + margin-top: 40px; + border-top-right-radius: 2px; +} + +.video-container div.data-node .sub-btn:hover { + color: #4d4d4d; +} + +.video-container div.data-node .material-icons { + font-size: 17px; + width: 17px; + height: 17px; +} + .mat-expansion-panel-body { font-size: 9.5px !important; padding: 0 9px 0px !important;