raport 0.1.1.pre → 0.1.2.pre
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/raport/gem_version.rb +1 -1
- data/vendor/assets/javascripts/raport/periodic.js +99 -0
- data/vendor/assets/javascripts/raport.js.coffee +40 -0
- metadata +19 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 84bbbf3b418d91be6f2119b2f24368077126956f
|
4
|
+
data.tar.gz: a8ec175448248aa8ad71b9455fcfa4d354b51cc9
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 573224be21a48c7600bf972dab214aafeef147ec9d0d537bd9d8190f3a040af33e28e2f752ec49ced9f3bfb6cc7b3a50e9156d1a82944b308bc039696cdf3a29
|
7
|
+
data.tar.gz: 404be995fe1c688704dd2f1ec25be4dda8e5e593103ba7069696b7ea7bb1e6ce144725990e5d635e74378a62a962b684268187231f253e71141e795329a828b7
|
data/lib/raport/gem_version.rb
CHANGED
@@ -0,0 +1,99 @@
|
|
1
|
+
/*!
|
2
|
+
* jQuery periodic plugin
|
3
|
+
*
|
4
|
+
* Copyright 2010, Tom Anderson
|
5
|
+
* Dual licensed under the MIT or GPL Version 2 licenses.
|
6
|
+
*
|
7
|
+
*/
|
8
|
+
|
9
|
+
jQuery.periodic = function (options, callback) {
|
10
|
+
|
11
|
+
// if the first argument is a function then assume the options aren't being passed
|
12
|
+
if (jQuery.isFunction(options)) {
|
13
|
+
callback = options;
|
14
|
+
options = {};
|
15
|
+
}
|
16
|
+
|
17
|
+
// Merge passed settings with default values
|
18
|
+
var settings = jQuery.extend({}, jQuery.periodic.defaults, {
|
19
|
+
ajax_complete : ajaxComplete,
|
20
|
+
increment : increment,
|
21
|
+
reset : reset,
|
22
|
+
cancel : cancel
|
23
|
+
}, options);
|
24
|
+
|
25
|
+
// bookkeeping variables
|
26
|
+
settings.cur_period = settings.period;
|
27
|
+
settings.tid = false;
|
28
|
+
var prev_ajax_response = '';
|
29
|
+
|
30
|
+
run();
|
31
|
+
|
32
|
+
// return settings so user can tweak them externally
|
33
|
+
return settings;
|
34
|
+
|
35
|
+
// run (or restart if already running) the looping construct
|
36
|
+
function run() {
|
37
|
+
// clear/stop existing timer (multiple calls to run() won't result in multiple timers)
|
38
|
+
cancel();
|
39
|
+
// let it rip!
|
40
|
+
settings.tid = setTimeout(function() {
|
41
|
+
// set the context (this) for the callback to the settings object
|
42
|
+
callback.call(settings);
|
43
|
+
|
44
|
+
// compute the next value for cur_period
|
45
|
+
increment();
|
46
|
+
|
47
|
+
// queue up the next run
|
48
|
+
if(settings.tid)
|
49
|
+
run();
|
50
|
+
}, settings.cur_period);
|
51
|
+
}
|
52
|
+
|
53
|
+
// utility function for use with ajax calls
|
54
|
+
function ajaxComplete(xhr, status) {
|
55
|
+
if (status === 'success' && prev_ajax_response !== xhr.responseText) {
|
56
|
+
// reset the period whenever the response changes
|
57
|
+
prev_ajax_response = xhr.responseText;
|
58
|
+
reset();
|
59
|
+
}
|
60
|
+
}
|
61
|
+
|
62
|
+
// compute the next delay
|
63
|
+
function increment() {
|
64
|
+
settings.cur_period *= settings.decay;
|
65
|
+
if (settings.cur_period < settings.period) {
|
66
|
+
// don't let it drop below the minimum
|
67
|
+
reset();
|
68
|
+
} else if (settings.cur_period > settings.max_period) {
|
69
|
+
settings.cur_period = settings.max_period;
|
70
|
+
if (settings.on_max !== undefined) {
|
71
|
+
// call the user-supplied callback if we reach max_period
|
72
|
+
settings.on_max.call(settings);
|
73
|
+
}
|
74
|
+
}
|
75
|
+
}
|
76
|
+
|
77
|
+
function reset() {
|
78
|
+
settings.cur_period = settings.period;
|
79
|
+
// restart with the new timeout
|
80
|
+
run();
|
81
|
+
}
|
82
|
+
|
83
|
+
function cancel() {
|
84
|
+
clearTimeout(settings.tid);
|
85
|
+
settings.tid = null;
|
86
|
+
}
|
87
|
+
|
88
|
+
// other functions we might want to implement
|
89
|
+
function pause() {}
|
90
|
+
function resume() {}
|
91
|
+
function log() {}
|
92
|
+
};
|
93
|
+
|
94
|
+
jQuery.periodic.defaults = {
|
95
|
+
period : 4000, // 4 sec.
|
96
|
+
max_period : 1800000, // 30 min.
|
97
|
+
decay : 1.5, // time period multiplier
|
98
|
+
on_max : undefined // called if max_period is reached
|
99
|
+
};
|
@@ -0,0 +1,40 @@
|
|
1
|
+
#= require raport/periodic
|
2
|
+
|
3
|
+
peridicallyCall = (dom) ->
|
4
|
+
$.periodic ->
|
5
|
+
period: 5000
|
6
|
+
$.ajax
|
7
|
+
periodic: this
|
8
|
+
url: $(dom).data('async-load-report')
|
9
|
+
success: (json) ->
|
10
|
+
if $.inArray(json.state, ['finished', 'failed']) != -1
|
11
|
+
$('#report-download').html '<a href="' + json.file.url + '" class="label label-info">Download</a>'
|
12
|
+
$(dom).replaceWith '<span class="' + json.status_css_classes + '">' + json.display_status_name + '</span>'
|
13
|
+
@periodic.cancel()
|
14
|
+
complete: (xhr, status) ->
|
15
|
+
@ajax_complete
|
16
|
+
dataType: 'json'
|
17
|
+
|
18
|
+
$(document).ready ($) ->
|
19
|
+
$('[data-async-load-report]').each (i, dom) ->
|
20
|
+
peridicallyCall dom
|
21
|
+
return
|
22
|
+
|
23
|
+
$('[data-report="true"]').each (i, dom) ->
|
24
|
+
$(dom).on 'click', (e) ->
|
25
|
+
e.preventDefault()
|
26
|
+
$.ajax(
|
27
|
+
type: "GET"
|
28
|
+
url: $(dom).attr 'href'
|
29
|
+
dataType: 'json'
|
30
|
+
).done (json) ->
|
31
|
+
if json.errors
|
32
|
+
$.each json.errors, (key, values) ->
|
33
|
+
$.each values, (i, value) ->
|
34
|
+
console.log value
|
35
|
+
return
|
36
|
+
else
|
37
|
+
window.location.replace json.permalink
|
38
|
+
return
|
39
|
+
|
40
|
+
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: raport
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.2.pre
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Michael Rüffer
|
@@ -25,6 +25,20 @@ dependencies:
|
|
25
25
|
- - "~>"
|
26
26
|
- !ruby/object:Gem::Version
|
27
27
|
version: 4.2.3
|
28
|
+
- !ruby/object:Gem::Dependency
|
29
|
+
name: railties
|
30
|
+
requirement: !ruby/object:Gem::Requirement
|
31
|
+
requirements:
|
32
|
+
- - "~>"
|
33
|
+
- !ruby/object:Gem::Version
|
34
|
+
version: 4.2.3
|
35
|
+
type: :runtime
|
36
|
+
prerelease: false
|
37
|
+
version_requirements: !ruby/object:Gem::Requirement
|
38
|
+
requirements:
|
39
|
+
- - "~>"
|
40
|
+
- !ruby/object:Gem::Version
|
41
|
+
version: 4.2.3
|
28
42
|
- !ruby/object:Gem::Dependency
|
29
43
|
name: carrierwave
|
30
44
|
requirement: !ruby/object:Gem::Requirement
|
@@ -109,7 +123,7 @@ dependencies:
|
|
109
123
|
- - ">="
|
110
124
|
- !ruby/object:Gem::Version
|
111
125
|
version: '0'
|
112
|
-
description: This gem gives your rails app the ability to create large data
|
126
|
+
description: This gem gives your rails app the ability to create large data reports,
|
113
127
|
without influencing the performance of the app server.
|
114
128
|
email:
|
115
129
|
- michael.rueffer@hitfoxgroup.com
|
@@ -180,7 +194,9 @@ files:
|
|
180
194
|
- test/models/raport/report_test.rb
|
181
195
|
- test/raport_test.rb
|
182
196
|
- test/test_helper.rb
|
183
|
-
|
197
|
+
- vendor/assets/javascripts/raport.js.coffee
|
198
|
+
- vendor/assets/javascripts/raport/periodic.js
|
199
|
+
homepage: https://github.com/HitFox/raport
|
184
200
|
licenses:
|
185
201
|
- MIT
|
186
202
|
metadata: {}
|