codevise/pageflow

View on GitHub
entry_types/paged/packages/pageflow-paged/src/frontend/SeedEntryData.js

Summary

Maintainability
C
1 day
Test Coverage
import _ from 'underscore';
import {EntryData} from './EntryData';

export const SeedEntryData = EntryData.extend({
  initialize: function(options) {
    this.theme = options.theme;

    this.files = _(_.keys(options.files || {})).reduce(function(memo, collectionName) {
      memo[collectionName] = _(options.files[collectionName]).reduce(function(result, file) {
        result[file.perma_id] = file;
        return result;
      }, {});

      return memo;
    }, {});

    this.storylineConfigurations = _(options.storylines).reduce(function(memo, storyline) {
      memo[storyline.id] = storyline.configuration;
      return memo;
    }, {});

    this.storylineIdsByChapterIds = _(options.chapters).reduce(function(memo, chapter) {
      memo[chapter.id] = chapter.storyline_id;
      return memo;
    }, {});

    this.chapterConfigurations = _.reduce(options.chapters, function(memo, chapter) {
      memo[chapter.id] = chapter.configuration;
      return memo;
    }, {});

    this.chapterPositions = _.reduce(options.chapters, function(memo, chapter, index) {
      memo[chapter.id] = index;
      return memo;
    }, {});

    this.chapterPagePermaIds = _(options.pages).reduce(function(memo, page) {
      memo[page.chapter_id] = memo[page.chapter_id] || [];
      memo[page.chapter_id].push(page.perma_id);
      return memo;
    }, {});

    this.chapterIdsByPagePermaIds = _(options.pages).reduce(function(memo, page) {
      memo[page.perma_id] = page.chapter_id;
      return memo;
    }, {});

    this.pageConfigurations = _.reduce(options.pages, function(memo, page) {
      memo[page.perma_id] = page.configuration;
      return memo;
    }, {});

    this.pagePositions = _.reduce(options.pages, function(memo, page, index) {
      memo[page.perma_id] = index;
      return memo;
    }, {});
  },

  getSiteOption: function(name) {
    return this.theme[name];
  },

  getFile: function(collectionName, permaId) {
    return this.files[collectionName][permaId];
  },

  getChapterConfiguration: function(id) {
    return this.chapterConfigurations[id] || {};
  },

  getChapterPosition: function(id) {
    return this.chapterPositions[id];
  },

  getChapterPagePermaIds: function(id) {
    return this.chapterPagePermaIds[id];
  },

  getPageConfiguration: function(permaId) {
    return this.pageConfigurations[permaId] || {};
  },

  getPagePosition: function(permaId) {
    return this.pagePositions[permaId];
  },

  getChapterIdByPagePermaId: function(permaId) {
    return this.chapterIdsByPagePermaIds[permaId];
  },

  getStorylineConfiguration: function(id) {
    return this.storylineConfigurations[id] || {};
  },

  getStorylineIdByChapterId: function(id) {
    return this.storylineIdsByChapterIds[id];
  }
});