blob: 31978391dcb31089bf23164209c8975b41ee08db [file] [log] [blame]
// Licensed under the Apache License, Version 2.0 (the "License"); you may not
// use this file except in compliance with the License. You may obtain a copy of
// the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
// WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
// License for the specific language governing permissions and limitations under
// the License.
import React from 'react';
import TableRow from './TableRow';
import WrappedAutocomplete from './WrappedAutocomplete';
export default class TableView extends React.Component {
constructor (props) {
super(props);
}
getContentRows () {
const data = this.props.data.results;
const { textOverflow, fontSize } = this.props.resultsStyle;
return data.map(function (el, i) {
return (
<TableRow
onClick={this.props.onClick}
key={"tableview-row-component-" + i}
index={i}
el={el}
docIdentifier={el.id || "tableview-row-component-" + i}
docChecked={this.props.docChecked}
isSelected={this.props.isSelected(el.id)}
data={this.props.data}
textOverflow={textOverflow}
fontSize={fontSize} />
);
}.bind(this));
}
getOptionFieldRows (filtered) {
const notSelectedFields = this.props.data.notSelectedFields;
if (!notSelectedFields) {
return filtered.map(function (el, i) {
return <th key={'header-el-' + i}>{el}</th>;
});
}
return filtered.map(function (el, i) {
return (
<th key={'header-el-' + i}>
{this.getDropdown(
el,
this.props.data.schema,
i,
this.props.changeField,
this.props.data.selectedFields
)}
</th>
);
}.bind(this));
}
getDropdown (selectedField, notSelectedFields, i, changeField, selectedFields) {
return (
<WrappedAutocomplete
selectedField={selectedField}
notSelectedFields={notSelectedFields}
index={i}
changeField={changeField}
selectedFields={selectedFields} />
);
}
getHeader () {
const selectedFields = this.props.data.selectedFields;
const row = this.getOptionFieldRows(selectedFields);
return (
<tr key="tableview-content-row-header">
<th className="tableview-header-el-checkbox"></th>
<th className="tableview-el-copy"></th>
{row}
<th className="tableview-el-last"></th>
</tr>
);
}
render () {
return (
<div className="table-view-docs">
<table className="table table-striped">
<thead>
{this.getHeader()}
</thead>
<tbody>
{this.getContentRows()}
</tbody>
</table>
</div>
);
}
}