Skip to content

Commit 157d209

Browse files
committed
[service] ArcGIS field names are lowercase, account for this when adding/removing fields
1 parent 86fb706 commit 157d209

File tree

3 files changed

+36
-58
lines changed

3 files changed

+36
-58
lines changed

plugins/arcgis/service/src/ArcGISConfig.ts

Lines changed: 0 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -38,16 +38,6 @@ export interface FeatureLayerConfig {
3838
* The event ids or names that sync to this arc feature layer.
3939
*/
4040
events?: (number|string)[]
41-
42-
/**
43-
* Add layer fields from form fields
44-
*/
45-
addFields?: boolean
46-
47-
/**
48-
* Delete editable layer fields missing from form fields
49-
*/
50-
deleteFields?: boolean
5141
}
5242

5343

plugins/arcgis/service/src/FeatureServiceAdmin.ts

Lines changed: 34 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -78,51 +78,44 @@ export class FeatureServiceAdmin {
7878
const eventFields = this.fields(events)
7979
const layerFields = layerInfo.fields
8080

81-
// TODO - better naming: addFields is a boolean, array of fields, and a method. Ditto for deleteFields
82-
if (featureLayer.addFields) {
83-
84-
const layerFieldSet = new Set()
85-
for (const field of layerFields) {
86-
layerFieldSet.add(field.name)
87-
}
88-
89-
const addFields = []
90-
for (const field of eventFields) {
91-
if (!layerFieldSet.has(field.name)) {
92-
addFields.push(field)
93-
const layerField = {} as LayerField
94-
layerField.name = field.name
95-
layerField.editable = true
96-
layerFields.push(layerField)
97-
}
98-
}
81+
const layerFieldSet = new Set()
82+
for (const field of layerFields) {
83+
layerFieldSet.add(field.name)
84+
}
9985

100-
if (addFields.length > 0) {
101-
this.addFields(service, featureLayer, addFields)
102-
}
86+
const addFields = []
87+
for (const field of eventFields) {
88+
if (!layerFieldSet.has(field.name)) {
89+
addFields.push(field)
90+
const layerField = {} as LayerField
91+
layerField.name = field.name
92+
layerField.editable = true
93+
layerFields.push(layerField)
94+
}
95+
}
10396

97+
if (addFields.length > 0) {
98+
this.addFields(service, featureLayer, addFields)
10499
}
105100

106-
if (featureLayer.deleteFields) {
107-
const eventFieldSet = new Set()
108-
for (const field of eventFields) {
109-
eventFieldSet.add(field.name)
110-
}
101+
const eventFieldSet = new Set()
102+
for (const field of eventFields) {
103+
eventFieldSet.add(field.name)
104+
}
111105

112-
const deleteFields = []
113-
const remainingFields = []
114-
for (const field of layerFields) {
115-
if (field.editable && !eventFieldSet.has(field.name)) {
116-
deleteFields.push(field)
117-
} else {
118-
remainingFields.push(field)
119-
}
106+
const deleteFields = []
107+
const remainingFields = []
108+
for (const field of layerFields) {
109+
if (field.editable && !eventFieldSet.has(field.name)) {
110+
deleteFields.push(field)
111+
} else {
112+
remainingFields.push(field)
120113
}
114+
}
121115

122-
if (deleteFields.length > 0) {
123-
layerInfo.fields = remainingFields
124-
this.deleteFields(service, featureLayer, deleteFields)
125-
}
116+
if (deleteFields.length > 0) {
117+
layerInfo.fields = remainingFields
118+
this.deleteFields(service, featureLayer, deleteFields)
126119
}
127120
}
128121

@@ -331,7 +324,7 @@ export class FeatureServiceAdmin {
331324
if (field != null) {
332325
const sanitizedName = ObservationsTransformer.replaceSpaces(formField.title)
333326
const sanitizedFormName = ObservationsTransformer.replaceSpaces(form.name)
334-
const name = `${sanitizedFormName}_${sanitizedName}`
327+
const name = `${sanitizedFormName}_${sanitizedName}`.toLowerCase()
335328

336329
fieldNames.add(name)
337330

@@ -438,7 +431,7 @@ export class FeatureServiceAdmin {
438431
await request(url, {
439432
authentication: identityManager,
440433
params: {
441-
addToDefinition: JSON.stringify(layer),
434+
addToDefinition: layer,
442435
f: "json"
443436
}
444437
}).then((postResponse) => {
@@ -474,7 +467,7 @@ export class FeatureServiceAdmin {
474467
authentication: identityManager,
475468
httpMethod: 'POST',
476469
params: {
477-
deleteFromDefinition: JSON.stringify(layer)
470+
deleteFromDefinition: layer
478471
}
479472
});
480473
console.log('Response: ' + postResponse)

plugins/arcgis/service/src/ObservationProcessor.ts

Lines changed: 2 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -230,9 +230,6 @@ export class ObservationProcessor {
230230
}
231231

232232
for (const featureLayer of featureServiceConfig.layers) {
233-
// Initiate the feature layer and event fields to sync with the feature service
234-
featureLayer.addFields = true
235-
236233
const eventNames: string[] = []
237234
const events = featureLayer.events
238235
if (events != null) {
@@ -285,10 +282,8 @@ export class ObservationProcessor {
285282
private async handleLayerInfo(url: string, featureServiceConfig: FeatureServiceConfig, featureLayer: FeatureLayerConfig, layerInfo: LayerInfoResult, config: ArcGISPluginConfig) {
286283
if (layerInfo.geometryType != null) {
287284
const events = featureLayer.events as string[]
288-
if (featureLayer.addFields || featureLayer.deleteFields) {
289-
const admin = new FeatureServiceAdmin(config, this._identityService, this._console)
290-
await admin.updateLayer(featureServiceConfig, featureLayer, layerInfo, this._eventRepo)
291-
}
285+
const admin = new FeatureServiceAdmin(config, this._identityService, this._console)
286+
await admin.updateLayer(featureServiceConfig, featureLayer, layerInfo, this._eventRepo)
292287
const info = new LayerInfo(url, events, layerInfo)
293288
const identityManager = await this._identityService.getIdentityManager(featureServiceConfig)
294289
const layerProcessor = new FeatureLayerProcessor(info, config, identityManager, this._console);

0 commit comments

Comments
 (0)