feat: 优化和增加TODO

This commit is contained in:
381848900@qq.com 2024-12-11 11:25:00 +08:00
parent 45148ead6e
commit 90e3e22e44
5 changed files with 78 additions and 14 deletions

View File

@ -26,7 +26,6 @@ pub fn set_complete(app: AppHandle) -> Result<(), AppError> {
Ok(())
}
// TODO: 获取PE节点树的JSON数据
#[tauri::command]
pub fn command_get_file_pe_node_tree_data() -> Result<Vec<PeNodeTreeData>, AppError> {
// 1. 如果没有打开文件,则返回错误
@ -91,7 +90,6 @@ pub fn command_open_file(file_path: &str) -> Result<(), AppError> {
}
// 判断文件是否是64位
// TODO: GLOBAL_IS_64_BIT
let binding = GLOBAL_FILE_DATA.lock().unwrap();
let file_data = binding.as_ref().unwrap();
let is64bit = file_data.is_64_bit()?;

View File

@ -5,7 +5,6 @@ use crate::{app_error::AppError, pe_parse::{header::{ImageDosHeader, ImageFileHe
use super::{GLOBAL_FILE_DATA, GLOBAL_IS_64_BIT};
// TODO: 打开文件,并将文件映射到内存
pub fn mmap_mut_file(file_path: &str) -> Result<Mmap, std::io::Error> {
let file = std::fs::OpenOptions::new().read(true).open(file_path)?;

View File

@ -3,6 +3,7 @@ import NodeTableComponent, {
} from "../NodeTableComponent/NodeTableComponent";
export default function NTHeader() {
// TODO: 这里要分64位和32位最好让后端返回
const dataTemplate: DataTemplateInterface = {
signature: {
name: "Signature",

View File

@ -35,7 +35,8 @@ export interface DataType {
// hex: 16进制
// enum: 枚举值,对于枚举的处理一律按位处理
// array: 数组
data_type: "hex" | "enum" | "array";
// char_array: 字符数组
data_type: "hex" | "enum" | "array"| "char_array";
children?: DataType[];
}
@ -87,6 +88,7 @@ const EditableCell: React.FC<React.PropsWithChildren<EditableCellProps>> = ({
handleSave,
...restProps
}) => {
// TODO: 如果值现在以16进制显示那么编辑的时候也应该是16进制
const [editing, setEditing] = useState(false);
const inputRef = useRef<InputRef>(null);
const form = useContext(EditableContext)!;
@ -145,10 +147,8 @@ export default function NodeTableComponent(props: NodeTableComponentProps) {
}>({});
const handleSwitchFieldHexMode = (field: string) => {
console.log("hexSwitchStatus", hexSwitchStatus);
const newHexSwitchStatus = { ...hexSwitchStatus };
newHexSwitchStatus[field] = !newHexSwitchStatus[field];
console.log("newHexSwitchStatus", newHexSwitchStatus);
setHexSwitchStatus(newHexSwitchStatus);
};
@ -224,7 +224,7 @@ export default function NodeTableComponent(props: NodeTableComponentProps) {
cloneData[key].value = null;
cloneData[key].children = array;
}
// TODO: 枚举值处理
// TODO: 枚举值处理, 把所有枚举放到一个成员,后面通过选项组件展示
if (cloneData[key].data_type === "enum") {
// children
let children = [];
@ -241,19 +241,23 @@ export default function NodeTableComponent(props: NodeTableComponentProps) {
});
}
}
// cloneData[key].value = null;
cloneData[key].children = children;
}
}
// TODO: 字符数组处理
// 3. 更新data
setData(Object.values(cloneData).sort((a, b) => a.offset - b.offset));
}
// TODO: 应该从columns中获需要排序的字段来进行排序
// 如果cloneData的成员中有offset字段那么需要按照offset排序
let cloneDataArray = Object.values(cloneData);
if(cloneDataArray[0].offset){
cloneDataArray.sort((a, b) => a.offset - b.offset);
}
setData(cloneDataArray);
};
useEffect(() => {
// 请求数据
invoke(props.command).then((resData: ResponsData) => {
console.log("resData", resData);
handleData(resData);
});
}, []);

View File

@ -0,0 +1,62 @@
import NodeTableComponent, {
DataTemplateInterface,
} from "../NodeTableComponent/NodeTableComponent";
export default function SectionHeaders() {
const dataTemplate: DataTemplateInterface = {
/**
pub name: [u8; 8],
pub virtual_size: u32,
pub virtual_address: u32,
pub size_of_raw_data: u32,
pub pointer_to_raw_data: u32,
pub pointer_to_relocations: u32,
pub pointer_to_linenumbers: u32,
pub number_of_relocations: u16,
pub number_of_linenumbers: u16,
pub characteristics: SectionCharacteristics,
*/
};
const command = "command_get_pe_data_optional_header";
const columns = [
{
title: "节区名(Byte[8])",
dataIndex: "name",
key: "name",
},
{
title: "虚拟大小",
dataIndex: "offset",
key: "offset",
hexSwitch: true,
},
{
title: "大小",
dataIndex: "size",
key: "size",
},
{
title: "值",
dataIndex: "value",
key: "value",
hexSwitch: true,
editable: true,
},
{
title: "描述信息",
dataIndex: "description",
key: "description",
},
];
return (
<NodeTableComponent
dataTemplate={dataTemplate}
command={command}
columns={columns as any}
></NodeTableComponent>
);
}