Commit 049e790d authored by Dominik Rosiek's avatar Dominik Rosiek

Merge branch 'master' of gitlab.telemabk.pl:jifwin/CTF

parents d44e9ca7 3dd5edae
package com.telephoners.krakyournet.ctf.beans; package com.telephoners.krakyournet.ctf.beans;
import com.fasterxml.jackson.annotation.JsonIgnore; import com.fasterxml.jackson.annotation.JsonProperty;
public class Flag { public class Flag {
private String value; private String value;
...@@ -16,12 +16,12 @@ public class Flag { ...@@ -16,12 +16,12 @@ public class Flag {
this.points = points; this.points = points;
} }
// @JsonIgnore //TODO!! @JsonProperty(access = JsonProperty.Access.WRITE_ONLY)
public String getValue() { public String getValue() {
return value; return value;
} }
// @JsonIgnore //TODO!! @JsonProperty(access = JsonProperty.Access.WRITE_ONLY)
public void setValue(String value) { public void setValue(String value) {
this.value = value; this.value = value;
} }
......
...@@ -52,9 +52,11 @@ public class SolutionsRepository extends Repository<Solution> ...@@ -52,9 +52,11 @@ public class SolutionsRepository extends Repository<Solution>
private boolean isAlreadySubmittedSolution(Solution solution) private boolean isAlreadySubmittedSolution(Solution solution)
{ {
return !datastore.find(Solution.class) List<Solution> solutions = datastore.find(Solution.class)
.filter("flag.value", solution.getFlag().getValue()) .filter("flag.value", solution.getFlag().getValue()) //todo: do not filter by field
.asList() .filter("team.name", solution.getTeam().getName()) //todo: whole object instead
.asList();
return !solutions
.isEmpty(); .isEmpty();
} }
......
...@@ -3,12 +3,14 @@ ...@@ -3,12 +3,14 @@
var calculatePerTeam = function(data) { var calculatePerTeam = function(data) {
var teams = {}; var teams = {};
console.log("data", data);
for (var team in data) { for (var team in data) {
if (data.hasOwnProperty(team)) { if (data.hasOwnProperty(team)) {
teams[team] = 0; teams[team] = 0;
for (var level in data[team]){ for (var level in data[team]){
if (data[team].hasOwnProperty(level)){ if (data[team].hasOwnProperty(level)){
teams[team] += data[team][level].length; var score = data[team][level].map(function(o){return o.points;}).reduce(function(a,b){return a+b;});
teams[team] += score;
} }
} }
} }
...@@ -16,12 +18,12 @@ ...@@ -16,12 +18,12 @@
return teams; return teams;
}; };
function viewGraph(){ function viewGraph(maxValue){
$('.column').css('height','0'); $('.column').css('height','0');
// console.log($scope.teamsScores); // console.log($scope.teamsScores);
setTimeout(function(){ setTimeout(function(){
$('.column').each(function(){ $('.column').each(function(){
$(this).animate({width: 150*$(this).attr('data-score')}, 1500); $(this).animate({width: (100 * (parseFloat($(this).attr('data-score'))/maxValue)).toString() + '%'}, 1500);
}); });
} }
); );
...@@ -32,7 +34,8 @@ ...@@ -32,7 +34,8 @@
// console.log('Data from server', data); // console.log('Data from server', data);
$scope.teamsScores = calculatePerTeam(data); $scope.teamsScores = calculatePerTeam(data);
// console.log('Teams scores', $scope.teamsScores); // console.log('Teams scores', $scope.teamsScores);
viewGraph(); var maxValue = Math.max.apply(null, $.map($scope.teamsScores, function(v,k){return v;}));
viewGraph(maxValue);
}); });
......
...@@ -16,7 +16,7 @@ ...@@ -16,7 +16,7 @@
if (!$scope.task.completedFlags){ if (!$scope.task.completedFlags){
$scope.task.completedFlags = []; $scope.task.completedFlags = [];
} }
$scope.task.completedFlags.push(data.description); $scope.task.completedFlags.push(data);
$scope.submitUnknown = false; $scope.submitUnknown = false;
$flag.val(''); $flag.val('');
}).error(function(){ }).error(function(){
......
...@@ -88,7 +88,7 @@ ...@@ -88,7 +88,7 @@
if (!task.completedFlags){ if (!task.completedFlags){
task.completedFlags = []; task.completedFlags = [];
} }
task.completedFlags.push(data.description); task.completedFlags.push(data);
} }
}); });
}.bind(this)); }.bind(this));
......
...@@ -39,7 +39,7 @@ ...@@ -39,7 +39,7 @@
<p ng-if="task.completedFlags && task.completedFlags.length !== 0"> <p ng-if="task.completedFlags && task.completedFlags.length !== 0">
<div ng-repeat="flag in task.completedFlags"> <div ng-repeat="flag in task.completedFlags">
{{ flag }} {{ flag.description }} ({{ flag.points }} pkt)
</div> </div>
</p> </p>
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment