]> git.ipfire.org Git - thirdparty/freeswitch.git/commitdiff
FS-8293 [verto_communicator] - Showing speed in the menu bar if autoBand is true...
authorJaon EarlWolf <jamonsterr@gmail.com>
Mon, 9 Nov 2015 21:58:11 +0000 (18:58 -0300)
committerAnthony Minessale <anthm@freeswitch.org>
Thu, 12 Nov 2015 21:35:39 +0000 (15:35 -0600)
FS-8293 [verto_communicator] - Changed info in the top menu bar for a icon+popover, changed autoBand's code in testSpeed method, moved 'Bandwidth settings' to 'Video settings' in settings modal and now hidding video quality selection when autoBand is checked.
FS-8293 [verto_communicator] - Better bandwidth info ui.
FS-8293 [verto_communicator] - Fixed speed test breaking at splash screen if user isn't logged in.

14 files changed:
html5/verto/verto_communicator/src/config.json
html5/verto/verto_communicator/src/config.json.sample
html5/verto/verto_communicator/src/css/verto.css
html5/verto/verto_communicator/src/partials/dialpad.html
html5/verto/verto_communicator/src/partials/menu.html
html5/verto/verto_communicator/src/partials/modal_settings.html
html5/verto/verto_communicator/src/storageService/services/splash_screen.js
html5/verto/verto_communicator/src/storageService/services/storage.js
html5/verto/verto_communicator/src/vertoControllers/controllers/DialPadController.js
html5/verto/verto_communicator/src/vertoControllers/controllers/MainController.js
html5/verto/verto_communicator/src/vertoControllers/controllers/MenuController.js
html5/verto/verto_communicator/src/vertoControllers/controllers/ModalSettingsController.js
html5/verto/verto_communicator/src/vertoService/services/configService.js
html5/verto/verto_communicator/src/vertoService/services/vertoService.js

index e7b09aae9524e5cd0a8249c6a7f8f02b94600126..c07687453cfc581e3709cdada84a42582d64bcca 100644 (file)
@@ -1,4 +1,5 @@
 {
       "login": "1008",
-      "password": "1234"
+      "password": "1234",
+      "dedEncWatermark": 3072
 }
index a905c6161dd7c50eaed7367f4caa8dff9487cf94..96b82a89863c3f956d832e05a887fa26d943b8d5 100644 (file)
@@ -9,5 +9,6 @@
       "autologin": "true",
       "autocall": "3500",
       "googlelogin": "true",
-      "wsURL": "wss://gamma.tollfreegateway.com/wss2"
+      "wsURL": "wss://gamma.tollfreegateway.com/wss2",
+      "dedEncWatermark": 3072
 }
index 84ca62e730cfb90bb4765d679e35c9d1bbc87f10..d4763f2bf9e7192dc5b15df7c4c7d08721a3b40a 100644 (file)
@@ -1481,6 +1481,35 @@ body:-webkit-full-screen #incall .video-footer {
 .preview-wrapper video {
   transform: scaleX(-1);
 }
+
+.drop-net-info {
+  padding-top: 0px;
+  cursor: default;
+}
+
+.drop-net-info .title {
+  text-align: center;
+  font-size: 16px;
+  font-weight: bold;
+  padding: 8px 14px;
+  margin: 0;
+  font-size: 14px;
+  background-color: #f7f7f7;
+  border-bottom: 1px solid #ebebeb;
+}
+
+.drop-net-info .title:hover {
+  background-color: #f7f7f7;
+}
+
+.drop-net-info a:hover {
+  color: #333 !important;
+}
+
+.net-info .dedenc {
+  color: #e3d95b;
+}
+
 #mic-meter {
   position: absolute;
   bottom: 5px;
index f24e28331d41be2feaf5a5054eeff370dae4ad00..e5711d1ef2f7511c46a5d8c7f2783b5333de2797 100644 (file)
@@ -1,4 +1,10 @@
-<div class="centered-block-frame" id="dialpad">
+<div ng-show="loading">
+  <h3 style="margin-top: 4%;" class="text-center">Calling to {{ dialpadNumber }}...</h3>
+  <svg class="spinner" width="65px" height="65px" viewBox="0 0 66 66" xmlns="http://www.w3.org/2000/svg">
+    <circle class="path" fill="none" stroke-width="6" stroke-linecap="round" cx="33" cy="33" r="30"></circle>
+  </svg>
+</div>
+<div class="centered-block-frame" id="dialpad" ng-show="!loading">
   <div id="call-history-wrapper">
     <div id="call_history" class="shadow-z-2 panel">
       <div class="panel-heading">
index b14aad00617f018bce96aed27047a2d3d497208a..55e0cee35bd4b382447d835809070e0e30266485 100644 (file)
     </div>
     <div id="navbar" class="navbar-collapse collapse">
       <ul class="nav navbar-nav navbar-right">
+        <li class="navbar-item-icon net-info" ng-show="(bandUp || bandDown) && storage.data.autoBand">
+          <a href="" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-expanded="false">
+            <i ng-class="iconClass"></i>
+            <span class="caret"></span>
+          </a>
+          <ul class="dropdown-menu drop-net-info" role="menu" ng-click="$event.stopPropagation()">
+            <li><a class="title">Bandwidth Info</a></li>
+            <li><a>Outgoing: {{bandUp}} Kbps</a></li>
+            <li><a>Incoming: {{bandDown}} Kbps</a></li>
+            <li><a>Video Resolution: {{vidRes}}</a></li>
+          </ul>
+        </li>
         <li>
           <a href="">
-              <i class="mdi-toggle-radio-button-on" user-status condition="storage.data.userStatus"></i>
+            <i class="mdi-toggle-radio-button-on" user-status condition="storage.data.userStatus"></i>
           </a>
         </li>
         <li>
@@ -29,7 +41,6 @@
               {{ storage.data.called_number && storage.data.userStatus == 'connecting' ? 'Last Call: ' : 'In Call: '  }} {{ storage.data.called_number  }}
           </a>
         </li>
-
         <li class="navbar-item-icon" ng-show="verto.data.connected">
           <a href="" ng-click="openModal('partials/modal_settings.html', 'ModalSettingsController')">
             <i class="mdi-action-settings"></i>
index 42c91b4cf915fdc51853320c016be4cfbd5698a0..5ca463dbb7e3356da03716669ecc3a53e3c5b750 100644 (file)
   </div>
 
   <div class="form-group">
-    <label for="video-quality">Video quality:</label>
-    <select name="video_quality" id="video-quality" class="form-control"
-            ng-model="mydata.vidQual"
-            ng-options="item.id as item.label for item in verto.videoQuality"></select>
+    <label>Video settings:</label>
+    <!-- <a class="btn btn-primary" href="" ng-click="testSpeed()">Check Speed</a> -->
+    <span ng-bind="speedMsg"></span>
 
-    <a class="btn btn-primary" href="" ng-click="testSpeed()">Check Speed</a>
-  </div>
+    <input type="hidden" name="use_dedenc" ng-value="mydata.useDedenc" ng-model="mydata.useDedenc">
 
-  <input type="hidden" name="use_dedenc" ng-value="mydata.useDedenc" ng-model="mydata.useDedenc">
 
-  <h4>Dedicated Remote Encoder</h4>
-  <h5>Select a non default bandwidth to use a dedicated remote encoder.</h5>
+    <div ng-show="mydata.useDedenc" class="dedicated_encoder">
+      <p>Dedicated Remote Encoder enabled.</b>
+    </div>
 
-  <div ng-show="mydata.useDedenc" class="dedicated_encoder">
-    <p>Dedicated Remote Encoder enabled.</b>
-  </div>
+    <div class="checkbox">
+      <label>
+        <input type="checkbox" ng-model="mydata.autoBand" ng-change="checkAutoBand(mydata.autoBand)">
+        Auto
+      </label>
+    </div>
 
-  <div class="form-group">
-    <label for="outgoing-bandwidth">Max outgoing bandwidth:</label>
-    <select name="outgoing_bandwidth" id="outgoing-bandwidth" class="form-control"
-            ng-model="mydata.outgoingBandwidth"
-           ng-change="checkUseDedRemoteEncoder(mydata.outgoingBandwidth)"
-            ng-options="item.id as item.label for item in verto.bandwidth"></select>
-  </div>
+    <div class="checkbox" ng-show="mydata.autoBand">
+      <label>
+        <input type="checkbox" ng-model="mydata.testSpeedJoin">
+        Check bandwidth before joining call
+      </label>
+    </div>
 
-  <div class="form-group">
-    <label for="incoming-bandwidth">Max incoming bandwidth:</label>
-    <select name="incoming_bandwidth" id="incoming-bandwidth" class="form-control"
-            ng-model="mydata.incomingBandwidth"
-           ng-change="checkUseDedRemoteEncoder(mydata.incomingBandwidth)"
-            ng-options="item.id as item.label for item in verto.bandwidth"></select>
+    <div ng-show="!mydata.autoBand">
+      <label for="video-quality">Video quality:</label>
+      <select name="video_quality" id="video-quality" class="form-control"
+              ng-disabled="mydata.autoBand"
+              ng-model="mydata.vidQual"
+              ng-options="item.id as item.label for item in verto.videoQuality"></select>
+    </div>
+
+    <div ng-show="!mydata.autoBand">
+      <label for="incoming-bandwidth">Max incoming bandwidth:</label>
+      <select name="incoming_bandwidth" id="incoming-bandwidth" class="form-control"
+              ng-model="mydata.incomingBandwidth"
+           ng-change="checkUseDedRemoteEncoder(mydata.incomingBandwidth)"
+              ng-options="item.id as item.label for item in verto.bandwidth"></select>
+    </div>
+
+    <div ng-show="!mydata.autoBand">
+      <label for="outgoing-bandwidth">Max outgoing bandwidth:</label>
+      <select name="outgoing_bandwidth" id="outgoing-bandwidth" class="form-control"
+              ng-model="mydata.outgoingBandwidth"
+              ng-options="item.id as item.label for item in verto.bandwidth"></select>
+    </div>
   </div>
 
 </div>
index d9be180147ef28eecc223dc910492a3516e9050c..13c238bdd0de4e95fd656ff5880b74b3f85d50ca 100644 (file)
               'message': 'Check Connection Speed.'
             };
 
-            if(!verto.instance) {
+            if (storage.data.autoBand && verto.instance) {
+              verto.testSpeed(cb);
+            } else {
               resolve(result);
-              return;
             }
 
-            verto.testSpeed(cb);
-
             function cb(data) {
-
               resolve(result);
             }
           });
index 2ac76532f6ec8b2b9314e5d75e68e688bbabc626..b344ea2324a971b431900931b3ecc09b68013e56 100644 (file)
@@ -35,7 +35,9 @@
           askRecoverCall: false,
           googNoiseSuppression: true,
           googHighpassFilter: true,
-          googEchoCancellation: true
+          googEchoCancellation: true,
+          autoBand: true,
+          testSpeedJoin: true
        };
 
     data.$default(defaultSettings);
index 14a8846f45d9104112a1f9d01b526fae4e6540c4..305befeea11b621c56fc2b9595b7951f9ea73418 100644 (file)
         /**
          * Call to the number in the $rootScope.dialpadNumber.
          */
+        $scope.loading = false;
         $rootScope.call = function(extension) {
-          return call(extension);
+          if (!storage.data.testSpeedJoin || !$rootScope.dialpadNumber) {
+            return call(extension);
+          }
+          $scope.loading = true;
+
+          verto.testSpeed(function() {
+            $scope.loading = false;
+            call(extension);
+          });
         }
       }
     ]);
index 4a00c021c0d246bde8c2b1d9fdd35637612e7842..4a4a3accfe698e2a3e4a747f8f9dbe6ab7b0fff5 100644 (file)
@@ -52,7 +52,9 @@
             storage.data.email = verto.data.email;
             storage.data.login = verto.data.login;
             storage.data.password = verto.data.password;
-            verto.testSpeed();
+            if (storage.data.autoBand) {
+              verto.testSpeed();
+            }
 
             if (redirect && storage.data.preview) {
               $location.path('/preview');
       };
 
       function onWSLogin(ev, data) {
+        if(storage.data.autoBand) {
+          verto.testSpeed();
+        }
         if(!ws_modalInstance) {
           return;
         };
index 6d77567714cc23a4ec63ee1e586f712639d6b71d..f2111ad20e4312450c610e7ca22199df9c1959f6 100644 (file)
@@ -4,10 +4,36 @@
   angular
     .module('vertoControllers')
        .controller('MenuController', ['$scope', '$http', '$location',
-         'verto', 'storage',
-         function($scope, $http, $location, verto, storage) {
+         'verto', 'storage', '$rootScope',
+         function($scope, $http, $location, verto, storage, $rootScope) {
            console.debug('Executing MenuController.');
-         }
+      $scope.storage = storage;
+
+      $rootScope.$on('testSpeed', function(e, data) {
+        var dedEncWatermark = storage.data.dedEncWatermark;
+        var vidQual = storage.data.vidQual;
+
+        $scope.bandDown = data.downKPS;
+        $scope.bandUp = data.upKPS;
+        $scope.dedEnc = storage.data.useDedenc;
+
+        $scope.iconClass = 'mdi-device-signal-wifi-3-bar';
+
+        if ($scope.bandDown < dedEncWatermark) {
+          $scope.iconClass = 'mdi-device-signal-wifi-1-bar dedenc';
+        } else if ($scope.bandDown >= 2*dedEncWatermark) {
+          $scope.iconClass = 'mdi-device-signal-wifi-4-bar';
+        }
+
+        verto.videoQuality.forEach(function(vid) {
+          if (vid.id == vidQual){
+            $scope.vidRes = vid.label;
+          }
+        });
+
+        $scope.$apply();
+      });
+    }
        ]);
 
-})();
\ No newline at end of file
+})();
index cee39a393ee0eb7972ac2b92cf4f622cc524e932..7bc9aa7452a6e73a7a113698f0dd34dbe2181e7b 100644 (file)
@@ -15,6 +15,9 @@
         $scope.ok = function() {
           storage.changeData($scope.mydata);
           verto.data.instance.iceServers(storage.data.useSTUN);
+          if (storage.data.autoBand) {
+            $scope.testSpeed();
+          }
           $modalInstance.close('Ok.');
         };
 
@@ -30,7 +33,8 @@
           return verto.testSpeed(cb);
 
           function cb(data) {
-
+            $scope.mydata.vidQual = storage.data.vidQual;
+            $scope.speedMsg = 'Up: ' + data.upKPS + ' Down: ' + data.downKPS;
             $scope.$apply();
           }
         };
          };
         };
 
-        $scope.checkUseDedRemoteEncoder = function(option) {
-          if ($scope.mydata.incomingBandwidth != 'default' || $scope.mydata.outgoingBandwidth != 'default') {
-            $scope.mydata.useDedenc = true;
+        $scope.checkAutoBand = function(option) {
+          $scope.mydata.useDedenc = false;
+          if (!option) {
+            $scope.mydata.outgoingBandwidth = 'default';
+            $scope.mydata.incomingBandwidth = 'default';
+            $scope.mydata.vidQual = 'hd';
           } else {
+            $scope.mydata.testSpeedJoin = true;
+          }
+        };
+
+        $scope.checkUseDedRemoteEncoder = function(option) {
+          if (['0', 'default', '5120'].indexOf(option) != -1) {
             $scope.mydata.useDedenc = false;
+          } else {
+            $scope.mydata.useDedenc = true;
           }
         };
       }
index 105a20b324045ecfe770dd543c9dd18000420e6e..e5f5cf30f5279ba47452b29d2bc3acd3d6f52903 100644 (file)
@@ -40,6 +40,12 @@ vertoService.service('config', ['$rootScope', '$http', '$location', 'storage', '
           verto.data.googlelogin = data.googlelogin;
           verto.data.googleclientid = data.googleclientid;
         }
+
+        if (data.dedEncWatermark) {
+          storage.data.dedEncWatermark = data.dedEncWatermark;
+        } else {
+          storage.data.dedEncWatermark = 3072;
+        }
         
         angular.extend(verto.data, data);
 
@@ -62,13 +68,13 @@ vertoService.service('config', ['$rootScope', '$http', '$location', 'storage', '
           console.debug("auto login per config.json");
           verto.data.autologin_done = true;
         }
-        
+
         if(verto.data.autologin && storage.data.name.length && storage.data.email.length && storage.data.login.length && storage.data.password.length) {
-          $rootScope.$emit('config.http.success', data);        
+          $rootScope.$emit('config.http.success', data);
         };
         return response;
       }, function(response) {
-        $rootScope.$emit('config.http.error', response);        
+        $rootScope.$emit('config.http.error', response);
         return response;
       });
 
@@ -79,4 +85,3 @@ vertoService.service('config', ['$rootScope', '$http', '$location', 'storage', '
       'configure': configure
     };
   }]);
-
index 62678396e2ca935124874c18d53cd6d4efd1c29f..36b191d44c7add784365ef4bdb512b73e319426d 100644 (file)
@@ -805,20 +805,29 @@ vertoService.service('verto', ['$rootScope', '$cookieStore', '$location', 'stora
       testSpeed: function(cb) {
 
         data.instance.rpcClient.speedTest(1024 * 256, function(e, data) {
-          var outBand = Math.ceil(data.upKPS * .75),
-              inBand = Math.ceil(data.downKPS * .75);
+          var upBand = Math.ceil(data.upKPS * .75),
+              downBand = Math.ceil(data.downKPS * .75);
 
-          storage.data.vidQual = 'hd';
 
-          if (outBand < 1024) {
-            storage.data.vidQual = 'vga';
+          if (storage.data.autoBand) {
+            storage.data.incomingBandwidth = downBand;
+            storage.data.outgoingBandwidth = upBand;
+            storage.data.useDedenc = downBand <= storage.data.dedEncWatermark;
+            storage.data.vidQual = 'hd';
+
+            if (upBand < 512) {
+              storage.data.vidQual = 'qvga';
+            }
+            else if (upBand < 1024) {
+              storage.data.vidQual = 'vga';
+            }
           }
-          if (outBand < 512) {
-            storage.data.vidQual = 'qvga';
+
+          if(cb) {
+            cb(data);
           }
 
-          if(cb) cb(data);
-          // console.info("Up: " + data.upKPS, "Down: ", data.downKPS);
+          $rootScope.$emit('testSpeed', data);
         });
       },
       /**