Skip to content
This repository has been archived by the owner on Jan 26, 2022. It is now read-only.

Commit

Permalink
mostly working
Browse files Browse the repository at this point in the history
  • Loading branch information
davetron5000 committed Nov 22, 2015
1 parent ce15e1c commit b9aaf70
Show file tree
Hide file tree
Showing 25 changed files with 372 additions and 115 deletions.
1 change: 1 addition & 0 deletions .ruby-gemset
@@ -0,0 +1 @@
tech-radar
1 change: 1 addition & 0 deletions .ruby-version
@@ -0,0 +1 @@
2.2.3
4 changes: 3 additions & 1 deletion app/controllers/tech_radar/quadrants_controller.rb
Expand Up @@ -3,7 +3,9 @@
module TechRadar
class QuadrantsController < ApplicationController
def show
@quadrant = TechRadar::Radar.new.quadrant(params[:id])
tech_radar = TechRadar::Radar.new
@all_quadrant_names = tech_radar.quadrants.map(&:name)
@quadrant = tech_radar.quadrant(params[:id])
end
end
end
5 changes: 4 additions & 1 deletion app/controllers/tech_radar/radar_controller.rb
Expand Up @@ -3,9 +3,12 @@
module TechRadar
class RadarController < ApplicationController
def index
@hide_nav = true
@radar = TechRadar::Radar.new
end

def graph
def summary
@radar = TechRadar::Radar.new
end
end
end
11 changes: 11 additions & 0 deletions app/controllers/tech_radar/rings_controller.rb
@@ -0,0 +1,11 @@
require_dependency "tech_radar/application_controller"

module TechRadar
class RingsController < ApplicationController
def show
tech_radar = TechRadar::Radar.new
@all_ring_names = tech_radar.rings.map(&:name)
@ring = tech_radar.ring(params[:id])
end
end
end
22 changes: 22 additions & 0 deletions app/helpers/tech_radar/application_helper.rb
@@ -1,4 +1,26 @@
module TechRadar
module ApplicationHelper
def label_color_for_ring(ring_name)
if ring_name == 'Adopt'
:success
elsif ring_name == 'Hold'
:warning
else
:default
end
end

def panel_type_for_technology_why(technology)
if technology.why_summary.blank? && warn_on_missing_why?(technology)
:warning
else
:default
end
end

def warn_on_missing_why?(technology)
technology.ring != 'Adopt' && technology.ring != 'Trial'
end

end
end
18 changes: 0 additions & 18 deletions app/models/tech_radar/possibly_missing_url.rb

This file was deleted.

19 changes: 15 additions & 4 deletions app/models/tech_radar/radar.rb
Expand Up @@ -17,7 +17,7 @@ def quadrant(quadrant_name)
quadrant.each do |(ring,technologies)|
by_ring[ring] ||= []
(technologies || {}).each do |(name,data)|
by_ring[ring] << mk_technology(name,ring,quadrant,data)
by_ring[ring] << mk_technology(name,ring,quadrant_name,data)
end
end
TechRadar::Quadrant.new(
Expand All @@ -28,6 +28,16 @@ def quadrant(quadrant_name)
)
end

def rings
quadrants.map(&:rings).flatten.group_by(&:name).map { |(ring_name,rings)|
TechRadar::Ring.new(name: ring_name,technologies: rings.map(&:technologies).flatten.sort_by { |tech| tech.name.downcase })
}
end

def ring(ring_name)
rings.detect { |ring| ring.name == ring_name }
end

def technologies
quadrants.map(&:rings).flatten.map(&:technologies).flatten.sort_by { |technology| technology.name.downcase }
end
Expand All @@ -39,13 +49,14 @@ def technology(name)
private

def mk_technology(name,ring,quadrant,data)
puts data.inspect if name == 'api_client'
Technology.new(name: name,
ring: ring,
quadrant: quadrant,
what_url: PossiblyMissingUrl.new(name,data["what_url"]),
why_url: PossiblyMissingUrl.new(name,data["why_url"]),
more_details_url: data["more_details_url"],
why_url: data["why_url"],
purpose: data["purpose"],
notes: data["notes"])
why_summary: data["why_summary"])
end

end
Expand Down
2 changes: 1 addition & 1 deletion app/models/tech_radar/technology.rb
Expand Up @@ -2,4 +2,4 @@

module TechRadar
end
TechRadar::Technology = ImmutableStruct.new(:name, :ring, :quadrant, :purpose, :notes, :what_url, :why_url)
TechRadar::Technology = ImmutableStruct.new(:name, :ring, :quadrant, :purpose, :why_summary, :more_details_url, :why_url)
13 changes: 10 additions & 3 deletions app/views/layouts/tech_radar/application.html.erb
Expand Up @@ -3,12 +3,19 @@
<head>
<title>TechRadar</title>
<%= stylesheet_link_tag "tech_radar/application", media: "all" %>
<script src="https://code.jquery.com/jquery-2.1.4.min.js">
</script>
<%= javascript_include_tag "tech_radar/application" %>
<%= csrf_meta_tags %>
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/css/bootstrap.min.css" integrity="sha512-dTfge/zgoMYpP7QbHy4gWMEGsbsdZeCXz7irItjcC3sPUFtf0kuFbDz/ixG7ArTxmDjLXDmezHubeNikyKGVyQ==" crossorigin="anonymous">
</head>
<body>

<%= yield %>

<section class="container">
<% unless @hide_nav %>
<h1><%= link_to t("tech_radar.radar.title").html_safe, radar_index_path %></h1>
<hr>
<% end %>
<%= yield %>
</section>
</body>
</html>
35 changes: 28 additions & 7 deletions app/views/tech_radar/quadrants/show.html.erb
@@ -1,12 +1,33 @@
<ul>
<section>
<nav>
<ul class="nav nav-pills">
<% @all_quadrant_names.each do |quadrant_name| %>
<li role="presentation" class="<%= quadrant_name == @quadrant.name ? 'active' : '' %>"><%= link_to t("tech_radar.radar.quadrants.#{quadrant_name}.title"), quadrant_path(quadrant_name) %></li>
<% end %>
</ul>
</nav>
<hr>
<h2 class="sr-only"><%= t("tech_radar.radar.quadrants.#{@quadrant.name}.title") %></h2>
<p class="lead"><%= t("tech_radar.radar.quadrants.#{@quadrant.name}.description") %></p>
<% @quadrant.rings.each do |ring| %>
<li>
<%= ring.name %>
<ul>
<section>
<h1 class="h2">
<%= t("tech_radar.radar.rings.#{ring.name}.title") %>
<small><%= t("tech_radar.radar.rings.#{ring.name}.summary").html_safe %></small>
</h1>
<ul class="list-unstyled">
<% ring.technologies.each do |technology| %>
<li><%= technology.name %></li>
<li>
<p class="h4">
<%= link_to technology.name, technology_path(technology.name) %>
&middot;
<small>
<%= technology.purpose %>
</small>
</p>
</li>
<% end %>
</ul>
</li>
</section>
<% end %>
</ul>
</section>
1 change: 0 additions & 1 deletion app/views/tech_radar/radar/graph.html.erb

This file was deleted.

50 changes: 47 additions & 3 deletions app/views/tech_radar/radar/index.html.erb
@@ -1,3 +1,47 @@
<p>
<%= t("tech_radar.radar.index.preamble") %>
</p>
<section>
<div class="row">
<div class="col-md-2">&nbsp;</div>
<div class="col-md-8">
<header>
<h1><%= t("tech_radar.radar.title") %></h1>
</header>
<p class="lead">
<%= t("tech_radar.radar.index.preamble") %>
</p>
<%= link_to t("tech_radar.radar.index.summary_link"), radar_summary_path, class: "btn btn-primary" %>
<%= link_to t("tech_radar.radar.index.all_list_link"), technologies_path, class: "btn btn-default" %>
<section>
<h1 class="h2"><%= t("tech_radar.radar.index.howto.title") %></h1>
<h2 class="h3"><%= t("tech_radar.radar.rings.name") %></h1>
<p><%= t("tech_radar.radar.index.howto.rings.preamble") %></p>
<% @radar.rings.each_slice(2) do |rings| %>
<div class="row">
<% rings.each do |ring| %>
<div class="col-md-6">
<h3 class="h4"><%= link_to t("tech_radar.radar.rings.#{ring.name}.title"), ring_path(ring.name) %></h3>
<p class="text-muted"><%= t("tech_radar.radar.rings.#{ring.name}.description").html_safe %></p>
</div>
<% end %>
</div>
<% end %>
<h2 class="h3"><%= t("tech_radar.radar.quadrants.name") %></h1>
<p><%= t("tech_radar.radar.index.howto.quadrants.preamble") %></p>
<% @radar.quadrants.each_slice(2) do |quadrants| %>
<div class="row">
<% quadrants.each do |quadrant| %>
<div class="col-md-6">
<h3 class="h4"><%= link_to t("tech_radar.radar.quadrants.#{quadrant.name}.title"), quadrant_path(quadrant.name) %></h3>
<p class="text-muted"><%= t("tech_radar.radar.quadrants.#{quadrant.name}.description").html_safe %></p>
</div>
<% end %>
</div>
<% end %>
</section>
<section>
</section>
<h1 class="h2"><%= t("tech_radar.radar.index.changing.title") %></h1>
<p><%= t("tech_radar.radar.index.changing.preamble") %></p>
</section>
</div>
<div class="col-md-2">&nbsp;</div>
</section>
28 changes: 28 additions & 0 deletions app/views/tech_radar/radar/summary.html.erb
@@ -0,0 +1,28 @@
<div class="row">
<% @radar.quadrants.each do |quadrant| %>
<div class="col-md-3">
<h1 class="h3"><%= t("tech_radar.radar.quadrants.#{quadrant.name}.title") %></h1>
</div>
<% end %>
</div>
<% @radar.rings.each do |ring| %>
<article class="panel panel-<%= label_color_for_ring(ring.name) %>">
<div class="panel-heading">
<%= t("tech_radar.radar.rings.#{ring.name}.title") %>
</div>
<div class="panel-body">
<div class="row">
<% @radar.quadrants.each do |quadrant| %>
<div class="col-md-3">
<% ring.technologies.select { |technology| technology.quadrant == quadrant.name }.each_with_index do |technology,i| %>
<% if i != 0 %>
&middot;
<% end %>
<%= link_to technology.name, technology_path(technology.name) %>
<% end %>
</div>
<% end %>
</article>
</div>
</div>
<% end %>
30 changes: 30 additions & 0 deletions app/views/tech_radar/rings/show.html.erb
@@ -0,0 +1,30 @@
<section>
<nav>
<ul class="nav nav-pills">
<% @all_ring_names.each do |ring_name| %>
<li role="presentation" class="<%= ring_name == @ring.name ? 'active' : '' %>"><%= link_to t("tech_radar.radar.rings.#{ring_name}.title"), ring_path(ring_name) %></li>
<% end %>
</ul>
</nav>
<hr>
<h2 class="sr-only"><%= t("tech_radar.radar.rings.#{@ring.name}.title").html_safe %></h2>
<p class="lead"><%= t("tech_radar.radar.rings.#{@ring.name}.description").html_safe %></p>
<ul class="list-unstyled">
<% @ring.technologies.each do |technology| %>
<li>
<p class="h4">
<%= link_to technology.name, technology_path(technology.name) %>
&middot;
<small>
<%= technology.purpose %>
<%= link_to quadrant_path(technology.quadrant) do %>
<span class="label label-default">
<%= t("tech_radar.radar.quadrants.#{technology.quadrant}.title") %>
</span>
<% end %>
</small>
</p>
</li>
<% end %>
</ul>
</section>
27 changes: 22 additions & 5 deletions app/views/tech_radar/technologies/index.html.erb
@@ -1,6 +1,23 @@
<h1>All</h1>
<ul>
<% @technologies.each do |technology| %>
<li><%= technology.name %></li>
<h1 class="h2">A-Z</h1>
<nav class="pagination">
<% ('A'..'Z').each do |letter| %>
<li><a href="#<%= letter %>"><%= letter %></a></li>
<% end %>
</ul>
</nav>
<% @technologies.group_by { |technology| technology.name[0].upcase }.each do |letter,technologies| %>
<a name="<%= letter %>"></a>
<h2 class="h3"><%= letter %></h2>
<% technologies.each do |technology| %>
<ul class="list-unstyled">
<li>
<h1 class="h4">
<%= link_to technology.name, technology_path(technology.name) %>
<small>
<%= technology.purpose %>
<span class="label label-<%= label_color_for_ring(technology.ring) %>"><%= technology.ring %></span>
</small>
</h1>
</li>
<% end %>
</ul>
<% end %>
44 changes: 43 additions & 1 deletion app/views/tech_radar/technologies/show.html.erb
@@ -1 +1,43 @@
<h1><%= @technology.name %></h1>
<section>
<h1>
<%= @technology.name %>
<small>
<%= t("tech_radar.radar.quadrants.#{@technology.quadrant}.title") %>
<span class="label label-<%= label_color_for_ring(@technology.ring) %>"><%= t("tech_radar.radar.rings.#{@technology.ring}.title") %></span>
</small>
</h1>
<p class="lead"><%= @technology.purpose %></p>
<section>
<% if @technology.more_details_url.blank? %>
<p>
<%= link_to t("tech_radar.radar.technologies.more_details_url.google"), "https://www.google.com/search?q=#{@technology.name}", class: "btn btn-default" %>
</p>
<% else %>
<p>
<%= link_to t("tech_radar.radar.technologies.more_details_url.link"), @technology.more_details_url, class: "btn btn-default" %>
</p>
<% end %>
</section>
<section>
<hr>
<% if @technology.why_summary.present? %>
<p>
<span class="text-muted">
<%= @technology.why_summary %>
</span>
<% if @technology.why_url.present? %>
<%= link_to t("tech_radar.radar.technologies.why_summary.link"), @technology.why_url %>
<% end %>
</p>
<% else %>
<% if TechRadar.warn_on_missing_why_summary[@technology.ring] %>
<div class="alert alert-warning">
<%= t("tech_radar.radar.technologies.why_summary.no_summary").html_safe %>
<% if @technology.why_url.present? %>
<%= link_to t("tech_radar.radar.technologies.why_summary.url_only"), @technology.why_url %>
<% end %>
</div>
<% end %>
<% end %>
</section>
</section>

0 comments on commit b9aaf70

Please sign in to comment.