Spaces:
Sleeping
Sleeping
import streamlit as st | |
from datasets import load_dataset | |
import pandas as pd | |
import math | |
# Fungsi untuk membaca data dari Hugging Face dataset | |
def load_data(): | |
dataset = load_dataset("damand2061/id_cs_journal_articles", token=True) | |
data = pd.DataFrame(dataset['train']) | |
return data | |
# Fungsi untuk menampilkan card | |
def display_card(article_name, journal_name, article_url): | |
return f""" | |
<div style="border:1px solid #ccc; padding: 20px; margin: 15px 0; border-radius: 5px; width: 100%; box-shadow: 2px 2px 10px rgba(0, 0, 0, 0.1); text-align: justify;"> | |
<h5 style="margin: 0; font-size: 1.2em;">{article_name}</h5> | |
<p style="margin: 5px 0; text-align: justify;">{journal_name}</p> | |
<a href="{article_url}" target="_blank"> | |
<button style="background-color: #4CAF50; color: white; border: none; padding: 5px 9px; margin-top: 5px; border-radius: 5px; font-size: 0.9em;"> | |
Kunjungi Artikel | |
</button> | |
</a> | |
</div> | |
""" | |
# Fungsi untuk menampilkan data secara row-wise | |
def display_data(data, start_index, end_index): | |
# Buat 3 kolom | |
for i in range(start_index, end_index, 3): | |
cols = st.columns(3) # Selalu buat 3 kolom | |
for j in range(3): | |
if i + j < end_index: | |
article_name = data.iloc[i + j]['article_name'] | |
journal_name = data.iloc[i + j]['journal_name'] | |
article_url = data.iloc[i + j]['article_url'] | |
# Menampilkan setiap data di kolom yang sesuai | |
cols[j].markdown(display_card(article_name, journal_name, article_url), unsafe_allow_html=True) | |
# Fungsi untuk menambah data yang ditampilkan | |
def show_more(): | |
st.session_state.num_displayed += 18 | |
# Main app | |
def main(): | |
st.set_page_config(page_title="ID CS Journal Aggregator", layout="wide") # Set layout lebar | |
# Judul terpusat | |
st.markdown("<h1 style='text-align: center;'>Indonesian Computer Science<br>Journal Aggregator</h1>", unsafe_allow_html=True) | |
# Load data dari Hugging Face dataset | |
data = load_data() | |
# Inisialisasi jumlah data yang ditampilkan | |
if 'num_displayed' not in st.session_state: | |
st.session_state.num_displayed = 18 # Jumlah card yang ditampilkan awalnya | |
# Tampilkan data | |
end_index = min(st.session_state.num_displayed, len(data)) | |
display_data(data, 0, end_index) | |
# Tombol "Show More" | |
if st.session_state.num_displayed < len(data): | |
col1, col2, col3 = st.columns([1, 2, 1]) | |
with col2: | |
st.button("Show More", on_click=show_more, key="show_more", use_container_width=True) | |
if __name__ == "__main__": | |
main() | |