mirror of
https://github.com/ail-project/ail-framework.git
synced 2024-11-27 00:07:16 +00:00
296 lines
15 KiB
HTML
296 lines
15 KiB
HTML
<!DOCTYPE html>
|
|
<html>
|
|
|
|
<head>
|
|
<title>Sub-Channel Messages - AIL</title>
|
|
<link rel="icon" href="{{ url_for('static', filename='image/ail-icon.png') }}">
|
|
|
|
<!-- Core CSS -->
|
|
<link href="{{ url_for('static', filename='css/bootstrap4.min.css') }}" rel="stylesheet">
|
|
<link href="{{ url_for('static', filename='css/font-awesome.min.css') }}" rel="stylesheet">
|
|
<link href="{{ url_for('static', filename='css/dataTables.bootstrap.min.css') }}" rel="stylesheet">
|
|
{# <link href="{{ url_for('static', filename='css/daterangepicker.min.css') }}" rel="stylesheet">#}
|
|
|
|
<!-- JS -->
|
|
<script src="{{ url_for('static', filename='js/jquery.js')}}"></script>
|
|
<script src="{{ url_for('static', filename='js/popper.min.js')}}"></script>
|
|
<script src="{{ url_for('static', filename='js/bootstrap4.min.js')}}"></script>
|
|
<script src="{{ url_for('static', filename='js/jquery.dataTables.min.js')}}"></script>
|
|
<script src="{{ url_for('static', filename='js/dataTables.bootstrap.min.js')}}"></script>
|
|
{# <script src="{{ url_for('static', filename='js/moment.min.js') }}"></script>
|
|
<script src="{{ url_for('static', filename='js/jquery.daterangepicker.min.js') }}"></script>#}
|
|
<script src="{{ url_for('static', filename='js/d3.min.js') }}"></script>
|
|
<script src="{{ url_for('static', filename='js/d3/sparklines.js')}}"></script>
|
|
<script src="{{ url_for('static', filename='js/d3/heatmap_week_hour.js')}}"></script>
|
|
|
|
<style>
|
|
.chat-message-left,
|
|
.chat-message-right {
|
|
display: flex;
|
|
flex-shrink: 0;
|
|
}
|
|
.chat-message-right {
|
|
flex-direction: row-reverse;
|
|
margin-left: auto
|
|
}
|
|
.divider:after,
|
|
.divider:before {
|
|
content: "";
|
|
flex: 1;
|
|
height: 2px;
|
|
background: #eee;
|
|
}
|
|
</style>
|
|
</head>
|
|
<body>
|
|
|
|
{% include 'nav_bar.html' %}
|
|
|
|
<div class="container-fluid">
|
|
<div class="row">
|
|
|
|
{% include 'sidebars/sidebar_objects.html' %}
|
|
|
|
<div class="col-12 col-lg-10" id="core_content">
|
|
|
|
<div class="card my-3">
|
|
<div class="card-header" style="background-color:#d9edf7;font-size: 15px">
|
|
<h3 class="text-secondary">{% if subchannel['chat']['name'] %}{{ subchannel['chat']['name'] }} {% else %} {{ subchannel['chat']['id'] }}{% endif %} - {% if subchannel['username'] %}{{ subchannel["username"]["id"] }} {% else %} {{ subchannel['name'] }}{% endif %} :</h3> {{ subchannel["id"] }}
|
|
<ul class="list-group mb-2">
|
|
<li class="list-group-item py-0">
|
|
<div class="row">
|
|
<div class="col-md-10">
|
|
<table class="table">
|
|
<thead>
|
|
<tr>
|
|
<th>Name</th>
|
|
<th>Created at</th>
|
|
<th>First seen</th>
|
|
<th>Last seen</th>
|
|
<th>Username</th>
|
|
<th>Nb Messages</th>
|
|
<th>Participants</th>
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
<tr>
|
|
<td>
|
|
{{ subchannel['name'] }}
|
|
{% if subchannel['translation_name'] %}
|
|
<div class="text-secondary">{{ subchannel['translation_name'] }}</div>
|
|
{% endif %}
|
|
</td>
|
|
<td>{{ subchannel["created_at"] }}</td>
|
|
<td>
|
|
{% if subchannel['first_seen'] %}
|
|
{{ subchannel['first_seen'][0:4] }}-{{ subchannel['first_seen'][4:6] }}-{{ subchannel['first_seen'][6:8] }}
|
|
{% endif %}
|
|
</td>
|
|
<td>
|
|
{% if subchannel['last_seen'] %}
|
|
{{ subchannel['last_seen'][0:4] }}-{{ subchannel['last_seen'][4:6] }}-{{ subchannel['last_seen'][6:8] }}
|
|
{% endif %}
|
|
</td>
|
|
<td>
|
|
{% if 'username' in subchannel %}
|
|
{% if subchannel['username'] %}
|
|
{{ subchannel['username']['id'] }}
|
|
{% endif %}
|
|
{% endif %}
|
|
</td>
|
|
<td>{{ subchannel['nb_messages'] }}</td>
|
|
<td>
|
|
<a href="{{ url_for('chats_explorer.chats_explorer_chat_participants')}}?type=chat-subchannel&subtype={{ subchannel['subtype'] }}&id={{ subchannel['id'] }}"><i class="far fa-user-circle"></i> {{ subchannel['nb_participants']}}</a>
|
|
</td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
</div>
|
|
</div>
|
|
</li>
|
|
{% if subchannel['info'] %}
|
|
<li class="list-group-item py-0">
|
|
<pre class="my-0">{{ subchannel['info'] }}</pre>
|
|
</li>
|
|
{% endif %}
|
|
<li class="list-group-item py-0">
|
|
<br>
|
|
<div class="mb-3">
|
|
Tags:
|
|
{% for tag in subchannel['tags'] %}
|
|
<button class="btn btn-{{ bootstrap_label[loop.index0 % 5] }}" data-toggle="modal" data-target="#edit_tags_modal"
|
|
data-tagid="{{ tag }}" data-objtype="chat" data-objsubtype="{{ subchannel["subtype"] }}" data-objid="{{ subchannel["id"] }}">
|
|
{{ tag }}
|
|
</button>
|
|
{% endfor %}
|
|
<button type="button" class="btn btn-light" data-toggle="modal" data-target="#add_tags_modal">
|
|
<i class="far fa-plus-square"></i>
|
|
</button>
|
|
</div>
|
|
</li>
|
|
</ul>
|
|
|
|
{# {% with obj_type='chat', obj_id=subchannel['id'], obj_subtype=subchannel['subtype'] %}#}
|
|
{# {% include 'modals/investigations_register_obj.html' %}#}
|
|
{# {% endwith %}#}
|
|
{# <button type="button" class="btn btn-primary" data-toggle="modal" data-target="#investigations_register_obj_modal">#}
|
|
{# <i class="fas fa-microscope"></i> Investigations#}
|
|
{# </button>#}
|
|
|
|
</div>
|
|
</div>
|
|
|
|
|
|
{% if subchannel['threads'] %}
|
|
<table id="tablethreads" class="table">
|
|
<thead class="bg-dark text-white">
|
|
<tr>
|
|
<th>Name</th>
|
|
<th>Created at</th>
|
|
<th>First seen</th>
|
|
<th>Last seen</th>
|
|
<th>Nb Messages</th>
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
|
|
{% for thread in subchannel['threads'] %}
|
|
<tr>
|
|
<td>
|
|
<a href="{{ url_for('chats_explorer.objects_thread_messages')}}?subtype={{ thread['subtype'] }}&id={{ thread['id'] }}">{{ thread['name'] }} <i class="far fa-comment"></i> {{ thread['nb_messages'] }} Messages</a>
|
|
</td>
|
|
<td>{{ thread["created_at"] }}</td>
|
|
<td>
|
|
{% if thread['first_seen'] %}
|
|
{{ thread['first_seen'][0:4] }}-{{ thread['first_seen'][4:6] }}-{{ thread['first_seen'][6:8] }}
|
|
{% endif %}
|
|
</td>
|
|
<td>
|
|
{% if thread['last_seen'] %}
|
|
{{ thread['last_seen'][0:4] }}-{{ thread['last_seen'][4:6] }}-{{ thread['last_seen'][6:8] }}
|
|
{% endif %}
|
|
</td>
|
|
<td>{{ thread['nb_messages'] }}</td>
|
|
</tr>
|
|
{% endfor %}
|
|
</tbody>
|
|
</table>
|
|
{% endif %}
|
|
|
|
{% for tag in subchannel['tags_messages'] %}
|
|
<span class="badge badge-{{ bootstrap_label[loop.index0 % 5] }}">{{ tag }} <span class="badge badge-light">{{ subchannel['tags_messages'][tag] }}</span></span>
|
|
{% endfor %}
|
|
|
|
<h5 class="mx-5 mt-2 text-secondary">All Messages:</h5>
|
|
<div id="heatmapweekhourall"></div>
|
|
|
|
<h5 class="mx-5 text-secondary">This week:</h5>
|
|
<div id="heatmapweekhour"></div>
|
|
|
|
<div>
|
|
<div class="list-group d-inline-block">
|
|
{% for date in messages %}
|
|
<a class="list-group-item list-group-item-action" href="#date_section_{{ date }}">{{ date }}</a>
|
|
{% endfor %}
|
|
</div>
|
|
</div>
|
|
|
|
<span class="mt-3">
|
|
{% include 'objects/image/block_blur_img_slider.html' %}
|
|
</span>
|
|
{% with translate_url=url_for('chats_explorer.objects_subchannel_messages', subtype=subchannel['subtype']), obj_id=subchannel['id'], pagination=subchannel['pagination'] %}
|
|
{% include 'chats_explorer/block_translation.html' %}
|
|
{% endwith %}
|
|
{% with obj_subtype=subchannel['subtype'], obj_id=subchannel['id'], url_endpoint=url_for("chats_explorer.objects_subchannel_messages"), nb=subchannel['pagination']['nb'] %}
|
|
{% set date_from=subchannel['first_seen'] %}
|
|
{% set date_to=subchannel['last_seen'] %}
|
|
{% include 'block_obj_time_search.html' %}
|
|
{% endwith %}
|
|
{% with endpoint_url=url_for('chats_explorer.objects_subchannel_messages', subtype=subchannel['subtype']), pagination=subchannel['pagination'] %}
|
|
{% set endpoint_url = endpoint_url + "&id=" + subchannel['id'] + "&nb=" + subchannel['pagination']['nb'] | string %}
|
|
{% if translation_target %}
|
|
{% set endpoint_url = endpoint_url + "&target=" + translation_target %}
|
|
{% endif %}
|
|
{% include 'chats_explorer/pagination.html' %}
|
|
{% endwith %}
|
|
|
|
<div class="position-relative">
|
|
<div class="chat-messages p-2">
|
|
|
|
{% for date in subchannel['messages'] %}
|
|
|
|
<div class="divider d-flex align-items-center mb-4">
|
|
<p class="text-center h2 mx-3 mb-0" style="color: #a2aab7;">
|
|
<span class="badge badge-secondary mb-2" id="date_section_{{ date }}">{{ date }}</span>
|
|
</p>
|
|
</div>
|
|
|
|
{% for mess in subchannel['messages'][date] %}
|
|
|
|
{% with message=mess %}
|
|
{% include 'chats_explorer/block_message.html' %}
|
|
{% endwith %}
|
|
|
|
{% endfor %}
|
|
<br>
|
|
{% endfor %}
|
|
|
|
</div>
|
|
</div>
|
|
|
|
{% with endpoint_url=url_for('chats_explorer.objects_subchannel_messages', subtype=subchannel['subtype']), pagination=subchannel['pagination'] %}
|
|
{% set endpoint_url = endpoint_url + "&id=" + subchannel['id'] + "&nb=" + subchannel['pagination']['nb'] | string %}
|
|
{% if translation_target %}
|
|
{% set endpoint_url = endpoint_url + "&target=" + translation_target %}
|
|
{% endif %}
|
|
{% include 'chats_explorer/pagination.html' %}
|
|
{% endwith %}
|
|
|
|
</div>
|
|
|
|
</div>
|
|
</div>
|
|
|
|
<script>
|
|
var chart = {};
|
|
$(document).ready(function(){
|
|
$("#page-Decoded").addClass("active");
|
|
$("#nav_chat").addClass("active");
|
|
{% if subchannel['threads'] %}
|
|
$('#tablethreads').DataTable({
|
|
"aLengthMenu": [[5, 10, 15, -1], [5, 10, 15, "All"]],
|
|
"iDisplayLength": 10,
|
|
"order": [[ 3, "desc" ]]
|
|
});
|
|
{% endif %}
|
|
});
|
|
|
|
function toggle_sidebar(){
|
|
if($('#nav_menu').is(':visible')){
|
|
$('#nav_menu').hide();
|
|
$('#side_menu').removeClass('border-right')
|
|
$('#side_menu').removeClass('col-lg-2')
|
|
$('#core_content').removeClass('col-lg-10')
|
|
}else{
|
|
$('#nav_menu').show();
|
|
$('#side_menu').addClass('border-right')
|
|
$('#side_menu').addClass('col-lg-2')
|
|
$('#core_content').addClass('col-lg-10')
|
|
}
|
|
}
|
|
|
|
d3.json("{{ url_for('chats_explorer.chats_explorer_messages_stats_week_all') }}?type=chat-subchannel&subtype={{ subchannel['subtype'] }}&id={{ subchannel['id'] }}")
|
|
.then(function(data) {
|
|
create_heatmap_week_hour('#heatmapweekhourall', data);
|
|
})
|
|
|
|
d3.json("{{ url_for('chats_explorer.chats_explorer_messages_stats_week') }}?type=chat-subchannel&subtype={{ subchannel['subtype'] }}&id={{ subchannel['id'] }}")
|
|
.then(function(data) {
|
|
create_heatmap_week_hour('#heatmapweekhour', data);
|
|
})
|
|
|
|
</script>
|
|
|
|
</body>
|
|
|
|
</html>
|