Skip to content

Commit

Permalink
feat(ngTableFilterConfig): setConfig now merges with previous config …
Browse files Browse the repository at this point in the history
…values

This allows configuration to be built up incrementally.

Call `ngTableFilterConfig.reset` to set config values back to their default values
  • Loading branch information
ccrowhurstram committed Aug 2, 2015
1 parent 1163e22 commit 155ef62
Show file tree
Hide file tree
Showing 2 changed files with 54 additions and 4 deletions.
27 changes: 23 additions & 4 deletions src/scripts/03-params.js
Original file line number Diff line number Diff line change
Expand Up @@ -26,21 +26,33 @@ app.value('ngTableDefaults', {
ngTableFilterConfigProvider.$inject = [];

function ngTableFilterConfigProvider(){
var config;
var defaultConfig = {
defaultBaseUrl: 'ng-table/filters/',
defaultExt: '.html',
aliasUrls: {}
};
var config = defaultConfig;

this.$get = ngTableFilterConfig;
this.resetConfigs = resetConfigs;
this.setConfig = setConfig;

init();

/////////

function init(){
resetConfigs();
}

function resetConfigs(){
config = defaultConfig;
}

function setConfig(customConfig){
config = angular.extend({}, defaultConfig, customConfig);
config.aliasUrls = angular.extend({}, defaultConfig.aliasUrls, config.aliasUrls);
var mergeConfig = angular.extend({}, config, customConfig);
mergeConfig.aliasUrls = angular.extend({}, config.aliasUrls, customConfig.aliasUrls);
config = mergeConfig;
}

/////////
Expand All @@ -49,13 +61,20 @@ app.value('ngTableDefaults', {

function ngTableFilterConfig(){

var publicConfig = angular.copy(config);
var publicConfig;

var service = {
config: publicConfig,
getTemplateUrl: getTemplateUrl,
getUrlForAlias: getUrlForAlias
};
Object.defineProperty(service, "config", {
get: function(){
return publicConfig = publicConfig || angular.copy(config);
},
enumerable: true
});

return service;

/////////
Expand Down
31 changes: 31 additions & 0 deletions test/filtersSpec.js
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ describe('ngTableFilterConfig', function () {
var fakeModule = angular.module('test.config', function () {});
fakeModule.config( function (_ngTableFilterConfigProvider_) {
ngTableFilterConfigProvider = _ngTableFilterConfigProvider_;
ngTableFilterConfigProvider.resetConfigs();
});
// Initialize test.app injector
module('ngTable', 'test.config');
Expand All @@ -17,6 +18,36 @@ describe('ngTableFilterConfig', function () {
ngTableFilterConfig = _ngTableFilterConfig_;
}));

describe('setConfig', function(){{

it('should set aliasUrls supplied', function(){
ngTableFilterConfigProvider.setConfig({
aliasUrls: {
'text': 'custom/url/custom-text.html'
}
});

expect(ngTableFilterConfig.config.aliasUrls.text).toBe('custom/url/custom-text.html');
});

it('should merge aliasUrls with previous values', function(){
ngTableFilterConfigProvider.setConfig({
aliasUrls: {
'text': 'custom/url/text.html'
}
});

ngTableFilterConfigProvider.setConfig({
aliasUrls: {
'number': 'custom/url/custom-number.html'
}
});

expect(ngTableFilterConfig.config.aliasUrls.text).toBe('custom/url/text.html');
expect(ngTableFilterConfig.config.aliasUrls.number).toBe('custom/url/custom-number.html');
});
}});

describe('getTemplateUrl', function(){

it('explicit url supplied', function(){
Expand Down

0 comments on commit 155ef62

Please sign in to comment.