put svgs in icons.svg and reference appropriately, still not happy with pa_logo, but otherwise all working

This commit is contained in:
2021-07-25 13:19:01 +10:00
parent 4f9e03f99e
commit b40ecbf208
6 changed files with 53 additions and 180 deletions

View File

@@ -72,15 +72,10 @@
</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="AIMenuPerson">
<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>
</div>
</div class="nav-item dropdown">
<div class="nav-item dropdown">
<a class="nav-item dropdown nav-link dropdown-toggle" href="#" id="AIMenu" data-bs-toggle="dropdown" aria-haspopup="true" aria-expanded="false">AI</a>
<div class="dropdown-menu" aria-labelledby="AIMenu">
<a class="dropdown-item" href="{{url_for('aistats')}}">View Stats</a>
<a class="dropdown-item" href="{{url_for('aistats')}}">View stats of matched faces</a>
</div>
</div class="nav-item dropdown">
<div class="nav-item dropdown">
@@ -93,7 +88,7 @@
<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="nav-link flex-grow-1 ms-5">
<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:
{% set num_active_jobs = GetNumActiveJobs() %}
{% if num_active_jobs > 0 %}

View File

@@ -1,13 +1,4 @@
{% extends "base.html" %} {% block main_content %}
<svg style="display:none">
<svg id="info" fill="currentColor" viewBox="0 0 16 16">
<path d="M8 15A7 7 0 1 1 8 1a7 7 0 0 1 0 14zm0 1A8 8 0 1 0 8 0a8 8 0 0 0 0 16z"/>
<path d="m8.93 6.588-2.29.287-.082.38.45.083c.294.07.352.176.288.469l-.738 3.468c-.194.897.105 1.319.808 1.319.545 0 1.178-.252 1.465-.598l.088-.416c-.2.176-.492.246-.686.246-.275 0-.375-.193-.304-.533L8.93 6.588zM9 4.5a1 1 0 1 1-2 0 1 1 0 0 1 2 0z"/>
</svg>
</svg>
<div class="container-fluid">
<h3 class="offset-2">{{page_title}}</h3>
<div class="row">
@@ -26,7 +17,9 @@
{% endfor %}
</select>
<span class="input-group-text">&nbsp;duplicates at a time &nbsp;
<svg width="16" height="16" fill="currentColor"><use xlink:href="#info" onMouseOver="$('#dbox').modal('show'); return false;"></svg>
<svg width="16" height="16" fill="currentColor">
<use xlink:href="{{url_for('static', filename='upstream/icons.svg')}}#info" onMouseOver="$('#dbox').modal('show'); return false;"/>
</svg>
</span>
</div class="input-group">
</h6>

View File

@@ -1,14 +1,4 @@
{% extends "base.html" %} {% block main_content %}
<svg style="display:none">
<svg id="caret_prev" viewBox="0 0 16 16">
<path d="m3.86 8.753 5.482 4.796c.646.566 1.658.106 1.658-.753V3.204a1 1 0 0 0-1.659-.753l-5.48 4.796a1 1 0 0 0 0 1.506z"/>
</svg>
<svg id="caret_next" viewBox="0 0 16 16">
<path d="m12.14 8.753-5.482 4.796c-.646.566-1.658.106-1.658-.753V3.204a1 1 0 0 1 1.659-.753l5.48 4.796a1 1 0 0 1 0 1.506z"/>
</svg>
</svg>
<div class="container-fluid">
<h3 class="offset-2">{{page_title}}</h3>
<form id="main_form" method="POST">
@@ -22,12 +12,20 @@
{{CreateSelect( "noo", noo, ["Oldest", "Newest","A to Z", "Z to A"], "$('#offset').val(0)", "rounded-start py-1 my-1")|safe }}
{{CreateSelect( "how_many", how_many, ["10", "25", "50", "75", "100", "150", "200", "500"], "", "rounded-end py-1 my-1" )|safe }}
<div class="mb-1 col my-auto d-flex justify-content-center">
<button id="prev" name="prev" class="prev sm-txt btn btn-outline-secondary">
<svg width="16" height="16" fill="currentColor"><use xlink:href="#caret_prev" /></svg>
{% set prv_disabled="" %}
{% if offset|int == 0 %}
{% set prv_disabled="disabled" %}
{% endif %}
<button id="prev" {{prv_disabled}} name="prev" class="prev sm-txt btn btn-outline-secondary">
<svg width="16" height="16" fill="currentColor"><use xlink:href="{{url_for('static', filename='upstream/icons.svg')}}#prev"/></svg>
</button>
<span class="sm-txt my-auto">&nbsp;{{how_many}} files&nbsp;</span>
<button id="next" name="next" class="next sm-txt btn btn-outline-secondary">
<svg width="16" height="16" fill="currentColor"><use xlink:href="#caret_next" /></svg>
{% set nxt_disabled="" %}
{% if entry_data|length < how_many|int %}
{% set nxt_disabled="disabled" %}
{% endif %}
<button id="next" {{nxt_disabled}} name="next" class="next sm-txt btn btn-outline-secondary">
<svg width="16" height="16" fill="currentColor"><use xlink:href="{{url_for('static', filename='upstream/icons.svg')}}#next"/></svg>
</button>
</div class="col...">
</div class="input-group...">

View File

@@ -1,62 +1,6 @@
{% extends "base.html" %}
{% block main_content %}
<svg style="display:none">
<svg id="folder_yellow" viewBox="0 0 58 58" style="enable-background:new 0 0 58 58;" xml:space="preserve">
<path style="fill:#EFCE4A;" d="M46.324,52.5H1.565c-1.03,0-1.779-0.978-1.51-1.973l10.166-27.871 c0.184-0.682,0.803-1.156,1.51-1.156H56.49c1.03,0,1.51,0.984,1.51,1.973L47.834,51.344C47.65,52.026,47.031,52.5,46.324,52.5z"/>
<path style="fill:#EBBA16;" d="M50.268,12.5H25l-5-7H1.732C0.776,5.5,0,6.275,0,7.232V49.96c0.069,0.002,0.138,0.006,0.205,0.01 l10.015-27.314c0.184-0.683,0.803-1.156,1.51-1.156H52v-7.268C52,13.275,51.224,12.5,50.268,12.5z"/>
</svg>
<svg id="folder_back" viewBox="0 0 58 58" style="enable-background:new 0 0 58 58;" xml:space="preserve">
<path style="fill:#EFCE4A;" d="M46.324,52.5H1.565c-1.03,0-1.779-0.978-1.51-1.973l10.166-27.871 c0.184-0.682,0.803-1.156,1.51-1.156H56.49c1.03,0,1.51,0.984,1.51,1.973L47.834,51.344C47.65,52.026,47.031,52.5,46.324,52.5z"/>
<path style="fill:#EBBA16;" d="M50.268,12.5H25l-5-7H1.732C0.776,5.5,0,6.275,0,7.232V49.96c0.069,0.002,0.138,0.006,0.205,0.01 l10.015-27.314c0.184-0.683,0.803-1.156,1.51-1.156H52v-7.268C52,13.275,51.224,12.5,50.268,12.5z"/>
<g transform="matrix(-0.04 -0.28 0.28 -0.04 29 37)" id="7fb87763-71f2-4e66-92f9-3425f8e2ac7b" >
<path style="stroke: rgb(0,0,0); stroke-width: 0; stroke-dasharray: none; stroke-linecap: butt; stroke-dashoffset: 0; stroke-linejoin: miter; stroke-miterlimit: 4; fill: rgb(101,101,101); fill-rule: nonzero; opacity: 1;" vector-effect="non-scaling-stroke" transform=" translate(-50.5, -49.63)" d="M 47.241 73.538 L 87.35 50.376999999999995 L 54.598 17.623 L 54.598 33.28 C 18.114 31.59 10.956 52.564 14.436 81.641 C 20.303 61.312000000000005 31.583 50.328 50.721 53.012 L 47.241 73.538 z" stroke-linecap="round" />
</g>
</svg>
<svg id="folder_back_gray" viewBox="0 0 58 58" style="enable-background:new 0 0 58 58;" xml:space="preserve">
<path style="fill:#EFEFEF;" d="M46.324,52.5H1.565c-1.03,0-1.779-0.978-1.51-1.973l10.166-27.871 c0.184-0.682,0.803-1.156,1.51-1.156H56.49c1.03,0,1.51,0.984,1.51,1.973L47.834,51.344C47.65,52.026,47.031,52.5,46.324,52.5z"/>
<path style="fill:#C0C0C0;" d="M50.268,12.5H25l-5-7H1.732C0.776,5.5,0,6.275,0,7.232V49.96c0.069,0.002,0.138,0.006,0.205,0.01 l10.015-27.314c0.184-0.683,0.803-1.156,1.51-1.156H52v-7.268C52,13.275,51.224,12.5,50.268,12.5z"/>
<g transform="matrix(-0.04 -0.28 0.28 -0.04 29 37)" id="7fb87763-71f2-4e66-92f9-3425f8e2ac7b" >
<path style="stroke: rgb(0,0,0); stroke-width: 0; stroke-dasharray: none; stroke-linecap: butt; stroke-dashoffset: 0; stroke-linejoin: miter; stroke-miterlimit: 4; fill: rgb(101,101,101); fill-rule: nonzero; opacity: 1;" vector-effect="non-scaling-stroke" transform=" translate(-50.5, -49.63)" d="M 47.241 73.538 L 87.35 50.376999999999995 L 54.598 17.623 L 54.598 33.28 C 18.114 31.59 10.956 52.564 14.436 81.641 C 20.303 61.312000000000005 31.583 50.328 50.721 53.012 L 47.241 73.538 z" stroke-linecap="round" />
</g>
</svg>
<svg id="caret_prev" viewBox="0 0 16 16">
<path d="m3.86 8.753 5.482 4.796c.646.566 1.658.106 1.658-.753V3.204a1 1 0 0 0-1.659-.753l-5.48 4.796a1 1 0 0 0 0 1.506z"/>
</svg>
<svg id="caret_next" viewBox="0 0 16 16">
<path d="m12.14 8.753-5.482 4.796c-.646.566-1.658.106-1.658-.753V3.204a1 1 0 0 1 1.659-.753l5.48 4.796a1 1 0 0 1 0 1.506z"/>
</svg>
<svg id="folder_plus" viewBox="0 0 16 16">
<path d="m.5 3 .04.87a1.99 1.99 0 0 0-.342 1.311l.637 7A2 2 0 0 0 2.826 14H9v-1H2.826a1 1 0 0 1-.995-.91l-.637-7A1 1 0 0 1 2.19 4h11.62a1 1 0 0 1 .996 1.09L14.54 8h1.005l.256-2.819A2 2 0 0 0 13.81 3H9.828a2 2 0 0 1-1.414-.586l-.828-.828A2 2 0 0 0 6.172 1H2.5a2 2 0 0 0-2 2zm5.672-1a1 1 0 0 1 .707.293L7.586 3H2.19c-.24 0-.47.042-.683.12L1.5 2.98a1 1 0 0 1 1-.98h3.672z"/>
<path d="M13.5 10a.5.5 0 0 1 .5.5V12h1.5a.5.5 0 1 1 0 1H14v1.5a.5.5 0 1 1-1 0V13h-1.5a.5.5 0 0 1 0-1H13v-1.5a.5.5 0 0 1 .5-.5z"/>
</svg>
<svg id="trash" viewBox="0 0 16 16">
<path d="M2.5 1a1 1 0 0 0-1 1v1a1 1 0 0 0 1 1H3v9a2 2 0 0 0 2 2h6a2 2 0 0 0 2-2V4h.5a1 1 0 0 0 1-1V2a1 1 0 0 0-1-1H10a1 1 0 0 0-1-1H7a1 1 0 0 0-1 1H2.5zm3 4a.5.5 0 0 1 .5.5v7a.5.5 0 0 1-1 0v-7a.5.5 0 0 1 .5-.5zM8 5a.5.5 0 0 1 .5.5v7a.5.5 0 0 1-1 0v-7A.5.5 0 0 1 8 5zm3 .5v7a.5.5 0 0 1-1 0v-7a.5.5 0 0 1 1 0z"/>
</svg>
<svg id="import" viewBox="0 0 16 16">
<path d="M9.293 0H4a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2V4.707A1 1 0 0 0 13.707 4L10 .293A1 1 0 0 0 9.293 0zM9.5 3.5v-2l3 3h-2a1 1 0 0 1-1-1zM6.354 9.854a.5.5 0 0 1-.708-.708l2-2a.5.5 0 0 1 .708 0l2 2a.5.5 0 0 1-.708.708L8.5 8.707V12.5a.5.5 0 0 1-1 0V8.707L6.354 9.854z"/>
</svg>
<svg id="db" viewBox="0 0 29.26 29.26" style="enable-background:new 0 0 29.26 29.26;">
<path d="M14.627,15.954c-5.494,0-10.098-1.614-11.355-3.79c-0.221,0.383-0.35,0.781-0.35,1.194v3.561
c0,2.751,5.242,4.983,11.705,4.983c6.467,0,11.711-2.232,11.711-4.983v-3.561c0-0.413-0.131-0.811-0.354-1.194
C24.727,14.339,20.127,15.954,14.627,15.954z"/>
<path d="M14.627,23.31c-5.494,0-10.098-1.616-11.355-3.788c-0.221,0.381-0.35,0.779-0.35,1.191v3.564
c0,2.752,5.242,4.983,11.705,4.983c6.467,0,11.711-2.23,11.711-4.983v-3.564c0-0.412-0.131-0.81-0.354-1.19
C24.727,21.694,20.127,23.31,14.627,23.31z"/>
<path d="M26.018,5.042c-0.23,2.016-5.232,3.629-11.391,3.629c-6.156,0-11.158-1.613-11.387-3.628
C3.039,5.409,2.922,5.791,2.922,6.184v3.561c0,2.752,5.242,4.983,11.705,4.983c6.467,0,11.711-2.23,11.711-4.983V6.184
C26.338,5.791,26.219,5.409,26.018,5.042z"/>
<path d="M14.627,7.541c6.303,0,11.41-1.687,11.41-3.771c0-2.082-5.107-3.77-11.41-3.77
C8.328,0.001,3.219,1.689,3.219,3.771C3.219,5.854,8.328,7.541,14.627,7.541z"/>
</svg>
<svg id="film" viewBox="0 0 16 16">
<path d="M0 1a1 1 0 0 1 1-1h14a1 1 0 0 1 1 1v14a1 1 0 0 1-1 1H1a1 1 0 0 1-1-1V1zm4 0v6h8V1H4zm8 8H4v6h8V9zM1 1v2h2V1H1zm2 3H1v2h2V4zM1 7v2h2V7H1zm2 3H1v2h2v-2zm-2 3v2h2v-2H1zM15 1h-2v2h2V1zm-2 3v2h2V4h-2zm2 3h-2v2h2V7zm-2 3v2h2v-2h-2zm2 3h-2v2h2v-2z"/>
</svg>
</svg>
<div class="container-fluid">
<form id="main_form" method="POST">
<input type="hidden" name="cwd" id="cwd" value="{{cwd}}">
@@ -68,13 +12,13 @@
<div class="my-auto col col-auto">
<span class="alert alert-primary py-2">
{% if "files_ip" in request.url %}
<svg width="20" height="20" fill="currentColor"><use xlink:href="#import" /></svg>
<svg width="20" height="20" fill="currentColor"><use xlink:href="{{url_for('static', filename='upstream/icons.svg')}}#import"/></svg>
{% set tmp_path=cwd | replace( "static/Import", "" ) + "/" %}
{% elif "files_sp" in request.url %}
<svg width="20" height="20" fill="currentColor"><use xlink:href="#db" /></svg>
<svg width="20" height="20" fill="currentColor"><use xlink:href="{{url_for('static', filename='upstream/icons.svg')}}#db"/></svg>
{% set tmp_path=cwd | replace( "static/Storage", "" ) + "/" %}
{% elif "files_rbp" in request.url %}
<svg width="20" height="20" fill="currentColor"><use xlink:href="#trash" /></svg>
<svg width="20" height="20" fill="currentColor"><use xlink:href="{{url_for('static', filename='upstream/icons.svg')}}#trash"/></svg>
{% set tmp_path=cwd | replace( "static/Bin", "" ) + "/" %}
{% endif %}
{{tmp_path}}</span>
@@ -101,7 +45,7 @@
{% endif %}
<div class="col flex-grow-1 my-auto d-flex justify-content-center w-100">
<button id="prev" name="prev" class="prev sm-txt btn btn-outline-secondary">
<svg width="16" height="16" fill="currentColor"><use xlink:href="#caret_prev" /></svg>
<svg width="16" height="16" fill="currentColor"><use xlink:href="{{url_for('static', filename='upstream/icons.svg')}}#prev"/></svg>
</button>
<span class="sm-txt my-auto">&nbsp;{{how_many}} files&nbsp;</span>
{% set nxt_disabled="" %}
@@ -109,17 +53,17 @@
{% set nxt_disabled="disabled" %}
{% endif %}
<button id="next" {{nxt_disabled}} name="next" class="next sm-txt btn btn-outline-secondary">
<svg width="16" height="16" fill="currentColor"><use xlink:href="#caret_next" /></svg>
<svg width="16" height="16" fill="currentColor"><use xlink:href="{{url_for('static', filename='upstream/icons.svg')}}#next"/></svg>
</button>
<button id="move" disabled name="move" class="sm-txt btn btn-outline-primary ms-4" onClick="MoveDBox(); return false;">
<svg width="16" height="16" fill="currentColor"><use xlink:href="#folder_plus" /></svg>
<svg width="16" height="16" fill="currentColor"><use xlink:href="{{url_for('static', filename='upstream/icons.svg')}}#folder_plus"/></svg>
</button>
{% if "files_rbp" in request.url %}
<button id="del" disabled name="del" class="sm-txt btn btn-outline-success mx-1" onClick="DelDBox('Restore'); return false;">
<svg width="16" height="16" fill="currentColor"><use xlink:href="#trash" /></svg>
<svg width="16" height="16" fill="currentColor"><use xlink:href="{{url_for('static', filename='upstream/icons.svg')}}#trash"/></svg>
{% else %}
<button id="del" disabled name="del" class="sm-txt btn btn-outline-danger mx-1" onClick="DelDBox('Delete'); return false;">
<svg width="16" height="16" fill="currentColor"><use xlink:href="#trash" /></svg>
<svg width="16" height="16" fill="currentColor"><use xlink:href="{{url_for('static', filename='upstream/icons.svg')}}#trash"/></svg>
{% endif %}
</button>
</div>
@@ -176,13 +120,13 @@
{% if folders and entry_data|length == 0 %}
{% if cwd != root %}
<figure id="_back" class="dir entry m-1" ecnt="1" dir="{{cwd|ParentPath}}" type="Directory">
<svg class="svg" width="{{size|int-22}}" height="{{size|int-22}}"><use xlink:href="#folder_back" /></svg>
<svg class="svg" width="{{size|int-22}}" height="{{size|int-22}}"><use xlink:href="{{url_for('static', filename='upstream/icons.svg')}}#folder_back"/></svg>
<figcaption class="figure-caption text-center">Back</figcaption>
</figure class="figure">
<script>f=$('#_back'); w=f.find('svg').width(); f.find('figcaption').width(w);</script>
{% else %}
<div class="col col-auto g-0 m-1">
<svg class="svg" width="{{size|int-22}}" height="{{size|int-22}}"><use xlink:href="#folder_back_gray" /></svg>
<svg class="svg" width="{{size|int-22}}" height="{{size|int-22}}"><use xlink:href="{{url_for('static', filename='upstream/icons.svg')}}#folder_back_gray"/></svg>
</div>
{% endif %}
{% endif %}
@@ -190,13 +134,14 @@
{% if loop.index==1 and folders %}
{% if cwd != root %}
<figure class="col col-auto g-0 dir entry m-1" ecnt="{{loop.index}}" dir="{{cwd|ParentPath}}" type="Directory">
<svg class="svg" width="{{size|int-22}}" height="{{size|int-22}}" fill="currentColor"><use xlink:href="#folder_back" /></svg>
<svg class="svg" width="{{size|int-22}}" height="{{size|int-22}}" fill="currentColor">
<use xlink:href="{{url_for('static', filename='upstream/icons.svg')}}#folder_back"/></svg>
<figcaption class="svg_cap figure-caption text-center">Back</figcaption>
</figure class="figure">
{% else %}
{# create an even lighter-grey, unclickable back button - so folders dont jump around when you go into them #}
<div class="col col-auto g-0 m-1">
<svg class="svg" width="{{size|int-22}}" height="{{size|int-22}}"><use xlink:href="#folder_back_gray" /></svg>
<svg class="svg" width="{{size|int-22}}" height="{{size|int-22}}"><use xlink:href="{{url_for('static', filename='upstream/icons.svg')}}#folder_back_gray"/></svg>
</div>
{% endif %}
{% endif %}
@@ -227,7 +172,7 @@
<a href="{{obj.in_dir.in_path.path_prefix}}/{{obj.in_dir.rel_path}}/{{obj.name}}"><img class="thumb" height="{{size}}" src="data:image/jpeg;base64,{{obj.file_details.thumbnail}}"></img></a>
{% if search_term is defined %}
<div style="position:absolute; bottom: 0px; left: 2px;">
<svg width="16" height="16" fill="white"><use xlink:href="#{{LocationIcon(obj)}}" /></svg>
<svg width="16" height="16" fill="white"><use xlink:href="{{url_for('static', filename='upstream/icons.svg')}}#{{LocationIcon(obj)}}"/></svg>
</div>
{% endif %}
<div id="s{{obj.id}}" style="display:none; position:absolute; top: 50%; left:50%; transform:translate(-50%, -50%);">
@@ -238,11 +183,11 @@
<div style="position:relative; width:100%">
<a href="{{obj.in_dir.in_path.path_prefix}}/{{obj.in_dir.rel_path}}/{{obj.name}}"><img class="thumb" style="display:block" height="{{size}}" src="data:image/jpeg;base64,{{obj.file_details.thumbnail}}"></img></a>
<div style="position:absolute; top: 0px; left: 2px;">
<svg width="16" height="16" fill="white"><use xlink:href="#film" /></svg>
<svg width="16" height="16" fill="white"><use xlink:href="{{url_for('static', filename='upstream/icons.svg')}}#film"/></svg>
</div>
{% if search_term is defined %}
<div style="position:absolute; bottom: 0px; left: 2px;">
<svg width="16" height="16" fill="white"><use xlink:href="#{{LocationIcon(obj)}}" /></svg>
<svg width="16" height="16" fill="white"><use xlink:href="#{{url_for('static', filename='upstream/icons.svg')}}#{{LocationIcon(obj)}}"/></svg>
</div>
{% endif %}
</div>
@@ -259,7 +204,8 @@
{# if this dir is the toplevel of the cwd, show the folder icon #}
{% if dirname| TopLevelFolderOf(cwd) %}
<figure class="col col-auto g-0 figure dir entry m-1" id={{obj.id}} ecnt={{loop.index}} dir="{{dirname}}" type="Directory">
<svg class="svg" width="{{size|int-22}}" height="{{size|int-22}}" fill="currentColor"><use xlink:href="#folder_yellow" /></svg>
<svg class="svg" width="{{size|int-22}}" height="{{size|int-22}}" fill="currentColor">
<use xlink:href="{{url_for('static', filename='upstream/icons.svg')}}#Directory"/></svg>
<figcaption class="svg_cap figure-caption text-center text-wrap text-break">{{obj.name}}</figcaption>
</figure class="figure">
<script>f=$('#{{obj.id}}'); w=f.find('svg').width(); f.find('figcaption').width(w);</script>
@@ -275,11 +221,11 @@
<div class="row">
<div class="col my-auto d-flex justify-content-center">
<button onClick="$.each( $('#main_form').serializeArray() , function( index, value ) { $('#nav_form').append( '<input type=hidden name=' + value['name'] +' value='+value['value'] + '>' ); })" id="prev" name="prev" class="prev sm-txt btn btn-outline-secondary">
<svg width="16" height="16" fill="currentColor"><use xlink:href="#caret_prev" /></svg>
<svg width="16" height="16" fill="currentColor"><use xlink:href="{{url_for('static', filename='upstream/icons.svg')}}#prev"/></svg>
</button>
<span class="sm-txt my-auto">&nbsp;{{how_many}} files&nbsp;</span>
<button onClick="$.each( $('#main_form').serializeArray() , function( index, value ) { $('#nav_form').append( '<input type=hidden name=' + value['name'] +' value='+value['value'] + '>' ); });" id="next" {{nxt_disabled}} name="next" class="next sm-txt btn btn-outline-secondary">
<svg width="16" height="16" fill="currentColor"><use xlink:href="#caret_next" /></svg>
<svg width="16" height="16" fill="currentColor"><use xlink:href="{{url_for('static', filename='upstream/icons.svg')}}#next"/></svg>
</button>
</div>
</div>
@@ -417,7 +363,7 @@ function MoveDBox()
div+=`
<div class="input-group my-3">
<alert class="alert alert-primary my-auto py-1">
<svg width="20" height="20" fill="currentColor"><use xlink:href="#db" /></svg>
<svg width="20" height="20" fill="currentColor"><use xlink:href="{{url_for('static', filename='upstream/icons.svg')}}#db"/></svg>
`
sps={{StoragePathNames()|safe}}
if( sps.length > 1 ) {

View File

@@ -4,27 +4,19 @@
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<!-- font awesome -->
<link rel="stylesheet" href="{{ url_for( 'static', filename='upstream/fontawesome-free-5.15.3-web/css/all.min.css' ) }}">
<!-- Bootstrap CSS -->
<link rel="stylesheet" href="{{ url_for( 'static', filename='upstream/bootstrap-5.0.2-dist/css/bootstrap.min.css' ) }}">
<link rel="stylesheet" href="{{ url_for( 'static', filename='upstream/jquery.contextMenu.css' ) }}">
<!-- code to get bootstrap to work -->
<script src="{{ url_for( 'static', filename='upstream/jquery-3.6.0.min.js')}}"></script>
<script src="{{ url_for( 'static', filename='upstream/bootstrap-4.6.0-dist/js/bootstrap.min.js')}}"></script>
<script src="{{ url_for( 'static', filename='upstream/bootstrap-5.0.2-dist/js/bootstrap.min.js')}}"></script>
<script src="{{ url_for( 'static', filename='upstream/jquery.contextMenu.min.js')}}"></script>
<script src="{{ url_for( 'static', filename='upstream/jquery.ui.position.min.js')}}"></script>
<link rel="shortcut icon" href="{{ url_for('static', filename='favicon.ico') }}">
{% import "bootstrap/wtf.html" as wtf %}
<svg style="display:none">
<svg id="pa_brain" viewBox="0 0 640 640"><defs><path d="M210.2 1.12C157.93 1.12 115.39 43.65 115.39 95.93C115.39 102.69 116.17 109.56 117.71 116.42C66.02 132.71 30.34 181.03 30.34 235.62C30.34 256.02 35.39 276.1 44.85 294.01C23.87 314.81 10.84 343.63 10.84 375.45C10.84 427.38 45.52 471.33 92.94 485.42C91.27 491.91 90.39 498.58 90.39 505.33C90.39 549.38 126.22 585.2 170.26 585.2C175.26 585.2 180.3 584.7 185.34 583.72C187.22 615.07 213.3 640 245.12 640C277.96 640 305 613.44 305 580.68C305 580.62 305 580.57 305 580.52C305 526.32 305 92.72 305 38.52C305 17.88 288.22 1.1 267.57 1.1C256.1 1.1 215.94 1.11 210.2 1.12Z" id="asih1vKib"></path><path d="M595.14 292.91C604.62 275.01 609.67 254.92 609.67 234.53C609.67 179.94 573.98 131.61 522.29 115.33C523.83 108.47 524.61 101.6 524.61 94.84C524.61 42.56 482.07 0.02 429.79 0.02C424.05 0.02 378.15 0 372.42 0C351.78 0 334.99 16.79 334.99 37.44C334.99 80.96 334.99 429.13 334.99 472.65C334.99 473.13 334.69 473.61 334.69 474.14C334.69 476.08 334.99 477.99 334.99 479.87C334.99 486.48 334.99 519.53 334.99 579.01L334.99 579.42L334.99 580C335.01 580 335.01 580 335.01 580C335.69 615 362.26 638.78 394.87 638.78C426.68 638.78 452.78 613.91 454.66 582.56C459.69 583.55 464.74 584.08 469.74 584.08C513.78 584.08 549.6 548.26 549.6 504.23C549.6 497.47 548.72 490.81 547.06 484.33C594.48 470.24 629.16 426.28 629.16 374.35C629.16 342.54 616.14 313.72 595.14 292.91Z" id="a1Y7q7udZG"></path><path d="M275.49 303.09C275.49 283.55 259.65 267.72 240.12 267.72C220.59 267.72 204.75 283.55 204.75 303.09C204.75 322.62 220.59 338.46 240.12 338.46C259.65 338.46 275.49 322.62 275.49 303.09Z" id="a6YSshRYBH"></path><path d="M416.97 479.94C393.39 479.94 204.75 479.94 181.17 479.94C155.12 479.94 134.01 458.82 134.01 432.78C134.01 413.91 134.01 263 134.01 244.14C134.01 218.11 155.1 197 181.12 196.98C181.12 170.93 202.24 149.82 228.28 149.82C251.86 149.82 440.5 149.82 464.08 149.82C490.13 149.82 511.24 170.93 511.24 196.98C511.24 215.84 511.24 366.75 511.24 385.62C511.24 411.64 490.16 432.75 464.13 432.78C464.13 458.82 443.02 479.94 416.97 479.94ZM228.28 173.4C215.26 173.4 204.7 183.95 204.7 196.98C225.93 196.98 395.74 196.98 416.97 196.98C443.02 196.98 464.13 218.09 464.13 244.14C464.13 260.64 464.13 392.69 464.13 409.2C477.13 409.17 487.66 398.62 487.66 385.62C487.66 366.75 487.66 215.84 487.66 196.98C487.66 183.95 477.11 173.4 464.08 173.4C416.92 173.4 251.86 173.4 228.28 173.4ZM157.59 244.14C157.59 256.71 157.59 319.59 157.59 432.78C195.03 399.47 215.82 380.97 219.98 377.27C223.96 373.31 230.17 372.7 234.84 375.81C239.02 378.59 259.93 392.53 297.56 417.61C350.05 365.13 379.21 335.96 385.04 330.13C388.63 326.54 394.11 325.65 398.65 327.92C401.44 330.98 415.41 346.28 440.55 373.83C440.55 296.01 440.55 252.78 440.55 244.14C440.55 231.11 429.99 220.56 416.97 220.56C401.25 220.56 322.65 220.56 181.17 220.56C165.45 227.59 157.59 235.45 157.59 244.14Z" id="m1fjSv2Is"></path></defs><g><g><g><use xlink:href="#asih1vKib" opacity="1" fill="currentColor" fill-opacity="1"></use><g><use xlink:href="#asih1vKib" opacity="1" fill-opacity="0" stroke="currentColor" stroke-width="1" stroke-opacity="0"></use></g></g><g><use xlink:href="#a1Y7q7udZG" opacity="1" fill="currentColor" fill-opacity="1"></use><g><use xlink:href="#a1Y7q7udZG" opacity="1" fill-opacity="0" stroke="#000000" stroke-width="1" stroke-opacity="0"></use></g></g><g><g><use xlink:href="#a6YSshRYBH" opacity="1" fill="#ffffff" fill-opacity="1"></use><g><use xlink:href="#a6YSshRYBH" opacity="1" fill-opacity="0" stroke="#000000" stroke-width="1" stroke-opacity="0"></use></g></g><g><use xlink:href="#m1fjSv2Is" opacity="1" fill="#ffffff" fill-opacity="1"></use><g><use xlink:href="#m1fjSv2Is" opacity="1" fill-opacity="0" stroke="#000000" stroke-width="1" stroke-opacity="0"></use></g></g></g></g></g></svg>
</svg>
</head>
<body>
@@ -49,8 +41,8 @@
{% endif %}
<div class="row px-3 my-5 col-6" style="border: 3px solid #5bc0de; border-radius: 15px;">
<h3 class="col-12 my-3 text-center" style="color: #5bc0de">
<svg width="64" height="64" fill="currentColor"><use xlink:href="#pa_brain" /></svg> &nbsp;Photo Assistant Login</h3>
<h3 class="my-3 text-center" style="color: #5bc0de">
<svg width="64" height="64" fill="currentColor"><use xlink:href="{{url_for('static', filename='upstream/icons.svg')}}#pa_logo" /></svg>&nbsp;Photo Assistant Login</h3>
<form class="" method="POST">
<div class="input-group">
<label labelfor="username" class="text-right input-group-text col-4 text-info">Username:</label>

View File

@@ -1,63 +1,4 @@
{% extends "base.html" %} {% block main_content %}
<svg style="display:none">
<svg id="caret_prev" viewBox="0 0 16 16">
<path d="m3.86 8.753 5.482 4.796c.646.566 1.658.106 1.658-.753V3.204a1 1 0 0 0-1.659-.753l-5.48 4.796a1 1 0 0 0 0 1.506z"/>
</svg>
<svg id="caret_next" viewBox="0 0 16 16">
<path d="m12.14 8.753-5.482 4.796c-.646.566-1.658.106-1.658-.753V3.204a1 1 0 0 1 1.659-.753l5.48 4.796a1 1 0 0 1 0 1.506z"/>
</svg>
<svg id="svg_brain" viewBox="0 0 463 463" style="enable-background:new 0 0 463 463;">
<path d="M151.245,222.446C148.054,237.039,135.036,248,119.5,248c-4.142,0-7.5,3.357-7.5,7.5s3.358,7.5,7.5,7.5
c23.774,0,43.522-17.557,46.966-40.386c14.556-1.574,27.993-8.06,38.395-18.677c2.899-2.959,2.85-7.708-0.109-10.606
c-2.958-2.897-7.707-2.851-10.606,0.108C184.947,202.829,172.643,208,159.5,208c-26.743,0-48.5-21.757-48.5-48.5
c0-4.143-3.358-7.5-7.5-7.5s-7.5,3.357-7.5,7.5C96,191.715,120.119,218.384,151.245,222.446z"/>
<path d="M183,287.5c0-4.143-3.358-7.5-7.5-7.5c-35.014,0-63.5,28.486-63.5,63.5c0,0.362,0.013,0.725,0.019,1.088
C109.23,344.212,106.39,344,103.5,344c-4.142,0-7.5,3.357-7.5,7.5s3.358,7.5,7.5,7.5c26.743,0,48.5,21.757,48.5,48.5
c0,4.143,3.358,7.5,7.5,7.5s7.5-3.357,7.5-7.5c0-26.611-16.462-49.437-39.731-58.867c-0.178-1.699-0.269-3.418-0.269-5.133
c0-26.743,21.757-48.5,48.5-48.5C179.642,295,183,291.643,183,287.5z"/>
<path d="M439,223.5c0-17.075-6.82-33.256-18.875-45.156c1.909-6.108,2.875-12.426,2.875-18.844
c0-30.874-22.152-56.659-51.394-62.329C373.841,91.6,375,85.628,375,79.5c0-19.557-11.883-36.387-28.806-43.661
C317.999,13.383,287.162,0,263.5,0c-13.153,0-24.817,6.468-32,16.384C224.317,6.468,212.653,0,199.5,0
c-23.662,0-54.499,13.383-82.694,35.839C99.883,43.113,88,59.943,88,79.5c0,6.128,1.159,12.1,3.394,17.671
C62.152,102.841,40,128.626,40,159.5c0,6.418,0.965,12.735,2.875,18.844C30.82,190.244,24,206.425,24,223.5
c0,13.348,4.149,25.741,11.213,35.975C27.872,270.087,24,282.466,24,295.5c0,23.088,12.587,44.242,32.516,55.396
C56.173,353.748,56,356.626,56,359.5c0,31.144,20.315,58.679,49.79,68.063C118.611,449.505,141.965,463,167.5,463
c27.995,0,52.269-16.181,64-39.674c11.731,23.493,36.005,39.674,64,39.674c25.535,0,48.889-13.495,61.71-35.437
c29.475-9.385,49.79-36.92,49.79-68.063c0-2.874-0.173-5.752-0.516-8.604C426.413,339.742,439,318.588,439,295.5
c0-13.034-3.872-25.413-11.213-36.025C434.851,249.241,439,236.848,439,223.5z M167.5,448c-21.029,0-40.191-11.594-50.009-30.256
c-0.973-1.849-2.671-3.208-4.688-3.751C88.19,407.369,71,384.961,71,359.5c0-3.81,0.384-7.626,1.141-11.344
c0.702-3.447-1.087-6.92-4.302-8.35C50.32,332.018,39,314.626,39,295.5c0-8.699,2.256-17.014,6.561-24.379
C56.757,280.992,71.436,287,87.5,287c4.142,0,7.5-3.357,7.5-7.5s-3.358-7.5-7.5-7.5C60.757,272,39,250.243,39,223.5
c0-14.396,6.352-27.964,17.428-37.221c2.5-2.09,3.365-5.555,2.14-8.574C56.2,171.869,55,165.744,55,159.5
c0-26.743,21.757-48.5,48.5-48.5s48.5,21.757,48.5,48.5c0,4.143,3.358,7.5,7.5,7.5s7.5-3.357,7.5-7.5
c0-33.642-26.302-61.243-59.421-63.355C104.577,91.127,103,85.421,103,79.5c0-13.369,8.116-24.875,19.678-29.859
c0.447-0.133,0.885-0.307,1.308-0.527C127.568,47.752,131.447,47,135.5,47c12.557,0,23.767,7.021,29.256,18.325
c1.81,3.727,6.298,5.281,10.023,3.47c3.726-1.809,5.28-6.296,3.47-10.022c-6.266-12.903-18.125-22.177-31.782-25.462
C165.609,21.631,184.454,15,199.5,15c13.509,0,24.5,10.99,24.5,24.5v97.051c-6.739-5.346-15.25-8.551-24.5-8.551
c-4.142,0-7.5,3.357-7.5,7.5s3.358,7.5,7.5,7.5c13.509,0,24.5,10.99,24.5,24.5v180.279c-9.325-12.031-22.471-21.111-37.935-25.266
c-3.999-1.071-8.114,1.297-9.189,5.297c-1.075,4.001,1.297,8.115,5.297,9.189C206.8,343.616,224,366.027,224,391.5
C224,422.654,198.654,448,167.5,448z M395.161,339.807c-3.215,1.43-5.004,4.902-4.302,8.35c0.757,3.718,1.141,7.534,1.141,11.344
c0,25.461-17.19,47.869-41.803,54.493c-2.017,0.543-3.716,1.902-4.688,3.751C335.691,436.406,316.529,448,295.5,448
c-31.154,0-56.5-25.346-56.5-56.5c0-2.109-0.098-4.2-0.281-6.271c0.178-0.641,0.281-1.314,0.281-2.012V135.5
c0-13.51,10.991-24.5,24.5-24.5c4.142,0,7.5-3.357,7.5-7.5s-3.358-7.5-7.5-7.5c-9.25,0-17.761,3.205-24.5,8.551V39.5
c0-13.51,10.991-24.5,24.5-24.5c15.046,0,33.891,6.631,53.033,18.311c-13.657,3.284-25.516,12.559-31.782,25.462
c-1.81,3.727-0.256,8.214,3.47,10.022c3.726,1.81,8.213,0.257,10.023-3.47C303.733,54.021,314.943,47,327.5,47
c4.053,0,7.933,0.752,11.514,2.114c0.422,0.22,0.86,0.393,1.305,0.526C351.883,54.624,360,66.13,360,79.5
c0,5.921-1.577,11.627-4.579,16.645C322.302,98.257,296,125.858,296,159.5c0,4.143,3.358,7.5,7.5,7.5s7.5-3.357,7.5-7.5
c0-26.743,21.757-48.5,48.5-48.5s48.5,21.757,48.5,48.5c0,6.244-1.2,12.369-3.567,18.205c-1.225,3.02-0.36,6.484,2.14,8.574
C417.648,195.536,424,209.104,424,223.5c0,26.743-21.757,48.5-48.5,48.5c-4.142,0-7.5,3.357-7.5,7.5s3.358,7.5,7.5,7.5
c16.064,0,30.743-6.008,41.939-15.879c4.306,7.365,6.561,15.68,6.561,24.379C424,314.626,412.68,332.018,395.161,339.807z"/>
<path d="M359.5,240c-15.536,0-28.554-10.961-31.745-25.554C358.881,210.384,383,183.715,383,151.5c0-4.143-3.358-7.5-7.5-7.5
s-7.5,3.357-7.5,7.5c0,26.743-21.757,48.5-48.5,48.5c-13.143,0-25.447-5.171-34.646-14.561c-2.898-2.958-7.647-3.007-10.606-0.108
s-3.008,7.647-0.109,10.606c10.402,10.617,23.839,17.103,38.395,18.677C315.978,237.443,335.726,255,359.5,255
c4.142,0,7.5-3.357,7.5-7.5S363.642,240,359.5,240z"/>
<path d="M335.5,328c-2.89,0-5.73,0.212-8.519,0.588c0.006-0.363,0.019-0.726,0.019-1.088c0-35.014-28.486-63.5-63.5-63.5
c-4.142,0-7.5,3.357-7.5,7.5s3.358,7.5,7.5,7.5c26.743,0,48.5,21.757,48.5,48.5c0,1.714-0.091,3.434-0.269,5.133
C288.462,342.063,272,364.889,272,391.5c0,4.143,3.358,7.5,7.5,7.5s7.5-3.357,7.5-7.5c0-26.743,21.757-48.5,48.5-48.5
c4.142,0,7.5-3.357,7.5-7.5S339.642,328,335.5,328z"/>
</svg>
</svg>
<script>
var gap=0.8
@@ -132,6 +73,14 @@
context.fillStyle = "green"
context.fillText(faces[i].who, x+w/2, y-2)
}
else
{
context.font = "14px Arial"
context.textAlign = "center"
context.fillStyle = "black"
context.fillText( 'x=' + faces[i].x + ', y=' + faces[i].y, x+w/2, y-2)
context.fillText( 'x=' + faces[i].x + ', y=' + faces[i].y, x+w/2, y-2)
}
context.stroke();
}
}
@@ -167,7 +116,7 @@
<input type="hidden" name="current" value="{{obj.id}}">
<input type="hidden" name="eids" value="{{eids}}">
<button class="btn btn-outline-info h-75" id="la">
<svg width="16" height="16" fill="currentColor"><use xlink:href="#caret_prev" /></svg>
<svg width="16" height="16" fill="currentColor"><use xlink:href="{{url_for('static', filename='upstream/icons.svg')}}#prev"/></svg>
</button>
</form id="prev">
{% endif %}
@@ -212,7 +161,7 @@
<input type="hidden" name="current" value="{{obj.id}}">
<input type="hidden" name="eids" value="{{eids}}">
<button class="col col-auto btn btn-outline-info h-75" id="ra">
<svg width="16" height="16" fill="currentColor"><use xlink:href="#caret_next" /></svg>
<svg width="16" height="16" fill="currentColor"><use xlink:href="{{url_for('static', filename='upstream/icons.svg')}}#next"/></svg>
</button>
</form id="next">
{% endif %}
@@ -221,7 +170,7 @@
</div id="/form-row">
<div id="bbar" class="row">
<div id="faces" faces=0 class="faces_label col col-auto border border-secondary rounded p-1 ms-5 mt-1" onClick="Toggle('faces')">
<svg width="16" height="16" fill="currentColor"><use xlink:href="#svg_brain" /></svg>
<svg width="16" height="16" fill="currentColor"><use xlink:href="{{url_for('static', filename='upstream/icons.svg')}}#brain"/></svg>
<label class="sm-txt faces_label text-secondary">&nbsp;faces</label></span>
</div>
</div>