MENU

test

import streamlit as st

import pandas as pd

import plotly.express as px

from datetime import datetime, timedelta

# データの初期化

if ‘equipment_data’ not in st.session_state:

    st.session_state[‘equipment_data’] = pd.DataFrame(columns=[‘ID’, ‘入庫日’, ‘出庫予定日’])

# 入庫データの追加

st.title(“機器管理システム”)

st.sidebar.header(“機器の入庫”)

equipment_id = st.sidebar.text_input(“機器IDを入力してください”)

入庫日 = st.sidebar.date_input(“入庫日”, datetime.now())

出庫予定日 = st.sidebar.date_input(“出庫予定日”, 入庫日 + timedelta(days=7))

if st.sidebar.button(“機器を入庫”):

    if equipment_id:

        new_data = pd.DataFrame({‘ID’: [equipment_id], ‘入庫日’: [入庫日], ‘出庫予定日’: [出庫予定日]})

        st.session_state[‘equipment_data’] = pd.concat([st.session_state[‘equipment_data’], new_data], ignore_index=True)

        st.sidebar.success(f”機器 {equipment_id} を入庫しました。”)

    else:

        st.sidebar.error(“機器IDを入力してください。”)

# 機器の返却

st.sidebar.header(“機器の返却”)

return_id = st.sidebar.text_input(“返却する機器IDを入力してください”)

if st.sidebar.button(“機器を返却”):

    if return_id in st.session_state[‘equipment_data’][‘ID’].values:

        st.session_state[‘equipment_data’] = st.session_state[‘equipment_data’][st.session_state[‘equipment_data’][‘ID’] != return_id]

        st.sidebar.success(f”機器 {return_id} を返却しました。”)

    else:

        st.sidebar.error(“指定した機器IDが見つかりません。”)

# 現在の空き状況表示

st.header(“現在の機器の状況”)

現在の機器数 = len(st.session_state[‘equipment_data’])

空きスペース = 25 – 現在の機器数

st.metric(label=”空きスペース”, value=f”{空きスペース} / 25 台”)

# 機器のスケジュール表示

if not st.session_state[‘equipment_data’].empty:

    fig = px.timeline(st.session_state[‘equipment_data’], x_start=’入庫日’, x_end=’出庫予定日’, y=’ID’, title=”機器の入出庫スケジュール”)

    fig.update_yaxes(categoryorder=’total ascending’)

    st.plotly_chart(fig)

else:

    st.info(“現在、保管されている機器はありません。”)

\ 最新情報をチェック /

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

コメント

コメントする

目次