Skip to content

Commit 9416a3b

Browse files
committed
perf:根据权限渲染组件的方式由hidden改为条件渲染
1 parent 7c9ab70 commit 9416a3b

File tree

28 files changed

+1139
-1091
lines changed

28 files changed

+1139
-1091
lines changed

dash-fastapi-frontend/callbacks/monitor_c/job_c/job_c.py

Lines changed: 54 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
import uuid
44
import json
55
from dash import html, dcc
6-
from dash.dependencies import Input, Output, State
6+
from dash.dependencies import Input, Output, State, ALL
77
import feffery_antd_components as fac
88
import feffery_utils_components as fuc
99

@@ -138,19 +138,41 @@ def hidden_job_search_form(hidden_click, hidden_status):
138138

139139

140140
@app.callback(
141-
[Output('job-edit', 'disabled'),
142-
Output('job-delete', 'disabled')],
141+
Output({'type': 'job-operation-button', 'index': 'edit'}, 'disabled'),
143142
Input('job-list-table', 'selectedRowKeys'),
144143
prevent_initial_call=True
145144
)
146-
def change_job_edit_delete_button_status(table_rows_selected):
147-
if table_rows_selected:
148-
if len(table_rows_selected) > 1:
149-
return [True, False]
145+
def change_job_edit_button_status(table_rows_selected):
146+
outputs_list = dash.ctx.outputs_list
147+
if outputs_list:
148+
if table_rows_selected:
149+
if len(table_rows_selected) > 1:
150+
return True
150151

151-
return [False, False]
152+
return False
152153

153-
return [True, True]
154+
return True
155+
156+
return dash.no_update
157+
158+
159+
@app.callback(
160+
Output({'type': 'job-operation-button', 'index': 'delete'}, 'disabled'),
161+
Input('job-list-table', 'selectedRowKeys'),
162+
prevent_initial_call=True
163+
)
164+
def change_job_delete_button_status(table_rows_selected):
165+
outputs_list = dash.ctx.outputs_list
166+
if outputs_list:
167+
if table_rows_selected:
168+
if len(table_rows_selected) > 1:
169+
return False
170+
171+
return False
172+
173+
return True
174+
175+
return dash.no_update
154176

155177

156178
@app.callback(
@@ -166,22 +188,22 @@ def change_job_edit_delete_button_status(table_rows_selected):
166188
Output('job-concurrent', 'value'),
167189
Output('job-status', 'value'),
168190
Output('api-check-token', 'data', allow_duplicate=True),
169-
Output('job-add', 'nClicks'),
170-
Output('job-edit', 'nClicks'),
171191
Output('job-edit-id-store', 'data'),
172192
Output('job-operations-store-bk', 'data')],
173-
[Input('job-add', 'nClicks'),
174-
Input('job-edit', 'nClicks'),
193+
[Input({'type': 'job-operation-button', 'index': ALL}, 'nClicks'),
175194
Input('job-list-table', 'nClicksDropdownItem')],
176195
[State('job-list-table', 'selectedRowKeys'),
177196
State('job-list-table', 'recentlyClickedDropdownItemTitle'),
178197
State('job-list-table', 'recentlyDropdownItemClickedRow')],
179198
prevent_initial_call=True
180199
)
181-
def add_edit_job_modal(add_click, edit_click, dropdown_click, selected_row_keys, recently_clicked_dropdown_item_title,
200+
def add_edit_job_modal(operation_click, dropdown_click, selected_row_keys, recently_clicked_dropdown_item_title,
182201
recently_dropdown_item_clicked_row):
183-
if add_click or edit_click or dropdown_click:
184-
if add_click:
202+
trigger_id = dash.ctx.triggered_id
203+
if trigger_id == {'index': 'add', 'type': 'job-operation-button'} \
204+
or trigger_id == {'index': 'edit', 'type': 'job-operation-button'} \
205+
or (trigger_id == 'job-list-table' and recently_clicked_dropdown_item_title == '修改'):
206+
if trigger_id == {'index': 'add', 'type': 'job-operation-button'}:
185207
return [
186208
True,
187209
'新增任务',
@@ -196,12 +218,10 @@ def add_edit_job_modal(add_click, edit_click, dropdown_click, selected_row_keys,
196218
'0',
197219
dash.no_update,
198220
None,
199-
None,
200-
None,
201221
{'type': 'add'}
202222
]
203-
elif edit_click or (dropdown_click and recently_clicked_dropdown_item_title == '修改'):
204-
if edit_click:
223+
elif trigger_id == {'index': 'edit', 'type': 'job-operation-button'} or (trigger_id == 'job-list-table' and recently_clicked_dropdown_item_title == '修改'):
224+
if trigger_id == {'index': 'edit', 'type': 'job-operation-button'}:
205225
job_id = int(','.join(selected_row_keys))
206226
else:
207227
job_id = int(recently_dropdown_item_clicked_row['key'])
@@ -221,15 +241,13 @@ def add_edit_job_modal(add_click, edit_click, dropdown_click, selected_row_keys,
221241
job_info.get('concurrent'),
222242
job_info.get('status'),
223243
{'timestamp': time.time()},
224-
None,
225-
None,
226244
job_info if job_info else None,
227245
{'type': 'edit'}
228246
]
229247

230-
return [dash.no_update] * 11 + [{'timestamp': time.time()}, None, None, None, None]
248+
return [dash.no_update] * 11 + [{'timestamp': time.time()}, None, None]
231249

232-
return [dash.no_update] * 12 + [None, None, None, None]
250+
return [dash.no_update] * 12 + [None, None]
233251

234252

235253
@app.callback(
@@ -465,19 +483,20 @@ def get_job_detail_modal(dropdown_click, recently_clicked_dropdown_item_title, r
465483
[Output('job-delete-text', 'children'),
466484
Output('job-delete-confirm-modal', 'visible'),
467485
Output('job-delete-ids-store', 'data')],
468-
[Input('job-delete', 'nClicks'),
486+
[Input({'type': 'job-operation-button', 'index': ALL}, 'nClicks'),
469487
Input('job-list-table', 'nClicksDropdownItem')],
470488
[State('job-list-table', 'selectedRowKeys'),
471489
State('job-list-table', 'recentlyClickedDropdownItemTitle'),
472490
State('job-list-table', 'recentlyDropdownItemClickedRow')],
473491
prevent_initial_call=True
474492
)
475-
def job_delete_modal(delete_click, dropdown_click,
493+
def job_delete_modal(operation_click, dropdown_click,
476494
selected_row_keys, recently_clicked_dropdown_item_title, recently_dropdown_item_clicked_row):
477-
if delete_click or dropdown_click:
478-
trigger_id = dash.ctx.triggered_id
495+
trigger_id = dash.ctx.triggered_id
496+
if trigger_id == {'index': 'delete', 'type': 'job-operation-button'} or (
497+
trigger_id == 'job-list-table' and recently_clicked_dropdown_item_title == '删除'):
479498

480-
if trigger_id == 'job-delete':
499+
if trigger_id == {'index': 'delete', 'type': 'job-operation-button'}:
481500
job_ids = ','.join(selected_row_keys)
482501
else:
483502
if recently_clicked_dropdown_item_title == '删除':
@@ -528,32 +547,31 @@ def job_delete_confirm(delete_confirm, job_ids_data):
528547
Output('job_to_job_log-modal', 'title'),
529548
Output('job_log-job_name-input', 'value', allow_duplicate=True),
530549
Output('job_log-job_group-select', 'options'),
531-
Output('job-log', 'nClicks'),
532550
Output('job_log-search', 'nClicks'),
533551
Output('api-check-token', 'data', allow_duplicate=True)],
534-
[Input('job-log', 'nClicks'),
552+
[Input({'type': 'job-operation-log', 'index': ALL}, 'nClicks'),
535553
Input('job-list-table', 'nClicksDropdownItem')],
536554
[State('job-list-table', 'recentlyClickedDropdownItemTitle'),
537555
State('job-list-table', 'recentlyDropdownItemClickedRow'),
538556
State('job_log-search', 'nClicks')],
539557
prevent_initial_call=True
540558
)
541-
def job_to_job_log_modal(job_log_click, dropdown_click, recently_clicked_dropdown_item_title, recently_dropdown_item_clicked_row, job_log_search_nclick):
559+
def job_to_job_log_modal(operation_click, dropdown_click, recently_clicked_dropdown_item_title, recently_dropdown_item_clicked_row, job_log_search_nclick):
542560

543-
if job_log_click or (dropdown_click and recently_clicked_dropdown_item_title == '调度日志'):
561+
trigger_id = dash.ctx.triggered_id
562+
if trigger_id == {'index': 'log', 'type': 'job-operation-log'} or (trigger_id == 'job-list-table' and recently_clicked_dropdown_item_title == '调度日志'):
544563
option_table = []
545564
info = query_dict_data_list_api(dict_type='sys_job_group')
546565
if info.get('code') == 200:
547566
data = info.get('data')
548567
option_table = [dict(label=item.get('dict_label'), value=item.get('dict_value')) for item in data]
549568

550-
if dropdown_click and recently_clicked_dropdown_item_title == '调度日志':
569+
if trigger_id == 'job-list-table' and recently_clicked_dropdown_item_title == '调度日志':
551570
return [
552571
True,
553572
'任务调度日志',
554573
recently_dropdown_item_clicked_row.get('job_name'),
555574
option_table,
556-
None,
557575
job_log_search_nclick + 1 if job_log_search_nclick else 1,
558576
{'timestamp': time.time()},
559577
]
@@ -563,12 +581,11 @@ def job_to_job_log_modal(job_log_click, dropdown_click, recently_clicked_dropdow
563581
'任务调度日志',
564582
None,
565583
option_table,
566-
None,
567584
job_log_search_nclick + 1 if job_log_search_nclick else 1,
568585
{'timestamp': time.time()},
569586
]
570587

571-
return [dash.no_update] * 7
588+
return [dash.no_update] * 6
572589

573590

574591
@app.callback(

dash-fastapi-frontend/callbacks/monitor_c/job_c/job_log_c.py

Lines changed: 16 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
import uuid
44
import json
55
from dash import html, dcc
6-
from dash.dependencies import Input, Output, State
6+
from dash.dependencies import Input, Output, State, ALL
77
import feffery_antd_components as fac
88
import feffery_utils_components as fuc
99

@@ -180,33 +180,36 @@ def add_edit_job_log_modal(button_click, clicked_content, recently_button_clicke
180180

181181

182182
@app.callback(
183-
Output('job_log-delete', 'disabled'),
183+
Output({'type': 'job_log-operation-button', 'index': 'delete'}, 'disabled'),
184184
Input('job_log-list-table', 'selectedRowKeys'),
185185
prevent_initial_call=True
186186
)
187187
def change_job_log_delete_button_status(table_rows_selected):
188-
if table_rows_selected:
189-
if len(table_rows_selected) > 1:
188+
outputs_list = dash.ctx.outputs_list
189+
if outputs_list:
190+
if table_rows_selected:
191+
if len(table_rows_selected) > 1:
192+
return False
193+
190194
return False
191195

192-
return False
196+
return True
193197

194-
return True
198+
return dash.no_update
195199

196200

197201
@app.callback(
198202
[Output('job_log-delete-text', 'children'),
199203
Output('job_log-delete-confirm-modal', 'visible'),
200204
Output('job_log-delete-ids-store', 'data')],
201-
[Input('job_log-delete', 'nClicks'),
202-
Input('job_log-clear', 'nClicks')],
205+
Input({'type': 'job_log-operation-button', 'index': ALL}, 'nClicks'),
203206
State('job_log-list-table', 'selectedRowKeys'),
204207
prevent_initial_call=True
205208
)
206-
def job_log_delete_modal(delete_click, clear_click, selected_row_keys):
207-
if delete_click or clear_click:
208-
trigger_id = dash.ctx.triggered_id
209-
if trigger_id == 'job_log-delete':
209+
def job_log_delete_modal(operation_click, selected_row_keys):
210+
trigger_id = dash.ctx.triggered_id
211+
if trigger_id.index in ['delete', 'clear']:
212+
if trigger_id.index == 'delete':
210213
job_log_ids = ','.join(selected_row_keys)
211214

212215
return [
@@ -215,7 +218,7 @@ def job_log_delete_modal(delete_click, clear_click, selected_row_keys):
215218
{'oper_type': 'delete', 'job_log_ids': job_log_ids}
216219
]
217220

218-
elif trigger_id == 'job_log-clear':
221+
elif trigger_id.index == 'clear':
219222
return [
220223
f'是否确认清除所有的任务执行日志?',
221224
True,

dash-fastapi-frontend/callbacks/monitor_c/logininfor_c.py

Lines changed: 37 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
import time
33
import uuid
44
from dash import html, dcc
5-
from dash.dependencies import Input, Output, State
5+
from dash.dependencies import Input, Output, State, ALL
66
import feffery_antd_components as fac
77
import feffery_utils_components as fuc
88

@@ -111,34 +111,55 @@ def hidden_login_log_search_form(hidden_click, hidden_status):
111111

112112

113113
@app.callback(
114-
[Output('login_log-delete', 'disabled'),
115-
Output('login_log-unlock', 'disabled')],
114+
Output({'type': 'login_log-operation-button', 'index': 'delete'}, 'disabled'),
116115
Input('login_log-list-table', 'selectedRowKeys'),
117116
prevent_initial_call=True
118117
)
119-
def change_login_log_delete_unlock_button_status(table_rows_selected):
120-
if table_rows_selected:
121-
if len(table_rows_selected) > 1:
122-
return [False, True]
118+
def change_login_log_delete_button_status(table_rows_selected):
119+
outputs_list = dash.ctx.outputs_list
120+
if outputs_list:
121+
if table_rows_selected:
122+
if len(table_rows_selected) > 1:
123+
return False
123124

124-
return [False, False]
125+
return False
125126

126-
return [True, True]
127+
return True
128+
129+
return dash.no_update
130+
131+
132+
@app.callback(
133+
Output('login_log-unlock', 'disabled'),
134+
Input('login_log-list-table', 'selectedRowKeys'),
135+
prevent_initial_call=True
136+
)
137+
def change_login_log_unlock_button_status(table_rows_selected):
138+
outputs_list = dash.ctx.outputs_list
139+
if outputs_list:
140+
if table_rows_selected:
141+
if len(table_rows_selected) > 1:
142+
return True
143+
144+
return False
145+
146+
return True
147+
148+
return dash.no_update
127149

128150

129151
@app.callback(
130152
[Output('login_log-delete-text', 'children'),
131153
Output('login_log-delete-confirm-modal', 'visible'),
132154
Output('login_log-delete-ids-store', 'data')],
133-
[Input('login_log-delete', 'nClicks'),
134-
Input('login_log-clear', 'nClicks')],
155+
Input({'type': 'login_log-operation-button', 'index': ALL}, 'nClicks'),
135156
State('login_log-list-table', 'selectedRowKeys'),
136157
prevent_initial_call=True
137158
)
138-
def login_log_delete_modal(delete_click, clear_click, selected_row_keys):
139-
if delete_click or clear_click:
140-
trigger_id = dash.ctx.triggered_id
141-
if trigger_id == 'login_log-delete':
159+
def login_log_delete_modal(operation_click, selected_row_keys):
160+
trigger_id = dash.ctx.triggered_id
161+
if trigger_id.index in ['delete', 'clear']:
162+
if trigger_id.index == 'delete':
142163
info_ids = ','.join(selected_row_keys)
143164

144165
return [
@@ -147,7 +168,7 @@ def login_log_delete_modal(delete_click, clear_click, selected_row_keys):
147168
{'oper_type': 'delete', 'info_ids': info_ids}
148169
]
149170

150-
elif trigger_id == 'login_log-clear':
171+
elif trigger_id.index == 'clear':
151172
return [
152173
f'是否确认清除所有的登录日志?',
153174
True,

0 commit comments

Comments
 (0)