diff --git a/src/Augmentation/AugmentationHelpers.jsx b/src/Augmentation/AugmentationHelpers.jsx index e9da71d17..d71909c97 100644 --- a/src/Augmentation/AugmentationHelpers.jsx +++ b/src/Augmentation/AugmentationHelpers.jsx @@ -2455,22 +2455,6 @@ function augmentationExists(name) { return Augmentations.hasOwnProperty(name); } -export function displayAugmentationsContent(contentEl) { - if (!routing.isOn(Page.Augmentations)) { - return; - } - if (!(contentEl instanceof HTMLElement)) { - return; - } - - function backup() { - saveObject.exportGame(); - onExport(Player); - } - - ReactDOM.render(, contentEl); -} - export function isRepeatableAug(aug) { const augName = aug instanceof Augmentation ? aug.name : aug; diff --git a/src/Milestones/MilestoneHelpers.tsx b/src/Milestones/MilestoneHelpers.tsx deleted file mode 100644 index 7ea791d77..000000000 --- a/src/Milestones/MilestoneHelpers.tsx +++ /dev/null @@ -1,26 +0,0 @@ -import { Page, routing } from ".././ui/navigationTracking"; -import { Root } from "./ui/Root"; -import { Player } from "../Player"; -import * as React from "react"; -import * as ReactDOM from "react-dom"; - -let milestonesContainer: HTMLElement | null = null; - -(function () { - function setContainer(): void { - milestonesContainer = document.getElementById("milestones-container"); - document.removeEventListener("DOMContentLoaded", setContainer); - } - - document.addEventListener("DOMContentLoaded", setContainer); -})(); - -export function displayMilestonesContent(): void { - if (!routing.isOn(Page.Milestones)) { - return; - } - - if (milestonesContainer instanceof HTMLElement) { - ReactDOM.render(, milestonesContainer); - } -} diff --git a/src/Milestones/ui/Root.tsx b/src/Milestones/ui/MilestonesRoot.tsx similarity index 94% rename from src/Milestones/ui/Root.tsx rename to src/Milestones/ui/MilestonesRoot.tsx index 5f108a708..46d682dd9 100644 --- a/src/Milestones/ui/Root.tsx +++ b/src/Milestones/ui/MilestonesRoot.tsx @@ -16,7 +16,7 @@ function highestMilestone(p: IPlayer, milestones: Milestone[]): number { return n; } -export function Root(props: IProps): JSX.Element { +export function MilestonesRoot(props: IProps): JSX.Element { const n = highestMilestone(props.player, Milestones); const milestones = Milestones.map((milestone: Milestone, i: number) => { if (i <= n + 1) { diff --git a/src/PersonObjects/IPlayer.ts b/src/PersonObjects/IPlayer.ts index ef772bef7..383e492bf 100644 --- a/src/PersonObjects/IPlayer.ts +++ b/src/PersonObjects/IPlayer.ts @@ -192,4 +192,5 @@ export interface IPlayer { getCasinoWinnings(): number; quitJob(company: string): void; createHacknetServer(): void; + startCreateProgramWork(programName: string, time: number, reqLevel: number): void; } diff --git a/src/Prestige.js b/src/Prestige.js index 31813d446..835bb7a1b 100755 --- a/src/Prestige.js +++ b/src/Prestige.js @@ -23,7 +23,7 @@ import { prestigeHomeComputer } from "./Server/ServerHelpers"; import { SourceFileFlags, updateSourceFileFlags } from "./SourceFile/SourceFileFlags"; import { SpecialServerIps, prestigeSpecialServerIps, SpecialServerNames } from "./Server/SpecialServerIps"; import { deleteStockMarket, initStockMarket, initSymbolToStockMap } from "./StockMarket/StockMarket"; -import { Terminal, postNetburnerText } from "./Terminal"; +import { Terminal, postVersion } from "./Terminal"; import { Page, routing } from "./ui/navigationTracking"; diff --git a/src/Programs/ProgramHelpers.js b/src/Programs/ProgramHelpers.js index acc880c25..ee807392a 100644 --- a/src/Programs/ProgramHelpers.js +++ b/src/Programs/ProgramHelpers.js @@ -3,19 +3,6 @@ import { Programs } from "./Programs"; import { Player } from "../Player"; import { createElement } from "../../utils/uiHelpers/createElement"; -// this has the same key as 'Programs', not program names -const aLinks = {}; - -function displayCreateProgramContent() { - for (const key in aLinks) { - const p = Programs[key]; - aLinks[key].style.display = "none"; - if (!Player.hasProgram(p.name) && p.create.req(Player)) { - aLinks[key].style.display = "inline-block"; - } - } -} - //Returns the number of programs that are currently available to be created function getNumAvailableCreateProgram() { var count = 0; @@ -46,29 +33,4 @@ function getNumAvailableCreateProgram() { return count; } -function initCreateProgramButtons() { - const createProgramList = document.getElementById("create-program-list"); - for (const key in Programs) { - if (Programs[key].create === null) { - continue; - } - const elem = createElement("a", { - class: "a-link-button", - id: Programs[key].htmlID(), - innerText: Programs[key].name, - tooltip: Programs[key].create.tooltip, - }); - aLinks[key] = elem; - createProgramList.appendChild(elem); - } - - for (const key in aLinks) { - const p = Programs[key]; - aLinks[key].addEventListener("click", function () { - Player.startCreateProgramWork(p.name, p.create.time, p.create.level); - return false; - }); - } -} - -export { displayCreateProgramContent, getNumAvailableCreateProgram, initCreateProgramButtons }; +export { getNumAvailableCreateProgram }; diff --git a/src/Programs/ui/ProgramsRoot.tsx b/src/Programs/ui/ProgramsRoot.tsx new file mode 100644 index 000000000..a163e47c2 --- /dev/null +++ b/src/Programs/ui/ProgramsRoot.tsx @@ -0,0 +1,49 @@ +import React, { useState, useEffect } from "react"; +import { IPlayer } from "../../PersonObjects/IPlayer"; +import { Programs } from "../Programs"; + +interface IProps { + player: IPlayer; +} + +export function ProgramsRoot(props: IProps): React.ReactElement { + const setRerender = useState(false)[1]; + function rerender(): void { + setRerender((old) => !old); + } + const [divisionName, setDivisionName] = useState("Overview"); + + useEffect(() => { + const id = setInterval(rerender, 20); + return () => clearInterval(id); + }, []); + + return ( + <> +

+ This page displays any programs that you are able to create. Writing the code for a program takes time, which + can vary based on how complex the program is. If you are working on creating a program you can cancel at any + time. Your progress will be saved and you can continue later. +

+ + + + ); +} diff --git a/src/Terminal.jsx b/src/Terminal.jsx index 4672504ea..0bd9a08ea 100644 --- a/src/Terminal.jsx +++ b/src/Terminal.jsx @@ -64,7 +64,7 @@ import * as FileSaver from "file-saver"; import * as libarg from "arg"; import React from "react"; -function postNetburnerText() { +function postVersion() { post("Bitburner v" + CONSTANTS.Version); } @@ -2616,4 +2616,4 @@ let Terminal = { }, }; -export { postNetburnerText, Terminal }; +export { postVersion, Terminal }; diff --git a/src/Tutorial/ui/TutorialRoot.tsx b/src/Tutorial/ui/TutorialRoot.tsx new file mode 100644 index 000000000..3c21168b4 --- /dev/null +++ b/src/Tutorial/ui/TutorialRoot.tsx @@ -0,0 +1,99 @@ +import React from "react"; + +export function TutorialRoot(): React.ReactElement { + return ( + <> +

Tutorial (AKA Links to Documentation)

+ + Getting Started + +
+
+ + Servers & Networking + +
+
+ + Hacking + +
+
+ + Scripts + +
+
+ + Netscript Programming Language + +
+
+ + Traveling + +
+
+ + Companies + +
+
+ + Infiltration + +
+
+ + Factions + +
+
+ + Augmentations + +
+
+ + Keyboard Shortcuts + + + ); +} diff --git a/src/engine.jsx b/src/engine.jsx index 7807a157b..7f40aa2bd 100644 --- a/src/engine.jsx +++ b/src/engine.jsx @@ -5,7 +5,13 @@ */ import { convertTimeMsToTimeElapsedString, replaceAt } from "../utils/StringHelperFunctions"; import { Augmentations } from "./Augmentation/Augmentations"; -import { initAugmentations, displayAugmentationsContent } from "./Augmentation/AugmentationHelpers"; +import { + initAugmentations, + displayAugmentationsContent, + installAugmentations, +} from "./Augmentation/AugmentationHelpers"; +import { onExport } from "./ExportBonus"; +import { AugmentationsRoot } from "./Augmentation/ui/Root"; import { AugmentationNames } from "./Augmentation/data/AugmentationNames"; import { initBitNodeMultipliers } from "./BitNode/BitNode"; import { Bladeburner } from "./Bladeburner/Bladeburner"; @@ -42,11 +48,8 @@ import { workerScripts } from "./Netscript/WorkerScripts"; import { loadAllRunningScripts, updateOnlineScriptTimes } from "./NetscriptWorker"; import { Player } from "./Player"; import { prestigeAugmentation } from "./Prestige"; -import { - displayCreateProgramContent, - getNumAvailableCreateProgram, - initCreateProgramButtons, -} from "./Programs/ProgramHelpers"; +import { getNumAvailableCreateProgram } from "./Programs/ProgramHelpers"; +import { ProgramsRoot } from "./Programs/ui/ProgramsRoot"; import { redPillFlag } from "./RedPill"; import { saveObject, loadGame } from "./SaveObject"; import { Root as ScriptEditorRoot } from "./ScriptEditor/ui/Root"; @@ -55,8 +58,9 @@ import { Settings } from "./Settings/Settings"; import { updateSourceFileFlags } from "./SourceFile/SourceFileFlags"; import { initSpecialServerIps } from "./Server/SpecialServerIps"; import { initSymbolToStockMap, processStockPrices, displayStockMarketContent } from "./StockMarket/StockMarket"; -import { displayMilestonesContent } from "./Milestones/MilestoneHelpers"; -import { Terminal, postNetburnerText } from "./Terminal"; +import { MilestonesRoot } from "./Milestones/ui/MilestonesRoot"; +import { Terminal, postVersion } from "./Terminal"; +import { TutorialRoot } from "./Tutorial/ui/TutorialRoot"; import { Sleeve } from "./PersonObjects/Sleeve/Sleeve"; import { createStatusText } from "./ui/createStatusText"; @@ -197,9 +201,6 @@ const Engine = { redPillContent: null, cinematicTextContent: null, missionContent: null, - - // Character info - characterInfo: null, }, indexedDb: undefined, @@ -218,8 +219,8 @@ const Engine = { loadCharacterContent: function () { Engine.hideAllContent(); Engine.Display.characterContent.style.display = "block"; - ReactDOM.render(, Engine.Display.characterInfo); routing.navigateTo(Page.CharacterInfo); + ReactDOM.render(, Engine.Display.characterContent); MainMenuLinks.Stats.classList.add("active"); }, @@ -227,50 +228,49 @@ const Engine = { Engine.hideAllContent(); Engine.Display.scriptEditorContent.style.display = "block"; routing.navigateTo(Page.ScriptEditor); - + MainMenuLinks.ScriptEditor.classList.add("active"); ReactDOM.render( , Engine.Display.scriptEditorContent, ); - - MainMenuLinks.ScriptEditor.classList.add("active"); }, loadActiveScriptsContent: function () { Engine.hideAllContent(); Engine.Display.activeScriptsContent.style.display = "block"; routing.navigateTo(Page.ActiveScripts); + MainMenuLinks.ActiveScripts.classList.add("active"); ReactDOM.render( , Engine.Display.activeScriptsContent, ); - MainMenuLinks.ActiveScripts.classList.add("active"); }, loadHacknetNodesContent: function () { Engine.hideAllContent(); Engine.Display.hacknetNodesContent.style.display = "block"; routing.navigateTo(Page.HacknetNodes); - ReactDOM.render(, Engine.Display.hacknetNodesContent); MainMenuLinks.HacknetNodes.classList.add("active"); + ReactDOM.render(, Engine.Display.hacknetNodesContent); }, loadCreateProgramContent: function () { Engine.hideAllContent(); Engine.Display.createProgramContent.style.display = "block"; - displayCreateProgramContent(); routing.navigateTo(Page.CreateProgram); MainMenuLinks.CreateProgram.classList.add("active"); + ReactDOM.render(, Engine.Display.createProgramContent); }, loadFactionsContent: function () { Engine.hideAllContent(); Engine.Display.factionsContent.style.display = "block"; routing.navigateTo(Page.Factions); - ReactDOM.render(, Engine.Display.factionsContent); MainMenuLinks.Factions.classList.add("active"); + ReactDOM.render(, Engine.Display.factionsContent); }, + // TODO reactify loadFactionContent: function () { Engine.hideAllContent(); Engine.Display.factionContent.style.display = "block"; @@ -281,16 +281,25 @@ const Engine = { Engine.hideAllContent(); Engine.Display.augmentationsContent.style.display = "block"; routing.navigateTo(Page.Augmentations); - displayAugmentationsContent(Engine.Display.augmentationsContent); MainMenuLinks.Augmentations.classList.add("active"); + + function backup() { + saveObject.exportGame(); + onExport(Player); + } + + ReactDOM.render( + , + Engine.Display.augmentationsContent, + ); }, loadMilestonesContent: function () { Engine.hideAllContent(); Engine.Display.milestonesContent.style.display = "block"; routing.navigateTo(Page.Milestones); - displayMilestonesContent(); MainMenuLinks.Milestones.classList.add("active"); + ReactDOM.render(, Engine.Display.milestonesContent); }, loadTutorialContent: function () { @@ -298,8 +307,10 @@ const Engine = { Engine.Display.tutorialContent.style.display = "block"; routing.navigateTo(Page.Tutorial); MainMenuLinks.Tutorial.classList.add("active"); + ReactDOM.render(, Engine.Display.tutorialContent); }, + // TODO reactify loadDevMenuContent: function () { Engine.hideAllContent(); createDevMenu(); @@ -310,11 +321,12 @@ const Engine = { loadLocationContent: function (initiallyInCity = true) { Engine.hideAllContent(); Engine.Display.locationContent.style.display = "block"; - MainMenuLinks.City.classList.add("active"); - routing.navigateTo(Page.Location); - const rootComponent = ; - ReactDOM.render(rootComponent, Engine.Display.locationContent); + MainMenuLinks.City.classList.add("active"); + ReactDOM.render( + , + Engine.Display.locationContent, + ); }, loadTravelContent: function () { @@ -323,11 +335,12 @@ const Engine = { Engine.hideAllContent(); Player.gotoLocation(LocationName.TravelAgency); Engine.Display.locationContent.style.display = "block"; - MainMenuLinks.Travel.classList.add("active"); - routing.navigateTo(Page.Location); - const rootComponent = ; - ReactDOM.render(rootComponent, Engine.Display.locationContent); + MainMenuLinks.Travel.classList.add("active"); + ReactDOM.render( + , + Engine.Display.locationContent, + ); }, loadJobContent: function () { @@ -342,29 +355,33 @@ const Engine = { Engine.hideAllContent(); Player.gotoLocation(Player.companyName); Engine.Display.locationContent.style.display = "block"; - MainMenuLinks.Job.classList.add("active"); - routing.navigateTo(Page.Location); - const rootComponent = ; - ReactDOM.render(rootComponent, Engine.Display.locationContent); + MainMenuLinks.Job.classList.add("active"); + ReactDOM.render( + , + Engine.Display.locationContent, + ); }, + // TODO reactify loadWorkInProgressContent: function () { Engine.hideAllContent(); - var mainMenu = document.getElementById("mainmenu-container"); + const mainMenu = document.getElementById("mainmenu-container"); mainMenu.style.visibility = "hidden"; Engine.Display.workInProgressContent.style.display = "block"; routing.navigateTo(Page.WorkInProgress); }, + // TODO reactify loadRedPillContent: function () { Engine.hideAllContent(); - var mainMenu = document.getElementById("mainmenu-container"); + const mainMenu = document.getElementById("mainmenu-container"); mainMenu.style.visibility = "hidden"; Engine.Display.redPillContent.style.display = "block"; routing.navigateTo(Page.RedPill); }, + // TODO reactify loadCinematicTextContent: function () { Engine.hideAllContent(); var mainMenu = document.getElementById("mainmenu-container"); @@ -373,6 +390,7 @@ const Engine = { routing.navigateTo(Page.CinematicText); }, + // TODO reactify loadInfiltrationContent: function (name, difficulty, maxLevel) { Engine.hideAllContent(); const mainMenu = document.getElementById("mainmenu-container"); @@ -386,19 +404,17 @@ const Engine = { Engine.hideAllContent(); Engine.Display.stockMarketContent.style.display = "block"; routing.navigateTo(Page.StockMarket); + MainMenuLinks.StockMarket.classList.add("active"); displayStockMarketContent(); }, loadGangContent: function () { + if (!Player.inGang()) return; Engine.hideAllContent(); - if (Player.inGang()) { - Engine.Display.gangContent.style.display = "block"; - routing.navigateTo(Page.Gang); - ReactDOM.render(, Engine.Display.gangContent); - } else { - Engine.loadTerminalContent(); - routing.navigateTo(Page.Terminal); - } + Engine.Display.gangContent.style.display = "block"; + routing.navigateTo(Page.Gang); + MainMenuLinks.Gang.classList.add("active"); + ReactDOM.render(, Engine.Display.gangContent); }, loadMissionContent: function () { @@ -412,27 +428,28 @@ const Engine = { loadCorporationContent: function () { if (!(Player.corporation instanceof Corporation)) return; Engine.hideAllContent(); - routing.navigateTo(Page.Corporation); Engine.Display.corporationContent.style.display = "block"; + routing.navigateTo(Page.Corporation); + MainMenuLinks.Corporation.classList.add("active"); ReactDOM.render(, Engine.Display.corporationContent); }, loadBladeburnerContent: function () { if (!(Player.bladeburner instanceof Bladeburner)) return; Engine.hideAllContent(); - routing.navigateTo(Page.Bladeburner); Engine.Display.bladeburnerContent.style.display = "block"; + routing.navigateTo(Page.Bladeburner); + MainMenuLinks.Bladeburner.classList.add("active"); ReactDOM.render( , Engine.Display.bladeburnerContent, ); - MainMenuLinks.Bladeburner.classList.add("active"); }, loadSleevesContent: function () { Engine.hideAllContent(); - routing.navigateTo(Page.Sleeves); Engine.Display.sleevesContent.style.display = "block"; + routing.navigateTo(Page.Sleeves); ReactDOM.render(, Engine.Display.sleevesContent); }, @@ -440,6 +457,7 @@ const Engine = { Engine.hideAllContent(); routing.navigateTo(Page.Resleeves); Engine.Display.resleeveContent.style.display = "block"; + MainMenuLinks.City.classList.add("active"); ReactDOM.render(, Engine.Display.resleeveContent); }, @@ -716,10 +734,6 @@ const Engine = { if (Engine.Counters.updateDisplays <= 0) { Engine.displayCharacterOverviewInfo(); - if (routing.isOn(Page.CreateProgram)) { - displayCreateProgramContent(); - } - Engine.Counters.updateDisplays = 3; } @@ -1238,9 +1252,6 @@ const Engine = { Engine.Display.missionContent = document.getElementById("mission-container"); Engine.Display.missionContent.style.display = "none"; - // Character info - Engine.Display.characterInfo = document.getElementById("character-content"); - // Location page (page that shows up when you visit a specific location in World) Engine.Display.locationContent = document.getElementById("location-container"); Engine.Display.locationContent.style.display = "none"; @@ -1285,110 +1296,30 @@ const Engine = { return; } - MainMenuLinks.Terminal.addEventListener("click", function () { - Engine.loadTerminalContent(); - return false; - }); - - MainMenuLinks.ScriptEditor.addEventListener("click", function () { - Engine.loadScriptEditorContent(); - return false; - }); - - MainMenuLinks.ActiveScripts.addEventListener("click", function () { - Engine.loadActiveScriptsContent(); - return false; - }); - - MainMenuLinks.CreateProgram.addEventListener("click", function () { - Engine.loadCreateProgramContent(); - return false; - }); - - MainMenuLinks.Stats.addEventListener("click", function () { - Engine.loadCharacterContent(); - return false; - }); - - MainMenuLinks.Factions.addEventListener("click", function () { - Engine.loadFactionsContent(); - return false; - }); - - MainMenuLinks.Augmentations.addEventListener("click", function () { - Engine.loadAugmentationsContent(); - return false; - }); - - MainMenuLinks.HacknetNodes.addEventListener("click", function () { - Engine.loadHacknetNodesContent(); - return false; - }); - - MainMenuLinks.Sleeves.addEventListener("click", function () { - Engine.loadSleevesContent(); - MainMenuLinks.Sleeves.classList.add("active"); - return false; - }); - - MainMenuLinks.City.addEventListener("click", function () { - Engine.loadLocationContent(); - return false; - }); - - MainMenuLinks.Travel.addEventListener("click", function () { - Engine.loadTravelContent(); - return false; - }); - - MainMenuLinks.Job.addEventListener("click", function () { - Engine.loadJobContent(); - return false; - }); - - MainMenuLinks.StockMarket.addEventListener("click", function () { - Engine.loadStockMarketContent(); - MainMenuLinks.StockMarket.classList.add("active"); - return false; - }); - - MainMenuLinks.Bladeburner.addEventListener("click", function () { - Engine.loadBladeburnerContent(); - return false; - }); - - MainMenuLinks.Corporation.addEventListener("click", function () { - Engine.loadCorporationContent(); - MainMenuLinks.Corporation.classList.add("active"); - return false; - }); - - MainMenuLinks.Gang.addEventListener("click", function () { - Engine.loadGangContent(); - MainMenuLinks.Gang.classList.add("active"); - return false; - }); - - MainMenuLinks.Milestones.addEventListener("click", function () { - Engine.loadMilestonesContent(); - return false; - }); - - MainMenuLinks.Tutorial.addEventListener("click", function () { - Engine.loadTutorialContent(); - return false; - }); - + MainMenuLinks.Terminal.addEventListener("click", () => Engine.loadTerminalContent()); + MainMenuLinks.ScriptEditor.addEventListener("click", () => Engine.loadScriptEditorContent()); + MainMenuLinks.ActiveScripts.addEventListener("click", () => Engine.loadActiveScriptsContent()); + MainMenuLinks.CreateProgram.addEventListener("click", () => Engine.loadCreateProgramContent()); + MainMenuLinks.Stats.addEventListener("click", () => Engine.loadCharacterContent()); + MainMenuLinks.Factions.addEventListener("click", () => Engine.loadFactionsContent()); + MainMenuLinks.Augmentations.addEventListener("click", () => Engine.loadAugmentationsContent()); + MainMenuLinks.HacknetNodes.addEventListener("click", () => Engine.loadHacknetNodesContent()); + MainMenuLinks.Sleeves.addEventListener("click", () => Engine.loadSleevesContent()); + MainMenuLinks.City.addEventListener("click", () => Engine.loadLocationContent()); + MainMenuLinks.Travel.addEventListener("click", () => Engine.loadTravelContent()); + MainMenuLinks.Job.addEventListener("click", () => Engine.loadJobContent()); + MainMenuLinks.StockMarket.addEventListener("click", () => Engine.loadStockMarketContent()); + MainMenuLinks.Bladeburner.addEventListener("click", () => Engine.loadBladeburnerContent()); + MainMenuLinks.Corporation.addEventListener("click", () => Engine.loadCorporationContent()); + MainMenuLinks.Gang.addEventListener("click", () => Engine.loadGangContent()); + MainMenuLinks.Milestones.addEventListener("click", () => Engine.loadMilestonesContent()); + MainMenuLinks.Tutorial.addEventListener("click", () => Engine.loadTutorialContent()); MainMenuLinks.DevMenu.addEventListener("click", function () { if (process.env.NODE_ENV === "development") { Engine.loadDevMenuContent(); } - return false; }); - // Active scripts list - Engine.ActiveScriptsList = document.getElementById("active-scripts-list"); - // Save, Delete, Import/Export buttons Engine.Clickables.saveMainMenuButton = document.getElementById("save-game-link"); Engine.Clickables.saveMainMenuButton.addEventListener("click", function () { @@ -1418,11 +1349,8 @@ const Engine = { return false; }); - // Create Program buttons - initCreateProgramButtons(); - // Message at the top of terminal - postNetburnerText(); + postVersion(); // Player was working cancel button if (Player.isWorking) { @@ -1517,7 +1445,6 @@ const Engine = { } dialogBoxCreate("Forcefully deleted all running scripts. Please save and refresh page."); gameOptionsBoxClose(); - return false; }); // DEBUG Soft Reset @@ -1525,13 +1452,11 @@ const Engine = { dialogBoxCreate("Soft Reset!"); prestigeAugmentation(); gameOptionsBoxClose(); - return false; }); // DEBUG File diagnostic document.getElementById("debug-files").addEventListener("click", function () { createPopup("debug-files-diagnostic-popup", FileDiagnosticPopup, {}); - return false; }); }, diff --git a/src/index.html b/src/index.html index c1c0528f3..943739abd 100644 --- a/src/index.html +++ b/src/index.html @@ -41,178 +41,93 @@