easy_cms 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/.gitignore +12 -0
- data/.rspec +2 -0
- data/.travis.yml +5 -0
- data/CODE_OF_CONDUCT.md +74 -0
- data/Gemfile +4 -0
- data/LICENSE.txt +21 -0
- data/README.md +31 -0
- data/Rakefile +6 -0
- data/bin/console +14 -0
- data/bin/setup +8 -0
- data/easy_cms.gemspec +36 -0
- data/lib/easy_cms.rb +5 -0
- data/lib/easy_cms/version.rb +3 -0
- data/lib/generators/easy_cms/model/model_generator.rb +71 -0
- data/lib/generators/easy_cms/model/templates/controllers/model_controller.erb +55 -0
- data/lib/generators/easy_cms/model/templates/layouts/_form.html.erb +26 -0
- data/lib/generators/easy_cms/model/templates/layouts/edit.html.erb +13 -0
- data/lib/generators/easy_cms/model/templates/layouts/index.html.erb +37 -0
- data/lib/generators/easy_cms/model/templates/layouts/item_navegation.html.erb +19 -0
- data/lib/generators/easy_cms/model/templates/layouts/new.html.erb +13 -0
- data/lib/generators/easy_cms/model/templates/layouts/show.html.erb +22 -0
- data/lib/generators/easy_cms/namespace/namespace_generator.rb +45 -0
- data/lib/generators/easy_cms/namespace/templates/assets/base_javascript.erb +3 -0
- data/lib/generators/easy_cms/namespace/templates/assets/base_scss.erb +1 -0
- data/lib/generators/easy_cms/namespace/templates/controllers/base_controller.erb +5 -0
- data/lib/generators/easy_cms/namespace/templates/layouts/layout.html.erb +71 -0
- data/lib/generators/resource_helpers.rb +31 -0
- data/vendor/assets/javascripts/.keep +0 -0
- data/vendor/assets/javascripts/easy_cms/base.js +351 -0
- data/vendor/assets/javascripts/easy_cms/bootstrap-notify.js +404 -0
- data/vendor/assets/javascripts/easy_cms/bootstrap.min.js +7 -0
- data/vendor/assets/javascripts/easy_cms/chartist.min.js +9 -0
- data/vendor/assets/javascripts/easy_cms/demo.js +183 -0
- data/vendor/assets/javascripts/easy_cms/jquery-3.1.0.min.js +4 -0
- data/vendor/assets/javascripts/easy_cms/material.min.js +1 -0
- data/vendor/assets/stylesheets/.keep +0 -0
- data/vendor/assets/stylesheets/easy_cms/bootstrap.min.css +5 -0
- data/vendor/assets/stylesheets/easy_cms/demo.css +64 -0
- data/vendor/assets/stylesheets/easy_cms/easy_cms.css +5065 -0
- data/vendor/assets/stylesheets/easy_cms/easy_cms_sass.scss +51 -0
- data/vendor/assets/stylesheets/easy_cms/md/_alerts.scss +57 -0
- data/vendor/assets/stylesheets/easy_cms/md/_buttons.scss +259 -0
- data/vendor/assets/stylesheets/easy_cms/md/_cards.scss +337 -0
- data/vendor/assets/stylesheets/easy_cms/md/_chartist.scss +254 -0
- data/vendor/assets/stylesheets/easy_cms/md/_checkboxes.scss +193 -0
- data/vendor/assets/stylesheets/easy_cms/md/_colors.scss +325 -0
- data/vendor/assets/stylesheets/easy_cms/md/_dialogs.scss +99 -0
- data/vendor/assets/stylesheets/easy_cms/md/_dropdown.scss +67 -0
- data/vendor/assets/stylesheets/easy_cms/md/_footers.scss +44 -0
- data/vendor/assets/stylesheets/easy_cms/md/_forms.scss +58 -0
- data/vendor/assets/stylesheets/easy_cms/md/_inputs-size.scss +223 -0
- data/vendor/assets/stylesheets/easy_cms/md/_inputs.scss +394 -0
- data/vendor/assets/stylesheets/easy_cms/md/_misc.scss +115 -0
- data/vendor/assets/stylesheets/easy_cms/md/_mixins.scss +422 -0
- data/vendor/assets/stylesheets/easy_cms/md/_navbars.scss +329 -0
- data/vendor/assets/stylesheets/easy_cms/md/_pills.scss +117 -0
- data/vendor/assets/stylesheets/easy_cms/md/_popups.scss +77 -0
- data/vendor/assets/stylesheets/easy_cms/md/_radios.scss +114 -0
- data/vendor/assets/stylesheets/easy_cms/md/_responsive.scss +453 -0
- data/vendor/assets/stylesheets/easy_cms/md/_ripples.scss +40 -0
- data/vendor/assets/stylesheets/easy_cms/md/_shadows.scss +138 -0
- data/vendor/assets/stylesheets/easy_cms/md/_sidebar-and-main-panel.scss +260 -0
- data/vendor/assets/stylesheets/easy_cms/md/_tables.scss +45 -0
- data/vendor/assets/stylesheets/easy_cms/md/_tabs.scss +53 -0
- data/vendor/assets/stylesheets/easy_cms/md/_togglebutton.scss +87 -0
- data/vendor/assets/stylesheets/easy_cms/md/_typography.scss +75 -0
- data/vendor/assets/stylesheets/easy_cms/md/_variables.scss +1127 -0
- data/vendor/assets/stylesheets/easy_cms/md/mixins/_chartist.scss +89 -0
- data/vendor/assets/stylesheets/easy_cms/md/mixins/_transparency.scss +20 -0
- data/vendor/assets/stylesheets/easy_cms/md/mixins/_vendor-prefixes.scss +185 -0
- data/vendor/assets/stylesheets/easy_cms/md/plugins/_animate.scss +227 -0
- data/vendor/assets/stylesheets/easy_cms/md/plugins/_plugin-nouislider.scss +161 -0
- metadata +174 -0
@@ -0,0 +1,19 @@
|
|
1
|
+
|
2
|
+
<li>
|
3
|
+
<a data-toggle="collapse" href="#<%= options_params[:model_plu] %>NavItem" class="collapsed" aria-expanded="false">
|
4
|
+
<i class="material-icons">image</i>
|
5
|
+
<p><%= options_params[:model_cap_plu] %>
|
6
|
+
<b class="caret"></b>
|
7
|
+
</p>
|
8
|
+
</a>
|
9
|
+
<div class="collapse" id="<%= options_params[:model_plu] %>NavItem" aria-expanded="false" style="height: 296px;">
|
10
|
+
<ul class="nav">
|
11
|
+
<li class="active">
|
12
|
+
<%%= link_to "List", <%= options_params[:namespace]%>_<%= options_params[:model_plu] %>_path %>
|
13
|
+
</li>
|
14
|
+
<li>
|
15
|
+
<%%= link_to "New", new_<%= options_params[:namespace]%>_<%= options_params[:model] %>_path %>
|
16
|
+
</li>
|
17
|
+
</ul>
|
18
|
+
</div>
|
19
|
+
</li>
|
@@ -0,0 +1,13 @@
|
|
1
|
+
<div class="row">
|
2
|
+
<div class="col-md-12">
|
3
|
+
<div class="card">
|
4
|
+
<div class="card-header" data-background-color="purple">
|
5
|
+
<h4 class="title">New <%= options_params[:model_cap] %></h4>
|
6
|
+
</div>
|
7
|
+
|
8
|
+
<div class="card-content">
|
9
|
+
<%%= render 'form', <%= options_params[:model] %>: @<%= options_params[:model] %> %>
|
10
|
+
</div>
|
11
|
+
</div>
|
12
|
+
</div>
|
13
|
+
</div>
|
@@ -0,0 +1,22 @@
|
|
1
|
+
<div class="col-md-12">
|
2
|
+
<div class="card card-nav-tabs">
|
3
|
+
<div class="card-header" data-background-color="purple">
|
4
|
+
<h4 class="title"><%= options_params[:model_cap] %></h4>
|
5
|
+
</div>
|
6
|
+
|
7
|
+
<div class="card-content"><%- model_attributes.each do |a| %>
|
8
|
+
<div class="row">
|
9
|
+
<div class="col-md-12 text-center">
|
10
|
+
<p><strong><%= a[:name].capitalize %>:</strong> <%%= @<%= options_params[:model] %>.<%= a[:name] %>%></p>
|
11
|
+
</div>
|
12
|
+
</div><% end %>
|
13
|
+
|
14
|
+
<div class="row">
|
15
|
+
<div class="col-md-12 text-center">
|
16
|
+
<%%= link_to 'Edit', edit_<%= options_params[:namespace] %>_<%= options_params[:model] %>_path(@<%= options_params[:model] %>), class: "btn btn-primary" %>
|
17
|
+
<%%= link_to 'Back', <%= options_params[:namespace] %>_<%= options_params[:model_plu] %>_path %>
|
18
|
+
</div>
|
19
|
+
</div>
|
20
|
+
</div>
|
21
|
+
</div>
|
22
|
+
</div>
|
@@ -0,0 +1,45 @@
|
|
1
|
+
require 'generators/resource_helpers'
|
2
|
+
|
3
|
+
module EasyCms
|
4
|
+
module Generators
|
5
|
+
class NamespaceGenerator < Rails::Generators::Base
|
6
|
+
include ResourceHelpers
|
7
|
+
|
8
|
+
source_root File.expand_path("../templates", __FILE__)
|
9
|
+
desc "This generator create a Namespace to CMS"
|
10
|
+
argument :namespace, :type => :string, :required => :true
|
11
|
+
|
12
|
+
def generate_base_controller
|
13
|
+
file_name = "app/controllers/#{namespace}/base_controller.rb"
|
14
|
+
template './controllers/base_controller.erb', file_name, options_params unless File.exist?(file_name)
|
15
|
+
end
|
16
|
+
|
17
|
+
def generate_layout
|
18
|
+
file_name = "app/views/layouts/#{namespace}.html.erb"
|
19
|
+
template "./layouts/layout.html.erb", file_name, options_params unless File.exist?(file_name)
|
20
|
+
end
|
21
|
+
|
22
|
+
def generate_assets
|
23
|
+
file_name_js = "app/assets/javascripts/#{namespace}.js"
|
24
|
+
file_name_stylesheet = "app/assets/stylesheets/#{namespace}.scss"
|
25
|
+
|
26
|
+
template "./assets/base_javascript.erb", file_name_js unless File.exist?(file_name_js)
|
27
|
+
template "./assets/base_scss.erb", file_name_stylesheet unless File.exist?(file_name_stylesheet)
|
28
|
+
end
|
29
|
+
|
30
|
+
def add_initializers_assets
|
31
|
+
prepend_to_file 'config/initializers/assets.rb' do
|
32
|
+
"Rails.application.config.assets.precompile += %w( #{namespace}.js )\n"
|
33
|
+
end
|
34
|
+
prepend_to_file 'config/initializers/assets.rb' do
|
35
|
+
"Rails.application.config.assets.precompile += %w( #{namespace}.scss )\n"
|
36
|
+
end
|
37
|
+
end
|
38
|
+
|
39
|
+
private
|
40
|
+
def options_params
|
41
|
+
{ :namespace => namespace }
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|
45
|
+
end
|
@@ -0,0 +1 @@
|
|
1
|
+
@import "easy_cms/easy_cms_sass";
|
@@ -0,0 +1,71 @@
|
|
1
|
+
<!DOCTYPE html>
|
2
|
+
<html>
|
3
|
+
<head>
|
4
|
+
<title>Title page</title>
|
5
|
+
<%%= csrf_meta_tags %>
|
6
|
+
|
7
|
+
<%%= stylesheet_link_tag "<%= config[:namespace] %>", media: 'all', 'data-turbolinks-track': 'reload' %>
|
8
|
+
<%%= javascript_include_tag "<%= config[:namespace] %>", 'data-turbolinks-track': 'reload' %>
|
9
|
+
<link href="http://maxcdn.bootstrapcdn.com/font-awesome/latest/css/font-awesome.min.css" rel="stylesheet">
|
10
|
+
<link href='http://fonts.googleapis.com/css?family=Roboto:400,700,300|Material+Icons' rel='stylesheet' type='text/css'>
|
11
|
+
</head>
|
12
|
+
|
13
|
+
<body>
|
14
|
+
<div class="wrapper">
|
15
|
+
<div class="sidebar" data-color="purple" data-image="../assets/img/sidebar-1.jpg">
|
16
|
+
<div class="logo">
|
17
|
+
<a href="https://github.com/14tinchov/easy_cms" class="simple-text">
|
18
|
+
Easy Cms
|
19
|
+
</a>
|
20
|
+
</div>
|
21
|
+
|
22
|
+
<div class="sidebar-wrapper">
|
23
|
+
<ul class="nav">
|
24
|
+
<!-- Easy CMS - nav - don't delete this line -->
|
25
|
+
</ul>
|
26
|
+
</div>
|
27
|
+
</div>
|
28
|
+
|
29
|
+
<div class="main-panel">
|
30
|
+
<nav class="navbar navbar-transparent navbar-absolute">
|
31
|
+
<div class="container-fluid">
|
32
|
+
<div class="navbar-header">
|
33
|
+
<button type="button" class="navbar-toggle" data-toggle="collapse">
|
34
|
+
<span class="sr-only">Toggle navigation</span>
|
35
|
+
<span class="icon-bar"></span>
|
36
|
+
<span class="icon-bar"></span>
|
37
|
+
<span class="icon-bar"></span>
|
38
|
+
</button>
|
39
|
+
</div>
|
40
|
+
<div class="collapse navbar-collapse">
|
41
|
+
<ul class="nav navbar-nav navbar-right">
|
42
|
+
<li class="dropdown">
|
43
|
+
<a href="#" class="dropdown-toggle" data-toggle="dropdown">
|
44
|
+
<i class="material-icons">person</i>
|
45
|
+
</a>
|
46
|
+
<ul class="dropdown-menu">
|
47
|
+
<li><a href="#">Log Out</a></li>
|
48
|
+
</ul>
|
49
|
+
</li>
|
50
|
+
</ul>
|
51
|
+
</div>
|
52
|
+
</div>
|
53
|
+
</nav>
|
54
|
+
|
55
|
+
<div class="content">
|
56
|
+
<div class="container-fluid">
|
57
|
+
<%%= yield %>
|
58
|
+
</div>
|
59
|
+
</div>
|
60
|
+
|
61
|
+
<footer class="footer">
|
62
|
+
<div class="container-fluid">
|
63
|
+
<p class="copyright pull-right">
|
64
|
+
</script> <a href="#">Easy CMS</a>
|
65
|
+
</p>
|
66
|
+
</div>
|
67
|
+
</footer>
|
68
|
+
</div>
|
69
|
+
</div>
|
70
|
+
</body>
|
71
|
+
</html>
|
@@ -0,0 +1,31 @@
|
|
1
|
+
module EasyCms
|
2
|
+
module Generators
|
3
|
+
module ResourceHelpers
|
4
|
+
private
|
5
|
+
def build_path(template_path)
|
6
|
+
File.join(File.dirname(__FILE__), template_path)
|
7
|
+
end
|
8
|
+
|
9
|
+
def read_file(path)
|
10
|
+
b = binding
|
11
|
+
content = ERB.new(File.read(path)).result b
|
12
|
+
content
|
13
|
+
end
|
14
|
+
|
15
|
+
def get_model_attributes(name_capitalize_model)
|
16
|
+
eval("
|
17
|
+
begin
|
18
|
+
#{name_capitalize_model}.columns.inject([]) do |rtn, model|
|
19
|
+
unless ['id', 'created_at', 'updated_at'].include?(model.name)
|
20
|
+
rtn << { :name => model.name, :type => model.type }
|
21
|
+
end
|
22
|
+
rtn
|
23
|
+
end
|
24
|
+
rescue NameError => e
|
25
|
+
return []
|
26
|
+
end
|
27
|
+
")
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
File without changes
|
@@ -0,0 +1,351 @@
|
|
1
|
+
//= require easy_cms/bootstrap.min
|
2
|
+
//= require easy_cms/material.min
|
3
|
+
//= require easy_cms/chartist.min
|
4
|
+
//= require easy_cms/bootstrap-notify
|
5
|
+
/*!
|
6
|
+
|
7
|
+
=========================================================
|
8
|
+
* Material Dashboard - v1.1.1
|
9
|
+
=========================================================
|
10
|
+
|
11
|
+
* Product Page: http://www.creative-tim.com/product/material-dashboard
|
12
|
+
* Copyright 2017 Creative Tim (http://www.creative-tim.com)
|
13
|
+
* Licensed under MIT (https://github.com/creativetimofficial/material-dashboard/blob/master/LICENSE.md)
|
14
|
+
|
15
|
+
=========================================================
|
16
|
+
|
17
|
+
* The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
|
18
|
+
|
19
|
+
*/
|
20
|
+
|
21
|
+
// Material Dashboard Wizard Functions
|
22
|
+
var searchVisible = 0;
|
23
|
+
var transparent = true;
|
24
|
+
|
25
|
+
var transparentDemo = true;
|
26
|
+
var fixedTop = false;
|
27
|
+
|
28
|
+
var mobile_menu_visible = 0,
|
29
|
+
mobile_menu_initialized = false,
|
30
|
+
toggle_initialized = false,
|
31
|
+
bootstrap_nav_initialized = false;
|
32
|
+
|
33
|
+
var seq = 0, delays = 80, durations = 500;
|
34
|
+
var seq2 = 0, delays2 = 80, durations2 = 500;
|
35
|
+
|
36
|
+
|
37
|
+
$(document).ready(function(){
|
38
|
+
|
39
|
+
$sidebar = $('.sidebar');
|
40
|
+
|
41
|
+
$.material.init();
|
42
|
+
|
43
|
+
md.initSidebarsCheck();
|
44
|
+
|
45
|
+
window_width = $(window).width();
|
46
|
+
|
47
|
+
// check if there is an image set for the sidebar's background
|
48
|
+
md.checkSidebarImage();
|
49
|
+
|
50
|
+
// Activate the tooltips
|
51
|
+
$('[rel="tooltip"]').tooltip();
|
52
|
+
|
53
|
+
|
54
|
+
$('.form-control').on("focus", function(){
|
55
|
+
$(this).parent('.input-group').addClass("input-group-focus");
|
56
|
+
}).on("blur", function(){
|
57
|
+
$(this).parent(".input-group").removeClass("input-group-focus");
|
58
|
+
});
|
59
|
+
|
60
|
+
});
|
61
|
+
|
62
|
+
// activate collapse right menu when the windows is resized
|
63
|
+
$(window).resize(function(){
|
64
|
+
md.initSidebarsCheck();
|
65
|
+
|
66
|
+
// reset the seq for charts drawing animations
|
67
|
+
seq = seq2 = 0;
|
68
|
+
|
69
|
+
});
|
70
|
+
|
71
|
+
md = {
|
72
|
+
misc:{
|
73
|
+
navbar_menu_visible: 0,
|
74
|
+
active_collapse: true,
|
75
|
+
disabled_collapse_init: 0,
|
76
|
+
},
|
77
|
+
|
78
|
+
checkSidebarImage: function(){
|
79
|
+
$sidebar = $('.sidebar');
|
80
|
+
image_src = $sidebar.data('image');
|
81
|
+
|
82
|
+
if(image_src !== undefined){
|
83
|
+
sidebar_container = '<div class="sidebar-background" style="background-image: url(' + image_src + ') "/>'
|
84
|
+
$sidebar.append(sidebar_container);
|
85
|
+
}
|
86
|
+
},
|
87
|
+
|
88
|
+
initSidebarsCheck: function(){
|
89
|
+
if($(window).width() <= 991){
|
90
|
+
if($sidebar.length != 0){
|
91
|
+
md.initRightMenu();
|
92
|
+
|
93
|
+
} else {
|
94
|
+
md.initBootstrapNavbarMenu();
|
95
|
+
}
|
96
|
+
}
|
97
|
+
|
98
|
+
},
|
99
|
+
|
100
|
+
checkScrollForTransparentNavbar: debounce(function() {
|
101
|
+
if($(document).scrollTop() > 260 ) {
|
102
|
+
if(transparent) {
|
103
|
+
transparent = false;
|
104
|
+
$('.navbar-color-on-scroll').removeClass('navbar-transparent');
|
105
|
+
}
|
106
|
+
} else {
|
107
|
+
if( !transparent ) {
|
108
|
+
transparent = true;
|
109
|
+
$('.navbar-color-on-scroll').addClass('navbar-transparent');
|
110
|
+
}
|
111
|
+
}
|
112
|
+
}, 17),
|
113
|
+
|
114
|
+
|
115
|
+
initRightMenu: debounce(function(){
|
116
|
+
$sidebar_wrapper = $('.sidebar-wrapper');
|
117
|
+
|
118
|
+
if(!mobile_menu_initialized){
|
119
|
+
$navbar = $('nav').find('.navbar-collapse').first().clone(true);
|
120
|
+
|
121
|
+
nav_content = '';
|
122
|
+
mobile_menu_content = '';
|
123
|
+
|
124
|
+
$navbar.children('ul').each(function(){
|
125
|
+
|
126
|
+
content_buff = $(this).html();
|
127
|
+
nav_content = nav_content + content_buff;
|
128
|
+
});
|
129
|
+
|
130
|
+
nav_content = '<ul class="nav nav-mobile-menu">' + nav_content + '</ul>';
|
131
|
+
|
132
|
+
$navbar_form = $('nav').find('.navbar-form').clone(true);
|
133
|
+
|
134
|
+
$sidebar_nav = $sidebar_wrapper.find(' > .nav');
|
135
|
+
|
136
|
+
// insert the navbar form before the sidebar list
|
137
|
+
$nav_content = $(nav_content);
|
138
|
+
$nav_content.insertBefore($sidebar_nav);
|
139
|
+
$navbar_form.insertBefore($nav_content);
|
140
|
+
|
141
|
+
$(".sidebar-wrapper .dropdown .dropdown-menu > li > a").click(function(event) {
|
142
|
+
event.stopPropagation();
|
143
|
+
|
144
|
+
});
|
145
|
+
|
146
|
+
mobile_menu_initialized = true;
|
147
|
+
} else {
|
148
|
+
if($(window).width() > 991){
|
149
|
+
// reset all the additions that we made for the sidebar wrapper only if the screen is bigger than 991px
|
150
|
+
$sidebar_wrapper.find('.navbar-form').remove();
|
151
|
+
$sidebar_wrapper.find('.nav-mobile-menu').remove();
|
152
|
+
|
153
|
+
mobile_menu_initialized = false;
|
154
|
+
}
|
155
|
+
}
|
156
|
+
|
157
|
+
if(!toggle_initialized){
|
158
|
+
$toggle = $('.navbar-toggle');
|
159
|
+
|
160
|
+
$toggle.click(function (){
|
161
|
+
|
162
|
+
if(mobile_menu_visible == 1) {
|
163
|
+
$('html').removeClass('nav-open');
|
164
|
+
|
165
|
+
$('.close-layer').remove();
|
166
|
+
setTimeout(function(){
|
167
|
+
$toggle.removeClass('toggled');
|
168
|
+
}, 400);
|
169
|
+
|
170
|
+
mobile_menu_visible = 0;
|
171
|
+
} else {
|
172
|
+
setTimeout(function(){
|
173
|
+
$toggle.addClass('toggled');
|
174
|
+
}, 430);
|
175
|
+
|
176
|
+
|
177
|
+
main_panel_height = $('.main-panel')[0].scrollHeight;
|
178
|
+
$layer = $('<div class="close-layer"></div>');
|
179
|
+
$layer.css('height',main_panel_height + 'px');
|
180
|
+
$layer.appendTo(".main-panel");
|
181
|
+
|
182
|
+
setTimeout(function(){
|
183
|
+
$layer.addClass('visible');
|
184
|
+
}, 100);
|
185
|
+
|
186
|
+
$layer.click(function() {
|
187
|
+
$('html').removeClass('nav-open');
|
188
|
+
mobile_menu_visible = 0;
|
189
|
+
|
190
|
+
$layer.removeClass('visible');
|
191
|
+
|
192
|
+
setTimeout(function(){
|
193
|
+
$layer.remove();
|
194
|
+
$toggle.removeClass('toggled');
|
195
|
+
|
196
|
+
}, 400);
|
197
|
+
});
|
198
|
+
|
199
|
+
$('html').addClass('nav-open');
|
200
|
+
mobile_menu_visible = 1;
|
201
|
+
|
202
|
+
}
|
203
|
+
});
|
204
|
+
|
205
|
+
toggle_initialized = true;
|
206
|
+
}
|
207
|
+
}, 500),
|
208
|
+
|
209
|
+
|
210
|
+
initBootstrapNavbarMenu: debounce(function(){
|
211
|
+
|
212
|
+
if(!bootstrap_nav_initialized){
|
213
|
+
$navbar = $('nav').find('.navbar-collapse').first().clone(true);
|
214
|
+
|
215
|
+
nav_content = '';
|
216
|
+
mobile_menu_content = '';
|
217
|
+
|
218
|
+
//add the content from the regular header to the mobile menu
|
219
|
+
$navbar.children('ul').each(function(){
|
220
|
+
content_buff = $(this).html();
|
221
|
+
nav_content = nav_content + content_buff;
|
222
|
+
});
|
223
|
+
|
224
|
+
nav_content = '<ul class="nav nav-mobile-menu">' + nav_content + '</ul>';
|
225
|
+
|
226
|
+
$navbar.html(nav_content);
|
227
|
+
$navbar.addClass('off-canvas-sidebar');
|
228
|
+
|
229
|
+
// append it to the body, so it will come from the right side of the screen
|
230
|
+
$('body').append($navbar);
|
231
|
+
|
232
|
+
$toggle = $('.navbar-toggle');
|
233
|
+
|
234
|
+
$navbar.find('a').removeClass('btn btn-round btn-default');
|
235
|
+
$navbar.find('button').removeClass('btn-round btn-fill btn-info btn-primary btn-success btn-danger btn-warning btn-neutral');
|
236
|
+
$navbar.find('button').addClass('btn-simple btn-block');
|
237
|
+
|
238
|
+
$toggle.click(function (){
|
239
|
+
if(mobile_menu_visible == 1) {
|
240
|
+
$('html').removeClass('nav-open');
|
241
|
+
|
242
|
+
$('.close-layer').remove();
|
243
|
+
setTimeout(function(){
|
244
|
+
$toggle.removeClass('toggled');
|
245
|
+
}, 400);
|
246
|
+
|
247
|
+
mobile_menu_visible = 0;
|
248
|
+
} else {
|
249
|
+
setTimeout(function(){
|
250
|
+
$toggle.addClass('toggled');
|
251
|
+
}, 430);
|
252
|
+
|
253
|
+
$layer = $('<div class="close-layer"></div>');
|
254
|
+
$layer.appendTo(".wrapper-full-page");
|
255
|
+
|
256
|
+
setTimeout(function(){
|
257
|
+
$layer.addClass('visible');
|
258
|
+
}, 100);
|
259
|
+
|
260
|
+
|
261
|
+
$layer.click(function() {
|
262
|
+
$('html').removeClass('nav-open');
|
263
|
+
mobile_menu_visible = 0;
|
264
|
+
|
265
|
+
$layer.removeClass('visible');
|
266
|
+
|
267
|
+
setTimeout(function(){
|
268
|
+
$layer.remove();
|
269
|
+
$toggle.removeClass('toggled');
|
270
|
+
|
271
|
+
}, 400);
|
272
|
+
});
|
273
|
+
|
274
|
+
$('html').addClass('nav-open');
|
275
|
+
mobile_menu_visible = 1;
|
276
|
+
|
277
|
+
}
|
278
|
+
|
279
|
+
});
|
280
|
+
bootstrap_nav_initialized = true;
|
281
|
+
}
|
282
|
+
}, 500),
|
283
|
+
|
284
|
+
startAnimationForLineChart: function(chart){
|
285
|
+
|
286
|
+
chart.on('draw', function(data) {
|
287
|
+
if(data.type === 'line' || data.type === 'area') {
|
288
|
+
data.element.animate({
|
289
|
+
d: {
|
290
|
+
begin: 600,
|
291
|
+
dur: 700,
|
292
|
+
from: data.path.clone().scale(1, 0).translate(0, data.chartRect.height()).stringify(),
|
293
|
+
to: data.path.clone().stringify(),
|
294
|
+
easing: Chartist.Svg.Easing.easeOutQuint
|
295
|
+
}
|
296
|
+
});
|
297
|
+
} else if(data.type === 'point') {
|
298
|
+
seq++;
|
299
|
+
data.element.animate({
|
300
|
+
opacity: {
|
301
|
+
begin: seq * delays,
|
302
|
+
dur: durations,
|
303
|
+
from: 0,
|
304
|
+
to: 1,
|
305
|
+
easing: 'ease'
|
306
|
+
}
|
307
|
+
});
|
308
|
+
}
|
309
|
+
});
|
310
|
+
|
311
|
+
seq = 0;
|
312
|
+
},
|
313
|
+
startAnimationForBarChart: function(chart){
|
314
|
+
|
315
|
+
chart.on('draw', function(data) {
|
316
|
+
if(data.type === 'bar'){
|
317
|
+
seq2++;
|
318
|
+
data.element.animate({
|
319
|
+
opacity: {
|
320
|
+
begin: seq2 * delays2,
|
321
|
+
dur: durations2,
|
322
|
+
from: 0,
|
323
|
+
to: 1,
|
324
|
+
easing: 'ease'
|
325
|
+
}
|
326
|
+
});
|
327
|
+
}
|
328
|
+
});
|
329
|
+
|
330
|
+
seq2 = 0;
|
331
|
+
}
|
332
|
+
}
|
333
|
+
|
334
|
+
|
335
|
+
// Returns a function, that, as long as it continues to be invoked, will not
|
336
|
+
// be triggered. The function will be called after it stops being called for
|
337
|
+
// N milliseconds. If `immediate` is passed, trigger the function on the
|
338
|
+
// leading edge, instead of the trailing.
|
339
|
+
|
340
|
+
function debounce(func, wait, immediate) {
|
341
|
+
var timeout;
|
342
|
+
return function() {
|
343
|
+
var context = this, args = arguments;
|
344
|
+
clearTimeout(timeout);
|
345
|
+
timeout = setTimeout(function() {
|
346
|
+
timeout = null;
|
347
|
+
if (!immediate) func.apply(context, args);
|
348
|
+
}, wait);
|
349
|
+
if (immediate && !timeout) func.apply(context, args);
|
350
|
+
};
|
351
|
+
};
|