groundtruth/PoziMobile

View on GitHub
js/configLoader.js

Summary

Maintainability
A
0 mins
Test Coverage
define(["underscore", "jsonpath", "js/appId"], function(_, jsonPath, appId) {

    var defaults = {
        "defaultTestKey": "defaultTestValue",
        "defaultZoomLevel": 18,
        "maxZoom": 19
    };

    var result = {

        load: function(callback) {
            var configURL = appId.doNew(window.location.href).configURL();
            require(["text!"+configURL], function(configJSON) {
                var config = _.defaults(JSON.parse(configJSON), defaults);
                var extraScripts = _.union(
                    _(jsonPath(config, '$..prePopulators')).chain().toArray().flatten().value(),
                    _(jsonPath(config, '$..onSaves')).chain().toArray().flatten().value(),
                    _(jsonPath(config, '$..styleRules')).chain().toArray().flatten().value(),
                    _(jsonPath(config, '$..infoHTML')).chain().toArray().flatten().map(function(url) { return 'text!'+url; }).value()
                );
                require(extraScripts, function() {
                    callback(config);
                });
            });
        }

    };

    return result;

});