Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions public/locales/en/files.json
Original file line number Diff line number Diff line change
Expand Up @@ -110,6 +110,7 @@
"filesImportStatus": {
"imported": "{count, plural, one {Imported 1 item} other {Imported {count} items}}",
"importing": "{count, plural, one {Importing 1 item} other {Importing {count} items}}",
"failed": "{count, plural, one {Failed to import 1 item} other {Failed to import {count} items}}",
"toggleDropdown": "Toggle dropdown",
"closeDropdown": "Close dropdown",
"count": "{count} of {count}"
Expand Down
10 changes: 10 additions & 0 deletions src/files/file-import-status/FileImportStatus.css
Original file line number Diff line number Diff line change
Expand Up @@ -54,4 +54,14 @@

.fileImportStatusName {
flex: 1 1;
}

.fileImportStatusError {
background: #fff5f5 !important;
border-color: #feb2b2 !important;
}

.fileImportStatusError .fileImportStatusButton {
background: #fff5f5 !important;
color: #c53030 !important;
}
22 changes: 14 additions & 8 deletions src/files/file-import-status/FileImportStatus.js
Original file line number Diff line number Diff line change
Expand Up @@ -4,13 +4,13 @@ import PropTypes from 'prop-types'
import { connect } from 'redux-bundler-react'
import { withTranslation } from 'react-i18next'
// Icons
import DocumentIcon from '../../icons/GlyphDocGeneric.js'
import FolderIcon from '../../icons/GlyphFolder.js'
import DocumentIcon from '../../icons/GlyphDocGeneric.tsx'
import FolderIcon from '../../icons/GlyphFolder.tsx'
import './FileImportStatus.css'
import GlyphSmallArrows from '../../icons/GlyphSmallArrow.js'
import GlyphTick from '../../icons/GlyphTick.js'
import GlyphCancel from '../../icons/GlyphCancel.js'
import GlyphSmallCancel from '../../icons/GlyphSmallCancel.js'
import GlyphSmallArrows from '../../icons/GlyphSmallArrow.tsx'
import GlyphTick from '../../icons/GlyphTick.tsx'
import GlyphCancel from '../../icons/GlyphCancel.tsx'
import GlyphSmallCancel from '../../icons/GlyphSmallCancel.tsx'
import ProgressBar from '../../components/progress-bar/ProgressBar.js'

const Import = (job, t) =>
Expand Down Expand Up @@ -109,12 +109,16 @@ export const FileImportStatus = ({ filesFinished, filesPending, filesErrors, doF
}

const numberOfImportedItems = !filesFinished.length ? 0 : filesFinished.reduce((prev, finishedFile) => prev + finishedFile.message.entries.length, 0)
const numberOfFailedItems = !filesErrors.length ? 0 : filesErrors.reduce((prev, failedFile) => prev + failedFile.message.entries.length, 0)
const numberOfPendingItems = filesPending.reduce((total, pending) => total + groupByPath(pending.message.entries).size, 0)
const progress = Math.floor(filesPending.reduce((total, { message: { progress } }) => total + progress, 0) / filesPending.length)

const hasErrors = numberOfFailedItems > 0 && !filesPending.length
const containerClass = hasErrors ? 'fileImportStatusError' : ''

return (
<div className='fileImportStatus fixed bottom-1 w-100 flex justify-center' style={{ zIndex: 14, pointerEvents: 'none' }}>
<div className="relative br1 dark-gray w-40 center ba b--light-gray bg-white" style={{ pointerEvents: 'auto' }}>
<div className={`relative br1 dark-gray w-40 center ba b--light-gray bg-white ${containerClass}`} style={{ pointerEvents: 'auto' }}>
<div
tabIndex="0"
onClick={() => setExpanded(!expanded)}
Expand All @@ -127,7 +131,9 @@ export const FileImportStatus = ({ filesFinished, filesPending, filesErrors, doF
<span>
{ filesPending.length
? `${t('filesImportStatus.importing', { count: numberOfPendingItems })} (${progress}%)`
: t('filesImportStatus.imported', { count: numberOfImportedItems })
: numberOfFailedItems > 0
? t('filesImportStatus.failed', { count: numberOfFailedItems })
: t('filesImportStatus.imported', { count: numberOfImportedItems })
}
</span>
<div className="flex items-center">
Expand Down