Skip to content

Commit

Permalink
Merge pull request #519 from GSA/staging
Browse files Browse the repository at this point in the history
Staging
  • Loading branch information
arnayv-47 authored Jan 14, 2025
2 parents 4c67722 + d28ab67 commit a405455
Show file tree
Hide file tree
Showing 10 changed files with 195 additions and 116 deletions.
10 changes: 8 additions & 2 deletions _success-stories/1-zero-trust-data-security-guide.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,9 +6,15 @@ author: CDO Council
permalink: /success-stories/zero-trust-data-security-guide/
description: |
In October 2024, the CDO Council and the CISO Council released the <a href="https://www.cdo.gov/federal-zero-trust-data-security-guide/ "> Federal Zero Trust (ZT) Data Security Guide</a>, a first-of-its-kind document and key deliverable of OMB M-22-09, Moving the U.S. Government Towards Zero Trust Cybersecurity Principles.
tag: ZeroTrust
tags:
- Zero Trust
- CISO
- Data Security
# required, this is what becomes the filter
category: zero-trust
categories:
- zero-trust
- ciso
- data-security
redirect_to: https://www.cdo.gov/federal-zero-trust-data-security-guide/
---

10 changes: 8 additions & 2 deletions _success-stories/2-data-science-hiring-toolkit.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,14 @@ author: CDO Council
permalink: /success-stories/Data-Science-Hiring-Toolkit/
description: |
The Federal CDO Council's Data Culture of the Workforce Working Group, in line with Executive Order 14110, introduced the <a href="https://resources.data.gov/assets/documents/CDO_Hiring_A_Data_Scientist_508.pdf"> Data Science Hiring Toolkit</a> to support federal agencies in recruiting top data science talent.
tag: Data Culture
tags:
- Data Culture
- Data Sharing
- CDO Council
# required, this is what becomes the filter
category: data-culture
categories:
- data-culture
- data-skills
- cdo-council
redirect_to: https://www.cdo.gov/data-science-hiring-toolkit/
---
8 changes: 6 additions & 2 deletions _success-stories/3-government-data-project.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,12 @@ author: CDO Council
permalink: /success-stories/FAIRness-government-data-project/
description: |
The Federal Chief Data Officers Council and the Federal Committee on Statistical Methodology completed the <a href="https://www.cdo.gov/fairness-project/"> Building Trust and FAIRness Into The Process for Finding and Using Government Data Project</a> (FAIRness Project). The primary objective of the FAIRness Project is to make federal data more discoverable and useful by modernizing the Federal Government’s data cataloging system.
tag: CDO Council
tags:
- CDO Council
- Data Inventory
# required, this is what becomes the filter
category: cdo-council
categories:
- cdo-council
- data-inventory
redirect_to: https://www.cdo.gov/fairness-project/
---
8 changes: 6 additions & 2 deletions _success-stories/4-cdo-council-goals.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,12 @@ author: CDO Council
permalink: /success-stories/cdo-council-goals/
description: |
The CDO Council shall meet regularly to establish governmentwide best practices for the management, use, protection, dissemination, and generation of data; promote and encourage data sharing agreements between agencies; identify ways in which agencies can improve upon the production of evidence for use in policymaking; consult with the public and engage with private users of government data and other stakeholders on how to improve access to data assets of the Federal Government; and identify and evaluate new technology solutions for improving the collection and use of data.
tag: CDO Council
tags:
- CDO Council
- Operations
# required, this is what becomes the filter
category: cdo-council
categories:
- cdo-council
- operations
redirect_to: https://www.cdo.gov/about-us/
---
10 changes: 8 additions & 2 deletions _success-stories/5-agency-data-strategy-repository.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,14 @@ layout: success-stories-post
author: CDO Council
description: |
In accordance with Action 2 of the Federal Data Strategy 2020 Action Plan, Federal Agencies are encouraged to develop and codify policies in support of data management. Agencies have accomplished this task through various approaches ranging from stand-alone published data strategies to integrated objectives within agency strategic plans. (*This resource is accessible to federal employees only).
tag: CDO Council
tags:
- CDO Council
- Data Culture
- Data Skills
# required, this is what becomes the filter
category: cdo-council
categories:
- cdo-council
- data-culture
- data-skills
redirect_to:
---
10 changes: 8 additions & 2 deletions _success-stories/6-federal-enterprise-analytics.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,14 @@ author: CDO Council
permalink: /success-stories/federal-enterprise-analytics/
description: |
In an era dominated by data, the role of the Federal Chief Data Officer (CDO) has emerged as pivotal and transformational, especially in the strategic management and utilization of data. This report examines success factors in implementing enterprise analytics across CFO Act agencies.
tag: Operations
tags:
- Operations
- CDO Council
- Business Of Data
# required, this is what becomes the filter
category: operations
categories:
- operations
- cdo-council
- business-of-data
redirect_to: https://www.cdo.gov/power-of-enterprise-analytics/
---
10 changes: 8 additions & 2 deletions _success-stories/7-measuring-value-and-impact.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,14 @@ author: CDO Council
permalink: /success-stories/measuring-value-and-impact/
description: |
In the rapidly evolving landscape of government, Federal Chief Data Officers (CDOs) have emerged as crucial leaders tasked with harnessing the power of data to drive organizational success. However, the relative newness of this role brings forth unique challenges, particularly in the realm of measuring and communicating the value of their efforts. Drawing inspiration from diverse domains, this paper explores considerations for establishing Federal CDO performance metrics.
tag: CDO Council
tags:
- CDO Council
- Operations
- Business Of Data
# required, this is what becomes the filter
category: cdo-council
categories:
- cdo-council
- operations
- business-of-data
redirect_to: https://www.cdo.gov/navigating-the-metrics-maze/
---
7 changes: 7 additions & 0 deletions assets/css/index.scss
Original file line number Diff line number Diff line change
Expand Up @@ -481,6 +481,10 @@ ul.filter-list {
}
}

span[class*="tag"], .tag {
white-space: nowrap;
}

.card-tag {
font-size: .9rem;
margin-top: .2em;
Expand Down Expand Up @@ -874,3 +878,6 @@ ul.filter-list {
background-size: 1rem;
width: 3rem;
}



145 changes: 75 additions & 70 deletions assets/js/isotope.settings.js
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
// Filter based on two factors + alphabetical sort
// Uses URI hash as trigger allowing direct links etc
// Losely based on: http://isotope.metafizzy.co/filtering.html#url-hash
// Loosely based on: http://isotope.metafizzy.co/filtering.html#url-hash

jQuery(document).ready(function ($) {

Expand All @@ -15,33 +15,35 @@ jQuery(document).ready(function ($) {
}
});

var iso = $container.data('isotope');
var $filterCount = $('.filter-count');
function updateFilterCount() {
var $item_length = iso.filteredItems.length;
if (iso != null ){
if ($item_length === 1) {
$filterCount.text($item_length + ' item');
} else if ($item_length > 1) {
$filterCount.text($item_length + ' items');
} else {
$filterCount.text("No items found.");
var iso = $container.data('isotope');
var $filterCount = $('.filter-count');
var filters = {}; // Store filters for each group

function updateFilterCount() {
var $item_length = iso.filteredItems.length;
if (iso != null) {
if ($item_length === 1) {
$filterCount.text($item_length + ' item');
} else if ($item_length > 1) {
$filterCount.text($item_length + ' items');
} else {
$filterCount.text("No items found.");
}
}
}
}

// Alphabetical sort
// Sort items alphabetically based on course title
var sortValue = false;
$(".sort").on("click", function(){
$(".sort").on("click", function () {
// Get current URI hash
var currentHash = location.hash;
// If button is currently unchecked:
if ( $(this).hasClass("checked") ) {
if ($(this).hasClass("checked")) {
// Set sort to false
sortValue = false;
// Remove sort attribute in hash
location.hash = currentHash.replace( /&sort=([^&]+)/i, "");
location.hash = currentHash.replace(/&sort=([^&]+)/i, "");
} else {
// Set sortValue to current sort value
sortValue = $(this).attr("data-sort-value");
Expand All @@ -50,95 +52,98 @@ function updateFilterCount() {
}
});

// Set up filters array with default values
var filters = {};
// When a button is pressed, run filterSelect
$( ".filter-list a" ).on( "click", filterSelect );
// Set the URI hash to the current selected filters
function filterSelect() {
// Current hash value
var hashFilter = getHashFilter();
// Set filters to current values (important for first run)
filters["subject"] = hashFilter["subject"];
filters["role"] = hashFilter["role"];
// data-filter attribute of clicked button
var currentFilter = $(this).attr("data-filter");
// Navigation group (subject or role) as object
var $navGroup = $(this).parents(".filter-list");
// data-filter-group key for the current nav group
var filterGroup = $navGroup.attr("data-filter-group");
// If the current data-filter attribute matches the current filter,
if ( currentFilter == hashFilter["subject"] || currentFilter == hashFilter["role"] ) {
// Reset group filter as the user has unselected the button
filters[ filterGroup ] = "*";
} else {
// Set data-filter of current button as value with filterGroup as key
filters[ filterGroup ] = $(this).attr("data-filter");
$(".filter-list a").on("click", function (e) {
e.preventDefault();
var $this = $(this);
var filterGroup = $this.parents(".filter-list").attr("data-filter-group");
var filterValue = $this.attr("data-filter");

// Toggle active class
$this.toggleClass("checked");

// Initialize the group if not already
if (!filters[filterGroup]) {
filters[filterGroup] = [];
}
// Create new hash
// var newHash = "subject=" + encodeURIComponent( filters["subject"] ) + "&role=" + encodeURIComponent( filters["role"] ) + "&status=" + encodeURIComponent( filters["status"] );
var newHash = "subject=" + filters["subject"] + "&role=" + filters["role"];
// If sort value exists, add it to hash
if ( sortValue ) {
newHash = newHash + "&sort=" + encodeURIComponent( sortValue );

// Add or remove filter from the group
if ($this.hasClass("checked")) {
filters[filterGroup].push(filterValue);
} else {
filters[filterGroup] = filters[filterGroup].filter(function (value) {
return value !== filterValue;
});
}
// Apply the new hash to the URI, triggering onHahschange()
location.hash = newHash;
} // filterSelect

function onHashChange() {
// Combine all filters using ',' for OR logic
var filterQuery = Object.values(filters).map(function (group) {
return group.join(','); // Use ',' to combine filters for OR condition
}).join(',');

// Apply filters
$container.isotope({ filter: filterQuery });
updateFilterCount();
});

// Reset filters
$(".btn-primary").on("click", function (e) {
e.preventDefault(); // Prevent default behavior (e.g., scrolling to the top)
$(".filter-list a").removeClass("checked");
filters = {};
$container.isotope({ filter: '*' });
updateFilterCount();
});

// When the hash changes, run onHashChange
window.onhashchange = function () {
// Current hash value
var hashFilter = getHashFilter();
// Concatenate subject and role for Isotope filtering
var theFilter = hashFilter["subject"] + hashFilter["role"];

if ( hashFilter ) {
if (hashFilter) {
// Repaint Isotope container with current filters and sorts
$container.isotope( {
filter: decodeURIComponent( theFilter ),
$container.isotope({
filter: decodeURIComponent(theFilter),
sortBy: hashFilter["sorts"]
} );
});

updateFilterCount();
// Toggle checked status of sort button
if ( hashFilter["sorts"] ) {
if (hashFilter["sorts"]) {
$(".sort").addClass("checked");
} else {
$(".sort").removeClass("checked");
}
// Toggle checked status of filter buttons
$( ".filter-list" ).find(".checked").removeClass("checked").attr("aria-checked","false");
$(".filter-list").find(".checked").removeClass("checked").attr("aria-checked", "false");
var subjectFilters = hashFilter["subject"].split(",");
var roleFilters = hashFilter["role"].split(",");
var allFilters = subjectFilters.concat(roleFilters);
allFilters = allFilters.concat(subjectFilters);
for (filter in allFilters){
$( ".filter-list" ).find("[data-filter='" + allFilters[filter] + "']").addClass("checked").attr("aria-checked","true");
for (filter in allFilters) {
$(".filter-list").find("[data-filter='" + allFilters[filter] + "']").addClass("checked").attr("aria-checked", "true");
}
// $( ".filter-list" ).find("[data-filter='" + hashFilter["subject"] + "'],[data-filter='" + hashFilter["role"] + "'] ,[data-filter='" + hashFilter["status"] + "']").addClass("checked").attr("aria-checked","true");
}
} // onHahschange
};

function getHashFilter() {
// Get filters (matches) and sort order (sorts)
var subject = location.hash.match( /subject=([^&]+)/i );
var role = location.hash.match( /role=([^&]+)/i );
var sorts = location.hash.match( /sort=([^&]+)/i );
var subject = location.hash.match(/subject=([^&]+)/i);
var role = location.hash.match(/role=([^&]+)/i);
var sorts = location.hash.match(/sort=([^&]+)/i);

// Set up a hashFilter array
var hashFilter = {};
// Populate array with matches and sorts using ternary logic
hashFilter["subject"] = subject ? subject[1] : "*";
hashFilter["role"] = role ? role[1] : "*";
hashFilter["sorts"] = sorts ? sorts[1]: "";
hashFilter["sorts"] = sorts ? sorts[1] : "";

return hashFilter;
} // getHashFilter

// When the hash changes, run onHashchange
window.onhashchange = onHashChange;
}

// When the page loads for the first time, run onHashChange
onHashChange();

});
window.onhashchange();
});
Loading

0 comments on commit a405455

Please sign in to comment.