Отменить / Повторить реализацию в массиве объектов - PullRequest
0 голосов
/ 27 апреля 2020

У меня есть массив истории, который будет заполняться в зависимости от взаимодействия с пользователем.

[
{ 
   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–-;
}
}

Проблема: я пытаюсь реализовать отмену / повтор, основанный на истории, основанной на вышеупомянутом механизме массива, и пытаюсь найти способ, и предложения будут полезны.

...