code: func (p *Panel) RepeatDatasourcesForEachTarget(dsNames ...string) {
  	repeatDS := func(dsNames []string, targets *[]Target) {
  		var refID = "A"
  		originalTargets := *targets
  		cleanedTargets := make([]Target, 0, len(originalTargets)*len(dsNames))
  		*targets = cleanedTargets
  		for _, target := range originalTargets {
  			for _, ds := range dsNames {
  				newTarget := target
  				newTarget.RefID = refID
  				newTarget.Datasource = ds
  				refID = incRefID(refID)
  				*targets = append(*targets, newTarget)
  			}
  		}
  	}
  	switch p.OfType {
  	case GraphType:
  		repeatDS(dsNames, &p.GraphPanel.Targets)
  	case SinglestatType:
  		repeatDS(dsNames, &p.SinglestatPanel.Targets)
  	case TableType:
  		repeatDS(dsNames, &p.TablePanel.Targets)
  	}
  }
docs: // MapDatasources on all existing targets for the panel.