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 @@
-
- <%= get_flash(@conn, :info) %>
- <%= get_flash(@conn, :error) %>
- <%= @inner_content %>
-
+
+
+
+ <.link navigate={"/"} class="btn btn-ghost normal-case text-xl">Friends
+
+
+
+
+
+
+ <%= @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
+
+
+ -
+ <.link patch="/friends" class="">
+ <%= pluralize(@all_friends |> length, "friend") %>
+
+
+ -
+ <.link patch="/relationships" class="">
+ <%= pluralize(@all_relationships |> length, "relationship") %>
+
+
+
+
+
+
+
+ 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