summaryrefslogtreecommitdiff
path: root/StoneIsland/platforms/android/assets/www/js/lib/blogs/ArchiveView.js
diff options
context:
space:
mode:
authorRene Ae <aehtyb@gmail.com>2015-12-04 20:32:44 -0600
committerRene Ae <aehtyb@gmail.com>2015-12-04 20:32:44 -0600
commit10efb0f7b426426057fed757fe3c851a249358dd (patch)
treeb80e285251d30fbca36220c932ef180c29c55dcf /StoneIsland/platforms/android/assets/www/js/lib/blogs/ArchiveView.js
parent015b58ff6845b5cb79b13fec109a37b4c10c7813 (diff)
android build
Diffstat (limited to 'StoneIsland/platforms/android/assets/www/js/lib/blogs/ArchiveView.js')
-rwxr-xr-xStoneIsland/platforms/android/assets/www/js/lib/blogs/ArchiveView.js228
1 files changed, 228 insertions, 0 deletions
diff --git a/StoneIsland/platforms/android/assets/www/js/lib/blogs/ArchiveView.js b/StoneIsland/platforms/android/assets/www/js/lib/blogs/ArchiveView.js
new file mode 100755
index 00000000..254df6d1
--- /dev/null
+++ b/StoneIsland/platforms/android/assets/www/js/lib/blogs/ArchiveView.js
@@ -0,0 +1,228 @@
+var ArchiveView = ScrollableView.extend({
+
+ el: "#archive",
+ menu_template: $("#archive .menu .template").html(),
+ row_template: $("#archive .scroll .template").html(),
+
+ events: {
+ "click .item": "pick",
+ "mousedown .row": "mousedown",
+ "touchstart .row": "touchstart",
+ "mousemove .row": "mousemove",
+ "touchmove .row": "touchmove",
+ "mouseup .row": "mouseup",
+ "touchend .row": "touchend",
+ },
+
+ initialize: function(){
+ this.$menu_items = this.$(".menu .items")
+ this.$content = this.$(".content")
+ this.$loader = this.$(".loader")
+ this.scroller = new IScroll('#archive .scroll', app.iscroll_options)
+ this.$subtitle = this.$('.subtitle')
+ this.subtitle_html = this.$subtitle.html()
+
+ },
+
+ back: function(){
+ this.$el.addClass("menu")
+ app.header.set_back(false)
+ this.$subtitle.html( this.subtitle_html )
+ },
+
+ pick: function(e){
+ this.$el.removeClass("menu")
+ app.header.set_back(true)
+ var index = $(e.currentTarget).data("index")
+ this.$subtitle.html( $(e.currentTarget).text() )
+ this.populateDecade(index)
+ },
+
+ show: function(){
+ this.deferScrollToTop()
+ app.footer.hide()
+ this.back()
+ document.body.className = "archive"
+ },
+
+ populate: function(data){
+ if (this.loaded) { return }
+ this.loaded = true
+ this.data = data
+ this.$loader.hide()
+ this.$content.empty()
+
+ // id title images[ uri label code caption ]
+ this.data.forEach(function(row, index){
+
+ var t = this.menu_template.replace(/{{title}}/, row.title)
+ var $t = $(t)
+ $t.data("title", row.title)
+ $t.data("index", index)
+ this.$menu_items.append($t)
+ }.bind(this))
+
+ this.back()
+ this.deferScrollToTop()
+
+ this.populateDecade(0, 3)
+ },
+
+ populateDecade: function(index, count){
+ this.$content.empty()
+
+ var loader = new Loader()
+
+ var row = this.data[index]
+
+ count = count || row.images.length
+
+ row.images.forEach(function(cell, i){
+ var $t = $("<div>")
+ $t.addClass("row").addClass("loading")
+ var t = this.row_template.replace(/{{image}}/, cell.uri)
+ .replace(/{{label}}/, cell.label)
+ .replace(/{{code}}/, cell.code)
+ .replace(/{{caption}}/, cell.caption)
+ $t.html(t)
+ $t.data("flipped", false)
+ this.$content.append($t)
+
+ var item = $t[0]
+ var aa = this.build_aa_item( item )
+ aa.q = 0
+ this.render( aa, 0 )
+ aa.flipped = true
+ this.fix_z_index( aa )
+
+ var $text = $t.find(".text")
+ if ( ($text.height() % 2) == 1) {
+ $text.css("margin-bottom", "1px")
+ }
+
+ loader.preloadImage(cell.uri, function(){
+ aa.flipped = false
+ this.fix_z_index( aa )
+ $t.removeClass('loading')
+ }.bind(this))
+ }.bind(this))
+ },
+
+// ['transformProp'] = "translateZ(0) translateX(-50%) translateY(-50%) ";
+// .image, .text
+
+ touchstart: function(e){
+ app.archive.row = e.currentTarget
+ app.archive.mousedown(e.originalEvent.touches[0])
+ },
+ touchmove: function(e){
+ app.archive.mousemove(e.originalEvent.touches[0])
+ },
+ touchend: function(e){
+ app.archive.mouseup()
+ },
+
+ row: null,
+ image: null,
+ text: null,
+ flipped: false,
+ q: 0,
+
+ mousedown: function(e){
+ var aa = app.archive.item = app.archive.build_aa_item( app.archive.row || e.currentTarget )
+ aa.mouse_x = e.pageX
+ aa.mouse_y = e.pageY
+ },
+
+ build_aa_item: function(el){
+ var aa = {}
+ aa.row = el
+ aa.flipped = $(aa.row).data('flipped')
+ aa.image = $(aa.row).find(".image")[0]
+ aa.text = $(aa.row).find(".text")[0]
+ aa.q = 0
+ return aa
+ },
+
+ mousemove: function(e){
+ if (! app.archive.item) return
+ aa = app.archive.item
+ var dx = ( aa.mouse_x - e.pageX ) / window.innerWidth
+ var dy = ( aa.mouse_y - e.pageY ) / window.innerWidth
+
+ var gray, opacity, q
+
+ dx = Math.abs(dx)
+ dx *= 2
+ q = clamp( dx, 0, 1 )
+
+ this.render(aa, q)
+
+ aa.q = q
+/*
+ aa.row.style['transformProp'] = [
+ "translateZ(0)",
+ "translateX(-50%)",
+ "translateY(-50%)",
+ "rotateY(" + dx + "deg)",
+ ].join(" ")
+*/
+ },
+
+ render: function(aa, q){
+ if ( aa.flipped ) {
+ gray = Math.round( (1-q) * 100 )
+ opacity = lerp(q, 0.2, 1)
+ text_opacity = lerp(q, 1, 0.3)
+// console.log("<", gray, opacity)
+ }
+ else {
+ gray = Math.round( q * 100 )
+ opacity = lerp(q, 1, 0.2)
+ text_opacity = lerp(q, 0.3, 1)
+// console.log(">", gray, opacity)
+ }
+ aa.image.style.WebkitFilter = "grayscale(" + gray + "%)"
+ aa.image.style.opacity = opacity
+ aa.text.style.opacity = text_opacity
+ },
+
+ margin: 0.3,
+
+ mouseup: function(e){
+ aa = app.archive.item
+ app.archive.row = null
+ app.archive.item = null
+ var was_flipped = aa.flipped
+ var flipped = aa.flipped ? (aa.q < app.archive.margin) : (aa.q > app.archive.margin)
+ var dest = was_flipped == flipped ? 0 : 1
+ $(aa.row).data('flipped', flipped)
+
+ oktween.add({
+ obj: {q: aa.q},
+ to: {q: dest},
+ duration: 200 * Math.abs(aa.q-dest),
+ update: function(o, dt){
+ app.archive.render(aa, o.q)
+ },
+ })
+
+ this.fix_z_index(aa)
+ },
+
+ fix_z_index: function (aa) {
+ if ( aa.flipped ) {
+ console.log(aa.q)
+ z = aa.q > app.archive.margin ? 2 : 1
+ zz = aa.q > app.archive.margin ? 1 : 2
+ }
+ else {
+ z = aa.q < app.archive.margin ? 2 : 1
+ zz = aa.q < app.archive.margin ? 1 : 2
+ }
+ aa.image.style.zIndex = z
+ aa.text.style.zIndex = zz
+
+ },
+
+}) \ No newline at end of file