fix nova:demo

This commit is contained in:
Sacha Greif 2016-04-07 20:05:23 +09:00
parent 7316b25e74
commit 959cd081cc
4 changed files with 41 additions and 24 deletions

View file

@ -2,5 +2,6 @@ import Messages from "./messages.js";
import ModalTrigger from "./components/ModalTrigger.jsx";
import FlashContainer from "./containers/FlashContainer.jsx";
import AppComposer from "./containers/AppComposer.jsx";
import CurrentUserContainer from "./containers/CurrentUserContainer.jsx";
export default {Messages, ModalTrigger, AppComposer, FlashContainer};
export default {Messages, ModalTrigger, AppComposer, FlashContainer, CurrentUserContainer};

View file

@ -1,6 +1,7 @@
import React, { PropTypes, Component } from 'react';
import {mount} from 'react-mounter';
import MoviesWrapper from './demo-components.jsx';
import Core from 'meteor/nova:core';
//////////////////////////////////////////////////////
// Collection & Schema //

View file

@ -1,17 +1,14 @@
import React, { PropTypes, Component } from 'react';
import NoSSR from 'react-no-ssr';
import Core from 'meteor/nova:core';
import SmartContainers from "meteor/utilities:react-list-container";
import FormContainers from "meteor/nova:forms";
import NovaForm from "meteor/nova:forms";
import { Button } from 'react-bootstrap';
import { Accounts } from 'meteor/std:accounts-ui';
const ModalTrigger = Core.ModalTrigger;
const NewDocument = FormContainers.NewDocument;
const EditDocument = FormContainers.EditDocument;
const Messages = Core.Messages;
const FlashContainer = Core.FlashContainer;
const ListContainer = SmartContainers.ListContainer;
const FlashContainer = Telescope.components.FlashContainer;
const FlashMessages = Telescope.components.FlashMessages;
//////////////////////////////////////////////////////
@ -23,9 +20,9 @@ class MoviesWrapper extends Component {
return (
<div className="wrapper">
<NoSSR onSSR={<p>Loading</p>}>
<LogInButtons />
</NoSSR>
<div style={{maxWidth: "300px"}}>
<Accounts.ui.LoginForm />
</div>
<FlashContainer component={FlashMessages}/>
@ -37,9 +34,8 @@ class MoviesWrapper extends Component {
options={{sort: {createdAt: -1}}}
joins={Movies.getJoins()}
limit={5}
>
<MoviesList/>
</ListContainer>
component={MoviesList}
/>
</div>
</div>
@ -56,9 +52,19 @@ class MoviesList extends Component {
renderNew() {
const component = (
<ModalTrigger title="Add Movie" label="Add Movie" className="button button--primary">
<NewDocument collection={Movies} label="Add Movie" methodName="movies.create"/>
<div className="add-movie">
<ModalTrigger
title="Add Movie"
component={<Button bsStyle="primary">Add Movie</Button>}
>
<NovaForm
collection={Movies}
methodName="movies.create"
currentUser={this.props.currentUser}
/>
</ModalTrigger>
<hr/>
</div>
)
return !!this.props.currentUser ? component : "";
@ -79,6 +85,7 @@ class MoviesList extends Component {
//////////////////////////////////////////////////////
// Movie //
//////////////////////////////////////////////////////
class Movie extends Component {
renderEdit() {
@ -86,8 +93,16 @@ class Movie extends Component {
const movie = this.props;
const component = (
<ModalTrigger label="Edit" className="button button--secondary">
<EditDocument collection={Movies} document={movie} label="Edit Movie" methodName="movies.edit"/>
<ModalTrigger
label="Edit Movie"
component={<Button bsStyle="primary">Edit Movie</Button>}
>
<NovaForm
collection={Movies}
currentUser={this.props.currentUser}
document={movie}
methodName="movies.edit"
/>
</ModalTrigger>
);
@ -103,7 +118,7 @@ class Movie extends Component {
const movie = this.props;
return (
<div key={movie.name} style={{marginBottom: "15px"}}>
<div key={movie.name} style={{paddingBottom: "15px",marginBottom: "15px", borderBottom: "1px solid #ccc"}}>
<h2>{movie.name} ({movie.year})</h2>
<p>{movie.review} by <strong>{movie.user && movie.user.username}</strong></p>
{this.renderEdit()}

View file

@ -47,7 +47,7 @@ class NovaForm extends Component{
// get relevant fields
getFieldNames() {
const collection = this.props.collection;
const fields = this.getFormType() === "edit" ? collection.getEditableFields(this.props.currentUser) : collection.getInsertableFields(this.props.currentUser);
const fields = this.getFormType() === "edit" ? collection.getEditableFields(this.props.currentUser, this.props.document) : collection.getInsertableFields(this.props.currentUser);
return fields;
}