Skip to content

Commit

Permalink
feat: adding dashboard toggle fullscreen button (apache#10840)
Browse files Browse the repository at this point in the history
  • Loading branch information
zhaoyongjie authored and auxten committed Nov 20, 2020
1 parent a7068c1 commit 926c37a
Show file tree
Hide file tree
Showing 4 changed files with 41 additions and 6 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -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', () => {
Expand Down Expand Up @@ -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', () => {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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',
);
});
});
Original file line number Diff line number Diff line change
Expand Up @@ -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>
);
}
Expand Down
10 changes: 8 additions & 2 deletions superset-frontend/src/dashboard/util/getDashboardUrl.js
Original file line number Diff line number Diff line change
Expand Up @@ -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}`;
}

0 comments on commit 926c37a

Please sign in to comment.