Commit 57d9ef8d by 侯昆

后续修改

1 parent 5443ccb1
Showing 41 changed files with 2993 additions and 146 deletions
......@@ -15,22 +15,24 @@ package com.dookay.cihai.admin.controller;
****************************************/
import com.alibaba.fastjson.JSON;
import com.dookay.cihai.admin.controller.form.AddOneWayForm;
import com.dookay.cihai.admin.controller.form.AddPicForm;
import com.dookay.cihai.admin.controller.form.AddRelationForm;
import com.dookay.cihai.admin.controller.form.AddVideoForm;
import com.dookay.cihai.core.word.domain.RelationOneWayDomain;
import com.dookay.cihai.core.word.domain.WordDomain;
import com.dookay.cihai.core.word.domain.WordRelationDomain;
import com.dookay.cihai.core.word.enums.RelationOneWayType;
import com.dookay.cihai.core.word.query.WordQuery;
import com.dookay.cihai.core.word.service.IRelationOneWayService;
import com.dookay.cihai.core.word.service.IWordRelationService;
import com.dookay.cihai.core.word.service.IWordService;
import com.dookay.coral.common.core.exception.ServiceException;
import com.dookay.coral.common.core.utils.lang.EncodeUtils;
import com.dookay.coral.common.core.utils.lang.StringUtils;
import com.dookay.coral.common.web.config.ResourcesMappingProperties;
import com.dookay.coral.common.web.controller.BaseController;
import com.dookay.coral.common.web.response.JsonResult;
import com.dookay.coral.common.web.utils.upload.model.ImageModel;
import com.hankcs.hanlp.HanLP;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.RequestMapping;
......@@ -64,6 +66,8 @@ public class WordRelateController extends BaseController {
@Autowired
private IWordRelationService wordRelationService;
@Autowired
private IRelationOneWayService relationOneWayService;
@Autowired
private ResourcesMappingProperties resourcesMappingProperties;
/**
......@@ -175,4 +179,56 @@ public class WordRelateController extends BaseController {
wordRelationService.saveBatch(wordRelationList);
return successResult("success");
}
/**
* 单向关联添加 主要
*
* @author houkun
* @date 2018/1/23
*/
@RequestMapping(value = "/oneway/main/add", method = RequestMethod.POST)
public JsonResult onewayMainAdd(@ModelAttribute AddOneWayForm form) {
addOneWayRelation(form, RelationOneWayType.MAIN);
return successResult("success");
}
/**
* 添加单向关联
*
* @author houkun
* @date 2018/1/23
*/
private void addOneWayRelation(AddOneWayForm form, RelationOneWayType type) {
WordQuery q = new WordQuery();
q.setWord(StringUtils.trim(form.getWord()));
WordDomain word = wordService.getFirst(q);
if (word == null) {
throw new ServiceException("主词不存在");
}
q = new WordQuery();
List<String> relatedWords = form.getRelatedWords().stream()
.map(StringUtils::trim).collect(Collectors.toList());
q.setWordIn(relatedWords);
List<WordDomain> relatedWordDomainList = wordService.getList(q);
if (relatedWordDomainList.size() < form.getRelatedWords().size()) {
throw new ServiceException("存在无效词");
}
String group = StringUtils.trim(StringUtils.removeEnd(form.getGroup(), ".txt"));
List<RelationOneWayDomain> list = relatedWordDomainList.stream()
.map(w -> new RelationOneWayDomain(word.getId(), type, group, w.getId()))
.collect(Collectors.toList());
relationOneWayService.saveBatch(list);
}
/**
* 单向关联添加 侧边
*
* @author houkun
* @date 2018/1/23
*/
@RequestMapping(value = "/oneway/side/add", method = RequestMethod.POST)
public JsonResult onewaySideAdd(@ModelAttribute AddOneWayForm form) {
addOneWayRelation(form, RelationOneWayType.SIDE);
return successResult("success");
}
}
package com.dookay.cihai.admin.controller.form;
/*****************************************
* *
* @dookay.com Internet make it happen *
* ----------- ----------------------- *
* dddd ddddd Internet make it happen *
* o o o Internet make it happen *
* k k k Internet make it happen *
* a a a Internet make it happen *
* yyyy yyyyy Internet make it happen *
* ----------- ----------------------- *
* @dookay.com Internet make it happen *
* *
****************************************/
import lombok.Data;
import java.util.List;
/**
* @author houkun
* @date 2018/1/11
*/
@Data
public class AddOneWayForm {
private String word;
private String group;
private List<String> relatedWords;
}
package com.dookay.cihai.app.controller;
/*****************************************
* *
* @dookay.com Internet make it happen *
* ----------- ----------------------- *
* dddd ddddd Internet make it happen *
* o o o Internet make it happen *
* k k k Internet make it happen *
* a a a Internet make it happen *
* yyyy yyyyy Internet make it happen *
* ----------- ----------------------- *
* @dookay.com Internet make it happen *
* *
****************************************/
import com.dookay.coral.common.web.controller.BaseController;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.servlet.ModelAndView;
/**
* 历史上的今天
*
* @author houkun
* @date 2018/1/24
*/
@Controller
@RequestMapping("/history")
public class HistoryHtmlController extends BaseController {
/**
* 全部
*
* @author houkun
* @date 2018/1/24
*/
@RequestMapping(value = "/all", method = RequestMethod.GET)
public ModelAndView all() {
ModelAndView mv = new ModelAndView("/history/all");
return mv;
}
/**
* 事件
*
* @author houkun
* @date 2018/1/24
*/
@RequestMapping(value = "/event", method = RequestMethod.GET)
public ModelAndView event() {
ModelAndView mv = new ModelAndView("/history/event");
return mv;
}
/**
* 人物
*
* @author houkun
* @date 2018/1/24
*/
@RequestMapping(value = "/people", method = RequestMethod.GET)
public ModelAndView people() {
ModelAndView mv = new ModelAndView("/history/people");
return mv;
}
/**
* 纪念
*
* @author houkun
* @date 2018/1/24
*/
@RequestMapping(value = "/memory", method = RequestMethod.GET)
public ModelAndView memory() {
ModelAndView mv = new ModelAndView("/history/memory");
return mv;
}
}
......@@ -25,6 +25,7 @@ import com.dookay.cihai.core.word.dto.RecommendStatementDTO;
import com.dookay.cihai.core.word.dto.WordDTO;
import com.dookay.cihai.core.word.query.WordQuery;
import com.dookay.cihai.core.word.service.ICustomDictionaryService;
import com.dookay.cihai.core.word.service.IRelationOneWayService;
import com.dookay.cihai.core.word.service.IWordRelationService;
import com.dookay.cihai.core.word.service.IWordService;
import com.dookay.coral.common.core.utils.lang.StringUtils;
......@@ -60,6 +61,8 @@ public class HomeController extends BaseController {
@Autowired
private IWordRelationService wordRelationService;
@Autowired
private IRelationOneWayService relationOneWayService;
@Autowired
private ICustomDictionaryService customDictionaryService;
@Autowired
private AipWordUtilBean aipWordUtilBean;
......@@ -83,7 +86,7 @@ public class HomeController extends BaseController {
query.setKeyword(keyword);
WordDomain first = wordService.getFirst(query);
if (first != null) {
return successResult("搜索结果", WordDTO.fromDomain(first, wordRelationService));
return successResult("搜索结果", WordDTO.fromDomain(first, wordRelationService, relationOneWayService));
}
try {
String result = null;
......@@ -93,7 +96,7 @@ public class HomeController extends BaseController {
wordQuery.setKeyword(null);
WordDomain wordDomain = wordService.getFirst(wordQuery);
if (wordDomain == null) return errorResult(String.format("暂无\"%s\"检索结果", keyword));
return successResult("搜索结果", WordDTO.fromDomain(wordDomain, wordRelationService));
return successResult("搜索结果", WordDTO.fromDomain(wordDomain, wordRelationService, relationOneWayService));
} catch (Exception ex) {
return errorResult(String.format("暂无\"%s\"检索结果", keyword));
}
......@@ -128,7 +131,7 @@ public class HomeController extends BaseController {
wordDomain = wordService.getFirst(wordQuery);
if (wordDomain == null) return errorResult("暂无检索结果");
}
return successResult("搜索结果", WordDTO.fromDomain(wordDomain, wordRelationService));
return successResult("搜索结果", WordDTO.fromDomain(wordDomain, wordRelationService, relationOneWayService));
} catch (Exception e) {
return errorResult("暂无检索结果");
}
......
......@@ -18,6 +18,7 @@ import com.dookay.cihai.core.word.dto.WordDTO;
import com.dookay.cihai.app.controller.vo.EditionVO;
import com.dookay.cihai.app.controller.vo.WordPicsVO;
import com.dookay.cihai.core.word.domain.WordDomain;
import com.dookay.cihai.core.word.service.IRelationOneWayService;
import com.dookay.cihai.core.word.service.IWordRelationService;
import com.dookay.cihai.core.word.service.IWordService;
import com.dookay.coral.common.core.utils.lang.StringUtils;
......@@ -33,6 +34,7 @@ import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;
import javax.management.relation.Relation;
import java.util.Comparator;
import java.util.List;
import java.util.stream.Collectors;
......@@ -52,6 +54,8 @@ public class WordController extends BaseController {
private IWordService wordService;
@Autowired
private IWordRelationService wordRelationService;
@Autowired
private IRelationOneWayService relationOneWayService;
/**
* 词信息
......@@ -63,7 +67,7 @@ public class WordController extends BaseController {
@ApiOperation(value = "词信息", httpMethod = "GET", response = WordDTO.class)
public JsonResult info(@PathVariable @ApiParam(value = "词的id", required = true) Long id) {
WordDomain wordDomain = wordService.get(id);
return successResult("词信息", WordDTO.fromDomain(wordDomain, wordRelationService));
return successResult("词信息", WordDTO.fromDomain(wordDomain, wordRelationService, relationOneWayService));
}
/**
......
......@@ -14,12 +14,12 @@ package com.dookay.cihai.app.controller;
* *
****************************************/
import com.dookay.cihai.core.word.dto.WordDTO;
import com.dookay.cihai.app.controller.vo.CharacterBaikeVO;
import com.dookay.cihai.app.controller.vo.CharacterParaphVO;
import com.dookay.cihai.app.controller.vo.StatementBaikeVO;
import com.dookay.cihai.app.controller.vo.StatementParaphVO;
import com.dookay.cihai.app.controller.vo.*;
import com.dookay.cihai.core.word.domain.RelationOneWayDomain;
import com.dookay.cihai.core.word.domain.WordDomain;
import com.dookay.cihai.core.word.query.RelationOneWayQuery;
import com.dookay.cihai.core.word.query.WordQuery;
import com.dookay.cihai.core.word.service.IRelationOneWayService;
import com.dookay.cihai.core.word.service.IWordRelationService;
import com.dookay.cihai.core.word.service.IWordService;
import com.dookay.coral.common.web.controller.BaseController;
......@@ -45,6 +45,8 @@ public class WordHtmlController extends BaseController {
private IWordService wordService;
@Autowired
private IWordRelationService wordRelationService;
@Autowired
private IRelationOneWayService relationOneWayService;
/**
* 字释义
......@@ -112,11 +114,34 @@ public class WordHtmlController extends BaseController {
@RequestMapping(value = "/relate/{id}", method = RequestMethod.GET)
public ModelAndView relate(@PathVariable("id") Long id) {
WordDomain wordDomain = wordService.get(id);
List<WordDomain> relateWords = wordRelationService.getRelateWords(id);
List<WordDTO> vos = relateWords.stream().filter(r -> !r.getId().equals(id)).map(word -> WordDTO.fromDomain(word, wordRelationService)).collect(Collectors.toList());
RelationOneWayQuery q = new RelationOneWayQuery();
q.setWordId(id);
List<RelationOneWayDomain> relateList = relationOneWayService.getList(q);
List<Long> relateIds = relateList.stream().map(RelationOneWayDomain::getRelateWordId).collect(Collectors.toList());
WordQuery wq = new WordQuery();
wq.setIds(relateIds);
List<WordDomain> relatedWords = wordService.getList(wq);
OneWayRelateVO vo = OneWayRelateVO.fromDomain(wordDomain, relateList, relatedWords);
ModelAndView mv = new ModelAndView("/word/relate");
mv.addObject("word", wordDomain);
mv.addObject("vos", vos);
mv.addObject("vo", vo);
return mv;
// WordDomain wordDomain = wordService.get(id);
// List<WordDomain> relateWords = wordRelationService.getRelateWords(id);
// List<WordDTO> vos = relateWords.stream().filter(r -> !r.getId().equals(id)).map(word -> WordDTO.fromDomain(word, wordRelationService)).collect(Collectors.toList());
// ModelAndView mv = new ModelAndView("/word/relate");
// mv.addObject("word", wordDomain);
// mv.addObject("vos", vos);
// return mv;
}
/**
* 鲁迅相关词
*
* @author houkun
* @date 2018/1/24
*/
@RequestMapping(value = "/luxun/relate", method = RequestMethod.GET)
public ModelAndView luxunRelate() {
return new ModelAndView("/word/luxunRelate");
}
}
package com.dookay.cihai.app.controller.vo;
/*****************************************
* *
* @dookay.com Internet make it happen *
* ----------- ----------------------- *
* dddd ddddd Internet make it happen *
* o o o Internet make it happen *
* k k k Internet make it happen *
* a a a Internet make it happen *
* yyyy yyyyy Internet make it happen *
* ----------- ----------------------- *
* @dookay.com Internet make it happen *
* *
****************************************/
import com.dookay.cihai.core.word.domain.RelationOneWayDomain;
import com.dookay.cihai.core.word.domain.WordDomain;
import lombok.Data;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
/**
* 单向相关视图模型
*
* @author houkun
* @date 2018/1/24
*/
@Data
public class OneWayRelateVO {
private String word;
private Map<String, List<WordDomain>> relationByGroup;
public static OneWayRelateVO fromDomain(WordDomain word, List<RelationOneWayDomain> relations, List<WordDomain> relatedWords) {
OneWayRelateVO vo = new OneWayRelateVO();
vo.setWord(word.getWord());
Map<String, List<RelationOneWayDomain>> map = relations.stream().collect(Collectors.groupingBy(RelationOneWayDomain::getGroupName));
HashMap<String, List<WordDomain>> relationByGroup = new HashMap<>(map.size());
for (Map.Entry<String, List<RelationOneWayDomain>> entry : map.entrySet()) {
List<Long> relatedIds = entry.getValue().stream().map(RelationOneWayDomain::getRelateWordId).collect(Collectors.toList());
List<WordDomain> words = relatedWords.stream().filter(w -> relatedIds.contains(w.getId())).collect(Collectors.toList());
relationByGroup.put(entry.getKey(), words);
}
vo.setRelationByGroup(relationByGroup);
return vo;
}
}
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ include file="/WEB-INF/jsp/include/taglib.jsp" %>
<%--添加此行消除额外空格--%>
<%@ page trimDirectiveWhitespaces="true" %>
<%--添加此行消除额外空格--%>
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1,shrink-to-fit=no">
<title>辞海-历史上的今天</title>
<link rel="stylesheet" href="${ctx}/static/css/vendor.css">
</head>
<body class="history">
<div class="container-fluid">
<div class="wrapper-ipad-app-h5">
<h1 class="text-center">一起进入历史上的2月16日</h1>
<nav class="nav justify-content-center">
<a class="nav-link active" href="/history/all">全部</a>
<a class="nav-link" href="/history/event">事件</a>
<a class="nav-link" href="/history/people">人物</a>
<a class="nav-link" href="/history/memory">纪念</a>
</nav>
<ul class="list-unstyled list-history">
<li>
<div class="time">1032</div>
<p>宋英宗赵曙出生。</p>
</li>
<li>
<div class="time">1222</div>
<p><a href="/home/search?keyword=日莲">日莲</a>,日本佛教日莲宗创始人出生。</p>
</li>
<li>
<div class="time">1304</div>
<p>元朝第八位皇帝元文宗图帖睦尔出生。</p>
</li>
<li>
<div class="time">1352</div>
<p><a href="/home/search?keyword=郭子兴">郭子兴</a>起义军攻克濠州。</p>
</li>
<li>
<div class="time">1870</div>
<p><a href="/home/search?keyword=普法战争">普法战争</a>,法国失败。</p>
</li>
<li>
<div class="time">1910</div>
<p><a href="/home/search?keyword=孙中山">孙中山</a><a href="/home/search?keyword=章太炎">章太炎</a>分道扬镳同盟会分裂。</p>
</li>
<li>
<div class="time">1921</div>
<p><a href="/home/search?keyword=华国锋">华国锋</a>同志诞辰。</p>
</li>
<li>
<div class="time">1930</div>
<p>红军有了第一架飞机——“列宁”号。</p>
</li>
<li>
<div class="time">1935</div>
<p>红军取得<a href="/home/search?keyword=长征">长征</a>以来第一次重大胜利。</p>
</li>
<li>
<div class="time">1938</div>
<p>京剧名家<a href="/home/search?keyword=杨小楼">杨小楼</a>病逝。</p>
</li>
<li>
<div class="time">1959</div>
<p>菲德尔·卡斯特罗就任古巴总理。</p>
</li>
<li>
<div class="time">1976</div>
<p>英国<a href="/home/search?keyword=北海油田">北海油田</a>的奥克钻油区正式运作。</p>
</li>
<li class="more">
<a href="/history/event">更多</a>
</li>
</ul>
</div>
</div>
<script src="${ctx}/static/js/plugins/jquery.min.js"></script>
<script src="${ctx}/static/js/vendor.js" merge="true"></script>
<script>
$('.js-collapse').each(function () {
var $this = $(this);
$($this.attr('href')).on('show.bs.collapse', function () {
$($this.siblings().attr('href')).collapse('hide');
});
});
</script>
</body>
</html>
\ No newline at end of file
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ include file="/WEB-INF/jsp/include/taglib.jsp" %>
<%--添加此行消除额外空格--%>
<%@ page trimDirectiveWhitespaces="true" %>
<%--添加此行消除额外空格--%>
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1,shrink-to-fit=no">
<title>辞海-历史上的今天</title>
<link rel="stylesheet" href="${ctx}/static/css/vendor.css">
</head>
<body class="history">
<div class="container-fluid">
<div class="wrapper-ipad-app-h5">
<h1 class="text-center">一起进入历史上的2月16日</h1>
<nav class="nav justify-content-center">
<a class="nav-link" href="/history/all">全部</a>
<a class="nav-link active" href="/history/event">事件</a>
<a class="nav-link" href="/history/people">人物</a>
<a class="nav-link" href="/history/memory">纪念</a>
</nav>
<ul class="list-unstyled list-history">
<li>
<div class="time">1352</div>
<p><a href="/home/search?keyword=郭子兴">郭子兴</a>起义军攻克濠州。</p>
</li>
<li>
<div class="time">1870</div>
<p><a href="/home/search?keyword=普法战争">普法战争</a>,法国失败。</p>
</li>
<li>
<div class="time">1910</div>
<p><a href="/home/search?keyword=孙中山">孙中山</a><a href="/home/search?keyword=章太炎">章太炎</a>分道扬镳同盟会分裂。</p>
</li>
<li>
<div class="time">1930</div>
<p>红军有了第一架飞机——“列宁”号。</p>
</li>
<li>
<div class="time">1935</div>
<p>红军取得<a href="/home/search?keyword=长征">长征</a>以来第一次重大胜利。</p>
</li>
<li>
<div class="time">1959</div>
<p>菲德尔·卡斯特罗就任古巴总理。</p>
</li>
<li>
<div class="time">1976</div>
<p>英国<a href="/home/search?keyword=北海油田">北海油田</a>的奥克钻油区正式运作。</p>
</li>
<li>
<div class="time">1985</div>
<p><a href="/home/search?keyword=以色列">以色列</a>军队开始从<a href="/home/search?keyword=黎巴嫩">黎巴嫩</a>撤退。</p>
</li>
<li>
<div class="time">2005</div>
<p>限制全球温室气体排放量的“<a href="/home/search?keyword=京都议定书">京都议定书</a>” 获得120多个国家确认正式生效。</p>
</li>
<li></li>
<li class="end">
<p>留存当下,回忆过去。</p>
</li>
</ul>
</div>
</div>
<script src="${ctx}/static/js/plugins/jquery.min.js"></script>
<script src="${ctx}/static/js/vendor.js" merge="true"></script>
<script>
$('.js-collapse').each(function () {
var $this = $(this);
$($this.attr('href')).on('show.bs.collapse', function () {
$($this.siblings().attr('href')).collapse('hide');
});
});
</script>
</body>
</html>
\ No newline at end of file
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ include file="/WEB-INF/jsp/include/taglib.jsp" %>
<%--添加此行消除额外空格--%>
<%@ page trimDirectiveWhitespaces="true" %>
<%--添加此行消除额外空格--%>
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1,shrink-to-fit=no">
<title>辞海-历史上的今天</title>
<link rel="stylesheet" href="${ctx}/static/css/vendor.css">
</head>
<body class="history">
<div class="container-fluid">
<div class="wrapper-ipad-app-h5">
<h1 class="text-center">一起进入历史上的2月16日</h1>
<nav class="nav justify-content-center">
<a class="nav-link" href="/history/all">全部</a>
<a class="nav-link" href="/history/event">事件</a>
<a class="nav-link" href="/history/people">人物</a>
<a class="nav-link active" href="/history/memory">纪念</a>
</nav>
<div class="list-history-default"></div>
</div>
</div>
<script src="${ctx}/static/js/plugins/jquery.min.js"></script>
<script src="${ctx}/static/js/vendor.js" merge="true"></script>
<script>
$('.js-collapse').each(function () {
var $this = $(this);
$($this.attr('href')).on('show.bs.collapse', function () {
$($this.siblings().attr('href')).collapse('hide');
});
});
</script>
</body>
</html>
\ No newline at end of file
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ include file="/WEB-INF/jsp/include/taglib.jsp" %>
<%--添加此行消除额外空格--%>
<%@ page trimDirectiveWhitespaces="true" %>
<%--添加此行消除额外空格--%>
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1,shrink-to-fit=no">
<title>辞海-历史上的今天</title>
<link rel="stylesheet" href="${ctx}/static/css/vendor.css">
</head>
<body class="history">
<div class="container-fluid">
<div class="wrapper-ipad-app-h5">
<h1 class="text-center">一起进入历史上的2月16日</h1>
<nav class="nav justify-content-center">
<a class="nav-link" href="/history/all">全部</a>
<a class="nav-link" href="/history/event">事件</a>
<a class="nav-link active" href="/history/people">人物</a>
<a class="nav-link" href="/history/memory">纪念</a>
</nav>
<ul class="list-unstyled list-history">
<li>
<div class="time">1032</div>
<p>宋英宗赵曙出生。</p>
</li>
<li>
<div class="time">1222</div>
<p><a href="/home/search?keyword=日莲">日莲</a>,日本佛教日莲宗创始人出生。</p>
</li>
<li>
<div class="time">1304</div>
<p>元朝第八位皇帝元文宗图帖睦尔出生。</p>
</li>
<li>
<div class="time">1921</div>
<p><a href="/home/search?keyword=华国锋">华国锋</a>同志诞辰。</p>
</li>
<li>
<div class="time">1938</div>
<p>京剧名家<a href="/home/search?keyword=杨小楼">杨小楼</a>病逝。</p>
</li>
<li>
<div class="time">1988</div>
<p>教育家、作家<a href="/home/search?keyword=叶圣陶">叶圣陶</a>逝世。</p>
</li>
<li>
<div class="time">1997</div>
<p>著名实验物理学家<a href="/home/search?keyword=吴健雄">吴健雄</a>女士去世 。</p>
</li>
<li></li>
<li class="end">
<p>留存当下,回忆过去。</p>
</li>
</ul>
</div>
</div>
<script src="${ctx}/static/js/plugins/jquery.min.js"></script>
<script src="${ctx}/static/js/vendor.js" merge="true"></script>
<script>
$('.js-collapse').each(function () {
var $this = $(this);
$($this.attr('href')).on('show.bs.collapse', function () {
$($this.siblings().attr('href')).collapse('hide');
});
});
</script>
</body>
</html>
\ No newline at end of file
......@@ -3,15 +3,5 @@
<%--添加此行消除额外空格--%>
<%@ page trimDirectiveWhitespaces="true" %>
<%--添加此行消除额外空格--%>
<script src="${ctx}/static/js/plugins/jquery.min.js"></script>
<script src="${ctx}/static/js/vendor.js" merge="true"></script>
<script>
$('.js-collapse').each(function () {
var $this = $(this);
$($this.attr('href')).on('show.bs.collapse', function () {
$($this.siblings().attr('href')).collapse('hide');
});
});
</script>
</body>
</html>
\ No newline at end of file
......@@ -10,5 +10,15 @@
<meta name="viewport" content="width=device-width,initial-scale=1,shrink-to-fit=no">
<title>辞海-${param.pageTitle}</title>
<link rel="stylesheet" href="${ctx}/static/css/vendor.css">
<script src="${ctx}/static/js/plugins/jquery.min.js"></script>
<script src="${ctx}/static/js/vendor.js" merge="true"></script>
<script>
$('.js-collapse').each(function () {
var $this = $(this);
$($this.attr('href')).on('show.bs.collapse', function () {
$($this.siblings().attr('href')).collapse('hide');
});
});
</script>
</head>
<body>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ include file="/WEB-INF/jsp/include/taglib.jsp" %>
<%--添加此行消除额外空格--%>
<%@ page trimDirectiveWhitespaces="true" %>
<%--添加此行消除额外空格--%>
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1,shrink-to-fit=no">
<title>鲁迅介绍内容部分</title>
<link rel="stylesheet" href="/static/css/vendor.css">
</head>
<body>
<div class="container-fluid">
<div class="wrapper-ipad-app-h5">
<div class="media-yuci" id="accordion">
<div class="card mb-1">
<div class="card-header">
<h5 class="mb-0" data-toggle="collapse" data-target="#collapse0">
<button class="btn btn-link">鲁迅墓</button>
</h5>
</div>
<div class="collapse show" id="collapse0" data-parent="#accordion">
<div class="card-body">
<div class="media">
<img class="align-self-start mr-3" src="/static/temp/mu.jpg">
<div class="media-body">
<p>在上海市鲁迅公园(原虹口公园)内。鲁迅遗体原葬于上海西郊万国公墓。1956年鲁迅逝世20周年时,迁葬于此,并建鲁迅纪念馆。墓用花岗石构筑,面积1600平方米。墓穴后有壁式墓碑,上刻毛泽东的题词:“鲁迅先生之墓”。墓园中立有鲁迅坐式铜像。为全国重点文物保护单位。</p>
</div>
</div>
</div>
</div>
</div>
<div class="card mb-1">
<div class="card-header">
<h5 class="mb-0 collapsed" data-toggle="collapse" data-target="#collapse1">
<button class="btn btn-link">鲁迅夫人</button>
</h5>
</div>
<div class="collapse" id="collapse1" data-parent="#accordion">
<div class="card-body">
<ul class="list-unstyled mb-0">
<li>
<h5 class="media-title">许广平
<small>(1898—1968)</small>
</h5>
<div class="media">
<img class="align-self-start mr-3" src="/static/temp/luxun-furen.jpg">
<div class="media-body">
<p>广东番禺(今广州)人,笔名景宋。鲁迅夫人。1926年毕业于北京女子师范大学。后协助鲁迅工作。在上海参加抗日救亡和爱国民主运动,曾任《民主》周刊编辑。1948年赴东北解放区。1949年出席全国政协第一届全体会议。后任中央人民政府政务院副秘书长、全国人大和全国政协常委、全国妇联副主席、全国文联主席团委员、民进中央副主席。1960年加入中国共产党。著有《欣慰的纪念》。</p>
</div>
</div>
</li>
</ul>
</div>
</div>
</div>
<div class="card mb-1">
<div class="card-header">
<h5 class="mb-0 collapsed" data-toggle="collapse" data-target="#collapse2">
<button class="btn btn-link">鲁迅胞弟</button>
</h5>
</div>
<div class="collapse" id="collapse2" data-parent="#accordion">
<div class="card-body">
<ul class="list-unstyled mb-0">
<li>
<h5 class="media-title">周建人
<small>(1888—1984)</small>
</h5>
<div class="media">
<img class="align-self-start mr-3" src="/static/temp/luxun-furen.jpg">
<div class="media-body">
<p>浙江绍兴人,字松寿,又字乔峰。鲁迅胞弟。1920年在北京大学攻读哲学,次年任上海商务印书馆编辑,从事生物学的研究和编译工作。先后在上海大学、神州大学、上海暨南大学、安徽大学任教。1932年参与筹建中国民权保障同盟。后在上海组织马列主义读书会,开展抗日救亡斗争。抗战胜利后,任生活书店、新知书店编辑。1945年12月与马叙伦等在上海发起成立中国民主促进会。1948年加入中国共产党。1949年9月出席全国政协第一届全体会议。后任国家出版总署副署长、高等教育部副部长、浙江省人民政府副主席、浙江省省长、全国人大常委会副委员长、全国政协副主席、民进中央主席、民盟中央常委。是中共第九至十一届中央委员。著有《生物进化浅说》,译有达尔文《物种起源》。</p>
</div>
</div>
</li>
<li>
<h5 class="media-title">周作人
<small>(1885—1967)</small>
</h5>
<div class="media">
<img class="align-self-start mr-3" src="/static/temp/luxun-furen.jpg">
<div class="media-body">
<p>中国散文家、翻译家。原名櫆寿,字启明,晚年改名遐寿,浙江绍兴人。青年时代留学日本,与兄周树人(鲁迅)一起翻译介绍外国文学。五四运动时任北京大学等校教授,并从事写作。论文《人的文学》、《美文》,新诗《小河》在新文学运动中均有影响。所作散文,风格冲淡朴讷,从容平和。20世纪30年代和林语堂一起鼓吹“闲适幽默”小品。抗战时期曾任伪华北政务委员会教育总署督办。著有《自己的园地》、《雨天的书》、《谈龙集》、《谈虎集》、《瓜豆集》及《中国新文学的源流》等。新中国成立后主要从事翻译工作,译有《日本狂言选》、《伊索寓言》等;著有《鲁迅的故家》、《鲁迅小说中的人物》、《知堂回想录》等。</p>
</div>
</div>
</li>
</ul>
</div>
</div>
</div>
<div class="card mb-1">
<div class="card-header">
<h5 class="mb-0 collapsed" data-toggle="collapse" data-target="#collapse3">
<button class="btn btn-link">鲁迅主编刊物</button>
</h5>
</div>
<div class="collapse" id="collapse3" data-parent="#accordion">
<div class="card-body">
<ul class="list-unstyled mb-0">
<li>
<h5 class="media-title">《莽原》</h5>
<div class="media">
<div class="media-body">
<p>文艺刊物。1925年4月在北京创刊。鲁迅主编。初为周刊,附于《京报》发行,后由北京莽原出版社独立出版,北新书局发行,共出三十二期。1926年1月改为半月刊,由未名社印行。主要发表短篇小说、散文和翻译作品。鲁迅的《朝花夕拾》(发表时题作《旧事重提》)等曾发表于此。1927年12月出至第二卷第二十三、二十四期(合刊)停刊,共出四十八期。</p>
</div>
</div>
</li>
<li>
<h5 class="media-title">《萌芽月刊》</h5>
<div class="media">
<div class="media-body">
<p>文艺刊物。1930年1月在上海创刊。鲁迅主编。第三期起为中国左翼作家联盟的机关刊物之一。着重介绍无产阶级文艺理论和文学作品。第三期曾辟“三月纪念号”,纪念马克思、恩格斯和巴黎公社,第五期为“五月各节纪念号”,纪念“五一”和“五卅”。1930年5月出至第五期被国民党政府查禁。第六期改名《新地》出版,随即停刊。</p>
<p class="text-center">
<img src="/static/temp/luxun-furen.jpg">
</p>
</div>
</div>
</li>
</ul>
</div>
</div>
</div>
</div>
</div>
</div>
<script src="/static/js/plugins/jquery.min.js"></script>
<script src="/static/js/vendor.js" merge="true"></script>
</body>
</html>
\ No newline at end of file
<%@ include file="/WEB-INF/jsp/include/taglib.jsp" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<jsp:useBean id="word" scope="request" type="com.dookay.cihai.core.word.domain.WordDomain"/>
<jsp:useBean id="vos" scope="request" type="java.util.List<com.dookay.cihai.core.word.dto.WordDTO>"/>
<%--<jsp:useBean id="word" scope="request" type="com.dookay.cihai.core.word.domain.WordDomain"/>--%>
<%--<jsp:useBean id="vos" scope="request" type="java.util.List<com.dookay.cihai.core.word.dto.WordDTO>"/>--%>
<jsp:useBean id="vo" scope="request" type="com.dookay.cihai.app.controller.vo.OneWayRelateVO"/>
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1,shrink-to-fit=no">
<title>辞海 - ${word.word}的相关词</title>
<title>辞海 - ${vo.word}的相关词</title>
<link rel="stylesheet" href="${ctx}/static/css/vendor.css">
</head>
<body class="relation-word-body">
<div class="container-fluid">
<div class="relation-word">
<h4>相关词</h4>
<%--<div class="container-fluid">--%>
<%--<div class="relation-word">--%>
<%--<h4>相关词</h4>--%>
<%--<div class="list-group">--%>
<%--<span class="list-group-item list-group-item-header">${word.word}</span>--%>
<%--<c:forEach items="${vos}" var="item">--%>
<%--<a class="list-group-item" href="/word/info/${item.wordId}">${item.word}</a>--%>
<%--</c:forEach>--%>
<%--</div>--%>
<%--</div>--%>
<%--</div>--%>
<div class="relation-word">
<h4>相关词</h4>
<c:forEach items="${vo.relationByGroup}" var="item">
<div class="list-group">
<span class="list-group-item list-group-item-header">${word.word}</span>
<c:forEach items="${vos}" var="item">
<a class="list-group-item" href="/word/info/${item.wordId}">${item.word}</a>
<span class="list-group-item list-group-item-header">${item.key}</span>
<c:forEach items="${item.value}" var="w">
<a class="list-group-item" href="/word/info/${w.id}">${w.word}</a>
</c:forEach>
</div>
</div>
</c:forEach>
</div>
<script src="${ctx}/static/js/plugins/jquery.min.js"></script>
<script src="${ctx}/static/js/vendor.js" merge="true"></script>
......
......@@ -65,6 +65,11 @@
</a>
</li>
</c:if>
<c:if test="${vo.word eq '心脏'}">
<li class="nav-item">
<a class="nav-link" href="#content-detail-tab-3" role="tab" data-toggle="tab">图谱</a>
</li>
</c:if>
</ul>
<div class="tab-content pt-3">
<c:if test="${vo.body.size() > 0}">
......@@ -72,8 +77,125 @@
<c:forEach items="${vo.body}" var="item">
<p>${item}</p>
</c:forEach>
<c:if test="${vo.word eq '鲁迅'}">
<div class="container-fluid">
<div class="wrapper-ipad-app-h5">
<div class="media-yuci" id="accordion">
<div class="card mb-1">
<div class="card-header">
<h5 class="mb-0" data-toggle="collapse" data-target="#collapse0">
<button class="btn btn-link">鲁迅墓</button>
</h5>
</div>
<div class="collapse show" id="collapse0" data-parent="#accordion">
<div class="card-body">
<div class="media">
<img class="align-self-start mr-3" src="/static/temp/mu.jpg">
<div class="media-body">
<p>在上海市鲁迅公园(原虹口公园)内。鲁迅遗体原葬于上海西郊万国公墓。1956年鲁迅逝世20周年时,迁葬于此,并建鲁迅纪念馆。墓用花岗石构筑,面积1600平方米。墓穴后有壁式墓碑,上刻毛泽东的题词:“鲁迅先生之墓”。墓园中立有鲁迅坐式铜像。为全国重点文物保护单位。</p>
</div>
</div>
</div>
</div>
</div>
<div class="card mb-1">
<div class="card-header">
<h5 class="mb-0 collapsed" data-toggle="collapse" data-target="#collapse1">
<button class="btn btn-link">鲁迅夫人</button>
</h5>
</div>
<div class="collapse" id="collapse1" data-parent="#accordion">
<div class="card-body">
<ul class="list-unstyled mb-0">
<li>
<h5 class="media-title">许广平
<small>(1898—1968)</small>
</h5>
<div class="media">
<img class="align-self-start mr-3" src="/static/temp/luxun-furen.jpg">
<div class="media-body">
<p>广东番禺(今广州)人,笔名景宋。鲁迅夫人。1926年毕业于北京女子师范大学。后协助鲁迅工作。在上海参加抗日救亡和爱国民主运动,曾任《民主》周刊编辑。1948年赴东北解放区。1949年出席全国政协第一届全体会议。后任中央人民政府政务院副秘书长、全国人大和全国政协常委、全国妇联副主席、全国文联主席团委员、民进中央副主席。1960年加入中国共产党。著有《欣慰的纪念》。</p>
</div>
</div>
</li>
</ul>
</div>
</div>
</div>
<div class="card mb-1">
<div class="card-header">
<h5 class="mb-0 collapsed" data-toggle="collapse" data-target="#collapse2">
<button class="btn btn-link">鲁迅胞弟</button>
</h5>
</div>
<div class="collapse" id="collapse2" data-parent="#accordion">
<div class="card-body">
<ul class="list-unstyled mb-0">
<li>
<h5 class="media-title">周建人
<small>(1888—1984)</small>
</h5>
<div class="media">
<img class="align-self-start mr-3" src="/static/temp/luxun-furen.jpg">
<div class="media-body">
<p>浙江绍兴人,字松寿,又字乔峰。鲁迅胞弟。1920年在北京大学攻读哲学,次年任上海商务印书馆编辑,从事生物学的研究和编译工作。先后在上海大学、神州大学、上海暨南大学、安徽大学任教。1932年参与筹建中国民权保障同盟。后在上海组织马列主义读书会,开展抗日救亡斗争。抗战胜利后,任生活书店、新知书店编辑。1945年12月与马叙伦等在上海发起成立中国民主促进会。1948年加入中国共产党。1949年9月出席全国政协第一届全体会议。后任国家出版总署副署长、高等教育部副部长、浙江省人民政府副主席、浙江省省长、全国人大常委会副委员长、全国政协副主席、民进中央主席、民盟中央常委。是中共第九至十一届中央委员。著有《生物进化浅说》,译有达尔文《物种起源》。</p>
</div>
</div>
</li>
<li>
<h5 class="media-title">周作人
<small>(1885—1967)</small>
</h5>
<div class="media">
<img class="align-self-start mr-3" src="/static/temp/luxun-furen.jpg">
<div class="media-body">
<p>中国散文家、翻译家。原名櫆寿,字启明,晚年改名遐寿,浙江绍兴人。青年时代留学日本,与兄周树人(鲁迅)一起翻译介绍外国文学。五四运动时任北京大学等校教授,并从事写作。论文《人的文学》、《美文》,新诗《小河》在新文学运动中均有影响。所作散文,风格冲淡朴讷,从容平和。20世纪30年代和林语堂一起鼓吹“闲适幽默”小品。抗战时期曾任伪华北政务委员会教育总署督办。著有《自己的园地》、《雨天的书》、《谈龙集》、《谈虎集》、《瓜豆集》及《中国新文学的源流》等。新中国成立后主要从事翻译工作,译有《日本狂言选》、《伊索寓言》等;著有《鲁迅的故家》、《鲁迅小说中的人物》、《知堂回想录》等。</p>
</div>
</div>
</li>
</ul>
</div>
</div>
</div>
<div class="card mb-1">
<div class="card-header">
<h5 class="mb-0 collapsed" data-toggle="collapse" data-target="#collapse3">
<button class="btn btn-link">鲁迅主编刊物</button>
</h5>
</div>
<div class="collapse" id="collapse3" data-parent="#accordion">
<div class="card-body">
<ul class="list-unstyled mb-0">
<li>
<h5 class="media-title">《莽原》</h5>
<div class="media">
<div class="media-body">
<p>文艺刊物。1925年4月在北京创刊。鲁迅主编。初为周刊,附于《京报》发行,后由北京莽原出版社独立出版,北新书局发行,共出三十二期。1926年1月改为半月刊,由未名社印行。主要发表短篇小说、散文和翻译作品。鲁迅的《朝花夕拾》(发表时题作《旧事重提》)等曾发表于此。1927年12月出至第二卷第二十三、二十四期(合刊)停刊,共出四十八期。</p>
</div>
</div>
</li>
<li>
<h5 class="media-title">《萌芽月刊》</h5>
<div class="media">
<div class="media-body">
<p>文艺刊物。1930年1月在上海创刊。鲁迅主编。第三期起为中国左翼作家联盟的机关刊物之一。着重介绍无产阶级文艺理论和文学作品。第三期曾辟“三月纪念号”,纪念马克思、恩格斯和巴黎公社,第五期为“五月各节纪念号”,纪念“五一”和“五卅”。1930年5月出至第五期被国民党政府查禁。第六期改名《新地》出版,随即停刊。</p>
<p class="text-center">
<img src="/static/temp/luxun-furen.jpg">
</p>
</div>
</div>
</li>
</ul>
</div>
</div>
</div>
</div>
</div>
</div>
</c:if>
</div>
</c:if>
<c:if test="${vo.videos.size() > 0}">
<div class="tab-pane fade" id="content-detail-tab-1" role="tabpanel">
<c:forEach items="<%=Lists.partition(vo.getVideos(), 4)%>" var="group">
......@@ -89,8 +211,863 @@
</c:forEach>
</div>
</c:if>
<c:if test="${vo.word eq '心脏'}">
<div class="tab-pane " id="content-detail-tab-3" role="tabpanel">
<div class="carousel slide" id="carouselExampleControls" data-ride="carousel" data-interval="10000">
<div class="carousel-inner">
<div class="atlas-content carousel-item active" id="atlas-0"></div>
<div class="atlas-content carousel-item" id="atlas-1"></div>
<div class="atlas-content carousel-item" id="atlas-2"></div>
<div class="atlas-content carousel-item" id="atlas-3"></div>
<div class="atlas-content carousel-item" id="atlas-4"></div>
<div class="atlas-content carousel-item" id="atlas-5"></div>
</div>
<a class="carousel-control-prev" href="#carouselExampleControls" role="button" data-slide="prev">
<span class="carousel-control-prev-icon" aria-hidden="true"></span>
<span class="sr-only">上一个</span>
</a>
<a class="carousel-control-next" href="#carouselExampleControls" role="button" data-slide="next">
<span class="carousel-control-next-icon" aria-hidden="true"></span>
<span class="sr-only">下一个</span>
</a>
</div>
</div>
</c:if>
</div>
</article>
</div>
</div>
<script src="/static/js/plugins/vis/vis.min.js"></script>
<c:if test="${vo.word eq '心脏'}">
<script>
$(function() {
// 图谱
var nodeDatas = [{
atlasNodes: [{
id: 2,
label: '心脏'
},
{
id: 3,
label: '心内膜'
},
{
id: 4,
label: '心肌'
},
{
id: 5,
label: '心脏传导系统'
},
{
id: 6,
label: '心外膜'
},
{
id: 7,
label: '心包'
},
{
id: 8,
label: '心包络'
},
{
id: 9,
label: '围心腔'
},
{
id: 10,
label: '肺'
},
{
id: 11,
label: '肺气肿'
},
{
id: 12,
label: '肺心病'
},
{
id: 13,
label: '心脏压塞'
},
{
id: 14,
label: '心包炎'
},
{
id: 15,
label: '心室颤动'
},
{
id: 16,
label: '心室'
},
{
id: 17,
label: '心房'
},
{
id: 18,
label: '胸心血管外科学'
},
{
id: 19,
label: '心率'
},
{
id: 20,
label: '心力储备'
},
{
id: 21,
label: '心输出量'
},
{
id: 22,
label: '感染性心内膜炎'
},
{
id: 23,
label: '心房扑动'
},
{
id: 24,
label: '中心静脉压'
},
{
id: 25,
label: '心肌炎'
},
{
id: 26,
label: '心肌病'
},
{
id: 27,
label: '心肌梗死'
},
{
id: 28,
label: '心脏传导阻滞'
},
{
id: 29,
label: '心脏起搏器'
},
{
id: 100,
label: '心包摩擦音'
}
],
atlasEdges: [{
from: 2,
to: 3
},
{
from: 2,
to: 4
},
{
from: 2,
to: 16
},
{
from: 2,
to: 17
},
{
from: 2,
to: 18
},
{
from: 2,
to: 19
},
{
from: 3,
to: 7
},
{
from: 3,
to: 22
},
{
from: 7,
to: 8
},
{
from: 8,
to: 9
},
{
from: 9,
to: 10
},
{
from: 10,
to: 11
},
{
from: 4,
to: 5
},
{
from: 4,
to: 26
},
{
from: 4,
to: 27
},
{
from: 4,
to: 21
},
{
from: 4,
to: 25
},
{
from: 4,
to: 20
},
{
from: 5,
to: 28
},
{
from: 28,
to: 29
},
{
from: 5,
to: 6
},
{
from: 7,
to: 13
},
{
from: 7,
to: 14
},
{
from: 7,
to: 100
},
{
from: 17,
to: 23
},
{
from: 17,
to: 24
},
{
from: 16,
to: 15
},
{
from: 11,
to: 12
}
]
},
{
atlasNodes: [{
id: 2,
label: '心脏'
},
{
id: 3,
label: '心力衰竭'
},
{
id: 4,
label: '心瓣膜病'
},
{
id: 5,
label: '先天性心脏病'
},
{
id: 6,
label: '冠心病'
},
{
id: 7,
label: '心导管球囊扩张术'
},
{
id: 8,
label: '强心苷'
},
{
id: 9,
label: '心脏导管检查术'
},
{
id: 10,
label: '心衰'
},
{
id: 11,
label: '心脏内直视手术'
},
{
id: 12,
label: '心脏闭合性损'
},
{
id: 13,
label: '高血压心脏病'
},
{
id: 14,
label: '心音'
},
{
id: 15,
label: '心源性猝死'
},
{
id: 16,
label: '体外循环'
},
{
id: 17,
label: '低温麻醉'
},
{
id: 18,
label: '心脏杂音'
},
{
id: 19,
label: '胎心音'
},
{
id: 20,
label: '心脏按压'
},
{
id: 21,
label: '人工呼吸'
},
{
id: 22,
label: '人工心肺机'
},
{
id: 24,
label: '心音图'
},
{
id: 26,
label: '微创心脏外科手术'
},
{
id: 25,
label: '风湿性心脏病'
}
],
atlasEdges: [{
from: 2,
to: 3
},
{
from: 2,
to: 9
},
{
from: 2,
to: 4
},
{
from: 2,
to: 5
},
{
from: 2,
to: 6
},
{
from: 2,
to: 11
},
{
from: 2,
to: 12
},
{
from: 2,
to: 13
},
{
from: 2,
to: 14
},
{
from: 2,
to: 15
},
{
from: 3,
to: 10
},
{
from: 4,
to: 26
},
{
from: 4,
to: 7
},
{
from: 5,
to: 26
},
{
from: 6,
to: 26
},
{
from: 10,
to: 8
},
{
from: 11,
to: 16
},
{
from: 11,
to: 17
},
{
from: 14,
to: 18
},
{
from: 14,
to: 19
},
{
from: 18,
to: 24
},
{
from: 19,
to: 24
},
{
from: 15,
to: 20
},
{
from: 15,
to: 21
},
{
from: 16,
to: 22
},
{
from: 25,
to: 4
}
]
},
{
atlasNodes: [{
id: 2,
label: '冠心'
},
{
id: 3,
label: '冠状动脉搭桥术'
},
{
id: 4,
label: '冠状动脉'
},
{
id: 5,
label: '冠状动脉造影'
},
{
id: 6,
label: '微创心脏外科手术'
},
{
id: 7,
label: '心绞痛'
},
{
id: 8,
label: '心律失常'
},
{
id: 9,
label: '急性冠状动脉综合征'
},
{
id: 10,
label: '心肌衰竭'
},
{
id: 11,
label: '心源性猝死'
}
],
atlasEdges: [{
from: 2,
to: 3
},
{
from: 2,
to: 6
},
{
from: 2,
to: 11,
label: '病症'
},
{
from: 2,
to: 7
},
{
from: 2,
to: 8
},
{
from: 2,
to: 9
},
{
from: 2,
to: 10
},
{
from: 2,
to: 12
},
{
from: 5,
to: 6
},
{
from: 4,
to: 5
}
]
},
{
atlasNodes: [{
id: 2,
label: '心痛'
},
{
id: 3,
label: '真心痛'
},
{
id: 4,
label: '抗心痛药'
},
{
id: 5,
label: '天王补心丹'
},
{
id: 15,
label: '麝香保心丸'
},
{
id: 6,
label: '消心痛'
},
{
id: 7,
label: '心痛定'
},
{
id: 8,
label: '硝酸异山梨酯'
},
{
id: 9,
label: '硝苯地平'
},
{
id: 11,
label: '虫痛'
},
{
id: 12,
label: '心绞痛'
},
{
id: 13,
label: '心肌梗死'
},
{
id: 14,
label: '胃痛'
}
],
atlasEdges: [{
from: 2,
to: 3
},
{
from: 2,
to: 4
},
{
from: 2,
to: 5
},
{
from: 2,
to: 15
},
{
from: 2,
to: 11
},
{
from: 2,
to: 12
},
{
from: 2,
to: 13
},
{
from: 2,
to: 14
},
{
from: 4,
to: 6
},
{
from: 4,
to: 7
},
{
from: 7,
to: 9
},
{
from: 6,
to: 8
}
]
},
{
atlasNodes: [{
id: 2,
label: '心'
},
{
id: 3,
label: '心律不齐'
},
{
id: 4,
label: '心动过缓'
},
{
id: 5,
label: '心律失常'
},
{
id: 6,
label: '心动周期'
},
{
id: 7,
label: '超声心动图'
},
{
id: 8,
label: '心电图'
},
{
id: 9,
label: '抗心律失常药'
},
{
id: 10,
label: '窦性心律'
},
{
id: 11,
label: '心动过速'
}
],
atlasEdges: [{
from: 2,
to: 3
},
{
from: 2,
to: 6
},
{
from: 2,
to: 10
},
{
from: 2,
to: 8
},
{
from: 3,
to: 4
},
{
from: 3,
to: 5
},
{
from: 3,
to: 11
},
{
from: 5,
to: 9
},
{
from: 6,
to: 7
}
]
},
{
atlasNodes: [{
id: 2,
label: '心病'
},
{
id: 3,
label: '热入心包'
},
{
id: 4,
label: '水气凌心'
},
{
id: 5,
label: '心血虚'
},
{
id: 6,
label: '心心血淤'
},
{
id: 7,
label: '怔忡'
},
{
id: 8,
label: '心悸'
},
{
id: 9,
label: '心阳虚'
},
{
id: 10,
label: '心阴虚'
},
{
id: 11,
label: '盗汗'
}
],
atlasEdges: [{
from: 2,
to: 3
},
{
from: 2,
to: 4
},
{
from: 2,
to: 5
},
{
from: 2,
to: 6
},
{
from: 2,
to: 7
},
{
from: 2,
to: 8
},
{
from: 2,
to: 9
},
{
from: 2,
to: 10
},
{
from: 2,
to: 11
}
]
}
];
function draw(atlasData, index) {
var container = document.getElementById('atlas-' + index);
var data = {
nodes: atlasData[index].atlasNodes,
edges: atlasData[index].atlasEdges
};
var options = {
nodes: {
shape: 'dot',
borderWidth: 2,
color: {
border: '#6faae8',
background: '#ecf6ff',
highlight: {
border: '#6faae8',
background: '#ecf6ff'
}
},
font: {
color: '#000'
}
},
clickToUse: true
};
return new vis.Network(container, data, options);
}
var newVis = null,
oldVis = null;
newVis = draw(nodeDatas, 0);
$('#carouselExampleControls').on('slid.bs.carousel', function(data) {
if (oldVis) oldVis.destroy();
})
.on('slide.bs.carousel', function(data) {
oldVis = newVis;
newVis = draw(nodeDatas, data.to);
})
});
</script>
</c:if>
<jsp:include page="/WEB-INF/jsp/include/footer.jsp"/>
......@@ -5,6 +5,7 @@
<meta name="viewport" content="width=device-width,initial-scale=1,shrink-to-fit=no">
<title>baike</title>
<link rel="stylesheet" href="css/vendor.css">
<link rel="stylesheet" href="js/plugins/vis/vis.min.css">
</head>
<body>
<div class="container-fluid">
......@@ -100,7 +101,7 @@
<article class="content-detail">
<ul class="nav nav-tabs nav-tabs-main" role="tablist">
<li class="nav-item">
<a class="nav-link active" href="#content-detail-tab-0" role="tab" data-toggle="tab">释义</a>
<a class="nav-link" href="#content-detail-tab-0" role="tab" data-toggle="tab">释义</a>
</li>
<li class="nav-item">
<a class="nav-link" href="#content-detail-tab-1" role="tab" data-toggle="tab">视频
......@@ -108,17 +109,17 @@
</a>
</li>
<li class="nav-item">
<a class="nav-link" href="#content-detail-tab-3" role="tab" data-toggle="tab">音频</a>
<a class="nav-link" href="#content-detail-tab-2" role="tab" data-toggle="tab">音频</a>
</li>
<li class="nav-item">
<a class="nav-link" href="#content-detail-tab-4" role="tab" data-toggle="tab">图谱</a>
<a class="nav-link active" href="#content-detail-tab-3" role="tab" data-toggle="tab">图谱</a>
</li>
</ul>
<div class="tab-content pt-3">
<div class="tab-pane fade show active" id="content-detail-tab-0" role="tabpanel">
<div class="tab-pane" id="content-detail-tab-0" role="tabpanel">
<p>哺乳纲,长鼻目,象科。陆上现存最大的哺乳动物。肩高2.5~3.0米。皮厚毛少,肢粗如柱。鼻与上唇愈合成圆筒状长鼻,鼻端有指状突起一或两个。上颌门齿大而长,称“象牙”。有两种:亚洲象(Elephas maximus),体较小,额部下凹,鼻端具一指状凸起,耳小,后足四蹄。仅雄象有象牙,分布于南亚、东南亚等地;亦见于中国云南等地,国家一级保护动物。非洲象(Loxodonta africana),体较大,额部凸出,鼻端有两个指状凸起,耳大披肩,后足三蹄。雌雄均有象牙,不易驯服,分布于非洲。</p>
</div>
<div class="tab-pane fade" id="content-detail-tab-1" role="tabpanel">
<div class="tab-pane" id="content-detail-tab-1" role="tabpanel">
<div class="row list-img">
<div class="col-sm-3">
<a>
......@@ -208,7 +209,7 @@
</div>
</div>
</div>
<div class="tab-pane fade" id="content-detail-tab-2" role="tabpanel">
<div class="tab-pane" id="content-detail-tab-2" role="tabpanel">
<div class="row list-img">
<div class="col-sm-3">
<a>
......@@ -298,94 +299,24 @@
</div>
</div>
</div>
<div class="tab-pane fade" id="content-detail-tab-4" role="tabpanel">
<div class="row list-img">
<div class="col-sm-3">
<a>
<img class="img-fluid" src="temp/xiang.jpg">
</a>
</div>
<div class="col-sm-3">
<a>
<img class="img-fluid" src="temp/xiang.jpg">
</a>
</div>
<div class="col-sm-3">
<a>
<img class="img-fluid" src="temp/xiang.jpg">
</a>
</div>
<div class="col-sm-3">
<a>
<img class="img-fluid" src="temp/xiang.jpg">
</a>
</div>
</div>
<div class="row list-img">
<div class="col-sm-3">
<a>
<img class="img-fluid" src="temp/xiang.jpg">
</a>
</div>
<div class="col-sm-3">
<a>
<img class="img-fluid" src="temp/xiang.jpg">
</a>
</div>
<div class="col-sm-3">
<a>
<img class="img-fluid" src="temp/xiang.jpg">
</a>
</div>
<div class="col-sm-3">
<a>
<img class="img-fluid" src="temp/xiang.jpg">
</a>
</div>
</div>
<div class="row list-img">
<div class="col-sm-3">
<a>
<img class="img-fluid" src="temp/xiang.jpg">
</a>
</div>
<div class="col-sm-3">
<a>
<img class="img-fluid" src="temp/xiang.jpg">
</a>
</div>
<div class="col-sm-3">
<a>
<img class="img-fluid" src="temp/xiang.jpg">
</a>
</div>
<div class="col-sm-3">
<a>
<img class="img-fluid" src="temp/xiang.jpg">
</a>
</div>
</div>
<div class="row list-img">
<div class="col-sm-3">
<a>
<img class="img-fluid" src="temp/xiang.jpg">
</a>
</div>
<div class="col-sm-3">
<a>
<img class="img-fluid" src="temp/xiang.jpg">
</a>
</div>
<div class="col-sm-3">
<a>
<img class="img-fluid" src="temp/xiang.jpg">
</a>
</div>
<div class="col-sm-3">
<a>
<img class="img-fluid" src="temp/xiang.jpg">
</a>
<div class="tab-pane show active" id="content-detail-tab-3" role="tabpanel">
<div class="carousel slide" id="carouselExampleControls" data-ride="carousel" data-interval="10000">
<div class="carousel-inner">
<div class="atlas-content carousel-item active" id="atlas-0"></div>
<div class="atlas-content carousel-item" id="atlas-1"></div>
<div class="atlas-content carousel-item" id="atlas-2"></div>
<div class="atlas-content carousel-item" id="atlas-3"></div>
<div class="atlas-content carousel-item" id="atlas-4"></div>
<div class="atlas-content carousel-item" id="atlas-5"></div>
</div>
<a class="carousel-control-prev" href="#carouselExampleControls" role="button" data-slide="prev">
<span class="carousel-control-prev-icon" aria-hidden="true"></span>
<span class="sr-only">上一个</span>
</a>
<a class="carousel-control-next" href="#carouselExampleControls" role="button" data-slide="next">
<span class="carousel-control-next-icon" aria-hidden="true"></span>
<span class="sr-only">下一个</span>
</a>
</div>
</div>
</div>
......@@ -394,12 +325,842 @@
</div>
<script src="js/plugins/jquery.min.js"></script>
<script src="js/vendor.js" merge="true"></script>
<script src="js/plugins/vis/vis.min.js"></script>
<script>
$('.js-collapse').each(function() {
var $this = $(this);
$($this.attr('href')).on('show.bs.collapse', function() {
$($this.siblings().attr('href')).collapse('hide');
$(function() {
// 折叠展开
$('.js-collapse').each(function() {
var $this = $(this);
$($this.attr('href')).on('show.bs.collapse', function() {
$($this.siblings().attr('href')).collapse('hide');
});
});
// 图谱
var nodeDatas = [{
atlasNodes: [{
id: 2,
label: '心脏'
},
{
id: 3,
label: '心内膜'
},
{
id: 4,
label: '心肌'
},
{
id: 5,
label: '心脏传导系统'
},
{
id: 6,
label: '心外膜'
},
{
id: 7,
label: '心包'
},
{
id: 8,
label: '心包络'
},
{
id: 9,
label: '围心腔'
},
{
id: 10,
label: '肺'
},
{
id: 11,
label: '肺气肿'
},
{
id: 12,
label: '肺心病'
},
{
id: 13,
label: '心脏压塞'
},
{
id: 14,
label: '心包炎'
},
{
id: 15,
label: '心室颤动'
},
{
id: 16,
label: '心室'
},
{
id: 17,
label: '心房'
},
{
id: 18,
label: '胸心血管外科学'
},
{
id: 19,
label: '心率'
},
{
id: 20,
label: '心力储备'
},
{
id: 21,
label: '心输出量'
},
{
id: 22,
label: '感染性心内膜炎'
},
{
id: 23,
label: '心房扑动'
},
{
id: 24,
label: '中心静脉压'
},
{
id: 25,
label: '心肌炎'
},
{
id: 26,
label: '心肌病'
},
{
id: 27,
label: '心肌梗死'
},
{
id: 28,
label: '心脏传导阻滞'
},
{
id: 29,
label: '心脏起搏器'
},
{
id: 100,
label: '心包摩擦音'
}
],
atlasEdges: [{
from: 2,
to: 3
},
{
from: 2,
to: 4
},
{
from: 2,
to: 16
},
{
from: 2,
to: 17
},
{
from: 2,
to: 18
},
{
from: 2,
to: 19
},
{
from: 3,
to: 7
},
{
from: 3,
to: 22
},
{
from: 7,
to: 8
},
{
from: 8,
to: 9
},
{
from: 9,
to: 10
},
{
from: 10,
to: 11
},
{
from: 4,
to: 5
},
{
from: 4,
to: 26
},
{
from: 4,
to: 27
},
{
from: 4,
to: 21
},
{
from: 4,
to: 25
},
{
from: 4,
to: 20
},
{
from: 5,
to: 28
},
{
from: 28,
to: 29
},
{
from: 5,
to: 6
},
{
from: 7,
to: 13
},
{
from: 7,
to: 14
},
{
from: 7,
to: 100
},
{
from: 17,
to: 23
},
{
from: 17,
to: 24
},
{
from: 16,
to: 15
},
{
from: 11,
to: 12
}
]
},
{
atlasNodes: [{
id: 2,
label: '心脏'
},
{
id: 3,
label: '心力衰竭'
},
{
id: 4,
label: '心瓣膜病'
},
{
id: 5,
label: '先天性心脏病'
},
{
id: 6,
label: '冠心病'
},
{
id: 7,
label: '心导管球囊扩张术'
},
{
id: 8,
label: '强心苷'
},
{
id: 9,
label: '心脏导管检查术'
},
{
id: 10,
label: '心衰'
},
{
id: 11,
label: '心脏内直视手术'
},
{
id: 12,
label: '心脏闭合性损'
},
{
id: 13,
label: '高血压心脏病'
},
{
id: 14,
label: '心音'
},
{
id: 15,
label: '心源性猝死'
},
{
id: 16,
label: '体外循环'
},
{
id: 17,
label: '低温麻醉'
},
{
id: 18,
label: '心脏杂音'
},
{
id: 19,
label: '胎心音'
},
{
id: 20,
label: '心脏按压'
},
{
id: 21,
label: '人工呼吸'
},
{
id: 22,
label: '人工心肺机'
},
{
id: 24,
label: '心音图'
},
{
id: 26,
label: '微创心脏外科手术'
},
{
id: 25,
label: '风湿性心脏病'
}
],
atlasEdges: [{
from: 2,
to: 3
},
{
from: 2,
to: 9
},
{
from: 2,
to: 4
},
{
from: 2,
to: 5
},
{
from: 2,
to: 6
},
{
from: 2,
to: 11
},
{
from: 2,
to: 12
},
{
from: 2,
to: 13
},
{
from: 2,
to: 14
},
{
from: 2,
to: 15
},
{
from: 3,
to: 10
},
{
from: 4,
to: 26
},
{
from: 4,
to: 7
},
{
from: 5,
to: 26
},
{
from: 6,
to: 26
},
{
from: 10,
to: 8
},
{
from: 11,
to: 16
},
{
from: 11,
to: 17
},
{
from: 14,
to: 18
},
{
from: 14,
to: 19
},
{
from: 18,
to: 24
},
{
from: 19,
to: 24
},
{
from: 15,
to: 20
},
{
from: 15,
to: 21
},
{
from: 16,
to: 22
},
{
from: 25,
to: 4
}
]
},
{
atlasNodes: [{
id: 2,
label: '冠心'
},
{
id: 3,
label: '冠状动脉搭桥术'
},
{
id: 4,
label: '冠状动脉'
},
{
id: 5,
label: '冠状动脉造影'
},
{
id: 6,
label: '微创心脏外科手术'
},
{
id: 7,
label: '心绞痛'
},
{
id: 8,
label: '心律失常'
},
{
id: 9,
label: '急性冠状动脉综合征'
},
{
id: 10,
label: '心肌衰竭'
},
{
id: 11,
label: '心源性猝死'
}
],
atlasEdges: [{
from: 2,
to: 3
},
{
from: 2,
to: 6
},
{
from: 2,
to: 11,
label: '病症'
},
{
from: 2,
to: 7
},
{
from: 2,
to: 8
},
{
from: 2,
to: 9
},
{
from: 2,
to: 10
},
{
from: 2,
to: 12
},
{
from: 5,
to: 6
},
{
from: 4,
to: 5
}
]
},
{
atlasNodes: [{
id: 2,
label: '心痛'
},
{
id: 3,
label: '真心痛'
},
{
id: 4,
label: '抗心痛药'
},
{
id: 5,
label: '天王补心丹'
},
{
id: 15,
label: '麝香保心丸'
},
{
id: 6,
label: '消心痛'
},
{
id: 7,
label: '心痛定'
},
{
id: 8,
label: '硝酸异山梨酯'
},
{
id: 9,
label: '硝苯地平'
},
{
id: 11,
label: '虫痛'
},
{
id: 12,
label: '心绞痛'
},
{
id: 13,
label: '心肌梗死'
},
{
id: 14,
label: '胃痛'
}
],
atlasEdges: [{
from: 2,
to: 3
},
{
from: 2,
to: 4
},
{
from: 2,
to: 5
},
{
from: 2,
to: 15
},
{
from: 2,
to: 11
},
{
from: 2,
to: 12
},
{
from: 2,
to: 13
},
{
from: 2,
to: 14
},
{
from: 4,
to: 6
},
{
from: 4,
to: 7
},
{
from: 7,
to: 9
},
{
from: 6,
to: 8
}
]
},
{
atlasNodes: [{
id: 2,
label: '心'
},
{
id: 3,
label: '心律不齐'
},
{
id: 4,
label: '心动过缓'
},
{
id: 5,
label: '心律失常'
},
{
id: 6,
label: '心动周期'
},
{
id: 7,
label: '超声心动图'
},
{
id: 8,
label: '心电图'
},
{
id: 9,
label: '抗心律失常药'
},
{
id: 10,
label: '窦性心律'
},
{
id: 11,
label: '心动过速'
}
],
atlasEdges: [{
from: 2,
to: 3
},
{
from: 2,
to: 6
},
{
from: 2,
to: 10
},
{
from: 2,
to: 8
},
{
from: 3,
to: 4
},
{
from: 3,
to: 5
},
{
from: 3,
to: 11
},
{
from: 5,
to: 9
},
{
from: 6,
to: 7
}
]
},
{
atlasNodes: [{
id: 2,
label: '心病'
},
{
id: 3,
label: '热入心包'
},
{
id: 4,
label: '水气凌心'
},
{
id: 5,
label: '心血虚'
},
{
id: 6,
label: '心心血淤'
},
{
id: 7,
label: '怔忡'
},
{
id: 8,
label: '心悸'
},
{
id: 9,
label: '心阳虚'
},
{
id: 10,
label: '心阴虚'
},
{
id: 11,
label: '盗汗'
}
],
atlasEdges: [{
from: 2,
to: 3
},
{
from: 2,
to: 4
},
{
from: 2,
to: 5
},
{
from: 2,
to: 6
},
{
from: 2,
to: 7
},
{
from: 2,
to: 8
},
{
from: 2,
to: 9
},
{
from: 2,
to: 10
},
{
from: 2,
to: 11
}
]
}
];
function draw(atlasData, index) {
var container = document.getElementById('atlas-' + index);
var data = {
nodes: atlasData[index].atlasNodes,
edges: atlasData[index].atlasEdges
};
var options = {
nodes: {
shape: 'dot',
borderWidth: 2,
color: {
border: '#6faae8',
background: '#ecf6ff',
highlight: {
border: '#6faae8',
background: '#ecf6ff'
}
},
font: {
color: '#000'
}
},
clickToUse: true
};
return new vis.Network(container, data, options);
}
var newVis = null,
oldVis = null;
newVis = draw(nodeDatas, 0);
$('#carouselExampleControls').on('slid.bs.carousel', function(data) {
if (oldVis) oldVis.destroy();
})
.on('slide.bs.carousel', function(data) {
oldVis = newVis;
newVis = draw(nodeDatas, data.to);
})
});
</script>
</body>
......
This diff could not be displayed because it is too large.
.vis .overlay{position:absolute;top:0;left:0;width:100%;height:100%;z-index:10}.vis-active{box-shadow:0 0 10px #86d5f8}.vis [class*=span]{min-height:0;width:auto}div.vis-configuration{position:relative;display:block;float:left;font-size:12px}div.vis-configuration-wrapper{display:block;width:700px}div.vis-configuration-wrapper::after{clear:both;content:"";display:block}div.vis-configuration.vis-config-option-container{display:block;width:495px;background-color:#fff;border:2px solid #f7f8fa;border-radius:4px;margin-top:20px;left:10px;padding-left:5px}div.vis-configuration.vis-config-button{display:block;width:495px;height:25px;vertical-align:middle;line-height:25px;background-color:#f7f8fa;border:2px solid #ceced0;border-radius:4px;margin-top:20px;left:10px;padding-left:5px;cursor:pointer;margin-bottom:30px}div.vis-configuration.vis-config-button.hover{background-color:#4588e6;border:2px solid #214373;color:#fff}div.vis-configuration.vis-config-item{display:block;float:left;width:495px;height:25px;vertical-align:middle;line-height:25px}div.vis-configuration.vis-config-item.vis-config-s2{left:10px;background-color:#f7f8fa;padding-left:5px;border-radius:3px}div.vis-configuration.vis-config-item.vis-config-s3{left:20px;background-color:#e4e9f0;padding-left:5px;border-radius:3px}div.vis-configuration.vis-config-item.vis-config-s4{left:30px;background-color:#cfd8e6;padding-left:5px;border-radius:3px}div.vis-configuration.vis-config-header{font-size:18px;font-weight:700}div.vis-configuration.vis-config-label{width:120px;height:25px;line-height:25px}div.vis-configuration.vis-config-label.vis-config-s3{width:110px}div.vis-configuration.vis-config-label.vis-config-s4{width:100px}div.vis-configuration.vis-config-colorBlock{top:1px;width:30px;height:19px;border:1px solid #444;border-radius:2px;padding:0;margin:0;cursor:pointer}input.vis-configuration.vis-config-checkbox{left:-5px}input.vis-configuration.vis-config-rangeinput{position:relative;top:-5px;width:60px;padding:1px;margin:0;pointer-events:none}input.vis-configuration.vis-config-range{-webkit-appearance:none;border:0 solid #fff;background-color:rgba(0,0,0,0);width:300px;height:20px}input.vis-configuration.vis-config-range::-webkit-slider-runnable-track{width:300px;height:5px;background:#dedede;background:-moz-linear-gradient(top,#dedede 0,#c8c8c8 99%);background:-webkit-gradient(linear,left top,left bottom,color-stop(0,#dedede),color-stop(99%,#c8c8c8));background:-webkit-linear-gradient(top,#dedede 0,#c8c8c8 99%);background:-o-linear-gradient(top,#dedede 0,#c8c8c8 99%);background:-ms-linear-gradient(top,#dedede 0,#c8c8c8 99%);background:linear-gradient(to bottom,#dedede 0,#c8c8c8 99%);border:1px solid #999;box-shadow:#aaa 0 0 3px 0;border-radius:3px}input.vis-configuration.vis-config-range::-webkit-slider-thumb{-webkit-appearance:none;border:1px solid #14334b;height:17px;width:17px;border-radius:50%;background:#3876c2;background:-moz-linear-gradient(top,#3876c2 0,#385380 100%);background:-webkit-gradient(linear,left top,left bottom,color-stop(0,#3876c2),color-stop(100%,#385380));background:-webkit-linear-gradient(top,#3876c2 0,#385380 100%);background:-o-linear-gradient(top,#3876c2 0,#385380 100%);background:-ms-linear-gradient(top,#3876c2 0,#385380 100%);background:linear-gradient(to bottom,#3876c2 0,#385380 100%);box-shadow:#111927 0 0 1px 0;margin-top:-7px}input.vis-configuration.vis-config-range:focus{outline:0}input.vis-configuration.vis-config-range:focus::-webkit-slider-runnable-track{background:#9d9d9d;background:-moz-linear-gradient(top,#9d9d9d 0,#c8c8c8 99%);background:-webkit-gradient(linear,left top,left bottom,color-stop(0,#9d9d9d),color-stop(99%,#c8c8c8));background:-webkit-linear-gradient(top,#9d9d9d 0,#c8c8c8 99%);background:-o-linear-gradient(top,#9d9d9d 0,#c8c8c8 99%);background:-ms-linear-gradient(top,#9d9d9d 0,#c8c8c8 99%);background:linear-gradient(to bottom,#9d9d9d 0,#c8c8c8 99%)}input.vis-configuration.vis-config-range::-moz-range-track{width:300px;height:10px;background:#dedede;background:-moz-linear-gradient(top,#dedede 0,#c8c8c8 99%);background:-webkit-gradient(linear,left top,left bottom,color-stop(0,#dedede),color-stop(99%,#c8c8c8));background:-webkit-linear-gradient(top,#dedede 0,#c8c8c8 99%);background:-o-linear-gradient(top,#dedede 0,#c8c8c8 99%);background:-ms-linear-gradient(top,#dedede 0,#c8c8c8 99%);background:linear-gradient(to bottom,#dedede 0,#c8c8c8 99%);border:1px solid #999;box-shadow:#aaa 0 0 3px 0;border-radius:3px}input.vis-configuration.vis-config-range::-moz-range-thumb{border:none;height:16px;width:16px;border-radius:50%;background:#385380}input.vis-configuration.vis-config-range:-moz-focusring{outline:1px solid #fff;outline-offset:-1px}input.vis-configuration.vis-config-range::-ms-track{width:300px;height:5px;background:0 0;border-color:transparent;border-width:6px 0;color:transparent}input.vis-configuration.vis-config-range::-ms-fill-lower{background:#777;border-radius:10px}input.vis-configuration.vis-config-range::-ms-fill-upper{background:#ddd;border-radius:10px}input.vis-configuration.vis-config-range::-ms-thumb{border:none;height:16px;width:16px;border-radius:50%;background:#385380}input.vis-configuration.vis-config-range:focus::-ms-fill-lower{background:#888}input.vis-configuration.vis-config-range:focus::-ms-fill-upper{background:#ccc}.vis-configuration-popup{position:absolute;background:rgba(57,76,89,.85);border:2px solid #f2faff;line-height:30px;height:30px;width:150px;text-align:center;color:#fff;font-size:14px;border-radius:4px;-webkit-transition:opacity .3s ease-in-out;-moz-transition:opacity .3s ease-in-out;transition:opacity .3s ease-in-out}.vis-configuration-popup:after,.vis-configuration-popup:before{left:100%;top:50%;border:solid transparent;content:" ";height:0;width:0;position:absolute;pointer-events:none}.vis-configuration-popup:after{border-color:rgba(136,183,213,0);border-left-color:rgba(57,76,89,.85);border-width:8px;margin-top:-8px}.vis-configuration-popup:before{border-color:rgba(194,225,245,0);border-left-color:#f2faff;border-width:12px;margin-top:-12px}div.vis-tooltip{position:absolute;visibility:hidden;padding:5px;white-space:nowrap;font-family:verdana;font-size:14px;color:#000;background-color:#f5f4ed;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;border:1px solid #808074;box-shadow:3px 3px 10px rgba(0,0,0,.2);pointer-events:none;z-index:5}div.vis-color-picker{position:absolute;top:0;left:30px;margin-top:-140px;margin-left:30px;width:310px;height:444px;z-index:1;padding:10px;border-radius:15px;background-color:#fff;display:none;box-shadow:rgba(0,0,0,.5) 0 0 10px 0}div.vis-color-picker div.vis-arrow{position:absolute;top:147px;left:5px}div.vis-color-picker div.vis-arrow::after,div.vis-color-picker div.vis-arrow::before{right:100%;top:50%;border:solid transparent;content:" ";height:0;width:0;position:absolute;pointer-events:none}div.vis-color-picker div.vis-arrow:after{border-color:rgba(255,255,255,0);border-right-color:#fff;border-width:30px;margin-top:-30px}div.vis-color-picker div.vis-color{position:absolute;width:289px;height:289px;cursor:pointer}div.vis-color-picker div.vis-brightness{position:absolute;top:313px}div.vis-color-picker div.vis-opacity{position:absolute;top:350px}div.vis-color-picker div.vis-selector{position:absolute;top:137px;left:137px;width:15px;height:15px;border-radius:15px;border:1px solid #fff;background:#4c4c4c;background:-moz-linear-gradient(top,#4c4c4c 0,#595959 12%,#666 25%,#474747 39%,#2c2c2c 50%,#000 51%,#111 60%,#2b2b2b 76%,#1c1c1c 91%,#131313 100%);background:-webkit-gradient(linear,left top,left bottom,color-stop(0,#4c4c4c),color-stop(12%,#595959),color-stop(25%,#666),color-stop(39%,#474747),color-stop(50%,#2c2c2c),color-stop(51%,#000),color-stop(60%,#111),color-stop(76%,#2b2b2b),color-stop(91%,#1c1c1c),color-stop(100%,#131313));background:-webkit-linear-gradient(top,#4c4c4c 0,#595959 12%,#666 25%,#474747 39%,#2c2c2c 50%,#000 51%,#111 60%,#2b2b2b 76%,#1c1c1c 91%,#131313 100%);background:-o-linear-gradient(top,#4c4c4c 0,#595959 12%,#666 25%,#474747 39%,#2c2c2c 50%,#000 51%,#111 60%,#2b2b2b 76%,#1c1c1c 91%,#131313 100%);background:-ms-linear-gradient(top,#4c4c4c 0,#595959 12%,#666 25%,#474747 39%,#2c2c2c 50%,#000 51%,#111 60%,#2b2b2b 76%,#1c1c1c 91%,#131313 100%);background:linear-gradient(to bottom,#4c4c4c 0,#595959 12%,#666 25%,#474747 39%,#2c2c2c 50%,#000 51%,#111 60%,#2b2b2b 76%,#1c1c1c 91%,#131313 100%)}div.vis-color-picker div.vis-new-color{position:absolute;width:140px;height:20px;border:1px solid rgba(0,0,0,.1);border-radius:5px;top:380px;left:159px;text-align:right;padding-right:2px;font-size:10px;color:rgba(0,0,0,.4);vertical-align:middle;line-height:20px}div.vis-color-picker div.vis-initial-color{position:absolute;width:140px;height:20px;border:1px solid rgba(0,0,0,.1);border-radius:5px;top:380px;left:10px;text-align:left;padding-left:2px;font-size:10px;color:rgba(0,0,0,.4);vertical-align:middle;line-height:20px}div.vis-color-picker div.vis-label{position:absolute;width:300px;left:10px}div.vis-color-picker div.vis-label.vis-brightness{top:300px}div.vis-color-picker div.vis-label.vis-opacity{top:338px}div.vis-color-picker div.vis-button{position:absolute;width:68px;height:25px;border-radius:10px;vertical-align:middle;text-align:center;line-height:25px;top:410px;border:2px solid #d9d9d9;background-color:#f7f7f7;cursor:pointer}div.vis-color-picker div.vis-button.vis-cancel{left:5px}div.vis-color-picker div.vis-button.vis-load{left:82px}div.vis-color-picker div.vis-button.vis-apply{left:159px}div.vis-color-picker div.vis-button.vis-save{left:236px}div.vis-color-picker input.vis-range{width:290px;height:20px}div.vis-network div.vis-manipulation{box-sizing:content-box;border-width:0;border-bottom:1px;border-style:solid;border-color:#d6d9d8;background:#fff;background:-moz-linear-gradient(top,#fff 0,#fcfcfc 48%,#fafafa 50%,#fcfcfc 100%);background:-webkit-gradient(linear,left top,left bottom,color-stop(0,#fff),color-stop(48%,#fcfcfc),color-stop(50%,#fafafa),color-stop(100%,#fcfcfc));background:-webkit-linear-gradient(top,#fff 0,#fcfcfc 48%,#fafafa 50%,#fcfcfc 100%);background:-o-linear-gradient(top,#fff 0,#fcfcfc 48%,#fafafa 50%,#fcfcfc 100%);background:-ms-linear-gradient(top,#fff 0,#fcfcfc 48%,#fafafa 50%,#fcfcfc 100%);background:linear-gradient(to bottom,#fff 0,#fcfcfc 48%,#fafafa 50%,#fcfcfc 100%);padding-top:4px;position:absolute;left:0;top:0;width:100%;height:28px}div.vis-network div.vis-edit-mode{position:absolute;left:0;top:5px;height:30px}div.vis-network div.vis-close{position:absolute;right:0;top:0;width:30px;height:30px;background-position:20px 3px;background-repeat:no-repeat;background-image:url(img/network/cross.png);cursor:pointer;-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}div.vis-network div.vis-close:hover{opacity:.6}div.vis-network div.vis-edit-mode div.vis-button,div.vis-network div.vis-manipulation div.vis-button{float:left;font-family:verdana;font-size:12px;-moz-border-radius:15px;border-radius:15px;display:inline-block;background-position:0 0;background-repeat:no-repeat;height:24px;margin-left:10px;cursor:pointer;padding:0 8px 0 8px;-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}div.vis-network div.vis-manipulation div.vis-button:hover{box-shadow:1px 1px 8px rgba(0,0,0,.2)}div.vis-network div.vis-manipulation div.vis-button:active{box-shadow:1px 1px 8px rgba(0,0,0,.5)}div.vis-network div.vis-manipulation div.vis-button.vis-back{background-image:url(img/network/backIcon.png)}div.vis-network div.vis-manipulation div.vis-button.vis-none:hover{box-shadow:1px 1px 8px transparent;cursor:default}div.vis-network div.vis-manipulation div.vis-button.vis-none:active{box-shadow:1px 1px 8px transparent}div.vis-network div.vis-manipulation div.vis-button.vis-none{padding:0}div.vis-network div.vis-manipulation div.notification{margin:2px;font-weight:700}div.vis-network div.vis-manipulation div.vis-button.vis-add{background-image:url(img/network/addNodeIcon.png)}div.vis-network div.vis-edit-mode div.vis-button.vis-edit,div.vis-network div.vis-manipulation div.vis-button.vis-edit{background-image:url(img/network/editIcon.png)}div.vis-network div.vis-edit-mode div.vis-button.vis-edit.vis-edit-mode{background-color:#fcfcfc;border:1px solid #ccc}div.vis-network div.vis-manipulation div.vis-button.vis-connect{background-image:url(img/network/connectIcon.png)}div.vis-network div.vis-manipulation div.vis-button.vis-delete{background-image:url(img/network/deleteIcon.png)}div.vis-network div.vis-edit-mode div.vis-label,div.vis-network div.vis-manipulation div.vis-label{margin:0 0 0 23px;line-height:25px}div.vis-network div.vis-manipulation div.vis-separator-line{float:left;display:inline-block;width:1px;height:21px;background-color:#bdbdbd;margin:0 7px 0 15px}div.vis-network div.vis-navigation div.vis-button{width:34px;height:34px;-moz-border-radius:17px;border-radius:17px;position:absolute;display:inline-block;background-position:2px 2px;background-repeat:no-repeat;cursor:pointer;-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}div.vis-network div.vis-navigation div.vis-button:hover{box-shadow:0 0 3px 3px rgba(56,207,21,.3)}div.vis-network div.vis-navigation div.vis-button:active{box-shadow:0 0 1px 3px rgba(56,207,21,.95)}div.vis-network div.vis-navigation div.vis-button.vis-up{background-image:url(img/network/upArrow.png);bottom:50px;left:55px}div.vis-network div.vis-navigation div.vis-button.vis-down{background-image:url(img/network/downArrow.png);bottom:10px;left:55px}div.vis-network div.vis-navigation div.vis-button.vis-left{background-image:url(img/network/leftArrow.png);bottom:10px;left:15px}div.vis-network div.vis-navigation div.vis-button.vis-right{background-image:url(img/network/rightArrow.png);bottom:10px;left:95px}div.vis-network div.vis-navigation div.vis-button.vis-zoomIn{background-image:url(img/network/plus.png);bottom:10px;right:15px}div.vis-network div.vis-navigation div.vis-button.vis-zoomOut{background-image:url(img/network/minus.png);bottom:10px;right:55px}div.vis-network div.vis-navigation div.vis-button.vis-zoomExtends{background-image:url(img/network/zoomExtends.png);bottom:50px;right:15px}.vis-current-time{background-color:#ff7f6e;width:2px;z-index:1;pointer-events:none}.vis-rolling-mode-btn{height:40px;width:40px;position:absolute;top:7px;right:20px;border-radius:50%;font-size:28px;cursor:pointer;opacity:.8;color:#fff;font-weight:700;text-align:center;background:#3876c2}.vis-rolling-mode-btn:before{content:"\26F6"}.vis-rolling-mode-btn:hover{opacity:1}.vis-custom-time{background-color:#6e94ff;width:2px;cursor:move;z-index:1}.vis-panel.vis-background.vis-horizontal .vis-grid.vis-horizontal{position:absolute;width:100%;height:0;border-bottom:1px solid}.vis-panel.vis-background.vis-horizontal .vis-grid.vis-minor{border-color:#e5e5e5}.vis-panel.vis-background.vis-horizontal .vis-grid.vis-major{border-color:#bfbfbf}.vis-data-axis .vis-y-axis.vis-major{width:100%;position:absolute;color:#4d4d4d;white-space:nowrap}.vis-data-axis .vis-y-axis.vis-major.vis-measure{padding:0;margin:0;border:0;visibility:hidden;width:auto}.vis-data-axis .vis-y-axis.vis-minor{position:absolute;width:100%;color:#bebebe;white-space:nowrap}.vis-data-axis .vis-y-axis.vis-minor.vis-measure{padding:0;margin:0;border:0;visibility:hidden;width:auto}.vis-data-axis .vis-y-axis.vis-title{position:absolute;color:#4d4d4d;white-space:nowrap;bottom:20px;text-align:center}.vis-data-axis .vis-y-axis.vis-title.vis-measure{padding:0;margin:0;visibility:hidden;width:auto}.vis-data-axis .vis-y-axis.vis-title.vis-left{bottom:0;-webkit-transform-origin:left top;-moz-transform-origin:left top;-ms-transform-origin:left top;-o-transform-origin:left top;transform-origin:left bottom;-webkit-transform:rotate(-90deg);-moz-transform:rotate(-90deg);-ms-transform:rotate(-90deg);-o-transform:rotate(-90deg);transform:rotate(-90deg)}.vis-data-axis .vis-y-axis.vis-title.vis-right{bottom:0;-webkit-transform-origin:right bottom;-moz-transform-origin:right bottom;-ms-transform-origin:right bottom;-o-transform-origin:right bottom;transform-origin:right bottom;-webkit-transform:rotate(90deg);-moz-transform:rotate(90deg);-ms-transform:rotate(90deg);-o-transform:rotate(90deg);transform:rotate(90deg)}.vis-legend{background-color:rgba(247,252,255,.65);padding:5px;border:1px solid #b3b3b3;box-shadow:2px 2px 10px rgba(154,154,154,.55)}.vis-legend-text{white-space:nowrap;display:inline-block}.vis-item{position:absolute;color:#1a1a1a;border-color:#97b0f8;border-width:1px;background-color:#d5ddf6;display:inline-block;z-index:1}.vis-item.vis-selected{border-color:#ffc200;background-color:#fff785;z-index:2}.vis-editable.vis-selected{cursor:move}.vis-item.vis-point.vis-selected{background-color:#fff785}.vis-item.vis-box{text-align:center;border-style:solid;border-radius:2px}.vis-item.vis-point{background:0 0}.vis-item.vis-dot{position:absolute;padding:0;border-width:4px;border-style:solid;border-radius:4px}.vis-item.vis-range{border-style:solid;border-radius:2px;box-sizing:border-box}.vis-item.vis-background{border:none;background-color:rgba(213,221,246,.4);box-sizing:border-box;padding:0;margin:0}.vis-item .vis-item-overflow{position:relative;width:100%;height:100%;padding:0;margin:0;overflow:hidden}.vis-item-visible-frame{white-space:nowrap}.vis-item.vis-range .vis-item-content{position:relative;display:inline-block}.vis-item.vis-background .vis-item-content{position:absolute;display:inline-block}.vis-item.vis-line{padding:0;position:absolute;width:0;border-left-width:1px;border-left-style:solid}.vis-item .vis-item-content{white-space:nowrap;box-sizing:border-box;padding:5px}.vis-item .vis-onUpdateTime-tooltip{position:absolute;background:#4f81bd;color:#fff;width:200px;text-align:center;white-space:nowrap;padding:5px;border-radius:1px;transition:.4s;-o-transition:.4s;-moz-transition:.4s;-webkit-transition:.4s}.vis-item .vis-delete,.vis-item .vis-delete-rtl{position:absolute;top:0;width:24px;height:24px;box-sizing:border-box;padding:0 5px;cursor:pointer;-webkit-transition:background .2s linear;-moz-transition:background .2s linear;-ms-transition:background .2s linear;-o-transition:background .2s linear;transition:background .2s linear}.vis-item .vis-delete{right:-24px}.vis-item .vis-delete-rtl{left:-24px}.vis-item .vis-delete-rtl:after,.vis-item .vis-delete:after{content:"\00D7";color:red;font-family:arial,sans-serif;font-size:22px;font-weight:700;-webkit-transition:color .2s linear;-moz-transition:color .2s linear;-ms-transition:color .2s linear;-o-transition:color .2s linear;transition:color .2s linear}.vis-item .vis-delete-rtl:hover,.vis-item .vis-delete:hover{background:red}.vis-item .vis-delete-rtl:hover:after,.vis-item .vis-delete:hover:after{color:#fff}.vis-item .vis-drag-center{position:absolute;width:100%;height:100%;top:0;left:0;cursor:move}.vis-item.vis-range .vis-drag-left{position:absolute;width:24px;max-width:20%;min-width:2px;height:100%;top:0;left:-4px;cursor:w-resize}.vis-item.vis-range .vis-drag-right{position:absolute;width:24px;max-width:20%;min-width:2px;height:100%;top:0;right:-4px;cursor:e-resize}.vis-range.vis-item.vis-readonly .vis-drag-left,.vis-range.vis-item.vis-readonly .vis-drag-right{cursor:auto}.vis-itemset{position:relative;padding:0;margin:0;box-sizing:border-box}.vis-itemset .vis-background,.vis-itemset .vis-foreground{position:absolute;width:100%;height:100%;overflow:visible}.vis-axis{position:absolute;width:100%;height:0;left:0;z-index:1}.vis-foreground .vis-group{position:relative;box-sizing:border-box;border-bottom:1px solid #bfbfbf}.vis-foreground .vis-group:last-child{border-bottom:none}.vis-nesting-group{cursor:pointer}.vis-nested-group{background:#f5f5f5}.vis-label.vis-nesting-group.expanded:before{content:"\25BC"}.vis-label.vis-nesting-group.collapsed-rtl:before{content:"\25C0"}.vis-label.vis-nesting-group.collapsed:before{content:"\25B6"}.vis-overlay{position:absolute;top:0;left:0;width:100%;height:100%;z-index:10}.vis-labelset{position:relative;overflow:hidden;box-sizing:border-box}.vis-labelset .vis-label{position:relative;left:0;top:0;width:100%;color:#4d4d4d;box-sizing:border-box}.vis-labelset .vis-label{border-bottom:1px solid #bfbfbf}.vis-labelset .vis-label.draggable{cursor:pointer}.vis-labelset .vis-label:last-child{border-bottom:none}.vis-labelset .vis-label .vis-inner{display:inline-block;padding:5px}.vis-labelset .vis-label .vis-inner.vis-hidden{padding:0}.vis-panel{position:absolute;padding:0;margin:0;box-sizing:border-box}.vis-panel.vis-bottom,.vis-panel.vis-center,.vis-panel.vis-left,.vis-panel.vis-right,.vis-panel.vis-top{border:1px #bfbfbf}.vis-panel.vis-center,.vis-panel.vis-left,.vis-panel.vis-right{border-top-style:solid;border-bottom-style:solid;overflow:hidden}.vis-left.vis-panel.vis-vertical-scroll,.vis-right.vis-panel.vis-vertical-scroll{height:100%;overflow-x:hidden;overflow-y:scroll}.vis-left.vis-panel.vis-vertical-scroll{direction:rtl}.vis-left.vis-panel.vis-vertical-scroll .vis-content{direction:ltr}.vis-right.vis-panel.vis-vertical-scroll{direction:ltr}.vis-right.vis-panel.vis-vertical-scroll .vis-content{direction:rtl}.vis-panel.vis-bottom,.vis-panel.vis-center,.vis-panel.vis-top{border-left-style:solid;border-right-style:solid}.vis-background{overflow:hidden}.vis-panel>.vis-content{position:relative}.vis-panel .vis-shadow{position:absolute;width:100%;height:1px;box-shadow:0 0 10px rgba(0,0,0,.8)}.vis-panel .vis-shadow.vis-top{top:-1px;left:0}.vis-panel .vis-shadow.vis-bottom{bottom:-1px;left:0}.vis-graph-group0{fill:#4f81bd;fill-opacity:0;stroke-width:2px;stroke:#4f81bd}.vis-graph-group1{fill:#f79646;fill-opacity:0;stroke-width:2px;stroke:#f79646}.vis-graph-group2{fill:#8c51cf;fill-opacity:0;stroke-width:2px;stroke:#8c51cf}.vis-graph-group3{fill:#75c841;fill-opacity:0;stroke-width:2px;stroke:#75c841}.vis-graph-group4{fill:#ff0100;fill-opacity:0;stroke-width:2px;stroke:#ff0100}.vis-graph-group5{fill:#37d8e6;fill-opacity:0;stroke-width:2px;stroke:#37d8e6}.vis-graph-group6{fill:#042662;fill-opacity:0;stroke-width:2px;stroke:#042662}.vis-graph-group7{fill:#00ff26;fill-opacity:0;stroke-width:2px;stroke:#00ff26}.vis-graph-group8{fill:#f0f;fill-opacity:0;stroke-width:2px;stroke:#f0f}.vis-graph-group9{fill:#8f3938;fill-opacity:0;stroke-width:2px;stroke:#8f3938}.vis-timeline .vis-fill{fill-opacity:.1;stroke:none}.vis-timeline .vis-bar{fill-opacity:.5;stroke-width:1px}.vis-timeline .vis-point{stroke-width:2px;fill-opacity:1}.vis-timeline .vis-legend-background{stroke-width:1px;fill-opacity:.9;fill:#fff;stroke:#c2c2c2}.vis-timeline .vis-outline{stroke-width:1px;fill-opacity:1;fill:#fff;stroke:#e5e5e5}.vis-timeline .vis-icon-fill{fill-opacity:.3;stroke:none}.vis-time-axis{position:relative;overflow:hidden}.vis-time-axis.vis-foreground{top:0;left:0;width:100%}.vis-time-axis.vis-background{position:absolute;top:0;left:0;width:100%;height:100%}.vis-time-axis .vis-text{position:absolute;color:#4d4d4d;padding:3px;overflow:hidden;box-sizing:border-box;white-space:nowrap}.vis-time-axis .vis-text.vis-measure{position:absolute;padding-left:0;padding-right:0;margin-left:0;margin-right:0;visibility:hidden}.vis-time-axis .vis-grid.vis-vertical{position:absolute;border-left:1px solid}.vis-time-axis .vis-grid.vis-vertical-rtl{position:absolute;border-right:1px solid}.vis-time-axis .vis-grid.vis-minor{border-color:#e5e5e5}.vis-time-axis .vis-grid.vis-major{border-color:#bfbfbf}.vis-timeline{position:relative;border:1px solid #bfbfbf;overflow:hidden;padding:0;margin:0;box-sizing:border-box}
\ No newline at end of file
This diff could not be displayed because it is too large.
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1,shrink-to-fit=no">
<title>历史上的今天-无数据</title>
<link rel="stylesheet" href="css/vendor.css">
</head>
<body class="history">
<div class="container-fluid">
<div class="wrapper-ipad-app-h5">
<h1 class="text-center">一起进入历史上的2月16日</h1>
<nav class="nav justify-content-center">
<a class="nav-link" href="#">全部</a>
<a class="nav-link" href="#">事件</a>
<a class="nav-link" href="#">人物</a>
<a class="nav-link active" href="#">纪念</a>
</nav>
<div class="list-history-default"></div>
</div>
</div>
<script src="js/plugins/jquery.min.js"></script>
<script src="js/vendor.js" merge="true"></script>
</body>
</html>
\ No newline at end of file
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1,shrink-to-fit=no">
<title>历史上的今天</title>
<link rel="stylesheet" href="css/vendor.css">
</head>
<body class="history">
<div class="container-fluid">
<div class="wrapper-ipad-app-h5">
<h1 class="text-center">一起进入历史上的2月16日</h1>
<nav class="nav justify-content-center">
<a class="nav-link active" href="#">全部</a>
<a class="nav-link" href="#">事件</a>
<a class="nav-link" href="#">人物</a>
<a class="nav-link" href="#">纪念</a>
</nav>
<ul class="list-unstyled list-history">
<li>
<div class="time">1032</div>
<p>宋英宗赵曙出生。</p>
</li>
<li>
<div class="time">1222</div>
<p></p>
<a href="">日莲</a>,日本佛教日莲宗创始人出生。</li>
<li class="end">
<p>留存当下,回忆过去。</p>
</li>
<li class="more">
<a href="#">更多</a>
</li>
</ul>
</div>
</div>
<script src="js/plugins/jquery.min.js"></script>
<script src="js/vendor.js" merge="true"></script>
</body>
</html>
\ No newline at end of file
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1,shrink-to-fit=no">
<title>鲁迅介绍内容部分</title>
<link rel="stylesheet" href="css/vendor.css">
</head>
<body>
<div class="container-fluid">
<div class="wrapper-ipad-app-h5">
<div class="media-yuci" id="accordion">
<div class="card mb-1">
<div class="card-header">
<h5 class="mb-0" data-toggle="collapse" data-target="#collapse0">
<button class="btn btn-link">鲁迅墓</button>
</h5>
</div>
<div class="collapse show" id="collapse0" data-parent="#accordion">
<div class="card-body">
<div class="media">
<img class="align-self-start mr-3" src="temp/mu.jpg">
<div class="media-body">
<p>在上海市鲁迅公园(原虹口公园)内。鲁迅遗体原葬于上海西郊万国公墓。1956年鲁迅逝世20周年时,迁葬于此,并建鲁迅纪念馆。墓用花岗石构筑,面积1600平方米。墓穴后有壁式墓碑,上刻毛泽东的题词:“鲁迅先生之墓”。墓园中立有鲁迅坐式铜像。为全国重点文物保护单位。</p>
</div>
</div>
</div>
</div>
</div>
<div class="card mb-1">
<div class="card-header">
<h5 class="mb-0 collapsed" data-toggle="collapse" data-target="#collapse1">
<button class="btn btn-link">鲁迅夫人</button>
</h5>
</div>
<div class="collapse" id="collapse1" data-parent="#accordion">
<div class="card-body">
<ul class="list-unstyled mb-0">
<li>
<h5 class="media-title">许广平
<small>(1898—1968)</small>
</h5>
<div class="media">
<img class="align-self-start mr-3" src="temp/luxun-furen.jpg">
<div class="media-body">
<p>广东番禺(今广州)人,笔名景宋。鲁迅夫人。1926年毕业于北京女子师范大学。后协助鲁迅工作。在上海参加抗日救亡和爱国民主运动,曾任《民主》周刊编辑。1948年赴东北解放区。1949年出席全国政协第一届全体会议。后任中央人民政府政务院副秘书长、全国人大和全国政协常委、全国妇联副主席、全国文联主席团委员、民进中央副主席。1960年加入中国共产党。著有《欣慰的纪念》。</p>
</div>
</div>
</li>
</ul>
</div>
</div>
</div>
<div class="card mb-1">
<div class="card-header">
<h5 class="mb-0 collapsed" data-toggle="collapse" data-target="#collapse2">
<button class="btn btn-link">鲁迅胞弟</button>
</h5>
</div>
<div class="collapse" id="collapse2" data-parent="#accordion">
<div class="card-body">
<ul class="list-unstyled mb-0">
<li>
<h5 class="media-title">周建人
<small>(1888—1984)</small>
</h5>
<div class="media">
<img class="align-self-start mr-3" src="temp/luxun-furen.jpg">
<div class="media-body">
<p>浙江绍兴人,字松寿,又字乔峰。鲁迅胞弟。1920年在北京大学攻读哲学,次年任上海商务印书馆编辑,从事生物学的研究和编译工作。先后在上海大学、神州大学、上海暨南大学、安徽大学任教。1932年参与筹建中国民权保障同盟。后在上海组织马列主义读书会,开展抗日救亡斗争。抗战胜利后,任生活书店、新知书店编辑。1945年12月与马叙伦等在上海发起成立中国民主促进会。1948年加入中国共产党。1949年9月出席全国政协第一届全体会议。后任国家出版总署副署长、高等教育部副部长、浙江省人民政府副主席、浙江省省长、全国人大常委会副委员长、全国政协副主席、民进中央主席、民盟中央常委。是中共第九至十一届中央委员。著有《生物进化浅说》,译有达尔文《物种起源》。</p>
</div>
</div>
</li>
<li>
<h5 class="media-title">周作人
<small>(1885—1967)</small>
</h5>
<div class="media">
<img class="align-self-start mr-3" src="temp/luxun-furen.jpg">
<div class="media-body">
<p>中国散文家、翻译家。原名櫆寿,字启明,晚年改名遐寿,浙江绍兴人。青年时代留学日本,与兄周树人(鲁迅)一起翻译介绍外国文学。五四运动时任北京大学等校教授,并从事写作。论文《人的文学》、《美文》,新诗《小河》在新文学运动中均有影响。所作散文,风格冲淡朴讷,从容平和。20世纪30年代和林语堂一起鼓吹“闲适幽默”小品。抗战时期曾任伪华北政务委员会教育总署督办。著有《自己的园地》、《雨天的书》、《谈龙集》、《谈虎集》、《瓜豆集》及《中国新文学的源流》等。新中国成立后主要从事翻译工作,译有《日本狂言选》、《伊索寓言》等;著有《鲁迅的故家》、《鲁迅小说中的人物》、《知堂回想录》等。</p>
</div>
</div>
</li>
</ul>
</div>
</div>
</div>
<div class="card mb-1">
<div class="card-header">
<h5 class="mb-0 collapsed" data-toggle="collapse" data-target="#collapse3">
<button class="btn btn-link">鲁迅主编刊物</button>
</h5>
</div>
<div class="collapse" id="collapse3" data-parent="#accordion">
<div class="card-body">
<ul class="list-unstyled mb-0">
<li>
<h5 class="media-title">《莽原》</h5>
<div class="media">
<div class="media-body">
<p>文艺刊物。1925年4月在北京创刊。鲁迅主编。初为周刊,附于《京报》发行,后由北京莽原出版社独立出版,北新书局发行,共出三十二期。1926年1月改为半月刊,由未名社印行。主要发表短篇小说、散文和翻译作品。鲁迅的《朝花夕拾》(发表时题作《旧事重提》)等曾发表于此。1927年12月出至第二卷第二十三、二十四期(合刊)停刊,共出四十八期。</p>
</div>
</div>
</li>
<li>
<h5 class="media-title">《萌芽月刊》</h5>
<div class="media">
<div class="media-body">
<p>文艺刊物。1930年1月在上海创刊。鲁迅主编。第三期起为中国左翼作家联盟的机关刊物之一。着重介绍无产阶级文艺理论和文学作品。第三期曾辟“三月纪念号”,纪念马克思、恩格斯和巴黎公社,第五期为“五月各节纪念号”,纪念“五一”和“五卅”。1930年5月出至第五期被国民党政府查禁。第六期改名《新地》出版,随即停刊。</p>
<p class="text-center">
<img src="temp/luxun-furen.jpg">
</p>
</div>
</div>
</li>
</ul>
</div>
</div>
</div>
</div>
</div>
</div>
<script src="js/plugins/jquery.min.js"></script>
<script src="js/vendor.js" merge="true"></script>
</body>
</html>
\ No newline at end of file
package com.dookay.cihai.core.word.domain;
import com.dookay.cihai.core.word.enums.RelationOneWayType;
import lombok.Data;
import java.io.Serializable;
import javax.persistence.Id;
import javax.persistence.Table;
import java.util.Date;
import java.util.List;
/**
* 单向关系
* @author wangwei
* @since 2018年01月23日
* @version V1.0
*/
@Data
@Table(name = "t_relation_one_way")
public class RelationOneWayDomain implements Serializable {
private static final long serialVersionUID = 1L;
/**
*
*/
@Id
private Long id;
/**
*
*/
private Long wordId;
/**
*
*/
private Integer type;
/**
*
*/
private String groupName;
/**
*
*/
private Long relateWordId;
/**
*
*/
private Integer groupRank;
/**
*
*/
private Date createTime;
public RelationOneWayDomain(){}
public RelationOneWayDomain(Long wordId, RelationOneWayType type, String groupName, Long relateWordId) {
Date now = new Date();
this.wordId = wordId;
this.type = type.getValue();
this.groupName = groupName;
this.relateWordId = relateWordId;
this.createTime = now;
this.groupRank = 1;
}
}
......@@ -40,10 +40,10 @@ public class OneCharacterDTO {
return null;
}
String description = "";
String baikeBrief = word.getBaikeBrief();
int i = StringUtils.indexOf(baikeBrief, '。');
String baikeParaphrase = word.getBaikeParaphrase();
int i = StringUtils.indexOf(baikeParaphrase, '。');
if (i != -1) {
description = StringUtils.substring(baikeBrief, 0, i + 1);
description = StringUtils.substring(baikeParaphrase, 0, i + 1);
}
OneCharacterDTO dto = new OneCharacterDTO();
dto.setWordId(word.getId());
......
......@@ -14,8 +14,11 @@ package com.dookay.cihai.core.word.dto;
* *
****************************************/
import com.dookay.cihai.core.word.domain.RelationOneWayDomain;
import com.dookay.cihai.core.word.domain.WordDomain;
import com.dookay.cihai.core.word.enums.WordType;
import com.dookay.cihai.core.word.query.RelationOneWayQuery;
import com.dookay.cihai.core.word.service.IRelationOneWayService;
import com.dookay.cihai.core.word.service.IWordRelationService;
import com.dookay.coral.common.core.utils.lang.CollectionUtils;
import com.dookay.coral.common.core.utils.lang.StringUtils;
......@@ -50,7 +53,7 @@ public class WordDTO {
@ApiModelProperty("封面图 若不存在则返回null")
private ImageModel thumb;
public static WordDTO fromDomain(WordDomain word, IWordRelationService wordRelationService) {
public static WordDTO fromDomain(WordDomain word, IWordRelationService wordRelationService, IRelationOneWayService relationOneWayService) {
WordDTO wordDTO = new WordDTO();
wordDTO.setWordId(word.getId());
wordDTO.setWord(word.getWord());
......@@ -61,8 +64,6 @@ public class WordDTO {
wordDTO.setType(type);
wordDTO.setHasParaph(!StringUtils.isAllBlank(word.getBody(), word.getWordBrief()));
wordDTO.setHasBaike(!StringUtils.isAllBlank(word.getBaikeBrief(), word.getBaikeParaphrase()));
List<WordDomain> relateWord = wordRelationService.getRelateWords(word.getId());
wordDTO.setHasRelated(CollectionUtils.isNotEmpty(relateWord));
if (StringUtils.isNotEmpty(word.getBaikePhotos())) {
ImageModel thumb =
ImageModel.toList(word.getBaikePhotos())
......@@ -72,6 +73,12 @@ public class WordDTO {
.orElse(null);
wordDTO.setThumb(thumb);
}
// List<WordDomain> relateWord = wordRelationService.getRelateWords(word.getId());
// wordDTO.setHasRelated(CollectionUtils.isNotEmpty(relateWord));
RelationOneWayQuery relationOneWayQuery = new RelationOneWayQuery();
relationOneWayQuery.setWordId(word.getId());
List<RelationOneWayDomain> relateList = relationOneWayService.getList(relationOneWayQuery);
wordDTO.setHasRelated(CollectionUtils.isNotEmpty(relateList));
return wordDTO;
}
}
package com.dookay.cihai.core.word.enums;
/*****************************************
* *
* @dookay.com Internet make it happen *
* ----------- ----------------------- *
* dddd ddddd Internet make it happen *
* o o o Internet make it happen *
* k k k Internet make it happen *
* a a a Internet make it happen *
* yyyy yyyyy Internet make it happen *
* ----------- ----------------------- *
* @dookay.com Internet make it happen *
* *
****************************************/
import com.dookay.coral.common.core.enums.IEnum;
/**
* @author houkun
* @date 2018/1/9
*/
public enum RelationOneWayType implements IEnum {
MAIN(1, "主要"),
SIDE(2, "次要");
private int value;
private String description;
RelationOneWayType(int value, String description) {
this.value = value;
this.description = description;
}
@Override
public int getValue() {
return value;
}
@Override
public String getDescription() {
return description;
}
}
package com.dookay.cihai.core.word.mapper;
import com.dookay.coral.common.core.persistence.Mapper;
import com.dookay.cihai.core.word.domain.RelationOneWayDomain;
/**
* 单向关系
* @author wangwei
* @since 2018年01月23日
* @version V1.0
*/
public interface RelationOneWayMapper extends Mapper<RelationOneWayDomain> {
}
package com.dookay.cihai.core.word.query;
import com.dookay.coral.common.core.persistence.Query;
import lombok.Data;
import tk.mybatis.mapper.entity.Example;
import com.dookay.coral.common.core.persistence.criteria.QueryCriteria;
import com.dookay.cihai.core.word.domain.RelationOneWayDomain;
/**
* 单向关系
* @author wangwei
* @since 2018年01月23日
* @version V1.0
*/
@Data
public class RelationOneWayQuery extends Query {
private Long wordId;
@Override
public QueryCriteria toCriteria() {
QueryCriteria queryCriteria = new QueryCriteria(RelationOneWayDomain.class);
Example.Criteria criteria = queryCriteria.createCriteria();
if (valid(wordId)) {
criteria.andEqualTo("wordId", wordId);
}
//todo 写查询逻辑
return queryCriteria;
}
}
package com.dookay.cihai.core.word.service;
import com.dookay.coral.common.core.service.IBaseService;
import com.dookay.cihai.core.word.domain.RelationOneWayDomain;
import java.util.List;
/**
* @author wangwei
* @since 2018年01月23日
* @version V1.0
*/
public interface IRelationOneWayService extends IBaseService<RelationOneWayDomain> {
/**
* 批量保存
* @author houkun
* @date 2018/1/23
*/
void saveBatch(List<RelationOneWayDomain> list);
}
package com.dookay.cihai.core.word.service.impl;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.dookay.coral.common.core.service.impl.BaseServiceImpl;
import com.dookay.cihai.core.word.mapper.RelationOneWayMapper;
import com.dookay.cihai.core.word.domain.RelationOneWayDomain;
import com.dookay.cihai.core.word.service.IRelationOneWayService;
import java.util.List;
/**
* 单向关系
* @author wangwei
* @since 2018年01月23日
* @version V1.0
*/
@SuppressWarnings("ALL")
@Service("relationOneWayService")
public class RelationOneWayServiceImpl extends BaseServiceImpl<RelationOneWayDomain> implements IRelationOneWayService {
@Autowired
private RelationOneWayMapper relationOneWayMapper;
@Override
public void saveBatch(List<RelationOneWayDomain> list) {
relationOneWayMapper.insertList(list);
}
}
<context schema="cihai">
<project>cihai-core</project>
<jdbcConnection driverClass="com.mysql.jdbc.Driver"
connectionURL="jdbc:mysql://192.168.2.24:3306/cihai?characterEncoding=utf8"
connectionURL="jdbc:mysql://192.168.2.28:3306/cihai?characterEncoding=utf8"
uName="root" password="dookay100001"/>
<!-- 数据类型 -->
......@@ -36,7 +36,10 @@
<!--<table tableName="t_theme_word" domainObjectName="ThemeWord"-->
<!--packageName="com.dookay.cihai.core.theme" desc="专题词条关系" author="wangwei">-->
<!--</table>-->
<table tableName="t_word_relation" domainObjectName="WordRelation"
packageName="com.dookay.cihai.core.word" desc="词条关系" author="wangwei">
<!--<table tableName="t_word_relation" domainObjectName="WordRelation"-->
<!--packageName="com.dookay.cihai.core.word" desc="词条关系" author="wangwei">-->
<!--</table>-->
<table tableName="t_relation_one_way" domainObjectName="RelationOneWay"
packageName="com.dookay.cihai.core.word" desc="单向关系" author="wangwei">
</table>
</context>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace="com.dookay.cihai.core.word.mapper.RelationOneWayMapper" >
<!-- 公共查询语句 -->
<sql id="selectSql">
select
<trim suffixOverrides="," >
a.`id` as 'id',
a.`word_id` as 'wordId',
a.`type` as 'type',
a.`group_name` as 'groupName',
a.`relate_word_id` as 'relateWordId',
a.`group_rank` as 'groupRank',
a.`create_time` as 'createTime',
</trim>
from
`t_relation_one_way` as a
</sql>
</mapper>
\ No newline at end of file
......@@ -24,6 +24,7 @@ import com.dookay.cihai.core.word.domain.WordDomain;
import com.dookay.cihai.core.word.dto.WordDTO;
import com.dookay.cihai.core.word.query.WordQuery;
import com.dookay.cihai.core.word.service.ICustomDictionaryService;
import com.dookay.cihai.core.word.service.IRelationOneWayService;
import com.dookay.cihai.core.word.service.IWordRelationService;
import com.dookay.cihai.core.word.service.IWordService;
import com.dookay.coral.common.core.utils.lang.StringUtils;
......@@ -69,6 +70,8 @@ public class HomeController extends BaseController {
@Autowired
private AipDefaultClient aipDefaultClient;
@Autowired
private IRelationOneWayService relationOneWayService;
/**
* 首页
......@@ -101,7 +104,7 @@ public class HomeController extends BaseController {
query.setKeyword(keyword);
WordDomain first = wordService.getFirst(query);
if (first != null) {
return successResult("搜索结果", WordDTO.fromDomain(first, wordRelationService));
return successResult("搜索结果", WordDTO.fromDomain(first, wordRelationService, relationOneWayService));
}
try {
String result = null;
......@@ -115,9 +118,9 @@ public class HomeController extends BaseController {
wordQuery.setKeyword(null);
wordDomain = wordService.getFirst(wordQuery);
if (wordDomain == null) return errorResult(String.format("暂无\"%s\"检索结果", keyword));
return successResult("搜索结果", WordDTO.fromDomain(wordDomain, wordRelationService));
return successResult("搜索结果", WordDTO.fromDomain(wordDomain, wordRelationService, relationOneWayService));
}
return successResult("success", WordDTO.fromDomain(wordDomain, wordRelationService));
return successResult("success", WordDTO.fromDomain(wordDomain, wordRelationService, relationOneWayService));
} catch (Exception ex) {
return errorResult(String.format("暂无\"%s\"检索结果", keyword));
}
......@@ -152,7 +155,7 @@ public class HomeController extends BaseController {
wordDomain = wordService.getFirst(wordQuery);
if (wordDomain == null) return errorResult("暂无检索结果");
}
return successResult("搜索结果", WordDTO.fromDomain(wordDomain, wordRelationService));
return successResult("搜索结果", WordDTO.fromDomain(wordDomain, wordRelationService, relationOneWayService));
} catch (Exception e) {
return errorResult("暂无检索结果");
}
......
......@@ -17,6 +17,7 @@ package com.dookay.cihai.pc.controller;
import com.dookay.cihai.core.word.domain.WordDomain;
import com.dookay.cihai.core.word.dto.WordDTO;
import com.dookay.cihai.core.word.enums.WordType;
import com.dookay.cihai.core.word.service.IRelationOneWayService;
import com.dookay.cihai.core.word.service.IWordRelationService;
import com.dookay.cihai.core.word.service.IWordService;
import com.dookay.cihai.pc.controller.vo.*;
......@@ -45,6 +46,8 @@ public class WordController extends BaseController {
private IWordService wordService;
@Autowired
private IWordRelationService wordRelationService;
@Autowired
private IRelationOneWayService relationOneWayService;
/**
......@@ -56,7 +59,7 @@ public class WordController extends BaseController {
@RequestMapping(value = "/{id}", method = RequestMethod.GET)
public ModelAndView detail(@PathVariable Long id) {
WordDomain wordDomain = wordService.get(id);
WordDTO wordDTO = WordDTO.fromDomain(wordDomain, wordRelationService);
WordDTO wordDTO = WordDTO.fromDomain(wordDomain, wordRelationService, relationOneWayService);
Integer type = wordDTO.getType();
Boolean hasParaph = wordDTO.getHasParaph();
Boolean hasBaike = wordDTO.getHasBaike();
......
Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!