From 366dc6159d41e57d81d20ece85f4e6e2985aede3 Mon Sep 17 00:00:00 2001 From: "Elf M. Sternberg" Date: Fri, 15 Apr 2016 22:05:02 -0700 Subject: [PATCH] =?UTF-8?q?[=E2=98=85]=20Added=20built=20products.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit There's no reason other people need to replicate my idiosyncratic toolchain. --- .gitignore | 5 +- docs/backbonestore.pdf | Bin 0 -> 106049 bytes htdocs/index.html | 71 +++++++++ htdocs/jsonstore.css | 91 +++++++++++ htdocs/store.js | 337 +++++++++++++++++++++++++++++++++++++++++ work/index.haml | 53 +++++++ work/jsonstore.styl | 96 ++++++++++++ work/store.coffee | 164 ++++++++++++++++++++ 8 files changed, 814 insertions(+), 3 deletions(-) create mode 100644 docs/backbonestore.pdf create mode 100644 htdocs/index.html create mode 100644 htdocs/jsonstore.css create mode 100644 htdocs/store.js create mode 100644 work/index.haml create mode 100644 work/jsonstore.styl create mode 100644 work/store.coffee diff --git a/.gitignore b/.gitignore index 852aa71..ab8d13e 100644 --- a/.gitignore +++ b/.gitignore @@ -7,8 +7,7 @@ node_modules/* bower_components/* npm-debug.log -work/* -htdocs/*.* -docs/* +docs/*.html +docs/*.tex htdocs/lib package.yml diff --git a/docs/backbonestore.pdf b/docs/backbonestore.pdf new file mode 100644 index 0000000000000000000000000000000000000000..9be6ae585b6f2f80a628fe5720811da121a58473 GIT binary patch literal 106049 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 + + + The Backbone Store + + + + + + + +

+ + + + + + diff --git a/htdocs/jsonstore.css b/htdocs/jsonstore.css new file mode 100644 index 0000000..1cfec6b --- /dev/null +++ b/htdocs/jsonstore.css @@ -0,0 +1,91 @@ +body { + font-family: "Lucida Grande", Lucida, Helvetica, Arial, sans-serif; + background: #fff; + color: #333; + margin: 0px; + padding: 0px; +} +#main { + position: relative; +} +#header { + background: #999; + background: -webkit-gradient(linear, left top, left bottom, from(#adadad), to(#7a7a7a)); + background: -moz-linear-gradient(top, #adadad, #7a7a7a); + margin: 0px; + padding: 20px; + border-bottom: 1px solid #ccc; +} +#header h1 { + font-family: Inconsolata, Monaco, Courier, mono; + color: #fff; + margin: 0px; +} +#header .cart-info { + position: absolute; + top: 0px; + right: 0px; + text-align: right; + padding: 10px; + background: #555; + background: -webkit-gradient(linear, left top, left bottom, from(#777), to(#444)); + background: -moz-linear-gradient(top, #777, #444); + color: #fff; + font-size: 12px; + font-weight: bold; +} +img { + border: 0; +} +.productitemview { + position: absolute; + top: 0; + left: 0; +} +#productlistview { + position: absolute; + top: 0; + left: 0; +} +#productlistview ul { + list-style: none; +} +.item { + float: left; + width: 250px; + margin-right: 10px; + margin-bottom: 10px; + padding: 5px; + -moz-border-radius-topleft: 5px; + -moz-border-radius-topright: 5px; + -moz-border-radius-bottomleft: 5px; + -moz-border-radius-bottomright: 5px; + -webkit-border-bottom-right-radius: 5px; + -webkit-border-top-left-radius: 5px; + -webkit-border-top-right-radius: 5px; + -webkit-border-bottom-left-radius: 5px; + border-bottom-right-radius: 5px; + border-top-left-radius: 5px; + border-top-right-radius: 5px; + border-bottom-left-radius: 5px; + border: 1px solid #ccc; + text-align: center; + font-size: 12px; +} +.item-title { + font-weight: bold; +} +.item-artist { + font-weight: bold; + font-size: 14px; +} +.item-detail { + margin: 10px 0 0 10px; +} +.item-detail .item-image { + float: left; + margin-right: 10px; +} +.item-detail .item-info { + padding: 100px 10px 0px 10px; +} diff --git a/htdocs/store.js b/htdocs/store.js new file mode 100644 index 0000000..fad8bcb --- /dev/null +++ b/htdocs/store.js @@ -0,0 +1,337 @@ +// Generated by CoffeeScript 1.10.0 +(function() { + var BackboneStore, CartWidget, Item, ItemCollection, Product, ProductCollection, ProductListView, ProductView, _BaseView, + extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; }, + hasProp = {}.hasOwnProperty; + + Product = (function(superClass) { + extend(Product, superClass); + + function Product() { + return Product.__super__.constructor.apply(this, arguments); + } + + return Product; + + })(Backbone.Model); + + Item = (function(superClass) { + extend(Item, superClass); + + function Item() { + return Item.__super__.constructor.apply(this, arguments); + } + + Item.prototype.update = function(amount) { + if (amount === this.get('quantity')) { + return; + } + this.set({ + quantity: amount + }, { + silent: true + }); + return this.collection.trigger('update', this); + }; + + Item.prototype.price = function() { + return this.get('product').get('price') * this.get('quantity'); + }; + + return Item; + + })(Backbone.Model); + + ProductCollection = (function(superClass) { + extend(ProductCollection, superClass); + + function ProductCollection() { + return ProductCollection.__super__.constructor.apply(this, arguments); + } + + ProductCollection.prototype.model = Product; + + ProductCollection.prototype.initialize = function(models, options) { + return this.url = options.url; + }; + + ProductCollection.prototype.comparator = function(item) { + return item.get('title'); + }; + + return ProductCollection; + + })(Backbone.Collection); + + ItemCollection = (function(superClass) { + extend(ItemCollection, superClass); + + function ItemCollection() { + return ItemCollection.__super__.constructor.apply(this, arguments); + } + + ItemCollection.prototype.model = Item; + + ItemCollection.prototype.updateItemForProduct = function(product, amount) { + var i, pid; + amount = amount != null ? amount : 0; + pid = product.get('id'); + i = this.detect(function(obj) { + return obj.get('product').get('id') === pid; + }); + if (i) { + i.update(amount); + return i; + } + return this.add({ + product: product, + quantity: amount + }); + }; + + ItemCollection.prototype.getTotalCount = function() { + var addup; + addup = function(memo, obj) { + return memo + obj.get('quantity'); + }; + return this.reduce(addup, 0); + }; + + ItemCollection.prototype.getTotalCost = function() { + var addup; + addup = function(memo, obj) { + return memo + obj.price(); + }; + return this.reduce(addup, 0); + }; + + return ItemCollection; + + })(Backbone.Collection); + + _BaseView = (function(superClass) { + extend(_BaseView, superClass); + + function _BaseView() { + return _BaseView.__super__.constructor.apply(this, arguments); + } + + _BaseView.prototype.parent = $('#main'); + + _BaseView.prototype.className = 'viewport'; + + _BaseView.prototype.initialize = function() { + this.el = $(this.el); + this.el.hide(); + this.parent.append(this.el); + return this; + }; + + _BaseView.prototype.hide = function() { + var dfd; + dfd = $.Deferred(); + if (!this.el.is(':visible')) { + return dfd.resolve(); + } + this.el.fadeOut('fast', function() { + return dfd.resolve(); + }); + return dfd.promise(); + }; + + _BaseView.prototype.show = function() { + var dfd; + dfd = $.Deferred(); + if (this.el.is(':visible')) { + return dfd.resolve(); + } + this.el.fadeIn('fast', function() { + return dfd.resolve(); + }); + return dfd.promise(); + }; + + return _BaseView; + + })(Backbone.View); + + ProductListView = (function(superClass) { + extend(ProductListView, superClass); + + function ProductListView() { + return ProductListView.__super__.constructor.apply(this, arguments); + } + + ProductListView.prototype.id = 'productlistview'; + + ProductListView.prototype.template = $("#store_index_template").html(); + + ProductListView.prototype.initialize = function(options) { + _BaseView.prototype.initialize.apply(this, [options]); + return this.collection.bind('reset', this.render.bind(this)); + }; + + ProductListView.prototype.render = function() { + this.el.html(_.template(this.template)({ + 'products': this.collection.toJSON() + })); + return this; + }; + + return ProductListView; + + })(_BaseView); + + ProductView = (function(superClass) { + extend(ProductView, superClass); + + function ProductView() { + return ProductView.__super__.constructor.apply(this, arguments); + } + + ProductView.prototype.className = 'productitemview'; + + ProductView.prototype.template = $("#store_item_template").html(); + + ProductView.prototype.initialize = function(options) { + _BaseView.prototype.initialize.apply(this, [options]); + return this.itemcollection = options.itemcollection; + }; + + ProductView.prototype.events = { + "keypress .uqf": "updateOnEnter", + "click .uq": "update" + }; + + ProductView.prototype.update = function(e) { + e.preventDefault(); + return this.itemcollection.updateItemForProduct(this.model, parseInt(this.$('.uqf').val())); + }; + + ProductView.prototype.updateOnEnter = function(e) { + if (e.keyCode === 13) { + return this.update(e); + } + }; + + ProductView.prototype.render = function() { + this.el.html(_.template(this.template)(this.model.toJSON())); + return this; + }; + + return ProductView; + + })(_BaseView); + + CartWidget = (function(superClass) { + extend(CartWidget, superClass); + + function CartWidget() { + return CartWidget.__super__.constructor.apply(this, arguments); + } + + CartWidget.prototype.el = $('.cart-info'); + + CartWidget.prototype.template = $('#store_cart_template').html(); + + CartWidget.prototype.initialize = function() { + return this.collection.bind('update', this.render.bind(this)); + }; + + CartWidget.prototype.render = function() { + var tel; + tel = this.$el.html(_.template(this.template)({ + 'count': this.collection.getTotalCount(), + 'cost': this.collection.getTotalCost() + })); + tel.animate({ + paddingTop: '30px' + }).animate({ + paddingTop: '10px' + }); + return this; + }; + + return CartWidget; + + })(Backbone.View); + + BackboneStore = (function(superClass) { + extend(BackboneStore, superClass); + + function BackboneStore() { + return BackboneStore.__super__.constructor.apply(this, arguments); + } + + BackboneStore.prototype.views = {}; + + BackboneStore.prototype.products = null; + + BackboneStore.prototype.cart = null; + + BackboneStore.prototype.routes = { + "": "index", + "item/:id": "product" + }; + + BackboneStore.prototype.initialize = function(data) { + this.cart = new ItemCollection(); + new CartWidget({ + collection: this.cart + }); + this.products = new ProductCollection([], { + url: 'data/items.json' + }); + this.views = { + '_index': new ProductListView({ + collection: this.products + }) + }; + $.when(this.products.fetch({ + reset: true + })).then(function() { + return window.location.hash = ''; + }); + return this; + }; + + BackboneStore.prototype.hideAllViews = function() { + return _.select(_.map(this.views, function(v) { + return v.hide(); + }), function(t) { + return t !== null; + }); + }; + + BackboneStore.prototype.index = function() { + var view; + view = this.views['_index']; + return $.when.apply($, this.hideAllViews()).then(function() { + return view.show(); + }); + }; + + BackboneStore.prototype.product = function(id) { + var base, name, product, view; + product = this.products.detect(function(p) { + return p.get('id') === id; + }); + view = ((base = this.views)[name = 'item.' + id] || (base[name] = new ProductView({ + model: product, + itemcollection: this.cart + }).render())); + return $.when(this.hideAllViews()).then(function() { + return view.show(); + }); + }; + + return BackboneStore; + + })(Backbone.Router); + + $(document).ready(function() { + new BackboneStore(); + return Backbone.history.start(); + }); + +}).call(this); diff --git a/work/index.haml b/work/index.haml new file mode 100644 index 0000000..ca46514 --- /dev/null +++ b/work/index.haml @@ -0,0 +1,53 @@ +!!! 5 +%html{:xmlns => "http://www.w3.org/1999/xhtml"} + %head + %title The Backbone Store + %link{:charset => "utf-8", :href => "jsonstore.css", :rel => "stylesheet", :type => "text/css"}/ + %script#store_index_template(type="text/x-underscore-tmplate") + %h1 Product Catalog + %ul + <% for(i=0,l=products.length;i + %li.item + .item-image + %a{:href => "#item/<%= p.id %>"} + %img{:src => "<%= p.image %>", :alt => "<%= p.title %>"}/ + .item-artist <%= p.artist %> + .item-title <%= p.title %> + .item-price $<%= p.price %> + <% } %> + + %script#store_item_template(type= "text/x-underscore-template") + .item-detail + .item-image + %img(src="<%= large_image %>" alt="<%= title %>")/ + .item-info + .item-artist <%= artist %> + .item-title <%= title %> + .item-price $<%= price %> + .item-form + %form(action="#/cart" method="post") + %p + %label Quantity: + %input(type="text" size="2" name="quantity" value="1" class="uqf")/ + %p + %input(type="submit" value="Add to Cart" class="uq")/ + + .item-link + %a(href="<%= url %>") Buy this item on Amazon + .back-link + %a(href="#") « Back to Items + %script#store_cart_template(type="text/x-underscore-template") + %p Items: <%= count %> ($<%= cost %>) + + + %body + #container + #header + %h1 + The Backbone Store + .cart-info + #main + %script{:src => "lib/jquery.js", :type => "text/javascript"} + %script{:src => "lib/underscore.js", :type => "text/javascript"} + %script{:src => "lib/backbone.js", :type => "text/javascript"} + %script{:src => "store.js", :type => "text/javascript"} diff --git a/work/jsonstore.styl b/work/jsonstore.styl new file mode 100644 index 0000000..d02f128 --- /dev/null +++ b/work/jsonstore.styl @@ -0,0 +1,96 @@ +rounded(radius) + -moz-border-radius-topleft: radius + -moz-border-radius-topright: radius + -moz-border-radius-bottomleft: radius + -moz-border-radius-bottomright: radius + -webkit-border-bottom-right-radius: radius + -webkit-border-top-left-radius: radius + -webkit-border-top-right-radius: radius + -webkit-border-bottom-left-radius: radius + border-bottom-right-radius: radius + border-top-left-radius: radius + border-top-right-radius: radius + border-bottom-left-radius: radius + +background_gradient(base) + background: base + background: -webkit-gradient(linear, left top, left bottom, from(lighten(base, 20%)), to(darken(base, 20%))) + background: -moz-linear-gradient(top, lighten(base, 20%), darken(base, 20%)) + +body + font-family: "Lucida Grande", Lucida, Helvetica, Arial, sans-serif + background: #FFF + color: #333 + margin: 0px + padding: 0px + + +#main + position: relative + +#header + background_gradient(#999) + margin: 0px + padding: 20px + border-bottom: 1px solid #ccc + + h1 + font-family: Inconsolata, Monaco, Courier, mono + color: #FFF + margin: 0px + + .cart-info + position: absolute + top: 0px + right: 0px + text-align: right + padding: 10px + background_gradient(#555) + color: #FFF + font-size: 12px + font-weight: bold + +img + border: 0 + +.productitemview + position: absolute + top: 0 + left: 0 + +#productlistview + position: absolute + top: 0 + left: 0 + + ul + list-style: none + +.item + float:left + width: 250px + margin-right: 10px + margin-bottom: 10px + padding: 5px + rounded(5px) + border: 1px solid #ccc + text-align:center + font-size: 12px + +.item-title + font-weight: bold + +.item-artist + font-weight: bold + font-size: 14px + +.item-detail + margin: 10px 0 0 10px + + .item-image + float:left + margin-right: 10px + + .item-info + padding: 100px 10px 0px 10px + diff --git a/work/store.coffee b/work/store.coffee new file mode 100644 index 0000000..6d16274 --- /dev/null +++ b/work/store.coffee @@ -0,0 +1,164 @@ +class Product extends Backbone.Model + +class Item extends Backbone.Model + update: (amount) -> + return if amount == @get 'quantity' + @set {quantity: amount}, {silent: true} + @collection.trigger 'update', @ + + price: () -> + @get('product').get('price') * @get('quantity') + +class ProductCollection extends Backbone.Collection + model: Product + + initialize: (models, options) -> + @url = options.url + + comparator: (item) -> + item.get 'title' + +class ItemCollection extends Backbone.Collection + model: Item + + updateItemForProduct: (product, amount) -> + amount = if amount? then amount else 0 + pid = product.get 'id' + i = this.detect (obj) -> (obj.get('product').get('id') == pid) + if i + i.update(amount) + return i + + @add {product: product, quantity: amount} + + getTotalCount: () -> + addup = (memo, obj) -> memo + obj.get 'quantity' + @reduce addup, 0 + + getTotalCost: () -> + addup = (memo, obj) -> memo + obj.price() + @reduce addup, 0 + + +class _BaseView extends Backbone.View + parent: $('#main') + className: 'viewport' + + initialize: () -> + @el = $(@el) + @el.hide() + @parent.append(@el) + @ + + hide: () -> + dfd = $.Deferred() + if not @el.is(':visible') + return dfd.resolve() + @el.fadeOut('fast', () -> dfd.resolve()) + dfd.promise() + + show: () -> + dfd = $.Deferred() + if @el.is(':visible') + return dfd.resolve() + @el.fadeIn('fast', () -> dfd.resolve()) + dfd.promise() + + +class ProductListView extends _BaseView + id: 'productlistview' + template: $("#store_index_template").html() + + initialize: (options) -> + _BaseView.prototype.initialize.apply @, [options] + @collection.bind 'reset', @render.bind @ + + render: () -> + @el.html(_.template(@template)({'products': @collection.toJSON()})) + @ + + +class ProductView extends _BaseView + className: 'productitemview' + template: $("#store_item_template").html() + initialize: (options) -> + _BaseView.prototype.initialize.apply @, [options] + @itemcollection = options.itemcollection + + events: + "keypress .uqf" : "updateOnEnter" + "click .uq" : "update" + + update: (e) -> + e.preventDefault() + @itemcollection.updateItemForProduct @model, parseInt(@$('.uqf').val()) + + updateOnEnter: (e) -> + @update(e) if e.keyCode == 13 + + render: () -> + @el.html(_.template(@template)(@model.toJSON())); + @ + + +class CartWidget extends Backbone.View + el: $('.cart-info') + template: $('#store_cart_template').html() + + initialize: () -> + @collection.bind 'update', @render.bind @ + + render: () -> + tel = @$el.html _.template(@template)({ + 'count': @collection.getTotalCount() + 'cost': @collection.getTotalCost() + }) + tel.animate({paddingTop: '30px'}).animate({paddingTop: '10px'}) + @ + + +class BackboneStore extends Backbone.Router + views: {} + products: null + cart: null + + routes: + "": "index" + "item/:id": "product" + + initialize: (data) -> + @cart = new ItemCollection() + new CartWidget + collection: @cart + + @products = new ProductCollection [], + url: 'data/items.json' + @views = + '_index': new ProductListView + collection: @products + $.when(@products.fetch({reset: true})) + .then(() -> window.location.hash = '') + @ + + hideAllViews: () -> + _.select(_.map(@views, (v) -> return v.hide()), + (t) -> t != null) + + + index: () -> + view = @views['_index'] + $.when.apply($, @hideAllViews()).then(() -> view.show()) + + product: (id) -> + product = @products.detect (p) -> p.get('id') == (id) + view = (@views['item.' + id] ||= new ProductView( + model: product, + itemcollection: @cart + ).render()) + $.when(@hideAllViews()).then( + () -> view.show()) + + +$(document).ready () -> + new BackboneStore(); + Backbone.history.start();