instantiateModel(jsonData) { let instantiateModel = new this.endpoint.model(jsonData); if (instantiateModel && isFunction(instantiateModel.afterLoad)) { instantiateModel.afterLoad(); } return instantiateModel; }
_normalizeOptions() { // modify scrollYOffset to always be a function if (!isFunction(this._options.scrollYOffset)) { if (isFinite(this._options.scrollYOffset)) { // if number specified create function that returns this value let numberOffset = parseFloat(this._options.scrollYOffset); this.options.scrollYOffset = () => numberOffset; } else { // if selector or node function that returns bottom offset of this node let el = this._options.scrollYOffset; if (!(el instanceof Node)) { el = this.dom.query(el); } if (!el) { this._options.scrollYOffset = () => 0; } else { this._options.scrollYOffset = () => el.offsetTop + el.offsetHeight; } } } if (isString(this._options.disableLazySchemas)) this._options.disableLazySchemas = true; if (isString(this._options.suppressWarnings)) this._options.suppressWarnings = true; }
this.endpoint.actions.some(action => { if (action.name.toLowerCase() === actionName.toLowerCase()) { const isSaveRequest = (action.method === 'PUT' || action.method === 'POST'); // if is not save request - we don't have body data, only get params. if(!isSaveRequest) { params = data; } const compiledUrl = Helper.setUrlParams(data, Object.assign({}, action.params, params), this.endpoint.route); // copy entity to prevent side-effects and execute beforeSave method for save requests const copiedRequestData = Helper.copyInstances(data); if (isSaveRequest && copiedRequestData && isFunction(copiedRequestData.beforeSave)) { copiedRequestData.beforeSave(); } const requestOptions = new RequestOptions({ method: action.method, url: compiledUrl, body: JSON.stringify(copiedRequestData) }); request = this.http.request(compiledUrl, requestOptions) .map((response: Response) => { let mappedResponse; if (action.instantiateModel === false || !response.text()) { mappedResponse = response.text(); } else { let responseBody = response.json(), responseIsArray = Array.isArray(responseBody); if (action.isArray && !responseIsArray) { throw new Error('API: Response not array but should'); } else if (!action.isArray && responseIsArray) { throw new Error('API: Response not array but should'); } mappedResponse = responseIsArray ? responseBody.map(element => this.instantiateModel(element)) : this.instantiateModel(responseBody) ; } return Array.isArray(action.headersForReading) ? [mappedResponse, Helper.readHeaders(action.headersForReading, response.headers)] : mappedResponse; }) .catch((error: any) => { let errMsg = (error.message) ? error.message : error.status ? `${error.status} - ${error.statusText}` : 'Server error'; console.error(errMsg); return Observable.throw(error); }); return true; } return false; });