Toya0421 commited on
Commit
43ba263
·
verified ·
1 Parent(s): a47ced4

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +73 -9
app.py CHANGED
@@ -216,19 +216,64 @@ def next_page(pages_json, original_json, page_idx, pid, orig_lev):
216
  gr.update(interactive=idx==total-1, visible=idx==total-1)
217
  )
218
 
219
- def prev_page(pages_json, page_idx):
 
 
 
 
 
 
 
 
 
 
 
 
 
220
  pages = json.loads(pages_json)
221
- idx = page_idx - 1
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
222
  return (
223
- pages[idx],
224
- "",
225
- pages_json,
226
- idx,
227
- gr.update(interactive=idx>0, visible=idx>0),
228
- gr.update(interactive=True, visible=True),
229
- gr.update(interactive=False, visible=False)
 
230
  )
231
 
 
232
  # ======================================================
233
  # UI
234
  # ======================================================
@@ -269,4 +314,23 @@ with gr.Blocks() as demo:
269
  prev_btn, next_btn, finish_btn]
270
  )
271
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
272
  demo.launch()
 
216
  gr.update(interactive=idx==total-1, visible=idx==total-1)
217
  )
218
 
219
+ def prev_page(pages_json, original_pages_json, current_page, total_pages, pid, orig_lev, session_state):
220
+ now = (datetime.utcnow() + timedelta(hours=9)).isoformat()
221
+
222
+ entry = {
223
+ "user_id": session_state.get("user_id"),
224
+ "assigned_level": session_state.get("level"),
225
+ "passage_id": pid,
226
+ "original_level": orig_lev,
227
+ "action_time": now,
228
+ "action_type": "prev_pushed",
229
+ "page_text": None
230
+ }
231
+ save_log(entry)
232
+
233
  pages = json.loads(pages_json)
234
+ if not pages:
235
+ return ("", "", json.dumps([]), 0,
236
+ session_state,
237
+ gr.update(interactive=False, visible=False),
238
+ gr.update(interactive=False, visible=False),
239
+ gr.update(interactive=False, visible=False))
240
+
241
+ original_pages = json.loads(original_pages_json)
242
+ new_page = max(current_page - 1, 0)
243
+
244
+ # ★追加:戻る先が未生成なら生成する(nextと同じ)
245
+ if pages[new_page] is None:
246
+ pages[new_page] = rewrite_page_with_context(pid, new_page, original_pages, session_state.get("level"))
247
+
248
+ prev_upd = gr.update(interactive=(new_page > 0), visible=(new_page > 0))
249
+ next_visible = (new_page < total_pages - 1)
250
+ next_upd = gr.update(interactive=next_visible, visible=next_visible)
251
+ finish_upd = gr.update(interactive=(not next_visible), visible=(not next_visible))
252
+
253
+ now2 = (datetime.utcnow() + timedelta(hours=9)).isoformat()
254
+ entry2 = {
255
+ "user_id": session_state.get("user_id"),
256
+ "assigned_level": session_state.get("level"),
257
+ "passage_id": pid,
258
+ "original_level": orig_lev,
259
+ "action_time": now2,
260
+ "action_type": f"page_displayed_{new_page+1}",
261
+ "page_text": pages[new_page]
262
+ }
263
+ save_log(entry2)
264
+
265
  return (
266
+ pages[new_page],
267
+ f"{new_page+1} / {total_pages}",
268
+ json.dumps(pages, ensure_ascii=False),
269
+ new_page,
270
+ session_state,
271
+ prev_upd,
272
+ next_upd,
273
+ finish_upd
274
  )
275
 
276
+
277
  # ======================================================
278
  # UI
279
  # ======================================================
 
314
  prev_btn, next_btn, finish_btn]
315
  )
316
 
317
+ prev_btn.click(
318
+ fn=prev_page,
319
+ inputs=[
320
+ hidden_pages,
321
+ hidden_original_pages, # ★文脈付きrewriteのために必要
322
+ hidden_page_index,
323
+ hidden_total_pages,
324
+ hidden_passage_id,
325
+ hidden_orig_lev,
326
+ session_state
327
+ ],
328
+ outputs=[
329
+ text_display, page_display,
330
+ hidden_pages, hidden_page_index,
331
+ session_state,
332
+ prev_btn, next_btn, finish_btn]
333
+ )
334
+
335
+
336
  demo.launch()