diff --git a/screens/PlanexScreen.js b/screens/PlanexScreen.js index 5131b7c..a0e29a5 100644 --- a/screens/PlanexScreen.js +++ b/screens/PlanexScreen.js @@ -15,6 +15,27 @@ const PLANEX_URL = 'http://planex.insa-toulouse.fr/'; const CUSTOM_CSS_GENERAL = 'https://srv-falcon.etud.insa-toulouse.fr/~amicale_app/custom_css/planex/customMobile2.css'; const CUSTOM_CSS_NIGHTMODE = 'https://srv-falcon.etud.insa-toulouse.fr/~amicale_app/custom_css/planex/customDark2.css'; +// Remove transparency to planex items to prevent invisible items +const REMOVE_ALPHA_FUNCTION_INJECTED = + 'function removeAlpha() {' + + ' $(".fc-event-container .fc-event").each(function(index) {' + + ' let bg = $(this).css("background-color");' + + ' if (bg.match("^rgba")) {' + + ' let a = bg.slice(5).split(\',\');' + + ' let newBg = \'rgb(\' + a[0] + \',\' + parseInt(a[1]) + \',\' + parseInt(a[2]) + \')\';' + + ' $(this).css("background-color", newBg);' + + ' };' + + ' });' + + '}'; + +// Watch for changes in the calendar and call the remove alpha function +const OBSERVE_MUTATIONS_INJECTED = + 'let observer = new MutationObserver(function(mutations) {' + + ' removeAlpha();' + + '});' + + 'observer.observe(document.querySelector(".fc-body"), {attributes: false, childList: true, characterData: false, subtree:true});'; + + /** * Class defining the app's planex screen. * This screen uses a webview to render the planex page @@ -26,12 +47,21 @@ export default class PlanexScreen extends React.Component { constructor() { super(); this.customInjectedJS = - 'document.querySelector(\'head\').innerHTML += \'\';' + - 'document.querySelector(\'head\').innerHTML += \'\';' + - '$(".fc-toolbar .fc-center").append(\'

' + i18n.t("planexScreen.rotateToLandscape") + '

\');' + - '$(".fc-toolbar .fc-center").append(\'

' + i18n.t("planexScreen.rotateToPortrait") + '

\');true;'; + '$(document).ready(function() {' + + REMOVE_ALPHA_FUNCTION_INJECTED + + OBSERVE_MUTATIONS_INJECTED + + '$("head").append(\'\');' + + '$("head").append(\'\');'; + if (ThemeManager.getNightMode()) - this.customInjectedJS += 'document.querySelector(\'head\').innerHTML += \'\';'; + this.customInjectedJS += '$("head").append(\'\');'; + + this.customInjectedJS += + '$(".fc-toolbar .fc-center").append(\'

' + i18n.t("planexScreen.rotateToLandscape") + '

\');' + + '$(".fc-toolbar .fc-center").append(\'

' + i18n.t("planexScreen.rotateToPortrait") + '

\');' + + 'removeAlpha();' + + '});true;'; // Prevent crash on ios + } render() {