Changeset 64249d6 in uz for src/UploadZone.vue
- Timestamp:
- 2022.10.05 19:45:19 (2 years ago)
- Branches:
- master
- Children:
- d45005e
- Parents:
- 4b96189
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
src/UploadZone.vue
r4b96189 r64249d6 1 1 <script setup lang="ts"> 2 2 3 import { ref, defineProps, withDefaults, defineEmits, getCurrentInstance, defineExpose} from 'vue'3 import { ref, computed, defineProps, withDefaults, defineEmits, getCurrentInstance, defineExpose, watch, nextTick } from 'vue' 4 4 5 5 import $ from 'jQuery' … … 28 28 (e: 'upload:progress', vec: any[]): void 29 29 (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 30 34 }>() 31 35 … … 131 135 132 136 const reset_cb = (): void => { 137 if(mode.value == Mode.m_idle) 138 return 139 133 140 mode.value = Mode.m_idle 134 141 files = [] … … 136 143 137 144 const 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) 139 146 return 140 147 … … 168 175 }) 169 176 170 queue.value = queue.value.filter( queue.value,(file) => {177 queue.value = queue.value.filter((file) => { 171 178 return file !== cur 172 179 }) … … 184 191 185 192 xhr.upload.addEventListener('progress', (evt): void => { 186 queue.value.forEach(current.value,(item) => {193 current.value.forEach((item) => { 187 194 if(item.file === cur) { 188 195 item.current = evt.loaded … … 196 203 }) 197 204 .then((res: any) => { 198 current.value = queue.value.filter(current.value,(item) => {205 current.value = current.value.filter((item) => { 199 206 return item.file !== cur 200 207 }) … … 223 230 files = [] // XXX can drop w/o reset 224 231 225 if(errors.value.length) {232 if(errors.value.length) 226 233 if(props.keepGoing || props.keepGoing === '') 227 234 mode.value = Mode.m_with_errors 228 235 else 229 236 mode.value = Mode.m_error 230 }231 237 else 232 238 if(props.autoReset || props.autoReset === '') … … 243 249 .catch((err: any) => { 244 250 if(props.keepGoing || props.keepGoing === '') { 245 current.value = current.value.filter( current.value,(item) => {251 current.value = current.value.filter((item) => { 246 252 return item.file !== cur 247 253 }) … … 269 275 } 270 276 277 const can_pick = computed({ 278 get: () => { 279 return mode.value == Mode.m_idle || mode.value == Mode.m_wait 280 }, 281 set: () => { 282 } 283 }) 284 285 const can_start = computed({ 286 get: () => { 287 return mode.value == Mode.m_wait 288 }, 289 set: () => { 290 } 291 }) 292 293 const can_abort = computed({ 294 get: () => { 295 return mode.value == Mode.m_uploading 296 }, 297 set: () => { 298 } 299 }) 300 301 const can_reset = computed({ 302 get: () => { 303 return mode.value != Mode.m_idle 304 }, 305 set: () => { 306 } 307 }) 308 309 const 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 316 watch(() => { return mode.value }, (t: Mode, f: Mode) => { update_can(t) } ) 317 318 nextTick(() => { 319 update_can(mode.value) 320 }) 321 271 322 defineExpose({ 272 323 reset: reset_cb, 273 324 start: start_cb, 274 325 pick: pick_cb, 275 abort: abort_cb 326 abort: abort_cb, 327 328 can_pick, 329 can_start, 330 can_abort, 331 can_reset 276 332 }) 277 333
Note:
See TracChangeset
for help on using the changeset viewer.