Company: {%html company_link %}
+
diff --git a/stackalytics/dashboard/templates/base.html b/stackalytics/dashboard/templates/base.html
index e3ba390d4..818173a37 100644
--- a/stackalytics/dashboard/templates/base.html
+++ b/stackalytics/dashboard/templates/base.html
@@ -2,12 +2,13 @@
-
+
Stackalytics {% if page_title %}| {{ page_title }} {% endif %}
{% if not page_title %}
-
+
{% else %}
{% endif %}
@@ -17,41 +18,61 @@
{% if page_title %}
-
-
-
-
-
-
+
+
+
+
+
+
{% endif %}
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
+
-
+
-
+
-
-
-
+
+
+
@@ -61,6 +82,19 @@
+
+
+
+
+
+
+
{% if active_tab == 'driverlog' %}
{% else %}
@@ -73,10 +107,8 @@
-
-
- {% block body %}{% endblock %}
-
-
+
+ {% block body %}{% endblock %}
+
\ No newline at end of file
diff --git a/stackalytics/dashboard/templates/cncf.html b/stackalytics/dashboard/templates/cncf.html
new file mode 100644
index 000000000..2e11f304b
--- /dev/null
+++ b/stackalytics/dashboard/templates/cncf.html
@@ -0,0 +1,226 @@
+{% extends "cncf_layout.html" %}
+{% import '_macros/activity_log.html' as activity_log %}
+{% import '_macros/contribution_summary.html' as contribution_summary %}
+{% import '_macros/user_profile.html' as user_profile %}
+{% import '_macros/module_details.html' as module_details %}
+
+{% set show_company_breakdown = (not company) and (not user_id) %}
+{% set show_engineer_breakdown = (not user_id) %}
+{% set show_bp_breakdown = (metric in ['bpd', 'bpc']) %}
+{% set show_module_breakdown = (not module) %}
+{% set show_languages_breakdown = (metric in ['translations']) %}
+{% set show_user_activity = (user_id) %}
+{% set show_module_activity = (module) and (not user_id) %}
+{% set show_activity = (show_user_activity) or (show_module_activity) %}
+{% set show_contribution_on_left = (not user_id) and (module) %}
+{% set show_contribution_on_right = (user_id) or (company and not module) %}
+{% set show_user_profile = (user_id) %}
+{% set show_module_details = (module) %}
+{% set show_review_ratio = (metric in ['marks']) %}
+
+{% block scripts %}
+
+
+{% endblock %}
+
+{% block left_frame %}
+
+ {% if show_module_details %}
+ {{ module_details.show_module_details(module=module) }}
+ {% endif %}
+
+ {% if show_user_profile %}
+ {{ user_profile.show_user_profile(user_id=user_id) }}
+ {% endif %}
+
+ {% if show_company_breakdown %}
+
+
+
+
+
+
Commits by Company {% if user_id %} | {{ user_inst.user_name }}{% endif %}
+
+
+
+
+
+
+
+
+
+ #
+ Company
+ Commits
+
+
+
+
+
+
+
+
+
+ {% endif %}
+
+ {% if show_module_breakdown %}
+
+
+
+
+
Commits by Project {% if company %} | {{ company_original }}{% endif %} {% if user_id %} | {{ user_inst.user_name }}{% endif %}
+
+
+
+
+
+
+
+
+
+ #
+ Project
+ Commits
+
+
+
+
+
+
+
+
+ {% endif %}
+
+ {% if show_engineer_breakdown %}
+
+
+
Commits by Contributor {% if company %} | {{ company_original }}{% endif %} {% if user_id %} | {{ user_inst.user_name }}{% endif %}
+
+
+
+
+ #
+ Contributor
+ Commits
+
+
+
+
+
+
+
+ {% endif %}
+
+ {% if show_contribution_on_left %}
+ {{ contribution_summary.show_contribution_summary(show_all=False) }}
+ {% endif %}
+
+ {% if show_contribution_on_right %}
+ {{ contribution_summary.show_contribution_summary(show_all=False) }}
+ {% endif %}
+
+ {% if show_user_activity %}
+ {{ activity_log.show_activity_log(gravatar_size=32, show_all=False) }}
+ {% endif %}
+
+ {% if show_module_activity %}
+ {{ activity_log.show_activity_log(gravatar_size=32, show_all=False) }}
+ {% endif %}
+
+ {% if show_contribution_on_left %}
+
+ {% endif %}
+
+ {% if show_contribution_on_right %}
+
+ {% endif %}
+
+ {% if show_bp_breakdown %}
+
+
Blueprint popularity
+
+
+ This metric shows how many times a blueprint was mentioned in emails and commit messages.
+
+
+
+
+
+
+
+ #
+ Blueprint
+ Status
+ Date
+ Mentions
+
+
+
+
+
+
+
+ {% endif %}
+
+ {% if show_languages_breakdown %}
+
+
Languages
+
+
+
+
+
+
+ #
+ Language
+ Translations
+
+
+
+
+
+
+
+ {% endif %}
+
+
+{% endblock %}
+
+{% block center_frame %}
+
+{% endblock %}
+
+{% block right_frame %}
+
+
+
+
+
+{% endblock %}
diff --git a/stackalytics/dashboard/templates/cncf_layout.html b/stackalytics/dashboard/templates/cncf_layout.html
new file mode 100644
index 000000000..cb2d227c7
--- /dev/null
+++ b/stackalytics/dashboard/templates/cncf_layout.html
@@ -0,0 +1,172 @@
+{% extends "base.html" %}
+
+{% block head %}
+
+
+
+{% block scripts %}{% endblock %}
+
+{% endblock %}
+
+{% block body %}
+
+
+ {% if not runtime_storage_update_time %}
+
The data is being loaded now and is not complete
+ {% set update_time_title = '' %}
+ {% else %}
+ {% if runtime_storage_update_time is too_old %}
+
The data was last updated on {{ runtime_storage_update_time_str }}
+ {% endif %}
+ {% set update_time_title = 'Last updated on ' + runtime_storage_update_time_str %}
+ {% endif %}
+
+
+
+
+
+
+
+ {% block left_frame %}{% endblock %}
+
+
+
+
+
+
+
+ {% block right_frame %}{% endblock %}
+
+
+
+
+
+
+
+ {% block center_frame %}{% endblock %}
+
+
+
+
+
+{% endblock %}
diff --git a/stackalytics/dashboard/templates/layout.html b/stackalytics/dashboard/templates/layout.html
index a9fdd60d5..93feb0521 100644
--- a/stackalytics/dashboard/templates/layout.html
+++ b/stackalytics/dashboard/templates/layout.html
@@ -5,6 +5,9 @@
- {% else %}
-
Languages
+
Languages
-
+
-
-
+
+
#
Language
Translations
-
-
-
-
- {% endif %}
-
-
- {% endif %}
-
- {% if show_module_breakdown %}
-
-
Contribution by modules
-
-
-
-
-
-
- #
- Module
- {{ metric_label }}
-
-
-
-
-
-
-
- {% endif %}
-
- {% if show_module_details %}
- {{ module_details.show_module_details(module=module) }}
- {% endif %}
-
- {% if show_bp_breakdown %}
-
-
Blueprint popularity
-
-
- This metric shows how many times a blueprint was mentioned in emails and commit messages.
-
-
-
-
-
-
-
- #
- Blueprint
- Status
- Date
- Mentions
-
-
-
-
-
-
+
+
+
+
+
{% endif %}
{% if show_contribution_on_right %}
- {{ contribution_summary.show_contribution_summary(show_all=False) }}
- {{ show_report_links(module, company, user_id) }}
+ {{ contribution_summary.show_contribution_summary(show_all=False) }}
+ {{ show_report_links(module, company, user_id) }}
{% endif %}
{% if show_module_activity %}
- {{ activity_log.show_activity_log(gravatar_size=32, show_all=False) }}
+ {{ activity_log.show_activity_log(gravatar_size=32, show_all=False) }}
{% endif %}
+{% endblock %}
+
+{% block center_frame %}
+
+{% endblock %}
+
+{% block right_frame %}
+
+
+
+
+
{% endblock %}
diff --git a/stackalytics/dashboard/templates/reports/affiliation_changes.html b/stackalytics/dashboard/templates/reports/affiliation_changes.html
index 0ff23c047..66ee14f36 100644
--- a/stackalytics/dashboard/templates/reports/affiliation_changes.html
+++ b/stackalytics/dashboard/templates/reports/affiliation_changes.html
@@ -3,7 +3,7 @@
{% set page_title = 'Company Affiliation Changes' %}
{% block scripts %}
-
+
{% endblock %}
{% block content %}
-
{% endblock %}
diff --git a/stackalytics/dashboard/templates/reports/base_report.html b/stackalytics/dashboard/templates/reports/base_report.html
index 0518f2761..f9370e777 100644
--- a/stackalytics/dashboard/templates/reports/base_report.html
+++ b/stackalytics/dashboard/templates/reports/base_report.html
@@ -7,9 +7,9 @@
{% block body %}