mirror of
https://github.com/ascribe/onion.git
synced 2024-12-22 09:23:13 +01:00
Increase robustness of:
- PieceListToolbarOrderWidget - PieceListToolbarFilterWidget
This commit is contained in:
parent
80df66ea5b
commit
8278f5404f
@ -39,30 +39,6 @@ let PieceListToolbar = React.createClass({
|
||||
])
|
||||
},
|
||||
|
||||
getFilterWidget(){
|
||||
if (this.props.filterParams){
|
||||
return (
|
||||
<PieceListToolbarFilterWidget
|
||||
filterParams={this.props.filterParams}
|
||||
filterBy={this.props.filterBy}
|
||||
applyFilterBy={this.props.applyFilterBy} />
|
||||
);
|
||||
}
|
||||
return null;
|
||||
},
|
||||
|
||||
getOrderWidget(){
|
||||
if (this.props.orderParams){
|
||||
return (
|
||||
<PieceListToolbarOrderWidget
|
||||
orderParams={this.props.orderParams}
|
||||
orderBy={this.props.orderBy}
|
||||
applyOrderBy={this.props.applyOrderBy}/>
|
||||
);
|
||||
}
|
||||
return null;
|
||||
},
|
||||
|
||||
render() {
|
||||
const { className, children, searchFor, searchQuery } = this.props;
|
||||
|
||||
@ -75,8 +51,14 @@ let PieceListToolbar = React.createClass({
|
||||
{children}
|
||||
</span>
|
||||
<span className="pull-right">
|
||||
{this.getOrderWidget()}
|
||||
{this.getFilterWidget()}
|
||||
<PieceListToolbarOrderWidget
|
||||
orderParams={this.props.orderParams}
|
||||
orderBy={this.props.orderBy}
|
||||
applyOrderBy={this.props.applyOrderBy}/>
|
||||
<PieceListToolbarFilterWidget
|
||||
filterParams={this.props.filterParams}
|
||||
filterBy={this.props.filterBy}
|
||||
applyFilterBy={this.props.applyFilterBy} />
|
||||
</span>
|
||||
<SearchBar
|
||||
className="pull-right search-bar ascribe-input-glyph"
|
||||
|
@ -30,15 +30,15 @@ let PieceListToolbarFilterWidget = React.createClass({
|
||||
generateFilterByStatement(param) {
|
||||
const filterBy = Object.assign({}, this.props.filterBy);
|
||||
|
||||
if(filterBy) {
|
||||
if (filterBy) {
|
||||
// we need hasOwnProperty since the values are all booleans
|
||||
if(filterBy.hasOwnProperty(param)) {
|
||||
if (filterBy.hasOwnProperty(param)) {
|
||||
filterBy[param] = !filterBy[param];
|
||||
|
||||
// if the parameter is false, then we want to remove it again
|
||||
// from the list of queryParameters as this component is only about
|
||||
// which actions *CAN* be done and not what *CANNOT*
|
||||
if(!filterBy[param]) {
|
||||
if (!filterBy[param]) {
|
||||
delete filterBy[param];
|
||||
}
|
||||
|
||||
@ -66,7 +66,7 @@ let PieceListToolbarFilterWidget = React.createClass({
|
||||
|
||||
// We're hiding the star in that complicated matter so that,
|
||||
// the surrounding button is not resized up on appearance
|
||||
if(trueValuesOnly.length > 0) {
|
||||
if (trueValuesOnly.length) {
|
||||
return { visibility: 'visible'};
|
||||
} else {
|
||||
return { visibility: 'hidden' };
|
||||
@ -81,7 +81,7 @@ let PieceListToolbarFilterWidget = React.createClass({
|
||||
</span>
|
||||
);
|
||||
|
||||
if(this.props.filterParams.length) {
|
||||
if (this.props.filterParams && this.props.filterParams.length) {
|
||||
return (
|
||||
<DropdownButton
|
||||
pullRight={true}
|
||||
@ -108,7 +108,7 @@ let PieceListToolbarFilterWidget = React.createClass({
|
||||
// }
|
||||
//
|
||||
// This is why we need to distinguish between both here.
|
||||
if(typeof param !== 'string') {
|
||||
if (typeof param !== 'string') {
|
||||
label = param.label;
|
||||
param = param.key;
|
||||
} else {
|
||||
|
@ -37,7 +37,7 @@ let PieceListToolbarOrderWidget = React.createClass({
|
||||
isOrderActive() {
|
||||
// We're hiding the star in that complicated matter so that,
|
||||
// the surrounding button is not resized up on appearance
|
||||
if(this.props.orderBy.length > 0) {
|
||||
if (this.props.orderBy && this.props.orderBy.length) {
|
||||
return { visibility: 'visible'};
|
||||
} else {
|
||||
return { visibility: 'hidden' };
|
||||
@ -51,37 +51,41 @@ let PieceListToolbarOrderWidget = React.createClass({
|
||||
<span style={this.isOrderActive()}>·</span>
|
||||
</span>
|
||||
);
|
||||
return (
|
||||
|
||||
<DropdownButton
|
||||
pullRight={true}
|
||||
title={filterIcon}
|
||||
className="ascribe-piece-list-toolbar-filter-widget">
|
||||
<li style={{'textAlign': 'center'}}>
|
||||
<em>{getLangText('Sort by')}:</em>
|
||||
</li>
|
||||
{this.props.orderParams.map((param) => {
|
||||
return (
|
||||
<div>
|
||||
<li
|
||||
key={param}
|
||||
onClick={this.orderBy(param)}
|
||||
className="filter-widget-item">
|
||||
<div className="checkbox-line">
|
||||
<span>
|
||||
{getLangText(param.replace('_', ' '))}
|
||||
</span>
|
||||
<input
|
||||
readOnly
|
||||
type="radio"
|
||||
checked={param.indexOf(this.props.orderBy) > -1} />
|
||||
</div>
|
||||
</li>
|
||||
</div>
|
||||
);
|
||||
})}
|
||||
</DropdownButton>
|
||||
);
|
||||
if (this.props.orderParams && this.props.orderParams.length) {
|
||||
return (
|
||||
<DropdownButton
|
||||
pullRight={true}
|
||||
title={filterIcon}
|
||||
className="ascribe-piece-list-toolbar-filter-widget">
|
||||
<li style={{'textAlign': 'center'}}>
|
||||
<em>{getLangText('Sort by')}:</em>
|
||||
</li>
|
||||
{this.props.orderParams.map((param) => {
|
||||
return (
|
||||
<div>
|
||||
<li
|
||||
key={param}
|
||||
onClick={this.orderBy(param)}
|
||||
className="filter-widget-item">
|
||||
<div className="checkbox-line">
|
||||
<span>
|
||||
{getLangText(param.replace('_', ' '))}
|
||||
</span>
|
||||
<input
|
||||
readOnly
|
||||
type="radio"
|
||||
checked={param.indexOf(this.props.orderBy) > -1} />
|
||||
</div>
|
||||
</li>
|
||||
</div>
|
||||
);
|
||||
})}
|
||||
</DropdownButton>
|
||||
);
|
||||
} else {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user