diff options
| author | Jules Laplace <julescarbon@gmail.com> | 2018-06-03 02:25:34 +0200 |
|---|---|---|
| committer | Jules Laplace <julescarbon@gmail.com> | 2018-06-03 02:25:34 +0200 |
| commit | 46fbedf0ad7b167a28daf2030e06f34480576394 (patch) | |
| tree | 81877c97f777a8d705d47bb97ac96e5fa244bd2b /app/client/common/fileList.component.js | |
| parent | 2149eb581c35a93d41dbad6e3409c498b4bed804 (diff) | |
add results page
Diffstat (limited to 'app/client/common/fileList.component.js')
| -rw-r--r-- | app/client/common/fileList.component.js | 68 |
1 files changed, 19 insertions, 49 deletions
diff --git a/app/client/common/fileList.component.js b/app/client/common/fileList.component.js index 13eb300..c16928f 100644 --- a/app/client/common/fileList.component.js +++ b/app/client/common/fileList.component.js @@ -5,7 +5,7 @@ import { Link } from 'react-router-dom'; import moment from 'moment' import * as util from '../util' -const defaultFields = new Set(['date', 'size']) +const defaultFields = new Set(['name', 'date', 'size']) export const FileList = props => { const { @@ -17,19 +17,19 @@ export const FileList = props => { fileListClassName='filelist', rowClassName='row file' } = props - const { mapFn, sortFn } = orderByFn(orderBy) + const { mapFn, sortFn } = util.sort.orderByFn(orderBy) const fileList = (files || []) .map(mapFn) .sort(sortFn) - .map(pair => - <FileRow + .map(pair => { + return <FileRow file={pair[1]} fields={fieldSet(fields)} className={rowClassName} linkFiles onClick /> - ) + }) return ( <div className={'rows ' + className}> <div class='row heading'> @@ -45,39 +45,6 @@ export const FileList = props => { ) } -const numericSort = { - asc: (a,b) => a[0] - b[0], - desc: (a,b) => b[0] - a[0], -} -const stringSort = { - asc: (a,b) => a[0].localeCompare(b[0]), - desc: (a,b) => b[0].localeCompare(a[0]), -} -export const orderByFn = (s='name asc') => { - const [field='name', direction='asc'] = s.split(' ') - let mapFn, sortFn - switch (field) { - case 'epoch': - mapFn = a => [a.epoch || a.epochs, a] - sortFn = numericSort[direction] - break - case 'size': - mapFn = a => [a.size, a] - sortFn = numericSort[direction] - break - case 'date': - mapFn = a => [+new Date(a.date || a.created_at), a] - sortFn = numericSort[direction] - break - case 'name': - default: - mapFn = a => [a.id || a.name, a] - sortFn = stringSort[direction] - break - } - return { mapFn, sortFn } -} - export const fieldSet = fields => { if (fields) { if (fields instanceof Set) { @@ -94,23 +61,29 @@ export const FileRow = props => { const size = util.hush_size(file.size) const date = file.date || file.created_at + const epoch = file.epoch || file.epochs || 0 return ( <div class={className} key={file.name}> - <div className="filename" title={file.name || file.url}> - {file.persisted === false - ? <span>{file.name || file.url}</span> - : (linkFiles && file.url) - ? <a target='_blank' href={file.url}>{file.name || file.url}</a> - : <span class='link' onClick={() => onClick(file)}>{file.name || file.url}</span> - } - </div> + {fields.has('name') && + <div className="filename" title={file.name || file.url}> + {file.persisted === false + ? <span className='unpersisted'>{file.name || file.url}</span> + : (linkFiles && file.url) + ? <a target='_blank' href={file.url}>{file.name || file.url}</a> + : <span class='link' onClick={() => onClick(file)}>{file.name || file.url}</span> + } + </div> + } {fields.has('age') && <div className={"age " + util.carbon_date(date)}>{util.get_age(date)}</div> } {fields.has('username') && <div className={"username"}>{username}</div> } + {fields.has('epoch') && + <div className={"epoch " + util.hush_null(epoch)[0]}>{epoch > 0 ? 'ep. ' + epoch : ''}</div> + } {fields.has('date') && <div className={"date " + util.carbon_date(date)}>{moment(date).format("YYYY-MM-DD")}</div> } @@ -120,9 +93,6 @@ export const FileRow = props => { {fields.has('size') && <div className={"size " + size[0]}>{size[1]}</div> } - {fields.has('epoch') && - <div className="epoch">{file.epoch > 0 ? 'epoch ' + file.epoch : ' '}</div> - } {(fields.has('activity') || fields.has('module')) && <div className='activity'> {fields.has('activity') && file.activity} |
