Skip to content
This repository has been archived by the owner on Feb 1, 2019. It is now read-only.

Feedback loop duplicates #237

Merged
merged 3 commits into from
Aug 30, 2017
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
57 changes: 43 additions & 14 deletions cms/static/js/feedback.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,26 +2,46 @@ function feedbackLoopListener() {
selectAll('.resource-link').forEach(function (el) {
el.addEventListener('click', function (e) {
var resource_id = get_resource_id(e.target);
if (document.cookie.indexOf('ldmw_visited_resources') === -1) {
document.cookie = 'ldmw_visited_resources=' + resource_id;
} else {
var visited_resources = get_visited_resources();
if (visited_resources.indexOf(resource_id) === -1) {
document.cookie = 'ldmw_visited_resources=' + visited_resources.join() + ',' + resource_id;
}
}
add_visited(resource_id);
});
});

selectAll('.remove_visited').forEach(function (el) {
el.addEventListener('click', function(e) {
var id = get_resource_id(e.target);
remove_visited(id);
delete_visited(id);
var resource_id = get_resource_id(e.target);
remove_visited(resource_id);
delete_visited(resource_id);
});
});
}

function add_visited(resource_id) {
if (get_feedback_left_resources().indexOf(resource_id) > -1) {
// if feedback is already left, we don't want to
// include this resource in the feedback loop
return;
}
if (document.cookie.indexOf('ldmw_visited_resources') === -1) {
document.cookie = 'ldmw_visited_resources=' + resource_id;
} else {
var visited_resources = get_visited_resources();
if (visited_resources.indexOf(resource_id) === -1) {
document.cookie = 'ldmw_visited_resources=' + visited_resources.join() + ',' + resource_id;
}
}
}

function add_to_feedback_left_resources(resource_id) {
if (document.cookie.indexOf('ldmw_feedback_left_resources') === -1) {
document.cookie = 'ldmw_feedback_left_resources=' + resource_id;
} else {
var feedback_left_resources = get_feedback_left_resources();
if (feedback_left_resources.indexOf(resource_id) === -1) {
document.cookie = 'ldmw_feedback_left_resources=' + feedback_left_resources.join() + ',' + resource_id;
}
}
}

function get_resource_id(node) {
if(node.id.indexOf('resource_') > -1 || node.id.indexOf('visited_') > -1) {
return node.id.split('_')[1];
Expand All @@ -35,6 +55,15 @@ function get_resource_id(node) {
return get_resource_id(node.parentNode);
}

function get_feedback_left_resources () {
var resources = document.cookie.match(/ldmw_feedback_left_resources=([^;]+);/)
if (resources) {
return resources[1].split(',');
} else {
return [];
}
}

function get_visited_resources () {
var resources = document.cookie.match(/ldmw_visited_resources=([^;]+);/)
if (resources) {
Expand All @@ -45,7 +74,7 @@ function get_visited_resources () {
}

function remove_visited(id) {
visited_resources = get_visited_resources().filter(function (el) {
var visited_resources = get_visited_resources().filter(function (el) {
return el && el !== id;
});
if (visited_resources.length > 0) {
Expand All @@ -57,7 +86,7 @@ function remove_visited(id) {

function delete_visited(id) {
select('#visited_' + id).outerHTML = "";
visited_resources = get_visited_resources().filter(function (el) {
var visited_resources = get_visited_resources().filter(function (el) {
return el !== id;
});
if (visited_resources.length === 0) {
Expand All @@ -66,5 +95,5 @@ function delete_visited(id) {
}

var delete_cookie = function(name) {
document.cookie = name + '=;expires=Thu, 01 Jan 1970 00:00:01 GMT;';
document.cookie = name + '=;expires=Thu, 01 Jan 1970 00:00:01 GMT;';
};
3 changes: 2 additions & 1 deletion cms/static/js/like.js
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,8 @@ if (isNotIE8()) {
}

if (response.feedback) {
remove_visited(response.id)
remove_visited(response.id);
add_to_feedback_left_resources(response.id);
}

feedbackLoopListener();
Expand Down