admin_data 1.1.3 → 1.1.4
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.
- data/Rakefile +1 -1
- data/app/controllers/admin_data/public_controller.rb +14 -5
- data/lib/admin_data/version.rb +1 -1
- data/lib/admin_data.rb +1 -1
- metadata +3 -32
- data/lib/public/images/add.png +0 -0
- data/lib/public/images/no.png +0 -0
- data/lib/public/images/site.png +0 -0
- data/lib/public/javascripts/advance_search/act_on_result.js +0 -45
- data/lib/public/javascripts/advance_search/advance_search.js +0 -83
- data/lib/public/javascripts/advance_search/advance_search_structure.js +0 -79
- data/lib/public/javascripts/advance_search/ajaxify_advance_search.js +0 -28
- data/lib/public/javascripts/advance_search/build_first_row.js +0 -8
- data/lib/public/javascripts/advance_search/event_bindings.js +0 -76
- data/lib/public/javascripts/advance_search/global_ajax_setting.js +0 -10
- data/lib/public/javascripts/advance_search/trigger_submit_on_domready.js +0 -6
- data/lib/public/javascripts/misc/drop_down_change.js +0 -8
- data/lib/public/javascripts/misc/js_util.js +0 -58
- data/lib/public/javascripts/misc/quick_search_input_focus.js +0 -6
- data/lib/public/javascripts/test/act_on_result.js +0 -120
- data/lib/public/javascripts/test/advance_search.js +0 -80
- data/lib/public/javascripts/test/ajaxify_advance_search.js +0 -29
- data/lib/public/javascripts/test/build_first_row.js +0 -10
- data/lib/public/javascripts/test/event_bindings.js +0 -100
- data/lib/public/javascripts/vendor/jack.js +0 -903
- data/lib/public/javascripts/vendor/jquery-1.4.2.js +0 -6240
- data/lib/public/javascripts/vendor/jquery-ui-1.7.2.custom.min.js +0 -298
- data/lib/public/javascripts/vendor/jquery.ba-isjquery.js +0 -21
- data/lib/public/javascripts/vendor/jquery_form.js +0 -814
- data/lib/public/javascripts/vendor/log.js +0 -9
- data/lib/public/javascripts/vendor/qunit.js +0 -1043
- data/lib/public/javascripts/vendor/rails.js +0 -132
- data/lib/public/stylesheets/base.css +0 -1109
- data/lib/public/stylesheets/vendor/jquery-ui-1.7.2.custom.css +0 -406
data/Rakefile
CHANGED
@@ -31,7 +31,7 @@ begin
|
|
31
31
|
s.email = "neerajdotname@gmail.com"
|
32
32
|
s.homepage = "http://github.com/neerajdotname/admin_data"
|
33
33
|
s.authors = ['Neeraj Singh']
|
34
|
-
s.files = FileList["[A-Z]*", "{app,config,lib
|
34
|
+
s.files = FileList["[A-Z]*", "{app,config,lib}/**/*", 'init.rb']
|
35
35
|
|
36
36
|
s.add_dependency('will_paginate', '>= 3.0.pre2')
|
37
37
|
|
@@ -2,15 +2,13 @@ module AdminData
|
|
2
2
|
class PublicController < ApplicationController
|
3
3
|
|
4
4
|
def serve
|
5
|
-
path = File.join(AdminData.public_dir,params[:file])
|
6
|
-
expanded_path = File.expand_path(path)
|
7
5
|
|
8
|
-
# validate
|
9
|
-
unless
|
6
|
+
# validate filename with a white list
|
7
|
+
unless self.class.admin_data_assets.include? params[:file]
|
10
8
|
render :nothing => true, :status => 404 and return
|
11
9
|
end
|
12
10
|
|
13
|
-
opts = {:text => File.read(
|
11
|
+
opts = {:text => File.read(File.join(AdminData.public_dir,params[:file])), :cache => true}
|
14
12
|
|
15
13
|
case params[:file]
|
16
14
|
when /\.css$/i then opts[:content_type] = "text/css"
|
@@ -23,6 +21,17 @@ module AdminData
|
|
23
21
|
render opts
|
24
22
|
end
|
25
23
|
|
24
|
+
protected
|
26
25
|
|
26
|
+
# Cached list of all assets provided by admin_data
|
27
|
+
# It is used to ensure security in the serve method
|
28
|
+
def self.admin_data_assets
|
29
|
+
@admin_data_assets ||= (
|
30
|
+
Dir.glob(File.join(AdminData.public_dir, '**', '*')).map do |path|
|
31
|
+
# we want only relative paths
|
32
|
+
path.split(AdminData.public_dir, 2).last
|
33
|
+
end
|
34
|
+
)
|
35
|
+
end
|
27
36
|
end
|
28
37
|
end
|
data/lib/admin_data/version.rb
CHANGED
data/lib/admin_data.rb
CHANGED
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: admin_data
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 27
|
5
5
|
prerelease: false
|
6
6
|
segments:
|
7
7
|
- 1
|
8
8
|
- 1
|
9
|
-
-
|
10
|
-
version: 1.1.
|
9
|
+
- 4
|
10
|
+
version: 1.1.4
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Neeraj Singh
|
@@ -160,35 +160,6 @@ files:
|
|
160
160
|
- lib/admin_data/util.rb
|
161
161
|
- lib/admin_data/version.rb
|
162
162
|
- lib/admin_data_date_validation.rb
|
163
|
-
- lib/public/images/add.png
|
164
|
-
- lib/public/images/no.png
|
165
|
-
- lib/public/images/site.png
|
166
|
-
- lib/public/javascripts/advance_search/act_on_result.js
|
167
|
-
- lib/public/javascripts/advance_search/advance_search.js
|
168
|
-
- lib/public/javascripts/advance_search/advance_search_structure.js
|
169
|
-
- lib/public/javascripts/advance_search/ajaxify_advance_search.js
|
170
|
-
- lib/public/javascripts/advance_search/build_first_row.js
|
171
|
-
- lib/public/javascripts/advance_search/event_bindings.js
|
172
|
-
- lib/public/javascripts/advance_search/global_ajax_setting.js
|
173
|
-
- lib/public/javascripts/advance_search/trigger_submit_on_domready.js
|
174
|
-
- lib/public/javascripts/misc/drop_down_change.js
|
175
|
-
- lib/public/javascripts/misc/js_util.js
|
176
|
-
- lib/public/javascripts/misc/quick_search_input_focus.js
|
177
|
-
- lib/public/javascripts/test/act_on_result.js
|
178
|
-
- lib/public/javascripts/test/advance_search.js
|
179
|
-
- lib/public/javascripts/test/ajaxify_advance_search.js
|
180
|
-
- lib/public/javascripts/test/build_first_row.js
|
181
|
-
- lib/public/javascripts/test/event_bindings.js
|
182
|
-
- lib/public/javascripts/vendor/jack.js
|
183
|
-
- lib/public/javascripts/vendor/jquery-1.4.2.js
|
184
|
-
- lib/public/javascripts/vendor/jquery-ui-1.7.2.custom.min.js
|
185
|
-
- lib/public/javascripts/vendor/jquery.ba-isjquery.js
|
186
|
-
- lib/public/javascripts/vendor/jquery_form.js
|
187
|
-
- lib/public/javascripts/vendor/log.js
|
188
|
-
- lib/public/javascripts/vendor/qunit.js
|
189
|
-
- lib/public/javascripts/vendor/rails.js
|
190
|
-
- lib/public/stylesheets/base.css
|
191
|
-
- lib/public/stylesheets/vendor/jquery-ui-1.7.2.custom.css
|
192
163
|
- test/rails_root/app/controllers/application_controller.rb
|
193
164
|
- test/rails_root/app/helpers/application_helper.rb
|
194
165
|
- test/rails_root/app/models/city.rb
|
data/lib/public/images/add.png
DELETED
Binary file
|
data/lib/public/images/no.png
DELETED
Binary file
|
data/lib/public/images/site.png
DELETED
Binary file
|
@@ -1,45 +0,0 @@
|
|
1
|
-
var AdminData = AdminData || {};
|
2
|
-
|
3
|
-
AdminData.actOnResult = {
|
4
|
-
|
5
|
-
action: function(action_type) {
|
6
|
-
var formData = $('#advance_search_form').data('admin_data_form_array'),
|
7
|
-
parameterizedData;
|
8
|
-
|
9
|
-
formData.push({
|
10
|
-
'name': 'admin_data_advance_search_action_type',
|
11
|
-
'value': action_type
|
12
|
-
});
|
13
|
-
|
14
|
-
parameterizedData = $.param(formData);
|
15
|
-
|
16
|
-
$.ajax({
|
17
|
-
url: $('#advance_search_form').attr('action'),
|
18
|
-
type: 'post',
|
19
|
-
dataType: 'json',
|
20
|
-
data: parameterizedData,
|
21
|
-
success: function(json) {
|
22
|
-
AdminData.actOnResult.successCallback(json);
|
23
|
-
}
|
24
|
-
});
|
25
|
-
},
|
26
|
-
|
27
|
-
successCallback: function(json) {
|
28
|
-
$('#results').text(json.success);
|
29
|
-
}
|
30
|
-
|
31
|
-
};
|
32
|
-
|
33
|
-
$('#advance_search_delete_all').live('click', function() {
|
34
|
-
if (window.confirm('Are you sure?')) {
|
35
|
-
AdminData.actOnResult.action('delete');
|
36
|
-
}
|
37
|
-
return false;
|
38
|
-
});
|
39
|
-
|
40
|
-
$('#advance_search_destroy_all').live('click', function() {
|
41
|
-
if (window.confirm('Are you sure?')) {
|
42
|
-
AdminData.actOnResult.action('destroy');
|
43
|
-
}
|
44
|
-
return false;
|
45
|
-
});
|
@@ -1,83 +0,0 @@
|
|
1
|
-
var AdminData = AdminData || {};
|
2
|
-
|
3
|
-
AdminData.advanceSearch = {
|
4
|
-
|
5
|
-
buildFirstRow: function() {
|
6
|
-
|
7
|
-
var img = $('<img />', {
|
8
|
-
src: '/admin_data/public/images/add.png'
|
9
|
-
});
|
10
|
-
|
11
|
-
$('#advance_search_table').append(this.buildRow())
|
12
|
-
.find('tr td:last a')
|
13
|
-
.attr('id','add_row_link_1')
|
14
|
-
.removeClass('remove_row')
|
15
|
-
.addClass('add_row_link')
|
16
|
-
.html('')
|
17
|
-
.append(img);
|
18
|
-
},
|
19
|
-
|
20
|
-
buildCol1: function() {
|
21
|
-
var i, col = $('<select />', { className: 'col1' }).append($('<option />')),
|
22
|
-
tableStructure = $('#advance_search_table').data('table_structure');
|
23
|
-
|
24
|
-
for (i in tableStructure) {
|
25
|
-
$('<option />', {
|
26
|
-
text: i,
|
27
|
-
value: i
|
28
|
-
}).appendTo(col);
|
29
|
-
}
|
30
|
-
return $('<td />').append(col);
|
31
|
-
},
|
32
|
-
|
33
|
-
buildCol2: function() {
|
34
|
-
var select = $('<select />', { className: 'col2', disabled: 'disabled' });
|
35
|
-
return $('<td />').append(select);
|
36
|
-
},
|
37
|
-
|
38
|
-
buildCol3: function() {
|
39
|
-
var select = $('<input />', { className: 'col3' });
|
40
|
-
return $('<td />').append($('<input />', { className: 'col3', disabled: 'disabled' }));
|
41
|
-
},
|
42
|
-
|
43
|
-
buildCol4: function() {
|
44
|
-
var img = $('<img />', {
|
45
|
-
src: '/admin_data/public/images/no.png'
|
46
|
-
});
|
47
|
-
|
48
|
-
return $('<td />').append($('<a />', {
|
49
|
-
text: '',
|
50
|
-
href: '#',
|
51
|
-
className: 'remove_row'
|
52
|
-
}).append(img));
|
53
|
-
},
|
54
|
-
|
55
|
-
buildRow: function() {
|
56
|
-
|
57
|
-
var $tr = $('<tr />'),
|
58
|
-
currentRowNumber = $(document).data('currentRowNumber'),
|
59
|
-
that = this,
|
60
|
-
build_array = ['buildCol1', 'buildCol2', 'buildCol3', 'buildCol4'];
|
61
|
-
|
62
|
-
if (currentRowNumber === undefined) {
|
63
|
-
currentRowNumber = 1;
|
64
|
-
$(document).data('currentRowNumber', currentRowNumber);
|
65
|
-
} else {
|
66
|
-
currentRowNumber = parseInt(currentRowNumber, 10) + 1;
|
67
|
-
$(document).data('currentRowNumber', currentRowNumber);
|
68
|
-
}
|
69
|
-
|
70
|
-
$.each(build_array, function(index, value) {
|
71
|
-
$tr.append(that[value]());
|
72
|
-
});
|
73
|
-
|
74
|
-
$tr.find('select.col1').attr({ name: 'adv_search[' + currentRowNumber + '_row][col1]' });
|
75
|
-
$tr.find('select.col2').attr({ name: 'adv_search[' + currentRowNumber + '_row][col2]' });
|
76
|
-
$tr.find('input.col3').attr({ name: 'adv_search[' + currentRowNumber + '_row][col3]' });
|
77
|
-
|
78
|
-
$tr.find('.remove_row').attr('id', 'remove_row_'+currentRowNumber);
|
79
|
-
|
80
|
-
return $tr;
|
81
|
-
}
|
82
|
-
|
83
|
-
};
|
@@ -1,79 +0,0 @@
|
|
1
|
-
AdminData = AdminData || {};
|
2
|
-
|
3
|
-
AdminData.mappings = {
|
4
|
-
|
5
|
-
//JSLint complains if a hash has key named boolean. So I am changing the key to booleant
|
6
|
-
booleant: {
|
7
|
-
options: [
|
8
|
-
["is null", "is_null"],
|
9
|
-
["is not null", "is_not_null"],
|
10
|
-
["is true", "is_true"],
|
11
|
-
["is false", "is_false"]
|
12
|
-
]
|
13
|
-
},
|
14
|
-
|
15
|
-
string: {
|
16
|
-
options: [
|
17
|
-
["is null", "is_null"],
|
18
|
-
["is not null", "is_not_null"],
|
19
|
-
["contains", "contains"],
|
20
|
-
["is exactly", "is_exactly"],
|
21
|
-
["doesn't contain", "does_not_contain"]
|
22
|
-
]
|
23
|
-
},
|
24
|
-
|
25
|
-
text: {
|
26
|
-
options: [
|
27
|
-
["is null", "is_null"],
|
28
|
-
["is not null", "is_not_null"],
|
29
|
-
["Contains", "contains"],
|
30
|
-
["Doesn't Contain", "does_not_contain"]
|
31
|
-
]
|
32
|
-
},
|
33
|
-
|
34
|
-
datetime: {
|
35
|
-
options: [
|
36
|
-
["is null", "is_null"],
|
37
|
-
["is not null", "is_not_null"],
|
38
|
-
['on', "is_on"],
|
39
|
-
['on or before', "is_on_or_before_date"],
|
40
|
-
['on or after', "is_on_or_after_date"]
|
41
|
-
]
|
42
|
-
},
|
43
|
-
|
44
|
-
date: {
|
45
|
-
options: [
|
46
|
-
["is null", "is_null"],
|
47
|
-
["is not null", "is_not_null"],
|
48
|
-
['on', "is_on"],
|
49
|
-
['on or before', "is_on_or_before_date"],
|
50
|
-
['on or after', "is_on_or_after_date"]
|
51
|
-
]
|
52
|
-
},
|
53
|
-
|
54
|
-
time: {
|
55
|
-
options: [
|
56
|
-
["is null", "is_null"],
|
57
|
-
["is not null", "is_not_null"],
|
58
|
-
["is exactly", "is_exactly"]
|
59
|
-
]
|
60
|
-
},
|
61
|
-
|
62
|
-
decimal: {
|
63
|
-
options: [
|
64
|
-
['is equal to', "is_equal_to"],
|
65
|
-
['is less than', "less_than"],
|
66
|
-
['is greater than', "greater_than"]
|
67
|
-
]
|
68
|
-
},
|
69
|
-
|
70
|
-
integer: {
|
71
|
-
options: [
|
72
|
-
['is equal to', "is_equal_to"],
|
73
|
-
['is less than', "less_than"],
|
74
|
-
['is greater than', "greater_than"]
|
75
|
-
]
|
76
|
-
}
|
77
|
-
};
|
78
|
-
|
79
|
-
|
@@ -1,28 +0,0 @@
|
|
1
|
-
var AdminData = AdminData || {};
|
2
|
-
|
3
|
-
AdminData.ajaxifyAdvanceSearch = {
|
4
|
-
successCallback: function(responseText) {
|
5
|
-
$('#results').html(responseText);
|
6
|
-
},
|
7
|
-
|
8
|
-
beforeSubmitCallback: function(formArray, jqForm) {
|
9
|
-
$('#results').html('<span class="searching_message">searching...</span>');
|
10
|
-
$('#advance_search_form').data('admin_data_form_array', formArray);
|
11
|
-
}
|
12
|
-
};
|
13
|
-
|
14
|
-
$(function() {
|
15
|
-
|
16
|
-
var options = {
|
17
|
-
success: function(responseText) {
|
18
|
-
AdminData.ajaxifyAdvanceSearch.successCallback(responseText);
|
19
|
-
},
|
20
|
-
beforeSubmit: function(formArray, jqForm) {
|
21
|
-
AdminData.ajaxifyAdvanceSearch.beforeSubmitCallback(formArray, jqForm);
|
22
|
-
}
|
23
|
-
};
|
24
|
-
|
25
|
-
$('#advance_search_form').ajaxForm(options);
|
26
|
-
|
27
|
-
});
|
28
|
-
|
@@ -1,76 +0,0 @@
|
|
1
|
-
var AdminData = AdminData || {};
|
2
|
-
|
3
|
-
AdminData.bindings = {
|
4
|
-
|
5
|
-
col2_change: function(e) {
|
6
|
-
var arrayList = ['is_false', 'is_true', 'is_null', 'is_not_null'],
|
7
|
-
$col2 = $(e.target).closest('select'),
|
8
|
-
value = $col2.val(),
|
9
|
-
tableStructure = $('#advance_search_table').data('table_structure'),
|
10
|
-
$col3 = $col2.parents('tr').find('td input.col3'),
|
11
|
-
$col1 = $col2.parents('tr').find('td select.col1'),
|
12
|
-
col1ColumnType = tableStructure[$col1.val()];
|
13
|
-
|
14
|
-
|
15
|
-
if (value.length === 0 || ($.inArray(value, arrayList) > - 1)) {
|
16
|
-
$col3.val('').attr('disabled','disabled');
|
17
|
-
|
18
|
-
} else {
|
19
|
-
$col3.removeAttr('disabled');
|
20
|
-
if (col1ColumnType === 'datetime' || col1ColumnType === 'date') {
|
21
|
-
$col3.val(AdminData.jsUtil.dateToString(new Date())).addClass('datepicker');
|
22
|
-
|
23
|
-
$('.datepicker').datepicker({ dateFormat: 'dd-MM-yy', changeYear: true, changeMonth: true });
|
24
|
-
|
25
|
-
} else {
|
26
|
-
$('.datepicker').datepicker('destroy');
|
27
|
-
$col3.removeClass('datepicker').focus(); // do not create focus for date pickers
|
28
|
-
}
|
29
|
-
}
|
30
|
-
},
|
31
|
-
|
32
|
-
pagination_click: function(e) {
|
33
|
-
var href = $(e.target).closest('a').attr('href');
|
34
|
-
|
35
|
-
$.ajax({ url: href, dataType: "text", success: function(responseText){
|
36
|
-
$('#results').html(responseText);
|
37
|
-
}});
|
38
|
-
|
39
|
-
AdminData.jsUtil.colorizeRows();
|
40
|
-
},
|
41
|
-
|
42
|
-
col1_change: function(e) {
|
43
|
-
var col1 = $(e.target).closest('select'),
|
44
|
-
tableStructure = $('#advance_search_table').data('table_structure'),
|
45
|
-
columnType = tableStructure[col1.val()],
|
46
|
-
options = AdminData.mappings[columnType]['options'],
|
47
|
-
col2 = col1.parents('tr').find('td select.col2');
|
48
|
-
|
49
|
-
col2.html('');
|
50
|
-
AdminData.jsUtil.buildOptionsFromArray(options, col2);
|
51
|
-
col2.trigger('change').removeAttr('disabled');
|
52
|
-
}
|
53
|
-
};
|
54
|
-
|
55
|
-
$('.pagination a').live('click', function(e) {
|
56
|
-
AdminData.bindings.pagination_click(e);
|
57
|
-
return false;
|
58
|
-
});
|
59
|
-
|
60
|
-
$('#advance_search_table a.add_row_link').live('click', function() {
|
61
|
-
$('#advance_search_table').append(AdminData.advanceSearch.buildRow());
|
62
|
-
return false;
|
63
|
-
});
|
64
|
-
|
65
|
-
$('#advance_search_table a.remove_row').live('click', function(e) {
|
66
|
-
$(e.target).closest('tr').remove();
|
67
|
-
return false;
|
68
|
-
});
|
69
|
-
|
70
|
-
$('#advance_search_table select.col1').live('change', function(e) {
|
71
|
-
AdminData.bindings.col1_change(e);
|
72
|
-
});
|
73
|
-
|
74
|
-
$('#advance_search_table select.col2').live('change', function(e) {
|
75
|
-
AdminData.bindings.col2_change(e);
|
76
|
-
});
|
@@ -1,58 +0,0 @@
|
|
1
|
-
var AdminData = AdminData || {};
|
2
|
-
|
3
|
-
/**
|
4
|
-
* A general Utility
|
5
|
-
* @namespace AdminData
|
6
|
-
* @class jsUtil
|
7
|
-
*/
|
8
|
-
AdminData.jsUtil = {
|
9
|
-
|
10
|
-
// TODO since advance search was not working with util confirm , window.confirm is used directly
|
11
|
-
// fix it later
|
12
|
-
confirm: function(arg) {
|
13
|
-
window.confirm(arg);
|
14
|
-
},
|
15
|
-
|
16
|
-
buildOptionsFromArray: function(array, element) {
|
17
|
-
element.append($('<option />'));
|
18
|
-
for (i in array) {
|
19
|
-
$('<option />').text(array[i][0]).attr('value', array[i][1]).appendTo(element);
|
20
|
-
}
|
21
|
-
element.attr('disabled', false);
|
22
|
-
},
|
23
|
-
|
24
|
-
colorizeRows: function() {
|
25
|
-
$('.colorize tr:odd').addClass('odd');
|
26
|
-
$('.colorize tr:even').addClass('even');
|
27
|
-
},
|
28
|
-
|
29
|
-
/**
|
30
|
-
* Returns the input date in string format.
|
31
|
-
*
|
32
|
-
* @param {date} input date
|
33
|
-
* @return {string} The string value of input date
|
34
|
-
*/
|
35
|
-
dateToString: function(date) {
|
36
|
-
var month = (date.getMonth() + 1).toString();
|
37
|
-
var day = date.getDate().toString();
|
38
|
-
//days between 1 and 9 should have 0 before them
|
39
|
-
if (day.length == 1) day = '0' + day;
|
40
|
-
var months = ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'];
|
41
|
-
return day + "-" + months[month - 1] + "-" + date.getFullYear();
|
42
|
-
},
|
43
|
-
|
44
|
-
/**
|
45
|
-
* Generate a random number between 1 and 10000000
|
46
|
-
*
|
47
|
-
* @return {Integer} a random Integer
|
48
|
-
*
|
49
|
-
*/
|
50
|
-
randomNumber: function() {
|
51
|
-
var maxVal = 100000000,
|
52
|
-
minVal = 1;
|
53
|
-
var randVal = minVal + (Math.random() * (maxVal - minVal));
|
54
|
-
return Math.round(randVal);
|
55
|
-
}
|
56
|
-
|
57
|
-
};
|
58
|
-
|
@@ -1,120 +0,0 @@
|
|
1
|
-
module('act_on_result', {
|
2
|
-
teardown: function() {
|
3
|
-
$('#advance_search_delete_all').remove();
|
4
|
-
$('#advance_search_destroy_all').remove();
|
5
|
-
$('#results').remove();
|
6
|
-
$('#advance_search_form').remove();
|
7
|
-
},
|
8
|
-
setup: function() {
|
9
|
-
$(document.body).append($('<a />', {
|
10
|
-
href: '#',
|
11
|
-
id: 'advance_search_delete_all'
|
12
|
-
}));
|
13
|
-
|
14
|
-
$(document.body).append($('<a />', {
|
15
|
-
href: '#',
|
16
|
-
id: 'advance_search_destroy_all'
|
17
|
-
}));
|
18
|
-
|
19
|
-
$(document.body).append($('<div />', {
|
20
|
-
id: 'results'
|
21
|
-
}));
|
22
|
-
|
23
|
-
$(document.body).append($('<div />', {
|
24
|
-
id: 'advance_search_form'
|
25
|
-
}));
|
26
|
-
}
|
27
|
-
});
|
28
|
-
|
29
|
-
test('invoking success callback', function() {
|
30
|
-
expect(1);
|
31
|
-
AdminData.actOnResult.successCallback({
|
32
|
-
success: 'hello world'
|
33
|
-
});
|
34
|
-
equals('hello world', $('#results').text(), '#results should have text hello world');
|
35
|
-
});
|
36
|
-
|
37
|
-
test('live clicking #advance_search_delete_all with cancel action', function() {
|
38
|
-
expect(0);
|
39
|
-
jack(function() {
|
40
|
-
jack.expect('AdminData.jsUtil.confirm').once().mock(function() {
|
41
|
-
return false;
|
42
|
-
});
|
43
|
-
//TODO ensure that the value passed to action is delete
|
44
|
-
jack.expect('AdminData.actOnResult.action').exactly('0 time');
|
45
|
-
$('#advance_search_delete_all').trigger('click');
|
46
|
-
});
|
47
|
-
});
|
48
|
-
|
49
|
-
test('live clicking #advance_search_delete_all', function() {
|
50
|
-
expect(0);
|
51
|
-
var args;
|
52
|
-
|
53
|
-
jack(function() {
|
54
|
-
jack.expect('AdminData.jsUtil.confirm').once().mock(function() {
|
55
|
-
return true;
|
56
|
-
});
|
57
|
-
jack.expect('AdminData.actOnResult.action').once().mock(function(action_type) {
|
58
|
-
args = action_type;
|
59
|
-
return {};
|
60
|
-
});
|
61
|
-
$('#advance_search_delete_all').trigger('click');
|
62
|
-
});
|
63
|
-
equals('delete', args, 'action_type should be delete');
|
64
|
-
|
65
|
-
});
|
66
|
-
|
67
|
-
test('live clicking #advance_search_destroy_all with cancel action', function() {
|
68
|
-
expect(0);
|
69
|
-
jack(function() {
|
70
|
-
jack.expect('AdminData.jsUtil.confirm').once().mock(function() {
|
71
|
-
return false;
|
72
|
-
});
|
73
|
-
jack.expect('AdminData.actOnResult.action').exactly('0 time');
|
74
|
-
$('#advance_search_destroy_all').trigger('click');
|
75
|
-
});
|
76
|
-
});
|
77
|
-
|
78
|
-
test('live clicking #advance_search_destroy_all', function() {
|
79
|
-
expect(0);
|
80
|
-
var args;
|
81
|
-
|
82
|
-
jack(function() {
|
83
|
-
jack.expect('AdminData.jsUtil.confirm').once().mock(function() {
|
84
|
-
return true;
|
85
|
-
});
|
86
|
-
jack.expect('AdminData.actOnResult.action').once().mock(function(action_type) {
|
87
|
-
args = action_type;
|
88
|
-
return {};
|
89
|
-
});
|
90
|
-
$('#advance_search_destroy_all').trigger('click');
|
91
|
-
});
|
92
|
-
equals('destroy', args, 'action_type should be destroy');
|
93
|
-
});
|
94
|
-
|
95
|
-
test('actOnResultAJAX', function() {
|
96
|
-
expect(5);
|
97
|
-
$('#advance_search_form').attr('action', 'http://localhost:3000');
|
98
|
-
$('#advance_search_form').data('admin_data_form_array', [{
|
99
|
-
name: 'foo',
|
100
|
-
value: 'i_am_foo'
|
101
|
-
}]);
|
102
|
-
|
103
|
-
var ajaxArgs;
|
104
|
-
|
105
|
-
jack(function() {
|
106
|
-
jack.expect('$.ajax').once().mock(function(args) {
|
107
|
-
ajaxArgs = args;
|
108
|
-
});
|
109
|
-
AdminData.actOnResult.action('delete');
|
110
|
-
});
|
111
|
-
|
112
|
-
equals('post', ajaxArgs.type, 'ajax arguments should have type as post');
|
113
|
-
equals('json', ajaxArgs.dataType, 'ajax arguments should have json as dataType');
|
114
|
-
equals('http://localhost:3000', ajaxArgs.url, 'ajax arguments should have valid url');
|
115
|
-
var data = ajaxArgs.data;
|
116
|
-
ok(data, 'ajax arguments should have value for key data');
|
117
|
-
equals('foo=i_am_foo&admin_data_advance_search_action_type=delete', data, 'data should have parameterized value');
|
118
|
-
|
119
|
-
});
|
120
|
-
|