@@ -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+
225243async 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