Skip to content
This repository was archived by the owner on Mar 5, 2020. It is now read-only.

Commit 1495460

Browse files
committed
Adding chart support
1 parent d4b9676 commit 1495460

File tree

4 files changed

+131
-3
lines changed

4 files changed

+131
-3
lines changed

src/main/java/pl/simplemethod/codebin/CodebinApplication.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,4 +33,10 @@ public SrvClient srvClient() {
3333
public GithubClient githubClient() {
3434
return new GithubClient("2f5c2010372081b036ff", "29e08d58c97f1448d3bd16f2ac10e5541be53937");
3535
}
36+
37+
@Bean
38+
public String string()
39+
{
40+
return "";
41+
}
3642
}

src/main/java/pl/simplemethod/codebin/githubOauth/GithubRestController.java

Lines changed: 56 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,10 @@
11
package pl.simplemethod.codebin.githubOauth;
22

33

4+
import com.mashape.unirest.http.HttpResponse;
5+
import com.mashape.unirest.http.JsonNode;
6+
import com.mashape.unirest.http.Unirest;
7+
import com.mashape.unirest.http.exceptions.UnirestException;
48
import org.json.JSONObject;
59
import org.json.simple.parser.JSONParser;
610
import org.json.simple.parser.ParseException;
@@ -15,6 +19,9 @@
1519
import pl.simplemethod.codebin.repository.ContainersRepository;
1620
import pl.simplemethod.codebin.repository.UsersRepository;
1721

22+
import java.util.*;
23+
import java.util.concurrent.atomic.AtomicInteger;
24+
1825

1926
@RestController
2027
@RequestMapping("github")
@@ -184,9 +191,57 @@ ResponseEntity checkToken(@RequestParam("token") String token) {
184191
return new ResponseEntity<>(body.toString(), headers, HttpStatus.valueOf(404));
185192
}
186193

194+
@GetMapping("/user/language")
195+
public @ResponseBody
196+
ResponseEntity getLanguageFromRepos(@CookieValue("token") String token) {
197+
HttpHeaders headers = new HttpHeaders();
198+
headers.setContentType(MediaType.APPLICATION_JSON);
199+
List language = new ArrayList();
200+
org.json.simple.JSONArray result = new org.json.simple.JSONArray();
201+
202+
try {
203+
JSONParser parser = new JSONParser();
204+
Object obj;
205+
obj = parser.parse(githubClient.getUserRepos(token));
206+
org.json.simple.JSONArray jsonArray = (org.json.simple.JSONArray) obj;
207+
Integer xd;
208+
jsonArray.forEach(item -> {
209+
210+
org.json.simple.JSONObject obj1 = (org.json.simple.JSONObject) item;
211+
try{
212+
language.add(obj1.get("language").toString());
213+
}
214+
catch (NullPointerException e)
215+
{
216+
language.add("Unknown");
217+
}
218+
});
219+
220+
Set<String> unique = new HashSet<String>(language);
221+
for (String key : unique) {
222+
org.json.JSONObject body = new org.json.JSONObject();
223+
body.put("language", key);
224+
body.put("count",Collections.frequency(language, key));
225+
result.add(body);
226+
}
227+
228+
return new ResponseEntity<>(result.toString(), headers, HttpStatus.valueOf(200));
229+
}
230+
231+
catch (NullPointerException | ParseException | org.json.JSONException e) {
232+
org.json.JSONObject body = new org.json.JSONObject();
233+
body.put("error", e);
234+
return new ResponseEntity<>(body.toString(), headers, HttpStatus.valueOf(404));
235+
}
236+
237+
238+
}
239+
240+
241+
187242
@GetMapping("/user/repos/public")
188243
public @ResponseBody
189-
ResponseEntity getpublicrepos(@CookieValue("token") String token) {
244+
ResponseEntity getPublicRepos(@CookieValue("token") String token) {
190245
HttpHeaders headers = new HttpHeaders();
191246
headers.setContentType(MediaType.APPLICATION_JSON);
192247
JSONParser parser = new JSONParser();

src/main/resources/public/app.js

Lines changed: 21 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -292,7 +292,27 @@ app.controller('HomeController', function ($scope, $http, $cookies) {
292292
$scope.loaded = true;
293293
},
294294
function () {
295-
$scope.passCheck = false;
295+
}
296+
);
297+
298+
299+
$http({
300+
url: 'https://127.0.0.1/github/user/language',
301+
method: 'GET'
302+
}).then(
303+
function (response) {
304+
$scope.trainer = response.data;
305+
306+
$scope.labels=[];
307+
$scope.dataLanguage=[];
308+
309+
for(var i=0;i<$scope.trainer.length;i++){
310+
$scope.labels.push($scope.trainer[i].language);
311+
$scope.dataLanguage.push($scope.trainer[i].count);
312+
}
313+
updateTechnologies($scope.dataLanguage,$scope.labels);
314+
},
315+
function () {
296316
}
297317
);
298318
});

src/main/resources/public/dashboard/home.html

Lines changed: 48 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,49 @@
1+
<script>
2+
function getRandomColor() {
3+
var letters = '0123456789ABCDEF'.split('');
4+
var color = '#';
5+
for (var i = 0; i < 6; i++) {
6+
color += letters[Math.floor(Math.random() * 16)];
7+
}
8+
return color;
9+
}
10+
11+
12+
function updateTechnologies(data, labels) {
13+
myChart.data.datasets[0].data = data;
14+
myChart.data.labels = labels;
15+
myChart.update();
16+
}
17+
18+
19+
var ctx = $('#technologies');
20+
var myChart = new Chart(ctx, {
21+
type: 'pie',
22+
data: {
23+
labels: [],
24+
datasets: [
25+
{
26+
backgroundColor: [getRandomColor(), getRandomColor(), getRandomColor(), getRandomColor(), getRandomColor(), getRandomColor(), getRandomColor(), getRandomColor(), getRandomColor(), getRandomColor(), getRandomColor(), getRandomColor(), getRandomColor(), getRandomColor()],
27+
data: []
28+
}
29+
]
30+
31+
},
32+
options: {
33+
legend: {
34+
display: true
35+
}
36+
37+
}
38+
});
39+
40+
41+
function updateDatatempChart(dataLanguage) {
42+
myChart.data.datasets[0].data[0] = dataLanguage;
43+
myChart.update();
44+
}
45+
</script>
46+
147
<!-- Preloader -->
248
<div ng-if="loaded != true" id="preloader">
349
<div class="loader"></div>
@@ -96,7 +142,8 @@ <h6 class="m-0">Containers usage</h6>
96142
<h6 class="m-0">Your technologies</h6>
97143
</div>
98144
<div class="card-body d-flex py-0">
99-
<canvas height="220" class="blog-users-by-device m-auto"></canvas>
145+
<canvas id="technologies" width="100%" height="50%" class="chartjs-render-monitor"
146+
style="display: block; width: 100%; height: 50%;"></canvas>
100147
</div>
101148
</div>
102149
</div>

0 commit comments

Comments
 (0)