feat: adding dashboard toggle fullscreen button (#10840)

This commit is contained in:
Yongjie Zhao 2020-09-17 05:20:52 +08:00 committed by GitHub
parent a3519b42cb
commit af75bee582
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 41 additions and 6 deletions

View File

@ -66,9 +66,9 @@ describe('HeaderActionsDropdown', () => {
expect(wrapper.find(SaveModal)).not.toExist();
});
it('should render two MenuItems', () => {
it('should render four MenuItems', () => {
const wrapper = setup(overrideProps);
expect(wrapper.find(MenuItem)).toHaveLength(3);
expect(wrapper.find(MenuItem)).toHaveLength(4);
});
it('should render the RefreshIntervalModal', () => {
@ -100,9 +100,9 @@ describe('HeaderActionsDropdown', () => {
expect(wrapper.find(SaveModal)).toExist();
});
it('should render three MenuItems', () => {
it('should render four MenuItems', () => {
const wrapper = setup(overrideProps);
expect(wrapper.find(MenuItem)).toHaveLength(3);
expect(wrapper.find(MenuItem)).toHaveLength(4);
});
it('should render the RefreshIntervalModal', () => {

View File

@ -31,5 +31,15 @@ describe('getChartIdsFromLayout', () => {
expect(url).toBe(
'path?preselect_filters=%7B%2235%22%3A%7B%22key%22%3A%5B%22value%22%5D%7D%7D',
);
const urlWithHash = getDashboardUrl('path', filters, 'iamhashtag');
expect(urlWithHash).toBe(
'path?preselect_filters=%7B%2235%22%3A%7B%22key%22%3A%5B%22value%22%5D%7D%7D#iamhashtag',
);
const urlWithStandalone = getDashboardUrl('path', filters, '', true);
expect(urlWithStandalone).toBe(
'path?preselect_filters=%7B%2235%22%3A%7B%22key%22%3A%5B%22value%22%5D%7D%7D&standalone=true',
);
});
});

View File

@ -226,6 +226,25 @@ class HeaderActionsDropdown extends React.PureComponent {
{t('Download as image')}
</MenuItem>
)}
{!editMode && (
<MenuItem
onClick={() => {
const hasStandalone = window.location.search.includes(
'standalone=true',
);
const url = getDashboardUrl(
window.location.pathname,
getActiveFilters(),
window.location.hash,
!hasStandalone,
);
window.location.replace(url);
}}
>
{t('Toggle FullScreen')}
</MenuItem>
)}
</DropdownButton>
);
}

View File

@ -18,11 +18,17 @@
*/
import serializeActiveFilterValues from './serializeActiveFilterValues';
export default function getDashboardUrl(pathname, filters = {}, hash = '') {
export default function getDashboardUrl(
pathname,
filters = {},
hash = '',
standalone = false,
) {
// convert flattened { [id_column]: values } object
// to nested filter object
const obj = serializeActiveFilterValues(filters);
const preselectFilters = encodeURIComponent(JSON.stringify(obj));
const hashSection = hash ? `#${hash}` : '';
return `${pathname}?preselect_filters=${preselectFilters}${hashSection}`;
const standaloneParam = standalone ? '&standalone=true' : '';
return `${pathname}?preselect_filters=${preselectFilters}${standaloneParam}${hashSection}`;
}