Hi Dave,
Implementation:
1) Took a flag 'is_row_copied' for each copied row:
- to distinguish it from add/update row.
- to write code specific to copied row only as it requires different logic than add row.
2) After pasting an existing row:
- If a user clear the cell value, it must set cell to [default] value if default value is explicitly given for column while creating table otherwise [null].
- Again, if a user entered a value in same cell, then removes that value, set it to [null] (the same behaviour is for add row).
3) Took a 2-dimensional array "grid.copied_rows" to keep track the changes of each row's cell so that changes made to each cell are independent and removed once data is saved.
4) On pasting a row, the cell must be highlighted with light green colour, so triggers an addNewRow event. Now copied row will add to grid instead of re-rendering all rows again.
5) Moved the common logic into functions.
This patch pass the feature test cases and jasmine test case.
Also I will add the test cases for copy row and send an updated patch.
Please find attached patch and review.
Thanks,
Surinder Kumar