roganjoshua
I am trying to get a basic for to do my bidding.
I am very much a beginnner so many things are a bit cloudy.
I have a heex template below:
<main class="px-4 py-20 sm:px-6 lg:px-8">
<.form for={@form} phx-change="validate" phx-submit="Go">
<div class="p-2">
<div>
<.input
name="version"
field={@form[:version_id]}
options={@versions}
type="select"
phx-change="select-version"
value=""
label="Select a Version"
/>
</div>
<div>
<.input
name="customer"
field={@form[:customer_id]}
options={[]}
type="select"
phx-change="select-customer"
value=""
label="Select a Customer:"
/>
</div>
<div>
<.button>
Go
</.button>
</div>
</div>
</.form>
<pre><%= inspect assigns, pretty: true %></pre>
</main>
There are two <selects one is dependent on the other.
So the value selected from versions will populate the other selector with a list of customers that belong to that version.
The related code looks like this at the moment.
defmodule CustomerbuilderWeb.MainLive.Index do
use CustomerbuilderWeb, :live_view
alias Customerbuilder.Builder
@impl true
def mount(_params, _session, socket) do
{:ok,
socket
|> assign(:versions, get_versions())
|> clear_form()}
end
@impl true
def handle_event("select-version", %{"id" => id}, socket) do
{:noreply, stream(socket, :version_collection, id)}
end
@impl true
def handle_event("select-customer", %{"id" => id}, socket) do
{:noreply, stream(socket, :version_collection, id)}
end
def assign_form(socket, changeset) do
assign(socket, :form, to_form(changeset))
end
def clear_form(socket) do
form =
socket.assigns
|> to_form()
assign(socket, :form, form)
end
defp get_versions() do
for version <- Builder.list_version(), do: {version.name, version.id}
end
end
Once the version and customer is set the Go button will take those values and send a POST request to an api (using HTTPPoison?) to kick off a build.
Then a kind of polling to api monitor the progress of the build to update the UI, which I haven’t even started.
a map with atom keys was given to a form. Maps are always considered parameters and therefore must have string keys, got: %{versions: [{"Version-8.6.2",1}, {"Version-8.6.1", 2}, {"Version-8.5.3", 3},
I am very grateful for any interest here.
Trending in Questions
Hey guys,
I’ve got a huge CSV ( around 10 GB ) that needs to be processed hourly
Do you guys have any suggestions what is the best prac...
New
Hello!
Could someone please give me a help/sample code, how to delete a file from s3 using waffle/waffle_ecto from Phoenix app.
I creat...
New
I’m seeing that a list inside a Kino.DataTable will be interpreted as a charlist, even if the Kino.configure() is set to charlists: :as_l...
New
So my question is quite simple and i have found no conclusive answer on forum, google or AI.
Should we use :erlang.float for Integer to ...
New
Hi, I’ve just set up an application with ash_authentication. There is only magic link strategy for now, so there is no confirmation add o...
New
If a change or preparation module uses Ash.Changeset.get_argument/2 or Ash.Query.get_argument/2 (or any of the other get_argument functio...
New
I’m trying to set up Emacs with elixir-ls via lsp-mode and credo via Flycheck. This should mostly be preconfigured as Flycheck picks up c...
New
Other Trending Topics
I am happy to introduce the very α version of the new programming language compiled to BEAM.
Welcome Cure.
It has literally three kille...
New
Hobbes is a low-level distributed database for the Elixir programming language.
Hobbes provides a simple, safe, and scalable storage lay...
New
Hi there! We created Gust: A task orchestrator inspired by Airflow.
For those who have never heard about Aiflow, it’s a Python-based wor...
New
Beam Bots (or just BB for short) is a framework for building fault-tolerant robotics applications in Elixir using familiar OTP patterns. ...
New
ExRatatui lets you cook up rich terminal UIs in Elixir, powered by Rust’s ratatui via Rustler NIFs. Build interactive terminal applicatio...
New
Hello everyone. After busy few months I am happy to announce v0.1.0 of Emerge & Solve.
They are GUI (Emerge) and State management (S...
New
Categories:
Sub Categories:
Forums
Popular Tags
- #ecto
- #liveview
- #troubleshooting
- #learning-elixir
- #deployment
- #library
- #erlang
- #testing
- #genserver
- #mix
- #absinthe
- #remote-other
- #otp
- #plug
- #how-to-question
- #macros
- #postgres
- #elixirconf
- #channels
- #exunit
- #discussion
- #code-sync
- #podcasts
- #javascript
- #onsite
- #dialyzer
- #docker
- #authentication
- #umbrella
- #full-time-contract
- #podcasts-by-brainlid
- #ecto-query
- #blog-post
- #elixirconf-us
- #elixir-ls
- #ai
- #phoenix_html
- #iex
- #graphql
- #genstage
- #websockets
- #supervisor
- #advent-of-code
- #distillery
- #processes
- #api
- #forms
- #hex
- #security
- #metaprogramming










Showing Posts 1 to 4- Show Best Posts
- Show All (oldest first)
- Show All (newest first)
LionelHutz
Looks interesting! Thanks for sharing. Just to confirm - are you looking for advice/insight on how to get to the functionality describe starting from the above, or saying that there’s a more particular problem with how it should already be working?
Thanks.
roganjoshua
I am trying to get any of it working… it is really understanding exactly how it all hangs together.
mount : this is like a init for the live view and you can add models? to the socket for transfer across the websocket
I have added an array of key/value pairs (which I get t from the db) to the versions variable for use by the template. and then send it to a form was a schemaless changeset.
I expect the handle_event for select-version to do something which it really doesn’t at the moment but would do something like
and assign that to the socket for the customer <.select
It is the form bit I am unsure of
not sure how to set this or retrieve it for example
codeanpeace
The data set as assigns and/or streams in the server side socket isn’t transfered across the websocket. It’s the rendered HTML template and subsequent changes/diffs that get sent to the client side via the websocket.
https://github.com/codeanpeace/live_cal/commit/300d7843a31f28a31678db0cf3dd81722656bec8
roganjoshua
Appreciate the time and effort you have put in here @codeanpeace .
It really helps to see examples like this as I can piece together how it works by connecting the names of things.