keppler 2.0.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/Gemfile +6 -0
- data/README.md +43 -0
- data/Rakefile +2 -0
- data/bin/console +15 -0
- data/bin/keppler +5 -0
- data/bin/setup +7 -0
- data/installer/core/Gemfile +113 -0
- data/installer/core/Guardfile +18 -0
- data/installer/core/README.md +87 -0
- data/installer/core/Rakefile +6 -0
- data/installer/core/_config.yml +1 -0
- data/installer/core/app/assets/images/admin/favicon.png +0 -0
- data/installer/core/app/assets/images/admin/logo.png +0 -0
- data/installer/core/app/assets/images/admin/logo2.png +0 -0
- data/installer/core/app/assets/images/admin/profile-menu.jpg +0 -0
- data/installer/core/app/assets/images/admin/search.png +0 -0
- data/installer/core/app/assets/images/admin/slice-icon-orange.png +0 -0
- data/installer/core/app/assets/images/admin/slice-icon.png +0 -0
- data/installer/core/app/assets/images/admin/slice.png +0 -0
- data/installer/core/app/assets/images/admin/slice_white.png +0 -0
- data/installer/core/app/assets/images/admin/space.png +0 -0
- data/installer/core/app/assets/images/app/Home_Keppler.png +0 -0
- data/installer/core/app/assets/images/app/Home_Keppler2.png +0 -0
- data/installer/core/app/assets/images/app/keppler-front.png +0 -0
- data/installer/core/app/assets/images/app/slice-front.png +0 -0
- data/installer/core/app/assets/javascripts/admin/application.coffee +15 -0
- data/installer/core/app/assets/javascripts/admin/dropdown_top.js +7 -0
- data/installer/core/app/assets/javascripts/admin/file_upload.coffee +21 -0
- data/installer/core/app/assets/javascripts/admin/img_preview.js +18 -0
- data/installer/core/app/assets/javascripts/admin/main.coffee +42 -0
- data/installer/core/app/assets/javascripts/admin/notification.js +11 -0
- data/installer/core/app/assets/javascripts/admin/preview_template.js +21 -0
- data/installer/core/app/assets/javascripts/admin/sidebar.js +20 -0
- data/installer/core/app/assets/javascripts/admin/sort.coffee +8 -0
- data/installer/core/app/assets/javascripts/app/application.js.coffee +5 -0
- data/installer/core/app/assets/javascripts/app/front.js +129 -0
- data/installer/core/app/assets/javascripts/app/google_analytics.js.coffee +5 -0
- data/installer/core/app/assets/javascripts/ckeditor/config.js +130 -0
- data/installer/core/app/assets/javascripts/keppler_ga_dashboard/view-selector2.js +196 -0
- data/installer/core/app/assets/javascripts/vue_admin/index.js +87 -0
- data/installer/core/app/assets/stylesheets/admin/application.scss +43 -0
- data/installer/core/app/assets/stylesheets/admin/components/layouts/_footer.scss +5 -0
- data/installer/core/app/assets/stylesheets/admin/components/layouts/_settings.scss +35 -0
- data/installer/core/app/assets/stylesheets/admin/components/module/_show.scss +0 -0
- data/installer/core/app/assets/stylesheets/admin/components/navigation/_navbar.scss +79 -0
- data/installer/core/app/assets/stylesheets/admin/components/navigation/_sidebar.scss +91 -0
- data/installer/core/app/assets/stylesheets/admin/components/paginator/_paginator.scss +53 -0
- data/installer/core/app/assets/stylesheets/admin/pages/_devise.scss +162 -0
- data/installer/core/app/assets/stylesheets/admin/pages/_files.scss +83 -0
- data/installer/core/app/assets/stylesheets/admin/pages/_form.scss +163 -0
- data/installer/core/app/assets/stylesheets/admin/pages/_header.scss +34 -0
- data/installer/core/app/assets/stylesheets/admin/pages/_index.scss +331 -0
- data/installer/core/app/assets/stylesheets/admin/pages/_listing.scss +29 -0
- data/installer/core/app/assets/stylesheets/admin/pages/_navbar.scss +36 -0
- data/installer/core/app/assets/stylesheets/admin/pages/_pageslide.scss +125 -0
- data/installer/core/app/assets/stylesheets/admin/pages/_preloader.scss +283 -0
- data/installer/core/app/assets/stylesheets/admin/pages/_search.scss +220 -0
- data/installer/core/app/assets/stylesheets/admin/pages/_show.scss +17 -0
- data/installer/core/app/assets/stylesheets/admin/pages/_sidebar.scss +64 -0
- data/installer/core/app/assets/stylesheets/admin/pages/_switchs.scss +47 -0
- data/installer/core/app/assets/stylesheets/admin/pages/_themes.scss +74 -0
- data/installer/core/app/assets/stylesheets/admin/utils/_base.scss +66 -0
- data/installer/core/app/assets/stylesheets/admin/utils/_mixins.scss +26 -0
- data/installer/core/app/assets/stylesheets/admin/utils/_theme.scss +94 -0
- data/installer/core/app/assets/stylesheets/admin/utils/_variables.scss +79 -0
- data/installer/core/app/assets/stylesheets/app/application.scss +29 -0
- data/installer/core/app/assets/stylesheets/app/base/_base_project.scss +17 -0
- data/installer/core/app/assets/stylesheets/app/base/_typography.scss +1 -0
- data/installer/core/app/assets/stylesheets/app/components/_buttons.scss +0 -0
- data/installer/core/app/assets/stylesheets/app/components/_inputs.scss +0 -0
- data/installer/core/app/assets/stylesheets/app/components/_navbar.scss +21 -0
- data/installer/core/app/assets/stylesheets/app/layout/_container.scss +0 -0
- data/installer/core/app/assets/stylesheets/app/layout/_footer.scss +15 -0
- data/installer/core/app/assets/stylesheets/app/layout/_header.scss +0 -0
- data/installer/core/app/assets/stylesheets/app/pages/_front.sass +58 -0
- data/installer/core/app/assets/stylesheets/app/plugins/_bootstrap_override.scss +37 -0
- data/installer/core/app/assets/stylesheets/app/plugins/_font_awesome.scss +2 -0
- data/installer/core/app/assets/stylesheets/app/plugins/_keppler.scss +54 -0
- data/installer/core/app/assets/stylesheets/app/plugins/_npogress.scss +2 -0
- data/installer/core/app/assets/stylesheets/app/utils/_mixins.scss +18 -0
- data/installer/core/app/assets/stylesheets/app/utils/_variables.scss +28 -0
- data/installer/core/app/assets/stylesheets/errors/application.scss +3 -0
- data/installer/core/app/assets/stylesheets/errors/errors.scss +120 -0
- data/installer/core/app/assets/stylesheets/vendor/admin-lte/_skin-blue.scss +141 -0
- data/installer/core/app/controllers/admin/admin_controller.rb +72 -0
- data/installer/core/app/controllers/admin/customizes_controller.rb +109 -0
- data/installer/core/app/controllers/admin/meta_tags_controller.rb +124 -0
- data/installer/core/app/controllers/admin/scripts_controller.rb +131 -0
- data/installer/core/app/controllers/admin/settings_controller.rb +111 -0
- data/installer/core/app/controllers/admin/users_controller.rb +119 -0
- data/installer/core/app/controllers/app/app_controller.rb +23 -0
- data/installer/core/app/controllers/app/front_controller.rb +10 -0
- data/installer/core/app/controllers/application_controller.rb +96 -0
- data/installer/core/app/controllers/devise/sessions_controller.rb +104 -0
- data/installer/core/app/controllers/errors_controller.rb +28 -0
- data/installer/core/app/helpers/admin_helper.rb +117 -0
- data/installer/core/app/helpers/application_helper.rb +21 -0
- data/installer/core/app/helpers/customizes_helper.rb +2 -0
- data/installer/core/app/helpers/fronts_helper.rb +2 -0
- data/installer/core/app/helpers/scaffolds_helper.rb +2 -0
- data/installer/core/app/inputs/checkbox_material_input.rb +75 -0
- data/installer/core/app/inputs/file_material_input.rb +33 -0
- data/installer/core/app/mailers/application_mailer.rb +28 -0
- data/installer/core/app/models/appearance.rb +5 -0
- data/installer/core/app/models/application_record.rb +3 -0
- data/installer/core/app/models/concerns/activity_history.rb +9 -0
- data/installer/core/app/models/concerns/clone_record.rb +12 -0
- data/installer/core/app/models/customize.rb +154 -0
- data/installer/core/app/models/front.rb +2 -0
- data/installer/core/app/models/google_analytics_setting.rb +4 -0
- data/installer/core/app/models/meta_tag.rb +41 -0
- data/installer/core/app/models/role.rb +11 -0
- data/installer/core/app/models/script.rb +30 -0
- data/installer/core/app/models/setting.rb +17 -0
- data/installer/core/app/models/smtp_setting.rb +5 -0
- data/installer/core/app/models/social_account.rb +4 -0
- data/installer/core/app/models/user.rb +44 -0
- data/installer/core/app/policies/application_policy.rb +16 -0
- data/installer/core/app/policies/controller_policy.rb +53 -0
- data/installer/core/app/policies/customize_policy.rb +9 -0
- data/installer/core/app/policies/meta_tag_policy.rb +9 -0
- data/installer/core/app/policies/script_policy.rb +9 -0
- data/installer/core/app/policies/setting_policy.rb +9 -0
- data/installer/core/app/policies/user_policy.rb +17 -0
- data/installer/core/app/uploaders/attachment_uploader.rb +44 -0
- data/installer/core/app/uploaders/ckeditor_attachment_file_uploader.rb +36 -0
- data/installer/core/app/uploaders/ckeditor_picture_uploader.rb +47 -0
- data/installer/core/app/uploaders/template_uploader.rb +44 -0
- data/installer/core/app/views/admin/customizes/_description.html.haml +13 -0
- data/installer/core/app/views/admin/customizes/_form.html.haml +33 -0
- data/installer/core/app/views/admin/customizes/_listing.html.haml +15 -0
- data/installer/core/app/views/admin/customizes/_switch_default_template.html.haml +16 -0
- data/installer/core/app/views/admin/customizes/_switch_template.html.haml +22 -0
- data/installer/core/app/views/admin/customizes/index.html.haml +38 -0
- data/installer/core/app/views/admin/customizes/new.html.haml +4 -0
- data/installer/core/app/views/admin/layouts/_footer.html.haml +8 -0
- data/installer/core/app/views/admin/layouts/_head.html.haml +8 -0
- data/installer/core/app/views/admin/layouts/_header.html.haml +7 -0
- data/installer/core/app/views/admin/layouts/_listing_preloader.haml +5 -0
- data/installer/core/app/views/admin/layouts/_messages.html.haml +4 -0
- data/installer/core/app/views/admin/layouts/_navigation.html.haml +46 -0
- data/installer/core/app/views/admin/layouts/_preloader.html.haml +9 -0
- data/installer/core/app/views/admin/layouts/_search.html.haml +8 -0
- data/installer/core/app/views/admin/layouts/_sidebar.html.haml +63 -0
- data/installer/core/app/views/admin/layouts/application.html.haml +23 -0
- data/installer/core/app/views/admin/layouts/index/remote_messages.js.haml +9 -0
- data/installer/core/app/views/admin/meta_tags/_description.html.haml +13 -0
- data/installer/core/app/views/admin/meta_tags/_form.html.haml +57 -0
- data/installer/core/app/views/admin/meta_tags/_index_show.html.haml +26 -0
- data/installer/core/app/views/admin/meta_tags/_listing.html.haml +39 -0
- data/installer/core/app/views/admin/meta_tags/edit.html.haml +2 -0
- data/installer/core/app/views/admin/meta_tags/index.html.haml +80 -0
- data/installer/core/app/views/admin/meta_tags/new.html.haml +2 -0
- data/installer/core/app/views/admin/meta_tags/reload.js.haml +5 -0
- data/installer/core/app/views/admin/meta_tags/show.html.haml +29 -0
- data/installer/core/app/views/admin/meta_tags/show.js.haml +4 -0
- data/installer/core/app/views/admin/scripts/_description.html.haml +13 -0
- data/installer/core/app/views/admin/scripts/_form.html.haml +31 -0
- data/installer/core/app/views/admin/scripts/_index_show.html.haml +26 -0
- data/installer/core/app/views/admin/scripts/_listing.html.haml +42 -0
- data/installer/core/app/views/admin/scripts/edit.html.haml +1 -0
- data/installer/core/app/views/admin/scripts/index.html.haml +82 -0
- data/installer/core/app/views/admin/scripts/new.html.haml +1 -0
- data/installer/core/app/views/admin/scripts/reload.js.haml +5 -0
- data/installer/core/app/views/admin/scripts/show.html.haml +29 -0
- data/installer/core/app/views/admin/scripts/show.js.haml +4 -0
- data/installer/core/app/views/admin/settings/_form.html.haml +9 -0
- data/installer/core/app/views/admin/settings/components/_preview.html.haml +30 -0
- data/installer/core/app/views/admin/settings/edit.html.haml +4 -0
- data/installer/core/app/views/admin/settings/fields/_appearance.html.haml +62 -0
- data/installer/core/app/views/admin/settings/fields/_basic_information.html.haml +48 -0
- data/installer/core/app/views/admin/settings/fields/_email_setting.html.haml +17 -0
- data/installer/core/app/views/admin/settings/fields/_google_analytics_setting.html.haml +28 -0
- data/installer/core/app/views/admin/settings/fields/_social_accounts.html.haml +42 -0
- data/installer/core/app/views/admin/users/_description.html.haml +13 -0
- data/installer/core/app/views/admin/users/_form.html.haml +59 -0
- data/installer/core/app/views/admin/users/_index_show.html.haml +24 -0
- data/installer/core/app/views/admin/users/_listing.html.haml +49 -0
- data/installer/core/app/views/admin/users/edit.html.haml +1 -0
- data/installer/core/app/views/admin/users/index.html.haml +72 -0
- data/installer/core/app/views/admin/users/new.html.haml +1 -0
- data/installer/core/app/views/admin/users/reload.js.haml +5 -0
- data/installer/core/app/views/admin/users/show.html.haml +36 -0
- data/installer/core/app/views/admin/users/show.js.haml +4 -0
- data/installer/core/app/views/app/front/index.html.haml +180 -0
- data/installer/core/app/views/app/layouts/_footer.html.haml +3 -0
- data/installer/core/app/views/app/layouts/_google_analytics.html.haml +14 -0
- data/installer/core/app/views/app/layouts/_head.html.haml +22 -0
- data/installer/core/app/views/app/layouts/_messages.html.haml +6 -0
- data/installer/core/app/views/app/layouts/_meta_tags.html.haml +9 -0
- data/installer/core/app/views/app/layouts/_navigation.html.haml +13 -0
- data/installer/core/app/views/app/layouts/_navigation_links.html.haml +6 -0
- data/installer/core/app/views/app/layouts/application.html.haml +10 -0
- data/installer/core/app/views/application_mailer/testing.html.haml +1 -0
- data/installer/core/app/views/devise/mailer/reset_password_instructions.html.haml +6 -0
- data/installer/core/app/views/devise/passwords/edit.html.haml +27 -0
- data/installer/core/app/views/devise/passwords/new.html.haml +22 -0
- data/installer/core/app/views/devise/registrations/edit.html.erb +48 -0
- data/installer/core/app/views/devise/registrations/new.html.erb +19 -0
- data/installer/core/app/views/devise/sessions/new.html.haml +30 -0
- data/installer/core/app/views/errors/internal_server_error.html.haml +7 -0
- data/installer/core/app/views/errors/not_authorized.html.haml +7 -0
- data/installer/core/app/views/errors/not_found.html.haml +7 -0
- data/installer/core/app/views/errors/unprocessable.html.haml +7 -0
- data/installer/core/app/views/kaminari/_first_page.html.haml +11 -0
- data/installer/core/app/views/kaminari/_gap.html.haml +8 -0
- data/installer/core/app/views/kaminari/_last_page.html.haml +11 -0
- data/installer/core/app/views/kaminari/_next_page.html.haml +11 -0
- data/installer/core/app/views/kaminari/_page.html.haml +10 -0
- data/installer/core/app/views/kaminari/_paginator.html.haml +18 -0
- data/installer/core/app/views/kaminari/_prev_page.html.haml +11 -0
- data/installer/core/app/views/keppler_ga_dashboard/dashboard/analytics.html.haml +600 -0
- data/installer/core/app/views/layouts/errors/_head.html.haml +3 -0
- data/installer/core/app/views/layouts/errors/application.html.haml +11 -0
- data/installer/core/app/views/layouts/mailers/mailer.html.haml +3 -0
- data/installer/core/app/views/layouts/mailers/mailer.text.haml +1 -0
- data/installer/core/app/views/layouts/templates/application.html.haml +1 -0
- data/installer/core/app/views/public_activity/layout/_create.html.haml +45 -0
- data/installer/core/app/views/public_activity/layout/_destroy.html.haml +15 -0
- data/installer/core/app/views/public_activity/layout/_update.html.haml +45 -0
- data/installer/core/app/views/public_activity/session/_create.html.haml +13 -0
- data/installer/core/app/views/public_activity/session/_destroy.html.haml +13 -0
- data/installer/core/app/views/templates/kaminari/_first_page.html.haml +9 -0
- data/installer/core/app/views/templates/kaminari/_gap.html.haml +8 -0
- data/installer/core/app/views/templates/kaminari/_last_page.html.haml +9 -0
- data/installer/core/app/views/templates/kaminari/_next_page.html.haml +9 -0
- data/installer/core/app/views/templates/kaminari/_page.html.haml +10 -0
- data/installer/core/app/views/templates/kaminari/_paginator.html.haml +18 -0
- data/installer/core/app/views/templates/kaminari/_prev_page.html.haml +9 -0
- data/installer/core/bin/bundle +3 -0
- data/installer/core/bin/rails +4 -0
- data/installer/core/bin/rake +4 -0
- data/installer/core/bin/setup +29 -0
- data/installer/core/bin/spring +15 -0
- data/installer/core/config.ru +4 -0
- data/installer/core/config/application.rb +46 -0
- data/installer/core/config/boot.rb +7 -0
- data/installer/core/config/database.yml +25 -0
- data/installer/core/config/environment.rb +10 -0
- data/installer/core/config/environments/development.rb +57 -0
- data/installer/core/config/environments/production.rb +105 -0
- data/installer/core/config/environments/test.rb +44 -0
- data/installer/core/config/gaAuth/gauth_key.p12 +0 -0
- data/installer/core/config/initializers/assets.rb +14 -0
- data/installer/core/config/initializers/cookies_serializer.rb +3 -0
- data/installer/core/config/initializers/date_formats.rb +2 -0
- data/installer/core/config/initializers/devise.rb +259 -0
- data/installer/core/config/initializers/filter_parameter_logging.rb +5 -0
- data/installer/core/config/initializers/inflections.rb +16 -0
- data/installer/core/config/initializers/keppler_configuration.rb +9 -0
- data/installer/core/config/initializers/mime_types.rb +6 -0
- data/installer/core/config/initializers/paginate_kaminari_configuration.rb +12 -0
- data/installer/core/config/initializers/rolify.rb +10 -0
- data/installer/core/config/initializers/route_traslator.rb +3 -0
- data/installer/core/config/initializers/session_store.rb +5 -0
- data/installer/core/config/initializers/simple_form.rb +170 -0
- data/installer/core/config/initializers/simple_form_bootstrap.rb +155 -0
- data/installer/core/config/initializers/time_formats.rb +2 -0
- data/installer/core/config/initializers/wrap_parameters.rb +15 -0
- data/installer/core/config/locales/devise.en.yml +61 -0
- data/installer/core/config/locales/devise.es.yml +62 -0
- data/installer/core/config/locales/en.yml +380 -0
- data/installer/core/config/locales/es.yml +420 -0
- data/installer/core/config/locales/routes.en.yml +4 -0
- data/installer/core/config/locales/routes.es.yml +5 -0
- data/installer/core/config/locales/simple_form.en.yml +45 -0
- data/installer/core/config/locales/simple_form.es.yml +95 -0
- data/installer/core/config/locales/social_share_button.es.yml +10 -0
- data/installer/core/config/menu.yml +53 -0
- data/installer/core/config/puma.rb +56 -0
- data/installer/core/config/routes.rb +94 -0
- data/installer/core/config/sitemap.rb +27 -0
- data/installer/core/config/spring.rb +6 -0
- data/installer/core/db/migrate/20140812203549_devise_create_users.rb +50 -0
- data/installer/core/db/migrate/20140812210925_rolify_create_roles.rb +19 -0
- data/installer/core/db/migrate/20151221173228_create_activities.rb +23 -0
- data/installer/core/db/migrate/20160122201215_create_settings.rb +15 -0
- data/installer/core/db/migrate/20160126141856_create_smtp_settings.rb +14 -0
- data/installer/core/db/migrate/20160128131802_create_scripts.rb +11 -0
- data/installer/core/db/migrate/20160128151351_create_google_analytics_settings.rb +12 -0
- data/installer/core/db/migrate/20160128193740_create_social_accounts.rb +25 -0
- data/installer/core/db/migrate/20160201134918_create_meta_tags.rb +13 -0
- data/installer/core/db/migrate/20160201210520_create_appearances.rb +11 -0
- data/installer/core/db/migrate/20170603145521_create_customizes.rb +10 -0
- data/installer/core/db/migrate/20171225023933_create_scaffolds.rb +10 -0
- data/installer/core/db/schema.rb +172 -0
- data/installer/core/db/seeds.rb +45 -0
- data/installer/core/lib/generators/keppler_front/keppler_front_generator.rb +139 -0
- data/installer/core/lib/generators/keppler_front/templates/controllers/controller.rb +17 -0
- data/installer/core/lib/generators/keppler_front/templates/views/template.html.haml +180 -0
- data/installer/core/lib/generators/keppler_relation/keppler_relation_generator.rb +219 -0
- data/installer/core/lib/generators/keppler_scaffold/keppler_scaffold_generator.rb +240 -0
- data/installer/core/lib/generators/keppler_scaffold/templates/controllers/controller.rb +143 -0
- data/installer/core/lib/generators/keppler_scaffold/templates/models/model.rb +41 -0
- data/installer/core/lib/generators/keppler_scaffold/templates/policies/policy.rb +9 -0
- data/installer/core/lib/generators/keppler_scaffold/templates/views/_description.html.haml +13 -0
- data/installer/core/lib/generators/keppler_scaffold/templates/views/_form.html.haml +60 -0
- data/installer/core/lib/generators/keppler_scaffold/templates/views/_index_show.html.haml +24 -0
- data/installer/core/lib/generators/keppler_scaffold/templates/views/_listing.html.haml +64 -0
- data/installer/core/lib/generators/keppler_scaffold/templates/views/edit.html.haml +1 -0
- data/installer/core/lib/generators/keppler_scaffold/templates/views/index.html.haml +97 -0
- data/installer/core/lib/generators/keppler_scaffold/templates/views/new.html.haml +1 -0
- data/installer/core/lib/generators/keppler_scaffold/templates/views/reload.js.haml +5 -0
- data/installer/core/lib/generators/keppler_scaffold/templates/views/show.html.haml +65 -0
- data/installer/core/lib/generators/keppler_scaffold/templates/views/show.js.haml +4 -0
- data/installer/core/lib/keppler_configuration.rb +12 -0
- data/installer/core/lib/templates/haml/scaffold/_form.html.haml +10 -0
- data/installer/core/plugins/keppler_ga_dashboard/Gemfile +15 -0
- data/installer/core/plugins/keppler_ga_dashboard/MIT-LICENSE +20 -0
- data/installer/core/plugins/keppler_ga_dashboard/README.md +51 -0
- data/installer/core/plugins/keppler_ga_dashboard/Rakefile +37 -0
- data/installer/core/plugins/keppler_ga_dashboard/app/assets/javascripts/keppler_ga_dashboard/active-users.js +64 -0
- data/installer/core/plugins/keppler_ga_dashboard/app/assets/javascripts/keppler_ga_dashboard/active-users.js.map +1 -0
- data/installer/core/plugins/keppler_ga_dashboard/app/assets/javascripts/keppler_ga_dashboard/dashboard.coffee +13 -0
- data/installer/core/plugins/keppler_ga_dashboard/app/assets/javascripts/keppler_ga_dashboard/date-range-selector.js +2 -0
- data/installer/core/plugins/keppler_ga_dashboard/app/assets/javascripts/keppler_ga_dashboard/date-range-selector.js.map +1 -0
- data/installer/core/plugins/keppler_ga_dashboard/app/assets/javascripts/keppler_ga_dashboard/view-selector2.js +196 -0
- data/installer/core/plugins/keppler_ga_dashboard/app/assets/javascripts/keppler_ga_dashboard/view-selector2.js.map +1 -0
- data/installer/core/plugins/keppler_ga_dashboard/app/assets/stylesheets/dashboard.scss +83 -0
- data/installer/core/plugins/keppler_ga_dashboard/app/controllers/keppler_ga_dashboard/dashboard_controller.rb +48 -0
- data/installer/core/plugins/keppler_ga_dashboard/app/helpers/keppler_ga_dashboard/application_helper.rb +4 -0
- data/installer/core/plugins/keppler_ga_dashboard/app/helpers/keppler_ga_dashboard/dashboard_helper.rb +14 -0
- data/installer/core/plugins/keppler_ga_dashboard/app/views/keppler_ga_dashboard/dashboard/analytics.html.haml +359 -0
- data/installer/core/plugins/keppler_ga_dashboard/bin/rails +12 -0
- data/installer/core/plugins/keppler_ga_dashboard/config/menu.yml +6 -0
- data/installer/core/plugins/keppler_ga_dashboard/config/routes.rb +3 -0
- data/installer/core/plugins/keppler_ga_dashboard/keppler_ga_dashboard.gemspec +22 -0
- data/installer/core/plugins/keppler_ga_dashboard/lib/keppler_ga_dashboard.rb +10 -0
- data/installer/core/plugins/keppler_ga_dashboard/lib/keppler_ga_dashboard/engine.rb +5 -0
- data/installer/core/plugins/keppler_ga_dashboard/lib/keppler_ga_dashboard/tasks/install.rb +58 -0
- data/installer/core/plugins/keppler_ga_dashboard/lib/keppler_ga_dashboard/version.rb +3 -0
- data/installer/core/plugins/keppler_ga_dashboard/lib/tasks/keppler_ga_dashboard_tasks.rake +13 -0
- data/installer/core/public/favicon.ico +0 -0
- data/installer/core/public/humans.txt +20 -0
- data/installer/core/public/robots.txt +5 -0
- data/installer/core/test/controllers/admin_controller_test.rb +11 -0
- data/installer/core/test/controllers/errors_controller_test.rb +24 -0
- data/installer/core/test/controllers/frontend_controller_test.rb +9 -0
- data/installer/core/test/controllers/fronts_controller_test.rb +49 -0
- data/installer/core/test/controllers/meta_tags_controller_test.rb +49 -0
- data/installer/core/test/controllers/scaffolds_controller_test.rb +49 -0
- data/installer/core/test/controllers/scripts_controller_test.rb +49 -0
- data/installer/core/test/controllers/settings_controller_test.rb +49 -0
- data/installer/core/test/controllers/users_controller_test.rb +18 -0
- data/installer/core/test/fixtures/appearances.yml +11 -0
- data/installer/core/test/fixtures/caches.yml +7 -0
- data/installer/core/test/fixtures/fronts.yml +7 -0
- data/installer/core/test/fixtures/google_adwords.yml +13 -0
- data/installer/core/test/fixtures/google_analytics_settings.yml +13 -0
- data/installer/core/test/fixtures/meta_tags.yml +13 -0
- data/installer/core/test/fixtures/roles.yml +11 -0
- data/installer/core/test/fixtures/scaffolds.yml +9 -0
- data/installer/core/test/fixtures/scripts.yml +11 -0
- data/installer/core/test/fixtures/settings.yml +13 -0
- data/installer/core/test/fixtures/smtp_settings.yml +17 -0
- data/installer/core/test/fixtures/social_accounts.yml +39 -0
- data/installer/core/test/fixtures/users.yml +10 -0
- data/installer/core/test/helpers/admin_helper_test.rb +4 -0
- data/installer/core/test/helpers/frontend_helper_test.rb +4 -0
- data/installer/core/test/mailers/application_mailer_test.rb +7 -0
- data/installer/core/test/mailers/previews/application_mailer_preview.rb +4 -0
- data/installer/core/test/models/apparence_test.rb +7 -0
- data/installer/core/test/models/cache_test.rb +7 -0
- data/installer/core/test/models/front_test.rb +7 -0
- data/installer/core/test/models/google_analytics_setting_test.rb +7 -0
- data/installer/core/test/models/meta_tag_test.rb +7 -0
- data/installer/core/test/models/role_test.rb +7 -0
- data/installer/core/test/models/scaffold_test.rb +7 -0
- data/installer/core/test/models/script_test.rb +7 -0
- data/installer/core/test/models/setting_test.rb +7 -0
- data/installer/core/test/models/smtp_setting_test.rb +7 -0
- data/installer/core/test/models/social_account_test.rb +7 -0
- data/installer/core/test/models/user_test.rb +7 -0
- data/installer/core/test/test_helper.rb +16 -0
- data/installer/core/vendor/assets/javascripts/bounce.min.js +5 -0
- data/installer/db_conf/conf.yml +50 -0
- data/installer/lib/conf.rb +31 -0
- data/installer/lib/scaffold.rb +10 -0
- data/installer/run.sh +19 -0
- data/installer/scripts/bin.sh +61 -0
- data/lib/keppler.rb +7 -0
- data/lib/keppler/cli.rb +12 -0
- data/lib/keppler/cli/generate.rb +19 -0
- data/lib/keppler/version.rb +3 -0
- metadata +497 -0
@@ -0,0 +1,14 @@
|
|
1
|
+
- if Rails.env.production? && @setting.google_analytics_setting.ga_status
|
2
|
+
- if Script.get_script(request)
|
3
|
+
- tracking = Script.get_script(request).script
|
4
|
+
- unless tracking
|
5
|
+
- tracking = @setting.google_analytics_setting.ga_tracking_id
|
6
|
+
|
7
|
+
:javascript
|
8
|
+
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
|
9
|
+
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
|
10
|
+
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
|
11
|
+
})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
|
12
|
+
|
13
|
+
ga('create', "#{tracking}", 'auto');
|
14
|
+
ga('send', 'pageview');
|
@@ -0,0 +1,22 @@
|
|
1
|
+
// Title & Meta tags
|
2
|
+
= render "app/layouts/meta_tags"
|
3
|
+
|
4
|
+
// Stylesheets
|
5
|
+
= stylesheet_link_tag 'app/application', media: 'all', 'data-turbolinks-track' => true
|
6
|
+
%link{href:'https://fonts.googleapis.com/css?family=Patua+One', rel:'stylesheet', type:'text/css'}
|
7
|
+
%link{href: "https://cdnjs.cloudflare.com/ajax/libs/highlight.js/9.12.0/styles/default.min.css", rel: "stylesheet"}/
|
8
|
+
|
9
|
+
// Javascripts
|
10
|
+
= javascript_include_tag 'app/application', 'data-turbolinks-track' => true
|
11
|
+
%script{:src => "https://cdnjs.cloudflare.com/ajax/libs/highlight.js/9.12.0/highlight.min.js"}
|
12
|
+
|
13
|
+
// Google Analytics
|
14
|
+
= render 'app/layouts/google_analytics'
|
15
|
+
|
16
|
+
// Favicon
|
17
|
+
= favicon_link_tag @favicon
|
18
|
+
|
19
|
+
- scripts = @scripts.select{|x| x.url == request.env['PATH_INFO']}
|
20
|
+
- unless scripts.empty?
|
21
|
+
- scripts.each do |script|
|
22
|
+
= raw script.script
|
@@ -0,0 +1,6 @@
|
|
1
|
+
-# Rails flash messages styled for Bootstrap 3.0
|
2
|
+
- flash.each do |name, msg|
|
3
|
+
- if msg.is_a?(String)
|
4
|
+
%div{:class => "alert alert-#{name.to_s == 'notice' ? 'success' : 'danger'}"}
|
5
|
+
%button.close{"aria-hidden" => "true", "data-dismiss" => "alert", type: "button"} ×
|
6
|
+
= content_tag :div, msg, :id => "flash_#{name}"
|
@@ -0,0 +1,9 @@
|
|
1
|
+
%meta{:name => "viewport", :content => "width=device-width, initial-scale=1.0"}
|
2
|
+
= csrf_meta_tags
|
3
|
+
- if @meta
|
4
|
+
%meta{:name => "description", :content => "#{content_for?(:description) ? yield(:description) : "#{@meta.description}"}"}
|
5
|
+
= raw @meta.meta_tags
|
6
|
+
%title= content_for?(:title) ? yield(:title) : @meta.title
|
7
|
+
- else
|
8
|
+
%meta{:name => "description", :content => "#{content_for?(:description) ? yield(:description) : "#{@description}"}"}
|
9
|
+
%title= content_for?(:title) ? yield(:title) : @name
|
@@ -0,0 +1,13 @@
|
|
1
|
+
-# navigation styled for Bootstrap 3.0
|
2
|
+
%nav.navbar.navbar-default.navbar-fixed-top.app-navbar
|
3
|
+
.container
|
4
|
+
.navbar-header
|
5
|
+
%button.navbar-toggle{"data-target" => ".navbar-collapse", "data-toggle" => "collapse", type: "button"}
|
6
|
+
%span.sr-only Toggle navigation
|
7
|
+
%span.icon-bar
|
8
|
+
%span.icon-bar
|
9
|
+
%span.icon-bar
|
10
|
+
%span.brand-logo Keppler
|
11
|
+
.collapse.navbar-collapse
|
12
|
+
%ul.nav.navbar-nav
|
13
|
+
= render 'app/layouts/navigation_links'
|
@@ -0,0 +1,6 @@
|
|
1
|
+
%li= link_to '<i class="fa fa-home"> Home</i>'.html_safe, main_app.root_path
|
2
|
+
- if user_signed_in?
|
3
|
+
%li= link_to '<i class="fa fa-power-off"> Sign out</i>'.html_safe, main_app.destroy_user_session_path, :method=>'delete'
|
4
|
+
- else
|
5
|
+
%li= link_to '<i class="fa fa-power-off"> Sign in</i>'.html_safe, main_app.new_user_session_path
|
6
|
+
|
@@ -0,0 +1 @@
|
|
1
|
+
Hola
|
@@ -0,0 +1,6 @@
|
|
1
|
+
%p
|
2
|
+
Hola #{@resource.email}!
|
3
|
+
%p Nos has hecho una petición para cambiar tu contraseña. Puedes hacerlo a través de este enlace.
|
4
|
+
%p= link_to 'Cambiar mi contraseña', edit_password_url(@resource, reset_password_token: @token)
|
5
|
+
%p Si usted no solicitó esto, por favor ignore este correo.
|
6
|
+
%p Su contraseña no cambiará si no entra al enlace anterior y cree una nueva.
|
@@ -0,0 +1,27 @@
|
|
1
|
+
.container
|
2
|
+
.devise-horizontal
|
3
|
+
.devise-vertical
|
4
|
+
.devise-box.card
|
5
|
+
.devise-box-header
|
6
|
+
.devise-box-title Keppler
|
7
|
+
= form_for(resource, :as => resource_name, :url => password_path(resource_name), :html => { :method => :put }) do |f|
|
8
|
+
.devise-box-body.row
|
9
|
+
.col.s12
|
10
|
+
%h5 Ya puedes cambiar tu contraseña.
|
11
|
+
%p Recuerda agregar una contraseña suficientemente segura
|
12
|
+
= f.hidden_field :reset_password_token
|
13
|
+
.input-field.col.s12
|
14
|
+
= f.password_field :password, autofocus: true, autocomplete: 'off', class: "validate #{'invalid' if resource.errors.messages[:password]}"
|
15
|
+
%label{for: "password"} Contraseña
|
16
|
+
.input-errors
|
17
|
+
= resource.errors.messages.fetch(:password).first
|
18
|
+
.input-field.col.s12
|
19
|
+
= f.password_field :password_confirmation, autocomplete: 'off', class: "validate #{'invalid' if resource.errors.messages[:password_confirmation]}"
|
20
|
+
%label{for: "password"} Confirmar contraseña
|
21
|
+
.input-errors
|
22
|
+
= resource.errors.messages.fetch(:password_confirmation).first
|
23
|
+
.devise-box-footer.row
|
24
|
+
.col.s12
|
25
|
+
= f.submit 'Cambiar contraseña', :class => 'right btn'
|
26
|
+
.col.s12.devise-logo.center-align.hidden-xs
|
27
|
+
= image_tag "admin/slice.png"
|
@@ -0,0 +1,22 @@
|
|
1
|
+
.container
|
2
|
+
.devise-horizontal
|
3
|
+
.devise-vertical
|
4
|
+
.devise-box.card
|
5
|
+
.devise-box-header
|
6
|
+
.devise-box-title Keppler
|
7
|
+
= form_for(resource, :as => resource_name, :url => password_path(resource_name), :html => { :method => :post, :role => 'form'}) do |f|
|
8
|
+
.devise-box-body.row
|
9
|
+
.col.s12
|
10
|
+
%h5 ¿Haz olvidado tu contraseña?
|
11
|
+
%p Envianos tu email para darle las instrucciones a seguir.
|
12
|
+
.input-field.col.s12
|
13
|
+
= f.email_field :email, :autofocus => true, class: "validate #{'invalid' unless resource.errors.messages.empty?}"
|
14
|
+
%label{for: :email} Email
|
15
|
+
.devise-errors.col.s12.center-align
|
16
|
+
- resource.errors.each do |name, msg|
|
17
|
+
= msg.capitalize
|
18
|
+
.devise-box-footer.row
|
19
|
+
.col.s12
|
20
|
+
= f.submit 'Enviar', :class => 'right btn '
|
21
|
+
.col.s12.devise-logo.center-align.hidden-xs
|
22
|
+
= image_tag "admin/slice.png"
|
@@ -0,0 +1,48 @@
|
|
1
|
+
<div style="padding:30px; padding-bottom:0px;">
|
2
|
+
<%= form_for(resource, :as => resource_name, :url => registration_path(resource_name), :html => { :method => :put, :role => 'form'}) do |f| %>
|
3
|
+
<%= devise_error_messages! %>
|
4
|
+
<div class="panel panel-default">
|
5
|
+
<div class="panel-heading"><b> <%= t('user.edit.edit-config')%></b></div>
|
6
|
+
<div class="panel-body">
|
7
|
+
<div class="form-group">
|
8
|
+
<%= f.label :name %>
|
9
|
+
<%= f.text_field :name, :autofocus => true, class: 'form-control' %>
|
10
|
+
<br>
|
11
|
+
<%= f.label :email %>
|
12
|
+
<%= f.email_field :email, class: 'form-control' %>
|
13
|
+
<% if devise_mapping.confirmable? && resource.pending_reconfirmation? %>
|
14
|
+
<div>Currently waiting confirmation for: <%= resource.unconfirmed_email %></div>
|
15
|
+
<% end %>
|
16
|
+
</div>
|
17
|
+
|
18
|
+
<fieldset>
|
19
|
+
<%= t('devise.announce_password') %>
|
20
|
+
<br>
|
21
|
+
<br>
|
22
|
+
<div class="form-group">
|
23
|
+
<%= f.label :password %>
|
24
|
+
<%= f.password_field :password, :autocomplete => 'off', class: 'form-control' %>
|
25
|
+
</div>
|
26
|
+
<div class="form-group">
|
27
|
+
<%= f.label :password_confirmation %>
|
28
|
+
<%= f.password_field :password_confirmation, class: 'form-control' %>
|
29
|
+
</div>
|
30
|
+
</fieldset>
|
31
|
+
<fieldset>
|
32
|
+
<%= t('devise.announce_password_confirmation') %>
|
33
|
+
<br>
|
34
|
+
<br>
|
35
|
+
<div class="form-group">
|
36
|
+
<%= f.label :current_password %>
|
37
|
+
<%= f.password_field :current_password, class: 'form-control' %>
|
38
|
+
</div>
|
39
|
+
|
40
|
+
</fieldset>
|
41
|
+
</div>
|
42
|
+
<div class="panel-footer">
|
43
|
+
<%= f.submit t('user.helpers.submit_update'), :class => 'pull-right btn btn-warning' %>
|
44
|
+
<div class= "clearfix"></div>
|
45
|
+
</div>
|
46
|
+
</div>
|
47
|
+
<% end %>
|
48
|
+
</div>
|
@@ -0,0 +1,19 @@
|
|
1
|
+
<div class="authform">
|
2
|
+
<%= form_for(resource, :as => resource_name, :url => registration_path(resource_name), :html => { :role => 'form'}) do |f| %>
|
3
|
+
<h3>Sign up</h3>
|
4
|
+
<%= devise_error_messages! %>
|
5
|
+
<div class="form-group">
|
6
|
+
<%= f.label :email %>
|
7
|
+
<%= f.email_field :email, :autofocus => true, class: 'form-control' %>
|
8
|
+
</div>
|
9
|
+
<div class="form-group">
|
10
|
+
<%= f.label :password %>
|
11
|
+
<%= f.password_field :password, class: 'form-control' %>
|
12
|
+
</div>
|
13
|
+
<div class="form-group">
|
14
|
+
<%= f.label :password_confirmation %>
|
15
|
+
<%= f.password_field :password_confirmation, class: 'form-control' %>
|
16
|
+
</div>
|
17
|
+
<%= f.submit 'Sign up', :class => 'button right' %>
|
18
|
+
<% end %>
|
19
|
+
</div>
|
@@ -0,0 +1,30 @@
|
|
1
|
+
.container
|
2
|
+
.login-box
|
3
|
+
.center
|
4
|
+
.login-container
|
5
|
+
.login-logo
|
6
|
+
%a{ href: '#' }
|
7
|
+
%span{style:"font-family: 'Patua One'"} Keppler
|
8
|
+
Admin
|
9
|
+
/ /.login-logo
|
10
|
+
.login-box-body
|
11
|
+
= form_for(resource, :as => resource_name, :url => session_path(resource_name), :html => { :role => 'form'}) do |f|
|
12
|
+
%p.login-box-msg= t('keppler.login_message')
|
13
|
+
%form{:action => "../../index2.html", :method => "post"}
|
14
|
+
.form-group.has-feedback
|
15
|
+
= f.email_field :email, :autofocus => true, class: "form-control validate", :placeholder => "Email"
|
16
|
+
%i.icon-envelope.input-icon
|
17
|
+
.form-group.has-feedback
|
18
|
+
= f.password_field :password, :autofocus => true, class: "form-control validate #{'invalid' if flash[:alert]}", :placeholder => "Password"
|
19
|
+
%i.icon-lock.input-icon
|
20
|
+
.form-group.has-feedback
|
21
|
+
.pull-left
|
22
|
+
- if devise_mapping.recoverable?
|
23
|
+
= link_to new_password_path(resource_name), class: "recoverable" do
|
24
|
+
= t("devise.sessions.forgot_password")
|
25
|
+
.pull-right
|
26
|
+
= f.submit t("devise.sessions.log_in"), class: 'btn-primary'
|
27
|
+
.clearfix
|
28
|
+
|
29
|
+
.login-footer
|
30
|
+
= "#{t('keppler.powered')} <span>Slice Group</span>".html_safe
|
@@ -0,0 +1,11 @@
|
|
1
|
+
-# Link to the "First" page
|
2
|
+
-# available local variables
|
3
|
+
-# url: url to the first page
|
4
|
+
-# current_page: a page object for the currently displayed page
|
5
|
+
-# total_pages: total number of pages
|
6
|
+
-# per_page: number of items to fetch per page
|
7
|
+
-# remote: data-remote
|
8
|
+
%span.first
|
9
|
+
- unless current_page.first?
|
10
|
+
= link_to url, :remote => remote, class: "btn-pag", title: 'First page' do
|
11
|
+
%i.fa.fa-angle-double-left
|
@@ -0,0 +1,8 @@
|
|
1
|
+
-# Non-link tag that stands for skipped pages...
|
2
|
+
-# available local variables
|
3
|
+
-# current_page: a page object for the currently displayed page
|
4
|
+
-# total_pages: total number of pages
|
5
|
+
-# per_page: number of items to fetch per page
|
6
|
+
-# remote: data-remote
|
7
|
+
%span.page.gap
|
8
|
+
= #"...".html_safe
|
@@ -0,0 +1,11 @@
|
|
1
|
+
-# Link to the "Last" page
|
2
|
+
-# available local variables
|
3
|
+
-# url: url to the last page
|
4
|
+
-# current_page: a page object for the currently displayed page
|
5
|
+
-# total_pages: total number of pages
|
6
|
+
-# per_page: number of items to fetch per page
|
7
|
+
-# remote: data-remote
|
8
|
+
%span.last
|
9
|
+
- unless current_page.last?
|
10
|
+
= link_to url, :remote => remote, class: "btn-pag", title: 'Last page' do
|
11
|
+
%i.fa.fa-angle-double-right
|
@@ -0,0 +1,11 @@
|
|
1
|
+
-# Link to the "Next" page
|
2
|
+
-# available local variables
|
3
|
+
-# url: url to the next page
|
4
|
+
-# current_page: a page object for the currently displayed page
|
5
|
+
-# total_pages: total number of pages
|
6
|
+
-# per_page: number of items to fetch per page
|
7
|
+
-# remote: data-remote
|
8
|
+
%span.next
|
9
|
+
- unless current_page.last?
|
10
|
+
= link_to url, rel: 'next', :remote => remote, class: "btn-pag", title: 'Next' do
|
11
|
+
%i.fa.fa-angle-right
|
@@ -0,0 +1,10 @@
|
|
1
|
+
-# Link showing page number
|
2
|
+
-# available local variables
|
3
|
+
-# page: a page object for "this" page
|
4
|
+
-# url: url to this page
|
5
|
+
-# current_page: a page object for the currently displayed page
|
6
|
+
-# total_pages: total number of pages
|
7
|
+
-# per_page: number of items to fetch per page
|
8
|
+
-# remote: data-remote
|
9
|
+
%span{:class => page.current? ? "btn-pag bg-current" : "btn-pag bg-not"}
|
10
|
+
= link_to_unless page.current?, page, url, {:remote => remote, rel: page.next? ? 'next' : page.prev? ? 'prev' : nil, :class => page.current? ? "btn-pag bg-current" : "btn-pag bg-not" }
|
@@ -0,0 +1,18 @@
|
|
1
|
+
-# The container tag
|
2
|
+
-# available local variables
|
3
|
+
-# current_page: a page object for the currently displayed page
|
4
|
+
-# total_pages: total number of pages
|
5
|
+
-# per_page: number of items to fetch per page
|
6
|
+
-# remote: data-remote
|
7
|
+
-# paginator: the paginator that renders the pagination tags inside
|
8
|
+
= paginator.render do
|
9
|
+
.pagination
|
10
|
+
= first_page_tag unless current_page.first?
|
11
|
+
-# = prev_page_tag unless current_page.first?
|
12
|
+
- each_page do |page|
|
13
|
+
- if page.left_outer? || page.right_outer? || page.inside_window?
|
14
|
+
= page_tag page
|
15
|
+
- elsif !page.was_truncated?
|
16
|
+
= gap_tag
|
17
|
+
-# = next_page_tag unless current_page.last?
|
18
|
+
= last_page_tag unless current_page.last?
|
@@ -0,0 +1,11 @@
|
|
1
|
+
-# Link to the "Previous" page
|
2
|
+
-# available local variables
|
3
|
+
-# url: url to the previous page
|
4
|
+
-# current_page: a page object for the currently displayed page
|
5
|
+
-# total_pages: total number of pages
|
6
|
+
-# per_page: number of items to fetch per page
|
7
|
+
-# remote: data-remote
|
8
|
+
%span.prev
|
9
|
+
- unless current_page.first?
|
10
|
+
= link_to url, rel: 'prev', :remote => remote, class: "btn-pag", title: 'Preview' do
|
11
|
+
%i.fa.fa-angle-left
|
@@ -0,0 +1,600 @@
|
|
1
|
+
= title "Dashboard"
|
2
|
+
|
3
|
+
= library_analytics
|
4
|
+
|
5
|
+
-# %script{:src => "https://cdnjs.cloudflare.com/ajax/libs/Chart.js/1.0.2/Chart.min.js"}
|
6
|
+
%script{:src => "https://cdnjs.cloudflare.com/ajax/libs/Chart.js/2.7.1/Chart.js"}
|
7
|
+
%script{:src => "https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.10.2/moment.min.js"}
|
8
|
+
%script{:src => "/assets/keppler_ga_dashboard/view-selector2.js?body=1"}
|
9
|
+
%script{:src => "/assets/keppler_ga_dashboard/date-range-selector.self.js?body=1"}
|
10
|
+
%script{:src => "/assets/keppler_ga_dashboard/active-users.self.js?body=1"}
|
11
|
+
|
12
|
+
.container
|
13
|
+
.dashboard
|
14
|
+
.row
|
15
|
+
.col-lg-12
|
16
|
+
.box.slice-box
|
17
|
+
.box-header.with-border
|
18
|
+
%h3.box-title
|
19
|
+
Información
|
20
|
+
.box-body.pure-input
|
21
|
+
.dashboard-head
|
22
|
+
-# .form-group
|
23
|
+
-# %select.form-control
|
24
|
+
-# %option Opción 1
|
25
|
+
.row
|
26
|
+
.col-lg-12.separator-dash
|
27
|
+
.col-lg-6
|
28
|
+
#view-name.hide-on-small-only
|
29
|
+
.col-lg-6
|
30
|
+
#active-users-container
|
31
|
+
.col-lg-12
|
32
|
+
#view-selector-container.hide-on-small-only
|
33
|
+
.row
|
34
|
+
.col-lg-6
|
35
|
+
.box.slice-box
|
36
|
+
.box-header.with-border
|
37
|
+
%h3.box-title
|
38
|
+
Uso por semana
|
39
|
+
-# .box-tools.pull-right
|
40
|
+
-# %a.btn.btn-box-tool{"data-widget" => "collapse", type: "button"}
|
41
|
+
-# %i.fa.fa-minus
|
42
|
+
.box-body.pure-input
|
43
|
+
%canvas#chart-1-container{:height => "300", :width => "350"}
|
44
|
+
#legend-1-container.charts-legend
|
45
|
+
|
46
|
+
.col-lg-6
|
47
|
+
.box.slice-box
|
48
|
+
.box-header.with-border
|
49
|
+
%h3.box-title
|
50
|
+
Uso al mes
|
51
|
+
.box-body.pure-input
|
52
|
+
%canvas#chart-2-container{:height => "300", :width => "350"}
|
53
|
+
#legend-2-container.charts-legend
|
54
|
+
.row
|
55
|
+
.col-lg-6.m6.l6
|
56
|
+
.box.slice-box
|
57
|
+
.box-header.with-border
|
58
|
+
%h3.box-title
|
59
|
+
Usuarios por navegador
|
60
|
+
.box-body.pure-input
|
61
|
+
#canvas-holder{:height => "300", :width => "350"}
|
62
|
+
%canvas#chart-3-container{:height => "300", :width => "350"}
|
63
|
+
|
64
|
+
.col-lg-6.m6.l6
|
65
|
+
.box.slice-box
|
66
|
+
.box-header.with-border
|
67
|
+
%h3.box-title
|
68
|
+
Usuarios por países
|
69
|
+
.box-body.pure-input
|
70
|
+
#canvas-holder{:height => "300", :width => "350"}
|
71
|
+
%canvas#chart-4-container{:height => "300", :width => "350"}
|
72
|
+
|
73
|
+
:javascript
|
74
|
+
|
75
|
+
var status;
|
76
|
+
|
77
|
+
function updateOnlineStatus() {
|
78
|
+
var condition = navigator.onLine ? "ONLINE" : "OFFLINE";
|
79
|
+
if ( condition == "ONLINE"){ status = true}
|
80
|
+
else if ( condition == "OFFLINE"){ status = false}
|
81
|
+
}
|
82
|
+
|
83
|
+
updateOnlineStatus();
|
84
|
+
|
85
|
+
var state = status;
|
86
|
+
|
87
|
+
if (state) {
|
88
|
+
|
89
|
+
gapi.analytics.ready(function() {
|
90
|
+
|
91
|
+
/*Authorize the user immediately if the user has already granted access.*/
|
92
|
+
gapi.analytics.auth.authorize({
|
93
|
+
serverAuth: {
|
94
|
+
access_token: "#{@access_token}" /*Se agrega el access token desde la api de ruby para analitycs*/
|
95
|
+
}
|
96
|
+
});
|
97
|
+
|
98
|
+
|
99
|
+
/**
|
100
|
+
* Create a new ActiveUsers instance to be rendered inside of an
|
101
|
+
* element with the id "active-users-container" and poll for changes every
|
102
|
+
* five seconds.
|
103
|
+
*/
|
104
|
+
var activeUsers = new gapi.analytics.ext.ActiveUsers({
|
105
|
+
container: 'active-users-container',
|
106
|
+
pollingInterval: 5
|
107
|
+
});
|
108
|
+
|
109
|
+
|
110
|
+
/*Add CSS animation to visually show the when users come and go.*/
|
111
|
+
activeUsers.once('success', function() {
|
112
|
+
var element = this.container.firstChild;
|
113
|
+
var timeout;
|
114
|
+
|
115
|
+
this.on('change', function(data) {
|
116
|
+
var element = this.container.firstChild;
|
117
|
+
var animationClass = data.delta > 0 ? 'is-increasing' : 'is-decreasing';
|
118
|
+
element.className += (' ' + animationClass);
|
119
|
+
|
120
|
+
clearTimeout(timeout);
|
121
|
+
timeout = setTimeout(function() {
|
122
|
+
element.className = element.className.replace(/ is-(increasing|decreasing)/g, '');
|
123
|
+
}, 3000);
|
124
|
+
});
|
125
|
+
});
|
126
|
+
|
127
|
+
|
128
|
+
/*
|
129
|
+
Create a new ViewSelector2 instance to be rendered inside of an
|
130
|
+
element with the id "view-selector-container".
|
131
|
+
*/
|
132
|
+
var viewSelector = new gapi.analytics.ext.ViewSelector2({
|
133
|
+
container: 'view-selector-container',
|
134
|
+
accountId: "#{Rails.application.secrets.ga_auth.fetch(:account_id)}"
|
135
|
+
}).execute();
|
136
|
+
|
137
|
+
|
138
|
+
/*
|
139
|
+
Update the activeUsers component, the Chartjs charts, and the dashboard
|
140
|
+
title whenever the user changes the view.
|
141
|
+
*/
|
142
|
+
viewSelector.on('viewChange', function(data) {
|
143
|
+
var title = document.getElementById('view-name');
|
144
|
+
title.innerHTML = data.property.name + ' (' + data.view.name + ')';
|
145
|
+
|
146
|
+
// Start tracking active users for this view.
|
147
|
+
activeUsers.set(data).execute();
|
148
|
+
|
149
|
+
// Aqui se deben agregar los ids de las vistas de la pagina.
|
150
|
+
renderWeekOverWeekChart(data.ids);
|
151
|
+
renderYearOverYearChart(data.ids);
|
152
|
+
renderTopCountriesChart(data.ids);
|
153
|
+
renderTopBrowsersChart(data.ids);
|
154
|
+
});
|
155
|
+
|
156
|
+
|
157
|
+
/**
|
158
|
+
* Draw the a chart.js line chart with data from the specified view that
|
159
|
+
* overlays session data for the current week over session data for the
|
160
|
+
* previous week.
|
161
|
+
*/
|
162
|
+
function renderWeekOverWeekChart(ids) {
|
163
|
+
|
164
|
+
// Adjust `now` to experiment with different days, for testing only...
|
165
|
+
var now = moment(); // .subtract(3, 'day');
|
166
|
+
|
167
|
+
var thisWeek = query({
|
168
|
+
'ids': ids,
|
169
|
+
'dimensions': 'ga:date,ga:nthDay',
|
170
|
+
'metrics': 'ga:sessions',
|
171
|
+
'start-date': moment(now).subtract(1, 'day').day(0).format('YYYY-MM-DD'),
|
172
|
+
'end-date': moment(now).format('YYYY-MM-DD')
|
173
|
+
});
|
174
|
+
|
175
|
+
var lastWeek = query({
|
176
|
+
'ids': ids,
|
177
|
+
'dimensions': 'ga:date,ga:nthDay',
|
178
|
+
'metrics': 'ga:sessions',
|
179
|
+
'start-date': moment(now).subtract(1, 'day').day(0).subtract(1, 'week').format('YYYY-MM-DD'),
|
180
|
+
'end-date': moment(now).subtract(1, 'day').day(6).subtract(1, 'week').format('YYYY-MM-DD')
|
181
|
+
});
|
182
|
+
|
183
|
+
Promise.all([thisWeek, lastWeek]).then(function(results) {
|
184
|
+
|
185
|
+
var data1 = results[0].rows.map(function(row) { return +row[2]; });
|
186
|
+
var data2 = results[1].rows.map(function(row) { return +row[2]; });
|
187
|
+
var labels = results[1].rows.map(function(row) { return +row[0]; });
|
188
|
+
|
189
|
+
// Chart line fill
|
190
|
+
var config = {
|
191
|
+
type: 'line',
|
192
|
+
data: {
|
193
|
+
labels: ["Dom", "Lun", "Mar", "Mie", "Jue", "Vie", "Sab"],
|
194
|
+
datasets: [{
|
195
|
+
label: "Esta semana",
|
196
|
+
backgroundColor: 'rgba(245, 14, 30, 0.2)',
|
197
|
+
borderColor: [
|
198
|
+
'rgba(255,99,132,1)',
|
199
|
+
'rgba(54, 162, 235, 1)',
|
200
|
+
'rgba(255, 206, 86, 1)',
|
201
|
+
'rgba(75, 192, 192, 1)',
|
202
|
+
'rgba(153, 102, 255, 1)',
|
203
|
+
'rgba(255, 159, 64, 1)'
|
204
|
+
],
|
205
|
+
// borderWidth: 1,
|
206
|
+
fill: true,
|
207
|
+
data: data1,
|
208
|
+
}, {
|
209
|
+
label: "Semana Pasada",
|
210
|
+
fill: true,
|
211
|
+
backgroundColor:'rgba(33, 150, 243, 0.29)',
|
212
|
+
borderColor: '#2196f3',
|
213
|
+
data: data2,
|
214
|
+
// borderWidth: 1
|
215
|
+
}]
|
216
|
+
},
|
217
|
+
options: {
|
218
|
+
responsive: true,
|
219
|
+
title:{
|
220
|
+
display:true,
|
221
|
+
text:' Semana a Semana'
|
222
|
+
},
|
223
|
+
tooltips: {
|
224
|
+
mode: 'index',
|
225
|
+
intersect: false,
|
226
|
+
},
|
227
|
+
hover: {
|
228
|
+
mode: 'nearest',
|
229
|
+
intersect: true
|
230
|
+
},
|
231
|
+
scales: {
|
232
|
+
xAxes: [{
|
233
|
+
display: true,
|
234
|
+
scaleLabel: {
|
235
|
+
display: true,
|
236
|
+
labelString: 'Dias'
|
237
|
+
}
|
238
|
+
}],
|
239
|
+
yAxes: [{
|
240
|
+
display: true,
|
241
|
+
scaleLabel: {
|
242
|
+
display: true,
|
243
|
+
labelString: 'Visitas'
|
244
|
+
},
|
245
|
+
// ticks: {
|
246
|
+
// min: 0,
|
247
|
+
// max: 100,
|
248
|
+
//
|
249
|
+
// // forces step size to be 5 units
|
250
|
+
// stepSize: 5
|
251
|
+
// }
|
252
|
+
}]
|
253
|
+
}
|
254
|
+
}
|
255
|
+
};
|
256
|
+
|
257
|
+
var ctx = document.getElementById("chart-1-container");
|
258
|
+
window.myLine = new Chart(ctx, config);
|
259
|
+
|
260
|
+
});
|
261
|
+
}
|
262
|
+
|
263
|
+
|
264
|
+
/**
|
265
|
+
* Draw the a chart.js bar chart with data from the specified view that
|
266
|
+
* overlays session data for the current year over session data for the
|
267
|
+
* previous year, grouped by month.
|
268
|
+
*/
|
269
|
+
function renderYearOverYearChart(ids) {
|
270
|
+
|
271
|
+
// Adjust `now` to experiment with different days, for testing only...
|
272
|
+
var now = moment(); // .subtract(3, 'day');
|
273
|
+
|
274
|
+
var thisYear = query({
|
275
|
+
'ids': ids,
|
276
|
+
'dimensions': 'ga:month,ga:nthMonth',
|
277
|
+
'metrics': 'ga:users',
|
278
|
+
'start-date': moment(now).date(1).month(0).format('YYYY-MM-DD'),
|
279
|
+
'end-date': moment(now).format('YYYY-MM-DD')
|
280
|
+
});
|
281
|
+
|
282
|
+
var lastYear = query({
|
283
|
+
'ids': ids,
|
284
|
+
'dimensions': 'ga:month,ga:nthMonth',
|
285
|
+
'metrics': 'ga:users',
|
286
|
+
'start-date': moment(now).subtract(1, 'year').date(1).month(0).format('YYYY-MM-DD'),
|
287
|
+
'end-date': moment(now).date(1).month(0).subtract(1, 'day').format('YYYY-MM-DD')
|
288
|
+
});
|
289
|
+
|
290
|
+
Promise.all([thisYear, lastYear]).then(function(results) {
|
291
|
+
var data1 = results[0].rows.map(function(row) { return +row[2]; });
|
292
|
+
var data2 = results[1].rows.map(function(row) { return +row[2]; });
|
293
|
+
var labels = ['Ene','Feb','Mar','Abr','May','Jun','Jul','Ago','Sep','Oct','Nov','Dic'];
|
294
|
+
|
295
|
+
// Ensure the data arrays are at least as long as the labels array.
|
296
|
+
// Chart.js bar charts don't (yet) accept sparse datasets.
|
297
|
+
for (var i = 0, len = labels.length; i < len; i++) {
|
298
|
+
if (data1[i] === undefined) data1[i] = 0;
|
299
|
+
if (data2[i] === undefined) data2[i] = 0;
|
300
|
+
}
|
301
|
+
|
302
|
+
// Chart line fill
|
303
|
+
var config = {
|
304
|
+
type: 'bar',
|
305
|
+
data: {
|
306
|
+
labels: ["Dom", "Lun", "Mar", "Mie", "Jue", "Vie", "Sab"],
|
307
|
+
datasets: [{
|
308
|
+
label: "Año pasado",
|
309
|
+
backgroundColor: 'rgba(245, 14, 30, 0.2)',
|
310
|
+
borderColor: 'rgba(255,99,132,1)',
|
311
|
+
borderWidth: 2,
|
312
|
+
fill: true,
|
313
|
+
data: data2,
|
314
|
+
}, {
|
315
|
+
label: "Año actual",
|
316
|
+
fill: true,
|
317
|
+
backgroundColor:'rgba(33, 150, 243, 0.29)',
|
318
|
+
borderColor: '#2196f3',
|
319
|
+
data: data1,
|
320
|
+
borderWidth: 2
|
321
|
+
}]
|
322
|
+
},
|
323
|
+
options: {
|
324
|
+
responsive: true,
|
325
|
+
title:{
|
326
|
+
display:true,
|
327
|
+
text:' Semana a Semana'
|
328
|
+
},
|
329
|
+
tooltips: {
|
330
|
+
mode: 'index',
|
331
|
+
intersect: false,
|
332
|
+
},
|
333
|
+
hover: {
|
334
|
+
mode: 'nearest',
|
335
|
+
intersect: true
|
336
|
+
},
|
337
|
+
scales: {
|
338
|
+
xAxes: [{
|
339
|
+
display: true,
|
340
|
+
scaleLabel: {
|
341
|
+
display: true,
|
342
|
+
labelString: 'Dias'
|
343
|
+
}
|
344
|
+
}],
|
345
|
+
yAxes: [{
|
346
|
+
display: true,
|
347
|
+
scaleLabel: {
|
348
|
+
display: true,
|
349
|
+
labelString: 'Visitas'
|
350
|
+
},
|
351
|
+
// ticks: {
|
352
|
+
// min: 0,
|
353
|
+
// max: 100,
|
354
|
+
//
|
355
|
+
// // forces step size to be 5 units
|
356
|
+
// stepSize: 5
|
357
|
+
// }
|
358
|
+
}]
|
359
|
+
}
|
360
|
+
}
|
361
|
+
};
|
362
|
+
|
363
|
+
var ctx = document.getElementById("chart-2-container");
|
364
|
+
window.myLine = new Chart(ctx, config);
|
365
|
+
|
366
|
+
})
|
367
|
+
.catch(function(err) {
|
368
|
+
console.error(err.stack);
|
369
|
+
});
|
370
|
+
}
|
371
|
+
|
372
|
+
|
373
|
+
/**
|
374
|
+
* Draw the a chart.js doughnut chart with data from the specified view that
|
375
|
+
* show the top 5 browsers over the past seven days.
|
376
|
+
*/
|
377
|
+
function renderTopBrowsersChart(ids) {
|
378
|
+
|
379
|
+
query({
|
380
|
+
'ids': ids,
|
381
|
+
'dimensions': 'ga:browser',
|
382
|
+
'metrics': 'ga:pageviews',
|
383
|
+
'sort': '-ga:pageviews',
|
384
|
+
'max-results': 5
|
385
|
+
})
|
386
|
+
.then(function(response) {
|
387
|
+
|
388
|
+
var data = [];
|
389
|
+
var colors = ["rgba(245, 14, 30, 0.2)",'#e3e3e3','#2196f3','#f1dd30','#f44336'];
|
390
|
+
|
391
|
+
response.rows.forEach(function(row, i) {
|
392
|
+
data.push({
|
393
|
+
label: row[0],
|
394
|
+
value: +row[1],
|
395
|
+
color: colors[i]
|
396
|
+
});
|
397
|
+
});
|
398
|
+
|
399
|
+
var data_label = [];
|
400
|
+
var data_value = [];
|
401
|
+
|
402
|
+
for ( let i = 0 ; i < data.length; i++){
|
403
|
+
data_label.push(data[i].label);
|
404
|
+
data_value.push(data[i].value);
|
405
|
+
}
|
406
|
+
|
407
|
+
var config = {
|
408
|
+
type: 'doughnut',
|
409
|
+
data: {
|
410
|
+
datasets: [{
|
411
|
+
data: data_value,
|
412
|
+
backgroundColor: [
|
413
|
+
'rgba(245, 14, 30, 0.2)',
|
414
|
+
'rgba(4, 208, 7, 0.22)',
|
415
|
+
'rgba(33, 150, 243, 0.29)',
|
416
|
+
'rgba(241, 221, 48, 0.26)',
|
417
|
+
'rgba(205, 133, 63, 0.3)'
|
418
|
+
],
|
419
|
+
borderColor: [
|
420
|
+
'rgba(255,99,132,1)',
|
421
|
+
'#04d007',
|
422
|
+
'#2196f3',
|
423
|
+
'#f1dd30',
|
424
|
+
'peru',
|
425
|
+
],
|
426
|
+
label: 'Browser'
|
427
|
+
}],
|
428
|
+
labels: data_label
|
429
|
+
},
|
430
|
+
options: {
|
431
|
+
responsive: true
|
432
|
+
}
|
433
|
+
};
|
434
|
+
|
435
|
+
var ctx = document.getElementById("chart-3-container");
|
436
|
+
window.myPie = new Chart(ctx, config);
|
437
|
+
});
|
438
|
+
}
|
439
|
+
|
440
|
+
|
441
|
+
/**
|
442
|
+
* Draw the a chart.js doughnut chart with data from the specified view that
|
443
|
+
* compares sessions from mobile, desktop, and tablet over the past seven
|
444
|
+
* days.
|
445
|
+
*/
|
446
|
+
function renderTopCountriesChart(ids) {
|
447
|
+
query({
|
448
|
+
'ids': ids,
|
449
|
+
'dimensions': 'ga:country',
|
450
|
+
'metrics': 'ga:sessions',
|
451
|
+
'sort': '-ga:sessions',
|
452
|
+
'max-results': 5
|
453
|
+
})
|
454
|
+
.then(function(response) {
|
455
|
+
|
456
|
+
var data = [];
|
457
|
+
var colors = ["#{@color}",'#e3e3e3','#2196f3','#f1dd30','#f44336'];
|
458
|
+
|
459
|
+
response.rows.forEach(function(row, i) {
|
460
|
+
data.push({
|
461
|
+
label: row[0],
|
462
|
+
value: +row[1],
|
463
|
+
color: colors[i]
|
464
|
+
});
|
465
|
+
});
|
466
|
+
|
467
|
+
var data_label = [];
|
468
|
+
var data_value = [];
|
469
|
+
|
470
|
+
for ( let i = 0 ; i < data.length; i++){
|
471
|
+
data_label.push(data[i].label);
|
472
|
+
data_value.push(data[i].value);
|
473
|
+
}
|
474
|
+
|
475
|
+
var config = {
|
476
|
+
type: 'pie',
|
477
|
+
data: {
|
478
|
+
datasets: [{
|
479
|
+
data: data_value,
|
480
|
+
backgroundColor: [
|
481
|
+
'rgba(245, 14, 30, 0.2)',
|
482
|
+
'rgba(4, 208, 7, 0.22)',
|
483
|
+
'rgba(33, 150, 243, 0.29)',
|
484
|
+
'rgba(241, 221, 48, 0.26)',
|
485
|
+
'rgba(205, 133, 63, 0.3)'
|
486
|
+
],
|
487
|
+
borderColor: [
|
488
|
+
'rgba(255,99,132,1)',
|
489
|
+
'#04d007',
|
490
|
+
'#2196f3',
|
491
|
+
'#f1dd30',
|
492
|
+
'peru',
|
493
|
+
],
|
494
|
+
label: 'Country'
|
495
|
+
}],
|
496
|
+
labels: data_label
|
497
|
+
},
|
498
|
+
options: {
|
499
|
+
responsive: true
|
500
|
+
}
|
501
|
+
};
|
502
|
+
|
503
|
+
var ctx = document.getElementById("chart-4-container");
|
504
|
+
window.myPie = new Chart(ctx, config);
|
505
|
+
});
|
506
|
+
}
|
507
|
+
|
508
|
+
|
509
|
+
/**
|
510
|
+
* Extend the Embed APIs `gapi.analytics.report.Data` component to
|
511
|
+
* return a promise the is fulfilled with the value returned by the API.
|
512
|
+
* @param {Object} params The request parameters.
|
513
|
+
* @return {Promise} A promise.
|
514
|
+
*/
|
515
|
+
function query(params) {
|
516
|
+
return new Promise(function(resolve, reject) {
|
517
|
+
var data = new gapi.analytics.report.Data({query: params});
|
518
|
+
data.once('success', function(response) { resolve(response); })
|
519
|
+
.once('error', function(response) { reject(response); })
|
520
|
+
.execute();
|
521
|
+
});
|
522
|
+
}
|
523
|
+
|
524
|
+
|
525
|
+
/**
|
526
|
+
* Create a new canvas inside the specified element. Set it to be the width
|
527
|
+
* and height of its container.
|
528
|
+
* @param {string} id The id attribute of the element to host the canvas.
|
529
|
+
* @return {RenderingContext} The 2D canvas context.
|
530
|
+
*/
|
531
|
+
function makeCanvas(id) {
|
532
|
+
var container = document.getElementById(id);
|
533
|
+
var canvas = document.createElement('canvas');
|
534
|
+
var ctx = canvas.getContext('2d');
|
535
|
+
|
536
|
+
container.innerHTML = '';
|
537
|
+
canvas.width = container.offsetWidth;
|
538
|
+
canvas.height = container.offsetHeight;
|
539
|
+
container.appendChild(canvas);
|
540
|
+
|
541
|
+
return ctx;
|
542
|
+
}
|
543
|
+
|
544
|
+
|
545
|
+
/**
|
546
|
+
* Create a visual legend inside the specified element based off of a
|
547
|
+
* Chart.js dataset.
|
548
|
+
* @param {string} id The id attribute of the element to host the legend.
|
549
|
+
* @param {Array.} items A list of labels and colors for the legend.
|
550
|
+
*/
|
551
|
+
function generateLegend(id, items) {
|
552
|
+
var legend = document.getElementById(id);
|
553
|
+
legend.innerHTML = items.map(function(item) {
|
554
|
+
var color = item.color || item.fillColor;
|
555
|
+
var label = item.label;
|
556
|
+
return '<li><i style="background:' + color + '"></i>' + label + '</li>';
|
557
|
+
}).join('');
|
558
|
+
}
|
559
|
+
|
560
|
+
|
561
|
+
// Set some global Chart.js defaults.
|
562
|
+
Chart.defaults.global.animationSteps = 60;
|
563
|
+
Chart.defaults.global.animationEasing = 'easeInOutQuart';
|
564
|
+
Chart.defaults.global.responsive = true;
|
565
|
+
Chart.defaults.global.maintainAspectRatio = false;
|
566
|
+
});
|
567
|
+
|
568
|
+
|
569
|
+
}
|
570
|
+
|
571
|
+
else {
|
572
|
+
alert("No hay conexion a internet al Dashboard");
|
573
|
+
|
574
|
+
}
|
575
|
+
|
576
|
+
|
577
|
+
:scss
|
578
|
+
.ActiveUsers{
|
579
|
+
position: absolute;
|
580
|
+
top: -3px;
|
581
|
+
right: 10px;
|
582
|
+
background: none;
|
583
|
+
border: 1px solid #d4d2d0;
|
584
|
+
border-radius: 4px;
|
585
|
+
font-weight: 300;
|
586
|
+
padding: .5em 1.5em;
|
587
|
+
white-space: nowrap;
|
588
|
+
}
|
589
|
+
|
590
|
+
#view-name{
|
591
|
+
margin-left: -13px ;
|
592
|
+
font-family: "roboto";
|
593
|
+
font-weight: 300;
|
594
|
+
font-size: 1.4em;
|
595
|
+
color: #777;
|
596
|
+
}
|
597
|
+
|
598
|
+
.separator-dash{
|
599
|
+
margin-bottom: 5vh;
|
600
|
+
}
|