Changeset 35885
- Timestamp:
- 2022-01-05T12:43:39+13:00 (2 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
main/trunk/model-interfaces-dev/atea/korero-maori-asr/src/components/AudioUpload.vue
r35501 r35885 1 <template>2 <!-- Contains the file input, transcribe button and transcription progress indicator -->3 <div class="audio-file-picker">4 <div class="input-bar">5 <div class="text-input-sl" style="cursor: pointer;" @click="openFilePicker">6 <span class="text-placeholder material-icons" v-if="!anyFiles"></span> <!-- attach_file -->7 <span class="text-placeholder" v-if="!anyFiles">{{ translations.get("AudioUpload_SelectFileText") }}</span>8 <span v-if="anyFiles">{{ getFileNameList }}</span>9 </div>10 11 <input ref="audioFileInput" type="file" @input="onFilesChanged"12 accept="audio/wav" multiple :disabled="isTranscribing" />13 14 <button class="btn-primary" type="submit" :disabled="!anyFiles || isTranscribing" @click="doTranscription">15 <span class="material-icons"></span> <!-- history_edu -->16 <span>{{ translations.get("AudioUpload_TranscribeFiles") }}</span>17 </button>18 </div>19 20 <div v-if="isTranscribing" class="progress-bar-container">21 <div class="progress-bar-value progress-bar-indeterminate" />22 </div>23 24 <ul class="list-view" v-if="failures.size > 0">25 <li v-for="[id, failure] in failures" :key="failure.id" class="list-view__item transcription-error-container">26 <div>27 {{ translations.get("AudioUpload_TranscriptionFailed_Message") }} <i v-if="failure.fileName">{{ failure.fileName }}</i><br />28 <span v-if="failure.message">{{ translations.get("AudioUpload_TranscriptionFailed_Reason") }}: {{ failure.message }}</span>29 </div>30 31 <button class="btn-fab theme-flat" @click="dismissFailure(id)">32 <span class="material-icons"></span> <!-- clear -->33 </button>34 </li>35 </ul>36 </div>37 </template>38 39 <!-- Add "scoped" attribute to limit CSS to this component only -->40 <style scoped lang="scss">41 .audio-file-picker {42 display: flex;43 gap: 0.5em;44 flex-direction: column;45 46 input {47 display: none;48 }49 50 .text-container {51 cursor: pointer;52 }53 }54 55 .input-bar {56 display: grid;57 align-items: stretch;58 gap: 0.5em;59 grid-template-columns: 1fr auto;60 }61 62 .transcription-error-container {63 display: grid;64 gap: 0.5em;65 grid-template-columns: 1fr auto;66 align-items: center;67 68 border-left: 3px solid red;69 }70 </style>71 72 1 <script> 73 2 import { mapState } from "vuex"; … … 215 144 } 216 145 </script> 146 147 <template> 148 <!-- Contains the file input, transcribe button and transcription progress indicator --> 149 <div class="audio-file-picker"> 150 <div class="input-bar"> 151 <div class="text-input-sl" style="cursor: pointer;" @click="openFilePicker"> 152 <span class="text-placeholder material-icons" v-if="!anyFiles"></span> <!-- attach_file --> 153 <span class="text-placeholder" v-if="!anyFiles">{{ translations.get("AudioUpload_SelectFileText") }}</span> 154 <span v-if="anyFiles">{{ getFileNameList }}</span> 155 </div> 156 157 <input ref="audioFileInput" type="file" @input="onFilesChanged" 158 accept="audio/wav" multiple :disabled="isTranscribing" /> 159 160 <button class="btn-primary" type="submit" :disabled="!anyFiles || isTranscribing" @click="doTranscription"> 161 <span class="material-icons"></span> <!-- history_edu --> 162 <span>{{ translations.get("AudioUpload_TranscribeFiles") }}</span> 163 </button> 164 </div> 165 166 <div v-if="isTranscribing" class="progress-bar-container"> 167 <div class="progress-bar-value progress-bar-indeterminate" /> 168 </div> 169 170 <ul class="list-view" v-if="failures.size > 0"> 171 <li v-for="[id, failure] in failures" :key="failure.id" class="list-view__item transcription-error-container"> 172 <div> 173 {{ translations.get("AudioUpload_TranscriptionFailed_Message") }} <i v-if="failure.fileName">{{ failure.fileName }}</i><br /> 174 <span v-if="failure.message">{{ translations.get("AudioUpload_TranscriptionFailed_Reason") }}: {{ failure.message }}</span> 175 </div> 176 177 <button class="btn-fab theme-flat" @click="dismissFailure(id)"> 178 <span class="material-icons"></span> <!-- clear --> 179 </button> 180 </li> 181 </ul> 182 </div> 183 </template> 184 185 <!-- Add "scoped" attribute to limit CSS to this component only --> 186 <style scoped lang="scss"> 187 .audio-file-picker { 188 display: flex; 189 gap: 0.5em; 190 flex-direction: column; 191 192 input { 193 display: none; 194 } 195 196 .text-container { 197 cursor: pointer; 198 } 199 } 200 201 .input-bar { 202 display: grid; 203 align-items: stretch; 204 gap: 0.5em; 205 grid-template-columns: 1fr auto; 206 } 207 208 .transcription-error-container { 209 display: grid; 210 gap: 0.5em; 211 grid-template-columns: 1fr auto; 212 align-items: center; 213 214 border-left: 3px solid red; 215 } 216 </style>
Note:
See TracChangeset
for help on using the changeset viewer.