diff --git a/app/assets/images/emoji/apple-eyes.png b/app/assets/images/emoji/apple-eyes.png new file mode 100644 index 000000000..5e13c9f1a Binary files /dev/null and b/app/assets/images/emoji/apple-eyes.png differ diff --git a/app/assets/javascripts/initializers/initializeAnalytics.js b/app/assets/javascripts/initializers/initializeAnalytics.js index ebbbb6c8c..aaff7ec04 100644 --- a/app/assets/javascripts/initializers/initializeAnalytics.js +++ b/app/assets/javascripts/initializers/initializeAnalytics.js @@ -13,9 +13,11 @@ function initializeAnalytics() { var total = 0; for (var k in json){ total = total + Number(json[k]); - document.getElementById("pageviews-"+k).innerHTML = numberWithCommas(json[k]) + " VIEWS"; + var numString = parseInt(json[k]) < 100 ? "< 100 " : numberWithCommas(json[k]) ; + var totalString = parseInt(total) < 100 ? "< 100 " : numberWithCommas(total) ; + document.getElementById("pageviews-"+k).innerHTML = numString + " Views"; document.getElementById("pageviews-"+k).classList.add("loaded"); - document.getElementById("dashboard-analytics").innerHTML = "Total Views: "+ numberWithCommas(total); + document.getElementById("dashboard-analytics").innerHTML = totalString+ " Total Views"; } document.getElementById("dashboard-analytics-header").classList.add("loaded"); }); diff --git a/app/assets/stylesheets/dashboard.scss b/app/assets/stylesheets/dashboard.scss index bcbae41fb..567feedde 100644 --- a/app/assets/stylesheets/dashboard.scss +++ b/app/assets/stylesheets/dashboard.scss @@ -67,31 +67,53 @@ } } } + .dashboard-analytics-header-wrapper{ + text-align: center; + margin-bottom: 28px; + } .dashboard-analytics-header{ - background: $green; - color:white; - margin:10px auto; - font-size:calc(1.2em + 1.5vw); - padding: 30px 5px; - padding-left: calc(1em + 1vw); - opacity:0.3; - font-family: $helvetica-condensed; - font-stretch:condensed; + color:$black; + margin:5px auto; + font-size:calc(0.8em + 0.25vw); + padding: 20px 0px; + padding-left: 10px; + text-align: left; + font-family: $monospace; border-radius: 3px; + border: 1px solid $light-medium-gray; + box-shadow: $bold-shadow; + display: inline-block; + width: 90%; + margin: 1.1%; + @media screen and ( min-width: 600px ) { + width: 45%; + margin: 1.1%; + } + span{ + opacity:0.3; + } img{ - width: calc(0.9em + 1.3vw); - height: calc(0.9em + 1.3vw); - margin-right: 0.5em; - vertical-align: calc(-0.25vw - 2px); + width: calc(0.9em + 1.2vw); + height: calc(0.9em + 1.2vw); + margin-right: 0.4em; + margin-left: 0.5em; + vertical-align: calc(-0.6vw - 2px); } &.loaded{ - opacity:1; + span{ + opacity:1; + } } } + .video-upload-cta{ + display: inline-block; + margin: 10px 0px 20px; + } + .single-article{ border: 1px solid $light-medium-gray; - box-shadow: $shadow; + box-shadow: $bold-shadow; padding:5px 15px; margin-bottom:13px; border-radius:3px; @@ -155,12 +177,15 @@ } } .dashboard-pageviews-indicator{ - background:$green; display:inline-block; - border:1px solid darken($green,5%); - min-width:90px; + font-family: $monospace; + color: $black; + background: white; text-align:center; opacity:0.4; + height: 23px; + line-height: 22px; + padding: 2px 8px; &.loaded{ opacity:1; } diff --git a/app/black_box/google_analytics.rb b/app/black_box/google_analytics.rb index d4421b14d..dcb4a8ea4 100644 --- a/app/black_box/google_analytics.rb +++ b/app/black_box/google_analytics.rb @@ -11,6 +11,7 @@ class GoogleAnalytics @user_id = user_id.to_s @client = AnalyticsReportingService.new @client.authorization = create_service_account_credential + @start_date = "201#{rand(5..8)}-0#{rand(1..8)}-0#{rand(1..9)}" end def get_pageviews @@ -58,8 +59,13 @@ class GoogleAnalytics view_id: ApplicationConfig["GA_VIEW_ID"], filters_expression: filters_expression_string, metrics: [Metric.new(expression: metrics_string)], - date_ranges: [ - DateRange.new(start_date: "2015-01-01", end_date: "today"), + dimensions: [Dimension.new(name: "ga:segment")], + segments: [Segment.new(segment_id: "gaid::-1"), + Segment.new(segment_id: "gaid::-2"), + Segment.new(segment_id: "gaid::-19"), + Segment.new(segment_id: "gaid::-7")], + date_ranges: [ + DateRange.new(start_date: @start_date, end_date: "2020-01-01"), ], ) end @@ -68,7 +74,9 @@ class GoogleAnalytics grr = GetReportsRequest.new(report_requests: report_requests, quota_user: @user_id.to_s) response = @client.batch_get_reports(grr) response.reports.map do |report| - report.data.totals[0].values[0] + p report.data + p report.data + (report.data.maximums || report.data.totals)[0].values[0] end end @@ -78,11 +86,4 @@ class GoogleAnalytics scope: [AUTH_ANALYTICS_READONLY], ) end - - def adjust(pageviews) - # This is naiively adjusting for "lost views" from adblockers, - # and ghostery, non-js loaded, etc. - # We can loosen this in the near future. - pageviews.map { |n| (n.to_i * 1.1).to_i.to_s } - end end diff --git a/app/controllers/analytics_controller.rb b/app/controllers/analytics_controller.rb index 9e21cb749..0300813ac 100644 --- a/app/controllers/analytics_controller.rb +++ b/app/controllers/analytics_controller.rb @@ -30,6 +30,7 @@ class AnalyticsController < ApplicationController pageviews = GoogleAnalytics.new(chunk.pluck(:id), current_user.id).get_pageviews page_views_obj = pageviews.to_h chunk.each do |article| + next if article.page_views_count > page_views_obj[article.id].to_i article.update_columns(page_views_count: page_views_obj[article.id].to_i, previous_positive_reactions_count: article.positive_reactions_count) end diff --git a/app/views/dashboards/show.html.erb b/app/views/dashboards/show.html.erb index 0c6bd9c2a..309ac219a 100644 --- a/app/views/dashboards/show.html.erb +++ b/app/views/dashboards/show.html.erb @@ -23,9 +23,14 @@ <% end %> <% if @user.org_admin && @user.organization && params[:which] == "organization" %> <% if current_user.can_view_analytics? %> -