Say what each button does, and allow filming again after an edit

Three things were unclear or missing:

- "Make the frame" reads as though it might film the shot. It draws one still,
  the opening frame, and films nothing. Say so.
- Once a project was ready there was no way to film it again, so editing a
  shot afterwards led nowhere. The film card now appears for a finished video
  as "Film it again".
- Nothing explained that these per-shot buttons are optional. Filming draws
  any missing frame and makes any missing cutaway itself, so they are there to
  preview, not to complete.
This commit is contained in:
gator 2026-09-07 20:47:40 +00:00
parent 708abeea41
commit 40b47c6c7f

View file

@ -124,7 +124,9 @@ function shotHtml(s, locked) {
+ '<div>' + picker + '</div>'
+ '<div style="display:flex;align-items:flex-end">'
+ '<button type="button" class="btn ghost" data-make="' + s.index + '" style="width:100%">'
+ (s.plate_url ? "Remake this frame" : "Make the frame") + '</button></div>'
+ (s.plate_url ? "Redraw the opening still" : "Draw the opening still") + '</button>'
+ '<span class="foot" style="display:block;margin-top:6px">One picture, not the video. '
+ 'It is drawn from their photo and is what carries their likeness.</span></div>'
+ '</div>';
return '<div class="shot">'
@ -203,7 +205,8 @@ function render(r) {
// Filming, from the browser. This was the last step that needed an operator.
var film = '';
if (p.status === 'approved' || p.status === 'queued_to_film'
|| p.status === 'filming' || p.status === 'film_failed') {
|| p.status === 'filming' || p.status === 'film_failed'
|| p.status === 'ready') {
var busy = (p.status === 'queued_to_film' || p.status === 'filming');
// The opening frame is what carries the animal's likeness into the video.
// Without one the model works from the written description and invents a
@ -231,9 +234,16 @@ function render(r) {
+ (busy
? '<p class="foot" id="filmnote">' + esc(p.film_note || 'Queued…') + '</p>'
: '<button type="button" class="btn" id="film">'
+ (p.status === 'film_failed' ? 'Try filming again' : 'Film it')
+ (p.status === 'film_failed' ? 'Try filming again'
: (p.status === 'ready' ? 'Film it again' : 'Film it'))
+ '</button>'
+ '<span class="foot" style="margin-left:12px">About a minute a shot.</span>')
+ '<span class="foot" style="margin-left:12px">About a minute a shot. '
+ 'Anything still missing — an opening still, a cutaway — is made '
+ 'automatically first, so nothing above is required.</span>'
+ (p.status === 'ready'
? '<p class="foot" style="margin:10px 0 0">This has already been filmed. '
+ 'Filming again spends the seconds again and replaces the video.</p>'
: ''))
+ '</div>';
}