Skip to content

Commit 53e0a48

Browse files
author
Ian Redpath
committed
almost working saving
1 parent 2e11ea4 commit 53e0a48

File tree

3 files changed

+30
-7
lines changed

3 files changed

+30
-7
lines changed

public/assignment/services/fields.service.client.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ export class FieldsService {
3030
}
3131

3232
updateField(formId: string, fieldId: string, field) {
33-
return this.http.put(`/api/assignment/form/${formId}/field`, JSON.stringify({ field }),
33+
return this.http.put(`/api/assignment/form/${formId}/field/${fieldId}`, JSON.stringify({ field }),
3434
{ headers: this.headers })
3535
}
3636

public/assignment/views/forms/fields.controller.ts

Lines changed: 27 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ export class FieldsController {
1919
formId: string
2020
fields: Array<any>
2121
fetching: boolean
22-
newOptions: string
22+
optionsMap: any
2323

2424
constructor(public stateService: StateService, public router: Router,
2525
public fieldsService: FieldsService, public http: Http, public params: RouteParams) {
@@ -54,9 +54,11 @@ export class FieldsController {
5454
}
5555
}
5656
this.formId = params.get('formId')
57+
this.optionsMap = {}
5758
fieldsService.getFieldsForForm(this.formId)
5859
.subscribe(resp => {
5960
this.fields = resp.json().fields
61+
this.updateOptions()
6062
this.fetching = false
6163
})
6264
}
@@ -72,32 +74,53 @@ export class FieldsController {
7274
this.fieldsService.createFieldForForm(this.formId, this.getNewField())
7375
.subscribe(resp => {
7476
this.fields = resp.json().fields
77+
this.updateOptions()
7578
})
7679
}
7780

7881
deleteField(fieldId: string) {
7982
this.fieldsService.deleteFieldFromForm(this.formId, fieldId)
8083
.subscribe(resp => {
8184
this.fields = resp.json().fields
85+
this.updateOptions()
8286
})
8387
}
8488

8589
update(field) {
90+
if (field.options) {
91+
field.options = this.getOptionsFor(field._id)
92+
}
8693
this.fieldsService.updateField(this.formId, field._id, field)
8794
.subscribe(resp => {
8895
this.fields = resp.json().fields
96+
this.updateOptions()
8997
})
9098
}
9199

100+
getOptionsFor(id) {
101+
const optionString = this.optionsMap[id]
102+
const optionsArray = optionString.split('\n')
103+
return optionsArray.map(opt => {
104+
const labelValuePair = opt.split(":")
105+
return { label: labelValuePair[0], value: labelValuePair[1] }
106+
})
107+
}
92108
isTextField(type) {
93109
return type === 'TEXT' || type === 'TEXTAREA'
94110
}
95111
isOptionField(field) {
96112
return field.type === 'DROPDOWN' || field.type === 'RADIOS' || field.type === 'CHECKBOXES'
97113
}
98-
formatOptions(options) {
99-
options.forEach(opt => {
100-
this.newOptions += `${opt.label}:${opt.value}\n`
114+
115+
updateOptions() {
116+
this.fields.forEach(field => {
117+
if (field.options) {
118+
let base = ""
119+
field.options.forEach(opt => {
120+
base += `${opt.label}:${opt.value}\n`
121+
})
122+
this.optionsMap[field._id] = base
123+
}
101124
})
102125
}
103126
}

public/assignment/views/forms/form-fields.view.html

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -59,13 +59,13 @@ <h4 class="modal-title" id="modalLabel">Edit field</h4>
5959
</div>
6060
<div *ngIf="isOptionField(field)" class="optionsEdit">
6161
<label for="optionsText">Options</label>
62-
<input type="textarea" id="optionsText" [(ngModel)]="field.options">
62+
<textarea id="optionsText" [(ngModel)]="optionsMap[field._id]"></textarea>
6363
</div>
6464
</div>
6565
</div>
6666
<div class="modal-footer">
6767
<button type="button" class="btn btn-default" data-dismiss="modal">Cancel</button>
68-
<button type="button" class="btn btn-primary" (click)="update(field)">Save</button>
68+
<button type="button" class="btn btn-primary" data-dismiss="modal" (click)="update(field)">Save</button>
6969
</div>
7070
</div>
7171
</div>

0 commit comments

Comments
 (0)