diff --git a/.gitignore b/.gitignore new file mode 100644 index 00000000..40b878db --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +node_modules/ \ No newline at end of file diff --git a/README.md b/README.md index 493995c1..a60d6149 100644 --- a/README.md +++ b/README.md @@ -1,100 +1,16 @@ -Assignment 2 - Short Stack: Basic Two-tier Web Application using HTML/CSS/JS and Node.js -=== -Due: September 11th, by 11:59 AM. - -This assignment aims to introduce you to creating a prototype two-tiered web application. -Your application will include the use of HTML, CSS, JavaScript, and Node.js functionality, with active communication between the client and the server over the life of a user session. - -Baseline Requirements ---- - -There is a large range of application areas and possibilities that meet these baseline requirements. -Try to make your application do something useful! A todo list, storing / retrieving high scores for a very simple game... have a little fun with it. - -Your application is required to implement the following functionalities: - -- a `Server` which not only serves files, but also maintains a tabular dataset with 3 or more fields related to your application -- a `Results` functionality which shows the entire dataset residing in the server's memory -- a `Form/Entry` functionality which allows a user to add or delete data items residing in the server's memory -- a `Server Logic` which, upon receiving new or modified "incoming" data, includes and uses a function that adds at least one additional derived field to this incoming data before integrating it with the existing dataset -- the `Derived field` for a new row of data must be computed based on fields already existing in the row. -For example, a `todo` dataset with `task`, `priority`, and `creation_date` may generate a new field `deadline` by looking at `creation_date` and `priority` - -Your application is required to demonstrate the use of the following concepts: - -HTML: -- One or more [HTML Forms](https://developer.mozilla.org/en-US/docs/Learn/HTML/Forms), with any combination of form tags appropriate for the user input portion of the application -- A results page displaying all data currently available on the server. You will most likely use a `` tag for this, but `
+ + + + + + + + + + + + +
NameYear of ReleaseGenreRelevanceEdit/Delete
+ + +
+
+ + + diff --git a/server.improved.js b/server.improved.js index 9ac27fb8..4cac972d 100644 --- a/server.improved.js +++ b/server.improved.js @@ -1,6 +1,7 @@ const http = require( 'http' ), fs = require( 'fs' ), // IMPORTANT: you must run `npm install` in the directory for this assignment + // To run, use node server.improved.js // to install the mime library if you're testing this on your local machine. // However, Glitch will install it automatically by looking in your package.json // file. @@ -8,16 +9,12 @@ const http = require( 'http' ), dir = 'public/', port = 3000 -const appdata = [ - { 'model': 'toyota', 'year': 1999, 'mpg': 23 }, - { 'model': 'honda', 'year': 2004, 'mpg': 30 }, - { 'model': 'ford', 'year': 1987, 'mpg': 14} -] +const appdata = [] const server = http.createServer( function( request,response ) { - if( request.method === 'GET' ) { + if( request.method === 'GET' ) { // retrieve info from server data handleGet( request, response ) - }else if( request.method === 'POST' ){ + }else if( request.method === 'POST' ) { // add info to server data handlePost( request, response ) } }) @@ -33,20 +30,40 @@ const handleGet = function( request, response ) { } const handlePost = function( request, response ) { + //handle /delete /submit requests here + //calculate the derived field + //add data to app data + + //Note that "request" is an object. You have to use "request.url" to get the url string. + + debugger; + let dataString = '' - request.on( 'data', function( data ) { - dataString += data - }) + request.on( 'data', function( data ) { + dataString += data // stuff from frontend + }) - request.on( 'end', function() { - console.log( JSON.parse( dataString ) ) + request.on( 'end', function() { + console.log( JSON.parse( dataString ) ) // This is logging the object containing the row. - // ... do something with the data here!!! + json = JSON.parse( dataString ); // This is the object containing the row. + + if(request.url == '/submit'){ + // ... do something with the data here!!! + appdata.push(JSON.parse(dataString)) - response.writeHead( 200, "OK", {'Content-Type': 'text/plain' }) - response.end('test') + response.writeHead( 200, "OK", {'Content-Type': 'text/plain' }) + response.end( JSON.stringify( appdata) ) + } + + else if(request.url == '/delete'){ + appdata.splice(json.row, 1); + console.log("Row " + json.row + " was deleted.") + } }) + + } const sendFile = function( response, filename ) {