Skip to content

Commit

Permalink
feat: overhaul collection view
Browse files Browse the repository at this point in the history
Merge pull request #609 from qri-io/feat_collection_view
  • Loading branch information
b5 authored Sep 30, 2020
2 parents 7703fdf + fb81d4f commit 9b9e1b5
Show file tree
Hide file tree
Showing 19 changed files with 464 additions and 334 deletions.
4 changes: 3 additions & 1 deletion app/components/Layout.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ interface LayoutProps {
sidebarContent?: React.ReactElement
mainContent: React.ReactElement
headerContent?: React.ReactElement
topbarButtons: NavbarButtonProps[]
onSidebarResize?: (width: number) => void
maximumSidebarWidth?: number
title?: string
Expand All @@ -31,12 +32,13 @@ const Layout: React.FunctionComponent<LayoutProps> = (props: LayoutProps) => {
mainContent,
headerContent,
title = '',
topbarButtons,
showNav = true
} = props

return (
<div id={id} className='sidebar-layout'>
{showNav && <NavTopbar title={title} />}
{showNav && <NavTopbar title={title} buttons={topbarButtons} />}
{headerContent}
<div className='columns'>
{sidebarContent && <Resizable
Expand Down
18 changes: 18 additions & 0 deletions app/components/chrome/BackArrow.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
import React from 'react'

interface ArrowProps {
disabled?: boolean
}

const BackArrow: React.FC<ArrowProps> = ({ disabled = false }) => (
<svg width="20px" height="18px" viewBox="0 0 20 18" version="1.1">
<g id="chrome/back_button" stroke="none" strokeWidth="1" fill="none" fillRule="evenodd" strokeLinecap="round">
<g id="Group" transform="translate(3.000000, 2.000000)" stroke={disabled ? '#c2c2c2' : '#4D4D4D'} strokeWidth="4">
<line x1="14.75" y1="7.04861111" x2="1.75" y2="7.04861111" id="Line-3"></line>
<polyline id="Path-3" points="6.125 0.243055556 0.125 7.04861111 6.125 13.8541667"></polyline>
</g>
</g>
</svg>
)

export default BackArrow
18 changes: 18 additions & 0 deletions app/components/chrome/ForwardArrow.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
import React from 'react'

interface ArrowProps {
disabled?: boolean
}

const ForwardArrow: React.FC<ArrowProps> = ({ disabled = false }) => (
<svg width="20px" height="18px" viewBox="0 0 20 18" version="1.1">
<g id="chrome/forward_button" stroke="none" strokeWidth="1" fill="none" fillRule="evenodd" strokeLinecap="round">
<g id="Group-Copy" transform="translate(9.000000, 9.000000) rotate(-180.000000) translate(-9.000000, -9.000000) translate(1.000000, 2.000000)" stroke={disabled ? '#c2c2c2' : '#4D4D4D'} strokeWidth="4">
<line x1="14.75" y1="7.04861111" x2="1.75" y2="7.04861111" id="Line-3"></line>
<polyline id="Path-3" points="6.125 0.243055556 0.125 7.04861111 6.125 13.8541667"></polyline>
</g>
</g>
</svg>
)

export default ForwardArrow
2 changes: 1 addition & 1 deletion app/components/chrome/HeaderColumnButton.tsx
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import * as React from 'react'
import React from 'react'
import classNames from 'classnames'
import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'
import { IconDefinition } from '@fortawesome/free-regular-svg-icons'
Expand Down
36 changes: 0 additions & 36 deletions app/components/collection-v2/DatasetStatus.tsx

This file was deleted.

43 changes: 38 additions & 5 deletions app/components/collection/collectionHome/CollectionHome.tsx
Original file line number Diff line number Diff line change
@@ -1,10 +1,19 @@
import * as React from 'react'
import React from 'react'
import { ipcRenderer } from 'electron'
import { faDownload, faPlus } from '@fortawesome/free-solid-svg-icons'

import { setModal } from '../../../actions/ui'
import { connectComponentToProps } from '../../../utils/connectComponentToProps'
import { Modal, ModalType } from '../../../models/modals'

import Layout from '../../Layout'
import CollectionHomeMainContent from './CollectionHomeMainContent'
import DatasetCollection from './DatasetCollection'

interface CollectionHomeProps {
setModal: (modal: Modal) => void
}

export const CollectionHome: React.FunctionComponent<any> = () => {
export const CollectionHome: React.FC<CollectionHomeProps> = ({ setModal }) => {
React.useEffect(() => {
ipcRenderer.send('show-dataset-menu', false)
}, [])
Expand All @@ -13,9 +22,33 @@ export const CollectionHome: React.FunctionComponent<any> = () => {
<Layout
id='collection-container'
title='Collection'
mainContent={<CollectionHomeMainContent />}
topbarButtons={
[
{
type: 'button',
id: 'create-dataset',
icon: faPlus,
label: 'New Dataset',
onClick: () => { setModal({ type: ModalType.CreateDataset }) }
},
{
type: 'button',
id: 'pull-dataset',
icon: faDownload,
label: 'Pull Dataset',
onClick: () => { setModal({ type: ModalType.PullDataset }) }
}
]
}
mainContent={<DatasetCollection />}
/>
)
}

export default CollectionHome
export default connectComponentToProps(
CollectionHome,
{},
{
setModal
}
)
Original file line number Diff line number Diff line change
@@ -1,30 +1,26 @@
import React from 'react'
import { Action } from 'redux'
import path from 'path'
import { faPlus, faDownload } from '@fortawesome/free-solid-svg-icons'

import { ApiAction } from '../../../store/api'
import { Modal, ModalType } from '../../../models/modals'
import { ToastType } from '../../../models/store'
import { QriRef } from '../../../models/qriRef'
import { connectComponentToProps } from '../../../utils/connectComponentToProps'
import { setModal, openToast, closeToast } from '../../../actions/ui'
import { importFile } from '../../../actions/api'

import HeaderColumnButton from '../../chrome/HeaderColumnButton'
import DropZone from '../../chrome/DropZone'
import DatasetList from './DatasetList'

export interface CollectionHomeMainContentProps {
export interface DatasetCollectionProps {
qriRef: QriRef
setModal: (modal: Modal) => void
importFile: (filePath: string, fileName: string, fileSize: number) => Promise<ApiAction>
openToast: (type: ToastType, name: string, message: string) => Action
closeToast: () => Action
}

export const CollectionHomeMainContentComponent: React.FunctionComponent<CollectionHomeMainContentProps> = (props) => {
const { setModal, importFile, openToast, closeToast } = props
export const DatasetCollection: React.FunctionComponent<DatasetCollectionProps> = (props) => {
const { importFile, openToast, closeToast } = props

const [dragging, setDragging] = React.useState(false)

Expand Down Expand Up @@ -63,29 +59,15 @@ export const CollectionHomeMainContentComponent: React.FunctionComponent<Collect
setDragging={setDragging}
onDrop={dropHandler}
/>}
<div className='main-content-header'>
<HeaderColumnButton
id='create-dataset'
icon={faPlus}
label='Create new Dataset'
onClick={() => { setModal({ type: ModalType.CreateDataset }) }}
/>
<HeaderColumnButton
icon={faDownload}
id='pull-dataset'
label='Add existing Dataset'
onClick={() => { setModal({ type: ModalType.PullDataset }) }}
/>
</div>
<div className='main-content-flex'>
<DatasetList />
<DatasetList showFSI />
</div>
</div>
)
}

export default connectComponentToProps(
CollectionHomeMainContentComponent,
DatasetCollection,
{},
{
setModal,
Expand Down
Loading

0 comments on commit 9b9e1b5

Please sign in to comment.