146 lines
8.3 KiB
HTML
146 lines
8.3 KiB
HTML
{% if not InDBox %}
|
|
<!DOCTYPE html>
|
|
<html lang="en">
|
|
<head>
|
|
<title>Photo Assistant</title>
|
|
<!-- Required meta tags -->
|
|
<meta charset="utf-8">
|
|
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
|
|
<meta name="description" content="Photo Assistant">
|
|
|
|
<!-- Bootstrap CSS -->
|
|
<link rel="stylesheet" href="{{ url_for( 'internal', filename='upstream/bootstrap-5.0.2-dist/css/bootstrap.min.css' ) }}">
|
|
<link rel="stylesheet" href="{{ url_for( 'internal', filename='upstream/jquery.contextMenu.css' ) }}">
|
|
|
|
<!-- code to get bootstrap to work -->
|
|
<script src="{{ url_for( 'internal', filename='upstream/jquery-3.6.0.min.js')}}"></script>
|
|
<script src="{{ url_for( 'internal', filename='upstream/bootstrap-5.0.2-dist/js/bootstrap.bundle.min.js')}}"></script>
|
|
<script src="{{ url_for( 'internal', filename='upstream/jquery.contextMenu.min.js')}}"></script>
|
|
<script src="{{ url_for( 'internal', filename='upstream/jquery.ui.position.min.js')}}"></script>
|
|
<script src="{{ url_for( 'internal', filename='js/jobs.js')}}"></script>
|
|
|
|
<link rel="shortcut icon" href="{{ url_for('internal', filename='favicon.ico') }}">
|
|
|
|
{% import "bootstrap/wtf.html" as wtf %}
|
|
<style>
|
|
.highlight { box-shadow: 0 0 7px 4px #5bc0de }
|
|
.sm-txt { font-size: 0.7rem }
|
|
</style>
|
|
<script>
|
|
function HandleSearch()
|
|
{
|
|
st=$('#search_term').val();
|
|
if( st != '' ) {
|
|
document.location.href='/search/'+st
|
|
}
|
|
}
|
|
</script>
|
|
</head>
|
|
<body>
|
|
|
|
<!-- Modal Dialog Box, jquery used to show / set content -->
|
|
<div id="dbox" class="modal fade" tabindex="-1" role="dialog">
|
|
<div class="modal-dialog mw-100 w-75">
|
|
<div class="modal-content">
|
|
<div class="modal-header">
|
|
<h5 id="dbox-title" class="modal-title"></h5>
|
|
<button type="button" class="close" data-bs-dismiss="modal" aria-label="Close">
|
|
<span aria-hidden="true">×</span>
|
|
</button>
|
|
</div>
|
|
<div class="modal-body">
|
|
<div class="container-fluid">
|
|
<div id="dbox-content" class="row">
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<nav class="navbar navbar-expand-lg navbar-light bg-light justify-content-between py-1">
|
|
<div class="container-fluid">
|
|
{% if config.ENV == "production" %}
|
|
<a class="navbar-brand" href="/">Photo Assistant</a>
|
|
{% else %}
|
|
<a class="navbar-brand bg-secondary text-white px-2 py-0" style="border-radius:4px" href="/">PA (DEV)</a>
|
|
{% endif %}
|
|
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarNavAltMarkup" aria-controls="navbarNavAltMarkup" aria-expanded="false" aria-label="Toggle navigation">
|
|
<span class="navbar-toggler-icon"></span>
|
|
</button>
|
|
<div class="collapse navbar-collapse" id="navbarNavAltMarkup">
|
|
<div class="navbar-nav col-12">
|
|
<div class="nav-item dropdown">
|
|
<a class="nav-item dropdown nav-link dropdown-toggle" href="#" id="FileMenu" data-bs-toggle="dropdown" aria-haspopup="true" aria-expanded="false">Files</a>
|
|
<div class="dropdown-menu" aria-labelledby="FileMenu">
|
|
<a class="dropdown-item" href="{{url_for('files_ip')}}">View Photos to Import</a>
|
|
<a class="dropdown-item" href="{{url_for('file_list_ip')}}">View Details of Photos to Import</a>
|
|
<a class="dropdown-item" href="{{url_for('files_sp')}}">View Stored Photos</a>
|
|
<a class="dropdown-item" href="{{url_for('files_rbp')}}">View Recycle Bin</a>
|
|
</div>
|
|
</div class="nav-item dropdown">
|
|
<div class="nav-item dropdown">
|
|
<a class="nav-item dropdown nav-link dropdown-toggle" href="#" id="PersonMenu" data-bs-toggle="dropdown" aria-haspopup="true" aria-expanded="false">Person</a>
|
|
<div class="dropdown-menu" aria-labelledby="PersonMenu">
|
|
<a class="dropdown-item" href="{{url_for('new_person')}}">Create Person</a>
|
|
<a class="dropdown-item" href="{{url_for('persons')}}">Show People</a>
|
|
<a class="dropdown-item" href="{{url_for('aistats')}}">View stats of matches</a>
|
|
<a class="dropdown-item" href="{{url_for('run_ai_on_import')}}">Match in import path(s) </a>
|
|
<a class="dropdown-item" href="{{url_for('run_ai_on_storage')}}">Match in storage path(s) </a>
|
|
{% if config.ENV != "production" %}
|
|
<a class="dropdown-item" href="{{url_for('unmatched_faces')}}">Show unmatched</a>
|
|
{% endif %}
|
|
</div>
|
|
</div class="nav-item dropdown">
|
|
<div class="nav-item dropdown">
|
|
<a class="nav-item dropdown nav-link dropdown-toggle" href="#" id="AdminMenu" data-bs-toggle="dropdown" aria-haspopup="true" aria-expanded="false">Admin</a>
|
|
<div class="dropdown-menu" aria-labelledby="AdminMenu">
|
|
<a class="dropdown-item" href="{{url_for('settings')}}">Edit Settings</a>
|
|
<a class="dropdown-item" href="{{url_for('scan_ip')}}">Scan now (for new files)</a>
|
|
<a class="dropdown-item" href="{{url_for('scan_sp')}}">Scan Storage Path</a>
|
|
{% if config.ENV != "production" %}
|
|
<a class="dropdown-item" href="{{url_for('forcescan')}}">Force Scan (delete data & rebuild)</a>
|
|
{% endif %}
|
|
<a class="dropdown-item" href="{{url_for('wakeup')}}">Force wake the job manager</a>
|
|
</div class="dropdow-menu">
|
|
</div class="nav-item dropdown">
|
|
<div class="d-flex nav-link flex-grow-1 justify-content-center p-0">
|
|
<a href="{{url_for('jobs')}}"}}<span class="navbar-text">Active Jobs:
|
|
<span id="num_active_jobs" class="badge badge-pill bg-danger invisible">0</></span>
|
|
</a>
|
|
</div class="nav-item">
|
|
|
|
<form class="d-flex col ms-5" method="POST" onSubmit="HandleSearch(); return false">
|
|
<input id="search_term" class="form-control" type="search" placeholder="by file, date (YYYMMDD) or tag" aria-label="Search" name="search_term">
|
|
<button class="btn btn-outline-success" onClick="HandleSearch()" type="button">Search</button>
|
|
</form>
|
|
<div class="nav-item dropdown">
|
|
<a class="nav-link dropdown-toggle" href="#" id="navbarDropdownMenuLink" role="button" data-bs-toggle="dropdown" aria-expanded="false">
|
|
<svg width="20" height="20" fill="currentColor"><use xlink:href="{{url_for('internal', filename='icons.svg')}}#user"/></svg>
|
|
</a>
|
|
<div class="dropdown-menu dropdown-menu-end" aria-labelledby="navbarDropdownMenuLink">
|
|
<div><a class="dropdown-item" href="{{url_for('states')}}">{{current_user.dn|Username}}</a></div>
|
|
<div><a class="dropdown-item" href="{{url_for('about')}}">About</a></div>
|
|
<div><a class="dropdown-item" href="{{url_for('logout')}}">Logout</a></div>
|
|
</div>
|
|
</div>
|
|
</div class="navbar-nav">
|
|
</div class="collapse navbar-collapse">
|
|
</div class="container-fluid">
|
|
</nav>
|
|
{% endif %} {# not InDBox #}
|
|
|
|
{% block main_content %}
|
|
{% endblock main_content %}
|
|
|
|
{% if not InDBox %}
|
|
{%block script_content %}{% endblock script_content %}
|
|
<div id="status_container" class="position-fixed top-0 end-0 p-0 my-5" "z-index: 11"> </div>
|
|
<!-- CheckForJobs(), will see if there are any messages/jobs and keep doing this until there are 0 more and then stop -->
|
|
<script>
|
|
$(document).ready(function() { CheckForJobs() } )
|
|
</script>
|
|
</body>
|
|
</html>
|
|
{% endif %}
|