Skip to content

Commit

Permalink
create coves apis
Browse files Browse the repository at this point in the history
  • Loading branch information
samuelpucat committed Nov 4, 2018
1 parent ff6556e commit 5298d5c
Show file tree
Hide file tree
Showing 10 changed files with 306 additions and 221 deletions.
6 changes: 4 additions & 2 deletions pdt-marinehelper-client/src/app/components/Map.js
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,8 @@ const geojson = {

export const Map = createReactClass({
propTypes: {
geoJson: PropTypes.object
geoJson: PropTypes.object,
onClick: PropTypes.func
},

render() {
Expand All @@ -68,9 +69,10 @@ export const Map = createReactClass({
}}
onClick={(map, evt) => {
console.log(evt);
this.props.onClick(evt);
}}
onMouseMove={(map, evt) => {
console.log(evt);
//console.log(evt);
}}
>
<ZoomControl />
Expand Down
212 changes: 103 additions & 109 deletions pdt-marinehelper-client/src/app/components/Scenario.js
Original file line number Diff line number Diff line change
Expand Up @@ -5,16 +5,26 @@ import axios from "axios";
import "./Scenario.css";

import { Map } from "./Map";
import { Grid, Col, Row} from "react-bootstrap";
import { Grid, Col, Row } from "react-bootstrap";
import { PageHeader, Checkbox } from "react-bootstrap";
import { Form, FormGroup, ControlLabel, FormControl, Button, InputGroup } from "react-bootstrap";
import {
Form,
FormGroup,
ControlLabel,
FormControl,
Button,
InputGroup
} from "react-bootstrap";

export const Scenario = createReactClass({
getInitialState() {
let scenario = this._getScenario();
return {
scenario,
open: false
open: false,
activated: null,
startPosition: {},
endPosition: {}
};
},

Expand Down Expand Up @@ -46,7 +56,25 @@ export const Scenario = createReactClass({
return parsedUrl.searchParams.get("scenario");
},

_handleMapClick(evt) {
if (this.state.activated !== null) {
if (this.state.activated === 1) {
this.setState({
startPosition: evt.lngLat,
activated: null
});
}
if (this.state.activated === 2) {
this.setState({
endPosition: evt.lngLat,
activated: null
});
}
}
},

render() {
console.log(this.state.startPosition, this.state.endPosition);
let controls = null;
const scenario = this.state.scenario;
switch (scenario) {
Expand All @@ -59,109 +87,83 @@ export const Scenario = createReactClass({
<PageHeader>{"Harbours"}</PageHeader>
</Row>
<Row>
<Checkbox>
{"Toilets"}
</Checkbox>
<Checkbox>
{"Showers"}
</Checkbox>
<Checkbox>
{"Electricity"}
</Checkbox>
<Checkbox>
{"Fuel station"}
</Checkbox>
<Checkbox>
{"Chandler"}
</Checkbox>
<Checkbox>
{"Laundrette"}
</Checkbox>
<Checkbox>
{"Boatyard"}
</Checkbox>
<Checkbox>
{"Slipway"}
</Checkbox>
<Checkbox>
{"Boat hoist"}
</Checkbox>
<Checkbox>
{"Visitor berth"}
</Checkbox>
<Checkbox>{"Toilets"}</Checkbox>
<Checkbox>{"Showers"}</Checkbox>
<Checkbox>{"Electricity"}</Checkbox>
<Checkbox>{"Fuel station"}</Checkbox>
<Checkbox>{"Chandler"}</Checkbox>
<Checkbox>{"Laundrette"}</Checkbox>
<Checkbox>{"Boatyard"}</Checkbox>
<Checkbox>{"Slipway"}</Checkbox>
<Checkbox>{"Boat hoist"}</Checkbox>
<Checkbox>{"Visitor berth"}</Checkbox>
</Row>
</Col>
</Grid>
</div>
);
break;
case "dangers":
case "dangers":
controls = (
<div className="scenario-controls">
<Grid fluid={true}>
<Col xs={12}>
<Row>
<PageHeader>{"Dangers"}</PageHeader>
</Row>
<Row>
<h2>{"Select line of your cruise"}</h2>
<Form horizontal>
<InputGroup>
<InputGroup.Addon>1</InputGroup.Addon>
<FormControl type="text" />
<InputGroup.Button style={{width: "0"}} />
<FormControl type="text" />
<InputGroup.Button>
<Button>select</Button>
</InputGroup.Button>
</InputGroup>
<InputGroup>
<InputGroup.Addon>2</InputGroup.Addon>
<FormControl type="text" />
<InputGroup.Button style={{width: "0"}} />
<FormControl type="text" />
<InputGroup.Button>
<Button>select</Button>
</InputGroup.Button>
</InputGroup>
</Form>
</Row>
<Row>
<h2>{"Choose dangers to show"}</h2>
<Checkbox>
{"Isolated dangers"}
</Checkbox>
<Checkbox>
{"Beacons"}
</Checkbox>
<Checkbox>
{"Rocks"}
</Checkbox>
<Checkbox>
{"Buoys"}
</Checkbox>
<Checkbox>
{"Wrecks"}
</Checkbox>
<Checkbox>
{"Cardinal signs"}
</Checkbox>
<Checkbox>
{"Special purpose signs"}
</Checkbox>
<Checkbox>
{"Lights"}
</Checkbox>
<Checkbox>
{"Coast lines"}
</Checkbox>
</Row>
</Col>
</Grid>
</div>
<Grid fluid={true}>
<Col xs={12}>
<Row>
<PageHeader>{"Dangers"}</PageHeader>
</Row>
<Row>
<h2>{"Select line of your cruise"}</h2>
<Form horizontal>
<InputGroup>
<InputGroup.Addon>1</InputGroup.Addon>
<FormControl type="text" />
<InputGroup.Button style={{ width: "0" }} />
<FormControl type="text" />
<InputGroup.Button>
<Button
onClick={() => {
this.setState({ activated: 1 });
}}
>
select
</Button>
</InputGroup.Button>
</InputGroup>
<InputGroup>
<InputGroup.Addon>2</InputGroup.Addon>
<FormControl type="text" />
<InputGroup.Button style={{ width: "0" }} />
<FormControl type="text" />
<InputGroup.Button>
<Button
onClick={() => {
this.setState({ activated: 2 });
}}
>
select
</Button>
</InputGroup.Button>
</InputGroup>
</Form>
</Row>
<Row>
<h2>{"Choose dangers to show"}</h2>
<Checkbox>{"Isolated dangers"}</Checkbox>
<Checkbox>{"Beacons"}</Checkbox>
<Checkbox>{"Rocks"}</Checkbox>
<Checkbox>{"Buoys"}</Checkbox>
<Checkbox>{"Wrecks"}</Checkbox>
<Checkbox>{"Cardinal signs"}</Checkbox>
<Checkbox>{"Special purpose signs"}</Checkbox>
<Checkbox>{"Lights"}</Checkbox>
<Checkbox>{"Coast lines"}</Checkbox>
</Row>
</Col>
</Grid>
</div>
);
break;
case "coves":
case "coves":
controls = (
<div className="scenario-controls">
<Grid fluid={true}>
Expand All @@ -170,18 +172,10 @@ export const Scenario = createReactClass({
<PageHeader>{"Coves"}</PageHeader>
</Row>
<Row>
<Checkbox>
{"Anchorages"}
</Checkbox>
<Checkbox>
{"Moorings"}
</Checkbox>
<Checkbox>
{"Show underwater cables/pipes"}
</Checkbox>
<Checkbox>
{"Show restricted areas"}
</Checkbox>
<Checkbox>{"Anchorages"}</Checkbox>
<Checkbox>{"Moorings"}</Checkbox>
<Checkbox>{"Show underwater cables/pipes"}</Checkbox>
<Checkbox>{"Show restricted areas"}</Checkbox>
</Row>
</Col>
</Grid>
Expand All @@ -195,7 +189,7 @@ export const Scenario = createReactClass({
<div className="scenario">
{controls}

<Map geoJson={this.state.geoJson} />
<Map geoJson={this.state.geoJson} onClick={this._handleMapClick} />
</div>
);
}
Expand Down
94 changes: 94 additions & 0 deletions pdt-marinehelper-server/api/controllers/covesController.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,94 @@
const db = require("../../db");

exports.getAllAnchorages = (req, res, next) => {
const SELECT_ANCHORAGES_QUERY =
'SELECT osm_id, "seamark:type", "seamark:name", "seamark:anchorage:category", ST_AsGeoJSON(ST_Transform(way, 4326)) AS geojson ' +
"FROM planet_osm_point " +
"WHERE \"seamark:type\" = 'anchorage'";

db.query(SELECT_ANCHORAGES_QUERY, [], (err, res1) => {
if (err) {
return next(err);
}

const result = res1.rows.map(row => {
const geojson = JSON.parse(row.geojson);
return { ...row, geojson };
});

res.status(200).json({
message: "anchorages fetched",
result: result,
error: err
});
});
};

exports.getAllMoorings = (req, res, next) => {
const SELECT_MOORINGS_QUERY =
'SELECT osm_id, "seamark:type", "seamark:name", ST_AsGeoJSON(ST_Transform(way, 4326)) as geojson ' +
"FROM planet_osm_point " +
"WHERE \"seamark:type\" = 'mooring'";

db.query(SELECT_MOORINGS_QUERY, [], (err, res1) => {
if (err) {
return next(err);
}

const result = res1.rows.map(row => {
const geojson = JSON.parse(row.geojson);
return { ...row, geojson };
});

res.status(200).json({
message: "moorings fetched",
result: result,
error: err
});
});
};

exports.getAllRestrictedAreas = (req, res, next) => {
const SELECT_RESTRICTED_AREAS_QUERY = "";

db.query(SELECT_RESTRICTED_AREAS_QUERY, [], (err, res1) => {
if (err) {
return next(err);
}

const result = res1.rows.map(row => {
const geojson = JSON.parse(row.geojson);
return { ...row, geojson };
});

res.status(200).json({
message: "restricted areas fetched",
result: result,
error: err
});
});
};

exports.getAllUnderwaterCablesAndPipes = (req, res, next) => {
const SELECT_UNDERWATER_CABLES_AND_PIPES_QUERY =
'SELECT osm_id, "seamark:type", "seamark:name", ST_AsGeoJSON(ST_Transform(way, 4326)) as geojson ' +
"FROM planet_osm_line " +
"WHERE \"seamark:type\" = 'pipeline_submarine' OR \"seamark:type\" = 'cable_submarine'";

db.query(SELECT_UNDERWATER_CABLES_AND_PIPES_QUERY, [], (err, res1) => {
if (err) {
return next(err);
}

const result = res1.rows.map(row => {
const geojson = JSON.parse(row.geojson);
return { ...row, geojson };
});

res.status(200).json({
message: "underwater cables and pipes fetched",
result: result,
error: err
});
});
};
Loading

0 comments on commit 5298d5c

Please sign in to comment.