File size: 3,292 Bytes
0a40ab8
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
{% extends "base.html" %}

{% block title %}View Source: {{ source.name }} - PoliSage{% endblock %}

{% block content %}
<div class="container mt-4">
    <nav aria-label="breadcrumb">
        <ol class="breadcrumb">
            <li class="breadcrumb-item"><a href="{{ url_for("index") }}">Dashboard</a></li>
            <li class="breadcrumb-item"><a href="{{ url_for("monitoring.list_sources") }}">Monitoring Sources</a></li>
            <li class="breadcrumb-item active" aria-current="page">{{ source.name }}</li>
        </ol>
    </nav>

    <h2>{{ source.name }}</h2>
    <p class="text-muted">Source ID: {{ source.id }} | Added: {{ source.created_at.strftime("%Y-%m-%d") }}</p>

    <div class="card mb-4">
        <div class="card-header">
            Source Details
        </div>
        <div class="card-body">
            <dl class="row">
                <dt class="col-sm-3">URL</dt>
                <dd class="col-sm-9"><a href="{{ source.url }}" target="_blank">{{ source.url }}</a></dd>

                <dt class="col-sm-3">Type</dt>
                <dd class="col-sm-9"><span class="badge bg-secondary">{{ source.type }}</span></dd>

                <dt class="col-sm-3">Check Frequency</dt>
                <dd class="col-sm-9">{{ source.frequency_minutes }} minutes</dd>

                <dt class="col-sm-3">Status</dt>
                <dd class="col-sm-9"><span class="badge {{ "bg-success" if source.is_active else "bg-danger" }}">{{ "Active" if source.is_active else "Inactive" }}</span></dd>

                <dt class="col-sm-3">Last Checked</dt>
                <dd class="col-sm-9">{{ source.last_checked.strftime("%Y-%m-%d %H:%M") if source.last_checked else "Never" }}</dd>
            </dl>
        </div>
        <div class="card-footer">
            <!-- Add buttons for editing, triggering check, etc. later -->
            <a href="#" class="btn btn-secondary disabled">Edit Source (Not Implemented)</a>
            <a href="#" class="btn btn-info disabled">Check Now (Not Implemented)</a>
        </div>
    </div>

    <h4>Recent Events from this Source</h4>
    {% set events = source.events | sort(attribute=\"detected_at\", reverse=True) %}
    {% if events %}
        <div class="list-group">
            {% for event in events[:10] %} {# Show latest 10 events #}
                <a href="{{ url_for("monitoring.view_event", event_id=event.id) }}" class="list-group-item list-group-item-action flex-column align-items-start">
                    <div class="d-flex w-100 justify-content-between">
                        <h5 class="mb-1">{{ event.event_summary | truncate(100) }}</h5>
                        <small>{{ event.detected_at.strftime("%Y-%m-%d %H:%M") }}</small>
                    </div>
                    <p class="mb-1">Status: <span class="badge bg-light text-dark">{{ event.status }}</span></p>
                </a>
            {% endfor %}
        </div>
        {% if events|length > 10 %}
            <p class="mt-2"><a href="{{ url_for("monitoring.list_events", source_id=source.id) }}">View all events from this source...</a></p>
        {% endif %}
    {% else %}
        <div class="alert alert-light" role="alert">
            No events detected from this source yet.
        </div>
    {% endif %}

</div>
{% endblock %}