nearhosk8 / NameChangeController3

// ==UserScript==
// @name     NameChangeController3
// @license MIT
// @version  1
// @grant    none
// ==/UserScript==

var icons = new RegExp(/🔴|🔵|⚪️|✅|🏁|🔵⚪️|✅🔵|✅🔴/);

var iconsArr = [ " ","🔵", "⚪️", "🔴", "✅", "🏁", "🔵⚪️", "✅🔵", "✅🔴"];

var selectId = "assignnment-status-select";
/*
var iconsObj = {
     ' ': "Empty",
    '🔵': "Waiting for feedback",
    '⚪️': "Can be graded",
    '🔴': "Reviewed",
    '✅': "Graded",
    '🏁': "Graded and processed",
    '🔵⚪️': "Needs feedback and grade" 
};
*/
function changeName(element, iconArg) {
    var icon = iconArg || "🔵";

    element.value = icon + element.value.replace(icons, "");
}

function DeleteIcons(element, iconArg) {
    var icon = iconArg || "🔵";

    element.value = "" +  element.value.replace(icons,"");
}


function getSelect(element) {
    var selectEl = document.createElement("SELECT");

  	selectEl.id = selectId;
  
    var option = document.createElement("option");

    option.text = "  Empty";
    option.value = " ";
    //NEEDS_FEEDBACK"
    selectEl.add(option);
  
  	option = document.createElement("option");
    option.text = "🔵 Waiting for feedback";
    option.value = "🔵";
    //CAN_BE_GRADED"
    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 = "✅🔵";
    //Feedback and grade";
    selectEl.add(option);
  
    option = document.createElement("option");
    option.text = "✅🔴 Graded and reviewed";
    option.value = "✅🔴";
    //Feedback and grade";
    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;
}

setTimeout(function() {

    var element = document.getElementById("content_tag_title");

    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);