-
Notifications
You must be signed in to change notification settings - Fork 409
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
updating stable branch of genova (#9748)
* Fix #9624 Point cloud shading options (#9666) * Fix #9666 Include pointCloudShading option to saved layer config (#9670) * #9606 Error with circle annotations + radius selection (#9607) (#9727) Co-authored-by: Diego Vargas <[email protected]> * Fix #9295 added better handling of format in csw service (#9712) (#9732) * #9702: Fix - Background selector in contexts won't retain thumbnail in view mode (#9720) (#9744) * #9567: handle functionality of zoom to record in table widgets (#9608) * #9567: handle functionality of zoom to record in table widgets * Fix: Correct failing test cases for zoom records issue in table widgets (#9567) This commit addresses the failing test cases related to the issue of zoom records in table widgets. * #9567: implement the new approach in zoom to records in table widgets + writing unit tests * #9567: handle adding flag into config file to show/hide zoom icon for tblWidget * #9567: reset flag enableZoomInTblWidget to be true for dashboard and map viewer * #9567: resolve comments' review: - put flag of zoomInTblWidget as a default prop - add translations - edit zoomToExtent enhancer to use internal zoom - remove selector "getFlagOfShowingTblWidgetZoom " and use plugin prop instead * #9683: add Details Panel for MS dashboard (#9689) * #9683: add Details Panel for MS dashboard - The tool have the same options (eg. show as modal, show at startup etc.) - The tool is defined in the same way of the corresponding one for maps. - Edit the layout to put add widget & show/hide connection buttons to the sidebar menu * #9683: resolve the FE test Update DashboardEditor.jsx * #9683: resolve review comments * description: - remove all dashboard selectors and pieces of code in generic components like sidebar plugin component that relevant to dashboard. - add missing test for detailsLoaded action - create new selectors, details uri selector and details settings se;ector that are used in many places in code - move AddWidgetDashboard, MapConnedctionDashboard plugins to direct plugins folder - Put global spinner in details plugin and remove it from sidebar plugin - edit in handleSave enhancer file to make update attributes of details just implemented for Map and Dashboard - Add custom style in details.less as the lib of react-dock doesn't allow to override left css property - remove unused added style from panels.less * #9683: remove unused comments in dashboard-test file * #9683: edit in details epics and selectors to fix FE test * #9683: Resolve review comments Description: - Reolve unused loading property from DashoardEditor file - Add tooltip for save dashboard - Remove custom style in BorderLayout and leave it with generic style * #9683: resolve review comments Description: - edit navbar.less files to fix going language selector behind body panel - remove unused z-index in dashboard.less # Conflicts: # web/client/epics/__tests__/config-test.js # web/client/epics/config.js * #9683: resolve test comment (#9730) - Adding export, import, delete dashboard - Reorder shown plugins in sidebar for dashboard * #9683: add Details Panel for MS dashboard [Editing the detail panel tooltip and title] (#9740) * #9683: resolve test comment Description: - edit the detail panel tooltip and shown title and make it generic one - Add translations for the new tooltip * Update web/client/translations/data.it-IT.json --------- Co-authored-by: Matteo V <[email protected]> * #9728 fix misalignement issue (#9731) (#9742) * Fix #9729 fixed formats in catalog used in dashboard (#9733) (#9747) --------- Co-authored-by: stefano bovio <[email protected]> Co-authored-by: Diego Vargas <[email protected]> Co-authored-by: Suren <[email protected]> Co-authored-by: mahmoud adel <[email protected]>
- Loading branch information
1 parent
e654fba
commit e257122
Showing
96 changed files
with
2,358 additions
and
555 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
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
140 changes: 140 additions & 0 deletions
140
web/client/components/TOC/fragments/settings/PointCloudShadingSettings.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,140 @@ | ||
/* | ||
* Copyright 2023, 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 PropTypes from 'prop-types'; | ||
import { FormGroup, ControlLabel, InputGroup, Checkbox } from 'react-bootstrap'; | ||
import DebouncedFormControl from '../../../misc/DebouncedFormControl'; | ||
import Message from '../../../I18N/Message'; | ||
import InfoPopover from '../../../widgets/widget/InfoPopover'; | ||
|
||
/** | ||
* PointCloudShadingSettings. This component shows the point cloud shading options available | ||
* @prop {object} layer the layer options | ||
* @prop {object} onChange callback on every on change event | ||
*/ | ||
function PointCloudShadingSettings({ | ||
layer, | ||
onChange | ||
}) { | ||
if (!(layer?.type === '3dtiles' && layer?.format === 'pnts')) { | ||
return null; | ||
} | ||
const { pointCloudShading = {} } = layer || {}; | ||
return ( | ||
<> | ||
<div style={{ fontWeight: 'bold', padding: 8 }}><Message msgId="layerProperties.3dTiles.pointCloudShading.title"/></div> | ||
<FormGroup className="form-group-flex"> | ||
<Checkbox | ||
checked={!!pointCloudShading.attenuation} | ||
onChange={(event) => onChange('pointCloudShading', { | ||
...pointCloudShading, | ||
attenuation: event?.target?.checked, | ||
maximumAttenuation: pointCloudShading?.maximumAttenuation ?? 4, | ||
eyeDomeLighting: pointCloudShading?.eyeDomeLighting ?? true | ||
})} | ||
> | ||
<Message msgId="layerProperties.3dTiles.pointCloudShading.attenuation" /> | ||
{' '}<InfoPopover text={<Message msgId="layerProperties.3dTiles.pointCloudShading.attenuationInfo" />} /> | ||
</Checkbox> | ||
</FormGroup> | ||
<FormGroup className="form-group-flex"> | ||
<ControlLabel> | ||
<Message msgId="layerProperties.3dTiles.pointCloudShading.maximumAttenuation" /> | ||
</ControlLabel> | ||
<InputGroup style={{ maxWidth: 90 }}> | ||
<DebouncedFormControl | ||
disabled={!pointCloudShading.attenuation} | ||
type="number" | ||
value={pointCloudShading.maximumAttenuation !== undefined | ||
? pointCloudShading.maximumAttenuation | ||
: 4} | ||
min={0} | ||
fallbackValue={4} | ||
onChange={(value) => { | ||
onChange('pointCloudShading', { | ||
...pointCloudShading, | ||
maximumAttenuation: value !== undefined ? parseFloat(value) : undefined | ||
}); | ||
}} | ||
/> | ||
<InputGroup.Addon> | ||
px | ||
</InputGroup.Addon> | ||
</InputGroup> | ||
</FormGroup> | ||
<FormGroup className="form-group-flex"> | ||
<Checkbox | ||
disabled={!pointCloudShading.attenuation} | ||
checked={!!pointCloudShading.eyeDomeLighting} | ||
onChange={(event) => onChange('pointCloudShading', { | ||
...pointCloudShading, | ||
eyeDomeLighting: event?.target?.checked | ||
})} | ||
> | ||
<Message msgId="layerProperties.3dTiles.pointCloudShading.eyeDomeLighting" /> | ||
{' '}<InfoPopover text={<Message msgId="layerProperties.3dTiles.pointCloudShading.eyeDomeLightingInfo" />} /> | ||
</Checkbox> | ||
</FormGroup> | ||
<FormGroup className="form-group-flex"> | ||
<ControlLabel> | ||
<Message msgId="layerProperties.3dTiles.pointCloudShading.eyeDomeLightingStrength" /> | ||
</ControlLabel> | ||
<InputGroup style={{ maxWidth: 90 }}> | ||
<DebouncedFormControl | ||
disabled={!pointCloudShading.eyeDomeLighting || !pointCloudShading.attenuation} | ||
type="number" | ||
value={pointCloudShading.eyeDomeLightingStrength !== undefined | ||
? pointCloudShading.eyeDomeLightingStrength | ||
: 1.0} | ||
min={0} | ||
fallbackValue={1.0} | ||
onChange={(value) => onChange('pointCloudShading', { | ||
...pointCloudShading, | ||
eyeDomeLightingStrength: value !== undefined ? parseFloat(value) : undefined | ||
})} | ||
/> | ||
</InputGroup> | ||
</FormGroup> | ||
<FormGroup className="form-group-flex"> | ||
<ControlLabel> | ||
<Message msgId="layerProperties.3dTiles.pointCloudShading.eyeDomeLightingRadius" /> | ||
</ControlLabel> | ||
<InputGroup style={{ maxWidth: 90 }}> | ||
<DebouncedFormControl | ||
disabled={!pointCloudShading.eyeDomeLighting || !pointCloudShading.attenuation} | ||
type="number" | ||
value={pointCloudShading.eyeDomeLightingRadius !== undefined | ||
? pointCloudShading.eyeDomeLightingRadius | ||
: 1.0} | ||
min={0} | ||
step={1} | ||
fallbackValue={1.0} | ||
onChange={(value) => onChange('pointCloudShading', { | ||
...pointCloudShading, | ||
eyeDomeLightingRadius: value !== undefined ? parseFloat(value) : undefined | ||
})} | ||
/> | ||
</InputGroup> | ||
</FormGroup> | ||
</> | ||
); | ||
} | ||
|
||
PointCloudShadingSettings.propTypes = { | ||
layer: PropTypes.object, | ||
onChange: PropTypes.func | ||
}; | ||
|
||
PointCloudShadingSettings.defaultProps = { | ||
layer: {}, | ||
onChange: () => {} | ||
}; | ||
|
||
export default PointCloudShadingSettings; |
88 changes: 88 additions & 0 deletions
88
web/client/components/TOC/fragments/settings/ThreeDTilesSettings.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,88 @@ | ||
/* | ||
* Copyright 2023, 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 PropTypes from 'prop-types'; | ||
import { FormGroup, ControlLabel, InputGroup } from 'react-bootstrap'; | ||
import DebouncedFormControl from '../../../misc/DebouncedFormControl'; | ||
import Message from '../../../I18N/Message'; | ||
import PointCloudShadingSettings from './PointCloudShadingSettings'; | ||
import Select from 'react-select'; | ||
|
||
/** | ||
* ThreeDTilesSettings. This component shows the 3d tiles options available | ||
* @prop {object} layer the layer options | ||
* @prop {object} onChange callback on every on change event | ||
*/ | ||
function ThreeDTilesSettings({ | ||
layer, | ||
onChange | ||
}) { | ||
if (layer?.type !== '3dtiles') { | ||
return null; | ||
} | ||
return ( | ||
<div style={{ margin: '0 -8px' }}> | ||
<FormGroup className="form-group-flex"> | ||
<ControlLabel><Message msgId="layerProperties.3dTiles.format"/></ControlLabel> | ||
<InputGroup> | ||
<Select | ||
value={layer.format === 'pnts' ? 'pnts' : '3dmodel'} | ||
fallbackValue={0} | ||
clearable={false} | ||
options={[ | ||
{ | ||
value: '3dmodel', | ||
label: <Message msgId="layerProperties.3dTiles.3dModel"/> | ||
}, | ||
{ | ||
value: 'pnts', | ||
label: <Message msgId="layerProperties.3dTiles.pointCloud"/> | ||
} | ||
]} | ||
onChange={(option)=> { | ||
onChange('format', option?.value); | ||
}} | ||
/> | ||
</InputGroup> | ||
</FormGroup> | ||
<FormGroup className="form-group-flex"> | ||
<ControlLabel><Message msgId="layerProperties.heightOffset"/></ControlLabel> | ||
<InputGroup style={{ maxWidth: 120 }}> | ||
<DebouncedFormControl | ||
type="number" | ||
name={"heightOffset"} | ||
value={layer.heightOffset || 0} | ||
fallbackValue={0} | ||
onChange={(val)=> { | ||
onChange('heightOffset', val !== undefined ? parseFloat(val) : undefined); | ||
}} | ||
/> | ||
<InputGroup.Addon>m</InputGroup.Addon> | ||
</InputGroup> | ||
</FormGroup> | ||
<PointCloudShadingSettings | ||
layer={layer} | ||
onChange={onChange} | ||
/> | ||
</div> | ||
); | ||
} | ||
|
||
ThreeDTilesSettings.propTypes = { | ||
layer: PropTypes.object, | ||
onChange: PropTypes.func | ||
}; | ||
|
||
ThreeDTilesSettings.defaultProps = { | ||
layer: {}, | ||
onChange: () => {} | ||
}; | ||
|
||
export default ThreeDTilesSettings; |
Oops, something went wrong.