Tuesday, November 7, 2017

Change Log: 2.50.961

Release 2.50.961 is focused on improving UI/UX by optimizing Javascript performance.

Prior to this release, most of the AngularJS application (i.e. the part that renders the forms) was built-out at random: I just added functionality/features onto it as I went, and never really stopped to think about how that might be affecting performance.

Turns out it was really messing things up.

With release 2.50.961, I wouldn't say that things are perfect, but they are greatly improved over the last few releases. I haven't had the time/opportunity to officially clock it, but page loads seem to be taking less than half as long as they have been taking.

(The Survivor Sheet is still pretty sluggish, so I'm going to the drawing board on how to make that go faster, but all things considered, loads seem way faster.)

Thanks for using the Manager!

Corrections and Fixes


  1. Fixed a presentation issue in the Controls of Death where the survivor's name was '$name'.
  2. The Settlement object's defeated_monsters list is no longer sorted before serialization.
  3. Addressed an issue where the survivor Sheet 'Favorite' toggle always appeared to be checked during page load.
  4. Fixed a scoping bug that made Survivor Search results look disabled no matter what.
  5. Addressed the issue where all survivors would sometimes appear to be disabled in the Campaign Summary view.
  6. Fixed a scoping bug that prevented settlement notes from being removed.
  7. Returning survivors only adds Endeavor tokens to the settlement if the returning survivors are victorious.

Application Enhancements 


  1. Refactored kdmManager.js massively, with the idea of improving page load performance:
    1. Created a new method in the root scope called initializeUser() that is called independently of the main initialize() call.
    2. The initialize() method sets $scope.log_level when it starts now (rather than keeping it local).
    3. All initialization methods are timed now (they print their times in the console).
    4. Uncluttered the $scope w/r/t miscellaneous Settlement junk. If you want it now, you gotta go into $scope.settlement for it.
    5. Renamed initialize() to initializeSettlement() and changed its logging to reflect.
    6. Broke out initializeSurvivor() from the main init method.
    7. Removed the deprecated $scope.survivor_sheet element from...everywhere (finally).
    8. kdmManager.js method setGameAssetOptions() method now uses $scope.view to figure out which assets to update.
    9. Fixed a performance issue where loading the Survivor Sheet initialized Settlement Sheet assets (for no reason) at the cost of a blocking API call.
    10. Created an initializeEventLog() method that is only called when the Timeline controls are rendered, which can only happen after the settlement has been loaded.
    11. The User is only initialized after the settlement is loaded.
    12. Rewrote $scope.reinitialize() to be context (i.e. view) sensitive and do some things automatically.
    13. Re-initializing the Survivor view only reloads the the survivor now, and goes way faster.
    14. Removing a Fighting Art no longer refreshes the view.
    15. Blocked a number of look-ups behind $scope.userPromise, $scope.survivorPromise and $scope.settlementPromise for better performance during the initial view render.
    16. Added a $scope.initializeScope() method to the survivorSheet.js methods.
    17. Deprecated the reinitAssetLists() method (because it's pointless now).
    18. Initializing the Settlement no longer pulls in the /new_settlement assets (we only pull those down if we're going to actually create a new settlement).
    19. The initializeSettlement() method remembers scope and doesn't need args to initialize.
  2. Revised campaignSummary.js and the HTML that uses it for performance (leveraging the new stuff above, etc.).  It goes REALLY fast now.
  3. Revised settlementSheet.js to do the same stuff and it also goes really fast now.
  4. Survivor Sheet Fighting Arts, Disorders and A&I option pickers only appear if they're loaded/initialized.
  5. Setting Survivor Sheet special attributes no longer re-initializes the view.
  6. Refactored the toggleFavorite() method of survivorSheet.js so that it used scope correctly and didn't require a view refresh.
  7. Settlement Sheet Defeated Monster, Location and Innovation drop-downs no longer get "stuck" on the selected option after selecting.

API Development

  1. Added documentation for the rm_admin, get_storage and set_storage settlement routes.
  2. Admin Panel response time table highlights problematic response times.
  3. Fixed the Admin Panel so that it accurately shows subscriber info (which broke in the last release).
  4. Moved the metering flag to the request object. Enhanced the number of places we meter for speed on a response in dev.

No comments:

Post a Comment