Skip to content

Commit

Permalink
Responsive Grid
Browse files Browse the repository at this point in the history
  • Loading branch information
Nathan Trost authored and Nathan Trost committed May 16, 2016
1 parent d0b3303 commit 8e94b80
Show file tree
Hide file tree
Showing 7 changed files with 309 additions and 132 deletions.
3 changes: 3 additions & 0 deletions src/app/components/navigation.js
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,9 @@ class Navigation extends React.Component {
<MenuItem href="/charts" >
Charts
</MenuItem>
<MenuItem href="/reddit" >
Reddit
</MenuItem>
</Nav>
</Navbar>
);
Expand Down
2 changes: 2 additions & 0 deletions src/app/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ import AppTextFields from './pages/AppTextFields';
import AppLinkedItems from './pages/AppLinkedItems';
import AppAlerts from './pages/AppAlerts';
import AppGriddle from './pages/AppGriddle';
import AppGriddleReddit from './pages/AppGriddleReddit';


// Render the main app react component into the app div.
Expand All @@ -26,6 +27,7 @@ ReactDOM.render((
<Route path="/linked-items" component={AppLinkedItems} />
<Route path="/alerts" component={AppAlerts} />
<Route path="/charts" component={AppGriddle} />
<Route path="/reddit" component={AppGriddleReddit} />
</Route>
</Router>
), document.getElementById('app'));
175 changes: 175 additions & 0 deletions src/app/pages/AppGriddleReddit.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,175 @@
import React from 'react';
import ReactDOM from 'react-dom';

//Bootstrap Components
import { Panel, Thumbnail, Glyphicon } from 'react-bootstrap';

//Griddle Components
import Griddle from 'griddle-react';

//Griddle Custom Components
import GriddleResponsiveHeader from '../components/griddle-responsive-header';
import GriddleCell from '../components/griddle-cell';
import GriddleAvatar from '../components/griddle-avatar';
import GriddleNameLink from '../components/griddle-name-link';
import GriddleCustomHeader from '../components/griddle-custom-header';
import GriddleCustomPager from '../components/griddle-custom-pager';

const users = require('../api/users').users;

const sortName = function(name){
let a = name.split(" ");
if(a.length <= 2){
return a[1] + " " + a[0];
}
else{
return a[2] + " " + a[0] + " " + a[1];
}
};

const sortAge = function(age){
const getAge = (age !== "unknown") ? age: "200";
return getAge;
};


const columnMeta = [
{
"columnName": "id",
"order": 1,
"sortable": true,
"locked": false,
"visible": true,
"customComponent": GriddleResponsiveHeader,
"responsiveHeaderProps": { "right": "name" },
"displayName": "ID",
"customHeaderComponent": GriddleCustomHeader,
"customHeaderComponentProps": { "sortable" : true },
"cssClassName": "griddle__column--id"
},
{
"columnName": "avatar",
"order": 2,
"locked": false,
"visible": true,
"customComponent": GriddleAvatar,
"sortable": false,
"displayName": "Avatar",
"customHeaderComponent": GriddleCustomHeader,
"customHeaderComponentProps": { "sortable" : false },
"cssClassName": "griddle__column--avatar"
},
{
"columnName": "name",
"order": 3,
"locked": false,
"visible": true,
"customComponent": GriddleNameLink,
"customComponentLinkSrc": "link",
"displayName": "Name",
"compare": sortName,
"customHeaderComponent": GriddleCustomHeader,
"customHeaderComponentProps": { "sortable" : true },
"cssClassName": "griddle__column--name"
},
{
"columnName": "age",
"order": 4,
"locked": false,
"visible": true,
"customComponent": GriddleCell,
"displayName": "Age",
"compare": sortAge,
"customHeaderComponent": GriddleCustomHeader,
"customHeaderComponentProps": { "sortable" : true },
"cssClassName": "griddle__column--age"
},
{
"columnName": "trade",
"order": 5,
"locked": false,
"visible": true,
"customComponent": GriddleCell,
"displayName": "Trade",
"customHeaderComponent": GriddleCustomHeader,
"customHeaderComponentProps": { "sortable" : true },
"cssClassName": "griddle__column--trade"
},
{
"columnName": "bestknownfor",
"order": 6,
"locked": false,
"visible": true,
"customComponent": GriddleCell,
"sortable": false,
"displayName": "Best Known For",
"customHeaderComponent": GriddleCustomHeader,
"customHeaderComponentProps": { "sortable" : false },
"cssClassName": "griddle__column--known"
},
{
"columnName": "lastseen",
"order": 7,
"locked": false,
"visible": true,
"customComponent": GriddleCell,
"displayName": "Last Seen",
"customHeaderComponent": GriddleCustomHeader,
"customHeaderComponentProps": { "sortable" : true },
"cssClassName": "griddle__column--last-ref"
},
{
"columnName": "link",
"order": 8,
"locked": true,
"visible": false
}
];



class AppGriddleReddit extends React.Component {
constructor(props){
super(props);
}


render() {
return (
<div>
<h2>Griddle</h2>
<Panel>
<Griddle
useGriddleStyles={false}
tableClassName="griddle-test-table"
results={users}

columnMetadata={columnMeta}

columns={[ "id", "avatar", "name", "age", "trade", "bestknownfor", "lastseen"]}
initialSort="name"
sortAscendingComponent={<small className="griddle__header-sort-icon"><Glyphicon glyph="chevron-up" /></small>}
sortDescendingComponent={<small className="griddle__header-sort-icon"><Glyphicon glyph="chevron-down" /></small>}

nextIconComponent={<Glyphicon glyph="chevron-right" />}
previousIconComponent={<Glyphicon glyph="chevron-left" />}
settingsToggleClassName="btn btn-primary"

nextText={""}
previousText={""}

useCustomPagerComponent={true}
customPagerComponent={GriddleCustomPager}

showFilter={true}
showSettings={true}

/>
</Panel>
</div>
);
}
}


export default AppGriddleReddit;
Binary file not shown.
61 changes: 30 additions & 31 deletions src/www/bootstrap-sass/css/styles.css

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion src/www/bootstrap-sass/css/styles.css.map

Large diffs are not rendered by default.

Loading

0 comments on commit 8e94b80

Please sign in to comment.