diff --git a/dist/index.html b/dist/index.html index b873b1e..d47c7d6 100644 --- a/dist/index.html +++ b/dist/index.html @@ -1,20 +1,111 @@ -
- -| Name | +Trip ID | +Category | +Continent | +Weeks | +Cost | + + +
|---|
Trip Reserved!
'); + // console.log(response); + // }); + // }); + + // Get those trip deets. + $tripsList.on('click', 'tr', function getTrip() { + const trip = new Trip({ id: $(this).attr('data-id') }) + $tripDescription.empty(); + + trip.fetch().done(() => { + $tripDescription.append(tripDetailsTemplate(trip.attributes)); + }); + }); + + + tripTemplate = _.template($('#trip-template').html()); + tripList.on('update', render, tripList); + tripList.fetch(); + + tripDetailsTemplate = _.template($('#trip-details-template').html()); + + $('#add-trip-form').submit(events.addTrip); + + $('#reservation-trip-form').submit(events.addReservation); + + $('.sort').click(events.sortTrips); + tripList.on('sort', render, tripList); }); diff --git a/src/app/collections/trip_list.js b/src/app/collections/trip_list.js new file mode 100644 index 0000000..80ecfdb --- /dev/null +++ b/src/app/collections/trip_list.js @@ -0,0 +1,15 @@ +import Backbone from 'backbone'; +import Trip from '../models/trip'; + +const TripList = Backbone.Collection.extend({ + + model: Trip, + + url: 'https://ada-backtrek-api.herokuapp.com/trips', + + parse: function(response) { + return response; + } +}); + +export default TripList; diff --git a/src/app/models/reservation.js b/src/app/models/reservation.js new file mode 100644 index 0000000..00917c9 --- /dev/null +++ b/src/app/models/reservation.js @@ -0,0 +1,32 @@ +import Backbone from 'backbone'; + +const Reservation = Backbone.Model.extend({ + + validate: function(attributes) { + const error = {}; + + if (!attributes.name) { + error['name'] = 'Full Name cannot be blank!'; + } + + if (!attributes.email) { + error['email'] = 'E-Mail cannot be blank!'; + } + + if (!attributes.age) { + error['age'] = 'Age cannot be blank!'; + } else if (isNaN(attributes.age)) { + error['age'] = 'Age must be a number!'; + } + + console.log('Error!'); + console.log(error); + if (Object.keys(error).length > 0) { + return error; + } else { + return false; + } + } +}); + +export default Reservation; diff --git a/src/app/models/trip.js b/src/app/models/trip.js new file mode 100644 index 0000000..8592825 --- /dev/null +++ b/src/app/models/trip.js @@ -0,0 +1,49 @@ +import Backbone from 'backbone'; + +const Trip = Backbone.Model.extend ({ + + urlRoot: 'https://ada-backtrek-api.herokuapp.com/trips', + + parse(response) { + return response + }, + + validate: function(attributes) { + const error = {}; + const continents = ['Africa', 'Antartica', 'Asia', 'Australasia', 'Europe', 'North America', 'South America'] + + if (!attributes.name) { + error['name'] = 'Name cannot be blank!'; + } + + if (!attributes.continent) { + error['continent'] = 'Continent cannot be blank!'; + } else if (!continents.includes(attributes.continent)) { + error['continent'] = 'Please only use actual continents!'; + } + + if (!attributes.category) { + error['category'] = 'The category cannot be blank!'; + } + + if (!attributes.weeks) { + error['weeks'] = 'Weeks cannot be blank!'; + } else if (isNaN(attributes.weeks)){ + error['weeks'] = 'Numbers only please!'; + } + + if (!attributes.cost) { + error['cost'] = 'The cost cannot be blank!'; + } else if (isNaN(attributes.cost)) { + error['cost'] = 'Numbers only please!' + } + + if (Object.keys(error).length > 0) { + return error; + } else { + return false; + } + }, +}); + +export default Trip; diff --git a/src/css/models/.keep b/src/css/models/.keep new file mode 100644 index 0000000..e69de29 diff --git a/src/css/models/book.js b/src/css/models/book.js new file mode 100644 index 0000000..beb48a1 --- /dev/null +++ b/src/css/models/book.js @@ -0,0 +1,7 @@ +import Backbone from 'backbone'; + +const Book = Backbone.Model.extend ({ +// Custom code +}); + +export default Book; diff --git a/src/css/models/cat.js b/src/css/models/cat.js new file mode 100644 index 0000000..b31d419 --- /dev/null +++ b/src/css/models/cat.js @@ -0,0 +1,7 @@ +import Backbone from 'backbone'; + +const Cat = Backbone.Model.extend ({ +// Custom code +}); + +export default Cat; diff --git a/src/css/style.css b/src/css/style.css index b7b2d44..8bc7ef4 100644 --- a/src/css/style.css +++ b/src/css/style.css @@ -1,2 +1,60 @@ +h1 { + text-align: center; +} -/* Your styles go here! */ +#trip-list { + list-style: none; + margin-left: 0; +} + +th.sort { + cursor: pointer; +} + +.sort-field { + background-color: green; + color: white; +} + +footer { + text-align: center; +} + +#trip-details-template { + +} + +/* Styles for error section at the top */ +#status-messages { + background-color: #dfdfdf; + + /* Hide by default */ + display: none; + + border-radius: 1rem; + margin: 1rem; + height: 100%; + padding: .8rem; +} + +#status-messages ul { + list-style: none; + margin-left: 0; +} + +#status-messages button.clear { + margin-top: .2rem; + height: 100%; +} + +#status-messages button.clear img { + width: 2rem; +} + +#status-messages .error { + color: red; +} + +#status-messages .success { + color: green; +}