Changeset 35413


Ignore:
Timestamp:
2021-09-16T17:00:27+12:00 (3 years ago)
Author:
cstephen
Message:

Shift time string formatting to Util.
Start AudioTimeBar implementation.

Location:
main/trunk/model-interfaces-dev/atea/korero-maori-asr/src
Files:
1 added
3 edited

Legend:

Unmodified
Added
Removed
  • main/trunk/model-interfaces-dev/atea/korero-maori-asr/src/components/TranscriptionItem.vue

    r35409 r35413  
    9797import TranscriptionItemEditor, { getWords } from "./TranscriptionItemEditor.vue"
    9898import { TranscriptionViewModel, PlaybackState } from "../main";
     99import Util from "../js/Util"
    99100
    100101export default {
     
    172173
    173174    for (const word of getWords(transcription)) {
    174         contents += getTime(word.startTime) + " --> " + getTime(word.endTime) + "\n";
     175        const startTime = Util.formatSecondsTimeString(word.startTime, true);
     176        const endTime = Util.formatSecondsTimeString(word.endTime, true);
     177
     178        contents += startTime + " --> " + endTime + "\n";
    175179        contents += "- " + word.word + "\n\n";
    176180    }
    177181
    178182    return contents;
    179 
    180     function getTime(seconds) {
    181         const hours = (seconds / 3600) | 0;
    182         const minutes = ((seconds - (hours * 60)) / 60) | 0;
    183         const actualSeconds = seconds - (minutes * 60);
    184 
    185         let result = hours.toLocaleString("en-US", { maximumFractionDigits: 0, minimumIntegerDigits: 2 });
    186         result += ":" + minutes.toLocaleString("en-US", { maximumFractionDigits: 0, minimumIntegerDigits: 2 });
    187         result += ":" + actualSeconds.toLocaleString("en-US", { minimumFractionDigits: 3, maximumFractionDigis: 3, minimumIntegerDigits: 2 });
    188 
    189         return result;
    190     }
    191183}
    192184</script>
  • main/trunk/model-interfaces-dev/atea/korero-maori-asr/src/components/TranscriptionItemEditor.vue

    r35412 r35413  
    22<div>
    33    <div class="editor-controls">
    4         <input type="range" class="slider-continuous" />
     4        <audio-time-bar v-model="currentPlaybackTime" :audio-length="2" />
    55
    66        <toggle-button v-model="enableEditing">
     
    1212        <ul class="list-view" v-if="!enableEditing">
    1313            <li v-for="word in words" :key="word.id" class="word-container" @click="playAudio(word.startTime)">
    14                     <span class="word-highlight word" :class="{ 'word-highlight-applied': word.shouldHighlight }">
    15                         {{ word.word }}
    16                     </span>
     14                <span class="word-highlight word" :class="{ 'word-highlight-applied': word.shouldHighlight }">
     15                    {{ word.word }}
     16                </span>
    1717            </li>
    1818        </ul>
     
    7979import { mapState } from "vuex";
    8080import { TranscriptionViewModel, PlaybackState } from "../main";
     81import AudioTimeBar from "./AudioTimeBar.vue"
    8182import Util from "../js/Util";
    8283
     
    111112export default {
    112113    name: "TranscriptionItemEditor",
     114    components: {
     115        AudioTimeBar
     116    },
    113117    props: {
    114118        transcription: TranscriptionViewModel
  • main/trunk/model-interfaces-dev/atea/korero-maori-asr/src/js/Util.js

    r35355 r35413  
    4343            this.lut[d3 & 0xff] + this.lut[d3 >> 8 & 0xff] + this.lut[d3 >> 16 & 0xff] + this.lut[d3 >> 24 & 0xff];
    4444    }
     45
     46    /**
     47     * Formats a number of seconds into a time string.
     48     * @param {Number} seconds The number of seconds.
     49     * @param {Boolean} includeHoursIfNone Defines whether to include the hours component if it is empty.
     50     * @returns {String} The formatted time string.
     51     */
     52    static formatSecondsTimeString(seconds, includeHoursIfNone) {
     53        const hours = (seconds / 3600) | 0;
     54        const minutes = ((seconds - (hours * 60)) / 60) | 0;
     55        const actualSeconds = seconds - (minutes * 60);
     56
     57        let result = "";
     58
     59        if (includeHoursIfNone) {
     60            result = hours.toLocaleString("en-US", { maximumFractionDigits: 0, minimumIntegerDigits: 2 }) + ":";
     61        }
     62        else if (!includeHoursIfNone && hours > 0) {
     63            result = hours.toLocaleString("en-US", { maximumFractionDigits: 0, minimumIntegerDigits: 2 }) + ":";
     64        }
     65
     66        result += minutes.toLocaleString("en-US", { maximumFractionDigits: 0, minimumIntegerDigits: 2 });
     67        result += ":" + actualSeconds.toLocaleString("en-US", { minimumFractionDigits: 3, maximumFractionDigis: 3, minimumIntegerDigits: 2 });
     68
     69        return result;
     70    }
    4571}
Note: See TracChangeset for help on using the changeset viewer.