Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
  • Loading branch information
istarkov committed Jun 15, 2015
1 parent 13ed2c7 commit 7a9befc
Show file tree
Hide file tree
Showing 9 changed files with 142 additions and 16 deletions.
3 changes: 2 additions & 1 deletion .gitignore
Expand Up @@ -12,4 +12,5 @@ web/log_inotify.txt
/node_modules
/data
npm-debug.log
/api
/api
/web/tmp
7 changes: 4 additions & 3 deletions make-webpack-config.js
Expand Up @@ -18,17 +18,18 @@ module.exports = (options) => {
let root = path.join(__dirname, `${webDir}/flux`);
let jsRoot = path.join(__dirname, `${webDir}`);

let modulesDirectories = ['node_modules', 'flux', 'assets'];
let modulesDirectories = ['web/tmp', 'node_modules', 'flux', 'assets'];

const babelLoaderString = 'babel-loader?stage=0' + (options.prerender ? '' : '&externalHelpers');
const babelLoaderStringFinal = options.hotComponents ? `react-hot-loader!${babelLoaderString}` : babelLoaderString;

let loaders = {
'jsx': {
loader: options.hotComponents ? `react-hot-loader!${babelLoaderString}` : babelLoaderString,
loader: babelLoaderStringFinal,
include: [jsRoot]
},
'js': {
loader: babelLoaderString,
loader: babelLoaderStringFinal,
include: [jsRoot]
},
'json': 'json-loader',
Expand Down
25 changes: 14 additions & 11 deletions package.json
Expand Up @@ -7,26 +7,26 @@
"async": "^0.9.2",
"async-decorators": "^0.1.3",
"autoprefixer-loader": "^1.2.0",
"babel": "^5.5.5",
"babel-core": "^5.5.5",
"babel": "^5.5.8",
"babel-core": "^5.5.8",
"babel-eslint": "^3.1.14",
"babel-loader": "^5.1.4",
"body-parser": "^1.12.4",
"body-parser": "^1.13.0",
"classnames": "^1.2.2",
"cookie-parser": "^1.3.5",
"cookie-session": "^1.0.2",
"css-loader": "^0.9.0",
"dot": "^1.0.3",
"eslint": "^0.20.0",
"eslint-plugin-react": "^2.5.0",
"eventemitter3": "^1.1.0",
"eslint-plugin-react": "^2.5.2",
"eventemitter3": "^1.1.1",
"express": "^4.12.3",
"extract-text-webpack-plugin": "^0.3.5",
"faker": "^2.1.4",
"faker": "^2.1.5",
"file-loader": "^0.8.4",
"flummox": "^4.0.0-rc1",
"fs-loader": "0.0.1",
"google-map-react": "^0.3.0",
"google-map-react": "^0.3.1",
"html-hint": "^0.0.2",
"html-loader": "^0.2.2",
"immutable": "^3.7.3",
Expand All @@ -38,14 +38,17 @@
"less-loader": "^2.0.0",
"loader-utils": "^0.2.9",
"lodash": "^3.9.3",
"lodash.isfunction": "^3.0.5",
"lodash.isplainobject": "^3.1.0",
"lodash.pick": "^3.1.0",
"lru-cache": "^2.3.1",
"method-override": "^2.3.2",
"mkdirp": "^0.3.5",
"moment": "^2.10.3",
"morgan": "^1.5.3",
"morgan": "^1.6.0",
"multiline": "^0.3.4",
"node-fetch": "^1.3.0",
"node-sass": "^3.1.2",
"node-sass": "^3.2.0",
"node-uuid": "~1.4.0",
"null-loader": "^0.1.0",
"optimist": "^0.6.1",
Expand All @@ -55,7 +58,7 @@
"react-controllables": "^0.3.3",
"react-hot-loader": "^1.0.0",
"react-proxy-loader": "^0.3.1",
"react-pure-render": "^1.0.1",
"react-pure-render": "^1.0.2",
"sass-imports": "0.0.1",
"sass-loader": "0.4.2",
"scriptjs": "^2.5.7",
Expand All @@ -64,7 +67,7 @@
"underscore": "^1.8.3",
"url-loader": "^0.5.6",
"uuid": "^2.0.1",
"webpack": "^1.9.10",
"webpack": "^1.9.11",
"webpack-dev-server": "^1.9.0",
"yargs": "^1.3.3"
},
Expand Down
2 changes: 1 addition & 1 deletion scripts/gh-pages-generator.sh
Expand Up @@ -14,7 +14,7 @@ DIR="$( cd -P "$( dirname "$SOURCE" )" && pwd )"
cd $DIR/../build
rm -rf gh-pages

EXAMPLES=(main simple simple_hover distance_hover events balderdash)
EXAMPLES=(main simple options simple_hover distance_hover events balderdash)

for EXAMPLE in ${EXAMPLES[@]}; do
mkdir -p "gh-pages/map/${EXAMPLE}"
Expand Down
26 changes: 26 additions & 0 deletions web/flux/components/examples/x_options/my_great_place.jsx
@@ -0,0 +1,26 @@
import React, {PropTypes, Component} from 'react/addons';
import shouldPureComponentUpdate from 'react-pure-render/function';

import {greatPlaceStyle} from './my_great_place_styles.js';

export default class MyGreatPlace extends Component {
static propTypes = {
text: PropTypes.string
};

static defaultProps = {};

shouldComponentUpdate = shouldPureComponentUpdate;

constructor(props) {
super(props);
}

render() {
return (
<div style={greatPlaceStyle}>
{this.props.text}
</div>
);
}
}
23 changes: 23 additions & 0 deletions web/flux/components/examples/x_options/my_great_place_styles.js
@@ -0,0 +1,23 @@
const K_WIDTH = 40;
const K_HEIGHT = 40;

const greatPlaceStyle = {
// initially any map object has left top corner at lat lng coordinates
// it's on you to set object origin to 0,0 coordinates
position: 'absolute',
width: K_WIDTH,
height: K_HEIGHT,
left: -K_WIDTH / 2,
top: -K_HEIGHT / 2,

border: '5px solid #f44336',
borderRadius: K_HEIGHT,
backgroundColor: 'white',
textAlign: 'center',
color: '#3f51b5',
fontSize: 16,
fontWeight: 'bold',
padding: 4
};

export {greatPlaceStyle};
60 changes: 60 additions & 0 deletions web/flux/components/examples/x_options/options_map_page.jsx
@@ -0,0 +1,60 @@
/*
* Base Google Map example
*/
import React, {PropTypes, Component} from 'react/addons';
import shouldPureComponentUpdate from 'react-pure-render/function';

import GoogleMap from 'google-map-react';
import MyGreatPlace from './my_great_place.jsx';

function createMapOptions(maps) {
// next props are exposed at maps
// "Animation", "ControlPosition", "MapTypeControlStyle", "MapTypeId",
// "NavigationControlStyle", "ScaleControlStyle", "StrokePosition", "SymbolPath", "ZoomControlStyle",
// "DirectionsStatus", "DirectionsTravelMode", "DirectionsUnitSystem", "DistanceMatrixStatus",
// "DistanceMatrixElementStatus", "ElevationStatus", "GeocoderLocationType", "GeocoderStatus", "KmlLayerStatus",
// "MaxZoomStatus", "StreetViewStatus", "TransitMode", "TransitRoutePreference", "TravelMode", "UnitSystem"
return {
zoomControlOptions: {
position: maps.ControlPosition.RIGHT_CENTER,
style: maps.ZoomControlStyle.SMALL
},
mapTypeControlOptions: {
position: maps.ControlPosition.TOP_RIGHT
},
mapTypeControl: true
};
}

export default class SimpleMapPage extends Component {
static propTypes = {
center: PropTypes.array,
zoom: PropTypes.number,
greatPlaceCoords: PropTypes.any
};

static defaultProps = {
center: [59.938043, 30.337157],
zoom: 9,
greatPlaceCoords: {lat: 59.724465, lng: 30.080121}
};

shouldComponentUpdate = shouldPureComponentUpdate;

constructor(props) {
super(props);
}

render() {
return (
<GoogleMap
// apiKey={YOUR_GOOGLE_MAP_API_KEY} // set if you need stats etc ...
center={this.props.center}
zoom={this.props.zoom}
options={createMapOptions}>
<MyGreatPlace lat={59.955413} lng={30.337844} text={'A'} /* Kreyser Avrora */ />
<MyGreatPlace {...this.props.greatPlaceCoords} text={'B'} /* road circle */ />
</GoogleMap>
);
}
}
6 changes: 6 additions & 0 deletions web/flux/components/main.jsx
Expand Up @@ -7,6 +7,7 @@ import {FluxComponent} from 'flummox/addons/react';

import MainMapPage from './examples/x_main/main_map_page.jsx';
import SimpleMapPage from './examples/x_simple/simple_map_page.jsx';
import OptionsMapPage from './examples/x_options/options_map_page.jsx';
import SimpleHoverMapPage from './examples/x_simple_hover/simple_hover_map_page.jsx';
import DistanceHoverMapPage from './examples/x_distance_hover/distance_hover_map_page.jsx';
import EventsMapPage from './examples/x_events/events_map_page.jsx';
Expand Down Expand Up @@ -44,6 +45,11 @@ export default class Main extends Component {
<SimpleMapPage />
);

case examples.options:
return (
<OptionsMapPage />
);

case examples.simple_hover:
return (
<SimpleHoverMapPage />
Expand Down
6 changes: 6 additions & 0 deletions web/flux/consts/example_defs.js
Expand Up @@ -24,6 +24,12 @@ const exampleDefs = {
source: K_EXAMPLES_SOURCE_ROOT + 'x_simple/simple_map_page.jsx'
},

options: {
title: 'CUSTOM MAP OPTIONS EXAMPLE',
info: 'Custom map options usage example.',
source: K_EXAMPLES_SOURCE_ROOT + 'x_options/options_map_page.jsx'
},

simple_hover: {
title: 'SIMPLE HOVER EXAMPLE',
info: 'Show base of internal hover algorithm.',
Expand Down

0 comments on commit 7a9befc

Please sign in to comment.