fetch notification stats by user

This commit is contained in:
Beverly Nguyen
2024-06-12 14:32:25 -07:00
parent 749935e94d
commit 0fa6e59a49
4 changed files with 38 additions and 12 deletions

View File

@@ -12,7 +12,7 @@
labels: [],
datasets: [
{
label: 'Delivered',
label: 'Requested',
data: [],
backgroundColor: '#0076d6',
stack: 'Stack 0'
@@ -29,23 +29,24 @@
});
var socket = io();
var serviceId = ctx.getAttribute('data-service-id');
socket.on('connect', function() {
socket.emit('fetch_daily_stats', serviceId);
socket.emit('fetch_daily_stats_by_user');
console.log('connected')
});
socket.on('daily_stats_update', function(data) {
socket.on('daily_stats_by_user_update', function(data) {
console.log('Data received:', data);
var labels = [];
var deliveredData = [];
var requestedData = [];
for (var date in data) {
labels.push(date);
deliveredData.push(data[date].sms.delivered);
requestedData.push(data[date].sms.requested);
}
myBarChart.data.labels = labels;
myBarChart.data.datasets[0].data = deliveredData;
myBarChart.data.datasets[0].data = requestedData;
myBarChart.update();
});
@@ -56,7 +57,8 @@
var sevenDaysButton = document.getElementById('sevenDaysButton');
if (sevenDaysButton) {
sevenDaysButton.addEventListener('click', function() {
socket.emit('fetch_daily_stats', serviceId);
socket.emit('fetch_daily_stats_by_user');
console.log('clicked')
});
}
}

View File

@@ -35,7 +35,8 @@ from notifications_utils.recipients import format_phone_number_human_readable
@socketio.on("fetch_daily_stats")
def handle_fetch_daily_stats(service_id):
def handle_fetch_daily_stats():
service_id = session.get('service_id')
if service_id:
date_range = get_stats_date_range()
daily_stats = service_api_client.get_service_notification_statistics_by_day(
@@ -46,6 +47,20 @@ def handle_fetch_daily_stats(service_id):
emit("error", {"error": "No service_id provided"})
@socketio.on("fetch_daily_stats_by_user")
def handle_fetch_daily_stats_by_user():
service_id = session.get('service_id')
user_id = session.get('user_id')
if service_id and user_id:
date_range = get_stats_date_range()
daily_stats_by_user = service_api_client.get_user_service_notification_statistics_by_day(
service_id, user_id, start_date=date_range["start_date"], days=date_range["days"]
)
emit("daily_stats_by_user_update", daily_stats_by_user)
else:
emit("error", {"error": "No service_id provided"})
@main.route("/services/<uuid:service_id>/dashboard")
@user_has_permissions("view_activity", "send_messages")
def old_service_dashboard(service_id):
@@ -98,7 +113,6 @@ def service_dashboard(service_id):
partials=get_dashboard_partials(service_id),
job_and_notifications=job_and_notifications,
service_data_retention_days=service_data_retention_days,
service_id=service_id,
)

View File

@@ -53,6 +53,16 @@ class ServiceAPIClient(NotifyAdminAPIClient):
"/service/{0}/statistics/{1}/{2}".format(service_id, start_date, days),
)["data"]
def get_user_service_notification_statistics_by_day(
self, service_id, user_id, start_date=None, days=None
):
if start_date is None:
start_date = datetime.now().strftime("%Y-%m-%d")
return self.get(
"/service/{0}/statistics/user/{1}/{2}/{3}".format(service_id, user_id, start_date, days),
)["data"]
def get_services(self, params_dict=None):
"""
Retrieve a list of services.

View File

@@ -22,8 +22,8 @@
Messages sent
</h2>
<!-- <button id="sevenDaysButton">7 Days</button>
<canvas id="myChart" data-service-id="{{ service_id }}"></canvas> -->
<button id="sevenDaysButton">7 Days</button>
<canvas id="myChart"></canvas>
{{ ajax_block(partials, updates_url, 'inbox') }}
{{ ajax_block(partials, updates_url, 'totals') }}