70d2fa98f8f4fe8d805b2172bd26850d19c1a645
angie
  Mon Mar 23 15:17:04 2015 -0700
Code review feedback from Kate: libify inclusion of libs for new React framework.
refs #14965

diff --git src/hg/hgChooseDb/hgChooseDb.c src/hg/hgChooseDb/hgChooseDb.c
index ae301c3..c66f6ff 100644
--- src/hg/hgChooseDb/hgChooseDb.c
+++ src/hg/hgChooseDb/hgChooseDb.c
@@ -4,30 +4,31 @@
  *    (default, in the absence of special CGI params)
  *  - cart-based JSON responses to ajax requests from javascript (using hg/lib/cartJson.c)
  *    (if CGI param CARTJSON_COMMAND exists)
  *  - no cart; fast JSON responses to species-search autocomplete requests
  *    (if CGI param SEARCH_TERM exists)
  * The UI view top level is in ../js/react/hgChooseDb/hgChooseDb.jsx
  * The UI model top level is in ../js/model/hgChooseDb/hgChooseDbModel.js
  */
 #include "common.h"
 #include "cart.h"
 #include "cartJson.h"
 #include "cheapcgi.h"
 #include "hCommon.h"
 #include "hdb.h"
 #include "hui.h"
+#include "jsHelper.h"
 #include "jsonParse.h"
 #include "obscure.h"  // for readInGulp
 #include "trackHub.h"
 #include "web.h"
 
 /* Global Variables */
 struct cart *cart = NULL;             /* CGI and other variables */
 
 #define SEARCH_TERM "hgcd_term"
 
 static char *getPhotoForGenome(char *genome, char *db)
 /* If the expected file for this genome's description page photo exists, return the filename. */
 {
 if (db == NULL)
     db = hDefaultDbForGenome(genome);
@@ -164,45 +165,31 @@
 char *db = cartUsualString(cart, "db", hDefaultDb());
 webStartWrapperDetailedNoArgs(cart, trackHubSkipHubName(db),
                               "", "UCSC Genome Browser Databases",
                               TRUE, FALSE, TRUE, TRUE);
 
 // Ideally these would go in the <HEAD>
 puts("<link rel=\"stylesheet\" href=\"//code.jquery.com/ui/1.10.3/themes/smoothness/jquery-ui.css\">");
 puts("<link rel=\"stylesheet\" href=\"//netdna.bootstrapcdn.com/font-awesome/4.0.3/css/font-awesome.css\">");
 
 puts("<div id=\"appContainer\">Loading...</div>");
 
 // Set a global JS variable hgsid.
 // Plain old "var ..." doesn't work (other scripts can't see it), it has to belong to window.
 printf("<script>window.%s='%s';</script>\n", cartSessionVarName(), cartSessionId(cart));
 
-// We need a package manager and require-handling system... bower and browserify?
-puts("<script src=\"../js/es5-shim.4.0.3.min.js\"></script>");
-puts("<script src=\"../js/es5-sham.4.0.3.min.js\"></script>");
-puts("<script src=\"../js/lodash.3.3.1.compat.min.js\"></script>");
-puts("<script src=\"//code.jquery.com/jquery-1.9.1.min.js\"></script>");
-puts("<script src=\"//code.jquery.com/ui/1.10.3/jquery-ui.min.js\"></script>");
-puts("<script src=\"//fb.me/react-with-addons-0.12.2.min.js\"></script>");
-puts("<script src=\"../js/immutable.3.2.1.min.js\"></script>");
-puts("<script src=\"../js/BackboneExtend.js\"></script>");
-puts("<script src=\"../js/cart.js\"></script>");
-puts("<script src=\"../js/ImModel.js\"></script>");
-puts("<script src=\"../js/PathUpdate.js\"></script>");
-puts("<script src=\"../js/PathUpdateOptional.js\"></script>");
-puts("<script src=\"../js/ImmutableUpdate.js\"></script>");
-puts("<script src=\"../js/reactLibBundle.js\"></script>");
+jsIncludeReactLibs();
 puts("<script src=\"../js/reactHgChooseDb.js\"></script>");
 puts("<script src=\"../js/hgChooseDbModel.js\"></script>");
 
 // Invisible form for jumping to hgTracks
 printf("\n<form action=\"%s\" method=%s id='mainForm'>\n",
        hgTracksName(), cartUsualString(cart, "formMethod", "GET"));
 cartSaveSession(cart);
 cgiMakeHiddenVar("db", db);
 puts("</form>");
 webEnd();
 }
 
 void doMiddle(struct cart *theCart)
 /* Depending on invocation, either perform a query and print out results
  * or display the main page. */