Changeset 35491 for main


Ignore:
Timestamp:
2021-09-27T14:08:38+13:00 (3 years ago)
Author:
cstephen
Message:

Add basic time selection for words

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

Legend:

Unmodified
Added
Removed
  • main/trunk/model-interfaces-dev/atea/korero-maori-asr/.eslintrc.js

    r35355 r35491  
    1212    },
    1313    rules: {
    14         "no-console": process.env.NODE_ENV === "production" ? "warn" : "off",
    1514        "no-debugger": process.env.NODE_ENV === "production" ? "warn" : "off",
    1615        "space-before-function-paren": "off",
  • main/trunk/model-interfaces-dev/atea/korero-maori-asr/src/components/WordTimingSelector.vue

    r35486 r35491  
    44
    55    <div class="words-container" ref="wordsContainer">
    6         <div class="word" v-for="word in mySurroundingWords" :key="word.id" :style="{ left: word.left, width: word.length }"
    7             :class="[ shouldHoist(word) ? 'hoisted' : 'surround-word' ]">
     6        <div class="word" v-for="word in mySurroundingWords" :key="word.id" :style="{ left: `${word.left}px`, width: `${word.length}px` }"
     7            :class="{ 'hoisted': shouldHoist(word) }">
    88            <span>{{ word.word }}</span>
    99        </div>
     10
     11        <span v-if="isMounted" class="material-icons mdi-m word-handle" :style="{ left: leftHandleLeft }"
     12            @mousemove="onMinHandleMouseMove" @mouseup="onHandleMouseUp" @mousedown="canShiftMinValue = true">
     13            first_page
     14        </span>
     15        <span v-if="isMounted" class="material-icons mdi-m word-handle" :style="{ left: rightHandleLeft }" @mousemove="onMaxHandleMouseMove">last_page</span>
    1016    </div>
    1117
     
    1723.word-timing-selector-root {
    1824    display: flex;
    19     align-items: center;
     25    align-items: flex-end;
    2026    justify-content: center;
    2127    gap: 1em;
     
    4248}
    4349
    44 .surround-word {
    45     top: 50%;
     50.word-handle {
     51    @extend .theme-flat;
     52
     53    position: absolute;
     54    top: -105%;
     55
     56    color: var(--fg-color);
     57    cursor: pointer;
     58    user-select: none;
     59
     60    animation: pulse 0.8s linear 0s infinite alternate;
     61}
     62
     63@keyframes pulse {
     64    from {
     65        opacity: 1;
     66    }
     67    to {
     68        opacity: 0.2;
     69    }
    4670}
    4771
    4872.hoisted {
    49     top: -50%;
     73    top: -100%;
    5074    background-color: var(--highlighted-word-bg);
    5175}
     
    6185        this.startTime = startTime;
    6286        this.endTime = endTime;
    63         this.left = `${left}px`;
    64         this.length = `${length}px`;
     87        this.left = left;
     88        this.length = length;
    6589    }
    6690}
     
    77101        return {
    78102            isMounted: false,
    79             mySurroundingWords: []
    80         }
    81     },
    82     emits: [ "update:word", "update:word" ],
     103            /** @type {Array<Word>} */
     104            mySurroundingWords: [],
     105            canShiftMinValue: false,
     106            canShiftMaxValue: false
     107        }
     108    },
     109    emits: [ "update:word" ],
    83110    computed: {
    84111        minTime() {
     
    95122
    96123            return Util.formatSecondsTimeString(this.surroundingWords[this.surroundingWords.length - 1].endTime, false, 2);
     124        },
     125        leftHandleLeft() {
     126            return `calc(${this.getWord().left}px - 1em)`;
     127        },
     128        rightHandleLeft() {
     129            return `calc(${this.getWord().left}px + ${this.getWord().length}px)`;
     130        },
     131        wordIndex() {
     132            return this.surroundingWords.indexOf(this.word);
    97133        }
    98134    },
     
    127163            }
    128164
    129             // myWords.splice(this.surroundingWords.indexOf(this.word), 1);
    130165            this.mySurroundingWords = myWords;
    131166        },
    132167        shouldHoist(word) {
    133168            return word.startTime === this.word.startTime && word.word === this.word.word;
     169        },
     170        getWord() {
     171            return this.mySurroundingWords[this.wordIndex];
     172        },
     173        /**
     174         * @param {MouseEvent} event
     175         */
     176        onMinHandleMouseMove(event) {
     177            if (event.buttons < 1) {
     178                return;
     179            }
     180
     181            const word = this.getWord();
     182            word.left += event.movementX;
     183            word.length -= event.movementX;
     184        },
     185        onMaxHandleMouseMove(event) {
     186            if (event.buttons < 1) {
     187                return;
     188            }
     189
     190            const word = this.getWord();
     191            word.length += event.movementX;
     192        },
     193        onHandleMouseUp() {
     194            this.canShiftMinValue = false;
     195            this.canShiftMaxValue = false;
    134196        }
    135197    },
  • main/trunk/model-interfaces-dev/atea/korero-maori-asr/src/styles/_material.scss

    r35454 r35491  
    333333    border-radius: 50%;
    334334
    335     animation: 1.5s linear 0s infinite running rotate360;
     335    animation: rotate360 1.5s linear 0s infinite running;
    336336}
    337337
     
    429429    --bg-color-raw: var(--primary-bg-color);
    430430    --fg-color: rgb(var(--primary-fg-color));
     431    --fg-color-faw: var(--primary-fg-color);
    431432}
    432433
     
    435436    --bg-color-raw: var(--primary-bg-color-l1);
    436437    --fg-color: rgb(var(--primary-fg-color));
     438    --fg-color-raw: var(--primary-fg-color);
    437439}
    438440
     
    446448    --bg-color-raw: transparent;
    447449    --fg-color: rgb(var(--primary-bg-color));
     450    --fg-color-raw: var(--primary-bg-color);
    448451
    449452    box-shadow: none;
     
    458461    --bg-color-raw: var(--accent-bg-color);
    459462    --fg-color: rgb(var(--accent-fg-color));
     463    --fg-color-raw: var(--accent-fg-color);
    460464}
    461465
Note: See TracChangeset for help on using the changeset viewer.