Example #1
0
  instantiateModel(jsonData) {
    let instantiateModel = new this.endpoint.model(jsonData);

    if (instantiateModel && isFunction(instantiateModel.afterLoad)) {
      instantiateModel.afterLoad();
    }

    return instantiateModel;
  }
Example #2
0
  _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;
  }
Example #3
0
    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;
    });