summaryrefslogtreecommitdiff
path: root/app/client
diff options
context:
space:
mode:
Diffstat (limited to 'app/client')
-rw-r--r--app/client/common/fileList.component.js2
-rw-r--r--app/client/dataset/dataset.actions.js65
-rw-r--r--app/client/dataset/dataset.component.js60
3 files changed, 71 insertions, 56 deletions
diff --git a/app/client/common/fileList.component.js b/app/client/common/fileList.component.js
index ece77ae..87384b6 100644
--- a/app/client/common/fileList.component.js
+++ b/app/client/common/fileList.component.js
@@ -12,7 +12,7 @@ class FileList extends Component {
}
render(){
const { files, linkFiles, title, onClick, className="" } = this.props
- if (!files.length) return null
+ if (!files || !files.length) return null
let fields = this.props.fields || defaultFields
if (typeof fields === 'string') {
fields = new Set(fields.split(' '))
diff --git a/app/client/dataset/dataset.actions.js b/app/client/dataset/dataset.actions.js
index f42e15c..983d586 100644
--- a/app/client/dataset/dataset.actions.js
+++ b/app/client/dataset/dataset.actions.js
@@ -1,12 +1,71 @@
// import socket from '../socket'
import types from '../types'
+import actions from '../actions'
+import { parser } from '../api'
+
+export const createOrUpdateFolder = (module, folder) => dispatch => {
+ if (! folder || ! folder.id) {
+ actions.folder.create({
+ // username... should get added inside the API
+ module: module.name,
+ datatype: module.datatype,
+ activity: 'dataset',
+ name
+ }).then(folder => {
+ // set current folder
+ })
+ }
+ else {
+ actions.folder.update({
+ id: folder.id,
+ module: module.name,
+ datatype: module.datatype,
+ activity: 'dataset',
+ name
+ })
+ }
+}
+
+export const uploadFile = (module, folder, file) => dispatch => {
+ const fd = new FormData()
+ fd.append('file', file)
+ actions.folder.upload(fd, {
+ id: folder.id,
+ module: module.name,
+ activity: 'file',
+ epoch: 0,
+ processed: false,
+ generated: false,
+ })
+}
+
+export const fetchURL = (module, folder, url) => {
+ // name url
+ // mime datatype
+ // duration analysis
+ // size activity
+ // opt created_at updated_at
+ parser.parse(url, media => {
+ if (!media) return
+ console.log('media', media)
+ actions.file.create({
+ folder_id: folder.id,
+ module: module.name,
+ activity: 'url',
+ duration: parseInt(media.duration) || 0,
+ epoch: 0,
+ processed: false,
+ generated: false,
+ opt: media,
+ url
+ })
+ })
+}
+
export const uploadFiles = (files) => {
return { type: types.dataset.upload_files }
}
-export const fetchURL = (url) => {
- return { type: types.dataset.fetch_url }
-}
// export const uploadFiles = (files) => {
// return dispatch => {
diff --git a/app/client/dataset/dataset.component.js b/app/client/dataset/dataset.component.js
index 45f88dc..ebea8c9 100644
--- a/app/client/dataset/dataset.component.js
+++ b/app/client/dataset/dataset.component.js
@@ -2,7 +2,7 @@ import { h, Component } from 'preact'
import { bindActionCreators } from 'redux'
import { connect } from 'react-redux'
-import { actions, parser } from '../api'
+import * as datasetActions from './dataset.actions'
import Group from '../common/group.component'
import Param from '../common/param.component'
@@ -19,59 +19,16 @@ class Dataset extends Component {
this.pickFile = this.pickFile.bind(this)
}
handleName(name) {
- const { module, folder } = this.props
- if (! folder.id) {
- this.props.actions.folder.create({
- // username... should get added inside the API
- module: module.name,
- datatype: module.datatype,
- activity: 'dataset',
- name
- })
- } else {
- this.props.actions.folder.update({
- id: folder.id,
- module: module.name,
- datatype: module.datatype,
- activity: 'dataset',
- name
- })
- }
+ const { module, folder, actions } = this.props
+ actions.dataset.createOrUpdateFolder(module, folder)
}
handleUpload(file) {
- const { module, folder } = this.props
- const fd = new FormData()
- fd.append('file', file)
- this.props.actions.folder.upload(fd, {
- id: folder.id,
- module: module.name,
- activity: 'file',
- epoch: 0,
- processed: false,
- generated: false,
- })
+ const { module, folder, actions } = this.props
+ actions.dataset.uploadFile(module, folder, file)
}
handleURL(url) {
- // name url
- // mime datatype
- // duration analysis
- // size activity
- // opt created_at updated_at
- parser.parse(url, media => {
- if (!media) return
- console.log('media', media)
- this.props.actions.file.create({
- folder_id: this.props.folder.id,
- module: this.props.module.name,
- activity: 'url',
- duration: parseInt(media.duration) || 0,
- epoch: 0,
- processed: false,
- generated: false,
- opt: media,
- url
- })
- })
+ const { module, folder, actions } = this.props
+ actions.dataset.fetchURL(module, folder, url)
}
pickFile(file){
console.log('pick', file)
@@ -139,8 +96,7 @@ const mapStateToProps = state => state.dataset
const mapDispatchToProps = (dispatch, ownProps) => ({
actions: {
- folder: bindActionCreators(actions.folder, dispatch),
- file: bindActionCreators(actions.file, dispatch),
+ dataset: bindActionCreators(datasetActions, dispatch),
}
})