您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Amélioration de l'affichage de Pléiades (absences affichage annuel)
// ==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); } } } })();