Commit 8d6f1313 authored by Miguel Rincon's avatar Miguel Rincon

Define dashboard dropdowns layout in flex

Ensure the metric dashboard filter bar dropdowns and buttons are
consistent in their width, and scale well on different screen sizes

- Removed column layout and used flex instead
- Fixed an issue with the dropdown tooltip
- Tested on mobile and tablet as well as desktop
parent 7b5ad03d
...@@ -8,7 +8,6 @@ import { ...@@ -8,7 +8,6 @@ import {
GlDropdownItem, GlDropdownItem,
GlDropdownHeader, GlDropdownHeader,
GlDropdownDivider, GlDropdownDivider,
GlFormGroup,
GlModal, GlModal,
GlLoadingIcon, GlLoadingIcon,
GlSearchBoxByType, GlSearchBoxByType,
...@@ -46,7 +45,6 @@ export default { ...@@ -46,7 +45,6 @@ export default {
GlDropdownHeader, GlDropdownHeader,
GlDropdownDivider, GlDropdownDivider,
GlSearchBoxByType, GlSearchBoxByType,
GlFormGroup,
GlModal, GlModal,
DateTimePicker, DateTimePicker,
...@@ -378,45 +376,34 @@ export default { ...@@ -378,45 +376,34 @@ export default {
<div <div
v-if="showHeader" v-if="showHeader"
ref="prometheusGraphsHeader" ref="prometheusGraphsHeader"
class="prometheus-graphs-header gl-p-3 pb-0 border-bottom bg-gray-light" class="prometheus-graphs-header d-sm-flex flex-sm-wrap pt-2 pr-1 pb-0 pl-2 border-bottom bg-gray-light"
>
<div class="row">
<gl-form-group
:label="__('Dashboard')"
label-size="sm"
label-for="monitor-dashboards-dropdown"
class="col-sm-12 col-md-6 col-lg-2"
> >
<div class="mb-2 pr-2 d-flex d-sm-block">
<dashboards-dropdown <dashboards-dropdown
id="monitor-dashboards-dropdown" id="monitor-dashboards-dropdown"
data-qa-selector="dashboards_filter_dropdown" data-qa-selector="dashboards_filter_dropdown"
class="mb-0 d-flex" class="flex-grow-1"
toggle-class="dropdown-menu-toggle" toggle-class="dropdown-menu-toggle"
:default-branch="defaultBranch" :default-branch="defaultBranch"
:selected-dashboard="selectedDashboard" :selected-dashboard="selectedDashboard"
@selectDashboard="selectDashboard($event)" @selectDashboard="selectDashboard($event)"
/> />
</gl-form-group> </div>
<gl-form-group <div class="mb-2 pr-2 d-flex d-sm-block">
:label="s__('Metrics|Environment')"
label-size="sm"
label-for="monitor-environments-dropdown"
class="col-sm-6 col-md-6 col-lg-2"
>
<gl-dropdown <gl-dropdown
id="monitor-environments-dropdown" id="monitor-environments-dropdown"
ref="monitorEnvironmentsDropdown" ref="monitorEnvironmentsDropdown"
class="flex-grow-1"
data-qa-selector="environments_dropdown" data-qa-selector="environments_dropdown"
class="mb-0 d-flex"
toggle-class="dropdown-menu-toggle" toggle-class="dropdown-menu-toggle"
menu-class="monitor-environment-dropdown-menu" menu-class="monitor-environment-dropdown-menu"
:text="currentEnvironmentName" :text="currentEnvironmentName"
> >
<div class="d-flex flex-column overflow-hidden"> <div class="d-flex flex-column overflow-hidden">
<gl-dropdown-header class="monitor-environment-dropdown-header text-center">{{ <gl-dropdown-header class="monitor-environment-dropdown-header text-center">
__('Environment') {{ __('Environment') }}
}}</gl-dropdown-header> </gl-dropdown-header>
<gl-dropdown-divider /> <gl-dropdown-divider />
<gl-search-box-by-type <gl-search-box-by-type
ref="monitorEnvironmentsDropdownSearch" ref="monitorEnvironmentsDropdownSearch"
...@@ -447,61 +434,57 @@ export default { ...@@ -447,61 +434,57 @@ export default {
</div> </div>
</div> </div>
</gl-dropdown> </gl-dropdown>
</gl-form-group> </div>
<gl-form-group <div class="mb-2 pr-2 d-flex d-sm-block">
:label="s__('Metrics|Show last')"
label-size="sm"
label-for="monitor-time-window-dropdown"
class="col-sm-auto col-md-auto col-lg-auto"
data-qa-selector="show_last_dropdown"
>
<date-time-picker <date-time-picker
ref="dateTimePicker" ref="dateTimePicker"
class="flex-grow-1 show-last-dropdown"
data-qa-selector="show_last_dropdown"
:value="selectedTimeRange" :value="selectedTimeRange"
:options="timeRanges" :options="timeRanges"
@input="onDateTimePickerInput" @input="onDateTimePickerInput"
@invalid="onDateTimePickerInvalid" @invalid="onDateTimePickerInvalid"
/> />
</gl-form-group> </div>
<gl-form-group class="col-sm-2 col-md-2 col-lg-1 refresh-dashboard-button"> <div class="mb-2 pr-2 d-flex d-sm-block">
<gl-deprecated-button <gl-deprecated-button
ref="refreshDashboardBtn" ref="refreshDashboardBtn"
v-gl-tooltip v-gl-tooltip
class="flex-grow-1"
variant="default" variant="default"
:title="s__('Metrics|Refresh dashboard')" :title="s__('Metrics|Refresh dashboard')"
@click="refreshDashboard" @click="refreshDashboard"
> >
<icon name="retry" /> <icon name="retry" />
</gl-deprecated-button> </gl-deprecated-button>
</gl-form-group> </div>
<gl-form-group <div class="flex-grow-1"></div>
v-if="hasHeaderButtons"
label-for="prometheus-graphs-dropdown-buttons" <div class="d-sm-flex">
class="dropdown-buttons col-md d-md-flex col-lg d-lg-flex align-items-end" <div v-if="showRearrangePanelsBtn" class="mb-2 mr-2 d-flex">
>
<div id="prometheus-graphs-dropdown-buttons">
<gl-deprecated-button <gl-deprecated-button
v-if="showRearrangePanelsBtn"
:pressed="isRearrangingPanels" :pressed="isRearrangingPanels"
variant="default" variant="default"
class="mr-2 mt-1 js-rearrange-button" class="flex-grow-1 js-rearrange-button"
@click="toggleRearrangingPanels" @click="toggleRearrangingPanels"
>{{ __('Arrange charts') }}</gl-deprecated-button
> >
{{ __('Arrange charts') }}
</gl-deprecated-button>
</div>
<div v-if="addingMetricsAvailable" class="mb-2 mr-2 d-flex d-sm-block">
<gl-deprecated-button <gl-deprecated-button
v-if="addingMetricsAvailable"
ref="addMetricBtn" ref="addMetricBtn"
v-gl-modal="$options.addMetric.modalId" v-gl-modal="$options.addMetric.modalId"
variant="outline-success" variant="outline-success"
data-qa-selector="add_metric_button" data-qa-selector="add_metric_button"
class="mr-2 mt-1" class="flex-grow-1"
>{{ $options.addMetric.title }}</gl-deprecated-button
> >
{{ $options.addMetric.title }}
</gl-deprecated-button>
<gl-modal <gl-modal
v-if="addingMetricsAvailable"
ref="addMetricModal" ref="addMetricModal"
:modal-id="$options.addMetric.modalId" :modal-id="$options.addMetric.modalId"
:title="$options.addMetric.title" :title="$options.addMetric.title"
...@@ -514,41 +497,43 @@ export default { ...@@ -514,41 +497,43 @@ export default {
/> />
</form> </form>
<div slot="modal-footer"> <div slot="modal-footer">
<gl-deprecated-button @click="hideAddMetricModal">{{ <gl-deprecated-button @click="hideAddMetricModal">
__('Cancel') {{ __('Cancel') }}
}}</gl-deprecated-button> </gl-deprecated-button>
<gl-deprecated-button <gl-deprecated-button
ref="submitCustomMetricsFormBtn" ref="submitCustomMetricsFormBtn"
v-track-event="getAddMetricTrackingOptions()" v-track-event="getAddMetricTrackingOptions()"
:disabled="!formIsValid" :disabled="!formIsValid"
variant="success" variant="success"
@click="submitCustomMetricsForm" @click="submitCustomMetricsForm"
>{{ __('Save changes') }}</gl-deprecated-button
> >
{{ __('Save changes') }}
</gl-deprecated-button>
</div> </div>
</gl-modal> </gl-modal>
</div>
<div v-if="selectedDashboard.can_edit" class="mb-2 mr-2 d-flex d-sm-block">
<gl-deprecated-button <gl-deprecated-button
v-if="selectedDashboard.can_edit" class="flex-grow-1 js-edit-link"
class="mt-1 js-edit-link"
:href="selectedDashboard.project_blob_path" :href="selectedDashboard.project_blob_path"
data-qa-selector="edit_dashboard_button" data-qa-selector="edit_dashboard_button"
>{{ __('Edit dashboard') }}</gl-deprecated-button
> >
{{ __('Edit dashboard') }}
</gl-deprecated-button>
</div>
<div v-if="externalDashboardUrl.length" class="mb-2 mr-2 d-flex d-sm-block">
<gl-deprecated-button <gl-deprecated-button
v-if="externalDashboardUrl.length" class="flex-grow-1 js-external-dashboard-link"
class="mt-1 js-external-dashboard-link"
variant="primary" variant="primary"
:href="externalDashboardUrl" :href="externalDashboardUrl"
target="_blank" target="_blank"
rel="noopener noreferrer" rel="noopener noreferrer"
> >
{{ __('View full dashboard') }} {{ __('View full dashboard') }} <icon name="external-link" />
<icon name="external-link" />
</gl-deprecated-button> </gl-deprecated-button>
</div> </div>
</gl-form-group>
</div> </div>
</div> </div>
......
...@@ -158,7 +158,7 @@ export default { ...@@ -158,7 +158,7 @@ export default {
<template> <template>
<tooltip-on-truncate <tooltip-on-truncate
:title="timeWindowText" :title="timeWindowText"
:truncate-target="elem => elem.querySelector('.date-time-picker-toggle')" :truncate-target="elem => elem.querySelector('.gl-dropdown-toggle-text')"
placement="top" placement="top"
class="d-inline-block" class="d-inline-block"
> >
......
...@@ -64,6 +64,12 @@ ...@@ -64,6 +64,12 @@
padding: $gl-padding-8 $gl-padding-12; padding: $gl-padding-8 $gl-padding-12;
} }
} }
.show-last-dropdown {
// same as in .dropdown-menu-toggle
// see app/assets/stylesheets/framework/dropdowns.scss
width: 160px;
}
} }
.prometheus-panel { .prometheus-panel {
......
---
title: Define dashboard dropdowns layout in flex to improve support smaller screens
merge_request: 29477
author:
type: changed
...@@ -12964,9 +12964,6 @@ msgid_plural "Metrics|Edit metrics" ...@@ -12964,9 +12964,6 @@ msgid_plural "Metrics|Edit metrics"
msgstr[0] "" msgstr[0] ""
msgstr[1] "" msgstr[1] ""
msgid "Metrics|Environment"
msgstr ""
msgid "Metrics|For grouping similar metrics" msgid "Metrics|For grouping similar metrics"
msgstr "" msgstr ""
...@@ -13000,9 +12997,6 @@ msgstr "" ...@@ -13000,9 +12997,6 @@ msgstr ""
msgid "Metrics|Refresh dashboard" msgid "Metrics|Refresh dashboard"
msgstr "" msgstr ""
msgid "Metrics|Show last"
msgstr ""
msgid "Metrics|There was an error creating the dashboard." msgid "Metrics|There was an error creating the dashboard."
msgstr "" msgstr ""
......
...@@ -6,35 +6,26 @@ exports[`Dashboard template matches the default snapshot 1`] = ` ...@@ -6,35 +6,26 @@ exports[`Dashboard template matches the default snapshot 1`] = `
data-qa-selector="prometheus_graphs" data-qa-selector="prometheus_graphs"
> >
<div <div
class="prometheus-graphs-header gl-p-3 pb-0 border-bottom bg-gray-light" class="prometheus-graphs-header d-sm-flex flex-sm-wrap pt-2 pr-1 pb-0 pl-2 border-bottom bg-gray-light"
> >
<div <div
class="row" class="mb-2 pr-2 d-flex d-sm-block"
>
<gl-form-group-stub
class="col-sm-12 col-md-6 col-lg-2"
label="Dashboard"
label-for="monitor-dashboards-dropdown"
label-size="sm"
> >
<dashboards-dropdown-stub <dashboards-dropdown-stub
class="mb-0 d-flex" class="flex-grow-1"
data-qa-selector="dashboards_filter_dropdown" data-qa-selector="dashboards_filter_dropdown"
defaultbranch="master" defaultbranch="master"
id="monitor-dashboards-dropdown" id="monitor-dashboards-dropdown"
selecteddashboard="[object Object]" selecteddashboard="[object Object]"
toggle-class="dropdown-menu-toggle" toggle-class="dropdown-menu-toggle"
/> />
</gl-form-group-stub> </div>
<gl-form-group-stub <div
class="col-sm-6 col-md-6 col-lg-2" class="mb-2 pr-2 d-flex d-sm-block"
label="Environment"
label-for="monitor-environments-dropdown"
label-size="sm"
> >
<gl-dropdown-stub <gl-dropdown-stub
class="mb-0 d-flex" class="flex-grow-1"
data-qa-selector="environments_dropdown" data-qa-selector="environments_dropdown"
id="monitor-environments-dropdown" id="monitor-environments-dropdown"
menu-class="monitor-environment-dropdown-menu" menu-class="monitor-environment-dropdown-menu"
...@@ -47,7 +38,9 @@ exports[`Dashboard template matches the default snapshot 1`] = ` ...@@ -47,7 +38,9 @@ exports[`Dashboard template matches the default snapshot 1`] = `
<gl-dropdown-header-stub <gl-dropdown-header-stub
class="monitor-environment-dropdown-header text-center" class="monitor-environment-dropdown-header text-center"
> >
Environment Environment
</gl-dropdown-header-stub> </gl-dropdown-header-stub>
<gl-dropdown-divider-stub /> <gl-dropdown-divider-stub />
...@@ -71,26 +64,25 @@ exports[`Dashboard template matches the default snapshot 1`] = ` ...@@ -71,26 +64,25 @@ exports[`Dashboard template matches the default snapshot 1`] = `
</div> </div>
</div> </div>
</gl-dropdown-stub> </gl-dropdown-stub>
</gl-form-group-stub> </div>
<gl-form-group-stub <div
class="col-sm-auto col-md-auto col-lg-auto" class="mb-2 pr-2 d-flex d-sm-block"
data-qa-selector="show_last_dropdown"
label="Show last"
label-for="monitor-time-window-dropdown"
label-size="sm"
> >
<date-time-picker-stub <date-time-picker-stub
class="flex-grow-1 show-last-dropdown"
customenabled="true" customenabled="true"
data-qa-selector="show_last_dropdown"
options="[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]" options="[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]"
value="[object Object]" value="[object Object]"
/> />
</gl-form-group-stub> </div>
<gl-form-group-stub <div
class="col-sm-2 col-md-2 col-lg-1 refresh-dashboard-button" class="mb-2 pr-2 d-flex d-sm-block"
> >
<gl-deprecated-button-stub <gl-deprecated-button-stub
class="flex-grow-1"
size="md" size="md"
title="Refresh dashboard" title="Refresh dashboard"
variant="default" variant="default"
...@@ -100,7 +92,20 @@ exports[`Dashboard template matches the default snapshot 1`] = ` ...@@ -100,7 +92,20 @@ exports[`Dashboard template matches the default snapshot 1`] = `
size="16" size="16"
/> />
</gl-deprecated-button-stub> </gl-deprecated-button-stub>
</gl-form-group-stub> </div>
<div
class="flex-grow-1"
/>
<div
class="d-sm-flex"
>
<!---->
<!---->
<!---->
<!----> <!---->
</div> </div>
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment