// ==UserScript==
// @name parici.Sopra.Steria.JS
// @namespace http://tampermonkey.net/
// @version 0.3
// @description Amélioration de l'affichage de Pléiades (absences affichage annuel)
// @author You
// @match https://parici.soprasteria.com/*
// @grant none
// @require https://greasyfork.org/scripts/394970-css-rules-utilities/code/CSS%20rules%20utilities.js?version=765728
// ==/UserScript==
(function() {
'use strict';
const modCss = [{
"selectors": [
"body",
"[class^='PTitle']",
"[class*='Bandeau']",
"[class^='RoleActive']",
"[class^='PWelcome']",
".TableContainerMiddleLeft",
".TableContainerMiddleRight",
".TableContainerTopLeft",
".TableContainerTopCenter",
".TableContainerTopRight",
".TableContainerBottomLeft",
".TableContainerBottomCenter",
".TableContainerBottomRight"
],
"rule": { cssNormal: { "background": "none !important", "background-image": "none !important" } },
}];
const listOfFrames = [
"ACCU",
"BandeauSeparateur",
"MENU",
"rightFrame",
"principal"
];
const mutConfig = {
childList: true, // si l’ajout ou la suppression des éléments enfants du nœud visé (incluant les nœuds de texte) sont à observer.
attributes: false, // si les mutations d’attributs du nœud visé sont à observer.
characterData: false, // si les mutation de texte du nœud visé sont à observer.
subtree: true, // si les descendants du nœud visé sont également à observer.
attributeOldValue: false, // si attributes est true et si la valeur des attributs avant mutation doit être enregistrée.
characterDataOldValue: false, // si characterData est true et si la valeur des données avant mutation doit être enregistrée.
//attributeFilter: [] // Spécifiez un tableau de noms d’attributs locaux (sans namespace) si vous souhaitez n’observer les mutations que sur une partie des attributs.
};
let observer = new MutationObserver((mutationsList) => {
for(var mutation of mutationsList) {
if (mutation.type == 'childList') {
console.log('Un noeud enfant a été ajouté ou supprimé.');
}
else if (mutation.type == 'attributes') {
console.log("L'attribut '" + mutation.attributeName + "' a été modifié.");
}
else if (mutation.type == 'subtree') {
console.log(mutation);
}
}
});
for (let frame in listOfFrames) {
let frameName = top.frames[frame].name,
//frameWin = top.frames[frame].window,
frameDoc = top.frames[frame].document;
//frameBody = frameDoc.body;
frameDoc.onreadystatechange = () => {
if (frameDoc.readyState === "complete") {
console.log(frameName);
modCss.forEach(el => {
el.selectors.forEach(selector => {
let elements = frameDoc.querySelectorAll(selector);
for (let element of elements) {
modCssRules(element, el.rule, frameDoc);
}
})
});
}
}
}
waitForKeyElements(".totalTable", table => survey(table));
function survey(table) {
console.log("TABLE SURVEILLEE : ", table);
for (let row of table.rows) {
observer.observe(row, mutConfig);
for (let cell of row.cells) {
if ((!cell.classList.contains('libelleMois')) && (!cell.classList.contains('libelleMoisAncien')) && (!cell.classList.contains('celluleApres'))) {
console.log(cell.id, cell);
let cellDate = cell.id.split("-")[0];
let yearNum = "",
monthNum = "",
dayNum = "";
for (let i = 0; i < cellDate.length; i++) {
if (i <= 3) {
yearNum += cellDate[i]
} else if (i >= 6) {
dayNum += cellDate[i]
} else {
monthNum += cellDate[i]
}
}
monthNum = parseInt(monthNum) - 1;
let date = new Date(yearNum, monthNum, dayNum),
shortDay = new Intl.DateTimeFormat('fr-FR', {
weekday: "short"
}).format(date),
longDay = new Intl.DateTimeFormat('fr-FR', {
weekday: "long"
}).format(date)
cell.classList.add('cellDay', longDay);
if ((date.getDay() === 6) || (date.getDay() === 0)) {
cell.classList.add("weekend")
} else {
cell.classList.add("week")
}
let dayDiv = document.createElement('DIV'),
content = document.createElement('DIV');
content.classList.add('cellContent');
content.appendChild(cell.childNodes[0]);
dayDiv.classList.add('dayName');
dayDiv.innerText = shortDay;
cell.appendChild(dayDiv);
cell.appendChild(content);
};
modCssRules(cell, {
cssNormal: {
border: "none"
}
}, window);
}
}
}
})();