import React, { PropTypes, Component } from 'react'; import Formsy from 'formsy-react'; import { Button } from 'react-bootstrap'; import FormComponent from "./FormComponent.jsx"; import Utils from './utils.js'; class EditDocument extends Component{ constructor() { super(); this.submitForm = this.submitForm.bind(this); this.state = { disabled: false }; } getFields() { const collection = this.props.collection; const fields = collection.getEditableFields(this.props.currentUser); return fields; } submitForm(data) { this.setState({disabled: true}); // if there's a submit callback, run it if (this.props.submitCallback) { this.props.submitCallback(); } const fields = this.getFields(); const document = this.props.document; // put all keys with data on $set const set = _.compactObject(Utils.flatten(data)); // put all keys without data on $unset const unsetKeys = _.difference(fields, _.keys(set)); const unset = _.object(unsetKeys, unsetKeys.map(()=>true)); const modifier = {$set: set, $unset: unset}; const collection = this.props.collection; Meteor.call(this.props.methodName, document._id, modifier, (error, document) => { this.setState({disabled: false}); if (error) { console.log(error) this.setState({ errors: [{ content: error.message, type: "error" }] }); if (this.props.errorCallback) { this.props.errorCallback(document, error); } } else { this.setState({errors: []}); if (this.props.successCallback) { this.props.successCallback(document); } if (this.context.closeCallback) { this.context.closeCallback(); } } }); } renderErrors() { Flash = Telescope.components.Flash; return