提交 42d79b55 编写于 作者: A Andrey Zhavoronkov 提交者: Nikita Manovich

Fixed bug for save functionality (#141)

In case of any changes during save request the state of exported shapes can be inconsistent. That leads to errors for future saves.
上级 02fcd015
......@@ -100,7 +100,8 @@ function buildAnnotationUI(job, shapeData, loadJobEvent) {
// Setup components
let annotationParser = new AnnotationParser(job, window.cvat.labelsInfo);
let shapeCollectionModel = new ShapeCollectionModel().import(shapeData).updateHash();
let shapeCollectionModel = new ShapeCollectionModel().import(shapeData).updateExportedState();
shapeCollectionModel.confirmExportedState();
let shapeCollectionController = new ShapeCollectionController(shapeCollectionModel);
let shapeCollectionView = new ShapeCollectionView(shapeCollectionModel, shapeCollectionController);
......@@ -690,6 +691,7 @@ function saveAnnotation(shapeCollectionModel, job) {
});
const exportedData = shapeCollectionModel.export();
shapeCollectionModel.updateExportedState();
const annotationLogs = Logger.getLogs();
const data = {
......@@ -702,8 +704,7 @@ function saveAnnotation(shapeCollectionModel, job) {
saveJobRequest(job.jobid, data, () => {
// success
shapeCollectionModel.reset_state();
shapeCollectionModel.updateHash();
shapeCollectionModel.confirmExportedState();
saveButton.text('Success!');
setTimeout(() => {
saveButton.prop('disabled', false);
......@@ -741,4 +742,4 @@ function translateSVGPos(svgCanvas, clientX, clientY) {
function blurAllElements() {
document.activeElement.blur();
}
\ No newline at end of file
}
......@@ -53,6 +53,7 @@ class ShapeCollectionModel extends Listener {
this._splitter = new ShapeSplitter();
this._erased = false;
this._initialShapes = {};
this._exportedShapes = {};
}
_nextIdx() {
......@@ -239,8 +240,9 @@ class ShapeCollectionModel extends Listener {
return this;
}
reset_state() {
confirmExportedState() {
this._erased = false;
this._initialShapes = this._exportedShapes;
}
export() {
......@@ -349,8 +351,8 @@ class ShapeCollectionModel extends Listener {
return exportData.pre_erase;
}
updateHash() {
this._initialShapes = {};
updateExportedState() {
this._exportedShapes = {};
if (this._erased) {
return this;
......@@ -358,7 +360,7 @@ class ShapeCollectionModel extends Listener {
for (const shape of this._shapes) {
if (!shape.removed) {
this._initialShapes[shape.id] = shape.export();
this._exportedShapes[shape.id] = shape.export();
}
}
return this;
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册