Skip to content

Commit 373c993

Browse files
committed
Adding history for form2
1 parent c264954 commit 373c993

3 files changed

Lines changed: 47 additions & 10 deletions

File tree

common-data-defs.js

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -102,6 +102,7 @@ const formHistoricalContentX = [
102102
eventType: 'fertility-intention/ttc-tta',
103103
label: 'Trying to conceive / Avoiding pregnancy',
104104
type: 'select',
105+
parseValueToNum: true,
105106
options: [
106107
{
107108
value: 0,
@@ -154,6 +155,23 @@ const formHistoricalContentX = [
154155
]
155156

156157
const formHistoricalContentB = [
158+
{
159+
streamId: 'body-weight',
160+
eventType: 'mass/kg',
161+
type: 'number',
162+
label: 'Body Weight (kg)',
163+
},
164+
{
165+
label: 'Vulva Wetness feeling',
166+
streamId: 'body-vulva-wetness-feeling',
167+
eventType: 'ratio/generic',
168+
type: 'select',
169+
options: [
170+
{ value: 0, label: 'Dry' },
171+
{ value: 1, label: 'Wet' },
172+
{ value: 2, label: 'Very wet'}
173+
]
174+
}
157175
]
158176

159177
//

patient-history-controler.js

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -83,7 +83,8 @@ async function refreshDataTable(date) {
8383
cellDate.innerHTML = dateStr;
8484
for (const th of tableData.tableHeaders) {
8585
const cell = row.insertCell(-1);
86-
cell.innerHTML = data[th.fieldId]?.value || '';
86+
const v = data[th.fieldId]?.value;
87+
cell.innerHTML = v != null ? v : '' ;
8788
}
8889
}
8990

patient-lib.js

Lines changed: 27 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -193,22 +193,21 @@ function valueForField (eventContent, field) {
193193
console.error('## Error parsing date', eventContent);
194194
return '';
195195
}
196+
if (field.eventType === 'ratio/generic' && eventContent != null ) {
197+
return eventContent.value;
198+
}
196199
return eventContent;
197200
}
198201

199202
// ---------------- create / update data ---------------- //
200203

201-
function parseValue (value, type) {
204+
function parseValue (value, field) {
205+
const type = field.type;
202206
if (value === undefined || value === null || value === '') {
203207
return '';
204208
}
205-
if (type === 'number') {
206-
const parsedValue = parseFloat(value);
207-
if (isNaN(parsedValue)) {
208-
console.error('## Error parsing number', value);
209-
return '';
210-
}
211-
return parsedValue;
209+
if (type === 'number' || field.parseValueToNum) {
210+
return parseFloatCustom(value);
212211
}
213212
if (type === 'boolean') {
214213
return value === 'true';
@@ -219,16 +218,35 @@ function parseValue (value, type) {
219218
}
220219
return value === '';
221220
}
221+
if (type === 'select' && field.eventType === 'ratio/generic') {
222+
const numValue = parseFloatCustom(value);
223+
if (numValue === '') return '';
224+
// relative to is the latest value of options
225+
const relativeTo = field.options[field.options.length -1].value;
226+
return {
227+
value: numValue,
228+
relativeTo
229+
}
230+
}
222231
return value;
223232
}
224233

234+
function parseFloatCustom(value) {
235+
const parsedValue = parseFloat(value);
236+
if (isNaN(parsedValue)) {
237+
console.error('## Error parsing number', value);
238+
return '';
239+
}
240+
return parsedValue;
241+
}
242+
225243
async function handleFormSubmit (formData, values, date) {
226244
const apiCalls = [];
227245
for (const field of formData) {
228246
const streamId = field.streamId;
229247
const eventType = field.eventType;
230248
const eventId = field.eventId;
231-
const value = parseValue(values[field.id], field.type);
249+
const value = parseValue(values[field.id], field);
232250
if (value === '' && eventId) {
233251
// delete the event
234252
apiCalls.push({

0 commit comments

Comments
 (0)