浏览代码

diffirintiate between inProgressFiles and inProgressNotPausedFiles; isAllPaused = pausedFiles.length === inProgressFiles.length

Artur Paikin 6 年之前
父节点
当前提交
44b9a49177

+ 1 - 2
packages/@uppy/dashboard/src/components/PanelTopBar.js

@@ -11,7 +11,6 @@ const uploadStates = {
 }
 
 function getUploadingState (isAllErrored, isAllComplete, isAllPaused, files = {}) {
-  console.log(isAllComplete)
   if (isAllErrored) {
     return uploadStates.STATE_ERROR
   }
@@ -56,7 +55,7 @@ function UploadStatus (props) {
 
   switch (uploadingState) {
     case 'uploading':
-      return props.i18n('uploadingXFiles', { smart_count: props.inProgressFiles.length })
+      return props.i18n('uploadingXFiles', { smart_count: props.inProgressNotPausedFiles.length })
     case 'paused':
       return props.i18n('uploadPaused')
     case 'waiting':

+ 21 - 10
packages/@uppy/dashboard/src/index.js

@@ -536,6 +536,10 @@ module.exports = class Dashboard extends Plugin {
       return files[file].progress.uploadStarted
     })
 
+    const pausedFiles = Object.keys(files).filter((file) => {
+      return files[file].isPaused
+    })
+
     const completeFiles = Object.keys(files).filter((file) => {
       return files[file].progress.uploadComplete
     })
@@ -546,8 +550,11 @@ module.exports = class Dashboard extends Plugin {
 
     const inProgressFiles = Object.keys(files).filter((file) => {
       return !files[file].progress.uploadComplete &&
-             files[file].progress.uploadStarted &&
-             !files[file].isPaused
+             files[file].progress.uploadStarted
+    })
+
+    const inProgressNotPausedFiles = inProgressFiles.filter((file) => {
+      return !files[file].isPaused
     })
 
     const processingFiles = Object.keys(files).filter((file) => {
@@ -563,19 +570,22 @@ module.exports = class Dashboard extends Plugin {
     const isAllErrored = isUploadStarted &&
       erroredFiles.length === uploadStartedFiles.length
 
-    const isAllPaused = inProgressFiles.length === 0 &&
-      !isAllComplete &&
-      !isAllErrored &&
-      uploadStartedFiles.length > 0
+    // const isAllPaused = inProgressNotPausedFiles.length === 0 &&
+    //   !isAllComplete &&
+    //   !isAllErrored &&
+    //   uploadStartedFiles.length > 0
+
+    const isAllPaused = inProgressFiles.length !== 0 &&
+      pausedFiles.length === inProgressFiles.length
 
-    let inProgressFilesArray = []
-    inProgressFiles.forEach((file) => {
-      inProgressFilesArray.push(files[file])
+    let inProgressNotPausedFilesArray = []
+    inProgressNotPausedFiles.forEach((file) => {
+      inProgressNotPausedFilesArray.push(files[file])
     })
 
     let totalSize = 0
     let totalUploadedSize = 0
-    inProgressFilesArray.forEach((file) => {
+    inProgressNotPausedFilesArray.forEach((file) => {
       totalSize = totalSize + (file.progress.bytesTotal || 0)
       totalUploadedSize = totalUploadedSize + (file.progress.bytesUploaded || 0)
     })
@@ -632,6 +642,7 @@ module.exports = class Dashboard extends Plugin {
       completeFiles,
       erroredFiles,
       inProgressFiles,
+      inProgressNotPausedFiles,
       processingFiles,
       isUploadStarted,
       isAllComplete,

+ 13 - 9
packages/@uppy/status-bar/src/StatusBar.js

@@ -52,7 +52,8 @@ module.exports = (props) => {
 
   const { newFiles,
     allowNewUpload,
-    isUploadStarted,
+    isUploadInProgress,
+    isAllPaused,
     resumableUploads,
     error,
     hideUploadButton,
@@ -88,11 +89,16 @@ module.exports = (props) => {
     (uploadState === statusBarStates.STATE_WAITING && !props.newFiles > 0) ||
     (uploadState === statusBarStates.STATE_COMPLETE && props.hideAfterFinish)
 
-  const showUploadButton = props.newFiles && !props.hideUploadButton && props.allowNewUpload
-  const showRetryButton = props.error && !props.hideRetryButton
-  const showCancelButton = !props.hidePauseResumeCancelButtons &&
+  const showUploadBtn = !error && newFiles &&
+    !isUploadInProgress && !isAllPaused &&
+    allowNewUpload && !hideUploadButton
+  const showCancelBtn = !hideCancelButton &&
     uploadState !== statusBarStates.STATE_WAITING &&
     uploadState !== statusBarStates.STATE_COMPLETE
+  const showPauseResumeBtn = resumableUploads && !hidePauseResumeButton &&
+    uploadState !== statusBarStates.STATE_WAITING &&
+    uploadState !== statusBarStates.STATE_COMPLETE
+  const showRetryBtn = error && !hideRetryButton
 
   const progressClassNames = `uppy-StatusBar-progress
                            ${progressMode ? 'is-' + progressMode : ''}`
@@ -103,10 +109,6 @@ module.exports = (props) => {
     `is-${uploadState}`
   )
 
-  const showUploadBtn = !error && newFiles && !isUploadStarted && allowNewUpload && !hideUploadButton
-  const showCancelBtn = !hideCancelButton && uploadState !== statusBarStates.STATE_WAITING && uploadState !== statusBarStates.STATE_COMPLETE
-  const showPauseResumeBtn = resumableUploads && !hidePauseResumeButton && uploadState !== statusBarStates.STATE_WAITING && uploadState !== statusBarStates.STATE_COMPLETE
-  const showRetryBtn = error && !hideRetryButton
   return (
     <div class={statusBarClassNames} aria-hidden={isHidden}>
       <div class={progressClassNames}
@@ -265,7 +267,9 @@ const ProgressBarError = ({ error, retryAll, hideRetryButton, i18n }) => {
   return (
     <div class="uppy-StatusBar-content" role="alert">
       <span class="uppy-StatusBar-contentPadding">{i18n('uploadFailed')}.</span>
-      { !hideRetryButton && <span class="uppy-StatusBar-contentPadding">{i18n('pleasePressRetry')}</span> }
+      {!hideRetryButton &&
+        <span class="uppy-StatusBar-contentPadding">{i18n('pleasePressRetry')}</span>
+      }
       <span class="uppy-StatusBar-details"
         aria-label={error}
         data-microtip-position="top"

+ 25 - 11
packages/@uppy/status-bar/src/index.js

@@ -154,6 +154,11 @@ module.exports = class StatusBar extends Plugin {
     const uploadStartedFiles = Object.keys(files).filter((file) => {
       return files[file].progress.uploadStarted
     })
+
+    const pausedFiles = uploadStartedFiles.filter((file) => {
+      return files[file].isPaused
+    })
+
     const newFiles = Object.keys(files).filter((file) => {
       return !files[file].progress.uploadStarted &&
         !files[file].progress.preprocess &&
@@ -162,14 +167,20 @@ module.exports = class StatusBar extends Plugin {
     const completeFiles = Object.keys(files).filter((file) => {
       return files[file].progress.uploadComplete
     })
+
     const erroredFiles = Object.keys(files).filter((file) => {
       return files[file].error
     })
+
     const inProgressFiles = Object.keys(files).filter((file) => {
       return !files[file].progress.uploadComplete &&
-             files[file].progress.uploadStarted &&
-             !files[file].isPaused
+             files[file].progress.uploadStarted
     })
+
+    const inProgressNotPausedFiles = inProgressFiles.filter((file) => {
+      return !files[file].isPaused
+    })
+
     const startedFiles = Object.keys(files).filter((file) => {
       return files[file].progress.uploadStarted ||
         files[file].progress.preprocess ||
@@ -179,17 +190,17 @@ module.exports = class StatusBar extends Plugin {
       return files[file].progress.preprocess || files[file].progress.postprocess
     })
 
-    let inProgressFilesArray = inProgressFiles.map((file) => {
+    let inProgressNotPausedFilesArray = inProgressNotPausedFiles.map((file) => {
       return files[file]
     })
 
-    const totalSpeed = prettyBytes(this.getTotalSpeed(inProgressFilesArray))
-    const totalETA = prettyETA(this.getTotalETA(inProgressFilesArray))
+    const totalSpeed = prettyBytes(this.getTotalSpeed(inProgressNotPausedFilesArray))
+    const totalETA = prettyETA(this.getTotalETA(inProgressNotPausedFilesArray))
 
     // total size and uploaded size
     let totalSize = 0
     let totalUploadedSize = 0
-    inProgressFilesArray.forEach((file) => {
+    inProgressNotPausedFilesArray.forEach((file) => {
       totalSize = totalSize + (file.progress.bytesTotal || 0)
       totalUploadedSize = totalUploadedSize + (file.progress.bytesUploaded || 0)
     })
@@ -205,17 +216,20 @@ module.exports = class StatusBar extends Plugin {
     const isAllErrored = isUploadStarted &&
       erroredFiles.length === uploadStartedFiles.length
 
-    const isAllPaused = inProgressFiles.length === 0 &&
-      !isAllComplete &&
-      !isAllErrored &&
-      uploadStartedFiles.length > 0
+    // const isAllPaused = inProgressFiles.length === 0 &&
+    //   !isAllComplete &&
+    //   !isAllErrored &&
+    //   uploadStartedFiles.length > 0
+
+    const isAllPaused = inProgressFiles.length !== 0 &&
+      pausedFiles.length === inProgressFiles.length
 
     const isUploadInProgress = inProgressFiles.length > 0
 
     const resumableUploads = capabilities.resumableUploads || false
 
     return StatusBarUI({
-      error: state.error,
+      error,
       uploadState: this.getUploadingState(isAllErrored, isAllComplete, state.files || {}),
       allowNewUpload,
       totalProgress,