- Introduced a new quick filter dropdown for selecting training groups, enhancing user experience in the MembersOverviewSection.
- Removed the previous training group filter from the advanced filters section to streamline the interface.
- Updated styles for the quick filter group to improve layout and responsiveness.
- Updated MemberTransferService to explicitly load only active members with testMembership = false, improving clarity in the transfer logic.
- Added a UI hint in MemberTransferDialog to inform users that only active members will be transferred, enhancing user experience and transparency.
- Added methods to normalize and format numbers based on locale in BillingService, improving internationalization support.
- Updated _fillSessionRows and _renderBillingPdfFromTemplate methods to accept locale as a parameter for consistent number formatting.
- Modified BillingView to pass the current locale when generating billing PDFs, ensuring accurate representation of numerical values.
- Removed redundant box-shadow properties for participant items in MemberGalleryDialog to streamline the visual design.
- Enhanced clarity of participant item styling while maintaining the intended visual effect.
- Refactored image selection logic in MemberService to prioritize primary images based on sortOrder.
- Updated MemberGalleryDialog styles for participant items, adding visual indicators and improved background colors for better user experience.
- Removed the old draft status indicator and replaced it with a new draft status bar for better visibility.
- Enhanced the styling of the draft status bar to improve user experience and consistency.
- Updated the logic to return a 'Bereit' status when applicable, ensuring accurate draft state representation.
- Integrated local draft persistence and synchronization methods to maintain draft state effectively.
- Added visual indicators for draft status in the MatchReportApiDialog, displaying messages based on syncing state.
- Introduced local draft persistence functionality, allowing users to save and restore match report drafts.
- Enhanced state management for draft synchronization, including timers and error handling.
- Updated methods to ensure local drafts are persisted and cleared appropriately during the match report submission process.
- Introduced a new dropdown filter for order completion states (paid, handed_over) in the OrdersPanel component.
- Updated the filtering logic to include completion state checks when loading orders.
- Added corresponding German localization for the new filter options to enhance user experience.
- Added a new function to sort order history entries in descending order based on their timestamps.
- Integrated the sorting function into the OrdersPanel component to enhance the display of order history.
- Introduced a new budget field in both MemberOrder and MemberOrderHistory models to track budget amounts.
- Updated memberOrderService to handle budget in serialization and normalization processes.
- Enhanced OrdersPanel component to include budget input and display in the UI.
- Added German localization for the new budget term to ensure consistency across languages.
- Deleted build.gradle.kts, gradle.properties, and gradlew files as part of the cleanup process.
- Removed local.properties and various generated files from the .gradle directory to streamline the project structure.
- Cleared out unnecessary build artifacts and intermediate files to improve project maintainability.
- Introduced a new button in the DiaryParticipantsPanel for opening the group photo crop dialog.
- Integrated the GroupPhotoCropDialog component in DiaryView, allowing users to manage group photos.
- Added state management for showing the group photo crop dialog and handling member image updates.
- Enhanced styling for the new button to maintain consistency with existing UI elements.
- Updated the gallery button to include icons for improved visual feedback during loading states.
- Refined button styles with a new gradient background and hover effects for better user interaction.
- Adjusted button layout to ensure consistent alignment and spacing of elements.
- Added scoped CSS styles to improve the layout and visual presentation of diary overview panels.
- Implemented responsive design adjustments for better usability on different screen sizes.
- Updated time range label formatting in DiaryView to ensure consistent display of training start and end times.
- Updated various phrases in the German localization files to ensure proper spelling and grammar.
- Improved user interface text in the group photo management feature for better readability.
- Ensured consistency in terminology across the application, enhancing the overall user experience.
- Added new terms related to mobile app usage and member play interests across various languages.
- Improved existing translations for better clarity and consistency.
- Included hints for mobile club selection to enhance user experience on smartphones.
- Ensured all localization files are synchronized with the latest application features.
- Added MemberGroupPhoto model and established relationships with Club and User models.
- Introduced new routes for managing group photos in the backend.
- Enhanced frontend components to support group photo cropping and member image updates.
- Updated localization files to include new terms related to group photo processing across multiple languages.
- Refactored server.js to include MemberGroupPhoto in the synchronization process.
- Introduced new settings for member data quality requirements in club settings, allowing configuration of required fields such as street, postal code, city, phone, and email.
- Updated the backend to handle the new memberDataQualityRequirements field in club settings.
- Enhanced the frontend to display and manage these requirements in the ClubSettings view, improving user experience and data integrity.
- Added localization support for new terms related to member data quality across multiple languages.
- Introduced new methods to determine the lineup half for matches and fetch eligible member IDs based on the selected team.
- Improved player selection dialog to filter visible members based on active status and eligibility, ensuring a more accurate representation of available players.
- Added logic to handle preselected player IDs, enhancing the user experience during team selection.
- Added a method to retrieve the current running season ID based on the current date and available season entries.
- Updated the season selection logic to default to the running season if no season is selected and `showCurrentSeason` is true.
- Enhanced localization files to include new terms related to member scopes, improving user experience across multiple languages.
- Adjusted member eligibility comparison logic to ensure correct validation.
- Implemented functions to remove ineligible planning assignments for teams, enhancing data integrity.
- Integrated automatic cleanup of ineligible assignments upon team updates, improving user experience.
- Updated the eligibility comparison logic to ensure correct member and team index validation.
- Introduced a new function to check if a member is eligible for a planning team based on age group and gender.
- Enhanced the team drop functionality to include eligibility validation, providing user feedback for ineligible members.
- Added new endpoints to get and set member play interests in the memberController.
- Integrated MemberPlayInterest model into the application, establishing relationships with Member and Club models.
- Updated memberRoutes to include routes for managing member play interests.
- Enhanced memberService to handle play interest retrieval and updates.
- Updated localization files to include new terms related to member play interests.
- Refactored server.js to include MemberPlayInterest in the synchronization process.
- Revised title and description meta tags in index.html for better alignment with the application's focus on table tennis club management.
- Updated Open Graph and Twitter meta tags to reflect the new branding and features of the application.
- Enhanced structured data implementation in SeoLandingPage.vue to support JSON-LD for better SEO performance.
- Adjusted sitemap.xml to reflect updated last modified dates for improved indexing.
- Refined content in ClubMemberManagementPage.vue to emphasize member profiles and data management.
- Added support for dialog resizing, allowing users to adjust the size of non-modal dialogs.
- Implemented dynamic positioning for dialogs based on user-defined coordinates or calculated defaults.
- Updated Vuex store to manage dialog dimensions and positions effectively.
- Enhanced the BaseDialog component with resize handles and improved drag-and-drop functionality.
- Updated localization strings to include new resize functionality for better user guidance.
- Removed the InternalTournamentStats component from App.vue and its associated state management in Vuex.
- Updated the DialogManager to include InternalTournamentStats, allowing for better dialog handling.
- Refactored the TournamentsView to utilize a new method for opening the InternalTournamentStats dialog.
- Enhanced the InternalTournamentStats component by simplifying its template and removing unnecessary props and methods.
- Improved the logic for displaying tournament statistics based on club selection, ensuring a cleaner user experience.
- Added InternalTournamentStats component to App.vue for displaying tournament statistics.
- Implemented state management for the dialog's visibility using Vuex, allowing for better control of the dialog's open state.
- Updated the TournamentsView to utilize the new Vuex mutation for opening the statistics dialog.
- Enhanced the InternalTournamentStats component with a new gender selection dropdown, replacing the previous checkbox implementation for improved user experience.
- Updated localization strings to support new filtering options and terminology related to gender and age classes across multiple languages.
- Replaced age class filtering with band and gender options for improved user selection.
- Introduced new methods for handling band and gender checkbox changes, enhancing the filtering logic.
- Updated the component's state management to accommodate selected bands and genders.
- Enhanced localization strings to support new filtering options, improving user accessibility and understanding.
- Integrated member profile data (birth date and gender) into the internal tournament statistics calculations for more accurate age class filtering.
- Removed deprecated age class filtering functions and streamlined the statistics computation process.
- Updated the InternalTournamentStats component to reflect changes in age class options and improved sorting logic.
- Enhanced localization strings across multiple languages to support new terminology related to age classes and gender, improving user accessibility and understanding.
- Improved the sorting logic for age class options in the InternalTournamentStats component, incorporating gender and name for better organization.
- Added new utility functions for handling gender labels and age class sorting values, enhancing clarity in tournament statistics.
- Updated localization strings across multiple languages to reflect changes in age class and gender terminology, improving user accessibility and understanding.
- Updated the `getInternalTournamentPlayerStats` endpoint to accept age class keys for more granular statistics.
- Introduced new utility functions for handling age class filtering in the internal tournament stats service.
- Enhanced the InternalTournamentStats component with a new age class filter UI, allowing users to select specific age classes for their statistics.
- Updated localization strings across multiple languages to support the new age class filtering feature, improving user accessibility and understanding.
- Updated the scoring logic for internal tournaments to reflect percentage-based placements, improving clarity and fairness in rankings.
- Refactored the `groupPointsFromRankings` function to `groupPercentFromRankings` for better readability and accuracy in calculations.
- Enhanced the InternalTournamentStats component with a new PDF export feature and improved dialog positioning for better user experience.
- Updated localization strings across multiple languages to align with the new scoring system and UI enhancements, ensuring better accessibility and understanding for users.
- Revised scoring system for internal tournaments to assign points based on placement (1st = 100, 2nd = 99, etc.), with adjustments for tied ranks and a cap at 101 points.
- Refactored `groupPointsFromRankings` function for improved clarity and efficiency.
- Enhanced the InternalTournamentStats component UI, integrating a dialog for better user interaction and accessibility.
- Updated localization strings across multiple languages to reflect the new scoring system and UI changes, improving user understanding and experience.
- Implemented a new endpoint `getInternalTournamentStats` in the tournament controller to retrieve statistics for internal tournaments based on club ID and selected months.
- Enhanced the tournament service to compute player statistics, including absolute and average rankings.
- Updated tournament routes to include the new statistics endpoint.
- Added localization strings for internal tournament statistics in multiple languages, improving user accessibility and experience.
- Integrated the new statistics component into the TournamentsView for better user interaction.
- Added new localization strings across multiple languages for missing configuration prompts, including messages for league selection and MyTischtennis URL requirements.
- Updated TeamManagementView to display missing configuration alerts, improving user guidance during team setup.
- Added `-webkit-overflow-scrolling: touch` and `overscroll-behavior-y: contain` to App.vue for improved scrolling behavior on touch devices.
- Updated DialogManager.vue to include `min-height: 0` and `overflow-x: hidden` for better content management.
- Set `min-height: 0` in TeamManagementOverview.vue and TeamManagementView.vue to ensure consistent layout.
- Enhanced localization files across multiple languages to include new terms for user administration, improving user experience.
- Updated TeamListCard to include keyboard accessibility features, allowing users to trigger edit actions via keyboard events.
- Refactored TeamListCard layout for better visual organization, including a new league row for improved information display.
- Enhanced styling for TeamListCard, including hover and focus states for better user interaction.
- Adjusted grid layout in TeamManagementOverview for improved responsiveness and spacing.
- Removed redundant styles from TeamManagementView, centralizing styling in TeamListCard for consistency.
- Introduced a new field for planned league name in the ClubTeam model, allowing for better team categorization.
- Updated create and update club team endpoints to handle the new planned league name field.
- Enhanced the PDF generation feature to include planned league name in the output.
- Improved localization files across multiple languages to incorporate new terms related to the planned league, ensuring a consistent user experience.
- Updated the TeamManagementView to display and edit the planned league name, enhancing user interaction.
- Implemented a new feature to generate a PDF for team lineups, including detailed information such as club name, team name, league, season, gender, and age group.
- Enhanced localization files across multiple languages to include new terms related to the PDF generation feature, ensuring a consistent user experience.
- Updated the TeamManagementView to include a button for downloading the lineup as a PDF, improving accessibility for users.
- Added white-space nowrap property to .tt-age-class-line and .tt-age-class-line--next classes to prevent text wrapping, improving the visual layout of age class lines in the MembersView component.
- Revised the lastTrainingFilterHint in localization files for German, English (AU, GB, US), and Swiss German to enhance clarity regarding the age-class column and details available on row hover.
- Improved consistency in terminology across different language files to ensure a better user experience.
- Introduced a new filter for last training in the MembersOverviewSection, allowing users to filter members based on their last training date.
- Updated the MembersView to handle the new last training filter state and integrate it into the member sorting and display logic.
- Enhanced localization files across multiple languages to include new terms related to the last training filter and its options.
- Improved member row tooltip to display last training information, enhancing user experience and clarity.
- Introduced a checkbox in the MembersOverviewSection to toggle the visibility of the training participations column.
- Updated the MembersView to handle the new toggle state and display training participations accordingly.
- Enhanced localization files across multiple languages to include the new term for the training participations column.
- Refactored member age class display logic to improve clarity and maintainability.
- Introduced a new season filter dropdown in the MembersOverviewSection for selecting the season start year.
- Enhanced age group selection by organizing options into groups for better clarity and added new age categories.
- Updated localization files to include new terms related to the season filter and age classifications across multiple languages.
- Improved the overall layout and styling of the filter components for a better user experience.
- Added teamGender and teamAgeGroup fields to ClubTeam model for better categorization.
- Updated create and update club team endpoints to handle new fields and default values.
- Implemented getClubTeamLineup and updateClubTeamLineup functions for managing team lineups.
- Enhanced member management with adultReleaseApproved and adultReserveApproved fields in Member model.
- Updated frontend views to support new lineup features and member eligibility flags.
- Improved localization for new terms related to team management and member eligibility across multiple languages.
- Updated TrainingStatsService to include member details (first name, last name) in participant data.
- Modified TrainingDetailsDialog to remove unnecessary time display for training sessions.
- Added new filters for training days in TrainingStatsView, allowing users to select specific training days and view attending members.
- Enhanced localization files to support new training day filter and participant-related strings across multiple languages.
- Updated the TournamentWorkspaceHeader component to improve the layout with a new class for the workspace header.
- Introduced a tournament tabs panel with buttons for navigating between configuration, participants, groups, and results, enhancing user interaction.
- Added computed properties and methods for managing tab states and results sub-tabs, streamlining tournament management.
- Improved styling for better visual hierarchy and user experience.
- Simplified the problemConfigDescription in Spanish, Filipino, French, Italian, Japanese, Polish, Thai, Tagalog, and Chinese to remove the mention of "at least one class," ensuring clarity and consistency in translations.
- Introduced new functions for determining knockout round order and building preferred knockout matches based on qualifiers.
- Updated TournamentResultsTab to include collapsible sections for group matches and knockout rounds, improving user experience.
- Added data properties and methods to manage the visibility of match sections and handle tournament class checks.
- Refined UI elements for better interaction, including toggle buttons and improved styling for match sections.