You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
26 lines
1.0 KiB
26 lines
1.0 KiB
import { Controller } from '@hotwired/stimulus' |
|
|
|
export default class extends Controller { |
|
connect () { |
|
const affectedField = this.element.dataset.target |
|
const targetQuestion = affectedField.split('lettings-log-')[1].split('-field')[0] |
|
const div = document.getElementById(targetQuestion + '_div') |
|
div.style.display = 'block' |
|
} |
|
|
|
calculateFields () { |
|
const affectedField = this.element.dataset.target |
|
const fieldsToAdd = JSON.parse(this.element.dataset.calculated).map(x => `lettings-log-${x.replaceAll('_', '-')}-field`) |
|
const valuesToAdd = fieldsToAdd.map(x => getFieldValue(x)).filter(x => x) |
|
const newValue = valuesToAdd.map(x => parseFloat(x)).reduce((a, b) => a + b, 0).toFixed(2) |
|
const elementToUpdate = document.getElementById(affectedField) |
|
elementToUpdate.value = newValue |
|
} |
|
} |
|
const getFieldValue = (field) => { |
|
const elementFieldToAdd = document.getElementById(field) |
|
if (elementFieldToAdd) { |
|
return elementFieldToAdd.value |
|
} |
|
return document.getElementById(`${field}-error`).value |
|
}
|
|
|