widget.py 5.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103
  1. import pywebio.pin as pin
  2. from pywebio.input import *
  3. from pywebio.output import *
  4. from pywebio.session import *
  5. from .common import *
  6. from . import judge_field
  7. def column_map_widget(columns):
  8. columns.append('-')
  9. # 判断列映射
  10. column_map_res = judge_field.judge_by_field_name(columns)
  11. header = ['列名','系统自动识别字段','单位','格式']
  12. values = []
  13. i = 0
  14. for k,v in fields.items():
  15. values.append({
  16. '列名': k,
  17. '系统自动识别字段': pin.put_select(name=f"field_{i}", options=columns, value=column_map_res.get(k, '-')),
  18. '单位': pin.put_select(name=f"unit_{i}", options=v[1]),
  19. '格式': pin.put_select(name=f"format_{i}", options=v[3]),
  20. })
  21. i = i + 1
  22. put_table([
  23. ['系统:', put_table(values,header=header)]
  24. ])
  25. def data_clean_conf_widget():
  26. put_table([
  27. ['系统:',put_markdown(f"当前清洗规则如下,可手动点击进行修改")]
  28. ])
  29. header = ['列名', '空值处理', '空值指定值', '无效值处理', '无效值判定值', '无效值指定值']
  30. clean_rule = ['不处理', '删除整行', '向上临近填充', '向下临近填充', '中位数填充', '平均值填充', '指定值填充']
  31. values = []
  32. i = 0
  33. for k,v in fields.items():
  34. values.append({
  35. '列名': k,
  36. '空值处理': pin.put_select(name=f"none_{i}", options=clean_rule, value=v[4]),
  37. '空值指定值': pin.put_input(name=f"none_assign_{i}", type='float'),
  38. '无效值处理': pin.put_select(name=f"invalid_{i}", options=clean_rule, value=v[5]),
  39. '无效值判定值': pin.put_input(name=f"invalid_judge_{i}", type='float'),
  40. '无效值指定值': pin.put_input(name=f"invalie_assign_{i}", type='float'),
  41. })
  42. i = i + 1
  43. put_table([
  44. ['系统:',put_table(values,header=header)]
  45. ])
  46. buttons = {State.data_clean_exec.value: ['执行数据清洗', 'success'],
  47. State.column_map.value: ['我想修改数据字段映射', 'info'],
  48. State.upload_file.value: ['我想重新导入数据文件', 'info']}
  49. res = actions('请告诉我您的需求', buttons=construct_buttons(buttons))
  50. put_table([['用户:', buttons[res][0]]])
  51. return res
  52. # def data_clean_exec_widget():
  53. # put_table([['系统:', "数据清洗完成"]])
  54. # buttons = {State.download_file.value: ['我想下载清洗后的数据', 'success'],
  55. # State.run_algo.value: ['我想执行算法模块', 'success'],
  56. # State.upload_file.value: ['我想重新导入数据文件', 'info']}
  57. # res = actions('请告诉我您的需求', buttons=construct_buttons(buttons))
  58. # put_table([['用户:', buttons[res][0]]])
  59. # return res
  60. def next_actions():
  61. # 如果功能已经都进行过一次设置,则支持的按钮统一如下
  62. # {}
  63. if not local.state_enter.get(State.column_map, None):
  64. buttons = {State.column_map.value: ['我想配置数据字段映射', 'success'],
  65. State.upload_file.value: ['我想重新导入数据文件', 'info']}
  66. elif not local.state_enter.get(State.data_clean_conf, None):
  67. buttons = {State.data_clean_conf.value: ['我想进行数据清洗', 'success'],
  68. State.run_algo.value: ['我想进入算法执行系统', 'success'],
  69. State.column_map.value: ['我想修改数据字段映射', 'info'],
  70. State.upload_file.value: ['我想重新导入数据文件', 'info']}
  71. elif not local.state_enter.get(State.data_clean_exec, None):
  72. buttons = {State.data_clean_exec.value: ['我想执行数据清洗', 'success'],
  73. State.run_algo.value: ['我想进入算法执行系统', 'success'],
  74. State.data_clean_conf.value: ['我想修改数据清洗规则', 'info'],
  75. State.column_map.value: ['我想修改数据字段映射', 'info'],
  76. State.upload_file.value: ['我想重新导入数据文件', 'info']}
  77. else:
  78. buttons = {State.run_algo.value: ['我想进入算法执行系统', 'success'],
  79. State.download_file.value: ['我想下载清洗后的数据', 'success'],
  80. State.data_clean_conf.value: ['我想修改数据清洗规则', 'info'],
  81. State.column_map.value: ['我想修改数据字段映射', 'info'],
  82. State.upload_file.value: ['我想重新导入数据文件', 'info']}
  83. res = actions('请告诉我您的需求', buttons=construct_buttons(buttons))
  84. put_table([['用户:', buttons[res][0]]])
  85. return State(res)
  86. def algo_system_actions():
  87. buttons = {State.run_algo_all.value: ['我想执行所有算法模块', 'primary'],
  88. State.run_algo_1.value: ['我想执行基本信息统计', 'success'],
  89. State.run_algo_2.value: ['我想执行电池信息分析', 'success'],
  90. State.run_algo_3.value: ['我想执行电池安全诊断', 'success'],
  91. State.run_algo_4.value: ['我想执行电池性能诊断', 'success'],
  92. State.run_algo_5.value: ['我想执行电池画像分析', 'success'],
  93. State.run_algo_exit.value: ['我想退出算法执行系统', 'danger']}
  94. res = actions('请告诉我您的需求', buttons=construct_buttons(buttons))
  95. put_table([['用户:', buttons[res][0]]])
  96. return State(res)