From d84535957934f33b9448934fd50623463b1662bd Mon Sep 17 00:00:00 2001 From: Zhaoyi Huang Date: Mon, 15 Jul 2019 13:00:19 -0700 Subject: [PATCH 01/68] modified --- background.js | 5 ++- content_script.js | 89 ++++++++++++++++++++++++++++++----------------- manifest.json | 2 +- 3 files changed, 63 insertions(+), 33 deletions(-) diff --git a/background.js b/background.js index fcd506c..b61155f 100644 --- a/background.js +++ b/background.js @@ -5,6 +5,7 @@ var always_show; var on_grading_page; function loadSpreadsheet() { + console.log("loadding spreadsheet now.....") if (chrome.identity === undefined) { console.log("Please sign-in to Chrome from its top-right menu."); return; @@ -52,7 +53,7 @@ function loadSpreadsheet() { } function updateSheets(action, rubric_question, rubric_item, comment_info, comment) { - //console.log("updating sheets"); + console.log("updating sheets now..."); // a comment was just inserted, update the google sheets to keep count & log this chrome.identity.getAuthToken({interactive: true}, function(token) { if (token) { @@ -343,6 +344,7 @@ chrome.tabs.onUpdated.addListener(function(tabId, changeInfo, tab) { chrome.runtime.onMessage.addListener(function(request, sender, sendResponse) { if (request.action == "loadSpreadsheet") { + loadSpreadsheet(); sendResponse("done"); } else if (request.action == "logEvent") { @@ -358,6 +360,7 @@ chrome.runtime.onMessage.addListener(function(request, sender, sendResponse) { updateSheets("hide suggestions", request.rubric_question, request.rubric_item); sendResponse("event logged"); } else if (request.action == "logFocus") { + updateSheets("focus", request.rubric_question, request.rubric_item); sendResponse("event logged"); } else if (request.action == "logGradescopeFocus") { diff --git a/content_script.js b/content_script.js index 28019bb..0a606a6 100644 --- a/content_script.js +++ b/content_script.js @@ -1,3 +1,13 @@ +//note before start: refer to background.js for why there +//are comment[0,1,2,blabla] +//comment[1]==rubric_number +//comment[4]==comment_id +//comment[5]==comment text itself +//comment[6]==length of comment text(string) +//comment[8]==frequency +//comment[11]==user_id + + var student_id; var rubric_name; var rubric_number; @@ -17,6 +27,7 @@ var num_rubric_items = {1: 4, 2: 3, 3: 4, 4: 3, 5: 4, 6: 2, 7: 6}; // return result: a list of lists where result[i] is a list holding the comments for rubric item i function filterComments(comments) { // first get only this rubric question number + comments = comments.filter(function(comment) { return (comment[7] != "0" && (comment[1].includes(rubric_number) || comment[1].includes("0"))); }); @@ -65,7 +76,7 @@ function filterComments(comments) { // print all comments for this rubric question function storeAndPrintAllComments(comments) { full_sorted_comments = comments; - //console.log("in store and print all"); + console.log("in store and print all"); $(".rubric-item").each(function(ind) { // don't show suggs for None rubric item if (ind < num_rubric_items[rubric_number] && comments[ind].length > 0) { @@ -84,7 +95,7 @@ function storeAndPrintAllComments(comments) { // index is its index in the list of rubric items // searching = true if this was called by the search function function storeAndPrintComments(comments, id_num, index, searching) { - + console.log("id num in store and print "+id_num); // specifies which rubric item suggestion box we are adding to var selector_addition = "#suggestion_box_" + id_num; @@ -213,7 +224,8 @@ function storeAndPrintComments(comments, id_num, index, searching) { // button clicked! insert suggestion var btn_id_num = $(this).attr("class").split(" ")[1]; - // index of this rubric item = index of these comments in full_sorted_comments + // index of this rubric item = index of these comments in full_sorted_comments + //* find the gradescope correspondence here*** var this_index = $(this).parents("li.rubric-item").index(); //console.log(this_index); @@ -231,7 +243,7 @@ function storeAndPrintComments(comments, id_num, index, searching) { comment = comment.replace(/"/g, '\\"').replace(/'/g, "\\'"); - var rubric_item = $(this).parents("li.rubric-item").find(".rubric-description").find(".mathInput--preview").html(); + var rubric_item = $(this).parents("li").find(".rubricItem--pointsAndDescription").find(".rubricField-points").html(); console.log("inserting comment: " + comment); console.log(full_sorted_comments[this_index]); @@ -252,14 +264,15 @@ function storeAndPrintComments(comments, id_num, index, searching) { } function updateCommentViews(view_id) { + console.log('view_id is '+view_id); setTimeout(function(){ $(".comment_view_text").each(function(ind) { if (view_id == undefined || this.id != view_id) { - $(this).val($("#question_submission_evaluation_comments").val()); + $(this).val($(".form--textArea").val()); } }); // save current text - comment_text = $('#question_submission_evaluation_comments').val(); + comment_text = $('.form--textArea').val(); if (original_text != "") { var split = comment_text.split(original_text); @@ -279,15 +292,16 @@ function updateCommentViews(view_id) { } function updateCommentBox(view_id) { + console.log("In update, this.id is "+view_id); setTimeout(function(){ - $("#question_submission_evaluation_comments").val($("#" + view_id).val()); + $(".form--textArea").val($("#" + view_id).val()); setTimeout(function() { updateCommentViews(view_id); }, 1000); }, 100); // simulate blur so the new comment will save var event = new KeyboardEvent('blur'); - document.querySelector('#question_submission_evaluation_comments').dispatchEvent(event); + document.querySelector('.form--textArea').dispatchEvent(event); } // comment has been clicked. Add it to the gradescope comment box. @@ -296,20 +310,20 @@ function insertComment(comment, comment_id) { comment = comment.replace(/\\"/g, '"').replace(/\\'/g, "'"); comments_inserted[comment_id] = comment; - - $("#question_submission_evaluation_comments").val( - $("#question_submission_evaluation_comments").val() + "\n" + comment + "\n"); - $("#question_submission_evaluation_comments").height($("#question_submission_evaluation_comments")[0].scrollHeight); - //console.log("doin it"); + //find if the corresponding gradescope name changed + $(".form--textArea").val( + $(".form--textArea").val() + "\n" + comment + "\n"); + $(".form--textArea").height($(".form--textArea")[0].scrollHeight); + //console.log("making the insertion"); // simulate blur so the new comment will save var event = new KeyboardEvent('keydown'); - document.querySelector('#question_submission_evaluation_comments').dispatchEvent(event); + document.querySelector('.form--textArea').dispatchEvent(event); } function searchComments(query, search_id) { var id_num = search_id.split("search_")[1]; - + console.log("id_num in search "+id_num); var result_comments = []; var box_index = $("#" + id_num).index(); var comments_to_search = full_comments[box_index]; @@ -363,18 +377,22 @@ function injectSuggestions() { display_setting = ""; } + //TODO: now gradescope has no id for the li.rubricEntryDragContainer $("li.rubricEntryDragContainer").each(function(ind) { - + var this_id=$(this).find(".rubricItem--key").html(); + // don't show suggs for None rubric item if (ind < num_rubric_items[rubric_number]) { - + + //var this_id=$(this).find(".rubricItem--key").html(); + //console.log("new var value is "+this_id); $(this).append( - "
" + + "
" + "" + toggle_word + " suggestions..." + "
" + - "
" + - "
" + - "" + + "
" + + "
" + + "" + '
"I wish..."
' + "
" + '
"I suggest..."
' + @@ -383,20 +401,24 @@ function injectSuggestions() { "
" + "
" + '
' + - '' + '
' + "
" ); - $(this).find(".comment_view_text").val($("#question_submission_evaluation_comments").val()); + $(this).find(".comment_view_text").val($(".form--textarea").val()); } }); - // event listener to update everything when comment view text is changed - $(".comment_view_text").keydown(function() { updateCommentBox(this.id); }); + $(".comment_view_text").keydown(function() { + console.log("this id "+this.id); + updateCommentBox(this.id); }); $(".comment_view_text").focus(function() { - var rubric_item = $(this).parents("li.rubric-item").find(".rubric-description").find(".mathInput--preview").html(); + //console.log(this); + + //I assume that rubric_item variable is the score like -0.5 + var rubric_item = $(this).parents("li").find(".rubricItem--pointsAndDescription").find(".rubricField-points").html(); // tell chrome to log the event that we just clicked the comment box chrome.runtime.sendMessage({action: "logFocus", rubric_question: rubric_name, @@ -412,7 +434,7 @@ function injectSuggestions() { var action = $("#see_suggestions_" + selected_id_num + " .toggle_word").html(); toggleSuggestionBox(selected_id_num); - var rubric_item = $(this).parents("li.rubric-item").find(".rubric-description").find(".mathInput--preview").html(); + var rubric_item = $(this).parents("li").find(".rubricItem--pointsAndDescription").find(".rubricField-points").html(); // tell chrome to log the event that we just clicked see/hide chrome.runtime.sendMessage({action: "logSuggestion" + action, @@ -430,6 +452,8 @@ function injectSuggestions() { searchComments($(this).val(), e.target.id); }); + + // now that all the base code is there, load in the comments from the spreadsheet chrome.runtime.sendMessage({action: "loadSpreadsheet"}, function(response) { console.log("loading spreadsheet: " + response); @@ -455,16 +479,16 @@ $(function() { button_url = chrome.extension.getURL("button.png"); // get text currently in comment box - original_text = $("#question_submission_evaluation_comments").val(); + original_text = $(".form--textArea").val(); console.log("original text:"); console.log(original_text); // event listener for whenever comment box updates, to update all the comment views too - $("#question_submission_evaluation_comments").keydown(function() { + $(".form--textArea").keydown(function() { updateCommentViews(); }); - $("#question_submission_evaluation_comments").focus(function() { + $(".form--textArea").focus(function() { // tell chrome to log the event that we just clicked the comment box chrome.runtime.sendMessage({action: "logGradescopeFocus", rubric_question: rubric_name, @@ -475,7 +499,7 @@ $(function() { // wait to receive the comments from spreadsheet chrome.runtime.onMessage.addListener(function(request, sender, sendResponse) { - //console.log("got comments message"); + console.log("got comments message"); if (request.comments) { console.log("storing and printing comments"); full_comments = filterComments(request.comments); @@ -501,6 +525,9 @@ $(function() { chrome.storage.local.set({student_id: student_id, rubric_number: rubric_number}, function() { console.log("Saved page info"); + chrome.storage.local.get(function(result){console.log(result)}) + + }); // get user id and settings diff --git a/manifest.json b/manifest.json index ae76793..1af72a2 100644 --- a/manifest.json +++ b/manifest.json @@ -28,7 +28,7 @@ "content_scripts": [ { "matches": ["https://gradescope.com/*/questions/*/submissions/*/grade", - "https://www.gradescope.com/courses/*/questions/*/submissions/*/grade"], + "https://www.gradescope.com/courses/*/questions/*/submissions/*/grade","https://www.gradescope.com/courses/*/questions/*/submissions/*/grade?not_grouped=true"], "js": ["jquery-2.2.2.min.js", "content_script.js"], "css": ["suggestions.css"] } From bfdeb198dbf66744347a1d961e30fff19b8863bf Mon Sep 17 00:00:00 2001 From: Zhaoyi Huang Date: Tue, 16 Jul 2019 00:40:37 -0700 Subject: [PATCH 02/68] update for the background page --- background.js | 12 +++++++++--- content_script.js | 31 ++++++++++++++++++------------- manifest.json | 4 ++-- 3 files changed, 29 insertions(+), 18 deletions(-) diff --git a/background.js b/background.js index b61155f..e67cafa 100644 --- a/background.js +++ b/background.js @@ -1,5 +1,9 @@ -var comment_sheet_id = "1-Xo0TcHNoSnbxtkGgiRcbnxcMip1R0PQFsrIOsiYevU"; -var event_sheet_id = "1pSgzEcft13sB3Lee_zNMkYD_WcDIUqKnjyP12XtLjzc"; +//W16-A10 is the comment sheet name used +//A10 is the event sheet name used +//NOTICE: make headings first for the table(A1:L1 for comment sheet) then do the insertions!! +//otherwise, table range will be a mess +var comment_sheet_id = "1HdcveHzPgCNc1lCp_Lfb7MX3O51p3u5jKrnxOw-66bQ"; +var event_sheet_id = "11mbvJusJtSQ4IjWPSwROlZdygijXDv0YWeI3LREfdbw"; var user_id; var always_show; var on_grading_page; @@ -53,7 +57,9 @@ function loadSpreadsheet() { } function updateSheets(action, rubric_question, rubric_item, comment_info, comment) { - console.log("updating sheets now..."); + + console.log("updating sheets now... for question "+rubric_question+"for item "+rubric_item); + console.log("comment_info is "+comment_info); // a comment was just inserted, update the google sheets to keep count & log this chrome.identity.getAuthToken({interactive: true}, function(token) { if (token) { diff --git a/content_script.js b/content_script.js index 0a606a6..f5846a1 100644 --- a/content_script.js +++ b/content_script.js @@ -10,7 +10,7 @@ var student_id; var rubric_name; -var rubric_number; +var rubric_number; //the question itself var user_id; var button_url; var full_comments; @@ -21,6 +21,8 @@ var comment_text; // the text they have entered so far in the comment box var comments_inserted = {}; // list with text of comments they have inserted on this page. format: { id: text } // key = rubric question number, value = how many rubric items that question has // this is specific to A6 + +//follow the demo, the key is the question itself and the value is the num of rubric items var num_rubric_items = {1: 4, 2: 3, 3: 4, 4: 3, 5: 4, 6: 2, 7: 6}; // take in a list of all the comments for this rubric question @@ -28,9 +30,9 @@ var num_rubric_items = {1: 4, 2: 3, 3: 4, 4: 3, 5: 4, 6: 2, 7: 6}; function filterComments(comments) { // first get only this rubric question number - comments = comments.filter(function(comment) { - return (comment[7] != "0" && (comment[1].includes(rubric_number) || comment[1].includes("0"))); - }); + // comments = comments.filter(function(comment) { + // return (comment[7] != "0" && (comment[1].includes(rubric_number) || comment[1].includes("0"))); + // }); var result = []; @@ -76,16 +78,17 @@ function filterComments(comments) { // print all comments for this rubric question function storeAndPrintAllComments(comments) { full_sorted_comments = comments; - console.log("in store and print all"); - $(".rubric-item").each(function(ind) { + console.log("in store and print all comments"); + $(".rubricItem--key").each(function(ind) { // don't show suggs for None rubric item if (ind < num_rubric_items[rubric_number] && comments[ind].length > 0) { - //console.log("rubric item " + ind); - storeAndPrintComments(comments[ind], this.id, ind); - //console.log("storing comments for rubric item " + ind); - //console.log(comments[ind]); - } else if (ind < num_rubric_items[rubric_number]) { - $("#search_" + this.id).hide(); + console.log("rubric item " + ind); + storeAndPrintComments(comments[ind], ind, ind); + console.log("storing comments for rubric item " + ind); + console.log(comments[ind]); + } + else if (ind < num_rubric_items[rubric_number]) { + $("#search_" + ind).hide(); } }); } @@ -96,6 +99,7 @@ function storeAndPrintAllComments(comments) { // searching = true if this was called by the search function function storeAndPrintComments(comments, id_num, index, searching) { console.log("id num in store and print "+id_num); + id_num=id_num+1; // specifies which rubric item suggestion box we are adding to var selector_addition = "#suggestion_box_" + id_num; @@ -323,9 +327,10 @@ function insertComment(comment, comment_id) { function searchComments(query, search_id) { var id_num = search_id.split("search_")[1]; - console.log("id_num in search "+id_num); var result_comments = []; var box_index = $("#" + id_num).index(); + console.log("box index: "+box_index); + console.log("full comments has a thing: "+full_comments[0]); var comments_to_search = full_comments[box_index]; for (var i = 0; i < comments_to_search.length; i++) { diff --git a/manifest.json b/manifest.json index 1af72a2..6c10890 100644 --- a/manifest.json +++ b/manifest.json @@ -20,6 +20,7 @@ }, "permissions": [ + "tabs", "activeTab", "storage", "identity", @@ -38,8 +39,7 @@ "persistent": false }, "oauth2": { - "client_id": "429303545529-bag73oigjvq64981cd2f0rvvqbbekbqe.apps.googleusercontent.com", // debug - //"client_id": "429303545529-hq5ehbbgd6quoa2qneg2q3icqfjj50kg.apps.googleusercontent.com", //published + "client_id":"66462531215-mgror68snbk04d88ol3t4i7rnh0ul1j8.apps.googleusercontent.com", "scopes": [ "https://spreadsheets.google.com/feeds" ] From 137fef9c6118d3f8381cb1641ede73a409847277 Mon Sep 17 00:00:00 2001 From: Zhaoyi Huang Date: Tue, 16 Jul 2019 12:51:46 -0700 Subject: [PATCH 03/68] fix search --- content_script.js | 22 +++++++++++++--------- 1 file changed, 13 insertions(+), 9 deletions(-) diff --git a/content_script.js b/content_script.js index f5846a1..76651ad 100644 --- a/content_script.js +++ b/content_script.js @@ -35,7 +35,7 @@ function filterComments(comments) { // }); var result = []; - + console.log("question number: "+rubric_number); // deal with comments that apply to multiple rubric questions /*for (var i = 0; i < comments.length; i++) { var comment = comments[i] @@ -58,7 +58,8 @@ function filterComments(comments) { result.push(comments.filter(function(comment) { /*var rubric_items = comment[2].split(" "); return rubric_items.includes(i.toString());*/ - return true; + return comment[1]==rubric_number; + //return true; })); i++; } @@ -78,6 +79,7 @@ function filterComments(comments) { // print all comments for this rubric question function storeAndPrintAllComments(comments) { full_sorted_comments = comments; + console.log("in store and print all comments"); $(".rubricItem--key").each(function(ind) { // don't show suggs for None rubric item @@ -87,9 +89,9 @@ function storeAndPrintAllComments(comments) { console.log("storing comments for rubric item " + ind); console.log(comments[ind]); } - else if (ind < num_rubric_items[rubric_number]) { - $("#search_" + ind).hide(); - } + // else if (ind < num_rubric_items[rubric_number]) { + // $("#search_" + ind).hide(); + // } }); } @@ -225,13 +227,13 @@ function storeAndPrintComments(comments, id_num, index, searching) { // make insert buttons clickable $(".btn").unbind("click"); $(".btn").click(function(obj) { - // button clicked! insert suggestion + // button clicked! insert suggestion var btn_id_num = $(this).attr("class").split(" ")[1]; // index of this rubric item = index of these comments in full_sorted_comments //* find the gradescope correspondence here*** - var this_index = $(this).parents("li.rubric-item").index(); - //console.log(this_index); + var this_index = $(this).parents("div").find(".search_text").attr('id').slice(-1); + console.log(this_index); var comment = $(this).parents("tr").find(".comment_" + btn_id_num).html(); //console.log(comment); @@ -328,10 +330,11 @@ function insertComment(comment, comment_id) { function searchComments(query, search_id) { var id_num = search_id.split("search_")[1]; var result_comments = []; + //TODO:change box index, I think it should be 0 if we display all the comments? var box_index = $("#" + id_num).index(); console.log("box index: "+box_index); console.log("full comments has a thing: "+full_comments[0]); - var comments_to_search = full_comments[box_index]; + var comments_to_search = full_comments[0]; for (var i = 0; i < comments_to_search.length; i++) { var comment = comments_to_search[i]; @@ -507,6 +510,7 @@ $(function() { console.log("got comments message"); if (request.comments) { console.log("storing and printing comments"); + //TODO: made the comments customized for each question(rubric_number) full_comments = filterComments(request.comments); //console.log(full_comments); storeAndPrintAllComments(full_comments); From b4df0525f36cf13f59312d710b167a31d06e4a6a Mon Sep 17 00:00:00 2001 From: Zhaoyi Huang Date: Wed, 17 Jul 2019 14:23:24 -0700 Subject: [PATCH 04/68] add comment thing --- background.js | 20 ++++++++++----- content_script.js | 65 +++++++++++++++++++++++++++++++++++++++-------- 2 files changed, 69 insertions(+), 16 deletions(-) diff --git a/background.js b/background.js index e67cafa..260d7bc 100644 --- a/background.js +++ b/background.js @@ -7,6 +7,8 @@ var event_sheet_id = "11mbvJusJtSQ4IjWPSwROlZdygijXDv0YWeI3LREfdbw"; var user_id; var always_show; var on_grading_page; +var store_rubric_item; +var store_category="0"; function loadSpreadsheet() { console.log("loadding spreadsheet now.....") @@ -56,8 +58,12 @@ function loadSpreadsheet() { }); } -function updateSheets(action, rubric_question, rubric_item, comment_info, comment) { - +function updateSheets(action, rubric_question, rubric_item, comment_info, comment,category) { + store_category=category; + console.log("category to be stored= "+category) + store_rubric_item=rubric_item; + console.log(typeof(store_rubric_item)); + console.log("store_rubric_item is "+store_rubric_item); console.log("updating sheets now... for question "+rubric_question+"for item "+rubric_item); console.log("comment_info is "+comment_info); // a comment was just inserted, update the google sheets to keep count & log this @@ -120,6 +126,7 @@ function updateSheets(action, rubric_question, rubric_item, comment_info, commen if (rubric_item != undefined) { rubric_item = rubric_item.replace(/"/g, '\\"').replace(/'/g, "\\'"); + console.log("rubric_item after change: "+rubric_item); } var xhr2 = new XMLHttpRequest(); @@ -249,6 +256,7 @@ function saveNewComment() { if (already_there) continue; var comment_length = comment.split(" ").length; + console.log("storeed cat before store "+store_category) // rubric question number (b) = items.rubric_number // if comment = one of the inserted comments, original id (e) = that inserted comment's id // then remove that comment from inserted comments @@ -257,8 +265,8 @@ function saveNewComment() { // category (h) = 0 // frequency (i) = 1 // frequency orig (j) = 1 - values += '[ "", "' + rubric_number + '", "", "", "", "' + - comment + '", "' + comment_length + '", "0", "1", "1", "", "' + user_id + '"' + + values += '[ "", "' + rubric_number + '", "", "'+store_rubric_item+'","", "' + + comment + '", "' + comment_length + '", "'+store_category+'", "1", "1", "", "' + user_id + '"' + ' ],' } @@ -268,7 +276,7 @@ function saveNewComment() { // be sure to include original comment id for (var comment_id in inserted_comments) { if (inserted_comments[comment_id] != "") { - values += '[ "", "' + rubric_number + '", "", "", "' + comment_id + '", "' + + values += '[ "", "' + rubric_number + '", "", "'+store_rubric_item+","+ comment_id + '", "' + inserted_comments[comment_id] + '", "' + inserted_comments[comment_id].split(" ").length + '", "0", "1", "1", "", "' + user_id + '"' + ' ],' @@ -354,7 +362,7 @@ chrome.runtime.onMessage.addListener(function(request, sender, sendResponse) { loadSpreadsheet(); sendResponse("done"); } else if (request.action == "logEvent") { - updateSheets("comment", request.rubric_question, request.rubric_item, request.comment_info, request.comment); + updateSheets("comment", request.rubric_question, request.rubric_item, request.comment_info, request.comment,request.comment_category); sendResponse("event logged"); } else if (request.action == "logShowSetting") { updateSheets("change setting"); diff --git a/content_script.js b/content_script.js index 76651ad..0c0e516 100644 --- a/content_script.js +++ b/content_script.js @@ -1,16 +1,19 @@ +//NOTE: rubric_item is for the rubric item itself(i.e.:-0.5) + //note before start: refer to background.js for why there //are comment[0,1,2,blabla] //comment[1]==rubric_number +//comment[3]==rubric_item //comment[4]==comment_id //comment[5]==comment text itself //comment[6]==length of comment text(string) //comment[8]==frequency //comment[11]==user_id - var student_id; var rubric_name; var rubric_number; //the question itself +var category_1; //category is the actionable, justifiable, and specific var user_id; var button_url; var full_comments; @@ -81,11 +84,21 @@ function storeAndPrintAllComments(comments) { full_sorted_comments = comments; console.log("in store and print all comments"); + rubric_item_dict={}; + $(".rubricItem").each(function(){ + var num=$(this).children("button").html(); + console.log("num is "+num); + var item=$(this).children().children().html(); + console.log("item IIS "+item); + rubric_item_dict[num]=item; + }); + //console.log("val for rubric_item_dict[1] "+rubric_item_dict[1]); $(".rubricItem--key").each(function(ind) { // don't show suggs for None rubric item if (ind < num_rubric_items[rubric_number] && comments[ind].length > 0) { - console.log("rubric item " + ind); - storeAndPrintComments(comments[ind], ind, ind); + console.log("rubric item " + rubric_item_dict[ind+1]); + var rub=rubric_item_dict[ind+1]; + storeAndPrintComments(rub,comments[ind], ind, ind); console.log("storing comments for rubric item " + ind); console.log(comments[ind]); } @@ -99,16 +112,25 @@ function storeAndPrintAllComments(comments) { // id_num is the rubric item's HTML id (a long number) // index is its index in the list of rubric items // searching = true if this was called by the search function -function storeAndPrintComments(comments, id_num, index, searching) { +function storeAndPrintComments(rub,comments, id_num, index, searching) { console.log("id num in store and print "+id_num); + id_num=id_num+1; + fit_comments=comments.filter(function(comment){ + return comment[3]==rub; + }); + comments=fit_comments; // specifies which rubric item suggestion box we are adding to var selector_addition = "#suggestion_box_" + id_num; - $(selector_addition + " .comments_good").html(""); $(selector_addition + " .comments_bad").html(""); $(selector_addition + " .comments_should").html(""); + //if comments is empty, just return + if(comments.length==0){ + return; + } + // sort comments ascending by length comments = comments.sort(function(info1, info2) { var length1 = parseInt(info1[6]); @@ -150,7 +172,7 @@ function storeAndPrintComments(comments, id_num, index, searching) { comments = comments_non0.concat(comments_0); - //console.log(comments); + console.log(comments); // get max and min frequency var max_freq = parseInt(comments[0][8]); var min_freq = parseInt(comments[0][8]); @@ -249,9 +271,10 @@ function storeAndPrintComments(comments, id_num, index, searching) { comment = comment.replace(/"/g, '\\"').replace(/'/g, "\\'"); - var rubric_item = $(this).parents("li").find(".rubricItem--pointsAndDescription").find(".rubricField-points").html(); - - console.log("inserting comment: " + comment); + var rubric_item = $(this).parents("li").find(".rubricItem--pointsAndDescription").find(".rubricField-points").html(); + var category=category_1; + console.log("inserting comment: " + comment); + console.log("comment category "+category) console.log(full_sorted_comments[this_index]); console.log(full_sorted_comments[this_index][btn_id_num]); var comment_id = full_sorted_comments[this_index][btn_id_num][0]; @@ -259,7 +282,8 @@ function storeAndPrintComments(comments, id_num, index, searching) { chrome.runtime.sendMessage({action: "logEvent", comment_info: full_sorted_comments[this_index][btn_id_num], rubric_question: rubric_name, - rubric_item: rubric_item, + rubric_item: rubric_item, + comment_category:category, comment: comment }, function(response) { console.log(response); @@ -419,6 +443,27 @@ function injectSuggestions() { } }); + + $(".adjustmentForm").append( + "
"+ + "
"+ + ""+ + "
"+ + "
" + ); + + $(document).ready(function(){ + $("select.category").change(function(){ + var selectedCat = $(this).children("option:selected").val(); + category_1=selectedCat; + console.log("category value "+category_1) + //alert("You have selected the category - " + selectedCat); + }); + }); $(".comment_view_text").keydown(function() { console.log("this id "+this.id); updateCommentBox(this.id); }); From 7aa890d453fd737acecd967016a83a3dd44ff027 Mon Sep 17 00:00:00 2001 From: Zhaoyi Huang Date: Thu, 18 Jul 2019 14:32:54 -0700 Subject: [PATCH 05/68] first step to cut down the commentbox in suggestions list of rubric items --- content_script.js | 32 +++++++++++++++++--------------- 1 file changed, 17 insertions(+), 15 deletions(-) diff --git a/content_script.js b/content_script.js index 0c0e516..92e23fd 100644 --- a/content_script.js +++ b/content_script.js @@ -1,5 +1,5 @@ -//NOTE: rubric_item is for the rubric item itself(i.e.:-0.5) - +//NOTE: rubric_item is for the rubric item itself(i.e.:-0.5), now it would be fetch from the +//submissionGraderPoints>span //note before start: refer to background.js for why there //are comment[0,1,2,blabla] //comment[1]==rubric_number @@ -11,9 +11,9 @@ //comment[11]==user_id var student_id; +var category_1=0; var rubric_name; var rubric_number; //the question itself -var category_1; //category is the actionable, justifiable, and specific var user_id; var button_url; var full_comments; @@ -271,10 +271,9 @@ function storeAndPrintComments(rub,comments, id_num, index, searching) { comment = comment.replace(/"/g, '\\"').replace(/'/g, "\\'"); - var rubric_item = $(this).parents("li").find(".rubricItem--pointsAndDescription").find(".rubricField-points").html(); - var category=category_1; + //var rubric_item = $(this).parents("li").find(".rubricItem--pointsAndDescription").find(".rubricField-points").html(); + var rubric_item=$(".rubricItem--key-applied").siblings(".rubricItem--pointsAndDescription").children("button").html(); console.log("inserting comment: " + comment); - console.log("comment category "+category) console.log(full_sorted_comments[this_index]); console.log(full_sorted_comments[this_index][btn_id_num]); var comment_id = full_sorted_comments[this_index][btn_id_num][0]; @@ -283,10 +282,11 @@ function storeAndPrintComments(rub,comments, id_num, index, searching) { comment_info: full_sorted_comments[this_index][btn_id_num], rubric_question: rubric_name, rubric_item: rubric_item, - comment_category:category, + comment_category:category_1, comment: comment }, function(response) { - console.log(response); + console.log(response); + console.log("category RRRR: "+category); }); }); @@ -458,9 +458,8 @@ function injectSuggestions() { $(document).ready(function(){ $("select.category").change(function(){ - var selectedCat = $(this).children("option:selected").val(); - category_1=selectedCat; - console.log("category value "+category_1) + category_1 = $(this).children("option:selected").val(); + console.log("category value "+category_1); //alert("You have selected the category - " + selectedCat); }); }); @@ -471,13 +470,16 @@ function injectSuggestions() { //console.log(this); //I assume that rubric_item variable is the score like -0.5 - var rubric_item = $(this).parents("li").find(".rubricItem--pointsAndDescription").find(".rubricField-points").html(); + //var rubric_item = $(this).parents("li").find(".rubricItem--pointsAndDescription").find(".rubricField-points").html(); + //first step to make the ONLY comment box available + var rubric_item=$(".rubricItem--key-applied").siblings(".rubricItem--pointsAndDescription").children("button").html(); // tell chrome to log the event that we just clicked the comment box chrome.runtime.sendMessage({action: "logFocus", rubric_question: rubric_name, rubric_item: rubric_item }, function(response) { console.log("logging focus: " + response); + //console.log("RRRRRRRRR "+rubric_item); }); }); @@ -487,8 +489,8 @@ function injectSuggestions() { var action = $("#see_suggestions_" + selected_id_num + " .toggle_word").html(); toggleSuggestionBox(selected_id_num); - var rubric_item = $(this).parents("li").find(".rubricItem--pointsAndDescription").find(".rubricField-points").html(); - + //var rubric_item = $(this).parents("li").find(".rubricItem--pointsAndDescription").find(".rubricField-points").html(); + var rubric_item=$(".rubricItem--key-applied").siblings(".rubricItem--pointsAndDescription").children("button").html(); // tell chrome to log the event that we just clicked see/hide chrome.runtime.sendMessage({action: "logSuggestion" + action, rubric_question: rubric_name, @@ -516,7 +518,7 @@ function injectSuggestions() { $(function() { rubric_name = $(".submissionGraderSidebar--title > span > span").html(); - + //console.log("RRRRRDD "+rubric_item); //TODO: get student id student_id = "temp"; rubric_number = rubric_name.split(":")[0]; From 2a63a182a4ba60eb046933be5aec551ccdba0bb8 Mon Sep 17 00:00:00 2001 From: Zhaoyi Huang Date: Mon, 22 Jul 2019 15:25:40 -0700 Subject: [PATCH 06/68] update functionality, category selections --- background.js | 12 +++----- content_script.js | 78 +++++++++++++++++++++++++++++------------------ suggestions.css | 12 ++++++++ 3 files changed, 65 insertions(+), 37 deletions(-) diff --git a/background.js b/background.js index 260d7bc..c29fdb3 100644 --- a/background.js +++ b/background.js @@ -8,7 +8,6 @@ var user_id; var always_show; var on_grading_page; var store_rubric_item; -var store_category="0"; function loadSpreadsheet() { console.log("loadding spreadsheet now.....") @@ -58,9 +57,7 @@ function loadSpreadsheet() { }); } -function updateSheets(action, rubric_question, rubric_item, comment_info, comment,category) { - store_category=category; - console.log("category to be stored= "+category) +function updateSheets(action, rubric_question, rubric_item, comment_info, comment) { store_rubric_item=rubric_item; console.log(typeof(store_rubric_item)); console.log("store_rubric_item is "+store_rubric_item); @@ -256,7 +253,6 @@ function saveNewComment() { if (already_there) continue; var comment_length = comment.split(" ").length; - console.log("storeed cat before store "+store_category) // rubric question number (b) = items.rubric_number // if comment = one of the inserted comments, original id (e) = that inserted comment's id // then remove that comment from inserted comments @@ -266,7 +262,7 @@ function saveNewComment() { // frequency (i) = 1 // frequency orig (j) = 1 values += '[ "", "' + rubric_number + '", "", "'+store_rubric_item+'","", "' + - comment + '", "' + comment_length + '", "'+store_category+'", "1", "1", "", "' + user_id + '"' + + comment + '", "' + comment_length + '", "1", "1", "1", "", "' + user_id + '"' + ' ],' } @@ -278,7 +274,7 @@ function saveNewComment() { if (inserted_comments[comment_id] != "") { values += '[ "", "' + rubric_number + '", "", "'+store_rubric_item+","+ comment_id + '", "' + inserted_comments[comment_id] + '", "' + inserted_comments[comment_id].split(" ").length + - '", "0", "1", "1", "", "' + user_id + '"' + + '", "1", "1", "1", "", "' + user_id + '"' + ' ],' } } @@ -362,7 +358,7 @@ chrome.runtime.onMessage.addListener(function(request, sender, sendResponse) { loadSpreadsheet(); sendResponse("done"); } else if (request.action == "logEvent") { - updateSheets("comment", request.rubric_question, request.rubric_item, request.comment_info, request.comment,request.comment_category); + updateSheets("comment", request.rubric_question, request.rubric_item, request.comment_info, request.comment); sendResponse("event logged"); } else if (request.action == "logShowSetting") { updateSheets("change setting"); diff --git a/content_script.js b/content_script.js index 92e23fd..76e42c1 100644 --- a/content_script.js +++ b/content_script.js @@ -11,7 +11,6 @@ //comment[11]==user_id var student_id; -var category_1=0; var rubric_name; var rubric_number; //the question itself var user_id; @@ -282,7 +281,6 @@ function storeAndPrintComments(rub,comments, id_num, index, searching) { comment_info: full_sorted_comments[this_index][btn_id_num], rubric_question: rubric_name, rubric_item: rubric_item, - comment_category:category_1, comment: comment }, function(response) { console.log(response); @@ -432,41 +430,44 @@ function injectSuggestions() { '
"I like..."
' + "
" + "
" + - '
' + - '' + - '
' + "
" ); $(this).find(".comment_view_text").val($(".form--textarea").val()); } }); - - $(".adjustmentForm").append( + //TODO + $( "
"+ - "
"+ - ""+ - "
"+ + "Is specific"+ + "Is actionable"+ + "Is justified"+ "
" - ); + ).insertAfter(".form--textArea"); + + //disable the nextQuestion button until all checkbox clicked $(document).ready(function(){ - $("select.category").change(function(){ - category_1 = $(this).children("option:selected").val(); - console.log("category value "+category_1); - //alert("You have selected the category - " + selectedCat); - }); + $(".actionBar--action-next").attr('disabled',true); + }); + + $(document).change(function(){ + var count=$('input[name="category"]:checked').length; + if(count==3){ + $(".actionBar--action-next").attr('disabled',false); + }else{ + $(".actionBar--action-next").attr('disabled',true); + } + + // $(".catCheck").change(function(){ + // $(".actionBar--action-next").attr('disabled',!this.checked); + // //alert("You have selected the category - " + selectedCat); + // }).change(); }); - $(".comment_view_text").keydown(function() { - console.log("this id "+this.id); - updateCommentBox(this.id); }); - $(".comment_view_text").focus(function() { + // $(".comment_view_text").keydown(function() { + // console.log("this id "+this.id); + // updateCommentBox(this.id); }); + $(".form--textArea").focus(function() { //console.log(this); //I assume that rubric_item variable is the score like -0.5 @@ -539,9 +540,28 @@ $(function() { console.log(original_text); // event listener for whenever comment box updates, to update all the comment views too - $(".form--textArea").keydown(function() { - updateCommentViews(); - }); + $(".form--textArea").keydown(function() { + setTimeout(function(){ + + // save current text + comment_text = $('.form--textArea').val(); + + if (original_text != "") { + var split = comment_text.split(original_text); + if (split.length == 2) { + comment_text = split[1]; + } else { + comment_text = split[0]; + } + } + console.log("got updated comments: ") + console.log(comment_text); + + chrome.storage.local.set({comment_text: comment_text, comments_inserted: comments_inserted, + comments_rubric_number: rubric_number, saved: false}); + }, 100); + + }); $(".form--textArea").focus(function() { // tell chrome to log the event that we just clicked the comment box diff --git a/suggestions.css b/suggestions.css index eeaa1d5..b25935e 100644 --- a/suggestions.css +++ b/suggestions.css @@ -78,4 +78,16 @@ width: 100%; height: 100%; overflow-y: scroll; +} + +input[type=checkbox]{ + display: inline-block; + position: inherit !important; + -webkit-appearance: checkbox !important; +} + +a[disabled="disabled"] { + opacity: 0.5; + pointer-events: none; + cursor: default; } \ No newline at end of file From c84a5198055b1e40ca9408f5889fe6e09901b3fd Mon Sep 17 00:00:00 2001 From: Zhaoyi Huang Date: Mon, 22 Jul 2019 20:42:22 -0700 Subject: [PATCH 07/68] add id field --- background.js | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/background.js b/background.js index c29fdb3..5da8c88 100644 --- a/background.js +++ b/background.js @@ -8,6 +8,7 @@ var user_id; var always_show; var on_grading_page; var store_rubric_item; +var last_row=1;//fetch the last row in the spreadsheets, used for the id field function loadSpreadsheet() { console.log("loadding spreadsheet now.....") @@ -40,11 +41,18 @@ function loadSpreadsheet() { xhr.open("GET", "https://sheets.googleapis.com/v4/spreadsheets/" + comment_sheet_id + "/values/W16-A10!A2:K10000", true); + xhr.setRequestHeader('Authorization','Bearer ' + token); xhr.responseType = "json"; xhr.send(); + xhr.onload = function (oEvent) { + arrayBuffer = xhr.response; + last_row=arrayBuffer.values.length+1; + console.log("last row is " + last_row); + } + } else { @@ -261,10 +269,10 @@ function saveNewComment() { // category (h) = 0 // frequency (i) = 1 // frequency orig (j) = 1 - values += '[ "", "' + rubric_number + '", "", "'+store_rubric_item+'","", "' + + values += '[ "'+parseInt(last_row+1)+'", "' + rubric_number + '", "", "'+store_rubric_item+'","", "' + comment + '", "' + comment_length + '", "1", "1", "1", "", "' + user_id + '"' + ' ],' - + last_row++; } } From 85c4fdf942ae068f3e3df4e36e9d33e4b6618ce6 Mon Sep 17 00:00:00 2001 From: Zhaoyi Huang Date: Tue, 23 Jul 2019 15:52:54 -0700 Subject: [PATCH 08/68] refresh the page when new things added, multiple additon through button possible --- content_script.js | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/content_script.js b/content_script.js index 76e42c1..32a4357 100644 --- a/content_script.js +++ b/content_script.js @@ -25,7 +25,7 @@ var comments_inserted = {}; // list with text of comments they have inserted on // this is specific to A6 //follow the demo, the key is the question itself and the value is the num of rubric items -var num_rubric_items = {1: 4, 2: 3, 3: 4, 4: 3, 5: 4, 6: 2, 7: 6}; +var num_rubric_items = {1: 20, 2: 20, 3: 20, 4: 20, 5: 20, 6: 20, 7: 20}; // take in a list of all the comments for this rubric question // return result: a list of lists where result[i] is a list holding the comments for rubric item i @@ -253,7 +253,7 @@ function storeAndPrintComments(rub,comments, id_num, index, searching) { // index of this rubric item = index of these comments in full_sorted_comments //* find the gradescope correspondence here*** - var this_index = $(this).parents("div").find(".search_text").attr('id').slice(-1); + var this_index = $(this).parents("div").find(".search_text").attr('id').slice(-1)-1; console.log(this_index); var comment = $(this).parents("tr").find(".comment_" + btn_id_num).html(); @@ -526,6 +526,18 @@ $(function() { //console.log("rubric number: " + rubric_number); var rubric_name_lower = rubric_name.toLowerCase(); + + //Add a new rubric item, then it should refresh on thei + $(document).on('DOMNodeInserted', function(e) { + console.log("should REFRESH!"); + //console.log(e.target); + if ( $(e.target).hasClass('rubricEntryDragContainer') ) { + //element with rubricItem was inserted, refresh the page + alert("Sorry dude, the page needs to be reloaded to update rubric items, click 'OK' to continue"); + window.location.reload(); + } + }); + // change true so that it only works on grading pages if (true) { From ee686a530f7f3b07b3378954cb07826e4d91d445 Mon Sep 17 00:00:00 2001 From: Zhaoyi Huang Date: Tue, 23 Jul 2019 20:41:25 -0700 Subject: [PATCH 09/68] change rubri item --- content_script.js | 45 +++++++++++++++++++++++++++++++-------------- 1 file changed, 31 insertions(+), 14 deletions(-) diff --git a/content_script.js b/content_script.js index 32a4357..03115b2 100644 --- a/content_script.js +++ b/content_script.js @@ -1,3 +1,16 @@ +//Special NOTE: change of rubric_item, the original rubric_item is based on the mark deducted. Thus, if the rubric +//change the score input, original related comments won't be displayed. Thus, now it changed to match the number related to item, +//if you want to store in the original way, copy the code below and change rubric item: +//var rubric_item=$(".rubricItem--key-applied").siblings(".rubricItem--pointsAndDescription").children("button").html(); +//and remember to add the dict to fetch the rubric item in the middle + // $(".rubricItem").each(function(){ + // var num=$(this).children("button").html(); + // console.log("num is "+num); + // var item=$(this).children().children().html(); + // console.log("item IIS "+item); + // rubric_item_dict[num]=item; + // }); + //NOTE: rubric_item is for the rubric item itself(i.e.:-0.5), now it would be fetch from the //submissionGraderPoints>span //note before start: refer to background.js for why there @@ -84,19 +97,12 @@ function storeAndPrintAllComments(comments) { console.log("in store and print all comments"); rubric_item_dict={}; - $(".rubricItem").each(function(){ - var num=$(this).children("button").html(); - console.log("num is "+num); - var item=$(this).children().children().html(); - console.log("item IIS "+item); - rubric_item_dict[num]=item; - }); + //console.log("val for rubric_item_dict[1] "+rubric_item_dict[1]); $(".rubricItem--key").each(function(ind) { // don't show suggs for None rubric item if (ind < num_rubric_items[rubric_number] && comments[ind].length > 0) { - console.log("rubric item " + rubric_item_dict[ind+1]); - var rub=rubric_item_dict[ind+1]; + var rub=ind+1; storeAndPrintComments(rub,comments[ind], ind, ind); console.log("storing comments for rubric item " + ind); console.log(comments[ind]); @@ -271,7 +277,7 @@ function storeAndPrintComments(rub,comments, id_num, index, searching) { comment = comment.replace(/"/g, '\\"').replace(/'/g, "\\'"); //var rubric_item = $(this).parents("li").find(".rubricItem--pointsAndDescription").find(".rubricField-points").html(); - var rubric_item=$(".rubricItem--key-applied").siblings(".rubricItem--pointsAndDescription").children("button").html(); + var rubric_item=$(".rubricItem--key-applied").html(); console.log("inserting comment: " + comment); console.log(full_sorted_comments[this_index]); console.log(full_sorted_comments[this_index][btn_id_num]); @@ -432,7 +438,7 @@ function injectSuggestions() { "
" + "" ); - $(this).find(".comment_view_text").val($(".form--textarea").val()); + //$(this).find(".comment_view_text").val($(".form--textarea").val()); } }); @@ -473,7 +479,7 @@ function injectSuggestions() { //I assume that rubric_item variable is the score like -0.5 //var rubric_item = $(this).parents("li").find(".rubricItem--pointsAndDescription").find(".rubricField-points").html(); //first step to make the ONLY comment box available - var rubric_item=$(".rubricItem--key-applied").siblings(".rubricItem--pointsAndDescription").children("button").html(); + var rubric_item=$(".rubricItem--key-applied").html(); // tell chrome to log the event that we just clicked the comment box chrome.runtime.sendMessage({action: "logFocus", rubric_question: rubric_name, @@ -491,7 +497,7 @@ function injectSuggestions() { toggleSuggestionBox(selected_id_num); //var rubric_item = $(this).parents("li").find(".rubricItem--pointsAndDescription").find(".rubricField-points").html(); - var rubric_item=$(".rubricItem--key-applied").siblings(".rubricItem--pointsAndDescription").children("button").html(); + var rubric_item=$(".rubricItem--key-applied").html(); // tell chrome to log the event that we just clicked see/hide chrome.runtime.sendMessage({action: "logSuggestion" + action, rubric_question: rubric_name, @@ -529,7 +535,7 @@ $(function() { //Add a new rubric item, then it should refresh on thei $(document).on('DOMNodeInserted', function(e) { - console.log("should REFRESH!"); + //console.log("should REFRESH!"); //console.log(e.target); if ( $(e.target).hasClass('rubricEntryDragContainer') ) { //element with rubricItem was inserted, refresh the page @@ -538,6 +544,17 @@ $(function() { } }); + // $('rubricEntryDragContainer').ready(function(){ + // console.log("AAAAAAAADASDAS in func"); + // if(!$(this).hasClass("rubricItem--key-applied")){ + // console.log("BBBBBBSAAA func"); + // $(".suggestion_container").css('display','none'); + // }else{ + // var id=$("rubricItem--key-applied").attr('id'); + // $('#suggestion_container_'+id).css('display','block'); + // } + + // }); // change true so that it only works on grading pages if (true) { From 302f36f37cd496e6a84291e2f5be24dca216e67f Mon Sep 17 00:00:00 2001 From: Zhaoyi Huang Date: Wed, 24 Jul 2019 20:04:34 -0700 Subject: [PATCH 10/68] add comment feature of should or justified --- content_script.js | 31 +++++++++++++++++++------------ suggestions.css | 3 ++- 2 files changed, 21 insertions(+), 13 deletions(-) diff --git a/content_script.js b/content_script.js index 03115b2..977d217 100644 --- a/content_script.js +++ b/content_script.js @@ -446,8 +446,8 @@ function injectSuggestions() { $( "
"+ "Is specific"+ - "Is actionable"+ - "Is justified"+ + "Is actionable"+ + "Is justified"+ "
" ).insertAfter(".form--textArea"); @@ -457,6 +457,18 @@ function injectSuggestions() { $(".actionBar--action-next").attr('disabled',true); }); + $(document).change(function(){ + comment_text = $('.form--textArea').val(); + comment_split=comment_text.split(" "); + if (comment_split.has('may')||comment_split.has('should')){ + $('.catCheck--act').prop('checked',true); + } + if(comment_split.has('because')||comment_split.has('so')){ + $('.catCheck--just').prop('checked',true); + } + + }); + $(document).change(function(){ var count=$('input[name="category"]:checked').length; if(count==3){ @@ -544,17 +556,12 @@ $(function() { } }); - // $('rubricEntryDragContainer').ready(function(){ - // console.log("AAAAAAAADASDAS in func"); - // if(!$(this).hasClass("rubricItem--key-applied")){ - // console.log("BBBBBBSAAA func"); - // $(".suggestion_container").css('display','none'); - // }else{ - // var id=$("rubricItem--key-applied").attr('id'); - // $('#suggestion_container_'+id).css('display','block'); - // } + $(document).ready(function(){ + $("rubricItem--key").click(function(){ + $(".suggestion_container").css('display','block'); + }); - // }); + }); // change true so that it only works on grading pages if (true) { diff --git a/suggestions.css b/suggestions.css index b25935e..92d4ecb 100644 --- a/suggestions.css +++ b/suggestions.css @@ -90,4 +90,5 @@ a[disabled="disabled"] { opacity: 0.5; pointer-events: none; cursor: default; -} \ No newline at end of file +} + From d277fa40de065d4563f9b31d857cd388f3280fb0 Mon Sep 17 00:00:00 2001 From: Zhaoyi Huang Date: Thu, 25 Jul 2019 15:49:13 -0700 Subject: [PATCH 11/68] done with toggle events when selection is done --- content_script.js | 37 ++++++++++++++++++++++++++++++------- 1 file changed, 30 insertions(+), 7 deletions(-) diff --git a/content_script.js b/content_script.js index 977d217..572b736 100644 --- a/content_script.js +++ b/content_script.js @@ -15,6 +15,7 @@ //submissionGraderPoints>span //note before start: refer to background.js for why there //are comment[0,1,2,blabla] +//comment[0]==id(row number in google sheet) //comment[1]==rubric_number //comment[3]==rubric_item //comment[4]==comment_id @@ -445,7 +446,9 @@ function injectSuggestions() { //TODO $( "
"+ - "Is specific"+ + "If you believe your comment meets the criteria listed below, check them."+ + "
"+ + "Is specific"+ "Is actionable"+ "Is justified"+ "
" @@ -457,13 +460,14 @@ function injectSuggestions() { $(".actionBar--action-next").attr('disabled',true); }); + //TODO: change the context, it takes a bit of time to reflect $(document).change(function(){ comment_text = $('.form--textArea').val(); comment_split=comment_text.split(" "); - if (comment_split.has('may')||comment_split.has('should')){ + if (comment_split.includes('may')||comment_split.includes('should')){ $('.catCheck--act').prop('checked',true); } - if(comment_split.has('because')||comment_split.has('so')){ + if(comment_split.includes('because')||comment_split.includes('so')){ $('.catCheck--just').prop('checked',true); } @@ -477,11 +481,30 @@ function injectSuggestions() { $(".actionBar--action-next").attr('disabled',true); } - // $(".catCheck").change(function(){ - // $(".actionBar--action-next").attr('disabled',!this.checked); - // //alert("You have selected the category - " + selectedCat); - // }).change(); + + }); + + //hide all the suggestion first, then let the related suggestions pop up as needed + $(document).ready(function(){ + hideAllSuggestions(); + id_already_there=$('.rubricItem--key-applied').html(); + if (!$('suggestion_container_'+id_already_there).is(":visible")) { + toggleSuggestionBox(id_already_there); + } }); + + //toggle event for the suggesiton box + $('.rubricItem--key').click(function(){ + var id=$(this).html(); + console.log("IIID is: "+id); + if (!$('suggestion_container_'+id).is(":visible")) { + toggleSuggestionBox(id); + } + //$('suggestion_container_'+id).toggle(); + //toggleSuggestionBox(id); + }); + + // $(".comment_view_text").keydown(function() { // console.log("this id "+this.id); // updateCommentBox(this.id); }); From b1e36d6c528ba0873724cf937f43ae11d7f4719b Mon Sep 17 00:00:00 2001 From: Zhaoyi Huang Date: Wed, 31 Jul 2019 10:06:49 -0700 Subject: [PATCH 12/68] add features --- background.js | 2 +- content_script.js | 68 ++++++++++++++++++++++++++++++++++------------- 2 files changed, 50 insertions(+), 20 deletions(-) diff --git a/background.js b/background.js index 5da8c88..a66bd11 100644 --- a/background.js +++ b/background.js @@ -90,7 +90,7 @@ function updateSheets(action, rubric_question, rubric_item, comment_info, commen } }; - var row = parseInt(comment_info[0]) + 2; + var row = parseInt(comment_info[0]); var cur_frequency = parseInt(comment_info[8]); console.log("comment was from row " + row); console.log("frequency was " + cur_frequency); diff --git a/content_script.js b/content_script.js index 572b736..317ea3e 100644 --- a/content_script.js +++ b/content_script.js @@ -16,6 +16,7 @@ //note before start: refer to background.js for why there //are comment[0,1,2,blabla] //comment[0]==id(row number in google sheet) + //comment[1]==rubric_number //comment[3]==rubric_item //comment[4]==comment_id @@ -41,6 +42,11 @@ var comments_inserted = {}; // list with text of comments they have inserted on //follow the demo, the key is the question itself and the value is the num of rubric items var num_rubric_items = {1: 20, 2: 20, 3: 20, 4: 20, 5: 20, 6: 20, 7: 20}; +$(document).ready(function(){ + original_text=$('.form--textArea').val(); +}); + + // take in a list of all the comments for this rubric question // return result: a list of lists where result[i] is a list holding the comments for rubric item i function filterComments(comments) { @@ -104,7 +110,7 @@ function storeAndPrintAllComments(comments) { // don't show suggs for None rubric item if (ind < num_rubric_items[rubric_number] && comments[ind].length > 0) { var rub=ind+1; - storeAndPrintComments(rub,comments[ind], ind, ind); + storeAndPrintComments(rub,comments[ind], ind, ind,false,false); console.log("storing comments for rubric item " + ind); console.log(comments[ind]); } @@ -118,7 +124,7 @@ function storeAndPrintAllComments(comments) { // id_num is the rubric item's HTML id (a long number) // index is its index in the list of rubric items // searching = true if this was called by the search function -function storeAndPrintComments(rub,comments, id_num, index, searching) { +function storeAndPrintComments(rub,comments, id_num, index, searching,PDF) { console.log("id num in store and print "+id_num); id_num=id_num+1; @@ -127,10 +133,14 @@ function storeAndPrintComments(rub,comments, id_num, index, searching) { }); comments=fit_comments; // specifies which rubric item suggestion box we are adding to + if(PDF){ + var selector_addition="#suggestion_box_pdf_"+id_num + }else{ var selector_addition = "#suggestion_box_" + id_num; + } $(selector_addition + " .comments_good").html(""); - $(selector_addition + " .comments_bad").html(""); - $(selector_addition + " .comments_should").html(""); + // $(selector_addition + " .comments_bad").html(""); + // $(selector_addition + " .comments_should").html(""); //if comments is empty, just return if(comments.length==0){ @@ -210,20 +220,22 @@ function storeAndPrintComments(rub,comments, id_num, index, searching) { if (comments[i][10] != undefined) { blank_values = comments[i][10].split(", "); } - + if(!PDF){ var string = "" + "" + "" + comment + "" + ""; - + }else{ + var string = "" + + "" + + "" + comment + "" + + ""; + } if (category == "1") { $(selector_addition + " .comments_good").append(string); - } else if (category == "2") { - $(selector_addition + " .comments_bad").append(string); - } else if (category == "3") { - $(selector_addition + " .comments_should").append(string); - } else { + }else { $(selector_addition + " .comments_should").append("error with comment category"); } @@ -241,7 +253,9 @@ function storeAndPrintComments(rub,comments, id_num, index, searching) { } } - + + + if (!searching) { // save these for the button callback's use @@ -311,6 +325,7 @@ function updateCommentViews(view_id) { if (original_text != "") { var split = comment_text.split(original_text); + console.log("split is: "+split); if (split.length == 2) { comment_text = split[1]; } else { @@ -430,11 +445,7 @@ function injectSuggestions() { "
" + "
" + "" + - '
"I wish..."
' + - "
" + - '
"I suggest..."
' + - "
" + - '
"I like..."
' + + '
Suggestions:
' + "
" + "
" + "
" @@ -505,6 +516,25 @@ function injectSuggestions() { }); +$(document).change(function(){ + if($('.taBox--textArea')){ + rubric_item=$(".rubricItem--key-applied").html() + $('.taBox--textArea').append( + + "
" + + "
" + + '
"I like..."
' + + "
" + + "
" + + "
" + ); + storeAndPrintComments(rubric_item,full_sorted_comments[rubric_item-1], rubric_item-1, rubric_item-1, false,true); + } + +}); + + + // $(".comment_view_text").keydown(function() { // console.log("this id "+this.id); // updateCommentBox(this.id); }); @@ -594,7 +624,7 @@ $(function() { button_url = chrome.extension.getURL("button.png"); // get text currently in comment box - original_text = $(".form--textArea").val(); + //original_text = $(".form--textArea").val(); console.log("original text:"); console.log(original_text); @@ -604,9 +634,9 @@ $(function() { // save current text comment_text = $('.form--textArea').val(); - if (original_text != "") { var split = comment_text.split(original_text); + console.log("comment split AAA: "+split); if (split.length == 2) { comment_text = split[1]; } else { From 4455a71a5f61532c1bb6e1760ef8f42152ff370a Mon Sep 17 00:00:00 2001 From: Zhaoyi Huang Date: Tue, 6 Aug 2019 15:54:47 -0700 Subject: [PATCH 13/68] change the selection of rubric items to be both click/keyboard --- content_script.js | 101 +++++++++++++++++++++++++++++++++------------- 1 file changed, 72 insertions(+), 29 deletions(-) diff --git a/content_script.js b/content_script.js index 317ea3e..4d94729 100644 --- a/content_script.js +++ b/content_script.js @@ -497,38 +497,76 @@ function injectSuggestions() { //hide all the suggestion first, then let the related suggestions pop up as needed $(document).ready(function(){ + if(!always_show){ hideAllSuggestions(); id_already_there=$('.rubricItem--key-applied').html(); if (!$('suggestion_container_'+id_already_there).is(":visible")) { toggleSuggestionBox(id_already_there); } + } }); - //toggle event for the suggesiton box - $('.rubricItem--key').click(function(){ - var id=$(this).html(); - console.log("IIID is: "+id); - if (!$('suggestion_container_'+id).is(":visible")) { - toggleSuggestionBox(id); + + +//Things in here is to make the selection of rubric items can be both be clicked/by keyboard +// Select the node that will be observed for mutations +const targetNode = document.getElementsByClassName('rubricItem--key'); +console.log(targetNode); + +// Options for the observer (which mutations to observe) +const config = { attributes: true, childList: true, subtree: true }; + + +const callback = function(mutationsList, observer) { + for(let mutation of mutationsList) { + if (mutation.type === 'childList') { + console.log('A child node has been added or removed.'); + } + else if (mutation.type === 'attributes') { + var classList = mutation.target.className; + if(classList.indexOf("rubricItem--key-applied")>=0){ + if(!always_show){ + var id=$('.rubricItem--key-applied').html(); + console.log("IIID is: "+id); + if (!$('suggestion_container_'+id).is(":visible")) { + toggleSuggestionBox(id); + } + } + }else{ + var id=$(mutation.target).html(); + console.log("IIID dis appear is: "+id); + if (!$('suggestion_container_'+id).is(":visible")) { + toggleSuggestionBox(id); + } } - //$('suggestion_container_'+id).toggle(); - //toggleSuggestionBox(id); - }); + } + } +}; + +// Create an observer instance linked to the callback function +const observer = new MutationObserver(callback); -$(document).change(function(){ - if($('.taBox--textArea')){ +// // Start observing the target node for configured mutations +for(var i=0;i" + - "
" + - '
"I like..."
' + - "
" + - "
" + - "" - ); - storeAndPrintComments(rubric_item,full_sorted_comments[rubric_item-1], rubric_item-1, rubric_item-1, false,true); + // $("
" + + // "
" + + // '
"I like..."
' + + // "
" + + // "
" + + // "
" + // ).insertAfter('.taBox--textarea'); + $("
NAIVEEEEEE
").insertAfter('.taBox--textarea'); + //storeAndPrintComments(rubric_item,full_sorted_comments[rubric_item-1], rubric_item-1, rubric_item-1, false,true); } }); @@ -587,6 +625,11 @@ $(document).change(function(){ }); } + + + + + $(function() { rubric_name = $(".submissionGraderSidebar--title > span > span").html(); @@ -634,15 +677,15 @@ $(function() { // save current text comment_text = $('.form--textArea').val(); - if (original_text != "") { - var split = comment_text.split(original_text); - console.log("comment split AAA: "+split); - if (split.length == 2) { - comment_text = split[1]; - } else { - comment_text = split[0]; - } - } + // if (original_text != "") { + // var split = comment_text.split(original_text); + // console.log("comment split AAA: "+split); + // if (split.length == 2) { + // comment_text = split[1]; + // } else { + // comment_text = split[0]; + // } + // } console.log("got updated comments: ") console.log(comment_text); From 7f6fde96dad437688e5ecb1a7527974350f8082e Mon Sep 17 00:00:00 2001 From: Zhaoyi Huang Date: Tue, 6 Aug 2019 20:48:38 -0700 Subject: [PATCH 14/68] change num_var to fit all courses --- content_script.js | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/content_script.js b/content_script.js index 4d94729..8911643 100644 --- a/content_script.js +++ b/content_script.js @@ -40,7 +40,10 @@ var comments_inserted = {}; // list with text of comments they have inserted on // this is specific to A6 //follow the demo, the key is the question itself and the value is the num of rubric items -var num_rubric_items = {1: 20, 2: 20, 3: 20, 4: 20, 5: 20, 6: 20, 7: 20}; +var num_rubric_items = {1.1:20,1.2:20,1.3:20,1.4: 20,1.5: 20, 2.1:20,2.2:20, 2.3: 20, 3.1:20, 3.2:20, 3.3:20, 3.4:20, 3.5:20, 4.1:20, + 4.2: 20, 4.3:20, 4.4:20, 4.5:20, 5.1:20, 5.2:20,5.3:20, 5.4:20, 5.5:20,6.1:20,6.2:20,6.3:20,6.4: 20,6.5: 20, + 7.1:20,7.2:20,7.3:20,7.4: 20,7.5: 20, + 1: 20, 2: 20, 3: 20, 4: 20, 5: 20, 6: 20, 7: 20}; $(document).ready(function(){ original_text=$('.form--textArea').val(); @@ -647,7 +650,7 @@ $(function() { //console.log(e.target); if ( $(e.target).hasClass('rubricEntryDragContainer') ) { //element with rubricItem was inserted, refresh the page - alert("Sorry dude, the page needs to be reloaded to update rubric items, click 'OK' to continue"); + //alert("Sorry dude, the page needs to be reloaded to update rubric items, click 'OK' to continue"); window.location.reload(); } }); From 70c65be03d300243a2955fa97bc5b9219ad73c06 Mon Sep 17 00:00:00 2001 From: Zhaoyi Huang Date: Thu, 8 Aug 2019 16:02:05 -0700 Subject: [PATCH 15/68] modified noticies for checkboxes --- content_script.js | 127 +++++++++++++++++++++++++++++++++++++--------- suggestions.css | 14 +++++ 2 files changed, 116 insertions(+), 25 deletions(-) diff --git a/content_script.js b/content_script.js index 8911643..4bea839 100644 --- a/content_script.js +++ b/content_script.js @@ -137,7 +137,8 @@ function storeAndPrintComments(rub,comments, id_num, index, searching,PDF) { comments=fit_comments; // specifies which rubric item suggestion box we are adding to if(PDF){ - var selector_addition="#suggestion_box_pdf_"+id_num + var selector_addition="#suggestion_box_pdf_"+id_num; + }else{ var selector_addition = "#suggestion_box_" + id_num; } @@ -262,13 +263,52 @@ function storeAndPrintComments(rub,comments, id_num, index, searching,PDF) { if (!searching) { // save these for the button callback's use - full_sorted_comments[index] = comments; + full_sorted_comments[index] = comments; // hide search bar if there are 5 or less comments (unnecessary) - if (comments.length <= 6) { + if (comments.length <= 5) { $("#search_" + id_num).hide(); } } - + + + + //add the comment to the ta-box when the btn_pdf is clicked + $('.btn_pdf').unbind("click"); + $('.btn_pdf').click(function(obj){ + console.log("booooooo"); + var btn_id_num = $(this).attr("class").split(" ")[1]; + var comment= $(this).parents("tr").find(".comment_"+btn_id_num).html(); + var this_index_pdf = $(this).parents("div").attr('id').slice(-1)-1; + + //remove blanky stuff + var blank_loc = comment.indexOf("/, $(this).parents("tr").find(".blank").get(blank_i).value); + blank_i++; + blank_loc = comment.indexOf(""+ - "If you believe your comment meets the criteria listed below, check them."+ + "If you believe your comment meets the criteria listed below, check them."+ "
"+ "Is specific"+ "Is actionable"+ @@ -474,7 +515,6 @@ function injectSuggestions() { $(".actionBar--action-next").attr('disabled',true); }); - //TODO: change the context, it takes a bit of time to reflect $(document).change(function(){ comment_text = $('.form--textArea').val(); comment_split=comment_text.split(" "); @@ -487,6 +527,45 @@ function injectSuggestions() { }); + $(document).change(function(){ + if($('input[class="catCheck--spec"]').is(':checked')){ + if($('input[class="catCheck--act"]').is(':checked')){ + if($('input[class="catCheck--just"]').is(':checked')){ + $('#ins_check').text('good to go!'); + $('#ins_check').css('color','green'); + + }else{ + $('#ins_check').css('color','red'); + $('#ins_check').text('Your comment is specific and actionable, please justify'); + } + }else if($('input[class="catCheck--just"]').is(':checked')){ + $('#ins_check').css('color','red'); + $('#ins_check').text('Your comment is specific and justified, make it more actionable'); + }else{ + $('#ins_check').css('color','red'); + $('#ins_check').text('Your comment is specific, make it actionable and justified'); + } + }else if($('input[class="catCheck--act"]').is(':checked')){ + if($('input[class="catCheck--just"]').is(':checked')){ + $('#ins_check').css('color','red'); + $('#ins_check').text('Your comment is actionable and justified, just be specific'); + }else{ + $('#ins_check').css('color','red'); + $('#ins_check').text('Your comment is actionable only, make it better'); + } + }else if($('input[class="catCheck--just"]').is(':checked')){ + $('#ins_check').css('color','red'); + $('#ins_check').text('Your comment is justified only, make it better'); + }else{ + $('#ins_check').css('color','red'); + $('#ins_check').text('If you believe your comment meets the criteria listed below, check them.'); + } + + + }); + + + $(document).change(function(){ var count=$('input[name="category"]:checked').length; if(count==3){ @@ -528,6 +607,19 @@ const callback = function(mutationsList, observer) { else if (mutation.type === 'attributes') { var classList = mutation.target.className; if(classList.indexOf("rubricItem--key-applied")>=0){ + if($('.taBox--textarea')[0]){ + rubric_item=$(".rubricItem--key-applied").html() + + $("
" + + "
" + + '
"Suggestions:"
' + + "
" + + "
" + + "
" + ).insertAfter('.taBox--textarea'); + //$("
NAIVEEEEEE
").insertAfter('.taBox--textarea'); + storeAndPrintComments(rubric_item,full_sorted_comments[rubric_item-1], rubric_item-1, rubric_item-1, false,true); + } if(!always_show){ var id=$('.rubricItem--key-applied').html(); console.log("IIID is: "+id); @@ -536,6 +628,7 @@ const callback = function(mutationsList, observer) { } } }else{ + $('.suggestion_container_pdf').remove(); var id=$(mutation.target).html(); console.log("IIID dis appear is: "+id); if (!$('suggestion_container_'+id).is(":visible")) { @@ -556,23 +649,7 @@ observer.observe(targetNode[i], config); } -$(document).ready(function(){ - if($('.taBox--textarea')[0]){ - console.log("baofengyu laiin"); - rubric_item=$(".rubricItem--key-applied").html() - - // $("
" + - // "
" + - // '
"I like..."
' + - // "
" + - // "
" + - // "
" - // ).insertAfter('.taBox--textarea'); - $("
NAIVEEEEEE
").insertAfter('.taBox--textarea'); - //storeAndPrintComments(rubric_item,full_sorted_comments[rubric_item-1], rubric_item-1, rubric_item-1, false,true); - } -}); diff --git a/suggestions.css b/suggestions.css index 92d4ecb..a2cc8db 100644 --- a/suggestions.css +++ b/suggestions.css @@ -92,3 +92,17 @@ a[disabled="disabled"] { cursor: default; } + +.suggestion_container_pdf{ + position: relative; + border: 1px solid black; +} + +.suggestion_box_pdf { + border: 1px solid #004ea3 !important; + height: 200px; + overflow-y: scroll !important; + background-color: rgba(74,74,74,0.03) !important; + position: relative; +} + From a969ebf4a14977ec33565fc0c2db96265f21670e Mon Sep 17 00:00:00 2001 From: Zhaoyi Huang Date: Thu, 8 Aug 2019 17:30:01 -0700 Subject: [PATCH 16/68] modified search function, make it work --- content_script.js | 43 ++++++++++++++++++++++++++++--------------- 1 file changed, 28 insertions(+), 15 deletions(-) diff --git a/content_script.js b/content_script.js index 4bea839..c926b39 100644 --- a/content_script.js +++ b/content_script.js @@ -78,16 +78,16 @@ function filterComments(comments) { }*/ // add comments for each rubric item - var i = 0; - while (i < num_rubric_items[rubric_number]) { + // var i = 0; + // while (i < num_rubric_items[rubric_number]) { result.push(comments.filter(function(comment) { /*var rubric_items = comment[2].split(" "); return rubric_items.includes(i.toString());*/ return comment[1]==rubric_number; //return true; })); - i++; - } + // i++; + // } // now if any of them turned out empty, use all the comments for that rubric item /*for (var j=0; j < result.length; j++) { @@ -110,12 +110,21 @@ function storeAndPrintAllComments(comments) { //console.log("val for rubric_item_dict[1] "+rubric_item_dict[1]); $(".rubricItem--key").each(function(ind) { + var i=0; + var com_for_item=[]; + for(i=0;i 0) { + if (ind < num_rubric_items[rubric_number] && com_for_item.length > 0) { var rub=ind+1; - storeAndPrintComments(rub,comments[ind], ind, ind,false,false); + storeAndPrintComments(rub,com_for_item, ind, ind,false,false); console.log("storing comments for rubric item " + ind); - console.log(comments[ind]); + //console.log(comments[ind]); } // else if (ind < num_rubric_items[rubric_number]) { // $("#search_" + ind).hide(); @@ -419,20 +428,22 @@ function searchComments(query, search_id) { var id_num = search_id.split("search_")[1]; var result_comments = []; //TODO:change box index, I think it should be 0 if we display all the comments? - var box_index = $("#" + id_num).index(); + var box_index = id_num; console.log("box index: "+box_index); - console.log("full comments has a thing: "+full_comments[0]); - var comments_to_search = full_comments[0]; - - for (var i = 0; i < comments_to_search.length; i++) { - var comment = comments_to_search[i]; + //console.log("full comments has a thing: "+typeof(Object.values(full_comments))); + var comments_to_search = full_comments; + console.log(full_comments); + for (var i = 0; i < comments_to_search[0].length; i++) { + var comment = comments_to_search[0][i]; + console.log(comment); if (comment[5].toLowerCase().includes(query.toLowerCase())) { + console.log(comment); result_comments.push(comment); } } console.log("calling store and print from search"); console.log(result_comments); - storeAndPrintComments(result_comments, id_num, $("#" + id_num).index(), true); + storeAndPrintComments(id_num,result_comments, id_num-1, id_num-1, true,false); } function toggleSuggestionBox(id_num) { @@ -788,10 +799,12 @@ $(function() { chrome.runtime.onMessage.addListener(function(request, sender, sendResponse) { console.log("got comments message"); if (request.comments) { + console.log("storing and printing comments"); + console.log(request.comments); //TODO: made the comments customized for each question(rubric_number) full_comments = filterComments(request.comments); - //console.log(full_comments); + console.log(full_comments); storeAndPrintAllComments(full_comments); sendResponse("stored"); // or a notification that the user changed the always show setting From 05243a27c09a57cbfe9522cd4c91aed4ca8096f3 Mon Sep 17 00:00:00 2001 From: Zhaoyi Huang Date: Thu, 8 Aug 2019 21:30:02 -0700 Subject: [PATCH 17/68] search refix --- content_script.js | 43 +++++++++++++++---------------------------- 1 file changed, 15 insertions(+), 28 deletions(-) diff --git a/content_script.js b/content_script.js index c926b39..74a03ed 100644 --- a/content_script.js +++ b/content_script.js @@ -78,16 +78,16 @@ function filterComments(comments) { }*/ // add comments for each rubric item - // var i = 0; - // while (i < num_rubric_items[rubric_number]) { + var i = 0; + while (i < num_rubric_items[rubric_number]) { result.push(comments.filter(function(comment) { /*var rubric_items = comment[2].split(" "); return rubric_items.includes(i.toString());*/ return comment[1]==rubric_number; //return true; })); - // i++; - // } + i++; + } // now if any of them turned out empty, use all the comments for that rubric item /*for (var j=0; j < result.length; j++) { @@ -110,21 +110,12 @@ function storeAndPrintAllComments(comments) { //console.log("val for rubric_item_dict[1] "+rubric_item_dict[1]); $(".rubricItem--key").each(function(ind) { - var i=0; - var com_for_item=[]; - for(i=0;i 0) { + if (ind < num_rubric_items[rubric_number] && comments[ind].length > 0) { var rub=ind+1; - storeAndPrintComments(rub,com_for_item, ind, ind,false,false); + storeAndPrintComments(rub,comments[ind], ind, ind,false,false); console.log("storing comments for rubric item " + ind); - //console.log(comments[ind]); + console.log(comments[ind]); } // else if (ind < num_rubric_items[rubric_number]) { // $("#search_" + ind).hide(); @@ -428,22 +419,20 @@ function searchComments(query, search_id) { var id_num = search_id.split("search_")[1]; var result_comments = []; //TODO:change box index, I think it should be 0 if we display all the comments? - var box_index = id_num; + var box_index = $("#" + id_num).index(); console.log("box index: "+box_index); - //console.log("full comments has a thing: "+typeof(Object.values(full_comments))); - var comments_to_search = full_comments; - console.log(full_comments); - for (var i = 0; i < comments_to_search[0].length; i++) { - var comment = comments_to_search[0][i]; - console.log(comment); + console.log("full comments has a thing: "+full_comments[full_comments.length-1]); + var comments_to_search = full_comments[full_comments.length-1]; + + for (var i = 0; i < comments_to_search.length; i++) { + var comment = comments_to_search[i]; if (comment[5].toLowerCase().includes(query.toLowerCase())) { - console.log(comment); result_comments.push(comment); } } console.log("calling store and print from search"); console.log(result_comments); - storeAndPrintComments(id_num,result_comments, id_num-1, id_num-1, true,false); + storeAndPrintComments(id_num,result_comments, id_num-1, id_num-1, true); } function toggleSuggestionBox(id_num) { @@ -799,12 +788,10 @@ $(function() { chrome.runtime.onMessage.addListener(function(request, sender, sendResponse) { console.log("got comments message"); if (request.comments) { - console.log("storing and printing comments"); - console.log(request.comments); //TODO: made the comments customized for each question(rubric_number) full_comments = filterComments(request.comments); - console.log(full_comments); + //console.log(full_comments); storeAndPrintAllComments(full_comments); sendResponse("stored"); // or a notification that the user changed the always show setting From fa6a8d4a37e247bcab1a89eaf11950a70f070b6d Mon Sep 17 00:00:00 2001 From: Zhaoyi Huang Date: Fri, 9 Aug 2019 15:16:04 -0700 Subject: [PATCH 18/68] change sorting --- content_script.js | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/content_script.js b/content_script.js index 74a03ed..0102d8b 100644 --- a/content_script.js +++ b/content_script.js @@ -177,7 +177,16 @@ function storeAndPrintComments(rub,comments, id_num, index, searching,PDF) { } else { return 1; } - }); + }); + + + comments= comments.sort(function(info1,info2){ + var nameA= (info1[5].split(' '))[0].toLowerCase(); + var nameB = (info2[5].split(' '))[0].toLowerCase(); + if(nameA === nameB) return 0; + return nameA > nameB ? 1 : -1; + + }); //A10: put non-0 comments first (ones specific to this rubric question) var comments_0 = []; @@ -274,7 +283,7 @@ function storeAndPrintComments(rub,comments, id_num, index, searching,PDF) { //add the comment to the ta-box when the btn_pdf is clicked $('.btn_pdf').unbind("click"); - $('.btn_pdf').click(function(obj){ + $('.btn_pdf').on('click','.taBox',function(obj){ console.log("booooooo"); var btn_id_num = $(this).attr("class").split(" ")[1]; var comment= $(this).parents("tr").find(".comment_"+btn_id_num).html(); From cef6421b7d40853f1c038d12192cab162daeefe8 Mon Sep 17 00:00:00 2001 From: Zhaoyi Huang Date: Thu, 15 Aug 2019 14:37:30 -0700 Subject: [PATCH 19/68] update now, student badge added --- .DS_Store | Bin 0 -> 6148 bytes content_script.js | 104 +++++++++++++++++++++++--------------- dialog.png | Bin 0 -> 14713 bytes manifest.json | 7 ++- student_content_script.js | 48 ++++++++++++++++++ student_view.css | 0 suggestions.css | 8 +-- 7 files changed, 120 insertions(+), 47 deletions(-) create mode 100644 .DS_Store create mode 100644 dialog.png create mode 100644 student_content_script.js create mode 100644 student_view.css diff --git a/.DS_Store b/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..f16a76189f5ac7d6f879547be197facf100b0f75 GIT binary patch literal 6148 zcmeHKJx{|h5PgOYRRK|80JaPuv48|CON7e6%nyKm(H2?~S_0~pg};Kt--91e-q|js zNjtD0gzh5yCCVJihzJSp(JFXr zgDRj3{51vS+g(Egbu@8@?Du za-6puXOlfe81QJ*`w>^@qKA=K~UU8_kDxeCe z0$&Qq{1C7Rh8|OgcIsedw*bTvo2~I&eiVcgcnm$J4ta-W9F^#(#&0o/, $(this).parents("tr").find(".blank").get(blank_i).value); - blank_i++; - blank_loc = comment.indexOf(" span").text( + $(".taBox--displayText > span").text() + "\n" + comment + "\n"); + $(".taBox--textarea").text( + $(".taBox--textarea").text() + "\n" + comment + "\n"); + //console.log("making the insertion"); + }); + // $('.btn_pdf').on('click','.taBox',function(obj){ + // console.log("booooooo"); + - // simulate blur so the new comment will save - var event = new KeyboardEvent('keydown'); - document.querySelector('.taBox--textarea').dispatchEvent(event); + // // simulate blur so the new comment will save + // var event = new KeyboardEvent('keydown'); + // document.querySelector('.taBox--textarea').dispatchEvent(event); - }); + // }); @@ -510,7 +510,7 @@ function injectSuggestions() { $( "
"+ - "If you believe your comment meets the criteria listed below, check them."+ + "Check boxes below if you meet the critiria. If you don't want to comment, press 'z' for next question"+ "
"+ "Is specific"+ "Is actionable"+ @@ -524,6 +524,8 @@ function injectSuggestions() { $(".actionBar--action-next").attr('disabled',true); }); + + //trigger word function: if the $(document).change(function(){ comment_text = $('.form--textArea').val(); comment_split=comment_text.split(" "); @@ -540,31 +542,31 @@ function injectSuggestions() { if($('input[class="catCheck--spec"]').is(':checked')){ if($('input[class="catCheck--act"]').is(':checked')){ if($('input[class="catCheck--just"]').is(':checked')){ - $('#ins_check').text('good to go!'); + $('#ins_check').text('Good to go!'); $('#ins_check').css('color','green'); }else{ $('#ins_check').css('color','red'); - $('#ins_check').text('Your comment is specific and actionable, please justify'); + $('#ins_check').text('Your comment can be more justified.'); } }else if($('input[class="catCheck--just"]').is(':checked')){ $('#ins_check').css('color','red'); - $('#ins_check').text('Your comment is specific and justified, make it more actionable'); + $('#ins_check').text('Your comment can be more actionable.'); }else{ $('#ins_check').css('color','red'); - $('#ins_check').text('Your comment is specific, make it actionable and justified'); + $('#ins_check').text('Your comment could be improved to be more actionable and justified.'); } }else if($('input[class="catCheck--act"]').is(':checked')){ if($('input[class="catCheck--just"]').is(':checked')){ $('#ins_check').css('color','red'); - $('#ins_check').text('Your comment is actionable and justified, just be specific'); + $('#ins_check').text('Your comment is actionable and justified, just be specific.'); }else{ $('#ins_check').css('color','red'); - $('#ins_check').text('Your comment is actionable only, make it better'); + $('#ins_check').text('Your comment is actionable only, make it better.'); } }else if($('input[class="catCheck--just"]').is(':checked')){ $('#ins_check').css('color','red'); - $('#ins_check').text('Your comment is justified only, make it better'); + $('#ins_check').text('Your comment is justified only, make it better.'); }else{ $('#ins_check').css('color','red'); $('#ins_check').text('If you believe your comment meets the criteria listed below, check them.'); @@ -598,8 +600,18 @@ function injectSuggestions() { }); + $(document).ready(function(){ + $('.btnGroup--btn-flex').append("(page will refresh after add item)"); + }); + + + +const pdfTarget = document.getElementsByClassName('taBox-updatable'); + -//Things in here is to make the selection of rubric items can be both be clicked/by keyboard + + + //Things in here is to make the selection of rubric items can be both be clicked/by keyboard // Select the node that will be observed for mutations const targetNode = document.getElementsByClassName('rubricItem--key'); console.log(targetNode); @@ -620,7 +632,7 @@ const callback = function(mutationsList, observer) { rubric_item=$(".rubricItem--key-applied").html() $("
" + - "
" + + "
" + '
"Suggestions:"
' + "
" + "
" + @@ -628,6 +640,7 @@ const callback = function(mutationsList, observer) { ).insertAfter('.taBox--textarea'); //$("
NAIVEEEEEE
").insertAfter('.taBox--textarea'); storeAndPrintComments(rubric_item,full_sorted_comments[rubric_item-1], rubric_item-1, rubric_item-1, false,true); + } if(!always_show){ var id=$('.rubricItem--key-applied').html(); @@ -715,7 +728,14 @@ observer.observe(targetNode[i], config); } - +$(document).change(function(){ + if($('.taBox-is-editing')){ + console.log(btn_pdf_result); + $('.taBox--textarea').text( + $('.taBox--textarea').val()+ "\n" + btn_pdf_result + "\n" + ); + } +}); @@ -764,17 +784,17 @@ $(function() { $(".form--textArea").keydown(function() { setTimeout(function(){ - // save current text + // save current text, so that the thing will be stored, and this works comment_text = $('.form--textArea').val(); - // if (original_text != "") { - // var split = comment_text.split(original_text); - // console.log("comment split AAA: "+split); - // if (split.length == 2) { - // comment_text = split[1]; - // } else { - // comment_text = split[0]; - // } - // } + if (original_text != "") { + var split = comment_text.split(original_text); + console.log("comment split AAA: "+split); + if (split.length == 2) { + comment_text = split[1]; + } else { + comment_text = split[0]; + } + } console.log("got updated comments: ") console.log(comment_text); diff --git a/dialog.png b/dialog.png new file mode 100644 index 0000000000000000000000000000000000000000..c0a50747a38a1f0378f6b812b5bb1017ad78431e GIT binary patch literal 14713 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 literal 0 HcmV?d00001 diff --git a/manifest.json b/manifest.json index 6c10890..97a0535 100644 --- a/manifest.json +++ b/manifest.json @@ -32,6 +32,11 @@ "https://www.gradescope.com/courses/*/questions/*/submissions/*/grade","https://www.gradescope.com/courses/*/questions/*/submissions/*/grade?not_grouped=true"], "js": ["jquery-2.2.2.min.js", "content_script.js"], "css": ["suggestions.css"] + }, + { + "matches": ["https://www.gradescope.com/courses/*/assignments/*/submissions/*"], + "js": ["jquery-2.2.2.min.js","student_content_script.js"], + "css": ["student_view.css"] } ], "background": { @@ -44,5 +49,5 @@ "https://spreadsheets.google.com/feeds" ] }, - "web_accessible_resources": ["button.png"] + "web_accessible_resources": ["button.png","dialog.png"] } \ No newline at end of file diff --git a/student_content_script.js b/student_content_script.js new file mode 100644 index 0000000..7d529b0 --- /dev/null +++ b/student_content_script.js @@ -0,0 +1,48 @@ + +//this is the js file for adding the sbadge for student view in gradescope +var dialog_url; +dialog_url = chrome.extension.getURL("dialog.png"); +//var htmlobj= $("div[data-react-class]")[0].outerHTML; +var attrobj= jQuery.parseJSON($("div[data-react-class]").attr('data-react-props')); +console.log(attrobj); +var q_dict={} +var attrArray = attrobj['inorder_leaf_question_ids'] + +//console.log(typeof(attrArray[0])) +//console.log($("a[role='tab']").length); + +var q_array=$("a[role='tab']") +//console.log($(q_array[0]).attr('href')); +var i =0; +while(i',{style:'width:20px;height:20px',src:dialog_url})); + j++; +} \ No newline at end of file diff --git a/student_view.css b/student_view.css new file mode 100644 index 0000000..e69de29 diff --git a/suggestions.css b/suggestions.css index a2cc8db..8b1e974 100644 --- a/suggestions.css +++ b/suggestions.css @@ -94,15 +94,15 @@ a[disabled="disabled"] { .suggestion_container_pdf{ - position: relative; - border: 1px solid black; + position: relative !important; + border: 1px solid black !important; } .suggestion_box_pdf { border: 1px solid #004ea3 !important; - height: 200px; + height: 200px !important; overflow-y: scroll !important; background-color: rgba(74,74,74,0.03) !important; - position: relative; + position: relative !important; } From 5c9a3e56209db9224cc421346565d92daf9def49 Mon Sep 17 00:00:00 2001 From: Zhaoyi Huang Date: Tue, 20 Aug 2019 10:40:37 -0700 Subject: [PATCH 20/68] partially fixed the pdf comment --- content_script.js | 64 ++++++++++++++++++++++++++++++++++------------- manifest.json | 1 + 2 files changed, 47 insertions(+), 18 deletions(-) diff --git a/content_script.js b/content_script.js index 564785a..1ec491b 100644 --- a/content_script.js +++ b/content_script.js @@ -27,7 +27,7 @@ -var btn_pdf_result='afdjsalfsdja'; +var btn_pdf_result=''; var student_id; var rubric_name; var rubric_number; //the question itself @@ -43,10 +43,10 @@ var comments_inserted = {}; // list with text of comments they have inserted on // this is specific to A6 //follow the demo, the key is the question itself and the value is the num of rubric items -var num_rubric_items = {1.1:20,1.2:20,1.3:20,1.4: 20,1.5: 20, 2.1:20,2.2:20, 2.3: 20, 3.1:20, 3.2:20, 3.3:20, 3.4:20, 3.5:20, 4.1:20, - 4.2: 20, 4.3:20, 4.4:20, 4.5:20, 5.1:20, 5.2:20,5.3:20, 5.4:20, 5.5:20,6.1:20,6.2:20,6.3:20,6.4: 20,6.5: 20, - 7.1:20,7.2:20,7.3:20,7.4: 20,7.5: 20, - 1: 20, 2: 20, 3: 20, 4: 20, 5: 20, 6: 20, 7: 20}; +var num_rubric_items = {1.1:7,1.2:7,1.3:7,1.4: 7,1.5: 7, 2.1:7,2.2:7, 2.3: 7, 3.1:7, 3.2:7, 3.3:7, 3.4:7, 3.5:7, 4.1:7, + 4.2: 7, 4.3:7, 4.4:7, 4.5:7, 5.1:7, 5.2:7,5.3:7, 5.4:7, 5.5:7,6.1:7,6.2:7,6.3:7,6.4: 7,6.5: 7, + 7.1:7,7.2:7,7.3:7,7.4: 7,7.5: 7, 2.4:7,2.5:7, + 1: 7, 2: 7, 3: 7, 4: 7, 5: 7, 6: 7, 7: 7}; $(document).ready(function(){ original_text=$('.form--textArea').val(); @@ -154,6 +154,9 @@ function storeAndPrintComments(rub,comments, id_num, index, searching,PDF) { return; } + + + // sort comments ascending by length comments = comments.sort(function(info1, info2) { var length1 = parseInt(info1[6]); @@ -167,6 +170,15 @@ function storeAndPrintComments(rub,comments, id_num, index, searching,PDF) { } }); + + + comments= comments.sort(function(info1,info2){ + var nameA= (info1[5].split(' '))[0].toLowerCase(); + var nameB = (info2[5].split(' '))[0].toLowerCase(); + if(nameA === nameB) return 0; + return nameA > nameB ? 1 : -1; + + }); //console.log(comments); // sort comments descending by frequency @@ -183,13 +195,7 @@ function storeAndPrintComments(rub,comments, id_num, index, searching,PDF) { }); - comments= comments.sort(function(info1,info2){ - var nameA= (info1[5].split(' '))[0].toLowerCase(); - var nameB = (info2[5].split(' '))[0].toLowerCase(); - if(nameA === nameB) return 0; - return nameA > nameB ? 1 : -1; - }); //A10: put non-0 comments first (ones specific to this rubric question) var comments_0 = []; @@ -282,12 +288,12 @@ function storeAndPrintComments(rub,comments, id_num, index, searching,PDF) { } } - + //add the comment to the ta-box when the btn_pdf is clicked $('.btn_pdf').click(function(){ //e.stopPropagation(); - console.log("aaaaabbbbbccccc"); + var btn_id_num = $(this).attr("class").split(" ")[1]; var comment= $(this).parents("tr").find(".comment_"+btn_id_num).html(); console.log(comment); @@ -299,13 +305,15 @@ function storeAndPrintComments(rub,comments, id_num, index, searching,PDF) { //find if the corresponding gradescope name changed $(".taBox--displayText > span").text( $(".taBox--displayText > span").text() + "\n" + comment + "\n"); - $(".taBox--textarea").text( - $(".taBox--textarea").text() + "\n" + comment + "\n"); + + // $(".taBox--textarea").text() + "\n" + comment + "\n"; //console.log("making the insertion"); }); - // $('.btn_pdf').on('click','.taBox',function(obj){ - // console.log("booooooo"); + + + + // // simulate blur so the new comment will save @@ -606,7 +614,6 @@ function injectSuggestions() { -const pdfTarget = document.getElementsByClassName('taBox-updatable'); @@ -673,6 +680,27 @@ observer.observe(targetNode[i], config); +//const config = { attributes: true, childList: true, subtree: true }; + +const pdfTarget = document.getElementsByClassName('taBox--textarea')[0]; +console.log(pdfTarget) + + +const callback_pdf = function(mutationList,observer_pdf){ + for(let mutation of mutationList){ + if(mutation.type==='attributes' && btn_pdf_result!=''){ + $('.taBox--textarea.focus-ring').val($('.taBox--textarea.focus-ring').val()+ '\n'+btn_pdf_result); + btn_pdf_result=''; + } + } + +} + + +const observer_pdf = new MutationObserver(callback_pdf); + +observer_pdf.observe(pdfTarget,config); + // $(".comment_view_text").keydown(function() { diff --git a/manifest.json b/manifest.json index 97a0535..a3978e8 100644 --- a/manifest.json +++ b/manifest.json @@ -50,4 +50,5 @@ ] }, "web_accessible_resources": ["button.png","dialog.png"] + } \ No newline at end of file From 0b459499622a8ee53d2457ca1f52c6812975e5f2 Mon Sep 17 00:00:00 2001 From: Zhaoyi Huang Date: Tue, 20 Aug 2019 15:06:45 -0700 Subject: [PATCH 21/68] change storage item --- background.js | 20 +++++++++++++++++-- content_script.js | 50 ++++++++++++++++++++++++++++++++++------------- 2 files changed, 54 insertions(+), 16 deletions(-) diff --git a/background.js b/background.js index a66bd11..4ca86a3 100644 --- a/background.js +++ b/background.js @@ -49,7 +49,12 @@ function loadSpreadsheet() { xhr.onload = function (oEvent) { arrayBuffer = xhr.response; + console.log(arrayBuffer); + if(arrayBuffer.values==null){ + last_row=2; + }else{ last_row=arrayBuffer.values.length+1; + } console.log("last row is " + last_row); } @@ -178,7 +183,13 @@ function updateSheets(action, rubric_question, rubric_item, comment_info, commen rubric_question + '", "", "' + always_show + '", "" ]]' + '}'); - } + } else if (action == "pdf focus") { + xhr2.send('{' + + '"range": "A10!A2:H100000",' + + '"values": [[ "' + new Date().toString() + '", "' + action + '", "", "' + user_id + '", "' + + rubric_question + '", "", "' + always_show + + '", "" ]]' + + '}'); }); @@ -226,6 +237,8 @@ function saveNewComment() { console.log(comments); var rubric_number = items.comments_rubric_number; var inserted_comments = items.comments_inserted; + var ass_num= items.assignment_num; + var sub_num= items.submission_num; console.log("inserted commentS:"); console.log(inserted_comments); @@ -269,7 +282,7 @@ function saveNewComment() { // category (h) = 0 // frequency (i) = 1 // frequency orig (j) = 1 - values += '[ "'+parseInt(last_row+1)+'", "' + rubric_number + '", "", "'+store_rubric_item+'","", "' + + values += '[ "'+parseInt(last_row+1)+'", "' + rubric_number + '", "'+ ass_num+'", "'+store_rubric_item+'","'+sub_num+'", "' + comment + '", "' + comment_length + '", "1", "1", "1", "", "' + user_id + '"' + ' ],' last_row++; @@ -388,5 +401,8 @@ chrome.runtime.onMessage.addListener(function(request, sender, sendResponse) { on_grading_page = true; } else if (request.action == "onOtherPage") { on_grading_page = false; + }else if (request.action == "logPDFFocus") { + updateSheets("pdf focus", request.rubric_question); + sendResponse("event logged"); } }); \ No newline at end of file diff --git a/content_script.js b/content_script.js index 1ec491b..376b186 100644 --- a/content_script.js +++ b/content_script.js @@ -42,12 +42,24 @@ var comments_inserted = {}; // list with text of comments they have inserted on // key = rubric question number, value = how many rubric items that question has // this is specific to A6 + + //follow the demo, the key is the question itself and the value is the num of rubric items var num_rubric_items = {1.1:7,1.2:7,1.3:7,1.4: 7,1.5: 7, 2.1:7,2.2:7, 2.3: 7, 3.1:7, 3.2:7, 3.3:7, 3.4:7, 3.5:7, 4.1:7, 4.2: 7, 4.3:7, 4.4:7, 4.5:7, 5.1:7, 5.2:7,5.3:7, 5.4:7, 5.5:7,6.1:7,6.2:7,6.3:7,6.4: 7,6.5: 7, 7.1:7,7.2:7,7.3:7,7.4: 7,7.5: 7, 2.4:7,2.5:7, 1: 7, 2: 7, 3: 7, 4: 7, 5: 7, 6: 7, 7: 7}; +//get the assignment number and submission number +var attrobj= jQuery.parseJSON($("div[data-react-class]").attr('data-react-props')); +var ass_number=attrobj['assignment']['id'] +var sub_number=attrobj['assignment_submission']['id']; +console.log("ass = "+ass_number); +console.log("sub = "+sub_number) + +chrome.storage.local.set({assignment_num:ass_number, submission_num:sub_number}); + + $(document).ready(function(){ original_text=$('.form--textArea').val(); }); @@ -363,10 +375,9 @@ function storeAndPrintComments(rub,comments, id_num, index, searching,PDF) { comment_info: full_sorted_comments[this_index][btn_id_num], rubric_question: rubric_name, rubric_item: rubric_item, - comment: comment + comment: comment }, function(response) { console.log(response); - console.log("category RRRR: "+category); }); }); @@ -682,24 +693,24 @@ observer.observe(targetNode[i], config); //const config = { attributes: true, childList: true, subtree: true }; -const pdfTarget = document.getElementsByClassName('taBox--textarea')[0]; -console.log(pdfTarget) +// const pdfTarget = document.getElementsByClassName('taBox--textarea')[0]; +// console.log(pdfTarget) -const callback_pdf = function(mutationList,observer_pdf){ - for(let mutation of mutationList){ - if(mutation.type==='attributes' && btn_pdf_result!=''){ - $('.taBox--textarea.focus-ring').val($('.taBox--textarea.focus-ring').val()+ '\n'+btn_pdf_result); - btn_pdf_result=''; - } - } +// const callback_pdf = function(mutationList,observer_pdf){ +// for(let mutation of mutationList){ +// if(mutation.type==='attributes' && btn_pdf_result!=''){ +// $('.taBox--textarea.focus-ring').val($('.taBox--textarea.focus-ring').val()+ '\n'+btn_pdf_result); +// btn_pdf_result=''; +// } +// } -} +// } -const observer_pdf = new MutationObserver(callback_pdf); +// const observer_pdf = new MutationObserver(callback_pdf); -observer_pdf.observe(pdfTarget,config); +// observer_pdf.observe(pdfTarget,config); @@ -723,6 +734,17 @@ observer_pdf.observe(pdfTarget,config); }); }); + $("taBox--textArea").focus(function(){ + var rubric_item=$(".rubricItem--key-applied").html(); + + chrome.runtime.sendMessage({action:"logPDFFocus", + rubric_question: rubric_name, + rubric_item: rubric_item + + },function(response){ + console.log("logging pdf event: "+response) + }); + }); // see/hide button functionality $(".see_suggestions").click(function() { var selected_id_num = this.id.split("see_suggestions_")[1]; From 161c6e73f5cba1d4ed166433c0363b7fbeabd371 Mon Sep 17 00:00:00 2001 From: Zhaoyi Huang Date: Wed, 21 Aug 2019 13:48:10 -0700 Subject: [PATCH 22/68] add the new columns for data --- background.js | 35 +++++++++++++++++------------------ content_script.js | 41 ++++++++++++++++++++++++++--------------- 2 files changed, 43 insertions(+), 33 deletions(-) diff --git a/background.js b/background.js index 4ca86a3..e57b440 100644 --- a/background.js +++ b/background.js @@ -70,7 +70,7 @@ function loadSpreadsheet() { }); } -function updateSheets(action, rubric_question, rubric_item, comment_info, comment) { +function updateSheets(action, submission_num,rubric_question, rubric_item, comment_info, comment) { store_rubric_item=rubric_item; console.log(typeof(store_rubric_item)); console.log("store_rubric_item is "+store_rubric_item); @@ -160,38 +160,37 @@ function updateSheets(action, rubric_question, rubric_item, comment_info, commen xhr2.send('{' + '"range": "A10!A2:H100000",' + '"values": [[ "' + new Date().toString() + '", "comment", "' + comment_info[0] + '", "' + user_id + '", "' + - rubric_question + '", "' + rubric_item + '", "' + always_show + '", "' + comment + - '" ]]' + + rubric_question + '", "' + rubric_item + '", "' + always_show + '", "' + comment + '", "'+submission_num+ + '","" ]]' + '}'); } else if (action == "change setting") { xhr2.send('{' + '"range": "A10!A2:H100000",' + '"values": [[ "' + new Date().toString() + '", "change setting", "", "' + user_id + '", "", "", "' + always_show + - '", "" ]]' + + '", "","'+submission_num+'","" ]]' + '}'); } else if (action == "show suggestions" || action == "hide suggestions" || action == "focus") { xhr2.send('{' + '"range": "A10!A2:H100000",' + '"values": [[ "' + new Date().toString() + '", "' + action + '", "", "' + user_id + '", "' + - rubric_question + '", "' + rubric_item + '", "' + always_show + - '", "" ]]' + + rubric_question + '", "' + rubric_item + '", "' + always_show +'", "","'+submission_num+'","" ]]'+ '}'); } else if (action == "gradescope focus") { xhr2.send('{' + '"range": "A10!A2:H100000",' + '"values": [[ "' + new Date().toString() + '", "' + action + '", "", "' + user_id + '", "' + - rubric_question + '", "", "' + always_show + - '", "" ]]' + + rubric_question + '", "", "' + always_show +'", "","'+submission_num+'","" ]]' + '}'); - } else if (action == "pdf focus") { + }else if (action == "pdf focus") { xhr2.send('{' + '"range": "A10!A2:H100000",' + '"values": [[ "' + new Date().toString() + '", "' + action + '", "", "' + user_id + '", "' + - rubric_question + '", "", "' + always_show + - '", "" ]]' + + rubric_question + '", "", "' + always_show + '", "","'+submission_num+'","" ]]' + '}'); + } + }); - }); + @@ -379,30 +378,30 @@ chrome.runtime.onMessage.addListener(function(request, sender, sendResponse) { loadSpreadsheet(); sendResponse("done"); } else if (request.action == "logEvent") { - updateSheets("comment", request.rubric_question, request.rubric_item, request.comment_info, request.comment); + updateSheets("comment", request.submission_num,request.rubric_question, request.rubric_item, request.comment_info, request.comment); sendResponse("event logged"); } else if (request.action == "logShowSetting") { updateSheets("change setting"); sendResponse("event logged"); } else if (request.action == "logSuggestionSee") { - updateSheets("show suggestions", request.rubric_question, request.rubric_item); + updateSheets("show suggestions", request.submission_num,request.rubric_question, request.rubric_item); sendResponse("event logged"); } else if (request.action == "logSuggestionHide") { - updateSheets("hide suggestions", request.rubric_question, request.rubric_item); + updateSheets("hide suggestions", request.submission_num,request.rubric_question, request.rubric_item); sendResponse("event logged"); } else if (request.action == "logFocus") { - updateSheets("focus", request.rubric_question, request.rubric_item); + updateSheets("focus", request.submission_num,request.rubric_question, request.rubric_item); sendResponse("event logged"); } else if (request.action == "logGradescopeFocus") { - updateSheets("gradescope focus", request.rubric_question); + updateSheets("gradescope focus", request.submission_num,request.rubric_question); sendResponse("event logged"); } else if (request.action == "onGradingPage") { on_grading_page = true; } else if (request.action == "onOtherPage") { on_grading_page = false; }else if (request.action == "logPDFFocus") { - updateSheets("pdf focus", request.rubric_question); + updateSheets("pdf focus", request.submission_num,request.rubric_question); sendResponse("event logged"); } }); \ No newline at end of file diff --git a/content_script.js b/content_script.js index 376b186..0acae0b 100644 --- a/content_script.js +++ b/content_script.js @@ -16,10 +16,10 @@ //note before start: refer to background.js for why there //are comment[0,1,2,blabla] //comment[0]==id(row number in google sheet) - //comment[1]==rubric_number +//comment[2]==assignment_number //comment[3]==rubric_item -//comment[4]==comment_id +//comment[4]==submission_number //comment[5]==comment text itself //comment[6]==length of comment text(string) //comment[8]==frequency @@ -54,9 +54,10 @@ var num_rubric_items = {1.1:7,1.2:7,1.3:7,1.4: 7,1.5: 7, 2.1:7,2.2:7, 2.3: 7, 3. var attrobj= jQuery.parseJSON($("div[data-react-class]").attr('data-react-props')); var ass_number=attrobj['assignment']['id'] var sub_number=attrobj['assignment_submission']['id']; -console.log("ass = "+ass_number); -console.log("sub = "+sub_number) +console.log(attrobj); +//grader name to be stored as the username in the end +var grader_name=attrobj['evaluation']['file_comment_user_name']; chrome.storage.local.set({assignment_num:ass_number, submission_num:sub_number}); @@ -375,7 +376,8 @@ function storeAndPrintComments(rub,comments, id_num, index, searching,PDF) { comment_info: full_sorted_comments[this_index][btn_id_num], rubric_question: rubric_name, rubric_item: rubric_item, - comment: comment + comment: comment, + submission_num: sub_number }, function(response) { console.log(response); }); @@ -727,22 +729,23 @@ observer.observe(targetNode[i], config); // tell chrome to log the event that we just clicked the comment box chrome.runtime.sendMessage({action: "logFocus", rubric_question: rubric_name, - rubric_item: rubric_item + rubric_item: rubric_item, + submission_num:sub_number }, function(response) { console.log("logging focus: " + response); //console.log("RRRRRRRRR "+rubric_item); }); }); - $("taBox--textArea").focus(function(){ + $("taBox--textarea").focus(function(){ var rubric_item=$(".rubricItem--key-applied").html(); chrome.runtime.sendMessage({action:"logPDFFocus", rubric_question: rubric_name, - rubric_item: rubric_item - + rubric_item: rubric_item, + submission_num: sub_number },function(response){ - console.log("logging pdf event: "+response) + console.log("logging pdf event: "+response); }); }); // see/hide button functionality @@ -756,7 +759,8 @@ observer.observe(targetNode[i], config); // tell chrome to log the event that we just clicked see/hide chrome.runtime.sendMessage({action: "logSuggestion" + action, rubric_question: rubric_name, - rubric_item: rubric_item + rubric_item: rubric_item, + submission_num: sub_number }, function(response) { console.log("logging suggestion " + action + ": " + response); }); @@ -780,10 +784,16 @@ observer.observe(targetNode[i], config); $(document).change(function(){ if($('.taBox-is-editing')){ - console.log(btn_pdf_result); - $('.taBox--textarea').text( - $('.taBox--textarea').val()+ "\n" + btn_pdf_result + "\n" - ); + var rubric_item=$(".rubricItem--key-applied").html(); + + chrome.runtime.sendMessage({action:"logPDFFocus", + rubric_question: rubric_name, + rubric_item: rubric_item, + submission_num:sub_number + },function(response){ + console.log("logging pdf event: "+response); + }); + } }); @@ -858,6 +868,7 @@ $(function() { // tell chrome to log the event that we just clicked the comment box chrome.runtime.sendMessage({action: "logGradescopeFocus", rubric_question: rubric_name, + submission_num:sub_number }, function(response) { console.log("logging gradescope focus: " + response); }); From 238e527711d244767468955d9151627add7bc26b Mon Sep 17 00:00:00 2001 From: Zhaoyi Huang Date: Thu, 22 Aug 2019 19:17:55 -0700 Subject: [PATCH 23/68] store event stuff --- background.js | 14 +++++++++++--- content_script.js | 32 +++++++++++++++++++++++--------- 2 files changed, 34 insertions(+), 12 deletions(-) diff --git a/background.js b/background.js index e57b440..5758812 100644 --- a/background.js +++ b/background.js @@ -70,7 +70,7 @@ function loadSpreadsheet() { }); } -function updateSheets(action, submission_num,rubric_question, rubric_item, comment_info, comment) { +function updateSheets(action, submission_num,rubric_question, rubric_item, comment_info, comment,tbox_num) { store_rubric_item=rubric_item; console.log(typeof(store_rubric_item)); console.log("store_rubric_item is "+store_rubric_item); @@ -187,6 +187,12 @@ function updateSheets(action, submission_num,rubric_question, rubric_item, comme '"values": [[ "' + new Date().toString() + '", "' + action + '", "", "' + user_id + '", "' + rubric_question + '", "", "' + always_show + '", "","'+submission_num+'","" ]]' + '}'); + }else if(action=="onOtherPage"){ + xhr2.send('{' + + '"range": "A10!A2:H100000",' + + '"values": [[ "' + new Date().toString() + '", "' + action + '", "", "' + user_id + '", "' + + rubric_question + '", "", "' + always_show + '", "","'+submission_num+ '", "'+tbox_num+'","" ]]' + + '}'); } }); @@ -238,6 +244,7 @@ function saveNewComment() { var inserted_comments = items.comments_inserted; var ass_num= items.assignment_num; var sub_num= items.submission_num; + var rubric_item=items.rubric_item; console.log("inserted commentS:"); console.log(inserted_comments); @@ -281,7 +288,7 @@ function saveNewComment() { // category (h) = 0 // frequency (i) = 1 // frequency orig (j) = 1 - values += '[ "'+parseInt(last_row+1)+'", "' + rubric_number + '", "'+ ass_num+'", "'+store_rubric_item+'","'+sub_num+'", "' + + values += '[ "'+parseInt(last_row+1)+'", "' + rubric_number + '", "'+ ass_num+'", "'+rubric_item+'","'+sub_num+'", "' + comment + '", "' + comment_length + '", "1", "1", "1", "", "' + user_id + '"' + ' ],' last_row++; @@ -292,7 +299,7 @@ function saveNewComment() { // be sure to include original comment id for (var comment_id in inserted_comments) { if (inserted_comments[comment_id] != "") { - values += '[ "", "' + rubric_number + '", "", "'+store_rubric_item+","+ comment_id + '", "' + + values += '[ "", "' + rubric_number + '", "", "'+rubric_item+","+ comment_id + '", "' + inserted_comments[comment_id] + '", "' + inserted_comments[comment_id].split(" ").length + '", "1", "1", "1", "", "' + user_id + '"' + ' ],' @@ -400,6 +407,7 @@ chrome.runtime.onMessage.addListener(function(request, sender, sendResponse) { on_grading_page = true; } else if (request.action == "onOtherPage") { on_grading_page = false; + updateSheets("pdf focus", request.submission_num,request.rubric_question,request.rubric_question,undefined,request.comment,request.tbox_num); }else if (request.action == "logPDFFocus") { updateSheets("pdf focus", request.submission_num,request.rubric_question); sendResponse("event logged"); diff --git a/content_script.js b/content_script.js index 0acae0b..24e24bf 100644 --- a/content_script.js +++ b/content_script.js @@ -29,9 +29,10 @@ var btn_pdf_result=''; var student_id; -var rubric_name; +var rubric_name;//question itself var rubric_number; //the question itself var user_id; +var rubric_item_applied; var button_url; var full_comments; var always_show; @@ -367,6 +368,7 @@ function storeAndPrintComments(rub,comments, id_num, index, searching,PDF) { //var rubric_item = $(this).parents("li").find(".rubricItem--pointsAndDescription").find(".rubricField-points").html(); var rubric_item=$(".rubricItem--key-applied").html(); + rubric_item_applied=rubric_item; console.log("inserting comment: " + comment); console.log(full_sorted_comments[this_index]); console.log(full_sorted_comments[this_index][btn_id_num]); @@ -387,6 +389,7 @@ function storeAndPrintComments(rub,comments, id_num, index, searching,PDF) { } function updateCommentViews(view_id) { + console.log('view_id is '+view_id); setTimeout(function(){ $(".comment_view_text").each(function(ind) { @@ -410,7 +413,7 @@ function updateCommentViews(view_id) { console.log(comment_text); chrome.storage.local.set({comment_text: comment_text, comments_inserted: comments_inserted, - comments_rubric_number: rubric_number, saved: false}); + comments_rubric_number: rubric_number, saved: false,rubric_item:rubric_item_applied}); }, 100); } @@ -726,6 +729,7 @@ observer.observe(targetNode[i], config); //var rubric_item = $(this).parents("li").find(".rubricItem--pointsAndDescription").find(".rubricField-points").html(); //first step to make the ONLY comment box available var rubric_item=$(".rubricItem--key-applied").html(); + rubric_item_applied=rubric_item; // tell chrome to log the event that we just clicked the comment box chrome.runtime.sendMessage({action: "logFocus", rubric_question: rubric_name, @@ -828,13 +832,13 @@ $(function() { }); // change true so that it only works on grading pages - if (true) { + if (window.location.pathname.indexOf('grade')>=0) { // tell chrome we are on a grading page chrome.runtime.sendMessage({action: "onGradingPage"}); button_url = chrome.extension.getURL("button.png"); - + rubric_item_applied=$('.rubricItem--key-applied').html(); // get text currently in comment box //original_text = $(".form--textArea").val(); console.log("original text:"); @@ -859,7 +863,7 @@ $(function() { console.log(comment_text); chrome.storage.local.set({comment_text: comment_text, comments_inserted: comments_inserted, - comments_rubric_number: rubric_number, saved: false}); + comments_rubric_number: rubric_number, saved: false,rubric_item:rubric_item_applied}); }, 100); }); @@ -929,9 +933,19 @@ $(function() { injectSuggestions(); }); - } else { - // tell chrome we are NOT on a grading page - chrome.runtime.sendMessage({action: "onOtherPage"}); - } + } + $(window).on('beforeunload', function(){ + chrome.runtime.sendMessage({action: "onOtherPage", + tbox_num:$('.taBox--textarea').length, + rubric_item:rubric_item_applied, + comment: $('.form--textArea').val(), + submission_num:sub_number + }); + + }); + // else { + // // tell chrome we are NOT on a grading page + // chrome.runtime.sendMessage({action: "onOtherPage"}); + // } }); From 60927651730854a8e845c0f17361059076bc1263 Mon Sep 17 00:00:00 2001 From: Zhaoyi Huang Date: Fri, 23 Aug 2019 12:02:37 -0700 Subject: [PATCH 24/68] storage modification, and add draggable in pdf --- background.js | 3 ++- content_script.js | 55 ++++++++++++++++++++++++++++++++++++++++++++--- suggestions.css | 11 +++++++++- 3 files changed, 64 insertions(+), 5 deletions(-) diff --git a/background.js b/background.js index 5758812..8aa0745 100644 --- a/background.js +++ b/background.js @@ -407,7 +407,8 @@ chrome.runtime.onMessage.addListener(function(request, sender, sendResponse) { on_grading_page = true; } else if (request.action == "onOtherPage") { on_grading_page = false; - updateSheets("pdf focus", request.submission_num,request.rubric_question,request.rubric_question,undefined,request.comment,request.tbox_num); + console.log("ADSASDSA"); + updateSheets("onOtherPage", request.submission_num,request.rubric_question,request.rubric_item,undefined,request.comment,request.tbox_num); }else if (request.action == "logPDFFocus") { updateSheets("pdf focus", request.submission_num,request.rubric_question); sendResponse("event logged"); diff --git a/content_script.js b/content_script.js index 24e24bf..19bd0e1 100644 --- a/content_script.js +++ b/content_script.js @@ -265,7 +265,7 @@ function storeAndPrintComments(rub,comments, id_num, index, searching,PDF) { }else{ var string = "" + - "" + + // "" + "" + comment + "" + ""; } @@ -654,13 +654,15 @@ const callback = function(mutationsList, observer) { if($('.taBox--textarea')[0]){ rubric_item=$(".rubricItem--key-applied").html() - $("
" + + $('.pageViewerControls.u-pointerEventsNone').append($( + "
" + + "
DRAG PDF
"+ "
" + '
"Suggestions:"
' + "
" + "
" + "
" - ).insertAfter('.taBox--textarea'); + )); //$("
NAIVEEEEEE
").insertAfter('.taBox--textarea'); storeAndPrintComments(rubric_item,full_sorted_comments[rubric_item-1], rubric_item-1, rubric_item-1, false,true); @@ -935,8 +937,10 @@ $(function() { } $(window).on('beforeunload', function(){ + console.log("LEAVING"); chrome.runtime.sendMessage({action: "onOtherPage", tbox_num:$('.taBox--textarea').length, + rubric_question:rubric_name, rubric_item:rubric_item_applied, comment: $('.form--textArea').val(), submission_num:sub_number @@ -949,3 +953,48 @@ $(function() { // } }); + +//implement the dragble function of the div +dragElement(document.getElementById("mydiv")); + +function dragElement(elmnt) { + var pos1 = 0, pos2 = 0, pos3 = 0, pos4 = 0; + if (document.getElementById(elmnt.id + "header")) { + // if present, the header is where you move the DIV from: + document.getElementById(elmnt.id + "header").onmousedown = dragMouseDown; + } else { + // otherwise, move the DIV from anywhere inside the DIV: + elmnt.onmousedown = dragMouseDown; + } + + function dragMouseDown(e) { + e = e || window.event; + e.preventDefault(); + // get the mouse cursor position at startup: + pos3 = e.clientX; + pos4 = e.clientY; + document.onmouseup = closeDragElement; + // call a function whenever the cursor moves: + document.onmousemove = elementDrag; + } + + function elementDrag(e) { + e = e || window.event; + e.preventDefault(); + // calculate the new cursor position: + pos1 = pos3 - e.clientX; + pos2 = pos4 - e.clientY; + pos3 = e.clientX; + pos4 = e.clientY; + // set the element's new position: + elmnt.style.top = (elmnt.offsetTop - pos2) + "px"; + elmnt.style.left = (elmnt.offsetLeft - pos1) + "px"; + } + + function closeDragElement() { + // stop moving when mouse button is released: + document.onmouseup = null; + document.onmousemove = null; + } +} + diff --git a/suggestions.css b/suggestions.css index 8b1e974..56151f4 100644 --- a/suggestions.css +++ b/suggestions.css @@ -94,10 +94,19 @@ a[disabled="disabled"] { .suggestion_container_pdf{ - position: relative !important; + position: absolute; + z-index: 9; border: 1px solid black !important; } +#mydivheader { + padding: 10px; + cursor: move; + z-index: 10; + background-color: #2196F3; + color: #fff; +} + .suggestion_box_pdf { border: 1px solid #004ea3 !important; height: 200px !important; From 7d400cb19293a1ccbbd3d8fe9b06d35d7cdf841d Mon Sep 17 00:00:00 2001 From: Zhaoyi Huang Date: Fri, 23 Aug 2019 15:05:14 -0700 Subject: [PATCH 25/68] change css for dispaly on pdf --- content_script.js | 4 +--- suggestions.css | 2 +- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/content_script.js b/content_script.js index 19bd0e1..4153d59 100644 --- a/content_script.js +++ b/content_script.js @@ -651,12 +651,11 @@ const callback = function(mutationsList, observer) { else if (mutation.type === 'attributes') { var classList = mutation.target.className; if(classList.indexOf("rubricItem--key-applied")>=0){ - if($('.taBox--textarea')[0]){ rubric_item=$(".rubricItem--key-applied").html() $('.pageViewerControls.u-pointerEventsNone').append($( "
" + - "
DRAG PDF
"+ + "
DRAG PDF TO ME
"+ "
" + '
"Suggestions:"
' + "
" + @@ -666,7 +665,6 @@ const callback = function(mutationsList, observer) { //$("
NAIVEEEEEE
").insertAfter('.taBox--textarea'); storeAndPrintComments(rubric_item,full_sorted_comments[rubric_item-1], rubric_item-1, rubric_item-1, false,true); - } if(!always_show){ var id=$('.rubricItem--key-applied').html(); console.log("IIID is: "+id); diff --git a/suggestions.css b/suggestions.css index 56151f4..1574e5b 100644 --- a/suggestions.css +++ b/suggestions.css @@ -111,7 +111,7 @@ a[disabled="disabled"] { border: 1px solid #004ea3 !important; height: 200px !important; overflow-y: scroll !important; - background-color: rgba(74,74,74,0.03) !important; + background-color: rgb(248, 248, 245) !important; position: relative !important; } From 5121ef3d9da8aee57a6ecefdd0c531d3c75db7d8 Mon Sep 17 00:00:00 2001 From: Zhaoyi Huang Date: Mon, 26 Aug 2019 12:17:35 -0700 Subject: [PATCH 26/68] modified storage and boolean value, leaving event added --- background.js | 14 ++++---- content_script.js | 92 ++++++++++++++++++++++++----------------------- 2 files changed, 54 insertions(+), 52 deletions(-) diff --git a/background.js b/background.js index 8aa0745..0e716a3 100644 --- a/background.js +++ b/background.js @@ -70,7 +70,7 @@ function loadSpreadsheet() { }); } -function updateSheets(action, submission_num,rubric_question, rubric_item, comment_info, comment,tbox_num) { +function updateSheets(action, submission_num,rubric_question, rubric_item, comment_info, comment,tbox_num,assignment_name) { store_rubric_item=rubric_item; console.log(typeof(store_rubric_item)); console.log("store_rubric_item is "+store_rubric_item); @@ -187,11 +187,11 @@ function updateSheets(action, submission_num,rubric_question, rubric_item, comme '"values": [[ "' + new Date().toString() + '", "' + action + '", "", "' + user_id + '", "' + rubric_question + '", "", "' + always_show + '", "","'+submission_num+'","" ]]' + '}'); - }else if(action=="onOtherPage"){ + }else if(action=="onLeaving"){ xhr2.send('{' + '"range": "A10!A2:H100000",' + '"values": [[ "' + new Date().toString() + '", "' + action + '", "", "' + user_id + '", "' + - rubric_question + '", "", "' + always_show + '", "","'+submission_num+ '", "'+tbox_num+'","" ]]' + + rubric_question + '", "", "' + always_show +'", "'+comment+'", "' +submission_num+ '", "'+tbox_num+'", "'+assignment_name+'","" ]]' + '}'); } }); @@ -405,10 +405,10 @@ chrome.runtime.onMessage.addListener(function(request, sender, sendResponse) { sendResponse("event logged"); } else if (request.action == "onGradingPage") { on_grading_page = true; - } else if (request.action == "onOtherPage") { - on_grading_page = false; - console.log("ADSASDSA"); - updateSheets("onOtherPage", request.submission_num,request.rubric_question,request.rubric_item,undefined,request.comment,request.tbox_num); + } else if (request.action == "onLeaving") { + //NOTICE: SINCE WE ARE ALWAYS USING GRADING PAGE, ongrading is useless + //on_grading_page = false; + updateSheets("onLeaving", request.submission_num,request.rubric_question,request.rubric_item,undefined,request.comment,request.tbox_num,request.assignment_name); }else if (request.action == "logPDFFocus") { updateSheets("pdf focus", request.submission_num,request.rubric_question); sendResponse("event logged"); diff --git a/content_script.js b/content_script.js index 4153d59..b8e08ad 100644 --- a/content_script.js +++ b/content_script.js @@ -53,7 +53,8 @@ var num_rubric_items = {1.1:7,1.2:7,1.3:7,1.4: 7,1.5: 7, 2.1:7,2.2:7, 2.3: 7, 3. //get the assignment number and submission number var attrobj= jQuery.parseJSON($("div[data-react-class]").attr('data-react-props')); -var ass_number=attrobj['assignment']['id'] +var ass_number=attrobj['assignment']['id']; +var ass_name= attrobj['course']['shortname']; var sub_number=attrobj['assignment_submission']['id']; console.log(attrobj); @@ -936,12 +937,13 @@ $(function() { } $(window).on('beforeunload', function(){ console.log("LEAVING"); - chrome.runtime.sendMessage({action: "onOtherPage", + chrome.runtime.sendMessage({action: "onLeaving", tbox_num:$('.taBox--textarea').length, rubric_question:rubric_name, rubric_item:rubric_item_applied, comment: $('.form--textArea').val(), - submission_num:sub_number + submission_num:sub_number, + assignment_name: ass_name }); }); @@ -953,46 +955,46 @@ $(function() { //implement the dragble function of the div -dragElement(document.getElementById("mydiv")); - -function dragElement(elmnt) { - var pos1 = 0, pos2 = 0, pos3 = 0, pos4 = 0; - if (document.getElementById(elmnt.id + "header")) { - // if present, the header is where you move the DIV from: - document.getElementById(elmnt.id + "header").onmousedown = dragMouseDown; - } else { - // otherwise, move the DIV from anywhere inside the DIV: - elmnt.onmousedown = dragMouseDown; - } - - function dragMouseDown(e) { - e = e || window.event; - e.preventDefault(); - // get the mouse cursor position at startup: - pos3 = e.clientX; - pos4 = e.clientY; - document.onmouseup = closeDragElement; - // call a function whenever the cursor moves: - document.onmousemove = elementDrag; - } - - function elementDrag(e) { - e = e || window.event; - e.preventDefault(); - // calculate the new cursor position: - pos1 = pos3 - e.clientX; - pos2 = pos4 - e.clientY; - pos3 = e.clientX; - pos4 = e.clientY; - // set the element's new position: - elmnt.style.top = (elmnt.offsetTop - pos2) + "px"; - elmnt.style.left = (elmnt.offsetLeft - pos1) + "px"; - } - - function closeDragElement() { - // stop moving when mouse button is released: - document.onmouseup = null; - document.onmousemove = null; - } -} +// dragElement(document.getElementById("mydiv")); + +// function dragElement(elmnt) { +// var pos1 = 0, pos2 = 0, pos3 = 0, pos4 = 0; +// if (document.getElementById(elmnt.id + "header")) { +// // if present, the header is where you move the DIV from: +// document.getElementById(elmnt.id + "header").onmousedown = dragMouseDown; +// } else { +// // otherwise, move the DIV from anywhere inside the DIV: +// elmnt.onmousedown = dragMouseDown; +// } + +// function dragMouseDown(e) { +// e = e || window.event; +// e.preventDefault(); +// // get the mouse cursor position at startup: +// pos3 = e.clientX; +// pos4 = e.clientY; +// document.onmouseup = closeDragElement; +// // call a function whenever the cursor moves: +// document.onmousemove = elementDrag; +// } + +// function elementDrag(e) { +// e = e || window.event; +// e.preventDefault(); +// // calculate the new cursor position: +// pos1 = pos3 - e.clientX; +// pos2 = pos4 - e.clientY; +// pos3 = e.clientX; +// pos4 = e.clientY; +// // set the element's new position: +// elmnt.style.top = (elmnt.offsetTop - pos2) + "px"; +// elmnt.style.left = (elmnt.offsetLeft - pos1) + "px"; +// } + +// function closeDragElement() { +// // stop moving when mouse button is released: +// document.onmouseup = null; +// document.onmousemove = null; +// } +// } From 50db7e4983448327b4836e8d385338aa19f8b873 Mon Sep 17 00:00:00 2001 From: Zhaoyi Huang Date: Tue, 27 Aug 2019 16:14:43 -0700 Subject: [PATCH 27/68] add the textbox for pdf in comment sheets --- background.js | 70 ++++++++++++++++++++++++++++++++++++++++++++-- content_script.js | 71 +++++++++++++++++++++++++++++++++++++++++++---- manifest.json | 3 +- 3 files changed, 136 insertions(+), 8 deletions(-) diff --git a/background.js b/background.js index 0e716a3..8f1899b 100644 --- a/background.js +++ b/background.js @@ -279,7 +279,7 @@ function saveNewComment() { } if (already_there) continue; - var comment_length = comment.split(" ").length; + var comment_length = comment.length; // rubric question number (b) = items.rubric_number // if comment = one of the inserted comments, original id (e) = that inserted comment's id // then remove that comment from inserted comments @@ -300,7 +300,7 @@ function saveNewComment() { for (var comment_id in inserted_comments) { if (inserted_comments[comment_id] != "") { values += '[ "", "' + rubric_number + '", "", "'+rubric_item+","+ comment_id + '", "' + - inserted_comments[comment_id] + '", "' + inserted_comments[comment_id].split(" ").length + + inserted_comments[comment_id] + '", "' + inserted_comments[comment_id].length + '", "1", "1", "1", "", "' + user_id + '"' + ' ],' } @@ -348,6 +348,69 @@ function appendCommentsToSheet(values) { }); } + + +function appendComments_pdf(pdf_list,rubric_question,rubric_item,submission_num,assignment_name,grader_name){ + console.log("do the append for the list from pdf"); + console.log(pdf_list); + var values='"values": ['; + for(var i=0;i=0){ + console.log("in batch page"); + url_set= new Set(); + var i=0; + let list= $("a[class='link-noUnderline']"); + while(i-1){ + url_list=url_list.filter(function(a){return a!==element;}); + } + }); + console.log(url_list.length); + chrome.storage.local.set({url_list:url_list}); + if((url_list).length>0){ + console.log($(".actionBar--action-next")[0].href); + $(".actionBar--action-next")[0].href=url_list[Math.floor(Math.random() * url_list.length)]; + console.log($(".actionBar--action-next")[0].href); + } + }) }); @@ -833,7 +869,7 @@ $(function() { }); // change true so that it only works on grading pages - if (window.location.pathname.indexOf('grade')>=0) { + if (window.location.pathname.indexOf('grade')>=0 && window.location.pathname.indexOf('assignments')==-1) { // tell chrome we are on a grading page chrome.runtime.sendMessage({action: "onGradingPage"}); @@ -940,12 +976,37 @@ $(function() { chrome.runtime.sendMessage({action: "onLeaving", tbox_num:$('.taBox--textarea').length, rubric_question:rubric_name, - rubric_item:rubric_item_applied, + rubric_item:$(".rubricItem--key-applied").html(), comment: $('.form--textArea').val(), submission_num:sub_number, assignment_name: ass_name }); - + console.log("SEND PDF COMMENTS"); + +//console.log($('.taBox--textarea')[0].innerHTML); + var i=0; + if($('.taBox--textarea').length>0){ + var pdf_text_list=[] + while(i<$('.taBox--textarea').length){ + pdf_text_list.push($('.taBox--textarea')[i].innerHTML) + i++; + } + + console.log(pdf_text_list) + chrome.runtime.sendMessage({action:"sendPDFbox", + pdf_list: pdf_text_list, + rubric_question:rubric_number, + rubric_item:$(".rubricItem--key-applied").html(), + submission_num:sub_number, + assignment_name: ass_number, + grader_name:grader_name + + },function(response) { + console.log("logging focus: " + response); + //console.log("RRRRRRRRR "+rubric_item); +}); + +} }); // else { // // tell chrome we are NOT on a grading page diff --git a/manifest.json b/manifest.json index a3978e8..a182e0d 100644 --- a/manifest.json +++ b/manifest.json @@ -29,7 +29,8 @@ "content_scripts": [ { "matches": ["https://gradescope.com/*/questions/*/submissions/*/grade", - "https://www.gradescope.com/courses/*/questions/*/submissions/*/grade","https://www.gradescope.com/courses/*/questions/*/submissions/*/grade?not_grouped=true"], + "https://www.gradescope.com/courses/*/questions/*/submissions/*/grade","https://www.gradescope.com/courses/*/questions/*/submissions/*/grade?not_grouped=true", + "https://www.gradescope.com/courses/*/assignments/*/grade"], "js": ["jquery-2.2.2.min.js", "content_script.js"], "css": ["suggestions.css"] }, From 3d4bfbd4ee85f0c812c852863c583c39e2c93fce Mon Sep 17 00:00:00 2001 From: Zhaoyi Huang Date: Wed, 28 Aug 2019 15:23:24 -0700 Subject: [PATCH 28/68] add submission and student sheet --- background.js | 42 +++++++++++++++++++++++++++++++++++++++++- content_script.js | 32 +++++++++++++++++++++++++++----- 2 files changed, 68 insertions(+), 6 deletions(-) diff --git a/background.js b/background.js index 8f1899b..1a84362 100644 --- a/background.js +++ b/background.js @@ -386,7 +386,7 @@ if (values != '"values": ]') { xhr.onreadystatechange = function () { if(xhr.readyState === XMLHttpRequest.DONE && xhr.status == 200) { // request done, we sent the data - console.log("Added new comments") + console.log("Added new comments from PDF") } else if (xhr.readyState === XMLHttpRequest.DONE) { console.log(xhr.responseText); } @@ -409,6 +409,43 @@ if (values != '"values": ]') { } +function appendStuentSubmission(sub_number,student_name_list){ + var res_string; + if(student_name_list.length==1){ + res_string=student_name_list[0]; + }else{ + res_string=student_name_list.join(); + } + console.log(res_string); + value= + chrome.identity.getAuthToken({interactive: true}, function(token) { + if (token) { + console.log("got the token"); + // use that access token to set an http header when calling the Drive API. + var xhr = new XMLHttpRequest(); + xhr.onreadystatechange = function () { + if(xhr.readyState === XMLHttpRequest.DONE && xhr.status == 200) { + // request done, we sent the data + console.log("Added new comments from PDF") + } else if (xhr.readyState === XMLHttpRequest.DONE) { + console.log(xhr.responseText); + } + }; + + xhr.open("POST", + "https://sheets.googleapis.com/v4/spreadsheets/" + comment_sheet_id + + "/values/submission!A2:L10000:append?valueInputOption=RAW", + true); + xhr.setRequestHeader('Authorization','Bearer ' + token); + xhr.setRequestHeader("Content-type", "application/json"); + xhr.send('{' + + '"range": "submission!A2:L10000",' + + '"values": [[ "' + sub_number + '", "' + res_string+'","" ]]' + +'}'); + } + }); +} + // keyboard shortcut to modify always show setting @@ -478,5 +515,8 @@ chrome.runtime.onMessage.addListener(function(request, sender, sendResponse) { }else if(request.action=="sendPDFbox"){ appendComments_pdf(request.pdf_list,request.rubric_question,request.rubric_item,request.submission_num,request.assignment_name,request.grader_name); sendResponse("event logged"); + }else if(request.action=="sendStudentSubmission"){ + appendStuentSubmission(request.sub_number,request.student_name_list); + sendResponse("event logged"); } }); \ No newline at end of file diff --git a/content_script.js b/content_script.js index 3f88926..1f13486 100644 --- a/content_script.js +++ b/content_script.js @@ -82,6 +82,24 @@ console.log(grader_name); chrome.storage.local.set({assignment_num:ass_number, submission_num:sub_number}); + +$(document).ready(function(){ + var student_name= $("abbr[role=button]").attr('aria-label'); + student_name=student_name.replace("and ",""); + + student_name_list= student_name.split(","); + for(var i=0;i" + - // "" + + "" + "" + comment + "" + ""; } @@ -330,11 +348,15 @@ function storeAndPrintComments(rub,comments, id_num, index, searching,PDF) { var btn_id_num = $(this).attr("class").split(" ")[1]; var comment= $(this).parents("tr").find(".comment_"+btn_id_num).html(); + comment.select(); + comment.setSelectionRange(0, 99999); console.log(comment); - - comment = comment.replace(/"/g, '\\"').replace(/'/g, "\\'"); - btn_pdf_result=comment; - comment = comment.replace(/\\"/g, '"').replace(/\\'/g, "'"); + + document.execCommand("copy"); + + /* Alert the copied text */ + alert("Copied the text: " + comment.value); + //find if the corresponding gradescope name changed $(".taBox--displayText > span").text( From 5759a4802fefc994a571dea215342216e04b04c4 Mon Sep 17 00:00:00 2001 From: Zhaoyi Huang Date: Thu, 29 Aug 2019 14:47:19 -0700 Subject: [PATCH 29/68] features added, copy-pasta, comment sheet works --- content_script.js | 67 +++++++++++++---------------------------------- suggestions.css | 1 + 2 files changed, 19 insertions(+), 49 deletions(-) diff --git a/content_script.js b/content_script.js index 1f13486..ec0cf16 100644 --- a/content_script.js +++ b/content_script.js @@ -27,7 +27,6 @@ -var btn_pdf_result=''; var student_id; var rubric_name;//question itself var rubric_number; //the question itself @@ -303,7 +302,6 @@ function storeAndPrintComments(rub,comments, id_num, index, searching,PDF) { }else{ var string = "" + - "" + "" + comment + "" + ""; } @@ -343,29 +341,6 @@ function storeAndPrintComments(rub,comments, id_num, index, searching,PDF) { //add the comment to the ta-box when the btn_pdf is clicked - $('.btn_pdf').click(function(){ - //e.stopPropagation(); - - var btn_id_num = $(this).attr("class").split(" ")[1]; - var comment= $(this).parents("tr").find(".comment_"+btn_id_num).html(); - comment.select(); - comment.setSelectionRange(0, 99999); - console.log(comment); - - document.execCommand("copy"); - - /* Alert the copied text */ - alert("Copied the text: " + comment.value); - - - //find if the corresponding gradescope name changed - $(".taBox--displayText > span").text( - $(".taBox--displayText > span").text() + "\n" + comment + "\n"); - - // $(".taBox--textarea").text() + "\n" + comment + "\n"; - - //console.log("making the insertion"); - }); @@ -709,7 +684,7 @@ const callback = function(mutationsList, observer) { } else if (mutation.type === 'attributes') { var classList = mutation.target.className; - if(classList.indexOf("rubricItem--key-applied")>=0){ + if(classList.indexOf("rubricItem--key-applied")>0){ rubric_item=$(".rubricItem--key-applied").html() $('.pageViewerControls.u-pointerEventsNone').append($( @@ -753,29 +728,23 @@ observer.observe(targetNode[i], config); } - - -//const config = { attributes: true, childList: true, subtree: true }; - -// const pdfTarget = document.getElementsByClassName('taBox--textarea')[0]; -// console.log(pdfTarget) - - -// const callback_pdf = function(mutationList,observer_pdf){ -// for(let mutation of mutationList){ -// if(mutation.type==='attributes' && btn_pdf_result!=''){ -// $('.taBox--textarea.focus-ring').val($('.taBox--textarea.focus-ring').val()+ '\n'+btn_pdf_result); -// btn_pdf_result=''; -// } -// } - -// } - - -// const observer_pdf = new MutationObserver(callback_pdf); - -// observer_pdf.observe(pdfTarget,config); - +$(document).ready(function(){ + if($("rubric-Item--key-applied").length>0){ + rubric_item=$(".rubricItem--key-applied").html() + + $('.pageViewerControls.u-pointerEventsNone').append($( + "
" + + "
DRAG PDF TO ME
"+ + "
" + + '
"Suggestions:"
' + + "
" + + "
" + + "
" + )); + //$("
NAIVEEEEEE
").insertAfter('.taBox--textarea'); + storeAndPrintComments(rubric_item,full_sorted_comments[rubric_item-1], rubric_item-1, rubric_item-1, false,true); + } +}); // $(".comment_view_text").keydown(function() { diff --git a/suggestions.css b/suggestions.css index 1574e5b..e7d1ed6 100644 --- a/suggestions.css +++ b/suggestions.css @@ -113,5 +113,6 @@ a[disabled="disabled"] { overflow-y: scroll !important; background-color: rgb(248, 248, 245) !important; position: relative !important; + pointer-events: auto !important; } From e4138d188cace6d578a488f01206807497fe7e2d Mon Sep 17 00:00:00 2001 From: Zhaoyi Huang Date: Fri, 30 Aug 2019 15:22:09 -0700 Subject: [PATCH 30/68] add checkbox status for event sheet --- background.js | 16 ++++++++--- content_script.js | 72 ++++++++++++++++------------------------------- 2 files changed, 36 insertions(+), 52 deletions(-) diff --git a/background.js b/background.js index 1a84362..5d5e7ab 100644 --- a/background.js +++ b/background.js @@ -70,13 +70,18 @@ function loadSpreadsheet() { }); } -function updateSheets(action, submission_num,rubric_question, rubric_item, comment_info, comment,tbox_num,assignment_name) { +function updateSheets(action, submission_num,rubric_question, rubric_item, comment_info, comment,tbox_num,assignment_name,grader_name,check_box_status) { store_rubric_item=rubric_item; console.log(typeof(store_rubric_item)); console.log("store_rubric_item is "+store_rubric_item); console.log("updating sheets now... for question "+rubric_question+"for item "+rubric_item); console.log("comment_info is "+comment_info); // a comment was just inserted, update the google sheets to keep count & log this + + if(action=="onLeaving"){ + user_id=grader_name; + } + chrome.identity.getAuthToken({interactive: true}, function(token) { if (token) { console.log("got the token"); @@ -117,7 +122,9 @@ function updateSheets(action, submission_num,rubric_question, rubric_item, comme // send event log to event log sheet chrome.storage.local.get(null, function(items) { - if (!items.user_id) { + + if (!items.user_id && user_id==undefined) { + user_id = Math.random().toString(36) + new Date().getTime(); always_show = (Math.random() < 0.5); console.log("always show setting: " + always_show); @@ -191,7 +198,8 @@ function updateSheets(action, submission_num,rubric_question, rubric_item, comme xhr2.send('{' + '"range": "A10!A2:H100000",' + '"values": [[ "' + new Date().toString() + '", "' + action + '", "", "' + user_id + '", "' + - rubric_question + '", "", "' + always_show +'", "'+comment+'", "' +submission_num+ '", "'+tbox_num+'", "'+assignment_name+'","" ]]' + + rubric_question + '", "", "' + always_show +'", "'+comment+'", "' +submission_num+ '", "'+tbox_num+'", "'+assignment_name+'", "' + +check_box_status+'","" ]]' + '}'); } }); @@ -508,7 +516,7 @@ chrome.runtime.onMessage.addListener(function(request, sender, sendResponse) { } else if (request.action == "onLeaving") { //NOTICE: SINCE WE ARE ALWAYS USING GRADING PAGE, ongrading is useless //on_grading_page = false; - updateSheets("onLeaving", request.submission_num,request.rubric_question,request.rubric_item,undefined,request.comment,request.tbox_num,request.assignment_name); + updateSheets("onLeaving", request.submission_num,request.rubric_question,request.rubric_item,undefined,request.comment,request.tbox_num,request.assignment_name,request.grader_name,request.check_box_status); }else if (request.action == "logPDFFocus") { updateSheets("pdf focus", request.submission_num,request.rubric_question); sendResponse("event logged"); diff --git a/content_script.js b/content_script.js index ec0cf16..3761d0f 100644 --- a/content_script.js +++ b/content_script.js @@ -23,6 +23,7 @@ //comment[5]==comment text itself //comment[6]==length of comment text(string) //comment[8]==frequency +//comment[10]== if the comment is from PDF textbox //comment[11]==user_id @@ -405,6 +406,10 @@ function storeAndPrintComments(rub,comments, id_num, index, searching,PDF) { } + + + + function updateCommentViews(view_id) { console.log('view_id is '+view_id); @@ -553,9 +558,9 @@ function injectSuggestions() { "
"+ "Check boxes below if you meet the critiria. If you don't want to comment, press 'z' for next question"+ "
"+ - "Is specific"+ - "Is actionable"+ - "Is justified"+ + "Is specific"+ + "Is actionable"+ + "Is justified"+ "
" ).insertAfter(".form--textArea"); @@ -943,7 +948,8 @@ $(function() { // get user id and settings chrome.storage.local.get(null, function(items) { if (!items.user_id) { - user_id = Math.random().toString(36) + new Date().getTime(); + user_id = grader_name + // Math.random().toString(36) + new Date().getTime(); always_show = (Math.random() < 0.5); console.log("always show setting: " + always_show); chrome.storage.local.set({user_id: user_id, always_show: always_show}); @@ -964,13 +970,26 @@ $(function() { } $(window).on('beforeunload', function(){ console.log("LEAVING"); + if($('input[name="category"]:checked').length==0){ + var checked=""; + } + else{ + temp=[] + for(var i=0;i<$('input[name="category"]:checked').length;i++){ + var name=$('input[name="category"]:checked')[i].value + temp.push(name) + } + checked=temp.join(); + } chrome.runtime.sendMessage({action: "onLeaving", tbox_num:$('.taBox--textarea').length, rubric_question:rubric_name, rubric_item:$(".rubricItem--key-applied").html(), comment: $('.form--textArea').val(), submission_num:sub_number, - assignment_name: ass_name + assignment_name: ass_name, + grader_name:grader_name, + check_box_status:checked }); console.log("SEND PDF COMMENTS"); @@ -1006,47 +1025,4 @@ $(function() { }); -//implement the dragble function of the div -// dragElement(document.getElementById("mydiv")); - -// function dragElement(elmnt) { -// var pos1 = 0, pos2 = 0, pos3 = 0, pos4 = 0; -// if (document.getElementById(elmnt.id + "header")) { -// // if present, the header is where you move the DIV from: -// document.getElementById(elmnt.id + "header").onmousedown = dragMouseDown; -// } else { -// // otherwise, move the DIV from anywhere inside the DIV: -// elmnt.onmousedown = dragMouseDown; -// } - -// function dragMouseDown(e) { -// e = e || window.event; -// e.preventDefault(); -// // get the mouse cursor position at startup: -// pos3 = e.clientX; -// pos4 = e.clientY; -// document.onmouseup = closeDragElement; -// // call a function whenever the cursor moves: -// document.onmousemove = elementDrag; -// } - -// function elementDrag(e) { -// e = e || window.event; -// e.preventDefault(); -// // calculate the new cursor position: -// pos1 = pos3 - e.clientX; -// pos2 = pos4 - e.clientY; -// pos3 = e.clientX; -// pos4 = e.clientY; -// // set the element's new position: -// elmnt.style.top = (elmnt.offsetTop - pos2) + "px"; -// elmnt.style.left = (elmnt.offsetLeft - pos1) + "px"; -// } - -// function closeDragElement() { -// // stop moving when mouse button is released: -// document.onmouseup = null; -// document.onmousemove = null; -// } -// } From d0147c6d2d8790162028daa2feea6d0ee7766568 Mon Sep 17 00:00:00 2001 From: Zhaoyi Huang Date: Tue, 3 Sep 2019 11:39:27 -0700 Subject: [PATCH 31/68] small bug fixed for click button --- content_script.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/content_script.js b/content_script.js index 3761d0f..c2e65f4 100644 --- a/content_script.js +++ b/content_script.js @@ -366,9 +366,9 @@ function storeAndPrintComments(rub,comments, id_num, index, searching,PDF) { // index of this rubric item = index of these comments in full_sorted_comments //* find the gradescope correspondence here*** - var this_index = $(this).parents("div").find(".search_text").attr('id').slice(-1)-1; + var this_index = $(this).parents("div").attr('id').slice(-1)-1; console.log(this_index); - + console.log(full_sorted_comments) var comment = $(this).parents("tr").find(".comment_" + btn_id_num).html(); //console.log(comment); From dc1ed97e0db1f9d45d59f071dd970dbe56674c8f Mon Sep 17 00:00:00 2001 From: Zhaoyi Huang Date: Wed, 4 Sep 2019 20:04:54 -0700 Subject: [PATCH 32/68] change shade, change table for unique --- background.js | 8 ++++---- content_script.js | 27 +++++++-------------------- suggestions.css | 4 +++- 3 files changed, 14 insertions(+), 25 deletions(-) diff --git a/background.js b/background.js index 5d5e7ab..f6f6aa9 100644 --- a/background.js +++ b/background.js @@ -39,7 +39,7 @@ function loadSpreadsheet() { }; xhr.open("GET", - "https://sheets.googleapis.com/v4/spreadsheets/" + comment_sheet_id + "/values/W16-A10!A2:K10000", + "https://sheets.googleapis.com/v4/spreadsheets/" + comment_sheet_id + "/values/comments_unique!A2:K10000", true); xhr.setRequestHeader('Authorization','Bearer ' + token); @@ -124,7 +124,7 @@ function updateSheets(action, submission_num,rubric_question, rubric_item, comme chrome.storage.local.get(null, function(items) { if (!items.user_id && user_id==undefined) { - + console.log("undefied user id"); user_id = Math.random().toString(36) + new Date().getTime(); always_show = (Math.random() < 0.5); console.log("always show setting: " + always_show); @@ -198,7 +198,7 @@ function updateSheets(action, submission_num,rubric_question, rubric_item, comme xhr2.send('{' + '"range": "A10!A2:H100000",' + '"values": [[ "' + new Date().toString() + '", "' + action + '", "", "' + user_id + '", "' + - rubric_question + '", "", "' + always_show +'", "'+comment+'", "' +submission_num+ '", "'+tbox_num+'", "'+assignment_name+'", "' + rubric_question + '", "' + rubric_item + '", "' + always_show +'", "'+comment+'", "' +submission_num+ '", "'+tbox_num+'", "'+assignment_name+'", "' +check_box_status+'","" ]]' + '}'); } @@ -377,7 +377,7 @@ function appendComments_pdf(pdf_list,rubric_question,rubric_item,submission_num, console.log("comment:") console.log(comment); var comment_length = comment.length; - values += '[ "'+parseInt(last_row+1)+'", "' + rubric_question + '", "'+ assignment_name+'", "'+rubric_item+'","'+submission_num+'", "' + + values += '[ "", "'+ rubric_question + '", "'+ assignment_name+'", "'+rubric_item+'","'+submission_num+'", "' + comment + '", "' + comment_length + '", "1", "1", "1", "true", "' + grader_name + '"' + ' ],' last_row++; diff --git a/content_script.js b/content_script.js index c2e65f4..0d2fa3b 100644 --- a/content_script.js +++ b/content_script.js @@ -296,13 +296,13 @@ function storeAndPrintComments(rub,comments, id_num, index, searching,PDF) { } if(!PDF){ var string = "" + + " class='comment' style='color: rgb(" + 0 + ", " + 0 + ", " + 0 + ")'>" + "" + "" + comment + "" + ""; }else{ var string = "" + + " class='comment' style='color: rgb(" + 0 + ", " + 0 + ", " + 0 + ")'>" + "" + comment + "" + ""; } @@ -368,7 +368,6 @@ function storeAndPrintComments(rub,comments, id_num, index, searching,PDF) { //* find the gradescope correspondence here*** var this_index = $(this).parents("div").attr('id').slice(-1)-1; console.log(this_index); - console.log(full_sorted_comments) var comment = $(this).parents("tr").find(".comment_" + btn_id_num).html(); //console.log(comment); @@ -733,23 +732,7 @@ observer.observe(targetNode[i], config); } -$(document).ready(function(){ - if($("rubric-Item--key-applied").length>0){ - rubric_item=$(".rubricItem--key-applied").html() - - $('.pageViewerControls.u-pointerEventsNone').append($( - "
" + - "
DRAG PDF TO ME
"+ - "
" + - '
"Suggestions:"
' + - "
" + - "
" + - "
" - )); - //$("
NAIVEEEEEE
").insertAfter('.taBox--textarea'); - storeAndPrintComments(rubric_item,full_sorted_comments[rubric_item-1], rubric_item-1, rubric_item-1, false,true); - } -}); + // $(".comment_view_text").keydown(function() { @@ -1026,3 +1009,7 @@ $(function() { +function shortenComment(comment){ + //Find the string length +} + diff --git a/suggestions.css b/suggestions.css index e7d1ed6..6249fb3 100644 --- a/suggestions.css +++ b/suggestions.css @@ -96,7 +96,8 @@ a[disabled="disabled"] { .suggestion_container_pdf{ position: absolute; z-index: 9; - border: 1px solid black !important; + padding-top: 80px; + padding-left: 30px; } #mydivheader { @@ -108,6 +109,7 @@ a[disabled="disabled"] { } .suggestion_box_pdf { + width:150px; border: 1px solid #004ea3 !important; height: 200px !important; overflow-y: scroll !important; From 7dee1a6688a8fbabe805414c02a40459c837569f Mon Sep 17 00:00:00 2001 From: Zhaoyi Huang Date: Thu, 5 Sep 2019 10:24:24 -0700 Subject: [PATCH 33/68] button in pdf for copy paste made avalible --- content_script.js | 24 +++++++++++++++++++++++- suggestions.css | 4 ++++ 2 files changed, 27 insertions(+), 1 deletion(-) diff --git a/content_script.js b/content_script.js index 0d2fa3b..daf783d 100644 --- a/content_script.js +++ b/content_script.js @@ -302,7 +302,8 @@ function storeAndPrintComments(rub,comments, id_num, index, searching,PDF) { ""; }else{ var string = "" + + " class='comment' style='color: rgb(" + 0 + ", " + 0 + ", " + 0 + ")'>" + + "" + "" + comment + "" + ""; } @@ -342,6 +343,20 @@ function storeAndPrintComments(rub,comments, id_num, index, searching,PDF) { //add the comment to the ta-box when the btn_pdf is clicked + $('.btn_pdf').on('click',function(){ + + var btn_id_num = $(this).attr("class").split(" ")[1]; + var comment= $(this).parents("tr").find(".comment_"+btn_id_num).text(); + var $temp = $(""); + $("body").append($temp); + $temp.val($(this).parents("tr").find(".comment_"+btn_id_num).text()).select(); + document.execCommand("copy"); + $temp.remove(); + var comment_id="p_"+btn_id_num; + insertComment_pdf(comment,comment_id); + + console.log(comment); +}); @@ -469,6 +484,13 @@ function insertComment(comment, comment_id) { document.querySelector('.form--textArea').dispatchEvent(event); } + +function insertComment_pdf(comment,comment_id){ + comment = comment.replace(/\\"/g, '"').replace(/\\'/g, "'"); + comments_inserted[comment_id] = comment; +} + + function searchComments(query, search_id) { var id_num = search_id.split("search_")[1]; var result_comments = []; diff --git a/suggestions.css b/suggestions.css index 6249fb3..6b60c23 100644 --- a/suggestions.css +++ b/suggestions.css @@ -118,3 +118,7 @@ a[disabled="disabled"] { pointer-events: auto !important; } +.btn_pdf{ + pointer-events:auto !important; +} + From 0bb8f329c6f97d33828887839b78dddbb15d3862 Mon Sep 17 00:00:00 2001 From: Zhaoyi Huang Date: Thu, 5 Sep 2019 15:22:00 -0700 Subject: [PATCH 34/68] make the clickble update from pdf looks better in the sheet --- content_script.js | 29 +++++++++++++++++++++++++---- suggestions.css | 2 +- 2 files changed, 26 insertions(+), 5 deletions(-) diff --git a/content_script.js b/content_script.js index daf783d..1bb7037 100644 --- a/content_script.js +++ b/content_script.js @@ -43,6 +43,7 @@ var comments_inserted = {}; // list with text of comments they have inserted on // key = rubric question number, value = how many rubric items that question has // this is specific to A6 +var being_clicked_in_pdf=new Set() //console.log($('.taBox--textarea')); @@ -294,6 +295,10 @@ function storeAndPrintComments(rub,comments, id_num, index, searching,PDF) { if (comments[i][10] != undefined) { blank_values = comments[i][10].split(", "); } + + //NOTE: Upon Mia's request, the shade is no longer implemented here because sorting is already + //done, but always feel free to add shade back + //just change the rgb value from 0 to shade if(!PDF){ var string = "" + @@ -346,16 +351,28 @@ function storeAndPrintComments(rub,comments, id_num, index, searching,PDF) { $('.btn_pdf').on('click',function(){ var btn_id_num = $(this).attr("class").split(" ")[1]; + var this_index = $(this).parents("div").attr('id').slice(-1)-1; var comment= $(this).parents("tr").find(".comment_"+btn_id_num).text(); var $temp = $(""); $("body").append($temp); $temp.val($(this).parents("tr").find(".comment_"+btn_id_num).text()).select(); document.execCommand("copy"); $temp.remove(); - var comment_id="p_"+btn_id_num; + console.log("inserting comment: " + comment); + console.log(full_sorted_comments[this_index]); + console.log(full_sorted_comments[this_index][btn_id_num]); + var comment_id = full_sorted_comments[this_index][btn_id_num][0]; insertComment_pdf(comment,comment_id); - - console.log(comment); + being_clicked_in_pdf.add(comment); + chrome.runtime.sendMessage({action: "logEvent", + comment_info: full_sorted_comments[this_index][btn_id_num], + rubric_question: rubric_name, + rubric_item: rubric_item, + comment: comment, + submission_num: sub_number + }, function(response) { + console.log(response); + }); }); @@ -1003,10 +1020,14 @@ $(function() { if($('.taBox--textarea').length>0){ var pdf_text_list=[] while(i<$('.taBox--textarea').length){ - pdf_text_list.push($('.taBox--textarea')[i].innerHTML) + var text=$('.taBox--textarea')[i].innerHTML + if(!being_clicked_in_pdf.has(text)){ + pdf_text_list.push(text) + } i++; } + being_clicked_in_pdf.clear(); console.log(pdf_text_list) chrome.runtime.sendMessage({action:"sendPDFbox", pdf_list: pdf_text_list, diff --git a/suggestions.css b/suggestions.css index 6b60c23..afc1c1f 100644 --- a/suggestions.css +++ b/suggestions.css @@ -115,7 +115,7 @@ a[disabled="disabled"] { overflow-y: scroll !important; background-color: rgb(248, 248, 245) !important; position: relative !important; - pointer-events: auto !important; + /* pointer-events: auto !important; */ } .btn_pdf{ From 79ff5453f6cc3f15b396355a88e49a6c8591f971 Mon Sep 17 00:00:00 2001 From: Zhaoyi Huang Date: Mon, 9 Sep 2019 11:58:31 -0700 Subject: [PATCH 35/68] display context in the box --- background.js | 2 +- content_script.js | 100 ++++++++++++++++++++++++++++++++++------------ suggestions.css | 5 ++- 3 files changed, 80 insertions(+), 27 deletions(-) diff --git a/background.js b/background.js index f6f6aa9..31473bd 100644 --- a/background.js +++ b/background.js @@ -199,7 +199,7 @@ function updateSheets(action, submission_num,rubric_question, rubric_item, comme '"range": "A10!A2:H100000",' + '"values": [[ "' + new Date().toString() + '", "' + action + '", "", "' + user_id + '", "' + rubric_question + '", "' + rubric_item + '", "' + always_show +'", "'+comment+'", "' +submission_num+ '", "'+tbox_num+'", "'+assignment_name+'", "' - +check_box_status+'","" ]]' + + +check_box_status+'", "' +grader_name+'","" ]]' + '}'); } }); diff --git a/content_script.js b/content_script.js index 1bb7037..439b9fb 100644 --- a/content_script.js +++ b/content_script.js @@ -44,7 +44,7 @@ var comments_inserted = {}; // list with text of comments they have inserted on // this is specific to A6 var being_clicked_in_pdf=new Set() - +var already_on_pdf= new Set() //console.log($('.taBox--textarea')); @@ -84,6 +84,17 @@ chrome.storage.local.set({assignment_num:ass_number, submission_num:sub_number}) +$(document).ready(function(){ + var i=0; + if($('.taBox--textarea').length>0){ + while(i<$('.taBox--textarea').length){ + var text=$('.taBox--textarea')[i].innerHTML + already_on_pdf.add(text) + i++; + } +} +}); + $(document).ready(function(){ var student_name= $("abbr[role=button]").attr('aria-label'); student_name=student_name.replace("and ",""); @@ -210,6 +221,15 @@ function storeAndPrintComments(rub,comments, id_num, index, searching,PDF) { + //sort the comments by the first word(move them together) + comments= comments.sort(function(info1,info2){ + var nameA= (info1[5].split(' '))[0].toLowerCase(); + var nameB = (info2[5].split(' '))[0].toLowerCase(); + if(nameA === nameB) return 0; + return nameA > nameB ? 1 : -1; + + }); + // sort comments ascending by length comments = comments.sort(function(info1, info2) { var length1 = parseInt(info1[6]); @@ -224,14 +244,6 @@ function storeAndPrintComments(rub,comments, id_num, index, searching,PDF) { }); - - comments= comments.sort(function(info1,info2){ - var nameA= (info1[5].split(' '))[0].toLowerCase(); - var nameB = (info2[5].split(' '))[0].toLowerCase(); - if(nameA === nameB) return 0; - return nameA > nameB ? 1 : -1; - - }); //console.log(comments); // sort comments descending by frequency @@ -302,18 +314,23 @@ function storeAndPrintComments(rub,comments, id_num, index, searching,PDF) { if(!PDF){ var string = "" + - "" + - "" + comment + "" + + "" + + // "" + comment + "" + ""; }else{ var string = "" + - "" + - "" + comment + "" + + "" + + "" + comment + "" + ""; } if (category == "1") { - $(selector_addition + " .comments_good").append(string); + $(selector_addition + " .comments_good").append(string); + var tdd="."+"tdd_"+i + if($(tdd).children().length==1 && !PDF){ + var resultLink=makeTdWithLink(comment,blank_values,i) + $(tdd).append(resultLink) + } }else { $(selector_addition + " .comments_should").append("error with comment category"); } @@ -323,7 +340,7 @@ function storeAndPrintComments(rub,comments, id_num, index, searching,PDF) { $(selector_addition).find(".comment_" + i).each(function() { - var blanks = $(this).attr("data-blanks").split(","); + var blanks = $(this).attr("datablanks").split(","); $(this).find(".blank").each(function() { $(this).attr("placeholder", blanks[$(this).index()]); @@ -352,7 +369,8 @@ function storeAndPrintComments(rub,comments, id_num, index, searching,PDF) { var btn_id_num = $(this).attr("class").split(" ")[1]; var this_index = $(this).parents("div").attr('id').slice(-1)-1; - var comment= $(this).parents("tr").find(".comment_"+btn_id_num).text(); + //var comment= $(this).parents("tr").find(".comment_"+btn_id_num).text(); + var comment = full_sorted_comments[this_index][btn_id_num][5]; var $temp = $(""); $("body").append($temp); $temp.val($(this).parents("tr").find(".comment_"+btn_id_num).text()).select(); @@ -399,9 +417,17 @@ function storeAndPrintComments(rub,comments, id_num, index, searching,PDF) { // index of this rubric item = index of these comments in full_sorted_comments //* find the gradescope correspondence here*** var this_index = $(this).parents("div").attr('id').slice(-1)-1; - console.log(this_index); - var comment = $(this).parents("tr").find(".comment_" + btn_id_num).html(); + console.log(this_index); + + var rubric_item=$(".rubricItem--key-applied").html(); + rubric_item_applied=rubric_item; + console.log("inserting comment: " + comment); + console.log(full_sorted_comments[this_index]); + console.log(full_sorted_comments[this_index][btn_id_num]); + var comment_id = full_sorted_comments[this_index][btn_id_num][0]; + //var comment = $(this).parents("tr").find(".comment_" + btn_id_num).html(); + var comment = full_sorted_comments[this_index][btn_id_num][5]; //console.log(comment); // remove the blanky stuff @@ -416,12 +442,6 @@ function storeAndPrintComments(rub,comments, id_num, index, searching,PDF) { comment = comment.replace(/"/g, '\\"').replace(/'/g, "\\'"); //var rubric_item = $(this).parents("li").find(".rubricItem--pointsAndDescription").find(".rubricField-points").html(); - var rubric_item=$(".rubricItem--key-applied").html(); - rubric_item_applied=rubric_item; - console.log("inserting comment: " + comment); - console.log(full_sorted_comments[this_index]); - console.log(full_sorted_comments[this_index][btn_id_num]); - var comment_id = full_sorted_comments[this_index][btn_id_num][0]; insertComment(comment, comment_id); chrome.runtime.sendMessage({action: "logEvent", comment_info: full_sorted_comments[this_index][btn_id_num], @@ -1021,7 +1041,7 @@ $(function() { var pdf_text_list=[] while(i<$('.taBox--textarea').length){ var text=$('.taBox--textarea')[i].innerHTML - if(!being_clicked_in_pdf.has(text)){ + if(!being_clicked_in_pdf.has(text) && !already_on_pdf.has(text)){ pdf_text_list.push(text) } i++; @@ -1029,6 +1049,7 @@ $(function() { being_clicked_in_pdf.clear(); console.log(pdf_text_list) + if(pdf_text_list.length>0){ chrome.runtime.sendMessage({action:"sendPDFbox", pdf_list: pdf_text_list, rubric_question:rubric_number, @@ -1041,6 +1062,7 @@ $(function() { console.log("logging focus: " + response); //console.log("RRRRRRRRR "+rubric_item); }); + } } }); @@ -1054,5 +1076,33 @@ $(function() { function shortenComment(comment){ //Find the string length + if(comment.length>=35){ + return comment.substring(0,35)+"..."; + } + return comment; + } + + +function makeTdWithLink(comment,blank_values,i){ + var len=100 + var row=document.createElement("td") + row.class="comment_"+i; + row.datablanks=blank_values + var link=document.createElement("a") + row.innerHTML = comment.substring(0,len); + link.innerHTML=comment.length>len?".....":"" + link.href="javascript:void(0)"; + link.onclick=function(){ + if(link.innerHTML.indexOf("...")>0){ + }else{ + link.innerHTML="HIDE" + row.innerHTML=comment + } + } + row.appendChild(link) + return row } + + + diff --git a/suggestions.css b/suggestions.css index afc1c1f..875aa48 100644 --- a/suggestions.css +++ b/suggestions.css @@ -98,12 +98,14 @@ a[disabled="disabled"] { z-index: 9; padding-top: 80px; padding-left: 30px; + width:350px; } #mydivheader { padding: 10px; cursor: move; z-index: 10; + width:350px; background-color: #2196F3; color: #fff; } @@ -115,7 +117,8 @@ a[disabled="disabled"] { overflow-y: scroll !important; background-color: rgb(248, 248, 245) !important; position: relative !important; - /* pointer-events: auto !important; */ + pointer-events: auto !important; + width:350px; } .btn_pdf{ From 6732db9e35b3a9e3a741e7301cce4c89dc0fba13 Mon Sep 17 00:00:00 2001 From: Zhaoyi Huang Date: Mon, 9 Sep 2019 23:24:13 -0700 Subject: [PATCH 36/68] fix rows for the pdf --- background.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/background.js b/background.js index 31473bd..5e39893 100644 --- a/background.js +++ b/background.js @@ -377,7 +377,7 @@ function appendComments_pdf(pdf_list,rubric_question,rubric_item,submission_num, console.log("comment:") console.log(comment); var comment_length = comment.length; - values += '[ "", "'+ rubric_question + '", "'+ assignment_name+'", "'+rubric_item+'","'+submission_num+'", "' + + values += '[ "'+parseInt(last_row+1)+'", "'+ rubric_question + '", "'+ assignment_name+'", "'+rubric_item+'","'+submission_num+'", "' + comment + '", "' + comment_length + '", "1", "1", "1", "true", "' + grader_name + '"' + ' ],' last_row++; From 4222e41e7e497bbfccadd6b71bb7e387869efe64 Mon Sep 17 00:00:00 2001 From: Zhaoyi Huang Date: Wed, 11 Sep 2019 15:11:26 -0700 Subject: [PATCH 37/68] add comments displayed on the right of pdf --- background.js | 14 ++++++ content_script.js | 125 ++++++++++++++++++++++++++++++++++++++++++++-- manifest.json | 6 +++ suggestions.css | 6 +++ 4 files changed, 146 insertions(+), 5 deletions(-) diff --git a/background.js b/background.js index 5e39893..c2680a6 100644 --- a/background.js +++ b/background.js @@ -202,6 +202,20 @@ function updateSheets(action, submission_num,rubric_question, rubric_item, comme +check_box_status+'", "' +grader_name+'","" ]]' + '}'); } + + if(action=="onLeaving"){ + xhr2.open("POST", + "https://sheets.googleapis.com/v4/spreadsheets/" + event_sheet_id + + "/values/id_name!A2:H100000:append?valueInputOption=RAW", + true); + xhr2.setRequestHeader('Authorization','Bearer ' + token); + xhr2.setRequestHeader("Content-type", "application/json"); + + xhr2.send('{' + + '"range": "id_name!A2:H100000",' + + '"values": [[ "' + user_id + '", "' + grader_name+'","" ]]' + + '}'); + } }); diff --git a/content_script.js b/content_script.js index 439b9fb..e8b40c8 100644 --- a/content_script.js +++ b/content_script.js @@ -45,7 +45,7 @@ var comments_inserted = {}; // list with text of comments they have inserted on var being_clicked_in_pdf=new Set() var already_on_pdf= new Set() - +var len_pdf_box=0 //console.log($('.taBox--textarea')); if(window.location.pathname.indexOf('assignments')>=0){ @@ -90,6 +90,7 @@ $(document).ready(function(){ while(i<$('.taBox--textarea').length){ var text=$('.taBox--textarea')[i].innerHTML already_on_pdf.add(text) + i++; } } @@ -611,16 +612,97 @@ function injectSuggestions() { } }); - +$( +"
"+ +"

Comments you put in on PDF:

"+ +"
" + +).insertAfter(".form--textArea") + +$(document).ready(function(){ + b=Array.from(already_on_pdf) + console.log(b.length) + for(var i=0;i"+b[i]+""+"
") + } +}); + +$(document).change(function(){ + var everything_on_pdf=new Set() + console.log(Array.from(everything_on_pdf).length) + for(var i=0;i<$('.taBox--textarea').length;i++){ + var text=$('.taBox--textarea')[i].innerHTML + if(text!==""){ + everything_on_pdf.add(text) + } + } + console.log(Array.from(everything_on_pdf).length) + //more comments on the pdf not on the right + if($('.anchor_on_right').length<$('.taBox--textarea').length){ + console.log($('.anchor_on_right').length) + var set_on_right=new Set() + for(var j=0;j<$('.anchor_on_right').length;j++){ + var right_text=$('.anchor_on_right')[j].innerHTML + set_on_right.add(right_text) + } + let diff=new Set([...everything_on_pdf].filter(x => !set_on_right.has(x))); + var text=Array.from(diff)[0] + console.log(text) + $('.pdf_comments_display').append(""+text+""+"
") + // var text=$('.anchor_on_right')[j].innnerHTML; + // if(!everything_on_pdf.has(text)){ + // $('.pdf_comments_display').append(""+text+""+"
") + // } + + }else if($('.anchor_on_right').length>Array.from(everything_on_pdf).length){ + for(var k=0;k<$('.anchor_on_right').length;k++){ + var new_right_text=$('.anchor_on_right')[k].innerHTML + if(!everything_on_pdf.has(new_right_text)){ + $('.anchor_on_right')[k].innerHTML=""; + $('.anchor_on_right')[k].remove() + } + } + }else if($('.anchor_on_right').length==Array.from(everything_on_pdf).length){ + + var set_on_right=new Set() + for(var j=0;j<$('.anchor_on_right').length;j++){ + var right_text=$('.anchor_on_right')[j].innerHTML + set_on_right.add(right_text) + } + let diff_e_to_r=new Set([...everything_on_pdf].filter(x => !set_on_right.has(x))); + + if(diff_e_to_r.size!=0){ + let diff_r_to_e=new Set([...set_on_right].filter(x => !everything_on_pdf.has(x))); + + let text_to_update=Array.from(diff_r_to_e)[0] + let text_from_pdf=Array.from(diff_e_to_r)[0] + for(var k=0;k<$('.anchor_on_right').length;k++){ + var text=$('.anchor_on_right')[k].innerHTML + if(text==text_to_update){ + $('.anchor_on_right')[k].innerHTML=text_from_pdf + } + } + + } + + } +}); + + + $( "
"+ - "Check boxes below if you meet the critiria. If you don't want to comment, press 'z' for next question"+ + "Check boxes below if your comments on PDF or in comment box meet the critiria. If you don't want to comment, press 'z' for next question"+ "
"+ "Is specific"+ "Is actionable"+ "Is justified"+ "
" - ).insertAfter(".form--textArea"); + ).insertAfter(".pdf_comments_display"); + + + //disable the nextQuestion button until all checkbox clicked @@ -729,7 +811,26 @@ function injectSuggestions() { +$(document).ready(function(){ +var rubric_item_score=$(".rubricItem--key-applied").siblings(".rubricItem--pointsAndDescription").children("button").html(); +var arr=$(".submissionGraderPoints").html().split(" ") +arr.pop() +var total_score=arr.pop() +var res_total="+"+total_score +console.log(rubric_item_score) +console.log(total_score) +console.log(res_total) +if(rubric_item_score !=="-0.0" || rubric_item_score!==res_total){ + var text=$('.form--textArea').val() + console.log(text) + if(text.length==0){ + $(document).unbind("keypress.key90"); + }else{ + $(document).bind("keypress.key90",zClick()); + } +} +}); //Things in here is to make the selection of rubric items can be both be clicked/by keyboard // Select the node that will be observed for mutations @@ -749,7 +850,16 @@ const callback = function(mutationsList, observer) { var classList = mutation.target.className; if(classList.indexOf("rubricItem--key-applied")>0){ rubric_item=$(".rubricItem--key-applied").html() - + var rubric_item_score=$(".rubricItem--key-applied").siblings(".rubricItem--pointsAndDescription").children("button").html(); + var total_score=$(".submissionGraderPoints").html().split(" ").pop() + res_total="+"+total_score + // if(rubric_item_score !=="-0.0" || rubric_item_score!==res_total){ + // if($('.form--textArea').val().length==0){ + // $(document).unbind("keypress.key90"); + // }else{ + // $(document).bind("keypress.key90",zClick()); + // } + // } $('.pageViewerControls.u-pointerEventsNone').append($( "
" + "
DRAG PDF TO ME
"+ @@ -1104,5 +1214,10 @@ function makeTdWithLink(comment,blank_values,i){ } +function zClick(){ + temp=$(".actionBar--action-next").attr(href) + console.log(temp) + window.location.replace(temp); +} diff --git a/manifest.json b/manifest.json index a182e0d..6acc0fe 100644 --- a/manifest.json +++ b/manifest.json @@ -16,6 +16,12 @@ "mac": "Command+K" }, "description": "Toggle suggestion view" + }, + "new-z":{ + "suggested_ley":{ + "default":"Z" + }, + "description": "using this to disable z" } }, diff --git a/suggestions.css b/suggestions.css index 875aa48..35094ec 100644 --- a/suggestions.css +++ b/suggestions.css @@ -125,3 +125,9 @@ a[disabled="disabled"] { pointer-events:auto !important; } +.anchor_on_right{ + font-style:oblique; + display: block; + +} + From 7b94658102b1211eb38ec94b7bd3e7dd85de48f6 Mon Sep 17 00:00:00 2001 From: Zhaoyi Huang Date: Thu, 12 Sep 2019 11:42:04 -0700 Subject: [PATCH 38/68] disable/enable keyboard shortcut z for different occasions --- content_script.js | 66 ++++++++++++++++++++++++++++++++++++++++++----- 1 file changed, 60 insertions(+), 6 deletions(-) diff --git a/content_script.js b/content_script.js index e8b40c8..d56cb6d 100644 --- a/content_script.js +++ b/content_script.js @@ -45,7 +45,7 @@ var comments_inserted = {}; // list with text of comments they have inserted on var being_clicked_in_pdf=new Set() var already_on_pdf= new Set() -var len_pdf_box=0 +var Zdisabled=false //console.log($('.taBox--textarea')); if(window.location.pathname.indexOf('assignments')>=0){ @@ -623,7 +623,6 @@ $(document).ready(function(){ b=Array.from(already_on_pdf) console.log(b.length) for(var i=0;i"+b[i]+""+"
") } }); @@ -820,18 +819,37 @@ var res_total="+"+total_score console.log(rubric_item_score) console.log(total_score) console.log(res_total) -if(rubric_item_score !=="-0.0" || rubric_item_score!==res_total){ +if(rubric_item_score !=="-0.0"){ + if(rubric_item_score.substring(0,1)!="-"){ + if(rubric_item_score==res_total){ + Zdisabled=false + return + } + } var text=$('.form--textArea').val() console.log(text) - if(text.length==0){ - $(document).unbind("keypress.key90"); + if(text==""){ + Zdisabled=true }else{ - $(document).bind("keypress.key90",zClick()); + Zdisabled=false } } }); + + +// $(window).on('keydown',function(event){ +// var keycode=event.key; +// if(keycode=='z' &&Zdisabled){ +// alert("keycode") +// alert(Zdisabled) +// event.preventDefault() +// //event.stopPropagation; +// } + +// }); + //Things in here is to make the selection of rubric items can be both be clicked/by keyboard // Select the node that will be observed for mutations const targetNode = document.getElementsByClassName('rubricItem--key'); @@ -1219,5 +1237,41 @@ function zClick(){ console.log(temp) window.location.replace(temp); } +$('.form--textArea').change(function(){ + var rubric_item_score=$(".rubricItem--key-applied").siblings(".rubricItem--pointsAndDescription").children("button").html(); +var arr=$(".submissionGraderPoints").html().split(" ") +arr.pop() +var total_score=arr.pop() +var res_total="+"+total_score +if(rubric_item_score !=="-0.0"){ + if(rubric_item_score.substring(0,1)!="-"){ + if(rubric_item_score==res_total){ + Zdisabled=false + return + } + } + var text=$('.form--textArea').val() + console.log(text) + if(text==""){ + Zdisabled=true + }else{ + Zdisabled=false + } +}else{ + Zdisabled=false +} +}); +document.addEventListener('keydown',switchZ,true); +function switchZ(event){ + var keycode=event.key; + if(keycode=='z' &&Zdisabled){ + alert("keycode") + alert(Zdisabled) + event.stopPropagation(); +}else{ + $(document).unbind(); + +} +} \ No newline at end of file From 840b646c1deb1815f3e45f935f1923d3abf4f774 Mon Sep 17 00:00:00 2001 From: Zhaoyi Huang Date: Thu, 12 Sep 2019 16:02:51 -0700 Subject: [PATCH 39/68] bug fixed for disable z --- background.js | 2 +- content_script.js | 4 +--- manifest.json | 6 ------ 3 files changed, 2 insertions(+), 10 deletions(-) diff --git a/background.js b/background.js index c2680a6..86661cc 100644 --- a/background.js +++ b/background.js @@ -39,7 +39,7 @@ function loadSpreadsheet() { }; xhr.open("GET", - "https://sheets.googleapis.com/v4/spreadsheets/" + comment_sheet_id + "/values/comments_unique!A2:K10000", + "https://sheets.googleapis.com/v4/spreadsheets/" + comment_sheet_id + "/values/W16-A10!A2:K10000", true); xhr.setRequestHeader('Authorization','Bearer ' + token); diff --git a/content_script.js b/content_script.js index d56cb6d..bea525c 100644 --- a/content_script.js +++ b/content_script.js @@ -1184,7 +1184,7 @@ $(function() { rubric_item:$(".rubricItem--key-applied").html(), submission_num:sub_number, assignment_name: ass_number, - grader_name:grader_name + grader_name:user_id },function(response) { console.log("logging focus: " + response); @@ -1267,8 +1267,6 @@ document.addEventListener('keydown',switchZ,true); function switchZ(event){ var keycode=event.key; if(keycode=='z' &&Zdisabled){ - alert("keycode") - alert(Zdisabled) event.stopPropagation(); }else{ $(document).unbind(); diff --git a/manifest.json b/manifest.json index 6acc0fe..a182e0d 100644 --- a/manifest.json +++ b/manifest.json @@ -16,12 +16,6 @@ "mac": "Command+K" }, "description": "Toggle suggestion view" - }, - "new-z":{ - "suggested_ley":{ - "default":"Z" - }, - "description": "using this to disable z" } }, From 9924a4255490a4b362e69d0c54a8423b3f4d5b58 Mon Sep 17 00:00:00 2001 From: Zhaoyi Huang Date: Mon, 16 Sep 2019 15:31:21 -0700 Subject: [PATCH 40/68] change of color, and change of sheets --- background.js | 14 +++++++------- content_script.js | 16 ++++------------ popup.js | 4 ++-- 3 files changed, 13 insertions(+), 21 deletions(-) diff --git a/background.js b/background.js index 86661cc..23af441 100644 --- a/background.js +++ b/background.js @@ -39,7 +39,7 @@ function loadSpreadsheet() { }; xhr.open("GET", - "https://sheets.googleapis.com/v4/spreadsheets/" + comment_sheet_id + "/values/W16-A10!A2:K10000", + "https://sheets.googleapis.com/v4/spreadsheets/" + comment_sheet_id + "/values/F19!A2:K10000", true); xhr.setRequestHeader('Authorization','Bearer ' + token); @@ -106,14 +106,14 @@ function updateSheets(action, submission_num,rubric_question, rubric_item, comme console.log("frequency was " + cur_frequency); xhr.open("PUT", - "https://sheets.googleapis.com/v4/spreadsheets/" + comment_sheet_id + "/values/W16-A10!I" + row + "?valueInputOption=RAW", + "https://sheets.googleapis.com/v4/spreadsheets/" + comment_sheet_id + "/values/F19!I" + row + "?valueInputOption=RAW", true); xhr.setRequestHeader('Authorization','Bearer ' + token); xhr.setRequestHeader("Content-type", "application/json"); //xhr.responseType = "json"; xhr.send('{' + - '"range": "W16-A10!I' + row + '",' + + '"range": "F19!I' + row + '",' + '"values": [[' + (cur_frequency + 1) + ']]' + '}'); } @@ -358,12 +358,12 @@ function appendCommentsToSheet(values) { xhr.open("POST", "https://sheets.googleapis.com/v4/spreadsheets/" + comment_sheet_id + - "/values/W16-A10!A2:L10000:append?valueInputOption=RAW", + "/values/F19!A2:L10000:append?valueInputOption=RAW", true); xhr.setRequestHeader('Authorization','Bearer ' + token); xhr.setRequestHeader("Content-type", "application/json"); xhr.send('{' + - '"range": "W16-A10!A2:L10000",' + + '"range": "F19!A2:L10000",' + values + '}'); } @@ -416,12 +416,12 @@ if (values != '"values": ]') { xhr.open("POST", "https://sheets.googleapis.com/v4/spreadsheets/" + comment_sheet_id + - "/values/W16-A10!A2:L10000:append?valueInputOption=RAW", + "/values/F19!A2:L10000:append?valueInputOption=RAW", true); xhr.setRequestHeader('Authorization','Bearer ' + token); xhr.setRequestHeader("Content-type", "application/json"); xhr.send('{' + - '"range": "W16-A10!A2:L10000",' + + '"range": "F19!A2:L10000",' + values + '}'); } diff --git a/content_script.js b/content_script.js index bea525c..d28cccc 100644 --- a/content_script.js +++ b/content_script.js @@ -614,7 +614,7 @@ function injectSuggestions() { $( "
"+ -"

Comments you put in on PDF:

"+ +"

Comments you put in on PDF:

"+ "
" ).insertAfter(".form--textArea") @@ -692,7 +692,7 @@ $(document).change(function(){ $( "
"+ - "Check boxes below if your comments on PDF or in comment box meet the critiria. If you don't want to comment, press 'z' for next question"+ + "Check boxes below if your comments on PDF or in comment box meet the critiria. you can press 'z' for next question as long as you put in comments for not full marks rubric items"+ "
"+ "Is specific"+ "Is actionable"+ @@ -868,16 +868,6 @@ const callback = function(mutationsList, observer) { var classList = mutation.target.className; if(classList.indexOf("rubricItem--key-applied")>0){ rubric_item=$(".rubricItem--key-applied").html() - var rubric_item_score=$(".rubricItem--key-applied").siblings(".rubricItem--pointsAndDescription").children("button").html(); - var total_score=$(".submissionGraderPoints").html().split(" ").pop() - res_total="+"+total_score - // if(rubric_item_score !=="-0.0" || rubric_item_score!==res_total){ - // if($('.form--textArea').val().length==0){ - // $(document).unbind("keypress.key90"); - // }else{ - // $(document).bind("keypress.key90",zClick()); - // } - // } $('.pageViewerControls.u-pointerEventsNone').append($( "
" + "
DRAG PDF TO ME
"+ @@ -1263,6 +1253,8 @@ if(rubric_item_score !=="-0.0"){ }); + + document.addEventListener('keydown',switchZ,true); function switchZ(event){ var keycode=event.key; diff --git a/popup.js b/popup.js index bd8ace0..4d47f6d 100644 --- a/popup.js +++ b/popup.js @@ -60,9 +60,9 @@ document.addEventListener('DOMContentLoaded', function() { chrome.storage.local.set({user_id: user_id, always_show: always_show}); } else if (items.always_show == undefined) { user_id = items.user_id; - always_show = (Math.random() < 0.5); + always_show = false; console.log("always show: " + always_show); - chrome.storage.local.set({always_show: always_show}); + chrome.storage.local.set({always_show: false}); } else { user_id = items.user_id; always_show = items.always_show; From b81058cb42baf3a65cd3d72ae0d5416f81b2637f Mon Sep 17 00:00:00 2001 From: Zhaoyi Huang Date: Mon, 16 Sep 2019 15:56:51 -0700 Subject: [PATCH 41/68] some modification on the onLeaving event --- background.js | 4 +++- content_script.js | 6 +++--- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/background.js b/background.js index 23af441..3bf0b00 100644 --- a/background.js +++ b/background.js @@ -195,6 +195,8 @@ function updateSheets(action, submission_num,rubric_question, rubric_item, comme rubric_question + '", "", "' + always_show + '", "","'+submission_num+'","" ]]' + '}'); }else if(action=="onLeaving"){ + console.log("ON LEAVINGGGGGG") + console.log(rubric_item) xhr2.send('{' + '"range": "A10!A2:H100000",' + '"values": [[ "' + new Date().toString() + '", "' + action + '", "", "' + user_id + '", "' + @@ -392,7 +394,7 @@ function appendComments_pdf(pdf_list,rubric_question,rubric_item,submission_num, console.log(comment); var comment_length = comment.length; values += '[ "'+parseInt(last_row+1)+'", "'+ rubric_question + '", "'+ assignment_name+'", "'+rubric_item+'","'+submission_num+'", "' + - comment + '", "' + comment_length + '", "1", "1", "1", "true", "' + grader_name + '"' + + comment + '", "' + comment_length + '", "1", "1", "1", "true", "' + user_id + '"' + ' ],' last_row++; diff --git a/content_script.js b/content_script.js index d28cccc..1869715 100644 --- a/content_script.js +++ b/content_script.js @@ -727,8 +727,8 @@ $(document).change(function(){ }); - //trigger word function: if the - $(document).change(function(){ + //trigger word function(bonus point): some words can trigger checkboxes to be cliked + $('.form--textArea').change(function(){ comment_text = $('.form--textArea').val(); comment_split=comment_text.split(" "); if (comment_split.includes('may')||comment_split.includes('should')){ @@ -1144,7 +1144,7 @@ $(function() { chrome.runtime.sendMessage({action: "onLeaving", tbox_num:$('.taBox--textarea').length, rubric_question:rubric_name, - rubric_item:$(".rubricItem--key-applied").html(), + rubric_item:$(".rubricItem--key-applied").siblings(".rubricItem--pointsAndDescription").children("button").html(), comment: $('.form--textArea').val(), submission_num:sub_number, assignment_name: ass_name, From a83590dd1fe1d07289f4ade8366fb20ac0f316f6 Mon Sep 17 00:00:00 2001 From: Zhaoyi Huang Date: Mon, 16 Sep 2019 22:04:14 -0700 Subject: [PATCH 42/68] big change, incooperate z disabled/enabled and the immeidate change in pdf/right side --- content_script.js | 247 +++++++++++++++++++++++++++++++--------------- 1 file changed, 167 insertions(+), 80 deletions(-) diff --git a/content_script.js b/content_script.js index 1869715..be188c0 100644 --- a/content_script.js +++ b/content_script.js @@ -64,11 +64,12 @@ if(window.location.pathname.indexOf('assignments')>=0){ -//follow the demo, the key is the question itself and the value is the num of rubric items -var num_rubric_items = {1.1:7,1.2:7,1.3:7,1.4: 7,1.5: 7, 2.1:7,2.2:7, 2.3: 7, 3.1:7, 3.2:7, 3.3:7, 3.4:7, 3.5:7, 4.1:7, - 4.2: 7, 4.3:7, 4.4:7, 4.5:7, 5.1:7, 5.2:7,5.3:7, 5.4:7, 5.5:7,6.1:7,6.2:7,6.3:7,6.4: 7,6.5: 7, - 7.1:7,7.2:7,7.3:7,7.4: 7,7.5: 7, 2.4:7,2.5:7, - 1: 7, 2: 7, 3: 7, 4: 7, 5: 7, 6: 7, 7: 7}; +//follow the demo, the key is the question itself and the value is the num of rubric items, +//total 7 questions, each with 10 rubric items +var num_rubric_items = {1.1:10,1.2:10,1.3:10,1.4: 10,1.5: 10, 2.1:10,2.2:10, 2.3: 10, 3.1:10, 3.2:10, 3.3:10, 3.4:10, 3.5:10, 4.1:10, + 4.2: 10, 4.3:10, 4.4:10, 4.5:10, 5.1:10, 5.2:10,5.3:10, 5.4:10, 5.5:10,6.1:10,6.2:10,6.3:10,6.4: 10,6.5: 10, + 7.1:10,7.2:10,7.3:10,7.4: 10,7.5: 10, 2.4:10,2.5:10, + 1: 10, 2: 10, 3: 10, 4: 10, 5: 10, 6: 10, 7: 10}; //get the assignment number and submission number var attrobj= jQuery.parseJSON($("div[data-react-class]").attr('data-react-props')); @@ -627,66 +628,67 @@ $(document).ready(function(){ } }); -$(document).change(function(){ - var everything_on_pdf=new Set() - console.log(Array.from(everything_on_pdf).length) - for(var i=0;i<$('.taBox--textarea').length;i++){ - var text=$('.taBox--textarea')[i].innerHTML - if(text!==""){ - everything_on_pdf.add(text) - } - } - console.log(Array.from(everything_on_pdf).length) - //more comments on the pdf not on the right - if($('.anchor_on_right').length<$('.taBox--textarea').length){ - console.log($('.anchor_on_right').length) - var set_on_right=new Set() - for(var j=0;j<$('.anchor_on_right').length;j++){ - var right_text=$('.anchor_on_right')[j].innerHTML - set_on_right.add(right_text) - } - let diff=new Set([...everything_on_pdf].filter(x => !set_on_right.has(x))); - var text=Array.from(diff)[0] - console.log(text) - $('.pdf_comments_display').append(""+text+""+"
") - // var text=$('.anchor_on_right')[j].innnerHTML; - // if(!everything_on_pdf.has(text)){ - // $('.pdf_comments_display').append(""+text+""+"
") - // } +// $(document).change(function(){ +// var everything_on_pdf=new Set() +// console.log(Array.from(everything_on_pdf).length) +// for(var i=0;i<$('.taBox--textarea').length;i++){ +// var text=$('.taBox--textarea')[i].innerHTML +// if(text!==""){ +// everything_on_pdf.add(text) +// } +// } +// console.log(Array.from(everything_on_pdf).length) +// //more comments on the pdf not on the right +// if($('.anchor_on_right').length<$('.taBox--textarea').length){ +// console.log($('.anchor_on_right').length) +// var set_on_right=new Set() +// for(var j=0;j<$('.anchor_on_right').length;j++){ +// var right_text=$('.anchor_on_right')[j].innerHTML +// set_on_right.add(right_text) +// } +// let diff=new Set([...everything_on_pdf].filter(x => !set_on_right.has(x))); +// var text=Array.from(diff)[0] +// console.log(text) +// $('.pdf_comments_display').append(""+text+""+"
") +// // var text=$('.anchor_on_right')[j].innnerHTML; +// // if(!everything_on_pdf.has(text)){ +// // $('.pdf_comments_display').append(""+text+""+"
") +// // } - }else if($('.anchor_on_right').length>Array.from(everything_on_pdf).length){ - for(var k=0;k<$('.anchor_on_right').length;k++){ - var new_right_text=$('.anchor_on_right')[k].innerHTML - if(!everything_on_pdf.has(new_right_text)){ - $('.anchor_on_right')[k].innerHTML=""; - $('.anchor_on_right')[k].remove() - } - } - }else if($('.anchor_on_right').length==Array.from(everything_on_pdf).length){ - - var set_on_right=new Set() - for(var j=0;j<$('.anchor_on_right').length;j++){ - var right_text=$('.anchor_on_right')[j].innerHTML - set_on_right.add(right_text) - } - let diff_e_to_r=new Set([...everything_on_pdf].filter(x => !set_on_right.has(x))); +// }else if($('.anchor_on_right').length>Array.from(everything_on_pdf).length){ +// for(var k=0;k<$('.anchor_on_right').length;k++){ +// var new_right_text=$('.anchor_on_right')[k].innerHTML +// if(!everything_on_pdf.has(new_right_text)){ +// $('.anchor_on_right')[k].innerHTML=""; +// $('.anchor_on_right')[k].remove() +// } +// } +// }else if($('.anchor_on_right').length==Array.from(everything_on_pdf).length){ +// console.log("CDSDLFKDSLFJK") +// var set_on_right=new Set() +// for(var j=0;j<$('.anchor_on_right').length;j++){ +// var right_text=$('.anchor_on_right')[j].innerHTML +// set_on_right.add(right_text) +// } +// let diff_e_to_r=new Set([...everything_on_pdf].filter(x => !set_on_right.has(x))); - if(diff_e_to_r.size!=0){ - let diff_r_to_e=new Set([...set_on_right].filter(x => !everything_on_pdf.has(x))); +// if(diff_e_to_r.size!=0){ +// let diff_r_to_e=new Set([...set_on_right].filter(x => !everything_on_pdf.has(x))); - let text_to_update=Array.from(diff_r_to_e)[0] - let text_from_pdf=Array.from(diff_e_to_r)[0] - for(var k=0;k<$('.anchor_on_right').length;k++){ - var text=$('.anchor_on_right')[k].innerHTML - if(text==text_to_update){ - $('.anchor_on_right')[k].innerHTML=text_from_pdf - } - } +// let text_to_update=Array.from(diff_r_to_e)[0] +// let text_from_pdf=Array.from(diff_e_to_r)[0] +// console.log(text_from_pdf) +// for(var k=0;k<$('.anchor_on_right').length;k++){ +// var text=$('.anchor_on_right')[k].innerHTML +// if(text==text_to_update){ +// $('.anchor_on_right')[k].innerHTML=text_from_pdf +// } +// } - } +// } - } -}); +// } +// }); @@ -812,6 +814,9 @@ $(document).change(function(){ $(document).ready(function(){ var rubric_item_score=$(".rubricItem--key-applied").siblings(".rubricItem--pointsAndDescription").children("button").html(); +if(rubric_item_score==undefined){ + return +} var arr=$(".submissionGraderPoints").html().split(" ") arr.pop() var total_score=arr.pop() @@ -829,6 +834,7 @@ if(rubric_item_score !=="-0.0"){ var text=$('.form--textArea').val() console.log(text) if(text==""){ + console.log("START TRUE") Zdisabled=true }else{ Zdisabled=false @@ -839,17 +845,6 @@ if(rubric_item_score !=="-0.0"){ -// $(window).on('keydown',function(event){ -// var keycode=event.key; -// if(keycode=='z' &&Zdisabled){ -// alert("keycode") -// alert(Zdisabled) -// event.preventDefault() -// //event.stopPropagation; -// } - -// }); - //Things in here is to make the selection of rubric items can be both be clicked/by keyboard // Select the node that will be observed for mutations const targetNode = document.getElementsByClassName('rubricItem--key'); @@ -866,7 +861,7 @@ const callback = function(mutationsList, observer) { } else if (mutation.type === 'attributes') { var classList = mutation.target.className; - if(classList.indexOf("rubricItem--key-applied")>0){ + if(classList.indexOf("rubricItem--key-applied")>=0){ rubric_item=$(".rubricItem--key-applied").html() $('.pageViewerControls.u-pointerEventsNone').append($( "
" + @@ -1160,8 +1155,11 @@ $(function() { while(i<$('.taBox--textarea').length){ var text=$('.taBox--textarea')[i].innerHTML if(!being_clicked_in_pdf.has(text) && !already_on_pdf.has(text)){ + text=checkEqualTextPDF(text,full_sorted_comments) + if(text!==undefined){ pdf_text_list.push(text) } + } i++; } @@ -1222,11 +1220,6 @@ function makeTdWithLink(comment,blank_values,i){ } -function zClick(){ - temp=$(".actionBar--action-next").attr(href) - console.log(temp) - window.location.replace(temp); -} $('.form--textArea').change(function(){ var rubric_item_score=$(".rubricItem--key-applied").siblings(".rubricItem--pointsAndDescription").children("button").html(); var arr=$(".submissionGraderPoints").html().split(" ") @@ -1253,15 +1246,109 @@ if(rubric_item_score !=="-0.0"){ }); +// check if the current comments is +function checkEqualTextPDF(comment,full_comments){ + for(let i=0;i=0){ + //only accept addendum to original comments + if(comment.indexOf(full_comments[full_comments.length-1][i][5])==0){ + return comment.substring(comment.indexOf(full_comments[full_comments.length-1][i][5])+full_comments[full_comments.length-1][i][5].length); + } + }else{ + continue + } + } + return comment +} + +// $(document).change(function(){ +// if(Zdisabled){ +// alert("TRUE") +// document.addEventListener('keydown',switchZ,true); +// }else{ +// alert("FALSE") +// document.removeEventListener('keydown',switchZ,true); +// } +// }) document.addEventListener('keydown',switchZ,true); function switchZ(event){ var keycode=event.key; if(keycode=='z' &&Zdisabled){ - event.stopPropagation(); + + event.stopImmediatePropagation(); }else{ - $(document).unbind(); + // $(document).unbind(); + // $(document).bind() + document.removeEventListener('keydown',switchZ,true); } -} \ No newline at end of file +} + + + + +$(document).change(function(){ + var everything_on_pdf=new Set() + console.log(Array.from(everything_on_pdf).length) + for(var i=0;i<$('.taBox--textarea').length;i++){ + var text=$('.taBox--textarea')[i].innerHTML + if(text!==""){ + everything_on_pdf.add(text) + } + } + console.log(Array.from(everything_on_pdf).length) + //more comments on the pdf not on the right + if($('.anchor_on_right').length<$('.taBox--textarea').length){ + console.log($('.anchor_on_right').length) + var set_on_right=new Set() + for(var j=0;j<$('.anchor_on_right').length;j++){ + var right_text=$('.anchor_on_right')[j].innerHTML + set_on_right.add(right_text) + } + let diff=new Set([...everything_on_pdf].filter(x => !set_on_right.has(x))); + var text=Array.from(diff)[0] + console.log(text) + $('.pdf_comments_display').append(""+text+""+"
") + // var text=$('.anchor_on_right')[j].innnerHTML; + // if(!everything_on_pdf.has(text)){ + // $('.pdf_comments_display').append(""+text+""+"
") + // } + + }else if($('.anchor_on_right').length>Array.from(everything_on_pdf).length){ + for(var k=0;k<$('.anchor_on_right').length;k++){ + var new_right_text=$('.anchor_on_right')[k].innerHTML + if(!everything_on_pdf.has(new_right_text)){ + $('.anchor_on_right')[k].innerHTML=""; + $('.anchor_on_right')[k].remove() + } + } + }else if($('.anchor_on_right').length==Array.from(everything_on_pdf).length){ + console.log("CDSDLFKDSLFJK") + var set_on_right=new Set() + for(var j=0;j<$('.anchor_on_right').length;j++){ + var right_text=$('.anchor_on_right')[j].innerHTML + set_on_right.add(right_text) + } + let diff_e_to_r=new Set([...everything_on_pdf].filter(x => !set_on_right.has(x))); + + if(diff_e_to_r.size!=0){ + let diff_r_to_e=new Set([...set_on_right].filter(x => !everything_on_pdf.has(x))); + + let text_to_update=Array.from(diff_r_to_e)[0] + let text_from_pdf=Array.from(diff_e_to_r)[0] + console.log(text_from_pdf) + for(var k=0;k<$('.anchor_on_right').length;k++){ + var text=$('.anchor_on_right')[k].innerHTML + if(text==text_to_update){ + $('.anchor_on_right')[k].innerHTML=text_from_pdf + } + } + + } + + } +}) \ No newline at end of file From e018f0c4ea05129db9127dec5b91104f3cb9426d Mon Sep 17 00:00:00 2001 From: Zhaoyi Huang Date: Mon, 16 Sep 2019 22:39:03 -0700 Subject: [PATCH 43/68] remove expandable comments --- content_script.js | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/content_script.js b/content_script.js index be188c0..e7aad86 100644 --- a/content_script.js +++ b/content_script.js @@ -317,7 +317,7 @@ function storeAndPrintComments(rub,comments, id_num, index, searching,PDF) { var string = "" + "" + - // "" + comment + "" + + "" + comment + "" + ""; }else{ var string = " Date: Tue, 17 Sep 2019 16:06:28 -0700 Subject: [PATCH 44/68] modified onLeaving event, add rubric points and text --- background.js | 36 ++++++++++++++++++----------------- content_script.js | 48 +++++++++++++++++++++++++++++++++++++---------- 2 files changed, 57 insertions(+), 27 deletions(-) diff --git a/background.js b/background.js index 3bf0b00..12df0fc 100644 --- a/background.js +++ b/background.js @@ -3,7 +3,7 @@ //NOTICE: make headings first for the table(A1:L1 for comment sheet) then do the insertions!! //otherwise, table range will be a mess var comment_sheet_id = "1HdcveHzPgCNc1lCp_Lfb7MX3O51p3u5jKrnxOw-66bQ"; -var event_sheet_id = "11mbvJusJtSQ4IjWPSwROlZdygijXDv0YWeI3LREfdbw"; +var event_sheet_id = "18aitRp5Bubiuapjo_pMeV6EE0Ixv3yE8zrli3y7QPx4"; var user_id; var always_show; var on_grading_page; @@ -70,7 +70,7 @@ function loadSpreadsheet() { }); } -function updateSheets(action, submission_num,rubric_question, rubric_item, comment_info, comment,tbox_num,assignment_name,grader_name,check_box_status) { +function updateSheets(action, submission_num,rubric_question, rubric_item, comment_info, comment,tbox_num,assignment_name,grader_name,check_box_status,rubric_point,rubric_text) { store_rubric_item=rubric_item; console.log(typeof(store_rubric_item)); console.log("store_rubric_item is "+store_rubric_item); @@ -201,23 +201,23 @@ function updateSheets(action, submission_num,rubric_question, rubric_item, comme '"range": "A10!A2:H100000",' + '"values": [[ "' + new Date().toString() + '", "' + action + '", "", "' + user_id + '", "' + rubric_question + '", "' + rubric_item + '", "' + always_show +'", "'+comment+'", "' +submission_num+ '", "'+tbox_num+'", "'+assignment_name+'", "' - +check_box_status+'", "' +grader_name+'","" ]]' + + +check_box_status+'", "' +grader_name+'", "'+rubric_point+'", "'+rubric_text+'","" ]]' + '}'); } - if(action=="onLeaving"){ - xhr2.open("POST", - "https://sheets.googleapis.com/v4/spreadsheets/" + event_sheet_id + - "/values/id_name!A2:H100000:append?valueInputOption=RAW", - true); - xhr2.setRequestHeader('Authorization','Bearer ' + token); - xhr2.setRequestHeader("Content-type", "application/json"); - - xhr2.send('{' + - '"range": "id_name!A2:H100000",' + - '"values": [[ "' + user_id + '", "' + grader_name+'","" ]]' + - '}'); - } + // if(action=="onLeaving"){ + // xhr2.open("POST", + // "https://sheets.googleapis.com/v4/spreadsheets/" + event_sheet_id + + // "/values/id_name!A2:H100000:append?valueInputOption=RAW", + // true); + // xhr2.setRequestHeader('Authorization','Bearer ' + token); + // xhr2.setRequestHeader("Content-type", "application/json"); + + // xhr2.send('{' + + // '"range": "id_name!A2:H100000",' + + // '"values": [[ "' + user_id + '", "' + grader_name+'","" ]]' + + // '}'); + // } }); @@ -231,6 +231,8 @@ function updateSheets(action, submission_num,rubric_question, rubric_item, comme console.log("Not signed into Chrome, network error or no permission.\n" + message); } + + }); } @@ -532,7 +534,7 @@ chrome.runtime.onMessage.addListener(function(request, sender, sendResponse) { } else if (request.action == "onLeaving") { //NOTICE: SINCE WE ARE ALWAYS USING GRADING PAGE, ongrading is useless //on_grading_page = false; - updateSheets("onLeaving", request.submission_num,request.rubric_question,request.rubric_item,undefined,request.comment,request.tbox_num,request.assignment_name,request.grader_name,request.check_box_status); + updateSheets("onLeaving", request.submission_num,request.rubric_question,request.rubric_item,undefined,request.comment,request.tbox_num,request.assignment_name,request.grader_name,request.check_box_status,request.rubric_point,request.rubric_text); }else if (request.action == "logPDFFocus") { updateSheets("pdf focus", request.submission_num,request.rubric_question); sendResponse("event logged"); diff --git a/content_script.js b/content_script.js index e7aad86..37aa182 100644 --- a/content_script.js +++ b/content_script.js @@ -43,6 +43,7 @@ var comments_inserted = {}; // list with text of comments they have inserted on // key = rubric question number, value = how many rubric items that question has // this is specific to A6 + var being_clicked_in_pdf=new Set() var already_on_pdf= new Set() var Zdisabled=false @@ -69,7 +70,9 @@ if(window.location.pathname.indexOf('assignments')>=0){ var num_rubric_items = {1.1:10,1.2:10,1.3:10,1.4: 10,1.5: 10, 2.1:10,2.2:10, 2.3: 10, 3.1:10, 3.2:10, 3.3:10, 3.4:10, 3.5:10, 4.1:10, 4.2: 10, 4.3:10, 4.4:10, 4.5:10, 5.1:10, 5.2:10,5.3:10, 5.4:10, 5.5:10,6.1:10,6.2:10,6.3:10,6.4: 10,6.5: 10, 7.1:10,7.2:10,7.3:10,7.4: 10,7.5: 10, 2.4:10,2.5:10, - 1: 10, 2: 10, 3: 10, 4: 10, 5: 10, 6: 10, 7: 10}; + 1: 10, 2: 10, 3: 10, 4: 10, 5: 10, 6: 10, 7: 10,8:10,9:10,10:10,1.6:10,1.7:10,1.8:10,2.6:10,2.7:10,2.8:10, + 3.6:10,3.7:10,3.8:10,4.6:10,4.7:10,4.8:10,5.6:10,5.7:10,5.8:10,6.6:10,6.7:10,6.8:10, + 7.6:10,7.7:10,7.8:10}; //get the assignment number and submission number var attrobj= jQuery.parseJSON($("div[data-react-class]").attr('data-react-props')); @@ -711,7 +714,9 @@ $(document).ready(function(){ //disable the nextQuestion button until all checkbox clicked $(document).ready(function(){ + if(Zdisabled){ $(".actionBar--action-next").attr('disabled',true); + } let cur_url= window.location.href chrome.storage.local.get(null, function(items){ url_list= items.url_list; @@ -785,12 +790,15 @@ $(document).ready(function(){ $(document).change(function(){ - var count=$('input[name="category"]:checked').length; - if(count==3){ - $(".actionBar--action-next").attr('disabled',false); - }else{ - $(".actionBar--action-next").attr('disabled',true); + if(Zdisabled){ + } + // var count=$('input[name="category"]:checked').length; + // if(count==3){ + // $(".actionBar--action-next").attr('disabled',false); + // }else{ + // $(".actionBar--action-next").attr('disabled',true); + // } }); @@ -1142,7 +1150,9 @@ $(function() { chrome.runtime.sendMessage({action: "onLeaving", tbox_num:$('.taBox--textarea').length, rubric_question:rubric_name, - rubric_item:$(".rubricItem--key-applied").siblings(".rubricItem--pointsAndDescription").children("button").html(), + rubric_item: rubric_item, + rubric_point:$(".rubricItem--key-applied").siblings(".rubricItem--pointsAndDescription").children("button").html(), + rubric_text: $(".rubricItem--key-applied").siblings(".rubricItem--pointsAndDescription").children(".rubricField-description").html(), comment: $('.form--textArea').val(), submission_num:sub_number, assignment_name: ass_name, @@ -1195,8 +1205,8 @@ $(function() { function shortenComment(comment){ //Find the string length - if(comment.length>=35){ - return comment.substring(0,35)+"..."; + if(comment.length>=100){ + return comment.substring(0,100); } return comment; } @@ -1223,6 +1233,25 @@ function makeTdWithLink(comment,blank_values,i){ } + +function makeCommentLink(comment){ + var len=100; + var row=document.createElement("span") + var link=document.createElement("a") + link.innerHTML=comment.length>len?".....":""; + link.href="javascript:void(0)"; + link.onclick=function(){ + if(link.innerHTML.indexOf("...")>=0){ + row.innerHTML=comment(len,comment.length) + }else{ + link.innerHTML="HIDE" + } + } + row.appendChild(link) + return row +} + + $('.form--textArea').change(function(){ var rubric_item_score=$(".rubricItem--key-applied").siblings(".rubricItem--pointsAndDescription").children("button").html(); var arr=$(".submissionGraderPoints").html().split(" ") @@ -1330,7 +1359,6 @@ $(document).change(function(){ } } }else if($('.anchor_on_right').length==Array.from(everything_on_pdf).length){ - console.log("CDSDLFKDSLFJK") var set_on_right=new Set() for(var j=0;j<$('.anchor_on_right').length;j++){ var right_text=$('.anchor_on_right')[j].innerHTML From 730daa1a2c8754b327a19b16daaf38717b230cf9 Mon Sep 17 00:00:00 2001 From: Zhaoyi Huang Date: Tue, 17 Sep 2019 16:14:36 -0700 Subject: [PATCH 45/68] add readme --- README.md | 10 ++++++++++ 1 file changed, 10 insertions(+) create mode 100644 README.md diff --git a/README.md b/README.md new file mode 100644 index 0000000..3b07570 --- /dev/null +++ b/README.md @@ -0,0 +1,10 @@ +The extension is for facilitating grading and some data collections + You can download the extension here and unzip the zipfile, then + in the chrome extension page (chrome:/extensions), select "load unpacked" + and load the extension to your chrome extension browser. + Or you can find the extension in the chrome store but it might not be the + latest version, new version would be first pushed to github then update on + chrome store. + More detailed instructions on usage of the extension, please check this document: + https://docs.google.com/document/d/1QuesvGH1nJctrIWWKhP-Ob-SjBs2ZSGCzfVF6E4713U/edit?usp=sharing +And also checkout the instruction video online. \ No newline at end of file From 91270e0322bf5fcf3951bbc02722141615a7f6d0 Mon Sep 17 00:00:00 2001 From: Zhaoyi Huang Date: Tue, 17 Sep 2019 16:53:02 -0700 Subject: [PATCH 46/68] update readme --- .DS_Store | Bin 6148 -> 6148 bytes README.md | 8 ++++---- content_script.js | 2 +- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/.DS_Store b/.DS_Store index f16a76189f5ac7d6f879547be197facf100b0f75..01f53125d6d5761129cf358b5a8b9682fe820c58 100644 GIT binary patch delta 147 zcmZoMXfc@J&&aniU^g=(-)0^bZAMQqhBSs$AWUIMVn}32X2@pHWhh`MV#sGG0pm&_ zFO@-$p^71sp};dIKRGEUKZ${XL4bjQsfU4qvG+e1FfdFuVSTR7$q>Zg%HYW0!r%*} b^%!y)Qc(3UwgUC2Y!+avWZcZo@s}R}WI-ef delta 36 scmZoMXfc@J&&abeU^g=(&t@JLZN|yXtWP%2WXofm*ig5bo#QV*0M>yFEdT%j diff --git a/README.md b/README.md index 3b07570..cf0e322 100644 --- a/README.md +++ b/README.md @@ -1,10 +1,10 @@ The extension is for facilitating grading and some data collections You can download the extension here and unzip the zipfile, then in the chrome extension page (chrome:/extensions), select "load unpacked" - and load the extension to your chrome extension browser. - Or you can find the extension in the chrome store but it might not be the - latest version, new version would be first pushed to github then update on + and load the extension to your chrome extension browser. + Or you can find the extension in the chrome store (https://chrome.google.com/webstore/detail/feedback-prototype/nnkffffggnpbahijipfeddnmdbimobmb) + but it might not be the latest version, new version would be first pushed to github then update on chrome store. More detailed instructions on usage of the extension, please check this document: https://docs.google.com/document/d/1QuesvGH1nJctrIWWKhP-Ob-SjBs2ZSGCzfVF6E4713U/edit?usp=sharing -And also checkout the instruction video online. \ No newline at end of file +And also checkout the instruction video online. diff --git a/content_script.js b/content_script.js index 37aa182..35f618d 100644 --- a/content_script.js +++ b/content_script.js @@ -1150,7 +1150,7 @@ $(function() { chrome.runtime.sendMessage({action: "onLeaving", tbox_num:$('.taBox--textarea').length, rubric_question:rubric_name, - rubric_item: rubric_item, + rubric_item: $(".rubricItem--key-applied").html(), rubric_point:$(".rubricItem--key-applied").siblings(".rubricItem--pointsAndDescription").children("button").html(), rubric_text: $(".rubricItem--key-applied").siblings(".rubricItem--pointsAndDescription").children(".rubricField-description").html(), comment: $('.form--textArea').val(), From 4f5ee52d15076f1fee7e892b8731489364ab56a1 Mon Sep 17 00:00:00 2001 From: Zhaoyi Huang Date: Tue, 17 Sep 2019 21:00:44 -0700 Subject: [PATCH 47/68] several bug fixed --- .DS_Store | Bin 6148 -> 6148 bytes background.js | 6 +- content_script.js | 272 +++++++++++++++++++++++++++++++++------------- 3 files changed, 199 insertions(+), 79 deletions(-) diff --git a/.DS_Store b/.DS_Store index 01f53125d6d5761129cf358b5a8b9682fe820c58..2ac17cd1b661fe7a27ad1b2297ea437f9b4be1f2 100644 GIT binary patch delta 32 ocmZoMXfc@J&&azmU^g=(?`9qrZN|;btSw9v8+k88_NIy diff --git a/background.js b/background.js index 12df0fc..cfba0f5 100644 --- a/background.js +++ b/background.js @@ -2,7 +2,7 @@ //A10 is the event sheet name used //NOTICE: make headings first for the table(A1:L1 for comment sheet) then do the insertions!! //otherwise, table range will be a mess -var comment_sheet_id = "1HdcveHzPgCNc1lCp_Lfb7MX3O51p3u5jKrnxOw-66bQ"; +var comment_sheet_id = "1YYVkmMhcgg-UvtntZ88e_nMiST5VGdipj7TVHZKD_qg"; var event_sheet_id = "18aitRp5Bubiuapjo_pMeV6EE0Ixv3yE8zrli3y7QPx4"; var user_id; var always_show; @@ -50,8 +50,8 @@ function loadSpreadsheet() { xhr.onload = function (oEvent) { arrayBuffer = xhr.response; console.log(arrayBuffer); - if(arrayBuffer.values==null){ - last_row=2; + if(!arrayBuffer.values){ + last_row=1; }else{ last_row=arrayBuffer.values.length+1; } diff --git a/content_script.js b/content_script.js index 35f618d..0a0dd33 100644 --- a/content_script.js +++ b/content_script.js @@ -714,9 +714,7 @@ $(document).ready(function(){ //disable the nextQuestion button until all checkbox clicked $(document).ready(function(){ - if(Zdisabled){ - $(".actionBar--action-next").attr('disabled',true); - } + let cur_url= window.location.href chrome.storage.local.get(null, function(items){ url_list= items.url_list; @@ -789,19 +787,7 @@ $(document).ready(function(){ - $(document).change(function(){ - if(Zdisabled){ - - } - // var count=$('input[name="category"]:checked').length; - // if(count==3){ - // $(".actionBar--action-next").attr('disabled',false); - // }else{ - // $(".actionBar--action-next").attr('disabled',true); - // } - - }); //hide all the suggestion first, then let the related suggestions pop up as needed $(document).ready(function(){ @@ -826,6 +812,8 @@ $(document).ready(function(){ $(document).ready(function(){ var rubric_item_score=$(".rubricItem--key-applied").siblings(".rubricItem--pointsAndDescription").children("button").html(); if(rubric_item_score==undefined){ + Zdisabled=true + $(".actionBar--action-next").attr('disabled',true); return } var arr=$(".submissionGraderPoints").html().split(" ") @@ -839,6 +827,7 @@ if(rubric_item_score !=="-0.0"){ if(rubric_item_score.substring(0,1)!="-"){ if(rubric_item_score==res_total){ Zdisabled=false + $(".actionBar--action-next").attr('disabled',false); return } } @@ -847,10 +836,16 @@ if(rubric_item_score !=="-0.0"){ if(text=="" ||$('.taBox--textarea').length==0){ console.log("START TRUE") Zdisabled=true + }else{ Zdisabled=false } } +if(Zdisabled){ + $(".actionBar--action-next").attr('disabled',true); + }else{ + $(".actionBar--action-next").attr('disabled',false); + } }); @@ -1133,68 +1128,75 @@ $(function() { injectSuggestions(); }); - } - $(window).on('beforeunload', function(){ - console.log("LEAVING"); - if($('input[name="category"]:checked').length==0){ - var checked=""; - } - else{ - temp=[] - for(var i=0;i<$('input[name="category"]:checked').length;i++){ - var name=$('input[name="category"]:checked')[i].value - temp.push(name) - } - checked=temp.join(); } - chrome.runtime.sendMessage({action: "onLeaving", - tbox_num:$('.taBox--textarea').length, - rubric_question:rubric_name, - rubric_item: $(".rubricItem--key-applied").html(), - rubric_point:$(".rubricItem--key-applied").siblings(".rubricItem--pointsAndDescription").children("button").html(), - rubric_text: $(".rubricItem--key-applied").siblings(".rubricItem--pointsAndDescription").children(".rubricField-description").html(), - comment: $('.form--textArea').val(), - submission_num:sub_number, - assignment_name: ass_name, - grader_name:grader_name, - check_box_status:checked - }); - console.log("SEND PDF COMMENTS"); -//console.log($('.taBox--textarea')[0].innerHTML); - var i=0; - if($('.taBox--textarea').length>0){ - var pdf_text_list=[] - while(i<$('.taBox--textarea').length){ - var text=$('.taBox--textarea')[i].innerHTML - if(!being_clicked_in_pdf.has(text) && !already_on_pdf.has(text)){ - text=checkEqualTextPDF(text,full_sorted_comments) - if(text!==undefined){ - pdf_text_list.push(text) - } - } - i++; - } + + + $('.actionBar--action-next').click(everyUnloading); + + $(window).on('beforeunload', everyUnloading - being_clicked_in_pdf.clear(); - console.log(pdf_text_list) - if(pdf_text_list.length>0){ - chrome.runtime.sendMessage({action:"sendPDFbox", - pdf_list: pdf_text_list, - rubric_question:rubric_number, - rubric_item:$(".rubricItem--key-applied").html(), - submission_num:sub_number, - assignment_name: ass_number, - grader_name:user_id - - },function(response) { - console.log("logging focus: " + response); - //console.log("RRRRRRRRR "+rubric_item); -}); - } + // console.log("LEAVING"); + // console.log("SEND PDF COMMENTS"); -} - }); + // //console.log($('.taBox--textarea')[0].innerHTML); + // var i=0; + // if($('.taBox--textarea').length>0){ + // var pdf_text_list=[] + // while(i<$('.taBox--textarea').length){ + // var text=$('.taBox--textarea')[i].innerHTML + // if(!being_clicked_in_pdf.has(text) && !already_on_pdf.has(text)){ + // text=checkEqualTextPDF(text,full_sorted_comments) + // if(text!==undefined){ + // pdf_text_list.push(text) + // } + // } + // i++; + // } + + // being_clicked_in_pdf.clear(); + // console.log(pdf_text_list) + // if(pdf_text_list.length>0){ + // chrome.runtime.sendMessage({action:"sendPDFbox", + // pdf_list: pdf_text_list, + // rubric_question:rubric_number, + // rubric_item:$(".rubricItem--key-applied").html(), + // submission_num:sub_number, + // assignment_name: ass_number, + // grader_name:user_id + + // },function(response) { + // console.log("logging focus: " + response); + // //console.log("RRRRRRRRR "+rubric_item); + // }); + // } + + // } + // console.log(":LOAD EVERYTHING") + // if($('input[name="category"]:checked').length==0){ + // var checked=""; + // } + // else{ + // temp=[] + // for(var i=0;i<$('input[name="category"]:checked').length;i++){ + // var name=$('input[name="category"]:checked')[i].value + // temp.push(name) + // } + // checked=temp.join(); + // } + // chrome.runtime.sendMessage({action: "onLeaving", + // tbox_num:$('.taBox--textarea').length, + // rubric_question:rubric_name, + // rubric_item: $(".rubricItem--key-applied").html(), + // rubric_point:$(".rubricItem--key-applied").siblings(".rubricItem--pointsAndDescription").children("button").html(), + // rubric_text: $(".rubricItem--key-applied").siblings(".rubricItem--pointsAndDescription").children(".rubricField-description").html(), + // comment: $('.form--textArea').val(), + // submission_num:sub_number, + // assignment_name: ass_name, + // grader_name:grader_name, + // check_box_status:checked + // }); + ); // else { // // tell chrome we are NOT on a grading page // chrome.runtime.sendMessage({action: "onOtherPage"}); @@ -1203,6 +1205,73 @@ $(function() { +function everyUnloading(){ + + console.log("LEAVING"); + console.log("SEND PDF COMMENTS"); + + //console.log($('.taBox--textarea')[0].innerHTML); + var i=0; + if($('.taBox--textarea').length>0){ + var pdf_text_list=[] + while(i<$('.taBox--textarea').length){ + var text=$('.taBox--textarea')[i].innerHTML + if(!being_clicked_in_pdf.has(text) && !already_on_pdf.has(text)){ + text=checkEqualTextPDF(text,full_sorted_comments) + if(text!==undefined){ + pdf_text_list.push(text) + } + } + i++; + } + + being_clicked_in_pdf.clear(); + console.log(pdf_text_list) + if(pdf_text_list.length>0){ + chrome.runtime.sendMessage({action:"sendPDFbox", + pdf_list: pdf_text_list, + rubric_question:rubric_number, + rubric_item:$(".rubricItem--key-applied").html(), + submission_num:sub_number, + assignment_name: ass_number, + grader_name:user_id + + },function(response) { + console.log("logging focus: " + response); + //console.log("RRRRRRRRR "+rubric_item); + }); + } + + } + console.log(":LOAD EVERYTHING") + if($('input[name="category"]:checked').length==0){ + var checked=""; + } + else{ + temp=[] + for(var i=0;i<$('input[name="category"]:checked').length;i++){ + var name=$('input[name="category"]:checked')[i].value + temp.push(name) + } + checked=temp.join(); +} + chrome.runtime.sendMessage({action: "onLeaving", +tbox_num:$('.taBox--textarea').length, +rubric_question:rubric_name, +rubric_item: $(".rubricItem--key-applied").html(), +rubric_point:$(".rubricItem--key-applied").siblings(".rubricItem--pointsAndDescription").children("button").html(), +rubric_text: $(".rubricItem--key-applied").siblings(".rubricItem--pointsAndDescription").children(".rubricField-description").html(), +comment: $('.form--textArea').val(), +submission_num:sub_number, +assignment_name: ass_name, +grader_name:grader_name, +check_box_status:checked +}); +} + + + + function shortenComment(comment){ //Find the string length if(comment.length>=100){ @@ -1251,6 +1320,26 @@ function makeCommentLink(comment){ return row } +$(document).change(function(){ +var rubric_item_score=$(".rubricItem--key-applied").siblings(".rubricItem--pointsAndDescription").children("button").html(); +var arr=$(".submissionGraderPoints").html().split(" ") +arr.pop() +var total_score=arr.pop() +var res_total="+"+total_score +if(rubric_item_score !=="-0.0"){ + if(rubric_item_score.substring(0,1)!="-"){ + if(rubric_item_score==res_total){ + Zdisabled=false + $(".actionBar--action-next").attr('disabled',false); + return + } + } +}else{ + Zdisabled=false + $(".actionBar--action-next").attr('disabled',false); + return +} +}) $('.form--textArea').change(function(){ var rubric_item_score=$(".rubricItem--key-applied").siblings(".rubricItem--pointsAndDescription").children("button").html(); @@ -1262,6 +1351,7 @@ if(rubric_item_score !=="-0.0"){ if(rubric_item_score.substring(0,1)!="-"){ if(rubric_item_score==res_total){ Zdisabled=false + $(".actionBar--action-next").attr('disabled',false); return } } @@ -1275,6 +1365,12 @@ if(rubric_item_score !=="-0.0"){ }else{ Zdisabled=false } +if(Zdisabled){ + $(".actionBar--action-next").attr('disabled',true); + }else{ + $(".actionBar--action-next").attr('disabled',false); + } + }); @@ -1312,10 +1408,16 @@ function switchZ(event){ if(keycode=='z' &&Zdisabled){ event.stopImmediatePropagation(); -}else{ +}else if(keycode=='z' &&!Zdisabled){ + if(!$('.form--textArea').is(':focus') && !$('taBox--textarea').is(':focus')){ + + everyUnloading() + } // $(document).unbind(); // $(document).bind() - document.removeEventListener('keydown',switchZ,true); + //document.removeEventListener('keydown',switchZ,true); + //alert("FUCK") + //everyUnloading() } } @@ -1382,4 +1484,22 @@ $(document).change(function(){ } } -}) \ No newline at end of file +}) + + +// $(document).change(function(){ +// if(Zdisabled){ +// alert("TRUE") +// $(".actionBar--action-next").attr('disabled',true); +// }else{ +// $(".actionBar--action-next").attr('disabled',true); +// } +// // var count=$('input[name="category"]:checked').length; +// // if(count==3){ +// // $(".actionBar--action-next").attr('disabled',false); +// // }else{ +// // $(".actionBar--action-next").attr('disabled',true); +// // } + + +// }); \ No newline at end of file From d7855e18522f6b267a35d70312fed7ccd0d21bc2 Mon Sep 17 00:00:00 2001 From: Zhaoyi Huang Date: Tue, 17 Sep 2019 21:39:32 -0700 Subject: [PATCH 48/68] disable pdf focus as it might not be useful --- .DS_Store | Bin 6148 -> 6148 bytes Archive.zip | Bin 0 -> 71294 bytes content_script.js | 133 +++++++++++++++------------------------------- manifest.json | 2 +- 4 files changed, 43 insertions(+), 92 deletions(-) create mode 100644 Archive.zip diff --git a/.DS_Store b/.DS_Store index 2ac17cd1b661fe7a27ad1b2297ea437f9b4be1f2..70302a6e03b7da0ce3b24ac8ded582e20b3067af 100644 GIT binary patch delta 99 zcmZoMXfc@JFUrTjz`)4BAi%(o$xz0S%Am(k#gMsKkYhQsIY^3|!I7beA(51 kGbcYeDJMS(r~;^yAsUE1{(}Jn!)6|qqs*JxIsWnk0M_*w1^@s6 delta 48 zcmZoMXfc@JFUrfnz`)4BAi%(o&QQdV&rr&c$B?pFkYhPBBkyJ>mZQuQ8_YJdbNuB8 E0P$Z7WB>pF diff --git a/Archive.zip b/Archive.zip new file mode 100644 index 0000000000000000000000000000000000000000..66d62e9c3580b8a185997416906ab8ad6cfbb4e1 GIT binary patch literal 71294 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%0AV_O>h_%qdt}3A{-FOu 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 V#PLA>7a$H^TfkSlMZiS}{1 !set_on_right.has(x))); -// var text=Array.from(diff)[0] -// console.log(text) -// $('.pdf_comments_display').append(""+text+""+"
") -// // var text=$('.anchor_on_right')[j].innnerHTML; -// // if(!everything_on_pdf.has(text)){ -// // $('.pdf_comments_display').append(""+text+""+"
") -// // } - -// }else if($('.anchor_on_right').length>Array.from(everything_on_pdf).length){ -// for(var k=0;k<$('.anchor_on_right').length;k++){ -// var new_right_text=$('.anchor_on_right')[k].innerHTML -// if(!everything_on_pdf.has(new_right_text)){ -// $('.anchor_on_right')[k].innerHTML=""; -// $('.anchor_on_right')[k].remove() -// } -// } -// }else if($('.anchor_on_right').length==Array.from(everything_on_pdf).length){ -// console.log("CDSDLFKDSLFJK") -// var set_on_right=new Set() -// for(var j=0;j<$('.anchor_on_right').length;j++){ -// var right_text=$('.anchor_on_right')[j].innerHTML -// set_on_right.add(right_text) -// } -// let diff_e_to_r=new Set([...everything_on_pdf].filter(x => !set_on_right.has(x))); - -// if(diff_e_to_r.size!=0){ -// let diff_r_to_e=new Set([...set_on_right].filter(x => !everything_on_pdf.has(x))); - -// let text_to_update=Array.from(diff_r_to_e)[0] -// let text_from_pdf=Array.from(diff_e_to_r)[0] -// console.log(text_from_pdf) -// for(var k=0;k<$('.anchor_on_right').length;k++){ -// var text=$('.anchor_on_right')[k].innerHTML -// if(text==text_to_update){ -// $('.anchor_on_right')[k].innerHTML=text_from_pdf -// } -// } - -// } -// } -// }); @@ -935,17 +875,17 @@ observer.observe(targetNode[i], config); }); }); - $("taBox--textarea").focus(function(){ - var rubric_item=$(".rubricItem--key-applied").html(); + // $("taBox--textarea").focus(function(){ + // var rubric_item=$(".rubricItem--key-applied").html(); - chrome.runtime.sendMessage({action:"logPDFFocus", - rubric_question: rubric_name, - rubric_item: rubric_item, - submission_num: sub_number - },function(response){ - console.log("logging pdf event: "+response); - }); - }); + // chrome.runtime.sendMessage({action:"logPDFFocus", + // rubric_question: rubric_name, + // rubric_item: rubric_item, + // submission_num: sub_number + // },function(response){ + // console.log("logging pdf event: "+response); + // }); + // }); // see/hide button functionality $(".see_suggestions").click(function() { var selected_id_num = this.id.split("see_suggestions_")[1]; @@ -980,20 +920,20 @@ observer.observe(targetNode[i], config); } -$(document).change(function(){ - if($('.taBox-is-editing')){ - var rubric_item=$(".rubricItem--key-applied").html(); +// $(document).change(function(){ +// if($('.taBox-is-editing')){ +// var rubric_item=$(".rubricItem--key-applied").html(); - chrome.runtime.sendMessage({action:"logPDFFocus", - rubric_question: rubric_name, - rubric_item: rubric_item, - submission_num:sub_number - },function(response){ - console.log("logging pdf event: "+response); - }); +// chrome.runtime.sendMessage({action:"logPDFFocus", +// rubric_question: rubric_name, +// rubric_item: rubric_item, +// submission_num:sub_number +// },function(response){ +// console.log("logging pdf event: "+response); +// }); - } -}); +// } +// }); @@ -1322,10 +1262,20 @@ function makeCommentLink(comment){ $(document).change(function(){ var rubric_item_score=$(".rubricItem--key-applied").siblings(".rubricItem--pointsAndDescription").children("button").html(); +try{ var arr=$(".submissionGraderPoints").html().split(" ") +} +catch(error){ + return +} arr.pop() var total_score=arr.pop() var res_total="+"+total_score +if(rubric_item_score==undefined){ + Zdisabled=true + $(".actionBar--action-next").attr('disabled',true); + return +} if(rubric_item_score !=="-0.0"){ if(rubric_item_score.substring(0,1)!="-"){ if(rubric_item_score==res_total){ @@ -1343,10 +1293,20 @@ if(rubric_item_score !=="-0.0"){ $('.form--textArea').change(function(){ var rubric_item_score=$(".rubricItem--key-applied").siblings(".rubricItem--pointsAndDescription").children("button").html(); +try{ var arr=$(".submissionGraderPoints").html().split(" ") +} +catch(error){ + return +} arr.pop() var total_score=arr.pop() var res_total="+"+total_score +if(rubric_item_score==undefined){ + Zdisabled=true + $(".actionBar--action-next").attr('disabled',true); + return +} if(rubric_item_score !=="-0.0"){ if(rubric_item_score.substring(0,1)!="-"){ if(rubric_item_score==res_total){ @@ -1393,15 +1353,6 @@ function checkEqualTextPDF(comment,full_comments){ -// $(document).change(function(){ -// if(Zdisabled){ -// alert("TRUE") -// document.addEventListener('keydown',switchZ,true); -// }else{ -// alert("FALSE") -// document.removeEventListener('keydown',switchZ,true); -// } -// }) document.addEventListener('keydown',switchZ,true); function switchZ(event){ var keycode=event.key; diff --git a/manifest.json b/manifest.json index a182e0d..2de7fd3 100644 --- a/manifest.json +++ b/manifest.json @@ -3,7 +3,7 @@ "name": "Feedback Prototype", "description": "Suggests previous gradescope comments for feedback", - "version": "8.3", + "version": "8.4", "browser_action": { "default_popup": "popup.html" From 54453b02d7e6cdfb5362c7aaec1820fa851503ca Mon Sep 17 00:00:00 2001 From: ZhaoyiHuangUCSD <32404758+ZhaoyiHuangUCSD@users.noreply.github.com> Date: Tue, 17 Sep 2019 21:40:34 -0700 Subject: [PATCH 49/68] delete zip --- Archive.zip | Bin 71294 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 Archive.zip diff --git a/Archive.zip b/Archive.zip deleted file mode 100644 index 66d62e9c3580b8a185997416906ab8ad6cfbb4e1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 71294 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
NL$rA>rXU9b2eN((kdJr9{y_*-_08iB0M= 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%0AV_O>h_%qdt}3A{-FOu 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 V#PLA>7a$H^TfkSlMZiS}{1 Date: Tue, 17 Sep 2019 23:57:59 -0700 Subject: [PATCH 50/68] fixed bug with pressing z --- .DS_Store | Bin 6148 -> 6148 bytes Archive.zip | Bin 71294 -> 0 bytes content_script.js | 84 +++++++++++++++++++++++++++------------------- 3 files changed, 49 insertions(+), 35 deletions(-) delete mode 100644 Archive.zip diff --git a/.DS_Store b/.DS_Store index 70302a6e03b7da0ce3b24ac8ded582e20b3067af..2ac17cd1b661fe7a27ad1b2297ea437f9b4be1f2 100644 GIT binary patch delta 48 zcmZoMXfc@JFUrfnz`)4BAi%(o&QQdV&rr&c$B?pFkYhPBBkyJ>mZQuQ8_YJdbNuB8 E0P$Z7WB>pF delta 99 zcmZoMXfc@JFUrTjz`)4BAi%(o$xz0S%Am(k#gMsKkYhQsIY^3|!I7beA(51 kGbcYeDJMS(r~;^yAsUE1{(}Jn!)6|qqs*JxIsWnk0M_*w1^@s6 diff --git a/Archive.zip b/Archive.zip deleted file mode 100644 index 66d62e9c3580b8a185997416906ab8ad6cfbb4e1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 71294 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%0AV_O>h_%qdt}3A{-FOu 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 V#PLA>7a$H^TfkSlMZiS}{1=0){ - console.log("in batch page"); - url_set= new Set(); - var i=0; - let list= $("a[class='link-noUnderline']"); - while(i=0){ +// console.log("in batch page"); +// url_set= new Set(); +// var i=0; +// let list= $("a[class='link-noUnderline']"); +// while(i-1){ - url_list=url_list.filter(function(a){return a!==element;}); - } - }); - console.log(url_list.length); - chrome.storage.local.set({url_list:url_list}); - if((url_list).length>0){ - console.log($(".actionBar--action-next")[0].href); - $(".actionBar--action-next")[0].href=url_list[Math.floor(Math.random() * url_list.length)]; - console.log($(".actionBar--action-next")[0].href); - } - }) - }); + // let cur_url= window.location.href + // chrome.storage.local.get(null, function(items){ + // url_list= items.url_list; + // console.log(url_list.length); + // url_list.forEach(function(element){ + // if(cur_url.indexOf(element)>-1){ + // url_list=url_list.filter(function(a){return a!==element;}); + // } + // }); + // console.log(url_list.length); + // chrome.storage.local.set({url_list:url_list}); + // if((url_list).length>0){ + // console.log($(".actionBar--action-next")[0].href); + // $(".actionBar--action-next")[0].href=url_list[Math.floor(Math.random() * url_list.length)]; + // console.log($(".actionBar--action-next")[0].href); + // } + // }) + // }); //trigger word function(bonus point): some words can trigger checkboxes to be cliked @@ -1166,6 +1169,7 @@ function everyUnloading(){ } being_clicked_in_pdf.clear(); + already_on_pdf.clear(); console.log(pdf_text_list) if(pdf_text_list.length>0){ chrome.runtime.sendMessage({action:"sendPDFbox", @@ -1174,7 +1178,7 @@ function everyUnloading(){ rubric_item:$(".rubricItem--key-applied").html(), submission_num:sub_number, assignment_name: ass_number, - grader_name:user_id + grader_name:grader_name },function(response) { console.log("logging focus: " + response); @@ -1283,6 +1287,13 @@ if(rubric_item_score !=="-0.0"){ $(".actionBar--action-next").attr('disabled',false); return } + if($('.tabox--textarea').length>0){ + Zdisabled=false + $(".actionBar--action-next").attr('disabled',false); + return + } + Zdisabled=true + $(".actionBar--action-next").attr('disabled',true); } }else{ Zdisabled=false @@ -1361,8 +1372,11 @@ function switchZ(event){ event.stopImmediatePropagation(); }else if(keycode=='z' &&!Zdisabled){ if(!$('.form--textArea').is(':focus') && !$('taBox--textarea').is(':focus')){ + var text=$('.form--textArea').val() + if(text==""||text==undefined){ + everyUnloading() + } - everyUnloading() } // $(document).unbind(); // $(document).bind() From aedda79fa905b72bd6198021ba90f64f97fcc6bb Mon Sep 17 00:00:00 2001 From: Zhaoyi Huang Date: Wed, 18 Sep 2019 12:57:12 -0700 Subject: [PATCH 51/68] zdisabled fixed --- background.js | 16 +++--- content_script.js | 139 ++++++++++++++++++++++++++++++---------------- manifest.json | 2 +- 3 files changed, 99 insertions(+), 58 deletions(-) diff --git a/background.js b/background.js index cfba0f5..1d3ea12 100644 --- a/background.js +++ b/background.js @@ -323,14 +323,14 @@ function saveNewComment() { // if any comments left in inserted comments, just append them and figure it out manually // be sure to include original comment id - for (var comment_id in inserted_comments) { - if (inserted_comments[comment_id] != "") { - values += '[ "", "' + rubric_number + '", "", "'+rubric_item+","+ comment_id + '", "' + - inserted_comments[comment_id] + '", "' + inserted_comments[comment_id].length + - '", "1", "1", "1", "", "' + user_id + '"' + - ' ],' - } - } + // for (var comment_id in inserted_comments) { + // if (inserted_comments[comment_id] != "") { + // values += '[ "", "' + rubric_number + '", "", "'+rubric_item+","+ comment_id + '", "' + + // inserted_comments[comment_id] + '", "' + inserted_comments[comment_id].length + + // '", "1", "1", "1", "", "' + user_id + '"' + + // ' ],' + // } + // } values = values.slice(0, values.length-1) + ']'; if (values != '"values": ]') { appendCommentsToSheet(values); diff --git a/content_script.js b/content_script.js index f4a8137..6572235 100644 --- a/content_script.js +++ b/content_script.js @@ -380,6 +380,8 @@ function storeAndPrintComments(rub,comments, id_num, index, searching,PDF) { var btn_id_num = $(this).attr("class").split(" ")[1]; var this_index = $(this).parents("div").attr('id').slice(-1)-1; + Zdisabled=false + $(".actionBar--action-next").attr('disabled',false); //var comment= $(this).parents("tr").find(".comment_"+btn_id_num).text(); var comment = full_sorted_comments[this_index][btn_id_num][5]; var $temp = $(""); @@ -429,7 +431,8 @@ function storeAndPrintComments(rub,comments, id_num, index, searching,PDF) { //* find the gradescope correspondence here*** var this_index = $(this).parents("div").attr('id').slice(-1)-1; console.log(this_index); - + Zdisabled=false + $(".actionBar--action-next").attr('disabled',false); var rubric_item=$(".rubricItem--key-applied").html(); rubric_item_applied=rubric_item; console.log("inserting comment: " + comment); @@ -468,7 +471,44 @@ function storeAndPrintComments(rub,comments, id_num, index, searching,PDF) { } - +$(".rubricItem--key").change(function(){ + alert("FUCK") + var rubric_item_score=$(".rubricItem--key-applied").siblings(".rubricItem--pointsAndDescription").children("button").html(); + try{ + var arr=$(".submissionGraderPoints").html().split(" ") + } + catch(error){ + return + } + arr.pop() + var total_score=arr.pop() + var res_total="+"+total_score + if(rubric_item_score==undefined){ + Zdisabled=true + $(".actionBar--action-next").attr('disabled',true); + return + } + if(rubric_item_score !=="-0.0"){ + if(rubric_item_score.substring(0,1)!="-"){ + if(rubric_item_score==res_total){ + Zdisabled=false + $(".actionBar--action-next").attr('disabled',false); + return + } + if($('.tabox--textarea').length>0){ + Zdisabled=false + $(".actionBar--action-next").attr('disabled',false); + return + } + Zdisabled=true + $(".actionBar--action-next").attr('disabled',true); + } + }else{ + Zdisabled=false + $(".actionBar--action-next").attr('disabled',false); + return + } + }) @@ -821,6 +861,32 @@ const callback = function(mutationsList, observer) { "
" + "
" )); + + var rubric_item_score=$(".rubricItem--key-applied").siblings(".rubricItem--pointsAndDescription").children("button").html(); + var arr=$(".submissionGraderPoints").html().split(" ") + arr.pop() + var total_score=arr.pop() + var res_total="+"+total_score + if(rubric_item_score !=="-0.0"){ + if($('.tabox--textarea').length>0){ + Zdisabled=false + $(".actionBar--action-next").attr('disabled',false); + } + if(rubric_item_score.substring(0,1)!="-"){ + if(rubric_item_score==res_total){ + Zdisabled=false + $(".actionBar--action-next").attr('disabled',false); + + } + } + Zdisabled=true + $(".actionBar--action-next").attr('disabled',true); + }else{ + Zdisabled=false + $(".actionBar--action-next").attr('disabled',false); + + } + //$("
NAIVEEEEEE
").insertAfter('.taBox--textarea'); storeAndPrintComments(rubric_item,full_sorted_comments[rubric_item-1], rubric_item-1, rubric_item-1, false,true); @@ -833,6 +899,10 @@ const callback = function(mutationsList, observer) { } }else{ $('.suggestion_container_pdf').remove(); + if($(".rubricItem--key-applied").siblings(".rubricItem--pointsAndDescription").children("button").html()==undefined){ + Zdisabled=true + $(".actionBar--action-next").attr('disabled',true); + } var id=$(mutation.target).html(); console.log("IIID dis appear is: "+id); if (!$('suggestion_container_'+id).is(":visible")) { @@ -879,15 +949,16 @@ observer.observe(targetNode[i], config); }); // $("taBox--textarea").focus(function(){ - // var rubric_item=$(".rubricItem--key-applied").html(); - - // chrome.runtime.sendMessage({action:"logPDFFocus", - // rubric_question: rubric_name, - // rubric_item: rubric_item, - // submission_num: sub_number - // },function(response){ - // console.log("logging pdf event: "+response); - // }); + // //var rubric_item=$(".rubricItem--key-applied").html(); + + + // // chrome.runtime.sendMessage({action:"logPDFFocus", + // // rubric_question: rubric_name, + // // rubric_item: rubric_item, + // // submission_num: sub_number + // // },function(response){ + // // console.log("logging pdf event: "+response); + // // }); // }); // see/hide button functionality $(".see_suggestions").click(function() { @@ -1074,7 +1145,6 @@ $(function() { } - $('.actionBar--action-next').click(everyUnloading); $(window).on('beforeunload', everyUnloading @@ -1264,45 +1334,10 @@ function makeCommentLink(comment){ return row } -$(document).change(function(){ -var rubric_item_score=$(".rubricItem--key-applied").siblings(".rubricItem--pointsAndDescription").children("button").html(); -try{ -var arr=$(".submissionGraderPoints").html().split(" ") -} -catch(error){ - return -} -arr.pop() -var total_score=arr.pop() -var res_total="+"+total_score -if(rubric_item_score==undefined){ - Zdisabled=true - $(".actionBar--action-next").attr('disabled',true); - return -} -if(rubric_item_score !=="-0.0"){ - if(rubric_item_score.substring(0,1)!="-"){ - if(rubric_item_score==res_total){ - Zdisabled=false - $(".actionBar--action-next").attr('disabled',false); - return - } - if($('.tabox--textarea').length>0){ - Zdisabled=false - $(".actionBar--action-next").attr('disabled',false); - return - } - Zdisabled=true - $(".actionBar--action-next").attr('disabled',true); - } -}else{ - Zdisabled=false - $(".actionBar--action-next").attr('disabled',false); - return -} -}) + $('.form--textArea').change(function(){ + alert("FUCK") var rubric_item_score=$(".rubricItem--key-applied").siblings(".rubricItem--pointsAndDescription").children("button").html(); try{ var arr=$(".submissionGraderPoints").html().split(" ") @@ -1384,6 +1419,7 @@ function switchZ(event){ //alert("FUCK") //everyUnloading() +// } } } @@ -1391,6 +1427,7 @@ function switchZ(event){ $(document).change(function(){ + alert("FUCK") var everything_on_pdf=new Set() console.log(Array.from(everything_on_pdf).length) for(var i=0;i<$('.taBox--textarea').length;i++){ @@ -1400,6 +1437,10 @@ $(document).change(function(){ } } console.log(Array.from(everything_on_pdf).length) + if(Array.from(everything_on_pdf).length>0){ + Zdisabled=false + $(".actionBar--action-next").attr('disabled',false); + } //more comments on the pdf not on the right if($('.anchor_on_right').length<$('.taBox--textarea').length){ console.log($('.anchor_on_right').length) diff --git a/manifest.json b/manifest.json index 2de7fd3..d862d15 100644 --- a/manifest.json +++ b/manifest.json @@ -3,7 +3,7 @@ "name": "Feedback Prototype", "description": "Suggests previous gradescope comments for feedback", - "version": "8.4", + "version": "8.4.1", "browser_action": { "default_popup": "popup.html" From 47237baefa5606e8b48c9811f56cc3a3bb55bde9 Mon Sep 17 00:00:00 2001 From: Zhaoyi Huang Date: Wed, 18 Sep 2019 20:10:35 -0700 Subject: [PATCH 52/68] small line fixed --- content_script.js | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/content_script.js b/content_script.js index 6572235..3ae9970 100644 --- a/content_script.js +++ b/content_script.js @@ -472,7 +472,7 @@ function storeAndPrintComments(rub,comments, id_num, index, searching,PDF) { } $(".rubricItem--key").change(function(){ - alert("FUCK") + var rubric_item_score=$(".rubricItem--key-applied").siblings(".rubricItem--pointsAndDescription").children("button").html(); try{ var arr=$(".submissionGraderPoints").html().split(" ") @@ -854,9 +854,9 @@ const callback = function(mutationsList, observer) { rubric_item=$(".rubricItem--key-applied").html() $('.pageViewerControls.u-pointerEventsNone').append($( "
" + - "
DRAG PDF TO ME
"+ + "
PDF SUGGESTION BOX:DRAG PDF TO ME!
"+ "
" + - '
"Suggestions:"
' + + '
"Suggestions: (click on the button will do the copy, PLEASE DO THE PASTE AFTERWARDS)"
' + "
" + "
" + "
" @@ -1337,7 +1337,6 @@ function makeCommentLink(comment){ $('.form--textArea').change(function(){ - alert("FUCK") var rubric_item_score=$(".rubricItem--key-applied").siblings(".rubricItem--pointsAndDescription").children("button").html(); try{ var arr=$(".submissionGraderPoints").html().split(" ") @@ -1427,7 +1426,7 @@ function switchZ(event){ $(document).change(function(){ - alert("FUCK") + var everything_on_pdf=new Set() console.log(Array.from(everything_on_pdf).length) for(var i=0;i<$('.taBox--textarea').length;i++){ @@ -1437,7 +1436,7 @@ $(document).change(function(){ } } console.log(Array.from(everything_on_pdf).length) - if(Array.from(everything_on_pdf).length>0){ + if(Array.from(everything_on_pdf).length>0 && $(".rubricItem--key-applied").siblings(".rubricItem--pointsAndDescription").children("button").html() !==undefined){ Zdisabled=false $(".actionBar--action-next").attr('disabled',false); } From 124ca1e703ab118df387b9ca1251d5a9d54ed86c Mon Sep 17 00:00:00 2001 From: Zhaoyi Huang Date: Thu, 19 Sep 2019 23:19:52 -0700 Subject: [PATCH 53/68] number magic added, and cancel the onleaving event for refresh --- background.js | 33 +++++++++++++ content_script.js | 120 +++++++++++++++++++++++----------------------- manifest.json | 2 +- 3 files changed, 94 insertions(+), 61 deletions(-) diff --git a/background.js b/background.js index 1d3ea12..a0f62b7 100644 --- a/background.js +++ b/background.js @@ -10,6 +10,39 @@ var on_grading_page; var store_rubric_item; var last_row=1;//fetch the last row in the spreadsheets, used for the id field +//UPDATE: here is some number magic here to auto refresh the page when you go to the next +//page for grading(by pressing Z or click next ungraded), +//refreshing the page by adding new rubric items/press refresh in chromewon't cause unstoppable refresh +//as I said, it's number magic, so I can't gurantee it works smoothly for everyone's chrome +//I will push this change to github but as for now, I won't add this as an update to extension in +//chrome store +var log_time=0 +var old_url="" +chrome.tabs.onUpdated.addListener(function(tabId, changeInfo, tab) { + let tab_url=tab.url + + if(tab_url.indexOf("submissions")>0 && tab_url.indexOf("not_grouped")==-1){ + log_time++ + console.log(log_time) + let url_arr=tab_url.split("/") + let temp_num=url_arr[url_arr.length-2] + //if(log_time==3){ + if(log_time%3==0){ + console.log(old_url) + //log_time=log_time-6 + if(old_url!==temp_num){ + old_url=temp_num + console.log(log_time) + chrome.tabs.query({active: true, currentWindow: true}, function(tabs) { + chrome.tabs.reload(tabs[0].id); + }); + } + } + } +}); + + + function loadSpreadsheet() { console.log("loadding spreadsheet now.....") if (chrome.identity === undefined) { diff --git a/content_script.js b/content_script.js index 3ae9970..bc63d54 100644 --- a/content_script.js +++ b/content_script.js @@ -47,9 +47,9 @@ var comments_inserted = {}; // list with text of comments they have inserted on var being_clicked_in_pdf=new Set() var already_on_pdf= new Set() var Zdisabled=false -//console.log($('.taBox--textarea')); - +var window_url=window.location.href +//console.log($('.taBox--textarea')); // if(window.location.pathname.indexOf('assignments')>=0){ @@ -1147,69 +1147,69 @@ $(function() { $('.actionBar--action-next').click(everyUnloading); - $(window).on('beforeunload', everyUnloading +// $(window).on('beforeunload', everyUnloading - // console.log("LEAVING"); - // console.log("SEND PDF COMMENTS"); +// // console.log("LEAVING"); +// // console.log("SEND PDF COMMENTS"); - // //console.log($('.taBox--textarea')[0].innerHTML); - // var i=0; - // if($('.taBox--textarea').length>0){ - // var pdf_text_list=[] - // while(i<$('.taBox--textarea').length){ - // var text=$('.taBox--textarea')[i].innerHTML - // if(!being_clicked_in_pdf.has(text) && !already_on_pdf.has(text)){ - // text=checkEqualTextPDF(text,full_sorted_comments) - // if(text!==undefined){ - // pdf_text_list.push(text) - // } - // } - // i++; - // } +// // //console.log($('.taBox--textarea')[0].innerHTML); +// // var i=0; +// // if($('.taBox--textarea').length>0){ +// // var pdf_text_list=[] +// // while(i<$('.taBox--textarea').length){ +// // var text=$('.taBox--textarea')[i].innerHTML +// // if(!being_clicked_in_pdf.has(text) && !already_on_pdf.has(text)){ +// // text=checkEqualTextPDF(text,full_sorted_comments) +// // if(text!==undefined){ +// // pdf_text_list.push(text) +// // } +// // } +// // i++; +// // } - // being_clicked_in_pdf.clear(); - // console.log(pdf_text_list) - // if(pdf_text_list.length>0){ - // chrome.runtime.sendMessage({action:"sendPDFbox", - // pdf_list: pdf_text_list, - // rubric_question:rubric_number, - // rubric_item:$(".rubricItem--key-applied").html(), - // submission_num:sub_number, - // assignment_name: ass_number, - // grader_name:user_id +// // being_clicked_in_pdf.clear(); +// // console.log(pdf_text_list) +// // if(pdf_text_list.length>0){ +// // chrome.runtime.sendMessage({action:"sendPDFbox", +// // pdf_list: pdf_text_list, +// // rubric_question:rubric_number, +// // rubric_item:$(".rubricItem--key-applied").html(), +// // submission_num:sub_number, +// // assignment_name: ass_number, +// // grader_name:user_id - // },function(response) { - // console.log("logging focus: " + response); - // //console.log("RRRRRRRRR "+rubric_item); - // }); - // } +// // },function(response) { +// // console.log("logging focus: " + response); +// // //console.log("RRRRRRRRR "+rubric_item); +// // }); +// // } - // } - // console.log(":LOAD EVERYTHING") - // if($('input[name="category"]:checked').length==0){ - // var checked=""; - // } - // else{ - // temp=[] - // for(var i=0;i<$('input[name="category"]:checked').length;i++){ - // var name=$('input[name="category"]:checked')[i].value - // temp.push(name) - // } - // checked=temp.join(); - // } - // chrome.runtime.sendMessage({action: "onLeaving", - // tbox_num:$('.taBox--textarea').length, - // rubric_question:rubric_name, - // rubric_item: $(".rubricItem--key-applied").html(), - // rubric_point:$(".rubricItem--key-applied").siblings(".rubricItem--pointsAndDescription").children("button").html(), - // rubric_text: $(".rubricItem--key-applied").siblings(".rubricItem--pointsAndDescription").children(".rubricField-description").html(), - // comment: $('.form--textArea').val(), - // submission_num:sub_number, - // assignment_name: ass_name, - // grader_name:grader_name, - // check_box_status:checked - // }); - ); +// // } +// // console.log(":LOAD EVERYTHING") +// // if($('input[name="category"]:checked').length==0){ +// // var checked=""; +// // } +// // else{ +// // temp=[] +// // for(var i=0;i<$('input[name="category"]:checked').length;i++){ +// // var name=$('input[name="category"]:checked')[i].value +// // temp.push(name) +// // } +// // checked=temp.join(); +// // } +// // chrome.runtime.sendMessage({action: "onLeaving", +// // tbox_num:$('.taBox--textarea').length, +// // rubric_question:rubric_name, +// // rubric_item: $(".rubricItem--key-applied").html(), +// // rubric_point:$(".rubricItem--key-applied").siblings(".rubricItem--pointsAndDescription").children("button").html(), +// // rubric_text: $(".rubricItem--key-applied").siblings(".rubricItem--pointsAndDescription").children(".rubricField-description").html(), +// // comment: $('.form--textArea').val(), +// // submission_num:sub_number, +// // assignment_name: ass_name, +// // grader_name:grader_name, +// // check_box_status:checked +// // }); +// ); // else { // // tell chrome we are NOT on a grading page // chrome.runtime.sendMessage({action: "onOtherPage"}); diff --git a/manifest.json b/manifest.json index d862d15..7c570d3 100644 --- a/manifest.json +++ b/manifest.json @@ -3,7 +3,7 @@ "name": "Feedback Prototype", "description": "Suggests previous gradescope comments for feedback", - "version": "8.4.1", + "version": "8.4.2", "browser_action": { "default_popup": "popup.html" From 87d465f334f98bce2ccc081e99be0c93a74bcec2 Mon Sep 17 00:00:00 2001 From: Zhaoyi Huang Date: Sun, 22 Sep 2019 11:33:20 -0700 Subject: [PATCH 54/68] change client id to published version and update readme --- .DS_Store | Bin 6148 -> 6148 bytes README.md | 3 +++ manifest.json | 4 ++-- 3 files changed, 5 insertions(+), 2 deletions(-) diff --git a/.DS_Store b/.DS_Store index 2ac17cd1b661fe7a27ad1b2297ea437f9b4be1f2..aeaaabbbb35925c6fcac858a86a835306b51d0d2 100644 GIT binary patch delta 99 zcmZoMXfc@JFUrTjz`)4BAi%(o$xz0S%Am(k#gMsKkYhQsIY^3|!I7beA(51 kGbcYeDJMS(r~;^yNf2m;!hbMeVA#yVa+G;9JI7ys0L_~hmjD0& delta 48 zcmZoMXfc@JFUrfnz`)4BAi%(o&QQdV&rr&c$B?pFkYhPBBkyJ>mZQuQ8_YJdbNuB8 E0P$Z7WB>pF diff --git a/README.md b/README.md index cf0e322..7e536f4 100644 --- a/README.md +++ b/README.md @@ -8,3 +8,6 @@ The extension is for facilitating grading and some data collections More detailed instructions on usage of the extension, please check this document: https://docs.google.com/document/d/1QuesvGH1nJctrIWWKhP-Ob-SjBs2ZSGCzfVF6E4713U/edit?usp=sharing And also checkout the instruction video online. +client id for online version: 66462531215-1prsgpfbnfl2mf88e27165g1vcv70pjl.apps.googleusercontent.com +client id for debug here: 66462531215-mgror68snbk04d88ol3t4i7rnh0ul1j8.apps.googleusercontent.com + diff --git a/manifest.json b/manifest.json index 7c570d3..a34678a 100644 --- a/manifest.json +++ b/manifest.json @@ -3,7 +3,7 @@ "name": "Feedback Prototype", "description": "Suggests previous gradescope comments for feedback", - "version": "8.4.2", + "version": "8.4.3", "browser_action": { "default_popup": "popup.html" @@ -45,7 +45,7 @@ "persistent": false }, "oauth2": { - "client_id":"66462531215-mgror68snbk04d88ol3t4i7rnh0ul1j8.apps.googleusercontent.com", + "client_id":"66462531215-1prsgpfbnfl2mf88e27165g1vcv70pjl.apps.googleusercontent.com", "scopes": [ "https://spreadsheets.google.com/feeds" ] From 1a70d25657f7a63972ac2cd3aa35c1d0990d1b96 Mon Sep 17 00:00:00 2001 From: ZhaoyiHuangUCSD <32404758+ZhaoyiHuangUCSD@users.noreply.github.com> Date: Sun, 22 Sep 2019 11:51:13 -0700 Subject: [PATCH 55/68] Update README.md --- README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/README.md b/README.md index 7e536f4..19127f7 100644 --- a/README.md +++ b/README.md @@ -8,6 +8,8 @@ The extension is for facilitating grading and some data collections More detailed instructions on usage of the extension, please check this document: https://docs.google.com/document/d/1QuesvGH1nJctrIWWKhP-Ob-SjBs2ZSGCzfVF6E4713U/edit?usp=sharing And also checkout the instruction video online. + + client id for online version: 66462531215-1prsgpfbnfl2mf88e27165g1vcv70pjl.apps.googleusercontent.com client id for debug here: 66462531215-mgror68snbk04d88ol3t4i7rnh0ul1j8.apps.googleusercontent.com From 07c998813506d0eb679f3f04fcac6ac0cea862e1 Mon Sep 17 00:00:00 2001 From: ZhaoyiHuangUCSD <32404758+ZhaoyiHuangUCSD@users.noreply.github.com> Date: Sun, 22 Sep 2019 11:51:24 -0700 Subject: [PATCH 56/68] Update README.md --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 19127f7..8d4b960 100644 --- a/README.md +++ b/README.md @@ -11,5 +11,6 @@ And also checkout the instruction video online. client id for online version: 66462531215-1prsgpfbnfl2mf88e27165g1vcv70pjl.apps.googleusercontent.com + client id for debug here: 66462531215-mgror68snbk04d88ol3t4i7rnh0ul1j8.apps.googleusercontent.com From 465f114d254df21484b8ecbe8f2ea1f10ba72290 Mon Sep 17 00:00:00 2001 From: ZhaoyiHuangUCSD <32404758+ZhaoyiHuangUCSD@users.noreply.github.com> Date: Sun, 22 Sep 2019 14:41:57 -0700 Subject: [PATCH 57/68] Update README.md --- README.md | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 8d4b960..67e0aca 100644 --- a/README.md +++ b/README.md @@ -12,5 +12,8 @@ And also checkout the instruction video online. client id for online version: 66462531215-1prsgpfbnfl2mf88e27165g1vcv70pjl.apps.googleusercontent.com -client id for debug here: 66462531215-mgror68snbk04d88ol3t4i7rnh0ul1j8.apps.googleusercontent.com +client id for debug ( in Zhaoyi's Macbook) here: 66462531215-mgror68snbk04d88ol3t4i7rnh0ul1j8.apps.googleusercontent.com + +NOTICE: For first time users, if the chrome says the extension is unsafe, in that page, go to "advance" and let the chrome know you +will go unsafe. This extension is safe, this is not something you would like to see only in the incognito mode. From f5410e779a22c49d3f51cf3f6c6cdb73b4e7e787 Mon Sep 17 00:00:00 2001 From: ZhaoyiHuangUCSD <32404758+ZhaoyiHuangUCSD@users.noreply.github.com> Date: Sun, 22 Sep 2019 14:43:47 -0700 Subject: [PATCH 58/68] Update README.md --- README.md | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 67e0aca..d3a4986 100644 --- a/README.md +++ b/README.md @@ -12,8 +12,12 @@ And also checkout the instruction video online. client id for online version: 66462531215-1prsgpfbnfl2mf88e27165g1vcv70pjl.apps.googleusercontent.com -client id for debug ( in Zhaoyi's Macbook) here: 66462531215-mgror68snbk04d88ol3t4i7rnh0ul1j8.apps.googleusercontent.com +client id for debug ( in Zhaoyi's Macbook) here: +66462531215-mgror68snbk04d88ol3t4i7rnh0ul1j8.apps.googleusercontent.com + +If you would like to pull from this repo and do some debug in your local enviroment, remember to +register in google's API console or ask me to authenticate you in my console and get an client id for manifest.json. NOTICE: For first time users, if the chrome says the extension is unsafe, in that page, go to "advance" and let the chrome know you -will go unsafe. This extension is safe, this is not something you would like to see only in the incognito mode. +will go unsafe. This extension is safe, this is not something you would like to see only in the chrome incognito mode. From db36787000bb74b1dc5d392951bb334e3065d700 Mon Sep 17 00:00:00 2001 From: Zhaoyi Huang Date: Mon, 23 Sep 2019 11:09:13 -0700 Subject: [PATCH 59/68] change according to Maria's message --- .DS_Store | Bin 6148 -> 6148 bytes content_script.js | 36 ++++++++++++++++++++++++++++++------ manifest.json | 2 +- popup.js | 3 ++- 4 files changed, 33 insertions(+), 8 deletions(-) diff --git a/.DS_Store b/.DS_Store index aeaaabbbb35925c6fcac858a86a835306b51d0d2..2ac17cd1b661fe7a27ad1b2297ea437f9b4be1f2 100644 GIT binary patch delta 48 zcmZoMXfc@JFUrfnz`)4BAi%(o&QQdV&rr&c$B?pFkYhPBBkyJ>mZQuQ8_YJdbNuB8 E0P$Z7WB>pF delta 99 zcmZoMXfc@JFUrTjz`)4BAi%(o$xz0S%Am(k#gMsKkYhQsIY^3|!I7beA(51 kGbcYeDJMS(r~;^yNf2m;!hbMeVA#yVa+G;9JI7ys0L_~hmjD0& diff --git a/content_script.js b/content_script.js index bc63d54..4d52aaa 100644 --- a/content_script.js +++ b/content_script.js @@ -1338,7 +1338,16 @@ function makeCommentLink(comment){ $('.form--textArea').change(function(){ var rubric_item_score=$(".rubricItem--key-applied").siblings(".rubricItem--pointsAndDescription").children("button").html(); -try{ + if(rubric_item_score==undefined){ + let text1=$('.form--textArea').val() + if(text1!==undefined || text1!==""){ + Zdisabled=false + $(".actionBar--action-next").attr('disabled',false); + return + } + } + + try{ var arr=$(".submissionGraderPoints").html().split(" ") } catch(error){ @@ -1347,11 +1356,7 @@ catch(error){ arr.pop() var total_score=arr.pop() var res_total="+"+total_score -if(rubric_item_score==undefined){ - Zdisabled=true - $(".actionBar--action-next").attr('disabled',true); - return -} + if(rubric_item_score !=="-0.0"){ if(rubric_item_score.substring(0,1)!="-"){ if(rubric_item_score==res_total){ @@ -1492,6 +1497,25 @@ $(document).change(function(){ }) +$(document).change(function(){ + if($('taBox--displayText').length>0){ + Zdisabled=false + $(".actionBar--action-next").attr('disabled',false) + } + if($(".rubricItem--key-applied").length==0){ + Zdisabled=true + $(".actionBar--action-next").attr('disabled',true) + } +}) + + +$(document).ready(function(){ + if($('taBox--displayText').length>0){ + Zdisabled=false + $(".actionBar--action-next").attr('disabled',false) + } +}) + // $(document).change(function(){ // if(Zdisabled){ // alert("TRUE") diff --git a/manifest.json b/manifest.json index a34678a..c851f7e 100644 --- a/manifest.json +++ b/manifest.json @@ -3,7 +3,7 @@ "name": "Feedback Prototype", "description": "Suggests previous gradescope comments for feedback", - "version": "8.4.3", + "version": "8.4.4", "browser_action": { "default_popup": "popup.html" diff --git a/popup.js b/popup.js index 4d47f6d..0890171 100644 --- a/popup.js +++ b/popup.js @@ -55,7 +55,8 @@ document.addEventListener('DOMContentLoaded', function() { chrome.storage.local.get(null, function(items) { if (!items.user_id) { user_id = Math.random().toString(36) + new Date().getTime(); - always_show = (Math.random() < 0.5); + always_show=false; + // always_show = (Math.random() < 0.5); console.log("always show: " + always_show); chrome.storage.local.set({user_id: user_id, always_show: always_show}); } else if (items.always_show == undefined) { From 31d1b8bc96be9d33a1d4841a44312afe366adce0 Mon Sep 17 00:00:00 2001 From: Zhaoyi Huang Date: Mon, 23 Sep 2019 14:08:31 -0700 Subject: [PATCH 60/68] fixed something maria mentioned, load the html --- .DS_Store | Bin 6148 -> 6148 bytes Archive.zip | Bin 0 -> 72353 bytes background.js | 24 ++++++----- content_script.js | 108 ++++++++++++++++++++++++---------------------- manifest.json | 2 +- 5 files changed, 71 insertions(+), 63 deletions(-) create mode 100644 Archive.zip diff --git a/.DS_Store b/.DS_Store index 2ac17cd1b661fe7a27ad1b2297ea437f9b4be1f2..59059f331129e232278943ad11c7ae8ddc57c65f 100644 GIT binary patch delta 99 zcmZoMXfc@JFUrTjz`)4BAi%(o$xz0S%Am(k#gMsKkYhQsIY^3|!I7beA(51 kGbcYeDJMS(r~;^yNd#zy;D0b+VA#yVa+G;9JI7ys0L;S|ivR!s delta 48 zcmZoMXfc@JFUrfnz`)4BAi%(o&QQdV&rr&c$B?pFkYhPBBkyJ>mZQuQ8_YJdbNuB8 E0P$Z7WB>pF diff --git a/Archive.zip b/Archive.zip new file mode 100644 index 0000000000000000000000000000000000000000..593af1a9cc16682cbb5ba0fd4639eba703d692c6 GIT binary patch literal 72353 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
NL$rA>rXU9b2eN((kdJr9{y_*-_08iB0M= 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 KchgpS0saH&U;8Kk literal 0 HcmV?d00001 diff --git a/background.js b/background.js index a0f62b7..b108519 100644 --- a/background.js +++ b/background.js @@ -549,17 +549,21 @@ chrome.runtime.onMessage.addListener(function(request, sender, sendResponse) { } else if (request.action == "logShowSetting") { updateSheets("change setting"); sendResponse("event logged"); - } else if (request.action == "logSuggestionSee") { - updateSheets("show suggestions", request.submission_num,request.rubric_question, request.rubric_item); - sendResponse("event logged"); - } else if (request.action == "logSuggestionHide") { - updateSheets("hide suggestions", request.submission_num,request.rubric_question, request.rubric_item); - sendResponse("event logged"); - } else if (request.action == "logFocus") { + } + // else if (request.action == "logSuggestionSee") { + // updateSheets("show suggestions", request.submission_num,request.rubric_question, request.rubric_item); + // sendResponse("event logged"); + // } + // else if (request.action == "logSuggestionHide") { + // updateSheets("hide suggestions", request.submission_num,request.rubric_question, request.rubric_item); + // sendResponse("event logged"); + // } + // else if (request.action == "logFocus") { - updateSheets("focus", request.submission_num,request.rubric_question, request.rubric_item); - sendResponse("event logged"); - } else if (request.action == "logGradescopeFocus") { + // updateSheets("focus", request.submission_num,request.rubric_question, request.rubric_item); + // sendResponse("event logged"); + // } + else if (request.action == "logGradescopeFocus") { updateSheets("gradescope focus", request.submission_num,request.rubric_question); sendResponse("event logged"); } else if (request.action == "onGradingPage") { diff --git a/content_script.js b/content_script.js index 4d52aaa..e6f755a 100644 --- a/content_script.js +++ b/content_script.js @@ -483,7 +483,7 @@ $(".rubricItem--key").change(function(){ arr.pop() var total_score=arr.pop() var res_total="+"+total_score - if(rubric_item_score==undefined){ + if(rubric_item_score==undefined && $(".taBox--displayText").length==0 && $(".form--textArea").val()=="" ){ Zdisabled=true $(".actionBar--action-next").attr('disabled',true); return @@ -793,13 +793,19 @@ $(document).ready(function(){ $(document).ready(function(){ + if(rubric_item_score==undefined && $(".form--textArea").val()=="" && $('.taBox--displayText').length==0){ + Zdisabled=true + $(".actionBar--action-next").attr('disabled',true); + return + } var rubric_item_score=$(".rubricItem--key-applied").siblings(".rubricItem--pointsAndDescription").children("button").html(); -if(rubric_item_score==undefined){ - Zdisabled=true - $(".actionBar--action-next").attr('disabled',true); - return -} -var arr=$(".submissionGraderPoints").html().split(" ") +try{ + var arr=$(".submissionGraderPoints").html().split(" ") + } + catch(error){ + return + } +//var arr=$(".submissionGraderPoints").html().split(" ") arr.pop() var total_score=arr.pop() var res_total="+"+total_score @@ -807,6 +813,7 @@ console.log(rubric_item_score) console.log(total_score) console.log(res_total) if(rubric_item_score !=="-0.0"){ + try{ if(rubric_item_score.substring(0,1)!="-"){ if(rubric_item_score==res_total){ Zdisabled=false @@ -814,6 +821,10 @@ if(rubric_item_score !=="-0.0"){ return } } +} +catch(error){ + return +} var text=$('.form--textArea').val() console.log(text) if(text=="" ||$('.taBox--textarea').length==0){ @@ -850,8 +861,13 @@ const callback = function(mutationsList, observer) { } else if (mutation.type === 'attributes') { var classList = mutation.target.className; + console.log(classList) if(classList.indexOf("rubricItem--key-applied")>=0){ + // let len_rb=$(".rubricItem--key-applied").length-1 + // let item_rb=$(".rubricItem--key-applied")[len_rb] + // console.log(item_rb) rubric_item=$(".rubricItem--key-applied").html() + console.log(rubric_item) $('.pageViewerControls.u-pointerEventsNone').append($( "

" + "
PDF SUGGESTION BOX:DRAG PDF TO ME!
"+ @@ -888,7 +904,12 @@ const callback = function(mutationsList, observer) { } //$("
NAIVEEEEEE
").insertAfter('.taBox--textarea'); + try{ storeAndPrintComments(rubric_item,full_sorted_comments[rubric_item-1], rubric_item-1, rubric_item-1, false,true); + } + catch(error){ + console.log(error) + } if(!always_show){ var id=$('.rubricItem--key-applied').html(); @@ -929,24 +950,24 @@ observer.observe(targetNode[i], config); // $(".comment_view_text").keydown(function() { // console.log("this id "+this.id); // updateCommentBox(this.id); }); - $(".form--textArea").focus(function() { - //console.log(this); - - //I assume that rubric_item variable is the score like -0.5 - //var rubric_item = $(this).parents("li").find(".rubricItem--pointsAndDescription").find(".rubricField-points").html(); - //first step to make the ONLY comment box available - var rubric_item=$(".rubricItem--key-applied").html(); - rubric_item_applied=rubric_item; - // tell chrome to log the event that we just clicked the comment box - chrome.runtime.sendMessage({action: "logFocus", - rubric_question: rubric_name, - rubric_item: rubric_item, - submission_num:sub_number - }, function(response) { - console.log("logging focus: " + response); - //console.log("RRRRRRRRR "+rubric_item); - }); - }); + // $(".form--textArea").focus(function() { + // //console.log(this); + + // //I assume that rubric_item variable is the score like -0.5 + // //var rubric_item = $(this).parents("li").find(".rubricItem--pointsAndDescription").find(".rubricField-points").html(); + // //first step to make the ONLY comment box available + // var rubric_item=$(".rubricItem--key-applied").html(); + // rubric_item_applied=rubric_item; + // // tell chrome to log the event that we just clicked the comment box + // chrome.runtime.sendMessage({action: "logFocus", + // rubric_question: rubric_name, + // rubric_item: rubric_item, + // submission_num:sub_number + // }, function(response) { + // console.log("logging focus: " + response); + // //console.log("RRRRRRRRR "+rubric_item); + // }); + // }); // $("taBox--textarea").focus(function(){ // //var rubric_item=$(".rubricItem--key-applied").html(); @@ -1338,7 +1359,8 @@ function makeCommentLink(comment){ $('.form--textArea').change(function(){ var rubric_item_score=$(".rubricItem--key-applied").siblings(".rubricItem--pointsAndDescription").children("button").html(); - if(rubric_item_score==undefined){ + +if(rubric_item_score==undefined){ let text1=$('.form--textArea').val() if(text1!==undefined || text1!==""){ Zdisabled=false @@ -1347,7 +1369,7 @@ $('.form--textArea').change(function(){ } } - try{ +try{ var arr=$(".submissionGraderPoints").html().split(" ") } catch(error){ @@ -1498,37 +1520,19 @@ $(document).change(function(){ $(document).change(function(){ - if($('taBox--displayText').length>0){ + if($('.taBox--displayText').length>0 ||$(".form--textArea").val()!==""){ + Zdisabled=false $(".actionBar--action-next").attr('disabled',false) } - if($(".rubricItem--key-applied").length==0){ - Zdisabled=true - $(".actionBar--action-next").attr('disabled',true) - } -}) + +}); $(document).ready(function(){ - if($('taBox--displayText').length>0){ + if($('.taBox--displayText').length>0){ + Zdisabled=false $(".actionBar--action-next").attr('disabled',false) } -}) - -// $(document).change(function(){ -// if(Zdisabled){ -// alert("TRUE") -// $(".actionBar--action-next").attr('disabled',true); -// }else{ -// $(".actionBar--action-next").attr('disabled',true); -// } -// // var count=$('input[name="category"]:checked').length; -// // if(count==3){ -// // $(".actionBar--action-next").attr('disabled',false); -// // }else{ -// // $(".actionBar--action-next").attr('disabled',true); -// // } - - -// }); \ No newline at end of file +}); \ No newline at end of file diff --git a/manifest.json b/manifest.json index c851f7e..69d1ef9 100644 --- a/manifest.json +++ b/manifest.json @@ -3,7 +3,7 @@ "name": "Feedback Prototype", "description": "Suggests previous gradescope comments for feedback", - "version": "8.4.4", + "version": "8.4.6", "browser_action": { "default_popup": "popup.html" From e7ede806ce326d84d635dea8bc98a45c70aa423e Mon Sep 17 00:00:00 2001 From: Zhaoyi Huang Date: Mon, 23 Sep 2019 14:45:05 -0700 Subject: [PATCH 61/68] change toogle suggestion box, version 8.4.7 --- .DS_Store | Bin 6148 -> 6148 bytes Archive.zip | Bin 72353 -> 72431 bytes content_script.js | 18 ++++++++++++------ manifest.json | 2 +- 4 files changed, 13 insertions(+), 7 deletions(-) diff --git a/.DS_Store b/.DS_Store index 59059f331129e232278943ad11c7ae8ddc57c65f..8cf8c599527c5639863bae887b135f38c44a12bb 100644 GIT binary patch delta 19 acmZoMXffDe!otS*pMil&3lrR7;3B*O9eZ|#5j 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 iO_*`|M`1<@1r7$F7&Nu9vVpuV3WTaaR+=0){ // let len_rb=$(".rubricItem--key-applied").length-1 // let item_rb=$(".rubricItem--key-applied")[len_rb] // console.log(item_rb) - rubric_item=$(".rubricItem--key-applied").html() + rubric_item=mutation.target.innerHTML console.log(rubric_item) $('.pageViewerControls.u-pointerEventsNone').append($( "
" + @@ -884,7 +885,7 @@ const callback = function(mutationsList, observer) { var total_score=arr.pop() var res_total="+"+total_score if(rubric_item_score !=="-0.0"){ - if($('.tabox--textarea').length>0){ + if($('.tabox--textarea').val()!==""){ Zdisabled=false $(".actionBar--action-next").attr('disabled',false); } @@ -894,14 +895,19 @@ const callback = function(mutationsList, observer) { $(".actionBar--action-next").attr('disabled',false); } - } + }else{ Zdisabled=true $(".actionBar--action-next").attr('disabled',true); + } }else{ Zdisabled=false $(".actionBar--action-next").attr('disabled',false); } + if(rubric_item_score==undefined && $(".form--textArea").val()!=="" && $(".taBox--textarea").length>0){ + Zdisabled=false + $(".actionBar--action-next").attr('disabled',false); + } //$("
NAIVEEEEEE
").insertAfter('.taBox--textarea'); try{ @@ -912,7 +918,7 @@ const callback = function(mutationsList, observer) { } if(!always_show){ - var id=$('.rubricItem--key-applied').html(); + var id=mutation.target.innerHTML; console.log("IIID is: "+id); if (!$('suggestion_container_'+id).is(":visible")) { toggleSuggestionBox(id); @@ -1521,7 +1527,6 @@ $(document).change(function(){ $(document).change(function(){ if($('.taBox--displayText').length>0 ||$(".form--textArea").val()!==""){ - Zdisabled=false $(".actionBar--action-next").attr('disabled',false) } @@ -1535,4 +1540,5 @@ $(document).ready(function(){ Zdisabled=false $(".actionBar--action-next").attr('disabled',false) } -}); \ No newline at end of file +}); + diff --git a/manifest.json b/manifest.json index 69d1ef9..7a9a138 100644 --- a/manifest.json +++ b/manifest.json @@ -3,7 +3,7 @@ "name": "Feedback Prototype", "description": "Suggests previous gradescope comments for feedback", - "version": "8.4.6", + "version": "8.4.7", "browser_action": { "default_popup": "popup.html" From 0a50869529e12c2ef626494d83476e1ae894f3ae Mon Sep 17 00:00:00 2001 From: Zhaoyi Huang Date: Mon, 23 Sep 2019 15:41:24 -0700 Subject: [PATCH 62/68] change the line limit --- .DS_Store | Bin 6148 -> 6148 bytes Archive.zip | Bin 72431 -> 72468 bytes background.js | 22 +++++++++++----------- manifest.json | 2 +- 4 files changed, 12 insertions(+), 12 deletions(-) diff --git a/.DS_Store b/.DS_Store index 8cf8c599527c5639863bae887b135f38c44a12bb..70302a6e03b7da0ce3b24ac8ded582e20b3067af 100644 GIT binary patch delta 19 acmZoMXffDe!otQ7&A`CmvDu2{lrR7>{{+YY delta 19 acmZoMXffDe!otS*pMil$^X`>D66b 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 delta 13212 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 fz-t5`B9j085 Date: Mon, 23 Sep 2019 15:55:27 -0700 Subject: [PATCH 63/68] add lines, make always_show workable --- background.js | 6 +++--- content_script.js | 2 +- manifest.json | 2 +- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/background.js b/background.js index 6cf55c3..959f379 100644 --- a/background.js +++ b/background.js @@ -400,7 +400,7 @@ function appendCommentsToSheet(values) { xhr.setRequestHeader('Authorization','Bearer ' + token); xhr.setRequestHeader("Content-type", "application/json"); xhr.send('{' + - '"range": "F19!A2:L10000",' + + '"range": "F19!A2:L100000",' + values + '}'); } @@ -458,7 +458,7 @@ if (values != '"values": ]') { xhr.setRequestHeader('Authorization','Bearer ' + token); xhr.setRequestHeader("Content-type", "application/json"); xhr.send('{' + - '"range": "F19!A2:L10000",' + + '"range": "F19!A2:L100000",' + values + '}'); } @@ -498,7 +498,7 @@ function appendStuentSubmission(sub_number,student_name_list){ xhr.setRequestHeader('Authorization','Bearer ' + token); xhr.setRequestHeader("Content-type", "application/json"); xhr.send('{' + - '"range": "submission!A2:L10000",' + + '"range": "submission!A2:L100000",' + '"values": [[ "' + sub_number + '", "' + res_string+'","" ]]' + '}'); } diff --git a/content_script.js b/content_script.js index 1453b88..4e77841 100644 --- a/content_script.js +++ b/content_script.js @@ -932,7 +932,7 @@ const callback = function(mutationsList, observer) { } var id=$(mutation.target).html(); console.log("IIID dis appear is: "+id); - if (!$('suggestion_container_'+id).is(":visible")) { + if (!$('suggestion_container_'+id).is(":visible") && !always_show) { toggleSuggestionBox(id); } } diff --git a/manifest.json b/manifest.json index 0278bd6..8ed4b06 100644 --- a/manifest.json +++ b/manifest.json @@ -45,7 +45,7 @@ "persistent": false }, "oauth2": { - "client_id":"66462531215-1prsgpfbnfl2mf88e27165g1vcv70pjl.apps.googleusercontent.com", + "client_id":"66462531215-mgror68snbk04d88ol3t4i7rnh0ul1j8.apps.googleusercontent.com", "scopes": [ "https://spreadsheets.google.com/feeds" ] From 97600906dbcd37459c7e29f1035c5d67ccd08d23 Mon Sep 17 00:00:00 2001 From: Zhaoyi Huang Date: Mon, 23 Sep 2019 16:10:54 -0700 Subject: [PATCH 64/68] some change over write comments first then rubric items --- .DS_Store | Bin 6148 -> 6148 bytes Archive.zip | Bin 72468 -> 0 bytes background.js | 9 +++++---- content_script.js | 24 +++++++++++++----------- manifest.json | 4 ++-- 5 files changed, 20 insertions(+), 17 deletions(-) delete mode 100644 Archive.zip diff --git a/.DS_Store b/.DS_Store index 70302a6e03b7da0ce3b24ac8ded582e20b3067af..b6caaa39810ad3a3c4de17cc12db435fc905080f 100644 GIT binary patch delta 19 acmZoMXffDe!otSH&%nSazS)Z9lrR7-{sc|{ delta 19 acmZoMXffDe!otQ7&A`CmvDu2{lrR7>{{+YY diff --git a/Archive.zip b/Archive.zip deleted file mode 100644 index 621fe4156f362485883baa693ed2c0ba9b624779..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 72468 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
NL$rA>rXU9b2eN((kdJr9{y_*-_08iB0M= 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 + Zdisabled=false $(".actionBar--action-next").attr('disabled',false); } - if(rubric_item_score.substring(0,1)!="-"){ + else if(rubric_item_score.substring(0,1)!="-"){ if(rubric_item_score==res_total){ Zdisabled=false $(".actionBar--action-next").attr('disabled',false); @@ -1103,15 +1104,15 @@ $(function() { }); - $(".form--textArea").focus(function() { - // tell chrome to log the event that we just clicked the comment box - chrome.runtime.sendMessage({action: "logGradescopeFocus", - rubric_question: rubric_name, - submission_num:sub_number - }, function(response) { - console.log("logging gradescope focus: " + response); - }); - }); + // $(".form--textArea").focus(function() { + // // tell chrome to log the event that we just clicked the comment box + // chrome.runtime.sendMessage({action: "logGradescopeFocus", + // rubric_question: rubric_name, + // submission_num:sub_number + // }, function(response) { + // console.log("logging gradescope focus: " + response); + // }); + // }); // wait to receive the comments from spreadsheet chrome.runtime.onMessage.addListener(function(request, sender, sendResponse) { @@ -1367,6 +1368,7 @@ $('.form--textArea').change(function(){ var rubric_item_score=$(".rubricItem--key-applied").siblings(".rubricItem--pointsAndDescription").children("button").html(); if(rubric_item_score==undefined){ + let text1=$('.form--textArea').val() if(text1!==undefined || text1!==""){ Zdisabled=false diff --git a/manifest.json b/manifest.json index 8ed4b06..634997c 100644 --- a/manifest.json +++ b/manifest.json @@ -3,7 +3,7 @@ "name": "Feedback Prototype", "description": "Suggests previous gradescope comments for feedback", - "version": "8.4.8", + "version": "8.4.9", "browser_action": { "default_popup": "popup.html" @@ -45,7 +45,7 @@ "persistent": false }, "oauth2": { - "client_id":"66462531215-mgror68snbk04d88ol3t4i7rnh0ul1j8.apps.googleusercontent.com", + "client_id":"66462531215-1prsgpfbnfl2mf88e27165g1vcv70pjl.apps.googleusercontent.com", "scopes": [ "https://spreadsheets.google.com/feeds" ] From 36a1cbd96ec8fe641a367b8628c26fa7ef792173 Mon Sep 17 00:00:00 2001 From: Zhaoyi Huang Date: Mon, 23 Sep 2019 17:10:08 -0700 Subject: [PATCH 65/68] more fixed on adding comments and ensure it works --- .DS_Store | Bin 6148 -> 6148 bytes content_script.js | 8 ++++++++ manifest.json | 2 +- 3 files changed, 9 insertions(+), 1 deletion(-) diff --git a/.DS_Store b/.DS_Store index b6caaa39810ad3a3c4de17cc12db435fc905080f..2ac17cd1b661fe7a27ad1b2297ea437f9b4be1f2 100644 GIT binary patch delta 48 zcmZoMXfc@JFUrfnz`)4BAi%(o&QQdV&rr&c$B?pFkYhPBBkyJ>mZQuQ8_YJdbNuB8 E0P$Z7WB>pF delta 99 zcmZoMXfc@JFUrTjz`)4BAi%(o$xz0S%Am(k#gMsKkYhQsIY^3|!I7beA(51 kGbcYeDJMS(r~;^yi63Z&_ Date: Mon, 23 Sep 2019 17:24:33 -0700 Subject: [PATCH 66/68] small fix for button z --- content_script.js | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/content_script.js b/content_script.js index 6288416..11aede3 100644 --- a/content_script.js +++ b/content_script.js @@ -1450,9 +1450,7 @@ function switchZ(event){ }else if(keycode=='z' &&!Zdisabled){ if(!$('.form--textArea').is(':focus') && !$('taBox--textarea').is(':focus')){ var text=$('.form--textArea').val() - if(text==""||text==undefined){ - everyUnloading() - } + everyUnloading() } // $(document).unbind(); From 46eb480c1a71d29644fe61a8a96ca2ef4b93a055 Mon Sep 17 00:00:00 2001 From: Zhaoyi Huang Date: Tue, 24 Sep 2019 16:48:35 -0700 Subject: [PATCH 67/68] comments fixed and update the settings of the zdisabled --- content_script.js | 73 ++++++++++++++++++++++++++++++++--------------- manifest.json | 2 +- 2 files changed, 51 insertions(+), 24 deletions(-) diff --git a/content_script.js b/content_script.js index 11aede3..ab054a5 100644 --- a/content_script.js +++ b/content_script.js @@ -267,7 +267,7 @@ function storeAndPrintComments(rub,comments, id_num, index, searching,PDF) { } }); - + //PUT ONLY TOP 20 COMMENTS inside the box //A10: put non-0 comments first (ones specific to this rubric question) @@ -535,7 +535,14 @@ function updateCommentViews(view_id) { } console.log("got updated comments: ") console.log(comment_text); - if(comment_text!==""||comment_text!==undefined){ + if(comment_text!==""){ + Zdisabled=false + $(".actionBar--action-next").attr('disabled',false) + }else if(comment_text=="" && $('.taBox--textarea').length==0){ + Zdisabled=true + $(".actionBar--action-next").attr('disabled',true) + + }else{ Zdisabled=false $(".actionBar--action-next").attr('disabled',false) } @@ -668,7 +675,7 @@ function injectSuggestions() { $( "

" ).insertAfter(".form--textArea") @@ -687,7 +694,7 @@ $(document).ready(function(){ $( "
"+ - "Check boxes below if your comments on PDF or in comment box meet the critiria. you can press 'z' for next question as long as you put in comments for not full marks rubric items"+ + "Your feedback should be specific, actionable, and justified. Check the boxes below if your comments meet the criteria. You can press 'z' for the next question as long as you write a comment if the student did not receive full credit."+ "
"+ "Is specific"+ "Is actionable"+ @@ -744,26 +751,26 @@ $(document).ready(function(){ }else{ $('#ins_check').css('color','red'); - $('#ins_check').text('Your comment can be more justified.'); + $('#ins_check').text('Please add a justification for your comment'); } }else if($('input[class="catCheck--just"]').is(':checked')){ $('#ins_check').css('color','red'); - $('#ins_check').text('Your comment can be more actionable.'); + $('#ins_check').text('Please add a concrete suggestion to your comment to make it actionable'); }else{ $('#ins_check').css('color','red'); - $('#ins_check').text('Your comment could be improved to be more actionable and justified.'); + $('#ins_check').text('Please add a concrete suggestion to your comment to make it actionable'); } }else if($('input[class="catCheck--act"]').is(':checked')){ if($('input[class="catCheck--just"]').is(':checked')){ $('#ins_check').css('color','red'); - $('#ins_check').text('Your comment is actionable and justified, just be specific.'); + $('#ins_check').text('Please add a concrete suggestion to your comment to make it actionable'); }else{ $('#ins_check').css('color','red'); - $('#ins_check').text('Your comment is actionable only, make it better.'); + $('#ins_check').text('Please add a concrete suggestion to your comment to make it actionable'); } }else if($('input[class="catCheck--just"]').is(':checked')){ $('#ins_check').css('color','red'); - $('#ins_check').text('Your comment is justified only, make it better.'); + $('#ins_check').text('Please add a concrete suggestion to your comment to make it actionable'); }else{ $('#ins_check').css('color','red'); $('#ins_check').text('If you believe your comment meets the criteria listed below, check them.'); @@ -877,7 +884,7 @@ const callback = function(mutationsList, observer) { "
" + "
PDF SUGGESTION BOX:DRAG PDF TO ME!
"+ "
" + - '
"Suggestions: (click on the button will do the copy, PLEASE DO THE PASTE AFTERWARDS)"
' + + '
"Suggestions: Clicking the button by the suggested comment will copy it. Simply paste it in your comment box after"
' + "
" + "
" + "
" @@ -889,7 +896,8 @@ const callback = function(mutationsList, observer) { var total_score=arr.pop() var res_total="+"+total_score if(rubric_item_score !=="-0.0"){ - if($('.tabox--textarea').val()!=="" || $(".taBox--displayText").length>0){ + + if($('.form--textArea').val()!=="" || $(".taBox--displayText").length>0){ Zdisabled=false $(".actionBar--action-next").attr('disabled',false); @@ -901,6 +909,7 @@ const callback = function(mutationsList, observer) { } }else{ + Zdisabled=true $(".actionBar--action-next").attr('disabled',true); } @@ -909,9 +918,11 @@ const callback = function(mutationsList, observer) { $(".actionBar--action-next").attr('disabled',false); } - if(rubric_item_score==undefined && $(".form--textArea").val()!=="" && $(".taBox--textarea").length>0){ + if(rubric_item_score==undefined){ + if($(".form--textArea").val()!==""|| $(".taBox--textarea").length>0){ Zdisabled=false $(".actionBar--action-next").attr('disabled',false); + } } //$("
NAIVEEEEEE
").insertAfter('.taBox--textarea'); @@ -1101,7 +1112,14 @@ $(function() { } console.log("got updated comments: ") console.log(comment_text); - if(comment_text!==""||comment_text!==undefined){ + if(comment_text!==""){ + Zdisabled=false + $(".actionBar--action-next").attr('disabled',false) + }else if(comment_text=="" && $('.taBox--textarea').length==0){ + Zdisabled=true + $(".actionBar--action-next").attr('disabled',true) + + }else{ Zdisabled=false $(".actionBar--action-next").attr('disabled',false) } @@ -1378,7 +1396,7 @@ $('.form--textArea').change(function(){ if(rubric_item_score==undefined){ let text1=$('.form--textArea').val() - if(text1!==undefined || text1!==""){ + if(text1!==""){ Zdisabled=false $(".actionBar--action-next").attr('disabled',false); return @@ -1470,6 +1488,7 @@ $(document).change(function(){ var everything_on_pdf=new Set() console.log(Array.from(everything_on_pdf).length) + for(var i=0;i<$('.taBox--textarea').length;i++){ var text=$('.taBox--textarea')[i].innerHTML if(text!==""){ @@ -1477,9 +1496,12 @@ $(document).change(function(){ } } console.log(Array.from(everything_on_pdf).length) - if(Array.from(everything_on_pdf).length>0 && $(".rubricItem--key-applied").siblings(".rubricItem--pointsAndDescription").children("button").html() !==undefined){ + if(Array.from(everything_on_pdf).length==0 && $(".form--textArea").val().length==0){ + Zdisabled=true + $(".actionBar--action-next").attr('disabled',true) + }else{ Zdisabled=false - $(".actionBar--action-next").attr('disabled',false); + $(".actionBar--action-next").attr('disabled',false) } //more comments on the pdf not on the right if($('.anchor_on_right').length<$('.taBox--textarea').length){ @@ -1493,6 +1515,7 @@ $(document).change(function(){ var text=Array.from(diff)[0] console.log(text) $('.pdf_comments_display').append(""+text+""+"
") + // var text=$('.anchor_on_right')[j].innnerHTML; // if(!everything_on_pdf.has(text)){ // $('.pdf_comments_display').append(""+text+""+"
") @@ -1533,13 +1556,15 @@ $(document).change(function(){ }) -$(document).change(function(){ - if($('.taBox--displayText').length>0 ||$(".form--textArea").val()!==""){ - Zdisabled=false - $(".actionBar--action-next").attr('disabled',false) - } +// $(document).change(function(){ + +// if($('.taBox--displayText').length>0 ||$(".form--textArea").val()!==""){ +// alert("FUCK") +// Zdisabled=false +// $(".actionBar--action-next").attr('disabled',false) +// } -}); +// }); $(document).ready(function(){ @@ -1550,3 +1575,5 @@ $(document).ready(function(){ } }); + + diff --git a/manifest.json b/manifest.json index fb75525..19dfb05 100644 --- a/manifest.json +++ b/manifest.json @@ -3,7 +3,7 @@ "name": "Feedback Prototype", "description": "Suggests previous gradescope comments for feedback", - "version": "8.5.0", + "version": "8.5.1", "browser_action": { "default_popup": "popup.html" From b2b94e06c97d952a563b26b586d13a1e87645b63 Mon Sep 17 00:00:00 2001 From: Zhaoyi Huang Date: Sat, 2 Nov 2019 13:44:12 -0700 Subject: [PATCH 68/68] style fixed and sorting fixed --- .Rhistory | 0 content_script.js | 50 +++++++++++++++++++++++++++++------------------ suggestions.css | 8 ++++---- 3 files changed, 35 insertions(+), 23 deletions(-) create mode 100644 .Rhistory diff --git a/.Rhistory b/.Rhistory new file mode 100644 index 0000000..e69de29 diff --git a/content_script.js b/content_script.js index ab054a5..b013a59 100644 --- a/content_script.js +++ b/content_script.js @@ -230,26 +230,26 @@ function storeAndPrintComments(rub,comments, id_num, index, searching,PDF) { //sort the comments by the first word(move them together) - comments= comments.sort(function(info1,info2){ - var nameA= (info1[5].split(' '))[0].toLowerCase(); - var nameB = (info2[5].split(' '))[0].toLowerCase(); - if(nameA === nameB) return 0; - return nameA > nameB ? 1 : -1; + // comments= comments.sort(function(info1,info2){ + // var nameA= (info1[5].split(' '))[0].toLowerCase(); + // var nameB = (info2[5].split(' '))[0].toLowerCase(); + // if(nameA === nameB) return 0; + // return nameA > nameB ? 1 : -1; - }); + // }); - // sort comments ascending by length - comments = comments.sort(function(info1, info2) { - var length1 = parseInt(info1[6]); - var length2 = parseInt(info2[6]); - if (length1 < length2) { - return -1; - } else if (length1 == length2) { - return 0; - } else { - return 1; - } - }); + // // sort comments ascending by length + // comments = comments.sort(function(info1, info2) { + // var length1 = parseInt(info1[6]); + // var length2 = parseInt(info2[6]); + // if (length1 < length2) { + // return -1; + // } else if (length1 == length2) { + // return 0; + // } else { + // return 1; + // } + // }); //console.log(comments); @@ -266,7 +266,19 @@ function storeAndPrintComments(rub,comments, id_num, index, searching,PDF) { return 1; } }); - + + + comments = comments.sort(function(info1, info2) { + var length1 = parseInt(info1[6]); + var length2 = parseInt(info2[6]); + if (length1 < length2) { + return -1; + } else if (length1 == length2) { + return 0; + } else { + return 1; + } + }); //PUT ONLY TOP 20 COMMENTS inside the box diff --git a/suggestions.css b/suggestions.css index 35094ec..f0b1b5a 100644 --- a/suggestions.css +++ b/suggestions.css @@ -97,15 +97,15 @@ a[disabled="disabled"] { position: absolute; z-index: 9; padding-top: 80px; - padding-left: 30px; - width:350px; + padding-left: 0px; + width:190px; } #mydivheader { padding: 10px; cursor: move; z-index: 10; - width:350px; + width:190px; background-color: #2196F3; color: #fff; } @@ -118,7 +118,7 @@ a[disabled="disabled"] { background-color: rgb(248, 248, 245) !important; position: relative !important; pointer-events: auto !important; - width:350px; + width:190px; } .btn_pdf{