It's common that a user may way to edit a file (e.g., to make it
smaller if given an error message), and this allows the user to
select the same file name multilple times (which ordinarily the
file element will ignore).
* Make sure no elements of the markdown section are displayed when
they shouldn't be by taking advantage of the jQuery animation
queue
* Don't crash when the user cancels selecting a file
When the model is set on the MarkdownSectionController before it has
been rendered, it crashes attempting to set the value into the
textarea (which doesn't exist yet).
Update the crafting page so that the check mark for each step only
appears when hovering over that step, and so that the check also has
some descriptive text helping the user understand what it does.
When rapidly transitioning between various states, the markdown
editor could wind up with a weird mixture of UI elements showing as
some of transitions were dropped because they followed too quickly
on the heels of another transition.
This change fixes the problem by changing how the BaseController's
`hide` and `show` functions work. They now set a "target" state on
the element and, during each step of the animation, check whether
the target has changed. If so, the transition begins to work in
reverse to return to the prior state.
* Convert build to use a single JavaScript file on the site (instead
of downloading each library separately). This also means that all
global variables (e.g., `$` for JQuery, `_` for Underscore.js) can
be removed.
* Remove unused scripts and/or move them to a more appropriate repo
* Update the `deploy` script to work with CircleCI's automation
* Update markdown display code to allow images to be located with the
markdown data files instead of the pre-rendered index pages
* Fix AddThis component not showing up by altering the URL they
provide to use GET parameters instead of the hash component
* Fix a bug with saving the "have" items on the crafting page
The `InventoryTableController` had been split off from the existing
`InventoryController` some time ago, but was never properly factored
not to share common code. This change elimiates it altogether in
favor of the newly re-vamped `InventoryController` which is now
flexible enough to be used in both places.
This introduces the new crafting page design featuring a new vertical
layout and list display of all crafting steps. It also makes it easy
to move items between the have/need sections and even from each step
into your inventory (causing a new crafting plan to be created which
doesn't plan on making that item).
* Convert the `BaseController.hide` and `show` methods to be much
more robust in the use of CSS transitions (using a timer in case a
transition doesn't actually fire).
* Change `hide`/`show` to use events for communicating animation
state instead of callbacks
* Convert several controllers to fire events for communication with
parent controllers instead of accepting functions.
* Rewrite the `CraftPageController`, `CraftPage` model and related
Jade/SCSS files to implement the new design.
* Alter the `InventoryController` and `StackController` to allow a
variety of action buttons, and for the events from those action
buttons to bubble up to parent controllers
* Add the `StepController` and its related model, template, and style
sheet as part of the new craft page.
* Tweak the `ItemSelectorController` and related files to allow for
a variety of styles for the launcher button
When displaying an inventory list in read-only mode, it was possible
to reset the quantity to 9999 if the value was higher than that by
clicking the field. This accidentally triggered the validations
applied when editing the field even though editing wasn't possible.
* Create the SlotController and refactor it into the various places
where a crafting grid or crafting output is displayed
* Update the Recipe model to allow each "input" stack to retain the
count indicated in the data file. This required changing how a few
other classes interact with it in order for them to get the full
stack back again for each input (instead of just getting the item
slug)
* Update the ModVersionParser to allow for full stacks to be given
as input and refactored common code out for handling input/output/
tools stacks
1. All tests have been converted into regular command-line mocha
tests (instead of running in the browser), and the deployment
script has been changed to automatically fail any `--new`
deployment which doesn't pass.
2. Several small class (e.g., `Logger`) have been moved into a common
module, `crafting-guide-common` so that they may be shared between
the client and server.