Bladeren bron

Merge pull request #19 from bfirsh/vote-refactoring

Various pieces of vote refactoring
Ben Firshman 9 jaren geleden
bovenliggende
commit
64839f70dc
4 gewijzigde bestanden met toevoegingen van 39 en 24 verwijderingen
  1. 12 5
      result-app/server.js
  2. 22 17
      result-app/views/app.js
  3. 4 2
      result-app/views/index.html
  4. 1 0
      result-app/views/stylesheets/style.css

+ 12 - 5
result-app/server.js

@@ -45,17 +45,24 @@ function getVotes(client) {
     if (err) {
       console.error("Error performing query: " + err);
     } else {
-      var data = result.rows.reduce(function(obj, row) {
-        obj[row.vote] = row.count;
-        return obj;
-      }, {});
-      io.sockets.emit("scores", JSON.stringify(data));
+      var votes = collectVotesFromResult(result);
+      io.sockets.emit("scores", JSON.stringify(votes));
     }
 
     setTimeout(function() {getVotes(client) }, 1000);
   });
 }
 
+function collectVotesFromResult(result) {
+  var votes = {a: 0, b: 0};
+
+  result.rows.forEach(function (row) {
+    votes[row.vote] = parseInt(row.count);
+  });
+
+  return votes;
+}
+
 app.use(cookieParser());
 app.use(bodyParser());
 app.use(methodOverride('X-HTTP-Method-Override'));

+ 22 - 17
result-app/views/app.js

@@ -5,15 +5,6 @@ var bg1 = document.getElementById('background-stats-1');
 var bg2 = document.getElementById('background-stats-2');
 
 app.controller('statsCtrl', function($scope){
-  var animateStats = function(a,b){
-    if(a+b>0){
-      var percentA = a/(a+b)*100;
-      var percentB = 100-percentA;
-      bg1.style.width= percentA+"%";
-      bg2.style.width = percentB+"%";
-    }
-  };
-
   $scope.aPercent = 50;
   $scope.bPercent = 50;
 
@@ -23,15 +14,16 @@ app.controller('statsCtrl', function($scope){
        var a = parseInt(data.a || 0);
        var b = parseInt(data.b || 0);
 
-       animateStats(a, b);
+       var percentages = getPercentages(a, b);
+
+       bg1.style.width = percentages.a + "%";
+       bg2.style.width = percentages.b + "%";
 
-       $scope.$apply(function() {
-         if(a + b > 0){
-           $scope.aPercent = a/(a+b) * 100;
-           $scope.bPercent = b/(a+b) * 100;
-           $scope.total = a + b
-         }
-      });
+       $scope.$apply(function () {
+         $scope.aPercent = percentages.a;
+         $scope.bPercent = percentages.b;
+         $scope.total = a + b;
+       });
     });
   };
 
@@ -43,3 +35,16 @@ app.controller('statsCtrl', function($scope){
     init();
   });
 });
+
+function getPercentages(a, b) {
+  var result = {};
+
+  if (a + b > 0) {
+    result.a = Math.round(a / (a + b) * 100);
+    result.b = 100 - result.a;
+  } else {
+    result.a = result.b = 50;
+  }
+
+  return result;
+}

+ 4 - 2
result-app/views/index.html

@@ -31,8 +31,10 @@
         </div>
       </div>
     </div>
-    <div id="result" ng-if="total > 100">
-      {{total}} votes
+    <div id="result">
+      <span ng-if="total == 0">No votes yet</span>
+      <span ng-if="total == 1">{{total}} vote</span>
+      <span ng-if="total >= 2">{{total}} votes</span>
     </div>
     <script src="socket.io.js"></script>
     <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.4.5/angular.min.js"></script>

+ 1 - 0
result-app/views/stylesheets/style.css

@@ -47,6 +47,7 @@ body{
   vertical-align:middle;
 }
 #result{
+  z-index: 3;
   position: absolute;
   bottom: 40px;
   right: 20px;