0400-geo-location.lua 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. return function(form, uci)
  2. local pkg_i18n = i18n 'gluon-config-mode-geo-location'
  3. local site_i18n = i18n 'gluon-site'
  4. local site = require 'gluon.site'
  5. local location = uci:get_first("gluon-node-info", "location")
  6. local function show_altitude()
  7. if site.config_mode.geo_location.show_altitude(true) then
  8. return true
  9. end
  10. return uci:get_bool("gluon-node-info", location, "altitude")
  11. end
  12. local text = pkg_i18n.translate(
  13. 'If you want the location of your node to ' ..
  14. 'be displayed on the map, you can enter its coordinates here.'
  15. )
  16. if show_altitude() then
  17. text = text .. ' ' .. site_i18n.translate("gluon-config-mode:altitude-help")
  18. end
  19. local s = form:section(Section, nil, text)
  20. local o
  21. local share_location = s:option(Flag, "location", pkg_i18n.translate("Show node on the map"))
  22. share_location.default = uci:get_bool("gluon-node-info", location, "share_location")
  23. function share_location:write(data)
  24. uci:set("gluon-node-info", location, "share_location", data)
  25. end
  26. o = s:option(Value, "latitude", pkg_i18n.translate("Latitude"), pkg_i18n.translatef("e.g. %s", "53.873621"))
  27. o.default = uci:get("gluon-node-info", location, "latitude")
  28. o:depends(share_location, true)
  29. o.datatype = "float"
  30. function o:write(data)
  31. uci:set("gluon-node-info", location, "latitude", data)
  32. end
  33. o = s:option(Value, "longitude", pkg_i18n.translate("Longitude"), pkg_i18n.translatef("e.g. %s", "10.689901"))
  34. o.default = uci:get("gluon-node-info", location, "longitude")
  35. o:depends(share_location, true)
  36. o.datatype = "float"
  37. function o:write(data)
  38. uci:set("gluon-node-info", location, "longitude", data)
  39. end
  40. if show_altitude() then
  41. o = s:option(Value, "altitude", site_i18n.translate("gluon-config-mode:altitude-label"), pkg_i18n.translatef("e.g. %s", "11.51"))
  42. o.default = uci:get("gluon-node-info", location, "altitude")
  43. o:depends(share_location, true)
  44. o.datatype = "float"
  45. o.optional = true
  46. function o:write(data)
  47. uci:set("gluon-node-info", location, "altitude", data)
  48. end
  49. end
  50. return {'gluon-node-info'}
  51. end