Skip to content
This repository was archived by the owner on Jun 27, 2023. It is now read-only.

Commit 4a6f461

Browse files
authored
Merge pull request #129 from bartvde/custom-theme
Allow passing in custom theme
2 parents 488bc4c + 08c0c6b commit 4a6f461

File tree

6 files changed

+41
-26
lines changed

6 files changed

+41
-26
lines changed

src/components/geonode.jsx

Lines changed: 23 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,7 @@ class GeoNodeViewer extends React.Component {
5656
getChildContext() {
5757
return {
5858
proxy: this.props.proxy,
59-
muiTheme: getMuiTheme()
59+
muiTheme: getMuiTheme(this.props.theme)
6060
};
6161
}
6262
componentWillMount() {
@@ -139,6 +139,7 @@ class GeoNodeViewer extends React.Component {
139139
GeoNodeViewer.props = {
140140
config: React.PropTypes.object,
141141
proxy: React.PropTypes.string,
142+
theme: React.PropTypes.object,
142143
mode: React.PropTypes.string,
143144
server: React.PropTypes.string,
144145
addLayerSources: React.PropTypes.arrayOf(React.PropTypes.shape({
@@ -150,6 +151,27 @@ GeoNodeViewer.props = {
150151
};
151152

152153
GeoNodeViewer.defaultProps = {
154+
theme: {
155+
floatingActionButton: {
156+
iconColor: '#fff',
157+
color: '#2c689c'
158+
},
159+
toolbar: {
160+
backgroundColor: '#333'
161+
},
162+
palette: {
163+
primary1Color: '#2c689c',
164+
primary2Color: '#2c689c',
165+
primary3Color: '#2c689c',
166+
accent1Color: '#2c689c',
167+
accent2Color: '#2c689c',
168+
accent3Color: '#2c689c',
169+
textColor: '#2E506D',
170+
secondaryTextColor: '#fff',
171+
alternateTextColor: '#fff',
172+
canvasColor: '#fff'
173+
}
174+
},
153175
printLayouts: [{"width": 297.0, "elements": [{"name": "Title", "height": 12.105490848585688, "width": 143.0648918469218, "y": 2.7512479201331113, "x": 5.777620632279534, "font": "", "type": "label", "id": "cc8bd50f36e44ac3a3e5daf48d038f7c", "size": 18}, {"height": 187.0, "width": 286.0, "grid": {"intervalX": 0.0, "intervalY": 0.0, "annotationEnabled": false, "crs": ""}, "y": 17.0, "x": 6.0, "type": "map", "id": "3bde6dd61cdf480eae1a67db59d74035"}], "thumbnail": "geonode_thumbnail.png", "name": "geonode", "height": 210.0}]
154176
};
155177

src/components/save.jsx

Lines changed: 2 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
import React from 'react';
22
import ol from 'openlayers';
3-
import getMuiTheme from 'material-ui/styles/getMuiTheme';
43
import Button from 'boundless-sdk/components/Button';
54
import classNames from 'classnames';
65
import SaveIcon from 'material-ui/svg-icons/content/save';
@@ -18,41 +17,25 @@ const messages = defineMessages({
1817
}
1918
});
2019
export class Save extends React.Component {
21-
constructor(props, context) {
20+
constructor(props) {
2221
super(props);
23-
this.state = {
24-
muiTheme: context.muiTheme || getMuiTheme()
25-
};
2622
}
2723
_openSaveModal() {
2824
this.props.save(getMapConfigFromMap(this.props.map));
2925
this.refs.savemapmodal.getWrappedInstance().refs.wrappedInstance.open();
3026
}
31-
getStyles() {
32-
const muiTheme = this.state.muiTheme;
33-
const rawTheme = muiTheme.rawTheme;
34-
return {
35-
root: Object.assign(this.props.style || {}, {
36-
background: rawTheme.palette.primary1Color
37-
})
38-
};
39-
}
4027
render() {
4128
const {formatMessage} = this.props.intl;
4229
const tooltip = formatMessage(messages.savetext);
4330
const icon = <SaveIcon/>;
44-
let styles = this.getStyles();
4531
return (
4632
<div className="save-item">
47-
<Button tooltipPosition={this.props.tooltipPosition} buttonType='Action' mini={true} secondary={true} className={classNames('geonode-save', this.props.className)} style={styles.root} tooltip={tooltip} onTouchTap={this._openSaveModal.bind(this)}>{icon}</Button>
33+
<Button tooltipPosition={this.props.tooltipPosition} buttonType='Action' mini={true} secondary={true} className={classNames('geonode-save', this.props.className)} tooltip={tooltip} onTouchTap={this._openSaveModal.bind(this)}>{icon}</Button>
4834
<SaveContainer ref='savemapmodal' />
4935
</div>
5036
);
5137
}
5238
}
53-
Save.contextTypes = {
54-
muiTheme: React.PropTypes.object
55-
};
5639
Save.propTypes = {
5740
save: React.PropTypes.func,
5841
map: React.PropTypes.instanceOf(ol.Map).isRequired,

src/components/saveContainer.jsx

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,8 +10,9 @@ import {connectAdvanced} from 'react-redux';
1010
import SaveView from './saveView';
1111

1212
export class SaveContainer extends React.Component {
13-
constructor(props) {
13+
constructor(props, context) {
1414
super(props);
15+
this._muiTheme = context.muiTheme || getMuiTheme();
1516
this.state = {
1617
error: false,
1718
errorOpen: false,
@@ -22,7 +23,7 @@ export class SaveContainer extends React.Component {
2223
};
2324
}
2425
getChildContext() {
25-
return {muiTheme: getMuiTheme()};
26+
return {muiTheme: this._muiTheme};
2627
}
2728
componentWillReceiveProps(nextProps) {
2829
if (nextProps.success && !nextProps.isSaving && !this.state.saved) {

src/components/saveView.jsx

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -55,16 +55,17 @@ const messages = defineMessages({
5555
});
5656

5757
export class SaveView extends React.Component {
58-
constructor(props) {
58+
constructor(props, context) {
5959
super(props);
60+
this._muiTheme = context.muiTheme || getMuiTheme();
6061
this.state = {
6162
open: this.props.open,
6263
maptititle: '',
6364
mapabstract: ''
6465
};
6566
}
6667
getChildContext() {
67-
return {muiTheme: getMuiTheme()};
68+
return {muiTheme: this._muiTheme};
6869
}
6970
componentWillReceiveProps(nextProps) {
7071
if (nextProps.titleError) {

src/composer.jsx

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ class Composer {
1919
this._proxy = options.proxy;
2020
this._mapId = options.mapId;
2121
this._printLayouts = options.printLayouts;
22+
this._theme = options.theme;
2223
}
2324
set server(value) {
2425
this._server = value;
@@ -35,11 +36,14 @@ class Composer {
3536
set printLayouts(value) {
3637
this._printLayouts = value;
3738
}
39+
set theme(value) {
40+
this._theme = value;
41+
}
3842
compose(layerSources) {
3943
store.dispatch(setServerUrl(this._server));
4044
store.dispatch(setMapId(this._mapId));
4145
store.dispatch(setMapConfig(this._mapConfig));
42-
ReactDOM.render(<Provider store={store}><IntlProvider locale='en' messages={enMessages}><GeonodeComposer printLayouts={this._printLayouts} addLayerSources={layerSources} mode='composer' config={this._mapConfig} proxy={this._proxy} /></IntlProvider></Provider>, document.getElementById(this._domId));
46+
ReactDOM.render(<Provider store={store}><IntlProvider locale='en' messages={enMessages}><GeonodeComposer theme={this._theme} printLayouts={this._printLayouts} addLayerSources={layerSources} mode='composer' config={this._mapConfig} proxy={this._proxy} /></IntlProvider></Provider>, document.getElementById(this._domId));
4347
}
4448
}
4549

src/viewer.jsx

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ class Viewer {
1111
this._proxy = options.proxy;
1212
this._zoomToLayer = options.zoomToLayer;
1313
this._printLayouts = options.printLayouts;
14+
this._theme = options.theme;
1415
}
1516
set mapConfig(value) {
1617
this._mapConfig = value;
@@ -24,8 +25,11 @@ class Viewer {
2425
set printLayouts(value) {
2526
this._printLayouts = value;
2627
}
28+
set theme(value) {
29+
this._theme = value;
30+
}
2731
view() {
28-
ReactDOM.render(<IntlProvider locale='en' messages={enMessages}><GeoNodeViewer printLayouts={this._printLayouts} zoomToLayer={this._zoomToLayer} config={this._mapConfig} proxy={this._proxy} /></IntlProvider>, document.getElementById(this._domId));
32+
ReactDOM.render(<IntlProvider locale='en' messages={enMessages}><GeoNodeViewer theme={this._theme} printLayouts={this._printLayouts} zoomToLayer={this._zoomToLayer} config={this._mapConfig} proxy={this._proxy} /></IntlProvider>, document.getElementById(this._domId));
2933
}
3034
}
3135

0 commit comments

Comments
 (0)