Subversion Repositories SmartDukaan

Rev

Rev 3313 | Rev 3446 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 3313 Rev 3440
Line 1... Line 1...
1
$(function(){
1
$(function(){
-
 
2
	feedbacks = null;
-
 
3
	
-
 
4
	function updateWithFeedback()	{
-
 
5
		$.ajax({
-
 
6
			url: '/feedback',
-
 
7
			type: 'GET',
-
 
8
			success: function(data){
-
 
9
//				console.log(data);
-
 
10
				feedbacks = eval('(' + data + ')');
-
 
11
				
-
 
12
				$.each(feedbacks, function(entityId, feedback){
-
 
13
					var tr = $('#' + entityId);
-
 
14
//					console.log(tr);
-
 
15
					
-
 
16
					$.each(feedback, function(source, feedback_instruction){
-
 
17
						updateCellWithFeedback($(tr).children('td[source=' + source + ']')[0], feedback_instruction);
-
 
18
					});
-
 
19
				});
-
 
20
			}
-
 
21
		})
-
 
22
	}
-
 
23
	
-
 
24
	function updateCellWithFeedback(td, feedback)	{
-
 
25
		var anchor = $(td).children('.link-conflict');
-
 
26
		var source = $(td).attr('source');
-
 
27
		$(anchor).html('Filtered');
-
 
28
		console.log(anchor);
-
 
29
		
-
 
30
		if(feedback.type == 'reject')	{
-
 
31
			$(td).html('Not Found ' + $('<a>').append($(anchor).clone()).remove().html()).addClass('with-feedback');
-
 
32
			
-
 
33
		} else	{
-
 
34
			var itemInfo = lookupInfoForItem(eval($(td).attr('data')), feedback.selected_item);
-
 
35
			$(td).html('<a href="' + baseUrl[source] + itemInfo.url + '">' + itemInfo.price + '</a> ' + $('<a>').append($(anchor).clone()).remove().html()).addClass('with-feedback');
-
 
36
		}
-
 
37
	}
-
 
38
	
-
 
39
	function lookupInfoForItem(data, itemName)	{
-
 
40
		var info = null;
-
 
41
		
-
 
42
		$.each(data, function(index, item){
-
 
43
			
-
 
44
			if (item.name == itemName)	{
-
 
45
				info = {name: item.name, price: item.price, url: item.url};
-
 
46
			}
-
 
47
		});
-
 
48
		return info;
-
 
49
	}
-
 
50
 
-
 
51
	$('tbody tr').each(function(index, e)	{
-
 
52
 		var class_tr = index % 2 == 0 ? 'even' : 'odd';
-
 
53
 		$(e).addClass(class_tr);
-
 
54
 		markBestPrice(this);
-
 
55
 		$(this).find('td').each(function(){
-
 
56
 			if($(this).hasClass('conflict'))	$(this).children('a[href="#"]').addClass('link-conflict');
-
 
57
 		});
-
 
58
	});
-
 
59
	
-
 
60
	updateWithFeedback();
2
	
61
	
3
	function markBestPrice(trNode)	{
62
	function markBestPrice(trNode)	{
4
		var tdBestPrice = $(trNode).children('td')[1];
63
		var tdBestPrice = $(trNode).children('td')[1];
5
		var saholicPrice = parseInt(tdBestPrice.innerHTML);
64
		var saholicPrice = parseInt(tdBestPrice.innerHTML);
6
		var bestPrice = saholicPrice;
65
		var bestPrice = saholicPrice;
Line 16... Line 75...
16
		$(tdBestPrice).addClass('best');
75
		$(tdBestPrice).addClass('best');
17
		
76
		
18
		if (bestPrice < saholicPrice)	$($(trNode).children()[0]).addClass('red');
77
		if (bestPrice < saholicPrice)	$($(trNode).children()[0]).addClass('red');
19
	}
78
	}
20
 
79
 
21
	$('tbody tr').each(function(index, e)	{
-
 
22
 		var class_tr = index % 2 == 0 ? 'even' : 'odd';
-
 
23
 		$(e).addClass(class_tr);
-
 
24
 		markBestPrice(this);
-
 
25
	});
-
 
26
 
-
 
27
	var baseUrl = {
80
	var baseUrl = {
28
		'flipkart': 'http://www.flipkart.com',
81
		'flipkart': 'http://www.flipkart.com',
29
		'homeshop18': '',
82
		'homeshop18': '',
30
		'infibeam': 'http://www.infibeam.com',
83
		'infibeam': 'http://www.infibeam.com',
31
		'letsbuy': ''
84
		'letsbuy': ''
32
	};
85
	};
33
	
86
	
34
	$('.conflict').click(function(){
87
	$('.conflict a').live('click', function(){
35
		$(this).children('a')
88
		var td = $(this).parent();
-
 
89
		
36
			.removeAttr('href')
90
		var entityId = $(td).parent().attr('id');
37
			.css({'text-decoration': 'underline', 'cursor': 'pointer'});
91
		var source = $(td).attr('source');
-
 
92
		
38
		var data = eval("{results: " + $(this).attr('data') + "}");
93
		var data = eval("{results: " + $(td).attr('data') + "}");
-
 
94
		
-
 
95
		var feedback = null;
-
 
96
		var selectedItem = null; 
-
 
97
		
-
 
98
		if(feedbacks && feedbacks[entityId] && feedbacks[entityId][source])	{
-
 
99
			feedback = feedbacks[entityId][source];
-
 
100
			
-
 
101
			if (feedback.type == 'select')	selectedItem = feedback.selected_item;
-
 
102
		}
-
 
103
 
-
 
104
		if (feedback && feedback.type == 'reject')	{
-
 
105
			var text = '<div class="msg">Currently following set is marked <i>rejected</i></div>';
-
 
106
			
-
 
107
		} else	{
39
		var text = '<table>';
108
			var text = '';
-
 
109
		}
-
 
110
		text += '<table id="' + entityId + '" source="' + source + '">';
40
		
111
		
41
		for (i in data)	{
112
		for (i in data)	{
-
 
113
			var checked = selectedItem && selectedItem == data[i]['name'] ? 'checked' : ''; 
42
			text += '<tr>';
114
			text += '<tr>';
43
			text += '<td>' + data[i]['name'] + '</td>';
115
			text += '<td>' + data[i]['name'] + '</td>';
44
			text += '<td><a target="_blank" href="' + baseUrl[data[i]['source']] + data[i]['url'] + '">' + data[i]['price'] + '</a></td>';
116
			text += '<td><a target="_blank" href="' + baseUrl[data[i]['source']] + data[i]['url'] + '">' + data[i]['price'] + '</a></td>';
-
 
117
			text += '<td><input type="radio" name="chosen_one_' + entityId + '" value="' + data[i]['name'] + '" ' + checked + '></td>';
45
			text += '</tr>';
118
			text += '</tr>';
46
		}
119
		}
-
 
120
		text += '<tr>';
-
 
121
		text += '<td colspan="2" align="center"><a id="feedback-reject" href="#">Reject All</a></td>';
-
 
122
		text += '<td><a id="feedback-select" href="#">Save</a></td>';
-
 
123
		text += '</tr>';
47
		text += '</table>';
124
		text += '</table>';
-
 
125
		
48
		$.facebox(text);
126
		$.facebox(text);
49
	});
127
	});
-
 
128
	
-
 
129
	$('#feedback-reject').live('click', function(){
-
 
130
		var table = $(this).parents('table');
-
 
131
		var feedback = {
-
 
132
				type: 'reject',
-
 
133
				entityId: $(table).attr('id'),
-
 
134
				source: $(table).attr('source')
-
 
135
		};
-
 
136
		postFeedback(feedback, table);
-
 
137
	});
-
 
138
	
-
 
139
	$('#feedback-select').live('click', function(){
-
 
140
		var table = $(this).parents('table');
-
 
141
		var entityId = $(table).attr('id');
-
 
142
		
-
 
143
		var selected_item = $("input:radio[name='chosen_one_" + entityId + "']:checked").val();
-
 
144
		
-
 
145
		if(! selected_item)	{
-
 
146
			
-
 
147
			showMsg(table, true, 'At least one option must be selected');
-
 
148
			
-
 
149
		} else	{
-
 
150
			var feedback = {
-
 
151
					type: 'select',
-
 
152
					entityId: entityId,
-
 
153
					source: $(table).attr('source'),
-
 
154
					selected: selected_item
-
 
155
			};
-
 
156
			postFeedback(feedback, table);
-
 
157
		}
-
 
158
	});
-
 
159
	
-
 
160
	function postFeedback(feedback, table)	{
-
 
161
		console.log(feedback);
-
 
162
		var feedbackType = feedback.type;
-
 
163
		var entityId = feedback.entityId;
-
 
164
		
-
 
165
		$.ajax({
-
 
166
			url: '/feedback',
-
 
167
			type: 'POST',
-
 
168
			data: feedback,
-
 
169
			success: function(msg)	{
-
 
170
				
-
 
171
				if (feedbackType == 'reject')	{
-
 
172
					$("input:radio[name='chosen_one_" + entityId + "']:checked").prop('checked', false);
-
 
173
				} else	{
-
 
174
					
-
 
175
				}
-
 
176
				var td = $('#' + feedback.entityId).children('td[source=' + feedback.source + ']')[0];
-
 
177
				updateCellWithFeedback(td, {type: feedback.type, selected_item: feedback.selected});
-
 
178
				showMsg(table, false, 'Your feedback has been saved successfully.');
-
 
179
			},
-
 
180
			error: function(msg)	{
-
 
181
				showMsg(table, true, 'Error! please try again.');
-
 
182
			}
-
 
183
		});
-
 
184
	}
-
 
185
	
-
 
186
	function showMsg(table, is_error, msg)	{
-
 
187
		msg_class = is_error ? 'error' : 'notice';
-
 
188
		
-
 
189
		if($(table).siblings('.msg').length > 0)	{
-
 
190
			var msgDiv = $(table).siblings('.msg')[0];
-
 
191
			$(msgDiv).html(msg);
-
 
192
			
-
 
193
		} else	{
-
 
194
			$(table).before('<div class="msg">' + msg + '</div>');
-
 
195
		}
-
 
196
	}
-
 
197
	
-
 
198
	$('#facebox .close').live('click', function(){});
50
});
199
});
51
200