forked from geosolutions-it/MapStore2
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
geosolutions-it#7332: Identify for annotations is showing all interna…
…l properties rather than title/description (geosolutions-it#7443) * refactor of identify property viewer * remove properties from vector map info * remove hideToolbar prop
- Loading branch information
1 parent
aec1ead
commit 3ab6b1a
Showing
12 changed files
with
247 additions
and
98 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
64 changes: 64 additions & 0 deletions
64
web/client/components/data/identify/viewers/row/RowViewer.jsx
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,64 @@ | ||
/* | ||
* Copyright 2021, GeoSolutions Sas. | ||
* All rights reserved. | ||
* | ||
* This source code is licensed under the BSD-style license found in the | ||
* LICENSE file in the root directory of this source tree. | ||
*/ | ||
|
||
import React from 'react'; | ||
import { isString } from 'lodash'; | ||
import PropertiesViewer from './PropertiesViewer'; | ||
import { getRowViewer } from '../../../../../utils/MapInfoUtils'; | ||
import { ANNOTATIONS } from '../../../../../utils/AnnotationsUtils'; | ||
import PropTypes from 'prop-types'; | ||
|
||
const defaultRowViewerOptions = { | ||
// we need some default options for annotations | ||
// to ensure that only title and description are displayed | ||
// when the custom row viewer is not mounted | ||
[ANNOTATIONS]: { | ||
include: ['title', 'description'], | ||
labelIds: { | ||
title: 'annotations.field.title', | ||
description: 'annotations.field.description' | ||
} | ||
} | ||
}; | ||
|
||
function RowViewer({ | ||
layer, | ||
component, | ||
feature | ||
}) { | ||
// the name of the registered viewer could be associate by a string in the rowViewer or id | ||
const layerRowViewerProperty = layer?.rowViewer || layer?.layerId; | ||
const defaultOptions = isString(layerRowViewerProperty) ? defaultRowViewerOptions[layerRowViewerProperty] : {}; | ||
const excludeProperties = defaultOptions?.exclude ? defaultOptions.exclude : ['bbox']; | ||
const includeProperties = defaultOptions?.include; | ||
const labelIds = defaultOptions?.labelIds; | ||
const layerRowViewer = isString(layerRowViewerProperty) ? getRowViewer(layerRowViewerProperty) : layerRowViewerProperty; | ||
const Row = layerRowViewer || component || PropertiesViewer; | ||
return ( | ||
<Row | ||
{...feature.properties} | ||
feature={feature} | ||
labelIds={labelIds} | ||
exclude={excludeProperties} | ||
include={includeProperties} | ||
/> | ||
); | ||
} | ||
|
||
RowViewer.propTypes = { | ||
layer: PropTypes.string, | ||
component: PropTypes.array, | ||
feature: PropTypes.array | ||
}; | ||
|
||
RowViewer.defaultProps = { | ||
layer: {}, | ||
feature: {} | ||
}; | ||
|
||
export default RowViewer; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
72 changes: 72 additions & 0 deletions
72
web/client/components/data/identify/viewers/row/__tests__/RowViewer-test.jsx
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,72 @@ | ||
/** | ||
* Copyright 2015, GeoSolutions Sas. | ||
* All rights reserved. | ||
* | ||
* This source code is licensed under the BSD-style license found in the | ||
* LICENSE file in the root directory of this source tree. | ||
*/ | ||
|
||
import expect from 'expect'; | ||
import React from 'react'; | ||
import ReactDOM from 'react-dom'; | ||
import RowViewer from '../RowViewer'; | ||
import { ANNOTATIONS } from '../../../../../../utils/AnnotationsUtils'; | ||
import { registerRowViewer } from '../../../../../../utils/MapInfoUtils'; | ||
|
||
describe('RowViewer', () => { | ||
beforeEach((done) => { | ||
document.body.innerHTML = '<div id="container"></div>'; | ||
setTimeout(done); | ||
}); | ||
|
||
afterEach((done) => { | ||
ReactDOM.unmountComponentAtNode(document.getElementById("container")); | ||
document.body.innerHTML = ''; | ||
setTimeout(done); | ||
}); | ||
it('should render with default', () => { | ||
ReactDOM.render(<RowViewer />, document.getElementById("container")); | ||
const viewerNode = document.querySelector('.ms-properties-viewer'); | ||
expect(viewerNode).toBeTruthy(); | ||
}); | ||
it('should apply default option for annotation layer', () => { | ||
|
||
const TestComponent = ({ | ||
include | ||
}) => { | ||
return <div id="annotation-include-option">{include.join()}</div>; | ||
}; | ||
|
||
ReactDOM.render( | ||
<RowViewer | ||
layer={{ layerId: ANNOTATIONS }} | ||
component={TestComponent} | ||
feature={{ properties: {}, id: 'feature' }} | ||
/>, | ||
document.getElementById("container")); | ||
|
||
const includeOptionNode = document.querySelector('#annotation-include-option'); | ||
expect(includeOptionNode.innerHTML).toBe('title,description'); | ||
}); | ||
|
||
it('should render the registered row viewer', () => { | ||
|
||
const RegisteredComponent = () => { | ||
return <div id="registered-viewer"></div>; | ||
}; | ||
|
||
registerRowViewer(ANNOTATIONS, RegisteredComponent); | ||
|
||
ReactDOM.render( | ||
<RowViewer | ||
layer={{ layerId: ANNOTATIONS }} | ||
feature={{ properties: {}, id: 'feature' }} | ||
/>, | ||
document.getElementById("container")); | ||
|
||
const registeredViewerNode = document.querySelector('#registered-viewer'); | ||
expect(registeredViewerNode).toBeTruthy(); | ||
|
||
registerRowViewer(ANNOTATIONS, undefined); | ||
}); | ||
}); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.