Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit 8e14892

Browse files
Convert everything to class based components.
1 parent a787143 commit 8e14892

File tree

5 files changed

+121
-114
lines changed

5 files changed

+121
-114
lines changed

‎src/components/App.py‎

Lines changed: 29 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
1+
from Component_py.component import Component, destruct
12
from Component_py.stubs import require, __pragma__ # __:skip
2-
fromComponent_py.componentimportdestruct
3+
34
from containers.LoginFormContainer import LoginFormContainer
45
from containers.FormPanelContainer import FormPanelContainer
56
from containers.ButtonPanelContainer import ButtonPanelContainer
@@ -10,19 +11,19 @@
1011
require("reactstrap"), "Form", "Row", "Col", "Jumbotron")
1112

1213

13-
def App(props):
14-
def render_login_panel():
14+
class App(Component):
15+
def render_login_panel(self):
1516
return __pragma__("xtrans", None, "{}", """ (
1617
<div>
1718
<h5>Please Login:</h5>
1819
<LoginFormContainer />
1920
</div>
2021
); """)
2122

22-
def on_submit(e):
23+
def on_submit(self, e):
2324
e.preventDefault()
2425

25-
def render_todo_panel():
26+
def render_todo_panel(self):
2627
return __pragma__("xtrans", None, "{}", """ (
2728
<div>
2829
<TodoListContainer />
@@ -36,26 +37,27 @@ def render_todo_panel():
3637
</div>
3738
); """)
3839

39-
logged_in, error = destruct(props["login_user"], "logged_in", "error")
40-
visible_component = render_todo_panel() if logged_in else render_login_panel()
41-
42-
return __pragma__("xtrans", None, "{}", """ (
43-
<Row>
44-
<Col
45-
lg={{size: 6, offset: 3}}
46-
md={{size: 8, offset: 2}}
47-
sm={{size: 10, offset: 1}}
48-
xs="12"
49-
>
50-
<Jumbotron>
51-
<div className="d-flex flex-column">
52-
<div className="d-flex justify-content-center align-items-center padding">
53-
<h2>My Todos</h2>
40+
def render(self):
41+
logged_in, error = destruct(self.props["login_user"], "logged_in", "error")
42+
visible_component = self.render_todo_panel() if logged_in else self.render_login_panel()
43+
44+
return __pragma__("xtrans", None, "{}", """ (
45+
<Row>
46+
<Col
47+
lg={{size: 6, offset: 3}}
48+
md={{size: 8, offset: 2}}
49+
sm={{size: 10, offset: 1}}
50+
xs="12"
51+
>
52+
<Jumbotron>
53+
<div className="d-flex flex-column">
54+
<div className="d-flex justify-content-center align-items-center padding">
55+
<h2>My Todos</h2>
56+
</div>
57+
{visible_component}
58+
<span className="red-text">{error}</span>
5459
</div>
55-
{visible_component}
56-
<span className="red-text">{error}</span>
57-
</div>
58-
</Jumbotron>
59-
</Col>
60-
</Row>
61-
); """)
60+
</Jumbotron>
61+
</Col>
62+
</Row>
63+
); """)

‎src/components/ButtonPanel.py‎

Lines changed: 35 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -1,43 +1,46 @@
1+
from Component_py.component import Component, destruct
12
from Component_py.stubs import require, __pragma__ # __:skip
3+
24
React = require("react")
35
Button = require("reactstrap").Button
46

57

6-
def ButtonPanel(props):
7-
def on_click_add():
8-
todo_text = props.form_panel["text"]
9-
token = props.login_user["token"]
8+
class ButtonPanel(Component):
9+
def on_click_add(self):
10+
todo_text = self.props.form_panel["text"]
11+
token = self.props.login_user["token"]
1012
if todo_text:
11-
props.add_new_todo(todo_text, token)
12-
props.form_panel_update("")
13+
self.props.add_new_todo(todo_text, token)
14+
self.props.form_panel_update("")
1315

14-
def on_click_clear():
15-
todo_text = props.form_panel["text"]
16+
def on_click_clear(self):
17+
todo_text = self.props.form_panel["text"]
1618
if todo_text:
17-
props.form_panel_update("")
19+
self.props.form_panel_update("")
1820

19-
def on_click_logout():
20-
on_click_clear()
21-
props.logout_user()
21+
def on_click_logout(self):
22+
self.on_click_clear()
23+
self.props.logout_user()
2224

23-
return __pragma__("xtrans", None, "{}", """ (
24-
<div className="d-flex justify-content-center align-items-center">
25-
<div className="d-flex justify-content-around width-80">
26-
<Button
27-
className="fixed-height"
28-
onClick={on_click_add}
29-
color="success"
30-
type="submit"
31-
>Add Todo</Button>
32-
<Button
33-
className="fixed-height"
34-
onClick={on_click_clear}
35-
color="warning"
36-
>Clear Text</Button>
37-
<Button
38-
className="fixed-height"
39-
onClick={on_click_logout}
40-
>Logout</Button>
25+
def render(self):
26+
return __pragma__("xtrans", None, "{}", """ (
27+
<div className="d-flex justify-content-center align-items-center">
28+
<div className="d-flex justify-content-around width-80">
29+
<Button
30+
className="fixed-height"
31+
onClick={self.on_click_add}
32+
color="success"
33+
type="submit"
34+
>Add Todo</Button>
35+
<Button
36+
className="fixed-height"
37+
onClick={self.on_click_clear}
38+
color="warning"
39+
>Clear Text</Button>
40+
<Button
41+
className="fixed-height"
42+
onClick={self.on_click_logout}
43+
>Logout</Button>
44+
</div>
4145
</div>
42-
</div>
43-
); """)
46+
); """)

‎src/components/FormPanel.py‎

Lines changed: 15 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,22 +1,23 @@
1+
from Component_py.component import Component, destruct
12
from Component_py.stubs import require, __pragma__ # __:skip
2-
from Component_py.component import destruct
33

44
React = require("react")
55
FormGroup, Label, Input = destruct(
66
require("reactstrap"), "FormGroup", "Label", "Input")
77

88

9-
def FormPanel(props):
10-
def on_text_change(e):
11-
props.form_panel_update(e.target.value)
9+
class FormPanel(Component):
10+
def on_text_change(self, e):
11+
self.props.form_panel_update(e.target.value)
1212

13-
return __pragma__("xtrans", None, "{}", """ (
14-
<FormGroup>
15-
<Label for="text_input">Enter new todo text:</Label>
16-
<Input
17-
onChange={on_text_change}
18-
value={props.form_panel.text}
19-
id="text_input"
20-
placeholder="What to do?" />
21-
</FormGroup>
22-
); """)
13+
def render(self):
14+
return __pragma__("xtrans", None, "{}", """ (
15+
<FormGroup>
16+
<Label for="text_input">Enter new todo text:</Label>
17+
<Input
18+
onChange={self.on_text_change}
19+
value={self.props.form_panel.text}
20+
id="text_input"
21+
placeholder="What to do?" />
22+
</FormGroup>
23+
); """)

‎src/components/LoginForm.py‎

Lines changed: 41 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -1,55 +1,56 @@
1+
from Component_py.component import Component, destruct
12
from Component_py.stubs import require, __pragma__ # __:skip
2-
from Component_py.component import destruct
33

44
React = require("react")
55
Form, FormGroup, Label, Input, Button = destruct(
66
require("reactstrap"), "Form", "FormGroup", "Label", "Input", "Button")
77

88

9-
def LoginForm(props):
10-
def on_input_change(e):
11-
props.login_form_update(e.target.id, e.target.value)
9+
class LoginForm(Component):
10+
def on_input_change(self, e):
11+
self.props.login_form_update(e.target.id, e.target.value)
1212

13-
def on_submit_login(e):
13+
def on_submit_login(self, e):
1414
username, password = destruct(
15-
props["login_form"], "username_text", "password_text")
15+
self.props["login_form"], "username_text", "password_text")
1616
if username and password:
17-
props.clear_login_form()
18-
props.login_user(username, password)
17+
self.props.clear_login_form()
18+
self.props.login_user(username, password)
1919
e.preventDefault()
2020

21-
def on_click_register(e):
21+
def on_click_register(self, e):
2222
username, password = destruct(
23-
props["login_form"], "username_text", "password_text")
23+
self.props["login_form"], "username_text", "password_text")
2424
if username and password:
25-
props.clear_login_form()
26-
props.register_user(username, password)
25+
self.props.clear_login_form()
26+
self.props.register_user(username, password)
2727

28-
return __pragma__("xtrans", None, "{}", """ (
29-
<Form className="padding" onSubmit={on_submit_login}>
30-
<FormGroup>
31-
<Label for="username_text">Enter your username</Label>
32-
<Input
33-
onChange={on_input_change}
34-
value={props.login_form.username_text}
35-
placeholder="Your Username"
36-
id="username_text" />
37-
</FormGroup>
38-
<FormGroup>
39-
<Label for="password_text">Enter your password</Label>
40-
<Input
41-
onChange={on_input_change}
42-
value={props.login_form.password_text}
43-
type="password"
44-
id="password_text" />
45-
</FormGroup>
46-
<Button
47-
className="fixed-height margin"
48-
type="submit"
49-
>Login</Button>
50-
<Button
51-
className="fixed-height"
52-
onClick={on_click_register}
53-
>Register</Button>
54-
</Form>
55-
); """)
28+
def render(self):
29+
return __pragma__("xtrans", None, "{}", """ (
30+
<Form className="padding" onSubmit={self.on_submit_login}>
31+
<FormGroup>
32+
<Label for="username_text">Enter your username</Label>
33+
<Input
34+
onChange={self.on_input_change}
35+
value={self.props.login_form.username_text}
36+
placeholder="Your Username"
37+
id="username_text" />
38+
</FormGroup>
39+
<FormGroup>
40+
<Label for="password_text">Enter your password</Label>
41+
<Input
42+
onChange={self.on_input_change}
43+
value={self.props.login_form.password_text}
44+
type="password"
45+
id="password_text" />
46+
</FormGroup>
47+
<Button
48+
className="fixed-height margin"
49+
type="submit"
50+
>Login</Button>
51+
<Button
52+
className="fixed-height"
53+
onClick={self.on_click_register}
54+
>Register</Button>
55+
</Form>
56+
); """)

‎src/components/TodoList.py‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
1-
from Component_py.stubs import require, __pragma__, window # __:skip
21
from Component_py.component import Component, destruct
2+
from Component_py.stubs import require, __pragma__, window # __:skip
33

44
React = require("react")
55
ListGroup, ListGroupItem, Button = destruct(

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /