hospital-management/templates/analytics/calculate_metric.html
2025-08-12 13:33:25 +03:00

240 lines
15 KiB
HTML

{% extends 'base.html' %}
{% load static %}
{% block title %}Calculate Metric - Analytics{% endblock %}
{% block css %}
<link href="{% static 'plugins/datatables.net-bs5/css/dataTables.bootstrap5.min.css' %}" rel="stylesheet" />
{% endblock %}
{% block content %}
<div id="content" class="app-content">
<div class="container">
<div class="row justify-content-center">
<div class="col-xl-10">
<div class="row">
<div class="col-xl-9">
<ul class="breadcrumb">
<li class="breadcrumb-item"><a href="{% url 'core:dashboard' %}">Dashboard</a></li>
<li class="breadcrumb-item"><a href="{% url 'analytics:metric_definition_list' %}">Metrics</a></li>
<li class="breadcrumb-item active">Calculate Metric</li>
</ul>
<h1 class="page-header">Calculate Metric</h1>
<div class="card">
<div class="card-header">
<h4 class="card-title">Metric Calculation</h4>
</div>
<div class="card-body">
{% if messages %}
{% for message in messages %}
<div class="alert alert-{{ message.tags }} alert-dismissible fade show" role="alert">
{{ message }}
<button type="button" class="btn-close" data-bs-dismiss="alert"></button>
</div>
{% endfor %}
{% endif %}
<form method="post" class="form-horizontal">
{% csrf_token %}
<div class="row mb-3">
<label class="col-form-label col-md-3">Metric Definition</label>
<div class="col-md-9">
<select name="metric_id" class="form-select" required>
<option value="">Select Metric</option>
{% for metric in metrics %}
<option value="{{ metric.id }}">{{ metric.name }} ({{ metric.category }})</option>
{% endfor %}
</select>
</div>
</div>
<div class="row mb-3">
<label class="col-form-label col-md-3">Calculation Period</label>
<div class="col-md-4">
<input type="date" name="start_date" class="form-control" required>
<small class="form-text text-muted">Start Date</small>
</div>
<div class="col-md-4">
<input type="date" name="end_date" class="form-control" required>
<small class="form-text text-muted">End Date</small>
</div>
</div>
<div class="row mb-3">
<label class="col-form-label col-md-3">Filters</label>
<div class="col-md-9">
<div class="row">
<div class="col-md-6">
<select name="department" class="form-select mb-2">
<option value="">All Departments</option>
{% for dept in departments %}
<option value="{{ dept.id }}">{{ dept.name }}</option>
{% endfor %}
</select>
</div>
<div class="col-md-6">
<select name="location" class="form-select mb-2">
<option value="">All Locations</option>
{% for loc in locations %}
<option value="{{ loc.id }}">{{ loc.name }}</option>
{% endfor %}
</select>
</div>
</div>
</div>
</div>
<div class="row mb-3">
<label class="col-form-label col-md-3">Calculation Mode</label>
<div class="col-md-9">
<div class="form-check">
<input class="form-check-input" type="radio" name="calculation_mode" value="real_time" id="real_time" checked>
<label class="form-check-label" for="real_time">
Real-time Calculation
</label>
</div>
<div class="form-check">
<input class="form-check-input" type="radio" name="calculation_mode" value="cached" id="cached">
<label class="form-check-label" for="cached">
Use Cached Data (Faster)
</label>
</div>
</div>
</div>
<div class="row">
<div class="col-md-9 offset-md-3">
<button type="submit" class="btn btn-primary">
<i class="fa fa-calculator me-2"></i>Calculate Metric
</button>
<a href="{% url 'analytics:metric_definition_list' %}" class="btn btn-secondary ms-2">Cancel</a>
</div>
</div>
</form>
</div>
</div>
{% if calculation_result %}
<div class="card mt-4">
<div class="card-header">
<h4 class="card-title">Calculation Results</h4>
</div>
<div class="card-body">
<div class="row">
<div class="col-md-6">
<div class="card bg-primary text-white">
<div class="card-body">
<div class="d-flex align-items-center">
<div class="flex-grow-1">
<div class="fs-3 fw-bold">{{ calculation_result.value }}</div>
<div>{{ calculation_result.metric_name }}</div>
</div>
<div class="w-50px h-50px bg-white bg-opacity-20 rounded-circle d-flex align-items-center justify-content-center">
<i class="fa fa-chart-line fa-lg"></i>
</div>
</div>
</div>
</div>
</div>
<div class="col-md-6">
<div class="card">
<div class="card-body">
<div class="row mb-2">
<div class="col-6"><strong>Unit:</strong></div>
<div class="col-6">{{ calculation_result.unit }}</div>
</div>
<div class="row mb-2">
<div class="col-6"><strong>Period:</strong></div>
<div class="col-6">{{ calculation_result.period }}</div>
</div>
<div class="row mb-2">
<div class="col-6"><strong>Calculated:</strong></div>
<div class="col-6">{{ calculation_result.calculated_at }}</div>
</div>
<div class="row">
<div class="col-6"><strong>Status:</strong></div>
<div class="col-6">
{% if calculation_result.status == 'success' %}
<span class="badge bg-success">Success</span>
{% else %}
<span class="badge bg-warning">{{ calculation_result.status|title }}</span>
{% endif %}
</div>
</div>
</div>
</div>
</div>
</div>
{% if calculation_result.breakdown %}
<div class="mt-4">
<h6>Calculation Breakdown:</h6>
<div class="table-responsive">
<table class="table table-striped table-sm">
<thead>
<tr>
<th>Component</th>
<th>Value</th>
<th>Weight</th>
<th>Contribution</th>
</tr>
</thead>
<tbody>
{% for item in calculation_result.breakdown %}
<tr>
<td>{{ item.component }}</td>
<td>{{ item.value }}</td>
<td>{{ item.weight }}%</td>
<td>{{ item.contribution }}</td>
</tr>
{% endfor %}
</tbody>
</table>
</div>
</div>
{% endif %}
{% if calculation_result.notes %}
<div class="mt-3">
<h6>Notes:</h6>
<p class="text-muted">{{ calculation_result.notes }}</p>
</div>
{% endif %}
</div>
</div>
{% endif %}
</div>
<div class="col-xl-3">
<div class="card">
<div class="card-header">
<h4 class="card-title">Quick Actions</h4>
</div>
<div class="card-body">
<div class="d-grid gap-2">
<a href="{% url 'analytics:metric_definition_list' %}" class="btn btn-outline-primary btn-sm">
<i class="fa fa-list me-2"></i>All Metrics
</a>
<a href="{% url 'analytics:metric_definition_create' %}" class="btn btn-outline-success btn-sm">
<i class="fa fa-plus me-2"></i>Create Metric
</a>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
{% endblock %}
{% block js %}
<script src="{% static 'plugins/datatables.net/js/dataTables.min.js' %}"></script>
<script src="{% static 'plugins/datatables.net-bs5/js/dataTables.bootstrap5.min.js' %}"></script>
{% endblock %}