* Implemented a relatively simple dynamic background sizing calculation for the Map Planner
* Moved useWindowsSize() hook usage near the top of Planner() function
* Removed some dead space above the background image
* Adjustments
* Added a *lot* of math to adjust image spawn location based on the background image size & position, which are based on the current window size & position
- Moved the background image stuff to its own React Hook, usePlannerBg()
* Fix Prettier issue
* Added another comment
* Fixed typing for the usePlannerBg hook
- Also improved comments & some variable names to be cleaner/more consistent
Co-authored-by: Kalle <38327916+Sendouc@users.noreply.github.com>
* Ranked Modes checkboxes are now checked by default when making a new build
* Fixed the actual logic when taking older builds into account
* Added comment that references Issue 1150
* Rearranged type order so it reads better
* Layout initial
* Add FillRosterSection component
* Move tournaments to feature folder
* Refactor Button props
* SubmitButton
* Register action
* Identifier -> Id
* Invite link via nanoid
* Team info submit
* Enter tiebreaker map list UI
* Invite members to tournament team initial
* Show banner if joined a team not captain of
* Add back teams page
* Change team roster size color when good
* Delete tournament team member
* Issue 1180: ability chunk section now properly ignores Ability Doubler in its calculations
- Build Analyzer also no longer shows Ability Doubler as an Ability Chunk entry, nor does it show the Ability Chunks accordion if Ability Doubler is the only selected ability in the build
* Prettier formatting
* Now handles edge case for subabilities on Clothing gear with Ability Doubler
* Remove light mode
* Trim header
* New front page initial
* Get rid of build layout
* Breadcrumbs
* Desktop side nav
* Overhaul colors
* Add breadcrumbs
* New sub nav style
* Front page action buttons
* Add back add new build button
* Add articles page with icon
* Minor Object damage page layout tweaks
* Remove one unnecessary render from object damage
* Fix wrong link in article page
* Profile -> My Page in header
* Log in/out buttons in front
* Add drawings to front page
* Remove unnecessary comment
* Fixed Calendar WeekLink element CSS styling by adjusting height & min-height dynamically
* Fixed lint error
* Adjusted min-height to match that of the live version of the site
* UI Relocated and Icons For AP Effects
The UI for AP has been moved over the damage receivers that receive its effects
* Ran Lint Tests
* Updated damage calc UI to pass remaining tests
* Feature Implementation: Weapon icon on build card now links to the builds page that contains all builds corresponding to said weapon
* Refactor to an actual React hook
* Refactored the URL construction for the Weapon Builds page to urls.ts
* Changes
Co-authored-by: Kalle <38327916+Sendouc@users.noreply.github.com>
* Initial
* Add images
* Tweaks
* Proper sized bg image and weapons
* Stage bg picker
* Outlined weapon images for planner
* First version
* Lint
* Add alt and title to weapon
* Fixed flicker with combobox issue using unstable_shouldReload().
- Reference: https://remix.run/docs/en/v1/api/conventions#never-reloading-the-root
* Update app/routes/analyzer.tsx
Changed to false based on Sendou's recommendation
Co-authored-by: Kalle <38327916+Sendouc@users.noreply.github.com>
Co-authored-by: Kalle <38327916+Sendouc@users.noreply.github.com>
* Added Ability Chunks Required section in Build Analyzer
* Renamed a variable to be more precisely correct
* Added reference
* Removed some extra Javadoc comments
* Prettier fix
* We now only render the AbilityChunksRequired section only if the main abilities array contains a value other than "UNKNOWN"
* Improved React keys naming for performance reasons
* Ability Chunks map is now converted to an array & sorted by value (descending) before it gets rendered as visual components
* Fixed typing error
* Moved logical function to a new file in the analyzer module called abilityChunksCalc.ts
- Refactored for loop content to be cleaner
- Removed & changed some comments
* More for loop refactoring
* We now pass the entire build into abilityChunksCalc.ts
* Refactored map() to flatMap() so we avoid unknowns/null/undefined
* Refactored code to process mainAbilities and subAbilities
* Fixed subability list construction logic & typing in updateAbilityChunksMap()
* Got my first unit test working
* Added working unit tests, also changed sort order slightly
* Added a "real" build for testing
* Removed residual console.warn() call
* Moved constants to abilityChunksCalc.ts
* Ability chunk calculation is now correct for sub abilities
* Uncommented tests & improved their descriptions
* Rearranged expected output to match sorted order for clarity (even though it doesn't have to be)
* Fixed Prettier error
* Spacing
* Moved comments around
* More spacing
* Prettier error on test file
* Improved check in the tests
* Added a second "real" build to tests for good measure
* Added error message to empty array test
* Updated comments again
* More comments updated
* Update test name
* Ability Chunks section is now shown if we have at least one selected ability (handles edge case for primary slot-only abilities being the only chosen ability)
* Add DB tables
* Toggle TO Tools in new calendar event page
* TO tools page initial
* Add counter pick map pool UI
* Save tie breaker map pool
* Save team name
* Layout initial
* Load users own team
* Make team name input required
* Rename team
* Divide to sections
* Submit team map pool
* New style for counter pick map pool section expand
* Fix tiebreaker map pool not saved when new event made
* Split to many forms
* According for team name
* Small UI consistency tweaks
* Add explanation to tie breaker maps
* Remove redundant prop
* Fix new calendar event todos
* Use required hidden input component in new build page
* Fix to tools page showing even when toToolsEnabled = 0
* Delete team
* Map list generation tests initial
* Add tournament map list generation tests
* First version of map list generation
* Add seeded RNG
* Rearrange files
* Generation with strats initial
* Default map pool + allow one team not to have any maps
* Implement map generation via backtracking
* Make order of stages irrelevant
* Add one more TODO
* Seed
* Fixes
* Tournament map list generator initial
* More functional maplist
* Fix any
* Persist in search params initial
* Add date to calendar seed
* Revert "Persist in search params initial"
This reverts commit f01a9e6982.
* Allow admin to start tournament
* Rate maplist instead of optimal / suboptimal
* Add fallback if map list generation errors out
* Hide TO Tools if not admin
* Submit team roster and delete members
* Teams page
* Give roster s p a c e
* Clear user combobox on sent + layout tweaks
* Gracefully handle updating after tournament has started
* Add title
* Persist map list in search params
* Add i18n
* Added new Article route that renders all Articles (with a reasonable upper limit for now).
- Also added a GoToPageBanner for the main Articles page (/a) on the front page. This is placed above the ArticlesPeek component
- Used the sendou_love navItem icon for the moment (this can be replaced at any time once a new art asset is added)
* Fixed Prettier CI pipeline error
* Ran `npm run check-translation-jsons` to update missing Translations for new key added
* Update public/locales/en/front.json
Co-authored-by: Kalle <38327916+Sendouc@users.noreply.github.com>
* French localizations
* Removed unnecessary comment
* Converted h2 to h1 tags for Main Articles page
Co-authored-by: Kalle <38327916+Sendouc@users.noreply.github.com>
* Moved GoToPageBanner element for main articles page to below ArticlesPeek element
* Refactored some files so that the articles prop is passed into ArticlesPeek
- Also added the Articles header title in common.json
* Updated translation-progress.md
* Cleaned up data type for articles prop in ArticlesPeek
* Fixed React hydration error for translations on imported articles
- Added in SendouRouteHandle component on new Articles main page
* GoToPageBanner now optionally accepts a `navItem` parameter. It does not render the image if navItem is not passed into it
* Removed <Outlet /> JSX element on the main Articles page
* Removed sendou_love navItem on GoToPageBanner for articles page
* Fixed spacing issue by grouping ArticlesPeek and its corresponding GoToPageBanner element into a `stack` div
* Fixed pipeline error
* Update translation again
Co-authored-by: Kalle <38327916+Sendouc@users.noreply.github.com>
* Issue 858: On the new calendar page adding a new Date entry with the "Add" button will now insert a new date with an offset of +24 hours of the previous row's date value.
* Added comment to ignore the TSLint "object can be null" error
* Changed `var` to `const`
* Fixed Prettier checks in CI pipeline
* Fixed Typecheck CI pipeline error
* Moved getDateWithHoursOffset() function to app/utils/dates.ts
* Added new line at end of file
* Added getValidNewDateIfInvalid() function. This retrieves a valid date. If invalid, get a new Date object.
- So now, if we intentionally/accidentally delete the data in the Calendar's DateInput element, it will be reset to the current Date/Time
* Refactored DateInput component's update state mechanism to be handled by an onChange() function defined in the parent component that is passed to the child
* Prettier formatting so that the new CI pipeline won't output errors at me
* Removed unused imported types
* Removed the datesCount React Hook & refactored accordingly
* Removed unused loader-related variables
* DateInput onChange prop is now optional
* Instead of generating a new Array, iterate over DateInput's inputState's array instead
* Fix potential undefined error
* DatesInputState: refactored to remove index & access the index during iteration with map() 2nd arg
* Properly initialized state for pre-existing events =)
- Also added TODO comments for improving date input handling (1082)
* Prettier formatting
* Uncommented console.warn()
* Touched up comment
* Issue 1068: Hide Highlights section if the user has exactly 1 result on their profile
* Moved the logic so that we only hide the "Choose Highlights" button if the user has exactly 1 result & they have exactly 1 highlight selected
* Updated logic to hide the Highlights section if the user only has 1 total result
* Prettier fix
* Passed a FUSE_OPTIONS object to the Fuse() object.
- We can now adjust how "strict" the search is.
* Refactored Combobox to accept an optional fuseOptions object as a prop
* Fixed fuseOptions prop data type & added a default initialized value of {}
- Moved the USER_COMBOBOX_FUSE_OPTIONS outside of the function
* Issue 1036: non-draggable ability icons will no longer have its cursor morphed to a pointing hand icon
* Revert "Issue 1036: non-draggable ability icons will no longer have its cursor morphed to a pointing hand icon"
This reverts commit a0de4e0047.
* Issue 1036: Non-draggable ability icons will no longer have its cursor morphed to a pointing hand icon.
- Done correctly by conditionally choosing to render a <button /> or <div /> HTML element for ability icons everywhere Ability() was invoked by passing in readonly
* Removed stray console.warn() line, added a brief comment
* Removed unnecessary tabIndex adjustment for AbilityTag element if it is readonly (since it is no longer rendered as a button if it is readonly)
- We now also condtionally give type="button" to AbilityTag only if it is actually a button
* Conditionally set AbilitiesSelector's Ability JSX elements to readonly if the ability is "UNKNOWN"
* Fixed failed check for Prettier in CI pipeline
* Ability component now only chooses the readonly class if no onClick function is passed into it
- Exception: if the ability is "UNKNOWN", it will be forced to readonly
* Fixed Prettier error in CI pipeline
* Fixed Typecheck error in BuildCard.tsx
* Fixed Prettier CI pipeline error again
* Was checking for an undefined type incorrectly. Now the logic works properly
* Fixed Prettier error
* Cleaned up classname declaration syntax to React's shorthand
Planned to be replaced with Playwright maybe?
Just removing in the meanwhile so they don't confuse people.
Or that people won't accidentally develop new.