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