У меня есть массив истории, который будет заполняться в зависимости от взаимодействия с пользователем.
[
{
action:"Canvas Added"
payload:Object
},
{
action:"Button Added"
payload: Object
},
{
action:"Rect Object Added"
payload:Object
}
]
И соответствующие другие массивы, которые добавляются. Массив кнопок
[
{
name:button1,
width:20px,
height:30px
},
{
name:button2,
width:21px,
height:22px
},
{
name:button3,
width:25px,
height:26px
}
]
Массив Canvas
[
{
name:c1,
id:"M5vTOtmWlThiMVo1qu_",
canvas:canvasObject
},
{
name:c2,
id:"M5vTOtliX4SGwAbs4Pm",
canvas:canvasObject
},
{
name:c3,
id:"M5vTOtosyAyO4X58pn_",
canvas:canvasObject
}
]
Массив объектов Rect
[
{
id:1
rect:rectObject
},
{
id:2
rect:rectObject
},
{
id:3
rect:rectObject
}
]
Ниже приведен псевдокод того, что я пытаюсь получить.
apply(state,actiontype){
if(actiontype==undo){
check the action
go into respective arrays (buttonsarray, canvasarray ,rect object array)
pop(data)
historyindex++;
}else if(actiontype==redo){
get the data from history
push(data);
push into respective arrays (buttonsarray, canvasarray ,rect object array)
historyindex–-;
}
}
Проблема: я пытаюсь реализовать отмену / повтор, основанный на истории, основанной на вышеупомянутом механизме массива, и пытаюсь найти способ, и предложения будут полезны.