vimo-dt
Version:
A Vue2.x UI Project For Mobile & HyBrid
187 lines (155 loc) • 6.02 kB
JavaScript
'use strict';
Object.defineProperty(exports, "__esModule", {
value: true
});
var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; };
exports.setupConfig = setupConfig;
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
var isFunction = function isFunction(val) {
return typeof val === 'function';
};
var isDefined = function isDefined(val) {
return typeof val !== 'undefined';
};
var isObject = function isObject(val) {
return (typeof val === 'undefined' ? 'undefined' : _typeof(val)) === 'object';
};
var isArray = Array.isArray;
var URL_CONFIG_PREFIX = 'vm';
var Config = exports.Config = function () {
function Config() {
_classCallCheck(this, Config);
this._cache = {};
this._settings = {};
this.plt = null;
}
_createClass(Config, [{
key: 'init',
value: function init(config, plt) {
this._settings = config && isObject(config) && !isArray(config) ? config : {};
this.plt = plt;
}
}, {
key: 'get',
value: function get(key) {
var fallbackValue = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;
var platform = this.plt;
if (!isDefined(this._cache[key])) {
if (!isDefined(key)) {
throw new Error('config key is not defined');
}
var userPlatformValue = void 0;
var userDefaultValue = this._settings[key];
var platformValue = void 0;
var configObj = null;
if (platform) {
var queryStringValue = platform.getQueryParam(URL_CONFIG_PREFIX + key);
if (isDefined(queryStringValue)) {
if (queryStringValue === 'true') {
this._cache[key] = true;
} else if (queryStringValue === 'false') {
this._cache[key] = false;
} else {
this._cache[key] = queryStringValue;
}
return this._cache[key];
}
var activePlatformKeys = platform.platforms();
for (var i = 0, ilen = activePlatformKeys.length; i < ilen; i++) {
if (this._settings.platforms) {
configObj = this._settings.platforms[activePlatformKeys[i]];
if (configObj) {
if (isDefined(configObj[key])) {
userPlatformValue = configObj[key];
}
}
}
configObj = platform.getPlatformConfig(activePlatformKeys[i]);
if (configObj && configObj.settings) {
if (isDefined(configObj.settings[key])) {
platformValue = configObj.settings[key];
}
}
}
}
this._cache[key] = isDefined(userPlatformValue) ? userPlatformValue : isDefined(userDefaultValue) ? userDefaultValue : isDefined(platformValue) ? platformValue : null;
}
var rtnVal = this._cache[key];
if (isFunction(rtnVal)) {
rtnVal = rtnVal(platform);
}
return rtnVal !== null ? rtnVal : fallbackValue;
}
}, {
key: 'getBoolean',
value: function getBoolean(key) {
var fallbackValue = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
var val = this.get(key);
if (val === null) {
return fallbackValue;
}
if (typeof val === 'string') {
return val === 'true';
}
return !!val;
}
}, {
key: 'getNumber',
value: function getNumber(key) {
var fallbackValue = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : NaN;
var val = parseFloat(this.get(key));
return isNaN(val) ? fallbackValue : val;
}
}, {
key: 'set',
value: function set() {
var arg0 = arguments.length <= 0 ? undefined : arguments[0];
var arg1 = arguments.length <= 1 ? undefined : arguments[1];
switch (arguments.length) {
case 2:
this._settings[arg0] = arg1;
delete this._cache[arg0];
break;
case 3:
this._settings.platforms = this._settings.platforms || {};
this._settings.platforms[arg0] = this._settings.platforms[arg0] || {};
this._settings.platforms[arg0][arg1] = arguments.length <= 2 ? undefined : arguments[2];
delete this._cache[arg1];
break;
}
return this;
}
}, {
key: 'settings',
value: function settings(arg0, arg1) {
switch (arguments.length) {
case 0:
return this._settings;
case 1:
this._settings = arg0;
this._cache = {};
break;
case 2:
this._settings.platforms = this._settings.platforms || {};
this._settings.platforms[arg0] = arg1;
this._cache = {};
break;
}
return this;
}
}, {
key: 'cache',
value: function cache() {
return this._cache;
}
}]);
return Config;
}();
function setupConfig() {
var config = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
var plt = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
var c = new Config();
c.init(config, plt);
return c;
}