diff --git a/src/panel/graph_panel/controllers/analytic_controller.ts b/src/panel/graph_panel/controllers/analytic_controller.ts
index cd5eaae..3346f0b 100644
--- a/src/panel/graph_panel/controllers/analytic_controller.ts
+++ b/src/panel/graph_panel/controllers/analytic_controller.ts
@@ -166,9 +166,7 @@ export class AnalyticController {
this.labelingUnit.saving = false;
- let unit = this.labelingUnit;
this.dropLabeling();
- this._runStatusWaiter(unit);
}
undoLabeling() {
@@ -185,6 +183,8 @@ export class AnalyticController {
this._labelingDataAddedSegments.clear();
this._labelingDataRemovedSegments.clear();
this.labelingUnit.selected = false;
+ // TODO: it could be changed before labeling
+ this.labelingUnit.changed = false;
this._selectedAnalyticUnitId = null;
this._tempIdCounted = -1;
}
@@ -206,6 +206,7 @@ export class AnalyticController {
addSegment(segment: Segment, deleted = false) {
const addedSegment = this.labelingUnit.addSegment(segment, deleted);
+ this.labelingUnit.changed = true;
this._labelingDataAddedSegments.addSegment(addedSegment);
}
@@ -311,9 +312,6 @@ export class AnalyticController {
const newIds = await this._analyticService.updateSegments(
unit.id, this._labelingDataAddedSegments, this._labelingDataRemovedSegments
);
- if(unit.labelingMode !== LabelingMode.UNLABELING) {
- await this._analyticService.runDetect(unit.id);
- }
return newIds;
}
@@ -454,7 +452,14 @@ export class AnalyticController {
this._labelingDataRemovedSegments.addSegment(s);
}
});
- this._labelingDataAddedSegments.removeInRange(from, to);
+ const removed = this._labelingDataAddedSegments.removeInRange(from, to);
+ if(!_.isEmpty(removed)) {
+ this.labelingUnit.changed = true;
+ }
+ if(this._labelingDataAddedSegments.length === 0 &&
+ this._labelingDataRemovedSegments.length === 0) {
+ this.labelingUnit.changed = false;
+ }
}
toggleLabelingMode(labelingMode: LabelingMode): void {
diff --git a/src/panel/graph_panel/graph_ctrl.ts b/src/panel/graph_panel/graph_ctrl.ts
index 355d81d..c9b6292 100644
--- a/src/panel/graph_panel/graph_ctrl.ts
+++ b/src/panel/graph_panel/graph_ctrl.ts
@@ -604,11 +604,14 @@ class GraphCtrl extends MetricsPanelCtrl {
this.analyticsController.redetectAll(from, to);
}
- async runDetectInCurrentRange(analyticUnitId: AnalyticUnitId) {
+ async runDetectInCurrentRange(analyticUnit: AnalyticUnit) {
const { from, to } = this.rangeTimestamp;
+ if(analyticUnit.changed) {
+ await this.onAnalyticUnitSave(analyticUnit);
+ }
this.analyticsController.runDetect(
- analyticUnitId,
+ analyticUnit.id,
from, to
);
}
@@ -642,6 +645,9 @@ class GraphCtrl extends MetricsPanelCtrl {
}
async onAnalyticUnitSave(analyticUnit: AnalyticUnit) {
+ if(this.analyticsController.labelingUnit.id === analyticUnit.id) {
+ await this.onToggleLabelingMode(analyticUnit.id)
+ }
await this.analyticsController.saveAnalyticUnit(analyticUnit);
this.refresh();
}
diff --git a/src/panel/graph_panel/graph_renderer.ts b/src/panel/graph_panel/graph_renderer.ts
index c4000fc..00df58d 100644
--- a/src/panel/graph_panel/graph_renderer.ts
+++ b/src/panel/graph_panel/graph_renderer.ts
@@ -164,6 +164,7 @@ export class GraphRenderer {
);
}
+ this.scope.$apply();
this.renderPanel();
return;
}
diff --git a/src/panel/graph_panel/partials/analytic_units_5.x.html b/src/panel/graph_panel/partials/analytic_units_5.x.html
index 18e6af8..e8478ca 100644
--- a/src/panel/graph_panel/partials/analytic_units_5.x.html
+++ b/src/panel/graph_panel/partials/analytic_units_5.x.html
@@ -128,27 +128,9 @@
-
-
-