albhu commited on
Commit
3c5f61b
·
verified ·
1 Parent(s): dac9b1f

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +44 -17
app.py CHANGED
@@ -19,11 +19,24 @@ generator = load_model()
19
  # Függvény a dátumok felismerésére és konverziójára
20
  def parse_date(value):
21
  try:
 
 
 
 
22
  parsed_date = datetime.strptime(value, "%d %B")
23
  return parsed_date.replace(year=2025)
24
  except ValueError:
25
  return None
26
 
 
 
 
 
 
 
 
 
 
27
  # Fájl feltöltése
28
  uploaded_file = st.file_uploader("Tölts fel egy Excel fájlt", type=["xlsx"])
29
 
@@ -48,7 +61,12 @@ if uploaded_file:
48
  st.write(f"Releváns adat található a '{sheet}' munkalapon.")
49
  relevant_data.append(df)
50
  else:
51
- st.write(f"A '{sheet}' munkalap nem tartalmaz releváns adatokat.")
 
 
 
 
 
52
 
53
  # Összesített adatok
54
  if relevant_data:
@@ -58,12 +76,13 @@ if uploaded_file:
58
 
59
  # Dátumok feldolgozása az elérhetőség oszlopban
60
  combined_data["Elérhető napok"] = combined_data["Elérhetőség"].apply(
61
- lambda x: [parse_date(day.strip()) for day in str(x).split(",") if isinstance(x, str)] if pd.notna(x) else []
62
  )
63
  combined_data["Korlátozások"] = combined_data["Korlátozások"].apply(
64
  lambda x: x.split(",") if isinstance(x, str) else []
65
  )
66
 
 
67
  available_days = st.multiselect(
68
  "Add meg az elérhetőségi dátumokat:",
69
  options=[day.strftime("%Y-%m-%d") for day in combined_data["Elérhető napok"] if day is not None]
@@ -91,27 +110,35 @@ if uploaded_file:
91
  })
92
  break
93
 
 
94
  beosztas_df = pd.DataFrame(beosztas)
95
  st.write("Generált Ügyeleti Beosztás:")
96
  st.dataframe(beosztas_df)
97
 
98
- @st.cache_data
99
- def convert_to_excel(data):
100
- import io
101
- output = io.BytesIO()
102
- with pd.ExcelWriter(output, engine="openpyxl") as writer:
103
- data.to_excel(writer, index=False)
104
- return output.getvalue()
105
-
106
- excel_data = convert_to_excel(beosztas_df)
107
- st.download_button(
108
- label="Beosztás letöltése Excelben",
109
- data=excel_data,
110
- file_name="ugyeleti_beosztas.xlsx",
111
- mime="application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"
112
  )
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
113
  else:
114
- st.warning("Kérlek, válaszd ki az elérhetőségi napokat.")
115
  else:
116
  st.warning("Nem található releváns adat a munkalapokon.")
117
 
 
19
  # Függvény a dátumok felismerésére és konverziójára
20
  def parse_date(value):
21
  try:
22
+ # Ha az érték tartalmaz évet
23
+ if any(char.isdigit() for char in value):
24
+ return datetime.strptime(value, "%d %B %Y")
25
+ # Ha nincs év megadva, alapértelmezett 2025
26
  parsed_date = datetime.strptime(value, "%d %B")
27
  return parsed_date.replace(year=2025)
28
  except ValueError:
29
  return None
30
 
31
+ # Adatok Excel exportálása
32
+ @st.cache_data
33
+ def convert_to_excel(data):
34
+ import io
35
+ output = io.BytesIO()
36
+ with pd.ExcelWriter(output, engine="openpyxl") as writer:
37
+ data.to_excel(writer, index=False)
38
+ return output.getvalue()
39
+
40
  # Fájl feltöltése
41
  uploaded_file = st.file_uploader("Tölts fel egy Excel fájlt", type=["xlsx"])
42
 
 
61
  st.write(f"Releváns adat található a '{sheet}' munkalapon.")
62
  relevant_data.append(df)
63
  else:
64
+ st.warning(f"A '{sheet}' munkalap nem tartalmaz automatikusan felismerhető adatokat.")
65
+ name_column = st.selectbox(f"Válaszd ki a 'Név' oszlopot a '{sheet}' munkalapon:", df.columns)
66
+ availability_column = st.selectbox(f"Válaszd ki az 'Elérhetőség' oszlopot a '{sheet}' munkalapon:", df.columns)
67
+ restriction_column = st.selectbox(f"Válaszd ki a 'Korlátozások' oszlopot a '{sheet}' munkalapon:", df.columns)
68
+ df.rename(columns={name_column: "Név", availability_column: "Elérhetőség", restriction_column: "Korlátozások"}, inplace=True)
69
+ relevant_data.append(df)
70
 
71
  # Összesített adatok
72
  if relevant_data:
 
76
 
77
  # Dátumok feldolgozása az elérhetőség oszlopban
78
  combined_data["Elérhető napok"] = combined_data["Elérhetőség"].apply(
79
+ lambda x: [parse_date(day.strip()) for day in str(x).split(",")] if pd.notna(x) else []
80
  )
81
  combined_data["Korlátozások"] = combined_data["Korlátozások"].apply(
82
  lambda x: x.split(",") if isinstance(x, str) else []
83
  )
84
 
85
+ # Felhasználói input: dátumok kiválasztása
86
  available_days = st.multiselect(
87
  "Add meg az elérhetőségi dátumokat:",
88
  options=[day.strftime("%Y-%m-%d") for day in combined_data["Elérhető napok"] if day is not None]
 
110
  })
111
  break
112
 
113
+ # Beosztás megjelenítése
114
  beosztas_df = pd.DataFrame(beosztas)
115
  st.write("Generált Ügyeleti Beosztás:")
116
  st.dataframe(beosztas_df)
117
 
118
+ # Szűrési lehetőségek a felhasználónak
119
+ filter_options = st.multiselect(
120
+ "Szűrd a generált ügyeleti beosztást az alábbi oszlopok alapján:",
121
+ options=["Név", "Nap", "Indoklás"]
 
 
 
 
 
 
 
 
 
 
122
  )
123
+
124
+ if filter_options:
125
+ filtered_beosztas_df = beosztas_df[filter_options]
126
+ st.write("Szűrt Ügyeleti Beosztás:")
127
+ st.dataframe(filtered_beosztas_df)
128
+
129
+ # Exportálás
130
+ excel_data = convert_to_excel(filtered_beosztas_df)
131
+ st.download_button(
132
+ label="Szűrt beosztás letöltése Excelben",
133
+ data=excel_data,
134
+ file_name="szurt_ugyeleti_beosztas.xlsx",
135
+ mime="application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"
136
+ )
137
+ else:
138
+ st.warning("Nem választottál ki oszlopokat a szűréshez.")
139
+
140
  else:
141
+ st.warning("Kérlek, válaszd ki az elérhetőségi dátumokat.")
142
  else:
143
  st.warning("Nem található releváns adat a munkalapokon.")
144