Class/Quest Update

This commit is contained in:
SowinskiBraeden committed 2021-01-14 10:20:49 -08:00
1 parent 3307307025
commit b313bb7e1f
8 files changed
+86 -7520

No files matched your search

-2
View File
@@ -72,8 +72,6 @@ const server = app.listen(PORT, function() {
let io = socket(server);
io.on('connection', function(socket) {
console.log('connected');
socket.on('add:xp', function(data) {
io.sockets.emit("added:xp", data);
});
+6
View File
@@ -12,6 +12,12 @@ const CourseSchema = new mongoose.Schema({
grade: {
type: Number,
required: true
},
students: {
type: [String]
},
campaigns: {
type: [String]
}
});
+6 -5
View File
@@ -5,10 +5,6 @@ const QuestSchema = new mongoose.Schema({
type: String,
required: true
},
campaign: {
type: String,
required: true
},
expiry: {
type: Date,
required: true
@@ -22,7 +18,12 @@ const QuestSchema = new mongoose.Schema({
required: true
},
referenceClass: {
type: [String]
type: String,
required: true
},
campaign: {
type: String,
required: true
}
});
-7417
View File
File diff suppressed because it is too large. Load diff
+11 -8
View File
@@ -122,7 +122,7 @@ router.post('/deleteUser', (req, res, next) => {
// Create Quest
router.post('/createQuest', (req, res, next) => {
const { title, amount, expiry, instructions, campaign} = req.body;
const { title, amount, expiry, instructions, course, campaign} = req.body;
let errors = [];
@@ -133,21 +133,24 @@ router.post('/createQuest', (req, res, next) => {
// Redirect to dashboard page with errors
res.render('dashboard', {
errors,
name,
email,
password,
password2
title,
amount,
expiry,
instructions,
course,
campaign
});
} else {
try {
// Creates new User Object
// Creates new Quest Object
const newQuest = new Quest({
title: title,
campaign: campaign,
expiry: expiry,
xp: amount,
instruction: instructions
instruction: instructions,
referenceClass: course,
campaign: campaign
});
newQuest
.save()
-1
View File
@@ -11,7 +11,6 @@
<body>
<div class="container"><%- body %></div>
<!-- Load Scripts for Modal -->
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.4.1/js/bootstrap.min.js"></script>
+45 -81
View File
@@ -18,7 +18,11 @@
margin-left: 10px;
margin-top: 10px;
}
#error-noClass {
padding: 15px;
margin-top: 5px;
margin-left: 22%;
}
#option1 {
width: 50px;
}
@@ -159,52 +163,20 @@
</div>
<div class="quest-all">
<h1 id="quest-title">Quests</h1>
<h1 id="quest-title">Courses</h1>
<div class='quests-container'>
<div class='quest-buttons'>
<div class="btn-group btn-group-toggle" data-toggle="buttons">
<label onClick="showHTML()" class="menu-buttons btn btn-info active">
<input type="radio" name="options" id="option1" autocomplete="off" checked> HTML
</label>
<label onClick="showCSS()" class="menu-buttons btn btn-info">
<input type="radio" name="options" id="option2" autocomplete="off"> CSS
</label>
<label onClick="showJS()" class="menu-buttons btn btn-info">
<input type="radio" name="options" id="option3" autocomplete="off"> JavaScript
</label>
</div>
</div>
<div class='quests-content'>
<div style="display: none;" id="HTML-Display">
<ul>
<% quests.forEach(function (quest) { %>
<% if(quest.campaign == "HTML") { %>
<!-- Creates Quest Button link -->
<li><button class='list-button btn btn-outline-success mt-2' onclick="redirect('<%= quest._id %>')"><%= quest.title %></button></li>
<% } %>
<% if(courses.length == 0) {%>
<h2 id="error-noClass"">There are no classes yet :(</h2>
<% } else if(courses.length > 0) { %>
<select id="classes" onchange="showQuest()" class="form-control" style="margin-right: 5px;">
<option>--Please Select a Class--</option>
<% courses.forEach(function (course) { %>
<option value="<%= course.name %>"><%= course.name %></option>
<% }) %>
</ul>
</div>
<div style="display: none;" id="CSS-Display">
<ul>
<% quests.forEach(function (quest) { %>
<% if(quest.campaign == "CSS") { %>
<!-- Creates Quest Button link -->
<li><button class='list-button btn btn-outline-success mt-2' onclick="redirect('<%= quest._id %>')"><%= quest.title %></button></li>
</select>
<% } %>
<% }) %>
</ul>
</div>
<div style="display: none;" id="JS-Display">
<ul>
<% quests.forEach(function (quest) { %>
<% if(quest.campaign == "JS") { %>
<!-- Creates Quest Button link -->
<li><button class='list-button btn btn-outline-success mt-2' onclick="redirect('<%= quest._id %>')"><%= quest.title %></button></li>
<% } %>
<% }) %>
</ul>
</div>
<div><ul id="class-quests"></ul></div>
</div>
</div>
</div>
@@ -219,6 +191,16 @@
}
});
// Global old variables
let currRank;
let rankUp;
let remain;
let goal;
let total;
let progress;
let percent;
let indexes = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 12]
window.onload = function() {
calculate();
}
@@ -232,37 +214,29 @@
document.location.href = url;
}
function showHTML() {
let state = document.getElementById('HTML-Display').style.display;
if (state == "block") {
document.getElementById('HTML-Display').style.display = 'none';
} else {
document.getElementById('JS-Display').style.display = 'none';
document.getElementById('CSS-Display').style.display = 'none';
document.getElementById('HTML-Display').style.display = 'block';
}
}
let allQuests = [];
let questObj;
<% quests.forEach(function (quest) { %>
questObj = {
_id: "<%= quest._id %>",
title: "<%= quest.title %>",
expiry: "<%= quest.expiry %>",
xp: <%= quest.xp %>,
instruction: "<%= quest.instruction %>",
referenceClass: "<%= quest.referenceClass %>",
campaign: "<%= quest.campaign %>",
};
allQuests.push(questObj);
<% }) %>
function showCSS() {
let state = document.getElementById('CSS-Display').style.display;
if (state == "block") {
document.getElementById('CSS-Display').style.display = 'none';
} else {
document.getElementById('HTML-Display').style.display = 'none';
document.getElementById('JS-Display').style.display = 'none';
document.getElementById('CSS-Display').style.display = 'block';
function showQuest() {
document.getElementById('class-quests').innerHTML = "";
let className = document.getElementById('classes').value;
for(let i = 0; i < allQuests.length; i++) {
if (allQuests[i]["referenceClass"] == className) {
document.getElementById('class-quests').innerHTML += `<li><button class='list-button btn btn-outline-success mt-2' onclick="redirect(${allQuests[i]["_id"]})">${allQuests[i]["title"]}</button></li>`;
}
}
function showJS() {
let state = document.getElementById('JS-Display').style.display;
if (state == "block") {
document.getElementById('JS-Display').style.display = 'none';
} else {
document.getElementById('HTML-Display').style.display = 'none';
document.getElementById('CSS-Display').style.display = 'none';
document.getElementById('JS-Display').style.display = 'block';
}
}
let ranks = [
@@ -281,16 +255,6 @@
{"Master Digital Crafter": 800} // index 12
]
// Global old variables
let currRank;
let rankUp;
let remain;
let goal;
let total;
let progress;
let percent;
let indexes = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 12]
// Initial calculate from 0 to current XP
function calculate() {
// Get current rank
+18 -6
View File
@@ -290,14 +290,26 @@
></textarea>
</div>
<div>
<label for="campaign">Campaign</label>
<select required name="campaign" id="campaign">
<option value="">--Please choose an option--</option>
<option value="HTML">HTML</option>
<option value="CSS">CSS</option>
<option value="JS">JavaScript</option>
<label for="course">Course/Class</label>
<select class="form-control" required name="course" id="course">
<option value="">--Please Choose a Class--</option>
<% courses.forEach(function(course) { %>
<option value="<%= course.name %>"><%= course.name %></option>
<% }) %>
</select>
</div>
<div>
<label for="campaign">Campaign</label>
<input
id="campaign"
name="campaign"
type="text"
value=""
placeholder="New Campaign"
class="form-control"
required
>
</div>
<button type="submit" class="btn btn-primary">
Create Quest
</button>