Changeset 35262


Ignore:
Timestamp:
2021-08-06T16:26:41+12:00 (3 years ago)
Author:
davidb
Message:

Add some material theme elements

Location:
main/trunk/model-interfaces-dev/atea
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • main/trunk/model-interfaces-dev/atea/js/asr/asr-controller.js

    r35261 r35262  
    7979                    insertError(t.file_name, t.log);
    8080                }
    81                 else {
     81                else { 
    8282                    insertTranscription(t);
    8383                }
     
    8787    catch (e)
    8888    {
    89         console.error("Failed to transcribe files: " + e);
     89        console.error("Failed to transcribe files");
     90        console.error(e);
    9091        insertError("all", e.statusMessage);
    9192    }
     
    111112
    112113/** @type {HTMLTemplateElement} */
    113 const transcriptionTemplate = document.getElementById("transcriptionTemplate");
     114const TRANSCRIPTION_TEMPLATE = document.getElementById("transcriptionTemplate");
    114115
    115116/**
     
    122123{
    123124    // Insert a new transcription row
    124     const clone = transcriptionTemplate.content.firstElementChild.cloneNode(true);
    125 
    126     /** @type {HTMLSpanElement[]} */
    127     const spans = clone.querySelectorAll("span");
    128     spans[0].textContent = transcription.file_name;
    129     spans[1].textContent = transcription.transcription;
    130 
    131     // Get the scroll button
    132     /** @type {HTMLButtonElement} */
    133     const scrollButton = clone.querySelector("button");
     125    /** @type {HTMLLIElement} */
     126    const clone = TRANSCRIPTION_TEMPLATE.content.firstElementChild.cloneNode(true);
     127
     128    // TODO: Give all children of the node the fileName data item.
     129    clone.dataset.fileName = transcription.file_name;
     130
     131    const fileNameElement = clone.querySelector(".transcription__file-name");
     132    fileNameElement.textContent = transcription.file_name;
     133
     134    // Hook up the remove button
     135    /** @type {HTMLButtonElement[]} */
     136    const removeButton = clone.querySelectorAll("transcription__remove-button");
     137    removeButton.forEach
     138    (
     139        button =>
     140        {
     141            button.onclick = function() {
     142
     143            }
     144        }
     145    );
    134146   
    135147    // Get the metadata list and template
    136148    /** @type {HTMLUListElement} */
    137     const metadataList = clone.querySelector("#metadataList");
    138 
    139     scrollButton.onclick = function() {
    140         metadataList.scrollLeft = 200;
    141     }
     149    const metadataList = clone.querySelector(".metadata-list");
    142150
    143151    // Prepare the audio slider
    144152    loadAudioFile(transcription.file_name);
     153
    145154    /** @type {HTMLInputElement} */
    146155    const audioSlider = clone.querySelector(".audio-slider");
     
    264273    });
    265274});
    266 
    267 function get
  • main/trunk/model-interfaces-dev/atea/style/asr.css

    r35261 r35262  
     1:root {
     2    --primary-bg-color: #21bbc0;
     3    --primary-bg-shadow-color: #0a2e4d;
     4    --primary-bg-shadow-blur: 2px;
     5    --primary-bg-shadow-active-blur: 4px;
     6
     7    --primary-fg-color: black;
     8
     9    --error-bg-color: #fa5757;
     10    --error-fg-color: black;
     11    --error-shadow-color: #331212;
     12
     13    --paper-color: #FCFCFC;
     14    --paper-shadow-color: #444;
     15}
     16
     17body {
     18    background-color: var(--paper-color);
     19}
     20
     21#gs_content {
     22    padding: 0;
     23    background-color: var(--paper-color);
     24}
     25
     26#gs_banner {
     27    margin-bottom: 1em;
     28    border-radius: 0 0 0.5em 0.5em;
     29}
     30
     31.paper {
     32    background-color: var(--paper-color);
     33    padding: 1em;
     34    border-radius: 0.5em;
     35    box-shadow: 0 0 6px 0 var(--paper-shadow-color);
     36}
     37
     38.paper-inset {
     39    background-color: var(--paper-color);
     40    padding: 1em;
     41    border-radius: 0.5em;
     42    box-shadow: 0 0 3px 0 var(--paper-shadow-color) inset;
     43}
     44
     45.divider {
     46    margin: 1em 2em;
     47    height: 1px;
     48    background-color: #AAA;
     49    border: none;
     50}
     51
     52/* Buttons */
     53
     54.btn-fab {
     55    background-color: var(--primary-bg-color);
     56    color: var(--primary-fg-color);
     57    border: none;
     58    box-shadow: 0 0 var(--primary-bg-shadow-blur) 0 var(--primary-bg-shadow-color);
     59   
     60    font-size: 48px;
     61    border-radius: 50%;
     62    padding: 0.2em;
     63
     64    -webkit-transition-duration: 0.2s;
     65    transition-duration: 0.2s;
     66}
     67
     68.btn-fab:hover {
     69    box-shadow: 0 0 var(--primary-bg-shadow-active-blur) 0 var(--primary-bg-shadow-color);
     70}
     71
     72.btn-fab-small {
     73    font-size: 24px;
     74}
     75
    176.asr-hidden {
    277    display: none;
    378}
    479
    5 .transcription-list {
    6     padding: 0;
    7 }
    8 
    9 .transcription-list-item {
     80/* Transcriptions */
     81
     82.transcription__list {
     83    padding: 0;
    1084    list-style-type: none;
    11     border: 1px solid black;
    12     border-radius: 5px;
    13     margin-bottom: 5px;
    14     padding: 1em;
    15 }
    16 
    17 .transcription-list-item:last-child {
     85}
     86
     87.transcription__container {
     88    margin-bottom: 1em;
     89}
     90
     91.transcription__container:last-child {
    1892    margin-bottom: 0;
    1993}
    2094
    21 .transcription-list-item .spaced-block, .error-list-item .spaced-block {
    22     margin-bottom: 8px;
    23 }
    24 
    25 .transcription-list-item .spaced-block:last-child, .error-list-item .spaced-block:last-child {
    26     margin-bottom: 0;
     95.transcription__header {
     96    display: flex;
     97    width: 100%;   
     98    justify-content: space-between;
     99    align-items: center;
     100    margin-bottom: 0.5em;
     101}
     102
     103.transcription__file-name {
     104    margin: 0;
     105    margin: 0 1em 0 1em;
     106    font-weight: bold;
     107}
     108
     109.transcription__remove-button {
     110    --primary-bg-color: var(--error-bg-color);
     111    --primary-fg-color: var(--error-fg-color);
     112    --primary-bg-shadow-color: var(--error-shadow-color);
     113
     114    order: 100;
    27115}
    28116
     
    36124}
    37125
     126.error-list-item .spaced-block {
     127    margin-bottom: 8px;
     128}
     129
     130.error-list-item .spaced-block:last-child {
     131    margin-bottom: 0;
     132}
     133
    38134.metadata-list {
    39135    font-size: 16px;
     
    104200    padding: 8px;
    105201    margin: 0;
     202    display: flex;
     203    align-items: center;
    106204}
    107205
     
    155253.audio-slider__play-button {
    156254    vertical-align: middle;
    157     background-color: #21bbc0;
     255    background-color: var(--primary-bg-color);
    158256    border: none;
    159257    border-radius: 16px;
     
    166264}
    167265
    168 #transcriptionAudio {
    169     width: 100%;
    170 }
    171 
    172266.audio-slider__play-button:hover {
    173267    box-shadow: 0px 0px 4px 0px #0a2e4d;
  • main/trunk/model-interfaces-dev/atea/transform/pages/asr.xsl

    r35261 r35262  
    3939    <xsl:template name="audio-upload">
    4040        <link href="interfaces/{$interface_name}/style/asr.css" rel="stylesheet" type="text/css" />
    41        
    42         <div>
    43             <form onSubmit="    doAudioUpload(); return false;" enctype="multipart/form-data">
    44                 <label for="fileUpload">Audio File:</label>
    45                 <input id="fileUpload" type="file" accept="audio/wav" multiple="multiple" />
    46                 <button id="btnFileUpload" type="submit" disabled="disabled">Transcribe</button>
    47             </form>
    48         </div>
     41        <link href="https://fonts.googleapis.com/icon?family=Material+Icons" rel="stylesheet" />
    4942
    50         <div class="audio-slider__container">
    51             <button type="button" class="audio-slider__play-button">
    52                 <img src="interfaces/{$interface_name}/assets/play_arrow_black_18dp.svg" />
    53             </button>
    54             <input type="range" min="0" value="0" class="audio-slider__range" />
    55             <span class="audio-slider__value">1:23</span>
    56         </div>
    57 
    58         <div id="prgFileUploadContainer" class="asr-hidden">
    59             <label for="prgFileUpload">Processing:</label>
    60             <progress id="prgFileUpload" />
    61         </div>
    62 
    63         <div id="transcriptionsDisplayContainer">
    64             <audio id="transcriptionAudio" controls="controls">
    65                 <source id="transcriptionAudioSource" />
    66             </audio>
    67 
    68             <ul id="transcriptionsList" class="transcription-list"></ul>
    69 
    70             <template id="transcriptionTemplate">
    71                 <li class="transcription-list-item">
    72                     <div>
    73                         <button class="close-button"></button>
    74                         <div class="spaced-block">
    75                             <b>File: </b><span></span>
    76                         </div>
    77                         <div class="spaced-block">
    78                             <b>Transcription: </b><span></span>
     43        <div class="paper">
     44            <div>
     45                <form onSubmit="doAudioUpload(); return false;" enctype="multipart/form-data">
     46                    <input id="fileUpload" type="file" accept="audio/wav" multiple="multiple" />
     47                    <button id="btnFileUpload" type="submit" disabled="disabled">Transcribe</button>
     48                </form>
     49            </div>
     50   
     51            <div class="audio-slider__container">
     52                <button type="button" class="btn-fab btn-fab-small">
     53                    <span class="material-icons">&#xE037;</span>
     54                </button>
     55                <input type="range" min="0" value="0" class="audio-slider__range" />
     56                <span class="audio-slider__value">1:23</span>
     57            </div>
     58   
     59            <div id="prgFileUploadContainer" class="asr-hidden">
     60                <label for="prgFileUpload">Processing:</label>
     61                <progress id="prgFileUpload" />
     62            </div>
     63   
     64            <div id="transcriptionsDisplayContainer">
     65                <audio id="transcriptionAudio">
     66                    <source id="transcriptionAudioSource" />
     67                </audio>
     68   
     69                <ul id="transcriptionsList" class="transcription__list"></ul>
     70   
     71                <template id="transcriptionTemplate">
     72                    <li class="transcription__container">
     73                        <div class="transcription__header">
     74                            <button class="btn-fab transcription__play-button" type="button">
     75                                <span class="material-icons">&#xE037;</span>
     76                            </button>
     77                            <button class="btn-fab transcription__remove-button" type="button">
     78                                <span class="material-icons">&#xE872;</span>
     79                            </button>
     80                            <p class="transcription__file-name"></p>   
    7981                        </div>
    8082                        <details>
    8183                            <summary>Character Information</summary>
    82                             <button>Scroll Left</button>
    8384                            <div class="metadata-list-container">
    84                                 <ul id="metadataList" class="metadata-list"></ul>
     85                                <ul class="metadata-list"></ul>
    8586                            </div>
    8687                            <div class="audio-slider-container">
     
    8889                            </div>
    8990                        </details>
    90                     </div>
    91                 </li>
    92             </template>
    93 
    94             <template id="errorTemplate">
    95                 <li class="error-list-item">
    96                     <div>
     91                        <hr class="divider" />
     92                    </li>
     93                </template>
     94   
     95                <template id="errorTemplate">
     96                    <li class="error-list-item">
     97                        <div>
     98                            <div class="spaced-block">
     99                                <b>Transcription Failed: </b><span></span>
     100                            </div>
     101                            <div class="spaced-block">
     102                                <b>File: </b><span></span>
     103                            </div>
     104                        </div>
     105                    </li>
     106                </template>
     107   
     108                <template id="metadataTemplate">
     109                    <!-- <li class="metadata-list-item tooltip-parent tooltip">
    97110                        <div class="spaced-block">
    98                             <b>Transcription Failed: </b><span></span>
     111                            <p></p>
    99112                        </div>
    100113                        <div class="spaced-block">
    101                             <b>File: </b><span></span>
     114                            <button type="button"><img src="interfaces/{$interface_name}/assets/play_arrow_black_18dp.svg" /></button>
    102115                        </div>
    103                     </div>
    104                 </li>
    105             </template>
    106 
    107             <template id="metadataTemplate">
    108                 <!-- <li class="metadata-list-item tooltip-parent tooltip">
    109                     <div class="spaced-block">
    110                         <p></p>
    111                     </div>
    112                     <div class="spaced-block">
    113                         <button type="button"><img src="interfaces/{$interface_name}/assets/play_arrow_black_18dp.svg" /></button>
    114                     </div>
    115                     <div class="tooltip-wrapper">
    116                         <span class="tooltip">0.02</span>
    117                     </div>
    118                 </li> -->
    119                 <li class="metadata-list-item">
    120                     <div class="spaced-block">
    121                         <p></p>
    122                     </div>
    123                     <div class="spaced-block">
    124                         <button type="button"><img src="interfaces/{$interface_name}/assets/play_arrow_black_18dp.svg" /></button>
    125                     </div>
    126                 </li>
    127             </template>
     116                        <div class="tooltip-wrapper">
     117                            <span class="tooltip">0.02</span>
     118                        </div>
     119                    </li> -->
     120                    <li class="metadata-list-item">
     121                        <div class="spaced-block">
     122                            <p></p>
     123                        </div>
     124                        <div class="spaced-block">
     125                            <button type="button"><img src="interfaces/{$interface_name}/assets/play_arrow_black_18dp.svg" /></button>
     126                        </div>
     127                    </li>
     128                </template>
     129            </div>
    128130        </div>
    129131       
Note: See TracChangeset for help on using the changeset viewer.