colouring-montreal/app/src/frontend/building-view.js

101 lines
4.4 KiB
JavaScript
Raw Normal View History

import React from 'react';
import { Link, NavLink } from 'react-router-dom';
2018-09-11 15:59:59 -04:00
import Sidebar from './sidebar';
import Tooltip from './tooltip';
2018-09-13 15:41:42 -04:00
import InfoBox from './info-box';
2018-09-11 15:59:59 -04:00
const DataSection = function(props){
const match = props.hash && props.slug.match(props.hash);
return (
<section className="data-section">
<NavLink className="bullet-prefix" to={(match)? '#': `#${props.slug}`}
isActive={() => match}>
<h3 className="h3">{props.title}</h3>
</NavLink>
{ (match)? props.children : null }
</section>
);
}
2018-09-13 15:41:42 -04:00
const BuildingView = function(props){
2018-09-30 16:54:47 -04:00
if (!props.building_id){
2018-09-13 15:41:42 -04:00
return (
<Sidebar title="Building Not Found">
<InfoBox msg="We can't find that one anywhere - try the map again?" />
<div className="buttons-container">
<Link to="/map/date_year.html" className="btn btn-secondary">Back to maps</Link>
</div>
</Sidebar>
);
}
const hash = (props.location && props.location.hash)? props.location.hash.replace('#', ''): undefined;
2018-09-13 15:41:42 -04:00
return (
2018-09-30 16:54:47 -04:00
<Sidebar title={`View Building`}>
<DataSection title="Location" slug="location" hash={hash}>
<p className="data-intro">
Section introduction of up to roughly 100 characters will take
approx&shy;imately this much space.
<a href="/">Read more</a>.
</p>
<dl id="data-list-location" className="data-list collapse show">
<dt>
Building Name
<Tooltip text="Hint tooltip content should be ~40 chars." />
</dt>
<dd>{props.location_name ? props.location_name : '-'}</dd>
<dt>Building Number</dt>
<dd>{props.location_number ? props.location_number : '-'}</dd>
<dt>Street</dt>
<dd>{props.location_street ? props.location_street : '-'}</dd>
<dt>Address line 2</dt>
<dd>{props.location_line_two ? props.location_line_two : '-'}</dd>
<dt>Town</dt>
<dd>{props.location_town ? props.location_town : '-'}</dd>
<dt>Postcode</dt>
<dd>{props.location_postcode ? props.location_postcode : '-'}</dd>
</dl>
</DataSection>
<DataSection title="Age" slug="age" hash={hash}>
2018-09-13 15:41:42 -04:00
<dl className="data-list">
<dt>Year built (best estimate)</dt>
<dd>{props.date_year? props.date_year : '-'}</dd>
<dt>Year built (lower estimate)</dt>
<dd>{props.date_lower? props.date_lower : '-'}</dd>
<dt>Year built (upper estimate)</dt>
<dd>{props.date_upper? props.date_upper : '-'}</dd>
<dt>Date Source</dt>
<dd>{props.date_source? props.date_source : '-'}</dd>
<dt>Facade date</dt>
<dd>{props.date_facade? props.date_facade : '-'}</dd>
</dl>
</DataSection>
<DataSection title="Size" slug="size" hash={hash}>
2018-09-13 15:41:42 -04:00
<dl className="data-list">
<dt>Attic storeys</dt>
2018-09-30 18:06:30 -04:00
<dd>{props.size_storeys_attic? props.size_storeys_attic : '-'}</dd>
2018-09-13 15:41:42 -04:00
<dt>Core storeys</dt>
2018-09-30 18:06:30 -04:00
<dd>{props.size_storeys_core? props.size_storeys_core : '-'}</dd>
2018-09-13 15:41:42 -04:00
<dt>Basement storeys</dt>
2018-09-30 18:06:30 -04:00
<dd>{props.size_storeys_basement? props.size_storeys_basement : '-'}</dd>
2018-09-13 15:41:42 -04:00
</dl>
</DataSection>
<DataSection title="Like Me!" slug="like" hash={hash}>
2018-09-13 15:41:42 -04:00
<dl className="data-list">
<dt>Likes</dt>
<dd>{props.likes ? props.likes.length : 0}</dd>
</dl>
</DataSection>
2018-09-13 15:41:42 -04:00
<div className="buttons-container">
<Link to="/map/date_year.html" className="btn btn-secondary">Back to maps</Link>
2018-09-30 16:54:47 -04:00
<Link to={`/building/${props.building_id}/edit.html`} className="btn btn-primary">Edit data</Link>
2018-09-13 15:41:42 -04:00
</div>
</Sidebar>
);
}
export default BuildingView;