Sha256: da5f138996b246040fc22410db48f9dcfd38b3964da7957505cf80ef23cff868

Contents?: true

Size: 1.25 KB

Versions: 51

Compression:

Stored size: 1.25 KB

Contents

pageflow.PageTypes = pageflow.Object.extend({
  initialize: function() {
    this.clientSideConfigs = {};
  },

  register: function(name, config) {
    if (this._setup) {
      throw 'Page types already set up. Register page types before initializers run.';
    }

    this.clientSideConfigs[name] = config;
  },

  setup: function(serverSideConfigs) {
    var clientSideConfigs = this.clientSideConfigs;
    this._setup = true;

    this.pageTypes = _.map(serverSideConfigs, function(serverSideConfig) {
      var clientSideConfig = clientSideConfigs[serverSideConfig.name] || {};
      return new pageflow.PageType(serverSideConfig.name, clientSideConfig, serverSideConfig);
    });
  },

  findByName: function(name) {
     var result = this.find(function(pageType) {
      return pageType.name === name;
    });

    if (!result) {
      throw('Could not find page type with name "' + name +'"');
    }

    return result;
  }
});

_.each(['each', 'map', 'reduce', 'first', 'find', 'pluck'], function(method) {
  pageflow.PageTypes.prototype[method] = function() {
    if (!this._setup) {
      throw  'Page types are not yet set up.';
    }

    var args = Array.prototype.slice.call(arguments);
    args.unshift(this.pageTypes);
    return _[method].apply(_, args);
  };
});

Version data entries

51 entries across 51 versions & 1 rubygems

Version Path
pageflow-14.1.1 app/assets/javascripts/pageflow/editor/api/page_types.js
pageflow-14.1.0 app/assets/javascripts/pageflow/editor/api/page_types.js
pageflow-14.0.0 app/assets/javascripts/pageflow/editor/api/page_types.js
pageflow-14.0.0.rc2 app/assets/javascripts/pageflow/editor/api/page_types.js
pageflow-14.0.0.rc1 app/assets/javascripts/pageflow/editor/api/page_types.js
pageflow-14.0.0.beta3 app/assets/javascripts/pageflow/editor/api/page_types.js
pageflow-14.0.0.beta2 app/assets/javascripts/pageflow/editor/api/page_types.js
pageflow-14.0.0.beta1 app/assets/javascripts/pageflow/editor/api/page_types.js
pageflow-13.6.0 app/assets/javascripts/pageflow/editor/api/page_types.js
pageflow-13.5.0 app/assets/javascripts/pageflow/editor/api/page_types.js
pageflow-13.4.0 app/assets/javascripts/pageflow/editor/api/page_types.js
pageflow-13.3.0 app/assets/javascripts/pageflow/editor/api/page_types.js
pageflow-13.2.0 app/assets/javascripts/pageflow/editor/api/page_types.js
pageflow-12.6.0 app/assets/javascripts/pageflow/editor/api/page_types.js
pageflow-13.1.0 app/assets/javascripts/pageflow/editor/api/page_types.js
pageflow-12.5.0 app/assets/javascripts/pageflow/editor/api/page_types.js
pageflow-12.4.1 app/assets/javascripts/pageflow/editor/api/page_types.js
pageflow-13.0.0 app/assets/javascripts/pageflow/editor/api/page_types.js
pageflow-13.0.0.rc1 app/assets/javascripts/pageflow/editor/api/page_types.js
pageflow-12.4.0 app/assets/javascripts/pageflow/editor/api/page_types.js