1
0
Fork 0
timelinize/frontend/resources/html/includes/templates.html
Matthew Holt 0758f9a588 Some map page improvements
- Hopefully (!?) fixed map element sizing bug on page load
- Hopefully (!?) fixed bug where polyline layers wouldn't render sometimes
- Added time labels between points
- Made marker tooltips/popups more informative, though they still require lots of work
- Made lines slightly more legible

I suspect there are still some weird/sporadic bugs in the map page... but it's harder to find them now. Not sure if good or bad, haha.
2025-07-01 14:00:57 -06:00

420 lines
14 KiB
HTML

<template id="tpl-alert">
<div class="alert alert-minor alert-dismissible bg-white alert-show" role="alert">
<div class="alert-icon"></div>
<div>
<h4 class="alert-heading"></h4>
<div class="alert-description"></div>
</div>
<a class="btn-close" data-bs-dismiss="alert" aria-label="close"></a>
<div class="alert-timer-progress-bar-container">
<div class="alert-timer-progress-bar"></div>
</div>
</div>
</template>
<template id="tpl-dropdown-toggles">
<div class="d-flex dropdown-options">
<label class="dropdown-item select-all">
<svg xmlns="http://www.w3.org/2000/svg"
class="icon icon-tabler icon-tabler-checks" width="24" height="24"
viewBox="0 0 24 24" stroke-width="2" stroke="currentColor"
fill="none" stroke-linecap="round" stroke-linejoin="round">
<path stroke="none" d="M0 0h24v24H0z" fill="none"></path>
<path d="M7 12l5 5l10 -10"></path>
<path d="M2 12l5 5m5 -5l5 -5"></path>
</svg>
All
</label>
<label class="dropdown-item select-none">
<svg xmlns="http://www.w3.org/2000/svg"
class="icon icon-tabler icon-tabler-square" width="24" height="24"
viewBox="0 0 24 24" stroke-width="2" stroke="currentColor"
fill="none" stroke-linecap="round" stroke-linejoin="round">
<path stroke="none" d="M0 0h24v24H0z" fill="none"></path>
<rect x="4" y="4" width="16" height="16" rx="2"></rect>
</svg>
None
</label>
</div>
</template>
<template id="tpl-dropdown-checkbox">
<label class="dropdown-item">
<input type="checkbox" class="form-check-input m-0 me-2">
</label>
</template>
<template id="tpl-datepicker">
<div class="date-input-container mb-3">
<label class="form-label">Date</label>
<div class="input-group flex-nowrap mb-3">
<div class="input-icon">
<span class="input-icon-addon">
<svg xmlns="http://www.w3.org/2000/svg" class="icon" width="24" height="24"
viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none"
stroke-linecap="round" stroke-linejoin="round">
<path stroke="none" d="M0 0h24v24H0z" fill="none"></path>
<rect x="4" y="5" width="16" height="16" rx="2"></rect>
<line x1="16" y1="3" x2="16" y2="7"></line>
<line x1="8" y1="3" x2="8" y2="7"></line>
<line x1="4" y1="11" x2="20" y2="11"></line>
<line x1="11" y1="15" x2="12" y2="15"></line>
<line x1="12" y1="15" x2="12" y2="18"></line>
</svg>
</span>
<input class="form-control date-input" placeholder="Date" readonly>
</div>
<div class="sort-container">
<select size="1" class="form-select date-sort">
<option value="DESC" title="Newest first">
Desc
</option>
<option value="ASC" title="Oldest first">
Asc
</option>
<option value="NEAR" title="Closest first">
Near
</option>
</select>
</div>
</div>
</div>
</template>
<template id="tpl-filter-dropdown">
<div class="dropdown">
<button class="btn dropdown-toggle" type="button"
data-bs-toggle="dropdown" data-bs-auto-close="outside"></button>
<div class="dropdown-menu">
</div>
</div>
</template>
<template id="tpl-filter-dropdown-static">
<div class="dropdown-menu">
<h6 class="dropdown-header sticky-top"></h6>
</div>
</template>
<template id="tpl-pagination">
<div class="pagination align-items-center justify-content-end gap-3">
<div class="page-number text-secondary">
Page
</div>
<div class="btn-list">
<a class="btn page-prev disabled">
<svg xmlns="http://www.w3.org/2000/svg" class="icon" width="24" height="24"
viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none"
stroke-linecap="round" stroke-linejoin="round">
<path stroke="none" d="M0 0h24v24H0z" fill="none">
</path>
<polyline points="15 6 9 12 15 18"></polyline>
</svg>
Previous
</a>
<a class="btn page-next disabled">
Next
<svg xmlns="http://www.w3.org/2000/svg" class="icon ms-2 me-0" width="24" height="24"
viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none"
stroke-linecap="round" stroke-linejoin="round">
<path stroke="none" d="M0 0h24v24H0z" fill="none">
</path>
<polyline points="9 6 15 12 9 18"></polyline>
</svg>
</a>
</div>
</div>
</template>
<template id="tpl-timeline">
<ul class="list list-timeline">
</ul>
</template>
<template id="tpl-tl-item-card">
<li class="list-timeline-card-item">
<div class="list-timeline-icon">
</div>
<div class="list-timeline-content">
<div class="list-timeline-time-container">
<div class="list-timeline-time">
</div>
</div>
<div class="list-timeline-content-container">
</div>
</div>
</li>
</template>
<template id="tpl-tl-item-date-card">
<div class="list-timeline-date-anchor">
<li class="list-timeline-card-item list-timeline-date-card">
<div class="list-timeline-content">
<div class="list-timeline-time-container">
<div class="list-timeline-date">
</div>
</div>
</div>
</li>
</div>
</template>
<template id="map-container">
<div class="map-container content rounded overflow-hidden ratio">
<div class="map-placeholder d-flex align-items-center justify-content-center bg-muted-lt">
Hover to activate map
</div>
</div>
</template>
<template id="loader-container">
<!-- The "supercontainer" can contain the image/video that is being loaded, then we fade out the loader for a nice effect. -->
<div class="loader-supercontainer">
<div class="loader-container bg-muted-lt">
<div class="loader-container-content">
<svg class="loader" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"
viewBox="0 0 100 100" preserveAspectRatio="xMidYMid">
<g>
<animateTransform attributeName="transform" type="rotate" repeatCount="indefinite"
values="0 50 50;360 50 50" keyTimes="0;1" dur="0.625s"></animateTransform>
<path fill-opacity="0.49" fill="#004d73" d="M50 50L50 0A50 50 0 0 1 100 50Z"></path>
</g>
<g>
<animateTransform attributeName="transform" type="rotate" repeatCount="indefinite"
values="0 50 50;360 50 50" keyTimes="0;1" dur="0.8s"></animateTransform>
<path fill-opacity="0.49" fill="#00334e" d="M50 50L50 0A50 50 0 0 1 100 50Z"
transform="rotate(90 50 50)"></path>
</g>
<g>
<animateTransform attributeName="transform" type="rotate" repeatCount="indefinite"
values="0 50 50;360 50 50" keyTimes="0;1" dur="1.25s"></animateTransform>
<path fill-opacity="0.49" fill="#007fdb" d="M50 50L50 0A50 50 0 0 1 100 50Z"
transform="rotate(180 50 50)"></path>
</g>
<g>
<animateTransform attributeName="transform" type="rotate" repeatCount="indefinite"
values="0 50 50;360 50 50" keyTimes="0;1" dur="2.5s"></animateTransform>
<path fill-opacity="0.49" fill="#dbebfa" d="M50 50L50 0A50 50 0 0 1 100 50Z"
transform="rotate(270 50 50)"></path>
</g>
</svg>
<div class="loading-message text-secondary">Loading</div>
</div>
</div>
</div>
</template>
<template id="tpl-media-card">
<div class="minidisp-media">
</div>
</template>
<template id="tpl-message">
<div class="chat-item">
<div class="row align-items-top">
<div class="col-auto message-avatar mt-3">
<!-- avatar -->
</div>
<div class="col col-lg-9">
<div class="chat-bubble">
<div class="chat-bubble-title">
<div class="row">
<a class="col chat-bubble-author message-sender view-entity-link" >
<!-- name -->
</a>
<div class="col-auto chat-bubble-date message-timestamp">
<!-- timestamp -->
</div>
<div class="col-auto message-data-source small">
<span class="data-source-icon avatar avatar-xxs align-middle"></span>
</div>
</div>
</div>
<div class="chat-bubble-body">
<div class="message-content">
<!-- content -->
</div>
<div class="attachments mt-2 d-none">
<!-- attachments -->
</div>
<div class="message-reactions mt-2 d-flex d-none">
<!-- reactions -->
</div>
</div>
</div>
</div>
<div class="col-auto lh-1 align-self-center">
<div class="dropdown">
<a href="#" class="link-secondary" data-bs-toggle="dropdown" aria-expanded="false">
<svg xmlns="http://www.w3.org/2000/svg" class="icon" width="24" height="24"
viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none"
stroke-linecap="round" stroke-linejoin="round">
<path stroke="none" d="M0 0h24v24H0z" fill="none"></path>
<circle cx="5" cy="12" r="1"></circle>
<circle cx="12" cy="12" r="1"></circle>
<circle cx="19" cy="12" r="1"></circle>
</svg>
</a>
<div class="dropdown-menu dropdown-menu-end">
<a class="dropdown-item view-item-link">
View item
</a>
</div>
</div>
</div>
</div>
</div>
</template>
<template id="tpl-compact-preview">
<div class="compact">
</div>
</template>
<template id="tpl-map-popup">
<div class="map-preview-popup">
<div class="map-preview-coordinates"></div>
<div class="map-preview-timestamp"></div>
<div class="map-preview-meta"></div>
</div>
</template>
<template id="tpl-map-marker">
<div class="map-marker">
<svg width="32" height="50" viewBox="0 0 32 50" version="1.1" xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" xmlns:serif="http://www.serif.com/"
style="fill-rule:evenodd;clip-rule:evenodd;stroke-linecap:round;stroke-linejoin:round;">
<ellipse cx="16.55" cy="44.107" rx="14.458" ry="5.239" style="fill:url(#shadow);" />
<path
class="pin"
d="M16.113,44.499C16.113,44.499 0.488,25.718 0.488,17.069C0.488,7.82 6.817,0.311 16.067,0.311C25.316,0.311 31.645,7.82 31.645,17.069C31.645,26.319 16.113,44.499 16.113,44.499Z" />
<path
class="pin-inside-stroke"
d="M16.113,44.499C16.113,44.499 0.488,25.718 0.488,17.069C0.488,7.82 6.817,0.311 16.067,0.311C25.316,0.311 31.645,7.82 31.645,17.069C31.645,26.319 16.113,44.499 16.113,44.499ZM16.125,42.473C13.934,39.73 8.54,32.748 4.994,26.196C3.145,22.781 1.774,19.506 1.774,17.069C1.774,8.555 7.552,1.597 16.067,1.597C24.581,1.597 30.359,8.555 30.359,17.069C30.359,19.68 28.998,23.031 27.157,26.466C23.647,33.013 18.313,39.794 16.125,42.473Z"
style="fill-opacity:0.2;" />
<g class="marker-icon" stroke="#fff" fill="none" stroke-width="2" transform="translate(4,4)">
</g>
<circle class="more-dot d-none" r="6" cx="25" cy="7"></circle>
<defs>
<radialGradient id="shadow" cx="0" cy="0" r="1" gradientUnits="userSpaceOnUse"
gradientTransform="matrix(14.4584,0,0,5.23888,16.5501,44.1075)">
<stop offset="0" style="stop-color:#000;stop-opacity:0.4" />
<stop offset="1" style="stop-color:#000;stop-opacity:0" />
</radialGradient>
</defs>
</svg>
</div>
</template>
<template id="tpl-file-picker">
<div class="file-picker">
<div class="input-group">
<!-- <button type="button" class="btn" title="Up one folder">
<svg xmlns="http://www.w3.org/2000/svg" class="icon icon-tabler icon-tabler-arrow-back-up me-0" width="24" height="24" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round">
<path stroke="none" d="M0 0h24v24H0z" fill="none"></path>
<path d="M9 14l-4 -4l4 -4"></path>
<path d="M5 10h11a4 4 0 1 1 0 8h-1"></path>
</svg>
</button> -->
<button type="button" class="btn dropdown-toggle" data-bs-toggle="dropdown" aria-haspopup="true"
aria-expanded="false" title="Disk drives and mount points">
<svg xmlns="http://www.w3.org/2000/svg" class="icon icon-tabler icon-tabler-server-2 me-1" width="24" height="24" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round">
<path stroke="none" d="M0 0h24v24H0z" fill="none"></path>
<path d="M3 4m0 3a3 3 0 0 1 3 -3h12a3 3 0 0 1 3 3v2a3 3 0 0 1 -3 3h-12a3 3 0 0 1 -3 -3z"></path>
<path d="M3 12m0 3a3 3 0 0 1 3 -3h12a3 3 0 0 1 3 3v2a3 3 0 0 1 -3 3h-12a3 3 0 0 1 -3 -3z"></path>
<path d="M7 8l0 .01"></path>
<path d="M7 16l0 .01"></path>
<path d="M11 8h6"></path>
<path d="M11 16h6"></path>
</svg>
</button>
<div class="file-picker-mount-points dropdown-menu">
</div>
<input type="text" class="file-picker-path form-control" autocomplete="off" placeholder="File or folder path">
</div>
<div class="file-picker-table table-responsive">
<table class="table card-table">
<thead>
<tr>
<th><button class="table-sort" data-sort="sort-name">Name</button></th>
<th class="file-picker-col-size"><button class="table-sort" data-sort="sort-size">Size</button></th>
<th><button class="table-sort" data-sort="sort-modified">Modified</button></th>
</tr>
<tr class="file-picker-up">
<td class="sort-name" colspan="3">
<svg xmlns="http://www.w3.org/2000/svg" class="icon icon-tabler icon-tabler-arrow-back-up" width="24" height="24" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round">
<path stroke="none" d="M0 0h24v24H0z" fill="none"></path>
<path d="M9 14l-4 -4l4 -4"></path>
<path d="M5 10h11a4 4 0 1 1 0 8h-1"></path>
</svg>
Up
</td>
</tr>
</thead>
<tbody class="table-tbody">
</tbody>
</table>
</div>
<div class="pt-3">
<label class="form-check form-switch form-check-inline mb-0 ms-auto" title="Include hidden files and folders">
<input type="checkbox" class="form-check-input file-picker-hidden-files">
<span class="form-check-label">Hidden files and folders</span>
</label>
</div>
</div>
</template>
<template id="tpl-file-picker-item">
<tr class="file-picker-item">
<td class="sort-name"></td>
<td class="sort-size file-picker-col-size"></td>
<td class="sort-modified"></td>
</tr>
</template>
<template id="tpl-job-preview">
<div class="row align-items-center job-preview">
<div class="col-auto job-icon">
</div>
<div class="col text-truncate">
<a class="text-body d-block job-link">
<b class="job-name"></b>
<span class="job-name-suffix text-truncate"></span>
</a>
<div class="progress my-2 job-progress">
<div class="progress-bar"></div>
</div>
<div class="d-block small text-secondary">
<b>
<span class="job-progress-text"></span>
<span class="job-progress-units"></span>
</b>
in
<b class="me-2 job-duration">n/a</b>
<a class="pause-job mx-2 d-none">Pause</a><a class="unpause-job mx-2 d-none">Resume</a><a class="cancel-job mx-2 d-none">Cancel</a>
</div>
</div>
<div class="col-auto">
<span class="status-dot job-status-dot"></span>
</div>
</div>
</template>