charlesdedampierre's picture
Update index.html
ea42f91 verified
raw
history blame
9.21 kB
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Hugging Face Network by Bunka</title>
<style>
:root {
--primary-color: #4a4a4a;
--secondary-color: #6c757d;
--background-color: #f8f9fa;
--hover-color: #007bff;
}
html, body {
height: 100%;
margin: 0;
padding: 0;
}
body {
font-family: 'Arial', sans-serif;
line-height: 1.6;
color: var(--primary-color);
background-color: var(--background-color);
display: flex;
flex-direction: column;
}
header {
background-color: white;
box-shadow: 0 2px 4px rgba(0,0,0,0.1);
padding: 15px 0;
text-align: center;
display: flex;
justify-content: space-between;
align-items: center;
}
.logo-container {
padding-left: 20px;
}
.logo {
max-width: 100px;
height: auto;
}
.title-container {
flex-grow: 1;
text-align: center;
}
h1 {
color: var(--primary-color);
margin: 0 0 10px 0;
font-size: 1.8em;
}
.subtitle-container {
display: flex;
justify-content: center;
align-items: center;
}
.subtitle {
font-size: 1em;
color: var(--secondary-color);
margin: 0;
}
.help-icon {
margin-left: 10px;
cursor: help;
position: relative;
}
.help-icon:hover::after {
content: attr(data-tooltip);
position: absolute;
top: 100%;
left: 50%;
transform: translateX(-50%);
background-color: #333;
color: white;
padding: 10px;
border-radius: 5px;
width: 300px;
z-index: 1;
font-size: 0.9em;
line-height: 1.4;
text-align: left;
}
.graph-container {
flex-grow: 1;
width: 100%;
display: flex;
}
iframe {
flex-grow: 1;
border: none;
}
footer {
background-color: var(--secondary-color);
color: white;
text-align: center;
padding: 10px 0;
}
.social-links {
display: inline-block;
vertical-align: middle;
}
.social-links a {
opacity: 0.7;
transition: opacity 0.3s ease;
margin: 0 5px;
}
.social-links a:hover {
opacity: 1;
}
.social-links img {
width: 20px;
height: 20px;
}
.pagination {
display: flex;
justify-content: center;
align-items: center;
padding: 15px 0;
background-color: white;
box-shadow: 0 -2px 4px rgba(0,0,0,0.1);
}
.pagination button {
background-color: transparent;
border: none;
color: var(--secondary-color);
font-size: 16px;
padding: 5px 10px;
margin: 0 5px;
cursor: pointer;
transition: color 0.3s ease;
}
.pagination button:hover {
color: var(--hover-color);
}
.pagination button.active {
color: var(--primary-color);
font-weight: bold;
}
.pagination .page-numbers {
display: flex;
align-items: center;
}
.pagination .divider {
width: 1px;
height: 20px;
background-color: var(--secondary-color);
margin: 0 10px;
}
</style>
</head>
<body>
<header>
<div class="logo-container">
<img src="https://huggingface.co/spaces/bunkalab/README/raw/main/bunka_logo.png" alt="Bunka Logo" class="logo">
</div>
<div class="title-container">
<h1 id="main-title">Open Source AI Network - Mapping the top 500 HF users</h1>
<div class="subtitle-container">
<p id="subtitle" class="subtitle">Two users are closer if they are followed by the same people.</p>
<span class="help-icon" data-tooltip="• We collected and analyzed data about 895,007 models and 204,371 datasets
• We filtered those into 14,620 content providers
• 2,615 organizations (not users) were filtered, associated with 15,611 most relevant users
• We then used the Force Atlas and Leiden algorithm to create this network.
Package by github.com/medialab/ipysigma"></span>
</div>
</div>
</header>
<div class="graph-container">
<iframe id="graph-frame" src="co_user.html" width="100%" height="100%" frameborder="0"></iframe>
</div>
<div class="pagination">
<button id="prev">&lt;</button>
<div class="page-numbers">
<button id="page1" class="active">1</button>
<div class="divider"></div>
<button id="page2">2</button>
</div>
<button id="next">&gt;</button>
</div>
<footer>
<div class="social-links">
<a href="https://github.com/charlesdedampierre/BunkaTopics" target="_blank"><img src="https://qtyhiurxoicqmxzpktkd.supabase.co/storage/v1/object/sign/email-content/github-logo.png?token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1cmwiOiJlbWFpbC1jb250ZW50L2dpdGh1Yi1sb2dvLnBuZyIsImlhdCI6MTcyNDgzOTk3NywiZXhwIjoxNzg3OTExOTc3fQ.qPEnoJOVqTkWdquVPkMWZFYHv29q8pb5mbcVBGFZWTU&t=2024-08-28T10%3A12%3A58.108Z" alt="GitHub"></a>
<a href="https://huggingface.co/bunkalab" target="_blank"><img src="https://qtyhiurxoicqmxzpktkd.supabase.co/storage/v1/object/sign/email-content/hugging%20face.png?token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1cmwiOiJlbWFpbC1jb250ZW50L2h1Z2dpbmcgZmFjZS5wbmciLCJpYXQiOjE3MjQ4Mzk4NDAsImV4cCI6MTc4NzkxMTg0MH0.6gOtEK2BXc3kSL3PIswY0LJyvp790580Jm6vxztiFhw&t=2024-08-28T10%3A10%3A40.145Z" alt="Hugging Face"></a>
<a href="https://www.linkedin.com/company/85881815" target="_blank"><img src="https://qtyhiurxoicqmxzpktkd.supabase.co/storage/v1/object/sign/email-content/LinkedIn_logo_initials.png?token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1cmwiOiJlbWFpbC1jb250ZW50L0xpbmtlZEluX2xvZ29faW5pdGlhbHMucG5nIiwiaWF0IjoxNzI0ODQwMDQ1LCJleHAiOjE3ODc5MTIwNDV9.9d6MAK3x9LOmsYyB8KyGk5PPFGkPNoGjsW7wdxiZt3M&t=2024-08-28T10%3A14%3A05.996Z" alt="LinkedIn"></a>
<a href="https://discord.gg/3YRPVqXabQ" target="_blank"><img src="https://qtyhiurxoicqmxzpktkd.supabase.co/storage/v1/object/sign/email-content/discord.png?token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1cmwiOiJlbWFpbC1jb250ZW50L2Rpc2NvcmQucG5nIiwiaWF0IjoxNzI0ODM5ODc4LCJleHAiOjE3ODc5MTE4Nzh9.w1Ggb_Nh1UnjKeVujp_7ljAW0ZSP3ETNkYJLKuBZ_Zo&t=2024-08-28T10%3A11%3A18.993Z" alt="Discord"></a>
</div>
</footer>
<script>
const graphFrame = document.getElementById('graph-frame');
const prev = document.getElementById('prev');
const next = document.getElementById('next');
const page1 = document.getElementById('page1');
const page2 = document.getElementById('page2');
const mainTitle = document.getElementById('main-title');
const subtitle = document.getElementById('subtitle');
let currentPage = 1;
function updateGraph() {
if (currentPage === 1) {
graphFrame.src = 'co_user.html';
page1.classList.add('active');
page2.classList.remove('active');
mainTitle.textContent = 'Open Source AI Network - Mapping the top 500 HF users';
subtitle.textContent = 'Two users are closer if they are followed by the same people.';
} else {
graphFrame.src = 'co_organization.html';
page2.classList.add('active');
page1.classList.remove('active');
mainTitle.textContent = 'Open Source AI Network - Mapping dataset/model producing organizations';
subtitle.textContent = 'Two organizations are closer if their members have common followers.';
}
}
prev.addEventListener('click', () => {
if (currentPage > 1) {
currentPage--;
updateGraph();
}
});
next.addEventListener('click', () => {
if (currentPage < 2) {
currentPage++;
updateGraph();
}
});
page1.addEventListener('click', () => {
currentPage = 1;
updateGraph();
});
page2.addEventListener('click', () => {
currentPage = 2;
updateGraph();
});
</script>
</body>
</html>