DAWorkbench 0.0.1
DAWorkbench API
载入中...
搜索中...
未找到
DA::DADataObjectPersistUndoCommand类 参考

文件缓存命令,此命令适合非常大的dataframe,以及前后对象是一样的场景 更多...

#include <DADataUndoCommand.h>

类 DA::DADataObjectPersistUndoCommand 继承关系图:
DA::DADataAbstractUndoCommand DA::DACallBackInterface

Public 成员函数

 DADataObjectPersistUndoCommand (QUndoCommand *par=nullptr)
 
void setOldData (const DAData &data) override
 
void setNewData (const DAData &data) override
 
void undo () override
 
void redo () override
 
bool isValid () const
 
- Public 成员函数 继承自 DA::DADataAbstractUndoCommand
 DADataAbstractUndoCommand (QUndoCommand *par=nullptr)
 
void setSkipFirstRedo (bool skip=true)
 
bool isSkipFirstRedo () const
 
void skipFirstRedo ()
 
- Public 成员函数 继承自 DA::DACallBackInterface
void setCallBack (CallBack fn)
 
CallBack getCallBack () const
 
void callback ()
 
bool hasCallback () const
 

Protected 成员函数

void dumpObj (const pybind11::object &obj, const QString &path)
 
pybind11::object loadObj (const QString &path)
 

Protected 属性

DAData m_data
 
QString m_oldObjectPath
 
QString m_newObjectPath
 
bool m_isValid { false }
 

额外继承的成员函数

- Public 类型 继承自 DA::DACallBackInterface
using CallBack = std::function< void() >
 

详细描述

文件缓存命令,此命令适合非常大的dataframe,以及前后对象是一样的场景

此命令的原理是setOldData时,把对象写入到临时文件中,setNewData时把对象内容写入到另外一个临时文件,命令记录新旧两个临时文件的地址, 回退或重做的时候从临时文件中加载到对象来实现内容的回退

DADataUndoCommand 是针对前后对象不一样的情况,而此命令可以针对前后对象一样的场景

def dropna(dadata:da_data.DAData, col_selected_index:List[int]):
df = dadata.toDataFrame()
df = df.dropna(axis=0, subset=subset, thresh=thresh,inplace = True)

上面这段脚本,对DAData内部的dataframe进行操作,且原地替换内容,此时DAData内部持有的py::object是不变的,没有dadata.setPyObject设置新的对象

这种情况,可以使用DADataFileCacheUndoCommand 直接把之前的对象内存写入到硬盘,这样就算原地改变,也能回退

此操作在任何情况下都能进行还原,因此如果你不清楚是否会产生新对象,你可以使用此命令

成员函数说明

◆ setNewData()

void DA::DADataObjectPersistUndoCommand::setNewData ( const DAData data)
overridevirtual

◆ setOldData()

void DA::DADataObjectPersistUndoCommand::setOldData ( const DAData data)
overridevirtual

该类的文档由以下文件生成: