Scroll To Bottom Mystery Master Change Log Member

Detective

Tips

  1. Cannot convert get/set property functions to lambda expressions.
  2. Use let/const instead of var keyword.
  3. Use const to assign lambda function to variable.
  4. Declare all JavaScript variables instead of checking if they are undefined.
  5. Use the const and let keywords to define variables instead of var.

TODO

  1. Test long usernames to see how they display.
  2. Test user marks.
  3. Consider links where getVerb returns Maybe? For puzzles with placers like "Is age1 less than age2?" See "Dandy Salespeople".
  4. Consider "Scroll Into View" as an option.

2019-08-06

  1. updated "Puzzle Parts" project to include session in its pages.

2019-08-05

  1. Added session to almost every page.

2019-08-04

  1. Encrypted password in MySQL. The password fields now have the blob type.

2019-08-03

  1. Use regular expressions to validate various fields in the member page.

2019-07-28

  1. Added include file "session.php" to track current member. The current member is displayed in include file "header.php".

2019-07-27

  1. Added include file "Logjam.php" containing its class and code to log to a file.

2019-07-26

  1. Added include file "Debe.php" (pronounced "Debbie"), a database wrapper class for MySQL.

2019-07-18

  1. Renamed maxNouns to numNouns in Puzzle class.
  2. Removed following "max" variables from Puzzle class: maxNounTypes, maxLinks, maxFacts, maxRules.

2019-07-17

  1. Incorporated Helper.getElapsedTimeAsString() method into Solver class.

2019-07-10

  1. Added "Scroll To Bottom" button in header.php files for main page and puzzle pages.
  2. Added "Scroll To Top" button in footer.php files for main page and puzzle pages.
  3. Removed reference to gridVerb from TabbyViewer.js

2019-07-08

  1. Converted var to const and let.
  2. Added PHP header <?php header("X-XSS-Protection: 0") ?> as the first line of savePuzzleParts.php

2019-07-07

  1. Renamed global print(msg) method to jot(msg) for debugging.
  2. Moved Helper.getClueNumMsg to private method in Puzzle class.
  3. Renamed Helper.getMsgElapsedTime to Helper.getElapsedTimeAsString
  4. Inline Helper.getStartedMsg method at Solver.sayStarted.
  5. Inline Helper.getStoppedMsg method at Solver.sayStopped.
  6. Inline Helper.getSolutionMsg method at Solver.saySolution.

2019-06-28

  1. The head.php file in root/inc folder now loads: Helper.js, Locker.js, UIX.js, Verb.js. Adding these files allow "puzzle part" documents to be clickable without raising errors (though the clicks may not invoke anything).
  2. Update all "puzzle parts" under the "puzzle" and "solved" folders in the help folder.

2019-06-27

  1. Changed column header for marks from "Name" to "Reason".
  2. Update only mark in Marks form and Grids form instead of entire form. This renders form much faster.
  3. Added "Scroll Into View" for facts, rules, marks, but is too jarring for big grids.

2019-06-26

  1. Set okPauseNext flag to false in Viewer.updateUI, Viewer.reset.
  2. Removed updateRule in Viewer.
  3. Set chkPauseSolution to true in SetupViewer.reset.

2019-06-25

  1. Updated all puzzle part files under the help folder.
  2. Puzzle footer has links to the unfilled Grids form and the filled Marks form.

2019-06-24

  1. Set checkmark for valid marks in the Marks form.
  2. Removed Filer.js and use PHP to save puzzle parts to appropriate files under the help folder.

2019-06-20

  1. Changed field name from chkPausePlacers to chkPausePlacer.

2019-06-12

  1. When User enables/disables fact/rule before there are marks, this overrides initEnabled flag for fact/rule.
  2. Passed toggleFact, toggleRule events from UI to WW as updateFact, updateRule.
  3. Removed Viewer variable from Worker.js file.

2019-06-11

  1. Use Google's closure compiler to create solver-lib.js, viewer-lib.js, worker-lib.js

2019-06-10

  1. Renamed WebWorker.js to Worker.js.

2019-06-07

  1. Optimized "Hello Dolly!" puzzle module to solve without assumptions.

2019-06-05

  1. Removed lonerNum from Mark class. lonerNum is now local to doAssumptions.
  2. Implement undo after solution is found for level 4 to see if there are additional solutions.

2019-06-04

  1. Rule 3 in "Small Town Motels" is not be necessary since I implemented the link "twice the sequence number of".

2019-06-03

  1. Updates placers in UI. See "Abbondanza!", "Astrophysics Conference", "Dandy Salespeople".
  2. In mark.addPlacer, don't add if already there or noun.noun is already that value.

2019-05-24

  1. Changed pairs array to hold noun instead of mark. See Noun class and solver.addMark.

2019-05-20

  1. Changed Solver.MaxLevels to Solver.MAX_LEVELS.
  2. Changed Solver.MaxLaws to Solver.MAX_LAWS.

2019-05-19

  1. Added Object.seal() to new JavaScript objects in the Puzzle class.
  2. Removed "this" keyword with returning closures in most classes.
  3. Return closures have get/set functions for variables.
  4. Added optional getVerb parameter to puzzle.addLink method.

2018-09-19

  1. Canceled Yahoo! Small Business for hosting the Mystery Master website.
  2. Changed the contact email address to my Hotmail account.

2018-09-17

  1. Began transition of hosting the Mystery Master website from Yahoo! to GoDaddy.

2018-05-16

  1. Set css display to none for the Solver component of the puzzle page.

2018-04-26

  1. Moved css for each puzzle into its own file.
  2. Extracted HTML for each puzzle into its own file.

2018-04-25

  1. Replaced "js" folder with js-puzzle and js-viewer folders.
  2. Removed The Builder Series on the Help page.
  3. Removed The Development Series on the Help page.
  4. Updated the About page
  5. Updated the CSS files.
  6. Updated the JavaScript files for the puzzles.
  7. Merged solver.php into footer.php.
  8. Update footer.php to show solver forms if the puzzle module exists.

2018-03-23

  1. Performed "spring cleaning" on the website.
  2. Reorganized the Board control displayed on a logic puzzle page.

2017-12-07

  1. Updated the number of logic puzzles to 120, though not all have a corresponding JavaScript file.

2017-07-27

  1. Modified PHP code to display encoded HTML. Example:
    			$str = file_get_contents("../puzzles/inc/setup.php");
    			echo htmlspecialchars($str);
    			
  2. Created PHP function showFileAsPre in the root head.php file.

2017-07-26

  1. Created the /blog folder.
  2. My first article "Model a Logic Puzzle in JavaScript" has been published by CodeProject.
  3. My second article "View a Logic Puzzle in JavaScript" has been submitted to CodeProject.

2017-07-02

  1. Created tabby.php.
  2. In tabby.php, removed class="tabButton" from each button in divTabButtons.

2017-06-17

  1. WebWorker returns "saySolverStatus" message to inform Viewer if Finder and Lawyer are loaded. This change impacts: Board, Solver, and Viewer.

2017-06-15

  1. Moved core JavaScript files for puzzles from "/puzzles/js/inc" to "/js".

2017-06-14

  1. Added button on home page to show/hide the "fun" images. These are the images that appear on the right-hand-side of pages, including the puzzle pages.
  2. Changed Locker class as static.

2017-05-11

  1. Removed leading blank in "resetWork" when posting to worker in viewer.resetWork.

2017-05-10

  1. Corrected problem with noun type in Verb.js

2017-05-07

  1. Went live with my Indiegogo crowdfunding campaign.

2017-05-05

  1. Updated puzzles/inc/head.php
  2. Fixed problem in Tabby.js assigning tabNum1 from locker.

2017-03-23

  1. Enable facts previously disabled by a mark in puzzle.removeMark

2017-03-22

  1. Disable fact in doLevel1a, doLevel1b

2017-03-21

  1. Added JSDoc comments
  2. Moved call to solver.quitWork from finder.doAssumptions to solver.doWork

2017-03-20

  1. Removed status field from Mark class
  2. Absorbed setGridMark3 into setGridMark2 in Puzzle class

2017-03-19

  1. Removed okFacts option

2017-03-15

  1. Fix pausing