Added cluster selection and creation path.

This commit is contained in:
James Patrick 2020-05-23 02:23:37 -04:00
parent a93cb22fb5
commit 052fab1d91
18 changed files with 99 additions and 19 deletions

View File

@ -2,4 +2,11 @@
class ApplicationController < ActionController::Base
prepend_view_path Rails.root.join('frontend')
def valid_cluster?
return false unless session[:cluster_uuid]
return false unless Cluster.get(session[:cluster_uuid])
true
end
end

View File

@ -3,17 +3,19 @@
# This is the landing for a specific tally cluster
class ClusterController < ApplicationController
before_action :only_for_unknown
def new; end
def show
@clusters = Cluster.list
end
def create
# TODO: This will need to modify a shared object to insert a new tally cluster.
session[:cluster] = params[:cluster]
cluster = Cluster.new(params[:cluster])
session[:cluster_uuid] = cluster.uuid;
redirect_to root_path
end
private
def only_for_unknown
redirect_to root_path if session[:cluster]
redirect_to root_path if valid_cluster?
end
end

View File

@ -8,6 +8,6 @@ class CounterController < ApplicationController
private
def associate!
redirect_to cluster_path unless session[:cluster]
redirect_to cluster_path unless valid_cluster?
end
end

View File

@ -4,7 +4,7 @@ require 'securerandom'
# A collective for a tally
class Cluster
attr_reader :count, :name, :status, :uuid
attr_reader :count, :name, :status, :uuid, :created_on
@@clusters = {}
def initialize(name)
@ -13,6 +13,7 @@ class Cluster
@count = 0
@status = :open
@mutex = Mutex.new
@created_on = Time.new
@@clusters[@uuid] = self
end

View File

@ -1,4 +0,0 @@
<%= c("page") do %>
<%= c("cluster-list") %>
<%= c("cluster-new") %>
<% end %>

View File

@ -0,0 +1,3 @@
<%= c("page") do %>
<%= c("cluster-view") %>
<% end %>

View File

@ -0,0 +1,5 @@
<div class="cluster-list">
<% clusters.each do |cluster| %>
<%= c("cluster", cluster: cluster) %>
<% end %>
</div>

View File

@ -1 +1,3 @@
import "./cluster-list.pcss";
import "components/cluster/cluster";

View File

@ -1 +1,4 @@
/* placeholder */
.cluster-list {
line-height: 1.5;
margin-bottom: 2rem;
}

View File

@ -1,10 +1,4 @@
.create-cluster-form {
display: flex;
justify-content: center;
align-items: center;
width: 100%;
height: 100%;
& input {
width: 100%;
padding: 12px 0;

View File

@ -0,0 +1,4 @@
<div class="cluster-view">
<%= c("cluster-list", clusters: @clusters.values) %>
<%= c("cluster-new") %>
</div>

View File

@ -0,0 +1,8 @@
.cluster-view {
display: flex;
flex-direction: column;
justify-content: center;
align-items: center;
width: 100%;
height: 100%;
}

View File

@ -0,0 +1,4 @@
import "./cluster-view.css";
import "components/cluster-new/cluster-new";
import "components/cluster-list/cluster-list";

View File

@ -0,0 +1,6 @@
<a href="cluster/<%=cluster.uuid%>" class="cluster">
<span class="panel-icon"><i class="fa fa-sort" aria-hidden="true"></i></span>
<span class="panel-text">
<%= cluster.name %></span>
<span class="panel-subtext"> created on <%= cluster.created_on.strftime("%Y-%m-%d %H:%M:%S")%></span>
</a>

View File

@ -0,0 +1 @@
import "./cluster.pcss";

View File

@ -0,0 +1,40 @@
.cluster {
align-items: center;
display: flex;
justify-content: flex-start;
padding: 0.5em 0.75em;
& .panel-icon {
display: inline-block;
font-size: 14px;
height: 1em;
line-height: 1em;
text-align: center;
vertical-align: top;
width: 1em;
color: #7a7a7a;
margin-right: 0.75em;
}
& .panel-text {
font-weight: 800;
margin-right: 0.5rem;
}
& .panel-subtext {
font-weight: 100;
opacity: 40%;
}
&:hover,
&:focus {
background-color: #f5f5f5;
& .panel-icon {
color: #3273dc;
}
}
&:not(:last-child) {
border-bottom: 1px solid #ededed;
}
}

View File

@ -5,3 +5,8 @@ body {
font-size: 16px;
line-height: 24px;
}
a {
color: inherit;
text-decoration: none;
}

View File

@ -1,5 +1,4 @@
import "init";
import "components/page/page";
import "components/cluster-list/cluster-list";
import "components/cluster-new/cluster-new";
import "components/cluster-view/cluster-view";