var ProductView = ScrollableView.extend({
el: "#product",
events: {
"click .fit": "scroll_to_bottom",
"click .notAvailableInCanada": "scroll_to_bottom",
"click .size": "select_size",
"click .color": "select_color",
"click .share": "share",
"click .gallery-left": "gallery_left",
"click .gallery-right": "gallery_right",
},
initialize: function(){
this.gallery = new GalleryView ()
this.scroller = ScrollFactory('#product', app.iscroll_options)
this.$productHeader = this.$(".product-header")
this.$title = this.$(".title")
this.$type = this.$(".type")
this.$price = this.$(".price")
this.$size = this.$(".size")
this.$share = this.$(".share")
this.$color = this.$(".color")
this.$body = this.$(".body")
this.$fit = this.$(".fit")
this.$fitHeader = this.$('.fitHeader')
this.$notAvailableInCanada = this.$(".notAvailableInCanada")
this.$sizing = this.$(".sizing")
this.$style = this.$(".style")
},
show: function(){
this.showFooter()
document.body.className = "product"
},
hide: function(){
app.footer.hide()
},
showFooter: function(){
if (this.sold_out) {
console.log("FOOTER: SOLD OUT")
app.footer.show("SOLD OUT")
}
else if (this.isNotAvailable) {
console.log("FOOTER: NOT AVAILABLE")
app.footer.show("NOT AVAILABLE")
}
else {
app.footer.show("ADD TO CART", "BUY NOW")
}
},
item: null,
details: null,
size: null,
color: null,
code: null,
is_onesize: false,
fitLargeCodes: {},
sizes: null,
colors: null,
cache: {},
gallery_left: function(){
app.product.gallery.gallery.previous()
},
gallery_right: function(){
app.product.gallery.gallery.next()
},
find: function(code, cb){
data = app.collection.items[code] || {}
if (code in this.cache) {
return cb(data, this.cache[code])
}
sdk.product.item({
code: code
}).done(function(details){
this.cache[code] = details
cb(data, details)
}.bind(this))
},
load: function(code, data){
this.gallery.reset()
this.show()
if (app.view && app.view.hide) {
app.view.hide()
}
app.view = this
app.header.set_back(true)
if (! app.collection.loaded) {
this.el.className = "loading"
app.collection.afterFetchCallback = this.load.bind(this, code, data)
app.collection.fetch()
return
}
else {
app.collection.afterFetchCallback = null
}
window.location.href = "#/store/" + code
if (data) {
app.collection.items[code] = data
}
this.el.className = "loading"
this.find(code, this.populate.bind(this))
},
populate: function(data, details){
this.el.className = ""
console.log(data, details)
var descriptions = this.get_descriptions(details)
var title = data['ModelNames']
var type = title_case( data['MicroCategory'] )
var price = "$" + data['DiscountedPrice'] + ".00"
var details_description = descriptions['Details'] || ""
var editorial = descriptions['EditorialDescription'] || ""
var body = details_description + " " + editorial
// body = body.replace(/
/g, "
").replace(/(
)+$/, "")
var default_color_id = this.populate_selectors(data, details)
var notAvailableInCanada = !! app.store.NotAvailableInCanada
app.product.$notAvailableInCanada.toggle( notAvailableInCanada )
if (! ('Price' in details['Item'])) {
console.log("NO PRICE, IS NOT AVAILABLE")
this.isNotAvailable = true
}
else {
console.log("FOUND PRICE, IS AVAILABLE")
this.isNotAvailable = false
}
if (this.sold_out || this.isNotAvailable) {
this.$style.css("opacity", 0)
this.$color.html("NOT AVAILABLE")
this.$size.hide()
this.gallery.populate( data['Code8'], details['Item']['ImageTypes'] )
}
else {
this.$style.css("opacity", 1)
var color = this.colors[default_color_id]
var color_label = color.label
var sizes = this.find_sizes_for_color(default_color_id)
var size = sizes[0]
var size_label = this.sizes[size].label
this.gallery.populate( color.code, details['Item']['ImageTypes'] )
this.color = color
this.size = size
this.is_onesize = !! this.sizes[1]
this.$size.show().html(size_label)
if (color_label) {
this.$color.html(color_label)
}
else {
this.$color.hide()
}
}
// console.log(color, color_label, size, size_label)
this.item = data
this.details = details['Item']
this.code = data['DefaultCode10']
console.log( data['DefaultCode10'] )
// title += "
EXTREME COMPACTING ON NYLON BASE
LIMITED EDITION - NUMBERED 01 TO 100"
if (title.indexOf('
') !== -1) {
var title_lines = title.split('
').map(function(s){
if (s.indexOf("LIMITED EDITION") !== -1) {
return "" + s + ""
}
return s
}.bind(this))
title = title_lines.join('
') + '
'
}
this.$title.html(title)
this.$type.html(type)
this.$price.html(price)
this.$body.html(body)
// window.FirebasePlugin && window.FirebasePlugin.setScreenName('product:' + code)
this.$productHeader.toggleClass("wide", title.length > 48)
var fits_large = !!(this.fitLargeCodes[this.code])
this.showFooter()
console.log(app.store.FitsLarge, app.store.fitsLargeText)
if (fits_large) {
if (app.store.FitsLarge === 'use_alt_text' && (app.store.FitsLargeText || "").length) {
var fit_lines = app.store.FitsLargeText.replace(//g, "&rt;").split('\n').join("
")
this.$fitHeader.html(fit_lines)
this.$fitHeader.show()
}
else {
this.$fitHeader.hide()
}
this.$fit.show()
if (app.store.SizingFooter === 'use_alt_text' && (app.store.SizingFooterText || "").length) {
var sizing_lines = app.store.SizingFooterText.replace(//g, "&rt;").split('\n').join("
")
this.$sizing.html(sizing_lines)
this.$sizing.show()
} else if (app.store.SizingFooter === 'true') {
this.$sizing.show()
}
} else {
this.$fitHeader.hide()
this.$fit.hide()
this.$sizing.hide()
}
this.deferScrollToTop()
},
get_descriptions: function (details){
var descriptions = {}
details['Item']['Descriptions'].forEach(function(pair){
descriptions[pair.Key] = pair.Value
})
return descriptions
},
find_sizes_for_color: function(color_id){
return Object.keys( this.colors[color_id].sizes ).sort(function(a,b){
var ao = SIZE_ORDER[ a.label ], bo = SIZE_ORDER[ b.label ]
return aoShort sleeve T-Shirt in cotton jersey. Garment dyed.
Stone Island Compass logo print on the front, made up of a series of numbers."
ItemDescription: "Logo detail
Jersey
Round collar
Solid color
"
KeywordDescription: "Logo detail Jersey Round collar Solid color Jersey Woven not made of fur "
Kind of fabric: "Woven"
MFC: "631520081CC-6315-81V0060"
MacroCategory: "POLO SHIRTS & T-SHIRTS"
MadeIn: "Made In Turkmenistan"
MadeInIsoCode: "TN"
MainMaterial: "Cotton"
Material Description: "Jersey"
MicroCategory: "Short sleeve t-shirt"
MicroCategoryPlural: "Short sleeve t-shirts"
ModelFabric: "631520081CC-6315-81"
ModelNames: "20081 DATA DRIP PIN"
Neckline: "Claudine or round collar"
*/