Sto sviluppando un'applicazione che produce "file" che sono in definitiva solo un elenco di gruppi di transazioni: un archivio eventi. Mi chiedevo se esistesse un nome per il modo in cui gestisco annulla / ripeti. O se c'è un altro modo comune per implementare tale funzionalità.
Ad esempio, un file con tre "nodi" potrebbe avere un aspetto simile a questo:
"transactionGroups": [
{
"isUserOwned": true,
"transactions": [
{
"op": "nodeAdded",
"frame": 0,
"rotation": 132,
"length": 435,
"scale": 100
}
]
},
{
"isUserOwned": true,
"transactions": [
{
"op": "nodeAdded",
"frame": 0,
"rotation": 144,
"length": 363,
"scale": 100
}
]
},
{
"isUserOwned": true,
"transactions": [
{
"op": "nodeAdded",
"frame": 0,
"rotation": 163,
"length": 311,
"scale": 100
}
]
}
Nello spirito di " non c'è eliminazione "Ho ideato un modo per implementare l'annullamento / ripristino aggiungendo una transazione" annulla "che fa riferimento a una transazione relativa alla sua posizione nel negozio. Fondamentalmente, dice al costruttore di file di ignorare una transazione di riferimento quando costruisce lo stato corrente del file.
Per ripetere un'operazione, una transazione di annullamento viene annullata di nuovo.
"transactionGroups": [
{
"isUserOwned": true,
"transactions": [
{
"op": "nodeAdded",
"frame": 0,
"rotation": 132,
"length": 435,
"scale": 100
}
]
},
{
"isUserOwned": true,
"transactions": [
{
"op": "nodeAdded",
"frame": 0,
"rotation": 144,
"length": 363,
"scale": 100
}
]
},
{
"isUserOwned": true,
"transactions": [
{
"op": "nodeAdded",
"frame": 0,
"rotation": 163,
"length": 311,
"scale": 100
}
]
},
// Undoes the last two transactions
{
"isUserOwned": true,
"transactions": [
{
"op": "undo",
"transaction": 1
}
]
},
{
"isUserOwned": true,
"transactions": [
{
"op": "undo",
"transaction": 3
}
]
},
// Redoes the last two undo transactions
{
"isUserOwned": true,
"transactions": [
{
"op": "undo",
"transaction": 1
}
]
},
{
"isUserOwned": true,
"transactions": [
{
"op": "undo",
"transaction": 3
}
]
}
]