More configurator tweaks

This commit is contained in:
connor rigby 2017-12-14 12:29:34 -08:00
parent 9b349daa35
commit dea2ada125
4 changed files with 48 additions and 19 deletions

View file

@ -17,6 +17,7 @@ defmodule Farmbot.Bootstrap.Authorization do
@version Farmbot.Project.version()
@target Farmbot.Project.target()
@data_path Application.get_env(:farmbot, :data_path)
@doc """
Callback for an authorization implementation.
@ -56,6 +57,8 @@ defmodule Farmbot.Bootstrap.Authorization do
{:ok, body} <- Poison.decode(resp),
{:ok, map} <- Map.fetch(body, "token") do
Farmbot.System.GPIO.Leds.led_status_ok()
last_reset_reason_file = Path.join(@data_path, "last_shutdown_reason")
File.rm(last_reset_reason_file)
Map.fetch(map, "encoded")
else
:error -> {:error, "unknown error."}

View file

@ -22,10 +22,15 @@ defmodule Farmbot.Host.TargetConfiguratorTest do
get "/" do
last_reset_reason_file = Path.join(@data_path, "last_shutdown_reason")
if File.exists?(last_reset_reason_file) do
render_page(conn, "index", [version: @version, last_reset_reason: File.read!(last_reset_reason_file)])
else
render_page(conn, "index", [version: @version, last_reset_reason: nil])
case File.read(last_reset_reason_file) do
{:ok, reason} when is_binary(reason) ->
if String.contains?(reason, "CeleryScript request.") do
render_page(conn, "index", [version: @version, last_reset_reason: nil])
else
render_page(conn, "index", [version: @version, last_reset_reason: reason])
end
{:error, _} ->
render_page(conn, "index", [version: @version, last_reset_reason: nil])
end
end
@ -46,7 +51,13 @@ defmodule Farmbot.Host.TargetConfiguratorTest do
end
post "/configure_network" do
require IEx; IEx.pry
interface = conn.body_params["interface"]
settings =
Enum.filter(conn.body_params, &String.starts_with?(elem(&1, 0), interface))
|> Enum.map(fn({key, val}) -> {String.trim(key, interface <> "_"), val} end)
|> Map.new()
|> Map.put("enable", "on")
Logger.info 1, "Got fake network config interface: `#{interface}` settings: #{inspect settings}"
redir(conn, "/credentials")
end

View file

@ -22,10 +22,15 @@ defmodule Farmbot.Target.Bootstrap.Configurator.Router do
get "/" do
last_reset_reason_file = Path.join(@data_path, "last_shutdown_reason")
if File.exists?(last_reset_reason_file) do
render_page(conn, "index", [version: @version, last_reset_reason: File.read!(last_reset_reason_file)])
else
render_page(conn, "index", [version: @version, last_reset_reason: nil])
case File.read(last_reset_reason_file) do
{:ok, reason} when is_binary(reason) ->
if String.contains?(reason, "CeleryScript request.") do
render_page(conn, "index", [version: @version, last_reset_reason: nil])
else
render_page(conn, "index", [version: @version, last_reset_reason: reason])
end
{:error, _} ->
render_page(conn, "index", [version: @version, last_reset_reason: nil])
end
end
@ -117,7 +122,7 @@ defmodule Farmbot.Target.Bootstrap.Configurator.Router do
redir(conn, "/firmware")
rescue
err ->
Logger.error 1, "Failed too input network config: #{Exception.message(err)}: #{inspect System.stacktrace()}"
Logger.error 1, "Failed too input network config: #{Exception.message(err)}: #{inspect System.stacktrace()}"
redir(conn, "/network")
end
end

View file

@ -23,6 +23,16 @@
elem.outerHTML = "";
delete elem;
}
function selectInterface(iface, type) {
if(type == "wireless") {
var elems = document.getElementsByClassName("wireless");
for(i=0; i<elems.length; i++){ elems[i].removeAttribute("hidden")}
} else {
var elems = document.getElementsByClassName("wireless");
for(i=0; i<elems.length; i++){ elems[i].setAttribute("hidden", true) }
}
}
</script>
</head>
@ -38,16 +48,16 @@
<%= for {interface, settings} <- interfaces do %>
<%= case settings do %>
<% %{type: :wired, checked: checked} -> %>
<fieldset>
<label>Enable Ethernet (<%= interface %>)</label>
<input <%= checked %> type=radio name="interface" value="<%= interface %>">
<input hidden=true name="<%= interface %>_type" value=wired>
<label>Enable Ethernet (<%= interface %>)</label>
<input <%= checked %> type=radio name="interface" value="<%= interface %>" onClick="selectInterface('<%= interface %>', 'wired');" />
<fieldset class="wired">
<input hidden=true name="<%= interface %>_type" value="wired" />
</fieldset>
<% %{type: :wireless, ssids: ssids, checked: checked} -> %>
<fieldset>
<label>Enable Wireless (<%= interface %>) </label>
<input <%= checked %> type=radio name="interface" value="<%= interface %>">
<label>Enable Wireless (<%= interface %>) </label>
<input <%= checked %> type=radio name="interface" value="<%= interface %>" onClick="selectInterface('<%= interface %>', 'wireless');" />
<fieldset class="wireless">
<label>Network Name/SSID</label>
<select name="<%= interface %>_ssid" id="<%= interface %>_ssid_select" onchange="ssidSelectOnChange('<%= interface %>');">
<%= Enum.reduce(ssids, "", fn(ssid, acc) ->
@ -56,8 +66,8 @@
<option id="<%= interface %>_ssid_manual_input"> <bold> Manual Input </bold> </option>
</select>
<label>Password</label>
<input type=password name="<%= interface %>_psk">
<input hidden=true name="<%= interface %>_type" value=wireless>
<input type=password name="<%= interface %>_psk" />
<input hidden=true name="<%= interface %>_type" value="wireless" />
</fieldset>
<% end %>
<% end %>