Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Refactor User Preferred Object Store Select #19697

Draft
wants to merge 59 commits into
base: dev
Choose a base branch
from

Conversation

itisAliRH
Copy link
Member

This pull request introduces a redesign of the User Preferred Object Store Selection modal, aiming to enhance user experience through a consistent and modernized interface.

Required: #19521

Refactor.User.Preferred.Object.Store.Select.mp4
Before After
image image

Key Changes:

  • Enhanced Selection Interface using the SourceOptionCard
  • Update types and improve the logic

How to test the changes?

(Select all options that apply)

  • I've included appropriate automated tests.
  • This is a refactoring of components with existing test coverage.
  • Instructions for manual testing are as follows:
    1. Go to User Preferences
    2. Click on Preferred Storage Location

License

  • I agree to license these and all my past contributions to the core galaxy codebase under the MIT license.

Moves breakpoints SCSS file to a more appropriate directory for improved project structure and reusability and updates import paths in related components for consistency and clarity
Introduces `isHtml` prop to render description as HTML
Adds `showExpandText` prop to toggle expand text visibility
Updates styles for expand button and floating behavior
Replaces BRow and BCol with a flexbox layout
Updates prop type definitions and usage
Removes unused imports and adds Heading component
Introduces detailed information for each file source type, including icons and descriptive messages.
Adds valid filters for file sources based on name and type.
Introduces a new component to display file source templates.
Includes functionality for filtering by type and selecting templates.
Applies responsive design and styling for different screen sizes.
Adds search and filter functionality for file source templates
Use FileSourceTemplateCard for each available template
Improves error handling and loading indicators
Updates UI components for better user experience
Introduces navigation links to 'Remote File Sources' and 'Templates' pages
Adds a heading component for better structure and readability
Deletes the SelectTemplate.vue file from the FileSources/Templates directory. This component is no longer needed as part of the refactoring of file source templates.
…eader

Introduces a new 'header' prop to ManageIndexHeader component
Updates button ID generation to be dynamic based on the header
Replaces static create button IDs in various components
Includes headers "Storage Locations" and "Remote File Sources"
to the props of the respective routes for better clarity.
Move FileSourceTemplateCard to the generic SourceTemplateCard component under ConfigTemplates
Unifies template selection handling for file sources and object stores
Replaces FileSourceTemplateCard with SourceTemplateCard
Adds user preferences icon and type icon handling
Improves template type label styling and filtering
Introduces a new heading component with navigation links for better user navigation.
Imports necessary components and updates the template structure.
Introduces object store template types with associated icons and messages
Adds valid filters for object store templates based on name and type
Replaces string-based FontAwesome icon references with direct imports
Refactors badge type interface and prop definitions
Enhances tooltip functionality with dynamic title generation
Deletes the badgeIcons.ts file which contained unused FontAwesome icon imports to clean up the codebase.
Replaces BadgeType with ObjectStoreBadgeType for better type clarity
Simplifies props definition and removes unused properties
Updates import paths for consistency
Adds scoped styles for improved layout and appearance
Replaces template selection components with new UI elements
Adds filtering functionality for template types
Integrates Bootstrap-Vue and FontAwesome for improved styling
Updates computed properties and methods for filtering logic
Replaces the import and usage of BadgeType with ObjectStoreBadgeType
to improve type clarity and consistency in TemplateSummary.vue.
Deletes the SelectTemplate.vue file as it is no longer needed in the project.
Deletes the SelectTemplate.vue file from the ConfigTemplates directory.
Updates SCSS import paths to reference the renamed `_breakpoints.scss` file

ref https://github.com/galaxyproject/galaxy/pull/19521/files#r1954598636
Replaces Heading component with BreadcrumbHeading for improved UI consistency.
Removes unused imports and adds computed property for breadcrumb items.
Updates the FileSources/CreateInstance component to use a BreadcrumbHeading component.
Removes unused components.
Removes unused imports and simplifies template by using BreadcrumbHeading component
Updates navigation structure to use BreadcrumbHeading
Removes unused imports and improves breadcrumb navigation
Wraps loading message in BAlert for better visibility
Localizes loading message for improved user experience
Update  component with improved layout and optional grid view.
Simplifies imports and removes unused dependencies
Replaces template terminology with option terminology
Introduces breadcrumb navigation and list view toggle
Streamlines filtering logic and improves readability
Replaces separate icon and title props with a single optionType prop
for better type safety and code readability.
Deletes outdated unit tests for SelectTemplate
Enhances mocked directive bind method to set data attributes
Introduces constant messages for different storage states such as restricted access, quota settings, speed, security, stability, and cloud storage. These messages will be used to inform users about the properties and management of their storage locations.
Moves badge messages to a separate file for better organization
Simplifies template structure by removing redundant span tags
Updates test assertions and helper functions accordingly to test tooltip.
Replaces existing JS tests for ObjectStoreBadge with TS tests to improve type safety and maintainability.
Renames ObjectStoreBadges test file to TypeScript
Updates imports to include '.vue' extension
Adds type assertion for shallowMount component
Corrects badge size attribute in test assertions
Moves BreadcrumbItem interface to a shared index file for reuse across components. Simplifies BreadcrumbHeading component by importing the shared type.
Introduces SourceOptionsList component to display and filter source options
Implements filtering logic and UI for the list
Includes loading and empty state alerts for better UX
Adds scoped styles for the new component
Replaces multiple individual components with a unified `SourceOptionsList` component.
Moves template initialization to onMounted hook.
Removes unused imports and redundant code.
Simplifies component by removing unused imports and filtering logic
Replaces individual elements with SourceOptionsList component for better modularity
Includes headers "Storage Locations" and "Remote File Sources"
to the props of the respective routes for better clarity.
Introduces an optional 'showBadges' prop to SourceOptionsList component.
Replaces slot-based badge rendering with ObjectStoreBadges component.
Removes redundant badge rendering from CreateUserObjectStore.
Adds unique IDs to select buttons for better identification in SourceOptionCard
Modifies navigation selectors to use updated button IDs
… API

Migrates from Vue 2 Options API to Vue 3 Composition API for better maintainability and readability. Replaces Vue instance methods and lifecycle hooks with setup function, refs, and computed properties. Updates modal and font icon usage to align with new component structure.

Fixes layout and style issues with the modal dialog.
Adds computed properties for uniqueId, buttonTitle, and buttonTooltip
Introduces optional props 'selected', 'submitButtonTooltip', and 'selectionMode'
Updates styles for selected state
Implements emit for 'select' event

Improves user interaction and flexibility of SourceOptionCard component
Replaces button-based object store selection with SourceOptionCard components
Removes unused imports and refactors prop types to use lowercase
Simplifies handleSubmit function and error handling

Enhances user interface for better usability and maintainability
Export type definition for UserConcreteObjectStoreModel in API schema handling.
Replaces ConcreteObjectStoreModel with UserConcreteObjectStoreModel in SourceOption type
Enhances uniqueId computation to handle object_store_id
Adds data attribute to source option card for easier identification
Replaces ConcreteObjectStoreModel with UserConcreteObjectStoreModel.
Simplifies isLoaded computed property logic.
Typecasts loaded data to ensure correct type.
Replaces ConcreteObjectStoreModel with UserConcreteObjectStoreModel.
Adds new fields to default object store configuration because of the new type
Replaces option buttons with modal and option cards in object store selection.
Refactors schema to align with new UI structure.
Converts `UserPreferredObjectStore.test.js` to TypeScript, updates import paths, and refactors component and selector names for consistency and clarity.

Simplifies test logic by removing obsolete constants and correcting assertions.
Updates handleSubmit function to check for "__null__" ID and set it to null.
<div v-else>
<b-alert v-if="error" variant="danger" class="object-store-selection-error" show>
<span v-localize>
Select a preferred storage location for new datasets. Depending on the job and workflow execution
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Can you make the extra text dependent on the option again? I think adding that option in was a solid usability enhancement for main.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants