Skip to content
This repository has been archived by the owner on Nov 22, 2022. It is now read-only.

Commit

Permalink
Merge pull request #1 from FelixHenninger/master
Browse files Browse the repository at this point in the history
Merge from upstream
  • Loading branch information
jdpigeon authored Sep 30, 2020
2 parents 82f9de8 + 2cd4c80 commit 4e6422c
Show file tree
Hide file tree
Showing 9 changed files with 831 additions and 216 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -5,9 +5,10 @@ import { InputGroupButtonDropdown, DropdownToggle, DropdownMenu, DropdownItem,
import classnames from 'classnames'

import { useArrayContext } from '../../../../../Form/array'
import { ButtonCell } from '../../../../../Form/table'
import { ButtonCell, DefaultHeader } from '../../../../../Form/table'
import Icon from '../../../../../Icon'
import { FastField, useField } from 'formik'
import { range } from 'lodash'

const CellTypeDropdown = ({ name, index, actions, disabled=false }) => {
const [field, , helpers] = useField(name)
Expand Down Expand Up @@ -100,32 +101,34 @@ export const HeaderCell = ({ index, actions }) =>
/>
</InputGroup>

export default ({ name, columns }) => {
export default ({ columns }) => {
const { addColumn, fillColumn, clearColumn, deleteColumn } = useArrayContext()

return (
<thead>
<tr>
<th></th>
{ Array(columns).fill(null).map((_, i) =>
<th key={ `${ name }-header-${ i }` }>
<HeaderCell
index={ i }
actions={{
'Fill': fillColumn,
'Clear': clearColumn,
'Delete': deleteColumn,
}}
/>
</th>
) }
<ButtonCell
type="th" icon="plus"
style={{ height: '42px' }}
onClick={ () => addColumn('', { name: '', type: 'string' }) }
disabled={ columns >= 12 }
/>
</tr>
</thead>
<DefaultHeader columns={ columns }>
<thead>
<tr>
<th></th>
{ range(columns).map((_, i) =>
<th key={ `header-${ i }` }>
<HeaderCell
index={ i }
actions={{
'Fill': fillColumn,
'Clear': clearColumn,
'Delete': deleteColumn,
}}
/>
</th>
) }
<ButtonCell
type="th" icon="plus"
style={{ height: '42px' }}
onClick={ () => addColumn('', { name: '', type: 'string' }) }
disabled={ columns >= 12 }
/>
</tr>
</thead>
</DefaultHeader>
)
}
Original file line number Diff line number Diff line change
Expand Up @@ -2,26 +2,26 @@ import React, { Fragment } from 'react'

import { FastField, useFormikContext } from 'formik'
import classnames from 'classnames'
import { range } from 'lodash'

import { Table, DefaultRow } from '../../../../../Form/table'
import Header from './header'
import Footer from './footer'
import { Table, DefaultRow } from '../../../../../Form/table'

import './style.css'

const Row = ({ index: rowIndex, name, data, arrayHelpers }) =>
const Row = ({ index: rowIndex, name, columns, arrayHelpers }) =>
<DefaultRow
index={ rowIndex } arrayHelpers={ arrayHelpers }
wrapper={ Fragment }
>
{ data.map(
(_, columnIndex) =>
<td key={ `${ name }[${ columnIndex }]` }>
<FastField
name={ `${ name }[${ columnIndex }]` }
className="form-control text-monospace"
/>
</td>
{ range(columns).map(columnIndex =>
<td key={ `${ name }[${ columnIndex }]` }>
<FastField
name={ `${ name }[${ columnIndex }]` }
className="form-control text-monospace"
/>
</td>
) }
</DefaultRow>

Expand All @@ -32,8 +32,8 @@ export default () => {

return <Table
name="templateParameters.rows"
row={ Row }
columns={ columns }
row={ Row }
header={ Header }
footer={ Footer }
defaultItem={ Array(columns).fill('') }
Expand Down
12 changes: 7 additions & 5 deletions packages/builder/src/components/Form/array.js
Original file line number Diff line number Diff line change
Expand Up @@ -90,10 +90,11 @@ export const useArrayContext = () => useContext(ArrayContext)

export const FormArray = ({
name, item: Item,
header: Header, footer: Footer,
wrapper: Wrapper=Fragment,
wrapperProps,
header: Header,
footer: Footer,
wrapper: Wrapper=Fragment, wrapperProps,
bodyWrapper: BodyWrapper=Fragment,
globalProps={},
defaultItem={},
}) => {
const { values, setFieldValue, setValues } = useFormikContext()
Expand All @@ -110,7 +111,7 @@ export const FormArray = ({
setValues={ setValues }
setFieldValue={ setFieldValue }
>
{ Header && <Header name={ name } /> }
{ Header && <Header { ...globalProps } /> }
<BodyWrapper>
{
(rows || []).map(
Expand All @@ -122,11 +123,12 @@ export const FormArray = ({
isLastItem={ index === rows.length - 1 }
data={ data }
arrayHelpers={ arrayHelpers }
{ ...globalProps }
/>
)
}
</BodyWrapper>
{ Footer && <Footer addItem={ (item) => arrayHelpers.push(item || defaultItem) } /> }
{ Footer && <Footer addItem={ (item) => arrayHelpers.push(item || defaultItem) } { ...globalProps } /> }
</ArrayContextProvider>
</Wrapper>
}
Expand Down
20 changes: 11 additions & 9 deletions packages/builder/src/components/Form/table.js
Original file line number Diff line number Diff line change
Expand Up @@ -84,24 +84,26 @@ const DefaultFooter = ({ addItem, columns }) =>
</tr>
</tfoot>

export const DefaultHeader = ({ columns, children }) =>
<>
<DefaultColgroup columns={ columns }/>
{ children }
</>

export const Table = ({
header: Header,
row,
footer: Footer=DefaultFooter,
header=DefaultHeader,
footer=DefaultFooter,
columns=1,
className, ...props
}) =>
<FormArray
wrapper="table"
wrapperProps={{ className: `table grid ${ className }` }}
header={ ({ name }) =>
<>
<DefaultColgroup name={ props.name } columns={ columns }/>
{ Header && <Header name={ name } columns={ columns } /> }
</>
}
bodyWrapper="tbody"
item={ row }
footer={ (props) => <Footer columns={ columns } { ...props } /> }
header={ header }
footer={ footer }
globalProps={{ columns }}
{ ...props }
/>
Original file line number Diff line number Diff line change
Expand Up @@ -15,8 +15,8 @@ import exportStaticNetlify from '../../../../logic/io/export/modifiers/netlify'
const validateApiKey = value => {
if (!value) {
return 'We\'ll need a API key to upload the study'
} else if (value.length !== 64) {
return 'The keys are typically 64 characters long'
} else if (![64, 43].includes(value.length)) {
return 'The keys are typically 43 or 64 characters long'
}
}

Expand Down
4 changes: 2 additions & 2 deletions packages/builder/src/logic/io/export/modifiers/jatos.js
Original file line number Diff line number Diff line change
Expand Up @@ -93,14 +93,14 @@ const addJatosIntegration = (state) => {

// TODO: This is probably not the most elegant way to
// achieve integration -- possibly a plugin would be nicer?
state.components.root.messageHandlers.push([{
state.components.root.messageHandlers.push({
title: 'JATOS integration',
message: 'epilogue',
code: stripIndent`
var resultJson = study.options.datastore.exportJson();
jatos.submitResultData(resultJson, jatos.startNextComponent);
`
}])
})

return state
}
Expand Down
4 changes: 2 additions & 2 deletions packages/library/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@
"@babel/plugin-proposal-class-properties": "^7.8.0",
"@babel/plugin-transform-regenerator": "^7.8.0",
"@babel/plugin-transform-runtime": "^7.8.0",
"@babel/preset-env": "^7.8.0",
"@babel/preset-env": "^7.9.0",
"babel-eslint": "^9.0.0",
"babel-loader": "^8.0.4",
"babel-plugin-istanbul": "^5.1.0",
Expand Down Expand Up @@ -62,7 +62,7 @@
"postcss-preset-env": "^6.7.0",
"requirejs": "^2.3.3",
"shelljs": "^0.8.2",
"shx": "^0.2.2",
"shx": "^0.3.2",
"sinon": "^7.0.0",
"webpack": "^4.8.0",
"webpack-bundle-analyzer": "^3.0.0",
Expand Down
4 changes: 2 additions & 2 deletions packages/website/content/resources/support.md
Original file line number Diff line number Diff line change
Expand Up @@ -36,10 +36,10 @@ menu = "header"
</div>
<div class="col-lg d-flex align-items-center justify-content-center">
<iframe
src="https://slackin-nmbrcrnchrs.herokuapp.com/"
src="https://slackin-numbercrunchers.herokuapp.com/"
scrolling="no"
class="w-100 border border-light rounded"
style="min-height: 400px; overflow: hidden"
style="min-height: 500px; overflow: hidden"
></iframe>
</div>
</div>
Expand Down
Loading

0 comments on commit 4e6422c

Please sign in to comment.