abstracted 0.2.2 → 0.2.5

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: d3a0ce5c6254187f8b893aa56bdda5d66df2ca19
4
- data.tar.gz: 82a66de9184904290c3eb4f73043dcb06339395f
3
+ metadata.gz: e72afba4f1d8fe6ce18b38c9a1cecda8d75d7f60
4
+ data.tar.gz: 254e5948dff18746e4e672c5256cdad4d4f2575c
5
5
  SHA512:
6
- metadata.gz: 46ac5a933a363cfe6b3d74683ebfd2c13bb3197db38e7780142571aef5a76b6fad353174942a813d8739b96c0c75ed93b4c4b27c4577063c8a6b73a4ecffa762
7
- data.tar.gz: f20950c0728243d91d0f362101ea7c06e56d2e49974c34aca4ab646d5b504b133c1ea4ffa86663414f15d35d3ba13df88b174dcd180e16e39771ca7d27464b33
6
+ metadata.gz: c026943de5beeef8a459aa9b09293bf00e60f44628fef152401e753419bfdd3b434998d35dc01993e8925e9dded745dd57b979292ddfff01a09a4c952a5aa532
7
+ data.tar.gz: 8675aa8285ddc8b5af4b61296d3d5229c3b00d6e584742e298eb821c55349cd2a8f660cc1a0fbe05138ccd5f7fd464dfb1e5f06273518f5f72cb956f7608773a
@@ -4,7 +4,11 @@
4
4
  //= require selectize/dist/js/standalone/selectize.js
5
5
  // require typeahead
6
6
  //= require sweetalert
7
- //= require_tree .
7
+ // require_tree .
8
+ //= require init
9
+ //= require triggers
10
+ //= require pagescrolling
11
+ //= require_tree ./abstracted
8
12
 
9
13
 
10
14
  // <!DOCTYPE html>
@@ -0,0 +1,161 @@
1
+ class App.fabDelete
2
+ constructor: (@el) ->
3
+ # initialize some stuff
4
+ @shared = new App.Shared()
5
+
6
+
7
+
8
+ closeSweetAlert: ($elem=null) =>
9
+ try
10
+ unless $elem == undefined
11
+ $elem.show()
12
+ swal.close()
13
+ catch error
14
+ $('.sweet-overlay').hide()
15
+ $('.sweet-alert').hide()
16
+
17
+
18
+ #
19
+ # deletePost handles deleting records
20
+ #
21
+ # dependencies:
22
+ # sweetalert
23
+ #
24
+ # data-url="", data-id="" - eg.
25
+ deletePost: ($elem) =>
26
+ try
27
+ url = $elem.data('url') + "/" + $elem.data('id') + ".js"
28
+ $remove = $($elem.data('remove'))
29
+ request = $.ajax
30
+ url: url,
31
+ type: "delete",
32
+ dataType: 'html'
33
+ .done (data) ->
34
+ if $remove
35
+ $remove.hide()
36
+ @closeSweetAlert($elem)
37
+ #swal("Deleted!", "Your file was successfully deleted!", "success")
38
+ .error (data) ->
39
+ $elem.show()
40
+ swal("Oops", "We couldn't connect to the server!", "error")
41
+ #
42
+ # statusCode:
43
+ #
44
+ # 200: (response,textStatus,jqXHR) ->
45
+ # closeSweetAlert()
46
+ # tellResponse response.responseText
47
+ #
48
+ #
49
+ # 301: () ->
50
+ # $elem.show()
51
+ # closeSweetAlert()
52
+ # swal "Ikke slettet!", "Posten blev ikke slettet - årsagen ikke kendt", "warning"
53
+ #
54
+ # 401: (response) ->
55
+ # tellResponse response.responseText
56
+ # closeSweetAlert()
57
+ #
58
+ # 409: (response) ->
59
+ # tellResponse response.responseText
60
+ # closeSweetAlert()
61
+ #
62
+ # 412: () ->
63
+ # closeSweetAlert()
64
+ # swal "Øv!", "Et eller andet gik galt!", "error"
65
+
66
+ catch error
67
+ swal "Hmmm", "Most unexpected! \n#{error}", "error"
68
+
69
+
70
+
71
+ #
72
+ # handleFABLinks
73
+ # handles click on the fab_button
74
+ #
75
+ handleFABLinks: (e) =>
76
+ e.preventDefault()
77
+ e.stopPropagation()
78
+ elem = $(e.currentTarget)
79
+ if elem.data('browser')=='new'
80
+ window.open elem.data('url')
81
+ return
82
+
83
+ loader = '<div class="preloader-wrapper medium active"> <div class="spinner-layer spinner-blue-only"> <div class="circle-clipper left"> <div class="circle"></div> </div><div class="gap-patch"> <div class="circle"></div> </div><div class="circle-clipper right"> <div class="circle"></div> </div> </div> </div>'
84
+ @shared.setLoader( $(elem).closest('.fixed-action-btn'),loader)
85
+ oxremote = elem.data('oxremote')
86
+ if (oxremote=='false' or oxremote==false)
87
+ switch elem.data('method')
88
+ when 'post', 'POST'
89
+ # elem.closest('form').submit()
90
+ $('form').submit()
91
+ when 'put', 'PUT'
92
+ console.log 'how do I put? add code in abstracted/app/assets/javascripts/initializers.js.coffee'
93
+ when 'get', 'GET'
94
+ window.location.href = elem.data('url')
95
+ else
96
+ jqxhr = $.ajax
97
+ url: elem.data('url') || elem.attr('href')
98
+ type: elem.data('method') || 'get'
99
+ data: @shared.dataArgumentOn(elem)
100
+ dataType: elem.data('type') || 'html'
101
+ .done (data) =>
102
+ @shared.releaseLoader()
103
+ if elem.data('modal')
104
+ $(elem.data('modal')).html(data).openModal()
105
+ else
106
+ $(document.body).append(data)
107
+ .error (data) =>
108
+ @shared.releaseLoader()
109
+ $(document.body).append(data)
110
+ return false
111
+
112
+
113
+ #
114
+ # handleDeleteLinks
115
+ # initializes the tags classed with '.delete_link' to verify deleting an issue
116
+ #
117
+ handleDeleteLinks: (e) =>
118
+ e.preventDefault()
119
+ e.stopPropagation()
120
+ $elem = $(e.currentTarget)
121
+ $elem.hide()
122
+
123
+ $('.sweet-overlay').show()
124
+ swal
125
+ title: "Are you sure?",
126
+ text: "Are you sure that you want to delete this photo?",
127
+ type: "warning",
128
+ animation: "slide-from-bottom",
129
+ showLoaderOnConfirm: true,
130
+ showCancelButton: true,
131
+ closeOnConfirm: false,
132
+ confirmButtonText: "Yes, delete it!",
133
+ confirmButtonColor: "#ec6c62",
134
+ (confirmed) ->
135
+ if !confirmed
136
+ @closeSweetAlert($elem)
137
+ else
138
+ @deletePost($elem)
139
+ return false
140
+
141
+
142
+ prepare: =>
143
+
144
+ try
145
+
146
+ $(document.body).unbind('click.delete')
147
+ $(document.body).unbind('click.fab')
148
+
149
+ #
150
+ # Prepare delete_link's for acting on clicks to delete posts
151
+ #
152
+ $(document.body).on 'click.delete', 'a.delete_link, a.delete_item', @handleDeleteLinks
153
+
154
+ #
155
+ # Add event on the FAB (fixed action button)
156
+ #
157
+ $(document.body).on 'click.fab', 'a.fab-button', @handleFABLinks
158
+
159
+ catch error
160
+ alert 'App.fabDelete did not prepare!'
161
+ console.log error
@@ -0,0 +1,32 @@
1
+ class App.Materialize
2
+ constructor: (@el) ->
3
+ # initialize some stuff
4
+
5
+ prepare: ->
6
+
7
+ try
8
+ #
9
+ # Initialize the 'hamburger'
10
+ #
11
+ $(".button-collapse").sideNav();
12
+
13
+ #
14
+ # Initialize collapsible (uncomment the line below if you use the dropdown variation)
15
+ #
16
+ $('.collapsible').collapsible
17
+ accordion : true # A setting that changes the collapsible behavior to expandable instead of the default accordion style
18
+
19
+ #
20
+ # make drop-downs react nicely
21
+ #
22
+ $(".dropdown-button").dropdown()
23
+
24
+ #
25
+ # prepare for tabbed display of tabbed UL's
26
+ #
27
+ $('ul.tabs').tabs()
28
+ $('.materialboxed').materialbox()
29
+
30
+ catch error
31
+ alert 'App.Materialize did not prepare!'
32
+ console.log error
@@ -0,0 +1,59 @@
1
+ class App.ResourceForm
2
+ constructor: (@el) ->
3
+ # initialize some stuff
4
+ inputForm = null
5
+
6
+
7
+ #
8
+ # make sure fields with values do not have their labels obscuring your view
9
+ #
10
+ setLabels: (selector) ->
11
+ $(selector).each () ->
12
+ try
13
+ fld = '#'+$(this).attr('for')
14
+ $(this).addClass('active') unless $(fld)[0].value.nil?
15
+ catch
16
+ #console.log this
17
+
18
+ #
19
+ # initializeForm
20
+ # on pages with a FORM element - like show, new and edit
21
+ # prepare the FORM element
22
+ #
23
+ initializeForm: (f) ->
24
+ @inputForm = f
25
+ #
26
+ # Initialize SELECT's
27
+ #
28
+ $('select').each () ->
29
+ # remove span.caret's from previous 'runs' - however that happens
30
+ $(this).parent().parent().find('span.caret').remove()
31
+ $(this).material_select()
32
+
33
+ #
34
+ # make labels on fields with content move out of the way
35
+ #
36
+ @setLabels('.input-field label')
37
+
38
+ #
39
+ # Initialize INPUT TYPE='DATE'
40
+ #
41
+ # %input.datepicker{ type:"date" }
42
+ #
43
+ $('.datepicker').pickadate
44
+ selectMonths: true, # Creates a dropdown to control month
45
+ selectYears: 15 # Creates a dropdown of 15 years to control year
46
+
47
+
48
+ prepare: ->
49
+
50
+ try
51
+ #
52
+ # If this page has FORM element(s)
53
+ #
54
+ $('form').first().map (k,f) =>
55
+ @initializeForm(f)
56
+
57
+ catch error
58
+ alert 'App.ResourceForm did not prepare!'
59
+ console.log error
@@ -0,0 +1,239 @@
1
+ class App.ResourcesList
2
+
3
+ constructor: (@el) ->
4
+ # initialize some stuff
5
+ @inputForm = @el
6
+ #
7
+ # printPost handles printing posts either way
8
+ #
9
+ # dependencies
10
+ #
11
+ #
12
+ #
13
+ #
14
+ # <a
15
+ # class="print_post_link"
16
+ # data-ajax="get"
17
+ # data-remote="false"
18
+ # data-method="get"
19
+ # data-download="true" -- if is is a file which we should send!
20
+ # data-url="/stock_items/1/print.js"
21
+ # data-oxremote="true"
22
+ # data-name="2"
23
+ # data-id="1"
24
+ # data-paper="label"
25
+ # data-message-ok="Udskrivning af Labels bestilt!"
26
+ # data-message-error="øv"
27
+ # href="http://localhost:3000/stock_items/1/print">
28
+ # <i class="material-icons small" title="Udskriv labels">label</i>
29
+ # </a>
30
+ #
31
+ # data-url="", data-id="", data-print-action="", data-message-ok="", data-message-error=""
32
+ printPost: (elem) ->
33
+ elem = $(elem)
34
+ url = elem.data('url') || elem.attr('href')
35
+ if elem.data('browser')=='new'
36
+ App.Shared.releaseLoader()
37
+ window.open url + '?' + $.param dataArgumentOn(elem)
38
+ return
39
+
40
+ oxremote = elem.data('oxremote')
41
+ if oxremote=='false'
42
+ switch elem.data('method')
43
+ when 'post', 'POST'
44
+ # elem.closest('form').submit()
45
+ $('form').submit()
46
+ when 'put', 'PUT'
47
+ console.log 'how do I put? add code in abstracted/app/assets/javascripts/initializers.js.coffee'
48
+ when 'get', 'GET'
49
+ window.location.href = elem.data('url')
50
+ else
51
+ try
52
+ jqxhr = $.ajax
53
+ url: elem.data('url') || elem.attr('href')
54
+ type: elem.data('method') || 'get'
55
+ data: dataArgumentOn(elem)
56
+ dataType: elem.data('type') || 'html'
57
+ .done (data) ->
58
+ App.Shared.releaseLoader()
59
+ if elem.data('download')
60
+ App.Shared.getDownload(jqxhr,data)
61
+ else
62
+ $(document.body).append(data)
63
+
64
+ .fail (response,status) ->
65
+ App.Shared.releaseLoader()
66
+ if jqxhr.state=='rejected'
67
+ App.Shared.reportError('Der er ingen forbindelse til serveren - prøv lidt senere!')
68
+ else
69
+ $(document.body).append(response.responseText)
70
+
71
+ catch e
72
+ console.log e
73
+
74
+ return false
75
+
76
+ #
77
+ # setTimeout () ->
78
+ # URL.revokeObjectURL(downloadUrl)
79
+ # , 100
80
+ #
81
+ #
82
+ #
83
+ # blob=new Blob([data])
84
+ # link=document.createElement('a')
85
+ # link.href=window.URL.createObjectURL(blob)
86
+ # # link.target='_blank';
87
+ # link.download="oxen_"+new Date()+".pdf"
88
+ # link.click()
89
+
90
+ # @printPost = ($elem) ->
91
+ # try
92
+ # url = $elem.data('url') + "/" + $elem.data('id') + '/' + $elem.data('print-action') + ".js"
93
+ # request = $.ajax
94
+ # url: url,
95
+ # type: "post",
96
+ # data: $elem.data('data'),
97
+ # dataType: 'html'
98
+ # .done (data) ->
99
+ # releaseLoader($elem.closest('.loader_container'))
100
+ # $(document.body).append(data)
101
+ # .error (data) ->
102
+ # releaseLoader($elem.closest('.loader_container'))
103
+ # $(document.body).append(data)
104
+
105
+ #
106
+ # searchPost handles ordering search on index actions
107
+ #
108
+ orderSearch: (url,query) ->
109
+ loader = '<div class="preloader-wrapper small active"> <div class="spinner-layer spinner-blue-only"> <div class="circle-clipper left"> <div class="circle"></div> </div><div class="gap-patch"> <div class="circle"></div> </div><div class="circle-clipper right"> <div class="circle"></div> </div> </div> </div>'
110
+ loaded_element = $('.fixed-action-btn')
111
+ App.Shared.setLoader( loaded_element,loader )
112
+ window.location.href= url + '?q=' + encodeURIComponent(query)
113
+
114
+
115
+ #
116
+ # handleAttachLinks
117
+ # allows for attaching/detaching resources from their parents - like: /admin/users/2/printers/3/attach.js
118
+ #
119
+ handleAttachLinks: (e) ->
120
+ e.preventDefault()
121
+ e.stopPropagation()
122
+
123
+ $elem = $(e.currentTarget)
124
+ request = $.ajax
125
+ url: $elem.attr('href'),
126
+ type: "get",
127
+ dataType: 'html'
128
+ .done (data) ->
129
+ $( $elem[0].parentElement).html(data)
130
+
131
+ .error (data) ->
132
+ swal("Oops", "We couldn't connect to the server!", "error")
133
+ return false
134
+
135
+ #
136
+ # handleActivateLinks
137
+ # allows for activating/deactivating resources - like: /admin/users/2/activate
138
+ #
139
+ handleActivateLinks: (e) ->
140
+ e.preventDefault()
141
+ e.stopPropagation()
142
+
143
+ $elem = $(e.currentTarget)
144
+ request = $.ajax
145
+ url: $elem.attr('href'),
146
+ type: "get",
147
+ dataType: 'html'
148
+ .done (data) ->
149
+ $( $elem[0].parentElement).html(data)
150
+
151
+ .error (data) ->
152
+ swal("Oops", "We couldn't connect to the server!", "error")
153
+ return false
154
+
155
+
156
+ #
157
+ # handlePreferredLinks
158
+ # allows for activating/deactivating resources - like: /admin/users/2/activate
159
+ #
160
+ handlePreferredLinks: (e) ->
161
+ e.preventDefault()
162
+ e.stopPropagation()
163
+
164
+ $elem = $(e.currentTarget)
165
+ request = $.ajax
166
+ url: $elem.attr('href'),
167
+ type: "get",
168
+ dataType: 'html'
169
+ .done (data) ->
170
+ # here we have to write all the existing preferred ones
171
+ $.when $('i.preferred').each (k,e) ->
172
+ $e = $(e)
173
+ $( $e[0].parentElement).html( data.replace /{{id}}/, $e.data('id'))
174
+ # $( $elem[0].parentElement).html(data)
175
+ .then $( $elem[0].parentElement).html('<i class="preferred material-icons green-text" data-id="' + $elem.data('id') + '">bookmark</i>')
176
+
177
+ .error (data) ->
178
+ swal("Oops", "We couldn't connect to the server!", "error")
179
+ return false
180
+
181
+ #
182
+ # handlePrintLinks
183
+ # initializes the tags classed with '.print_post_link' to print a post
184
+ #
185
+ handlePrintLinks: (e) ->
186
+ e.preventDefault()
187
+ e.stopPropagation()
188
+
189
+ $elem = $(e.currentTarget)
190
+ loader = '<div class="preloader-wrapper small active"> <div class="spinner-layer spinner-blue-only"> <div class="circle-clipper left"> <div class="circle"></div> </div><div class="gap-patch"> <div class="circle"></div> </div><div class="circle-clipper right"> <div class="circle"></div> </div> </div> </div>'
191
+ loaded_element = $elem.closest('.loader_container')
192
+ App.Shared.setLoader( loaded_element,loader )
193
+ @printPost($elem)
194
+ return false
195
+
196
+ #
197
+ # starting a search - and making some noise about it!
198
+ #
199
+ searchKey: (e) =>
200
+ if e.keyCode == 13
201
+ e.preventDefault()
202
+ e.stopPropagation()
203
+ $elem = $('input.search-list')
204
+ @orderSearch(@inputForm.action, $elem.val())
205
+
206
+ #
207
+ # starting a search - and making some noise about it!
208
+ #
209
+ searchClick: (e) =>
210
+ e.preventDefault()
211
+ e.stopPropagation()
212
+ $elem = $('input.search-list')
213
+ @orderSearch(@inputForm.action, $elem.val())
214
+
215
+
216
+ prepare: ->
217
+
218
+ try
219
+ $(document.body).unbind('click.print')
220
+ $(document.body).unbind('click.attach')
221
+ $(document.body).unbind('click.activate')
222
+ $(document.body).unbind('click.prefer')
223
+
224
+ $(document.body).on 'click.print', 'a.print_post_link, a.print_item', @handlePrintLinks
225
+ $(document.body).on 'keydown.search', 'input.search-list', @searchKey
226
+ $(document.body).on 'click.search', 'form a.search-list[type="submit"]', @searchClick
227
+
228
+ #
229
+ # If this page has a resources_list
230
+ #
231
+ $('table.resources_table').map (k,t) ->
232
+ $(document.body).on 'click.attach', 'a.attached, a.detached', @handleAttachLinks
233
+ $(document.body).on 'click.activate', 'a.activated, a.deactivated', @handleActivateLinks
234
+ $(document.body).on 'click.prefer', 'a.preferred, a.deferred', @handlePreferredLinks
235
+ scrollTable(t)
236
+
237
+ catch error
238
+ alert 'App.ResourcesList did not prepare!'
239
+ console.log error