overlay_me 0.12.0 → 0.12.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,29 +1,38 @@
1
1
  #= require 'draggable'
2
2
 
3
- if OverlayMe.mustLoad()
4
-
5
- # create elements
6
- OverlayMe.menu_box = new OverlayMe.Draggable { id: 'overlay_me_dev_tools_menu' }, { default_css: { left: document.documentElement.clientWidth-300+'px', top: '0px' } }
7
- drag_me_line = (new Backbone.View).make 'div', { class: 'drag-me' }, 'Drag me'
8
- OverlayMe.Menu = (new Backbone.View).make 'ul'
9
-
10
- # stack them together
11
- $(OverlayMe.menu_box.el).append drag_me_line
12
- $(OverlayMe.menu_box.el).append OverlayMe.Menu
13
-
14
- # add it to the page
15
- $('body').append OverlayMe.menu_box.render()
16
-
17
- # add listeners
18
- $(drag_me_line).bind 'mousedown', (event) =>
19
- OverlayMe.menu_box.toggleMove(event)
20
- $(window).bind 'mouseup', (event) =>
21
- OverlayMe.menu_box.endMove(event)
22
- $(OverlayMe.menu_box).bind 'toggle:visibility', (event) =>
23
- if $(OverlayMe.menu_box.el).css('visibility') == 'visible'
24
- css = { visibility: 'hidden' }
3
+ class OverlayMe.MenuClass extends OverlayMe.Draggable
4
+
5
+ id: 'overlay_me_menu'
6
+
7
+ initialize: (attributes) ->
8
+ super(attributes, { default_css: { top: '50px' } })
9
+ drag_me_line = (new Backbone.View).make 'div', { class: 'drag-me' }, 'Drag me up and down'
10
+ @menu_list = (new Backbone.View).make 'ul'
11
+
12
+ # stack them together
13
+ $o(@el).append drag_me_line
14
+ $o(@el).append @menu_list
15
+
16
+ # add it to the page
17
+ $o('body').append @render()
18
+
19
+ # add listeners
20
+ $o(drag_me_line).bind 'mousedown', (event) =>
21
+ @toggleMove(event)
22
+ $o(window).bind 'mouseup', (event) =>
23
+ @endMove(event)
24
+ $o(window).bind 'overlay_me:toggle_all_display', =>
25
+ @toggleDisplay()
26
+
27
+ append: (element) ->
28
+ @menu_list.appendChild element
29
+
30
+ toggleCollapse: ->
31
+ if $o(@el).hasClass('collapsed')
32
+ $o(@el).removeClass('collapsed')
25
33
  else
26
- css = { visibility: 'visible' }
27
- $(OverlayMe.menu_box.el).css(css)
28
- OverlayMe.menu_box.saveCss()
34
+ $o(@el).addClass('collapsed')
35
+
29
36
 
37
+ # create only 1 menu
38
+ OverlayMe.menu = new OverlayMe.MenuClass() unless OverlayMe.menu_box
@@ -7,7 +7,7 @@ class OverlayMe.MenuItem extends Backbone.View
7
7
  @id = attributes.id
8
8
  @el.appendChild @collapseButton()
9
9
  @title = this.make 'label', { class: 'title' }, attributes.title
10
- $(@title).bind 'click', =>
10
+ $o(@title).bind 'click', =>
11
11
  @toggleCollapse()
12
12
  @el.appendChild @title
13
13
  @content = this.make 'div', { class: 'item-content' }
@@ -17,7 +17,7 @@ class OverlayMe.MenuItem extends Backbone.View
17
17
 
18
18
  collapseButton: () ->
19
19
  @collapseButton = this.make 'a', { class: 'collaps-button' }, '<span>o</span>'
20
- $(@collapseButton).bind 'click', =>
20
+ $o(@collapseButton).bind 'click', =>
21
21
  @toggleCollapse()
22
22
  @collapseButton
23
23
 
@@ -28,9 +28,9 @@ class OverlayMe.MenuItem extends Backbone.View
28
28
 
29
29
  setCollapse: (toCollapse) ->
30
30
  if toCollapse
31
- $(@el).addClass 'collapsed'
31
+ $o(@el).addClass 'collapsed'
32
32
  else
33
- $(@el).removeClass 'collapsed'
33
+ $o(@el).removeClass 'collapsed'
34
34
 
35
35
  append: (childElemt) ->
36
36
  @content.appendChild childElemt
@@ -0,0 +1,13 @@
1
+ OverlayMe.Mixin.Hideable = {
2
+
3
+ isDisplayed: ->
4
+ return $o(@el).css('display') != 'none'
5
+
6
+ toggleDisplay: (default_display_type='block') ->
7
+ if @isDisplayed()
8
+ $o(@el).css { display: 'none' }
9
+ else
10
+ $o(@el).css { display: default_display_type }
11
+ @saveCss()
12
+
13
+ }
@@ -0,0 +1,17 @@
1
+ OverlayMe.Mixin.Storable = {
2
+
3
+ loadCss: (element=@el, default_css) ->
4
+ if ( cssData = localStorage.getItem(@id) )
5
+ $o(element).css(JSON.parse(cssData))
6
+ else
7
+ $o(element).css(default_css) unless default_css == undefined
8
+
9
+ saveCss: (element=@el) ->
10
+ @css_attributes_to_save = ['top', 'left', 'display', 'opacity'] unless @css_attributes_to_save
11
+ cssData = {}
12
+ for css_attribute in @css_attributes_to_save
13
+ cssData[css_attribute] = $o(element).css(css_attribute)
14
+ localStorage.setItem(@id, JSON.stringify(cssData))
15
+
16
+ }
17
+
@@ -1,3 +1,7 @@
1
1
  #= require 'init'
2
2
  #= require 'basics'
3
3
  #= require 'overlays'
4
+
5
+ # flag as loaded
6
+ window.overlay_me_loaded = true
7
+
@@ -19,11 +19,11 @@ if OverlayMe.mustLoad()
19
19
  overlay_panel.append OverlayMe.images_management_div.render()
20
20
 
21
21
  # add the panel to the page menu
22
- $(OverlayMe.Menu).append overlay_panel.render()
22
+ OverlayMe.menu.append overlay_panel.render()
23
23
 
24
24
  # repeating original window#mousemove event
25
- $(window).bind 'mousemove', (event) ->
26
- $(window).trigger('mymousemove', event)
25
+ $o(window).bind 'mousemove', (event) ->
26
+ $o(window).trigger('mymousemove', event)
27
27
 
28
28
  # once everything rendered, load dynamicly added images
29
29
  OverlayMe.dyn_manager = new OverlayMe.Overlays.DynamicManager()
@@ -35,14 +35,14 @@ if OverlayMe.mustLoad()
35
35
  OverlayMe.dyn_manager.addImage('https://a248.e.akamai.net/assets.github.com/images/modules/about_page/octocat.png')
36
36
 
37
37
  # adding all overlay images
38
- $.ajax
38
+ $o.ajax
39
39
  url: '/overlay_images'
40
40
  dataType: 'json'
41
41
  success: (data) ->
42
42
  if data.length == 0 # in case all is empty (default for newcomers)
43
43
  OverlayMe.loadDefaultImage()
44
44
  else
45
- $.each data, (index, img_path) ->
45
+ $o.each data, (index, img_path) ->
46
46
  OverlayMe.images_management_div.append new OverlayMe.Overlays.Image(img_path).render()
47
47
  error: ->
48
48
  OverlayMe.loadDefaultImage()
@@ -1,7 +1,11 @@
1
+ #= require 'mixins/storable'
2
+
1
3
  class OverlayMe.Overlays.ContentDivManagementBlock extends Backbone.View
2
4
 
3
5
  tagName: 'fieldset'
4
6
  className: 'content-mgnt-block'
7
+ id: 'content_div_management_block'
8
+ css_attributes_to_save: ['z-index', 'opacity']
5
9
 
6
10
  normal_zindex: '0'
7
11
  over_zindex: '5'
@@ -9,30 +13,28 @@ class OverlayMe.Overlays.ContentDivManagementBlock extends Backbone.View
9
13
  initialize: ->
10
14
 
11
15
  # move all page content to a sub-Div
12
- our_page_container_div = @make 'div', { id: 'overlay_me_page_container' }
13
- $('body').append our_page_container_div
14
- $('body > *').each (index, thing) =>
16
+ @page_container_div = @make 'div', { id: 'overlay_me_page_container' }
17
+ $o('body').append @page_container_div
18
+ $o('body > *').each (index, thing) =>
15
19
  unless thing.id.match(/^overlay_me/) || thing.tagName == 'SCRIPT'
16
- $(our_page_container_div).append thing
20
+ $o(@page_container_div).append thing
17
21
 
18
22
  # load previous css features of that container div
19
- $("#overlay_me_page_container").css({'z-index': @normal_zindex})
20
- if ( contentCss = localStorage.getItem("#overlay_me_page_container") )
21
- $("#overlay_me_page_container").css(JSON.parse(contentCss))
23
+ @loadCss(@page_container_div, {'z-index': @normal_zindex})
22
24
 
23
25
  # adding a hidden unicorny button
24
26
  unicorn_button = @make 'div', { class: 'unicorns', title: 'Feeling corny?' }
25
- $(unicorn_button).bind 'click', ->
27
+ $o(unicorn_button).bind 'click', ->
26
28
  OverlayMe.dyn_manager.addImage(OverlayMe.unicorns[Math.floor(Math.random()*OverlayMe.unicorns.length)], { default_css: { opacity: 1 } })
27
- $(@el).append unicorn_button
29
+ $o(@el).append unicorn_button
28
30
 
29
31
  # adding panel elements
30
- $(@el).append @make 'legend', {}, 'Page content'
32
+ $o(@el).append @make 'legend', {}, 'Page content'
31
33
  slider_block = @make 'div', { class: 'slider-block' }
32
- $(@el).append slider_block
34
+ $o(@el).append slider_block
33
35
  slider_block.appendChild @make 'label', {}, 'Opacity'
34
36
  slider_block.appendChild @contentSlider()
35
- $(@el).append @zIndexSwitch()
37
+ $o(@el).append @zIndexSwitch()
36
38
  @bindEvents()
37
39
 
38
40
  # adding a checkbox to flip HTML over images
@@ -40,52 +42,46 @@ class OverlayMe.Overlays.ContentDivManagementBlock extends Backbone.View
40
42
  block = @make 'div', { class: 'zindex-switch' }
41
43
 
42
44
  @zIndexSwitch = @make 'input', { type: "checkbox" }
43
- $(block).append @zIndexSwitch
45
+ $o(block).append @zIndexSwitch
44
46
 
45
47
  setTimeout => # have to wait a bit to make sure to access the loaded css
46
- @zIndexSwitch.checked = true if $("#overlay_me_page_container").css('z-index') == @over_zindex
48
+ @zIndexSwitch.checked = true if $o("#overlay_me_page_container").css('z-index') == @over_zindex
47
49
  , 500
48
50
 
49
- label = @make 'label', {}, 'Content on top (touch "c")'
50
- $(label).bind 'click', =>
51
- $(@zIndexSwitch).trigger 'click'
52
- $(block).append label
51
+ label = @make 'label', {}, 'Content on top (t)'
52
+ $o(label).bind 'click', =>
53
+ $o(@zIndexSwitch).trigger 'click'
54
+ $o(block).append label
53
55
 
54
56
 
55
57
  contentSlider: ->
56
58
  @contentSlider = @make 'input', {
57
59
  id: "contentSlider",
58
60
  type: "range",
59
- value: $("#overlay_me_page_container").css('opacity')*100
61
+ value: $o("#overlay_me_page_container").css('opacity')*100
60
62
  }
61
63
 
62
64
  bindEvents: ->
63
- $(@contentSlider).bind('change', =>
64
- $("#overlay_me_page_container").css('opacity', $(@contentSlider)[0].value/100)
65
- @saveContentCss()
65
+ $o(@contentSlider).bind('change', =>
66
+ $o("#overlay_me_page_container").css('opacity', $o(@contentSlider)[0].value/100)
67
+ @saveCss(@page_container_div)
66
68
  )
67
- $(@zIndexSwitch).bind('change', (event) =>
69
+ $o(@zIndexSwitch).bind('change', (event) =>
68
70
  if @zIndexSwitch.checked
69
- $("#overlay_me_page_container").css({'z-index': @over_zindex})
71
+ $o("#overlay_me_page_container").css({'z-index': @over_zindex})
70
72
  else
71
- $("#overlay_me_page_container").css({'z-index': @normal_zindex})
72
- @saveContentCss()
73
+ $o("#overlay_me_page_container").css({'z-index': @normal_zindex})
74
+ @saveCss(@page_container_div)
73
75
  )
74
76
  # if click is kind of boring
75
- $(window).bind('keypress', (event) =>
77
+ $o(window).bind('keypress', (event) =>
76
78
  #console.log event.keyCode, event.charCode
77
- if event.charCode == 99 # C
78
- $(@zIndexSwitch).trigger('click')
79
+ if event.charCode == 116 # t
80
+ $o(@zIndexSwitch).trigger('click')
79
81
  )
80
82
 
81
-
82
83
  render: ->
83
84
  @el
84
85
 
85
- # adding some retention for #overlay_me_page_container
86
- saveContentCss: ->
87
- localStorage.setItem("#overlay_me_page_container", JSON.stringify({
88
- opacity: $("#overlay_me_page_container").css('opacity'),
89
- 'z-index': $("#overlay_me_page_container").css('z-index')
90
- }))
91
-
86
+ # extending few mixins - thx Derick - http://stackoverflow.com/questions/7853731/proper-way-of-doing-view-mixins-in-backbone
87
+ _.extend OverlayMe.Overlays.ContentDivManagementBlock.prototype, OverlayMe.Mixin.Storable
@@ -4,29 +4,32 @@ class OverlayMe.Overlays.DraggableImage extends OverlayMe.Draggable
4
4
 
5
5
  initialize: (attributes, options) ->
6
6
  super(attributes, options)
7
- @image = (new Backbone.View).make 'img', { src: options.image_src }
8
- $(@el).append @image
7
+ @image = new Image()
8
+ $o(@image).load => # when image loaded
9
+ @fitDivToImage()
10
+ $o(@image).attr 'src', options.image_src
11
+ $o(@el).append @image
9
12
 
10
13
  # force positioning to 0 by default
11
- $(@el).css('left', '0px') if $(@el).css('left') == 'auto' || $(@el).css('left') == ''
12
- $(@el).css('top', '0px') if $(@el).css('top') == 'auto' || $(@el).css('top') == ''
14
+ $o(@el).css('left', '0px') if $o(@el).css('left') == 'auto' || $o(@el).css('left') == ''
15
+ $o(@el).css('top', '0px') if $o(@el).css('top') == 'auto' || $o(@el).css('top') == ''
13
16
 
14
- $(@el).bind 'mousedown', (event) =>
17
+ $o(@el).bind 'mousedown', (event) =>
15
18
  @toggleMove(event)
16
19
 
17
- $(window).bind 'mouseup', (event) =>
20
+ $o(window).bind 'mouseup', (event) =>
18
21
  @endMove(event)
19
22
 
20
- $(@el).bind 'mouseover', (event) =>
21
- $(".overlay-image-block[data-img-id=#{@id}]").addClass 'hovered'
23
+ $o(@el).bind 'mouseover', (event) =>
24
+ $o(".overlay-image-block[data-img-id=#{@id}]").addClass 'hovered'
22
25
 
23
- $(@el).bind 'mouseout', (event) =>
24
- $(".overlay-image-block[data-img-id=#{@id}]").removeClass 'hovered'
26
+ $o(@el).bind 'mouseout', (event) =>
27
+ $o(".overlay-image-block[data-img-id=#{@id}]").removeClass 'hovered'
25
28
 
26
29
  fitDivToImage: ->
27
30
  if @image.width > 0
28
- $(@el).css('width', @image.width)
29
- $(@el).css('height', @image.height)
31
+ $o(@el).css('width', @image.width)
32
+ $o(@el).css('height', @image.height)
30
33
 
31
34
  render: ->
32
35
  @el
@@ -25,8 +25,8 @@ class OverlayMe.Overlays.DynamicManager extends Backbone.Model
25
25
 
26
26
  loadImage: (src, options = {} ) ->
27
27
  image_id = OverlayMe.Overlays.urlToId(src)
28
- unless $("#overlay_me_images_container ##{image_id}").length > 0
29
- _default_css = $.extend { visibility: 'visible' }, options.default_css
28
+ unless $o("#overlay_me_images_container ##{image_id}").length > 0
29
+ _default_css = $o.extend { display: 'block' }, options.default_css
30
30
  image = new OverlayMe.Overlays.Image(src, { destroyable: true, default_css: _default_css })
31
31
  OverlayMe.images_management_div.append image.render()
32
32
  image
@@ -1,3 +1,4 @@
1
+ #= require 'overlays/images_container'
1
2
  #= require 'overlays/draggable_image'
2
3
 
3
4
  class OverlayMe.Overlays.Image extends Backbone.View
@@ -8,35 +9,30 @@ class OverlayMe.Overlays.Image extends Backbone.View
8
9
  initialize: (image_src, options = { destroyable: false }) ->
9
10
  @image_src = image_src
10
11
  @image_id = OverlayMe.Overlays.urlToId(image_src)
11
- $(@el).attr 'data-img-id', @image_id
12
+ $o(@el).attr 'data-img-id', @image_id
12
13
 
13
- @images_container = $('#overlay_me_images_container')
14
- if @images_container.length < 1
15
- $('body').append (new Backbone.View).make 'div', { id: 'overlay_me_images_container' }
16
- @images_container = $('#overlay_me_images_container')
14
+ OverlayMe.images_container = new OverlayMe.Overlays.ImagesContainer() unless OverlayMe.images_container
17
15
 
18
- @default_css = $.extend {visibility: 'hidden', opacity: 0.5}, options.default_css
16
+ @default_css = $o.extend {display: 'none', opacity: 0.5}, options.default_css
19
17
 
20
- unless $("##{@image_id}", @images_container).length > 0
21
- $(@images_container).append @image()
18
+ unless $o("##{@image_id}", OverlayMe.images_container.el).length > 0
19
+ $o(OverlayMe.images_container.el).append @image()
22
20
 
23
- $(@el).append @checkbox()
24
- $(@el).append @label()
21
+ $o(@el).append @checkbox()
22
+ $o(@el).append @label()
25
23
  slider_block = @make 'div', { class: 'slider-block' }
26
- $(@el).append slider_block
24
+ $o(@el).append slider_block
27
25
  slider_block.appendChild @make 'label', {}, 'Opacity'
28
26
  slider_block.appendChild @slider()
29
- $(@el).append @delButton() if options.destroyable
30
- $(@el).bind 'click', (event) =>
27
+ $o(@el).append @delButton() if options.destroyable
28
+ $o(@el).bind 'click', (event) =>
31
29
  @flickCheckbox()
32
- $(@el).bind 'mouseover', (event) =>
33
- $(@image.el).css('opacity', 1)
34
- $(@image.el).addClass 'highlight'
35
- $(@el).addClass 'hovered'
36
- $(@el).bind 'mouseout', (event) =>
37
- $(@image.el).removeClass 'highlight'
38
- $(@el).removeClass 'hovered'
39
- $(@image.el).css('opacity', $(@slider)[0].value/100)
30
+ $o(@el).bind 'mouseover', (event) =>
31
+ $o(@image.el).addClass 'highlight'
32
+ $o(@el).addClass 'hovered'
33
+ $o(@el).bind 'mouseout', (event) =>
34
+ $o(@image.el).removeClass 'highlight'
35
+ $o(@el).removeClass 'hovered'
40
36
 
41
37
 
42
38
  image: ->
@@ -45,19 +41,19 @@ class OverlayMe.Overlays.Image extends Backbone.View
45
41
 
46
42
  checkbox: ->
47
43
  @checkbox = @make 'input', { type: "checkbox" }
48
- if $(@image.el).css('visibility') == 'visible'
44
+ if @image.isDisplayed()
49
45
  @checkbox.checked = true
50
- $(@checkbox).bind 'click', (e) =>
46
+ $o(@checkbox).bind 'click', (e) =>
51
47
  e.stopPropagation()
52
48
  @flickVisibility()
53
- $(@checkbox).bind 'change', (e) =>
49
+ $o(@checkbox).bind 'change', (e) =>
54
50
  e.stopPropagation()
55
51
  @flickVisibility()
56
52
  @checkbox
57
53
 
58
54
  delButton: ->
59
55
  @delButton = @make 'button', { class: 'del-button', title: 'Delete' }, 'x'
60
- $(@delButton).bind 'click', (e) =>
56
+ $o(@delButton).bind 'click', (e) =>
61
57
  OverlayMe.dyn_manager.delImage @image_id
62
58
  @delButton
63
59
 
@@ -66,11 +62,10 @@ class OverlayMe.Overlays.Image extends Backbone.View
66
62
  @flickVisibility()
67
63
 
68
64
  flickVisibility: ->
69
- @image.fitDivToImage()
70
65
  if @checkbox.checked
71
- $(@image.el).css('visibility', 'visible')
66
+ $o(@image.el).css('display', 'block')
72
67
  else
73
- $(@image.el).css('visibility', 'hidden')
68
+ $o(@image.el).css('display', 'none')
74
69
  @image.saveCss()
75
70
 
76
71
  label: ->
@@ -80,19 +75,19 @@ class OverlayMe.Overlays.Image extends Backbone.View
80
75
  slider: ->
81
76
  @slider = @make 'input', {
82
77
  type: "range",
83
- value: $(@image.el).css('opacity')*100
78
+ value: $o(@image.el).css('opacity')*100
84
79
  }
85
- $(@slider).bind 'click', (e) =>
80
+ $o(@slider).bind 'click', (e) =>
86
81
  e.stopPropagation()
87
- $(@slider).bind 'change', (e) =>
88
- $(@image.el).css('opacity', $(@slider)[0].value/100)
82
+ $o(@slider).bind 'change', (e) =>
83
+ $o(@image.el).css('opacity', $o(@slider)[0].value/100)
89
84
  @image.saveCss()
90
- $(@slider).bind 'mouseover', (e) =>
85
+ $o(@slider).bind 'mouseover', (e) =>
91
86
  e.stopPropagation()
92
- $(@el).addClass 'hovered'
93
- $(@slider).bind 'mouseout', (e) =>
87
+ $o(@el).addClass 'hovered'
88
+ $o(@slider).bind 'mouseout', (e) =>
94
89
  e.stopPropagation()
95
- $(@el).removeClass 'hovered'
90
+ $o(@el).removeClass 'hovered'
96
91
  @slider
97
92
 
98
93
  render: ->