Class/Quest Update
This commit is contained in:
1 parent
3307307025
commit
b313bb7e1f
8 files changed
+89
-7523
No files matched your search
@@ -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);
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -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
@@ -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
File diff suppressed because it is too large.
Load diff
+11
-8
@@ -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()
|
||||||
|
|||||||
@@ -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>
|
||||||
|
|||||||
+48
-84
@@ -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
|
</select>
|
||||||
</label>
|
<% } %>
|
||||||
</div>
|
<div><ul id="class-quests"></ul></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>
|
|
||||||
</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>
|
|
||||||
<% } %>
|
|
||||||
<% }) %>
|
|
||||||
</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,36 +214,28 @@
|
|||||||
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';
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -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
|
||||||
|
|||||||
@@ -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>
|
||||||
|
|||||||
Reference in new issue
Block a user