Skip to content
This repository has been archived by the owner on Dec 12, 2021. It is now read-only.

Commit

Permalink
Merge pull request #47 from ViDA-NYU/porting_terms
Browse files Browse the repository at this point in the history
Porting terms
  • Loading branch information
yamsgithub committed Jun 19, 2017
2 parents 69e5a90 + ad775a7 commit 53ce9a5
Show file tree
Hide file tree
Showing 11 changed files with 862 additions and 81 deletions.
5 changes: 4 additions & 1 deletion Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
SHELL := /bin/bash
CONDA_ROOT := $(shell conda info --root)
CONDA_ENV := $(CONDA_ROOT)/envs/ddt
HOSTNAME := $(shell hostname)

CONDA_ENV_TARGET := $(CONDA_ENV)/conda-meta/history
CHERRY_PY_CONFIG_TARGET := server/config.conf
Expand Down Expand Up @@ -54,7 +55,9 @@ $(CONDA_ENV_TARGET): environment.yml
conda env update

$(CHERRY_PY_CONFIG_TARGET): server/config.conf-in
sed "s#tools.staticdir.root = .#tools.staticdir.root = ${PWD}/client/build#g" server/config.conf-in > server/config.conf
sed "s#tools.staticdir.root = .#tools.staticdir.root = ${PWD}/client/build#g" server/config.conf-in > server/config.conf-tmp; \
sed "s#server.socket_host = 0.0.0.0#server.socket_host = ${HOSTNAME}#g" server/config.conf-tmp > server/config.conf; \
rm server/config.conf-tmp

$(GET_NLTK_DATA_TARGET):
source activate ddt; \
Expand Down
4 changes: 4 additions & 0 deletions client/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -6,14 +6,18 @@
"react-scripts": "0.7.0"
},
"dependencies": {
"d3": "^4.7.4",
"d3-array": "^1.1.1",
"d3-request": "^1.0.2",
"d3-scale": "^1.0.3",
"d3-selection": "^1.0.5",
"immutable": "^3.8.1",
"jquery": "^1.11.0",
"material-ui": "^0.16.3",
"react": "^15.3.2",
"react-bootstrap": "^0.30.6",
"react-dom": "^15.3.2",
"react-faux-dom": "^3.0.1",
"react-motion": "^0.4.5",
"react-paginate": "^4.4.2",
"react-router": "^3.0.0",
Expand Down
147 changes: 96 additions & 51 deletions client/src/components/Body.js
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ import { Row, Col} from 'react-bootstrap';
import DomainInfo from './DomainInfo';
import Search from './Search';
import Filters from './Filters';
import Terms from './Terms';
import Views from './Views';
import '../css/Components.css';
import 'react-checkbox-tree/lib/react-checkbox-tree.css';
Expand All @@ -14,6 +15,10 @@ import Plus from 'material-ui/svg-icons/action/swap-horiz';
import FloatingActionButton from 'material-ui/FloatingActionButton';
import Snackbar from 'material-ui/Snackbar'; //Adding an indicator which tell us that the pages are being downloaded

import {Card, CardActions, CardHeader, CardText, CardMedia} from 'material-ui/Card';
import {List, ListItem} from 'material-ui/List';
import Subheader from 'material-ui/Subheader';

const styles = {
button:{
marginTop:20,
Expand All @@ -35,10 +40,33 @@ const styles = {
borderRadius: '10px 10px 10px 10px',
},
avatar:{
margin:'8px 8px 0px -10px',
margin:'-4px 8px 0px 0px',
},

//
card: {

borderStyle: 'solid',
borderColor: '#C09ED7',
background: 'white',
borderRadius: '0px 0px 0px 0px',
borderWidth: '0px 0px 1px 0px'
},
cardHeader:{
background: '#DCCCE7',
padding:'10px 1px 10px 6px',
borderRadius: '0px 0px 0px 0px',
},
cardMedia:{
background: '#DCCCE7',
padding:'2px 4px 2px 4px',
borderRadius: '0px 0px 0px 0px',
height: "200px",
},
};



class Body extends Component{

constructor(props) {
Expand All @@ -56,9 +84,10 @@ class Body extends Component{
iconDomainInfo:null,
stateDomainInfoCard:false,
stateSearchCard:false,
stateFiltersCard:false,
offset:0,
currentPagination:0,
offset:0,
currentPagination:0,
stateFiltersCard:false,
stateTermsCard:false,
sizeAvatar:25,
currentDomain:'',
sessionBody:{},
Expand All @@ -67,6 +96,7 @@ class Body extends Component{
update:false,
runCurrentQuery: "*",
intervalFuncId:undefined,

};
this.sessionB={};
}
Expand Down Expand Up @@ -104,7 +134,6 @@ class Body extends Component{
//Get queries, tags, urls from a speficic domain.
componentWillMount() {
this.setState({currentDomain: this.props.currentDomain, sessionBody: this.createSession(this.props.currentDomain), sessionString: JSON.stringify(this.createSession(this.props.currentDomain)) });

}

//handling update of props (ex. filters, session, etc)
Expand All @@ -119,12 +148,13 @@ class Body extends Component{
}

this.setState({currentDomain: this.props.currentDomain});

};

//Verify if it is necessary an update.
shouldComponentUpdate(nextProps, nextState) {
if (nextState.sessionString === this.state.sessionString) {
if(nextProps.updateCrawlerData==="updateCrawler" || nextProps.updateCrawlerData==="stopCrawler" || nextProps.filterKeyword !== null || nextProps.filterKeyword !== "" || nextState.stateDomainInfoCard!==this.state.stateDomainInfoCard || nextState.stateSearchCard!==this.state.stateSearchCard || nextState.stateFiltersCard!==this.state.stateFiltersCard){
if(nextProps.updateCrawlerData=="updateCrawler" || nextProps.updateCrawlerData=="stopCrawler" || nextProps.filterKeyword !== null || nextProps.filterKeyword !== "" || nextState.stateDomainInfoCard!==this.state.stateDomainInfoCard || nextState.stateSearchCard!==this.state.stateSearchCard || nextState.stateTermsCard!==this.state.stateTermsCard || nextState.stateFiltersCard!==this.state.stateFiltersCard){
return true;
}
return false;
Expand Down Expand Up @@ -161,13 +191,15 @@ class Body extends Component{
stateDomainInfoCard:false,
stateSearchCard:false,
stateFiltersCard:false,
stateTermsCard:false,
});}
else{
this.openMenu();
this.setState({
stateDomainInfoCard:false,
stateSearchCard:false,
stateFiltersCard:false,
stateTermsCard:false,
});
}
}
Expand All @@ -176,8 +208,14 @@ class Body extends Component{
if(!this.state.open){
this.openMenu();
}
var item = menu===0 ? this.setState({stateSearchCard: expanded, stateFiltersCard :!expanded, stateDomainInfoCard:!expanded}) :
( menu===1 ? this.setState({stateFiltersCard: expanded, stateSearchCard: !expanded, stateDomainInfoCard:!expanded}) : this.setState({ stateDomainInfoCard:expanded, stateFiltersCard: !expanded, stateSearchCard: !expanded}));
//stateSearchCard: menu=0
//stateFiltersCard: menu=1
//stateDomainInfoCard: menu=2
//stateTermsCard: menu=3
var item = menu===0 ? this.setState({stateSearchCard: expanded, stateFiltersCard :!expanded, stateDomainInfoCard:!expanded, stateTermsCard:!expanded}) :
(menu===1 ? this.setState({stateFiltersCard: expanded, stateSearchCard: !expanded, stateDomainInfoCard:!expanded, stateTermsCard:!expanded}) :
menu===2 ? this.setState({ stateDomainInfoCard:expanded, stateFiltersCard: !expanded, stateSearchCard: !expanded, stateTermsCard:!expanded}):
this.setState({stateTermsCard:expanded, stateDomainInfoCard:!expanded, stateFiltersCard: !expanded, stateSearchCard: !expanded}));
}

//function from FiltersTabs Component. Add or Remove some query or tag which was used to filter data.
Expand All @@ -186,6 +224,7 @@ class Body extends Component{
this.setState({
sessionBody:sessionTemp, sessionString: JSON.stringify(sessionTemp)
});
this.updateSession(sessionTemp);
}

// Update the pages that have changed (for example pages returned from web query)
Expand Down Expand Up @@ -251,57 +290,63 @@ class Body extends Component{


render(){
//console.log("------body----------");

//console.log(this.state.sessionBody);
console.log("------body----------");
const sidebar = (<div style={{width:this.state.size}}>
<Col style={{marginTop:70, marginLeft:10, marginRight:10, width:338, background:"white"}}>
<Row className="Menus-child">
<DomainInfo nameDomain={this.props.nameDomain} session={this.state.sessionBody} statedCard={this.state.stateDomainInfoCard} sizeAvatar={this.state.sizeAvatar} setActiveMenu={this.setActiveMenu.bind(this)}/>
</Row>
<Row className="Menus-child">
<Search statedCard={this.state.stateSearchCard} sizeAvatar={this.state.sizeAvatar} setActiveMenu={this.setActiveMenu.bind(this)} session={this.state.sessionBody} updatePages={this.updatePages.bind(this)} updateStatusMessage={this.updateStatusMessage.bind(this)} getQueryPages={this.getQueryPages.bind(this)} queryPagesDone={this.queryPagesDone.bind(this)}/>
</Row>
<Row className="Menus-child">
<Filters updateCrawlerData={this.props.updateCrawlerData} queryFromSearch={this.state.intervalFuncId} update={this.state.update} statedCard={this.state.stateFiltersCard} sizeAvatar={this.state.sizeAvatar} setActiveMenu={this.setActiveMenu.bind(this)} session={this.state.sessionBody} updateSession={this.updateSession.bind(this)} deletedFilter={this.deletedFilter.bind(this)}/>
</Row>
<Row className="Menus-child">
<FloatingActionButton mini={true} style={styles.button} zDepth={3} onClick={this.openDockMenu.bind(this)}>
<Plus />
</FloatingActionButton>
</Row>
</Col>

</div>
);

const sidebarProps = {
sidebar: sidebar,
docked: this.state.docked,
sidebarClassName: 'custom-sidebar-class',
open: this.state.open,
touch: this.state.touch,
shadow: this.state.shadow,
pullRight: this.state.pullRight,
touchHandleWidth: this.state.touchHandleWidth,
dragToggleDistance: this.state.dragToggleDistance,
transitions: this.state.transitions,
onSetOpen: this.onSetOpen,
};
<Col style={{marginTop:70, marginLeft:10, marginRight:10, width:335, background:"white"}}>
<Row className="Menus-child">
<DomainInfo nameDomain={this.props.nameDomain} session={this.state.sessionBody} statedCard={this.state.stateDomainInfoCard} sizeAvatar={this.state.sizeAvatar} setActiveMenu={this.setActiveMenu.bind(this)}/>
</Row>
<Row className="Menus-child">
<Search statedCard={this.state.stateSearchCard} sizeAvatar={this.state.sizeAvatar} setActiveMenu={this.setActiveMenu.bind(this)} session={this.state.sessionBody} updatePages={this.updatePages.bind(this)} updateStatusMessage={this.updateStatusMessage.bind(this)} getQueryPages={this.getQueryPages.bind(this)} queryPagesDone={this.queryPagesDone.bind(this)}/>
</Row>
<Row className="Menus-child">
<Filters updateCrawlerData={this.props.updateCrawlerData} queryFromSearch = {this.state.intervalFuncId} update={this.state.update} statedCard={this.state.stateFiltersCard} sizeAvatar={this.state.sizeAvatar} setActiveMenu={this.setActiveMenu.bind(this)} session={this.state.sessionBody} updateSession={this.updateSession.bind(this)} deletedFilter={this.deletedFilter.bind(this)}/>
</Row>
<Row className="Menus-child">
<Terms statedCard={this.state.stateTermsCard} sizeAvatar={this.state.sizeAvatar} setActiveMenu={this.setActiveMenu.bind(this)} session={this.state.sessionBody}/>
</Row>
<Row className="Menus-child">
<FloatingActionButton mini={true} style={styles.button} zDepth={3} onClick={this.openDockMenu.bind(this)}>
<Plus />
</FloatingActionButton>
</Row>
</Col>
</div>
);

const sidebarProps = {
sidebar: sidebar,
docked: this.state.docked,
sidebarClassName: 'custom-sidebar-class',
open: this.state.open,
touch: this.state.touch,
shadow: this.state.shadow,
pullRight: this.state.pullRight,
touchHandleWidth: this.state.touchHandleWidth,
dragToggleDistance: this.state.dragToggleDistance,
transitions: this.state.transitions,
onSetOpen: this.onSetOpen,
};

return (
<Sidebar {...sidebarProps}>
<div>
<Row style={styles.content}>
<Views queryFromSearch={this.state.intervalFuncId} domainId={this.state.currentDomain} session={this.state.sessionBody} deletedFilter={this.deletedFilter.bind(this)} reloadFilters={this.reloadFilters.bind(this)} availableCrawlerButton={this.availableCrawlerButton.bind(this)} offset={this.state.offset} currentPagination={this.state.currentPagination} handlePageClick={this.handlePageClick.bind(this)}/>
</Row>
</div>
<Snackbar
open={(this.state.runCurrentQuery === "*")? false: (this.state.runCurrentQuery === "process*concluded")?false:true}
message={(this.state.runCurrentQuery !== "process*concluded" && this.state.runCurrentQuery !== "*" )? "Searching: " + this.state.runCurrentQuery : (this.state.runCurrentQuery === "process*concluded")? "Search was completed.": ""}
//autoHideDuration={(this.state.runCurrentQuery !== "process*concluded" && this.state.runCurrentQuery !== "*" )? 30000: (this.state.runCurrentQuery === "process*concluded")?2000: 0}
/>
</Sidebar>
)
}
</div>
<Snackbar
open={(this.state.runCurrentQuery === "*")? false: (this.state.runCurrentQuery === "process*concluded")?false:true}
message={(this.state.runCurrentQuery !== "process*concluded" && this.state.runCurrentQuery !== "*" )? "Searching: " + this.state.runCurrentQuery : (this.state.runCurrentQuery === "process*concluded")? "Search was completed.": ""}
//autoHideDuration={(this.state.runCurrentQuery !== "process*concluded" && this.state.runCurrentQuery !== "*" )? 30000: (this.state.runCurrentQuery === "process*concluded")?2000: 0}
/>
</Sidebar>
)
}
}



export default Body;
22 changes: 11 additions & 11 deletions client/src/components/FiltersTabs.js
Original file line number Diff line number Diff line change
Expand Up @@ -535,11 +535,11 @@ class LoadAnnotatedTerms extends React.Component {
var negative = [];
items.map((item, index)=>{
var term = item[0];
var tag = item[1];
if(tag === "Positive")
positive.push({value:term, label:term});
else if(tag === "Negative")
negative.push({value:term, label:term});
var tag = item[1];
if(tag.includes("Positive"))
positive.push({value:term, label:term});
else if(tag.includes("Negative"))
negative.push({value:term, label:term});
});
if(positive.length > 0)
node.children.push({value:"positive", label:"Positive", children:positive});
Expand Down Expand Up @@ -847,7 +847,7 @@ class FiltersTabs extends React.Component {
}

sessionTemp['selected_queries']=newQuery;
if(sessionTemp['selected_queries'] === "" && sessionTemp['selected_tags'] === "" && sessionTemp['selected_model_tags'] === "" && sessionTemp['selected_crawled_tags'] === "" && sessionTemp['selected_tlds'] === "" && sessionTemp['selected_aterms'] === ""){
if(sessionTemp['selected_queries'] === "" && sessionTemp['selected_tags'] === "" && sessionTemp['selected_model_tags'] === "" && sessionTemp['selected_crawled_tags'] === "" && sessionTemp['selected_tlds'] === ""){
sessionTemp['pageRetrievalCriteria'] = "Most Recent";
}
this.props.updateSession(sessionTemp);
Expand Down Expand Up @@ -880,7 +880,7 @@ class FiltersTabs extends React.Component {
}

sessionTemp['selected_tlds']=newTLDs;
if(sessionTemp['selected_queries'] === "" && sessionTemp['selected_tags'] === "" && sessionTemp['selected_model_tags'] === "" && sessionTemp['selected_crawled_tags'] === "" && sessionTemp['selected_tlds'] === "" && sessionTemp['selected_aterms'] === ""){
if(sessionTemp['selected_queries'] === "" && sessionTemp['selected_tags'] === "" && sessionTemp['selected_model_tags'] === "" && sessionTemp['selected_crawled_tags'] === "" && sessionTemp['selected_tlds'] === ""){
sessionTemp['pageRetrievalCriteria'] = "Most Recent";
}

Expand Down Expand Up @@ -919,7 +919,7 @@ class FiltersTabs extends React.Component {
} else sessionTemp['filter']=labelTerm;
}
sessionTemp['selected_aterms']=newTerms;
if(sessionTemp['selected_queries'] === "" && sessionTemp['selected_tags'] === "" && sessionTemp['selected_model_tags'] === "" && sessionTemp['selected_crawled_tags'] === "" && sessionTemp['selected_tlds'] === "" && sessionTemp['selected_aterms'] === ""){
if(sessionTemp['selected_queries'] === "" && sessionTemp['selected_tags'] === "" && sessionTemp['selected_model_tags'] === "" && sessionTemp['selected_crawled_tags'] === "" && sessionTemp['selected_tlds'] === ""){
sessionTemp['pageRetrievalCriteria'] = "Most Recent";
}
this.props.updateSession(sessionTemp);
Expand Down Expand Up @@ -949,7 +949,7 @@ class FiltersTabs extends React.Component {
delete sessionTemp['pageRetrievalCriteria']['tag'];
}
sessionTemp['selected_tags']=newTags;
if(sessionTemp['selected_queries'] === "" && sessionTemp['selected_tags'] === "" && sessionTemp['selected_model_tags'] === "" && sessionTemp['selected_crawled_tags'] === "" && sessionTemp['selected_tlds'] === "" && sessionTemp['selected_aterms'] === ""){
if(sessionTemp['selected_queries'] === "" && sessionTemp['selected_tags'] === "" && sessionTemp['selected_model_tags'] === "" && sessionTemp['selected_crawled_tags'] === "" && sessionTemp['selected_tlds'] === ""){
sessionTemp['pageRetrievalCriteria'] = "Most Recent";
}
this.props.updateSession(sessionTemp);
Expand Down Expand Up @@ -980,7 +980,7 @@ class FiltersTabs extends React.Component {
}

sessionTemp['selected_model_tags']=newTags;
if(sessionTemp['selected_queries'] === "" && sessionTemp['selected_tags'] === "" && sessionTemp['selected_model_tags'] === "" && sessionTemp['selected_crawled_tags'] === "" && sessionTemp['selected_tlds'] === "" && sessionTemp['selected_aterms'] === ""){
if(sessionTemp['selected_queries'] === "" && sessionTemp['selected_tags'] === "" && sessionTemp['selected_model_tags'] === "" && sessionTemp['selected_crawled_tags'] === "" && sessionTemp['selected_tlds'] === "" ){
sessionTemp['pageRetrievalCriteria'] = "Most Recent";
}
this.props.updateSession(sessionTemp);
Expand Down Expand Up @@ -1011,7 +1011,7 @@ class FiltersTabs extends React.Component {
}

sessionTemp['selected_crawled_tags']=newTags;
if(sessionTemp['selected_queries'] === "" && sessionTemp['selected_tags'] === "" && sessionTemp['selected_model_tags'] === "" && sessionTemp['selected_tlds'] === "" && sessionTemp['selected_aterms'] === "" && sessionTemp['selected_crawled_tags'] === ""){
if(sessionTemp['selected_queries'] === "" && sessionTemp['selected_tags'] === "" && sessionTemp['selected_model_tags'] === "" && sessionTemp['selected_tlds'] === "" && sessionTemp['selected_crawled_tags'] === ""){
sessionTemp['pageRetrievalCriteria'] = "Most Recent";
}
this.props.updateSession(sessionTemp);
Expand Down
18 changes: 9 additions & 9 deletions client/src/components/Header.js
Original file line number Diff line number Diff line change
Expand Up @@ -270,15 +270,15 @@ class Header extends Component {
}

handleOnRequestChange = (event, value)=> {
var session = this.createSession(this.props.idDomain);
if(value === 2){
this.getAvailableTags(session);
this.setState({ openCreateModel: true });
}
else{
this.createModel();
}
}
var session = this.createSession(this.props.idDomain);
if(value === "2"){
this.getAvailableTags(session);
this.setState({ openCreateModel: true });
}
else if(value === "1"){
this.createModel();
}
}

handleOpenCreateModel = () => {
this.setState({openCreateModel: true});
Expand Down

0 comments on commit 53ce9a5

Please sign in to comment.