Alobeast / Feature & US

// ==UserScript==
// @name         Feature & US
// @description Alerte le user s'il n'a pas d'US en cours ou si la methode sur laquelle il travaille n'a pas d'US/feature rattachée
// @version      1.1
// @require https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js
// @author       Aloïs
// @include /^https://.*-des\.f.v..d\.com//
// @icon         https://www.google.com/s2/favicons?domain=faveod.com
// @license MIT
// @updateURL https://openuserjs.org/meta/Alobeast/Feature_US.meta.js
// @downloadURL https://openuserjs.org/install/Alobeast/Feature_US.user.js
// ==/UserScript==
// ==OpenUserJS==
// ==/OpenUserJS==
// jshint esversion: 6
// jshint jquery: true
// globals $, jQuery

window.onready = (function() {
    const usSelected = !!document.querySelector(`#working_on`);
    const hasPreviousVersions = !!document.querySelector('div.previous_versions');
    let currentlyChosenUs = '';
    if (!!document.querySelector(`#working_on`)) {
        currentlyChosenUs = document.querySelector(`#working_on`).firstElementChild.innerText.substring(1, 7);
    }
    let specReferenceElement = $( "label:contains('Référence de spécifications : ')" )
    if (specReferenceElement.length < 1) {
        specReferenceElement = $( "label:contains('Specification Reference: ')" )
    }
    const specReference = specReferenceElement[0].firstElementChild.value;
    
    currentlyChosenUs = currentlyChosenUs.replace(')','');
    
    const $warningLogo = jQuery('<span></span>')
                    .attr('id', 'user-story-warning-logo')
                    .css('background-image', 'url(https://i.imgur.com/JW2wKDs.png)')
                    .css('height', '20px')
                    .css('width', '20px')
                    .css('display', 'inline-block')
                    .css('background-position', 'center')
                    .css('background-size', 'contain')
                    .css('margin-bottom', '-4px')
                    .css('margin-right', '4px')

    // Si le user n'a pas d'US en cours on affiche l'alerte `ATTENTION vous n'avez pas sélectionné d'US`
   if (usSelected === false) {
       const $userStoryWarning = jQuery('<span></span>')
                	.attr('id', 'user-story-warning')
                	.text(`ATTENTION vous n'avez pas sélectionné d'US`)
                	.css('color', '#D04158')
                	.css('font-weight', 'bold')
                	.css('font-size', '1.1em')



                    jQuery('#content').prepend($userStoryWarning);
                    $userStoryWarning.prepend($warningLogo);

                    let counter = 1;
                	const isOdd = (x) => { return x & 1 }

                	setInterval(function() {
                		if(isOdd(counter) == 1) {
                			$warningLogo.css('background-image', 'url(https://i.imgur.com/JW2wKDs.png)')
                			counter += 1;
                		} else {
                			$warningLogo.css('background-image', 'url(https://i.imgur.com/iqfdJGd.png)')
                			counter += 1;
                		}
                	}, 1000);

   // Si le user a une US en cours, et que celle ci correspond a l'US renseignée dans l'input Référence de spécifications de la logique en cours on affiche l'alerte `ATTENTION il est possible que cette logique ne soit encore rattachée à aucune feature`
   // on verifie également qu'il ne s'agisse pas d'une logique nouvellement créée et qu'il n'y a qu'une seule US référencée dans "Référence de spécification" soit 6 caracteres max pour respecter le format "USxxx" ou "USxxxx"
   } else if ((hasPreviousVersions == true) && (specReference === currentlyChosenUs) && (specReference.length <= 6)) {
       const $logicNotLinkedWarning = jQuery('<span></span>')
                	.attr('id', 'logic_not_linked')
                	.text(`ATTENTION il est possible que cette logique ne soit encore rattachée à aucune feature`)
                	.css('color', '#D04158')
                	.css('font-weight', 'bold')
                	.css('font-size', '1.1em')

                    jQuery('#content').prepend($logicNotLinkedWarning);
                    $logicNotLinkedWarning.prepend($warningLogo);

                    let counter = 1;
                	const isOdd = (x) => { return x & 1 }

                	setInterval(function() {
                		if(isOdd(counter) == 1) {
                			$warningLogo.css('background-image', 'url(https://i.imgur.com/JW2wKDs.png)')
                			counter += 1;
                		} else {
                			$warningLogo.css('background-image', 'url(https://i.imgur.com/iqfdJGd.png)')
                			counter += 1;
                		}
                	}, 1000);
  }
})();