|
|
|
@ -64,30 +64,35 @@ function (angular, _) { |
|
|
|
|
return sourceRow; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
var i, panel, row; |
|
|
|
|
var i, panel, row, copy; |
|
|
|
|
var sourceRowId = _.indexOf(this.dashboard.rows, sourceRow) + 1; |
|
|
|
|
|
|
|
|
|
// look for row to reuse
|
|
|
|
|
for (i = 0; i < this.dashboard.rows.length; i++) { |
|
|
|
|
row = this.dashboard.rows[i]; |
|
|
|
|
if (row.repeatRowId === sourceRowId && row.repeatIteration !== this.iteration) { |
|
|
|
|
row.repeatIteration = this.iteration; |
|
|
|
|
return row; |
|
|
|
|
copy = row; |
|
|
|
|
break; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
var copy = angular.copy(sourceRow); |
|
|
|
|
copy.repeat = null; |
|
|
|
|
copy.repeatRowId = sourceRowId; |
|
|
|
|
copy.repeatIteration = this.iteration; |
|
|
|
|
this.dashboard.rows.push(copy); |
|
|
|
|
if (!copy) { |
|
|
|
|
copy = angular.copy(sourceRow); |
|
|
|
|
this.dashboard.rows.push(copy); |
|
|
|
|
|
|
|
|
|
// set new panel ids
|
|
|
|
|
for (i = 0; i < copy.panels.length; i++) { |
|
|
|
|
panel = copy.panels[i]; |
|
|
|
|
panel.id = this.dashboard.getNextPanelId(); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
// set new panel ids
|
|
|
|
|
for (i = 0; i < copy.panels.length; i++) { |
|
|
|
|
panel = copy.panels[i]; |
|
|
|
|
panel.id = this.dashboard.getNextPanelId(); |
|
|
|
|
} else { |
|
|
|
|
// update reused instance
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
copy.repeat = null; |
|
|
|
|
copy.repeatRowId = sourceRowId; |
|
|
|
|
copy.repeatIteration = this.iteration; |
|
|
|
|
return copy; |
|
|
|
|
}; |
|
|
|
|
|
|
|
|
@ -122,16 +127,28 @@ function (angular, _) { |
|
|
|
|
return sourcePanel; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
var i, tmpId, panel, clone; |
|
|
|
|
|
|
|
|
|
// first try finding an existing clone to use
|
|
|
|
|
for (var i = 0; i < row.panels.length; i++) { |
|
|
|
|
var panel = row.panels[i]; |
|
|
|
|
for (i = 0; i < row.panels.length; i++) { |
|
|
|
|
panel = row.panels[i]; |
|
|
|
|
if (panel.repeatIteration !== this.iteration && panel.repeatPanelId === sourcePanel.id) { |
|
|
|
|
panel.repeatIteration = this.iteration; |
|
|
|
|
return panel; |
|
|
|
|
clone = panel; |
|
|
|
|
break; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
var clone = this.dashboard.duplicatePanel(sourcePanel, row); |
|
|
|
|
if (!clone) { |
|
|
|
|
clone = { id: this.dashboard.getNextPanelId() }; |
|
|
|
|
row.panels.push(clone); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
// save id
|
|
|
|
|
tmpId = clone.id; |
|
|
|
|
// copy properties from source
|
|
|
|
|
angular.extend(clone, sourcePanel); |
|
|
|
|
// restore id
|
|
|
|
|
clone.id = tmpId; |
|
|
|
|
clone.repeatIteration = this.iteration; |
|
|
|
|
clone.repeatPanelId = sourcePanel.id; |
|
|
|
|
clone.repeat = null; |
|
|
|
|