diff --git a/friends/lib/friends/relationship.ex b/friends/lib/friends/relationship.ex index 1960ef3..58f1f16 100644 --- a/friends/lib/friends/relationship.ex +++ b/friends/lib/friends/relationship.ex @@ -68,6 +68,12 @@ defmodule Friends.Relationship do ) end + + def all() do + preloads = [] + @repo.all(from(r in Friends.Relationship, preload: ^preloads)) + end + def new(friend1, friend2, type \\ 0) do id1 = friend1.id id2 = friend2.id diff --git a/friends/lib/friends_web/controllers/page_controller.ex b/friends/lib/friends_web/controllers/page_controller.ex index d567bf8..b0f0178 100644 --- a/friends/lib/friends_web/controllers/page_controller.ex +++ b/friends/lib/friends_web/controllers/page_controller.ex @@ -1,7 +1,16 @@ defmodule FriendsWeb.PageController do use FriendsWeb, :controller + alias Friends.{Friend, Relationship} + import Helpers def index(conn, _params) do - render(conn, "index.html") + + new_friend = Friend.new |> Friend.changeset + + conn + |> assign(:new_friend, new_friend) + |> assign(:all_friends, Friend.all) + |> assign(:all_relationships, Relationship.all) + |> render("index.html") end end diff --git a/friends/lib/friends_web/live/components/sign_up.ex b/friends/lib/friends_web/live/components/sign_up.ex new file mode 100644 index 0000000..29b92a4 --- /dev/null +++ b/friends/lib/friends_web/live/components/sign_up.ex @@ -0,0 +1,40 @@ +defmodule FriendsWeb.Components.SignUp do + use FriendsWeb, :live_component + import Helpers + + def sign_up_form(assigns) do + ~H""" + <.form + for={@new_friend} + let={f} + phx_change= "validate" + > + +
+ <%= label f, :name, class: "label font-bold" %> + <%= text_input f, :name, placeholder: "First Middle Last", class: "ml-2 flex-grow input input-bordered input-primary w-full max-w-xs", phx_debounce: "blur"%> +
+
 <%= error_tag f, :name %>
+ +
+ <%= label f, :email, class: "label font-bold" %> + <%= text_input f, :email, placeholder: "my.friend@gmail.com", class: "ml-2 flex-grow input input-bordered input-primary w-full max-w-xs", phx_debounce: "blur"%> +
+
 <%= error_tag f, :email %>
+ +
+ <%= label f, :phone, class: "label font-bold" %> + <%= text_input f, :phone, placeholder: "+1 234 5678", class: "ml-2 flex-grow input input-bordered input-primary w-full max-w-xs", phx_debounce: "blur"%> +
+
 <%= error_tag f, :phone %>
+ + +
+ <%= submit "Save", phx_disable_with: "Saving...", class: "btn" %> +
+ + + + """ + end +end diff --git a/friends/lib/friends_web/router.ex b/friends/lib/friends_web/router.ex index 28d63fe..b7b4bea 100644 --- a/friends/lib/friends_web/router.ex +++ b/friends/lib/friends_web/router.ex @@ -14,10 +14,10 @@ defmodule FriendsWeb.Router do plug :accepts, ["json"] end - scope "/", FriendsWeb.FriendsLive do + scope "/", FriendsWeb do pipe_through :browser - live "/", Index + get "/", PageController, :index live "/friend/:slug", FriendsLive.Show end diff --git a/friends/lib/friends_web/templates/layout/app.html.heex b/friends/lib/friends_web/templates/layout/app.html.heex index 169aed9..3c85ca3 100644 --- a/friends/lib/friends_web/templates/layout/app.html.heex +++ b/friends/lib/friends_web/templates/layout/app.html.heex @@ -1,5 +1,24 @@ -
- - - <%= @inner_content %> -
+ +
+
+ <%= @inner_content %> +
+
+
+ + + +
\ No newline at end of file diff --git a/friends/lib/friends_web/templates/layout/root.html.heex b/friends/lib/friends_web/templates/layout/root.html.heex index 385e187..dcee7bc 100644 --- a/friends/lib/friends_web/templates/layout/root.html.heex +++ b/friends/lib/friends_web/templates/layout/root.html.heex @@ -1,5 +1,5 @@ - + diff --git a/friends/lib/friends_web/templates/page/index.html.heex b/friends/lib/friends_web/templates/page/index.html.heex new file mode 100644 index 0000000..de91e60 --- /dev/null +++ b/friends/lib/friends_web/templates/page/index.html.heex @@ -0,0 +1,35 @@ +
+
+

+ Friends App +

+

+ Friends helps us remember the important + dates in your life, keep track of any big life changes, + and basically act like the 2011 Facebook we all miss. +

+

+ Database stats +

+ +
+
+
+

+ Sign Up +

+ <.sign_up new_friend={@new_friend} /> +
+
+
\ No newline at end of file diff --git a/friends/lib/friends_web/views/page_view.ex b/friends/lib/friends_web/views/page_view.ex index 2997cec..398ce1e 100644 --- a/friends/lib/friends_web/views/page_view.ex +++ b/friends/lib/friends_web/views/page_view.ex @@ -1,3 +1,10 @@ defmodule FriendsWeb.PageView do use FriendsWeb, :view + import Phoenix.Component + import Helpers + + alias FriendsWeb.Components.SignUp, as: SignUp + + def sign_up(assigns), do: SignUp.sign_up_form(assigns) + end