My big initial commit to this repo and project.

This commit is contained in:
Brian McGonagill 2022-08-05 16:55:56 -05:00
parent 750811a81f
commit 8636f8cf9b
2433 changed files with 199488 additions and 1042 deletions

View file

@ -1,9 +1,8 @@
<template name="teacherLogin">
<template name="login">
{{#if $not currentUser}}
<div id="signInForm">
<div class="container">
<h3>Teacher Login</h3>
<p>It is very important to the safety of all children that you do not share your login credentials with anyone.</p>
<h4>Login</h4>
<div class="card">
<div class="card-content">
<form class="login">
@ -34,7 +33,7 @@
</form>
</div>
<div class="card-action">
<a href="#" id="teacherReg">Register</a>
<a href="#" id="reg">Register</a>
</div>
</div>
</div>

View file

@ -1,18 +1,18 @@
Template.parentLogin.onCreated(function() {
Template.login.onCreated(function() {
});
Template.parentLogin.onRendered(function() {
Template.login.onRendered(function() {
});
Template.parentLogin.helpers({
Template.login.helpers({
areFilled: function() {
return Session.get("filledFields");
},
}
});
Template.parentLogin.events({
Template.login.events({
'click #logmein' (event) {
event.preventDefault();
console.log("clicked login");
@ -26,8 +26,8 @@ Template.parentLogin.events({
Meteor.loginWithPassword(email, pass);
}
},
'click #parentReg' (event) {
'click #reg' (event) {
event.preventDefault();
FlowRouter.go('/parentReg');
FlowRouter.go('/reg');
},
});

View file

@ -1,9 +1,8 @@
<template name="teacherRegistration">
<template name="reg">
{{#if $not currentUser}}
<div id="registrationForm">
<div class="container">
<h3>Teacher Registration</h3>
<p>It is very important to the safety of all children that you do not share your login credentials with anyone.</p>
<h4>Register</h4>
<div class="row">
<div class="col s12">
<div class="card">
@ -14,10 +13,6 @@
<input type="text" name="name" class="name {{#if $eq misName true}}red lighten-3{{/if}}" id="name" />
<label for="name">Your Full Name *</label>
</div>
<div class="col s12 input-field">
<input type="tel" name="phone" class="phone {{#if $eq misPhone true}}red lighten-3{{/if}}" id="phone" />
<label for="phone">Best Phone Number *</label>
</div>
</div>
<div class="row">
<div class="col s12 input-field">
@ -45,7 +40,7 @@
</form>
</div>
<div class="card-action">
<a href="#" id="teachLogin">Sign In</a>
<a href="#" id="login">Sign In</a>
</div>
</div>
</div>

View file

@ -1,9 +1,9 @@
Template.teacherRegistration.onCreated(function() {
Template.reg.onCreated(function() {
});
Template.teacherRegistration.onRendered(function() {
Template.reg.onRendered(function() {
Session.set("canreg", false);
Session.set("missingReq", false);
Session.set("missingName", false);
@ -12,16 +12,13 @@ Template.teacherRegistration.onRendered(function() {
Session.set("missingPassword", false);
});
Template.teacherRegistration.helpers({
Template.reg.helpers({
canReg: function() {
return Session.get("canreg");
},
misName: function() {
return Session.get("missingName");
},
misPhone: function() {
return Session.get("missingPhone");
},
misEmail: function() {
return Session.get("missingEmail");
},
@ -33,7 +30,7 @@ Template.teacherRegistration.helpers({
}
});
Template.teacherRegistration.events({
Template.reg.events({
'click #registerMe' (event) {
event.preventDefault();
if (Session.get("canreg") == false) {
@ -41,7 +38,6 @@ Template.teacherRegistration.events({
} else {
// console.log("Clicked");
let missingName = false;
let missingPhone = false;
let missingEmail = false;
let missingPassword = false;
@ -55,11 +51,6 @@ Template.teacherRegistration.events({
Session.set("missingName", true);
}
if (phone == "" || phone == null) {
missingPhone = true;
Session.set("missingPhone", true);
}
if (email == "" || email == null) {
missingEmail = true;
Session.set("missingEmail", true);
@ -72,7 +63,7 @@ Template.teacherRegistration.events({
let userId;
if (missingName == true || missingPhone == true || missingEmail == true || missingPassword == true) {
if (missingName == true || missingEmail == true || missingPassword == true) {
Session.set("missingReq", true);
} else {
Session.set("missingReq", false);
@ -81,13 +72,12 @@ Template.teacherRegistration.events({
password: password,
profile: {
fullname: name,
phone: phone,
}
});
let userId = Meteor.userId();
console.log("User ID: " + userId);
Meteor.call("addToRole", "teacher", function(err, result) {
Meteor.call("addToRole", "user", function(err, result) {
if (err) {
console.log(" ERROR: ROLES - Error adding user to role: " + err);
} else {
@ -120,8 +110,8 @@ Template.teacherRegistration.events({
Session.set("missingEmail", false);
}
},
'click #teachLogin' (event) {
'click #login' (event) {
event.preventDefault();
FlowRouter.go('/teachlogin');
FlowRouter.go('/login');
},
});

View file

@ -1,43 +0,0 @@
<template name="parentLogin">
{{#if $not currentUser}}
<div id="signInForm">
<div class="container">
<h3>Parent / Guardian Login</h3>
<p>It is very important to the safety of all children that you do not share your login credentials with anyone.</p>
<div class="card">
<div class="card-content">
<form class="login">
<div class="row">
<div class="col s12 input-field">
<input type="email" name="email" id="email" class="email {{#if $eq misEmail true}}red lighten-3{{/if}}" />
<label for="email">Email *</label>
</div>
</div>
<div class="row">
<div class="col s12 input-field">
<input type="password" name="password" id="password" class="password {{#if $eq misPass true}}red lighten-3{{/if}}" />
<label for="password">Password *</label>
</div>
</div>
{{#if $eq areFilled false}}
<div class="row">
<div class="col s12 red lighten-3 white-text">
<span>You must fill all fields to login.</span>
</div>
</div>
{{/if}}
<div class="row">
<div class="col s12">
<a id="logmein" class="waves-effect waves-light btn logmein green darken-1">Log In</a>
</div>
</div>
</form>
</div>
<div class="card-action">
<a href="#" id="parentReg">Register</a>
</div>
</div>
</div>
</div>
{{/if}}
</template>

View file

@ -1,123 +0,0 @@
Template.parentsRegistration.onRendered(function() {
Session.set("canreg", false);
Session.set("missingReq", false);
Session.set("missingName", false);
Session.set("missingPhone", false);
Session.set("missingEmail", false);
Session.set("missingPassword", false);
});
Template.parentsRegistration.helpers({
canReg: function() {
return Session.get("canreg");
},
misName: function() {
return Session.get("missingName");
},
misPhone: function() {
return Session.get("missingPhone");
},
misEmail: function() {
return Session.get("missingEmail");
},
misPass: function() {
return Session.get("missingPassword");
},
misReq: function() {
return Session.get("missingReq");
}
});
Template.parentsRegistration.events({
'click #registerMe' (event) {
event.preventDefault();
if (Session.get("canreg") == false) {
console.log("reg disabled.");
} else {
console.log("Clicked");
let missingName = false;
let missingPhone = false;
let missingEmail = false;
let missingPassword = false;
let email = $("#email").val();
let password = $("#password").val();
let name = $("#name").val();
let phone = $("#phone").val();
if (name == "" || name == null) {
missingName = true;
Session.set("missingName", true);
}
if (phone == "" || phone == null) {
missingPhone = true;
Session.set("missingPhone", true);
}
if (email == "" || email == null) {
missingEmail = true;
Session.set("missingEmail", true);
}
if (password == "" || password == null) {
missingPassword = true;
Session.set("missingPassword", true);
}
let userId;
if (missingName == true || missingPhone == true || missingEmail == true || missingPassword == true) {
Session.set("missingReq", true);
} else {
Session.set("missingReq", false);
Accounts.createUser({
email: email,
password: password,
profile: {
fullname: name,
phone: phone,
}
});
let userId = Meteor.userId();
console.log("User ID: " + userId);
Meteor.call("addToRole", "parent", function(err, result) {
if (err) {
console.log(" ERROR: ROLES - Error adding user to role: " + err);
} else {
// console.log("User should be added to role - parent.");
FlowRouter.go('/dashboard');
}
});
}
}
},
'keyup #passwordConfirm' (event) {
let pwd = $("#password").val();
let pwdconf = $("#passwordConfirm").val();
if (pwd == pwdconf) {
// console.log("passwords match");
Session.set("canreg", true);
} else {
// console.log("passwords don't match");
Session.set("canreg", false);
}
},
'change #email' (event) {
let email = $("#email").val();
var regex = /^([a-zA-Z0-9_.+-])+\@(([a-zA-Z0-9-])+\.)+([a-zA-Z0-9]{2,4})+$/;
let isEmail = regex.test(email);
if (isEmail == false) {
Session.set("missingEmail", true);
} else {
Session.set("missingEmail", false);
}
},
'click #parguarlogin' (event) {
event.preventDefault();
FlowRouter.go('/parguarlogin');
},
});

View file

@ -1,56 +0,0 @@
<template name="parentsRegistration">
{{#if $not currentUser}}
<div id="registrationForm">
<div class="container">
<h3>Parent / Guardian Registration</h3>
<p>It is very important to the safety of all children that you do not share your login credentials with anyone.</p>
<div class="row">
<div class="col s12">
<div class="card">
<div class="card-content">
<form class="register">
<div class="row">
<div class="col s12 input-field">
<input type="text" name="name" class="name {{#if $eq misName true}}red lighten-3{{/if}}" id="name" />
<label for="name">Your Full Name *</label>
</div>
<div class="col s12 input-field">
<input type="tel" name="phone" class="phone {{#if $eq misPhone true}}red lighten-3{{/if}}" id="phone" />
<label for="phone">Best Phone Number *</label>
</div>
</div>
<div class="row">
<div class="col s12 input-field">
<input type="email" name="email" id="email" class="email {{#if $eq misEmail true}}red lighten-3{{/if}}" />
<label for="email">Email *</label>
</div>
</div>
<div class="row">
<div class="col s12 input-field">
<input type="password" name="password" id="password" class="password {{#if $eq misPass true}}red lighten-3{{/if}}" />
<label for="password">Password *</label>
</div>
</div>
<div class="row">
<div class="col s12 input-field {{#if $eq canReg false}}orange lighten-1{{/if}}">
<input type="password" name="passwordConfirm" id="passwordConfirm" class="passwordConfirm" />
<label for="passwordConfirm">Confirm Password *</label>
</div>
</div>
<div class="row">
<div class="col s12">
<a id="registerMe" class="waves-effect waves-light btn registerMe {{#if $eq canReg false}}grey{{else}}green darken-1{{/if}}">Register</a>
</div>
</div>
</form>
</div>
<div class="card-action">
<a href="#" id="parguarlogin">Sign In</a>
</div>
</div>
</div>
</div>
</div>
</div>
{{/if}}
</template>

View file

@ -1,50 +0,0 @@
<template name="systemAdminLogin">
{{#if $not currentUser}}
<div id="signInForm">
<div class="container">
<h3>System Administrator Login</h3>
<p>It is very important to the safety of all children that you do not share your login credentials with anyone.</p>
<div class="card">
<div class="card-content">
<form class="login">
<div class="row">
<div class="col s12 input-field">
<input type="email" name="email" id="email" class="email {{#if $eq misEmail true}}red lighten-3{{/if}}" />
<label for="email">Email *</label>
</div>
</div>
<div class="row">
<div class="col s12 input-field">
<input type="password" name="password" id="password" class="password {{#if $eq misPass true}}red lighten-3{{/if}}" />
<label for="password">Password *</label>
</div>
</div>
{{#if $eq areFilled false}}
<div class="row">
<div class="col s12 red lighten-3 white-text">
<span>You must fill all fields to login.</span>
</div>
</div>
{{/if}}
{{#if $eq loginError true}}
<div class="row">
<div class="col s12 red lighten-2 white-text">
<span>Username or Password is incorrect. Please check your credentials and try again, or click 'Register' to create a new account.</span>
</div>
</div>
{{/if}}
<div class="row">
<div class="col s12">
<a id="logmein" class="waves-effect waves-light btn logmein green darken-1">Log In</a>
</div>
</div>
</form>
</div>
<div class="card-action">
<a href="#" id="sysAdminReg">Register</a>
</div>
</div>
</div>
</div>
{{/if}}
</template>

View file

@ -1,45 +0,0 @@
Template.systemAdminLogin.onCreated(function() {
});
Template.systemAdminLogin.onRendered(function() {
});
Template.systemAdminLogin.helpers({
areFilled: function() {
return Session.get("filledFields");
},
loginError: function() {
return Session.get("loginError");
},
});
Template.systemAdminLogin.events({
'click #logmein' (event) {
event.preventDefault();
console.log("clicked login");
let email = $("#email").val();
let pass = $("#password").val();
if (email == null || email == "" || pass == "" || pass == null) {
Session.set("filledFields", false);
return;
} else {
return Meteor.loginWithPassword(email, pass, function(err, result) {
if (err) {
console.log("Error logging in: " + err);
Session.set("loginError", true);
} else {
console.log("login result: " + result);
Session.set("loginError", false);
FlowRouter.go('/dashboard');
}
});
}
},
'click #sysAdminReg' (event) {
event.preventDefault();
FlowRouter.go('/systemAdminReg');
},
});

View file

@ -1,69 +0,0 @@
<template name="systemAdminReg">
{{#if Template.subscriptionsReady}}
{{#if $not currentUser}}
<div id="registrationForm">
<div class="container">
{{#if $eq allowedReg true}}
<h3>System Admin Registration</h3>
<p>If you want to disable System Admin registration after creating this account, please check the box.</p>
<div class="row">
<div class="col s12">
<div class="card">
<div class="card-content">
<form class="register">
<div class="row">
<div class="col s12 input-field">
<input type="text" name="name" class="name {{#if $eq misName true}}red lighten-3{{/if}}" id="name" />
<label for="name">Your Full Name *</label>
</div>
</div>
<div class="row">
<div class="col s12 input-field">
<input type="email" name="email" id="email" class="email {{#if $eq misEmail true}}red lighten-3{{/if}}" />
<label for="email">Email *</label>
</div>
</div>
<div class="row">
<div class="col s12 input-field">
<input type="password" name="password" id="password" class="password {{#if $eq misPass true}}red lighten-3{{/if}}" />
<label for="password">Password *</label>
</div>
</div>
<div class="row">
<div class="col s12 input-field {{#if $eq canReg false}}orange lighten-1{{/if}}">
<input type="password" name="passwordConfirm" id="passwordConfirm" class="passwordConfirm" />
<label for="passwordConfirm">Confirm Password *</label>
</div>
</div>
<div class="row">
<div class="col s12">
<p>
<label>
<input type="checkbox" id="disableSysAdminReg" />
<span>Disable Future System Admin Registrations</span>
</label>
</p>
</div>
</div>
<div class="row">
<div class="col s12">
<a id="registerMe" class="waves-effect waves-light btn registerMe {{#if $eq canReg false}}grey{{else}}green darken-1{{/if}}">Register</a>
</div>
</div>
</form>
</div>
<div class="card-action">
<a href="#" id="sysAdminLogin">Sign In</a>
</div>
</div>
</div>
</div>
{{else}}
<h3>System Admin Registration Disabled</h3>
<p>A system administrator has disabled the ability to register as a new system admin. If you believe this was done mistakenly, contact a current system administrator for this system, and have them change this setting.</p>
{{/if}}
</div>
</div>
{{/if}}
{{/if}}
</template>

View file

@ -1,118 +0,0 @@
import { SysConfig } from '../../../imports/api/systemConfig.js';
Template.systemAdminReg.onCreated(function() {
this.subscribe("SystemConfig");
});
Template.systemAdminReg.onRendered(function() {
Session.set("canReg", false);
Session.set("misName", false);
Session.set("misEmail", false);
Session.set("misPass", false);
});
Template.systemAdminReg.helpers({
allowedReg: function() {
let sysconf = SysConfig.findOne();
if (typeof sysconf == 'undefined') {
return true;
} else {
console.dir(sysconf);
return sysconf.canReg;
}
},
canReg: function() {
return Session.get("canReg");
},
misName: function() {
return Session.get("misName");
},
misEmail: function() {
return Session.get("misEmail");
},
misPass: function() {
return Session.get("misPass");
},
});
Template.systemAdminReg.events({
'click #registerMe' (event) {
event.preventDefault();
if (Session.get("canReg") == false) {
// console.log("reg disabled.");
} else {
let name = $("#name").val();
let email = $("#email").val();
let pass = $("#password").val();
let disableSysAdReg = $("#disableSysAdminReg").prop("checked");
if (name == "" || name == null) {
Session.set("misName", true);
}
if (email == "" || email == null) {
Session.set("misEmail", true);
}
if (pass == "" || pass == null) {
Session.set("misPass", true);
}
if (name == "" || name == null || email == "" || email == null || pass == "" || pass == null) {
console.log("required info missing.");
} else {
// call meteor method to create user and add them to sys admin role.
Accounts.createUser({
email: email,
password: pass,
profile: {
fullname: name,
}
});
let userId = Meteor.userId();
console.log("User ID: " + userId);
Meteor.call("addToRole", "systemadmin", function(err, result) {
if (err) {
console.log(" ERROR: ROLES - Error adding user to role: " + err);
} else {
Meteor.call('add.noSysAdminReg', function(err, result) {
if (err) {
console.log(" ERROR: SYS ADMIN REG - Error setting system admin registration as disabled: " + err);
} else {
FlowRouter.go('/dashboard');
}
});
}
});
}
}
},
'keyup #passwordConfirm' (event) {
let pwd = $("#password").val();
let pwdconf = $("#passwordConfirm").val();
if (pwd == pwdconf) {
// console.log("passwords match");
Session.set("canReg", true);
} else {
// console.log("passwords don't match");
Session.set("canReg", false);
}
},
'change #email' (event) {
let email = $("#email").val();
var regex = /^([a-zA-Z0-9_.+-])+\@(([a-zA-Z0-9-])+\.)+([a-zA-Z0-9]{2,4})+$/;
let isEmail = regex.test(email);
if (isEmail == false) {
Session.set("misEmail", true);
} else {
Session.set("misEmail", false);
}
},
'click #sysAdminLogin' (event) {
event.preventDefault();
FlowRouter.go('/sysAdminlogin');
},
});

View file

@ -1,33 +0,0 @@
Template.teacherLogin.onCreated(function() {
});
Template.teacherLogin.onRendered(function() {
});
Template.teacherLogin.helpers({
areFilled: function() {
return Session.get("filledFields");
},
});
Template.teacherLogin.events({
'click #logmein' (event) {
event.preventDefault();
console.log("clicked login");
let email = $("#email").val();
let pass = $("#password").val();
if (email == null || email == "" || pass == "" || pass == null) {
Session.set("filledFields", false);
return;
} else {
Meteor.loginWithPassword(email, pass);
}
},
'click #teacherReg' (event) {
event.preventDefault();
FlowRouter.go('/teachReg');
},
});

View file

@ -2,14 +2,32 @@
{{#if isInRole 'systemadmin'}}
<h3>User Management</h3>
<div class="row">
<div class="col s12 m6 l4 input-field" id="usersListCol">
</div>
<div class="col s12 m6 l4 input-field" id="userAssignedRoleCol">
</div>
<div class="col s12 m6 l4" id="assignRoleBtnCol">
<div class="col s12 m12 l12">
<table class="striped highlight responsive-table">
<thead>
<tr>
<th>Name</th>
<th>Email</th>
<th>Role</th>
<th>Actions</th>
</tr>
</thead>
<tbody>
{{#each userInfo}}
<tr>
<td>{{userName}}</td>
<td>{{userEmail}}</td>
<td>{{userRole}}</td>
<td>
<div class="input-field">
<i class="material-icons clickable deleteUser">delete</i>
<i class="material-icons clickable editUser">edit</i>
</div>
</td>
</tr>
{{/each}}
</tbody>
</table>
</div>
</div>
{{/if}}

View file

@ -5,13 +5,37 @@ Template.userMgmt.onCreated(function() {
});
Template.userMgmt.onRendered(function() {
$('select').formSelect();
});
Template.userMgmt.helpers({
userInfo: function() {
return Meteor.users.find({});
},
userName: function() {
return this.profile.fullname;
},
userEmail: function() {
return this.emails[0].address;
},
userRole: function() {
return Roles.getRolesForUser( this._id );
}
});
Template.userMgmt.events({
"click .editUser" (event) {
event.preventDefault();
let userId = this._id;
// take action
console.log("Edit called on: " + userId);
},
"click .deleteUser" (event) {
event.preventDefault();
let userId = this._id;
// take action
console.log("Delete called on : " + userId);
}
});

View file

@ -1,83 +0,0 @@
<template name="createServiceEntity">
<div class="container">
<h3>Create a Service Entity</h3>
<div class="row">
<div class="col s12">
<div class="card">
<div class="card-content">
<span class="card-title">New Service Entity</span>
<div class="row">
<div class="col s12 input-field">
<input type="text" class="entityName" id="entityName">
<label for="entityName">Entity Name</label>
</div>
</div>
<div class="row">
<div class="col s12 input-field">
<input type="text" class="entityAddress" id="entityAddress">
<label for="entityAddress">Address</label>
</div>
</div>
<div class="row">
<div class="col s12 m6 l6 input-field">
<input type="text" class="entityCity" id="entityCity" />
<label for="entityCity">City</label>
</div>
<div class="col s12 m3 l3 input-field">
<input type="text" class="entityState" id="entityState">
<label for="entityState">State</label>
</div>
<div class="col s12 m3 l3 input-field">
<input type="text" class="entityZip" id="entityZip" />
<label for="entityZip">Postal / Zip Code</label>
</div>
</div>
<div class="row">
<div class="col s12 m6 l6 input-field">
<input type="tel" class="entityPhone" id="entityPhone" />
<label for="entityPhone">Primary Phone</label>
</div>
<div class="col s12 m6 l6 input-field">
<input type="email" class="entityEmail" id="entityEmail" />
<label for="entityEmail">Primary Email</label>
</div>
</div>
<div class="row">
<div class="col s12 m6 l6 input-field">
<select name="entityType" id="entityType" class="entityType">
<option value="" disabled selected>Choose One...</option>
<option value="School">School</option>
<option value="Church">Church</option>
<option value="Daycare">Daycare</option>
<option value="Hospital">Hospital</option>
<option value="Elder Care">Elder Care</option>
<option value="Group Home">Group Home</option>
<option value="After School">After School</option>
<option value="Sports Program">Sports Program</option>
<option value="Private School">Private School</option>
</select>
<label for="entityType">Entity Type</label>
</div>
<div class="col s12 m4 l4 input-field">
<input type="text" class="entityCode" id="entityCode" value="{{#if $eq useCodeGen true}}{{codeGen}}{{/if}}"/>
<label for="entityCode">Entity Code</label>
</div>
<div class="col s12 m2 l2">
<a class="waves-effect waves-light btn tooltipped generateEntityCode" data-position="bottom" data-tooltip="Generate Entity Code" id="generateEntityCode"><i class="material-icons">refresh</i></a>
</div>
</div>
<div class="row">
<div class="col s6 m6 l6">
<a class="waves-effect waves-light btn-large orange cancelNewEntity" id="cancelNewEntity">Cancel</a>
</div>
<div class="col s6 m6 l6">
<a class="waves-effect waves-light btn-large green right saveNewEntity" id="saveNewEntity">Save</a>
</div>
</div>
</div>
</div>
</div>
</div>
{{> snackbar}}
</div>
</template>

View file

@ -1,73 +0,0 @@
import { ServiceEntities } from '../../imports/api/serviceentities.js';
Template.createServiceEntity.onCreated(function() {
this.subscribe("ServiceEntities");
});
Template.createServiceEntity.onRendered(function() {
$('select').formSelect();
$('.tooltipped').tooltip();
});
Template.createServiceEntity.helpers({
codeGen: function() {
return Session.get("codeGen");
},
useCodeGen: function() {
return Session.get("useCodeGen");
},
});
Template.createServiceEntity.events({
'click #saveNewEntity' (event) {
event.preventDefault();
let name = $("#entityName").val();
let code = $("#entityCode").val();
let address = $("#entityAddress").val();
let city = $("#entityCity").val();
let state = $("#entityState").val();
let zip = $("#entityZip").val();
let phone = $("#entityPhone").val();
let email = $("#entityEmail").val();
let type = $("#entityType").val();
if (name == "" || name == null || code == "" || code == null) {
Session.set("misReqEnt", true);
} else {
Session.set("misReqEnt", false);
Meteor.call("add.serviceEntity", name, code, address, city, state, zip, phone, email, type, function(err, result) {
if (err) {
console.log(" ERROR adding service entity: " + err);
showSnackbar("Error Adding Service Entity", "red");
} else {
console.log(" SUCCESS: Added Entity Succesfully!");
showSnackbar("Entity Added Successfully", "green");
}
});
}
},
'click #cancelNewEntity' (event) {
event.preventDefault();
$("#entityName").val("");
$("#entityCode").val("");
$("#entityAddress").val("");
$("#entityCity").val("");
$("#entityState").val("");
$("#entityZip").val("");
$("#entityPhone").val("");
$("#entityEmail").val("");
$("#entityType").val("");
},
'click #generateEntityCode' (event) {
event.preventDefault();
let length = 6;
let chars = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
let result = '';
for (let i = length; i > 0; --i) result += chars[Math.floor(Math.random() * chars.length)];
Session.set("codeGen", result);
Session.set("useCodeGen", true);
}
});

View file

@ -1,29 +1,22 @@
<template name="dashboard">
<h2>My Dashboard</h2>
<h4>My Dashboard</h4>
<div class="row">
<div class="col s12 m6">
<div class="card blue-grey darken-1">
<div class="card-content white-text">
<span class="card-title"><h4>My Entities</h4></span>
<div class="row">
<div class="col s8"><i class="large material-icons">business</i></div>
<div class="col s4"><h2>{{entityCount}}</h2></div>
{{#if isInRole 'systemadmin'}}
<div class="col s12 m6 l4">
<div class="card blue-grey darken-1">
<div class="card-content white-text">
<span class="card-title"><h4>Users</h4></span>
<div class="row">
<div class="col s8"><i class="medium material-icons">person</i></div>
<div class="col s4"><h2>{{userCount}}</h2></div>
</div>
</div>
<div class="card-action">
<a href="#" id="usermgmtlink">User Management</a>
</div>
</div>
<div class="card-action">
<a href="#">This is a link</a>
<a href="#">This is a link</a>
</div>
</div>
</div>
{{/if}}
</div>
<h4>My Children</h4>
<h4>My Messages</h4>
<h4>My Approved Persons</h4>
<h4>My Denied Persons</h4>
<h4>My Approved Vehicles</h4>
<h4>My Denied Vehicles</h4>
<h4>My Parents</h4>
</template>

View file

@ -1,7 +1,7 @@
import { ServiceEntities } from "../../imports/api/serviceentities";
Template.dashboard.onCreated(function() {
this.subscribe("ServiceEntities");
});
Template.dashboard.onRendered(function() {
@ -9,11 +9,14 @@ Template.dashboard.onRendered(function() {
});
Template.dashboard.helpers({
entityCount: function() {
return ServiceEntities.find().count();
},
userCount: function() {
return Meteor.users.find().count();
}
});
Template.dashboard.events({
"click #usermgmtlink" (event) {
event.preventDefault();
FlowRouter.go('/userMgmt');
},
});

View file

@ -1,28 +1,6 @@
<template name="home">
<div class="container">
<h1>Welcome to Parent Pickup</h1>
<h3>Goals</h3>
<ul class="collapsible">
<li>
<div class="collapsible-header"><h5><i class="material-icons">child_care</i>Child Safety</h5></div>
<div class="collapsible-body"><span>The safety of our children.</span></div>
</li>
<li>
<div class="collapsible-header"><h5><i class="material-icons">people_outline</i>Identify Safe Pickup People</h5></div>
<div class="collapsible-body"><span>Identify safe persons allowed to pick up your child(ren) from school.</span></div>
</li>
<li>
<div class="collapsible-header"><h5><i class="material-icons">person_outline</i>Identify Safe Visitors</h5></div>
<div class="collapsible-body"><span>Idntify safe persons allowed to visit / interact with your child(ren) at school functions / events.</span></div>
</li>
<li>
<div class="collapsible-header"><h5><i class="material-icons">directions_car</i>Identify Safe Vehicles</h5></div>
<div class="collapsible-body"><span>Identify safe vehicles used to pick up your child(ren) from school.</span></div>
</li>
<li>
<div class="collapsible-header"><h5><i class="material-icons">mood_bad</i>Identify Potential Threats</h5></div>
<div class="collapsible-body"><span>No one likes to talk about threats to our children's safety, but identification of a potential threat can help law enforcement, Staff, and Parents / Guardians remove a threat more effectively.</span></div>
</li>
</ul>
<h4>Welcome to Get My!</h4>
<p class="flow-text">Please login to start using Get My. An open source, self hostable, free to use, modify, re-distribute lit system. Created to make having lists easily available with workflows that you define.</p>
</div>
</template>

View file

@ -3,7 +3,7 @@ Template.home.onCreated(function() {
});
Template.home.onRendered(function() {
$('.collapsible').collapsible();
});
Template.home.helpers({

View file

@ -1,4 +0,0 @@
<template name="messageView">
<h2>Messages</h2>
<p>This is where messages will go once it's built out.</p>
</template>

View file

@ -1,17 +0,0 @@
Template.messageView.onCreated(function() {
});
Template.messageView.onRendered(function() {
});
Template.messageView.helpers({
});
Template.messageView.events({
});

View file

@ -1,57 +1,66 @@
<template name="headerBar">
<ul id="dropLogin" class="dropdown-content">
<li><a href="#!" id="adminmainlogin" class="navBtn">Admin</a></li>
<li><a href="#!" id="teachlogin" class="navBtn">Teacher</a></li>
<li><a href="#!" id="parguarlogin" class="navBtn">Parent / Guardian</a></li>
<li><a href="#!" id="monlogin" class="navBtn">Monitor</a></li>
<ul id="drop-manage" class="dropdown-content">
{{#if isInRole "systemadmin"}}
<li><a href="#!" id="userMgmt" class="navBtn">User Management</a></li>
{{/if}}
<li><a href="#!" id="manageList" class="navBtn">List</a></li>
<li><a href="#!" id="manageCategory" class="navBtn">Category</a></li>
<li><a href="#!" id="manageProduct" class="navBtn">Product</a></li>
<li><a href="#!" id="manageLocation" class="navBtn">Location</a></li>
<li><a href="#!" id="manageStore" class="navBtn">Store</a></li>
<li><a href="#!" id="manageCabinet" class="navBtn">Cabinet</a></li>
<li><a href="#!" id="manageShelf" class="navBtn">Shelf</a></li>
<li><a href="#!" id="manageBin" class="navBtn">Bin</a></li>
</ul>
<nav>
<div class="nav-wrapper blue darken-4">
<a href="#" class="brand-logo" id="brandLogo">Parent Pickup</a>
<a href="#" class="brand-logo" id="brandLogo">Get My</a>
<a href="#" data-target="mobile-demo" class="sidenav-trigger"><i class="material-icons">menu</i></a>
<ul class="right hide-on-med-and-down">
{{#if currentUser}}
<!-- System Admins -->
{{#if isInRole "systemadmin"}}
<li><a href="#" id="createServiceEntity" class="navBtn">Create New Service Entity</a></li>
<li><a href="#" id="mylists" class="navBtn">My Lists</a></li>
{{#if isInRole "admin,systemadmin"}}
<li><a class="dropdown-trigger" href="#!" data-target="drop-manage">Manage<i class="material-icons right">arrow_drop_down</i></a></li>
{{/if}}
<!-- For Parents / Guardians -->
{{#if isInRole "parent"}}
<li><a href="#">Add Trusted People</a></li>
<li><a href="#">Add Trusted Vehicles</a></li>
<li><a href="#">Add Cautions</a></li>
{{/if}}
<li class="signOut"><a href="#" class="signOut">Log Out</a></li>
<li class="signOut"><a href="#" class="signOut">Log Out</a></li>
{{else}}
<li><a class="dropdown-trigger" href="#!" data-target="dropLogin">Login Options<i class="material-icons right">arrow_drop_down</i></a></li>
<li><a href="#!" id="login" class="navBtn">Login</a></li>
{{/if}}
</ul>
</div>
</nav>
<ul class="sidenav" id="mobile-demo">
{{#if currentUser}}
<!-- System Admins -->
{{#if isInRole "systemadmin"}}
<li><a href="#" id="createServiceEntity" class="navBtn">Create New Service Entity</a></li>
{{/if}}
<!-- For Parents / Guardians -->
{{#if isInRole "parent"}}
<li><a href="#">Add Trusted People</a></li>
<li><a href="#">Add Trusted Vehicles</a></li>
<li><a href="#">Add Cautions</a></li>
{{/if}}
<li class="signOut"><a href="#" class="signOut">Log Out</a></li>
{{else}}
<li><a href="#!" id="adminmainlogin" class="navBtn">Admin</a></li>
<li><a href="#!" id="teachlogin" class="navBtn">Teacher</a></li>
<li><a href="#!" id="parguarlogin" class="navBtn">Parent / Guardian</a></li>
<li><a href="#!" id="monlogin" class="navBtn">Monitor</a></li>
{{/if}}
<ul class="collapsible">
<li>
<div class="collapsible-header" id="mylists">My Lists</div>
</li>
{{#if isInRole "admin,systemadmin"}}
<li>
<div class="collapsible-header">Manage<i class="material-icons">down-arrow</i></div>
<div class="collapsible-body">
<ul>
{{#if isInRole "systemadmin"}}
<li><a href="#" id="userMgmt">User Management</a></li>
{{/if}}
<li><a href="#" id="manageList">List</a></li>
<li><a href="#" id="manageCategory">Category</a></li>
<li><a href="#" id="manageProduct">Product</a></li>
<li><a href="#" id="manageLocation">Location</a></li>
<li><a href="#" id="manageStore">Store</a></li>
<li><a href="#" id="manageCabinet">Cabinet</a></li>
<li><a href="#" id="manageShelf">Shelf</a></li>
<li><a href="#" id="manageBin">Bin</a></li>
</ul>
</div>
</li>
{{/if}}
<li>
<div class="collapsible-header signOut">Sign Out</div>
</li>
</ul>
{{else}}
<li><a href="#!" id="login" class="navBtn">Login</a></li>
{{/if}}
</ul>
</template>

View file

@ -8,8 +8,10 @@ Template.headerBar.onRendered(function() {
setTimeout(function() {
$('.sidenav').sidenav();
$(".dropdown-trigger").dropdown();
}, 100)
$('.collapsible').collapsible();
}, 200)
$(".dropdown-trigger").dropdown();
$('.collapsible').collapsible();
});
Template.headerBar.helpers({

View file

@ -3,3 +3,8 @@ body {
font-family: sans-serif;
background-color: #F9FBFC;
}
.clickable, .closeIcon, .dispo {
cursor: pointer;
}