Changeset 64249d6 in uz for src/UploadZone.vue


Ignore:
Timestamp:
2022.10.05 19:45:19 (2 years ago)
Author:
js29a <js29a@…>
Branches:
master
Children:
d45005e
Parents:
4b96189
Message:

UZ upgrade

File:
1 edited

Legend:

Unmodified
Added
Removed
  • src/UploadZone.vue

    r4b96189 r64249d6  
    11<script setup lang="ts">
    22
    3 import { ref, defineProps, withDefaults, defineEmits, getCurrentInstance, defineExpose } from 'vue'
     3import { ref, computed, defineProps, withDefaults, defineEmits, getCurrentInstance, defineExpose, watch, nextTick } from 'vue'
    44
    55import $ from 'jQuery'
     
    2828  (e: 'upload:progress', vec: any[]): void
    2929  (e: 'upload:done', vec: any[]): void
     30  (e: 'update:canReset', flag: boolean): void
     31  (e: 'update:canPick', flag: boolean): void
     32  (e: 'update:canStart', flag: boolean): void
     33  (e: 'update:canAbort', flag: boolean): void
    3034}>()
    3135
     
    131135
    132136const reset_cb = (): void => {
     137  if(mode.value == Mode.m_idle)
     138    return
     139
    133140  mode.value = Mode.m_idle
    134141  files = []
     
    136143
    137144const pick_cb = (): void => {
    138   if(mode.value != Mode.m_idle && Mode.value != Mode.m_wait)
     145  if(mode.value != Mode.m_idle && mode.value != Mode.m_wait)
    139146    return
    140147
     
    168175  })
    169176
    170   queue.value = queue.value.filter(queue.value, (file) => {
     177  queue.value = queue.value.filter((file) => {
    171178    return file !== cur
    172179  })
     
    184191
    185192      xhr.upload.addEventListener('progress', (evt): void => {
    186         queue.value.forEach(current.value, (item) => {
     193        current.value.forEach((item) => {
    187194          if(item.file === cur) {
    188195            item.current = evt.loaded
     
    196203  })
    197204    .then((res: any) => {
    198       current.value = queue.value.filter(current.value, (item) => {
     205      current.value = current.value.filter((item) => {
    199206        return item.file !== cur
    200207      })
     
    223230        files = [] // XXX can drop w/o reset
    224231
    225         if(errors.value.length) {
     232        if(errors.value.length)
    226233          if(props.keepGoing || props.keepGoing === '')
    227234            mode.value = Mode.m_with_errors
    228235          else
    229236            mode.value = Mode.m_error
    230         }
    231237        else
    232238          if(props.autoReset || props.autoReset === '')
     
    243249    .catch((err: any) => {
    244250      if(props.keepGoing || props.keepGoing === '') {
    245         current.value = current.value.filter(current.value, (item) => {
     251        current.value = current.value.filter((item) => {
    246252          return item.file !== cur
    247253        })
     
    269275}
    270276
     277const can_pick = computed({
     278  get: () => {
     279    return mode.value == Mode.m_idle || mode.value == Mode.m_wait
     280  },
     281  set: () => {
     282  }
     283})
     284
     285const can_start = computed({
     286  get: () => {
     287    return mode.value == Mode.m_wait
     288  },
     289  set: () => {
     290  }
     291})
     292
     293const can_abort = computed({
     294  get: () => {
     295    return mode.value == Mode.m_uploading
     296  },
     297  set: () => {
     298  }
     299})
     300
     301const can_reset = computed({
     302  get: () => {
     303    return mode.value != Mode.m_idle
     304  },
     305  set: () => {
     306  }
     307})
     308
     309const update_can = (state: Mode): void => {
     310  emit('update:canPick', can_pick.value)
     311  emit('update:canStart', can_start.value)
     312  emit('update:canAbort', can_abort.value)
     313  emit('update:canReset', can_reset.value)
     314}
     315
     316watch(() => { return mode.value }, (t: Mode, f: Mode) => { update_can(t) } )
     317
     318nextTick(() => {
     319  update_can(mode.value)
     320})
     321
    271322defineExpose({
    272323  reset: reset_cb,
    273324  start: start_cb,
    274325  pick: pick_cb,
    275   abort: abort_cb
     326  abort: abort_cb,
     327
     328  can_pick,
     329  can_start,
     330  can_abort,
     331  can_reset
    276332})
    277333
Note: See TracChangeset for help on using the changeset viewer.