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