Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Updated LnF for mojo widgets & automated Ninja Wall widget #21

Merged
merged 5 commits into from
Mar 12, 2019
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
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