ui_changed 0.0.1 → 0.0.2
Sign up to get free protection for your applications and to get access to all the features.
- data/app/assets/javascripts/ui_changed/application.js +1 -1
- data/app/assets/javascripts/ui_changed/ui_changed.js +344 -0
- data/app/assets/stylesheets/ui_changed/{screenshots.css → ui_changed.css} +1 -0
- data/app/models/ui_changed/config_helper.rb +1 -1
- data/app/models/ui_changed/screenshot_ignore_url.rb +1 -1
- data/app/views/layouts/ui_changed/application.html.haml +0 -1
- data/app/views/ui_changed/screenshots/diffs.haml +1 -1
- data/lib/ui_changed/railtie.rb +0 -3
- data/lib/ui_changed/version.rb +1 -1
- data/spec/models/screenshots_spec.rb +0 -3
- metadata +144 -47
- data/app/assets/javascripts/ui_changed/screenshots.js +0 -280
- data/app/assets/stylesheets/ui_changed/screenshot_ignore_urls.css +0 -4
- data/app/helpers/ui_changed/screenshot_ignore_urls_helper.rb +0 -4
- data/app/helpers/ui_changed/screenshots_helper.rb +0 -4
@@ -0,0 +1,344 @@
|
|
1
|
+
if (typeof(UiChanged) === 'undefined') {
|
2
|
+
UiChanged = {
|
3
|
+
_initialized: false,
|
4
|
+
_clicked_urls_row: false,
|
5
|
+
_crawlStatusIntervalId: null,
|
6
|
+
|
7
|
+
/* selectors & classes used in the javascript below */
|
8
|
+
|
9
|
+
_crawl_btn_selector: '.crawl_btns .f_crawl_action',
|
10
|
+
_crawl_btn_btn_selector: '.crawl_btns button',
|
11
|
+
_crawl_cancel_btn_selector: '.crawl_btns .f_crawl_action.f_cancel',
|
12
|
+
_crawling_urls_selector: '.crawling .urls',
|
13
|
+
_crawling_urls_li_selector: '.crawling .urls li',
|
14
|
+
_crawling_last_img_selector: '.crawling a.last_img',
|
15
|
+
_crawling_last_img_img_selector: '.crawling a.last_img img',
|
16
|
+
_crawling_no_diff_found_selector: '.crawling a.last_img .no_diff_found',
|
17
|
+
_crawling_diff_found_selector: '.crawling a.last_img .diff_found',
|
18
|
+
_crawl_btn_running_class: 'running',
|
19
|
+
|
20
|
+
_diff_or_no_diff_found_selector: '.diff_found, .no_diff_found',
|
21
|
+
_crawling_urls_active_selector: '.active',
|
22
|
+
_crawling_urls_active_class: 'active',
|
23
|
+
_no_diff_found_class: 'no_diff_found',
|
24
|
+
_diff_found_class: 'diff_found',
|
25
|
+
|
26
|
+
_checkbox_master_selector: "#f_checkall",
|
27
|
+
_checkbox_child_selector: ".f_checkall_child",
|
28
|
+
_checkbox_child_checked_selector: ".f_checkall_child:checked",
|
29
|
+
|
30
|
+
_element_db_id_selector: '.f_id',
|
31
|
+
_row_selector: '.screenshots tbody tr',
|
32
|
+
_diffs_row_selector: '.screenshots.diffs tbody tr',
|
33
|
+
_row_checkbox_not_checked_selector: 'td:first input[type=checkbox]:not(:checked)',
|
34
|
+
|
35
|
+
_action_btn_selector: ".f_actions button",
|
36
|
+
_action_remove_selector: ".f_actions .f_remove",
|
37
|
+
_action_remove_test_and_diff_selector: ".f_actions .f_remove_test_and_diff",
|
38
|
+
_action_ignore_selector: ".f_actions .f_ignore",
|
39
|
+
_action_set_test_as_control_selector: ".f_actions .f_set_test_as_control",
|
40
|
+
|
41
|
+
_action_remove_all_diffs_and_tests_selector: ".f_bulk_actions .f_remove_all_diffs_and_tests",
|
42
|
+
_action_remove_all_selector: ".f_bulk_actions .f_remove_all",
|
43
|
+
_action_ignore_all_selector: ".f_bulk_actions .f_ignore_all_urls",
|
44
|
+
_action_set_all_tests_as_control_selector: ".f_bulk_actions .f_set_all_tests_as_control",
|
45
|
+
|
46
|
+
_on_homepage_selector: '.f_on_home_page',
|
47
|
+
|
48
|
+
_sidenav_diffs_count_selector: '.f_sidenav_diffs span:last',
|
49
|
+
_sidenav_controls_count_selector: '.f_sidenav_controls span:last',
|
50
|
+
_sidenav_tests_count_selector: '.f_sidenav_tests span:last',
|
51
|
+
_sidenav_compares_count_selector: '.f_sidenav_compares span:last',
|
52
|
+
|
53
|
+
/* url selectors */
|
54
|
+
_action_set_test_as_control_url_selector: '.f_set_test_as_control_url',
|
55
|
+
_remove_url_selector: '.f_remove_url',
|
56
|
+
_diffs_url_selector: '.f_diff_url',
|
57
|
+
|
58
|
+
/* urls */
|
59
|
+
_url_add_ignore: "/ui_changed/screenshot_ignore_urls/add?id=",
|
60
|
+
_url_crawl_status: "screenshots/crawl_status.json",
|
61
|
+
|
62
|
+
_init: function() {
|
63
|
+
if(this._initialized) return;
|
64
|
+
|
65
|
+
$(this._crawl_btn_selector).not(this._crawl_cancel_btn_selector).click(this._crawl_btns_clicked);
|
66
|
+
$(this._crawl_cancel_btn_selector).click(this._crawl_btn_cancel_clicked);
|
67
|
+
$(this._crawling_urls_selector).on('click', 'li:not(' + this._crawling_urls_active_selector + ')', this._crawling_urls_clicked);
|
68
|
+
|
69
|
+
$(this._checkbox_master_selector).change(this._checkall_master_change);
|
70
|
+
$(this._checkbox_child_selector).change(this._checkall_child_change);
|
71
|
+
$(this._diffs_row_selector).click(this._diffs_row_clicked);
|
72
|
+
|
73
|
+
$(this._action_remove_selector).click(this._actions_remove);
|
74
|
+
$(this._action_remove_test_and_diff_selector).click(this._actions_remove_test_and_diff);
|
75
|
+
$(this._action_ignore_selector).click(this._actions_ignore);
|
76
|
+
$(this._action_set_test_as_control_selector).click(this._actions_set_test_as_control);
|
77
|
+
|
78
|
+
$(this._action_remove_all_diffs_and_tests_selector).click(this._bulk_actions_remove_all_diffs_and_tests);
|
79
|
+
$(this._action_remove_all_selector).click(this._bulk_actions_remove_all);
|
80
|
+
$(this._action_ignore_all_selector).click(this._bulk_actions_ignore_all_urls);
|
81
|
+
$(this._action_set_all_tests_as_control_selector).click(this._bulk_actions_set_all_tests_as_control);
|
82
|
+
|
83
|
+
if ($(this._crawl_cancel_btn_selector).is(':visible')) $(this._crawl_btn_btn_selector).not(this._crawl_cancel_btn_selector).attr("disabled", "disabled");
|
84
|
+
|
85
|
+
if ($(this._on_homepage_selector).val() === "true") this._update_crawl_status();
|
86
|
+
|
87
|
+
this._disable_action_buttons();
|
88
|
+
this._initialized = true;
|
89
|
+
},
|
90
|
+
|
91
|
+
/* individual actions */
|
92
|
+
_actions_remove: function() {
|
93
|
+
UiChanged._ajax_with_type($(UiChanged._remove_url_selector).val() + UiChanged._get_checked_ids(), "DELETE");
|
94
|
+
},
|
95
|
+
_actions_remove_test_and_diff: function() {
|
96
|
+
UiChanged._ajax_with_type($(this).attr("data-href") + "?id=" + UiChanged._get_checked_ids(), "DELETE");
|
97
|
+
},
|
98
|
+
_actions_ignore: function() {
|
99
|
+
UiChanged._ajax_with_type(UiChanged._url_add_ignore + UiChanged._get_checked_ids(), "POST");
|
100
|
+
},
|
101
|
+
_actions_set_test_as_control: function() {
|
102
|
+
UiChanged._ajax_with_type($(UiChanged._action_set_test_as_control_url_selector).val() + '?id=' + UiChanged._get_checked_ids(), "POST");
|
103
|
+
},
|
104
|
+
|
105
|
+
/* bulk actions */
|
106
|
+
_bulk_actions_remove_all_diffs_and_tests: function() {
|
107
|
+
UiChanged._ajax_with_type($(this).attr("data-href"), "DELETE");
|
108
|
+
},
|
109
|
+
_bulk_actions_remove_all: function() {
|
110
|
+
UiChanged._ajax_with_type($(this).attr("data-href"), "DELETE");
|
111
|
+
},
|
112
|
+
_bulk_actions_ignore_all_urls: function() {
|
113
|
+
UiChanged._ajax_with_type($(this).attr("data-href"), "POST");
|
114
|
+
},
|
115
|
+
_bulk_actions_set_all_tests_as_control: function() {
|
116
|
+
UiChanged._ajax_with_type($(this).attr("data-href"), "POST");
|
117
|
+
},
|
118
|
+
|
119
|
+
_crawl_btns_clicked: function() {
|
120
|
+
$(UiChanged._crawl_btn_btn_selector).not(UiChanged._crawl_cancel_btn_selector).attr("disabled", "disabled");
|
121
|
+
$(UiChanged._crawl_cancel_btn_selector).show();
|
122
|
+
|
123
|
+
$.ajax({
|
124
|
+
url: $(this).attr('data-action'),
|
125
|
+
type: 'POST',
|
126
|
+
success: function(data) {
|
127
|
+
$(UiChanged._crawling_urls_li_selector).remove();
|
128
|
+
UiChanged._update_crawl_status();
|
129
|
+
}
|
130
|
+
});
|
131
|
+
},
|
132
|
+
|
133
|
+
_crawl_btn_cancel_clicked: function() {
|
134
|
+
$(this).attr("disabled", "disabled");
|
135
|
+
$.ajax({
|
136
|
+
url: $(this).attr('data-action'),
|
137
|
+
type: 'POST'
|
138
|
+
});
|
139
|
+
},
|
140
|
+
|
141
|
+
_crawling_urls_clicked: function() {
|
142
|
+
var elem = $(this);
|
143
|
+
if (elem.prev().length === 0) {
|
144
|
+
// reset our boolean
|
145
|
+
UiChanged._clicked_urls_row = false;
|
146
|
+
$(UiChanged._crawling_urls_li_selector).removeClass(UiChanged._crawling_urls_active_class);
|
147
|
+
elem.addClass(UiChanged._crawling_urls_active_class);
|
148
|
+
} else {
|
149
|
+
UiChanged._clicked_urls_row = true;
|
150
|
+
}
|
151
|
+
|
152
|
+
var anchor = elem.find('a');
|
153
|
+
if (typeof anchor.attr('data-alt') === 'undefined') return;
|
154
|
+
$(UiChanged._crawling_urls_li_selector).removeClass(UiChanged._crawling_urls_active_class);
|
155
|
+
elem.addClass(UiChanged._crawling_urls_active_class);
|
156
|
+
|
157
|
+
var is_compare = anchor.find(UiChanged._diff_or_no_diff_found_selector).length === 1;
|
158
|
+
var diff_found = anchor.find(UiChanged._diff_found_class).length === 1;
|
159
|
+
|
160
|
+
UiChanged._add_crawl_image_with_src({
|
161
|
+
'file_name': anchor.attr('data-alt'),
|
162
|
+
'src':anchor.attr('data-src'),
|
163
|
+
'crawl_url': anchor.attr('href'),
|
164
|
+
'is_compare': is_compare,
|
165
|
+
'diff_found': diff_found});
|
166
|
+
},
|
167
|
+
|
168
|
+
_update_crawl_status: function() {
|
169
|
+
$.ajax({
|
170
|
+
dataType: "json",
|
171
|
+
url: UiChanged._url_crawl_status,
|
172
|
+
success: function(data) {
|
173
|
+
var screenshots = data[0].screenshots;
|
174
|
+
var running_status = data[0].worker.running_status;
|
175
|
+
var first_status = data[0].worker.first_status;
|
176
|
+
var running_type = data[0].worker.running_type;
|
177
|
+
$(UiChanged._crawl_btn_selector).removeClass(UiChanged._crawl_btn_running_class);
|
178
|
+
$(UiChanged._crawl_btn_with_type(running_type)).addClass(UiChanged._crawl_btn_running_class);
|
179
|
+
$(UiChanged._crawling_last_img_img_selector).removeAttr("src");
|
180
|
+
$(UiChanged._crawling_last_img_img_selector).removeAttr("alt");
|
181
|
+
|
182
|
+
$(UiChanged._sidenav_diffs_count_selector).text(data[0].counts.diff);
|
183
|
+
$(UiChanged._sidenav_controls_count_selector).text(data[0].counts.control);
|
184
|
+
$(UiChanged._sidenav_tests_count_selector).text(data[0].counts.test);
|
185
|
+
$(UiChanged._sidenav_compares_count_selector).text(data[0].counts.compare);
|
186
|
+
|
187
|
+
for (var i=0; i < screenshots.length; i++) {
|
188
|
+
UiChanged._add_crawl_url(screenshots[i]);
|
189
|
+
}
|
190
|
+
if (screenshots.length > 0 && !UiChanged._clicked_urls_row) {
|
191
|
+
/* if the user isn't looking at other rows, then show the most recent image */
|
192
|
+
UiChanged._show_top_most_image();
|
193
|
+
}
|
194
|
+
|
195
|
+
// $('.cmd_status_msg').text('running: ' + running_status + ' first: ' + first_status);
|
196
|
+
clearInterval(UiChanged._crawlStatusIntervalId);
|
197
|
+
if (running_status === "working" || (first_status === "working" || first_status === "queued")) {
|
198
|
+
UiChanged._crawlStatusIntervalId = setInterval(UiChanged._update_crawl_status, 3000);
|
199
|
+
return;
|
200
|
+
}
|
201
|
+
$(UiChanged._crawl_btn_btn_selector).removeAttr("disabled");
|
202
|
+
$(UiChanged._crawl_cancel_btn_selector).hide();
|
203
|
+
}
|
204
|
+
});
|
205
|
+
},
|
206
|
+
|
207
|
+
_show_top_most_image: function() {
|
208
|
+
$(UiChanged._crawling_urls_li_selector).each(function() {
|
209
|
+
var elem = $(this);
|
210
|
+
var anchor = elem.find('a');
|
211
|
+
if (anchor.hasClass(UiChanged._crawling_urls_active_class)) return;
|
212
|
+
var src = anchor.attr('data-src');
|
213
|
+
if (typeof src !== 'undefined') {
|
214
|
+
UiChanged._add_crawl_image_with_src({
|
215
|
+
'file_name': anchor.attr('data-alt'),
|
216
|
+
'src': src,
|
217
|
+
'crawl_url': anchor.attr('data-href'),
|
218
|
+
'is_compare': anchor.attr('data-type') === 'compare',
|
219
|
+
'diff_found': anchor.find('i').hasClass(UiChanged._diff_found_class)});
|
220
|
+
return false;
|
221
|
+
}
|
222
|
+
});
|
223
|
+
},
|
224
|
+
|
225
|
+
_add_crawl_url: function(screenshot) {
|
226
|
+
if (screenshot.url === null) return;
|
227
|
+
|
228
|
+
if ($(UiChanged._crawling_urls_li_selector).length > 100) {
|
229
|
+
$(UiChanged._crawling_urls_selector).empty();
|
230
|
+
}
|
231
|
+
|
232
|
+
var type = "test";
|
233
|
+
var diff_class = "";
|
234
|
+
if (screenshot.is_control === true) {
|
235
|
+
type = "control";
|
236
|
+
} else if (screenshot.is_compare === true) {
|
237
|
+
diff_class = screenshot.diff_found === true ? UiChanged._diff_found_class : UiChanged._no_diff_found_class;
|
238
|
+
diff_class = " " + diff_class;
|
239
|
+
type = "compare";
|
240
|
+
}
|
241
|
+
|
242
|
+
var file_name = screenshot.image_file_name;
|
243
|
+
var src;
|
244
|
+
var icon_class;
|
245
|
+
if (file_name !== null) {
|
246
|
+
src = screenshot.displayable_image_path_full;
|
247
|
+
icon_class = 'icon-picture' + diff_class;
|
248
|
+
} else {
|
249
|
+
icon_class = 'icon-';
|
250
|
+
}
|
251
|
+
|
252
|
+
var existing_selector = UiChanged._crawling_url_with_href_and_type(screenshot.url, type);
|
253
|
+
var existing = $(existing_selector);
|
254
|
+
if (existing.length === 0) {
|
255
|
+
$(UiChanged._crawling_urls_selector).prepend('<li><a data-type="' + type + '" data-href="' + screenshot.url + '"><i></i><span>' + type + ' : ' + screenshot.url + '</span></a></li>');
|
256
|
+
existing = $(existing_selector);
|
257
|
+
}
|
258
|
+
if (typeof existing.attr('data-alt') === 'undefined' && src !== null) {
|
259
|
+
existing.find('i').attr('class', icon_class);
|
260
|
+
existing.attr('data-alt', file_name);
|
261
|
+
existing.attr('data-src', src);
|
262
|
+
}
|
263
|
+
},
|
264
|
+
|
265
|
+
_add_crawl_image_with_src: function(params) {
|
266
|
+
// don't replace the image with itself
|
267
|
+
var existing_img = $(UiChanged._crawling_last_img_img_selector + '[src="' + params.src + '"]').length;
|
268
|
+
if (existing_img > 0) return;
|
269
|
+
|
270
|
+
if (params.is_compare) {
|
271
|
+
if (params.diff_found === null || params.diff_found === false) {
|
272
|
+
$(UiChanged._crawling_no_diff_found_selector).show();
|
273
|
+
$(UiChanged._crawling_diff_found_selector).hide();
|
274
|
+
$(UiChanged._crawling_last_img_img_selector).hide();
|
275
|
+
} else {
|
276
|
+
$(UiChanged._crawling_no_diff_found_selector).hide();
|
277
|
+
$(UiChanged._crawling_diff_found_selector).show();
|
278
|
+
$(UiChanged._crawling_last_img_img_selector).show();
|
279
|
+
}
|
280
|
+
} else {
|
281
|
+
$(UiChanged._crawling_no_diff_found_selector).hide();
|
282
|
+
$(UiChanged._crawling_diff_found_selector).hide();
|
283
|
+
$(UiChanged._crawling_last_img_img_selector).show();
|
284
|
+
}
|
285
|
+
$(UiChanged._crawling_last_img_selector).attr('href', params.src);
|
286
|
+
$(UiChanged._crawling_last_img_img_selector).attr('alt', params.file_name);
|
287
|
+
$(UiChanged._crawling_last_img_img_selector).attr('src', params.src);
|
288
|
+
|
289
|
+
if (UiChanged._clicked_urls_row) return;
|
290
|
+
$(UiChanged._crawling_urls_li_selector).removeClass(UiChanged._crawling_urls_active_class);
|
291
|
+
$(UiChanged._crawling_url_with_href(params.crawl_url)).parent('li').addClass(UiChanged._crawling_urls_active_class);
|
292
|
+
},
|
293
|
+
|
294
|
+
_checkall_master_change: function() {
|
295
|
+
$(UiChanged._checkbox_child_selector).prop("checked", this.checked);
|
296
|
+
UiChanged._disable_action_buttons();
|
297
|
+
},
|
298
|
+
_checkall_child_change: function() {
|
299
|
+
$(UiChanged._checkbox_master_selector).prop("checked", $(UiChanged._checkbox_child_checked_selector).length == $(UiChanged._checkbox_child_selector).length);
|
300
|
+
UiChanged._disable_action_buttons();
|
301
|
+
},
|
302
|
+
_diffs_row_clicked: function(e) {
|
303
|
+
if (e.target.type === 'checkbox') return;
|
304
|
+
document.location = $(this).find(UiChanged._diffs_url_selector).val();
|
305
|
+
},
|
306
|
+
|
307
|
+
_disable_action_buttons: function() {
|
308
|
+
$(UiChanged._action_btn_selector).attr("disabled", $(UiChanged._checkbox_child_checked_selector).length === 0);
|
309
|
+
},
|
310
|
+
_ajax_with_type: function(url, type) {
|
311
|
+
$.ajax({
|
312
|
+
url: url,
|
313
|
+
type: type,
|
314
|
+
success: function() {
|
315
|
+
location.reload();
|
316
|
+
}
|
317
|
+
});
|
318
|
+
},
|
319
|
+
_get_checked_ids: function() {
|
320
|
+
var ids_array = [];
|
321
|
+
$(UiChanged._row_selector).each(function() {
|
322
|
+
var row = $(this);
|
323
|
+
if (!row.find(UiChanged._row_checkbox_not_checked_selector).length) {
|
324
|
+
var diff_id = row.find(UiChanged._element_db_id_selector).first().val();
|
325
|
+
ids_array.push(diff_id);
|
326
|
+
}
|
327
|
+
});
|
328
|
+
return ids_array.join(",");
|
329
|
+
},
|
330
|
+
_crawl_btn_with_type: function(type) {
|
331
|
+
return UiChanged._crawl_btn_selector + '[data-type="' + type + '"]';
|
332
|
+
},
|
333
|
+
_crawling_url_with_href: function(href) {
|
334
|
+
return UiChanged._crawling_urls_li_selector + ' a[data-href="' + href +'"]';
|
335
|
+
},
|
336
|
+
_crawling_url_with_href_and_type: function(href, data_type) {
|
337
|
+
return UiChanged._crawling_urls_li_selector + ' a[data-href="' + href + '"][data-type="' + data_type + '"]';
|
338
|
+
}
|
339
|
+
};
|
340
|
+
}
|
341
|
+
|
342
|
+
$(function() {
|
343
|
+
UiChanged._init();
|
344
|
+
});
|
@@ -6,6 +6,7 @@ body {margin-top: 40px;}
|
|
6
6
|
|
7
7
|
.crawl_btns .running {border: 3px solid red;}
|
8
8
|
|
9
|
+
.diff_screenshots > div:first-child {margin-left: 0;}
|
9
10
|
.diff_screenshots img, table.screenshots tbody tr td img {border: 1px solid #ccc; padding: 2px;}
|
10
11
|
.diff_screenshots img:hover, table.screenshots tbody tr td img:hover {border: 1px solid #000;}
|
11
12
|
.diffs tbody tr {cursor: pointer;}
|
@@ -1,7 +1,7 @@
|
|
1
1
|
module UiChanged
|
2
2
|
class ConfigHelper
|
3
3
|
MTC_CONFIG.each do |config|
|
4
|
-
# set the path
|
4
|
+
# set the path to inside our spec/dummy directory for control_path, test_path, and compare_path if running tests
|
5
5
|
if Rails.env.test? && config[0].end_with?("_path")
|
6
6
|
define_singleton_method config[0], lambda { "#{Rails.root}/#{config[1]}" }
|
7
7
|
else
|
@@ -16,7 +16,7 @@
|
|
16
16
|
-@all_screenshots.each do |screenshots|
|
17
17
|
%tr
|
18
18
|
%input.f_id{:type => "hidden", :value => screenshots.diff_ss.id}
|
19
|
-
%input.
|
19
|
+
%input.f_diff_url{:type => "hidden", :value => screenshot_diff_path + "?diff_id=#{screenshots.diff_ss.id}"}
|
20
20
|
%td
|
21
21
|
%input.f_checkall_child{:type => "checkbox"}
|
22
22
|
%td
|
data/lib/ui_changed/railtie.rb
CHANGED
data/lib/ui_changed/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ui_changed
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.2
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -13,7 +13,7 @@ date: 2013-02-03 00:00:00.000000000 Z
|
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rails
|
16
|
-
requirement:
|
16
|
+
requirement: !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ~>
|
@@ -21,10 +21,15 @@ dependencies:
|
|
21
21
|
version: 3.2.11
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
|
-
version_requirements:
|
24
|
+
version_requirements: !ruby/object:Gem::Requirement
|
25
|
+
none: false
|
26
|
+
requirements:
|
27
|
+
- - ~>
|
28
|
+
- !ruby/object:Gem::Version
|
29
|
+
version: 3.2.11
|
25
30
|
- !ruby/object:Gem::Dependency
|
26
31
|
name: bootstrap-sass
|
27
|
-
requirement:
|
32
|
+
requirement: !ruby/object:Gem::Requirement
|
28
33
|
none: false
|
29
34
|
requirements:
|
30
35
|
- - ! '>='
|
@@ -32,10 +37,15 @@ dependencies:
|
|
32
37
|
version: '0'
|
33
38
|
type: :runtime
|
34
39
|
prerelease: false
|
35
|
-
version_requirements:
|
40
|
+
version_requirements: !ruby/object:Gem::Requirement
|
41
|
+
none: false
|
42
|
+
requirements:
|
43
|
+
- - ! '>='
|
44
|
+
- !ruby/object:Gem::Version
|
45
|
+
version: '0'
|
36
46
|
- !ruby/object:Gem::Dependency
|
37
47
|
name: will_paginate
|
38
|
-
requirement:
|
48
|
+
requirement: !ruby/object:Gem::Requirement
|
39
49
|
none: false
|
40
50
|
requirements:
|
41
51
|
- - ! '>='
|
@@ -43,10 +53,15 @@ dependencies:
|
|
43
53
|
version: '0'
|
44
54
|
type: :runtime
|
45
55
|
prerelease: false
|
46
|
-
version_requirements:
|
56
|
+
version_requirements: !ruby/object:Gem::Requirement
|
57
|
+
none: false
|
58
|
+
requirements:
|
59
|
+
- - ! '>='
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '0'
|
47
62
|
- !ruby/object:Gem::Dependency
|
48
63
|
name: bootstrap-will_paginate
|
49
|
-
requirement:
|
64
|
+
requirement: !ruby/object:Gem::Requirement
|
50
65
|
none: false
|
51
66
|
requirements:
|
52
67
|
- - ! '>='
|
@@ -54,10 +69,15 @@ dependencies:
|
|
54
69
|
version: '0'
|
55
70
|
type: :runtime
|
56
71
|
prerelease: false
|
57
|
-
version_requirements:
|
72
|
+
version_requirements: !ruby/object:Gem::Requirement
|
73
|
+
none: false
|
74
|
+
requirements:
|
75
|
+
- - ! '>='
|
76
|
+
- !ruby/object:Gem::Version
|
77
|
+
version: '0'
|
58
78
|
- !ruby/object:Gem::Dependency
|
59
79
|
name: haml-rails
|
60
|
-
requirement:
|
80
|
+
requirement: !ruby/object:Gem::Requirement
|
61
81
|
none: false
|
62
82
|
requirements:
|
63
83
|
- - ! '>='
|
@@ -65,10 +85,15 @@ dependencies:
|
|
65
85
|
version: '0'
|
66
86
|
type: :runtime
|
67
87
|
prerelease: false
|
68
|
-
version_requirements:
|
88
|
+
version_requirements: !ruby/object:Gem::Requirement
|
89
|
+
none: false
|
90
|
+
requirements:
|
91
|
+
- - ! '>='
|
92
|
+
- !ruby/object:Gem::Version
|
93
|
+
version: '0'
|
69
94
|
- !ruby/object:Gem::Dependency
|
70
95
|
name: anemone
|
71
|
-
requirement:
|
96
|
+
requirement: !ruby/object:Gem::Requirement
|
72
97
|
none: false
|
73
98
|
requirements:
|
74
99
|
- - ! '>='
|
@@ -76,10 +101,15 @@ dependencies:
|
|
76
101
|
version: '0'
|
77
102
|
type: :runtime
|
78
103
|
prerelease: false
|
79
|
-
version_requirements:
|
104
|
+
version_requirements: !ruby/object:Gem::Requirement
|
105
|
+
none: false
|
106
|
+
requirements:
|
107
|
+
- - ! '>='
|
108
|
+
- !ruby/object:Gem::Version
|
109
|
+
version: '0'
|
80
110
|
- !ruby/object:Gem::Dependency
|
81
111
|
name: selenium-webdriver
|
82
|
-
requirement:
|
112
|
+
requirement: !ruby/object:Gem::Requirement
|
83
113
|
none: false
|
84
114
|
requirements:
|
85
115
|
- - ! '>='
|
@@ -87,10 +117,15 @@ dependencies:
|
|
87
117
|
version: '0'
|
88
118
|
type: :runtime
|
89
119
|
prerelease: false
|
90
|
-
version_requirements:
|
120
|
+
version_requirements: !ruby/object:Gem::Requirement
|
121
|
+
none: false
|
122
|
+
requirements:
|
123
|
+
- - ! '>='
|
124
|
+
- !ruby/object:Gem::Version
|
125
|
+
version: '0'
|
91
126
|
- !ruby/object:Gem::Dependency
|
92
127
|
name: jquery-rails
|
93
|
-
requirement:
|
128
|
+
requirement: !ruby/object:Gem::Requirement
|
94
129
|
none: false
|
95
130
|
requirements:
|
96
131
|
- - ! '>='
|
@@ -98,10 +133,15 @@ dependencies:
|
|
98
133
|
version: '0'
|
99
134
|
type: :runtime
|
100
135
|
prerelease: false
|
101
|
-
version_requirements:
|
136
|
+
version_requirements: !ruby/object:Gem::Requirement
|
137
|
+
none: false
|
138
|
+
requirements:
|
139
|
+
- - ! '>='
|
140
|
+
- !ruby/object:Gem::Version
|
141
|
+
version: '0'
|
102
142
|
- !ruby/object:Gem::Dependency
|
103
143
|
name: font-awesome-sass-rails
|
104
|
-
requirement:
|
144
|
+
requirement: !ruby/object:Gem::Requirement
|
105
145
|
none: false
|
106
146
|
requirements:
|
107
147
|
- - ! '>='
|
@@ -109,10 +149,15 @@ dependencies:
|
|
109
149
|
version: '0'
|
110
150
|
type: :runtime
|
111
151
|
prerelease: false
|
112
|
-
version_requirements:
|
152
|
+
version_requirements: !ruby/object:Gem::Requirement
|
153
|
+
none: false
|
154
|
+
requirements:
|
155
|
+
- - ! '>='
|
156
|
+
- !ruby/object:Gem::Version
|
157
|
+
version: '0'
|
113
158
|
- !ruby/object:Gem::Dependency
|
114
159
|
name: resque
|
115
|
-
requirement:
|
160
|
+
requirement: !ruby/object:Gem::Requirement
|
116
161
|
none: false
|
117
162
|
requirements:
|
118
163
|
- - ! '>='
|
@@ -120,10 +165,15 @@ dependencies:
|
|
120
165
|
version: '0'
|
121
166
|
type: :runtime
|
122
167
|
prerelease: false
|
123
|
-
version_requirements:
|
168
|
+
version_requirements: !ruby/object:Gem::Requirement
|
169
|
+
none: false
|
170
|
+
requirements:
|
171
|
+
- - ! '>='
|
172
|
+
- !ruby/object:Gem::Version
|
173
|
+
version: '0'
|
124
174
|
- !ruby/object:Gem::Dependency
|
125
175
|
name: resque_mailer
|
126
|
-
requirement:
|
176
|
+
requirement: !ruby/object:Gem::Requirement
|
127
177
|
none: false
|
128
178
|
requirements:
|
129
179
|
- - ! '>='
|
@@ -131,10 +181,15 @@ dependencies:
|
|
131
181
|
version: '0'
|
132
182
|
type: :runtime
|
133
183
|
prerelease: false
|
134
|
-
version_requirements:
|
184
|
+
version_requirements: !ruby/object:Gem::Requirement
|
185
|
+
none: false
|
186
|
+
requirements:
|
187
|
+
- - ! '>='
|
188
|
+
- !ruby/object:Gem::Version
|
189
|
+
version: '0'
|
135
190
|
- !ruby/object:Gem::Dependency
|
136
191
|
name: resque-status
|
137
|
-
requirement:
|
192
|
+
requirement: !ruby/object:Gem::Requirement
|
138
193
|
none: false
|
139
194
|
requirements:
|
140
195
|
- - ! '>='
|
@@ -142,10 +197,15 @@ dependencies:
|
|
142
197
|
version: '0'
|
143
198
|
type: :runtime
|
144
199
|
prerelease: false
|
145
|
-
version_requirements:
|
200
|
+
version_requirements: !ruby/object:Gem::Requirement
|
201
|
+
none: false
|
202
|
+
requirements:
|
203
|
+
- - ! '>='
|
204
|
+
- !ruby/object:Gem::Version
|
205
|
+
version: '0'
|
146
206
|
- !ruby/object:Gem::Dependency
|
147
207
|
name: sass-rails
|
148
|
-
requirement:
|
208
|
+
requirement: !ruby/object:Gem::Requirement
|
149
209
|
none: false
|
150
210
|
requirements:
|
151
211
|
- - ~>
|
@@ -153,10 +213,15 @@ dependencies:
|
|
153
213
|
version: 3.2.3
|
154
214
|
type: :development
|
155
215
|
prerelease: false
|
156
|
-
version_requirements:
|
216
|
+
version_requirements: !ruby/object:Gem::Requirement
|
217
|
+
none: false
|
218
|
+
requirements:
|
219
|
+
- - ~>
|
220
|
+
- !ruby/object:Gem::Version
|
221
|
+
version: 3.2.3
|
157
222
|
- !ruby/object:Gem::Dependency
|
158
223
|
name: rspec-rails
|
159
|
-
requirement:
|
224
|
+
requirement: !ruby/object:Gem::Requirement
|
160
225
|
none: false
|
161
226
|
requirements:
|
162
227
|
- - ! '>='
|
@@ -164,10 +229,15 @@ dependencies:
|
|
164
229
|
version: '0'
|
165
230
|
type: :development
|
166
231
|
prerelease: false
|
167
|
-
version_requirements:
|
232
|
+
version_requirements: !ruby/object:Gem::Requirement
|
233
|
+
none: false
|
234
|
+
requirements:
|
235
|
+
- - ! '>='
|
236
|
+
- !ruby/object:Gem::Version
|
237
|
+
version: '0'
|
168
238
|
- !ruby/object:Gem::Dependency
|
169
239
|
name: capybara
|
170
|
-
requirement:
|
240
|
+
requirement: !ruby/object:Gem::Requirement
|
171
241
|
none: false
|
172
242
|
requirements:
|
173
243
|
- - ! '>='
|
@@ -175,10 +245,15 @@ dependencies:
|
|
175
245
|
version: '0'
|
176
246
|
type: :development
|
177
247
|
prerelease: false
|
178
|
-
version_requirements:
|
248
|
+
version_requirements: !ruby/object:Gem::Requirement
|
249
|
+
none: false
|
250
|
+
requirements:
|
251
|
+
- - ! '>='
|
252
|
+
- !ruby/object:Gem::Version
|
253
|
+
version: '0'
|
179
254
|
- !ruby/object:Gem::Dependency
|
180
255
|
name: capybara-webkit
|
181
|
-
requirement:
|
256
|
+
requirement: !ruby/object:Gem::Requirement
|
182
257
|
none: false
|
183
258
|
requirements:
|
184
259
|
- - ! '>='
|
@@ -186,10 +261,15 @@ dependencies:
|
|
186
261
|
version: '0'
|
187
262
|
type: :development
|
188
263
|
prerelease: false
|
189
|
-
version_requirements:
|
264
|
+
version_requirements: !ruby/object:Gem::Requirement
|
265
|
+
none: false
|
266
|
+
requirements:
|
267
|
+
- - ! '>='
|
268
|
+
- !ruby/object:Gem::Version
|
269
|
+
version: '0'
|
190
270
|
- !ruby/object:Gem::Dependency
|
191
271
|
name: database_cleaner
|
192
|
-
requirement:
|
272
|
+
requirement: !ruby/object:Gem::Requirement
|
193
273
|
none: false
|
194
274
|
requirements:
|
195
275
|
- - ! '>='
|
@@ -197,10 +277,15 @@ dependencies:
|
|
197
277
|
version: '0'
|
198
278
|
type: :development
|
199
279
|
prerelease: false
|
200
|
-
version_requirements:
|
280
|
+
version_requirements: !ruby/object:Gem::Requirement
|
281
|
+
none: false
|
282
|
+
requirements:
|
283
|
+
- - ! '>='
|
284
|
+
- !ruby/object:Gem::Version
|
285
|
+
version: '0'
|
201
286
|
- !ruby/object:Gem::Dependency
|
202
287
|
name: factory_girl_rails
|
203
|
-
requirement:
|
288
|
+
requirement: !ruby/object:Gem::Requirement
|
204
289
|
none: false
|
205
290
|
requirements:
|
206
291
|
- - ! '>='
|
@@ -208,10 +293,15 @@ dependencies:
|
|
208
293
|
version: '0'
|
209
294
|
type: :development
|
210
295
|
prerelease: false
|
211
|
-
version_requirements:
|
296
|
+
version_requirements: !ruby/object:Gem::Requirement
|
297
|
+
none: false
|
298
|
+
requirements:
|
299
|
+
- - ! '>='
|
300
|
+
- !ruby/object:Gem::Version
|
301
|
+
version: '0'
|
212
302
|
- !ruby/object:Gem::Dependency
|
213
303
|
name: mysql2
|
214
|
-
requirement:
|
304
|
+
requirement: !ruby/object:Gem::Requirement
|
215
305
|
none: false
|
216
306
|
requirements:
|
217
307
|
- - ! '>='
|
@@ -219,10 +309,15 @@ dependencies:
|
|
219
309
|
version: '0'
|
220
310
|
type: :development
|
221
311
|
prerelease: false
|
222
|
-
version_requirements:
|
312
|
+
version_requirements: !ruby/object:Gem::Requirement
|
313
|
+
none: false
|
314
|
+
requirements:
|
315
|
+
- - ! '>='
|
316
|
+
- !ruby/object:Gem::Version
|
317
|
+
version: '0'
|
223
318
|
- !ruby/object:Gem::Dependency
|
224
319
|
name: debugger
|
225
|
-
requirement:
|
320
|
+
requirement: !ruby/object:Gem::Requirement
|
226
321
|
none: false
|
227
322
|
requirements:
|
228
323
|
- - ! '>='
|
@@ -230,7 +325,12 @@ dependencies:
|
|
230
325
|
version: '0'
|
231
326
|
type: :development
|
232
327
|
prerelease: false
|
233
|
-
version_requirements:
|
328
|
+
version_requirements: !ruby/object:Gem::Requirement
|
329
|
+
none: false
|
330
|
+
requirements:
|
331
|
+
- - ! '>='
|
332
|
+
- !ruby/object:Gem::Version
|
333
|
+
version: '0'
|
234
334
|
description: Rails plugin for crawling domains for detecting differences in the UI
|
235
335
|
email:
|
236
336
|
- adelegard@gmail.com
|
@@ -239,18 +339,15 @@ extensions: []
|
|
239
339
|
extra_rdoc_files: []
|
240
340
|
files:
|
241
341
|
- app/assets/javascripts/ui_changed/application.js
|
242
|
-
- app/assets/javascripts/ui_changed/
|
342
|
+
- app/assets/javascripts/ui_changed/ui_changed.js
|
243
343
|
- app/assets/stylesheets/scaffold.css
|
244
344
|
- app/assets/stylesheets/ui_changed/application.css.scss
|
245
|
-
- app/assets/stylesheets/ui_changed/
|
246
|
-
- app/assets/stylesheets/ui_changed/screenshots.css
|
345
|
+
- app/assets/stylesheets/ui_changed/ui_changed.css
|
247
346
|
- app/controllers/ui_changed/application_controller.rb
|
248
347
|
- app/controllers/ui_changed/screenshot_ignore_urls_controller.rb
|
249
348
|
- app/controllers/ui_changed/screenshots_controller.rb
|
250
349
|
- app/controllers/ui_changed/screenshots_controller_base.rb
|
251
350
|
- app/helpers/ui_changed/application_helper.rb
|
252
|
-
- app/helpers/ui_changed/screenshot_ignore_urls_helper.rb
|
253
|
-
- app/helpers/ui_changed/screenshots_helper.rb
|
254
351
|
- app/mailers/ui_changed/notifications_mailer.rb
|
255
352
|
- app/models/ui_changed/all_screenshot.rb
|
256
353
|
- app/models/ui_changed/config_helper.rb
|
@@ -451,7 +548,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
451
548
|
version: '0'
|
452
549
|
requirements: []
|
453
550
|
rubyforge_project:
|
454
|
-
rubygems_version: 1.8.
|
551
|
+
rubygems_version: 1.8.25
|
455
552
|
signing_key:
|
456
553
|
specification_version: 3
|
457
554
|
summary: Rails plugin for crawling domains for detecting differences in the UI
|
@@ -1,280 +0,0 @@
|
|
1
|
-
if (typeof(Screenshots) === 'undefined') {
|
2
|
-
Screenshots = {
|
3
|
-
_initialized: false,
|
4
|
-
_clicked_urls_row: false,
|
5
|
-
_crawlStatusIntervalId: null,
|
6
|
-
|
7
|
-
_init: function() {
|
8
|
-
if(this._initialized) return;
|
9
|
-
|
10
|
-
$('.crawl_btns .f_crawl_action').not('.f_cancel').click(this._crawl_btns_clicked);
|
11
|
-
$('.crawl_btns .f_crawl_action.f_cancel').click(this._crawl_btn_cancel_clicked);
|
12
|
-
$('.crawling .urls').on('click', 'li:not(.active)', this._crawling_urls_clicked);
|
13
|
-
|
14
|
-
$("#f_checkall").change(this._checkall_master_change);
|
15
|
-
$(".f_checkall_child").change(this._checkall_child_change);
|
16
|
-
$('table.screenshots.diffs tbody tr').click(this._diffs_row_clicked);
|
17
|
-
|
18
|
-
$(".f_actions .f_remove").click(this._actions_remove);
|
19
|
-
$(".f_actions .f_remove_test_and_diff").click(this._actions_remove_test_and_diff);
|
20
|
-
$(".f_actions .f_ignore").click(this._actions_ignore);
|
21
|
-
$(".f_actions .f_set_test_as_control").click(this._actions_set_test_as_control);
|
22
|
-
|
23
|
-
$(".f_bulk_actions .f_remove_all_diffs_and_tests").click(this._bulk_actions_remove_all_diffs_and_tests);
|
24
|
-
$(".f_bulk_actions .f_remove_all").click(this._bulk_actions_remove_all);
|
25
|
-
$(".f_bulk_actions .f_ignore_all_urls").click(this._bulk_actions_ignore_all_urls);
|
26
|
-
$(".f_bulk_actions .f_set_all_tests_as_control").click(this._bulk_actions_set_all_tests_as_control);
|
27
|
-
|
28
|
-
if ($('.f_cancel').is(':visible')) $('.crawl_btns button').not('.f_cancel').attr("disabled", "disabled");
|
29
|
-
|
30
|
-
if ($('.f_on_home_page').val() === "true") this._update_crawl_status();
|
31
|
-
|
32
|
-
this._disable_action_buttons();
|
33
|
-
this._initialized = true;
|
34
|
-
},
|
35
|
-
|
36
|
-
/* individual actions */
|
37
|
-
_actions_remove: function() {
|
38
|
-
Screenshots._ajax_with_type($('.f_remove_url').val() + Screenshots._get_checked_ids(), "DELETE");
|
39
|
-
},
|
40
|
-
_actions_remove_test_and_diff: function() {
|
41
|
-
Screenshots._ajax_with_type($(this).attr("data-href") + "?id=" + Screenshots._get_checked_ids(), "DELETE");
|
42
|
-
},
|
43
|
-
_actions_ignore: function() {
|
44
|
-
Screenshots._ajax_with_type("/ui_changed/screenshot_ignore_urls/add?id=" + Screenshots._get_checked_ids(), "POST");
|
45
|
-
},
|
46
|
-
_actions_set_test_as_control: function() {
|
47
|
-
Screenshots._ajax_with_type($('.f_set_test_as_control_url').val() + '?id=' + Screenshots._get_checked_ids(), "POST");
|
48
|
-
},
|
49
|
-
|
50
|
-
/* bulk actions */
|
51
|
-
_bulk_actions_remove_all_diffs_and_tests: function() {
|
52
|
-
Screenshots._ajax_with_type($(this).attr("data-href"), "DELETE");
|
53
|
-
},
|
54
|
-
_bulk_actions_remove_all: function() {
|
55
|
-
Screenshots._ajax_with_type($(this).attr("data-href"), "DELETE");
|
56
|
-
},
|
57
|
-
_bulk_actions_ignore_all_urls: function() {
|
58
|
-
Screenshots._ajax_with_type($(this).attr("data-href"), "POST");
|
59
|
-
},
|
60
|
-
_bulk_actions_set_all_tests_as_control: function() {
|
61
|
-
Screenshots._ajax_with_type($(this).attr("data-href"), "POST");
|
62
|
-
},
|
63
|
-
|
64
|
-
_crawl_btns_clicked: function() {
|
65
|
-
$('.crawl_btns button').not('.f_cancel').attr("disabled", "disabled");
|
66
|
-
$('.crawl_btns .f_cancel').show();
|
67
|
-
|
68
|
-
$.ajax({
|
69
|
-
url: $(this).attr('data-action'),
|
70
|
-
type: 'POST',
|
71
|
-
success: function(data) {
|
72
|
-
$('.crawling .urls li').remove();
|
73
|
-
Screenshots._update_crawl_status();
|
74
|
-
}
|
75
|
-
});
|
76
|
-
},
|
77
|
-
|
78
|
-
_crawl_btn_cancel_clicked: function() {
|
79
|
-
$(this).attr("disabled", "disabled");
|
80
|
-
$.ajax({
|
81
|
-
url: $(this).attr('data-action'),
|
82
|
-
type: 'POST'
|
83
|
-
});
|
84
|
-
},
|
85
|
-
|
86
|
-
_crawling_urls_clicked: function() {
|
87
|
-
var elem = $(this);
|
88
|
-
if (elem.prev().length === 0) {
|
89
|
-
// reset our boolean
|
90
|
-
Screenshots._clicked_urls_row = false;
|
91
|
-
$('.crawling .urls li').removeClass('active');
|
92
|
-
elem.addClass('active');
|
93
|
-
} else {
|
94
|
-
Screenshots._clicked_urls_row = true;
|
95
|
-
}
|
96
|
-
|
97
|
-
var anchor = elem.find('a');
|
98
|
-
if (typeof anchor.attr('data-alt') === 'undefined') return;
|
99
|
-
$('.crawling .urls li').removeClass('active');
|
100
|
-
elem.addClass('active');
|
101
|
-
|
102
|
-
var is_compare = anchor.find('i.diff_found, i.no_diff_found').length === 1;
|
103
|
-
var diff_found = anchor.find('i.diff_found').length === 1;
|
104
|
-
|
105
|
-
Screenshots._add_crawl_image_with_src({
|
106
|
-
'file_name': anchor.attr('data-alt'),
|
107
|
-
'src':anchor.attr('data-src'),
|
108
|
-
'crawl_url': anchor.attr('href'),
|
109
|
-
'is_compare': is_compare,
|
110
|
-
'diff_found': diff_found});
|
111
|
-
},
|
112
|
-
|
113
|
-
_update_crawl_status: function() {
|
114
|
-
$.ajax({
|
115
|
-
dataType: "json",
|
116
|
-
url: "screenshots/crawl_status.json",
|
117
|
-
success: function(data) {
|
118
|
-
var screenshots = data[0].screenshots;
|
119
|
-
var running_status = data[0].worker.running_status;
|
120
|
-
var first_status = data[0].worker.first_status;
|
121
|
-
var running_type = data[0].worker.running_type;
|
122
|
-
$('.crawl_btns .f_crawl_action').removeClass('running');
|
123
|
-
$('.crawl_btns .f_crawl_action[data-type="'+running_type+'"]').addClass('running');
|
124
|
-
$('.crawling a.last_img img').removeAttr("src");
|
125
|
-
$('.crawling a.last_img img').removeAttr("alt");
|
126
|
-
|
127
|
-
$('.f_sidenav_diffs span:last').text(data[0].counts.diff);
|
128
|
-
$('.f_sidenav_controls span:last').text(data[0].counts.control);
|
129
|
-
$('.f_sidenav_tests span:last').text(data[0].counts.test);
|
130
|
-
$('.f_sidenav_compares span:last').text(data[0].counts.compare);
|
131
|
-
|
132
|
-
for (var i=0; i < screenshots.length; i++) {
|
133
|
-
Screenshots._add_crawl_url(screenshots[i]);
|
134
|
-
}
|
135
|
-
if (screenshots.length > 0 && !Screenshots._clicked_urls_row) {
|
136
|
-
/* if the user isn't looking at other rows, then show the most recent image */
|
137
|
-
Screenshots._show_top_most_image();
|
138
|
-
}
|
139
|
-
|
140
|
-
// $('.cmd_status_msg').text('running: ' + running_status + ' first: ' + first_status);
|
141
|
-
clearInterval(Screenshots._crawlStatusIntervalId);
|
142
|
-
if (running_status === "working" || (first_status === "working" || first_status === "queued")) {
|
143
|
-
Screenshots._crawlStatusIntervalId = setInterval(Screenshots._update_crawl_status, 3000);
|
144
|
-
return;
|
145
|
-
}
|
146
|
-
$('.crawl_btns button').removeAttr("disabled");
|
147
|
-
$('.crawl_btns .f_cancel').hide();
|
148
|
-
}
|
149
|
-
});
|
150
|
-
},
|
151
|
-
|
152
|
-
_show_top_most_image: function() {
|
153
|
-
$('.crawling .urls li').each(function() {
|
154
|
-
var elem = $(this);
|
155
|
-
var anchor = elem.find('a');
|
156
|
-
if (anchor.hasClass('active')) return;
|
157
|
-
var src = anchor.attr('data-src');
|
158
|
-
if (typeof src !== 'undefined') {
|
159
|
-
Screenshots._add_crawl_image_with_src({
|
160
|
-
'file_name': anchor.attr('data-alt'),
|
161
|
-
'src': src,
|
162
|
-
'crawl_url': anchor.attr('data-href'),
|
163
|
-
'is_compare': anchor.attr('data-type') === 'compare',
|
164
|
-
'diff_found': anchor.find('i').hasClass('diff_found')});
|
165
|
-
return false;
|
166
|
-
}
|
167
|
-
});
|
168
|
-
},
|
169
|
-
|
170
|
-
_add_crawl_url: function(screenshot) {
|
171
|
-
if (screenshot.url === null) return;
|
172
|
-
|
173
|
-
if ($('.crawling .urls li').length > 100) {
|
174
|
-
$('.crawling .urls').empty();
|
175
|
-
}
|
176
|
-
|
177
|
-
var type = "test";
|
178
|
-
var diff_class = "";
|
179
|
-
if (screenshot.is_control === true) {
|
180
|
-
type = "control";
|
181
|
-
} else if (screenshot.is_compare === true) {
|
182
|
-
diff_class = screenshot.diff_found === true ? " diff_found" : " no_diff_found";
|
183
|
-
type = "compare";
|
184
|
-
}
|
185
|
-
|
186
|
-
var file_name = screenshot.image_file_name;
|
187
|
-
var src;
|
188
|
-
var icon_class;
|
189
|
-
if (file_name !== null) {
|
190
|
-
src = screenshot.displayable_image_path_full;
|
191
|
-
icon_class = 'icon-picture' + diff_class;
|
192
|
-
} else {
|
193
|
-
icon_class = 'icon-';
|
194
|
-
}
|
195
|
-
|
196
|
-
var existing_selector = '.crawling .urls li a[data-href="'+screenshot.url+'"][data-type="' + type + '"]';
|
197
|
-
var existing = $(existing_selector);
|
198
|
-
if (existing.length === 0) {
|
199
|
-
$('.crawling .urls').prepend('<li><a data-type="' + type + '" data-href="' + screenshot.url + '"><i></i><span>' + type + ' : ' + screenshot.url + '</span></a></li>');
|
200
|
-
existing = $(existing_selector);
|
201
|
-
}
|
202
|
-
if (typeof existing.attr('data-alt') === 'undefined' && src !== null) {
|
203
|
-
existing.find('i').attr('class', icon_class);
|
204
|
-
existing.attr('data-alt', file_name);
|
205
|
-
existing.attr('data-src', src);
|
206
|
-
}
|
207
|
-
},
|
208
|
-
|
209
|
-
_add_crawl_image_with_src: function(params) {
|
210
|
-
// don't replace the image with itself
|
211
|
-
var existing_img = $('.crawling a.last_img img[src="'+params.src+'"]').length;
|
212
|
-
if (existing_img > 0) return;
|
213
|
-
|
214
|
-
if (params.is_compare) {
|
215
|
-
if (params.diff_found === null || params.diff_found === false) {
|
216
|
-
$('.crawling a.last_img .no_diff_found').show();
|
217
|
-
$('.crawling a.last_img .diff_found').hide();
|
218
|
-
$('.crawling a.last_img img').hide();
|
219
|
-
} else {
|
220
|
-
$('.crawling a.last_img .no_diff_found').hide();
|
221
|
-
$('.crawling a.last_img .diff_found').show();
|
222
|
-
$('.crawling a.last_img img').show();
|
223
|
-
}
|
224
|
-
} else {
|
225
|
-
$('.crawling a.last_img .no_diff_found').hide();
|
226
|
-
$('.crawling a.last_img .diff_found').hide();
|
227
|
-
$('.crawling a.last_img img').show();
|
228
|
-
}
|
229
|
-
$('.crawling a.last_img').attr('href', params.src);
|
230
|
-
$('.crawling a.last_img img').attr('alt', params.file_name);
|
231
|
-
$('.crawling a.last_img img').attr('src', params.src);
|
232
|
-
|
233
|
-
if (Screenshots._clicked_urls_row) return;
|
234
|
-
$('.crawling .urls li').removeClass('active');
|
235
|
-
$('.crawling .urls li a[data-href="'+params.crawl_url+'"]').parent('li').addClass('active');
|
236
|
-
},
|
237
|
-
|
238
|
-
_checkall_master_change: function() {
|
239
|
-
$(".f_checkall_child").prop("checked", this.checked);
|
240
|
-
Screenshots._disable_action_buttons();
|
241
|
-
},
|
242
|
-
_checkall_child_change: function() {
|
243
|
-
$("#f_checkall").prop("checked", $(".f_checkall_child:checked").length == $(".f_checkall_child").length);
|
244
|
-
Screenshots._disable_action_buttons();
|
245
|
-
},
|
246
|
-
_diffs_row_clicked: function(e) {
|
247
|
-
if (e.target.type === 'checkbox') return;
|
248
|
-
document.location = $(this).find('.diff_url').val();
|
249
|
-
},
|
250
|
-
|
251
|
-
_disable_action_buttons: function() {
|
252
|
-
$(".f_actions button").attr("disabled", $(".f_checkall_child:checked").length === 0);
|
253
|
-
},
|
254
|
-
_ajax_with_type: function(url, type) {
|
255
|
-
$.ajax({
|
256
|
-
url: url,
|
257
|
-
type: type,
|
258
|
-
success: function() {
|
259
|
-
location.reload();
|
260
|
-
}
|
261
|
-
});
|
262
|
-
},
|
263
|
-
_get_checked_ids: function() {
|
264
|
-
var ids_array = [];
|
265
|
-
$('.screenshots tbody tr').each(function() {
|
266
|
-
var row = $(this);
|
267
|
-
if (!row.find('td:first input[type=checkbox]:not(:checked)').length) {
|
268
|
-
var diff_id = row.find('input.f_id').first().val();
|
269
|
-
ids_array.push(diff_id);
|
270
|
-
}
|
271
|
-
});
|
272
|
-
return ids_array.join(",");
|
273
|
-
}
|
274
|
-
|
275
|
-
};
|
276
|
-
}
|
277
|
-
|
278
|
-
$(function() {
|
279
|
-
Screenshots._init();
|
280
|
-
});
|