quick_script 0.5.14 → 0.7.0

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,3 +1,3 @@
1
1
  module QuickScript
2
- VERSION = "0.5.14"
2
+ VERSION = "0.7.0"
3
3
  end
@@ -11,6 +11,9 @@ Array.prototype.itemAt = (val)->
11
11
  Array.prototype.pushOnce = (item) ->
12
12
  if (!this.includes(item))
13
13
  this.push(item)
14
+ Array.prototype.remove = (item) ->
15
+ idx = this.indexOf(item)
16
+ this.splice(idx, 1) if idx > -1
14
17
  Date.from_utc = (utc) ->
15
18
  new Date(utc * 1000)
16
19
  Date.prototype.to_utc = ->
@@ -61,6 +61,48 @@
61
61
  owner: this
62
62
  ko.applyBindingsToNode(element, { checked: interceptor })
63
63
 
64
+ ko.bindingHandlers.untabbable =
65
+ update : (element, valueAccessor, bindingsAccessor, viewModel) ->
66
+ if (valueAccessor())
67
+ $(element).find('iframe, input, textarea, a, iframe').attr('tabIndex', -1)
68
+ else
69
+ $(element).find('input, textarea, a, iframe').removeAttr('tabIndex')
70
+
71
+ ko.bindingHandlers.carousel =
72
+ init : (element, valueAccessor, bindingsAccessor, viewModel) ->
73
+ idx = viewModel.getViewBoxIndex(viewModel.task())
74
+ new_el = $(element).find('.slide-item-' + idx)
75
+ new_el.addClass('active')
76
+ update : (element, valueAccessor, bindingsAccessor, viewModel) ->
77
+ opts = viewModel.transition.opts
78
+ if viewModel.task() != null
79
+ idx = viewModel.getViewBoxIndex(viewModel.task())
80
+ console.log('updating slider to ' + idx)
81
+ old_idx = opts.slide_index()
82
+ new_el = $(element).find('.slide-item-' + idx)
83
+ old_el = $(element).find('.slide-item-' + old_idx)
84
+ if idx > old_idx
85
+ new_el.addClass('next')
86
+ new_el[0].offsetWidth if new_el[0]?
87
+ new_el.addClass('left')
88
+ old_el.addClass('left')
89
+ else
90
+ new_el.addClass('prev')
91
+ new_el[0].offsetWidth if new_el[0]?
92
+ new_el.addClass('right')
93
+ old_el.addClass('right')
94
+ setTimeout ->
95
+ new_el.removeClass('next left prev right')
96
+ old_el.removeClass('next left prev right')
97
+ old_el.removeClass('active')
98
+ new_el.addClass('active')
99
+ , 600
100
+ opts.slide_index(idx)
101
+
102
+ ko.bindingHandlers.bindelem =
103
+ init : (element, valueAccessor, bindingsAccessor, viewModel) ->
104
+ viewModel.element = element
105
+
64
106
  ko.bindingHandlers.tinymce =
65
107
  init : (element, valueAccessor, bindingsAccessor, viewModel) ->
66
108
  options = {
@@ -413,6 +455,8 @@ class @Model
413
455
  console.log("Delete error encountered")
414
456
  @model_state(ko.modelStates.READY)
415
457
  @model_state(ko.modelStates.SAVING)
458
+ removeFromCollection : =>
459
+ @collection.removeItemById(@id()) if @collection?
416
460
  toJS : (flds)=>
417
461
  flds ||= @fields
418
462
  obj = {}
@@ -485,7 +529,7 @@ class @FileModel extends @Model
485
529
  @input.is_image = ko.computed ->
486
530
  if @input.present() then @input.file().type.match('image.*') else false
487
531
  , this
488
- @input.clear = -> @input.files([])
532
+ @input.clear = => @input.files([])
489
533
  reset : ->
490
534
  super
491
535
  @input.files([])
@@ -688,7 +732,10 @@ class @View
688
732
  @has_error = ko.computed (-> @error().length > 0), this
689
733
  @view = null
690
734
  @task = ko.observable(null)
691
- @transition = {type : 'fade', opts : {'slide_left' : ko.observable(0), 'working' : ko.observable(false)}}
735
+ @prev_task = ko.observable(null)
736
+ @transition = {type : 'fade', opts : {'slide_pos' : ko.observable(0), 'slide_index' : ko.observable(0)}}
737
+ @transition.has_slide_css = (css, idx)=>
738
+ @transition.opts['slide_css' + css]().includes? idx
692
739
  @init()
693
740
  @setupViewBox()
694
741
  show : ->
@@ -699,13 +746,29 @@ class @View
699
746
  setupViewBox : ->
700
747
  if @transition.type == 'slide'
701
748
  @task.subscribe (val)=>
749
+ return
750
+ opts = @transition.opts
702
751
  if val != null
703
- left = @getViewBoxIndex(val) * @transition.opts.width * -1
704
- #console.log(left)
705
- @transition.opts.slide_left(left)
706
- clearTimeout(@transition.opts.wtid) if @transition.opts.wtid?
707
- @transition.opts.working(true)
708
- @transition.opts.wtid = setTimeout (=> @transition.opts.working(false)) , 1000
752
+ idx = @getViewBoxIndex(val)
753
+ old_idx = opts.slide_index()
754
+ new_el = $(@element).find('.slide-item-' + idx)
755
+ old_el = $(@element).find('.slide-item-' + old_idx)
756
+ if idx > old_idx
757
+ new_el.addClass('next')
758
+ new_el[0].offsetWidth if new_el[0]?
759
+ new_el.addClass('left')
760
+ old_el.addClass('left')
761
+ else
762
+ new_el.addClass('prev')
763
+ new_el[0].offsetWidth if new_el[0]?
764
+ new_el.addClass('right')
765
+ old_el.addClass('right')
766
+ setTimeout ->
767
+ new_el.removeClass('next left prev right')
768
+ old_el.removeClass('active next left prev right')
769
+ new_el.addClass('active')
770
+ , 600
771
+ opts.slide_index(idx)
709
772
  load : ->
710
773
  addView : (name, view_class, tpl) ->
711
774
  @views[name] = new view_class(name, this)
@@ -727,6 +790,7 @@ class @View
727
790
  if (last_view != view)
728
791
  console.log("View [#{view.name}] selected.")
729
792
  @view = view
793
+ @prev_task(@task())
730
794
  @task(view.name)
731
795
  last_view.hide() if last_view?
732
796
  view.show()
@@ -747,6 +811,17 @@ class @View
747
811
  getViewBoxIndex : (view_name) ->
748
812
  arr = Object.keys(@views)
749
813
  arr.indexAt(view_name)
814
+ getViewByIndex : (idx) ->
815
+ keys = Object.keys(@views)
816
+ @views[keys[idx]]
817
+ afterRender : =>
818
+ if @transition.type == 'slide'
819
+ setTimeout =>
820
+ console.log('after render')
821
+ idx = @getViewBoxIndex(@task())
822
+ new_el = $(@element).find('.slide-item-' + idx)
823
+ new_el.addClass('active')
824
+ 500
750
825
  showAsOverlay : (tmp, opts, cls)=>
751
826
  Overlay.add(this, tmp, opts, cls)
752
827
  hideOverlay : =>
@@ -854,6 +929,14 @@ class @AccountAdapter
854
929
  progress : opts.progress
855
930
  success : opts.success
856
931
  error : opts.error
932
+ delete : (opts)->
933
+ $.ajax_qs
934
+ type : 'DELETE'
935
+ url : opts.url
936
+ data : opts.data
937
+ progress : opts.progress
938
+ success : opts.success
939
+ error : opts.error
857
940
  add_method : (fn_name, fn)->
858
941
  @[fn_name] = fn.bind(this)
859
942
 
@@ -865,17 +948,14 @@ class @AppView extends @View
865
948
  @path_parts = []
866
949
  ko.addTemplate "app-view", """
867
950
  <div data-bind='foreach : viewList()'>
868
- <div data-bind="fadeVisible : is_visible(), template : { name : getViewName }, attr : { id : templateID}"></div>
951
+ <div data-bind="fadeVisible : is_visible(), template : { name : getViewName, afterRender : afterRender}, attr : { id : templateID}, bindelem : true"></div>
869
952
  </div>
870
953
  """
871
954
  ko.addTemplate "app-slide", """
872
- <div data-bind="style : {width : transition.opts.width + 'px', height : transition.opts.height + 'px', overflowX : 'hidden', overflowY : 'hidden'}">
873
- <div class='view-slider' data-bind="style : {width : ((viewCount()+1) * transition.opts.width) + 'px', height : transition.opts.height + 'px', clear : 'both', marginLeft : transition.opts.slide_left() + 'px', 'position' : 'relative'}">
874
- <div data-bind='foreach : viewList()'>
875
- <div data-bind="template : { name : getViewName }, attr : {id : templateID}, style : {width : owner.transition.opts.width + 'px', height : owner.transition.opts.height + 'px', left : ($index() * owner.transition.opts.width) + 'px', 'position' : 'absolute', overflowY : 'auto'}, visible : is_visible() || owner.transition.opts.working()"></div>
876
- </div>
955
+ <div class="view-slider" data-bind="style : {width : transition.opts.width + 'px', height : transition.opts.height + 'px'}, carousel : true">
956
+ <div data-bind='foreach : viewList()'>
957
+ <div class="slide-item" data-bind="template : { name : getViewName }, attr : {id : templateID, class : 'slide-item slide-item-' + $index()}, css : {}, style : {width : owner.transition.opts.width + 'px', height : owner.transition.opts.height + 'px'}, bindelem : true"></div>
877
958
  </div>
878
- <div style='clear: both;'></div>
879
959
  </div>
880
960
  """
881
961
  @current_user = new @account_model()
@@ -911,4 +991,5 @@ class @AppView extends @View
911
991
 
912
992
  # layout bindings
913
993
  $('body').koBind(appViewModel)
994
+ appViewModel.afterRender()
914
995
 
@@ -149,4 +149,29 @@
149
149
  font-size: 20px
150
150
 
151
151
  .view-slider
152
- +animate(0.50s)
152
+ overflow: hidden
153
+ position: relative
154
+ .slide-item
155
+ +transition(0.60s ease-in-out left)
156
+ position: relative
157
+ overflow-y: auto
158
+ display: none
159
+ &.next
160
+ left: 100%
161
+ &.left
162
+ left: 0
163
+ &.prev
164
+ left: -100%
165
+ &.right
166
+ left: 0
167
+ &.active, &.prev, &.next
168
+ display: block
169
+ &.prev, &.next
170
+ top: 0
171
+ position: absolute
172
+ &.active.left
173
+ left: -100%
174
+ &.active.right
175
+ left: 100%
176
+ &.active
177
+ left: 0px
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: quick_script
3
3
  version: !ruby/object:Gem::Version
4
- hash: 23
4
+ hash: 3
5
5
  prerelease:
6
6
  segments:
7
7
  - 0
8
- - 5
9
- - 14
10
- version: 0.5.14
8
+ - 7
9
+ - 0
10
+ version: 0.7.0
11
11
  platform: ruby
12
12
  authors:
13
13
  - Alan Graham
@@ -15,7 +15,7 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2012-07-03 00:00:00 Z
18
+ date: 2012-07-09 00:00:00 Z
19
19
  dependencies: []
20
20
 
21
21
  description: Framework for single-page web applications