init-filename-field.js 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. import { contractSettings } from "../../data/more-data/contract-settings.js"
  2. export default function initFilenameField() {
  3. const unix = Math.round(+new Date() / 1000)
  4. let filenameSettings = contractSettings.filename
  5. let filename_prefix = contractSettings.filename
  6. let filename_value = contractSettings.filename
  7. if (filenameSettings.has_timestamp) {
  8. if (filenameSettings.name) {
  9. // !
  10. filename_prefix = filenameSettings.name + filenameSettings.timestamp_separator
  11. }
  12. else {
  13. // ! doesn't re-init when filenameSettings.name is empty
  14. filename_prefix = ""
  15. }
  16. filename_value = filename_prefix + unix
  17. }
  18. const fieldName = "contract_filename"
  19. const fieldValue = filename_value
  20. if (!localStorage.getItem(fieldName)) {
  21. localStorage.setItem(fieldName, fieldValue)
  22. }
  23. let val = localStorage.getItem(fieldName)
  24. val = addTimestampIfNeeded(val, filenameSettings.has_timestamp, filename_prefix, unix)
  25. const el = document.querySelector("#" + fieldName)
  26. // if (!el) return
  27. handleDom(el, fieldName, val)
  28. }
  29. function addTimestampIfNeeded(val, filename_timestamp, filename_prefix, unix) {
  30. // if it looks like a timestamp reset it:
  31. if (isTimestamp(filename_prefix, val)) {
  32. val = filename_prefix + unix
  33. localStorage.setItem("contract_filename", val)
  34. }
  35. return val
  36. }
  37. // check if like: contract-0123456789 (prefix, separator, 10 digits)
  38. const isTimestamp = (prefix, str) => {
  39. let matches = str.split(prefix)
  40. if (matches[1] && matches[1].match(/^[0-9]{10}$/) && !matches[2])
  41. return true
  42. else
  43. return false
  44. }
  45. // set field value and event listener
  46. const handleDom = (el, itemName, val) => {
  47. el.value = val
  48. el.addEventListener("change", (e) => {
  49. localStorage.setItem(itemName, e.target.value)
  50. })
  51. }