<?xml version="1.0" encoding="UTF-8"?>
<commit>
  <added type="array"/>
  <modified type="array">
    <modified>
      <diff>@@ -79,6 +79,11 @@ my $labelSub = sub {
     #return eval{$_[0]-&gt;primary_tag};
 };
 
+my $idSub = sub {
+    return $_[0]-&gt;load_id if ($_[0]-&gt;can('load_id') &amp;&amp; defined($_[0]-&gt;load_id));
+    return $_[0]-&gt;can('primary_id') ? $_[0]-&gt;primary_id : $_[0]-&gt;id;
+};
+
 my $streaming = 0;
 my ($db, $stream);
 if ($gff) {
@@ -109,6 +114,7 @@ my %style = (&quot;autocomplete&quot; =&gt; $autocomplete,
              &quot;subfeatures&quot;  =&gt; $getSubs,
              &quot;class&quot;        =&gt; $cssClass,
              &quot;label&quot;        =&gt; $getLabel ? $labelSub : 0,
+             &quot;idSub&quot;        =&gt; $idSub,
              &quot;key&quot;          =&gt; defined($key) ? $key : $trackLabel,
              &quot;urlTemplate&quot;  =&gt; $urlTemplate,
              &quot;arrowheadClass&quot; =&gt; $arrowheadClass,</diff>
      <filename>bin/flatfile-to-json.pl</filename>
    </modified>
    <modified>
      <diff>@@ -78,7 +78,8 @@ FeatureTrack.prototype.loadSuccess = function(trackInfo) {
 	    alert(&quot;clicked on feature\nstart: &quot; + feat[fields[&quot;start&quot;]] +
 	          &quot;, end: &quot; + feat[fields[&quot;end&quot;]] +
 	          &quot;, strand: &quot; + feat[fields[&quot;strand&quot;]] +
-	          &quot;, ID: &quot; + feat[fields[&quot;name&quot;]]);
+	          &quot;, label: &quot; + feat[fields[&quot;name&quot;]] +
+	          &quot;, ID: &quot; + feat[fields[&quot;id&quot;]]);
         };
     }
 </diff>
      <filename>js/FeatureTrack.js</filename>
    </modified>
    <modified>
      <diff>@@ -19,17 +19,12 @@ my @featMap = (
 	       sub {shift-&gt;start - 1},
 	       sub {int(shift-&gt;end)},
 	       sub {int(shift-&gt;strand)},
-	       \&amp;featureIdSub,
 	      );
-my @mapHeaders = ('start', 'end', 'strand', 'id');
+my @mapHeaders = ('start', 'end', 'strand');
 #positions of &quot;start&quot; and &quot;end&quot; in @mapHeaders (for NCList)
 my $startIndex = 0;
 my $endIndex = 1;
 
-sub featureIdSub {
-    return $_[0]-&gt;can('primary_id') ? $_[0]-&gt;primary_id : $_[0]-&gt;id;
-}
-
 sub featureLabelSub {
     return $_[0]-&gt;display_name if $_[0]-&gt;can('display_name');
     return $_[0]-&gt;info         if $_[0]-&gt;can('info'); # deprecated
@@ -137,8 +132,12 @@ sub new {
     $self-&gt;{getLabel} = ($style{autocomplete} =~ /label|all/);
     $self-&gt;{getAlias} = ($style{autocomplete} =~ /alias|all/);
 
-    my @curFeatMap = (@featMap, @$extraMap);
-    my @curMapHeaders = (@mapHeaders, @$extraHeaders);
+    my $idSub = $style{idSub} || sub  {
+        return $_[0]-&gt;can('primary_id') ? $_[0]-&gt;primary_id : $_[0]-&gt;id;
+    };
+
+    my @curFeatMap = (@featMap, $idSub, @$extraMap);
+    my @curMapHeaders = (@mapHeaders, &quot;id&quot;, @$extraHeaders);
 
     if ($style{label}) {
 	push @curFeatMap, $style{label};
@@ -167,7 +166,9 @@ sub new {
 
     my @allSubfeatures;
     $self-&gt;{allSubfeatures} = \@allSubfeatures;
-    my $subfeatId = \&amp;featureIdSub;
+    my $subfeatId = $style{idSub} || sub {
+        return $_[0]-&gt;can('primary_id') ? $_[0]-&gt;primary_id : $_[0]-&gt;id;
+    };
     if ($autoshareSubs) {
         $subfeatId = sub {
             my $feat = shift;</diff>
      <filename>lib/JsonGenerator.pm</filename>
    </modified>
  </modified>
  <removed type="array"/>
  <parents type="array">
    <parent>
      <id>b54bf71be0a66b8b1b47fc037e2570d3be1da638</id>
    </parent>
  </parents>
  <author>
    <name>Mitch Skinner</name>
    <email>mitch_skinner@berkeley.edu</email>
  </author>
  <url>http://github.com/jbrowse/jbrowse/commit/020db6dde76a7922eb8117addc481f46c1358bbc</url>
  <id>020db6dde76a7922eb8117addc481f46c1358bbc</id>
  <committed-date>2009-10-20T18:21:26-07:00</committed-date>
  <authored-date>2009-10-20T18:21:26-07:00</authored-date>
  <message>allow the ID callback to vary
add a special Bio::DB::SeqFeature::Store ID callback for use with GFFs</message>
  <tree>8ff7455ee17cc96ace8ea4578f287dd2b5edc933</tree>
  <committer>
    <name>Mitch Skinner</name>
    <email>mitch_skinner@berkeley.edu</email>
  </committer>
</commit>
