diff options
Diffstat (limited to 'shardweb/lib/templates')
-rw-r--r-- | shardweb/lib/templates/chat/chat.html.eex | 37 | ||||
-rw-r--r-- | shardweb/lib/templates/identity/list.html.eex | 32 | ||||
-rw-r--r-- | shardweb/lib/templates/identity/self.html.eex | 59 | ||||
-rw-r--r-- | shardweb/lib/templates/layout/app.html.eex | 227 | ||||
-rw-r--r-- | shardweb/lib/templates/layout/flashes.html.eex | 24 | ||||
-rw-r--r-- | shardweb/lib/templates/page/peer_list.html.eex | 47 | ||||
-rw-r--r-- | shardweb/lib/templates/page/shard_list.html.eex | 46 |
7 files changed, 472 insertions, 0 deletions
diff --git a/shardweb/lib/templates/chat/chat.html.eex b/shardweb/lib/templates/chat/chat.html.eex new file mode 100644 index 0000000..86c2fb6 --- /dev/null +++ b/shardweb/lib/templates/chat/chat.html.eex @@ -0,0 +1,37 @@ +<!-- Page Heading --> +<div class="row"> + <div class="col-lg-12"> + <h1 class="page-header"> + #<%= @room %> + <small>public chat room</small> + + </h1> + <ol class="breadcrumb"> + <li> + <i class="fa fa-comments"></i> Chat rooms + </li> + <li class="active"> + <i class="fa fa-comments"></i> #<%= @room %> + </li> + </ol> + </div> +</div> +<!-- /.row --> + +<%= render ShardWeb.LayoutView, "flashes.html", assigns %> + + + +<!-- The list of messages will appear here: --> +<ul id='msg-list' class='row' style='list-style: none; min-height:400px; padding: 10px; max-height: 400px; overflow: scroll'></ul> + +<div class="form-horizontal"> + <div class="form-group"> + <div class="col-sm-2 control-label"> + <strong><<%= @nick %>></strong> + </div> + <div class="col-sm-10"> + <input type="text" id="msg" class="form-control" placeholder="Your Message" autofocus> + </div> + </div> +</div> diff --git a/shardweb/lib/templates/identity/list.html.eex b/shardweb/lib/templates/identity/list.html.eex new file mode 100644 index 0000000..1354264 --- /dev/null +++ b/shardweb/lib/templates/identity/list.html.eex @@ -0,0 +1,32 @@ +<!-- Page Heading --> +<div class="row"> + <div class="col-lg-12"> + <h1 class="page-header"> + People on the network + + </h1> + <ol class="breadcrumb"> + <li class="active"> + <i class="fa fa-users"></i> People + </li> + </ol> + </div> +</div> +<!-- /.row --> + +<%= render ShardWeb.LayoutView, "flashes.html", assigns %> + + +<table class="table table-striped"> + <tr> + <th>User name</th> + <th>Public key</th> + </tr> + <%= for {_id, manifest, pid} <- people_list() do %> + <tr> + <td><i class="fa fa-user"></i> <%= GenServer.call(pid, :get_info).nick %> </td> + <td><small><%= manifest.pk |> Base.encode16 %></small></td> + </tr> + <% end %> +</table> + diff --git a/shardweb/lib/templates/identity/self.html.eex b/shardweb/lib/templates/identity/self.html.eex new file mode 100644 index 0000000..5e57e02 --- /dev/null +++ b/shardweb/lib/templates/identity/self.html.eex @@ -0,0 +1,59 @@ +<!-- Page Heading --> +<div class="row"> + <div class="col-lg-12"> + <h1 class="page-header"> + <%= @nick %> <small><%= @pk |> Base.encode16 %></small> + </h1> + <ol class="breadcrumb"> + <li> + <i class="fa fa-users"></i> My identities + </li> + <li class="active"> + <i class="fa fa-user"></i> <%= @nick %> + </li> + </ol> + </div> +</div> +<!-- /.row --> + +<%= render ShardWeb.LayoutView, "flashes.html", assigns %> + + +<%= form_for @conn, identity_path(@conn, :update), [class: "form-horizontal"], fn f -> %> + <div class="form-group"> + <label class="col-sm-2 control-label">Public key:</label> + <div class="col-sm-10"> + <input type="text" value="<%= @pk |> Base.encode16 %>" class="form-control" disabled /> + </div> + </div> + <div class="form-group"> + <%= label :nick, "Nickname:", class: ["col-sm-2 control-label"] %> + <div class="col-sm-10"> + <%= text_input f, :nick, [class: "form-control", value: @nick] %> + </div> + </div> + <div class="form-group"> + <div class="col-sm-offset-2 col-sm-10"> + <%= submit "Update", [class: "btn btn-default"] %> + </div> + </div> +<% end %> + +<h4>Other identities</h4> + +<ul> + <%= for pk2 <- identity_list(), pk2 != @pk do %> + <li> + <%= form_for @conn, identity_path(@conn, :switch), [class: "form-inline"], fn f -> %> + <%= hidden_input f, :pk, value: (pk2 |> Base.encode16) %> + <%= submit "Switch to", [class: "btn btn-xs btn-success"] %> + <strong><%= get_nick pk2 %></strong> + <small><%= pk2 |> Base.encode16 %></small> + <% end %> + </li> + <% end %> +</ul> + +<%= form_for @conn, identity_path(@conn, :create), [class: "form-inline"], fn _f -> %> + <%= submit "Create new identity", [class: "btn btn-danger"] %> +<% end %> diff --git a/shardweb/lib/templates/layout/app.html.eex b/shardweb/lib/templates/layout/app.html.eex new file mode 100644 index 0000000..5a087f2 --- /dev/null +++ b/shardweb/lib/templates/layout/app.html.eex @@ -0,0 +1,227 @@ +<!DOCTYPE html> +<html lang="en"> + +<head> + + <meta charset="utf-8"> + <meta http-equiv="X-UA-Compatible" content="IE=edge"> + <meta name="viewport" content="width=device-width, initial-scale=1"> + <meta name="description" content=""> + <meta name="author" content=""> + + <title>Shard.</title> + + <!-- Bootstrap Core CSS --> + <link href="<%= static_path(@conn, "/css/bootstrap.min.css") %>" rel="stylesheet"> + + <!-- Custom CSS --> + <link href="<%= static_path(@conn, "/css/sb-admin.css") %>" rel="stylesheet"> + + <!-- Morris Charts CSS --> + <link href="<%= static_path(@conn, "/css/plugins/morris.css") %>" rel="stylesheet"> + + <!-- Custom Fonts --> + <link href="<%= static_path(@conn, "/font-awesome/css/font-awesome.min.css") %>" rel="stylesheet" type="text/css"> + + <!-- HTML5 Shim and Respond.js IE8 support of HTML5 elements and media queries --> + <!-- WARNING: Respond.js doesn't work if you view the page via file:// --> + <!--[if lt IE 9]> + <script src="https://oss.maxcdn.com/libs/html5shiv/3.7.0/html5shiv.js"></script> + <script src="https://oss.maxcdn.com/libs/respond.js/1.4.2/respond.min.js"></script> + <![endif]--> + + <link rel="stylesheet" href="<%= static_path(@conn, "/css/app.css") %>"> +</head> + +<body> + + <div id="wrapper"> + + <!-- Navigation --> + <nav class="navbar navbar-inverse navbar-fixed-top" role="navigation"> + <!-- Brand and toggle get grouped for better mobile display --> + <div class="navbar-header"> + <button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-ex1-collapse"> + <span class="sr-only">Toggle navigation</span> + <span class="icon-bar"></span> + <span class="icon-bar"></span> + <span class="icon-bar"></span> + </button> + <a class="navbar-brand" href="<%= page_path(@conn, :peer_list) %>">Shard</a> + </div> + <!-- Top Menu Items --> + <ul class="nav navbar-right top-nav"> + <li class="dropdown"> + <a href="#" class="dropdown-toggle" data-toggle="dropdown"><i class="fa fa-envelope"></i> <b class="caret"></b></a> + <ul class="dropdown-menu message-dropdown"> + <li class="message-preview"> + <a href="#"> + <div class="media"> + <span class="pull-left"> + <img class="media-object" src="http://placehold.it/50x50" alt=""> + </span> + <div class="media-body"> + <h5 class="media-heading"><strong>John Smith</strong> + </h5> + <p class="small text-muted"><i class="fa fa-clock-o"></i> Yesterday at 4:32 PM</p> + <p>Lorem ipsum dolor sit amet, consectetur...</p> + </div> + </div> + </a> + </li> + <li class="message-preview"> + <a href="#"> + <div class="media"> + <span class="pull-left"> + <img class="media-object" src="http://placehold.it/50x50" alt=""> + </span> + <div class="media-body"> + <h5 class="media-heading"><strong>John Smith</strong> + </h5> + <p class="small text-muted"><i class="fa fa-clock-o"></i> Yesterday at 4:32 PM</p> + <p>Lorem ipsum dolor sit amet, consectetur...</p> + </div> + </div> + </a> + </li> + <li class="message-preview"> + <a href="#"> + <div class="media"> + <span class="pull-left"> + <img class="media-object" src="http://placehold.it/50x50" alt=""> + </span> + <div class="media-body"> + <h5 class="media-heading"><strong>John Smith</strong> + </h5> + <p class="small text-muted"><i class="fa fa-clock-o"></i> Yesterday at 4:32 PM</p> + <p>Lorem ipsum dolor sit amet, consectetur...</p> + </div> + </div> + </a> + </li> + <li class="message-footer"> + <a href="#">Read All New Messages</a> + </li> + </ul> + </li> + <li class="dropdown"> + <a href="#" class="dropdown-toggle" data-toggle="dropdown"><i class="fa fa-bell"></i> <b class="caret"></b></a> + <ul class="dropdown-menu alert-dropdown"> + <li> + <a href="#">Alert Name <span class="label label-default">Alert Badge</span></a> + </li> + <li> + <a href="#">Alert Name <span class="label label-primary">Alert Badge</span></a> + </li> + <li> + <a href="#">Alert Name <span class="label label-success">Alert Badge</span></a> + </li> + <li> + <a href="#">Alert Name <span class="label label-info">Alert Badge</span></a> + </li> + <li> + <a href="#">Alert Name <span class="label label-warning">Alert Badge</span></a> + </li> + <li> + <a href="#">Alert Name <span class="label label-danger">Alert Badge</span></a> + </li> + <li class="divider"></li> + <li> + <a href="#">View All</a> + </li> + </ul> + </li> + <li class="dropdown"> + <a href="#" class="dropdown-toggle" data-toggle="dropdown"><i class="fa fa-user"></i> <%= @nick %> <b class="caret"></b></a> + <ul class="dropdown-menu"> + <li> + <a href="<%= identity_path(@conn, :self) %>"><i class="fa fa-fw fa-user"></i> Profile</a> + </li> + <li class="divider"></li> + <li> + <a href="#"><i class="fa fa-fw fa-envelope"></i> Inbox</a> + </li> + <li> + <a href="#"><i class="fa fa-fw fa-gear"></i> Settings</a> + </li> + <li> + <a href="#"><i class="fa fa-fw fa-power-off"></i> Log Out</a> + </li> + </ul> + </li> + </ul> + <!-- Sidebar Menu Items - These collapse to the responsive navigation menu on small screens --> + <div class="collapse navbar-collapse navbar-ex1-collapse"> + <ul class="nav navbar-nav side-nav"> + <li class="<%= if @view_module == ShardWeb.IdentityView do "active" else "" end %>"> + <a href="<%= identity_path(@conn, :self) %>"><i class="fa fa-fw fa-user"></i> <%= @nick %></a> + </li> + <li class="<%= if @view_module == ShardWeb.RoomView do "active" else "" end %>"> + <a href="javascript:;" data-toggle="collapse" data-target="#demo"><i class="fa fa-fw fa-comments"></i> Chat rooms <i class="fa fa-fw fa-caret-down"></i></a> + <ul id="demo" class="<%= if @view_module != ShardWeb.RoomView do "collapse" else "" end %>"> + + + <%= for {_, %SApp.Chat.Manifest{channel: name}, _} <- shard_list() do %> + <li class="<%= if @view_module == ShardWeb.RoomView and @room == name do "custom_active" else "" end %>"> + <a href="<%= chat_path(@conn, :chat, name) %>">#<%= name %></a> + </li> + <% end %> + <li> + <a href="#" onclick="if(new_room=prompt('Enter name of room to join, without preceding # sign:'))window.location.href='/room/'+new_room;">Join room</a> + </li> + + + </ul> + </li> + <li> + <a href="<%= identity_path(@conn, :list) %>"><i class="fa fa-fw fa-users"></i> People</a> + </li> + <li class="<%= if @view_module == ShardWeb.PageView and @view_template == "peer_list.html" do "active" else "" end %>"> + <a href="<%= page_path(@conn, :peer_list) %>"><i class="fa fa-fw fa-globe"></i> Peer list</a> + </li> + <li> + <a href="#"><i class="fa fa-fw fa-gear"></i> Settings</a> + </li> + <li> + <a href="<%= page_path(@conn, :shard_list) %>"><i class="fa fa-fw fa-dashboard"></i> Dashboard</a> + </li> + </ul> + </div> + <!-- /.navbar-collapse --> + </nav> + + <div id="page-wrapper"> + + <div class="container-fluid"> + + + + <%= render @view_module, @view_template, assigns %> + + </div> + <!-- /.container-fluid --> + + </div> + <!-- /#page-wrapper --> + + </div> + <!-- /#wrapper --> + + <!-- jQuery --> + <script src="<%= static_path(@conn, "/js/jquery.js") %>"></script> + + <!-- Bootstrap Core JavaScript --> + <script src="<%= static_path(@conn, "/js/bootstrap.min.js") %>"></script> + + <!-- Morris Charts JavaScript --> + <script src="<%= static_path(@conn, "/js/plugins/morris/raphael.min.js") %>"></script> + <script src="<%= static_path(@conn, "/js/plugins/morris/morris.min.js") %>"></script> + <script src="<%= static_path(@conn, "/js/plugins/morris/morris-data.js") %>"></script> + + <%= render_gon_script(@conn) %> + <script src="<%= static_path(@conn, "/js/app.js") %>"></script> + +</body> + +</html> + diff --git a/shardweb/lib/templates/layout/flashes.html.eex b/shardweb/lib/templates/layout/flashes.html.eex new file mode 100644 index 0000000..5371f43 --- /dev/null +++ b/shardweb/lib/templates/layout/flashes.html.eex @@ -0,0 +1,24 @@ + + <%= if get_flash(@conn, :info) do %> + <div class="row"> + <div class="col-lg-12"> + <div class="alert alert-info alert-dismissable"> + <button type="button" class="close" data-dismiss="alert" aria-hidden="true">×</button> + <i class="fa fa-info-circle"></i> <%= get_flash(@conn, :info) %> + </div> + </div> + </div> + <% end %> + <!-- /.row --> + + <%= if get_flash(@conn, :error) do %> + <div class="row"> + <div class="col-lg-12"> + <div class="alert alert-warning alert-dismissable"> + <button type="button" class="close" data-dismiss="alert" aria-hidden="true">×</button> + <i class="fa fa-info-circle"></i> <%= get_flash(@conn, :error) %> + </div> + </div> + </div> + <% end %> + <!-- /.row --> diff --git a/shardweb/lib/templates/page/peer_list.html.eex b/shardweb/lib/templates/page/peer_list.html.eex new file mode 100644 index 0000000..f385528 --- /dev/null +++ b/shardweb/lib/templates/page/peer_list.html.eex @@ -0,0 +1,47 @@ +<!-- Page Heading --> +<div class="row"> + <div class="col-lg-12"> + <h1 class="page-header"> + Peer list + + </h1> + <ol class="breadcrumb"> + <li> + <i class="fa fa-dashboard"></i> Dashboard + </li> + <li class="active"> + <i class="fa fa-globe"></i> Peer list + </li> + </ol> + </div> +</div> +<!-- /.row --> + +<%= render ShardWeb.LayoutView, "flashes.html", assigns %> + +<table class="table table-striped"> + <tr> + <th>Peer ID</th> + <th>Address</th> + <th>Port</th> + </tr> + <%= for {{:inet, ip, port}, _pid, auth} <- conn_list() do %> + <tr> + <td> + <%= case auth do %> + <% nil -> %>(anonymous) + <% %SNet.Auth{his_pk: his_pk} -> %> <%= Shard.Keys.pk_display(his_pk) %> + <% end %> + </td> + <td><%= :inet_parse.ntoa(ip) %></td> + <td><%= port %></td> + </tr> + <% end %> +</table> + +<%= form_for @conn, page_path(@conn, :add_peer), [class: "form-inline"], fn f -> %> + <%= text_input f, :ip, [class: "form-control", placeholder: "Hostname / IP address"] %> + <%= text_input f, :port, [class: "form-control", placeholder: "Port", value: "4044"] %> + <%= submit "Add peer", [class: "btn btn-default"] %> +<% end %> + diff --git a/shardweb/lib/templates/page/shard_list.html.eex b/shardweb/lib/templates/page/shard_list.html.eex new file mode 100644 index 0000000..a0648d3 --- /dev/null +++ b/shardweb/lib/templates/page/shard_list.html.eex @@ -0,0 +1,46 @@ +<!-- Page Heading --> +<div class="row"> + <div class="col-lg-12"> + <h1 class="page-header"> + Shard list + + </h1> + <ol class="breadcrumb"> + <li> + <i class="fa fa-dashboard"></i> Dashboard + </li> + <li class="active"> + <i class="fa fa-table"></i> Shard list + </li> + </ol> + </div> +</div> +<!-- /.row --> + +<%= render ShardWeb.LayoutView, "flashes.html", assigns %> + +<table class="table table-striped"> + <tr> + <th>Shard</th> + <th>Id</th> + <th>Pid</th> + </tr> + <%= for {id, manifest, pid} <- shard_list() do %> + <tr> + <td> + <%= case manifest do %> + <% %SApp.Identity.Manifest{pk: pk} -> %><i class="fa fa-user"></i> + <%= GenServer.call(pid, :get_info).nick %> + <small><%= Shard.Keys.pk_display pk %></small> + <% %SApp.Chat.Manifest{channel: chan} -> %><i class="fa fa-comments"></i> #<%= chan %> + <% %SApp.Chat.PrivChat.Manifest{pk_list: pk_list} -> %><i class="fa fa-comment"></i> + <%= pk_list |> Enum.map(&SApp.Identity.get_nick/1) |> Enum.join(", ") %> + <% x -> %> <%= inspect x %> + <% end %> + </td> + <td><small><%= id |> Base.encode16 %></small></td> + <td><%= inspect(pid) %></td> + </tr> + <% end %> +</table> + |