Skip to content

Commit

Permalink
Merge pull request #21 from matallen/master
Browse files Browse the repository at this point in the history
Updated LnF for mojo widgets & automated Ninja Wall widget
  • Loading branch information
matallen authored Mar 12, 2019
2 parents 4d1cc8e + 437d2b0 commit 48ee85f
Show file tree
Hide file tree
Showing 9 changed files with 364 additions and 108 deletions.
34 changes: 27 additions & 7 deletions src/main/java/com/redhat/sso/ninja/ChartsController.java
Original file line number Diff line number Diff line change
Expand Up @@ -29,9 +29,31 @@
@Path("/")
public class ChartsController{

@GET
@Path("/ninjas")
public Response getNinjas() throws JsonGenerationException, JsonMappingException, IOException{
return Response.status(200)
.header("Access-Control-Allow-Origin", "*")
.header("Content-Type","application/json")
.header("Cache-Control", "no-store, must-revalidate, no-cache, max-age=0")
.header("Pragma", "no-cache")
.entity(Json.newObjectMapper(true).writeValueAsString(getParticipants(null)))
.build();
}

@GET
@Path("/leaderboard/{max}")
public Response getLeaderboard2(@PathParam("max") Integer max) throws JsonGenerationException, JsonMappingException, IOException{
return Response.status(200)
.header("Access-Control-Allow-Origin", "*")
.header("Content-Type","application/json")
.header("Cache-Control", "no-store, must-revalidate, no-cache, max-age=0")
.header("Pragma", "no-cache")
.entity(Json.newObjectMapper(true).writeValueAsString(getParticipants(max)))
.build();
}

public Chart2Json getParticipants(Integer max) throws JsonGenerationException, JsonMappingException, IOException{
Database2 db=Database2.get();
Map<String, Map<String, Integer>> leaderboard=db.getLeaderboard();
Map<String, Integer> totals=new HashMap<String, Integer>();
Expand Down Expand Up @@ -62,6 +84,8 @@ public int compare(Map.Entry<String, Integer> o1, Map.Entry<String, Integer> o2)
for(Entry<String, Integer> e:sortedTotals.entrySet()){
Map<String, String> userInfo=db.getUsers().get(e.getKey());

if (null==max && userInfo.get("level").equalsIgnoreCase("zero")) break; // all ninjas with belts

c.getLabels().add(null!=userInfo && userInfo.containsKey("displayName")?userInfo.get("displayName"):e.getKey());

c.getCustom1().add(e.getKey()); // users rh username
Expand All @@ -86,14 +110,10 @@ public int compare(Map.Entry<String, Integer> o1, Map.Entry<String, Integer> o2)
c.getDatasets().get(0).getBorderColor().add(colors.get(userInfo.get("level").toUpperCase()).getSecond());

count=count+1;
if (count>=max) break;
if (null!=max && count>=max) break; // hard maximum suppled as param
}
return Response.status(200)
.header("Access-Control-Allow-Origin", "*")
.header("Content-Type","application/json")
.header("Cache-Control", "no-store, must-revalidate, no-cache, max-age=0")
.header("Pragma", "no-cache")
.entity(Json.newObjectMapper(true).writeValueAsString(c)).build();

return c;
}

// UI call (user dashboard) - returns the payload to render a chart displaying the current points and points to the next level
Expand Down
12 changes: 10 additions & 2 deletions src/main/java/com/redhat/sso/ninja/Heartbeat2.java
Original file line number Diff line number Diff line change
Expand Up @@ -429,12 +429,20 @@ public void addPoints(String user, String pool, Integer increment, Map<String, S
// add the top 10 to the graphs too so they're available externally
try{
if (200!=Http.post(url+"/leaderboard_10", (String)cc.getLeaderboard2(10).getEntity()).responseCode)
log.error("Error pushing 'leaderboard' info to roxy");
// Http.post(url+"/leaderboard_10", (String)cc.getLeaderboard2(10).getEntity());
log.error("Error pushing 'leaderboard' info to proxy");
}catch (IOException e){
e.printStackTrace();
}

// add the Ninjas to the graphs too so they're available externally
try{
if (200!=Http.post(url+"/ninjas", (String)cc.getNinjas().getEntity()).responseCode)
log.error("Error pushing 'ninjas' info to proxy");
}catch (IOException e){
e.printStackTrace();
}


}else{
log.warn("not pushing to graphs proxy - url was: "+graphsProxyUrl);
}
Expand Down
2 changes: 1 addition & 1 deletion src/main/resources/config.json
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,6 @@
"users.ldap.searchDN": "(&(objectclass=Person)(%s=%s))"
},
"values": {
"lastRun2": "2019-01-01T00:00:00"
"lastRun2": "2019-03-01T00:00:00"
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,8 @@
font-family: Arial;
}
</style>



<script>
//var ctx = "https://community-ninja-board-community-ninja-board.apps.d1.casl.rht-labs.com/community-ninja-board";
Expand Down Expand Up @@ -93,87 +95,116 @@
position:relative;
top:20px;
}
a{
color: white;
text-decoration: none;
}
a:hover{
text-decoration: underline;
}
</style>


<table border=0 style="width:1000px;">

<table id="nav" border=0 style="width: 100%">
<tr>
<td colspan="2">
<table class="card2" border=0>
<tr>
<td colspan="6"><span class="cardName" id="_error"></span><br/><span id="_error2"></td>
</tr>
<!--td style="width:33%; vertical-align:top;">
<table class="card2">
<tr>
<td class="cardName" colspan="2"><span id="_displayName"></span></td>
<td class="cardScore" rowspan="4"><img class="ninjaIcon" id="_level"></img></td>
<td class="cardScore"><span id="_Trello">0</span></td>
<td class="cardScore"><span id="_Github">0</span></td>
<td class="cardScore"><!-- chat counter --></td>
<td><a href="/community/communities-at-red-hat/communities-of-practice-operations/communities-of-practice-ninja-program-v2/overview">Return to Ninja Program Homepage</a></td>
</tr>
</table>
</td-->
<td>

<table id="dashboard" border=0 style="width:1000px;">
<tr>
<td class="cardRow">
<img class="icon" src="https://www.redhat.com/profiles/rh/themes/redhatdotcom/img/logo.png">
</td>
<td><span id="_userId"></span></td>
<td class="cardScoreText" rowspan="3">trello</td>
<td class="cardScoreText" rowspan="3">github</td>
<td class="cardScoreText" rowspan="3"><!--chat--></td>
</tr>
<tr>
<td class="cardRow"><img class="icon" src="https://d2k1ftgv7pobq7.cloudfront.net/meta/u/res/images/brand-assets/Logos/0099ec3754bf473d2bbf317204ab6fea/trello-logo-blue.png"></td>
<td><span id="_trelloId"></span></td>
</tr>
<tr>
<td class="cardRow"><img style="height:20px;" src="https://assets-cdn.github.com/images/modules/logos_page/GitHub-Logo.png"></td>
<td><span id="_githubId"></span></td>
</tr>

<tr>
<td colspan="6" style="height: 20px;"><!-- SPACER ONLY --></td>
</tr>

<tr>
<td colspan="6">

<table border=0 style="width:100%;height:400px">
<td colspan="2">
<table class="card2" border=0>
<tr>
<td colspan="6"><span class="cardName" id="_error"></span><br/><span id="_error2"></td>
</tr>
<tr>
<td style="width:50%;">
<!-- #################### -->
<!-- BOTTOM LEFT DOUGHNUT -->
<!-- #################### -->
<script>
function leaderboardRefresh(){ return refreshGraph0('points', 'Doughnut', colors); }
</script>
<div id="leaderboard_container" class="graph" >
<canvas id="points"></canvas>
<center><span class="graph-label">Next Level</span></center>
</div>
<td class="cardName" colspan="2"><span id="_displayName"></span></td>
<td class="cardScore" rowspan="4"><img class="ninjaIcon" id="_level"></img></td>
<td class="cardScore"><span id="_Trello">0</span></td>
<td class="cardScore"><span id="_Github">0</span></td>
<td class="cardScore"><!-- chat counter --></td>
</tr>
<tr>
<td class="cardRow">
<img class="icon" src="https://www.redhat.com/profiles/rh/themes/redhatdotcom/img/logo.png">
</td>

<td>
<!-- ##################### -->
<!-- BOTTOM RIGHT DOUGHNUT -->
<!-- ##################### -->
<script>
function breakdownRefresh(){ return refreshGraph0('breakdown', 'Doughnut', colorsReverse); }
</script>
<div id="breakdown_container" class="graph" >
<canvas id="breakdown"></canvas>
<center><span class="graph-label">Points Breakdown</span></center>
</div>
<td><span id="_userId"></span></td>
<td class="cardScoreText" rowspan="3">trello</td>
<td class="cardScoreText" rowspan="3">github</td>
<td class="cardScoreText" rowspan="3"><!--chat--></td>
</tr>
<tr>
<td class="cardRow"><img class="icon" src="https://d2k1ftgv7pobq7.cloudfront.net/meta/u/res/images/brand-assets/Logos/0099ec3754bf473d2bbf317204ab6fea/trello-logo-blue.png"></td>
<td><span id="_trelloId"></span></td>
</tr>
<tr>
<td class="cardRow"><img style="height:20px;" src="https://github.githubassets.com/images/modules/logos_page/GitHub-Logo.png"></td>
<td><span id="_githubId"></span></td>
</tr>

<tr>
<td colspan="6" style="height: 20px;"><!-- SPACER ONLY --></td>
</tr>

<tr>
<td colspan="6">

<table border=0 style="width:100%;height:400px">
<tr>
<td style="width:50%;">
<!-- #################### -->
<!-- BOTTOM LEFT DOUGHNUT -->
<!-- #################### -->
<script>
function leaderboardRefresh(){ return refreshGraph0('points', 'Doughnut', colors); }
</script>
<div id="leaderboard_container" class="graph" >
<canvas id="points"></canvas>
<center><span class="graph-label">Next Level</span></center>
</div>
</td>

<td>
<!-- ##################### -->
<!-- BOTTOM RIGHT DOUGHNUT -->
<!-- ##################### -->
<script>
function breakdownRefresh(){ return refreshGraph0('breakdown', 'Doughnut', colorsReverse); }
</script>
<div id="breakdown_container" class="graph" >
<canvas id="breakdown"></canvas>
<center><span class="graph-label">Points Breakdown</span></center>
</div>
</td>
</tr>
</table>
</td>
</tr>
</tr>
</table>
</td>
</tr>
</tr>
</table>

</td>
<td style="width: 33%">

</td>
</tr>
</table>







Expand Down Expand Up @@ -228,6 +259,8 @@ xhr.onloadend = function () {
}
//console.log(value);
});
document.getElementById("nav").height=document.getElementById("dashboard").height;
}
}
Expand Down Expand Up @@ -332,29 +365,35 @@ function buildChart(uri, chartElementName, type, clrs){
data.datasets[0].backgroundColor=backgroundColor;// push({"backgroundColor2":backgroundColor});
data.datasets[0].borderColor=borderColor;
if ("points"==chartElementName){
var total=data.datasets[0].data[0]+data.datasets[0].data[1];
var current=data.datasets[0].data[0];
var centerText="";
var total=0;
for(var i=0;i<data.datasets[0].data.length;i++)
total+=data.datasets[0].data[i];
centerText=total;
if ("points"==chartElementName){
var current=data.datasets[0].data[0];
if (0==current && 0==total){
var percentage="0%";
}else{
var percentage=Math.round((current/total)*100)+"%";
}
}else{
var percentage="";
}
var centerText="0%";
}else
var centerText=Math.round((current/total)*100)+"%";
}
if (type=="Doughnut"){
var myDoughnutChart = new Chart(ctx, {
type: 'doughnut',
data: data,
options: {
elements: {
center: {
text: percentage,
text: centerText,
color: '#eee', // Default is #000000
fontStyle: 'Arial', // Default is Arial
sidePadding: 20 // Default is 20 (as a percentage)
sidePadding: 20, // Default is 20 (as a percentage)
labelFontSize: 5
}
},
legend:{
Expand Down
Loading

0 comments on commit 48ee85f

Please sign in to comment.