Exemple #1
0
 def on_submit_login(e):
     username, password = destruct(props["login_form"], "username_text",
                                   "password_text")
     if username and password:
         props.clear_login_form()
         props.login_user(username, password)
     e.preventDefault()
    def render(self):
        data, fetch_users, set_user = \
            destruct(self.props, "data", "fetch_users", "set_user")

        def render_item(enum_):
            i, user = enum_
            on_click = lambda: set_user(user)
            return __pragma__("xtrans", None, "{}", """ (
                <UserItem
                    key={i}
                    user={user}
                    onClick={on_click} />
            ); """)

        return __pragma__("xtrans", None, "{}", """ (
            <div className="container">
                <Button
                    onClick={fetch_users}
                    text="Fetch Users"
                    className="btn btn-blue" />
                <div id="users">
                    { map(render_item, enumerate(data.users)) }
                </div>
            </div>
        ); """)
def App(props):
    def render_login_panel():
        return __pragma__("xtrans", None, "{}", """ (
            <div>
                <h5>Please Login:</h5>
                <LoginFormContainer />
            </div>
        ); """)

    def on_submit(e):
        e.preventDefault()

    def render_todo_panel():
        return __pragma__("xtrans", None, "{}", """ (
            <div>
                <TodoListContainer />
                <Form
                    className="padding"
                    onSubmit={on_submit}
                >
                    <FormPanelContainer />
                    <ButtonPanelContainer />
                </Form>
            </div>
        ); """)

    logged_in, error = destruct(props["login_user"], "logged_in", "error")
    visible_component = render_todo_panel() if logged_in else render_login_panel()

    return __pragma__("xtrans", None, "{}", """ (
        <Row>
            <Col
                lg={{size: 6, offset: 3}}
                md={{size: 8, offset: 2}}
                sm={{size: 10, offset: 1}}
                xs="12"
            >
                <Jumbotron>
                    <div className="flex-column">
                        <div className="flex-center padding">
                            <h2>My Todos</h2>
                        </div>
                        {visible_component}
                        <span className="red-text">{error}</span>
                    </div>
                </Jumbotron>
            </Col>
        </Row>
    ); """)
Exemple #4
0
def UserProfile(props):
    user_profile = props.user_profile
    title, first, last = \
        destruct(user_profile["name"], "title", "first", "last")
    full_name = f"{title.capitalize()}. {first.capitalize()} {last.capitalize()}"

    if not user_profile:
        return __pragma__(
            "xtrans", None, "{}", """ (
            <h1>Looks like you haven't selected a user</h1>
        ); """)

    return __pragma__(
        "xtrans", None, "{}", """ (
        <div className="container">
            <img src={user_profile.picture.large} />
            <span>{full_name}</span>
            <span>{user_profile.email}</span>
        </div>
    ); """)
Exemple #5
0
def AlbumDetail(props):
    artist, image, thumbnail_image, title, url = \
        destruct(props.album,
                 "artist", "image", "thumbnail_image", "title", "url")
    (header_content_style, header_text_style, thumbnail_style,
     thumbnail_container_style, image_style) = styles.values()

    def on_press():
        return Linking.openURL(url)

    return __pragma__(
        "js", "{}", """ (
        <Card>
            <CardSection>
                <View style={thumbnail_container_style}>
                    <Image
                        source={{ "uri": thumbnail_image }}
                        style={thumbnail_style} />
                </View>
                <View style={header_content_style}>
                    <Text style={header_text_style}>
                        {title}
                    </Text>
                    <Text>{artist}</Text>
                </View>
            </CardSection>

            <CardSection>
                <Image
                    source={{ "uri": image }}
                    style={image_style} />
            </CardSection>

            <CardSection>
                <Button onPress={on_press}>
                    Buy Now
                </Button>
            </CardSection>
        </Card>
    ); """)
from Component_py.stubs import require, __pragma__  # __:skip
from Component_py.component import destruct

React = require("react")
FormGroup, Label, Input = destruct(require("reactstrap"), "FormGroup", "Label",
                                   "Input")


def FormPanel(props):
    def on_text_change(e):
        props.form_panel_update(e.target.value)

    return __pragma__(
        "xtrans", None, "{}", """ (
        <FormGroup>
            <Label for="text_input">Enter new todo text:</Label>
            <Input
                onChange={on_text_change}
                value={props.form_panel.text}
                id="text_input"
                placeholder="What to do?" />
        </FormGroup>
    ); """)
Exemple #7
0
from Component_py.stubs import require, __pragma__, window  # __:skip
from Component_py.component import Component, destruct

React = require("react")
ListGroup, ListGroupItem, Button = destruct(require("reactstrap"), "ListGroup",
                                            "ListGroupItem", "Button")
RingLoader = require("react-spinners").RingLoader
FontAwesomeIcon = require("react-fontawesome")


class TodoList(Component):
    def componentDidMount(self):
        token = self.props.login_user["token"]
        self.props.fetch_all_todos(token)

    def on_click_complete(self, todo):
        token = self.props.login_user["token"]

        def closure():
            if not todo["complete"]:
                self.props.complete_todo(todo["id"], token)

        return closure

    def on_click_delete(self, todo):
        token = self.props.login_user["token"]

        def closure():
            should_delete = True
            if not todo["complete"] and not window.confirm(
                    "Delete incomplete Todo?"):
from Component_py.stubs import require, __pragma__  # __:skip
from Component_py.component import destruct

React = require("react")
Text, View = destruct(require("react-native"), "Text", "View")


def Header(props):
    view_style, text_style = styles.values()
    return __pragma__(
        "js", "{}", """ (
        <View style={view_style}>
            <Text style={text_style}>{props.header_text}</Text>
        </View>
    ); """)


styles = _s = {
    "viewStyle": {
        "backgroundColor": "#F8F8F8",
        "justifyContent": "center",
        "alignItems": "center",
        "height": 80,
        "paddingTop": 25,
        "shadowColor": "#000",
        "shadowOffset": {
            "width": 0,
            "height": 2
        },
        "shadowOpacity": 0.2,
        "elevation": 2,
Exemple #9
0
from Component_py.stubs import require, __pragma__  # __:skip
from Component_py.component import destruct

from reducers.todo_list import todo_list_reducer
from reducers.login_user import login_user_reducer
from reducers.login_form import login_form_reducer
from reducers.form_panel import form_panel_reducer

createStore, combineReducers, applyMiddleware = destruct(
    require("redux"), "createStore", "combineReducers", "applyMiddleware")

logger = require("redux-logger").createLogger
promise = require("redux-promise-middleware").js_default
thunk = require("redux-thunk").js_default

store = createStore(
    combineReducers({
        "todo_list": todo_list_reducer,
        "login_user": login_user_reducer,
        "login_form": login_form_reducer,
        "form_panel": form_panel_reducer
    }),
    applyMiddleware(
        thunk,
        promise(),
        logger()
    )
)
Exemple #10
0
 def on_click_register(e):
     username, password = destruct(props["login_form"], "username_text",
                                   "password_text")
     if username and password:
         props.clear_login_form()
         props.register_user(username, password)
Exemple #11
0
from Component_py.stubs import require, __pragma__  # __:skip
from Component_py.component import destruct

React = require("react")
Form, FormGroup, Label, Input, Button = destruct(require("reactstrap"), "Form",
                                                 "FormGroup", "Label", "Input",
                                                 "Button")


def LoginForm(props):
    def on_input_change(e):
        props.login_form_update(e.target.id, e.target.value)

    def on_submit_login(e):
        username, password = destruct(props["login_form"], "username_text",
                                      "password_text")
        if username and password:
            props.clear_login_form()
            props.login_user(username, password)
        e.preventDefault()

    def on_click_register(e):
        username, password = destruct(props["login_form"], "username_text",
                                      "password_text")
        if username and password:
            props.clear_login_form()
            props.register_user(username, password)

    return __pragma__(
        "xtrans", None, "{}", """ (
        <Form className="padding" onSubmit={on_submit_login}>
from Component_py.stubs import require, __pragma__  # __:skip
from Component_py.component import destruct
from containers.LoginFormContainer import LoginFormContainer
from containers.FormPanelContainer import FormPanelContainer
from containers.ButtonPanelContainer import ButtonPanelContainer
from containers.TodoListContainer import TodoListContainer

React = require("react")
Form, Row, Col, Jumbotron = destruct(
    require("reactstrap"), "Form", "Row", "Col", "Jumbotron")


def App(props):
    def render_login_panel():
        return __pragma__("xtrans", None, "{}", """ (
            <div>
                <h5>Please Login:</h5>
                <LoginFormContainer />
            </div>
        ); """)

    def on_submit(e):
        e.preventDefault()

    def render_todo_panel():
        return __pragma__("xtrans", None, "{}", """ (
            <div>
                <TodoListContainer />
                <Form
                    className="padding"
                    onSubmit={on_submit}
Exemple #13
0
from Component_py.stubs import require, __pragma__  # __:skip
from Component_py.component import destruct
React = require("react")
Text, TouchableOpacity = \
    destruct(require("react-native"), "Text", "TouchableOpacity")


def Button(props):
    button_style, text_style = styles.values()
    return __pragma__("js", "{}", """ (
        <TouchableOpacity
            style={button_style}
            onPress={props.onPress}>
            <Text style={text_style}>
                {props.children}
            </Text>
        </TouchableOpacity>
    ); """)


styles = {
    "buttonStyle": {
        "flex": 1,
        "alignSelf": "stretch",
        "backgroundColor": "#FFF",
        "borderRadius": 5,
        "borderWidth": 1,
        "borderColor": "#007AFF",
        "marginLeft": 5,
        "marginRight": 5
    },
Exemple #14
0
from Component_py.stubs import require, console, __pragma__  # __:skip
from Component_py.component import destruct
from components.Card import Card
from components.CardSection import CardSection
from components.Button import Button

React = require("react")
View, Text, Image, Linking = \
    destruct(require("react-native"), "View", "Text", "Image", "Linking")


def AlbumDetail(props):
    artist, image, thumbnail_image, title, url = \
        destruct(props.album,
                 "artist", "image", "thumbnail_image", "title", "url")
    (header_content_style, header_text_style, thumbnail_style,
     thumbnail_container_style, image_style) = styles.values()

    def on_press():
        return Linking.openURL(url)

    return __pragma__(
        "js", "{}", """ (
        <Card>
            <CardSection>
                <View style={thumbnail_container_style}>
                    <Image
                        source={{ "uri": thumbnail_image }}
                        style={thumbnail_style} />
                </View>
                <View style={header_content_style}>