User:Moonythedwarf/handyman.js

"use strict";

if (window.handyman === undefined) { let hmn = {}; window.handyman = {}; hmn.build_ui_core = => { hmn.ui = {}; hmn.ui.frame = new OO.ui.PanelLayout({			expanded: false,   		framed: true		}); hmn.ui.innerFrame_a = new OO.ui.PanelLayout({		   expanded: false,		    padded: true		});

hmn.ui.frame.$element.append(			hmn.ui.innerFrame_a.$element		); hmn.ui_target.append(hmn.ui.frame.$element); };	/* BEGIN RCP */ hmn.build_rcp_ui = async => { hmn.build_ui_core; };	/* END OF RCP | BEGIN FILTER TESTER */ hmn.build_filter_ui = async => { hmn.ui = {}; await window.avtools.load_libavtools_filters; let css = await window.avtools.load_json_file("User:Moonythedwarf/HandymanFilterInterface.css"); //totally JSON. let st = $(" "); hmn.ui.style = st; st.text(css); hmn.ui_target.append(st); let f = JSON.parse(await window.avtools.load_json_file("User:Moonythedwarf/HandymanFilterInterface.json")); window.libcui.build_ui(f, hmn.ui, hmn.ui_target); //hmn.ui.submit.$element.addClass("fullwidth"); hmn.ui.submit.on("click", hmn.filter_test_run_filters); /*		await window.avtools.load_libavtools_filters; hmn.build_ui_core; hmn.ui.innerFrame_b = new OO.ui.PanelLayout({		   expanded: false,		    padded: true		}); hmn.ui.frame.$element.append(			$(" "),			hmn.ui.innerFrame_b.$element		); hmn.ui.filter_type_select = new OO.ui.DropdownInputWidget({			options: [				{ data: "username_filters", label: "Username" },				{ data: "content_filters", label: "Content" },				{ data: "summary_filters", label: "Summary" },			]		}); hmn.ui.filter_text_input = new OO.ui.MultilineTextInputWidget({			placeholder: "Text to filter",		}) let submit = new OO.ui.ButtonInputWidget({       	label: "Check filters"		}); hmn.ui.fields = new OO.ui.FieldsetLayout({       	label: "Handyman Filter Testing"    	}); hmn.ui.fields.addItems([			new OO.ui.FieldLayout(hmn.ui.filter_text_input),			new OO.ui.FieldLayout(hmn.ui.filter_type_select, { label: "Select filter type:", align: "top" }),			new OO.ui.FieldLayout(submit)		]); //TODO: pretty JSON output. hmn.ui.output_text = $(" "); hmn.ui.output_text.css("white-space", "pre-wrap"); hmn.ui.output_frame = new OO.ui.PanelLayout({			expanded: false,   		framed: true,    		padded: true,		}); hmn.ui.output_frame.$element.append(hmn.ui.output_text); hmn.ui.innerFrame_a.$element.append(hmn.ui.fields.$element, submit.$element); hmn.ui.innerFrame_b.$element.append(hmn.ui.output_frame.$element); */	}	hmn.filter_test_run_filters = => { let avt = window.avtools; let results = avt.match_against_filters(avt[hmn.ui.filter_type_select.value], hmn.ui.filter_text_input.value); let i = $(" "); hmn.ui.outputFrame.$element.text(JSON.stringify(results, null, 2)); }	/* END FILTER TESTER | BEGIN CONFIG UI */ hmn.build_config_ui = async => { hmn.ui = {}; let f = JSON.parse(await window.avtools.load_json_file("User:Moonythedwarf/HandymanConfigInterface.json")); window.libcui.build_ui(f, hmn.ui, hmn.ui_target); hmn.ui.reload_avtools_config_btn.on("click", => {			window.avtools.wipe_cache;			location.reload;		}); /*		hmn.build_ui_core; hmn.ui.reload_avtools_config_btn = new OO.ui.ButtonWidget({			label: "Reload libavtools configuration and data (Unsaved config changes will be lost!)",			flags: "destructive",		}); hmn.ui.save_ hmn.ui.innerFrame_a.$element.append(			$(" "),			hmn.ui.reload_avtools_config_btn.$element		); */	}	/* END CONFIG UI */ hmn.interfaces = [ "Moonythedwarf/HandymanRCPInterface", "Moonythedwarf/HandymanFilterInterface", "Moonythedwarf/HandymanConfigInterface", "Moonythedwarf/HandymanPatrolFeed", ];	$(async => {		// libavtools takes a fairly significant amount of time to load fully, so only load it on pages effected by handyman.		try {		if (hmn.interfaces.includes(mw.config.get("wgTitle"))) {			let startTime = performance.now;			mw.notify("Handyman loading...");			await Promise.all([ mw.loader.getScript("/w/index.php?title=User:Moonythedwarf/libavtools.js&action=raw&ctype=text/javascript"), mw.loader.getScript("/w/index.php?title=User:Moonythedwarf/libcui.js&action=raw&ctype=text/javascript"), mw.loader.using(["oojs", "oojs-ui-core", "oojs-ui-widgets", "oojs-ui-toolbars"]), ]);			await window.avtools.load_libavtools_core;			hmn.ui_target = $("#mw-content-text");			switch (mw.config.get("wgTitle")) {				case "Moonythedwarf/HandymanRCPInterface":					await hmn.build_rcp_ui;					break;				case "Moonythedwarf/HandymanFilterInterface":					await hmn.build_filter_ui;					break;				case "Moonythedwarf/HandymanConfigInterface":					await hmn.build_config_ui;					break;				case "Moonythedwarf/HandymanPatrolFeed":					await mw.loader.getScript("/w/index.php?title=User:Moonythedwarf/handyman-usernames.js&action=raw&ctype=text/javascript")					window.handyman.uns.build_usernamefeed_ui;					break;				default:					throw new Error("unimplemented interface");			}			let endTime = performance.now;			mw.notify(`Loaded in ${endTime-startTime}ms`);		}		} catch (e) {			mw.notify(e);		}	}); }