Skip to content
Snippets Groups Projects
Commit 4d6d83f5 authored by Tibo's avatar Tibo
Browse files

add evidence view

parent dac505c6
No related branches found
No related tags found
No related merge requests found
......@@ -32,4 +32,40 @@ class MarkController extends Controller
$this->server->reload();
return redirect(action('MarkController@status'));
}
public function ranking(string $label) {
$detectors = $this->server->activation();
$evidences = $this->server->findEvidence($label);
return view(
"app.ranking", [
"label" => $label,
"evidences" => $evidences,
"detectors" => $detectors]);
}
public function rankingHome() {
$detectors = $this->server->activation();
$label = $detectors[0]['label'];
return redirect('/app/ranking/' . $label);
}
public function evidence(string $id)
{
$time_window = 3600; // in seconds
$ev = $this->server->findEvidenceById($id);
$since = $ev["time"] - $time_window * 1000;
$references = [];
foreach ($ev["references"] as $id) {
$references[] = $this->server->findEvidenceById($id);
}
return view(
'app.evidence',[
"evidence" => $ev,
"history" => $this->server->findEvidenceSince($ev["label"], $ev["subject"], $since),
"references" => $references]);
}
}
@extends('layouts.app')
@section('content')
<div class="container-fluid">
<h1>{{ implode("", $evidence["subject"]) }}</h1>
<p>Report id: <b>{{ $evidence["id"] }}</b></p>
<p>Subject: <b>{{ implode("", $evidence["subject"]) }}</b></p>
<p>Score: <b>{{ $evidence["score"] }}</b></p>
<p>Timestamp: {{ $evidence["time"] }}</p>
<div class="card my-4">
<div class="card-body">
{!! $evidence["report"] !!}
</div>
</div>
<h3>Detector : {{ $evidence["profile"]["label"] }}</h3>
<p>Algorithm: {{ $evidence["profile"]["className"] }}</p>
<p>Trigger label: {{ $evidence["profile"]["triggerLabel"] }}</p>
<p>Parameters:</p>
<ul>
@foreach ($evidence["profile"]["parameters"] as $key => $value)
<li>{{ $key }} : {{ $value }}</li>
@endforeach
</ul>
<h3>Data requests</h3>
<p>This detector has queried following data:</p>
<table class="table table-striped">
@foreach ($evidence["requests"] as $r)
<tr>
<td>{{ $r }}</td>
<td class="text-right">
<a href="/report/{{ $evidence["id"] }}/data/{{ 0 }} " class="btn btn-primary btn-sm">
<i class="fas fa-search"></i> Inspect
</a>
</td>
</tr>
@endforeach
</table>
<h3>History</h3>
<p>This detector also produced following scores...</p>
<canvas id="chart-report-history"></canvas>
<table class="table table-striped">
@foreach ($history as $r)
<tr>
<td>{{ $r["score"] }}</td>
<td>{{ $r["time"] }}</td>
<td class="text-right">
<a href="/app/evidence/{{ $r["id"] }}" class="btn btn-sm btn-primary">
<i class="fas fa-search"></i> Inspect
</a>
</td>
</tr>
@endforeach
</table>
<h3>References</h3>
This detector used following evidences to compute a score.
<table class="table table-striped">
@foreach ($references as $r)
<tr>
<td>{{ $r["label"] }}</td>
<td>{{ $r["score"] }}</td>
<td>{{ $r["time"] }}</td>
<td class="text-right">
<a href="/app/evidence/{{ $r["id"] }}" class="btn btn-sm btn-primary"><i class="fas fa-search"></i> Inspect</a>
</td>
</tr>
@endforeach
</table>
</div>
@endsection
\ No newline at end of file
@extends('layouts.app')
@section('content')
<div class="container-fluid">
<h1>{{ $label }}</h1>
<form method="GET" class="form-inline my-3">
<div class="form-group">
<label for="label">Detector : </label>
<select class="form-control" id="label" name="label">
@foreach ($detectors as $detector)
<option {{ ($detector["label"] == $label) ? "selected" : "" }}>{{ $detector["label"] }}</option>
@endforeach
</select>
</div>
<button type="submit" class="btn btn-primary">Apply</button>
</form>
<table class="table">
<tr>
<th>Subject</th>
<th>Score</th>
<th>Time</th>
<th></th>
</tr>
@foreach ($evidences as $evidence)
<tr>
<td>
{{ implode(' ', $evidence["subject"]) }}
</td>
<td>{{ $evidence["score"] }}</td>
<td>{{ $evidence["time"] }}</td>
<td>
<a href="/app/evidence/{{ $evidence["id"] }}"
class="btn btn-primary btn-sm">
<i class="fas fa-search"></i> Inspect
</a>
</td>
</tr>
@endforeach
</table>
</div>
@endsection
\ No newline at end of file
......@@ -7,7 +7,7 @@
<!-- CSRF Token -->
<meta name="csrf-token" content="{{ csrf_token() }}">
<title>{{ config('app.name', 'Laravel') }}</title>
<title>MARK</title>
<!-- Scripts -->
<script src="{{ asset('js/app.js') }}" defer></script>
......@@ -22,9 +22,9 @@
<body>
<div id="app">
<nav class="navbar navbar-expand-md navbar-light bg-white shadow-sm">
<div class="container">
<div class="container-fluid">
<a class="navbar-brand" href="{{ url('/') }}">
{{ config('app.name', 'Laravel') }}
MARK
</a>
<button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarSupportedContent" aria-controls="navbarSupportedContent" aria-expanded="false" aria-label="{{ __('Toggle navigation') }}">
<span class="navbar-toggler-icon"></span>
......@@ -33,6 +33,12 @@
<div class="collapse navbar-collapse" id="navbarSupportedContent">
<!-- Left Side Of Navbar -->
<ul class="navbar-nav mr-auto">
<li class="nav-item">
<a class="nav-link" href="{{ action('MarkController@rankingHome') }}">Ranking</a>
</li>
<li class="nav-item">
<a class="nav-link" href="{{ action('MarkController@status') }}">Status</a>
</li>
</ul>
......
......@@ -26,6 +26,9 @@ Route::prefix('app')->group(function () {
Route::get('pause', 'MarkController@pause')->name('pause');
Route::get('resume', 'MarkController@resume')->name('resume');
Route::get('reload', 'MarkController@reload')->name('reload');
Route::get('ranking', 'MarkController@rankingHome');
Route::get('ranking/{label}', 'MarkController@ranking');
Route::get('evidence/{id}', 'MarkController@evidence');
});
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment