       quests[quest.game_id] = quest for quest in json
       {
         quests: quests
+        quests_status: []
         quest_filter: 0
         quest_id: 0
         quests_filtered: []

                  <option key={0}>空</option>
                  {
                    for quest in @state.quests_filtered
                      <option key={quest.game_id} value={quest.game_id}>{quest.wiki_id} - {quest.name}</option>
                  }
                </Input>
              </Panel>

      quest_id = qid
      @handleFilterChange quest_filter
      @handleQuestChange quest_id
    updatePrereqStatus: (qid, status) ->
      quest = @state.quests[qid]
      for pid in quest.prerequisite
        prereq = @state.quests[pid]
        if typeFreqs[quest.type] >= typeFreqs[prereq.type] and not status[prereq.game_id]?
          status[prereq.game_id] = 1
          @updatePrereqStatus prereq.game_id, status
    handleResponse: (e) ->
      {method, path, body, postBody} = e.detail
      switch path
        when '/kcsapi/api_get_member/questlist'
          quests_status = {@state}
          for quest in body.api_list
            continue if quest is -1
            quests_status[quest.api_no] = 1 if quest.api_state == 3
            updatePrereqStatus quest.api_no, quests_status
          @setState
            quests_status: quests_status
    componentDidMount: ->
      window.addEventListener "task.change", @handleTaskChange
      window.addEventListener "game.response", @handleResponse
    render: ->
      <div>
        <link rel='stylesheet' href={join(__dirname, "assets", "quest.css")} />
