quick_script 0.5.14 → 0.7.0
Sign up to get free protection for your applications and to get access to all the features.
data/lib/quick_script/version.rb
CHANGED
@@ -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 =
|
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
|
-
@
|
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
|
-
|
704
|
-
|
705
|
-
@
|
706
|
-
|
707
|
-
|
708
|
-
|
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',
|
873
|
-
<div
|
874
|
-
<div data-bind=
|
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
|
-
|
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:
|
4
|
+
hash: 3
|
5
5
|
prerelease:
|
6
6
|
segments:
|
7
7
|
- 0
|
8
|
-
-
|
9
|
-
-
|
10
|
-
version: 0.
|
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-
|
18
|
+
date: 2012-07-09 00:00:00 Z
|
19
19
|
dependencies: []
|
20
20
|
|
21
21
|
description: Framework for single-page web applications
|