From 7450cf33b1486ec1e1de5b449cb4ca944f617c23 Mon Sep 17 00:00:00 2001 From: Aidan Holland <thehappydinoa@gmail.com> Date: Wed, 23 Oct 2019 22:37:55 -0400 Subject: [PATCH] fix: Various fixes and compatabilties --- .gitignore | 31 ++++++++++++++++++++++++++ CLCBooksSQL.sql | 4 ++-- LICENSE | 7 ++++++ index.js | 4 ++-- logos/drexel.png | Bin 6953 -> 18074 bytes package.json | 8 +++++-- server.js | 57 ++++++++++++++++++++++++++--------------------- 7 files changed, 80 insertions(+), 31 deletions(-) create mode 100644 .gitignore create mode 100644 LICENSE diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..83ada0e --- /dev/null +++ b/.gitignore @@ -0,0 +1,31 @@ +# Logs +logs +*.log +npm-debug.log* +yarn-debug.log* +yarn-error.log* +lerna-debug.log* + +# Diagnostic reports (https://nodejs.org/api/report.html) +report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json + +# Runtime data +pids +*.pid +*.seed +*.pid.lock + +# Dependency directories +#node_modules/ + +# Optional npm cache directory +.npm + +# Output of 'npm pack' +*.tgz + +# Yarn Integrity file +.yarn-integrity + +# Database File +CLCBooks.db diff --git a/CLCBooksSQL.sql b/CLCBooksSQL.sql index 39aeb12..47ad905 100644 --- a/CLCBooksSQL.sql +++ b/CLCBooksSQL.sql @@ -1,5 +1,5 @@ CREATE TABLE [Books] ( - [Order] INTEGER PRIMARY KEY AUTOINCREMENT, + [Order] INTEGER PRIMARY KEY AUTOINCREMENT, [ISBN] INTEGER NOT NULL, [Title] VARCHAR(50) NOT NULL, [Author] VARCHAR(50) NOT NULL @@ -9,7 +9,7 @@ INSERT INTO Books (ISBN, Title, Author) Values ('9781514828144', 'A Byte of Python', 'Swaroop C H'), ('9781108171021', 'Artificial Intelligence: Foundations of Computational Agents', 'David Poole and Alan Mackworth'), -('9781441419057', 'How to Think Like a Computer Scientist: C ++', 'Allen B. Downey'), +('9781441419057', 'How to Think Like a Computer Scientist: C++', 'Allen B. Downey'), ('9787308040365', 'How to Think Like a Computer Scientist: Java', 'Allen B. Downey'), ('9781563249914', 'Philosophy of Computer Science', 'William J. Rapaport'); diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..ca620ed --- /dev/null +++ b/LICENSE @@ -0,0 +1,7 @@ +Copyright 2019 trp74 + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. \ No newline at end of file diff --git a/index.js b/index.js index 21818a6..a51f853 100644 --- a/index.js +++ b/index.js @@ -1,5 +1,5 @@ function goToCCI() { - //window.open('https://drexel.edu/cci/'); + window.open('https://drexel.edu/cci/'); } @@ -18,7 +18,7 @@ function getBooks() { function myCallBack(xhr) { if (xhr.readyState==4 && xhr.status==200) { let table = document.getElementById('book-list'); - table.innerHTML = `<tr> + table.innerHTML = `<tr id="header-row"> <th>Title</th> <th>Author</th> <th>ISBN</th> diff --git a/logos/drexel.png b/logos/drexel.png index 340a20d356aa1dd114711fa43b37c8438037aa16..e9aa327cadc99c35cea89a2f6261eeb8311bd974 100644 GIT binary patch literal 18074 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 literal 6953 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 diff --git a/package.json b/package.json index 7252cb1..6bb0723 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "ci101lab5", - "version": "0.0.1", - "description": "lab for ci 101", + "version": "0.0.2", + "description": "Lab for CI 101", "license": "MIT", "repository": { "type": "git", @@ -11,5 +11,9 @@ "bootstrap": "^4.3.1", "express": "^4.17.1", "sqlite3": "^4.1.0" + }, + "main": "server.js", + "scripts": { + "start": "node server.js" } } diff --git a/server.js b/server.js index b7e51a2..4bcbb36 100644 --- a/server.js +++ b/server.js @@ -1,33 +1,40 @@ const express = require("express"); const app = express(); -const sqlite3 = require('sqlite3').verbose(); +const sqlite3 = require("sqlite3").verbose(); -app.use(express.static('.')); +app.use(express.static(".")); app.use(express.json()); -app.get("/getBooks", function(req, res){ - const db = new sqlite3.Database('./CLCBooks.db'); - console.log('recieved'); - let output = ''; - db.serialize(function() { - db.each("SELECT Books.ISBN, Books.Title, Books.Author, Availability.Available FROM Books, Availability WHERE Books.ISBN = Availability.ISBN", function(err, row) { - if (row) { - if (row.Available == 'Y') { - row.Available = "Yes"; - } else { - row.Available = "No"; - } - output += `<tr> <td>` + row.Title + `</td><td>` + row.Author + `</td><td>` + row.ISBN + `</td> <td>` + row.Available + `</td></tr>`; - } - }); - }); - setTimeout(function(){ - db.close(); - res.send(output); - }, 500); +app.get("/getBooks", function(req, res) { + const db = new sqlite3.Database("./CLCBooks.db"); + console.log("recieved"); + let output = ""; + db.serialize(function() { + db.each( + "SELECT Books.ISBN, Books.Title, Books.Author, Availability.Available FROM Books, Availability WHERE Books.ISBN = Availability.ISBN", + function(err, row) { + if (row) { + if (row.Available == "Y") { + row.Available = "Yes"; + } else { + row.Available = "No"; + } + output += `<tr class="rows"> + <td>${row.Title}</td> + <td>${row.Author}</td> + <td>${row.ISBN}</td> + <td>${row.Available}</td> + </tr>`; + } + } + ); + }); + setTimeout(function() { + db.close(); + res.send(output); + }, 500); }); -app.listen('8080', function(){ - console.log("listening at port 8080..."); -}); \ No newline at end of file +const port = "8080"; +app.listen(port, () => console.log(`Listening at 127.0.0.1:${port}...`)); -- GitLab