When creating many panels and rows I'm consistently running into a bug where dragging a panel to a position makes the panel appear elsewhere within the grid and spits out the following js error:
Error: [ngRepeat:dupes] Duplicates in a repeater are not allowed. Use 'track by' expression to specify unique keys. Repeater: (name, panel) in row.panels track by panel.id, Duplicate key: 64, Duplicate value: {"cacheTimeout":null,"colorBackground":true,"colorValue":false,"colors":["rgba(225, 31, 31, 0.9)","rgba(237, 129, 40, 0)","rgba(103, 115, 103, 0)"],"datasource":"InfluxDB","decimals":0,"editable":true,"error":false,"format":"none","height":"","id":64,"interval":null,"links":[],"maxDataPoints":100,"nullPointMode":"connected","nullText":null,"postfix":"","postfixFontSize":"30%","prefix":"","prefixFontSize":"100%","span":4,"sparkline":{"fillColor":"rgba(0, 148, 255, 0)","full":false,"lineColor":"rgba(29, 174, 0, 0)","show":false},"targets":[{"fields":[{"func":"mean","name":"value"}],"groupByTags":[],"measurement":"jobs_completed","query":"SELECT last(value) FROM jobs_remaining WHERE modelName='Keyword' AND taskName='BingRanker' ORDER BY asc","rawQuery":true,"tags":{"modelName":"Backlink","taskName":"Crawler"}}],"thresholds":"-999999999,0,0","timeFrom":null,"title":"Remaining","transparent":false,"type":"singlestat","valueFontSize":"70%","valueMaps":[{"op":"=","text":"-","value":"null"}],"valueName":"current"}
http://errors.angularjs.org/1.4.3/ngRepeat/dupes?p0=(name%2C%20panel)%20in%…-%22%2C%22value%22%3A%22null%22%7D%5D%2C%22valueName%22%3A%22current%22%7D
at app.bd986dd5.js:9
at app.bd986dd5.js:14
at Object.d as fn
at n.$digest (app.bd986dd5.js:12)
at app.bd986dd5.js:12
at e (app.bd986dd5.js:9)
at app.bd986dd5.js:9