parici.Sopra.Steria.JS

Amélioration de l'affichage de Pléiades (absences affichage annuel)

  1. // ==UserScript==
  2. // @name parici.Sopra.Steria.JS
  3. // @namespace http://tampermonkey.net/
  4. // @version 0.3
  5. // @description Amélioration de l'affichage de Pléiades (absences affichage annuel)
  6. // @author You
  7. // @match https://parici.soprasteria.com/*
  8. // @grant none
  9. // @require https://gf.qytechs.cn/scripts/394970-css-rules-utilities/code/CSS%20rules%20utilities.js?version=765728
  10. // ==/UserScript==
  11.  
  12. (function() {
  13. 'use strict';
  14.  
  15. const modCss = [{
  16. "selectors": [
  17. "body",
  18. "[class^='PTitle']",
  19. "[class*='Bandeau']",
  20. "[class^='RoleActive']",
  21. "[class^='PWelcome']",
  22. ".TableContainerMiddleLeft",
  23. ".TableContainerMiddleRight",
  24. ".TableContainerTopLeft",
  25. ".TableContainerTopCenter",
  26. ".TableContainerTopRight",
  27. ".TableContainerBottomLeft",
  28. ".TableContainerBottomCenter",
  29. ".TableContainerBottomRight"
  30. ],
  31. "rule": { cssNormal: { "background": "none !important", "background-image": "none !important" } },
  32. }];
  33. const listOfFrames = [
  34. "ACCU",
  35. "BandeauSeparateur",
  36. "MENU",
  37. "rightFrame",
  38. "principal"
  39. ];
  40. const mutConfig = {
  41. childList: true, // si l’ajout ou la suppression des éléments enfants du nœud visé (incluant les nœuds de texte) sont à observer.
  42. attributes: false, // si les mutations d’attributs du nœud visé sont à observer.
  43. characterData: false, // si les mutation de texte du nœud visé sont à observer.
  44. subtree: true, // si les descendants du nœud visé sont également à observer.
  45. attributeOldValue: false, // si attributes est true et si la valeur des attributs avant mutation doit être enregistrée.
  46. characterDataOldValue: false, // si characterData est true et si la valeur des données avant mutation doit être enregistrée.
  47. //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.
  48. };
  49.  
  50. let observer = new MutationObserver((mutationsList) => {
  51. for(var mutation of mutationsList) {
  52. if (mutation.type == 'childList') {
  53. console.log('Un noeud enfant a été ajouté ou supprimé.');
  54. }
  55. else if (mutation.type == 'attributes') {
  56. console.log("L'attribut '" + mutation.attributeName + "' a été modifié.");
  57. }
  58. else if (mutation.type == 'subtree') {
  59. console.log(mutation);
  60. }
  61. }
  62. });
  63.  
  64. for (let frame in listOfFrames) {
  65. let frameName = top.frames[frame].name,
  66. //frameWin = top.frames[frame].window,
  67. frameDoc = top.frames[frame].document;
  68. //frameBody = frameDoc.body;
  69. frameDoc.onreadystatechange = () => {
  70. if (frameDoc.readyState === "complete") {
  71. console.log(frameName);
  72. modCss.forEach(el => {
  73. el.selectors.forEach(selector => {
  74. let elements = frameDoc.querySelectorAll(selector);
  75. for (let element of elements) {
  76. modCssRules(element, el.rule, frameDoc);
  77. }
  78. })
  79. });
  80. }
  81. }
  82. }
  83.  
  84. waitForKeyElements(".totalTable", table => survey(table));
  85.  
  86.  
  87. function survey(table) {
  88. console.log("TABLE SURVEILLEE : ", table);
  89. for (let row of table.rows) {
  90.  
  91. observer.observe(row, mutConfig);
  92.  
  93. for (let cell of row.cells) {
  94. if ((!cell.classList.contains('libelleMois')) && (!cell.classList.contains('libelleMoisAncien')) && (!cell.classList.contains('celluleApres'))) {
  95. console.log(cell.id, cell);
  96. let cellDate = cell.id.split("-")[0];
  97. let yearNum = "",
  98. monthNum = "",
  99. dayNum = "";
  100. for (let i = 0; i < cellDate.length; i++) {
  101. if (i <= 3) {
  102. yearNum += cellDate[i]
  103. } else if (i >= 6) {
  104. dayNum += cellDate[i]
  105. } else {
  106. monthNum += cellDate[i]
  107. }
  108. }
  109. monthNum = parseInt(monthNum) - 1;
  110. let date = new Date(yearNum, monthNum, dayNum),
  111. shortDay = new Intl.DateTimeFormat('fr-FR', {
  112. weekday: "short"
  113. }).format(date),
  114. longDay = new Intl.DateTimeFormat('fr-FR', {
  115. weekday: "long"
  116. }).format(date)
  117. cell.classList.add('cellDay', longDay);
  118. if ((date.getDay() === 6) || (date.getDay() === 0)) {
  119. cell.classList.add("weekend")
  120. } else {
  121. cell.classList.add("week")
  122. }
  123.  
  124. let dayDiv = document.createElement('DIV'),
  125. content = document.createElement('DIV');
  126. content.classList.add('cellContent');
  127. content.appendChild(cell.childNodes[0]);
  128. dayDiv.classList.add('dayName');
  129. dayDiv.innerText = shortDay;
  130. cell.appendChild(dayDiv);
  131. cell.appendChild(content);
  132. };
  133.  
  134. modCssRules(cell, {
  135. cssNormal: {
  136. border: "none"
  137. }
  138. }, window);
  139. }
  140. }
  141. }
  142. })();

QingJ © 2025

镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址