NOTICE: By continued use of this site you understand and agree to the binding Terms of Service and Privacy Policy.
// ==UserScript== // @name FeedbackIconsBChrome // @description Makes the process of using feedback icons easier // @include https://*.instructure.com/courses/*/modules // @include https://*.instructure.com/courses/*/assignments/*/edit // @license MIT // @version 1 // @grant none // ==/UserScript== (function() { 'use strict'; var icons = new RegExp(/⚫️|🔴|🔵|⚪️|✅|🏁|🔵⚪️|✅🔵|✅🔴/); var iconsArr = ["⚫️", "🔵", "⚪️", "🔴", "✅", "🏁", "🔵⚪️", "✅🔵", "✅🔴"]; var selectId = "assignnment-status-select"; //function for replacing old icons with new ones function changeName(element, iconArg) { var icon = iconArg || "🔵"; element.value = icon + element.value.replace(icons, ""); } //fuction for deleting previous icons function DeleteIcons(element, iconArg) { var icon = iconArg || "🔵"; element.value = "" + element.value.replace(icons, ""); } //button for updating icon function getButton(element, selectEl) { var button = document.createElement("BUTTON"); button.innerText = "Update Icon"; button.style.float = "right"; button.addEventListener('click', (event) => { var name = ""; DeleteIcons(element, ""); }); button.addEventListener('click', (event) => { var name = selectEl.value; changeName(element, selectEl.value); }); return button; } function getSelect(element) { var selectEl = document.createElement("SELECT"); selectEl.id = selectId; var option = document.createElement("option"); option.text = "⚫️ Not submitted"; option.value = "⚫️"; //NOT SUBMITTED YET" selectEl.add(option); option = document.createElement("option"); option.text = "🔵 Waiting for feedback"; option.value = "🔵"; //NEEDS FEEDBACK" selectEl.add(option); option = document.createElement("option"); option.text = "⚪️ Can be graded"; option.value = "⚪️"; //CAN_BE_GRADED" selectEl.add(option); option = document.createElement("option"); option.text = "🔴 Reviewed"; option.value = "🔴"; //REVIEWED"; selectEl.add(option); option = document.createElement("option"); option.text = "✅ Graded"; option.value = "✅"; //GRADED"; selectEl.add(option); option = document.createElement("option"); option.text = "🏁 Graded and processed"; option.value = "🏁"; //GRADED_AND_PROCESSED"; selectEl.add(option); option = document.createElement("option"); option.text = "🔵⚪️ Needs feedback and grade"; option.value = "🔵⚪️"; //FEEDBACK_AND_GRADE"; selectEl.add(option); option = document.createElement("option"); option.text = "✅🔵 Graded but needs feedback"; option.value = "✅🔵"; //GRADED_BUT_NEED_FEEDBACK"; selectEl.add(option); option = document.createElement("option"); option.text = "✅🔴 Graded and reviewed"; option.value = "✅🔴"; //GRADED_AND_REVIEWED"; selectEl.add(option); /*var iconMatch = element.value.match(icons); if (iconMatch != null && iconMatch.length > 0) { selectEl.selectedIndex = iconsArr.indexOf(iconMatch[0]); } */ selectEl.addEventListener('change', (event) => { var name = ""; DeleteIcons(element, ""); }); selectEl.addEventListener('change', (event) => { var name = event.target.value; changeName(element, event.target.value); }); return selectEl; } //button for updating icon on assignment edit(just a small css change) /* function getButtonTwo(element, selectEl) { var button = document.createElement("BUTTON"); button.innerText = "Update Icon"; //button.style.float = "left"; button.addEventListener('click', (event) => { var name = ""; DeleteIcons(element, ""); }); button.addEventListener('click', (event) => { var name = selectEl.value; changeName(element, selectEl.value); }); return button; } */ setTimeout(function () { var element = document.getElementById("content_tag_title"); var selectEl = document.createElement("SELECT"); // selectEl.id = selectId; var option = document.createElement("option"); option.text = "⚫️ Not submitted"; option.value = "⚫️"; //NOT SUBMITTED YET" selectEl.add(option); option = document.createElement("option"); option.text = "🔵 Waiting for feedback"; option.value = "🔵"; //NEEDS FEEDBACK" selectEl.add(option); option = document.createElement("option"); option.text = "⚪️ Can be graded"; option.value = "⚪️"; //CAN_BE_GRADED" selectEl.add(option); option = document.createElement("option"); option.text = "🔴 Reviewed"; option.value = "🔴"; //REVIEWED"; selectEl.add(option); option = document.createElement("option"); option.text = "✅ Graded"; option.value = "✅"; //GRADED"; selectEl.add(option); option = document.createElement("option"); option.text = "🏁 Graded and processed"; option.value = "🏁"; //GRADED_AND_PROCESSED"; selectEl.add(option); option = document.createElement("option"); option.text = "🔵⚪️ Needs feedback and grade"; option.value = "🔵⚪️"; //FEEDBACK_AND_GRADE"; selectEl.add(option); option = document.createElement("option"); option.text = "✅🔵 Graded but needs feedback"; option.value = "✅🔵"; //GRADED_BUT_NEED_FEEDBACK"; selectEl.add(option); option = document.createElement("option"); option.text = "✅🔴 Graded and reviewed"; option.value = "✅🔴"; //GRADED_AND_REVIEWED"; selectEl.add(option); var span = document.createElement("span"); span.style.marginRight = "8px"; span.innerHTML = "Change status:"; var div = document.createElement("div"); div.style.marginTop = "20px"; div.appendChild(span); div.appendChild(selectEl); //div.appendChild(getSelect(element)); div.appendChild(getButton(element, selectEl)); element.parentNode.appendChild(div); }, 2000); setTimeout(function () { var element = document.getElementById("assignment_name"); var span = document.createElement("span"); span.style.marginRight = "8px"; span.innerHTML = "Change status:"; var div = document.createElement("div"); div.style.marginTop = "20px"; div.appendChild(span); div.appendChild(getSelect(element)); element.parentNode.appendChild(div); }, 2000); function addGlobalStyle(css) { var head, style; head = document.getElementsByTagName('head')[0]; if (!head) { return; } style = document.createElement('style'); style.type = 'text/css'; style.innerHTML = css; head.appendChild(style); } addGlobalStyle('button { background-color: #008EE2; cursor: pointer;font-size: 1em;position: relative; border: 1px solid; border-radius: 3px; background-color 0.2s ease-in-out; display: inline-block; padding: 8px 14px; line-height: 20px; text-align: center; vertical-align: middle; border-color:#007EC9; color: white;} button:hover{ background-color: #0087d7}'); })();