Skip to content

[ADD] profile view #37

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 111 commits into
base: master
Choose a base branch
from
Open
Changes from 4 commits
Commits
Show all changes
111 commits
Select commit Hold shift + click to select a range
2a98544
Initial commit
vsuber Sep 26, 2017
dcd179f
(install) socket.io
vsuber Sep 26, 2017
235f432
(implement) socket.io server-side
vsuber Sep 26, 2017
e8feffd
(implement) socket.io client side
vsuber Sep 26, 2017
1a366e9
(fix) minor syntax issue
vsuber Sep 26, 2017
e6bd03a
(begin) individual event view
vsuber Sep 26, 2017
6cd00df
(implement) individual event view
vsuber Sep 27, 2017
6db9ea4
(add) routing to test event view link
vsuber Sep 27, 2017
cc9171f
(update) individual event view test
vsuber Sep 27, 2017
643da3e
[Fix] facebook auth info: obtain profile picture, age range (21+ or n…
jakepepple Sep 27, 2017
7bcc1f9
Delete package-lock.json
jakepepple Sep 27, 2017
010f584
(add) restful api endpoints for getting events from database
vsuber Sep 27, 2017
b327bca
(add) event image display option
vsuber Sep 27, 2017
d6dd4b2
Merge pull request #3 from jakepepple/fix-facebook-info
Rmatheney7 Sep 27, 2017
95d0f55
[fix] adding duplicate events to DB
jakepepple Sep 27, 2017
7499d41
Merge pull request #4 from jakepepple/fix-duplicate-events
Rmatheney7 Sep 27, 2017
3ab50b3
[Add] profile view and route
Rmatheney7 Sep 27, 2017
a7a71c7
Connecting event service to profile component
Rmatheney7 Sep 27, 2017
54877c2
Merge pull request #11 from Rmatheney7/Profile-event-service
jakepepple Sep 27, 2017
22b36db
(implement) route params by id
vsuber Sep 27, 2017
67b7d4f
(implement) routing params by id
vsuber Sep 27, 2017
4f7965f
(start) implementation of links for events by id
vsuber Sep 27, 2017
7fe5fea
(add) new service to server
vsuber Sep 27, 2017
a4fb353
(implement) individual event view service
vsuber Sep 27, 2017
d3f43d9
(add) individual event view service
vsuber Sep 27, 2017
f8d888a
(add) minor changes
vsuber Sep 27, 2017
c106c63
(render) basic data on page
vsuber Sep 28, 2017
5242b44
(clean up) code
vsuber Sep 28, 2017
a2fcf49
(fix) minor issue with an <a> tag
vsuber Sep 28, 2017
c01191f
(begin) implementation of chat
vsuber Sep 28, 2017
a141fdd
Merge branch 'master' into render-event-data
jakepepple Sep 28, 2017
a102bef
Merge pull request #17 from violet-suber/render-event-data
jakepepple Sep 28, 2017
a28ed10
(fix) required fb fields throwing errors
jakepepple Sep 27, 2017
458bda3
(render) facebook name and image to profile view
jakepepple Sep 28, 2017
51d56d4
Merge pull request #18 from jakepepple/get-profile-info
Rmatheney7 Sep 28, 2017
6b039dd
(improve) add event form
vsuber Sep 28, 2017
c24ec55
(diable) auth temporarily for testing purposes
vsuber Sep 28, 2017
bcac272
(include) other properties of event schema to be saved in database
vsuber Sep 28, 2017
7ae1748
(add) minor change for testing purposes
vsuber Sep 28, 2017
1e5bd8b
(render) new event properties on page
vsuber Sep 28, 2017
762b744
(implement) submit date function
vsuber Sep 28, 2017
09a6f0f
(implement) location submit capability
vsuber Sep 28, 2017
2e67b8d
(render) submitted dates and locations on page
vsuber Sep 28, 2017
d07ab95
(style) entry views
vsuber Sep 28, 2017
473a100
(improve) organization of event view
vsuber Sep 28, 2017
69ea7f2
(add) minor styling changes
vsuber Sep 28, 2017
f3c4c75
Merge pull request #19 from violet-suber/render-event-data
jakepepple Sep 28, 2017
e62aba8
(add) array for attendees to events schema
vsuber Sep 28, 2017
ede2ae8
(fix) minor error from merge
vsuber Sep 28, 2017
9bbe617
(update) stylesheet
vsuber Sep 28, 2017
bcc940a
(update) dependencies
vsuber Sep 28, 2017
7359603
Merge pull request #22 from violet-suber/improve-events
jakepepple Sep 28, 2017
af65e18
[Create] setNotification function, in progress
jakepepple Sep 28, 2017
5c47057
[fix] set SMS notification timing properly, 5PM day before
jakepepple Sep 28, 2017
a1e197b
[Create] route to add user to attending list, first attempt
jakepepple Sep 28, 2017
ff454fa
[refactor] event controller, clean up
jakepepple Sep 28, 2017
a532c1f
Merge pull request #23 from jakepepple/add-to-attending
vsuber Sep 28, 2017
6d90bb0
(begin) post request to attending users endpoint
vsuber Sep 28, 2017
c172128
(fix) endpoint for adding user to event
vsuber Sep 28, 2017
8abe8a6
(fix) post request handler
vsuber Sep 28, 2017
032039a
(fix) http request to add users to event
vsuber Sep 28, 2017
47fbb69
Merge pull request #24 from violet-suber/improve-events
Rmatheney7 Sep 28, 2017
e28227e
(edit) handler to add user name to list instead of ID
vsuber Sep 28, 2017
4701da7
(improve) add to attending array function
vsuber Sep 28, 2017
3c5377c
(render) users attending list
vsuber Sep 29, 2017
ba69415
(fix) handler so user cannot be added more than once to event
vsuber Sep 29, 2017
b37c9e5
Merge pull request #25 from violet-suber/improve-events
Rmatheney7 Sep 29, 2017
5335c0d
(add) new files to gitignore
vsuber Sep 29, 2017
075d976
(fix) bug - only logged in users can add themselves to events
vsuber Sep 29, 2017
c7d9927
Changed event service method in profile
Rmatheney7 Sep 27, 2017
610c02d
[improve] Profile View
Rmatheney7 Sep 28, 2017
06a8664
[Add] Events populate on profile view
Rmatheney7 Sep 28, 2017
63e2dd1
Changed event service method in profile
Rmatheney7 Sep 27, 2017
5b88f5a
[improve] Profile View
Rmatheney7 Sep 28, 2017
ee89ef0
[add] profile showing only user events
Rmatheney7 Sep 28, 2017
b406379
[add] button for event notification
Rmatheney7 Sep 28, 2017
450b069
[fix] profile componenent
Rmatheney7 Sep 28, 2017
158a087
[update] searches for events by user name
Rmatheney7 Sep 28, 2017
28872c8
rebase continued
Rmatheney7 Sep 29, 2017
7569e9d
[fix] lost files on rebase
Rmatheney7 Sep 29, 2017
b348695
Merge pull request #26 from Rmatheney7/fixRebase
vsuber Sep 29, 2017
def5f53
[Create] message schema and table in database
jakepepple Sep 29, 2017
b4bf4da
[Fix] bug in creating multiple events when adding attendees
jakepepple Sep 29, 2017
669deba
Merge pull request #27 from jakepepple/implement-chat
vsuber Sep 29, 2017
1ee1be8
(implement) basic twilio tutorial code
vsuber Sep 29, 2017
d174c00
(fix) minor bug for appointments schema
vsuber Sep 29, 2017
ce564c6
Merge branch 'master' into basic-twilio
jakepepple Sep 29, 2017
6a6955b
Merge pull request #28 from violet-suber/basic-twilio
jakepepple Sep 29, 2017
b3a425f
(add) enable notifications form
vsuber Sep 29, 2017
4e67e54
(fix) html problem
vsuber Sep 29, 2017
e821738
Merge pull request #29 from violet-suber/notif-form
jakepepple Sep 29, 2017
79a0393
(add) basic functionality to the notificiation form
vsuber Sep 29, 2017
4efaace
Merge pull request #30 from violet-suber/notif-form
jakepepple Sep 29, 2017
7c13c64
[Create] message post on event page
jakepepple Sep 29, 2017
b9c054f
[Merge] changes from upstream
jakepepple Sep 29, 2017
dc6095e
[Fix] event submit form
jakepepple Sep 29, 2017
e8adde7
Merge pull request #31 from jakepepple/fix-event-creation
vsuber Sep 29, 2017
1297e80
(implement) twilio
vsuber Sep 29, 2017
c3802c0
(clean up unnecessary code)
vsuber Sep 29, 2017
dba858a
Merge pull request #32 from violet-suber/twilio-after-rebase
jakepepple Sep 29, 2017
7d12160
(complete) SMS notifications
vsuber Sep 29, 2017
d5a2dbf
Merge pull request #33 from violet-suber/twilio-after-rebase
jakepepple Sep 29, 2017
a025107
[Fix] div problem on event view
jakepepple Sep 29, 2017
d61026f
(add) style changes and render header on every page
vsuber Sep 30, 2017
20c9ccc
[Refactor] login, hide profile button if not logged in, vice versa fo…
jakepepple Sep 30, 2017
dcc6e05
[delete] set reminder button from profile events
jakepepple Sep 30, 2017
ae28d3e
Update README.md
jakepepple Sep 30, 2017
65e1a2d
Merge pull request #34 from jakepepple/code-cleanup
vsuber Sep 30, 2017
87f8ef5
(improve) profile page
vsuber Sep 30, 2017
3157490
Merge branch 'master' into fix-styling-after-rebase
jakepepple Sep 30, 2017
f218ea4
Merge pull request #35 from violet-suber/fix-styling-after-rebase
jakepepple Sep 30, 2017
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 0 additions & 5 deletions client/app.module.ts
Original file line number Diff line number Diff line change
@@ -12,18 +12,13 @@ import { EviewComponent } from './eview.component';
import { APP_ROUTES_PROVIDER } from './app.routes';
import { ProfileComponent } from './profile.component';
import { ProfileButtonComponent } from './profile-button.component';
// import { FormGroup } from '@angular/forms';
// import { FormControl } from '@angular/forms';

@NgModule({
imports: [
BrowserModule,
HttpModule,
JsonpModule,
FormsModule,
ReactiveFormsModule
// FormGroup,
// FormControl
],
declarations: [
AppComponent,
31 changes: 0 additions & 31 deletions client/chat.js

This file was deleted.

48 changes: 38 additions & 10 deletions client/event-form.component.ts
Original file line number Diff line number Diff line change
@@ -1,10 +1,12 @@
// template for event-form. No functionality added to event services.
import { Component } from '@angular/core';

import { FormGroup, FormControl} from '@angular/forms';
import { EvindService } from './evind.service';
@Component({
selector: 'event-form',
providers: [EvindService],
template: `
<form class="form-horizontal" action="/api/events" method="post">
<form [formGroup]="form" (ngSubmit)="postEvent()" class="form-horizontal" action="/api/events" method="post">
<fieldset>

<!-- Form Name -->
@@ -15,7 +17,7 @@ import { Component } from '@angular/core';
<div class="form-group">
<label class="col-md-4 control-label" for="title">Event Name</label>
<div class="col-md-5">
<input id="title" name="title" type="text" placeholder="My event" class="form-control input-md">
<input formControlName="title" id="title" name="title" type="text" placeholder="My event" class="form-control input-md">

</div>
</div>
@@ -24,7 +26,7 @@ import { Component } from '@angular/core';
<div class="form-group">
<label class="col-md-4 control-label" for="eventDate">Event Date</label>
<div class="col-md-5">
<input id="eventDate" name="eventDate" type="date" placeholder="" class="form-control input-md">
<input formControlName="eventDate" id="eventDate" name="eventDate" type="date" placeholder="" class="form-control input-md">

</div>
</div>
@@ -33,7 +35,7 @@ import { Component } from '@angular/core';
<div class="form-group">
<label class="col-md-4 control-label" for="location">Event Location</label>
<div class="col-md-5">
<input id="location" name="location" type="text" placeholder="Location" class="form-control input-md">
<input formControlName="location" id="location" name="location" type="text" placeholder="Location" class="form-control input-md">

</div>
</div>
@@ -42,15 +44,15 @@ import { Component } from '@angular/core';
<div class="form-group">
<label class="col-md-4 control-label" for="description">Description</label>
<div class="col-md-3">
<textarea class="form-control" id="description" placeholder="..." name="description"></textarea>
<textarea formControlName="description" class="form-control" id="description" placeholder="..." name="description"></textarea>
</div>
</div>

<!-- Text input-->
<div class="form-group">
<label class="col-md-4 control-label" for="link">Event Link</label>
<div class="col-md-5">
<input id="link" name="link" type="text" placeholder="www.event.com" class="form-control input-md">
<input formControlName="link" id="link" name="link" type="text" placeholder="www.event.com" class="form-control input-md">

</div>
</div>
@@ -59,7 +61,7 @@ import { Component } from '@angular/core';
<div class="form-group">
<label class="col-md-4 control-label" for="imgUrl">Image Link</label>
<div class="col-md-5">
<input id="imgUrl" name="imgUrl" type="text" placeholder="www.event.com/picture.jpg" class="form-control input-md">
<input formControlName="imgUrl" id="imgUrl" name="imgUrl" type="text" placeholder="www.event.com/picture.jpg" class="form-control input-md">

</div>
</div>
@@ -69,12 +71,38 @@ import { Component } from '@angular/core';
<div class="form-group">
<label class="col-md-4 control-label" for="submit"></label>
<div class="col-md-4">
<button id="submit" name="submit" class="btn btn-primary">Submit</button>
<button id="submit" name="submit" type="submit" class="btn btn-primary">Submit</button>
</div>
</div>

</fieldset>
</form>`
})

export class EventFormComponent { }
export class EventFormComponent {
form = new FormGroup({
title: new FormControl(),
location: new FormControl(),
link: new FormControl(),
eventDate: new FormControl(),
description: new FormControl(),
imgUrl: new FormControl(),
});
constructor(private _httpService: EvindService) {

}
postEvent() {
let eventToSend = {
title: this.form.value.title,
location: this.form.value.location,
link: this.form.value.link,
eventDate: this.form.value.eventDate,
description: this.form.value.description,
imgUrl: this.form.value.imgUrl
}
console.log(eventToSend);
this._httpService.postEvent(eventToSend).subscribe((res) => {
console.log('event posted');
})
}
}
80 changes: 65 additions & 15 deletions client/eview.component.ts
Original file line number Diff line number Diff line change
@@ -45,22 +45,30 @@ import { FormControl } from '@angular/forms';
</form>
</div>
</div>
<button (click)="toggleChat()">{{showChatText}}</button>
<div *ngIf="showChat">
<div id="chatroom">
<div class="chatheader">Event Chat Room</div><br>
<div id="chat-window">
<div id="output"></div>
<div id="feedback"></div>

<button (click)="toggleChat()">{{showChatText}}</button>
<div *ngIf="showChat">
<div id="chatroom">
<div class="chatheader">Event Chat Room</div><br>
<div id="chat-window">
<div id="output">
<ul>
<li *ngFor="let message of messages">
<b>{{message.handle}}</b>: {{message.message}}
</li>
</ul>
</div>
<input id="handle" type="text" placeholder="Handle" />
<input id="message" type="text" placeholder="Message" />
<button id="send">Send</button>
<div id="feedback"></div>
</div>
<form [formGroup]="form" (ngSubmit)="postMessage()">
<input formControlName="handle" placeholder="Handle">
<input formControlName="message" placeholder="Message">
<button type="submit">Send</button>
</form>
</div>
<div class="entryBackLink"><a routerLink="/">Back</a></div>
</div> `

</div>
<div class="entryBackLink"><a routerLink="/">Back</a></div>
</div> `
})

export class EviewComponent {
@@ -82,6 +90,13 @@ export class EviewComponent {
name: string;
image: string;
userID: string;
messages: any[];
form = new FormGroup({
handle: new FormControl(),
message: new FormControl(),
})



appointment = new FormGroup({
phoneNumber: new FormControl('phoneNumber')
@@ -131,7 +146,10 @@ export class EviewComponent {
console.error(error);
}, () => {
console.log('complete');
});
})



}
handleAttend() {
if (this.name) {
@@ -149,6 +167,7 @@ export class EviewComponent {
} else {
this.showChat = true;
this.showChatText = 'Hide event chat room';
this.getMessages();
}
}
notiForm() {
@@ -158,4 +177,35 @@ export class EviewComponent {
this.shownotiForm = true;
}
}
}

getMessages() {
this._httpService.getMessages().subscribe((messages) => {
let mapped = messages.filter((message) => {
return message.event === this.eventName;
})
this.messages = mapped;
}, (err) => {
console.log(err);
}, () => {
console.log('messages received,', this.messages);
})
}

postMessage() {
console.log(this.form.get('handle'), this.form.get('name'));
let messageToSend = {
handle: this.form.value.handle,
message: this.form.value.message,
event: this.eventName,
}
this.messages.push(messageToSend);
this._httpService.postMessage(messageToSend).subscribe(() => {
console.log('Successful POST request');
}, error => {
console.error(error);
}, () => {
console.log('Request complete');
});
}

}
20 changes: 20 additions & 0 deletions client/evind.service.ts
Original file line number Diff line number Diff line change
@@ -20,4 +20,24 @@ export class EvindService {
return res.json();
});
}

getMessages() {
return this._http.get('messages')
.map(res => {
return res.json();
})
}

postMessage(message) {
return this._http.post('messages', message)
.map(res => {
return res.json();
})
}
postEvent(event) {
return this._http.post('api/events/', event)
.map(res => {
return res;
})
}
}
3 changes: 1 addition & 2 deletions client/index.html
Original file line number Diff line number Diff line change
@@ -45,7 +45,6 @@ <h2>Test Chat</h2>
});
</script>
<!-- 3. Add socket.io -->
<script src="https://cdnjs.cloudflare.com/ajax/libs/socket.io/2.0.3/socket.io.js"></script>
<script src="chat.js"></script>

</body>
</html>
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
@@ -50,6 +50,7 @@
"feedme": "^0.3.2",
"jquery": "^3.1.0",
"moment": "^2.18.1",
"moment-timezone": "^0.5.13",
"mongodb": "^2.2.5",
"mongoose": "^4.5.8",
"mongoose-findorcreate": "^2.0.0",
@@ -62,7 +63,6 @@
"request": "^2.74.0",
"request-promise": "^4.1.1",
"rxjs": "5.0.0-beta.6",
"socket.io": "^2.0.3",
"systemjs": "0.19.27",
"typescript": "^1.8.10",
"typings": "^1.0.4",
28 changes: 27 additions & 1 deletion server/handlers/index.js
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
const Event = require('../models/Event.js');
const Message = require('../models/Message');
const saveEvent = require('../controllers/eventcontroller');
const passport = require('passport');

module.exports = {
getEvents: (req, res) => {
@@ -48,5 +48,31 @@ module.exports = {
}
});
}
},
addMessage: (req, res, next) => {
console.log(req.body);
let incomingMessage = req.body;
Message.create({
handle: incomingMessage.handle,
message: incomingMessage.message,
event: incomingMessage.event,
}, (err, message) => {
if (err) {
console.log(err);
res.status(500).send('error posting message');
} else {
res.status(201).send(message);
}
});
},
getMessages: (req, res) => {
Message.find({}, (err, messages) => {
if (err) {
console.log(err);
res.status(500).send('error getting messages');
} else {
res.status(200).send(messages);
}
});
}
};
90 changes: 49 additions & 41 deletions server/index.js
Original file line number Diff line number Diff line change
@@ -8,12 +8,12 @@ const session = require('express-session');
const handlers = require('./handlers');
const rss = require('./rss.js');
const fbAuth = require('./config/facebook_passport');
const socket = require('socket.io');
// const socket = require('socket.io');
const path = require('path');
const momentTimeZone = require('moment-timezone');
const moment = require('moment');
const router = new express.Router();
require('dotenv').config();

require('./dbConnect');
require('./config/passport')(passport);

@@ -212,6 +212,11 @@ app.get('/events/:id', (req, res) => {
//add user to event
app.post('/adduser', handlers.addToAttending);

// Add to message board
app.post('/messages', handlers.addMessage);

app.get('/messages', handlers.getMessages);

// Catch all other routes and return the index file
app.get('*', (req, res) => {
res.sendFile(path.join(__dirname, '../client/index.html'));
@@ -221,44 +226,47 @@ const server = app.listen(port, () => {
console.log(`Listening on port: ${port}`);
});

// Socket
const io = socket(server);

io.on('connection', (socket) => {
console.log('made socket connection');
console.log('socket', socket.id);
socket.on('open', (data) => {
Message.find({ event: data.event }, (err, messages) => {
if (err) {
console.log(err);
} else {
messages.forEach((message) => {
const messageToSend = {
handle: message.handle,
message: message.message,
event: message.event,
};
socket.emit('chat', messageToSend);
});
}
});
});
socket.on('chat', (data) => {
Message.create({
handle: data.handle,
message: data.message,
event: data.event
}, (err, message) => {
if (err) {
console.log(err);
} else {
io.sockets.emit('chat', data);
}
});
});

socket.on('typing', (data) => {
socket.broadcast.emit('typing', data);
});
});


// Socket (Eventually...)
// const io = socket(server);

// io.on('connection', (socket) => {
// console.log('made socket connection');
// console.log('socket', socket.id);
// socket.on('open', (data) => {
// Message.find({ event: data.event }, (err, messages) => {
// if (err) {
// console.log(err);
// } else {
// messages.forEach((message) => {
// const messageToSend = {
// handle: message.handle,
// message: message.message,
// event: message.event,
// };
// socket.emit('chat', messageToSend);
// });
// }
// });
// });
// socket.on('chat', (data) => {
// Message.create({
// handle: data.handle,
// message: data.message,
// event: data.event
// }, (err, message) => {
// if (err) {
// console.log(err);
// } else {
// io.sockets.emit('chat', data);
// }
// });
// });

// socket.on('typing', (data) => {
// socket.broadcast.emit('typing', data);
// });
// });

22 changes: 11 additions & 11 deletions server/models/Message.js
Original file line number Diff line number Diff line change
@@ -9,17 +9,17 @@ const messageSchema = new Schema({
});

const Message = mongoose.model('Message', messageSchema);
// TEST MESSAGE CREATION AND SAVE
// const testMessage = new Message({
// handle: 'Jake',
// message: 'I am a test',
// event: 'coding frenzy',
// });

const testMessage = new Message({
handle: 'Jake',
message: 'I am a test',
event: 'coding frenzy',
});

testMessage.save((err) => {
if (err) {
console.log(err);
}
});
// testMessage.save((err) => {
// if (err) {
// console.log(err);
// }
// });

module.exports = Message;