insights 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 596dc0e0949da344da61b0d339001672d66a835d
4
+ data.tar.gz: 43741b49b3b56e4ac0b50eb2ba5d1116c9df68c7
5
+ SHA512:
6
+ metadata.gz: bffb4aa492c6e78c04c7ab8f61edeec41649fb93c883744468ea2dc199b0f7a55687ab5cb1ed94909c4eafc3ccc50166d0db05041e951c92c8965c3829211615
7
+ data.tar.gz: 41e1839edca3aee5648fe7e4e76f3761473c95b21ac6ee6b8dc2505c60564128ea4de2372eb2cf6e9806a5f8844375f0f0d23618e8625f069c7c479e4e4bc0df
data/.gitignore ADDED
@@ -0,0 +1 @@
1
+ .DS_Store
data/Gemfile ADDED
@@ -0,0 +1,3 @@
1
+ source "http://rubygems.org"
2
+
3
+ gemspec
data/LICENSE.md ADDED
@@ -0,0 +1,21 @@
1
+ The MIT License (MIT)
2
+
3
+ Copyright © 2015 [Slate Studio](https://github.com/slate-studio)
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the “Software”), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
data/README.md ADDED
@@ -0,0 +1,23 @@
1
+ # Insights
2
+
3
+ *Plug Google Analytics charts into [Character](https://github.com/slate-studio/chr) dashboard.*
4
+
5
+
6
+ ### Installation
7
+
8
+ Add to ```Gemfile```:
9
+
10
+ gem 'insights'
11
+
12
+
13
+ ## Insights family
14
+
15
+ - [Character](https://github.com/slate-studio/chr): Powerful javascript CMS for apps
16
+ - [Mongosteen](https://github.com/slate-studio/mongosteen): An easy way to add restful actions for mongoid models
17
+ - [Inverter](https://github.com/slate-studio/inverter): An easy way to connect Rails templates content to CMS
18
+ - [Loft](https://github.com/slate-studio/loft): Media assets manager for Character CMS
19
+
20
+
21
+ ## License
22
+
23
+ Copyright © 2015 [Slate Studio](https://github.com/slate-studio). Insights is free software, and may be redistributed under the terms specified in the [license](LICENSE.md).
data/Rakefile ADDED
@@ -0,0 +1 @@
1
+ require "bundler/gem_tasks"
@@ -0,0 +1,57 @@
1
+ # -----------------------------------------------------------------------------
2
+ # Authors: Maksym Melnyk <maxim@slatestudio.com>,
3
+ # Alexander Kravets <alex@slatestudio.com>,
4
+ # Slate Studio (http://www.slatestudio.com)
5
+ # -----------------------------------------------------------------------------
6
+ # INPUT CHART
7
+ # -----------------------------------------------------------------------------
8
+ class @InputChart
9
+ constructor: (@name, @value, @config, @object) ->
10
+ @_create_el()
11
+
12
+ # PRIVATE ===================================================================
13
+
14
+ _create_el: ->
15
+ id = "#{ @config.fieldName }_chart_container"
16
+ @$el = $("<div id='#{ id }' class='input-chart'>")
17
+
18
+ _chart_options: ->
19
+ @config.chart
20
+
21
+ _set_default_query_options: ->
22
+ @config.query.dimensions ||= "ga:date"
23
+ @config.query["start-date"] ||= "30daysAgo"
24
+ @config.query["end-date"] ||= "today"
25
+
26
+ # PUBLIC ====================================================================
27
+
28
+ showErrorMessage: (message) -> ;
29
+
30
+ hideErrorMessage: -> ;
31
+
32
+ initialize: ->
33
+ @_set_default_query_options()
34
+
35
+ # Provides flexibility of options customization for child input classes
36
+ options = @_chart_options()
37
+ options.options = $.extend(options.options, @config.chartOptions)
38
+
39
+ @dataChart = new gapi.analytics.googleCharts.DataChart
40
+ query: @config.query
41
+ chart: options
42
+
43
+ @dataChart.set
44
+ query:
45
+ ids: "ga:#{ GA_TABLE_ID }"
46
+ chart:
47
+ container: "#{ @config.fieldName }_chart_container"
48
+
49
+ @dataChart.execute()
50
+
51
+ @config.onInitialize?(this)
52
+
53
+ hash: (hash={}) -> ;
54
+
55
+ updateValue: (@value) -> ;
56
+
57
+ chr.formInputs['chart'] = InputChart
@@ -0,0 +1,14 @@
1
+ # -----------------------------------------------------------------------------
2
+ # Authors: Maksym Melnyk <maxim@slatestudio.com>,
3
+ # Alexander Kravets <alex@slatestudio.com>,
4
+ # Slate Studio (http://www.slatestudio.com)
5
+ # -----------------------------------------------------------------------------
6
+ # INPUT CHART
7
+ # -----------------------------------------------------------------------------
8
+ class @InputChartLine extends InputChart
9
+ _chart_options: ->
10
+ type: 'LINE'
11
+ options:
12
+ width: '100%'
13
+
14
+ chr.formInputs['chart-line'] = InputChartLine
@@ -0,0 +1,14 @@
1
+ # -----------------------------------------------------------------------------
2
+ # Authors: Maksym Melnyk <maxim@slatestudio.com>,
3
+ # Alexander Kravets <alex@slatestudio.com>,
4
+ # Slate Studio (http://www.slatestudio.com)
5
+ # -----------------------------------------------------------------------------
6
+ # INPUT CHART
7
+ # -----------------------------------------------------------------------------
8
+ class @InputChartTable extends InputChart
9
+ _chart_options: ->
10
+ type: 'TABLE'
11
+ options:
12
+ width: '100%'
13
+
14
+ chr.formInputs['chart-table'] = InputChartTable
@@ -0,0 +1,34 @@
1
+ # -----------------------------------------------------------------------------
2
+ # Authors: Maksym Melnyk <maxim@slatestudio.com>,
3
+ # Alexander Kravets <alex@slatestudio.com>,
4
+ # Slate Studio (http://www.slatestudio.com)
5
+ # -----------------------------------------------------------------------------
6
+ # INSIGHTS DASHBOARD
7
+ # -----------------------------------------------------------------------------
8
+ # Dependencies:
9
+ #= require_tree ./inputs
10
+ # -----------------------------------------------------------------------------
11
+ class @InsightsDashboard
12
+ constructor: (config) ->
13
+ @title = config.title
14
+ @subtitle = config.subtitle
15
+ @disableSave = true
16
+ @objectStore = new ObjectStore({ data: {} })
17
+ @formSchema = {}
18
+
19
+ for k, v of config.charts
20
+ @_add_chart(k, v)
21
+
22
+ ## PRIVATE ==================================================================
23
+
24
+ _add_chart: (name, config) ->
25
+ @formSchema["#{name}_panel"] =
26
+ type: "group"
27
+ groupClass: "group-panel"
28
+ title: config.title || name.titleize()
29
+ inputs: {}
30
+
31
+ @formSchema["#{name}_panel"].inputs[name] =
32
+ type: config.type || "chart-line"
33
+ query: config.query
34
+ chartOptions: config.chartOptions
@@ -0,0 +1,36 @@
1
+ $highlight-color: #ffffc0;
2
+
3
+ .input-chart {
4
+ margin: 0 1em;
5
+
6
+ .google-visualization-table {
7
+ margin: 0.25em 0 1em;
8
+ }
9
+
10
+ .gapi-analytics-data-chart {
11
+ .google-visualization-table-table {
12
+ font-size: 0.9em;
13
+ }
14
+
15
+ .gapi-analytics-data-chart-styles-table-th {
16
+ border-color: $border-color;
17
+ }
18
+
19
+ .gapi-analytics-data-chart-styles-table-tr-odd {
20
+ background-color: $bg-color;
21
+ }
22
+
23
+ .gapi-analytics-data-chart-styles-table-tr-over {
24
+ background-color: $border-color;
25
+ }
26
+
27
+ .gapi-analytics-data-chart-styles-table-tr-sel {
28
+ background-color: $highlight-color;
29
+ }
30
+
31
+ .gapi-analytics-data-chart-styles-table-tr-even:last-child,
32
+ .gapi-analytics-data-chart-styles-table-tr-odd:last-child {
33
+ border-color: $border-color;
34
+ }
35
+ }
36
+ }
@@ -0,0 +1,29 @@
1
+ module InsightsHelper
2
+ def ga_charts_include_tag
3
+ # Load Google Embed API
4
+ # To embed Google Analytics charts
5
+ # Embed API can not be loaded via Google API Loader.
6
+ script = """(function(w,d,s,g,js,fs){
7
+ g=w.gapi||(w.gapi={});g.analytics={q:[],ready:function(f){this.q.push(f);}};
8
+ js=d.createElement(s);fs=d.getElementsByTagName(s)[0];
9
+ js.src='https://apis.google.com/js/platform.js';
10
+ fs.parentNode.insertBefore(js,fs);js.onload=function(){g.load('analytics');};
11
+ }(window,document,'script'));"""
12
+
13
+ ga_access_token = GoogleService.new.access_token
14
+ ga_table_id = Rails.application.secrets.ga_table_id
15
+
16
+ callback_script = """window.GA_TABLE_ID = '#{ga_table_id}';
17
+ gapi.analytics.ready(function(){
18
+ gapi.analytics.auth.authorize({
19
+ 'serverAuth': {'access_token': '#{ga_access_token}'}
20
+ });
21
+ startCharacter();
22
+ });"""
23
+
24
+ [
25
+ javascript_tag(script),
26
+ javascript_tag(callback_script)
27
+ ].join("\n").html_safe
28
+ end
29
+ end
data/insights.gemspec ADDED
@@ -0,0 +1,21 @@
1
+ # coding: utf-8
2
+ $:.push File.expand_path('../lib', __FILE__)
3
+ require 'insights/version'
4
+
5
+ Gem::Specification.new do |s|
6
+ s.name = 'insights'
7
+ s.version = Insights::VERSION
8
+ s.platform = Gem::Platform::RUBY
9
+ s.authors = ['Alexander Kravets', 'Maxym Melnyk']
10
+ s.email = 'alex@slatestudio.com'
11
+ s.license = 'MIT'
12
+ s.homepage = 'https://github.com/slate-studio/insights'
13
+ s.summary = 'Plug Google Analytics into Character dashboard.'
14
+
15
+ s.rubyforge_project = 'insights'
16
+
17
+ s.files = `git ls-files`.split("\n")
18
+ s.require_paths = ['lib']
19
+
20
+ s.add_dependency("google-api-client")
21
+ end
@@ -0,0 +1,4 @@
1
+ module Insights
2
+ class Engine < Rails::Engine
3
+ end
4
+ end
@@ -0,0 +1,3 @@
1
+ module Insights
2
+ VERSION = "0.1.0"
3
+ end
data/lib/insights.rb ADDED
@@ -0,0 +1,5 @@
1
+ module Insights
2
+ class Engine < ::Rails::Engine
3
+ require "insights/engine"
4
+ end
5
+ end
metadata ADDED
@@ -0,0 +1,73 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: insights
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ platform: ruby
6
+ authors:
7
+ - Alexander Kravets
8
+ - Maxym Melnyk
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2015-12-11 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: google-api-client
16
+ requirement: !ruby/object:Gem::Requirement
17
+ requirements:
18
+ - - ">="
19
+ - !ruby/object:Gem::Version
20
+ version: '0'
21
+ type: :runtime
22
+ prerelease: false
23
+ version_requirements: !ruby/object:Gem::Requirement
24
+ requirements:
25
+ - - ">="
26
+ - !ruby/object:Gem::Version
27
+ version: '0'
28
+ description:
29
+ email: alex@slatestudio.com
30
+ executables: []
31
+ extensions: []
32
+ extra_rdoc_files: []
33
+ files:
34
+ - ".gitignore"
35
+ - Gemfile
36
+ - LICENSE.md
37
+ - README.md
38
+ - Rakefile
39
+ - app/assets/javascripts/inputs/chart.coffee
40
+ - app/assets/javascripts/inputs/chart_line.coffee
41
+ - app/assets/javascripts/inputs/chart_table.coffee
42
+ - app/assets/javascripts/insights.coffee
43
+ - app/assets/stylesheets/insights.scss
44
+ - app/helpers/insights_helper.rb
45
+ - insights.gemspec
46
+ - lib/insights.rb
47
+ - lib/insights/engine.rb
48
+ - lib/insights/version.rb
49
+ homepage: https://github.com/slate-studio/insights
50
+ licenses:
51
+ - MIT
52
+ metadata: {}
53
+ post_install_message:
54
+ rdoc_options: []
55
+ require_paths:
56
+ - lib
57
+ required_ruby_version: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ">="
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ required_rubygems_version: !ruby/object:Gem::Requirement
63
+ requirements:
64
+ - - ">="
65
+ - !ruby/object:Gem::Version
66
+ version: '0'
67
+ requirements: []
68
+ rubyforge_project: insights
69
+ rubygems_version: 2.4.5.1
70
+ signing_key:
71
+ specification_version: 4
72
+ summary: Plug Google Analytics into Character dashboard.
73
+ test_files: []