Merge branch 'master' of https://github.com/sagidayan/SE-Hub into API_Dev
This commit is contained in:
commit
ec1eacb3cd
31 changed files with 1296 additions and 533 deletions
|
@ -139,12 +139,12 @@ def send_activation(token):
|
||||||
return Response(status=200)
|
return Response(status=200)
|
||||||
|
|
||||||
@app.route('/api/help')
|
@app.route('/api/help')
|
||||||
def documentation():
|
def documentation_index():
|
||||||
return app.send_static_file('API_Doc/api_doc_index.html')
|
return app.send_static_file('API_Doc/api_doc_index.html')
|
||||||
|
|
||||||
# @app.route('/api/help/campuses')
|
@app.route('/api/help/misc')
|
||||||
# def documentation():
|
def documentation_misc():
|
||||||
# return auto.html()
|
return auto.html()
|
||||||
|
|
||||||
@app.route('/home')
|
@app.route('/home')
|
||||||
def returnHome():
|
def returnHome():
|
||||||
|
|
|
@ -192,7 +192,65 @@ def getCampusesByUser(token):
|
||||||
return bad_request("Bad user Token")
|
return bad_request("Bad user Token")
|
||||||
|
|
||||||
arr = []
|
arr = []
|
||||||
for i in user['campuses_id_list']:
|
for i in user.campuses_id_list:
|
||||||
|
campus = Campus.get_by_id(int(i))
|
||||||
|
arr.append(dict(json.loads(campus.to_JSON())))
|
||||||
|
|
||||||
|
if len(arr) != 0:
|
||||||
|
return Response(response=json.dumps(arr),
|
||||||
|
status=200,
|
||||||
|
mimetype="application/json")
|
||||||
|
else:
|
||||||
|
return Response(response=[],
|
||||||
|
status=200,
|
||||||
|
mimetype="application/json")
|
||||||
|
|
||||||
|
@campus_routes.route('/api/campuses/getCampusesByUserID/', defaults={'token': None, 'id': None})
|
||||||
|
@campus_routes.route('/api/campuses/getCampusesByUserID/<string:token>/<string:id>', methods=['GET'])
|
||||||
|
@auto.doc()
|
||||||
|
def getCampusesByUserID(token, id):
|
||||||
|
"""
|
||||||
|
<span class="card-title">This Call will return an array of all Campuses of a certain User By ID</span>
|
||||||
|
<br>
|
||||||
|
<b>Route Parameters</b><br>
|
||||||
|
- token: 'seToken' of requesting user
|
||||||
|
- The ID of <b>Wanted</b> User Campuses
|
||||||
|
<br>
|
||||||
|
<br>
|
||||||
|
<b>Payload</b><br>
|
||||||
|
- NONE <br>
|
||||||
|
<br>
|
||||||
|
<br>
|
||||||
|
<b>Response</b>
|
||||||
|
<br>
|
||||||
|
200 - JSON Array, Example:<br>
|
||||||
|
[<br>
|
||||||
|
{
|
||||||
|
'title': 'JCE',<br>
|
||||||
|
'email_ending': '@post.jce.ac.il',<br>
|
||||||
|
'master_user_id': 123453433341, (User that created the campus)<br>
|
||||||
|
'avatar_url': 'http://some.domain.com/imagefile.jpg',<br>
|
||||||
|
'id' : 1234567890<br>
|
||||||
|
},<br>
|
||||||
|
....<br>
|
||||||
|
{<br>
|
||||||
|
...<br>
|
||||||
|
}req<br>
|
||||||
|
]<br>
|
||||||
|
<br>
|
||||||
|
403 - Invalid Token<br>
|
||||||
|
"""
|
||||||
|
|
||||||
|
user = get_user_by_token(token)
|
||||||
|
if user is None:
|
||||||
|
return forbidden("Invalid Token")
|
||||||
|
|
||||||
|
user = get_user_by_id(int(id))
|
||||||
|
if user is None:
|
||||||
|
return no_content("No User")
|
||||||
|
|
||||||
|
arr = []
|
||||||
|
for i in user.campuses_id_list:
|
||||||
campus = Campus.get_by_id(int(i))
|
campus = Campus.get_by_id(int(i))
|
||||||
arr.append(dict(json.loads(campus.to_JSON())))
|
arr.append(dict(json.loads(campus.to_JSON())))
|
||||||
|
|
||||||
|
|
|
@ -259,7 +259,7 @@ def getCampusesByUser(token, campusId):
|
||||||
|
|
||||||
|
|
||||||
arr = []
|
arr = []
|
||||||
for i in user['courses_id_list']:
|
for i in user.courses_id_list:
|
||||||
course = Course.get_by_id(int(i))
|
course = Course.get_by_id(int(i))
|
||||||
if course.campusId == campus.key().id():
|
if course.campusId == campus.key().id():
|
||||||
arr.append(dict(json.loads(course.to_JSON())))
|
arr.append(dict(json.loads(course.to_JSON())))
|
||||||
|
@ -269,7 +269,7 @@ def getCampusesByUser(token, campusId):
|
||||||
status=200,
|
status=200,
|
||||||
mimetype="application/json")
|
mimetype="application/json")
|
||||||
else:
|
else:
|
||||||
return Response(response=[],
|
return Response(response='[]',
|
||||||
status=200,
|
status=200,
|
||||||
mimetype="application/json")
|
mimetype="application/json")
|
||||||
|
|
||||||
|
|
|
@ -269,6 +269,66 @@ def getUserByToken(token):
|
||||||
status=200,
|
status=200,
|
||||||
mimetype="application/json") # Real response!
|
mimetype="application/json") # Real response!
|
||||||
|
|
||||||
|
return no_content("No User Found")
|
||||||
|
|
||||||
|
@user_routes.route('/api/users/getUserById/', defaults={'token': None, 'id': None})
|
||||||
|
@user_routes.route('/api/users/getUserById/<string:token>/<string:id>', methods=["GET"])
|
||||||
|
@auto.doc()
|
||||||
|
def getUserById(token, id):
|
||||||
|
"""
|
||||||
|
<span class="card-title">>This Call will return a user by a given UserId</span>
|
||||||
|
<br>
|
||||||
|
<b>Route Parameters</b><br>
|
||||||
|
- seToken: 'seToken'
|
||||||
|
<br>
|
||||||
|
<br>
|
||||||
|
<b>Payload</b><br>
|
||||||
|
- NONE
|
||||||
|
<br>
|
||||||
|
<br>
|
||||||
|
<b>Response</b>
|
||||||
|
<br>
|
||||||
|
200 - JSON Example:<br>
|
||||||
|
<code>
|
||||||
|
{<br>
|
||||||
|
'username': 'DarkLord',<br>
|
||||||
|
'name': 'Darth Vader',<br>
|
||||||
|
'email': 'darkLord@death.planet,<br>
|
||||||
|
'isLecturer': 'True',<br>
|
||||||
|
'seToken': 'xxxxxx-xxxxx-xxxxx-xxxxxx',<br>
|
||||||
|
'avatar_url': 'http://location.git.com/somthing'<br>
|
||||||
|
'isFirstLogin': False,<br>
|
||||||
|
'campuses_id_list': [{<br>
|
||||||
|
'master_user_id': 111,<br>
|
||||||
|
'id': 5629499534213120,<br>
|
||||||
|
'email_ending': "@post.jce.ac.il",<br>
|
||||||
|
'avatar_url': "https://yt3.ggpht.com/--ZkWxybWGOM/AAAAAAAAAAI/AAAAAAAAAAA/_nAICC_kzzI/s88-c-k-no/photo.jpg",<br>
|
||||||
|
'title': "JCE"
|
||||||
|
}],<br>
|
||||||
|
'courses_id_list': ['a','b','c'],<br>
|
||||||
|
'id': 234253523<br>
|
||||||
|
}<br>
|
||||||
|
</code>
|
||||||
|
<br>
|
||||||
|
403 - No User Found
|
||||||
|
"""
|
||||||
|
if token is None or id is None:
|
||||||
|
return no_content("No Token/ID, No User Found")
|
||||||
|
|
||||||
|
if get_user_by_token(token) is None:
|
||||||
|
return forbidden('Invalid Token')
|
||||||
|
|
||||||
|
u = get_user_by_id(int(id))
|
||||||
|
if u is None:
|
||||||
|
return no_content('No user Found')
|
||||||
|
|
||||||
|
for index, c in enumerate(u.campuses_id_list):
|
||||||
|
c = json.loads(Campus.get_by_id(int(c)).to_JSON())
|
||||||
|
u.campuses_id_list[index] = c
|
||||||
|
|
||||||
|
return Response(response=u.to_JSON(),
|
||||||
|
status=200,
|
||||||
|
mimetype="application/json") # Real response!
|
||||||
|
|
||||||
return no_content("No User Found")
|
return no_content("No User Found")
|
||||||
|
|
||||||
|
|
|
@ -13,6 +13,10 @@ def get_user_by_token(token):
|
||||||
return u
|
return u
|
||||||
return None
|
return None
|
||||||
|
|
||||||
|
def get_user_by_id(id):
|
||||||
|
u = User.get_by_id(id)
|
||||||
|
return u
|
||||||
|
|
||||||
def get_campus_by_campusName(campusName):
|
def get_campus_by_campusName(campusName):
|
||||||
query = Campus.all()
|
query = Campus.all()
|
||||||
query.filter("title = ", campusName)
|
query.filter("title = ", campusName)
|
||||||
|
|
|
@ -27,6 +27,7 @@ class User(db.Model):
|
||||||
'campusName': self.campusName,
|
'campusName': self.campusName,
|
||||||
'campuses_id_list': self.campuses_id_list,
|
'campuses_id_list': self.campuses_id_list,
|
||||||
'courses_id_list': self.courses_id_list,
|
'courses_id_list': self.courses_id_list,
|
||||||
'projects_id_list': self.projects_id_list
|
'projects_id_list': self.projects_id_list,
|
||||||
|
'id' : self.key().id()
|
||||||
}
|
}
|
||||||
return json.dumps(data)
|
return json.dumps(data)
|
||||||
|
|
|
@ -54,8 +54,8 @@
|
||||||
SE-Hub Docs Index
|
SE-Hub Docs Index
|
||||||
</h1>
|
</h1>
|
||||||
|
|
||||||
|
<center>
|
||||||
<div>
|
<div style="width: 40%">
|
||||||
<ul class="collection">
|
<ul class="collection">
|
||||||
<li class="collection-item dismissable"><div>Users Related API<a href="/api/users/help" class="secondary-content"><i class="mdi-content-send"></i></a></div></li>
|
<li class="collection-item dismissable"><div>Users Related API<a href="/api/users/help" class="secondary-content"><i class="mdi-content-send"></i></a></div></li>
|
||||||
<li class="collection-item dismissable"><div>Campuses Related API<a href="/api/campuses/help" class="secondary-content"><i class="mdi-content-send"></i></a></div></li>
|
<li class="collection-item dismissable"><div>Campuses Related API<a href="/api/campuses/help" class="secondary-content"><i class="mdi-content-send"></i></a></div></li>
|
||||||
|
@ -64,9 +64,10 @@
|
||||||
<li class="collection-item dismissable"><div>Tasks Related API<a href="/api/tasks/help" class="secondary-content"><i class="mdi-content-send"></i></a></div></li>
|
<li class="collection-item dismissable"><div>Tasks Related API<a href="/api/tasks/help" class="secondary-content"><i class="mdi-content-send"></i></a></div></li>
|
||||||
<li class="collection-item dismissable"><div>Messages Related API<a href="/api/messages/help" class="secondary-content"><i class="mdi-content-send"></i></a></div></li>
|
<li class="collection-item dismissable"><div>Messages Related API<a href="/api/messages/help" class="secondary-content"><i class="mdi-content-send"></i></a></div></li>
|
||||||
<li class="collection-item dismissable"><div>Validation Related API<a href="#!" class="secondary-content"><i class="mdi-content-send"></i></a></div></li>
|
<li class="collection-item dismissable"><div>Validation Related API<a href="#!" class="secondary-content"><i class="mdi-content-send"></i></a></div></li>
|
||||||
|
<li class="collection-item dismissable"><div>Miscellaneous Methods<a href="/api/help/misc" class="secondary-content"><i class="mdi-content-send"></i></a></div></li>
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
|
</center>
|
||||||
<footer class="page-footer">
|
<footer class="page-footer">
|
||||||
<div class="container">
|
<div class="container">
|
||||||
<div class="row">
|
<div class="row">
|
||||||
|
|
|
@ -151,6 +151,38 @@ body.noscroll
|
||||||
/*width: 100%;*/
|
/*width: 100%;*/
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*.hvr-curl-top-left {
|
||||||
|
display: inline-block;
|
||||||
|
vertical-align: middle;
|
||||||
|
-webkit-transform: translateZ(0);
|
||||||
|
transform: translateZ(0);
|
||||||
|
box-shadow: 0 0 1px rgba(0, 0, 0, 0);
|
||||||
|
-webkit-backface-visibility: hidden;
|
||||||
|
backface-visibility: hidden;
|
||||||
|
-moz-osx-font-smoothing: grayscale;
|
||||||
|
position: relative;
|
||||||
|
}*/
|
||||||
|
|
||||||
|
/* Grow Rotate */
|
||||||
|
/*.campusCard {
|
||||||
|
display: inline-block;
|
||||||
|
vertical-align: middle;
|
||||||
|
-webkit-transform: translateZ(0);
|
||||||
|
transform: translateZ(0);
|
||||||
|
box-shadow: 0 0 1px rgba(0, 0, 0, 0);
|
||||||
|
-webkit-backface-visibility: hidden;
|
||||||
|
backface-visibility: hidden;
|
||||||
|
-moz-osx-font-smoothing: grayscale;
|
||||||
|
-webkit-transition-duration: 0.3s;
|
||||||
|
transition-duration: 0.3s;
|
||||||
|
-webkit-transition-property: transform;
|
||||||
|
transition-property: transform;
|
||||||
|
}*/
|
||||||
|
.campusCard:hover, .campusCard:focus, .campusCard:active {
|
||||||
|
-webkit-transform: rotate(4deg);
|
||||||
|
transform: rotate(4deg);
|
||||||
|
}
|
||||||
|
|
||||||
/*.feedMessages
|
/*.feedMessages
|
||||||
{
|
{
|
||||||
overflow: scroll;
|
overflow: scroll;
|
||||||
|
@ -197,6 +229,18 @@ body.noscroll
|
||||||
border-radius: 1px black solid;
|
border-radius: 1px black solid;
|
||||||
}*/
|
}*/
|
||||||
|
|
||||||
|
.allCampusesShow
|
||||||
|
{
|
||||||
|
overflow:hidden;
|
||||||
|
background-size: auto;
|
||||||
|
|
||||||
|
}
|
||||||
|
.campusCard
|
||||||
|
{
|
||||||
|
/*height:80%;*/
|
||||||
|
/*width:80%;*/
|
||||||
|
}
|
||||||
|
|
||||||
.gray-font
|
.gray-font
|
||||||
{
|
{
|
||||||
color: #7f7f7f;
|
color: #7f7f7f;
|
||||||
|
@ -397,6 +441,11 @@ body.noscroll
|
||||||
border-color: solid red;
|
border-color: solid red;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.cardAllCampuses
|
||||||
|
{
|
||||||
|
word-break: break-word;
|
||||||
|
}
|
||||||
|
|
||||||
.addMessage
|
.addMessage
|
||||||
{
|
{
|
||||||
font-size: 2em;
|
font-size: 2em;
|
||||||
|
|
|
@ -38,15 +38,15 @@ app.config(['$routeProvider', '$locationProvider',
|
||||||
templateUrl: 'templates/views/home.html',
|
templateUrl: 'templates/views/home.html',
|
||||||
controller: 'homeController'
|
controller: 'homeController'
|
||||||
})
|
})
|
||||||
.when('/Settings', {
|
.when('/profile/:id', {
|
||||||
templateUrl: 'templates/views/settings.html',
|
templateUrl: 'templates/views/profile.html',
|
||||||
controller: 'settingsController'
|
controller: 'profileController'
|
||||||
})
|
})
|
||||||
.when('/tasks', {
|
.when('/tasks', {
|
||||||
templateUrl: 'templates/views/tasks.html',
|
templateUrl: 'templates/views/tasks.html',
|
||||||
controller: 'tasksController'
|
controller: 'tasksController'
|
||||||
})
|
})
|
||||||
.when('/myClasses', {
|
.when('/myClasses/:campusId', {
|
||||||
templateUrl: 'templates/views/myClasses.html',
|
templateUrl: 'templates/views/myClasses.html',
|
||||||
controller: 'myClassesController'
|
controller: 'myClassesController'
|
||||||
})
|
})
|
||||||
|
@ -54,13 +54,21 @@ app.config(['$routeProvider', '$locationProvider',
|
||||||
templateUrl: 'templates/views/newTask.html',
|
templateUrl: 'templates/views/newTask.html',
|
||||||
controller: 'newTasksController'
|
controller: 'newTasksController'
|
||||||
})
|
})
|
||||||
.when('/projects', {
|
.when('/projects/:classId', {
|
||||||
templateUrl: 'templates/views/projects.html',
|
templateUrl: 'templates/views/projects.html',
|
||||||
controller: 'projectsController'
|
controller: 'projectsController'
|
||||||
})
|
})
|
||||||
.when('/newCourse', {
|
.when('/newCourse', {
|
||||||
templateUrl: 'templates/views/newCourse.html',
|
templateUrl: 'templates/views/newCourse.html',
|
||||||
controller: 'newCourseController'
|
controller: 'newCourseController'
|
||||||
|
})
|
||||||
|
.when('/campuses', {
|
||||||
|
templateUrl: 'templates/views/campuses.html',
|
||||||
|
controller: 'campusesController'
|
||||||
|
})
|
||||||
|
.when('/myProjects', {
|
||||||
|
templateUrl: 'templates/views/myProjects.html',
|
||||||
|
controller: 'thisProjectController'
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
]);
|
]);
|
||||||
|
|
58
templates/js/controllers/campusesController.js
Normal file
58
templates/js/controllers/campusesController.js
Normal file
|
@ -0,0 +1,58 @@
|
||||||
|
angular.module('SeHub')
|
||||||
|
.controller('campusesController', ['$scope', '$cookies', '$cookieStore', '$window', '$location', '$mdToast', '$mdDialog', 'apiService', '$rootScope', function($scope, $cookies, $cookieStore, $window, $location, $mdToast, $mdDialog, apiService, $rootScope)
|
||||||
|
{
|
||||||
|
$scope.threeSizedArray =[];
|
||||||
|
$scope.campusesEmpty = false;
|
||||||
|
var token = $cookies['com.sehub.www'];
|
||||||
|
|
||||||
|
var init = function()
|
||||||
|
{
|
||||||
|
$scope.threeSizedArray = [];
|
||||||
|
var tempArr = [];
|
||||||
|
var sizeOfSmallArrays = 3;
|
||||||
|
for (var i = 0 ; i < $scope.campuses.length ; i++) {
|
||||||
|
if(i % sizeOfSmallArrays !== 0){
|
||||||
|
tempArr.push($scope.campuses[i]);
|
||||||
|
}else{
|
||||||
|
if(i !== 0){
|
||||||
|
$scope.threeSizedArray.push(tempArr);
|
||||||
|
tempArr = [];
|
||||||
|
tempArr.push($scope.campuses[i]);
|
||||||
|
}else{
|
||||||
|
tempArr.push($scope.campuses[i]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
$scope.threeSizedArray.push(tempArr);
|
||||||
|
console.log($scope.threeSizedArray); // TODO REMOVE
|
||||||
|
}
|
||||||
|
|
||||||
|
$scope.goToCampus = function(campusId) // Will pass you to courses by specific campus
|
||||||
|
{
|
||||||
|
$location.path('/myClasses/' + campusId.toString());
|
||||||
|
}
|
||||||
|
|
||||||
|
$scope.displayCampuses = function()
|
||||||
|
{
|
||||||
|
apiService.getCampusesByUser(token).success(function(data) // Get all the campuses
|
||||||
|
{
|
||||||
|
$scope.campuses = data;
|
||||||
|
console.log("INSIDE " + $scope.campuses);
|
||||||
|
init(); // Executing the function to initialize campuses display
|
||||||
|
|
||||||
|
}).error(function()
|
||||||
|
{
|
||||||
|
// TODO
|
||||||
|
});
|
||||||
|
if($scope.campuses != null)
|
||||||
|
{
|
||||||
|
$scope.campusesEmpty = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
$scope.displayCampuses(); // Displaying all campuses by user
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
}]);
|
|
@ -13,7 +13,6 @@ angular.module('SeHub')
|
||||||
|
|
||||||
var imagePath = $scope.user.avatar_url;
|
var imagePath = $scope.user.avatar_url;
|
||||||
//var campusName = '';
|
//var campusName = '';
|
||||||
$scope.course = '';
|
|
||||||
// $scope.campusName = '';
|
// $scope.campusName = '';
|
||||||
|
|
||||||
$scope.phones = [
|
$scope.phones = [
|
||||||
|
@ -35,13 +34,13 @@ angular.module('SeHub')
|
||||||
console.log("Student Mode!");
|
console.log("Student Mode!");
|
||||||
}
|
}
|
||||||
|
|
||||||
// apiService.getCourseByCampusName($scope.user.classes_id_list[0]).success(function(data)
|
// apiService.getCourseByCampusName(token).success(function(data)
|
||||||
// {
|
// {
|
||||||
// console.log("Campus Name is ON! " + $scope.user.classes_id_list[0])
|
// console.log("Campus Name is ON! " + token)
|
||||||
// $scope.course = data;
|
// $scope.course = data;
|
||||||
// }).error(function()
|
// }).error(function(err)
|
||||||
// {
|
// {
|
||||||
// console.log("Error on ===> getCourseByCampusName")
|
// console.log("Error ===> " + err + " ===> getCourseByCampusName")
|
||||||
// });
|
// });
|
||||||
|
|
||||||
|
|
||||||
|
@ -51,8 +50,30 @@ angular.module('SeHub')
|
||||||
}
|
}
|
||||||
$scope.postMessageClicked = function() // Posting the message itself
|
$scope.postMessageClicked = function() // Posting the message itself
|
||||||
{
|
{
|
||||||
|
|
||||||
|
|
||||||
if($scope.msg.msgToAdd != null)
|
if($scope.msg.msgToAdd != null)
|
||||||
{
|
{
|
||||||
|
jsonNewMsg = {
|
||||||
|
'courseName': 'A', // TODO Should be ===> $scope.course.courseName
|
||||||
|
'message': $scope.msg.msgToAdd
|
||||||
|
};
|
||||||
|
|
||||||
|
// console.log("J: " + jsonNewMsg.toString() + "msg: " + $scope.msg.msgToAdd);
|
||||||
|
|
||||||
|
// apiService.createMessage(token, jsonNewMsg).success(function(data)
|
||||||
|
// {
|
||||||
|
// console.log("create Msg!");
|
||||||
|
// }).error(function(err)
|
||||||
|
// {
|
||||||
|
// console.log("Error: " + err);
|
||||||
|
// });
|
||||||
|
|
||||||
|
/*
|
||||||
|
'courseName': 'Advance Math',
|
||||||
|
'message': 'The lecture today is canceled'
|
||||||
|
*/
|
||||||
|
|
||||||
console.log($scope.msg.msgToAdd);
|
console.log($scope.msg.msgToAdd);
|
||||||
$scope.messages.push({"text": $scope.msg.msgToAdd});
|
$scope.messages.push({"text": $scope.msg.msgToAdd});
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,5 +1,7 @@
|
||||||
angular.module('SeHub')
|
angular.module('SeHub')
|
||||||
.controller('mainController', ['$scope', '$rootScope', 'dataService','apiService', '$cookies', '$cookieStore', '$location', '$window',
|
.controller('mainController',
|
||||||
|
['$scope', '$rootScope', 'dataService', 'apiService', '$cookies',
|
||||||
|
'$cookieStore', '$location', '$window',
|
||||||
|
|
||||||
function($scope, $rootScope, dataService, apiService, $cookies, $cookieStore, $location, $window) {
|
function($scope, $rootScope, dataService, apiService, $cookies, $cookieStore, $location, $window) {
|
||||||
top.setIsEnterd = true;
|
top.setIsEnterd = true;
|
||||||
|
@ -14,6 +16,39 @@ angular.module('SeHub')
|
||||||
}
|
}
|
||||||
$scope.loadingData = false;
|
$scope.loadingData = false;
|
||||||
$scope.user = data;
|
$scope.user = data;
|
||||||
|
|
||||||
|
$scope.menuItems = [{
|
||||||
|
"title": "Dash Board",
|
||||||
|
"icon": "fa fa-tachometer",
|
||||||
|
"style": "selected",
|
||||||
|
"route": "/home"
|
||||||
|
}, {
|
||||||
|
"title": "Explore",
|
||||||
|
"icon": "fa fa-compass",
|
||||||
|
"style": "",
|
||||||
|
"route": "/campuses"
|
||||||
|
}, {
|
||||||
|
"title": "My Projects",
|
||||||
|
"icon": "fa fa-cube",
|
||||||
|
"style": "",
|
||||||
|
"route": "/myProjects"
|
||||||
|
}, {
|
||||||
|
"title": "Tasks",
|
||||||
|
"icon": "fa fa-clipboard",
|
||||||
|
"style": "",
|
||||||
|
"route": "/tasks"
|
||||||
|
}, {
|
||||||
|
"title": "Profile",
|
||||||
|
"icon": "fa fa-cogs",
|
||||||
|
"style": "",
|
||||||
|
"route": "/profile/" + $scope.user.id.toString()
|
||||||
|
}, {
|
||||||
|
"title": "Log Out",
|
||||||
|
"icon": "fa fa-power-off",
|
||||||
|
"style": "",
|
||||||
|
"route": "/logout"
|
||||||
|
}];
|
||||||
|
|
||||||
dataService.initService($scope); //Start Data Sync Service (For User)
|
dataService.initService($scope); //Start Data Sync Service (For User)
|
||||||
console.log(data);
|
console.log(data);
|
||||||
if ($scope.user.isFirstLogin) {
|
if ($scope.user.isFirstLogin) {
|
||||||
|
@ -29,43 +64,6 @@ angular.module('SeHub')
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
$scope.menuItems = [{
|
|
||||||
"title": "Dash Board",
|
|
||||||
"icon": "fa fa-tachometer",
|
|
||||||
"style": "selected",
|
|
||||||
"route": "/home"
|
|
||||||
}, {
|
|
||||||
"title": "My Campuses",
|
|
||||||
"icon": "fa fa-university",
|
|
||||||
"style": "",
|
|
||||||
"route": "/campuses"
|
|
||||||
}, {
|
|
||||||
"title": "My Classes",
|
|
||||||
"icon": "fa fa-graduation-cap",
|
|
||||||
"style": "",
|
|
||||||
"route": "/myClasses"
|
|
||||||
}, {
|
|
||||||
"title": "My Projects",
|
|
||||||
"icon": "fa fa-cube",
|
|
||||||
"style": "",
|
|
||||||
"route": "/projects"
|
|
||||||
}, {
|
|
||||||
"title": "Tasks",
|
|
||||||
"icon": "fa fa-clipboard",
|
|
||||||
"style": "",
|
|
||||||
"route": "/tasks"
|
|
||||||
}, {
|
|
||||||
"title": "Settings",
|
|
||||||
"icon": "fa fa-cogs",
|
|
||||||
"style": "",
|
|
||||||
"route": "/Settings"
|
|
||||||
}, {
|
|
||||||
"title": "Log Out",
|
|
||||||
"icon": "fa fa-power-off",
|
|
||||||
"style": "",
|
|
||||||
"route": "/logout"
|
|
||||||
}];
|
|
||||||
|
|
||||||
$scope.menuClicked = function(item) {
|
$scope.menuClicked = function(item) {
|
||||||
var route = ""
|
var route = ""
|
||||||
if (item.title == "Log Out") {
|
if (item.title == "Log Out") {
|
||||||
|
|
|
@ -1,13 +1,140 @@
|
||||||
angular.module('SeHub')
|
angular.module('SeHub')
|
||||||
.controller('myClassesController', ['$scope', '$cookies', '$cookieStore', '$window', '$location', '$mdToast', '$mdDialog', 'apiService', '$rootScope', function ($scope, $cookies, $cookieStore, $window, $location, $mdToast, $mdDialog, apiService ,$rootScope)
|
.controller('myClassesController', ['$scope', '$location', '$routeParams', '$cookies', '$cookieStore', '$window', '$location', '$mdToast', '$mdDialog', 'apiService', '$rootScope',
|
||||||
|
function ($scope, $location, $routeParams, $cookies, $cookieStore, $window, $location, $mdToast, $mdDialog, apiService ,$rootScope)
|
||||||
{
|
{
|
||||||
$scope.isStudent = false;
|
$scope.isStudent = false;
|
||||||
$scope.isCourse = false;
|
$scope.isCourse = false;
|
||||||
$scope.isNewCourse = false;
|
$scope.isNewCourse = false;
|
||||||
$scope.newClassName = false;
|
$scope.newClassName = false;
|
||||||
$scope.user.createNewCourse = '';
|
$scope.course = {};
|
||||||
|
var token = $cookies['com.sehub.www'];
|
||||||
$scope.user.finalDate = '';
|
$scope.user.finalDate = '';
|
||||||
|
$scope.user.startDate = '';
|
||||||
$scope.showMyClass = false;
|
$scope.showMyClass = false;
|
||||||
|
$scope.coursesEmpty = false;
|
||||||
|
var campusId = $routeParams.campusId;
|
||||||
|
|
||||||
|
var displayCourses = function()
|
||||||
|
{
|
||||||
|
apiService.getCoursesByUser(token, campusId).success(function(data) // Get all the courses for display
|
||||||
|
{
|
||||||
|
$scope.courses = data;
|
||||||
|
console.log("success " + $scope.courses);
|
||||||
|
init(); // Executing the function to initialize course display
|
||||||
|
}).error(function(err)
|
||||||
|
{
|
||||||
|
console.log("error: " + err);
|
||||||
|
});
|
||||||
|
if($scope.courses = null)
|
||||||
|
{
|
||||||
|
$scope.coursesEmpty = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
$scope.goToClass = function(classId)
|
||||||
|
{
|
||||||
|
console.log("Done! " + $scope.courses);
|
||||||
|
$location.path('/projects/' + classId.toString()); // Will display all the projects in this course
|
||||||
|
}
|
||||||
|
|
||||||
|
$scope.chooseCourseClicked = function()
|
||||||
|
{
|
||||||
|
$scope.isCourse = true;
|
||||||
|
console.log("choose course Clicked!!");
|
||||||
|
|
||||||
|
apiService.getAllCampuses(token).success(function(data)
|
||||||
|
{
|
||||||
|
$scope.campuses = data;
|
||||||
|
console.log("Campuses: " + $scope.campuses.toString());
|
||||||
|
}).error(function(err)
|
||||||
|
{
|
||||||
|
console.log("Error: " + err);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
$scope.createCourseClicked = function()
|
||||||
|
{
|
||||||
|
$scope.isNewCourse = !$scope.isNewCourse;
|
||||||
|
}
|
||||||
|
|
||||||
|
$scope.submitNewClassClicked = function()
|
||||||
|
{
|
||||||
|
if($scope.course.courseName != null && $scope.course.endDate != null && $scope.course.startDate != null)
|
||||||
|
{
|
||||||
|
var jsonNewCourse =
|
||||||
|
{
|
||||||
|
'courseName': $scope.course.courseName,
|
||||||
|
'campusName': $scope.course.campusName,
|
||||||
|
'startDate': {
|
||||||
|
'year' : $scope.course.startDate.getFullYear(),
|
||||||
|
'day' : $scope.course.startDate.getDate(),
|
||||||
|
'month': $scope.course.startDate.getMonth() + 1
|
||||||
|
},
|
||||||
|
'endDate': {
|
||||||
|
'year' : $scope.course.endDate.getFullYear(),
|
||||||
|
'day' : $scope.course.endDate.getDate(),
|
||||||
|
'month': $scope.course.endDate.getMonth() + 1
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
console.log("Json here: " + $scope.chosenCampus);
|
||||||
|
console.log(jsonNewCourse);
|
||||||
|
|
||||||
|
apiService.createCourse(token, jsonNewCourse).success(function(data)
|
||||||
|
{
|
||||||
|
console.log("createCourse API done");
|
||||||
|
$mdDialog.show($mdDialog.alert().title('Course Created').content('You have created course successfully.')
|
||||||
|
.ariaLabel('Email verification alert dialog').ok('Lets Start!').targetEvent())
|
||||||
|
.then(function() {
|
||||||
|
$location.path('/newCourse'); // TODO TODO TODO
|
||||||
|
}); // Pop-up alert
|
||||||
|
}).error(function(err)
|
||||||
|
{
|
||||||
|
console.log(err);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
$mdDialog.show($mdDialog.alert().title('Error - Creating Course').content('Some fields are missing.')
|
||||||
|
.ariaLabel('Email verification alert dialog').ok('Try Again!').targetEvent());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
var init = function()
|
||||||
|
{
|
||||||
|
var i, j, counter = 0;
|
||||||
|
var newLength = 0;
|
||||||
|
|
||||||
|
if(($scope.courses.length % 3) === 0)
|
||||||
|
{
|
||||||
|
newLength = ($scope.courses.length / 3);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
newLength = (Math.ceil($scope.courses.length / 3)); // Rounds number up
|
||||||
|
}
|
||||||
|
|
||||||
|
console.log("length: " + newLength);
|
||||||
|
$scope.holdArrays.length = newLength;
|
||||||
|
|
||||||
|
for(j = 0; j < newLength; j++)
|
||||||
|
{
|
||||||
|
$scope.holdArrays[j] = [3]; // Creating array in size of 3 in each array cell
|
||||||
|
}
|
||||||
|
|
||||||
|
for(i = 0; i < newLength; i++)
|
||||||
|
{
|
||||||
|
for(j = 0; j < newLength; j++)
|
||||||
|
{
|
||||||
|
if($scope.courses[(3*i) + j] != null)
|
||||||
|
{
|
||||||
|
$scope.holdArrays[i][j] = $scope.courses[(3*i) + j];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
console.log($scope.holdArrays);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
if($scope.user.isLecturer)
|
if($scope.user.isLecturer)
|
||||||
{
|
{
|
||||||
|
@ -20,42 +147,7 @@ angular.module('SeHub')
|
||||||
console.log("Student Mode!");
|
console.log("Student Mode!");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
displayCourses(); // Will display the courses that the user related to // TODO!!
|
||||||
$scope.chooseCourseClicked = function()
|
|
||||||
{
|
|
||||||
$scope.isCourse = true;
|
|
||||||
console.log("choose course Clicked!!");
|
|
||||||
}
|
|
||||||
|
|
||||||
$scope.createCourseClicked = function()
|
|
||||||
{
|
|
||||||
$scope.isNewCourse = true;
|
|
||||||
$scope.showMyClass = false;
|
|
||||||
console.log("create course Clicked!!");
|
|
||||||
}
|
|
||||||
|
|
||||||
$scope.showMyCourses = function()
|
|
||||||
{
|
|
||||||
$scope.showMyClass = true;
|
|
||||||
$scope.isNewCourse = false;
|
|
||||||
}
|
|
||||||
|
|
||||||
$scope.submitNewClassClicked = function()
|
|
||||||
{
|
|
||||||
if($scope.user.createNewCourse != '' && $scope.user.finalDate != '')
|
|
||||||
{
|
|
||||||
console.log("finalDate " + $scope.user.finalDate);
|
|
||||||
console.log($scope.user.createNewCourse);
|
|
||||||
$mdDialog.show($mdDialog.alert().title('Course Created').content('You have created course successfully.')
|
|
||||||
.ariaLabel('Email verification alert dialog').ok('Lets Start!').targetEvent());
|
|
||||||
// $window.location.href = 'templates/views/newCourse.html'; // TODO TODO TODO
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
$mdDialog.show($mdDialog.alert().title('Error - Creating Course').content('You have encountered and error in creating the course.')
|
|
||||||
.ariaLabel('Email verification alert dialog').ok('Try Again!').targetEvent());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
81
templates/js/controllers/myProjectsController.js
Normal file
81
templates/js/controllers/myProjectsController.js
Normal file
|
@ -0,0 +1,81 @@
|
||||||
|
angular.module('SeHub')
|
||||||
|
.controller('thisProjectController', ['$scope', '$cookies', '$cookieStore', '$window', '$location', '$mdToast', '$mdDialog', 'apiService', '$rootScope', function ($scope, $cookies, $cookieStore, $window, $location, $mdToast, $mdDialog, apiService ,$rootScope)
|
||||||
|
{
|
||||||
|
$scope.isEditPressed = false;
|
||||||
|
$scope.myProjectsEmpty = false;
|
||||||
|
var token = $cookies['com.sehub.www'];
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
$scope.displayMyProjects = function()
|
||||||
|
{
|
||||||
|
apiService.getProjectsByUser(token).success(function(data)
|
||||||
|
{
|
||||||
|
console.log("Success " + data);
|
||||||
|
$scope.myProjects = data;
|
||||||
|
}).error(function(err)
|
||||||
|
{
|
||||||
|
console.log("Error: " + err);
|
||||||
|
});
|
||||||
|
if($scope.myProjects === null)
|
||||||
|
{
|
||||||
|
myProjectsEmpty = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
$scope.goToMyProject = function()
|
||||||
|
{
|
||||||
|
console.log("projects only from classID: " + classId)
|
||||||
|
$location.path('/thisProject' + classId);
|
||||||
|
}
|
||||||
|
|
||||||
|
var init = function()
|
||||||
|
{
|
||||||
|
var i, j, counter = 0;
|
||||||
|
var newLength = 0;
|
||||||
|
|
||||||
|
if(($scope.projects.length % 3) === 0)
|
||||||
|
{
|
||||||
|
newLength = ($scope.projects.length / 3);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
newLength = (Math.ceil($scope.projects.length / 3)); // Rounds number up
|
||||||
|
}
|
||||||
|
|
||||||
|
console.log("length: " + newLength);
|
||||||
|
$scope.arrayHolder.length = newLength;
|
||||||
|
|
||||||
|
for(j = 0; j < newLength; j++)
|
||||||
|
{
|
||||||
|
$scope.arrayHolder[j] = [3]; // Creating array in size of 3 in each array cell
|
||||||
|
}
|
||||||
|
|
||||||
|
for(i = 0; i < newLength; i++)
|
||||||
|
{
|
||||||
|
for(j = 0; j < newLength; j++)
|
||||||
|
{
|
||||||
|
if($scope.projects[(3*i) + j] != null)
|
||||||
|
{
|
||||||
|
$scope.arrayHolder[i][j] = $scope.projects[(3*i) + j];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
console.log($scope.arrayHolder);
|
||||||
|
}
|
||||||
|
|
||||||
|
$scope.editPressed = function()
|
||||||
|
{
|
||||||
|
$scope.isEditPressed = true;
|
||||||
|
console.log("EditPressed " + $scope.isEditPressed);
|
||||||
|
}
|
||||||
|
$scope.removeProject = function()
|
||||||
|
{
|
||||||
|
console.log("Project has been removed!");
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
$scope.displayMyProjects(); // Will display all my projects
|
||||||
|
|
||||||
|
}]);
|
|
@ -1,10 +1,9 @@
|
||||||
angular.module('SeHub')
|
angular.module('SeHub')
|
||||||
.controller('newCourseController', ['$scope', '$cookies', '$cookieStore', '$window', '$location', '$mdToast', '$mdDialog', 'apiService', '$rootScope', function ($scope, $cookies, $cookieStore, $window, $location, $mdToast, $mdDialog, apiService ,$rootScope)
|
.controller('newCourseController', ['$scope', '$cookies', '$cookieStore', '$window', '$location', '$mdToast', '$mdDialog', 'apiService', '$rootScope',
|
||||||
|
function ($scope, $cookies, $cookieStore, $window, $location, $mdToast, $mdDialog, apiService ,$rootScope)
|
||||||
{
|
{
|
||||||
|
|
||||||
$scope.goBack = function()
|
$scope.goBack = function()
|
||||||
{
|
{
|
||||||
$window.location.href = 'templates/views/myClasses.html';
|
$location.path('/myClasses');
|
||||||
}
|
}
|
||||||
|
|
||||||
}]);
|
}]);
|
|
@ -1,6 +1,8 @@
|
||||||
angular.module('SeHub').controller('newTasksController', ['$scope',
|
angular.module('SeHub').controller('newTasksController', ['$scope',
|
||||||
function($scope) {
|
function($scope) {
|
||||||
|
|
||||||
|
$scope.newComp = {};
|
||||||
|
$scope.newComp.isMandatory = false;
|
||||||
|
|
||||||
|
|
||||||
$scope.componentTypes = [{
|
$scope.componentTypes = [{
|
||||||
|
@ -9,6 +11,10 @@ angular.module('SeHub').controller('newTasksController', ['$scope',
|
||||||
"type": "textarea"
|
"type": "textarea"
|
||||||
}, {
|
}, {
|
||||||
"type": "checkbox"
|
"type": "checkbox"
|
||||||
|
}, {
|
||||||
|
"type": "link"
|
||||||
|
}, {
|
||||||
|
"type": "radiobuttons"
|
||||||
}];
|
}];
|
||||||
|
|
||||||
$scope.task = {};
|
$scope.task = {};
|
||||||
|
@ -19,8 +25,58 @@ angular.module('SeHub').controller('newTasksController', ['$scope',
|
||||||
// $scope.task = [];
|
// $scope.task = [];
|
||||||
|
|
||||||
$scope.addComponent = function() {
|
$scope.addComponent = function() {
|
||||||
$scope.task.components.push($scope.newComp);
|
var comp = {};
|
||||||
|
var type = $scope.newComp.type;
|
||||||
|
comp.type = type;
|
||||||
|
comp.isMandatory = $scope.newComp.isMandatory;
|
||||||
|
comp.label = "";
|
||||||
|
var i = 0
|
||||||
|
if (!(type === 'textbox' || type === 'textarea' || type === 'checkbox'))
|
||||||
|
while ($scope.newComp.label[i]) {
|
||||||
|
comp.label += $scope.newComp.label[i] + "|";
|
||||||
|
i++;
|
||||||
|
} else
|
||||||
|
comp.label = $scope.newComp.label[i];
|
||||||
|
|
||||||
|
console.log(comp);
|
||||||
|
$scope.task.components.push(comp);
|
||||||
|
|
||||||
|
// console.log($scope.newComp);
|
||||||
$scope.newComp = {};
|
$scope.newComp = {};
|
||||||
|
$scope.newComp.isMandatory = false;
|
||||||
|
$scope.compDetails = [];
|
||||||
|
$scope.isRadioButton = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
$scope.ComponentType = function(type) {
|
||||||
|
if (type === 'textbox' || type === 'textarea' || type === 'checkbox')
|
||||||
|
$scope.compDetails = [{
|
||||||
|
detail: "Label"
|
||||||
|
}];
|
||||||
|
else if (type === 'radiobuttons') {
|
||||||
|
$scope.compDetails = [{
|
||||||
|
detail: "Label"
|
||||||
|
}];
|
||||||
|
$scope.compDetails.push({
|
||||||
|
detail: "Option" + $scope.compDetails.length + ": "
|
||||||
|
});
|
||||||
|
} else if (type === 'link')
|
||||||
|
$scope.compDetails = [{
|
||||||
|
detail: "Label"
|
||||||
|
}, {
|
||||||
|
detail: "URL Path"
|
||||||
|
}];
|
||||||
|
|
||||||
|
if (type === 'radiobuttons')
|
||||||
|
$scope.isRadioButton = true;
|
||||||
|
else
|
||||||
|
$scope.isRadioButton = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
$scope.addMoreOptions = function() {
|
||||||
|
$scope.compDetails.push({
|
||||||
|
detail: "Option" + $scope.compDetails.length + ": "
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
$scope.dueTime = function() {
|
$scope.dueTime = function() {
|
||||||
|
@ -29,5 +85,31 @@ angular.module('SeHub').controller('newTasksController', ['$scope',
|
||||||
var d = new Date($scope.task.date);
|
var d = new Date($scope.task.date);
|
||||||
$scope.dueTimeFromNow = moment(d).fromNow();
|
$scope.dueTimeFromNow = moment(d).fromNow();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
$scope.initLinkComp = function(component){
|
||||||
|
var arr = component.label.split("|");
|
||||||
|
for (var i = 0; i < arr.length - 1; i++) {
|
||||||
|
if(i == 0)
|
||||||
|
component.title = arr[i];
|
||||||
|
else
|
||||||
|
component.href = arr[i];
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
$scope.initRadioButtonsComp = function(component){
|
||||||
|
var arr = component.label.split("|");
|
||||||
|
component.values = [];
|
||||||
|
for (var i = 0; i < arr.length - 1; i++) {
|
||||||
|
if(i == 0)
|
||||||
|
component.title = arr[i];
|
||||||
|
else
|
||||||
|
component.values.push({text: arr[i], id: i});
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
$scope.RB = function(comp){
|
||||||
|
console.info(comp);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
]);
|
]);
|
|
@ -1,30 +1,33 @@
|
||||||
angular.module('SeHub')
|
angular.module('SeHub')
|
||||||
.controller('settingsController', ['$scope', '$rootScope', 'dataService', 'apiService', '$cookies', '$location',
|
.controller('profileController', ['$scope', '$rootScope', 'dataService', 'apiService',
|
||||||
function($scope, $rootScope, dataService, apiService, $cookies, $location) {
|
'$cookies', '$location', '$routeParams',
|
||||||
|
function($scope, $rootScope, dataService, apiService, $cookies, $location, $routeParams) {
|
||||||
|
|
||||||
var token = $cookies['com.sehub.www'];
|
var token = $cookies['com.sehub.www'];
|
||||||
|
var id = $routeParams.id;
|
||||||
$scope.loadingData = true;
|
$scope.loadingData = true;
|
||||||
$scope.isInRegisterMode = false;
|
$scope.isInRegisterMode = false;
|
||||||
|
|
||||||
$scope.title = "Settings"
|
$scope.title = "Profile";
|
||||||
|
|
||||||
apiService.getUserByToken(token).success(function(data) {
|
apiService.getUserById(token, id).success(function(data) {
|
||||||
if (data.message == 'No User Found') {
|
if (data.message == 'No User Found') {
|
||||||
console.error("No User Found!");
|
console.error("No User Found!");
|
||||||
}
|
}
|
||||||
$scope.loadingData = false;
|
|
||||||
$scope.user = data;
|
$scope.user = data;
|
||||||
|
apiService.getCampusesByUserId(token, id).success(function(data) {
|
||||||
|
$scope.campuses = data;
|
||||||
console.log(data);
|
console.log(data);
|
||||||
if ($scope.user.isFirstLogin) {
|
|
||||||
$scope.menuObj = {};
|
|
||||||
$scope.isInRegisterMode = true;
|
|
||||||
$scope.loadingData = false;
|
$scope.loadingData = false;
|
||||||
$location.path('/register')
|
}).error(function(err) {
|
||||||
}
|
console.error(err);
|
||||||
|
});
|
||||||
|
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
$scope.isEditMode = false;
|
$scope.isEditMode = false;
|
||||||
$scope.profileMode = "Edit Profile";
|
$scope.profileMode = "Edit Profile";
|
||||||
$scope.profileModeIcon = "fa fa-pencil";
|
$scope.profileModeIcon = "fa fa-pencil";
|
||||||
|
@ -67,17 +70,17 @@ angular.module('SeHub')
|
||||||
"campus_avatar": "https://yt3.ggpht.com/--ZkWxybWGOM/AAAAAAAAAAI/AAAAAAAAAAA/_nAICC_kzzI/s88-c-k-no/photo.jpg"
|
"campus_avatar": "https://yt3.ggpht.com/--ZkWxybWGOM/AAAAAAAAAAI/AAAAAAAAAAA/_nAICC_kzzI/s88-c-k-no/photo.jpg"
|
||||||
}];
|
}];
|
||||||
|
|
||||||
$scope.campuses = [{
|
// $scope.campuses = [{
|
||||||
'title': 'JCE',
|
// 'title': 'JCE',
|
||||||
'email_ending': '@post.jce.ac.il',
|
// 'email_ending': '@post.jce.ac.il',
|
||||||
'master_user_id': 123453433341,
|
// 'master_user_id': 123453433341,
|
||||||
'avatar_url': 'https://yt3.ggpht.com/--ZkWxybWGOM/AAAAAAAAAAI/AAAAAAAAAAA/_nAICC_kzzI/s88-c-k-no/photo.jpg'
|
// 'avatar_url': 'https://yt3.ggpht.com/--ZkWxybWGOM/AAAAAAAAAAI/AAAAAAAAAAA/_nAICC_kzzI/s88-c-k-no/photo.jpg'
|
||||||
}, {
|
// }, {
|
||||||
'title': 'Stanford',
|
// 'title': 'Stanford',
|
||||||
'email_ending': '@post.jce.ac.il',
|
// 'email_ending': '@post.jce.ac.il',
|
||||||
'master_user_id': 123453433341,
|
// 'master_user_id': 123453433341,
|
||||||
'avatar_url': 'https://encrypted-tbn1.gstatic.com/images?q=tbn:ANd9GcR9M4uQgaJP1zyiCGw-dK31hU8buWqeuOi9vTXBd4Y8hQcFTZqA'
|
// 'avatar_url': 'https://encrypted-tbn1.gstatic.com/images?q=tbn:ANd9GcR9M4uQgaJP1zyiCGw-dK31hU8buWqeuOi9vTXBd4Y8hQcFTZqA'
|
||||||
}];
|
// }];
|
||||||
|
|
||||||
|
|
||||||
$scope.labels = ['Commits', 'Issues Assigned', 'Messages', 'Open Tasks'];
|
$scope.labels = ['Commits', 'Issues Assigned', 'Messages', 'Open Tasks'];
|
||||||
|
@ -88,6 +91,7 @@ angular.module('SeHub')
|
||||||
[28, 48, 40, 3]
|
[28, 48, 40, 3]
|
||||||
];
|
];
|
||||||
|
|
||||||
|
$scope.isUser = $scope.$parent.user.id.toString() /*The Actual User*/ === $routeParams.id /*The Profile User*/;
|
||||||
|
|
||||||
}
|
}
|
||||||
]);
|
]);
|
|
@ -1,16 +1,114 @@
|
||||||
angular.module('SeHub')
|
angular.module('SeHub')
|
||||||
.controller('projectsController', ['$scope', '$cookies', '$cookieStore', '$window', '$location', '$mdToast', '$mdDialog', 'apiService', '$rootScope', function ($scope, $cookies, $cookieStore, $window, $location, $mdToast, $mdDialog, apiService ,$rootScope)
|
.controller('projectsController', ['$scope', '$routeParams', '$cookies', '$cookieStore', '$window', '$location', '$mdToast', '$mdDialog', 'apiService', '$rootScope', function ($scope, $routeParams, $cookies, $cookieStore, $window, $location, $mdToast, $mdDialog, apiService ,$rootScope)
|
||||||
{
|
{
|
||||||
console.log("in projects controller");
|
var token = $cookies['com.sehub.www'];
|
||||||
|
var classId = $routeParams.id;
|
||||||
|
$scope.projectEmpty = false;
|
||||||
|
|
||||||
|
$scope.displayProjects = function()
|
||||||
|
{
|
||||||
|
console.log("in displayProjecs!!! ");
|
||||||
|
apiService.getProjectsByCourse(token, classId).success(function(data) // Get all the campuses
|
||||||
|
{
|
||||||
|
$scope.projects = data;
|
||||||
|
init(); // Executing the function to initialize projects display
|
||||||
|
console.log("project created! not rly!! " + classId);
|
||||||
|
}).error(function(err)
|
||||||
|
{
|
||||||
|
console.log("Error: " + err);
|
||||||
|
});
|
||||||
|
if($scope.projects = null)
|
||||||
|
{
|
||||||
|
$scope.projectEmpty = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
$scope.displayProjects(); // Displaying all projects related to user
|
||||||
|
|
||||||
$scope.createProjectClicked = function()
|
$scope.createProjectClicked = function()
|
||||||
{
|
{
|
||||||
console.log("project created! not rly!! ");
|
console.log("project created! not rly!! " + classId);
|
||||||
// $window.location.href = 'http://localhost:8080/home#/tasks/new'; // Reference to 'newTask' page
|
// $window.location.href = 'http://localhost:8080/home#/tasks/new'; // Reference to 'newTask' page
|
||||||
|
}
|
||||||
|
|
||||||
|
// $scope.projects = ['AMI', 'LULU', 'XIN Zhau', 'LUMI lu', 'Shimi', 'Azligi zligi', 'Drugs'];
|
||||||
|
|
||||||
|
$scope.goToProject = function()
|
||||||
|
{
|
||||||
|
console.log("projects only from classID: " + classId)
|
||||||
|
$location.path('/thisProject' + classId);
|
||||||
|
}
|
||||||
|
|
||||||
|
var init = function()
|
||||||
|
{
|
||||||
|
var i, j, counter = 0;
|
||||||
|
var newLength = 0;
|
||||||
|
|
||||||
|
if(($scope.projects.length % 3) === 0)
|
||||||
|
{
|
||||||
|
newLength = ($scope.projects.length / 3);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
newLength = (Math.ceil($scope.projects.length / 3)); // Rounds number up
|
||||||
|
}
|
||||||
|
|
||||||
|
console.log("length: " + newLength);
|
||||||
|
$scope.arrayHolder.length = newLength;
|
||||||
|
|
||||||
|
for(j = 0; j < newLength; j++)
|
||||||
|
{
|
||||||
|
$scope.arrayHolder[j] = [3]; // Creating array in size of 3 in each array cell
|
||||||
|
}
|
||||||
|
|
||||||
|
for(i = 0; i < newLength; i++)
|
||||||
|
{
|
||||||
|
for(j = 0; j < newLength; j++)
|
||||||
|
{
|
||||||
|
if($scope.projects[(3*i) + j] != null)
|
||||||
|
{
|
||||||
|
$scope.arrayHolder[i][j] = $scope.projects[(3*i) + j];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
console.log($scope.arrayHolder);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
var jsonNewCourse =
|
||||||
|
{
|
||||||
|
'courseName': $scope.course.courseName,
|
||||||
|
'campusName': $scope.course.campusName,
|
||||||
|
'startDate': {
|
||||||
|
'year' : $scope.course.startDate.getFullYear(),
|
||||||
|
'day' : $scope.course.startDate.getDate(),
|
||||||
|
'month': $scope.course.startDate.getMonth() + 1
|
||||||
|
},
|
||||||
|
'endDate': {
|
||||||
|
'year' : $scope.course.endDate.getFullYear(),
|
||||||
|
'day' : $scope.course.endDate.getDate(),
|
||||||
|
'month': $scope.course.endDate.getMonth() + 1
|
||||||
|
}
|
||||||
|
};*/
|
||||||
|
|
||||||
|
/*
|
||||||
|
{
|
||||||
|
'projectName': 'Advance Math',
|
||||||
|
'courseName': 'JCE',
|
||||||
|
'grade': 98,
|
||||||
|
'logo_url': 'http://location.domain.com/image.jpg',
|
||||||
|
'gitRepository': 'http://location.git.com/somthing',
|
||||||
|
'membersId': ['bob', 'dylan', 'quentin', 'terentino'],
|
||||||
|
'id' : 1234567890
|
||||||
|
}
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}]);
|
}]);
|
|
@ -1,12 +1,10 @@
|
||||||
angular.module('SeHub')
|
angular.module('SeHub')
|
||||||
.controller('registerController', ['$scope', '$cookies', '$cookieStore', '$window', '$location', '$mdToast', '$mdDialog', 'apiService', '$rootScope', function ($scope, $cookies, $cookieStore, $window, $location, $mdToast, $mdDialog, apiService ,$rootScope)
|
.controller('registerController', ['$scope', '$cookies', '$cookieStore', '$window', '$location', '$mdToast', '$mdDialog', 'apiService', '$rootScope', function($scope, $cookies, $cookieStore, $window, $location, $mdToast, $mdDialog, apiService, $rootScope) {
|
||||||
{
|
|
||||||
$scope.userHasNoName = false;
|
$scope.userHasNoName = false;
|
||||||
$scope.campusChecked = false;
|
$scope.campusChecked = false;
|
||||||
$scope.createCampusClicked = false;
|
$scope.createCampusClicked = false;
|
||||||
$scope.isEmpty = true; // if the academic email line is empty
|
$scope.isEmpty = true; // if the academic email line is empty
|
||||||
$scope.jsonCreateCampus =
|
$scope.jsonCreateCampus = {
|
||||||
{
|
|
||||||
"title": "Create Campus",
|
"title": "Create Campus",
|
||||||
"email": "email_ending",
|
"email": "email_ending",
|
||||||
"avatar": "self.avatar.url"
|
"avatar": "self.avatar.url"
|
||||||
|
@ -23,24 +21,21 @@ angular.module('SeHub')
|
||||||
console.error("No User Found!");
|
console.error("No User Found!");
|
||||||
console.log(data);
|
console.log(data);
|
||||||
|
|
||||||
if($scope.user.name === ";")
|
if ($scope.user.name === ";") {
|
||||||
{
|
|
||||||
$scope.user.name = "";
|
$scope.user.name = "";
|
||||||
$scope.user.name = $scope.user.username;
|
$scope.user.name = $scope.user.username;
|
||||||
$scope.userHasNoName = true;
|
$scope.userHasNoName = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
apiService.getAllCampuses($scope.user.seToken).success(function(data) // Get all the campuses
|
apiService.getAllCampuses(token).success(function(data) // Get all the campuses
|
||||||
{
|
{
|
||||||
$scope.campuses = data;
|
$scope.campuses = data;
|
||||||
}).error(function()
|
}).error(function() {
|
||||||
{
|
|
||||||
// TODO
|
// TODO
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
$scope.dropdownClicked = function()
|
$scope.dropdownClicked = function() {
|
||||||
{
|
|
||||||
if ($scope.campus) {
|
if ($scope.campus) {
|
||||||
$scope.campusChecked = true;
|
$scope.campusChecked = true;
|
||||||
$scope.campusObj = null;
|
$scope.campusObj = null;
|
||||||
|
@ -54,66 +49,58 @@ angular.module('SeHub')
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
$scope.submitClicked = function(ev)
|
$scope.submitClicked = function(ev) {
|
||||||
{
|
|
||||||
var emailValid = false;
|
var emailValid = false;
|
||||||
var jsonUpdateUser =
|
|
||||||
{
|
|
||||||
"lecturerStat": "$scope.user.isLecturer",
|
|
||||||
"campName": "$scope.campusName"
|
|
||||||
}
|
|
||||||
|
|
||||||
if($scope.user.AcMail != null)
|
if ($scope.user.AcMail != null) {
|
||||||
{
|
|
||||||
var fullMail = $scope.user.AcMail + $scope.campusObj.email_ending; // Holds the full academic email of the user
|
var fullMail = $scope.user.AcMail + $scope.campusObj.email_ending; // Holds the full academic email of the user
|
||||||
|
|
||||||
apiService.updateUser($scope.user.seToken, jsonUpdateUser).success(function(data)
|
apiService.updateUser(token, $scope.user).success(function(data) {
|
||||||
{
|
|
||||||
|
|
||||||
}).error(function()
|
}).error(function() {
|
||||||
{
|
|
||||||
// TODO Error
|
// TODO Error
|
||||||
console.log("Error occured on updateUser");
|
console.log("Error occured on updateUser");
|
||||||
});
|
});
|
||||||
|
|
||||||
console.log("Mail: " + fullMail);
|
console.log("Mail: " + fullMail);
|
||||||
|
|
||||||
apiService.sendValidationMail($scope.user.seToken, fullMail).success(function(data)
|
apiService.sendValidationMail(token, fullMail).success(function(data) {
|
||||||
{
|
|
||||||
console.log("DONE - 200");
|
console.log("DONE - 200");
|
||||||
$mdDialog.show($mdDialog.alert().title('E-mail Verification').content('A verification e-mail has been sent to your email address.')
|
$mdDialog
|
||||||
.ariaLabel('Email verification alert dialog').ok('Got it!').targetEvent(ev)); // Pop-up alert for e-mail verification
|
.show($mdDialog.alert().title('E-mail Verification')
|
||||||
|
.content('A verification e-mail has been sent to your email address.')
|
||||||
|
.ariaLabel('Email verification alert dialog')
|
||||||
|
.ok('Got it!')
|
||||||
|
.targetEvent(ev))
|
||||||
|
.then(function() {
|
||||||
// TODO ADD- delete cookies and redirect only after pressed 'Got it'
|
// TODO ADD- delete cookies and redirect only after pressed 'Got it'
|
||||||
$cookieStore.remove("com.sehub.www"); // Removing the cookies
|
$cookieStore.remove("com.sehub.www"); // Removing the cookies
|
||||||
$window.location.href = 'http://se-hub.appspot.com'; // Reference to 'welcome' page
|
$window.location.href = 'http://se-hub.appspot.com'; // Reference to 'welcome' page
|
||||||
}).error(function()
|
|
||||||
{
|
}); // Pop-up alert for e-mail verification
|
||||||
|
}).error(function() {
|
||||||
$mdDialog.show($mdDialog.alert().title('Error - E-mail Verification').content('An error has occured in your e-mail address.')
|
$mdDialog.show($mdDialog.alert().title('Error - E-mail Verification').content('An error has occured in your e-mail address.')
|
||||||
.ariaLabel('Email verification error alert dialog').ok('Got it!').targetEvent(ev));
|
.ariaLabel('Email verification error alert dialog').ok('Got it!').targetEvent(ev));
|
||||||
});
|
});
|
||||||
}
|
} else // TODO Fix when success to show mdDialog until 'Got it' clicked
|
||||||
else // TODO Fix when success to show mdDialog until 'Got it' clicked
|
|
||||||
{
|
{
|
||||||
$mdDialog.show($mdDialog.alert().title('Error - E-mail Verification').content('An error has occured in your e-mail address.')
|
$mdDialog.show($mdDialog.alert().title('Error - E-mail Verification').content('An error has occured in your e-mail address.')
|
||||||
.ariaLabel('Email verification error alert dialog').ok('Got it!').targetEvent(ev));
|
.ariaLabel('Email verification error alert dialog').ok('Got it!').targetEvent(ev));
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
$scope.createCampus = function(ev)
|
$scope.createCampus = function(ev) {
|
||||||
{
|
$scope.createCampusClicked = !$scope.createCampusClicked;
|
||||||
$scope.createCampusClicked = true;
|
|
||||||
|
|
||||||
if (!$scope.isLecturer) // "!isLecturer" Means => I Am Lecturer; if i am a lecturer (when pressing -> getting last data value before pressing)
|
if (!$scope.isLecturer) // "!isLecturer" Means => I Am Lecturer; if i am a lecturer (when pressing -> getting last data value before pressing)
|
||||||
{
|
{
|
||||||
if($scope.user.campusMail != null)
|
if ($scope.user.campusMail != null) {
|
||||||
{
|
|
||||||
validateEmail($scope.user.campusMail); // Verify the email according to "xxx@name.suffix"
|
validateEmail($scope.user.campusMail); // Verify the email according to "xxx@name.suffix"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
validateEmail = function(email)
|
validateEmail = function(email) {
|
||||||
{
|
|
||||||
var result = /^([\w-]+(?:\.[\w-]+)*)@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$/i;
|
var result = /^([\w-]+(?:\.[\w-]+)*)@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$/i;
|
||||||
if (!result.test(email)) // TODO Fix when success to show mdDialog until 'Got it' clicked
|
if (!result.test(email)) // TODO Fix when success to show mdDialog until 'Got it' clicked
|
||||||
{
|
{
|
||||||
|
@ -123,16 +110,14 @@ angular.module('SeHub')
|
||||||
if (result.test(email)) // TODO Fix when success to show mdDialog until 'Got it' clicked
|
if (result.test(email)) // TODO Fix when success to show mdDialog until 'Got it' clicked
|
||||||
{
|
{
|
||||||
console.log("Im good");
|
console.log("Im good");
|
||||||
apiService.sendValidationMail($scope.user.seToken, email).success(function(data)
|
apiService.sendValidationMail(token, email).success(function(data) {
|
||||||
{
|
|
||||||
console.log("DONE - 200");
|
console.log("DONE - 200");
|
||||||
$mdDialog.show($mdDialog.alert().title('E-mail Verification').content('A verification e-mail has been sent to your email address.')
|
$mdDialog.show($mdDialog.alert().title('E-mail Verification').content('A verification e-mail has been sent to your email address.')
|
||||||
.ariaLabel('Email verification alert dialog').ok('Got it!').targetEvent(email)); // Pop-up alert for e-mail verification
|
.ariaLabel('Email verification alert dialog').ok('Got it!').targetEvent(email)); // Pop-up alert for e-mail verification
|
||||||
// TODO ADD delete cookies and redirect only after pressed 'Got it'
|
// TODO ADD delete cookies and redirect only after pressed 'Got it'
|
||||||
$cookieStore.remove("com.sehub.www"); // Removing the cookies
|
$cookieStore.remove("com.sehub.www"); // Removing the cookies
|
||||||
$window.location.href = 'http://se-hub.appspot.com'; // Reference to 'welcome' page
|
$window.location.href = 'http://se-hub.appspot.com'; // Reference to 'welcome' page
|
||||||
}).error(function()
|
}).error(function() {
|
||||||
{
|
|
||||||
$mdDialog.show($mdDialog.alert().title('Error - E-mail Verification').content('An error has occured in your e-mail address or in the campus name.')
|
$mdDialog.show($mdDialog.alert().title('Error - E-mail Verification').content('An error has occured in your e-mail address or in the campus name.')
|
||||||
.ariaLabel('Email verification error alert dialog').ok('Got it!').targetEvent(email));
|
.ariaLabel('Email verification error alert dialog').ok('Got it!').targetEvent(email));
|
||||||
});
|
});
|
||||||
|
|
|
@ -7,8 +7,7 @@ angular.module('SeHub')
|
||||||
{
|
{
|
||||||
var taskName = name;
|
var taskName = name;
|
||||||
console.log("task created! " + taskName);
|
console.log("task created! " + taskName);
|
||||||
$window.location.href = 'http://localhost:8080/home#/tasks/new'; // Reference to 'newTask' page
|
$location.path("/tasks/new"); // Reference to 'newTask' page
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -37,18 +37,17 @@ service.factory('apiService', ['$http', function($http) {
|
||||||
var url = (DEBUG ? "http://localhost:8080" : "http://se-hub.appspot.com") + "/api/users/updateUser/" + token;
|
var url = (DEBUG ? "http://localhost:8080" : "http://se-hub.appspot.com") + "/api/users/updateUser/" + token;
|
||||||
|
|
||||||
req = {
|
req = {
|
||||||
method: "POST",
|
method: "PUT",
|
||||||
url: url,
|
url: url,
|
||||||
data: payLoad
|
data: payLoad
|
||||||
};
|
};
|
||||||
return $http(req);
|
return $http(req);
|
||||||
},
|
},
|
||||||
getCourseByCampusName: function(token){
|
getCourseByCampusName: function(token){
|
||||||
var url = (DEBUG ? "http://localhost:8080" : "http://se-hub.appspot.com") + "/api/courses/getAll/" + token;
|
var url = (DEBUG ? "http://localhost:8080" : "http://se-hub.appspot.com") + "/api/courses/getCourseByCampusName/" + token;
|
||||||
req = {
|
req = {
|
||||||
method : "GET",
|
method : "GET",
|
||||||
url : url,
|
url : url
|
||||||
data: token
|
|
||||||
|
|
||||||
};
|
};
|
||||||
return $http(req);
|
return $http(req);
|
||||||
|
@ -71,14 +70,104 @@ service.factory('apiService', ['$http', function($http) {
|
||||||
};
|
};
|
||||||
return $http(req);
|
return $http(req);
|
||||||
},
|
},
|
||||||
getCourseMessages: function(token, courseName){
|
createMessage: function(token, payLoad){
|
||||||
var url = (DEBUG ? "http://localhost:8080" : "http://se-hub.appspot.com") + "/api/courses/getCourseMessages/" + token + '/' + courseName;
|
var url = (DEBUG ? "http://localhost:8080" : "http://se-hub.appspot.com") + "/api/courses/createMessage/" + token;
|
||||||
|
req = {
|
||||||
|
method : "POST",
|
||||||
|
url : url,
|
||||||
|
data: payLoad
|
||||||
|
|
||||||
|
};
|
||||||
|
return $http(req);
|
||||||
|
},
|
||||||
|
getMessagesByCourseName: function(token, courseName){
|
||||||
|
var url = (DEBUG ? "http://localhost:8080" : "http://se-hub.appspot.com") + "/api/courses/getMessagesByCourseName/" + token + '/' + courseName;
|
||||||
req = {
|
req = {
|
||||||
method : "GET",
|
method : "GET",
|
||||||
url : url
|
url : url
|
||||||
|
|
||||||
};
|
};
|
||||||
return $http(req);
|
return $http(req);
|
||||||
|
},
|
||||||
|
createCourse: function(token, payLoad){
|
||||||
|
var url = (DEBUG ? "http://localhost:8080" : "http://se-hub.appspot.com") + "/api/courses/create/" + token;
|
||||||
|
req = {
|
||||||
|
method : "POST",
|
||||||
|
url : url,
|
||||||
|
data: payLoad
|
||||||
|
};
|
||||||
|
return $http(req);
|
||||||
|
},
|
||||||
|
getCampusesByUser: function(token){
|
||||||
|
var url = (DEBUG ? "http://localhost:8080" : "http://se-hub.appspot.com") + "/api/campuses/getCampusesByUser/" + token;
|
||||||
|
req = {
|
||||||
|
method : "GET",
|
||||||
|
url : url
|
||||||
|
|
||||||
|
};
|
||||||
|
return $http(req);
|
||||||
|
},
|
||||||
|
getCoursesByUser: function(token, campusId){
|
||||||
|
var url = (DEBUG ? "http://localhost:8080" : "http://se-hub.appspot.com") + "/api/courses/getCoursesByUser/" + token + "/" + campusId;
|
||||||
|
req = {
|
||||||
|
method : "GET",
|
||||||
|
url : url
|
||||||
|
|
||||||
|
};
|
||||||
|
return $http(req);
|
||||||
|
},
|
||||||
|
getProjectsByCourse: function(token, classId){
|
||||||
|
var url = (DEBUG ? "http://localhost:8080" : "http://se-hub.appspot.com") + "/api/courses/getProjectByCourse/" + token + "/" + classId;
|
||||||
|
req = {
|
||||||
|
method : "GET",
|
||||||
|
url : url
|
||||||
|
|
||||||
|
};
|
||||||
|
return $http(req);
|
||||||
|
},
|
||||||
|
getProjectsByUser: function(token){
|
||||||
|
var url = (DEBUG ? "http://localhost:8080" : "http://se-hub.appspot.com") + "/api/courses/getProjectByCourse/" + token;
|
||||||
|
req = {
|
||||||
|
method : "GET",
|
||||||
|
url : url
|
||||||
|
|
||||||
|
};
|
||||||
|
return $http(req);
|
||||||
|
},
|
||||||
|
|
||||||
|
getUserById: function(token, id){
|
||||||
|
var url = (DEBUG ? "http://localhost:8080" : "http://se-hub.appspot.com") + "/api/users/getUserById/" + token + "/" + id;
|
||||||
|
req = {
|
||||||
|
method : "GET",
|
||||||
|
url : url
|
||||||
|
};
|
||||||
|
return $http(req);
|
||||||
|
},
|
||||||
|
getCampusesByUserId: function(token, id){
|
||||||
|
var url = (DEBUG ? "http://localhost:8080" : "http://se-hub.appspot.com") + "/api/campuses/getCampusesByUserID/" + token + "/" + id;
|
||||||
|
req = {
|
||||||
|
method : "GET",
|
||||||
|
url : url
|
||||||
|
|
||||||
|
};
|
||||||
|
return $http(req);
|
||||||
|
},
|
||||||
|
joinCourse: function(token, courseId){
|
||||||
|
var url = (DEBUG ? "http://localhost:8080" : "http://se-hub.appspot.com") + "/api/users/getUserById/" + token + "/" + courseId;
|
||||||
|
req = {
|
||||||
|
method : "PUT",
|
||||||
|
url : url
|
||||||
|
};
|
||||||
|
return $http(req);
|
||||||
|
},
|
||||||
|
createMessage: function(token, payLoad){
|
||||||
|
var url = (DEBUG ? "http://localhost:8080" : "http://se-hub.appspot.com") + "/api/courses/create/" + token;
|
||||||
|
req = {
|
||||||
|
method : "POST",
|
||||||
|
url : url,
|
||||||
|
data: payLoad
|
||||||
|
};
|
||||||
|
return $http(req);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
}]);
|
}]);
|
42
templates/views/campuses.html
Normal file
42
templates/views/campuses.html
Normal file
|
@ -0,0 +1,42 @@
|
||||||
|
<div class = "myCampuses">
|
||||||
|
<md-content layout-padding layout-margin>
|
||||||
|
<h1 layout-margin style="margin-left:15px"><i class="fa fa-university"></i> Pick A Campus</h1>
|
||||||
|
</md-content>
|
||||||
|
<md-card class="cardAllCampuses">
|
||||||
|
<div ng-if = "!scope.campusesEmpty">
|
||||||
|
<div class = "allCampusesShow" flex = "99" layout = "row" ng-repeat = "t in threeSizedArray" value = "{{t}}" layout-padding>
|
||||||
|
<div flex = "32" layout = "column" ng-repeat = "campus in t" value = "{{campus}}" >
|
||||||
|
<div ng-if="t.length != 1">
|
||||||
|
<md-button ng-click = "goToCampus(campus.id)" style="width:100%; height:32%;" layout-padding class = "md-raised" >
|
||||||
|
<!-- <img src="{{campus.avatar_url}}" style = "width:14%; height:auto;"> -->
|
||||||
|
<md-card style="width:97%;height:97%">
|
||||||
|
<img ng-src="{{campus.avatar_url}}" class="md-card-image" alt="Washed Out">
|
||||||
|
<md-card-content>
|
||||||
|
<h2 class="md-title">{{campus.title}}</h2>
|
||||||
|
</md-card-content>
|
||||||
|
</md-card>
|
||||||
|
</md-button>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div ng-if="t.length == 1">
|
||||||
|
<md-button ng-click = "goToCampus(campus.id)" style="width:32%; height:32%;" layout-padding class = "md-raised" >
|
||||||
|
<!-- <img src="{{campus.avatar_url}}" style = "width:14%; height:auto;"> -->
|
||||||
|
<md-card style="width:97%;height:97%">
|
||||||
|
<img ng-src="{{campus.avatar_url}}" class="md-card-image" alt="Washed Out">
|
||||||
|
<md-card-content>
|
||||||
|
<h2 class="md-title">{{campus.title}}</h2>
|
||||||
|
</md-card-content>
|
||||||
|
</md-card>
|
||||||
|
</md-button>
|
||||||
|
</div>
|
||||||
|
<div class="spacer"></div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div ng-if = "scope.campusesEmpty">>
|
||||||
|
<md-card>
|
||||||
|
You Are Not Related To Any Course, You Can Join A Course By Press 'Join'.
|
||||||
|
</md-card>
|
||||||
|
</div>
|
||||||
|
</md-card>
|
||||||
|
</div>
|
|
@ -99,71 +99,16 @@
|
||||||
<md-button ng-click="clearAllClicked()" ng class="md-raised md-primary">Clear All</md-button>
|
<md-button ng-click="clearAllClicked()" ng class="md-raised md-primary">Clear All</md-button>
|
||||||
</div>
|
</div>
|
||||||
<div class="port_spacer"></div>
|
<div class="port_spacer"></div>
|
||||||
|
<div layout-padding layout = "row">
|
||||||
|
<div flex = "60">
|
||||||
<md-input-container>
|
<md-input-container>
|
||||||
<label> Write Your Desired Message Here And Press Post</label>
|
<label> Write Your Desired Message Here And Press Post</label>
|
||||||
<input type="text" minlength="1" ng-model="msg.msgToAdd" required>
|
<input type="text" minlength="1" ng-model="msg.msgToAdd" required></input>
|
||||||
</md-input-container>
|
</md-input-container>
|
||||||
</div>
|
</div>
|
||||||
</md-content>
|
<div flex = "30">
|
||||||
|
<md-select placeholder="Choose Course" ng-model="course" ng-click="chooseCourseClicked()" style="z-index: 300" class="courseDropDown"></md-select>
|
||||||
<md-content layout-padding layout-margin>
|
|
||||||
<h1>
|
|
||||||
<em><i class="fa fa-folder-open"></i> Project Evaluation</em>
|
|
||||||
</h1>
|
|
||||||
<md-select placeholder="Choose Project" ng-model="project" ng-click="chooseProjectClicked()" style="z-index: 300" class="projectDropDown">
|
|
||||||
</md-select>
|
|
||||||
<div layout = "column" layout-margin layout-padding>
|
|
||||||
<div layout="row">
|
|
||||||
<a href="http://localhost:8080/home#/projects">
|
|
||||||
<md-card flex class = "projectExhibit" >
|
|
||||||
Press On Me
|
|
||||||
</md-card>
|
|
||||||
</a>
|
|
||||||
<a href="http://localhost:8080/home#/projects">
|
|
||||||
<md-card flex class = "projectExhibit">
|
|
||||||
Press On Me
|
|
||||||
</md-card>
|
|
||||||
</a>
|
|
||||||
|
|
||||||
<a href="http://localhost:8080/home#/projects">
|
|
||||||
<md-card flex class = "projectExhibit">
|
|
||||||
Press On Me
|
|
||||||
</md-card>
|
|
||||||
</a>
|
|
||||||
</div>
|
</div>
|
||||||
<div layout="row">
|
|
||||||
<a href="http://localhost:8080/home#/projects">
|
|
||||||
<md-card flex class = "projectExhibit">
|
|
||||||
Press On Me
|
|
||||||
</md-card>
|
|
||||||
</a>
|
|
||||||
<a href="http://localhost:8080/home#/projects">
|
|
||||||
<md-card flex class = "projectExhibit">
|
|
||||||
Press On Me
|
|
||||||
</md-card>
|
|
||||||
</a>
|
|
||||||
<a href="http://localhost:8080/home#/projects">
|
|
||||||
<md-card flex class = "projectExhibit">
|
|
||||||
Press On Me
|
|
||||||
</md-card>
|
|
||||||
</a>
|
|
||||||
</div>
|
|
||||||
<div layout="row">
|
|
||||||
<a href="http://localhost:8080/home#/projects">
|
|
||||||
<md-card flex class = "projectExhibit">
|
|
||||||
Press On Me
|
|
||||||
</md-card>
|
|
||||||
</a>
|
|
||||||
<a href="http://localhost:8080/home#/projects">
|
|
||||||
<md-card flex class = "projectExhibit">
|
|
||||||
Press On Me
|
|
||||||
</md-card>
|
|
||||||
</a>
|
|
||||||
<a href="http://localhost:8080/home#/projects">
|
|
||||||
<md-card flex class = "projectExhibit">
|
|
||||||
Press On Me
|
|
||||||
</md-card>
|
|
||||||
</a>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</md-content>
|
</md-content>
|
||||||
|
|
|
@ -109,13 +109,15 @@
|
||||||
<!-- Controllers -->
|
<!-- Controllers -->
|
||||||
<script src="templates/js/controllers/mainController.js"></script>
|
<script src="templates/js/controllers/mainController.js"></script>
|
||||||
<script src="templates/js/controllers/homeController.js"></script>
|
<script src="templates/js/controllers/homeController.js"></script>
|
||||||
<script src="templates/js/controllers/settingsController.js"></script>
|
<script src="templates/js/controllers/profileController.js"></script>
|
||||||
<script src="templates/js/controllers/registerController.js"></script>
|
<script src="templates/js/controllers/registerController.js"></script>
|
||||||
<script src="templates/js/controllers/tasksController.js"></script>
|
<script src="templates/js/controllers/tasksController.js"></script>
|
||||||
<script src="templates/js/controllers/myClassesController.js"></script>
|
<script src="templates/js/controllers/myClassesController.js"></script>
|
||||||
<script src="templates/js/controllers/newTasksController.js"></script>
|
<script src="templates/js/controllers/newTasksController.js"></script>
|
||||||
<script src="templates/js/controllers/projectsController.js"></script>
|
<script src="templates/js/controllers/projectsController.js"></script>
|
||||||
<script src="templates/js/controllers/newCourseController.js"></script>
|
<script src="templates/js/controllers/newCourseController.js"></script>
|
||||||
|
<script src="templates/js/controllers/campusesController.js"></script>
|
||||||
|
<script src="templates/js/controllers/myProjectsController.js"></script>
|
||||||
|
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
|
@ -2,55 +2,54 @@
|
||||||
<md-content layout-padding layout-margin>
|
<md-content layout-padding layout-margin>
|
||||||
<h1 layout-margin style="margin-left:15px"><i class="fa fa-graduation-cap"></i> My Classes</h1>
|
<h1 layout-margin style="margin-left:15px"><i class="fa fa-graduation-cap"></i> My Classes</h1>
|
||||||
</md-content>
|
</md-content>
|
||||||
|
<md-card class="cardAllcourses">
|
||||||
|
<div flex = "99" class = "allcoursesShow" layout = "row" ng-repeat = "t in holdArrays" value = "{{t}}">
|
||||||
|
<div flex ="32" layout = "column" ng-repeat = "course in t" value = "{{course}}" layout-padding>
|
||||||
|
<div ng-of = "!scope.coursesEmpty">
|
||||||
|
<md-card ng-click = "goToClass(course.id)" style="width:32%; height:32%;" layout-padding class = "campusCard">
|
||||||
|
{{course.id}}
|
||||||
|
</md-card>
|
||||||
|
</div>
|
||||||
|
<div ng-if = "scope.coursesEmpty">
|
||||||
|
You Are Not Related To Any Course, You May Join Any Course You Wish.
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</md-card>
|
||||||
|
<!-- <md-button ng-click="joinCourseClicked()" ng class="md-raised md-primary">Join Class</md-button> -->
|
||||||
<div ng-if="user.isLecturer"> <!-- Lecturer Mode -->
|
<div ng-if="user.isLecturer"> <!-- Lecturer Mode -->
|
||||||
<div layout="row">
|
<div layout="row">
|
||||||
<div layout-margin layout-padding>
|
<div layout-margin layout-padding>
|
||||||
<md-button ng-click="createCourseClicked()" ng class="md-raised md-primary">Create Class</md-button>
|
<md-button ng-click="createCourseClicked()" ng class="md-raised md-primary">Create Class</md-button>
|
||||||
</div>
|
</div>
|
||||||
<div layout-margin layout-padding>
|
|
||||||
<md-button ng-click="showMyCourses()" ng class="md-raised md-primary">Show My Classes</md-button>
|
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
<div ng-if="isNewCourse">
|
<div ng-if="isNewCourse">
|
||||||
<md-content>
|
|
||||||
<md-content layout-padding layout="row" layout-sm="column">
|
|
||||||
<md-input-container>
|
|
||||||
<label>User Name</label>
|
|
||||||
<input ng-model="user.name">
|
|
||||||
</md-input-container>
|
|
||||||
<md-input-container>
|
|
||||||
<label>Email</label>
|
|
||||||
<input ng-model="user.email" type="email">
|
|
||||||
</md-input-container>
|
|
||||||
</md-content>
|
|
||||||
<md-content layout-padding>
|
<md-content layout-padding>
|
||||||
<form name="createNewCourseForm">
|
<md-card layout-padding>
|
||||||
|
<div layout layout-sm="column">
|
||||||
|
<!-- <input ng-model="course.campusName" required> -->
|
||||||
|
<md-select placeholder = "Campus name" ng-model="course.campusName" ng-click = "chooseCourseClicked()" required>
|
||||||
|
<md-option ng-repeat="c in campuses" value="{{c.title}}">
|
||||||
|
{{c.title}}
|
||||||
|
</md-option>
|
||||||
|
</md-select>
|
||||||
|
</div>
|
||||||
<div layout layout-sm="column">
|
<div layout layout-sm="column">
|
||||||
<md-input-container style="width:80%">
|
<md-input-container style="width:80%">
|
||||||
<label>Class Name</label>
|
<label flex = "50">Class Name</label>
|
||||||
<input ng-model="user.createNewCourse" min-length="1" required>
|
<input ng-model="course.courseName" min-length="1" required>
|
||||||
</md-input-container>
|
</md-input-container>
|
||||||
<md-input-container flex>
|
<md-input-container flex = "20">
|
||||||
|
<label>Course Start Date</label>
|
||||||
|
<input type="date" ng-model="course.startDate" required>
|
||||||
|
</md-input-container>
|
||||||
|
<md-input-container flex = "20">
|
||||||
<label>Course Finish Date</label>
|
<label>Course Finish Date</label>
|
||||||
<input type="date" ng-model="user.finalDate" required>
|
<input type="date" ng-model="course.endDate" required>
|
||||||
</md-input-container>
|
</md-input-container>
|
||||||
</div>
|
</div>
|
||||||
<div layout layout-sm="column">
|
</md-card>
|
||||||
<md-input-container flex>
|
|
||||||
<label>First name</label>
|
|
||||||
<input ng-model="user.firstName">
|
|
||||||
</md-input-container>
|
|
||||||
<md-input-container flex>
|
|
||||||
<label>Last Name</label>
|
|
||||||
<input ng-model="theMax">
|
|
||||||
</md-input-container>
|
|
||||||
</div>
|
|
||||||
<md-input-container flex>
|
|
||||||
<label>General Info (optional)</label>
|
|
||||||
<textarea ng-model="user.courseInfo" columns="1" md-maxlength="150"></textarea>
|
|
||||||
</md-input-container>
|
|
||||||
</form>
|
|
||||||
</md-content>
|
|
||||||
<div layout-padding layout-margin>
|
<div layout-padding layout-margin>
|
||||||
<md-button ng-click="submitNewClassClicked()" class="md-raised md-primary">Submit New Class</md-button>
|
<md-button ng-click="submitNewClassClicked()" class="md-raised md-primary">Submit New Class</md-button>
|
||||||
</div>
|
</div>
|
||||||
|
@ -61,91 +60,6 @@
|
||||||
<md-option ng-repeat="c in courses" value="{{c.course}}">{{c.course}}</md-option>
|
<md-option ng-repeat="c in courses" value="{{c.course}}">{{c.course}}</md-option>
|
||||||
</md-select>
|
</md-select>
|
||||||
</div>
|
</div>
|
||||||
<!-- <md-content>
|
|
||||||
<div layout="row">
|
|
||||||
<div flex="65">
|
|
||||||
<md-card>
|
|
||||||
<p class = "messagesFeed">Messages</p>
|
|
||||||
</md-card>
|
|
||||||
</div>
|
|
||||||
<div flex="34">
|
|
||||||
<md-card>
|
|
||||||
<p class = "tasksFeed">Tasks</p>
|
|
||||||
</md-card>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div layout="row">
|
|
||||||
<div flex="65">
|
|
||||||
<md-card>
|
|
||||||
<div class = "messagesContent">
|
|
||||||
<md-card ng-repeat = "msg in messages">
|
|
||||||
<div layout="column">
|
|
||||||
<div layout="row" layout-margin layout-padding>
|
|
||||||
<div flex="10" class="md-avatar">
|
|
||||||
<img ng-src="{{user.avatar_url}}" style="width:100%">
|
|
||||||
</div>
|
|
||||||
<div flex>
|
|
||||||
<div layout = "column">
|
|
||||||
<div>
|
|
||||||
<b>{{user.name}}</b>
|
|
||||||
</div>
|
|
||||||
<div>
|
|
||||||
class_name
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div>
|
|
||||||
<div flex="69" class="msgSent" layout-margin layout-padding>
|
|
||||||
{{msg.text}}
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</md-card>
|
|
||||||
</div>
|
|
||||||
</md-card>
|
|
||||||
</div>
|
|
||||||
<div flex="34">
|
|
||||||
<md-card>
|
|
||||||
<p class = "tasksContent">
|
|
||||||
For Task 3 Press: <a href="http://localhost:8080/home#/tasks">Task #3</a>
|
|
||||||
<br></br>
|
|
||||||
For Task 4 Press: <a href="http://localhost:8080/home#/home">Task #4</a>
|
|
||||||
<br></br>
|
|
||||||
For Task 5 Press: <a href="http://localhost:8080/home#/home">Task #5</a>
|
|
||||||
<br></br>
|
|
||||||
For Task 6 Press: <a href="http://localhost:8080/home#/home">Task #6</a>
|
|
||||||
<br></br>
|
|
||||||
For Task 7 Press: <a href="http://localhost:8080/home#/home">Task #7</a>
|
|
||||||
<br></br>
|
|
||||||
For Task 8 Press: <a href="http://localhost:8080/home#/home">Task #8</a>
|
|
||||||
</p>
|
|
||||||
</md-card>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class ="addMessage" layout="row" layout-margin layout padding>
|
|
||||||
<div>
|
|
||||||
<md-button ng-click="addMessageClicked()" ng class="md-raised md-primary"><i class="fa fa-comments"></i></md-button>
|
|
||||||
</div>
|
|
||||||
<div ng-if="addMsg">
|
|
||||||
<md-select placeholder="Choose Course" ng-model="course" ng-click="chooseCourseClicked()" class="courseDropDown">
|
|
||||||
<md-option ng-repeat="c in courses" value="{{c.course}}">{{c.course}}</md-option>
|
|
||||||
</md-select>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
</div>
|
|
||||||
<div ng-if="addMsg">
|
|
||||||
<div layout = "row" layout-margin layout padding layout-align = "left center">
|
|
||||||
<md-button ng-click="postMessageClicked()" ng class="md-raised md-primary">Post</md-button>
|
|
||||||
<md-button ng-click="clearAllClicked()" ng class="md-raised md-primary">Clear All</md-button>
|
|
||||||
</div>
|
|
||||||
<div class="port_spacer"></div>
|
|
||||||
<md-input-container>
|
|
||||||
<label> Write Your Desired Message Here And Press Post</label>
|
|
||||||
<input type="text" minlength="1" ng-model="msg.msgToAdd" required>
|
|
||||||
</md-input-container>
|
|
||||||
</div>
|
|
||||||
</md-content> -->
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div ng-if="isStudent"> <!-- Student Mode -->
|
<div ng-if="isStudent"> <!-- Student Mode -->
|
||||||
|
|
85
templates/views/myProjects.html
Normal file
85
templates/views/myProjects.html
Normal file
|
@ -0,0 +1,85 @@
|
||||||
|
<div class = "myProjects">
|
||||||
|
<md-content layout-padding layout-margin>
|
||||||
|
<h1 layout-margin style="margin-left:15px"><i class="fa fa-graduation-cap"></i> {{user.name}}'s projects</h1>
|
||||||
|
<md-card class="cardAllProjects">
|
||||||
|
<div flex ="99" class = "allProjectsShow" layout = "row" ng-repeat = "t in arrayHolder" value = "{{t}}">
|
||||||
|
<div flex = "32" layout = "column" ng-repeat = "project in t" value = "{{project}}" layout-padding>
|
||||||
|
<div ng-if = "!scope.myProjectsEmpty">
|
||||||
|
<md-card layout-padding ng-click = "goToMyProject(project.id)" style="width:32%; height:32%;" class = "projectCard">
|
||||||
|
{{project.id}}
|
||||||
|
</md-card>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div ng-if = "scope.myProjectsEmpty">
|
||||||
|
You Do Not Have Any Project, You May Create One.
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</md-card>
|
||||||
|
</md-content>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
<!-- div layout-padding layout-margin>
|
||||||
|
<div layout = "row" layout-padding layout-margin>
|
||||||
|
<div flex = "49">
|
||||||
|
Project Creator: {{user.name}} Should Be Project creator
|
||||||
|
</div>
|
||||||
|
<div flex = "49" >
|
||||||
|
<div ng-if="user.isLecturer">
|
||||||
|
<div layout = "row" layout-padding>
|
||||||
|
<div>
|
||||||
|
<md-button ng-click="editPressed()" class="md-raised md-primary">Edit</md-button>
|
||||||
|
</div>
|
||||||
|
<div ng-if="isEditPressed">
|
||||||
|
<md-button ng-click="removeProject()" class="md-raised md-primary">Remove</md-button>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div layout = "row" layout-padding layout-margin>
|
||||||
|
<div flex = "49">
|
||||||
|
<md-card>
|
||||||
|
Here Will Be Graph - Commits Over Period Of Time
|
||||||
|
</md-card>
|
||||||
|
</div>
|
||||||
|
<div flex = "49">
|
||||||
|
<md-card>
|
||||||
|
Here Will Be Graph (by columns) - Commits, Issues, Open Tasks
|
||||||
|
</md-card>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div flex>
|
||||||
|
<md-card>
|
||||||
|
<md-content class="md-padding">
|
||||||
|
<md-tabs md-dynamic-height md-border-bottom>
|
||||||
|
<md-tab label="Commits">
|
||||||
|
<md-content class="md-padding">
|
||||||
|
<h1 class="md-display-2">Commits</h1>
|
||||||
|
<p>Commits...</p>
|
||||||
|
</md-content>
|
||||||
|
</md-tab>
|
||||||
|
<md-tab label="Issues">
|
||||||
|
<md-content class="md-padding">
|
||||||
|
<h1 class="md-display-2">Issues</h1>
|
||||||
|
<p>Issues...</p>
|
||||||
|
</md-content>
|
||||||
|
</md-tab>
|
||||||
|
<md-tab label="Bugs">
|
||||||
|
<md-content class="md-padding">
|
||||||
|
<h1 class="md-display-2">Bugs</h1>
|
||||||
|
<p> Bugs Bugs Bugs..</p>
|
||||||
|
</md-content>
|
||||||
|
</md-tab>
|
||||||
|
<md-tab label="WhatEver">
|
||||||
|
<md-content class="md-padding">
|
||||||
|
<h1 class="md-display-2">WhatEver</h1>
|
||||||
|
<p>Bla Bla Bla..</p>
|
||||||
|
</md-content>
|
||||||
|
</md-tab>
|
||||||
|
</md-tabs>
|
||||||
|
</md-content>
|
||||||
|
</md-card>
|
||||||
|
</div>
|
||||||
|
</div> -->
|
|
@ -1,6 +1,6 @@
|
||||||
<div class = "newCourse">
|
<div class = "newCourse">
|
||||||
<md-content layout-padding layout-margin>
|
<md-content layout-padding layout-margin>
|
||||||
<h1 layout-margin style="margin-left:15px"><i class="fa fa-graduation-cap"></i> My New Course</h1>
|
<h1 layout-margin style="margin-left:15px"><i class="fa fa-graduation-cap"></i> {{user.name}}'s' New Course</h1>
|
||||||
<md-button ng-click="goBack()" class="md-raised md-primary">Go Back</md-button>
|
<md-button ng-click="goBack()" class="md-raised md-primary">Go Back</md-button>
|
||||||
</md-content>
|
</md-content>
|
||||||
</div>
|
</div>
|
|
@ -1,6 +1,7 @@
|
||||||
<div layout-padding>
|
<div layout-padding>
|
||||||
<div layout="row">
|
<div layout="row">
|
||||||
<div flex="20" layout-padding>
|
<div flex="40" layout-padding>
|
||||||
|
<md-card layout-padding>
|
||||||
<h2>
|
<h2>
|
||||||
<i class="fa fa-info-circle"></i> Task Info:
|
<i class="fa fa-info-circle"></i> Task Info:
|
||||||
</h2>
|
</h2>
|
||||||
|
@ -15,6 +16,7 @@
|
||||||
<md-input-container>
|
<md-input-container>
|
||||||
<label>Description</label>
|
<label>Description</label>
|
||||||
<textarea ng-model="task.task.description" required></textarea>
|
<textarea ng-model="task.task.description" required></textarea>
|
||||||
|
</md-input-container>
|
||||||
</div>
|
</div>
|
||||||
<div>
|
<div>
|
||||||
<md-switch ng-model="task.isPersonal" aria-label="Switch 1">
|
<md-switch ng-model="task.isPersonal" aria-label="Switch 1">
|
||||||
|
@ -34,10 +36,9 @@
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</md-card>
|
||||||
|
<div layout="column">
|
||||||
<div layout="column" flex="30" layout-padding>
|
<md-card layout-padding>
|
||||||
|
|
||||||
<div>
|
<div>
|
||||||
<h2>
|
<h2>
|
||||||
<i class="fa fa-cubes"></i> Add A component:
|
<i class="fa fa-cubes"></i> Add A component:
|
||||||
|
@ -45,16 +46,21 @@
|
||||||
</div>
|
</div>
|
||||||
<div>
|
<div>
|
||||||
Select Type:
|
Select Type:
|
||||||
<md-select placeholder="Component Type" ng-model="newComp.type">
|
<md-select placeholder="Component Type" ng-model="newComp.type" ng-change="ComponentType(newComp.type)">
|
||||||
<md-option ng-repeat="component in componentTypes" value="{{component.type}}">{{component.type}}</md-option>
|
<md-option ng-repeat="component in componentTypes" value="{{component.type}}">{{component.type}}</md-option>
|
||||||
</md-select>
|
</md-select>
|
||||||
</div>
|
</div>
|
||||||
<div>
|
<div>
|
||||||
<md-input-container>
|
<md-input-container ng-repeat="detail in compDetails">
|
||||||
<label>Label</label>
|
<label>{{detail.detail}}</label>
|
||||||
<input ng-model="newComp.label" required>
|
<input ng-model="newComp.label[$index]" required>
|
||||||
</md-input-container>
|
</md-input-container>
|
||||||
</div>
|
</div>
|
||||||
|
<div ng-if="isRadioButton">
|
||||||
|
<md-button ng-click="addMoreOptions()" >
|
||||||
|
Add An Option
|
||||||
|
</md-button>
|
||||||
|
</div>
|
||||||
<div>
|
<div>
|
||||||
<md-switch ng-model="newComp.isMandatory" aria-label="Switch 1">
|
<md-switch ng-model="newComp.isMandatory" aria-label="Switch 1">
|
||||||
Mandatory?: {{ newComp.isMandatory}}
|
Mandatory?: {{ newComp.isMandatory}}
|
||||||
|
@ -64,9 +70,12 @@
|
||||||
<div flex="65"></div>
|
<div flex="65"></div>
|
||||||
<md-button class="md-raised" ng-click="addComponent()"><i class="fa fa-plus"></i> Add To Task</md-button>
|
<md-button class="md-raised" ng-click="addComponent()"><i class="fa fa-plus"></i> Add To Task</md-button>
|
||||||
</div>
|
</div>
|
||||||
|
</md-card>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div flex="50" layout-padding>
|
|
||||||
|
<div flex="60" layout-padding>
|
||||||
<!-- <md-card style="background-image: url('http://www.stationeryhq.com/content/images/thumbs/0000324_clipboard_500.png')">
|
<!-- <md-card style="background-image: url('http://www.stationeryhq.com/content/images/thumbs/0000324_clipboard_500.png')">
|
||||||
|
|
||||||
</md-card> -->
|
</md-card> -->
|
||||||
|
@ -80,6 +89,9 @@
|
||||||
<p>{{ dueTimeFromNow }}</p>
|
<p>{{ dueTimeFromNow }}</p>
|
||||||
<p>{{task.task.description}}</p>
|
<p>{{task.task.description}}</p>
|
||||||
<p>{{(task.isPersonal) ? "Personal" : "Project"}} Task</p>
|
<p>{{(task.isPersonal) ? "Personal" : "Project"}} Task</p>
|
||||||
|
|
||||||
|
<md-divider ng-if="!$last"></md-divider>
|
||||||
|
|
||||||
<div ng-repeat="component in task.components">
|
<div ng-repeat="component in task.components">
|
||||||
<!-- if text box -->
|
<!-- if text box -->
|
||||||
<div ng-if="component.type == 'textbox'">
|
<div ng-if="component.type == 'textbox'">
|
||||||
|
@ -101,6 +113,20 @@
|
||||||
{{ component.label}}
|
{{ component.label}}
|
||||||
</md-checkbox>
|
</md-checkbox>
|
||||||
</div>
|
</div>
|
||||||
|
<!-- if Link -->
|
||||||
|
<div ng-if="component.type == 'link'" layout="column" ng-init="initLinkComp(component)" style="width: 100%" layout-align="center">
|
||||||
|
<md-button ng-href="{{component.href}}" style="width: 100%" target="_blank">
|
||||||
|
<i class="fa fa-link"></i> {{component.title}}
|
||||||
|
</md-button>
|
||||||
|
</div>
|
||||||
|
<!-- if RadioButtons -->
|
||||||
|
<div ng-if="component.type == 'radiobuttons'" ng-init="initRadioButtonsComp(component)">
|
||||||
|
{{component.title}}
|
||||||
|
<md-radio-group ng-model="component.value" ng-change="RB(component)">
|
||||||
|
<md-radio-button ng-repeat="option in component.values" value="{{option.text}}" class="md-primary">{{option.text}}</md-radio-button>
|
||||||
|
</md-radio-group>
|
||||||
|
</div>
|
||||||
|
<md-divider ng-if="!$last"></md-divider>
|
||||||
</div>
|
</div>
|
||||||
</md-card>
|
</md-card>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -1,6 +1,8 @@
|
||||||
<div>
|
<div>
|
||||||
<div class="loader" ng-if="loadingData">
|
<div class="loader" ng-if="loadingData" layout="row" layout-align="center">
|
||||||
|
|
||||||
<md-progress-circular md-mode="indeterminate"></md-progress-circular>
|
<md-progress-circular md-mode="indeterminate"></md-progress-circular>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
<md-content layout-padding>
|
<md-content layout-padding>
|
||||||
<md-card layout-padding>
|
<md-card layout-padding>
|
||||||
|
@ -15,7 +17,7 @@
|
||||||
<img ng-src="{{user.avatar_url}}" alt="" style="width:20%">
|
<img ng-src="{{user.avatar_url}}" alt="" style="width:20%">
|
||||||
</div>
|
</div>
|
||||||
<div flex="70%">
|
<div flex="70%">
|
||||||
<md-button class="md-raised" ng-click="changeProfileMode()">
|
<md-button class="md-raised" ng-click="changeProfileMode()" ng-if="isUser">
|
||||||
<i ng-class="profileModeIcon"></i> {{profileMode}}
|
<i ng-class="profileModeIcon"></i> {{profileMode}}
|
||||||
</md-button>
|
</md-button>
|
||||||
</div>
|
</div>
|
||||||
|
@ -78,7 +80,7 @@
|
||||||
</div>
|
</div>
|
||||||
<div class="spacer"></div>
|
<div class="spacer"></div>
|
||||||
<div>
|
<div>
|
||||||
<md-button class="">
|
<md-button class="" ng-if="isUser">
|
||||||
X
|
X
|
||||||
</md-button>
|
</md-button>
|
||||||
</div>
|
</div>
|
||||||
|
@ -96,11 +98,11 @@
|
||||||
<img alt="{{ person.name }}" ng-src="{{ campus.avatar_url }}" class="md-avatar" />
|
<img alt="{{ person.name }}" ng-src="{{ campus.avatar_url }}" class="md-avatar" />
|
||||||
</div>
|
</div>
|
||||||
<div class="port_spacer">
|
<div class="port_spacer">
|
||||||
{{ campus.title }} -
|
<strong>{{ campus.title }}</strong> {{campus.email_ending}}
|
||||||
</div>
|
</div>
|
||||||
<div class="spacer"></div>
|
<div class="spacer"></div>
|
||||||
<div>
|
<div>
|
||||||
<md-button class="">
|
<md-button class="" ng-if="isUser">
|
||||||
X
|
X
|
||||||
</md-button>
|
</md-button>
|
||||||
</div>
|
</div>
|
|
@ -1,6 +1,20 @@
|
||||||
<div class = "projects">
|
<div class = "projects">
|
||||||
|
<h1 style="margin-left:15px"><i class="fa fa-cube"></i> Projects</h1>
|
||||||
|
<md-card class="cardAllProjects">
|
||||||
|
<div flex ="99" class = "allProjectsShow" layout = "row" ng-repeat = "t in arrayHolder" value = "{{t}}">
|
||||||
|
<div flex = "32" layout = "column" ng-repeat = "project in t" value = "{{project}}" layout-padding>
|
||||||
|
<div ng-if = "!scope.projectEmpty">
|
||||||
|
<md-card layout-padding ng-click = "goToProject(project.id)" style="width:32%; height:32%;" class = "projectCard">
|
||||||
|
{{project.id}}
|
||||||
|
</md-card>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div ng-if = "scope.projectEmpty">
|
||||||
|
You Are Not Related To Any Course, You May Join Any Course You Wish.
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</md-card>
|
||||||
<md-content layout-padding layout-margin>
|
<md-content layout-padding layout-margin>
|
||||||
<h1 style="margin-left:15px"><i class="fa fa-file-cube-o"></i> Projects</h1>
|
|
||||||
<md-button ng-click="createProjectClicked()" ng class="md-raised md-primary">Create Project</md-button>
|
<md-button ng-click="createProjectClicked()" ng class="md-raised md-primary">Create Project</md-button>
|
||||||
</md-content>
|
</md-content>
|
||||||
</div>
|
</div>
|
|
@ -1,6 +1,52 @@
|
||||||
<div class = "tasks">
|
<div class = "tasks">
|
||||||
<md-content layout-padding layout-margin>
|
<md-content layout-padding layout-margin>
|
||||||
<h1 style="margin-left:15px"><i class="fa fa-file-text-o"></i> Tasks</h1>
|
<h1 style="margin-left:15px"><i class="fa fa-file-text-o"></i> Tasks</h1>
|
||||||
|
<div ng-if="user.isLecturer">
|
||||||
<md-button ng-click="createTaskClicked(taskName)" ng class="md-raised md-primary">Create Task</md-button>
|
<md-button ng-click="createTaskClicked(taskName)" ng class="md-raised md-primary">Create Task</md-button>
|
||||||
|
|
||||||
|
<div flex>
|
||||||
|
<md-card>
|
||||||
|
<md-content class="md-padding">
|
||||||
|
<md-tabs md-dynamic-height md-border-bottom>
|
||||||
|
<md-tab label="Submitted">
|
||||||
|
<md-content class="md-padding">
|
||||||
|
<h1 class="md-display-2">Submitted</h1>
|
||||||
|
<p>Submitted...</p>
|
||||||
|
</md-content>
|
||||||
|
</md-tab>
|
||||||
|
<md-tab label="Delayed">
|
||||||
|
<md-content class="md-padding">
|
||||||
|
<h1 class="md-display-2">Delayed</h1>
|
||||||
|
<p>Delayed...</p>
|
||||||
|
</md-content>
|
||||||
|
</md-tab>
|
||||||
|
<md-tab label="Not Submitted">
|
||||||
|
<md-content class="md-padding">
|
||||||
|
<h1 class="md-display-2">Not Submitted</h1>
|
||||||
|
<p> Not Submitted ..</p>
|
||||||
|
</md-content>
|
||||||
|
</md-tab>
|
||||||
|
<md-tab label="WhatEver">
|
||||||
|
<md-content class="md-padding">
|
||||||
|
<h1 class="md-display-2">WhatEver</h1>
|
||||||
|
<p>Bla Bla Bla..</p>
|
||||||
|
</md-content>
|
||||||
|
</md-tab>
|
||||||
|
</md-tabs>
|
||||||
|
</md-content>
|
||||||
|
</md-card>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<!-- Should Be In Table List -->
|
||||||
|
<div class = "allProjectsShow" flex = "99" layout = "row" ng-repeat = "t in threeSizedArray" value = "{{t}}" layout-padding>
|
||||||
|
<div flex = "32" layout = "column" ng-repeat = "project in t" value = "{{project}}">
|
||||||
|
<md-button ng-click = "goToProject(project.id)" style="width:32%; height:32%;" flex="32" layout-padding class = "md-raised">
|
||||||
|
<!-- <img src="{{campus.avatar_url}}" style = "width:14%; height:auto;"> -->
|
||||||
|
{{project.title}}
|
||||||
|
</md-button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<!-- Should Be In Table List -->
|
||||||
|
</div>
|
||||||
</md-content>
|
</md-content>
|
||||||
</div>
|
</div>
|
Loading…
Reference in a new issue