93-activites-analytics
Artem.Arefev 5 years ago
parent 2adaf7740a
commit 44e3fc2c6e

@ -176,7 +176,7 @@ public class UserController extends OdinController<UserListDto, UserDto> {
}
@GetMapping("/activities")
public Response<Map<Date, Integer>> getActivitiesList(@RequestParam("userId") Integer userId,
public Response<Map<String, Integer>> getActivitiesList(@RequestParam("userId") Integer userId,
@RequestParam("dateFrom") @DateTimeFormat(pattern = "yyyy-MM-dd") Date dateFrom,
@RequestParam("dateTo") @DateTimeFormat(pattern = "yyyy-MM-dd") Date dateTo) {
return new Response<>(userService.getUsersActivity(userId, dateFrom, dateTo));

@ -49,6 +49,7 @@ import ru.ulstu.utils.timetable.model.Lesson;
import javax.mail.MessagingException;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Collections;
@ -413,15 +414,16 @@ public class UserService implements UserDetailsService {
activityRepository.save(activities);
}
public Map<Date, Integer> getUsersActivity(Integer userId, Date dateFrom, Date dateTo) {
public Map<String, Integer> getUsersActivity(Integer userId, Date dateFrom, Date dateTo) {
List<Activity> activities = activityRepository.getByUserAndDateInterval(userId, dateFrom, dateTo);
Map<Date, Integer> dateActivities = new HashMap<>();
Map<String, Integer> dateActivities = new HashMap<>();
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
for (Activity activity : activities) {
if (!dateActivities.containsKey(activity.getDate())) {
dateActivities.put(activity.getDate(), 1);
String dt = formatter.format(activity.getDate());
if (!dateActivities.containsKey(dt)) {
dateActivities.put(dt, 1);
} else {
dateActivities.put(activity.getDate(), dateActivities.get(activity.getDate()) + 1);
dateActivities.put(dt, dateActivities.get(dt) + 1);
}
}
return dateActivities;

@ -124,4 +124,38 @@ function resetPassword() {
function isEmailValid(email) {
re = /\S+@\S+\.\S+/;
return re.test(email)
}
function drawActivitiesChart() {
userId = $('#author :selected').val()
dateFrom = $('#dateFrom').val()
dateTo = $('#dateTo').val()
$.ajax({
url:`/api/1.0/users/activities?userId=${userId}&dateFrom=${dateFrom}&dateTo=${dateTo}`,
contentType: "application/json; charset=utf-8",
method: "GET",
success: function(response) {
if (response.data.length == 0) {
return;
}
array = [['Активности', 'Количество']]
Object.keys(response.data).forEach(function(key) {
console.table('Key : ' + key + ', Value : ' + response.data[key])
array.push([key, response.data[key]])
})
var data = google.visualization.arrayToDataTable(array);
var options = {
title: 'Активности',
is3D: true,
pieResidueSliceLabel: 'Остальное'
};
var chart = new google.visualization.ColumnChart(document.getElementById('air'));
chart.draw(data, options);
},
error: function(errorData) {
showFeedbackMessage(errorData.responseJSON.error.message, MessageTypesEnum.WARNING)
}
})
}

@ -34,8 +34,8 @@
</option>
</select>
<br/>
<input type="date" id="dateFrom"/>
<input type="date" id="dateTo"/>
<input onchange="drawActivitiesChart();" type="date" id="dateFrom"/>
<input onchange="drawActivitiesChart();" type="date" id="dateTo"/>
</div>
</div>
</div>

Loading…
Cancel
Save