Utils/loadEventComments.js

/**
 * Scan all events on map and extract their comments. This can only be used when
 * the map data is available upon map load. It starts by looping through all events
 * in the current map and through each event page storing all comments.
 *
 * @function loadEventComments
 * @since 1.0.0
 * @memberof module:Utils
 *
 * @return {object} An object of all comments added together, sorted by eventId
 *
 * @example
 * const mapEventComments = loadEventComments()
 * // =>  *  // { 28: [param1, param2, param3] }
 *           // { 29: [param1, param2, param3] }
 *
 *
 */
export default function loadEventComments () {
  const allEvents = window.$dataMap.events
  const meta = {}

  allEvents.filter(event => event)
    .forEach(event => {
      const pages = event.pages
      const eventId = event.id
      const pageComments = []
      pages.forEach((page, index) => {
        const pageId = pages.indexOf(pages[index])
        if (pageId >= -1) {
          let comments = ''
          page.list.forEach(command => {
            if (command.code === 108 || command.code === 408) {
              comments += command.parameters[0]
            }
          })
          if (comments) { pageComments.push(comments) }
        }
      })
      if (pageComments.length > 0) { meta[eventId] = pageComments }
    })
  return meta
}