localtower 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/README.md +38 -0
- data/Rakefile +33 -0
- data/app/controllers/localtower/application_controller.rb +5 -0
- data/app/controllers/localtower/pages_controller.rb +55 -0
- data/app/helpers/localtower/application_helper.rb +19 -0
- data/app/views/layouts/localtower/application.html.erb +94 -0
- data/app/views/localtower/pages/dashboard.html.erb +55 -0
- data/app/views/localtower/pages/migrations.html.erb +99 -0
- data/app/views/localtower/pages/models.html.erb +78 -0
- data/app/views/localtower/pages/relations.html.erb +53 -0
- data/config/routes.rb +16 -0
- data/lib/localtower.rb +19 -0
- data/lib/localtower/engine.rb +9 -0
- data/lib/localtower/generators/migration.rb +275 -0
- data/lib/localtower/generators/model.rb +36 -0
- data/lib/localtower/generators/relation.rb +55 -0
- data/lib/localtower/tools.rb +173 -0
- data/lib/localtower/version.rb +3 -0
- data/lib/tasks/localtower_tasks.rake +4 -0
- data/public/css/app.css +29 -0
- data/public/js/app.js +106 -0
- data/public/light-bootstrap-dashboard-master/assets/css/animate.min.css +6 -0
- data/public/light-bootstrap-dashboard-master/assets/css/bootstrap.min.css +5 -0
- data/public/light-bootstrap-dashboard-master/assets/css/demo.css +61 -0
- data/public/light-bootstrap-dashboard-master/assets/css/light-bootstrap-dashboard.css +2815 -0
- data/public/light-bootstrap-dashboard-master/assets/css/pe-icon-7-stroke.css +632 -0
- data/public/light-bootstrap-dashboard-master/assets/fonts/Pe-icon-7-stroke.eot +0 -0
- data/public/light-bootstrap-dashboard-master/assets/fonts/Pe-icon-7-stroke.svg +212 -0
- data/public/light-bootstrap-dashboard-master/assets/fonts/Pe-icon-7-stroke.ttf +0 -0
- data/public/light-bootstrap-dashboard-master/assets/fonts/Pe-icon-7-stroke.woff +0 -0
- data/public/light-bootstrap-dashboard-master/assets/img/default-avatar.png +0 -0
- data/public/light-bootstrap-dashboard-master/assets/img/faces/face-0.jpg +0 -0
- data/public/light-bootstrap-dashboard-master/assets/img/faces/face-1.jpg +0 -0
- data/public/light-bootstrap-dashboard-master/assets/img/faces/face-2.jpg +0 -0
- data/public/light-bootstrap-dashboard-master/assets/img/faces/face-3.jpg +0 -0
- data/public/light-bootstrap-dashboard-master/assets/img/faces/face-4.jpg +0 -0
- data/public/light-bootstrap-dashboard-master/assets/img/faces/face-5.jpg +0 -0
- data/public/light-bootstrap-dashboard-master/assets/img/faces/face-6.jpg +0 -0
- data/public/light-bootstrap-dashboard-master/assets/img/faces/face-7.jpg +0 -0
- data/public/light-bootstrap-dashboard-master/assets/img/faces/tim_vector.jpe +0 -0
- data/public/light-bootstrap-dashboard-master/assets/img/favicon.ico +0 -0
- data/public/light-bootstrap-dashboard-master/assets/img/loading-bubbles.svg +14 -0
- data/public/light-bootstrap-dashboard-master/assets/img/mask.png +0 -0
- data/public/light-bootstrap-dashboard-master/assets/img/new_logo.png +0 -0
- data/public/light-bootstrap-dashboard-master/assets/img/sidebar-1.jpg +0 -0
- data/public/light-bootstrap-dashboard-master/assets/img/sidebar-2.jpg +0 -0
- data/public/light-bootstrap-dashboard-master/assets/img/sidebar-3.jpg +0 -0
- data/public/light-bootstrap-dashboard-master/assets/img/sidebar-4.jpg +0 -0
- data/public/light-bootstrap-dashboard-master/assets/img/sidebar-5.jpg +0 -0
- data/public/light-bootstrap-dashboard-master/assets/img/tim_80x80.png +0 -0
- data/public/light-bootstrap-dashboard-master/assets/js/bootstrap-checkbox-radio-switch.js +502 -0
- data/public/light-bootstrap-dashboard-master/assets/js/bootstrap-notify.js +404 -0
- data/public/light-bootstrap-dashboard-master/assets/js/bootstrap-select.js +438 -0
- data/public/light-bootstrap-dashboard-master/assets/js/bootstrap.min.js +7 -0
- data/public/light-bootstrap-dashboard-master/assets/js/chartist.min.js +9 -0
- data/public/light-bootstrap-dashboard-master/assets/js/demo.js +152 -0
- data/public/light-bootstrap-dashboard-master/assets/js/jquery-1.10.2.js +9789 -0
- data/public/light-bootstrap-dashboard-master/assets/js/light-bootstrap-dashboard.js +182 -0
- data/spec/dummy/Gemfile +33 -0
- data/spec/dummy/Gemfile.lock +186 -0
- data/spec/dummy/README.md +24 -0
- data/spec/dummy/Rakefile +6 -0
- data/spec/dummy/app/assets/config/manifest.js +3 -0
- data/spec/dummy/app/assets/javascripts/application.js +16 -0
- data/spec/dummy/app/assets/javascripts/cable.js +13 -0
- data/spec/dummy/app/assets/stylesheets/application.css +15 -0
- data/spec/dummy/app/channels/application_cable/channel.rb +4 -0
- data/spec/dummy/app/channels/application_cable/connection.rb +4 -0
- data/spec/dummy/app/controllers/application_controller.rb +3 -0
- data/spec/dummy/app/helpers/application_helper.rb +2 -0
- data/spec/dummy/app/jobs/application_job.rb +2 -0
- data/spec/dummy/app/mailers/application_mailer.rb +4 -0
- data/spec/dummy/app/views/layouts/application.html.erb +14 -0
- data/spec/dummy/app/views/layouts/mailer.html.erb +13 -0
- data/spec/dummy/app/views/layouts/mailer.text.erb +1 -0
- data/spec/dummy/bin/bundle +3 -0
- data/spec/dummy/bin/rails +9 -0
- data/spec/dummy/bin/rake +9 -0
- data/spec/dummy/bin/setup +34 -0
- data/spec/dummy/bin/spring +17 -0
- data/spec/dummy/bin/update +29 -0
- data/spec/dummy/config.ru +5 -0
- data/spec/dummy/config/application.rb +30 -0
- data/spec/dummy/config/boot.rb +3 -0
- data/spec/dummy/config/cable.yml +9 -0
- data/spec/dummy/config/database.yml +18 -0
- data/spec/dummy/config/environment.rb +5 -0
- data/spec/dummy/config/environments/development.rb +54 -0
- data/spec/dummy/config/environments/production.rb +86 -0
- data/spec/dummy/config/environments/test.rb +42 -0
- data/spec/dummy/config/initializers/application_controller_renderer.rb +6 -0
- data/spec/dummy/config/initializers/assets.rb +11 -0
- data/spec/dummy/config/initializers/backtrace_silencers.rb +7 -0
- data/spec/dummy/config/initializers/cookies_serializer.rb +5 -0
- data/spec/dummy/config/initializers/filter_parameter_logging.rb +4 -0
- data/spec/dummy/config/initializers/inflections.rb +16 -0
- data/spec/dummy/config/initializers/mime_types.rb +4 -0
- data/spec/dummy/config/initializers/new_framework_defaults.rb +24 -0
- data/spec/dummy/config/initializers/session_store.rb +3 -0
- data/spec/dummy/config/initializers/wrap_parameters.rb +14 -0
- data/spec/dummy/config/locales/en.yml +23 -0
- data/spec/dummy/config/puma.rb +47 -0
- data/spec/dummy/config/routes.rb +5 -0
- data/spec/dummy/config/secrets.yml +22 -0
- data/spec/dummy/config/spring.rb +6 -0
- data/spec/dummy/coverage/assets/0.10.0/application.css +799 -0
- data/spec/dummy/coverage/assets/0.10.0/application.js +1707 -0
- data/spec/dummy/coverage/assets/0.10.0/colorbox/border.png +0 -0
- data/spec/dummy/coverage/assets/0.10.0/colorbox/controls.png +0 -0
- data/spec/dummy/coverage/assets/0.10.0/colorbox/loading.gif +0 -0
- data/spec/dummy/coverage/assets/0.10.0/colorbox/loading_background.png +0 -0
- data/spec/dummy/coverage/assets/0.10.0/favicon_green.png +0 -0
- data/spec/dummy/coverage/assets/0.10.0/favicon_red.png +0 -0
- data/spec/dummy/coverage/assets/0.10.0/favicon_yellow.png +0 -0
- data/spec/dummy/coverage/assets/0.10.0/loading.gif +0 -0
- data/spec/dummy/coverage/assets/0.10.0/magnify.png +0 -0
- data/spec/dummy/coverage/assets/0.10.0/smoothness/images/ui-bg_flat_0_aaaaaa_40x100.png +0 -0
- data/spec/dummy/coverage/assets/0.10.0/smoothness/images/ui-bg_flat_75_ffffff_40x100.png +0 -0
- data/spec/dummy/coverage/assets/0.10.0/smoothness/images/ui-bg_glass_55_fbf9ee_1x400.png +0 -0
- data/spec/dummy/coverage/assets/0.10.0/smoothness/images/ui-bg_glass_65_ffffff_1x400.png +0 -0
- data/spec/dummy/coverage/assets/0.10.0/smoothness/images/ui-bg_glass_75_dadada_1x400.png +0 -0
- data/spec/dummy/coverage/assets/0.10.0/smoothness/images/ui-bg_glass_75_e6e6e6_1x400.png +0 -0
- data/spec/dummy/coverage/assets/0.10.0/smoothness/images/ui-bg_glass_95_fef1ec_1x400.png +0 -0
- data/spec/dummy/coverage/assets/0.10.0/smoothness/images/ui-bg_highlight-soft_75_cccccc_1x100.png +0 -0
- data/spec/dummy/coverage/assets/0.10.0/smoothness/images/ui-icons_222222_256x240.png +0 -0
- data/spec/dummy/coverage/assets/0.10.0/smoothness/images/ui-icons_2e83ff_256x240.png +0 -0
- data/spec/dummy/coverage/assets/0.10.0/smoothness/images/ui-icons_454545_256x240.png +0 -0
- data/spec/dummy/coverage/assets/0.10.0/smoothness/images/ui-icons_888888_256x240.png +0 -0
- data/spec/dummy/coverage/assets/0.10.0/smoothness/images/ui-icons_cd0a0a_256x240.png +0 -0
- data/spec/dummy/coverage/index.html +294 -0
- data/spec/dummy/custom_plan.rb +11 -0
- data/spec/dummy/db/schema.rb +4 -0
- data/spec/dummy/lib/playground.rb +0 -0
- data/spec/dummy/log/development.log +22924 -0
- data/spec/dummy/log/localtower.log +11352 -0
- data/spec/dummy/log/test.log +9166 -0
- data/spec/dummy/tmp/restart.txt +0 -0
- data/spec/dummy/zeus.json +22 -0
- data/spec/factories/migration.rb +140 -0
- data/spec/factories/model.rb +36 -0
- data/spec/lib/localtower/generators/migration_spec.rb +113 -0
- data/spec/lib/localtower/generators/model_spec.rb +43 -0
- data/spec/lib/localtower/generators/relation_spec.rb +34 -0
- data/spec/lib/localtower/tools_spec.rb +14 -0
- data/spec/spec_helper.rb +47 -0
- metadata +401 -0
checksums.yaml
ADDED
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
---
|
|
2
|
+
SHA1:
|
|
3
|
+
metadata.gz: 37a6a6375eca452df5b9acfa3e8bd4ab28f8586c
|
|
4
|
+
data.tar.gz: 1bb445cb7cace0531e63b820f8a540c885c2a42c
|
|
5
|
+
SHA512:
|
|
6
|
+
metadata.gz: d4e24dae3934b8227c4ff0277b0c94db46406d2ec68fc2c8e68e08fa8ac145a88179f51f381688c20a23647222a3df69467afc3af9d5f3aaa08a9c02863b944a
|
|
7
|
+
data.tar.gz: 2692fe7db394bba1df658a22089c835e52e6eb85f53f2bf5abe52d1f971ea8533d5d452570da90e12916291be1118bd00eb134d4fd556bdb013c020af57a6ec4
|
data/README.md
ADDED
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
# Localtower
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
## INSTALL
|
|
6
|
+
|
|
7
|
+
# In your Gemfile
|
|
8
|
+
|
|
9
|
+
group :development do
|
|
10
|
+
gem "localtower"
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
# in config/routes.rb
|
|
14
|
+
|
|
15
|
+
if Rails.env.development?
|
|
16
|
+
mount Localtower::Engine, at: "localtower"
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
## USAGE
|
|
20
|
+
|
|
21
|
+
Open your browser at: `http://localhost:3000/localtower`
|
|
22
|
+
|
|
23
|
+
## TEST
|
|
24
|
+
|
|
25
|
+
Create a .env file inside the spec/dummy folder with the credentials to your PostgreSQL Database. It should look like this:
|
|
26
|
+
|
|
27
|
+
spec/dummy/.env:
|
|
28
|
+
|
|
29
|
+
LOCALTOWER_PG_USERNAME="admin"
|
|
30
|
+
LOCALTOWER_PG_PASSWORD="root_or_smething"
|
|
31
|
+
|
|
32
|
+
Run the spec:
|
|
33
|
+
|
|
34
|
+
bundle install
|
|
35
|
+
bundle exec rspec spec/
|
|
36
|
+
|
|
37
|
+
Notes:
|
|
38
|
+
Tests are currently very slow because this is testing rails commands so it boots the rails for each test. Zeus or spring should be introced.
|
data/Rakefile
ADDED
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
#!/usr/bin/env rake
|
|
2
|
+
begin
|
|
3
|
+
require 'bundler/setup'
|
|
4
|
+
rescue LoadError
|
|
5
|
+
puts 'You must `gem install bundler` and `bundle install` to run rake tasks'
|
|
6
|
+
end
|
|
7
|
+
begin
|
|
8
|
+
require 'rdoc/task'
|
|
9
|
+
rescue LoadError
|
|
10
|
+
require 'rdoc/rdoc'
|
|
11
|
+
require 'rake/rdoctask'
|
|
12
|
+
RDoc::Task = Rake::RDocTask
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
RDoc::Task.new(:rdoc) do |rdoc|
|
|
16
|
+
rdoc.rdoc_dir = 'rdoc'
|
|
17
|
+
rdoc.title = 'Localtower'
|
|
18
|
+
rdoc.options << '--line-numbers'
|
|
19
|
+
rdoc.rdoc_files.include('README.rdoc')
|
|
20
|
+
rdoc.rdoc_files.include('lib/**/*.rb')
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
require "bundler/gem_tasks"
|
|
24
|
+
Bundler::GemHelper.install_tasks
|
|
25
|
+
|
|
26
|
+
APP_RAKEFILE = File.expand_path('../spec/dummy/Rakefile', __FILE__)
|
|
27
|
+
load 'rails/tasks/engine.rake'
|
|
28
|
+
|
|
29
|
+
require 'rspec/core'
|
|
30
|
+
require 'rspec/core/rake_task'
|
|
31
|
+
desc 'Run all specs in spec directory (excluding plugin specs)'
|
|
32
|
+
RSpec::Core::RakeTask.new(spec: 'app:db:test:prepare')
|
|
33
|
+
task default: :spec
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
require_dependency 'localtower/application_controller'
|
|
2
|
+
|
|
3
|
+
module Localtower
|
|
4
|
+
class PagesController < ApplicationController
|
|
5
|
+
|
|
6
|
+
def dashboard
|
|
7
|
+
end
|
|
8
|
+
|
|
9
|
+
def migrations
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
def post_migrations
|
|
13
|
+
# Because we have a list or a field, take the item from the list in priority
|
|
14
|
+
params[:migrations][:migrations] = params[:migrations][:migrations].map do |action_line|
|
|
15
|
+
action_line["new_column_type"] = action_line["column_type"]
|
|
16
|
+
|
|
17
|
+
if action_line["column"].present?
|
|
18
|
+
action_line["column"] = action_line["column"]
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
if action_line["column_list"].present?
|
|
22
|
+
action_line["column"] = action_line["column_list"]
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
action_line.delete("column_list")
|
|
26
|
+
|
|
27
|
+
action_line
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
use_generator(::Localtower::Generators::Migration, params[:migrations])
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
def relations
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
def post_relations
|
|
37
|
+
use_generator(::Localtower::Generators::Relation, params[:relations])
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
def models
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
def post_models
|
|
44
|
+
use_generator(::Localtower::Generators::Model, params[:models])
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
private
|
|
48
|
+
|
|
49
|
+
def use_generator(generator_klass, options)
|
|
50
|
+
generator = generator_klass.new(options)
|
|
51
|
+
generator.run
|
|
52
|
+
redirect_to :back
|
|
53
|
+
end
|
|
54
|
+
end
|
|
55
|
+
end
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
module Localtower
|
|
2
|
+
module ApplicationHelper
|
|
3
|
+
def subl_link_to(name, file, &block)
|
|
4
|
+
name ||= file
|
|
5
|
+
if block_given?
|
|
6
|
+
str = capture(&block)
|
|
7
|
+
else
|
|
8
|
+
str = name
|
|
9
|
+
end
|
|
10
|
+
link_to str, "subl://open/?url=file://#{file}"
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
def to_json_print(hash)
|
|
14
|
+
# str = hash.to_json
|
|
15
|
+
# str.gsub(/,"/, ',<br>"').gsub(/\"\:/, '": ').html_safe
|
|
16
|
+
hash.to_json
|
|
17
|
+
end
|
|
18
|
+
end
|
|
19
|
+
end
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
<!DOCTYPE html>
|
|
2
|
+
<html lang="en">
|
|
3
|
+
<head>
|
|
4
|
+
<title>Localtower - <%= yield :title %></title>
|
|
5
|
+
|
|
6
|
+
<meta content='width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0' name='viewport' />
|
|
7
|
+
<meta name="viewport" content="width=device-width" />
|
|
8
|
+
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" />
|
|
9
|
+
|
|
10
|
+
<link rel="stylesheet" type="text/css" href="/light-bootstrap-dashboard-master/assets/css/bootstrap.min.css">
|
|
11
|
+
<link rel="stylesheet" type="text/css" href="/light-bootstrap-dashboard-master/assets/css/animate.min.css">
|
|
12
|
+
<link rel="stylesheet" type="text/css" href="/light-bootstrap-dashboard-master/assets/css/light-bootstrap-dashboard.css">
|
|
13
|
+
|
|
14
|
+
<!-- Fonts and icons -->
|
|
15
|
+
<link href="http://maxcdn.bootstrapcdn.com/font-awesome/4.2.0/css/font-awesome.min.css" rel="stylesheet">
|
|
16
|
+
<link href='http://fonts.googleapis.com/css?family=Roboto:400,700,300' rel='stylesheet' type='text/css'>
|
|
17
|
+
<link rel="stylesheet" type="text/css" href="/light-bootstrap-dashboard-master/assets/css/pe-icon-7-stroke.css">
|
|
18
|
+
|
|
19
|
+
<link rel="stylesheet" type="text/css" href="/css/app.css">
|
|
20
|
+
|
|
21
|
+
<%= csrf_meta_tags %>
|
|
22
|
+
</head>
|
|
23
|
+
|
|
24
|
+
<body>
|
|
25
|
+
|
|
26
|
+
<div class="wrapper">
|
|
27
|
+
<div class="sidebar" data-color="blue">
|
|
28
|
+
<!-- you can change the color of the sidebar using: data-color="blue | azure | green | orange | red | purple" -->
|
|
29
|
+
|
|
30
|
+
<div class="sidebar-wrapper">
|
|
31
|
+
<ul class="nav">
|
|
32
|
+
<li class="<%= is_active_link?(dashboard_path, :inclusive) ? "active" : nil %>">
|
|
33
|
+
<a href="<%= dashboard_path %>">
|
|
34
|
+
<i class="pe-7s-home"></i>
|
|
35
|
+
<p>Schema</p>
|
|
36
|
+
</a>
|
|
37
|
+
</li>
|
|
38
|
+
|
|
39
|
+
<li class="<%= is_active_link?(models_path, :inclusive) ? "active" : nil %>">
|
|
40
|
+
<a href="<%= models_path %>">
|
|
41
|
+
<i class="pe-7s-server"></i>
|
|
42
|
+
<p>New Model</p>
|
|
43
|
+
</a>
|
|
44
|
+
</li>
|
|
45
|
+
|
|
46
|
+
<li class="<%= is_active_link?(relations_path, :inclusive) ? "active" : nil %>">
|
|
47
|
+
<a href="<%= relations_path %>">
|
|
48
|
+
<i class="pe-7s-shuffle"></i>
|
|
49
|
+
<p>New Relation</p>
|
|
50
|
+
</a>
|
|
51
|
+
</li>
|
|
52
|
+
|
|
53
|
+
<li class="<%= is_active_link?(migrations_path, :inclusive) ? "active" : nil %>">
|
|
54
|
+
<a href="<%= migrations_path %>">
|
|
55
|
+
<i class="pe-7s-edit"></i>
|
|
56
|
+
<p>New Migration</p>
|
|
57
|
+
</a>
|
|
58
|
+
</li>
|
|
59
|
+
</ul>
|
|
60
|
+
</div>
|
|
61
|
+
</div>
|
|
62
|
+
|
|
63
|
+
<div class="main-panel">
|
|
64
|
+
<div class="content">
|
|
65
|
+
<div class="container-fluid">
|
|
66
|
+
<%= yield %>
|
|
67
|
+
</div>
|
|
68
|
+
</div>
|
|
69
|
+
</div>
|
|
70
|
+
</div>
|
|
71
|
+
|
|
72
|
+
<div class="full-message" style="display: none;">
|
|
73
|
+
|
|
74
|
+
<div class="text-center">
|
|
75
|
+
<br>
|
|
76
|
+
<h3>Magic stuff happening.</h3>
|
|
77
|
+
<br>
|
|
78
|
+
<i class="pe-7s-refresh-2 rotate"></i>
|
|
79
|
+
</div>
|
|
80
|
+
|
|
81
|
+
</div>
|
|
82
|
+
|
|
83
|
+
<!-- Core JS Files -->
|
|
84
|
+
<script src="/light-bootstrap-dashboard-master/assets/js/jquery-1.10.2.js" type="text/javascript"></script>
|
|
85
|
+
<script src="/light-bootstrap-dashboard-master/assets/js/bootstrap.min.js" type="text/javascript"></script>
|
|
86
|
+
|
|
87
|
+
<!-- Checkbox, Radio & Switch Plugins -->
|
|
88
|
+
<script src="/light-bootstrap-dashboard-master/assets/js/bootstrap-checkbox-radio-switch.js"></script>
|
|
89
|
+
|
|
90
|
+
<!-- Light Bootstrap Table Core javascript and methods for Demo purpose -->
|
|
91
|
+
<script src="/light-bootstrap-dashboard-master/assets/js/light-bootstrap-dashboard.js"></script>
|
|
92
|
+
<script src="/js/app.js"></script>
|
|
93
|
+
</body>
|
|
94
|
+
</html>
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
<% content_for :title do %>Schema<% end %>
|
|
2
|
+
|
|
3
|
+
<div class="row">
|
|
4
|
+
<div class="col-md-12">
|
|
5
|
+
<div class="card">
|
|
6
|
+
<div class="header">
|
|
7
|
+
<h4 class="title"></h4>
|
|
8
|
+
</div>
|
|
9
|
+
|
|
10
|
+
<div class="content">
|
|
11
|
+
<div class="row">
|
|
12
|
+
|
|
13
|
+
<% ::Localtower::Tools.models_presented.each do |model| %>
|
|
14
|
+
|
|
15
|
+
<div class="col-md-6">
|
|
16
|
+
<h3><%= model[:name] %></h3>
|
|
17
|
+
|
|
18
|
+
<table class="table table-hover table-striped">
|
|
19
|
+
<thead>
|
|
20
|
+
<th>Field</th>
|
|
21
|
+
<th>Type</th>
|
|
22
|
+
<th>Index?</th>
|
|
23
|
+
</thead>
|
|
24
|
+
|
|
25
|
+
<tbody>
|
|
26
|
+
<% model[:attributes_list].each do |attribute_data| %>
|
|
27
|
+
|
|
28
|
+
<tr>
|
|
29
|
+
<td>
|
|
30
|
+
<code>
|
|
31
|
+
<%= attribute_data["name"] %>
|
|
32
|
+
</code>
|
|
33
|
+
</td>
|
|
34
|
+
|
|
35
|
+
<td>
|
|
36
|
+
<%= attribute_data["type_clean"] %>
|
|
37
|
+
</td>
|
|
38
|
+
|
|
39
|
+
<td>
|
|
40
|
+
<% if attribute_data["index"].any? %>
|
|
41
|
+
<span class="label label-primary">Yes</span>
|
|
42
|
+
<% end %>
|
|
43
|
+
</td>
|
|
44
|
+
</tr>
|
|
45
|
+
<% end %>
|
|
46
|
+
</tbody>
|
|
47
|
+
</table>
|
|
48
|
+
</div>
|
|
49
|
+
<% end %>
|
|
50
|
+
|
|
51
|
+
</div>
|
|
52
|
+
</div>
|
|
53
|
+
</div>
|
|
54
|
+
</div>
|
|
55
|
+
</div>
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
<% content_for :title do %>Migrations<% end %>
|
|
2
|
+
|
|
3
|
+
<div class="row">
|
|
4
|
+
<div class="col-md-12">
|
|
5
|
+
<div class="card">
|
|
6
|
+
<div class="header">
|
|
7
|
+
<h4 class="title"></h4>
|
|
8
|
+
</div>
|
|
9
|
+
|
|
10
|
+
<div class="content">
|
|
11
|
+
<%= form_tag migrations_path, class: "form" do %>
|
|
12
|
+
|
|
13
|
+
<div class="row">
|
|
14
|
+
<div class="col-md-6">
|
|
15
|
+
<div class="form-group">
|
|
16
|
+
<label>Name of the Migration</label>
|
|
17
|
+
<input type="text" name="migrations[migration_name]" class="form-control">
|
|
18
|
+
</div>
|
|
19
|
+
</div>
|
|
20
|
+
</div>
|
|
21
|
+
|
|
22
|
+
<table class="table table-hover table-striped">
|
|
23
|
+
<thead>
|
|
24
|
+
<th>Action</th>
|
|
25
|
+
<th>Model</th>
|
|
26
|
+
<th>Column</th>
|
|
27
|
+
<th>New Column Name</th>
|
|
28
|
+
<th>Type</th>
|
|
29
|
+
<th>Index?</th>
|
|
30
|
+
<th>Can be null?</th>
|
|
31
|
+
<th></th>
|
|
32
|
+
</thead>
|
|
33
|
+
|
|
34
|
+
<tbody data-selector="tbody">
|
|
35
|
+
<tr data-selector="tr">
|
|
36
|
+
<td>
|
|
37
|
+
<%= select_tag "migrations[migrations][][action]", options_for_select(::Localtower::Generators::Migration::ACTIONS), class: "form-control", "data-selector" => "action" %>
|
|
38
|
+
</td>
|
|
39
|
+
|
|
40
|
+
<td>
|
|
41
|
+
<%= select_tag "migrations[migrations][][table_name]", options_for_select(Localtower::Tools.models.collect {|p| [ p, p.table_name ] }), class: "form-control" %>
|
|
42
|
+
</td>
|
|
43
|
+
|
|
44
|
+
<td class="text-center">
|
|
45
|
+
<input type="text" name="migrations[migrations][][column]" class="form-control" data-selector="column_text">
|
|
46
|
+
|
|
47
|
+
<%= select_tag "migrations[migrations][][column_list]", options_for_select(::Localtower::Tools.all_columns), class: "form-control", include_blank: true, "data-selector" => "column_list", style: "display:none;" %>
|
|
48
|
+
</td>
|
|
49
|
+
|
|
50
|
+
<td>
|
|
51
|
+
<input type="text" name="migrations[migrations][][new_column_name]" class="form-control">
|
|
52
|
+
</td>
|
|
53
|
+
|
|
54
|
+
<td>
|
|
55
|
+
<%= select_tag "migrations[migrations][][column_type]", options_for_select(::Localtower::Generators::Migration::TYPES), class: "form-control" %>
|
|
56
|
+
</td>
|
|
57
|
+
|
|
58
|
+
<td>
|
|
59
|
+
<input type="checkbox" name="migrations[migrations][][index]" class="form-control">
|
|
60
|
+
</td>
|
|
61
|
+
|
|
62
|
+
<td>
|
|
63
|
+
<input type="checkbox" name="migrations[migrations][][nullable]" class="form-control" checked="">
|
|
64
|
+
</td>
|
|
65
|
+
|
|
66
|
+
<td>
|
|
67
|
+
<div class="pull-right">
|
|
68
|
+
<button class="btn btn-danger btn-xs" data-selector="remove">Remove</button>
|
|
69
|
+
</div>
|
|
70
|
+
</td>
|
|
71
|
+
</tr>
|
|
72
|
+
</tbody>
|
|
73
|
+
</table>
|
|
74
|
+
|
|
75
|
+
<div class="row">
|
|
76
|
+
<div class="col-md-12">
|
|
77
|
+
<button class="btn btn-warning btn-xs pull-right" data-selector="duplicate">Add a field</button>
|
|
78
|
+
</div>
|
|
79
|
+
</div>
|
|
80
|
+
|
|
81
|
+
<hr>
|
|
82
|
+
|
|
83
|
+
<!-- multiple lines: -->
|
|
84
|
+
<div class="row">
|
|
85
|
+
<div class="col-md-12 text-center">
|
|
86
|
+
<button name="migrations[run_migrate]" type="submit" value="false" class="btn btn-warning" data-selector="submit">
|
|
87
|
+
Create the migration
|
|
88
|
+
</button>
|
|
89
|
+
|
|
90
|
+
<button name="migrations[run_migrate]" type="submit" value="true" class="btn btn-success" data-selector="submit">
|
|
91
|
+
Create the migration and <b>migrate</b>
|
|
92
|
+
</button>
|
|
93
|
+
</div>
|
|
94
|
+
</div>
|
|
95
|
+
<% end %>
|
|
96
|
+
</div>
|
|
97
|
+
</div>
|
|
98
|
+
</div>
|
|
99
|
+
</div>
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
<% content_for :title do %>Models<% end %>
|
|
2
|
+
|
|
3
|
+
<div class="row">
|
|
4
|
+
<div class="col-md-12">
|
|
5
|
+
<div class="card">
|
|
6
|
+
<div class="header">
|
|
7
|
+
<h4 class="title"></h4>
|
|
8
|
+
</div>
|
|
9
|
+
|
|
10
|
+
<div class="content">
|
|
11
|
+
<%= form_tag models_path, class: "form" do %>
|
|
12
|
+
|
|
13
|
+
<div class="row">
|
|
14
|
+
<div class="col-md-6">
|
|
15
|
+
<div class="form-group">
|
|
16
|
+
<label>Name of the Model</label>
|
|
17
|
+
<input type="text" name="models[model_name]" class="form-control">
|
|
18
|
+
</div>
|
|
19
|
+
</div>
|
|
20
|
+
</div>
|
|
21
|
+
|
|
22
|
+
<table class="table table-hover table-striped">
|
|
23
|
+
<thead>
|
|
24
|
+
<th>Field</th>
|
|
25
|
+
<th>Kind</th>
|
|
26
|
+
<th>index?</th>
|
|
27
|
+
<th>Can be null?</th>
|
|
28
|
+
<th></th>
|
|
29
|
+
</thead>
|
|
30
|
+
|
|
31
|
+
<tbody data-selector="tbody">
|
|
32
|
+
<tr data-selector="tr">
|
|
33
|
+
<td>
|
|
34
|
+
<input type="text" name="models[attributes][][attribute_name]" class="form-control">
|
|
35
|
+
</td>
|
|
36
|
+
<td>
|
|
37
|
+
<%= select_tag "models[attributes][][attribute_type]", options_for_select(::Localtower::Generators::Migration::TYPES), class: "form-control" %>
|
|
38
|
+
</td>
|
|
39
|
+
<td>
|
|
40
|
+
<input type="checkbox" value="true" name="models[attributes][][index]" class="form-control">
|
|
41
|
+
</td>
|
|
42
|
+
<td>
|
|
43
|
+
<input type="checkbox" value="true" name="models[attributes][][nullable]" class="form-control" checked>
|
|
44
|
+
</td>
|
|
45
|
+
<td>
|
|
46
|
+
<div class="pull-right">
|
|
47
|
+
<button class="btn btn-danger btn-xs" data-selector="remove">Remove</button>
|
|
48
|
+
</div>
|
|
49
|
+
</td>
|
|
50
|
+
</tr>
|
|
51
|
+
</tbody>
|
|
52
|
+
</table>
|
|
53
|
+
|
|
54
|
+
<div class="row">
|
|
55
|
+
<div class="col-md-12">
|
|
56
|
+
<button class="btn btn-warning btn-xs pull-right" data-selector="duplicate">Add a field</button>
|
|
57
|
+
</div>
|
|
58
|
+
</div>
|
|
59
|
+
|
|
60
|
+
<hr>
|
|
61
|
+
|
|
62
|
+
<!-- multiple lines: -->
|
|
63
|
+
<div class="row">
|
|
64
|
+
<div class="col-md-12 text-center">
|
|
65
|
+
<button name="models[run_migrate]" type="submit" value="false" class="btn btn-warning" data-selector="submit">
|
|
66
|
+
Create the model
|
|
67
|
+
</button>
|
|
68
|
+
|
|
69
|
+
<button name="models[run_migrate]" type="submit" value="true" class="btn btn-success" data-selector="submit">
|
|
70
|
+
Create the model and <b>migrate</b>
|
|
71
|
+
</button>
|
|
72
|
+
</div>
|
|
73
|
+
</div>
|
|
74
|
+
<% end %>
|
|
75
|
+
</div>
|
|
76
|
+
</div>
|
|
77
|
+
</div>
|
|
78
|
+
</div>
|