import pywebio.pin as pin from pywebio.input import * from pywebio.output import * from pywebio.session import * from .common import * from . import judge_field def column_map_widget(columns): columns.append('-') # 判断列映射 column_map_res = judge_field.judge_by_field_name(columns) header = ['列名','系统自动识别字段','单位','格式'] values = [] i = 0 for k,v in fields.items(): values.append({ '列名': k, '系统自动识别字段': pin.put_select(name=f"field_{i}", options=columns, value=column_map_res.get(k, '-')), '单位': pin.put_select(name=f"unit_{i}", options=v[1]), '格式': pin.put_select(name=f"format_{i}", options=v[3]), }) i = i + 1 put_table([ ['系统:', put_table(values,header=header)] ]) def data_clean_conf_widget(): put_table([ ['系统:',put_markdown(f"当前清洗规则如下,可手动点击进行修改")] ]) header = ['列名', '空值处理', '空值指定值', '无效值处理', '无效值判定值', '无效值指定值'] clean_rule = ['不处理', '删除整行', '向上临近填充', '向下临近填充', '中位数填充', '平均值填充', '指定值填充'] values = [] i = 0 for k,v in fields.items(): values.append({ '列名': k, '空值处理': pin.put_select(name=f"none_{i}", options=clean_rule, value=v[4]), '空值指定值': pin.put_input(name=f"none_assign_{i}", type='float'), '无效值处理': pin.put_select(name=f"invalid_{i}", options=clean_rule, value=v[5]), '无效值判定值': pin.put_input(name=f"invalid_judge_{i}", type='float'), '无效值指定值': pin.put_input(name=f"invalie_assign_{i}", type='float'), }) i = i + 1 put_table([ ['系统:',put_table(values,header=header)] ]) buttons = {State.data_clean_exec.value: ['执行数据清洗', 'success'], State.column_map.value: ['我想修改数据字段映射', 'info'], State.upload_file.value: ['我想重新导入数据文件', 'info']} res = actions('请告诉我您的需求', buttons=construct_buttons(buttons)) put_table([['用户:', buttons[res][0]]]) return res # def data_clean_exec_widget(): # put_table([['系统:', "数据清洗完成"]]) # buttons = {State.download_file.value: ['我想下载清洗后的数据', 'success'], # State.run_algo.value: ['我想执行算法模块', 'success'], # State.upload_file.value: ['我想重新导入数据文件', 'info']} # res = actions('请告诉我您的需求', buttons=construct_buttons(buttons)) # put_table([['用户:', buttons[res][0]]]) # return res def next_actions(): # 如果功能已经都进行过一次设置,则支持的按钮统一如下 # {} if not local.state_enter.get(State.column_map, None): buttons = {State.column_map.value: ['我想配置数据字段映射', 'success'], State.upload_file.value: ['我想重新导入数据文件', 'info']} elif not local.state_enter.get(State.data_clean_conf, None): buttons = {State.data_clean_conf.value: ['我想进行数据清洗', 'success'], State.run_algo.value: ['我想进入算法执行系统', 'success'], State.column_map.value: ['我想修改数据字段映射', 'info'], State.upload_file.value: ['我想重新导入数据文件', 'info']} elif not local.state_enter.get(State.data_clean_exec, None): buttons = {State.data_clean_exec.value: ['我想执行数据清洗', 'success'], State.run_algo.value: ['我想进入算法执行系统', 'success'], State.data_clean_conf.value: ['我想修改数据清洗规则', 'info'], State.column_map.value: ['我想修改数据字段映射', 'info'], State.upload_file.value: ['我想重新导入数据文件', 'info']} else: buttons = {State.run_algo.value: ['我想进入算法执行系统', 'success'], State.download_file.value: ['我想下载清洗后的数据', 'success'], State.data_clean_conf.value: ['我想修改数据清洗规则', 'info'], State.column_map.value: ['我想修改数据字段映射', 'info'], State.upload_file.value: ['我想重新导入数据文件', 'info']} res = actions('请告诉我您的需求', buttons=construct_buttons(buttons)) put_table([['用户:', buttons[res][0]]]) return State(res) def algo_system_actions(): buttons = {State.run_algo_all.value: ['我想执行所有算法模块', 'primary'], State.run_algo_1.value: ['我想执行基本信息统计', 'success'], State.run_algo_2.value: ['我想执行电池信息分析', 'success'], State.run_algo_3.value: ['我想执行电池安全诊断', 'success'], State.run_algo_4.value: ['我想执行电池性能诊断', 'success'], State.run_algo_5.value: ['我想执行电池画像分析', 'success'], State.run_algo_exit.value: ['我想退出算法执行系统', 'danger']} res = actions('请告诉我您的需求', buttons=construct_buttons(buttons)) put_table([['用户:', buttons[res][0]]]) return State(res)