Skip to content

Commit

Permalink
adding nexted tracks using dotObject library
Browse files Browse the repository at this point in the history
  • Loading branch information
nathandunn committed Jan 5, 2018
1 parent 61434e5 commit 70ac825
Show file tree
Hide file tree
Showing 2 changed files with 57 additions and 12 deletions.
40 changes: 28 additions & 12 deletions src/JBrowse/QueryParamConfigMapper.js
Original file line number Diff line number Diff line change
Expand Up @@ -39,22 +39,30 @@ define(['dojo/_base/declare', 'JBrowse/Util/dot-object'], function (declare, dot

},

mapParam: function (inputJson, queryParam) {
var inputQA = queryParam.split("=");
var query = inputQA[0];
var value = inputQA[1];
dotObject.str(query, value, inputJson)
},

generateJsonFromKey: function (inputJson, keyString) {
var allParams = keyString.split("\&");
var mapParamB = this.mapParam ;
allParams.forEach(function (queryParam) {
var inputQA = queryParam.split("=");
var query = inputQA[0];
var value = inputQA[1];
dotObject.str(query, value, inputJson)
mapParamB(inputJson, queryParam);
});
},

handleQueryParams: function (config, queryParams) {
var values, storeValue, valuesLabel;
var storeTracks = {};
var storeBookmarks = {};
var mapParamB = this.mapParam;
Object.keys(queryParams).forEach(function (queryParam) {
if (queryParam.indexOf('addStore\.') == 0) {
// mapParamB(config,queryParam)

values = queryParam.split("\.");
storeValue = values[1];
valuesLabel = values[2];
Expand All @@ -67,14 +75,14 @@ define(['dojo/_base/declare', 'JBrowse/Util/dot-object'], function (declare, dot
config.stores[storeValue][valuesLabel] = queryParams[queryParam];
}
else if (queryParam.indexOf('addTracks\.') == 0) {
values = queryParam.split("\.");
storeValue = values[1];
valuesLabel = values[2];

if (!storeTracks[storeValue]) {
storeTracks[storeValue] = {};
}
storeTracks[storeValue][valuesLabel] = queryParams[queryParam];
var queryNameArray = queryParam.split("\.");
var storeName = queryNameArray[1];
var storeTrack = storeTracks[storeName] ? storeTracks[storeName] : {};
var propertyName = queryNameArray.slice(2).join('.');
dotObject.str('store',storeName,storeTrack);
dotObject.str(propertyName,queryParams[queryParam],storeTrack);
dotObject.str(storeName,storeTrack,storeTracks)
}
else if (queryParam.indexOf('addBookmarks\.') == 0) {
values = queryParam.split("\.");
Expand All @@ -91,14 +99,22 @@ define(['dojo/_base/declare', 'JBrowse/Util/dot-object'], function (declare, dot
// http://gmod.org/wiki/JBrowse_Configuration_Guide#addFeatures
});


// move tracks if it exists:

// dotObject.move('addStore','stores',config);
// dotObject.move('addBookmarks','bookmarks.features',config);

// convert to an array
if (storeTracks) {
console.log(JSON.stringify(storeTracks));
// add one for each
for (var track in storeTracks) {
if (!config.tracks) {
config.tracks = [];
}
var storeTrack = storeTracks[track];
storeTrack.store = track;
// storeTrack.store = track;
config.tracks.push(storeTrack);
}
}
Expand Down
29 changes: 29 additions & 0 deletions tests/js_tests/spec/QueryParamConfigMapper.spec.js
Original file line number Diff line number Diff line change
Expand Up @@ -111,5 +111,34 @@ require(['JBrowse/QueryParamConfigMapper', 'dojo/io-query', 'dojo/json'], functi
})
});

// it("decode real addTracks JSON into URL", function () {
// var mapper = QueryParamConfigMapper();
// expect(mapper).toBeTruthy();
// // var queryString = 'addTracks=[{"label":"BLAST++Results","category":"0.+Reference+Assembly","type":"WebApollo/View/Track/DraggableBLASTFeatures","store":"url","style":{"renderClassName":"gray-center-30pct","subfeatureClasses":{"match_part":"blast-match_part"}}}]"
// var queryObject = [{"label":"BLAST++Results","category":"0.+Reference+Assembly","type":"WebApollo/View/Track/DraggableBLASTFeatures","store":"url","style":{"renderClassName":"gray-center-30pct","subfeatureClasses":{"match_part":"blast-match_part"}}}];
// var config = {};
// runs(function () {
// var url = mapper.generateUrl(queryObject);
// var answer = '';
// expect(url).toEqual(answer);
// })
// });
//
//
// it("properly encode addTracks URL into JSON", function () {
// var mapper = QueryParamConfigMapper();
// expect(mapper).toBeTruthy();
// var queryString = 'addTracks=[{"label":"BLAST++Results","category":"0.+Reference+Assembly","type":"WebApollo/View/Track/DraggableBLASTFeatures","store":"url","style":{"renderClassName":"gray-center-30pct","subfeatureClasses":{"match_part":"blast-match_part"}}}]"
// // var queryObject = [{"label":"BLAST++Results","category":"0.+Reference+Assembly","type":"WebApollo/View/Track/DraggableBLASTFeatures","store":"url","style":{"renderClassName":"gray-center-30pct","subfeatureClasses":{"match_part":"blast-match_part"}}}];
// var config = {};
// var queryParams = ioQuery.queryToObject(queryString);
// var answer = {};
// runs(function () {
// var url = mapper.handleQueryParams(config,queryParams);
// var answer = '';
// expect(url).toEqual(answer);
// })
// });

});
});

0 comments on commit 70ac825

Please sign in to comment.