2014-02-18 2 views
1

У меня есть временная шкала с использованием Timeline.js, но в настоящее время история красная от файла .json, который для меня не является идеальной ситуацией.Как изменить источник timeline.js вместо файла JSON получить строку JSON?

У меня есть сервлет, который обрабатывает информацию и объединяет JSONObject, который я передаю на страницу с Timeline.js.

Timeline.jsp:

<%@ page language="java" contentType="text/html; charset=ISO-8859-1" 
    pageEncoding="ISO-8859-1"%> 
<!DOCTYPE html> 
<html lang="en"> 
<head> 
<meta charset="utf-8"> 
<title>jQuery Load Example Timeline</title> 
<meta name="description" content="TimelineJS example"> 
<script type="text/javascript" 
    src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script> 
</head> 
<body> 

    <div id="timeline-embed"></div> 
    <script type="text/javascript"> 
     var timeline_config = { 
      width:    '100%', 
      height:    '600', 
      source:    '${timeline}', 
      embed_id:   'timeline-embed',    //OPTIONAL USE A DIFFERENT DIV ID FOR EMBED 
      start_at_end:  false,       //OPTIONAL START AT LATEST DATE 
      start_at_slide:  '4',       //OPTIONAL START AT SPECIFIC SLIDE 
      start_zoom_adjust: '3',       //OPTIONAL TWEAK THE DEFAULT ZOOM LEVEL 
      hash_bookmark:  true,       //OPTIONAL LOCATION BAR HASHES 
      font:    'Bevan-PotanoSans',    //OPTIONAL FONT 
      debug:    true,       //OPTIONAL DEBUG TO CONSOLE 
      lang:    'pt',       //OPTIONAL LANGUAGE 
      maptype:   'watercolor',     //OPTIONAL MAP STYLE 
      css:    'css/timeline.css',  //OPTIONAL PATH TO CSS 
      js:     'js/timeline-min.js' //OPTIONAL PATH TO JS 
     } 
    </script> 
    <script type="text/javascript" 
     src="http://cdn.knightlab.com/libs/timeline/latest/js/storyjs-embed.js"></script> 

</body> 
</html> 

нормальная вещь, чтобы иметь под источником будет JSON-файл. Но мне нужно поставить JSONObject, который я отправляю из сервлета.

метод doGet из TimelineServlet.java:

@Override 
    protected void doGet(HttpServletRequest request, 
      HttpServletResponse response) throws ServletException, IOException { 

     List<LifeEvent> lifeEvents = new ArrayList<LifeEvent>(); 

     lifeEvents.add(eventProducer.generateRandomLifeEvent(true)); 

     JSONObject timeline = JSONString(lifeEvents); 

     request.setAttribute("picPath", 
       PropertyLoader.getStringValue("PICTURE_DIRECTORY_REL")+"/"); 
     request.setAttribute("timeline", timeline); 

     getServletConfig().getServletContext() 
     .getRequestDispatcher("/Timeline.jsp") 
     .forward(request, response); 
    } 

Я знаю, что сроки возврата хорошо отформатированный сюжетную линию соответственно к файлам, которые они предоставляют.

Вот сгенерированный JSONObject из кода:

{ 
    "Timeline":{ 
     "headline":"Your life events", 
     "startDate": "Tue Feb 18 10:39:10  GMT 2014", 
     "text":"Life events with different media types", 
     "date":[ 
     { 
      "headline":"Another nice day", 
      "startDate": "Tue Feb 18 10:39:10   GMT 2014", 
      "text":"Another nice day", 
      "asset":[ 
       { 
        "caption":"Rita HenriquesCarlos Barata", 
        "credit":"Carlos Barata", 
        "media":"porsche.jpg" 
       } 
      ], 
      "endDate": "Tue Feb 18 10:39:10   GMT 2014" 
     } 
     ], 
     "type":"default" 
    } 
} 

ответ

1

Я получил это уже.

Что мне нужно сделать, это:

<script type="text/javascript"> 
    var dataObject = ${timeline}; 
     var timeline_config = { 
      width:    '100%', 
      height:    '600', 
      source:    dataObject, 
      embed_id:   'timeline-embed',    //OPTIONAL USE A DIFFERENT DIV ID FOR EMBED 
      start_at_end:  false,       //OPTIONAL START AT LATEST DATE 
      start_at_slide:  '0',       //OPTIONAL START AT SPECIFIC SLIDE 
      start_zoom_adjust: '3',       //OPTIONAL TWEAK THE DEFAULT ZOOM LEVEL 
      hash_bookmark:  true,       //OPTIONAL LOCATION BAR HASHES 
      font:    'Bevan-PotanoSans',    //OPTIONAL FONT 
      debug:    true,       //OPTIONAL DEBUG TO CONSOLE 
      lang:    'pt',       //OPTIONAL LANGUAGE 
      maptype:   'watercolor',     //OPTIONAL MAP STYLE 
      css:    'css/timeline.css',  //OPTIONAL PATH TO CSS 
      js:     'js/timeline-min.js' //OPTIONAL PATH TO JS 
     } 
    </script>