* WebRTC Server side

* WebRTC client side

* Bug fixes and improvements

* Pushing UI improvements for webrtc (#3728)

* Pushing UI improvements for webrtc

* Updating webrtc css

* PLT-3943 WebRTC P1: bug fixes and improvements

* Video resolution set to std, reduce volume of ringtone and flip video horizontally

* Fix calling a user B while WebRTC RHS is still opened

* Leave RHS opened when call ends, Fix isBusy on popover and channel_header

* Fix pre-release feature, RHS & System Console

* PLT-3945 - Updating UI for webrtc (#3908)

* PLT-3943 Webrtc p1

* Add ongoing call indicator when RHS is opened

* UI updates to to webrtc notifcation (#3959)
Этот коммит содержится в:
enahum
2016-09-16 15:35:13 -03:00
коммит произвёл GitHub
родитель df2d61d941
Коммит 781ff323db
45 изменённых файлов: 4902 добавлений и 90 удалений

Просмотреть файл

@@ -19,3 +19,4 @@
@import 'tooltip';
@import 'tutorial';
@import 'videos';
@import 'webrtc';

297
webapp/sass/components/_webrtc.scss Обычный файл
Просмотреть файл

@@ -0,0 +1,297 @@
@charset 'UTF-8';
.webrtc__user-profile {
@include webrtc-button;
text-align: center;
#webrtc-btn {
display: inherit;
}
}
.webrtc__header {
@include webrtc-button;
float: left;
margin-right: 10px;
position: relative;
top: 13px;
}
.webrtc__notification--rhs {
background: $button--ready;
border-radius: 3px 0 0 3px;
bottom: 10px;
color: $white;
cursor: pointer;
padding: 10px 15px;
position: absolute;
right: 0;
z-index: 9999;
&:empty {
display: none;
}
.fa {
margin-right: 6px;
}
}
.webrtc__error {
padding: 0 20px;
text-align: center;
.control-label {
@include border-radius(3px);
background: #f2f2f2;
font-size: 14px;
font-weight: normal;
margin: 1em 0 -1em;
padding: .7em 1em;
width: 100%;
}
.has-error {
.control-label {
color: #a94442;
font-size: .95em;
&:before {
-moz-osx-font-smoothing: grayscale;
-webkit-font-smoothing: antialiased;
color: #a94442;
content: '\F071';
display: inline-block;
font: normal normal normal 14px/1 FontAwesome;
margin-right: 4px;
text-rendering: auto;
transform: translate(0, 0);
}
}
}
}
#videos {
background: $black;
font-size: 0;
left: 0;
pointer-events: none;
position: relative;
text-align: center;
transition: all 1s;
width: 100%;
#main-video video {
width: 100%;
}
#local-video {
border: 1px solid gray;
max-width: 30%;
opacity: 1;
position: absolute;
right: 10px;
top: 10px;
transition: opacity 1s;
z-index: 2;
video {
-moz-transform: scale(-1, 1);
-ms-transform: scale(-1, 1);
-o-transform: scale(-1, 1);
-webkit-transform: scale(-1, 1);
height: 100%;
max-height: 100%;
max-width: 100%;
object-fit: cover;
transform: scale(-1, 1);
transition: opacity 1s;
width: 100%;
}
}
.webrtc__local-image {
position: absolute;
right: 10px;
top: 10px;
z-index: 2;
img {
border-radius: 50%;
height: 64px;
max-width: 100%;
width: 64px;
}
}
.webrtc__remote-image {
background-color: $black;
border: 1px solid alpha-color($black, .2);
padding: 40px 0;
img {
border-radius: 50%;
max-height: 128px;
max-width: 128px;
width: 100%;
}
}
.webrtc__remote-mute {
bottom: 0;
position: absolute;
right: 10px;
z-index: 9999;
}
}
.webrtc-buttons {
margin-top: 1.2em;
text-align: center;
.webrtc-icons__call {
border-radius: 48px;
circle {
fill: $button--ready;
}
&:hover {
cursor: pointer;
circle {
fill: darken($button--ready, 5%);
}
}
&[disabled] {
circle {
fill: $video-circle-offline;
}
}
}
.webrtc-icons__cancel {
border-radius: 48px;
circle {
fill: $button--cancel;
}
&:hover {
cursor: pointer;
circle {
fill: darken($button--cancel, 5%);
}
}
}
}
.webrtc-icons {
&.active {
svg {
transform: translateY(0);
}
}
svg {
border-radius: 48px;
margin: 5px;
path {
&.on {
display: block;
}
&.off {
display: none;
}
}
}
}
.connecting {
position: absolute;
top: 0;
width: 100%;
.loading-screen {
background-color: rgba(0,0,0, .3);
color: $connecting;
margin-left: 5px;
padding: 20px;
position: relative;
top: 75px;
width: 97%;
.loading__content {
.round {
background: $connecting !important;
}
}
}
}
.webrtc-notification {
background-color: $webrtc-notification-bg;
color: $white;
left: calc(50% - 200px);
padding: 20px 30px 10px;
position: absolute;
text-align: center;
top: calc(50% - 115px);
width: 400px;
z-index: 99999;
.webrtc-buttons {
margin-top: 1.2em;
text-align: center;
.webrtc-icons__pickup {
circle {
fill: $button--pickup;
}
&:hover {
cursor: pointer;
circle {
fill: darken($button--pickup, 3%);
}
}
}
}
}
.sidebar--right--expanded {
#videos {
height: 100%;
position: absolute;
#main-video {
height: 100%;
video {
height: 100%;
width: auto;
}
}
}
.webrtc-buttons {
bottom: 5px;
position: absolute;
width: 100%;
}
#videos {
#local-video {
max-width: 200px;
}
}
#videos.small {
position: relative;
}
}

Просмотреть файл

@@ -1,7 +1,8 @@
@charset 'UTF-8';
.inner-wrap {
&.move--left {
&.move--left,
&.webrtc--show {
.search-bar__container {
display: none;
}

Просмотреть файл

@@ -388,7 +388,8 @@
}
}
.channel__wrap.move--left & {
.channel__wrap.move--left &,
.channel__wrap.webrtc--show & {
position: absolute;
right: -400px;
top: 14px;

Просмотреть файл

@@ -8,7 +8,11 @@
position: fixed;
right: 0;
width: 400px;
z-index: 5;
z-index: 6;
&.webrtc {
z-index: 5;
}
.sidebar--right__bg {
@include single-transition(background-color, .5s, ease);
@@ -20,7 +24,8 @@
width: 300%;
}
&.move--left {
&.move--left,
&.webrtc--show {
.sidebar--right__bg {
left: -100%;
}

Просмотреть файл

@@ -2,7 +2,8 @@
@media screen and (max-width: 1800px) {
.inner-wrap {
&.move--left {
&.move--left,
&.webrtc--show {
.date-separator,
.new-separator {
&.hovered--comment {
@@ -18,7 +19,8 @@
@media screen and (max-width: 1440px) {
.inner-wrap {
&.move--left {
&.move--left,
&.webrtc--show {
.help__format-text {
display: none;
}
@@ -53,7 +55,8 @@
}
.inner-wrap {
&.move--left {
&.move--left,
&.webrtc--show {
.file-overlay {
font-size: em(18px);

Просмотреть файл

@@ -779,7 +779,8 @@
display: block;
width: 290px;
&.move--left {
&.move--left,
&.webrtc--show {
@include translate3d(0, 0, 0);
}
}
@@ -958,7 +959,8 @@
}
}
&.move--left {
&.move--left,
&.webrtc--show {
margin: 0;
@include translate3d(-100%, 0, 0);
}

Просмотреть файл

@@ -17,7 +17,8 @@
@include single-transition(all, .5s, ease);
@include translateX(100%);
&.move--left {
&.move--left,
&.webrtc--show {
-webkit-transform: translateX(0) !important;
-moz-transform: translateX(0) !important;
-ms-transform: translateX(0) !important;
@@ -53,7 +54,8 @@
margin-right: 0 !important;
}
&.move--left {
&.move--left,
&.webrtc--show {
margin-right: 0 !important;
.channel-header__links {
@@ -72,7 +74,8 @@
}
.sidebar--right {
&.move--left {
&.move--left,
&.webrtc--show {
@include translateX(0);
}
@@ -106,7 +109,8 @@
}
.inner-wrap {
&.move--left {
&.move--left,
&.webrtc--show {
margin-right: 400px;
}
}

Просмотреть файл

@@ -78,7 +78,8 @@
margin-left: 0;
}
#channel_view .inner-wrap.move--left {
#channel_view .inner-wrap.move--left,
#channel_view .inner-wrap.webrtc--show {
margin-right: 0;
}

Просмотреть файл

@@ -26,4 +26,74 @@
@mixin cursor($value) {
cursor: -webkit-$value;
cursor: zoom-$value;
}
}
// Webrtc button
@mixin webrtc-button {
.webrtc__button {
@include border-radius(50px);
display: block;
height: 32px;
width: 32px;
&.on,
&:hover {
background: darken($button--ready, 5%);
}
&:hover circle {
fill: darken($button--ready, 5%);
}
circle {
fill: $button--ready;
&.offline {
fill: $video-circle-offline;
}
}
path {
.on {
display: none;
}
.off {
display: block;
}
}
&.on {
path {
.on {
display: block;
}
.off {
display: none;
}
}
circle {
fill-opacity: 0;
}
}
}
a {
&[disabled] {
.webrtc__button {
&:hover {
background: none;
box-shadow: none;
}
&:hover {
circle {
fill: $video-circle-offline;
}
}
}
}
}
}

Просмотреть файл

@@ -17,3 +17,13 @@ $border-gray: 1px solid #ddd;
// Random variables
$border-rad: 1px;
// Webrtc Variables
$button--ready: #00A6EE;
$video-circle-btn: #2f81b7;
$video-circle-hover: #56C303;
$video-circle-offline: #aaa;
$button--cancel: #E41020;
$button--pickup: #73B001;
$connecting: $white;
$webrtc-notification-bg: rgba(112, 128, 144, .8);