[web]完善数据库URL构建器代码编辑功能,添加预览功能和代码说明

This commit is contained in:
datagear 2018-10-26 11:35:59 +08:00
parent de3d2c5f39
commit 55c70c98c9
8 changed files with 132 additions and 25 deletions

View File

@ -106,11 +106,22 @@ public class SchemaUrlBuilderController extends AbstractSchemaModelController im
return buildOperationMessageSaveSuccessResponseEntity(request);
}
@RequestMapping("/previewScriptCode")
public String previewScriptCode(HttpServletRequest request,
@RequestParam(value = "scriptCode", required = false) String scriptCode) throws IOException
{
request.setAttribute("scriptCode", scriptCode);
request.setAttribute("preview", "1");
return "/schema/schema_build_url";
}
@RequestMapping("/buildUrl")
public String buildSchemaUrl(HttpServletRequest request, HttpServletResponse response,
org.springframework.ui.Model springModel) throws IOException
public String buildSchemaUrl(HttpServletRequest request, @RequestParam(value = "url", required = false) String url)
throws IOException
{
request.setAttribute("scriptCode", getUrlBuilderScript());
request.setAttribute("url", url);
return "/schema/schema_build_url";
}
@ -120,6 +131,11 @@ public class SchemaUrlBuilderController extends AbstractSchemaModelController im
if (scriptCode == null)
scriptCode = "";
scriptCode = scriptCode.trim();
if (scriptCode.endsWith(","))
scriptCode = scriptCode.substring(0, scriptCode.length() - 1);
Writer out = IOUtil.getWriter(this.schemaUrlBuilderScriptFile, DB_URL_BUILDER_ENCODING);
try

View File

@ -47,6 +47,7 @@
<!-- 设置数据库URL构建器脚本 -->
<intercept-url pattern="/schemaUrlBuilder/editScriptCode" access="ROLE_ADMIN" />
<intercept-url pattern="/schemaUrlBuilder/saveScriptCode" access="ROLE_ADMIN" />
<intercept-url pattern="/schemaUrlBuilder/previewScriptCode" access="ROLE_ADMIN" />
<intercept-url pattern="/**" access="IS_AUTHENTICATED_ANONYMOUSLY, ROLE_USER, ROLE_ADMIN" />

View File

@ -39,6 +39,9 @@ advancedSetting=\u9AD8\u7EA7\u8BBE\u7F6E
import=\u5BFC\u5165
export=\u5BFC\u51FA
find=\u67E5\u627E
colon=\uFF1A
comma=\uFF0C
preview=\u9884\u89C8
dataTables.noData=\u6CA1\u6709\u6570\u636E
dataTables.zeroRecords=\u6CA1\u6709\u7ED3\u679C
@ -237,6 +240,15 @@ schema.loadUrlBuilderScriptError=\u52A0\u8F7D\u6570\u636E\u5E93URL\u6784\u5EFA\u
#schemaUrlBuilder
schemaUrlBuilder.schemaUrlBuilder=\u6570\u636E\u5E93URL\u6784\u5EFA\u5668
schemaUrlBuilder.scriptCode=\u6784\u5EFA\u5668\u4EE3\u7801
schemaUrlBuilder.scriptCodeNote.0=\u6784\u5EFA\u5668\u4EE3\u7801\u683C\u5F0F\u5982\u4E0B\uFF1A
schemaUrlBuilder.scriptCodeNote.required=\u5FC5\u586B
schemaUrlBuilder.scriptCodeNote.optional=\u9009\u586B
schemaUrlBuilder.scriptCodeNote.dbName=\u6570\u636E\u5E93\u540D\u79F0
schemaUrlBuilder.scriptCodeNote.template=URL\u6A21\u677F
schemaUrlBuilder.scriptCodeNote.defaultValue=\u9ED8\u8BA4\u503C
schemaUrlBuilder.scriptCodeNote.dbDesc=\u6570\u636E\u5E93\u63CF\u8FF0
schemaUrlBuilder.scriptCodeNote.order=\u5C55\u793A\u6392\u5E8F\u503C
schemaUrlBuilder.scriptCodeNote.1=\u591A\u4E2A\u6784\u5EFA\u5668\u4EE3\u7801\u4E4B\u95F4\u4EE5\u82F1\u6587\u201C,\u201D\u9694\u5F00
#user
user.addUser=\u6DFB\u52A0\u7528\u6237

View File

@ -7,28 +7,24 @@
<%@ include file="../include/jsp_import.jsp" %>
<%@ include file="../include/jsp_ajax_request.jsp" %>
<%@ include file="../include/jsp_jstl.jsp" %>
<%@ include file="../include/jsp_method_get_string_value.jsp" %>
<%@ include file="../include/jsp_page_id.jsp" %>
<%@ include file="../include/html_doctype.jsp" %>
<%
boolean isPreview = "1".equals(getStringValue(request, "preview"));
%>
<html>
<head>
<%@ include file="../include/html_head.jsp" %>
<script type="text/javascript">
$.schemaUrlBuilder.clear();
try
{
$.schemaUrlBuilder.add(
<%=request.getAttribute("scriptCode")%>
);
}
catch(e)
{
$.tipError("<fmt:message key='schema.loadUrlBuilderScriptError' />");
}
</script>
<title><%@ include file="../include/html_title_app_name.jsp" %><fmt:message key='schema.schemaBuildUrl' /></title>
</head>
<body>
<div id="${pageId}" class="schema-build-url-form">
<div id="${pageId}" class="page-data-form page-data-form-buildSchemaUrl">
<div id="dbUrlBuilderScriptCode" style="display: none;">
$.schemaUrlBuilder.add(
<%=request.getAttribute("scriptCode")%>
);
</div>
<form id="${pageId}-form" action="#" method="POST">
<div class="form-head"></div>
<div class="form-content">
@ -70,6 +66,9 @@ catch(e)
<input type="submit" value="<fmt:message key='confirm' />" class="recommended" />
</div>
</form>
<%if(isPreview){%>
<div class="url-preview"></div>
<%}%>
</div>
<%@ include file="../include/page_js_obj.jsp" %>
<script type="text/javascript">
@ -78,12 +77,21 @@ catch(e)
pageObj.form = pageObj.element("#${pageId}-form");
pageObj.dbNameSelect = pageObj.element("select[name='dbName']");
var pageParam = pageObj.pageParam();
pageObj.initUrl = (pageParam && pageParam.initUrl ? pageParam.initUrl : "");
pageObj.initUrl = "<c:out value='${url}' />";
$("input:submit, input:button, input:reset, button", pageObj.page).button();
$.schemaUrlBuilder.clear();
var scriptCode = pageObj.element("#dbUrlBuilderScriptCode").text();
try
{
eval(scriptCode);
}
catch(e)
{
$.tipError("<fmt:message key='schema.loadUrlBuilderScriptError' /><fmt:message key='colon' />" + e.message);
}
var builderInfos = $.schemaUrlBuilder.list();
for(var i=0; i<builderInfos.length; i++)
{
@ -137,15 +145,21 @@ catch(e)
{
submitHandler : function(form)
{
var url = pageObj.buildFormUrl();
<%if(isPreview){%>
pageObj.element(".url-preview").text(url);
<%}else{%>
var pageParam = pageObj.pageParam();
var close = true;
if(pageParam && pageParam.setSchemaUrl)
close = (pageParam.setSchemaUrl(pageObj.buildFormUrl()) != false);
close = (pageParam.setSchemaUrl(url) != false);
if(close)
pageObj.close();
<%}%>
return false;
},

View File

@ -132,10 +132,10 @@ boolean readonly = ("true".equalsIgnoreCase(getStringValue(request, SchemaContro
{
pageObj.open(contextPath+"/schemaUrlBuilder/buildUrl",
{
data : { url : pageObj.element("input[name='url']").val() },
width: "60%",
pageParam :
{
"initUrl" : pageObj.element("input[name='url']").val(),
"setSchemaUrl" : function(url)
{
pageObj.element("input[name='url']").val(url);

View File

@ -24,8 +24,37 @@
<div class="form-item-label">
<label><fmt:message key='schemaUrlBuilder.scriptCode' /></label>
</div>
<div class="form-item-value form-item-value-scriptCode">
<textarea name="scriptCode" class="ui-widget ui-widget-content script-code-textarea"><c:out value='${scriptCode}' /></textarea>
<div class="script-code-note">
<span><fmt:message key='schemaUrlBuilder.scriptCodeNote.0' /></span>
<pre>
{
//<fmt:message key='schemaUrlBuilder.scriptCodeNote.required' /><fmt:message key='comma' /><fmt:message key='schemaUrlBuilder.scriptCodeNote.dbName' />
dbName : "...",
//<fmt:message key='schemaUrlBuilder.scriptCodeNote.required' /><fmt:message key='comma' /><fmt:message key='schemaUrlBuilder.scriptCodeNote.template' />
template : "...{host}...{port}...{name}...",
//<fmt:message key='schemaUrlBuilder.scriptCodeNote.optional' /><fmt:message key='comma' /><fmt:message key='schemaUrlBuilder.scriptCodeNote.defaultValue' />
defaultValue : { host : "...", port : "...", name : "" },
//<fmt:message key='schemaUrlBuilder.scriptCodeNote.optional' /><fmt:message key='comma' /><fmt:message key='schemaUrlBuilder.scriptCodeNote.dbDesc' />
dbDesc : "...",
//<fmt:message key='schemaUrlBuilder.scriptCodeNote.optional' /><fmt:message key='comma' /><fmt:message key='schemaUrlBuilder.scriptCodeNote.order' />
order : 6
}</pre>
<span><fmt:message key='schemaUrlBuilder.scriptCodeNote.1' /></span>
</div>
</div>
</div>
<div class="form-item">
<div class="form-item-label">
<label>&nbsp;</label>
</div>
<div class="form-item-value">
<textarea name="scriptCode" style="width:30em; height: 20em;"><c:out value='${scriptCode}' /></textarea>
<button id="previewScriptCode" type="button" class="preview-script-code-button"><fmt:message key='preview' /></button>
</div>
</div>
</div>
@ -44,6 +73,14 @@
pageObj.form = pageObj.element("#${pageId}-form");
pageObj.element("#previewScriptCode").click(function()
{
pageObj.open(contextPath+"/schemaUrlBuilder/previewScriptCode",
{
data : { "scriptCode" : pageObj.element("textarea[name='scriptCode']").val() }
});
});
pageObj.form.validate(
{
submitHandler : function(form)

View File

@ -180,7 +180,7 @@
{
var myBuilder = ele[j];
if(myBuilder.dbName)
if(myBuilder && myBuilder.dbName)
{
if(myBuilder.order == undefined)
myBuilder.order = order;

View File

@ -827,8 +827,35 @@ table.dataTable tbody tr.selected .checkbox .ui-icon{
height: 0;
}
.schema-build-url-form .schema-build-url-dbtype-select.ui-button{
width: 13em;
.page-data-form-buildSchemaUrl .schema-build-url-dbtype-select.ui-button{
width: 18em;
}
.page-data-form-buildSchemaUrl .url-preview{
margin-top: 1em;
text-align: center;
height: 2em;
font-weight: bold;
}
.page-data-form-schemaUrlBuilder .form-item-value-scriptCode{
display: block;
}
.page-data-form-schemaUrlBuilder .preview-script-code-button.ui-button{
padding-left: 2em;
padding-right: 2em;
}
.page-data-form-schemaUrlBuilder form .form-content .form-item .form-item-value textarea.script-code-textarea{
width: 30em;
height: 22em;
}
.page-data-form-schemaUrlBuilder .script-code-note{
display: inline-block;
width: 15em;
height: 22em;
overflow: auto;
}
.page-data-form-schemaUrlBuilder .script-code-note span{
white-space: nowrap;
}
.page-data-form-reset-password{