POST
|
Thank you Mark. I'll compare your code to mine tonight. It looks similar but I was following a different sample which I don't think created the portal and portal item.
... View more
06-12-2017
01:22 PM
|
0
|
0
|
512
|
POST
|
We have recently discovered that when the Edit Geometry checkbox is checked in the Smart Editor widget, as soon as you try to move a point geometry, IE throws an error: Unable to set property 'numPoints' of undefined or null reference This seems to be happening only in IE. Editing works as expected in Chrome. Has anyone else seen this problem or know how to resolve? We are using version 2.4 of the developer version of Web AppBuilder. Thanks!
... View more
06-12-2017
10:18 AM
|
0
|
0
|
495
|
POST
|
Hi Doug, Thanks for the response. I understand iOS apps have to register custom url schemes but the arcgis-collector:// scheme is already handled by Collector correct? This is the url scheme we are trying to open which you indicated is not currently handled when invoked from within Collector itself. We are using Collector to allow building maintenance staff to collect the location of various building equipment within the buildings on our campus. Within our equipment management system, every piece of equipment is uniquely identified by an equipment number. We have our backend RDMS containing the geodatabase setup to synchronize attributes from that system to feature classes within the geodatabase so that when a new location is mapped and the equipment number added as one of the attributes, a trigger on the feature class table will pull in all of the equipment attributes from the equipment management system. These are also synchronized back to the geodatabase when updated within the equipment management system. Additionally, mechanics can update attributes from within Collector while they are standing in front of the equipment rather than writing information down and taking it back to the office. This allows maintenance mechanics to document the exact location of equipment (we might have 5 fire extinguishers within a hallway that is 600 ft. long - how do you know which is which if all you know is the room number) using a georeferenced floorplan for context. Additionally, we can use spatial relationships between the equipment and room polygons to push updates back to the equipment management system when the floorplan changes. The main difficulty is that with over 600 buildings on our main campus we have over 30 possible floors (Sub-Basement, Basement, Ground, Terrace, First, Second, Penthouse, Mechanical Deck 1/2/3, Mezzanine etc.) and every building has a unique combination of floors. In other words, some buildings may have a ground floor and first floor while others may have just a first floor - there has been little standardization as these buildings were designed and built over the last 100 years. This can be difficult for maintenance mechanics who may be responsible for 30 different buildings each. Our first attempt was to create a map that had a floorplan layer for every possible floor, and as you cannot group a feature editable service layer within a dynamic map service layer (and within the feature service itself you cannot group layers nor include non-editable layers), we also included an equipment layer for every possible floor. The underlying service for these layers had a unique feature template setup for each floor level layer that defaulted the floor attribute to the appropriate value for that floor. So, if a mechanic wants to map a location on the first-floor, they turn on the first-floor floorplan layer and the corresponding first-floor equipment layer. Initially we only had a single equipment layer and the mechanics were supposed to set the floor attribute manually however, this lead to problems such as turning on say the ground-floor floorplan but setting the floor value on equipment to first-floor. It also lead to an enormous number of layers for the mechanic to manage. Our current approach, which is aimed at really simplifying things for the mechanic is to create separate maps for every building and floor. This quite a large number of maps and so we use the REST API (ArcGIS Portal) and FME to do this automatically. We also record in the geodatabase the item ID for each map and the building and floor it is associated with. The equipment layer within each map is set to the appropriate feature service that has the feature template set to autopopulate the correct floor value for that floor level. We then create a single index map that pulls in a list of hyperlinks using the arcgis-collector://itemId=XXXX url scheme in the popup for each building: Notice in this next one the url for the hyperlink: We are currently having the mechanic install both Explorer and Collector and sign into our portal in both. They then open the index map in Explorer and can open the floor-level map from the popup for any building. They can then collect features on that floor and when they are ready to move to the next floor they can switch back to explorer and just click the next hyperlink. This works pretty well however, we would like to include the building index layer in the each floor-level map so the mechanic would never have to leave collector. They would open the building popup and move to the next floor all within Collector. We also have built a WAB application that we've used to map over 17,000 equipment locations. However, this is being used mainly in the office and as such is not being used to verify/update equipment attributes nor attach photos. On the other hand, the initial approach I described above using a single web map has been piloted by a single mechanic who has not only collected over 600 locations but has also been able to use collector to collect vital attributes like make, model, serial number and add photos of the equipment which aides in equipment identification later on. While this is fairly impressive, it has taken a lot of training and support as well as verification, QA/QC etc. We would like to roll this out to more of our field staff but feel we need to simplify the process for the mechanic as much as possible which has lead to the second approach. All the mechanic should have to do is click on a building, pick the floor they want to work on, wait for the map to load in Collector and start collecting features. Hope this clarifies the workflow we are trying to achieve!
... View more
06-08-2017
06:28 AM
|
2
|
0
|
775
|
POST
|
Thinking about this some more, eventually we want to include custom url scheme links to apps other than Collector or Explorer and I'm wondering if these will not work for the same reason? Does Collector, Explorer, Survery123 only support custom url schemes to other Esri apps? If so, why?
... View more
06-02-2017
06:11 PM
|
0
|
2
|
775
|
POST
|
I'm having a similar issue to this post, except in my attribute template popup, I'm configuring links to open other maps in Collector itself (i.e. arcgis-collector://?itemID=XXXXXXXX) and the map with this attribute template popup is opened in Collector. In other words, I want to open a map in Collector that has layers with attribute templates that open other maps in Collector. If I long press on one of these links and choose the copy option then paste the link into Safari it successfully opens the new map in collector. I have seen in other posts that Collector now opens all urls in an external browser (Safari) but this does not seem to be true - 10.4.2 still opens them in a Collector browser window. I suspect if it opened them in an external browser, the custom url scheme would work. Also, if I open the same map in Explorer for ArcGIS and click one of these links, Collector opens the requested web map.
... View more
06-02-2017
10:22 AM
|
0
|
3
|
2680
|
POST
|
I'm having a similar issue with 10.4.2 (iOS) except in my attribute template popup, I'm configuring links to open other maps in Collector (i.e. arcgis-collector://?itemID=XXXXXXXX). If I long press on one of these links and choose the copy option then paste the link into Safari it successfully opens the new map in collector. I have seen in other posts that Collector now opens all urls in an exteranal browser (Safari) but this does not seem to be true - 10.4.2 still opens them in a Collector browser window. I suspect if it opened them in an external browser, the custom url scheme would work.
... View more
06-02-2017
10:13 AM
|
0
|
0
|
464
|
POST
|
Hi Angela, We are using Oracle Spatial as our Enterprise RDMS so the views are created inside schema level geodatabases in our Oracle db. Some of the scheduling stuff relies heavily on PL\SQL procedures/functions but in general, in the layer definition expression, we are are doing something like: GLOBALID IN (SELECT GLOBALID FROM <<VIEW THAT RETURNS GLOBALIDs OF FEATURES MEETING SOME CONDITION>>) In the screenshot below, which shows trash receptacles that need to be serviced (emptied), the Service Frequency (1) is used in conjunction with the last service record's date (2) by RECEPTACLESSERVICENEEDED_V (3) view which returns globalids of receptacles that need to be serviced based on service frequency and last service record. Here's the SQL of the RECEPTACLESERVICENEEDED_V: SELECT a.objectid,
a.framematrl,
a.surfmatrl,
a.TYPE,
a.receptshape,
a.load,
a.color,
a.owned,
a.capacity,
a.servicefrequency,
a.status,
a.needdgnrvw,
a.dgnrvwnotes,
a.notes,
a.globalid,
a.created_user,
a.created_date,
a.last_edited_user,
a.last_edited_date,
b.created_date lastservicedate,
a.servicefrequency,
b.nextdatecalculated nextservicedate,
a.se_anno_cad_data,
a.shape
FROM sdelittermgmt.receptacles a
JOIN
( -- RECEPTACLES WITH SERVICE RECORDS
SELECT receptguid,
servicefrequency,
receptacleservice.created_date,
DECODE (
servicefrequency,
'1D', TRUNC (receptacleservice.created_date + 1),
'3D', TRUNC (receptacleservice.created_date + 3),
'1W', TRUNC (receptacleservice.created_date + 7),
'2W', TRUNC (receptacleservice.created_date + 14),
'1M', TRUNC (
ADD_MONTHS (receptacleservice.created_date, 1)))
nextdatecalculated,
RANK ()
OVER (PARTITION BY receptguid
ORDER BY receptacleservice.created_date DESC)
rnk
FROM receptacleservice
JOIN receptacles
ON receptacles.globalid = receptacleservice.receptguid
-- RECEPTACLES WITHOUT SERVICE RECORDS
UNION ALL
SELECT globalid receptguid,
servicefrequency,
created_date,
SYSDATE - 1 nextcalculateddate,
1 rnk
FROM receptacles a
WHERE NOT EXISTS
(SELECT receptguid
FROM receptacleservice b
WHERE b.receptguid = a.globalid)) b
ON (receptguid = globalid)
WHERE a.status = 'ACTIVE'
AND b.rnk = 1
AND SYSDATE > b.nextdatecalculated; Hope this helps!
... View more
06-02-2017
07:04 AM
|
0
|
1
|
1395
|
POST
|
Ended up reaching out to Esri support that confirmed this as a bug: I hope this email finds you well. This is Archit from ESRI Support Services and I am writing in reference to the case number 01938538 .I have taken ownership of this case and will be working with you to reach a resolution. I understand that you are facing difficulty with the order in which Groups are displayed. As per my understanding and test done, I believe "Collector for Android" sorts the groups in Alphabetical order/Ascending order. However, Collector for iOS fails to do so. It sorts the list randomly. Hence, there has already been an Enhancement request submitted for this issue. The BUG reference number is "#BUG-000102854: “Group listings do not show up in alphabetical order in Collector for ArcGIS (iOS."
... View more
06-02-2017
06:47 AM
|
0
|
0
|
296
|
POST
|
I'm following some of the samples for creating a new AGSMap instance from a web map. This works fine except that filters on layers in the web map are not honored or used. My web map basically contains a layer that has a filter expression that limits features to a single floor within a building. When viewed on the web, the web map works fine. However, used within the iOS 100.0.0 SDK, features from all floors within the building are displayed. Unfortunately, I cannot find anything in the documentation to suggest that layer filters defined in the web map would not be honored but while I have been developing with the Javascript API for some time, I am pretty new to the iOS SDK. Any help appreciated!
... View more
05-31-2017
02:24 PM
|
0
|
2
|
795
|
POST
|
We are using Collector extensively to log maintenance, from tree pruning, watering and removal to catch basin inspection and cleaning, with great success. Dan's suggestion to use GlobalID based relationships will make things much easier. And depending on your backend, we are creating views and procedures inside our database that only show items on that map that require maintenance or inspection, whether it's based upon an "open" task that someone has created or based upon some elapsed interval since the last time a maintenance activity was completed. For instance, our stormwater permit requires all catch basins on our campus to be inspected and cleaned if needed every two years. So, if it has been two calendar years since the last inspection was documented, a catch basin shows up on an "Inspection Due" layer in Collector. The inspector can then create a related inspection task which when posted to the database causes the catch basin to be omitted from the "Inspection Due" layer. These are also fed into operational dashboards that crews use to mission plan in the morning before leaving the shop.
... View more
05-03-2017
11:00 AM
|
0
|
3
|
1395
|
POST
|
We are setting up groups for each building on our campus and naming them by building number and building name (0024 Natural Science). I would have assumed that in Collector, groups would be sorted by alphabetically by group title but the sorting appears to be arbitrary. Does anyone know how Collector sorts the list of groups, if at all?
... View more
05-03-2017
05:55 AM
|
0
|
1
|
778
|
POST
|
Thanks Robert, this was just what I was looking for!
... View more
01-05-2017
12:13 PM
|
0
|
0
|
501
|
POST
|
Great Info! Is this documented somewhere? I mean WAB topics (I've used topic extensively elsewhere)?
... View more
01-05-2017
10:10 AM
|
0
|
2
|
501
|
POST
|
I wrapped this up in a mixin which has a showWidget method which internally calls methods to handle both the sidebar controller in the tab theme and the header controller in the foldable theme. I haven't tested in other themes yet. I found similar issues to my original question with the header controller in the foldable theme. In the feature action onExecute method you can call this.showWidget() to handle updating the sidebar or header controller, handling updating the highlight and selected tabs etc. onExecute: function(featureSet){
WidgetManager.getInstance().triggerWidgetOpen( this.widgetId )
.then( lang.hitch( this, function ( myWidget ) {
/* do something */
this.showWidget();
}));
} Hope someone finds this useful!
... View more
11-11-2016
11:05 AM
|
0
|
0
|
506
|
Title | Kudos | Posted |
---|---|---|
2 | 06-08-2017 06:28 AM | |
1 | 01-03-2018 11:04 AM | |
1 | 10-07-2015 02:01 PM | |
1 | 01-15-2018 12:38 PM | |
1 | 01-15-2018 12:18 PM |
Online Status |
Offline
|
Date Last Visited |
01-16-2024
05:27 AM
|