-
+
diff --git a/imports/client/views/org/admin/staff/StaffView.js b/imports/client/views/org/admin/staff/StaffView.js
new file mode 100644
index 0000000..e6a0da9
--- /dev/null
+++ b/imports/client/views/org/admin/staff/StaffView.js
@@ -0,0 +1,107 @@
+import _ from 'lodash';
+import { Meteor } from 'meteor/meteor';
+
+import React, { Component } from 'react';
+import { Link,browserHistory } from 'react-router';
+import { FormGroup,
+ FormControl,Glyphicon,Button } from 'react-bootstrap';
+import { Header } from '../Header';
+import { AdminSidebar } from '../Sidebar'
+import { AdminBreadcrumb } from '../Breadcrumb'
+import { StaffTable } from './view/StaffTable'
+import { AddTeacher } from './add/addTeacher'
+import { UploadCsvTeacher } from './UploadCsvTeacher'
+
+export class StaffView extends Component {
+ constructor(props) {
+ super(props);
+ this.state = {
+
+ };
+ this.onUpdate = this.onUpdate.bind(this);
+ };
+
+ onUpdate(key, value) {
+ this.setState({[key]: value});
+ };
+
+ render() {
+ const {user, org, staff} = this.props.data;
+ return (
+
+ );
+ };
+
+};
diff --git a/imports/client/views/org/admin/staff/UploadCsvTeacher.js b/imports/client/views/org/admin/staff/UploadCsvTeacher.js
new file mode 100644
index 0000000..bd22a00
--- /dev/null
+++ b/imports/client/views/org/admin/staff/UploadCsvTeacher.js
@@ -0,0 +1,103 @@
+// import {UploadCsv } from '/imports/collections/students/UploadCsv'
+import _ from 'lodash';
+import { Meteor } from 'meteor/meteor';
+
+import React, { Component } from 'react';
+import { Link,browserHistory } from 'react-router';
+import { FormGroup,Panel,Table,
+ ButtonToolbar,Modal,ControlLabel,HelpBlock,
+ FormControl,Glyphicon,Button } from 'react-bootstrap';
+// import { AddStudentForm } from './addStudentForm';
+import { FilesCollection } from 'meteor/ostrio:files';
+const Papa = this.Papa;
+// console.log(this);
+const style = {
+ margin: 12,
+};
+function FieldGroup({ id, label, help, ...props }) {
+ return (
+
+ {label}
+
+ {help && {help}}
+
+ );
+}
+export class UploadCsvTeacher extends Component {
+ constructor(props) {
+ super(props);
+ this.state = {
+ show: false
+ };
+ this.showModal = this.showModal.bind(this);
+ this.hideModal = this.hideModal.bind(this);
+ this.onUpdate = this.onUpdate.bind(this);
+ };
+
+ showModal() {
+ this.setState({show: true});
+ }
+
+ hideModal() {
+ this.setState({show: false});
+ }
+ onUpdate(key, value) {
+ this.setState({[key]: value});
+ };
+ uploadStudentCsv(e){
+ e.preventDefault();
+ e.persist();
+ var file = $('input[type="file"]').prop("files")[0];
+ Papa.parse(file, {
+ header: true,
+ complete: function(csvData) {
+ console.log("csvData");
+ console.log(csvData);
+ if(csvData){
+ Meteor.call('teachers.uploadCsv', csvData, function (error, result) {
+ console.log("error");
+ console.log(error);
+ console.log("result");
+ console.log(result);
+ })
+ }
+ }
+ });
+ }
+
+ render() {
+ console.log(this.props);
+ return (
+
+
+
+
+ Upload Csv
+
+
+
+
+
+
+
+
+
+ );
+ };
+
+};
diff --git a/imports/client/views/org/admin/staff/add/AddTeacherFormContainer.js b/imports/client/views/org/admin/staff/add/AddTeacherFormContainer.js
new file mode 100644
index 0000000..b4e5a19
--- /dev/null
+++ b/imports/client/views/org/admin/staff/add/AddTeacherFormContainer.js
@@ -0,0 +1,95 @@
+import React, { Component } from 'react'
+import StudentForm from './TeacherForm'
+import Form from '/imports/client/views/core/Form'
+import Validator from '/imports/client/views/core/Validator'
+import { isRequired, isValidEmail } from '/imports/client/views/core/validations'
+import { addStudentManually } from '/imports/collections/students/methods';
+
+export class AddStudentFormContainer extends Component {
+
+ constructor(props) {
+ super(props)
+ this.state = { currentStep: 0 }
+ this.handleNextClick = this.handleNextClick.bind(this)
+ this.handleBackClick = this.handleBackClick.bind(this)
+ this.handleSubmit = this.handleSubmit.bind(this)
+ }
+
+ handleNextClick() {
+ this.form.handleSubmit()
+ if (this.validator.getErrors() && Object.keys(this.validator.getErrors()).length > 0) return
+ this.setState({ currentStep: this.state.currentStep + 1 })
+ this.form.resetSubmitted()
+ }
+
+ handleBackClick() {
+ this.setState({ currentStep: this.state.currentStep + -1 })
+ }
+
+ handleSubmit() {
+ if (this.state.currentStep === 3) {
+ addStudentManually.call(this.form.state.values)
+ }
+ }
+
+ //render callback
+ render() {
+ return (
+
+ )
+ }
+}
diff --git a/imports/client/views/org/admin/staff/add/TeacherForm.js b/imports/client/views/org/admin/staff/add/TeacherForm.js
new file mode 100644
index 0000000..95d7757
--- /dev/null
+++ b/imports/client/views/org/admin/staff/add/TeacherForm.js
@@ -0,0 +1,521 @@
+import React, { PropTypes } from 'react'
+import {
+ Row,
+ Col,
+ FormGroup,
+ FormControl,
+ Button
+} from 'react-bootstrap'
+import DatePicker from '/imports/client/views/core/DatePicker'
+import Label from '/imports/client/views/core/Label'
+import Stepper from '/imports/client/views/core/Stepper'
+import ErrorLabel from '/imports/client/views/core/ErrorLabel'
+
+const StudentForm = props => (
+
+
+ {props.currentStep === 0 && (
+
+ )}
+ {props.currentStep === 1 && (
+
+ )}
+ {props.currentStep === 2 && (
+
+ )}
+ {props.currentStep === 3 && (
+
+ )}
+
+ {props.currentStep > 0 && (
+
+
+
+
+ )}
+ {props.currentStep < 3 && (
+
+
+
+ )}
+ {props.currentStep === 3 && (
+
+
+
+ )}
+
+
+)
+
+StudentForm.propTypes = {
+ currentStep: PropTypes.number.isRequired,
+ onNextClick: PropTypes.func.isRequired,
+ onBackClick: PropTypes.func.isRequired,
+ setValue: PropTypes.func.isRequired,
+ getValue: PropTypes.func.isRequired,
+}
+
+export default StudentForm
diff --git a/imports/client/views/org/admin/staff/add/addTeacher.js b/imports/client/views/org/admin/staff/add/addTeacher.js
new file mode 100644
index 0000000..051b69b
--- /dev/null
+++ b/imports/client/views/org/admin/staff/add/addTeacher.js
@@ -0,0 +1,64 @@
+import _ from 'lodash';
+import { Meteor } from 'meteor/meteor';
+import React, { Component } from 'react';
+import { Link,browserHistory } from 'react-router';
+import { FormGroup,Panel,Table,
+ ButtonToolbar,Modal,
+ FormControl,Glyphicon,Button } from 'react-bootstrap';
+import { AddStudentFormContainer } from './AddTeacherFormContainer';
+
+const style = {
+ margin: 12,
+};
+export class AddTeacher extends Component {
+ constructor(props) {
+ super(props);
+ this.state = {
+ show: false
+ };
+ this.showModal = this.showModal.bind(this);
+ this.hideModal = this.hideModal.bind(this);
+ this.onUpdate = this.onUpdate.bind(this);
+ };
+
+ showModal() {
+ this.setState({show: true});
+ }
+
+ hideModal() {
+ this.setState({show: false});
+ }
+ onUpdate(key, value) {
+ this.setState({[key]: value});
+ };
+
+ render() {
+ return (
+
+
+
+
+ Add New Staff
+
+
+
+
+ {/*
+
+
+
+ */}
+
+
+ );
+ };
+
+};
diff --git a/imports/client/views/org/admin/staff/index.js b/imports/client/views/org/admin/staff/index.js
new file mode 100644
index 0000000..609edc2
--- /dev/null
+++ b/imports/client/views/org/admin/staff/index.js
@@ -0,0 +1,60 @@
+// import { InviteSignupController } from '/imports/client/views/invite/signup/index'
+import _ from 'lodash';
+import {
+ composeWithTracker,
+ compose,
+ composeAll
+ } from 'react-komposer';
+import { Loading } from '/imports/client/components/Loading';
+
+import { Orgs } from '/imports/collections/orgs/index';
+import { Users } from '/imports/collections/users/index';
+import { Staffs } from '/imports/collections/staff/index';
+import { StaffView } from './StaffView';
+
+const meteorTick = (props, onData) => {
+
+ const handles = [
+ Meteor.subscribe('users.current'),
+ Meteor.subscribe('orgs.current')
+ ];
+
+ if(_.every(handles, (handle) => (handle.ready()) )) {
+ const user = Users.current();
+ const org = Orgs.current();
+ staff = Users.find({"role":"STAFF"}).fetch() ? Users.find({"role":"TEACHER"}).fetch() : "";
+ staffData = Staffs.find().fetch() ? Staffs.find().fetch() : "";
+ for(var i=0; i< staff.length; i++){
+ for(var j=0; j< staff.length; j++){
+ if(staff[i]._id == staffData[j].userId){
+ staff[i].class = staffData[j].class;
+ staff[i].dob = staffData[j].dob;
+ }
+ }
+ }
+ onData(null, {
+ data: {
+ user: user,
+ org: org,
+ staff: staff
+ },
+ });
+ }
+
+ return () => {
+ _.each(handles, (handle) => handle.stop() );
+ };
+};
+
+
+const reduxTick = (props, onData) => {
+ onData(null, {
+ data: {}
+ });
+};
+
+
+export const staffViewController = composeAll(
+ composeWithTracker(meteorTick, Loading),
+ compose(reduxTick, Loading),
+)(StaffView);
diff --git a/imports/client/views/org/admin/staff/view/StaffTable.js b/imports/client/views/org/admin/staff/view/StaffTable.js
new file mode 100644
index 0000000..ddf9bc7
--- /dev/null
+++ b/imports/client/views/org/admin/staff/view/StaffTable.js
@@ -0,0 +1,65 @@
+import _ from 'lodash';
+import { Meteor } from 'meteor/meteor';
+
+import React, { Component } from 'react';
+import { Link,browserHistory } from 'react-router';
+import { FormGroup,Panel,Table,
+ ButtonToolbar,Modal,
+ FormControl,Glyphicon,Button } from 'react-bootstrap';
+import {moment} from 'meteor/momentjs:moment'
+import {TeachersRow} from './TeachersRow'
+
+export class StaffTable extends Component {
+
+ constructor(props) {
+ super(props);
+ this.state = {
+ show: false
+ };
+ this.onUpdate = this.onUpdate.bind(this);
+ };
+ onUpdate(key, value) {
+ this.setState({[key]: value});
+ };
+
+ render() {
+ return (
+
+
+
+
+
+ First Name |
+ Last Name |
+ Class |
+ DOB |
+ Status |
+ Actions |
+
+
+
+ {
+ this.props.staff.map(function(student, i)
+ {
+ return(
+
+ )
+ })
+ }
+
+
+
+ );
+ };
+
+};
diff --git a/imports/client/views/org/admin/staff/view/TeachersRow.js b/imports/client/views/org/admin/staff/view/TeachersRow.js
new file mode 100644
index 0000000..2cd6950
--- /dev/null
+++ b/imports/client/views/org/admin/staff/view/TeachersRow.js
@@ -0,0 +1,56 @@
+import _ from 'lodash';
+import { Meteor } from 'meteor/meteor';
+
+import React, { Component } from 'react';
+import { Link,browserHistory } from 'react-router';
+import { FormGroup,
+ FormControl,Glyphicon,Button } from 'react-bootstrap';
+
+
+export class teachersRow extends Component {
+
+ constructor(props) {
+ super(props);
+ this.state = {
+
+ };
+ this.onUpdate = this.onUpdate.bind(this);
+ };
+
+ onUpdate(key, value) {
+ this.setState({[key]: value});
+ };
+
+ render() {
+ const {student} = this.props;
+ if(student.firstName){
+ return (
+
+ {student.firstName} |
+ {student.lastName} |
+ {student.class} |
+ {student.dob? moment(student.dob).format("LL") : } |
+ Active |
+
+
+ |
+
+ );
+ }else {
+ return null;
+ }
+
+ };
+
+};
diff --git a/imports/client/views/org/admin/students/UploadCsv.js b/imports/client/views/org/admin/students/UploadCsv.js
index dc50c45..78dfc52 100644
--- a/imports/client/views/org/admin/students/UploadCsv.js
+++ b/imports/client/views/org/admin/students/UploadCsv.js
@@ -79,7 +79,7 @@ export class UploadCsv extends Component {
dialogClassName="custom-modal"
>
- New Student
+ Upload Csv file