Ver código fonte

base web view

Chris Mague 7 anos atrás
pai
commit
bc9165a86c
6 arquivos alterados com 111 adições e 0 exclusões
  1. 2 0
      Gemfile
  2. 16 0
      config.ru
  3. 4 0
      web/controllers.rb
  4. 21 0
      web/controllers/toppage.rb
  5. 67 0
      web/views/base_layout.html.erb
  6. 1 0
      web/views/index.html.erb

+ 2 - 0
Gemfile

@@ -7,6 +7,8 @@ gem 'mime-types'
 gem 'neo4j', '7.2.0'
 gem 'rspec'
 gem 'rubytree'
+gem 'sinatra'
+gem 'sinatra-respond_to'
 
 group :development do
   gem 'rubocop', require: false

+ 16 - 0
config.ru

@@ -0,0 +1,16 @@
+# controllers to load
+require (File.join(File.dirname(__FILE__), 'web', 'controllers'))
+
+# serve up static assets using rack
+map "/js" do
+  run Rack::Directory.new("#{File.join(File.dirname(__FILE__), 'web', 'static', 'js')}")
+end
+
+# serve up static assets using rack
+map "/bootstrap" do
+  run Rack::Directory.new("#{File.join(File.dirname(__FILE__), 'web', 'static', 'js')}")
+end
+
+map "/" do
+    run Toppage
+end

+ 4 - 0
web/controllers.rb

@@ -0,0 +1,4 @@
+# Dynamically pick up all of the controllers
+Dir.glob(File.join(File.dirname(__FILE__), 'controllers', '*.rb')).select{|c| File.basename(c) != 'controllers.rb' }.each do |x|
+  require x
+end

+ 21 - 0
web/controllers/toppage.rb

@@ -0,0 +1,21 @@
+require 'sinatra'
+require 'sinatra/base'
+require 'sinatra/respond_to'
+
+class Toppage < Sinatra::Base
+  register Sinatra::RespondTo
+  set :public_folder, File.join(File.dirname(__FILE__) , '..' , '/static')
+  set :views, File.join(File.dirname(__FILE__), '..', '/views')
+
+  #just respond with OK, so that monitoring knows that the application is running
+  get '/monitor' do
+    "OK"
+  end
+
+  get '/' do
+    respond_to do |wants|
+      wants.html {  erb :index,
+      :layout => :base_layout }
+    end
+  end
+end

+ 67 - 0
web/views/base_layout.html.erb

@@ -0,0 +1,67 @@
+<!DOCTYPE html>
+<html lang="en">
+  <head>
+    <meta charset="utf-8">
+    <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
+    <meta name="description" content="">
+    <meta name="author" content="">
+    <link rel="icon" href="../../favicon.ico">
+    <script src="https://code.jquery.com/jquery-3.1.1.slim.min.js" integrity="sha384-A7FZj7v+d/sdmMqp/nOQwliLvUsJfDHW+k9Omg/a/EheAdgtzNs3hpfag6Ed950n" crossorigin="anonymous"></script>
+    <script src="https://cdnjs.cloudflare.com/ajax/libs/tether/1.4.0/js/tether.min.js" integrity="sha384-DztdAPBWPRXSA/3eYEEUWrWCy7G5KFbe8fFjk5JAIxUYHKkDx6Qin1DkWx51bBrb" crossorigin="anonymous"></script>
+
+    <title>Neo4 Infra</title>
+
+    <!-- Custom styles for this template -->
+  </head>
+
+  <body>
+
+    <nav class="navbar navbar-toggleable-md navbar-inverse fixed-top bg-inverse">
+      <button class="navbar-toggler navbar-toggler-right" type="button" data-toggle="collapse" data-target="#navbarsExampleDefault" aria-controls="navbarsExampleDefault" aria-expanded="false" aria-label="Toggle navigation">
+        <span class="navbar-toggler-icon"></span>
+      </button>
+      <a class="navbar-brand" href="#">Navbar</a>
+
+      <div class="collapse navbar-collapse" id="navbarsExampleDefault">
+        <ul class="navbar-nav mr-auto">
+          <li class="nav-item active">
+            <a class="nav-link" href="/load/all">Load Data <span class="sr-only">(current)</span></a>
+          </li>
+          <li class="nav-item dropdown">
+            <a class="nav-link dropdown-toggle" id="dropdown01" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">Views</a>
+            <div class="dropdown-menu" aria-labelledby="dropdown01">
+              <a class="dropdown-item" href="/audit/tags">Tag Audit</a>
+              <a class="dropdown-item" href="/load/all">Load Data</a>
+            </div>
+          </li>
+        </ul>
+        <form class="form-inline my-2 my-lg-0">
+          <input class="form-control mr-sm-2" type="text" placeholder="Search">
+          <button class="btn btn-outline-success my-2 my-sm-0" type="submit">Search</button>
+        </form>
+      </div>
+    </nav>
+
+    <!-- Main jumbotron for a primary marketing message or call to action -->
+    <div class="jumbotron">
+      <div class="container">
+        <%= yield %>
+      </div>
+    </div>
+
+    <div class="container">
+      <hr>
+      <footer>
+        <p>&copy; Christian Mague 2017</p>
+      </footer>
+    </div> <!-- /container -->
+
+
+    <!-- Bootstrap core JavaScript
+    ================================================== -->
+    <!-- Placed at the end of the document so the pages load faster -->
+    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0-alpha.6/css/bootstrap.min.css" integrity="sha384-rwoIResjU2yc3z8GV/NPeZWAv56rSmLldC3R/AZzGRnGxQQKnKkoFVhFQhNUwEyJ" crossorigin="anonymous">
+<script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0-alpha.6/js/bootstrap.min.js" integrity="sha384-vBWWzlZJ8ea9aCX4pEW3rVHjgjt7zpkNpZk+02D9phzyeVkE+jo0ieGizqPLForn" crossorigin="anonymous"></script>
+    <script>window.jQuery || document.write('<script src="../../assets/js/vendor/jquery.min.js"><\/script>')</script>
+  </body>
+</html>

+ 1 - 0
web/views/index.html.erb

@@ -0,0 +1 @@
+<h2 class="title"><br><br><center>Visualize your AWS infrastructure </center></h2>