Seeking some assistance with what i think is just a formatting problem.
I've used this script in a data expression to power a serial chart showing the time of day in 24hr format for a dataset collected in ArcGIS Collector. The original reason for doing this as a data expression was to gain access to a field that just had the time of day (or rounded up to an hour value from 1 - 24)
Everything works well at this stage
What I'm trying to do now is include the original creation_date field in the featureset so that I can filter this field with a date category selector. As it is now, the creation date field is being treated as a string and when I attempt to apply a filter a this data expression via the date category selector, there are no valid fields to choose from.
If I change line 18 of the code from esriFieldTypeString to esriFieldTypeDate, the featureset doesn't return any records.
The creation_date field is actually of type esriFieldTypeDate, so the problem must be with my scripting. Any suggestions are most welcome
//ground activity - time of day
//obtains the hour in military (long) format from the creation_date field
// Write an expression that returns a FeatureSet.
// Documentation: https://arcg.is/3c419TD
// Samples: https://arcg.is/38SEWWz
// Create a FeatureSet from the Feature Layer containing the Ground activitydata.
var fs =FeatureSetByPortalItem(Portal('https://gis.xxxxxx.xx.xx.xx/portal'), '0116ef7ee89c4de0829fe554315e2177', 0)
var dowDict = {
'fields': [{ 'name': 'dow_num', 'type': 'esriFieldTypeInteger'},
{'name': 'OBJECTID','type': 'esriFieldTypeInteger'},
{'name': 'creation_date','type': 'esriFieldTypeString'},
{'name': 'militaryhr', 'type': 'esriFieldTypeString'},
{'name': 'Shooter_Organisation','type': 'esriFieldTypeString'},
{'name': 'species', 'type': 'esriFieldTypeString'}],
'geometryType': '',
'features': []
};
var index = 0;
for (var feature in fs) {
dowDict.features[index] = {
'attributes': {
'dow_num': Hour(feature['creation_date']),
'objectid': feature['OBJECTID'],
'creation_date': feature['creation_date'],
'militaryhr': Text(feature['creation_date'], 'HH'),
'Shooter_Organisation': feature['Shooter_Organisation'],
'species': feature['species_common_name']
}}
index++;}
// Convert dictionary to feature set.
//var fs_dict = FeatureSet(Text(dowDict));
var fs_dict = FeatureSet(Text(dowDict));
// Return case data by day of Hour
return fs_dict;
Solved! Go to Solution.
I've seen this sort of behavior in Data Expressions with date fields.
I don't understand why this works, but try casting it as a Number. In line 33, you'd put:
'creation_date': Number(feature['creation_date']),
Trying to use a date value directly.
Cast as number.
I've seen this sort of behavior in Data Expressions with date fields.
I don't understand why this works, but try casting it as a Number. In line 33, you'd put:
'creation_date': Number(feature['creation_date']),
Trying to use a date value directly.
Cast as number.
I was stuck with the exact situation too. Thank you, that worked perfectly for me also. 🙂
Worked perfectly. Thankyou so much @jcarlson