mirror of
https://github.com/fspc/workstand.git
synced 2025-02-23 01:13:22 -05:00
Basic reactjs support.
This commit is contained in:
parent
af1130de04
commit
ad0ad4eac8
41
bikeshop_project/assets/js/index.jsx
Normal file
41
bikeshop_project/assets/js/index.jsx
Normal file
@ -0,0 +1,41 @@
|
|||||||
|
import React from 'react';
|
||||||
|
import ReactDOM from 'react-dom';
|
||||||
|
import Autocomplete from 'react-toolbox/lib/autocomplete';
|
||||||
|
|
||||||
|
const source = {
|
||||||
|
'ES-es': 'Spain',
|
||||||
|
'TH-th': 'Thailand',
|
||||||
|
'EN-gb': 'England',
|
||||||
|
'EN-en': 'USA'
|
||||||
|
};
|
||||||
|
|
||||||
|
class AutocompleteTest extends React.Component {
|
||||||
|
state = {
|
||||||
|
countries: ['ES-es', 'TH-th']
|
||||||
|
};
|
||||||
|
|
||||||
|
handleChange = (value) => {
|
||||||
|
this.setState({countries: value});
|
||||||
|
};
|
||||||
|
|
||||||
|
render () {
|
||||||
|
return (
|
||||||
|
<Autocomplete
|
||||||
|
direction="down"
|
||||||
|
selectedPosition="above"
|
||||||
|
label="Choose countries"
|
||||||
|
onChange={this.handleChange}
|
||||||
|
source={source}
|
||||||
|
value={this.state.countries}
|
||||||
|
/>
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
class App extends React.Component {
|
||||||
|
render () {
|
||||||
|
return (<AutocompleteTest />)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
ReactDOM.render(<App />, document.getElementById('root'));
|
@ -29,7 +29,10 @@ INSTALLED_APPS = [
|
|||||||
'django.contrib.sessions',
|
'django.contrib.sessions',
|
||||||
'django.contrib.messages',
|
'django.contrib.messages',
|
||||||
'django.contrib.staticfiles',
|
'django.contrib.staticfiles',
|
||||||
|
|
||||||
|
'webpack_loader',
|
||||||
'compressor',
|
'compressor',
|
||||||
|
|
||||||
'registration',
|
'registration',
|
||||||
'core',
|
'core',
|
||||||
]
|
]
|
||||||
@ -120,6 +123,7 @@ STATICFILES_FINDERS = (
|
|||||||
)
|
)
|
||||||
STATICFILES_DIRS = [
|
STATICFILES_DIRS = [
|
||||||
('vendor', os.path.join(BASE_DIR, '../vendor')),
|
('vendor', os.path.join(BASE_DIR, '../vendor')),
|
||||||
|
os.path.join(BASE_DIR, '../assets')
|
||||||
]
|
]
|
||||||
STATIC_ROOT = 'static'
|
STATIC_ROOT = 'static'
|
||||||
STATIC_URL = '/static/'
|
STATIC_URL = '/static/'
|
||||||
@ -128,4 +132,14 @@ AUTH_USER_MODEL = 'registration.Member'
|
|||||||
|
|
||||||
COMPRESS_PRECOMPILERS = (
|
COMPRESS_PRECOMPILERS = (
|
||||||
('text/x-scss', 'django_libsass.SassCompiler'),
|
('text/x-scss', 'django_libsass.SassCompiler'),
|
||||||
)
|
)
|
||||||
|
|
||||||
|
WEBPACK_LOADER = {
|
||||||
|
'DEFAULT': {
|
||||||
|
'CACHE': False,
|
||||||
|
'BUNDLE_DIR_NAME': 'bundles/', # must end with slash
|
||||||
|
'STATS_FILE': os.path.join(BASE_DIR, '../webpack-stats.json'),
|
||||||
|
'POLL_INTERVAL': 0.1,
|
||||||
|
'IGNORE': ['.+\.hot-update.js', '.+\.map']
|
||||||
|
}
|
||||||
|
}
|
@ -53,4 +53,4 @@ INSTALLED_APPS += [
|
|||||||
# Don't worry about IP addresses, just show the toolbar.
|
# Don't worry about IP addresses, just show the toolbar.
|
||||||
DEBUG_TOOLBAR_CONFIG = {
|
DEBUG_TOOLBAR_CONFIG = {
|
||||||
'SHOW_TOOLBAR_CALLBACK': lambda *args: True
|
'SHOW_TOOLBAR_CALLBACK': lambda *args: True
|
||||||
}
|
}
|
@ -1,21 +1,5 @@
|
|||||||
{% load compress staticfiles %}
|
{% load compress staticfiles %}
|
||||||
<!doctype html>
|
<!DOCTYPE html>
|
||||||
<!--
|
|
||||||
Material Design Lite
|
|
||||||
Copyright 2015 Google Inc. All rights reserved.
|
|
||||||
|
|
||||||
Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
you may not use this file except in compliance with the License.
|
|
||||||
You may obtain a copy of the License at
|
|
||||||
|
|
||||||
https://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
|
|
||||||
Unless required by applicable law or agreed to in writing, software
|
|
||||||
distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
See the License for the specific language governing permissions and
|
|
||||||
limitations under the License
|
|
||||||
-->
|
|
||||||
<html lang="en">
|
<html lang="en">
|
||||||
<head>
|
<head>
|
||||||
<meta charset="utf-8">
|
<meta charset="utf-8">
|
||||||
@ -47,6 +31,7 @@
|
|||||||
|
|
||||||
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Roboto:regular,bold,italic,thin,light,bolditalic,black,medium&lang=en">
|
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Roboto:regular,bold,italic,thin,light,bolditalic,black,medium&lang=en">
|
||||||
<link rel="stylesheet" href="https://fonts.googleapis.com/icon?family=Material+Icons">
|
<link rel="stylesheet" href="https://fonts.googleapis.com/icon?family=Material+Icons">
|
||||||
|
<link rel="stylesheet" type="text/css" href="{% static 'vendor/normalize-css/normalize.css' %}">
|
||||||
{% compress css %}
|
{% compress css %}
|
||||||
<link rel="stylesheet" type="text/x-scss" href="{% static 'scss/screen.scss' %}">
|
<link rel="stylesheet" type="text/x-scss" href="{% static 'scss/screen.scss' %}">
|
||||||
{% endcompress %}
|
{% endcompress %}
|
||||||
|
@ -1 +1,7 @@
|
|||||||
{% extends 'base.html' %}
|
{% extends 'base.html' %}
|
||||||
|
{% load render_bundle from webpack_loader %}
|
||||||
|
|
||||||
|
{% block content %}
|
||||||
|
<div id="root"></div>
|
||||||
|
{% render_bundle 'main' %}
|
||||||
|
{% endblock %}
|
34
bikeshop_project/package.json
Normal file
34
bikeshop_project/package.json
Normal file
@ -0,0 +1,34 @@
|
|||||||
|
{
|
||||||
|
"name": "workstand",
|
||||||
|
"version": "0.0.1",
|
||||||
|
"description": "A membership management app for the BCBC.",
|
||||||
|
"main": "index.js",
|
||||||
|
"scripts": {
|
||||||
|
"test": "echo \"Error: no test specified\" && exit 1"
|
||||||
|
},
|
||||||
|
"author": "",
|
||||||
|
"license": "ISC",
|
||||||
|
"devDependencies": {
|
||||||
|
"babel": "^6.5.2",
|
||||||
|
"babel-core": "^6.9.1",
|
||||||
|
"babel-loader": "^6.2.4",
|
||||||
|
"babel-preset-es2015": "^6.9.0",
|
||||||
|
"babel-preset-react": "^6.5.0",
|
||||||
|
"babel-preset-stage-0": "^6.5.0",
|
||||||
|
"css-loader": "^0.23.1",
|
||||||
|
"extract-text-webpack-plugin": "^1.0.1",
|
||||||
|
"i": "^0.3.5",
|
||||||
|
"node-sass": "^3.4.2",
|
||||||
|
"normalize.css": "^4.1.1",
|
||||||
|
"postcss-loader": "^0.9.1",
|
||||||
|
"react": "^15.1.0",
|
||||||
|
"react-addons-css-transition-group": "^15.1.0",
|
||||||
|
"react-dom": "^15.1.0",
|
||||||
|
"react-toolbox": "^0.16.2",
|
||||||
|
"sass-loader": "^3.2.0",
|
||||||
|
"style-loader": "^0.13.1",
|
||||||
|
"toolbox-loader": "0.0.3",
|
||||||
|
"webpack": "^1.13.1",
|
||||||
|
"webpack-bundle-tracker": "0.0.93"
|
||||||
|
}
|
||||||
|
}
|
1
bikeshop_project/webpack-stats.json
Normal file
1
bikeshop_project/webpack-stats.json
Normal file
@ -0,0 +1 @@
|
|||||||
|
{"status":"done","chunks":{"main":[{"name":"main-68cfa02cc7400e2d6bcc.js","path":"/Users/drew/Development/bikeshop/bikeshop_project/assets/bundles/main-68cfa02cc7400e2d6bcc.js"},{"name":"react-toolbox.css","path":"/Users/drew/Development/bikeshop/bikeshop_project/assets/bundles/react-toolbox.css"}]}}
|
48
bikeshop_project/webpack.config.js
Normal file
48
bikeshop_project/webpack.config.js
Normal file
@ -0,0 +1,48 @@
|
|||||||
|
const path = require("path");
|
||||||
|
const webpack = require('webpack');
|
||||||
|
const BundleTracker = require('webpack-bundle-tracker');
|
||||||
|
const ExtractTextPlugin = require('extract-text-webpack-plugin');
|
||||||
|
const autoprefixer = require('autoprefixer');
|
||||||
|
|
||||||
|
module.exports = {
|
||||||
|
context: __dirname,
|
||||||
|
devtool: 'inline-source-map',
|
||||||
|
entry: './assets/js/index', // entry point of our app. assets/js/index.js should require other js modules and dependencies it needs
|
||||||
|
|
||||||
|
output: {
|
||||||
|
path: path.resolve('./assets/bundles/'),
|
||||||
|
filename: "[name]-[hash].js"
|
||||||
|
},
|
||||||
|
|
||||||
|
plugins: [
|
||||||
|
new BundleTracker({filename: './webpack-stats.json'}),
|
||||||
|
new ExtractTextPlugin('react-toolbox.css', { allChunks: true }),
|
||||||
|
new webpack.NoErrorsPlugin()
|
||||||
|
],
|
||||||
|
|
||||||
|
module: {
|
||||||
|
loaders: [
|
||||||
|
{
|
||||||
|
test: /\.jsx?$/,
|
||||||
|
exclude: /node_modules/,
|
||||||
|
loader: 'babel-loader',
|
||||||
|
query: {
|
||||||
|
presets: ['es2015', 'stage-0', 'react']
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
test: /(\.scss|\.css)$/,
|
||||||
|
loader: ExtractTextPlugin.extract('style', 'css?sourceMap&modules&importLoaders=1&localIdentName=[name]__[local]___[hash:base64:5]!postcss!sass?sourceMap!toolbox')
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
resolve: {
|
||||||
|
modulesDirectories: [
|
||||||
|
'node_modules',
|
||||||
|
'bower_components',
|
||||||
|
path.resolve(__dirname, './node_modules')
|
||||||
|
],
|
||||||
|
extensions: ['', '.js', '.jsx', '.scss']
|
||||||
|
},
|
||||||
|
postcss: [autoprefixer]
|
||||||
|
}
|
@ -18,6 +18,7 @@
|
|||||||
],
|
],
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"material-design-lite": "^1.1.3",
|
"material-design-lite": "^1.1.3",
|
||||||
"md-date-time-picker": "https://github.com/puranjayjain/md-date-time-picker.git#master"
|
"md-date-time-picker": "https://github.com/puranjayjain/md-date-time-picker.git#master",
|
||||||
|
"normalize-css": "normalize.css#^4.1.1"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -2,4 +2,5 @@
|
|||||||
-r testing.txt
|
-r testing.txt
|
||||||
django-debug-toolbar
|
django-debug-toolbar
|
||||||
PyYAML
|
PyYAML
|
||||||
gunicorn==19.4.5
|
gunicorn==19.4.5
|
||||||
|
django-webpack-loader
|
Loading…
x
Reference in New Issue
Block a user