forked from vergnet/application-amicale
		
	
		
			
				
	
	
		
			130 lines
		
	
	
	
		
			3.6 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			130 lines
		
	
	
	
		
			3.6 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| // @flow
 | ||
| 
 | ||
| import type {Machine} from "../screens/Proxiwash/ProxiwashScreen";
 | ||
| 
 | ||
| /**
 | ||
|  * Singleton class used to manage april fools
 | ||
|  */
 | ||
| export default class AprilFoolsManager {
 | ||
| 
 | ||
|     static instance: AprilFoolsManager | null = null;
 | ||
|     static fakeMachineNumber = [
 | ||
|         "",
 | ||
|         "cos(ln(1))",
 | ||
|         "0,5⁻¹",
 | ||
|         "567/189",
 | ||
|         "√2×√8",
 | ||
|         "√50×sin(9π/4)",
 | ||
|         "⌈π+e⌉",
 | ||
|         "div(rot(B))+7",
 | ||
|         "4×cosh(0)+4",
 | ||
|         "8-(-i)²",
 | ||
|         "|5√2+5√2i|",
 | ||
|         "1×10¹+1×10⁰",
 | ||
|         "Re(√192e^(iπ/6))",
 | ||
|     ];
 | ||
|     aprilFoolsEnabled: boolean;
 | ||
| 
 | ||
|     constructor() {
 | ||
|         let today = new Date();
 | ||
|         this.aprilFoolsEnabled = (today.getDate() === 1 && today.getMonth() === 3);
 | ||
|     }
 | ||
| 
 | ||
|     /**
 | ||
|      * Get this class instance or create one if none is found
 | ||
|      * @returns {ThemeManager}
 | ||
|      */
 | ||
|     static getInstance(): AprilFoolsManager {
 | ||
|         return AprilFoolsManager.instance === null ?
 | ||
|             AprilFoolsManager.instance = new AprilFoolsManager() :
 | ||
|             AprilFoolsManager.instance;
 | ||
|     }
 | ||
| 
 | ||
|     /**
 | ||
|      * Adds fake menu entries
 | ||
|      *
 | ||
|      * @param menu
 | ||
|      * @returns {Object}
 | ||
|      */
 | ||
|     static getFakeMenuItem(menu: Array<{dishes: Array<{name: string}>}>) {
 | ||
|         menu[1]["dishes"].splice(4, 0, {name: "Coq au vin"});
 | ||
|         menu[1]["dishes"].splice(2, 0, {name: "Bat'Soupe"});
 | ||
|         menu[1]["dishes"].splice(1, 0, {name: "Pave de loup"});
 | ||
|         menu[1]["dishes"].splice(0, 0, {name: "Béranger à point"});
 | ||
|         menu[1]["dishes"].splice(0, 0, {name: "Pieds d'Arnaud"});
 | ||
|         return menu;
 | ||
|     }
 | ||
| 
 | ||
|     /**
 | ||
|      * Changes proxiwash dryers order
 | ||
|      *
 | ||
|      * @param dryers
 | ||
|      */
 | ||
|     static getNewProxiwashDryerOrderedList(dryers: Array<Machine> | null) {
 | ||
|         if (dryers != null) {
 | ||
|             let second = dryers[1];
 | ||
|             dryers.splice(1, 1);
 | ||
|             dryers.push(second);
 | ||
|         }
 | ||
|     }
 | ||
| 
 | ||
|     /**
 | ||
|      * Changes proxiwash washers order
 | ||
|      *
 | ||
|      * @param washers
 | ||
|      */
 | ||
|     static getNewProxiwashWasherOrderedList(washers: Array<Machine> | null) {
 | ||
|         if (washers != null) {
 | ||
|             let first = washers[0];
 | ||
|             let second = washers[1];
 | ||
|             let fifth = washers[4];
 | ||
|             let ninth = washers[8];
 | ||
|             washers.splice(8, 1, second);
 | ||
|             washers.splice(4, 1, ninth);
 | ||
|             washers.splice(1, 1, first);
 | ||
|             washers.splice(0, 1, fifth);
 | ||
|         }
 | ||
|     }
 | ||
| 
 | ||
|     /**
 | ||
|      * Gets the new display number for the given machine number
 | ||
|      *
 | ||
|      * @param number
 | ||
|      * @returns {string}
 | ||
|      */
 | ||
|     static getProxiwashMachineDisplayNumber(number: number) {
 | ||
|         return AprilFoolsManager.fakeMachineNumber[number];
 | ||
|     }
 | ||
| 
 | ||
|     /**
 | ||
|      * Gets the new and ugly april fools theme
 | ||
|      *
 | ||
|      * @param currentTheme
 | ||
|      * @returns {{colors: {textDisabled: string, agendaDayTextColor: string, surface: string, background: string, dividerBackground: string, accent: string, agendaBackgroundColor: string, tabIcon: string, card: string, primary: string}}}
 | ||
|      */
 | ||
|     static getAprilFoolsTheme(currentTheme: Object) {
 | ||
|         return {
 | ||
|             ...currentTheme,
 | ||
|             colors: {
 | ||
|                 ...currentTheme.colors,
 | ||
|                 primary: '#00be45',
 | ||
|                 accent: '#00be45',
 | ||
|                 background: '#d02eee',
 | ||
|                 tabIcon: "#380d43",
 | ||
|                 card: "#eed639",
 | ||
|                 surface: "#eed639",
 | ||
|                 dividerBackground: '#c72ce4',
 | ||
|                 textDisabled: '#b9b9b9',
 | ||
| 
 | ||
|                 // Calendar/Agenda
 | ||
|                 agendaBackgroundColor: '#c72ce4',
 | ||
|                 agendaDayTextColor: '#6d6d6d',
 | ||
|             },
 | ||
|         };
 | ||
|     }
 | ||
| 
 | ||
|     isAprilFoolsEnabled() {
 | ||
|         return this.aprilFoolsEnabled;
 | ||
|     }
 | ||
| 
 | ||
| };
 |