summaryrefslogtreecommitdiff
path: root/app/client/common/fileList.component.js
diff options
context:
space:
mode:
authorJules Laplace <julescarbon@gmail.com>2018-06-03 02:25:34 +0200
committerJules Laplace <julescarbon@gmail.com>2018-06-03 02:25:34 +0200
commit46fbedf0ad7b167a28daf2030e06f34480576394 (patch)
tree81877c97f777a8d705d47bb97ac96e5fa244bd2b /app/client/common/fileList.component.js
parent2149eb581c35a93d41dbad6e3409c498b4bed804 (diff)
add results page
Diffstat (limited to 'app/client/common/fileList.component.js')
-rw-r--r--app/client/common/fileList.component.js68
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}