Esri / solutions-components

A collection of UI components for constructing webapps.
Apache License 2.0
12 stars 6 forks source link

Support Floor filtering widget capability to Reporter #581

Open skrishn opened 7 months ago

skrishn commented 7 months ago

https://devtopia.esri.com/WebGIS/solutions-web-development/issues/22 "Met with a customer from UCSF today and they explained how for Campus/Indoors workflows understanding which floor the issues is being reported for is critical for their workflows.

In the workflow the user would have a floor aware web map and they could use the floorfilter widget to select a floor and filter all the floor aware layers in the map.

In the solution the Request/Problem Reports layer would also be floor aware and would honor the filter set by the widget (Reporter and Manager).

When a user submitted a new report it would set the appropriate floor information based on the current floor setting on the report (Reporter).

https://pro.arcgis.com/en/pro-app/latest/help/data/indoors/share-floor-aware-maps.htm"

sumitzarkar commented 6 months ago

@skrishn

Need more deatils on this to understand where the floorfilter widget will be shown and how should reporter component react to the applied filters

skrishn commented 6 months ago

@sumitzarkar The floor filter widget will be a configurable option and the widget will be added to the map. If the webmap has a floor-aware layer, users choose the floor from the floor-aware field when submitting a report. Please see the Manager app where it has been implemented. https://arcgis4localgov2.maps.arcgis.com/apps/instant/manager/index.html?appid=b89b73be07e34146932e0dabaa49f6c3

sumitzarkar commented 6 months ago

@skrishn

The floor filter widget will be a configurable option and the widget will be added to the map.

If the webmap has a floor-aware layer, users choose the floor from the floor-aware field when submitting a report.

  • For this we don't see any changes required as editor widget will show the field selector to the user

The only thing we need to implement in Reporter is to update the features list when floor is changed using floor filter widget. This can be done once the widget is added in the Instant app.

chris-fox commented 6 months ago

@sumitzarkar

If the webmap has a floor-aware layer, users choose the floor from the floor-aware field when submitting a report.

  • For this we don't see any changes required as editor widget will show the field selector to the user

This is not completely accurate. We don't want the user to have to specify the floor within the edit widget when submitting the report. We would like the new feature to automatically be submitted with the selected floor id for the new feature. This is not something that happens automatically today and doesn't happen in the MapViewer. However, other products like Field Maps have this behavior.

In a floor aware map any floor aware layers will have a definition on what field stores the floor level. This is used for filtering by the floor widget. I would expect that when a user submits a new report for a floor aware layer that we automatically write the selected floor level id from the floor widget to this field in the new report:

image

sumitzarkar commented 6 months ago

@chris-fox

We analyzed this and we see 2 challenges in this:

  1. As per the current implementation the map and the widgets rendered on the map are controlled and initiated by the Instant app. We may need to define a way to get the information of the selected floor from floor-filter-widget to the reporter component. @jmhauck - We can create a prop for the Reporter component to get the selected floor value. (please suggest if you see any other better approach)
  2. We are using the Editor Widget from JS API, we don't see any direct option to control the values of the fields. @jmhauck Any ideas on how we can achieve this, or it would be helpful if we get the JS API team's input on this.
jmhauck commented 6 months ago

@sumitzarkar yes...a prop or if they could emit events when the Site, Level, or Facility values change on the floor filter widget.

After digging around a bit I was hoping we could do something with a FieldElement kind of like those auto calculated values in that sample. But haven't really been able to connect the dots yet. I reached out to Editor folks to see if they have some guidance.

jmhauck commented 6 months ago

Editor team has logged a request that's a part of a larger request for arcade expressions to make the floor info available to expressions. If this goes through then seems like we'll get it for free from the Editor.

sumitzarkar commented 5 months ago

@skrishn

As discussed on the call this ticket to be moved to next release

jmhauck commented 5 months ago

@sumitzarkar @skrishn

Not sure if this will make it into the Editor directly after all.

Hey John, I synced up with the Editor team and the team decided to wait for the arcade support of the view.floors. Adding another check in Editor for new workflows is something the team is not wanting to add. We have already had to add extra logic to handle utility networks, and we are trying to minimize how much extra logic is in Editor depending on the data. Sorry we couldn't get you a native solution for this

So I started looking at the FieldElement idea again and have a proof of concept.

sumitzarkar commented 2 months ago

@skrishn

Could you please share the sample webmap in which multiple layers are floor aware and have different floorField.

Also, we need to check if the floor field can be shown in the edit form. This is because to support this fnctionality we are planning to auto pupolate the fllorFeild in the edit form, and we need to confirm if floor field is availble in the form and we override it with the current selected floor how it it will behave.

skrishn commented 2 months ago

@sumitzarkar Use this webmap https://solutions.mapsdevext.arcgis.com/apps/mapviewer/index.html?webmap=89c348ba385948ee905f88b95d7517e2. Let me know if you need anything else.

chris-fox commented 2 months ago

@sumitzarkar, I was looking into the Web Map above and it looks like the AEDs layer supports adds. This would be the only valid reporting layer, the other layers are the standard building layers that are not typically editable. The use case for this is those would be operational layers and we are only adding new AEDs that are floor aware.

sumitzarkar commented 2 months ago

@chris-fox

We are looking for a webmap in which multiple layers support add, are floor aware, and have different fields for floor. This is because we want to check if multiple layers allow the creation of features and if all the layers have different fields then the value should be populated in the respective field when we create features for various layers in the same session.

skrishn commented 2 months ago

@sumitzarkar the webmap has multiple layers now, https://solutions.mapsdevext.arcgis.com/apps/mapviewer/index.html?webmap=89c348ba385948ee905f88b95d7517e2. Let me know if you need anything else.

chris-fox commented 1 month ago

@sumitzarkar, the web map should be updated to point to the new layer

sumitzarkar commented 2 weeks ago

@skrishn

Solution

Items Is required Status Comments
Required NLS changes? No
Required Backward compatibility No
Required 508 No
Need Sanitize? No

Impact Analysis Report

Impacted Areas Comments
Have Configuration changes? No
Have Runtime changes? Yes
Impact on RTL No
Impact on Runtime when layer is floor aware the and floor level is selected then
Impact on layer/feature list - On rendering, display the selected floor's features count in the layer list
- Only show features for the selected floor level in the feature list
- Update the layer/feature when switching the floor level on map
Impact on feature creation - After plotting the location, feature form should include selected floor level
- When switching the floor level, the form should get update accordingly
- On form submission, the selected floor level should be added in in the feaure attribute
skrishn commented 1 week ago

@sumitzarkar As I mentioned in the chat I don't see the layer list filtering as I choose floor in this app. Do you have working app in devext? Am I missing something or this is a bug? https://solutions.mapsdevext.arcgis.com/apps/instant/reporter/index.html?appid=58dcdb70fab144738a0209f00f03c2d7

sumitzarkar commented 1 week ago

@skrishn

We analysed this and here are our findings:

When we are using the above webmap in our local configuration it is working, this is because we are setting floor level onload and updating the floorLevel whenever it is changed.

        floorFilter.when(() => {
          demo.floorLevel = floorFilter.level
          reactiveUtils.watch(() => floorFilter.level,
            (level) => {
              demo.floorLevel = floorFilter.level;
            });
        });

image

@jmhauck - could you please check and confirm if this is set or not in the instant app

jmhauck commented 1 week ago

I added that today...should be in tomorrows build