bluenevus commited on
Commit
08843b5
·
1 Parent(s): 24f0478

Update app.py via AI Editor

Browse files
Files changed (1) hide show
  1. app.py +70 -9
app.py CHANGED
@@ -401,6 +401,7 @@ def get_proposals_list(proposaldict):
401
  return dbc.ListGroup(doc_list, flush=True)
402
 
403
  app.layout = dbc.Container([
 
404
  dbc.Row([
405
  dbc.Col([
406
  dbc.Card([
@@ -486,7 +487,10 @@ app.layout = dbc.Container([
486
  dcc.Loading(
487
  id="loading",
488
  type="default",
489
- children=html.Div(id="output-data-upload"),
 
 
 
490
  style={"textAlign": "center"}
491
  )
492
  ])
@@ -495,6 +499,48 @@ app.layout = dbc.Container([
495
  ], style={'marginTop':'20px'})
496
  ], fluid=True)
497
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
498
  @app.callback(
499
  Output('output-data-upload', 'children'),
500
  Output('documents-list', 'children'),
@@ -503,6 +549,7 @@ app.layout = dbc.Container([
503
  Output('proposals-list', 'children'),
504
  Output('select-proposal-dropdown', 'options'),
505
  Output('select-proposal-dropdown', 'value'),
 
506
  [
507
  Input('shred-action-btn', 'n_clicks'),
508
  Input('proposal-action-btn', 'n_clicks'),
@@ -518,7 +565,8 @@ app.layout = dbc.Container([
518
  Input({'type': 'delete-proposal-btn', 'index': ALL, 'group': 'proposal'}, 'n_clicks'),
519
  State('select-proposal-dropdown', 'value'),
520
  State('chat-input', 'value'),
521
- Input('cancel-action-btn', 'n_clicks')
 
522
  ],
523
  prevent_initial_call=True
524
  )
@@ -526,7 +574,7 @@ def master_callback(
526
  shred_clicks, proposal_clicks, compliance_clicks, recover_clicks, board_clicks,
527
  rfp_content, rfp_filename, doc_delete_clicks, selected_doc,
528
  proposal_content, proposal_filename, proposal_delete_clicks, selected_proposal,
529
- chat_input, cancel_clicks
530
  ):
531
  ctx = callback_context
532
  triggered_id = ctx.triggered[0]['prop_id'].split('.')[0] if ctx.triggered else None
@@ -543,6 +591,13 @@ def master_callback(
543
 
544
  global gemini_lock, uploaded_documents_bytes
545
 
 
 
 
 
 
 
 
546
  if triggered_id == 'cancel-action-btn':
547
  output_data_upload = html.Div("[Cancelled by user]\n", style={"wordWrap": "break-word"})
548
  doc_options = [{'label': fn, 'value': fn} for fn in uploaded_documents.keys()]
@@ -554,7 +609,8 @@ def master_callback(
554
  return (
555
  output_data_upload,
556
  documents_list, doc_options, doc_value,
557
- proposals_list, proposal_options, proposal_value
 
558
  )
559
 
560
  if triggered_id == 'upload-document' and rfp_content is not None and rfp_filename:
@@ -646,7 +702,8 @@ def master_callback(
646
  return (
647
  output_data_upload,
648
  documents_list, doc_options, doc_value,
649
- proposals_list, proposal_options, proposal_value
 
650
  )
651
  try:
652
  if triggered_id == "shred-action-btn":
@@ -676,7 +733,8 @@ def master_callback(
676
  return (
677
  output_data_upload,
678
  documents_list, doc_options, doc_value,
679
- proposals_list, proposal_options, proposal_value
 
680
  )
681
 
682
  if triggered_id in ['proposal-action-btn', 'recover-action-btn', 'loe-action-btn']:
@@ -686,7 +744,8 @@ def master_callback(
686
  return (
687
  output_data_upload,
688
  documents_list, doc_options, doc_value,
689
- proposals_list, proposal_options, proposal_value
 
690
  )
691
  try:
692
  if triggered_id == "proposal-action-btn":
@@ -720,7 +779,8 @@ def master_callback(
720
  return (
721
  output_data_upload,
722
  documents_list, doc_options, doc_value,
723
- proposals_list, proposal_options, proposal_value
 
724
  )
725
 
726
  doc_value = doc_value if doc_value in uploaded_documents else (next(iter(uploaded_documents), None) if uploaded_documents else None)
@@ -728,7 +788,8 @@ def master_callback(
728
  return (
729
  output_data_upload,
730
  documents_list, doc_options, doc_value,
731
- proposals_list, proposal_options, proposal_value
 
732
  )
733
 
734
  if __name__ == '__main__':
 
401
  return dbc.ListGroup(doc_list, flush=True)
402
 
403
  app.layout = dbc.Container([
404
+ dcc.Store(id='preview-window-state', data='expanded'),
405
  dbc.Row([
406
  dbc.Col([
407
  dbc.Card([
 
487
  dcc.Loading(
488
  id="loading",
489
  type="default",
490
+ children=html.Div(
491
+ id="output-preview-container",
492
+ children=html.Div(id="output-data-upload"),
493
+ ),
494
  style={"textAlign": "center"}
495
  )
496
  ])
 
499
  ], style={'marginTop':'20px'})
500
  ], fluid=True)
501
 
502
+ @app.callback(
503
+ Output('preview-window-state', 'data'),
504
+ [
505
+ Input('shred-action-btn', 'n_clicks'),
506
+ Input('proposal-action-btn', 'n_clicks'),
507
+ Input('compliance-action-btn', 'n_clicks'),
508
+ Input('recover-action-btn', 'n_clicks'),
509
+ Input('board-action-btn', 'n_clicks'),
510
+ Input('loe-action-btn', 'n_clicks')
511
+ ],
512
+ prevent_initial_call=True
513
+ )
514
+ def shrink_preview_window_on_action(
515
+ shred_clicks, proposal_clicks, compliance_clicks, recover_clicks, board_clicks, loe_clicks
516
+ ):
517
+ ctx = callback_context
518
+ if ctx.triggered:
519
+ return "shrunk"
520
+ return dash.no_update
521
+
522
+ @app.callback(
523
+ Output('output-preview-container', 'style'),
524
+ [Input('preview-window-state', 'data')]
525
+ )
526
+ def update_preview_window_style(state):
527
+ if state == "shrunk":
528
+ return {
529
+ "maxHeight": "8em",
530
+ "overflow": "hidden",
531
+ "transition": "max-height 0.4s",
532
+ "border": "1px solid #ddd",
533
+ "borderRadius": "4px"
534
+ }
535
+ else:
536
+ return {
537
+ "maxHeight": "none",
538
+ "overflow": "visible",
539
+ "transition": "max-height 0.4s",
540
+ "border": "1px solid #ddd",
541
+ "borderRadius": "4px"
542
+ }
543
+
544
  @app.callback(
545
  Output('output-data-upload', 'children'),
546
  Output('documents-list', 'children'),
 
549
  Output('proposals-list', 'children'),
550
  Output('select-proposal-dropdown', 'options'),
551
  Output('select-proposal-dropdown', 'value'),
552
+ Output('preview-window-state', 'data'),
553
  [
554
  Input('shred-action-btn', 'n_clicks'),
555
  Input('proposal-action-btn', 'n_clicks'),
 
565
  Input({'type': 'delete-proposal-btn', 'index': ALL, 'group': 'proposal'}, 'n_clicks'),
566
  State('select-proposal-dropdown', 'value'),
567
  State('chat-input', 'value'),
568
+ Input('cancel-action-btn', 'n_clicks'),
569
+ State('preview-window-state', 'data')
570
  ],
571
  prevent_initial_call=True
572
  )
 
574
  shred_clicks, proposal_clicks, compliance_clicks, recover_clicks, board_clicks,
575
  rfp_content, rfp_filename, doc_delete_clicks, selected_doc,
576
  proposal_content, proposal_filename, proposal_delete_clicks, selected_proposal,
577
+ chat_input, cancel_clicks, preview_window_state
578
  ):
579
  ctx = callback_context
580
  triggered_id = ctx.triggered[0]['prop_id'].split('.')[0] if ctx.triggered else None
 
591
 
592
  global gemini_lock, uploaded_documents_bytes
593
 
594
+ # If an action button is clicked, immediately shrink window, do nothing else (let other callback run)
595
+ if triggered_id in [
596
+ 'shred-action-btn', 'proposal-action-btn', 'compliance-action-btn',
597
+ 'recover-action-btn', 'board-action-btn', 'loe-action-btn'
598
+ ] and preview_window_state != "shrunk":
599
+ return dash.no_update, dash.no_update, dash.no_update, dash.no_update, dash.no_update, dash.no_update, dash.no_update, "shrunk"
600
+
601
  if triggered_id == 'cancel-action-btn':
602
  output_data_upload = html.Div("[Cancelled by user]\n", style={"wordWrap": "break-word"})
603
  doc_options = [{'label': fn, 'value': fn} for fn in uploaded_documents.keys()]
 
609
  return (
610
  output_data_upload,
611
  documents_list, doc_options, doc_value,
612
+ proposals_list, proposal_options, proposal_value,
613
+ "expanded"
614
  )
615
 
616
  if triggered_id == 'upload-document' and rfp_content is not None and rfp_filename:
 
702
  return (
703
  output_data_upload,
704
  documents_list, doc_options, doc_value,
705
+ proposals_list, proposal_options, proposal_value,
706
+ "expanded"
707
  )
708
  try:
709
  if triggered_id == "shred-action-btn":
 
733
  return (
734
  output_data_upload,
735
  documents_list, doc_options, doc_value,
736
+ proposals_list, proposal_options, proposal_value,
737
+ "expanded"
738
  )
739
 
740
  if triggered_id in ['proposal-action-btn', 'recover-action-btn', 'loe-action-btn']:
 
744
  return (
745
  output_data_upload,
746
  documents_list, doc_options, doc_value,
747
+ proposals_list, proposal_options, proposal_value,
748
+ "expanded"
749
  )
750
  try:
751
  if triggered_id == "proposal-action-btn":
 
779
  return (
780
  output_data_upload,
781
  documents_list, doc_options, doc_value,
782
+ proposals_list, proposal_options, proposal_value,
783
+ "expanded"
784
  )
785
 
786
  doc_value = doc_value if doc_value in uploaded_documents else (next(iter(uploaded_documents), None) if uploaded_documents else None)
 
788
  return (
789
  output_data_upload,
790
  documents_list, doc_options, doc_value,
791
+ proposals_list, proposal_options, proposal_value,
792
+ "expanded"
793
  )
794
 
795
  if __name__ == '__main__':