Geo Replicables: Improve Bulk Actions Experience in UI
Why are we doing this work
We are working to allow more robust functionality in the bulk actions in Geo and in particular allow customers to fire bulk actions on failing data: Geo: Provide a way to resync and reverify only ... (#263435 - closed)
Once the API is updated to support this in Geo Replicables API: Add query `arguments` to t... (#520345 - closed) we should add the ability to fire filtered actions in the UI. For a first iteration we should add the requested Failed Only Bulk Action from Geo: Provide a way to resync and reverify only ... (#263435 - closed)
This functionality should be built with the intention that we may add more flexibility to this action in the future (for instance the ability to curate a bulk action based on the users active filter or selected replicables)
UX Notes
We should also be sure to update the experience a bit here to ensure users understand what these actions are truly doing behind the scenes.
- Tooltip/popover on the action with link to docs
- Warning modal with information and link to docs
- UX feedback: #520355 (comment 2393749411)
- Be sure we capture that the actions are performed async #523380 (comment 2388285277)
Screenshots
Before | After | |
---|---|---|
Actions UI | ![]() |
![]() |
Popover | N/A | ![]() |
Resync All Modal | ![]() |
![]() |
Resync Failed Modal | N/A | ![]() |
Relevant links
- GraphQL MR: #520345 (closed)
- Vue Component:
geo_replicable_filter_bar.vue
- Docs: https://docs.gitlab.com/administration/geo/replication/troubleshooting/synchronization_verification/#resync-and-reverify-multiple-components
Implementation plan
- Update buttons in
geo_replicable_filter_bar.vue
toGlDisclosureDropdown
and include additional bulk actions (ie only failed) to the dropdown.
<div v-if="showBulkActions" class="gl-ml-auto">
<gl-button-group class="gl-mr-2">
<gl-button @click="triggerModal($options.actionTypes.RESYNC_ALL)>{{ $options.i18n.resyncAll }}</gl-button>
<gl-disclosure-dropdown :items="addlResyncBulkActions" />
</gl-button-group>
<gl-button-group>
<gl-button @click="triggerModal($options.actionTypes.REVERIFY_ALL)">{{ $options.i18n.reverifyAll }}</gl-button>
<gl-disclosure-dropdown :items="addlReverifyBulkActions" />
</gl-button-group>
</div>
- Add popover to each primary button in the button group of step 1 with helpful info
<gl-popover
:target="() => $refs.resyncAllBulkAction.$el"
placement="top"
triggers="hover focus"
:title="$options.i18n.resyncAllPopoverTitle"
>
<p>
{{ $options.i18n.resyncAllPopoverBody }}
</p>
<gl-link :href="$options.RESYNC_ALL_HELP_LINK" target="_blank">{{
$options.i18n.learnMore
}}</gl-link>
</gl-popover>
-
Update text in modal to match screenshots and include any relevant information about the new bulk actions
-
Add support for query parameters to the GraphQL Mutation in the Vuex Store. Query parameters added in #520345 (closed) to match the new added actions in step 1