The Index Management codebase contains tech debt in a number of areas that will impeded maintenance and the addition of future enhancements.
Refactor tests to use testbed and modern patterns
The index table tests should be updated to use testbed, and to follow patterns established elsewhere with the use of helpers files and possibly breaking the suite up into multiple files, like we did with ILM.
Convert index table to EuiBasicTable or EuiInMemoryTable
The index table is implemented using low-level components like EuiTable, EuiTablePagination, EuiTableRowCell, and so on. We need to reimplement it using higher-level components like EuiBasicTable or EuiInMemoryTable. This will also allow us to remove some of the fundamental table behavior tests for things like pagination.
Migrate from Redux to local state
The index table has a Redux container. Migrating to the higher-level table components and local state using hooks will allow us to remove our dependency upon Redux. This is very similar to the migration @yuliacech performed for ILM.
Add support for deep-linking
Opening the detail panel for an index should update the URL, like we do for index templates and other UIs. This will allow people to share URLs that deep-link to individual indices.
Align component templates with the rest of the architecture
The component_templates architecture diverges from the standard plugin architecture we're using elsewhere. This makes it difficult to locate its CITs, its shared_imports, and to understand where to add new code. It also creates duplication for common services like breadcrumbs, documentation, and request.
The Index Management codebase contains tech debt in a number of areas that will impeded maintenance and the addition of future enhancements.
Refactor tests to use testbed and modern patterns
The index table tests should be updated to use
testbed
, and to follow patterns established elsewhere with the use ofhelpers
files and possibly breaking the suite up into multiple files, like we did with ILM.Convert index list components to TypeScript
Most of the index list components are JS. We need to convert these to TS.
Convert index table to EuiBasicTable or EuiInMemoryTable
The index table is implemented using low-level components like
EuiTable
,EuiTablePagination
,EuiTableRowCell
, and so on. We need to reimplement it using higher-level components likeEuiBasicTable
orEuiInMemoryTable
. This will also allow us to remove some of the fundamental table behavior tests for things like pagination.Migrate from Redux to local state
The index table has a Redux container. Migrating to the higher-level table components and local state using hooks will allow us to remove our dependency upon Redux. This is very similar to the migration @yuliacech performed for ILM.
Add support for deep-linking
Opening the detail panel for an index should update the URL, like we do for index templates and other UIs. This will allow people to share URLs that deep-link to individual indices.
Align component templates with the rest of the architecture
The
component_templates
architecture diverges from the standard plugin architecture we're using elsewhere. This makes it difficult to locate its CITs, itsshared_imports
, and to understand where to add new code. It also creates duplication for common services likebreadcrumbs
,documentation
, andrequest
.