[perf logging] Add extra logging for new/editMode dash (#9745)
* [perf logging] Add extra logging for new/editMode dash * fix review comments
This commit is contained in:
parent
9aabafe9fe
commit
83b4165e61
|
|
@ -0,0 +1,42 @@
|
|||
/**
|
||||
* Licensed to the Apache Software Foundation (ASF) under one
|
||||
* or more contributor license agreements. See the NOTICE file
|
||||
* distributed with this work for additional information
|
||||
* regarding copyright ownership. The ASF licenses this file
|
||||
* to you under the Apache License, Version 2.0 (the
|
||||
* "License"); you may not use this file except in compliance
|
||||
* with the License. You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing,
|
||||
* software distributed under the License is distributed on an
|
||||
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||
* KIND, either express or implied. See the License for the
|
||||
* specific language governing permissions and limitations
|
||||
* under the License.
|
||||
*/
|
||||
import isDashboardEmpty from '../../../../src/dashboard/util/isDashboardEmpty';
|
||||
import getEmptyLayout from '../../../../src/dashboard/util/getEmptyLayout';
|
||||
|
||||
describe('isDashboardEmpty', () => {
|
||||
const emptyLayout: object = getEmptyLayout();
|
||||
const testLayout: object = {
|
||||
...emptyLayout,
|
||||
'MARKDOWN-IhTGLhyiTd': {
|
||||
children: [],
|
||||
id: 'MARKDOWN-IhTGLhyiTd',
|
||||
meta: { code: 'test me', height: 50, width: 4 },
|
||||
parents: ['ROOT_ID', 'GRID_ID', 'ROW-uPjcKNYJQy'],
|
||||
type: 'MARKDOWN',
|
||||
},
|
||||
};
|
||||
|
||||
it('should return true for empty dashboard', () => {
|
||||
expect(isDashboardEmpty(emptyLayout)).toBe(true);
|
||||
});
|
||||
|
||||
it('should return false for non-empty dashboard', () => {
|
||||
expect(isDashboardEmpty(testLayout)).toBe(false);
|
||||
});
|
||||
});
|
||||
|
|
@ -39,6 +39,7 @@ import { areObjectsEqual } from '../../reduxUtils';
|
|||
|
||||
import '../stylesheets/index.less';
|
||||
import getLocationHash from '../util/getLocationHash';
|
||||
import isDashboardEmpty from '../util/isDashboardEmpty';
|
||||
|
||||
const propTypes = {
|
||||
actions: PropTypes.shape({
|
||||
|
|
@ -90,7 +91,12 @@ class Dashboard extends React.PureComponent {
|
|||
}
|
||||
|
||||
componentDidMount() {
|
||||
const eventData = {};
|
||||
const { dashboardState, layout } = this.props;
|
||||
const eventData = {
|
||||
is_edit_mode: dashboardState.editMode,
|
||||
mount_duration: Logger.getTimestamp(),
|
||||
is_empty: isDashboardEmpty(layout),
|
||||
};
|
||||
const directLinkComponentId = getLocationHash();
|
||||
if (directLinkComponentId) {
|
||||
eventData.target_id = directLinkComponentId;
|
||||
|
|
|
|||
|
|
@ -0,0 +1,28 @@
|
|||
/**
|
||||
* Licensed to the Apache Software Foundation (ASF) under one
|
||||
* or more contributor license agreements. See the NOTICE file
|
||||
* distributed with this work for additional information
|
||||
* regarding copyright ownership. The ASF licenses this file
|
||||
* to you under the Apache License, Version 2.0 (the
|
||||
* "License"); you may not use this file except in compliance
|
||||
* with the License. You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing,
|
||||
* software distributed under the License is distributed on an
|
||||
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||
* KIND, either express or implied. See the License for the
|
||||
* specific language governing permissions and limitations
|
||||
* under the License.
|
||||
*/
|
||||
import { CHART_TYPE, MARKDOWN_TYPE } from './componentTypes';
|
||||
|
||||
const USER_CONTENT_COMPONENT_TYPE: string[] = [CHART_TYPE, MARKDOWN_TYPE];
|
||||
export default function isDashboardEmpty(layout: any): boolean {
|
||||
// has at least one chart or markdown component
|
||||
return !Object.values(layout).some(
|
||||
({ type }: { type?: string }) =>
|
||||
type && USER_CONTENT_COMPONENT_TYPE.includes(type),
|
||||
);
|
||||
}
|
||||
Loading…
Reference in New Issue