Commit 1ff973af by 侯昆

jsp 页面整合

1 parent c35625b7
Showing 67 changed files with 1952 additions and 67 deletions
......@@ -162,7 +162,8 @@ public class WordRelateController extends BaseController {
@RequestMapping(value = "/relation/add", method = RequestMethod.POST)
public JsonResult relationAdd(@ModelAttribute AddRelationForm addRelationForm) {
WordQuery q = new WordQuery();
q.setWordIn(addRelationForm.getWords());
List<String> words = addRelationForm.getWords().stream().map(StringUtils::trim).collect(Collectors.toList());
q.setWordIn(words);
List<WordDomain> wordList = wordService.getList(q);
if (wordList.size() < addRelationForm.getWords().size()) {
return errorResult("存在无效词");
......
debug=false
# 数据库连接
spring.datasource.url=jdbc:mysql://192.168.2.24:3306/cihai
spring.datasource.url=jdbc:mysql://192.168.2.28:3306/cihai
spring.datasource.username=root
# 加密后的密码
spring.datasource.password=AmwpshLB35Fgazrs4rCfGlwNBZOTD34ezY/zS751V+7iSJHjr3tDNkpOfnW/y0fjFcMTNX0ycMt3KIUnDi8JYg==
......
spring.datasource.url=jdbc:mysql://192.168.2.24:3306/cihai
spring.datasource.url=jdbc:mysql://192.168.2.28:3306/cihai
spring.datasource.username=root
# 加密后的密码
spring.datasource.password=AmwpshLB35Fgazrs4rCfGlwNBZOTD34ezY/zS751V+7iSJHjr3tDNkpOfnW/y0fjFcMTNX0ycMt3KIUnDi8JYg==
......
spring.datasource.url=jdbc:mysql://192.168.2.24:3306/cihai
spring.datasource.url=jdbc:mysql://192.168.2.28:3306/cihai
spring.datasource.username=root
# 加密后的密码
spring.datasource.password=AmwpshLB35Fgazrs4rCfGlwNBZOTD34ezY/zS751V+7iSJHjr3tDNkpOfnW/y0fjFcMTNX0ycMt3KIUnDi8JYg==
......
......@@ -50,6 +50,11 @@
<artifactId>apache-jsp</artifactId>
<scope>${jetty.scope}</scope>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
<scope>${jetty.scope}</scope>
</dependency>
<!--表现层-->
<!--工具-->
......
......@@ -31,9 +31,7 @@ import com.dookay.cihai.core.word.service.IWordService;
import com.dookay.coral.common.core.utils.lang.StringUtils;
import com.dookay.coral.common.web.controller.BaseController;
import com.dookay.coral.common.web.response.JsonResult;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import io.swagger.annotations.*;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.util.MimeTypeUtils;
......@@ -72,7 +70,7 @@ public class HomeController extends BaseController {
* @date 2018/1/9
*/
@RequestMapping(value = "/search", method = RequestMethod.GET)
@ApiOperation(value = "搜索词", httpMethod = "GET", response = WordDTO.class)
@ApiOperation(value = "搜索词", httpMethod = "GET", response = WordDTO.class, authorizations = @Authorization(value = "user", scopes = @AuthorizationScope(scope = "scope", description = "test")))
public JsonResult search(@ApiParam(value = "搜索的关键词", required = true) @RequestParam String keyword) {
log.info("进入搜索:" + keyword);
if (StringUtils.isBlank(keyword)) {
......
......@@ -14,34 +14,27 @@ package com.dookay.cihai.app.controller;
* *
****************************************/
import com.dookay.cihai.app.controller.dto.CharacterBaikeDTO;
import com.dookay.cihai.app.controller.dto.CharacterParaphDTO;
import com.dookay.cihai.app.controller.dto.StatementBaikeDTO;
import com.dookay.cihai.app.controller.dto.StatementParaphDTO;
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.core.word.domain.WordDomain;
import com.dookay.cihai.core.word.service.IWordService;
import com.dookay.coral.common.web.controller.BaseController;
import com.dookay.coral.common.web.response.JsonResult;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.util.MimeTypeUtils;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.servlet.ModelAndView;
/**
* 词管理
*
* @author houkun
* @date 2018/1/9
* @date 2018/1/14
*/
@RestController
@RequestMapping("/word")
@Api(value = "词")
public class WordController extends BaseController {
@Controller
@RequestMapping("/html/word")
public class WordHtmlController extends BaseController {
@Autowired
private IWordService wordService;
......@@ -53,10 +46,11 @@ public class WordController extends BaseController {
* @date 2018/1/9
*/
@RequestMapping(value = "/character/paraph/{id}", method = RequestMethod.GET)
@ApiOperation(value = "单字释义", httpMethod = "GET", produces = MimeTypeUtils.APPLICATION_JSON_VALUE, response = CharacterParaphDTO.class)
public JsonResult characterParaph(@PathVariable("id") @ApiParam(required = true) Long id) {
public ModelAndView characterParaph(@PathVariable("id") Long id) {
WordDomain character = wordService.get(id);
return successResult("success", CharacterParaphDTO.fromDomain(character));
ModelAndView mv = new ModelAndView("/word/character_paraph");
mv.addObject("vo", CharacterParaphVO.fromDomain(character));
return mv;
}
/**
......@@ -66,10 +60,11 @@ public class WordController extends BaseController {
* @date 2018/1/9
*/
@RequestMapping(value = "/character/baike/{id}", method = RequestMethod.GET)
@ApiOperation(value = "单字百科", httpMethod = "GET", produces = MimeTypeUtils.APPLICATION_JSON_VALUE, response = CharacterBaikeDTO.class)
public JsonResult characterBaike(@PathVariable("id") @ApiParam(required = true) Long id) {
public ModelAndView characterBaike(@PathVariable("id") Long id) {
WordDomain character = wordService.get(id);
return successResult("success", CharacterBaikeDTO.fromDomain(character));
ModelAndView mv = new ModelAndView("/word/character_baike");
mv.addObject("vo", CharacterBaikeVO.fromDomain(character));
return mv;
}
/**
......@@ -79,10 +74,11 @@ public class WordController extends BaseController {
* @date 2018/1/9
*/
@RequestMapping(value = "/statement/paraph/{id}", method = RequestMethod.GET)
@ApiOperation(value = "词组释义", httpMethod = "GET", produces = MimeTypeUtils.APPLICATION_JSON_VALUE, response = StatementParaphDTO.class)
public JsonResult statementParaph(@PathVariable("id") @ApiParam(required = true) Long id) {
public ModelAndView statementParaph(@PathVariable("id") Long id) {
WordDomain statement = wordService.get(id);
return successResult("success", StatementParaphDTO.fromDomain(statement));
ModelAndView mv = new ModelAndView("/word/statement_paraph");
mv.addObject("vo", StatementParaphVO.fromDomain(statement));
return mv;
}
/**
......@@ -92,10 +88,10 @@ public class WordController extends BaseController {
* @date 2018/1/9
*/
@RequestMapping(value = "/statement/baike/{id}", method = RequestMethod.GET)
@ApiOperation(value = "词组百科", httpMethod = "GET", produces = MimeTypeUtils.APPLICATION_JSON_VALUE, response = StatementBaikeDTO.class)
public JsonResult statementBaike(@PathVariable("id") @ApiParam(required = true) Long id) {
public ModelAndView statementBaike(@PathVariable("id") Long id) {
WordDomain statement = wordService.get(id);
return successResult("success", StatementBaikeDTO.fromDomain(statement));
ModelAndView mv = new ModelAndView("/word/statement_baike");
mv.addObject("vo", StatementBaikeVO.fromDomain(statement));
return mv;
}
}
package com.dookay.cihai.app.controller.dto;
/*****************************************
* *
* @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.utils.lang.StringUtils;
import lombok.Data;
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;
/**
* 语词释义模型
*
* @author houkun
* @date 2018/1/14
*/
@Data
public class ParaphBodyDTO {
private String main;
private List<String> description;
public ParaphBodyDTO(String content) {
int firstPeriodIndex = StringUtils.indexOf(content, '。');
if (firstPeriodIndex == -1) {
this.main = content + '。';
} else {
this.main = StringUtils.trim(StringUtils.substring(content, 0, firstPeriodIndex + 1));
String descriptionContent = StringUtils.substring(content, firstPeriodIndex + 1);
this.description = Arrays.stream(StringUtils.split(descriptionContent, '\r'))
.filter(StringUtils::isNoneBlank)
.map(StringUtils::trim)
.collect(Collectors.toList());
}
}
}
package com.dookay.cihai.app.controller.dto;
package com.dookay.cihai.app.controller.vo;
/*****************************************
* *
......@@ -17,7 +17,6 @@ package com.dookay.cihai.app.controller.dto;
import com.dookay.cihai.core.word.domain.WordDomain;
import com.dookay.coral.common.core.utils.lang.StringUtils;
import com.dookay.coral.common.web.utils.upload.model.ImageModel;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
......@@ -27,11 +26,12 @@ import java.util.stream.Collectors;
/**
* 单字百科
*
* @author houkun
* @date 2018/1/9
*/
@Data
public class CharacterBaikeDTO {
public class CharacterBaikeVO {
@ApiModelProperty("词id")
private Long wordId;
......@@ -40,7 +40,7 @@ public class CharacterBaikeDTO {
@ApiModelProperty("上面的简介")
private List<String> brief;
@ApiModelProperty("下面的释义主体")
private String body;
private List<String> body;
@ApiModelProperty("拼写")
private List<String> spell;
@ApiModelProperty("相册")
......@@ -48,8 +48,8 @@ public class CharacterBaikeDTO {
@ApiModelProperty("视频列表")
private List<ImageModel> videos;
public static CharacterBaikeDTO fromDomain(WordDomain word) {
CharacterBaikeDTO dto = new CharacterBaikeDTO();
public static CharacterBaikeVO fromDomain(WordDomain word) {
CharacterBaikeVO dto = new CharacterBaikeVO();
dto.setWordId(word.getId());
dto.setWord(word.getWord());
List<String> brief = Arrays.stream(StringUtils.split(word.getBaikeBrief(), '`'))
......@@ -62,7 +62,11 @@ public class CharacterBaikeDTO {
.map(StringUtils::trim)
.collect(Collectors.toList());
dto.setSpell(spell);
dto.setBody(word.getBaikeParaphrase());
List<String> body = Arrays.stream(StringUtils.split(word.getBaikeParaphrase(), '\r'))
.filter(StringUtils::isNoneBlank)
.map(StringUtils::trim)
.collect(Collectors.toList());
dto.setBody(body);
if (StringUtils.isNotEmpty(word.getBaikePhotos())) {
dto.setImages(ImageModel.toList(word.getBaikePhotos()));
}
......
package com.dookay.cihai.app.controller.dto;
package com.dookay.cihai.app.controller.vo;
/*****************************************
* *
......@@ -14,6 +14,7 @@ package com.dookay.cihai.app.controller.dto;
* *
****************************************/
import com.dookay.cihai.app.controller.dto.ParaphBodyDTO;
import com.dookay.cihai.core.word.domain.WordDomain;
import com.dookay.coral.common.core.utils.lang.StringUtils;
import io.swagger.annotations.ApiModelProperty;
......@@ -29,7 +30,7 @@ import java.util.stream.Collectors;
* @date 2018/1/9
*/
@Data
public class CharacterParaphDTO {
public class CharacterParaphVO {
@ApiModelProperty("词id")
private Long wordId;
@ApiModelProperty("字")
......@@ -37,12 +38,12 @@ public class CharacterParaphDTO {
@ApiModelProperty("上面的简介")
private List<String> brief;
@ApiModelProperty("下面的释义主体")
private String body;
private List<ParaphBodyDTO> body;
@ApiModelProperty("拼写")
private List<String> spell;
public static CharacterParaphDTO fromDomain(WordDomain word) {
CharacterParaphDTO dto = new CharacterParaphDTO();
public static CharacterParaphVO fromDomain(WordDomain word) {
CharacterParaphVO dto = new CharacterParaphVO();
dto.setWordId(word.getId());
dto.setWord(word.getWord());
List<String> brief = Arrays.stream(StringUtils.split(word.getWordBrief(), '`'))
......@@ -55,7 +56,11 @@ public class CharacterParaphDTO {
.map(StringUtils::trim)
.collect(Collectors.toList());
dto.setSpell(spell);
dto.setBody(word.getBody());
List<ParaphBodyDTO> body = Arrays.stream(StringUtils.split(word.getBody(), '`'))
.filter(StringUtils::isNoneBlank)
.map(ParaphBodyDTO::new)
.collect(Collectors.toList());
dto.setBody(body);
return dto;
}
}
package com.dookay.cihai.app.controller.dto;
package com.dookay.cihai.app.controller.vo;
/*****************************************
* *
......@@ -31,7 +31,7 @@ import java.util.stream.Collectors;
* @date 2018/1/9
*/
@Data
public class StatementBaikeDTO {
public class StatementBaikeVO {
@ApiModelProperty("词id")
private Long wordId;
@ApiModelProperty("词")
......@@ -39,7 +39,7 @@ public class StatementBaikeDTO {
@ApiModelProperty("上面的简介")
private List<String> brief;
@ApiModelProperty("下面的释义主体")
private String body;
private List<String> body;
@ApiModelProperty("拼写")
private String spell;
@ApiModelProperty("相册")
......@@ -47,8 +47,8 @@ public class StatementBaikeDTO {
@ApiModelProperty("视频列表")
private List<ImageModel> videos;
public static StatementBaikeDTO fromDomain(WordDomain word) {
StatementBaikeDTO dto = new StatementBaikeDTO();
public static StatementBaikeVO fromDomain(WordDomain word) {
StatementBaikeVO dto = new StatementBaikeVO();
dto.setWordId(word.getId());
dto.setWord(word.getWord());
List<String> brief = Arrays.stream(StringUtils.split(word.getBaikeBrief(), '`'))
......@@ -57,7 +57,11 @@ public class StatementBaikeDTO {
.collect(Collectors.toList());
dto.setBrief(brief);
dto.setSpell(word.getWordSpell());
dto.setBody(word.getBaikeParaphrase());
List<String> body = Arrays.stream(StringUtils.split(word.getBaikeParaphrase(), '\r'))
.filter(StringUtils::isNoneBlank)
.map(StringUtils::trim)
.collect(Collectors.toList());
dto.setBody(body);
if (StringUtils.isNotEmpty(word.getBaikePhotos())) {
dto.setImages(ImageModel.toList(word.getBaikePhotos()));
}
......
package com.dookay.cihai.app.controller.dto;
package com.dookay.cihai.app.controller.vo;
/*****************************************
* *
......@@ -14,6 +14,7 @@ package com.dookay.cihai.app.controller.dto;
* *
****************************************/
import com.dookay.cihai.app.controller.dto.ParaphBodyDTO;
import com.dookay.cihai.core.word.domain.WordDomain;
import com.dookay.coral.common.core.utils.lang.StringUtils;
import io.swagger.annotations.ApiModelProperty;
......@@ -30,7 +31,7 @@ import java.util.stream.Collectors;
* @date 2018/1/9
*/
@Data
public class StatementParaphDTO {
public class StatementParaphVO {
@ApiModelProperty("词id")
private Long wordId;
......@@ -39,12 +40,12 @@ public class StatementParaphDTO {
@ApiModelProperty("上面的简介")
private List<String> brief;
@ApiModelProperty("下面的释义主体")
private String body;
private List<ParaphBodyDTO> body;
@ApiModelProperty("拼写")
private String spell;
public static StatementParaphDTO fromDomain(WordDomain word) {
StatementParaphDTO dto = new StatementParaphDTO();
public static StatementParaphVO fromDomain(WordDomain word) {
StatementParaphVO dto = new StatementParaphVO();
dto.setWordId(word.getId());
dto.setWord(word.getWord());
List<String> brief = Arrays.stream(StringUtils.split(word.getWordBrief(), '`'))
......@@ -53,7 +54,11 @@ public class StatementParaphDTO {
.collect(Collectors.toList());
dto.setBrief(brief);
dto.setSpell(word.getWordSpell());
dto.setBody(word.getBody());
List<ParaphBodyDTO> body = Arrays.stream(StringUtils.split(word.getBody(), '`'))
.filter(StringUtils::isNoneBlank)
.map(ParaphBodyDTO::new)
.collect(Collectors.toList());
dto.setBody(body);
return dto;
}
}
package com.dookay.cihai.app.helper;
/*****************************************
* *
* @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.utils.lang.StringUtils;
import com.google.common.collect.Lists;
import java.util.List;
import java.util.stream.Collectors;
/**
* @author houkun
* @date 2018/1/14
*/
public class HtmlHelper {
private HtmlHelper() {
}
public static List<List<String>> paraphBriefToHtml(List<String> brief) {
List<List<String>> partition = Lists.partition(brief, 3);
List<List<String>> collect = partition.stream().map(
g -> g.stream()
.map(b -> {
String[] split = StringUtils.split(b, ":");
if (split.length != 2) {
split = StringUtils.split(b, ":");
}
if (split.length != 2) {
return null;
}
if (g.indexOf(b) == 0) {
return String.format(
"<td>%s:<strong>%s</strong></td>",
split[0], split[1]);
} else {
return String.format(
"<td>%s: %s</td>",
split[0], split[1]);
}
})
.filter(StringUtils::isNoneBlank)
.collect(Collectors.toList())).collect(Collectors.toList());
return collect;
}
/**
* 简介转html
*
* @param brief
* @return
* @author houkun
* @date 2018/1/14
*/
public static List<String> baikeBreifToHtml(List<String> brief) {
List<String> collect = brief.stream()
.map(b -> {
String[] split = StringUtils.split(b, ":");
if (split.length != 2) {
split = StringUtils.split(b, ":");
}
if (split.length != 2) {
return null;
}
return String.format(
"<tr>\n" +
" <th width=\"80\">%s:</th>\n" +
" <td>%s</td>\n" +
"</tr>",
split[0], split[1]);
})
.filter(StringUtils::isNoneBlank)
.collect(Collectors.toList());
return collect;
}
}
debug=false
# 数据库连接
spring.datasource.url=jdbc:mysql://192.168.2.24:3306/cihai
spring.datasource.url=jdbc:mysql://192.168.2.28:3306/cihai
spring.datasource.username=root
# 加密后的密码
spring.datasource.password=AmwpshLB35Fgazrs4rCfGlwNBZOTD34ezY/zS751V+7iSJHjr3tDNkpOfnW/y0fjFcMTNX0ycMt3KIUnDi8JYg==
......
spring.datasource.url=jdbc:mysql://192.168.2.24:3306/cihai
spring.datasource.url=jdbc:mysql://192.168.2.28:3306/cihai
spring.datasource.username=root
# 加密后的密码
spring.datasource.password=AmwpshLB35Fgazrs4rCfGlwNBZOTD34ezY/zS751V+7iSJHjr3tDNkpOfnW/y0fjFcMTNX0ycMt3KIUnDi8JYg==
......
spring.datasource.url=jdbc:mysql://192.168.2.24:3306/cihai
spring.datasource.url=jdbc:mysql://192.168.2.28:3306/cihai
spring.datasource.username=root
# 加密后的密码
spring.datasource.password=AmwpshLB35Fgazrs4rCfGlwNBZOTD34ezY/zS751V+7iSJHjr3tDNkpOfnW/y0fjFcMTNX0ycMt3KIUnDi8JYg==
......
......@@ -16,6 +16,9 @@ spring.datasource.druid.connection-properties=config.decrypt=true;config.decrypt
spring.datasource.druid.filter.config.enabled=true
# 关闭druid监控
spring.datasource.druid.filter.stat.enabled=false
# jsp页面配置
spring.mvc.view.prefix=/WEB-INF/jsp/
spring.mvc.view.suffix=.jsp
# mybatis插件配置
# 设置扫描 mapper xml路径
mapper.mappers=com.dookay.coral.common.core.persistence.Mapper
......
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ include file="/WEB-INF/jsp/include/taglib.jsp" %>
<%--添加此行消除额外空格--%>
<%@ 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
<%@ include file="/WEB-INF/jsp/include/taglib.jsp" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%--添加此行消除额外空格--%>
<%@ 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>辞海-${param.pageTitle}</title>
<link rel="stylesheet" href="${ctx}/static/css/vendor.css">
</head>
<body>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags" %>
<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %>
<%@ taglib prefix="cl" uri="coral-list" %>
<c:set var="ctx" value="${pageContext.request.contextPath}"/>
\ No newline at end of file
<%@ page import="com.dookay.cihai.app.helper.HtmlHelper" %>
<%@ page import="com.google.common.collect.Lists" %>
<jsp:useBean id="vo" scope="request" type="com.dookay.cihai.app.controller.vo.CharacterBaikeVO"/>
<%@ include file="/WEB-INF/jsp/include/taglib.jsp" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<jsp:include page="/WEB-INF/jsp/include/header.jsp">
<jsp:param name="pageTitle" value="百科"/>
</jsp:include>
<%--<%=JSON.toJSONString(vo)%>--%>
<div class="container-fluid">
<div class="wrapper-ipad-app-h5">
<div class="header-main-2 clearfix">
<div class="header-main-left">
<h1>${vo.word}</h1>
<div class="header-main-desc">
<div class="word-read">
<c:forEach var="item" items="${vo.spell}">
<span>【${item}】</span>
</c:forEach>
<a class="link js-play-voice" href="javascript:;">
<i class="icon icon-shengyin"></i>
</a>
</div>
<%--<h4>长鼻目象科哺乳动物</h4>--%>
</div>
</div>
<c:if test="${vo.images.size() > 0}">
<div class="header-main-right">
<div class="album">
<a>
<img src="${vo.images.get(0).file}">
<span>${vo.word}图册(${vo.images.size()})</span>
</a>
</div>
</div>
</c:if>
</div>
<c:if test="${vo.brief.size() > 0}">
<div class="row encyclopedias">
<c:forEach var="group" items="<%=Lists.partition(HtmlHelper.baikeBreifToHtml(vo.getBrief()), 7)%>">
<div class="col-sm-6">
<table>
<tbody>
<c:forEach items="${group}" var="item">
${item}
</c:forEach>
</tbody>
</table>
</div>
</c:forEach>
</div>
</c:if>
<article class="content-detail">
<ul class="nav nav-tabs nav-tabs-main" role="tablist">
<c:if test="${vo.body.size() > 0}">
<li class="nav-item">
<a class="nav-link active" href="#content-detail-tab-0" role="tab" data-toggle="tab">释义</a>
</li>
</c:if>
<c:if test="${vo.videos.size() > 0}">
<li class="nav-item">
<a class="nav-link" href="#content-detail-tab-1" role="tab" data-toggle="tab">视频
<div class="badge badge-secondary">${vo.videos.size()}</div>
</a>
</li>
</c:if>
</ul>
<div class="tab-content pt-3">
<c:if test="${vo.body.size() > 0}">
<div class="tab-pane fade show active" id="content-detail-tab-0" role="tabpanel">
<c:forEach items="${vo.body}" var="item">
<p>${item}</p>
</c:forEach>
</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">
<div class="row list-img">
<c:forEach items="${group}" var="item">
<div class="col-sm-3">
<a>
<img class="img-fluid" src="${item.file}">
</a>
</div>
</c:forEach>
</div>
</c:forEach>
</div>
</c:if>
</div>
</article>
</div>
</div>
<jsp:include page="/WEB-INF/jsp/include/footer.jsp"/>
<%@ page import="com.alibaba.fastjson.JSON" %>
<%@ page import="com.dookay.cihai.app.helper.HtmlHelper" %>
<%@ page import="com.google.common.collect.Lists" %>
<%@ include file="/WEB-INF/jsp/include/taglib.jsp" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<jsp:useBean id="vo" scope="request" type="com.dookay.cihai.app.controller.vo.CharacterParaphVO"/>
<jsp:include page="/WEB-INF/jsp/include/header.jsp">
<jsp:param name="pageTitle" value="语词"/>
</jsp:include>
<%--<%=JSON.toJSONString(vo)%>--%>
<div class="container-fluid">
<div class="wrapper-ipad-app-h5">
<div class="header-main-1 clearfix">
<div class="header-main-left">
<h1>${vo.word}</h1>
<div class="header-main-word-dropdown clearfix">
<a class="btn btn-sm btn-link dropdown-toggle collapsed js-collapse" href="#header-main-collapse-1" data-toggle="collapse">字源</a>
<a class="btn btn-sm btn-link dropdown-toggle collapsed js-collapse" href="#header-main-collapse-2" data-toggle="collapse">书法</a>
</div>
</div>
<div class="header-main-right">
<div class="word-read">
<c:forEach var="item" items="${vo.spell}">
<span>【${item}】</span>
</c:forEach>
<a class="link js-play-voice" href="javascript:;">
<i class="icon icon-shengyin"></i>
</a>
</div>
<c:if test="${vo.brief.size()>0}">
<table>
<tbody>
<c:forEach items="<%=HtmlHelper.paraphBriefToHtml(vo.getBrief())%>" var="group">
<tr>
<c:forEach items="${group}" var="item">
${item}
</c:forEach>
</tr>
</c:forEach>
</tbody>
</table>
</c:if>
</div>
<div class="clear collapse-wrapper">
<div class="collapse" id="header-main-collapse-1">
<img class="img-fluid" src="${ctx}/static/temp/ziyuan.jpg" width="225">
</div>
<div class="collapse" id="header-main-collapse-2">
<img class="img-fluid" src="${ctx}/static/temp/ziyuan.jpg" width="225">
</div>
</div>
</div>
<article class="content-detail">
<ul class="nav nav-tabs nav-tabs-main" role="tablist">
<c:if test="${vo.body.size() > 0}">
<li class="nav-item">
<a class="nav-link active" 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">精简释义</a>
</li>
</c:if>
</ul>
<div class="tab-content pt-3">
<div class="tab-pane fade show active" id="content-detail-tab-0" role="tabpanel">
<ol class="list-paddingleft-2">
<c:forEach items="${vo.body}" var="item" varStatus="status">
<li data-num="${status.index + 1}.">
<p>
<strong>${item.main}</strong>
</p>
<c:forEach var="d" items="${item.description}">
<p>${d}</p>
</c:forEach>
</li>
</c:forEach>
</ol>
</div>
<div class="tab-pane fade" id="content-detail-tab-1" role="tabpanel">
<div class="row">
<c:forEach items="<%=Lists.partition(vo.getBody(), 5)%>" var="group" varStatus="groupStatus">
<div class="col-sm-6">
<ol class="list-paddingleft-2">
<c:forEach items="${group}" var="item" varStatus="itemStatus">
<li data-num="${(groupStatus.index) * 5 + itemStatus.index + 1}.">
<p>
<strong>${item.main}</strong>
</p>
</li>
</c:forEach>
</ol>
</div>
</c:forEach>
</div>
</div>
</div>
</article>
</div>
</div>
<jsp:include page="/WEB-INF/jsp/include/footer.jsp"/>
<%@ page import="com.dookay.cihai.app.helper.HtmlHelper" %>
<%@ page import="com.google.common.collect.Lists" %>
<%@ include file="/WEB-INF/jsp/include/taglib.jsp" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<jsp:useBean id="vo" scope="request" type="com.dookay.cihai.app.controller.vo.StatementBaikeVO"/>
<jsp:include page="/WEB-INF/jsp/include/header.jsp">
<jsp:param name="pageTitle" value="百科"/>
</jsp:include>
<%--<%=JSON.toJSONString(vo)%>--%>
<div class="container-fluid">
<div class="wrapper-ipad-app-h5">
<div class="header-main-2 clearfix">
<div class="header-main-left">
<h1>${vo.word}</h1>
<div class="header-main-desc">
<div class="word-read">
<span>【 <c:forEach var="item" items="${vo.spell}"> ${item} </c:forEach> 】</span>
<a class="link js-play-voice" href="javascript:;">
<i class="icon icon-shengyin"></i>
</a>
</div>
<%--<h4>长鼻目象科哺乳动物</h4>--%>
</div>
</div>
<c:if test="${vo.images.size() > 0}">
<div class="header-main-right">
<div class="album">
<a>
<img src="${vo.images.get(0).file}">
<span>${vo.word}图册(${vo.images.size()})</span>
</a>
</div>
</div>
</c:if>
</div>
<c:if test="${vo.brief.size() > 0}">
<div class="row encyclopedias">
<c:forEach var="group" items="<%=Lists.partition(HtmlHelper.baikeBreifToHtml(vo.getBrief()), 7)%>">
<div class="col-sm-6">
<table>
<tbody>
<c:forEach items="${group}" var="item">
${item}
</c:forEach>
</tbody>
</table>
</div>
</c:forEach>
</div>
</c:if>
<article class="content-detail">
<ul class="nav nav-tabs nav-tabs-main" role="tablist">
<c:if test="${vo.body.size() > 0}">
<li class="nav-item">
<a class="nav-link active" href="#content-detail-tab-0" role="tab" data-toggle="tab">释义</a>
</li>
</c:if>
<c:if test="${vo.videos.size() > 0}">
<li class="nav-item">
<a class="nav-link" href="#content-detail-tab-1" role="tab" data-toggle="tab">视频
<div class="badge badge-secondary">${vo.videos.size()}</div>
</a>
</li>
</c:if>
</ul>
<div class="tab-content pt-3">
<c:if test="${vo.body.size() > 0}">
<div class="tab-pane fade show active" id="content-detail-tab-0" role="tabpanel">
<c:forEach items="${vo.body}" var="item">
<p>${item}</p>
</c:forEach>
</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">
<div class="row list-img">
<c:forEach items="${group}" var="item">
<div class="col-sm-3">
<a>
<img class="img-fluid" src="${item.file}">
</a>
</div>
</c:forEach>
</div>
</c:forEach>
</div>
</c:if>
</div>
</article>
</div>
</div>
<jsp:include page="/WEB-INF/jsp/include/footer.jsp"/>
<%@ page import="com.alibaba.fastjson.JSON" %>
<%@ page import="com.dookay.cihai.app.helper.HtmlHelper" %>
<%@ page import="com.google.common.collect.Lists" %>
<%@ include file="/WEB-INF/jsp/include/taglib.jsp" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<jsp:useBean id="vo" scope="request" type="com.dookay.cihai.app.controller.vo.StatementParaphVO"/>
<jsp:include page="/WEB-INF/jsp/include/header.jsp">
<jsp:param name="pageTitle" value="语词"/>
</jsp:include>
<%--<%=JSON.toJSONString(vo)%>--%>
<div class="container-fluid">
<div class="wrapper-ipad-app-h5">
<div class="header-main-2 clearfix">
<div class="header-main-left">
<h1>${vo.word}</h1>
<div class="header-main-desc">
<div class="word-read">
<span>【 <c:forEach var="item" items="${vo.spell}"> ${item} </c:forEach> 】</span>
<a class="link js-play-voice" href="javascript:;">
<i class="icon icon-shengyin"></i>
</a>
</div>
<%--<h4>长鼻目象科哺乳动物</h4>--%>
</div>
</div>
</div>
<c:if test="${vo.brief.size() > 0}">
<div class="row encyclopedias">
<c:forEach var="group" items="<%=Lists.partition(HtmlHelper.baikeBreifToHtml(vo.getBrief()), 7)%>">
<div class="col-sm-6">
<table>
<tbody>
<c:forEach items="${group}" var="item">
${item}
</c:forEach>
</tbody>
</table>
</div>
</c:forEach>
</div>
</c:if>
<article class="content-detail">
<ul class="nav nav-tabs nav-tabs-main" role="tablist">
<c:if test="${vo.body.size() > 0}">
<li class="nav-item">
<a class="nav-link active" 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">精简释义</a>
</li>
</c:if>
</ul>
<div class="tab-content pt-3">
<div class="tab-pane fade show active" id="content-detail-tab-0" role="tabpanel">
<ol class="list-paddingleft-2">
<c:forEach items="${vo.body}" var="item" varStatus="status">
<li data-num="${status.index + 1}.">
<p>
<strong>${item.main}</strong>
</p>
<c:forEach var="d" items="${item.description}">
<p>${d}</p>
</c:forEach>
</li>
</c:forEach>
</ol>
</div>
<div class="tab-pane fade" id="content-detail-tab-1" role="tabpanel">
<div class="row">
<c:forEach items="<%=Lists.partition(vo.getBody(), 5)%>" var="group" varStatus="groupStatus">
<div class="col-sm-6">
<ol class="list-paddingleft-2">
<c:forEach items="${group}" var="item" varStatus="itemStatus">
<li data-num="${(groupStatus.index) * 5 + itemStatus.index + 1}.">
<p>
<strong>${item.main}</strong>
</p>
</li>
</c:forEach>
</ol>
</div>
</c:forEach>
</div>
</div>
</div>
</article>
</div>
</div>
<jsp:include page="/WEB-INF/jsp/include/footer.jsp"/>
This diff could not be displayed because it is too large.
function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
/**
* --------------------------------------------------------------------------
* Bootstrap (v4.0.0-beta.2): alert.js
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
* --------------------------------------------------------------------------
*/
var Alert = function () {
/**
* ------------------------------------------------------------------------
* Constants
* ------------------------------------------------------------------------
*/
var NAME = 'alert';
var VERSION = '4.0.0-beta.2';
var DATA_KEY = 'bs.alert';
var EVENT_KEY = "." + DATA_KEY;
var DATA_API_KEY = '.data-api';
var JQUERY_NO_CONFLICT = $.fn[NAME];
var TRANSITION_DURATION = 150;
var Selector = {
DISMISS: '[data-dismiss="alert"]'
};
var Event = {
CLOSE: "close" + EVENT_KEY,
CLOSED: "closed" + EVENT_KEY,
CLICK_DATA_API: "click" + EVENT_KEY + DATA_API_KEY
};
var ClassName = {
ALERT: 'alert',
FADE: 'fade',
SHOW: 'show'
/**
* ------------------------------------------------------------------------
* Class Definition
* ------------------------------------------------------------------------
*/
};
var Alert =
/*#__PURE__*/
function () {
function Alert(element) {
this._element = element;
} // getters
var _proto = Alert.prototype;
// public
_proto.close = function close(element) {
element = element || this._element;
var rootElement = this._getRootElement(element);
var customEvent = this._triggerCloseEvent(rootElement);
if (customEvent.isDefaultPrevented()) {
return;
}
this._removeElement(rootElement);
};
_proto.dispose = function dispose() {
$.removeData(this._element, DATA_KEY);
this._element = null;
}; // private
_proto._getRootElement = function _getRootElement(element) {
var selector = Util.getSelectorFromElement(element);
var parent = false;
if (selector) {
parent = $(selector)[0];
}
if (!parent) {
parent = $(element).closest("." + ClassName.ALERT)[0];
}
return parent;
};
_proto._triggerCloseEvent = function _triggerCloseEvent(element) {
var closeEvent = $.Event(Event.CLOSE);
$(element).trigger(closeEvent);
return closeEvent;
};
_proto._removeElement = function _removeElement(element) {
var _this = this;
$(element).removeClass(ClassName.SHOW);
if (!Util.supportsTransitionEnd() || !$(element).hasClass(ClassName.FADE)) {
this._destroyElement(element);
return;
}
$(element).one(Util.TRANSITION_END, function (event) {
return _this._destroyElement(element, event);
}).emulateTransitionEnd(TRANSITION_DURATION);
};
_proto._destroyElement = function _destroyElement(element) {
$(element).detach().trigger(Event.CLOSED).remove();
}; // static
Alert._jQueryInterface = function _jQueryInterface(config) {
return this.each(function () {
var $element = $(this);
var data = $element.data(DATA_KEY);
if (!data) {
data = new Alert(this);
$element.data(DATA_KEY, data);
}
if (config === 'close') {
data[config](this);
}
});
};
Alert._handleDismiss = function _handleDismiss(alertInstance) {
return function (event) {
if (event) {
event.preventDefault();
}
alertInstance.close(this);
};
};
_createClass(Alert, null, [{
key: "VERSION",
get: function get() {
return VERSION;
}
}]);
return Alert;
}();
/**
* ------------------------------------------------------------------------
* Data Api implementation
* ------------------------------------------------------------------------
*/
$(document).on(Event.CLICK_DATA_API, Selector.DISMISS, Alert._handleDismiss(new Alert()));
/**
* ------------------------------------------------------------------------
* jQuery
* ------------------------------------------------------------------------
*/
$.fn[NAME] = Alert._jQueryInterface;
$.fn[NAME].Constructor = Alert;
$.fn[NAME].noConflict = function () {
$.fn[NAME] = JQUERY_NO_CONFLICT;
return Alert._jQueryInterface;
};
return Alert;
}($);
//# sourceMappingURL=alert.js.map
\ No newline at end of file
function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
/**
* --------------------------------------------------------------------------
* Bootstrap (v4.0.0-beta.2): button.js
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
* --------------------------------------------------------------------------
*/
var Button = function () {
/**
* ------------------------------------------------------------------------
* Constants
* ------------------------------------------------------------------------
*/
var NAME = 'button';
var VERSION = '4.0.0-beta.2';
var DATA_KEY = 'bs.button';
var EVENT_KEY = "." + DATA_KEY;
var DATA_API_KEY = '.data-api';
var JQUERY_NO_CONFLICT = $.fn[NAME];
var ClassName = {
ACTIVE: 'active',
BUTTON: 'btn',
FOCUS: 'focus'
};
var Selector = {
DATA_TOGGLE_CARROT: '[data-toggle^="button"]',
DATA_TOGGLE: '[data-toggle="buttons"]',
INPUT: 'input',
ACTIVE: '.active',
BUTTON: '.btn'
};
var Event = {
CLICK_DATA_API: "click" + EVENT_KEY + DATA_API_KEY,
FOCUS_BLUR_DATA_API: "focus" + EVENT_KEY + DATA_API_KEY + " " + ("blur" + EVENT_KEY + DATA_API_KEY)
/**
* ------------------------------------------------------------------------
* Class Definition
* ------------------------------------------------------------------------
*/
};
var Button =
/*#__PURE__*/
function () {
function Button(element) {
this._element = element;
} // getters
var _proto = Button.prototype;
// public
_proto.toggle = function toggle() {
var triggerChangeEvent = true;
var addAriaPressed = true;
var rootElement = $(this._element).closest(Selector.DATA_TOGGLE)[0];
if (rootElement) {
var input = $(this._element).find(Selector.INPUT)[0];
if (input) {
if (input.type === 'radio') {
if (input.checked && $(this._element).hasClass(ClassName.ACTIVE)) {
triggerChangeEvent = false;
} else {
var activeElement = $(rootElement).find(Selector.ACTIVE)[0];
if (activeElement) {
$(activeElement).removeClass(ClassName.ACTIVE);
}
}
}
if (triggerChangeEvent) {
if (input.hasAttribute('disabled') || rootElement.hasAttribute('disabled') || input.classList.contains('disabled') || rootElement.classList.contains('disabled')) {
return;
}
input.checked = !$(this._element).hasClass(ClassName.ACTIVE);
$(input).trigger('change');
}
input.focus();
addAriaPressed = false;
}
}
if (addAriaPressed) {
this._element.setAttribute('aria-pressed', !$(this._element).hasClass(ClassName.ACTIVE));
}
if (triggerChangeEvent) {
$(this._element).toggleClass(ClassName.ACTIVE);
}
};
_proto.dispose = function dispose() {
$.removeData(this._element, DATA_KEY);
this._element = null;
}; // static
Button._jQueryInterface = function _jQueryInterface(config) {
return this.each(function () {
var data = $(this).data(DATA_KEY);
if (!data) {
data = new Button(this);
$(this).data(DATA_KEY, data);
}
if (config === 'toggle') {
data[config]();
}
});
};
_createClass(Button, null, [{
key: "VERSION",
get: function get() {
return VERSION;
}
}]);
return Button;
}();
/**
* ------------------------------------------------------------------------
* Data Api implementation
* ------------------------------------------------------------------------
*/
$(document).on(Event.CLICK_DATA_API, Selector.DATA_TOGGLE_CARROT, function (event) {
event.preventDefault();
var button = event.target;
if (!$(button).hasClass(ClassName.BUTTON)) {
button = $(button).closest(Selector.BUTTON);
}
Button._jQueryInterface.call($(button), 'toggle');
}).on(Event.FOCUS_BLUR_DATA_API, Selector.DATA_TOGGLE_CARROT, function (event) {
var button = $(event.target).closest(Selector.BUTTON)[0];
$(button).toggleClass(ClassName.FOCUS, /^focus(in)?$/.test(event.type));
});
/**
* ------------------------------------------------------------------------
* jQuery
* ------------------------------------------------------------------------
*/
$.fn[NAME] = Button._jQueryInterface;
$.fn[NAME].Constructor = Button;
$.fn[NAME].noConflict = function () {
$.fn[NAME] = JQUERY_NO_CONFLICT;
return Button._jQueryInterface;
};
return Button;
}($);
//# sourceMappingURL=button.js.map
\ No newline at end of file
/**
* --------------------------------------------------------------------------
* Bootstrap (v4.0.0-alpha.6): index.js
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
* --------------------------------------------------------------------------
*/
(function () {
if (typeof $ === 'undefined') {
throw new Error('Bootstrap\'s JavaScript requires jQuery. jQuery must be included before Bootstrap\'s JavaScript.');
}
var version = $.fn.jquery.split(' ')[0].split('.');
var minMajor = 1;
var ltMajor = 2;
var minMinor = 9;
var minPatch = 1;
var maxMajor = 4;
if (version[0] < ltMajor && version[1] < minMinor || version[0] === minMajor && version[1] === minMinor && version[2] < minPatch || version[0] >= maxMajor) {
throw new Error('Bootstrap\'s JavaScript requires at least jQuery v1.9.1 but less than v4.0.0');
}
})($);
//# sourceMappingURL=index.js.map
\ No newline at end of file
function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
function _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }
/**
* --------------------------------------------------------------------------
* Bootstrap (v4.0.0-beta.2): popover.js
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
* --------------------------------------------------------------------------
*/
var Popover = function () {
/**
* ------------------------------------------------------------------------
* Constants
* ------------------------------------------------------------------------
*/
var NAME = 'popover';
var VERSION = '4.0.0-beta.2';
var DATA_KEY = 'bs.popover';
var EVENT_KEY = "." + DATA_KEY;
var JQUERY_NO_CONFLICT = $.fn[NAME];
var CLASS_PREFIX = 'bs-popover';
var BSCLS_PREFIX_REGEX = new RegExp("(^|\\s)" + CLASS_PREFIX + "\\S+", 'g');
var Default = $.extend({}, Tooltip.Default, {
placement: 'right',
trigger: 'click',
content: '',
template: '<div class="popover" role="tooltip">' + '<div class="arrow"></div>' + '<h3 class="popover-header"></h3>' + '<div class="popover-body"></div></div>'
});
var DefaultType = $.extend({}, Tooltip.DefaultType, {
content: '(string|element|function)'
});
var ClassName = {
FADE: 'fade',
SHOW: 'show'
};
var Selector = {
TITLE: '.popover-header',
CONTENT: '.popover-body'
};
var Event = {
HIDE: "hide" + EVENT_KEY,
HIDDEN: "hidden" + EVENT_KEY,
SHOW: "show" + EVENT_KEY,
SHOWN: "shown" + EVENT_KEY,
INSERTED: "inserted" + EVENT_KEY,
CLICK: "click" + EVENT_KEY,
FOCUSIN: "focusin" + EVENT_KEY,
FOCUSOUT: "focusout" + EVENT_KEY,
MOUSEENTER: "mouseenter" + EVENT_KEY,
MOUSELEAVE: "mouseleave" + EVENT_KEY
/**
* ------------------------------------------------------------------------
* Class Definition
* ------------------------------------------------------------------------
*/
};
var Popover =
/*#__PURE__*/
function (_Tooltip) {
_inheritsLoose(Popover, _Tooltip);
function Popover() {
return _Tooltip.apply(this, arguments) || this;
}
var _proto = Popover.prototype;
// overrides
_proto.isWithContent = function isWithContent() {
return this.getTitle() || this._getContent();
};
_proto.addAttachmentClass = function addAttachmentClass(attachment) {
$(this.getTipElement()).addClass(CLASS_PREFIX + "-" + attachment);
};
_proto.getTipElement = function getTipElement() {
this.tip = this.tip || $(this.config.template)[0];
return this.tip;
};
_proto.setContent = function setContent() {
var $tip = $(this.getTipElement()); // we use append for html objects to maintain js events
this.setElementContent($tip.find(Selector.TITLE), this.getTitle());
this.setElementContent($tip.find(Selector.CONTENT), this._getContent());
$tip.removeClass(ClassName.FADE + " " + ClassName.SHOW);
}; // private
_proto._getContent = function _getContent() {
return this.element.getAttribute('data-content') || (typeof this.config.content === 'function' ? this.config.content.call(this.element) : this.config.content);
};
_proto._cleanTipClass = function _cleanTipClass() {
var $tip = $(this.getTipElement());
var tabClass = $tip.attr('class').match(BSCLS_PREFIX_REGEX);
if (tabClass !== null && tabClass.length > 0) {
$tip.removeClass(tabClass.join(''));
}
}; // static
Popover._jQueryInterface = function _jQueryInterface(config) {
return this.each(function () {
var data = $(this).data(DATA_KEY);
var _config = typeof config === 'object' ? config : null;
if (!data && /destroy|hide/.test(config)) {
return;
}
if (!data) {
data = new Popover(this, _config);
$(this).data(DATA_KEY, data);
}
if (typeof config === 'string') {
if (typeof data[config] === 'undefined') {
throw new Error("No method named \"" + config + "\"");
}
data[config]();
}
});
};
_createClass(Popover, null, [{
key: "VERSION",
// getters
get: function get() {
return VERSION;
}
}, {
key: "Default",
get: function get() {
return Default;
}
}, {
key: "NAME",
get: function get() {
return NAME;
}
}, {
key: "DATA_KEY",
get: function get() {
return DATA_KEY;
}
}, {
key: "Event",
get: function get() {
return Event;
}
}, {
key: "EVENT_KEY",
get: function get() {
return EVENT_KEY;
}
}, {
key: "DefaultType",
get: function get() {
return DefaultType;
}
}]);
return Popover;
}(Tooltip);
/**
* ------------------------------------------------------------------------
* jQuery
* ------------------------------------------------------------------------
*/
$.fn[NAME] = Popover._jQueryInterface;
$.fn[NAME].Constructor = Popover;
$.fn[NAME].noConflict = function () {
$.fn[NAME] = JQUERY_NO_CONFLICT;
return Popover._jQueryInterface;
};
return Popover;
}($);
//# sourceMappingURL=popover.js.map
\ No newline at end of file
function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
/**
* --------------------------------------------------------------------------
* Bootstrap (v4.0.0-beta.2): scrollspy.js
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
* --------------------------------------------------------------------------
*/
var ScrollSpy = function () {
/**
* ------------------------------------------------------------------------
* Constants
* ------------------------------------------------------------------------
*/
var NAME = 'scrollspy';
var VERSION = '4.0.0-beta.2';
var DATA_KEY = 'bs.scrollspy';
var EVENT_KEY = "." + DATA_KEY;
var DATA_API_KEY = '.data-api';
var JQUERY_NO_CONFLICT = $.fn[NAME];
var Default = {
offset: 10,
method: 'auto',
target: ''
};
var DefaultType = {
offset: 'number',
method: 'string',
target: '(string|element)'
};
var Event = {
ACTIVATE: "activate" + EVENT_KEY,
SCROLL: "scroll" + EVENT_KEY,
LOAD_DATA_API: "load" + EVENT_KEY + DATA_API_KEY
};
var ClassName = {
DROPDOWN_ITEM: 'dropdown-item',
DROPDOWN_MENU: 'dropdown-menu',
ACTIVE: 'active'
};
var Selector = {
DATA_SPY: '[data-spy="scroll"]',
ACTIVE: '.active',
NAV_LIST_GROUP: '.nav, .list-group',
NAV_LINKS: '.nav-link',
NAV_ITEMS: '.nav-item',
LIST_ITEMS: '.list-group-item',
DROPDOWN: '.dropdown',
DROPDOWN_ITEMS: '.dropdown-item',
DROPDOWN_TOGGLE: '.dropdown-toggle'
};
var OffsetMethod = {
OFFSET: 'offset',
POSITION: 'position'
/**
* ------------------------------------------------------------------------
* Class Definition
* ------------------------------------------------------------------------
*/
};
var ScrollSpy =
/*#__PURE__*/
function () {
function ScrollSpy(element, config) {
var _this = this;
this._element = element;
this._scrollElement = element.tagName === 'BODY' ? window : element;
this._config = this._getConfig(config);
this._selector = this._config.target + " " + Selector.NAV_LINKS + "," + (this._config.target + " " + Selector.LIST_ITEMS + ",") + (this._config.target + " " + Selector.DROPDOWN_ITEMS);
this._offsets = [];
this._targets = [];
this._activeTarget = null;
this._scrollHeight = 0;
$(this._scrollElement).on(Event.SCROLL, function (event) {
return _this._process(event);
});
this.refresh();
this._process();
} // getters
var _proto = ScrollSpy.prototype;
// public
_proto.refresh = function refresh() {
var _this2 = this;
var autoMethod = this._scrollElement !== this._scrollElement.window ? OffsetMethod.POSITION : OffsetMethod.OFFSET;
var offsetMethod = this._config.method === 'auto' ? autoMethod : this._config.method;
var offsetBase = offsetMethod === OffsetMethod.POSITION ? this._getScrollTop() : 0;
this._offsets = [];
this._targets = [];
this._scrollHeight = this._getScrollHeight();
var targets = $.makeArray($(this._selector));
targets.map(function (element) {
var target;
var targetSelector = Util.getSelectorFromElement(element);
if (targetSelector) {
target = $(targetSelector)[0];
}
if (target) {
var targetBCR = target.getBoundingClientRect();
if (targetBCR.width || targetBCR.height) {
// todo (fat): remove sketch reliance on jQuery position/offset
return [$(target)[offsetMethod]().top + offsetBase, targetSelector];
}
}
return null;
}).filter(function (item) {
return item;
}).sort(function (a, b) {
return a[0] - b[0];
}).forEach(function (item) {
_this2._offsets.push(item[0]);
_this2._targets.push(item[1]);
});
};
_proto.dispose = function dispose() {
$.removeData(this._element, DATA_KEY);
$(this._scrollElement).off(EVENT_KEY);
this._element = null;
this._scrollElement = null;
this._config = null;
this._selector = null;
this._offsets = null;
this._targets = null;
this._activeTarget = null;
this._scrollHeight = null;
}; // private
_proto._getConfig = function _getConfig(config) {
config = $.extend({}, Default, config);
if (typeof config.target !== 'string') {
var id = $(config.target).attr('id');
if (!id) {
id = Util.getUID(NAME);
$(config.target).attr('id', id);
}
config.target = "#" + id;
}
Util.typeCheckConfig(NAME, config, DefaultType);
return config;
};
_proto._getScrollTop = function _getScrollTop() {
return this._scrollElement === window ? this._scrollElement.pageYOffset : this._scrollElement.scrollTop;
};
_proto._getScrollHeight = function _getScrollHeight() {
return this._scrollElement.scrollHeight || Math.max(document.body.scrollHeight, document.documentElement.scrollHeight);
};
_proto._getOffsetHeight = function _getOffsetHeight() {
return this._scrollElement === window ? window.innerHeight : this._scrollElement.getBoundingClientRect().height;
};
_proto._process = function _process() {
var scrollTop = this._getScrollTop() + this._config.offset;
var scrollHeight = this._getScrollHeight();
var maxScroll = this._config.offset + scrollHeight - this._getOffsetHeight();
if (this._scrollHeight !== scrollHeight) {
this.refresh();
}
if (scrollTop >= maxScroll) {
var target = this._targets[this._targets.length - 1];
if (this._activeTarget !== target) {
this._activate(target);
}
return;
}
if (this._activeTarget && scrollTop < this._offsets[0] && this._offsets[0] > 0) {
this._activeTarget = null;
this._clear();
return;
}
for (var i = this._offsets.length; i--;) {
var isActiveTarget = this._activeTarget !== this._targets[i] && scrollTop >= this._offsets[i] && (typeof this._offsets[i + 1] === 'undefined' || scrollTop < this._offsets[i + 1]);
if (isActiveTarget) {
this._activate(this._targets[i]);
}
}
};
_proto._activate = function _activate(target) {
this._activeTarget = target;
this._clear();
var queries = this._selector.split(','); // eslint-disable-next-line arrow-body-style
queries = queries.map(function (selector) {
return selector + "[data-target=\"" + target + "\"]," + (selector + "[href=\"" + target + "\"]");
});
var $link = $(queries.join(','));
if ($link.hasClass(ClassName.DROPDOWN_ITEM)) {
$link.closest(Selector.DROPDOWN).find(Selector.DROPDOWN_TOGGLE).addClass(ClassName.ACTIVE);
$link.addClass(ClassName.ACTIVE);
} else {
// Set triggered link as active
$link.addClass(ClassName.ACTIVE); // Set triggered links parents as active
// With both <ul> and <nav> markup a parent is the previous sibling of any nav ancestor
$link.parents(Selector.NAV_LIST_GROUP).prev(Selector.NAV_LINKS + ", " + Selector.LIST_ITEMS).addClass(ClassName.ACTIVE); // Handle special case when .nav-link is inside .nav-item
$link.parents(Selector.NAV_LIST_GROUP).prev(Selector.NAV_ITEMS).children(Selector.NAV_LINKS).addClass(ClassName.ACTIVE);
}
$(this._scrollElement).trigger(Event.ACTIVATE, {
relatedTarget: target
});
};
_proto._clear = function _clear() {
$(this._selector).filter(Selector.ACTIVE).removeClass(ClassName.ACTIVE);
}; // static
ScrollSpy._jQueryInterface = function _jQueryInterface(config) {
return this.each(function () {
var data = $(this).data(DATA_KEY);
var _config = typeof config === 'object' && config;
if (!data) {
data = new ScrollSpy(this, _config);
$(this).data(DATA_KEY, data);
}
if (typeof config === 'string') {
if (typeof data[config] === 'undefined') {
throw new Error("No method named \"" + config + "\"");
}
data[config]();
}
});
};
_createClass(ScrollSpy, null, [{
key: "VERSION",
get: function get() {
return VERSION;
}
}, {
key: "Default",
get: function get() {
return Default;
}
}]);
return ScrollSpy;
}();
/**
* ------------------------------------------------------------------------
* Data Api implementation
* ------------------------------------------------------------------------
*/
$(window).on(Event.LOAD_DATA_API, function () {
var scrollSpys = $.makeArray($(Selector.DATA_SPY));
for (var i = scrollSpys.length; i--;) {
var $spy = $(scrollSpys[i]);
ScrollSpy._jQueryInterface.call($spy, $spy.data());
}
});
/**
* ------------------------------------------------------------------------
* jQuery
* ------------------------------------------------------------------------
*/
$.fn[NAME] = ScrollSpy._jQueryInterface;
$.fn[NAME].Constructor = ScrollSpy;
$.fn[NAME].noConflict = function () {
$.fn[NAME] = JQUERY_NO_CONFLICT;
return ScrollSpy._jQueryInterface;
};
return ScrollSpy;
}($);
//# sourceMappingURL=scrollspy.js.map
\ No newline at end of file
function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
/**
* --------------------------------------------------------------------------
* Bootstrap (v4.0.0-beta.2): tab.js
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
* --------------------------------------------------------------------------
*/
var Tab = function () {
/**
* ------------------------------------------------------------------------
* Constants
* ------------------------------------------------------------------------
*/
var NAME = 'tab';
var VERSION = '4.0.0-beta.2';
var DATA_KEY = 'bs.tab';
var EVENT_KEY = "." + DATA_KEY;
var DATA_API_KEY = '.data-api';
var JQUERY_NO_CONFLICT = $.fn[NAME];
var TRANSITION_DURATION = 150;
var Event = {
HIDE: "hide" + EVENT_KEY,
HIDDEN: "hidden" + EVENT_KEY,
SHOW: "show" + EVENT_KEY,
SHOWN: "shown" + EVENT_KEY,
CLICK_DATA_API: "click" + EVENT_KEY + DATA_API_KEY
};
var ClassName = {
DROPDOWN_MENU: 'dropdown-menu',
ACTIVE: 'active',
DISABLED: 'disabled',
FADE: 'fade',
SHOW: 'show'
};
var Selector = {
DROPDOWN: '.dropdown',
NAV_LIST_GROUP: '.nav, .list-group',
ACTIVE: '.active',
ACTIVE_UL: '> li > .active',
DATA_TOGGLE: '[data-toggle="tab"], [data-toggle="pill"], [data-toggle="list"]',
DROPDOWN_TOGGLE: '.dropdown-toggle',
DROPDOWN_ACTIVE_CHILD: '> .dropdown-menu .active'
/**
* ------------------------------------------------------------------------
* Class Definition
* ------------------------------------------------------------------------
*/
};
var Tab =
/*#__PURE__*/
function () {
function Tab(element) {
this._element = element;
} // getters
var _proto = Tab.prototype;
// public
_proto.show = function show() {
var _this = this;
if (this._element.parentNode && this._element.parentNode.nodeType === Node.ELEMENT_NODE && $(this._element).hasClass(ClassName.ACTIVE) || $(this._element).hasClass(ClassName.DISABLED)) {
return;
}
var target;
var previous;
var listElement = $(this._element).closest(Selector.NAV_LIST_GROUP)[0];
var selector = Util.getSelectorFromElement(this._element);
if (listElement) {
var itemSelector = listElement.nodeName === 'UL' ? Selector.ACTIVE_UL : Selector.ACTIVE;
previous = $.makeArray($(listElement).find(itemSelector));
previous = previous[previous.length - 1];
}
var hideEvent = $.Event(Event.HIDE, {
relatedTarget: this._element
});
var showEvent = $.Event(Event.SHOW, {
relatedTarget: previous
});
if (previous) {
$(previous).trigger(hideEvent);
}
$(this._element).trigger(showEvent);
if (showEvent.isDefaultPrevented() || hideEvent.isDefaultPrevented()) {
return;
}
if (selector) {
target = $(selector)[0];
}
this._activate(this._element, listElement);
var complete = function complete() {
var hiddenEvent = $.Event(Event.HIDDEN, {
relatedTarget: _this._element
});
var shownEvent = $.Event(Event.SHOWN, {
relatedTarget: previous
});
$(previous).trigger(hiddenEvent);
$(_this._element).trigger(shownEvent);
};
if (target) {
this._activate(target, target.parentNode, complete);
} else {
complete();
}
};
_proto.dispose = function dispose() {
$.removeData(this._element, DATA_KEY);
this._element = null;
}; // private
_proto._activate = function _activate(element, container, callback) {
var _this2 = this;
var activeElements;
if (container.nodeName === 'UL') {
activeElements = $(container).find(Selector.ACTIVE_UL);
} else {
activeElements = $(container).children(Selector.ACTIVE);
}
var active = activeElements[0];
var isTransitioning = callback && Util.supportsTransitionEnd() && active && $(active).hasClass(ClassName.FADE);
var complete = function complete() {
return _this2._transitionComplete(element, active, isTransitioning, callback);
};
if (active && isTransitioning) {
$(active).one(Util.TRANSITION_END, complete).emulateTransitionEnd(TRANSITION_DURATION);
} else {
complete();
}
if (active) {
$(active).removeClass(ClassName.SHOW);
}
};
_proto._transitionComplete = function _transitionComplete(element, active, isTransitioning, callback) {
if (active) {
$(active).removeClass(ClassName.ACTIVE);
var dropdownChild = $(active.parentNode).find(Selector.DROPDOWN_ACTIVE_CHILD)[0];
if (dropdownChild) {
$(dropdownChild).removeClass(ClassName.ACTIVE);
}
if (active.getAttribute('role') === 'tab') {
active.setAttribute('aria-selected', false);
}
}
$(element).addClass(ClassName.ACTIVE);
if (element.getAttribute('role') === 'tab') {
element.setAttribute('aria-selected', true);
}
if (isTransitioning) {
Util.reflow(element);
$(element).addClass(ClassName.SHOW);
} else {
$(element).removeClass(ClassName.FADE);
}
if (element.parentNode && $(element.parentNode).hasClass(ClassName.DROPDOWN_MENU)) {
var dropdownElement = $(element).closest(Selector.DROPDOWN)[0];
if (dropdownElement) {
$(dropdownElement).find(Selector.DROPDOWN_TOGGLE).addClass(ClassName.ACTIVE);
}
element.setAttribute('aria-expanded', true);
}
if (callback) {
callback();
}
}; // static
Tab._jQueryInterface = function _jQueryInterface(config) {
return this.each(function () {
var $this = $(this);
var data = $this.data(DATA_KEY);
if (!data) {
data = new Tab(this);
$this.data(DATA_KEY, data);
}
if (typeof config === 'string') {
if (typeof data[config] === 'undefined') {
throw new Error("No method named \"" + config + "\"");
}
data[config]();
}
});
};
_createClass(Tab, null, [{
key: "VERSION",
get: function get() {
return VERSION;
}
}]);
return Tab;
}();
/**
* ------------------------------------------------------------------------
* Data Api implementation
* ------------------------------------------------------------------------
*/
$(document).on(Event.CLICK_DATA_API, Selector.DATA_TOGGLE, function (event) {
event.preventDefault();
Tab._jQueryInterface.call($(this), 'show');
});
/**
* ------------------------------------------------------------------------
* jQuery
* ------------------------------------------------------------------------
*/
$.fn[NAME] = Tab._jQueryInterface;
$.fn[NAME].Constructor = Tab;
$.fn[NAME].noConflict = function () {
$.fn[NAME] = JQUERY_NO_CONFLICT;
return Tab._jQueryInterface;
};
return Tab;
}($);
//# sourceMappingURL=tab.js.map
\ No newline at end of file
/**
* --------------------------------------------------------------------------
* Bootstrap (v4.0.0-beta.2): util.js
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
* --------------------------------------------------------------------------
*/
var Util = function () {
/**
* ------------------------------------------------------------------------
* Private TransitionEnd Helpers
* ------------------------------------------------------------------------
*/
var transition = false;
var MAX_UID = 1000000;
var TransitionEndEvent = {
WebkitTransition: 'webkitTransitionEnd',
MozTransition: 'transitionend',
OTransition: 'oTransitionEnd otransitionend',
transition: 'transitionend' // shoutout AngusCroll (https://goo.gl/pxwQGp)
};
function toType(obj) {
return {}.toString.call(obj).match(/\s([a-zA-Z]+)/)[1].toLowerCase();
}
function getSpecialTransitionEndEvent() {
return {
bindType: transition.end,
delegateType: transition.end,
handle: function handle(event) {
if ($(event.target).is(this)) {
return event.handleObj.handler.apply(this, arguments); // eslint-disable-line prefer-rest-params
}
return undefined; // eslint-disable-line no-undefined
}
};
}
function transitionEndTest() {
if (window.QUnit) {
return false;
}
var el = document.createElement('bootstrap');
for (var name in TransitionEndEvent) {
if (typeof el.style[name] !== 'undefined') {
return {
end: TransitionEndEvent[name]
};
}
}
return false;
}
function transitionEndEmulator(duration) {
var _this = this;
var called = false;
$(this).one(Util.TRANSITION_END, function () {
called = true;
});
setTimeout(function () {
if (!called) {
Util.triggerTransitionEnd(_this);
}
}, duration);
return this;
}
function setTransitionEndSupport() {
transition = transitionEndTest();
$.fn.emulateTransitionEnd = transitionEndEmulator;
if (Util.supportsTransitionEnd()) {
$.event.special[Util.TRANSITION_END] = getSpecialTransitionEndEvent();
}
}
/**
* --------------------------------------------------------------------------
* Public Util Api
* --------------------------------------------------------------------------
*/
var Util = {
TRANSITION_END: 'bsTransitionEnd',
getUID: function getUID(prefix) {
do {
// eslint-disable-next-line no-bitwise
prefix += ~~(Math.random() * MAX_UID); // "~~" acts like a faster Math.floor() here
} while (document.getElementById(prefix));
return prefix;
},
getSelectorFromElement: function getSelectorFromElement(element) {
var selector = element.getAttribute('data-target');
if (!selector || selector === '#') {
selector = element.getAttribute('href') || '';
}
try {
var $selector = $(document).find(selector);
return $selector.length > 0 ? selector : null;
} catch (error) {
return null;
}
},
reflow: function reflow(element) {
return element.offsetHeight;
},
triggerTransitionEnd: function triggerTransitionEnd(element) {
$(element).trigger(transition.end);
},
supportsTransitionEnd: function supportsTransitionEnd() {
return Boolean(transition);
},
isElement: function isElement(obj) {
return (obj[0] || obj).nodeType;
},
typeCheckConfig: function typeCheckConfig(componentName, config, configTypes) {
for (var property in configTypes) {
if (Object.prototype.hasOwnProperty.call(configTypes, property)) {
var expectedTypes = configTypes[property];
var value = config[property];
var valueType = value && Util.isElement(value) ? 'element' : toType(value);
if (!new RegExp(expectedTypes).test(valueType)) {
throw new Error(componentName.toUpperCase() + ": " + ("Option \"" + property + "\" provided type \"" + valueType + "\" ") + ("but expected type \"" + expectedTypes + "\"."));
}
}
}
}
};
setTransitionEndSupport();
return Util;
}($);
//# sourceMappingURL=util.js.map
\ No newline at end of file
/**
* @preserve HTML5 Shiv 3.7.3 | @afarkas @jdalton @jon_neal @rem | MIT/GPL2 Licensed
*/
!function(a,b){function c(a,b){var c=a.createElement("p"),d=a.getElementsByTagName("head")[0]||a.documentElement;return c.innerHTML="x<style>"+b+"</style>",d.insertBefore(c.lastChild,d.firstChild)}function d(){var a=t.elements;return"string"==typeof a?a.split(" "):a}function e(a,b){var c=t.elements;"string"!=typeof c&&(c=c.join(" ")),"string"!=typeof a&&(a=a.join(" ")),t.elements=c+" "+a,j(b)}function f(a){var b=s[a[q]];return b||(b={},r++,a[q]=r,s[r]=b),b}function g(a,c,d){if(c||(c=b),l)return c.createElement(a);d||(d=f(c));var e;return e=d.cache[a]?d.cache[a].cloneNode():p.test(a)?(d.cache[a]=d.createElem(a)).cloneNode():d.createElem(a),!e.canHaveChildren||o.test(a)||e.tagUrn?e:d.frag.appendChild(e)}function h(a,c){if(a||(a=b),l)return a.createDocumentFragment();c=c||f(a);for(var e=c.frag.cloneNode(),g=0,h=d(),i=h.length;i>g;g++)e.createElement(h[g]);return e}function i(a,b){b.cache||(b.cache={},b.createElem=a.createElement,b.createFrag=a.createDocumentFragment,b.frag=b.createFrag()),a.createElement=function(c){return t.shivMethods?g(c,a,b):b.createElem(c)},a.createDocumentFragment=Function("h,f","return function(){var n=f.cloneNode(),c=n.createElement;h.shivMethods&&("+d().join().replace(/[\w\-:]+/g,function(a){return b.createElem(a),b.frag.createElement(a),'c("'+a+'")'})+");return n}")(t,b.frag)}function j(a){a||(a=b);var d=f(a);return!t.shivCSS||k||d.hasCSS||(d.hasCSS=!!c(a,"article,aside,dialog,figcaption,figure,footer,header,hgroup,main,nav,section{display:block}mark{background:#FF0;color:#000}template{display:none}")),l||i(a,d),a}var k,l,m="3.7.3-pre",n=a.html5||{},o=/^<|^(?:button|map|select|textarea|object|iframe|option|optgroup)$/i,p=/^(?:a|b|code|div|fieldset|h1|h2|h3|h4|h5|h6|i|label|li|ol|p|q|span|strong|style|table|tbody|td|th|tr|ul)$/i,q="_html5shiv",r=0,s={};!function(){try{var a=b.createElement("a");a.innerHTML="<xyz></xyz>",k="hidden"in a,l=1==a.childNodes.length||function(){b.createElement("a");var a=b.createDocumentFragment();return"undefined"==typeof a.cloneNode||"undefined"==typeof a.createDocumentFragment||"undefined"==typeof a.createElement}()}catch(c){k=!0,l=!0}}();var t={elements:n.elements||"abbr article aside audio bdi canvas data datalist details dialog figcaption figure footer header hgroup main mark meter nav output picture progress section summary template time video",version:m,shivCSS:n.shivCSS!==!1,supportsUnknownElements:l,shivMethods:n.shivMethods!==!1,type:"default",shivDocument:j,createElement:g,createDocumentFragment:h,addElements:e};a.html5=t,j(b),"object"==typeof module&&module.exports&&(module.exports=t)}("undefined"!=typeof window?window:this,document);
\ No newline at end of file
layer.config({
path: 'js/plugins/layer/'
});
\ No newline at end of file
/*! layer mobile-v2.0.0 Web弹层组件 MIT License http://layer.layui.com/mobile By 贤心 */
;!function(e){"use strict";var t=document,n="querySelectorAll",i="getElementsByClassName",a=function(e){return t[n](e)},s={type:0,shade:!0,shadeClose:!0,fixed:!0,anim:"scale"},l={extend:function(e){var t=JSON.parse(JSON.stringify(s));for(var n in e)t[n]=e[n];return t},timer:{},end:{}};l.touch=function(e,t){e.addEventListener("click",function(e){t.call(this,e)},!1)};var r=0,o=["layui-m-layer"],c=function(e){var t=this;t.config=l.extend(e),t.view()};c.prototype.view=function(){var e=this,n=e.config,s=t.createElement("div");e.id=s.id=o[0]+r,s.setAttribute("class",o[0]+" "+o[0]+(n.type||0)),s.setAttribute("index",r);var l=function(){var e="object"==typeof n.title;return n.title?'<h3 style="'+(e?n.title[1]:"")+'">'+(e?n.title[0]:n.title)+"</h3>":""}(),c=function(){"string"==typeof n.btn&&(n.btn=[n.btn]);var e,t=(n.btn||[]).length;return 0!==t&&n.btn?(e='<span yes type="1">'+n.btn[0]+"</span>",2===t&&(e='<span no type="0">'+n.btn[1]+"</span>"+e),'<div class="layui-m-layerbtn">'+e+"</div>"):""}();if(n.fixed||(n.top=n.hasOwnProperty("top")?n.top:100,n.style=n.style||"",n.style+=" top:"+(t.body.scrollTop+n.top)+"px"),2===n.type&&(n.content='<i></i><i class="layui-m-layerload"></i><i></i><p>'+(n.content||"")+"</p>"),n.skin&&(n.anim="up"),"msg"===n.skin&&(n.shade=!1),s.innerHTML=(n.shade?"<div "+("string"==typeof n.shade?'style="'+n.shade+'"':"")+' class="layui-m-layershade"></div>':"")+'<div class="layui-m-layermain" '+(n.fixed?"":'style="position:static;"')+'><div class="layui-m-layersection"><div class="layui-m-layerchild '+(n.skin?"layui-m-layer-"+n.skin+" ":"")+(n.className?n.className:"")+" "+(n.anim?"layui-m-anim-"+n.anim:"")+'" '+(n.style?'style="'+n.style+'"':"")+">"+l+'<div class="layui-m-layercont">'+n.content+"</div>"+c+"</div></div></div>",!n.type||2===n.type){var d=t[i](o[0]+n.type),y=d.length;y>=1&&layer.close(d[0].getAttribute("index"))}document.body.appendChild(s);var u=e.elem=a("#"+e.id)[0];n.success&&n.success(u),e.index=r++,e.action(n,u)},c.prototype.action=function(e,t){var n=this;e.time&&(l.timer[n.index]=setTimeout(function(){layer.close(n.index)},1e3*e.time));var a=function(){var t=this.getAttribute("type");0==t?(e.no&&e.no(),layer.close(n.index)):e.yes?e.yes(n.index):layer.close(n.index)};if(e.btn)for(var s=t[i]("layui-m-layerbtn")[0].children,r=s.length,o=0;o<r;o++)l.touch(s[o],a);if(e.shade&&e.shadeClose){var c=t[i]("layui-m-layershade")[0];l.touch(c,function(){layer.close(n.index,e.end)})}e.end&&(l.end[n.index]=e.end)},e.layer={v:"2.0",index:r,open:function(e){var t=new c(e||{});return t.index},close:function(e){var n=a("#"+o[0]+e)[0];n&&(n.innerHTML="",t.body.removeChild(n),clearTimeout(l.timer[e]),delete l.timer[e],"function"==typeof l.end[e]&&l.end[e](),delete l.end[e])},closeAll:function(){for(var e=t[i](o[0]),n=0,a=e.length;n<a;n++)layer.close(0|e[0].getAttribute("index"))}},"function"==typeof define?define(function(){return layer}):function(){var e=document.scripts,n=e[e.length-1],i=n.src,a=i.substring(0,i.lastIndexOf("/")+1);n.getAttribute("merge")||document.head.appendChild(function(){var e=t.createElement("link");return e.href=a+"need/layer.css?2.0",e.type="text/css",e.rel="styleSheet",e.id="layermcss",e}())}()}(window);
\ No newline at end of file
.layui-m-layer{position:relative;z-index:19891014}.layui-m-layer *{-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box}.layui-m-layermain,.layui-m-layershade{position:fixed;left:0;top:0;width:100%;height:100%}.layui-m-layershade{background-color:rgba(0,0,0,.7);pointer-events:auto}.layui-m-layermain{display:table;font-family:Helvetica,arial,sans-serif;pointer-events:none}.layui-m-layermain .layui-m-layersection{display:table-cell;vertical-align:middle;text-align:center}.layui-m-layerchild{position:relative;display:inline-block;text-align:left;background-color:#fff;font-size:14px;border-radius:5px;box-shadow:0 0 8px rgba(0,0,0,.1);pointer-events:auto;-webkit-overflow-scrolling:touch;-webkit-animation-fill-mode:both;animation-fill-mode:both;-webkit-animation-duration:.2s;animation-duration:.2s}@-webkit-keyframes layui-m-anim-scale{0%{opacity:0;-webkit-transform:scale(.5);transform:scale(.5)}100%{opacity:1;-webkit-transform:scale(1);transform:scale(1)}}@keyframes layui-m-anim-scale{0%{opacity:0;-webkit-transform:scale(.5);transform:scale(.5)}100%{opacity:1;-webkit-transform:scale(1);transform:scale(1)}}.layui-m-anim-scale{animation-name:layui-m-anim-scale;-webkit-animation-name:layui-m-anim-scale}@-webkit-keyframes layui-m-anim-up{0%{opacity:0;-webkit-transform:translateY(800px);transform:translateY(800px)}100%{opacity:1;-webkit-transform:translateY(0);transform:translateY(0)}}@keyframes layui-m-anim-up{0%{opacity:0;-webkit-transform:translateY(800px);transform:translateY(800px)}100%{opacity:1;-webkit-transform:translateY(0);transform:translateY(0)}}.layui-m-anim-up{-webkit-animation-name:layui-m-anim-up;animation-name:layui-m-anim-up}.layui-m-layer0 .layui-m-layerchild{width:90%;max-width:640px}.layui-m-layer1 .layui-m-layerchild{border:none;border-radius:0}.layui-m-layer2 .layui-m-layerchild{width:auto;max-width:260px;min-width:40px;border:none;background:0 0;box-shadow:none;color:#fff}.layui-m-layerchild h3{padding:0 10px;height:60px;line-height:60px;font-size:16px;font-weight:400;border-radius:5px 5px 0 0;text-align:center}.layui-m-layerbtn span,.layui-m-layerchild h3{text-overflow:ellipsis;overflow:hidden;white-space:nowrap}.layui-m-layercont{padding:50px 30px;line-height:22px;text-align:center}.layui-m-layer1 .layui-m-layercont{padding:0;text-align:left}.layui-m-layer2 .layui-m-layercont{text-align:center;padding:0;line-height:0}.layui-m-layer2 .layui-m-layercont i{width:25px;height:25px;margin-left:8px;display:inline-block;background-color:#fff;border-radius:100%;-webkit-animation:layui-m-anim-loading 1.4s infinite ease-in-out;animation:layui-m-anim-loading 1.4s infinite ease-in-out;-webkit-animation-fill-mode:both;animation-fill-mode:both}.layui-m-layerbtn,.layui-m-layerbtn span{position:relative;text-align:center;border-radius:0 0 5px 5px}.layui-m-layer2 .layui-m-layercont p{margin-top:20px}@-webkit-keyframes layui-m-anim-loading{0%,100%,80%{transform:scale(0);-webkit-transform:scale(0)}40%{transform:scale(1);-webkit-transform:scale(1)}}@keyframes layui-m-anim-loading{0%,100%,80%{transform:scale(0);-webkit-transform:scale(0)}40%{transform:scale(1);-webkit-transform:scale(1)}}.layui-m-layer2 .layui-m-layercont i:first-child{margin-left:0;-webkit-animation-delay:-.32s;animation-delay:-.32s}.layui-m-layer2 .layui-m-layercont i.layui-m-layerload{-webkit-animation-delay:-.16s;animation-delay:-.16s}.layui-m-layer2 .layui-m-layercont>div{line-height:22px;padding-top:7px;margin-bottom:20px;font-size:14px}.layui-m-layerbtn{display:box;display:-moz-box;display:-webkit-box;width:100%;height:50px;line-height:50px;font-size:0;border-top:1px solid #D0D0D0;background-color:#F2F2F2}.layui-m-layerbtn span{display:block;-moz-box-flex:1;box-flex:1;-webkit-box-flex:1;font-size:14px;cursor:pointer}.layui-m-layerbtn span[yes]{color:#40AFFE}.layui-m-layerbtn span[no]{border-right:1px solid #D0D0D0;border-radius:0 0 0 5px}.layui-m-layerbtn span:active{background-color:#F6F6F6}.layui-m-layerend{position:absolute;right:7px;top:10px;width:30px;height:30px;border:0;font-weight:400;background:0 0;cursor:pointer;-webkit-appearance:none;font-size:30px}.layui-m-layerend::after,.layui-m-layerend::before{position:absolute;left:5px;top:15px;content:'';width:18px;height:1px;background-color:#999;transform:rotate(45deg);-webkit-transform:rotate(45deg);border-radius:3px}.layui-m-layerend::after{transform:rotate(-45deg);-webkit-transform:rotate(-45deg)}body .layui-m-layer .layui-m-layer-footer{position:fixed;width:95%;max-width:100%;margin:0 auto;left:0;right:0;bottom:10px;background:0 0}.layui-m-layer-footer .layui-m-layercont{padding:20px;border-radius:5px 5px 0 0;background-color:rgba(255,255,255,.8)}.layui-m-layer-footer .layui-m-layerbtn{display:block;height:auto;background:0 0;border-top:none}.layui-m-layer-footer .layui-m-layerbtn span{background-color:rgba(255,255,255,.8)}.layui-m-layer-footer .layui-m-layerbtn span[no]{color:#FD482C;border-top:1px solid #c2c2c2;border-radius:0 0 5px 5px}.layui-m-layer-footer .layui-m-layerbtn span[yes]{margin-top:10px;border-radius:5px}body .layui-m-layer .layui-m-layer-msg{width:auto;max-width:90%;margin:0 auto;bottom:-150px;background-color:rgba(0,0,0,.7);color:#fff}.layui-m-layer-msg .layui-m-layercont{padding:10px 20px}
\ No newline at end of file
/*! Respond.js v1.4.2: min/max-width media query polyfill
* Copyright 2014 Scott Jehl
* Licensed under MIT
* http://j.mp/respondjs */
!function(a){"use strict";a.matchMedia=a.matchMedia||function(a){var b,c=a.documentElement,d=c.firstElementChild||c.firstChild,e=a.createElement("body"),f=a.createElement("div");return f.id="mq-test-1",f.style.cssText="position:absolute;top:-100em",e.style.background="none",e.appendChild(f),function(a){return f.innerHTML='&shy;<style media="'+a+'"> #mq-test-1 { width: 42px; }</style>',c.insertBefore(e,d),b=42===f.offsetWidth,c.removeChild(e),{matches:b,media:a}}}(a.document)}(this),function(a){"use strict";function b(){v(!0)}var c={};a.respond=c,c.update=function(){};var d=[],e=function(){var b=!1;try{b=new a.XMLHttpRequest}catch(c){b=new a.ActiveXObject("Microsoft.XMLHTTP")}return function(){return b}}(),f=function(a,b){var c=e();c&&(c.open("GET",a,!0),c.onreadystatechange=function(){4!==c.readyState||200!==c.status&&304!==c.status||b(c.responseText)},4!==c.readyState&&c.send(null))},g=function(a){return a.replace(c.regex.minmaxwh,"").match(c.regex.other)};if(c.ajax=f,c.queue=d,c.unsupportedmq=g,c.regex={media:/@media[^\{]+\{([^\{\}]*\{[^\}\{]*\})+/gi,keyframes:/@(?:\-(?:o|moz|webkit)\-)?keyframes[^\{]+\{(?:[^\{\}]*\{[^\}\{]*\})+[^\}]*\}/gi,comments:/\/\*[^*]*\*+([^/][^*]*\*+)*\//gi,urls:/(url\()['"]?([^\/\)'"][^:\)'"]+)['"]?(\))/g,findStyles:/@media *([^\{]+)\{([\S\s]+?)$/,only:/(only\s+)?([a-zA-Z]+)\s?/,minw:/\(\s*min\-width\s*:\s*(\s*[0-9\.]+)(px|em)\s*\)/,maxw:/\(\s*max\-width\s*:\s*(\s*[0-9\.]+)(px|em)\s*\)/,minmaxwh:/\(\s*m(in|ax)\-(height|width)\s*:\s*(\s*[0-9\.]+)(px|em)\s*\)/gi,other:/\([^\)]*\)/g},c.mediaQueriesSupported=a.matchMedia&&null!==a.matchMedia("only all")&&a.matchMedia("only all").matches,!c.mediaQueriesSupported){var h,i,j,k=a.document,l=k.documentElement,m=[],n=[],o=[],p={},q=30,r=k.getElementsByTagName("head")[0]||l,s=k.getElementsByTagName("base")[0],t=r.getElementsByTagName("link"),u=function(){var a,b=k.createElement("div"),c=k.body,d=l.style.fontSize,e=c&&c.style.fontSize,f=!1;return b.style.cssText="position:absolute;font-size:1em;width:1em",c||(c=f=k.createElement("body"),c.style.background="none"),l.style.fontSize="100%",c.style.fontSize="100%",c.appendChild(b),f&&l.insertBefore(c,l.firstChild),a=b.offsetWidth,f?l.removeChild(c):c.removeChild(b),l.style.fontSize=d,e&&(c.style.fontSize=e),a=j=parseFloat(a)},v=function(b){var c="clientWidth",d=l[c],e="CSS1Compat"===k.compatMode&&d||k.body[c]||d,f={},g=t[t.length-1],p=(new Date).getTime();if(b&&h&&q>p-h)return a.clearTimeout(i),i=a.setTimeout(v,q),void 0;h=p;for(var s in m)if(m.hasOwnProperty(s)){var w=m[s],x=w.minw,y=w.maxw,z=null===x,A=null===y,B="em";x&&(x=parseFloat(x)*(x.indexOf(B)>-1?j||u():1)),y&&(y=parseFloat(y)*(y.indexOf(B)>-1?j||u():1)),w.hasquery&&(z&&A||!(z||e>=x)||!(A||y>=e))||(f[w.media]||(f[w.media]=[]),f[w.media].push(n[w.rules]))}for(var C in o)o.hasOwnProperty(C)&&o[C]&&o[C].parentNode===r&&r.removeChild(o[C]);o.length=0;for(var D in f)if(f.hasOwnProperty(D)){var E=k.createElement("style"),F=f[D].join("\n");E.type="text/css",E.media=D,r.insertBefore(E,g.nextSibling),E.styleSheet?E.styleSheet.cssText=F:E.appendChild(k.createTextNode(F)),o.push(E)}},w=function(a,b,d){var e=a.replace(c.regex.comments,"").replace(c.regex.keyframes,"").match(c.regex.media),f=e&&e.length||0;b=b.substring(0,b.lastIndexOf("/"));var h=function(a){return a.replace(c.regex.urls,"$1"+b+"$2$3")},i=!f&&d;b.length&&(b+="/"),i&&(f=1);for(var j=0;f>j;j++){var k,l,o,p;i?(k=d,n.push(h(a))):(k=e[j].match(c.regex.findStyles)&&RegExp.$1,n.push(RegExp.$2&&h(RegExp.$2))),o=k.split(","),p=o.length;for(var q=0;p>q;q++)l=o[q],g(l)||m.push({media:l.split("(")[0].match(c.regex.only)&&RegExp.$2||"all",rules:n.length-1,hasquery:l.indexOf("(")>-1,minw:l.match(c.regex.minw)&&parseFloat(RegExp.$1)+(RegExp.$2||""),maxw:l.match(c.regex.maxw)&&parseFloat(RegExp.$1)+(RegExp.$2||"")})}v()},x=function(){if(d.length){var b=d.shift();f(b.href,function(c){w(c,b.href,b.media),p[b.href]=!0,a.setTimeout(function(){x()},0)})}},y=function(){for(var b=0;b<t.length;b++){var c=t[b],e=c.href,f=c.media,g=c.rel&&"stylesheet"===c.rel.toLowerCase();e&&g&&!p[e]&&(c.styleSheet&&c.styleSheet.rawCssText?(w(c.styleSheet.rawCssText,e,f),p[e]=!0):(!/^([a-zA-Z:]*\/\/)/.test(e)&&!s||e.replace(RegExp.$1,"").split("/")[0]===a.location.host)&&("//"===e.substring(0,2)&&(e=a.location.protocol+e),d.push({href:e,media:f})))}x()};y(),c.update=y,c.getEmValue=u,a.addEventListener?a.addEventListener("resize",b,!1):a.attachEvent&&a.attachEvent("onresize",b)}}(this);
\ No newline at end of file
......@@ -44,6 +44,21 @@ public class WordImportDTO {
public WordDomain toDomain(){
WordDomain word = BeanMapper.map(this, WordDomain.class);
if (word.getWordSpell() == null) {
word.setWordSpell("");
}
if (word.getWordBrief() == null) {
word.setWordBrief("");
}
if (word.getBody() == null) {
word.setBody("");
}
if (word.getBaikeBrief() == null) {
word.setBaikeBrief("");
}
if (word.getBaikeParaphrase() == null) {
word.setBaikeParaphrase("");
}
word.setCreateTime(new Date());
word.setUpdateTime(new Date());
return word;
......
# 数据库配置
# 数据库连接
spring.datasource.url=jdbc:mysql://192.168.2.24:3306/cihai
spring.datasource.url=jdbc:mysql://192.168.2.28:3306/cihai
spring.datasource.username=root
# 加密后的密码
spring.datasource.password=Lvv/S6CDCaeRONtvcUDlHrty4nYxnQFAIcT43dJOqCenmj9x/dDzX9i3S9H5AdskVo8KNR5hJAOHw6SmjjlXLg==
......
Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!