com.phloxui
Version:
PhloxUI Ng2+ Framework
150 lines (149 loc) • 18.1 kB
JavaScript
/**
* @fileoverview added by tsickle
* @suppress {checkTypes} checked by tsc
*/
import * as tslib_1 from "tslib";
import { Headers, RequestOptions, RequestMethod } from '@angular/http';
import { AbstractServerResource } from '../AbstractServerResource';
var JSONResource = /** @class */ (function (_super) {
tslib_1.__extends(JSONResource, _super);
function JSONResource(connectionMgr) {
var _this = _super.call(this, connectionMgr) || this;
_this.basePath = 'http://' + window.location.hostname + ':8081/hello/json';
_this.schemaCached = {};
_this.defaultHeaders = new Headers(); // default more if exist
return _this;
}
/**
* @param {?} className
* @return {?}
*/
JSONResource.prototype.getSchema = /**
* @param {?} className
* @return {?}
*/
function (className) {
var _this = this;
if (className === null || typeof className !== 'string' || className === '') {
return Promise.resolve(null);
}
if (this.schemaCached[className] !== null && typeof this.schemaCached[className] !== 'undefined') {
return Promise.resolve(this.schemaCached[className]);
}
return new Promise(function (resolve, reject) {
// cache only default load
var /** @type {?} */ path = _this.basePath + "/" + className + "/schema";
var /** @type {?} */ headers = new Headers(_this.defaultHeaders.toJSON());
var /** @type {?} */ requestOptions = new RequestOptions({
method: RequestMethod.Get,
headers: headers
});
var /** @type {?} */ prom = _this.connectionMgr.getWithHttpInfo(path, requestOptions);
prom.then(function (response) {
var /** @type {?} */ jsonSchemaResult = null;
if (response !== null && typeof response !== 'undefined') {
jsonSchemaResult = response.json();
if (jsonSchemaResult !== null && typeof jsonSchemaResult !== 'undefined') {
// cache result
// cache result
_this.schemaCached[className] = jsonSchemaResult;
}
}
resolve(jsonSchemaResult);
}, function (errorResult) {
reject(errorResult);
});
}).catch(function (error) {
return Promise.reject(error);
});
};
/**
* @param {?} className
* @param {?} ignoreNull
* @param {?} ignoreEmpty
* @param {?} ignorePropRegex
* @param {?} includePropsFields
* @return {?}
*/
JSONResource.prototype.getSchemaWithConfigs = /**
* @param {?} className
* @param {?} ignoreNull
* @param {?} ignoreEmpty
* @param {?} ignorePropRegex
* @param {?} includePropsFields
* @return {?}
*/
function (className, ignoreNull, ignoreEmpty, ignorePropRegex, includePropsFields) {
var _this = this;
if (className === null || typeof className !== 'string' || className === '') {
return Promise.resolve(null);
}
return new Promise(function (resolve, reject) {
// cache only default load
var /** @type {?} */ path = _this.basePath + "/" + className + "/schema";
var /** @type {?} */ pathParam = "";
if (ignoreNull !== null && typeof ignoreNull !== 'undefined') {
pathParam += "ignoreNull=" + (ignoreNull ? "true" : "false") + "&";
}
if (ignoreEmpty !== null && typeof ignoreEmpty !== 'undefined') {
pathParam += "ignoreEmpty=" + (ignoreEmpty ? "true" : "false") + "&";
}
if (ignorePropRegex !== null && typeof ignorePropRegex !== 'undefined' && ignorePropRegex !== '') {
pathParam += "ignorePropRegex=" + ignorePropRegex + "&";
}
if (includePropsFields !== null && typeof includePropsFields !== 'undefined') {
var /** @type {?} */ nameAppendStmt = "";
try {
for (var includePropsFields_1 = tslib_1.__values(includePropsFields), includePropsFields_1_1 = includePropsFields_1.next(); !includePropsFields_1_1.done; includePropsFields_1_1 = includePropsFields_1.next()) {
var name_1 = includePropsFields_1_1.value;
nameAppendStmt += name_1 + ",";
}
}
catch (e_1_1) { e_1 = { error: e_1_1 }; }
finally {
try {
if (includePropsFields_1_1 && !includePropsFields_1_1.done && (_a = includePropsFields_1.return)) _a.call(includePropsFields_1);
}
finally { if (e_1) throw e_1.error; }
}
if (nameAppendStmt !== '') {
nameAppendStmt = nameAppendStmt.slice(0, nameAppendStmt.length - 1);
pathParam += "includePropsFields=" + nameAppendStmt + "&";
}
}
if (pathParam !== "") {
pathParam = pathParam.slice(0, pathParam.length - 1);
path += "?" + pathParam;
}
var /** @type {?} */ headers = new Headers(_this.defaultHeaders.toJSON());
var /** @type {?} */ requestOptions = new RequestOptions({
method: RequestMethod.Get,
headers: headers
});
var /** @type {?} */ prom = _this.connectionMgr.getWithHttpInfo(path, requestOptions);
prom.then(function (response) {
var /** @type {?} */ jsonSchemaResult = null;
if (response !== null && typeof response !== 'undefined') {
jsonSchemaResult = response.json();
}
resolve(jsonSchemaResult);
}, function (errorResult) {
reject(errorResult);
});
var e_1, _a;
}).catch(function (error) {
return Promise.reject(error);
});
};
return JSONResource;
}(AbstractServerResource));
export { JSONResource };
function JSONResource_tsickle_Closure_declarations() {
/** @type {?} */
JSONResource.prototype.schemaCached;
/** @type {?} */
JSONResource.prototype.basePath;
/** @type {?} */
JSONResource.prototype.defaultHeaders;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiSlNPTlJlc291cmNlLmpzIiwic291cmNlUm9vdCI6Im5nOi8vY29tLnBobG94dWkvIiwic291cmNlcyI6WyJsaWIvc2hhcmUvcmVzb3VyY2UvSlNPTlJlc291cmNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQ0EsT0FBTyxFQUFrQixPQUFPLEVBQUUsY0FBYyxFQUE0RCxhQUFhLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFHakosT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFLbkUsSUFBQTtJQUFrQyx3Q0FBc0I7SUFNdEQsc0JBQVksYUFBaUM7UUFBN0MsWUFDRSxrQkFBTSxhQUFhLENBQUMsU0FJckI7eUJBUm9CLFNBQVMsR0FBRyxNQUFNLENBQUMsUUFBUSxDQUFDLFFBQVEsR0FBRyxrQkFBa0I7UUFNNUUsS0FBSSxDQUFDLFlBQVksR0FBRyxFQUFFLENBQUM7UUFDdkIsS0FBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLE9BQU8sRUFBRSxDQUFDOztLQUNyQzs7Ozs7SUFFTSxnQ0FBUzs7OztjQUFDLFNBQWlCOztRQUNoQyxFQUFFLENBQUMsQ0FBQyxTQUFTLEtBQUssSUFBSSxJQUFJLE9BQU8sU0FBUyxLQUFLLFFBQVEsSUFBSSxTQUFTLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQztZQUM1RSxNQUFNLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztTQUM5QjtRQUVELEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsU0FBUyxDQUFDLEtBQUssSUFBSSxJQUFJLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQyxTQUFTLENBQUMsS0FBSyxXQUFXLENBQUMsQ0FBQyxDQUFDO1lBQ2pHLE1BQU0sQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQztTQUN0RDtRQUVELE1BQU0sQ0FBQyxJQUFJLE9BQU8sQ0FBVyxVQUFDLE9B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Q0FBQyxVQUFDLFFBQWE7Z0JBQ3RCLHFCQUFJLGdCQUFnQixHQUFRLElBQUksQ0FBQztnQkFDakMsRUFBRSxDQUFDLENBQUMsUUFBUSxLQUFLLElBQUksSUFBSSxPQUFPLFFBQVEsS0FBSyxXQUFXLENBQUMsQ0FBQyxDQUFDO29CQUN6RCxnQkFBZ0IsR0FBRyxRQUFRLENBQUMsSUFBSSxFQUFFLENBQUM7aUJBQ3BDO2dCQUVELE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO2FBQzNCLEVBQUUsVUFBQyxXQUFXO2dCQUNiLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQzthQUNyQixDQUFDLENBQUM7O1NBQ0osQ0FBQyxDQUFDLEtBQUssQ0FBQyxVQUFDLEtBQUs7WUFDYixNQUFNLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztTQUM5QixDQUFDLENBQUM7O3VCQXJIUDtFQVNrQyxzQkFBc0IsRUE4R3ZELENBQUE7QUE5R0Qsd0JBOEdDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0LCBJbmplY3RhYmxlLCBPcHRpb25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgSHR0cCwgUmVzcG9uc2UsIEhlYWRlcnMsIFJlcXVlc3RPcHRpb25zLCBSZXF1ZXN0T3B0aW9uc0FyZ3MsIFVSTFNlYXJjaFBhcmFtcywgUmVzcG9uc2VDb250ZW50VHlwZSwgUmVxdWVzdE1ldGhvZCB9IGZyb20gJ0Bhbmd1bGFyL2h0dHAnO1xuaW1wb3J0IHsgQ29ubmVjdGlvbk1hbmFnZXIgfSBmcm9tICcuLi8uLi9zZXJ2aWNlL0Nvbm5lY3Rpb25NYW5hZ2VyLnNlcnZpY2UnO1xuaW1wb3J0IHsgSnNvblNjaGVtYSB9IGZyb20gJy4uL21vZGVsL21vZGVscyc7XG5pbXBvcnQgeyBBYnN0cmFjdFNlcnZlclJlc291cmNlIH0gZnJvbSAnLi4vQWJzdHJhY3RTZXJ2ZXJSZXNvdXJjZSc7XG5pbXBvcnQgeyBJQ29ubmVjdGlvbk1hbmFnZXIgfSBmcm9tICcuLi9JQ29ubmVjdGlvbk1hbmFnZXInO1xuXG5kZWNsYXJlIHZhciB3aW5kb3c6IGFueTtcblxuZXhwb3J0IGNsYXNzIEpTT05SZXNvdXJjZSBleHRlbmRzIEFic3RyYWN0U2VydmVyUmVzb3VyY2Uge1xuXG4gIHByaXZhdGUgc2NoZW1hQ2FjaGVkOiBhbnk7IC8vIE1hcDxTdHJpbmdbY2xhc3NOYW1lXSwgSnNvblNjaGVtYT5cbiAgcHJvdGVjdGVkIGJhc2VQYXRoID0gJ2h0dHA6Ly8nICsgd2luZG93LmxvY2F0aW9uLmhvc3RuYW1lICsgJzo4MDgxL2hlbGxvL2pzb24nO1xuICBwdWJsaWMgZGVmYXVsdEhlYWRlcnM6IEhlYWRlcnM7XG5cbiAgY29uc3RydWN0b3IoY29ubmVjdGlvbk1ncjogSUNvbm5lY3Rpb25NYW5hZ2VyKSB7XG4gICAgc3VwZXIoY29ubmVjdGlvbk1ncik7XG5cbiAgICB0aGlzLnNjaGVtYUNhY2hlZCA9IHt9O1xuICAgIHRoaXMuZGVmYXVsdEhlYWRlcnMgPSBuZXcgSGVhZGVycygpOyAvLyBkZWZhdWx0IG1vcmUgaWYgZXhpc3RcbiAgfVxuXG4gIHB1YmxpYyBnZXRTY2hlbWEoY2xhc3NOYW1lOiBzdHJpbmcpOiBQcm9taXNlPFJlc3BvbnNlPiB7XG4gICAgaWYgKGNsYXNzTmFtZSA9PT0gbnVsbCB8fCB0eXBlb2YgY2xhc3NOYW1lICE9PSAnc3RyaW5nJyB8fCBjbGFzc05hbWUgPT09ICcnKSB7XG4gICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKG51bGwpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLnNjaGVtYUNhY2hlZFtjbGFzc05hbWVdICE9PSBudWxsICYmIHR5cGVvZiB0aGlzLnNjaGVtYUNhY2hlZFtjbGFzc05hbWVdICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSh0aGlzLnNjaGVtYUNhY2hlZFtjbGFzc05hbWVdKTtcbiAgICB9XG5cbiAgICByZXR1cm4gbmV3IFByb21pc2U8UmVzcG9uc2U+KChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgIC8vIGNhY2hlIG9ubHkgZGVmYXVsdCBsb2FkXG4gICAgICBsZXQgcGF0aCA9IHRoaXMuYmFzZVBhdGggKyBcIi9cIiArIGNsYXNzTmFtZSArIFwiL3NjaGVtYVwiO1xuXG4gICAgICBsZXQgaGVhZGVycyA9IG5ldyBIZWFkZXJzKHRoaXMuZGVmYXVsdEhlYWRlcnMudG9KU09OKCkpO1xuICAgICAgbGV0IHJlcXVlc3RPcHRpb25zOiBSZXF1ZXN0T3B0aW9uc0FyZ3MgPSBuZXcgUmVxdWVzdE9wdGlvbnMoe1xuICAgICAgICBtZXRob2Q6IFJlcXVlc3RNZXRob2QuR2V0LFxuICAgICAgICBoZWFkZXJzOiBoZWFkZXJzXG4gICAgICB9KTtcblxuICAgICAgbGV0IHByb20gPSB0aGlzLmNvbm5lY3Rpb25NZ3IuZ2V0V2l0aEh0dHBJbmZvKHBhdGgsIHJlcXVlc3RPcHRpb25zKTtcbiAgICAgIHByb20udGhlbigocmVzcG9uc2U6IGFueSkgPT4ge1xuICAgICAgICBsZXQganNvblNjaGVtYVJlc3VsdDogYW55ID0gbnVsbDtcbiAgICAgICAgaWYgKHJlc3BvbnNlICE9PSBudWxsICYmIHR5cGVvZiByZXNwb25zZSAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgICBqc29uU2NoZW1hUmVzdWx0ID0gcmVzcG9uc2UuanNvbigpO1xuXG4gICAgICAgICAgaWYgKGpzb25TY2hlbWFSZXN1bHQgIT09IG51bGwgJiYgdHlwZW9mIGpzb25TY2hlbWFSZXN1bHQgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAgICAvLyBjYWNoZSByZXN1bHRcbiAgICAgICAgICAgIHRoaXMuc2NoZW1hQ2FjaGVkW2NsYXNzTmFtZV0gPSBqc29uU2NoZW1hUmVzdWx0O1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJlc29sdmUoanNvblNjaGVtYVJlc3VsdCk7XG4gICAgICB9LCAoZXJyb3JSZXN1bHQpID0+IHtcbiAgICAgICAgcmVqZWN0KGVycm9yUmVzdWx0KTtcbiAgICAgIH0pO1xuICAgIH0pLmNhdGNoKChlcnJvcikgPT4ge1xuICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KGVycm9yKTtcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRTY2hlbWFXaXRoQ29uZmlncyhjbGFzc05hbWU6IHN0cmluZywgaWdub3JlTnVsbDogYm9vbGVhbiwgaWdub3JlRW1wdHk6IGJvb2xlYW4sIGlnbm9yZVByb3BSZWdleDogc3RyaW5nLCBpbmNsdWRlUHJvcHNGaWVsZHM6IFN0cmluZ1tdKTogUHJvbWlzZTxSZXNwb25zZT4ge1xuICAgIGlmIChjbGFzc05hbWUgPT09IG51bGwgfHwgdHlwZW9mIGNsYXNzTmFtZSAhPT0gJ3N0cmluZycgfHwgY2xhc3NOYW1lID09PSAnJykge1xuICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShudWxsKTtcbiAgICB9XG5cbiAgICByZXR1cm4gbmV3IFByb21pc2U8UmVzcG9uc2U+KChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgIC8vIGNhY2hlIG9ubHkgZGVmYXVsdCBsb2FkXG4gICAgICBsZXQgcGF0aCA9IHRoaXMuYmFzZVBhdGggKyBcIi9cIiArIGNsYXNzTmFtZSArIFwiL3NjaGVtYVwiO1xuXG4gICAgICBsZXQgcGF0aFBhcmFtID0gXCJcIjtcbiAgICAgIGlmIChpZ25vcmVOdWxsICE9PSBudWxsICYmIHR5cGVvZiBpZ25vcmVOdWxsICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgICBwYXRoUGFyYW0gKz0gXCJpZ25vcmVOdWxsPVwiICsgKGlnbm9yZU51bGwgPyBcInRydWVcIiA6IFwiZmFsc2VcIikgKyBcIiZcIjtcbiAgICAgIH1cbiAgICAgIGlmIChpZ25vcmVFbXB0eSAhPT0gbnVsbCAmJiB0eXBlb2YgaWdub3JlRW1wdHkgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgIHBhdGhQYXJhbSArPSBcImlnbm9yZUVtcHR5PVwiICsgKGlnbm9yZUVtcHR5ID8gXCJ0cnVlXCIgOiBcImZhbHNlXCIpICsgXCImXCI7XG4gICAgICB9XG4gICAgICBpZiAoaWdub3JlUHJvcFJlZ2V4ICE9PSBudWxsICYmIHR5cGVvZiBpZ25vcmVQcm9wUmVnZXggIT09ICd1bmRlZmluZWQnICYmIGlnbm9yZVByb3BSZWdleCAhPT0gJycpIHtcbiAgICAgICAgcGF0aFBhcmFtICs9IFwiaWdub3JlUHJvcFJlZ2V4PVwiICsgaWdub3JlUHJvcFJlZ2V4ICsgXCImXCI7XG4gICAgICB9XG4gICAgICBpZiAoaW5jbHVkZVByb3BzRmllbGRzICE9PSBudWxsICYmIHR5cGVvZiBpbmNsdWRlUHJvcHNGaWVsZHMgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgIGxldCBuYW1lQXBwZW5kU3RtdCA9IFwiXCI7XG4gICAgICAgIGZvciAobGV0IG5hbWUgb2YgaW5jbHVkZVByb3BzRmllbGRzKSB7XG4gICAgICAgICAgbmFtZUFwcGVuZFN0bXQgKz0gbmFtZSArIFwiLFwiO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKG5hbWVBcHBlbmRTdG10ICE9PSAnJykge1xuICAgICAgICAgIG5hbWVBcHBlbmRTdG10ID0gbmFtZUFwcGVuZFN0bXQuc2xpY2UoMCwgbmFtZUFwcGVuZFN0bXQubGVuZ3RoIC0gMSk7XG4gICAgICAgICAgcGF0aFBhcmFtICs9IFwiaW5jbHVkZVByb3BzRmllbGRzPVwiICsgbmFtZUFwcGVuZFN0bXQgKyBcIiZcIjtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAocGF0aFBhcmFtICE9PSBcIlwiKSB7XG4gICAgICAgIHBhdGhQYXJhbSA9IHBhdGhQYXJhbS5zbGljZSgwLCBwYXRoUGFyYW0ubGVuZ3RoIC0gMSk7XG4gICAgICAgIHBhdGggKz0gXCI/XCIgKyBwYXRoUGFyYW07XG4gICAgICB9XG5cbiAgICAgIGxldCBoZWFkZXJzID0gbmV3IEhlYWRlcnModGhpcy5kZWZhdWx0SGVhZGVycy50b0pTT04oKSk7XG4gICAgICBsZXQgcmVxdWVzdE9wdGlvbnM6IFJlcXVlc3RPcHRpb25zQXJncyA9IG5ldyBSZXF1ZXN0T3B0aW9ucyh7XG4gICAgICAgIG1ldGhvZDogUmVxdWVzdE1ldGhvZC5HZXQsXG4gICAgICAgIGhlYWRlcnM6IGhlYWRlcnNcbiAgICAgIH0pO1xuXG4gICAgICBsZXQgcHJvbSA9IHRoaXMuY29ubmVjdGlvbk1nci5nZXRXaXRoSHR0cEluZm8ocGF0aCwgcmVxdWVzdE9wdGlvbnMpO1xuICAgICAgcHJvbS50aGVuKChyZXNwb25zZTogYW55KSA9PiB7XG4gICAgICAgIGxldCBqc29uU2NoZW1hUmVzdWx0OiBhbnkgPSBudWxsO1xuICAgICAgICBpZiAocmVzcG9uc2UgIT09IG51bGwgJiYgdHlwZW9mIHJlc3BvbnNlICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgICAgIGpzb25TY2hlbWFSZXN1bHQgPSByZXNwb25zZS5qc29uKCk7XG4gICAgICAgIH1cblxuICAgICAgICByZXNvbHZlKGpzb25TY2hlbWFSZXN1bHQpO1xuICAgICAgfSwgKGVycm9yUmVzdWx0KSA9PiB7XG4gICAgICAgIHJlamVjdChlcnJvclJlc3VsdCk7XG4gICAgICB9KTtcbiAgICB9KS5jYXRjaCgoZXJyb3IpID0+IHtcbiAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdChlcnJvcik7XG4gICAgfSk7XG4gIH1cbn1cbiJdfQ==