Permalink
Please
sign in to comment.
Browse files
time-slicing and ui-work:
- update to latest shepherd-1.1.0-dev - crawl scopes: only use specified depth if 'custom' scope - crawl list api: check for is_done() when returning crawl list? ui work: - use react table for crawl listing - add 'custom' as a crawl type option
- Loading branch information...
Showing
with
122 additions
and 49 deletions.
- +13 −11 crawlmanager/crawl.py
- +1 −0 docker-compose.yml
- +1 −0 frontend/package.json
- +3 −2 frontend/src/components/CrawlCreator/CreationForm.js
- +68 −22 frontend/src/components/Crawls/SelectCrawl.js
- +5 −5 frontend/src/components/Crawls/index.js
- +4 −1 frontend/src/styles/global.scss
- +8 −1 frontend/yarn.lock
- +12 −0 pool_config.yaml
- +7 −7 static/app.js
@@ -1,33 +1,79 @@ | |||
import React from 'react'; | |||
import ReactTable from "react-table"; | |||
import * as PropTypes from 'prop-types'; | |||
import { List } from 'immutable'; | |||
import CrawlLi from './CrawlLi'; | |||
|
|||
export default function SelectCrawls({ crawlIds, removeCrawl }) { | |||
const crawls = new Array(crawlIds.size); | |||
for (let i = 0; i < crawlIds.size; i++) { | |||
const id = crawlIds.get(i); | |||
crawls[i] = ( | |||
<CrawlLi | |||
key={`crawl-${i}-${id}`} | |||
removeCrawl={removeCrawl} | |||
crawlId={id} | |||
/> | |||
); | |||
import { List, Map } from 'immutable'; | |||
import { Link } from 'react-router-dom'; | |||
|
|||
export default function SelectCrawls({ crawls, removeCrawl }) { | |||
|
|||
|
|||
function doRemove(id) { | |||
//this.props.removeCrawl(this.props.crawlId); | |||
console.log(id); | |||
removeCrawl(id); | |||
} | |||
|
|||
const columns = [ | |||
{ | |||
Header: 'Id', | |||
accessor: 'id', | |||
Cell: props => <Link className='uk-button uk-button-text' to={`/crawl/${props.value}`}>{props.value}</Link> | |||
}, | |||
{ Header: 'Crawl Type', | |||
accessor: 'crawl_type' | |||
}, | |||
{ | |||
Header: 'Status', | |||
accessor: 'status' | |||
}, | |||
{ | |||
Header: 'Browsers', | |||
accessor: 'num_browsers', | |||
}, | |||
{ | |||
Header: 'Tabs', | |||
accessor: 'num_tabs', | |||
}, | |||
{ | |||
Header: 'Remove Crawl', | |||
id: 'remove_crawl', | |||
Cell: props => (<span | |||
className='removeCrawlFromListIcon' style={{'textAlign': 'center'}} | |||
data-uk-icon='close' | |||
/>) | |||
}, | |||
]; | |||
|
|||
function resolveData(data) { | |||
return data.valueSeq().toArray(); | |||
} | |||
|
|||
function getTdProps(state, rowInfo, column, instance) { | |||
return { | |||
onClick: (e, handleOriginal) => { | |||
if (column.id === "remove_crawl") { | |||
doRemove(rowInfo.row.id); | |||
} | |||
} | |||
}; | |||
} | |||
|
|||
const crawlTable = (<ReactTable data={crawls} | |||
columns={columns} | |||
resolveData={resolveData} | |||
getTdProps={getTdProps}/>); | |||
|
|||
return ( | |||
<> | |||
<div> | |||
<h1 className='uk-text-center'>Select Crawl To View</h1> | |||
<div className='uk-container uk-container-small'> | |||
<div className='uk-flex uk-flex-center'> | |||
<ul className='uk-list uk-list-divider'>{crawls}</ul> | |||
</div> | |||
</div> | |||
</> | |||
{crawlTable} | |||
</div> | |||
); | |||
} | |||
|
|||
SelectCrawls.propTypes = { | |||
crawlIds: PropTypes.instanceOf(List).isRequired, | |||
crawls: PropTypes.instanceOf(Map).isRequired, | |||
removeCrawl: PropTypes.func.isRequired | |||
}; | |||
|
|||
|
@@ -0,0 +1,12 @@ | |||
default_pool: auto-pool | |||
|
|||
pools: | |||
- name: auto-pool | |||
type: persist | |||
duration: 60 | |||
max_size: 1 | |||
expire_check: 10 | |||
grace_time: 60 | |||
stop_on_pause: false | |||
|
|||
|
0 comments on commit
a6cdbf3