forked from p85126437/datagear
数据集预览即使执行出错也返回解析后的内容,便于排查拼写错误
This commit is contained in:
parent
8a4b77f1f1
commit
7e66f016be
|
@ -5,7 +5,6 @@
|
|||
地图热力图
|
||||
路径图
|
||||
下拉框
|
||||
数据集预览即使执行错误也返回解析后的内容,便于用户检查错误;
|
||||
修复登录超时后打开页面内对话框未处理超时的BUG;
|
||||
改进表格图表滚动条样式,使其与图表主题匹配;
|
||||
改进表格轮播性能,解决轮播卡顿问题;
|
||||
|
@ -14,6 +13,7 @@
|
|||
修复CSV数据集属性设置日期格式yyyyMMdd无效的BUG(因为值直接被解析成了数值,跳过了格式);
|
||||
改进标签卡布局,支持flex布局,名/值是否横排;
|
||||
升级ECharts至5.2.0版本;
|
||||
ok 数据集预览即使执行出错也返回解析后的内容,便于排查拼写错误;
|
||||
|
||||
待定:
|
||||
|
||||
|
|
|
@ -119,7 +119,7 @@ public abstract class AbstractCsvDataSet extends AbstractResolvableDataSet imple
|
|||
}
|
||||
catch (Throwable t)
|
||||
{
|
||||
throw new DataSetSourceParseException(t);
|
||||
throw new DataSetSourceParseException(t, reader.getResolvedTemplate());
|
||||
}
|
||||
finally
|
||||
{
|
||||
|
|
|
@ -124,7 +124,7 @@ public abstract class AbstractJsonDataSet extends AbstractResolvableDataSet impl
|
|||
}
|
||||
catch (Throwable t)
|
||||
{
|
||||
throw new DataSetSourceParseException(t);
|
||||
throw new DataSetSourceParseException(t, reader.getResolvedTemplate());
|
||||
}
|
||||
finally
|
||||
{
|
||||
|
|
|
@ -19,6 +19,8 @@ public class DataSetSourceParseException extends DataSetException
|
|||
{
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
private String source = null;
|
||||
|
||||
public DataSetSourceParseException()
|
||||
{
|
||||
super();
|
||||
|
@ -38,4 +40,20 @@ public class DataSetSourceParseException extends DataSetException
|
|||
{
|
||||
super(message, cause);
|
||||
}
|
||||
|
||||
public DataSetSourceParseException(Throwable cause, String source)
|
||||
{
|
||||
super(cause);
|
||||
this.source = source;
|
||||
}
|
||||
|
||||
public String getSource()
|
||||
{
|
||||
return source;
|
||||
}
|
||||
|
||||
public void setSource(String source)
|
||||
{
|
||||
this.source = source;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -335,11 +335,15 @@ public class HttpDataSet extends AbstractResolvableDataSet
|
|||
protected TemplateResolvedDataSetResult resolveResult(DataSetQuery query, List<DataSetProperty> properties,
|
||||
boolean resolveProperties) throws DataSetException
|
||||
{
|
||||
String uri = null;
|
||||
String headerContent = null;
|
||||
String requestContent = null;
|
||||
|
||||
try
|
||||
{
|
||||
String uri = resolveTemplateUri(query);
|
||||
String headerContent = resolveTemplateHeaderContent(query);
|
||||
String requestContent = resolveTemplateRequestContent(query);
|
||||
uri = resolveTemplateUri(query);
|
||||
headerContent = resolveTemplateHeaderContent(query);
|
||||
requestContent = resolveTemplateRequestContent(query);
|
||||
|
||||
ClassicHttpRequest request = createHttpRequest(uri);
|
||||
|
||||
|
@ -353,13 +357,8 @@ public class HttpDataSet extends AbstractResolvableDataSet
|
|||
|
||||
ResolvedDataSetResult result = this.httpClient.execute(request, responseHandler);
|
||||
|
||||
String templateResult = "URI:" + System.lineSeparator() + uri //
|
||||
+ System.lineSeparator() + "-----------------------------------------" + System.lineSeparator() //
|
||||
+ "Request headers:" + System.lineSeparator() + headerContent //
|
||||
+ System.lineSeparator() + "-----------------------------------------" + System.lineSeparator() //
|
||||
+ "Request content:" + System.lineSeparator() + requestContent;
|
||||
|
||||
return new TemplateResolvedDataSetResult(result.getResult(), result.getProperties(), templateResult);
|
||||
return new TemplateResolvedDataSetResult(result.getResult(), result.getProperties(),
|
||||
buildResolvedTemplate(uri, headerContent, requestContent));
|
||||
}
|
||||
catch (DataSetException e)
|
||||
{
|
||||
|
@ -367,10 +366,44 @@ public class HttpDataSet extends AbstractResolvableDataSet
|
|||
}
|
||||
catch (Throwable t)
|
||||
{
|
||||
throw new DataSetSourceParseException(t);
|
||||
throw new DataSetSourceParseException(t, buildResolvedTemplate(uri, headerContent, requestContent));
|
||||
}
|
||||
}
|
||||
|
||||
protected String buildResolvedTemplate(String uri, String headerContent, String requestContent)
|
||||
{
|
||||
StringBuilder sb = new StringBuilder();
|
||||
|
||||
if (!StringUtil.isEmpty(uri))
|
||||
{
|
||||
if (sb.length() > 0)
|
||||
sb.append(
|
||||
System.lineSeparator() + "-----------------------------------------" + System.lineSeparator());
|
||||
|
||||
sb.append("URI:" + System.lineSeparator() + uri);
|
||||
}
|
||||
|
||||
if (!StringUtil.isEmpty(headerContent))
|
||||
{
|
||||
if (sb.length() > 0)
|
||||
sb.append(
|
||||
System.lineSeparator() + "-----------------------------------------" + System.lineSeparator());
|
||||
|
||||
sb.append("Request headers:" + System.lineSeparator() + headerContent);
|
||||
}
|
||||
|
||||
if (!StringUtil.isEmpty(requestContent))
|
||||
{
|
||||
if (sb.length() > 0)
|
||||
sb.append(
|
||||
System.lineSeparator() + "-----------------------------------------" + System.lineSeparator());
|
||||
|
||||
sb.append("Request content:" + System.lineSeparator() + requestContent);
|
||||
}
|
||||
|
||||
return sb.toString();
|
||||
}
|
||||
|
||||
protected void setHttpHeaders(ClassicHttpRequest request, String headerContent) throws Throwable
|
||||
{
|
||||
if (StringUtil.isEmpty(headerContent))
|
||||
|
|
|
@ -446,7 +446,7 @@ public class ControllerAdvice extends AbstractController
|
|||
DataSetSourceParseException exception)
|
||||
{
|
||||
setOperationMessageForThrowable(request, buildMessageCode(DataSetSourceParseException.class), exception, false,
|
||||
exception.getMessage());
|
||||
exception.getMessage(), exception.getSource());
|
||||
|
||||
return getErrorView(request, response);
|
||||
}
|
||||
|
@ -457,7 +457,7 @@ public class ControllerAdvice extends AbstractController
|
|||
HttpServletResponse response, SqlDataSetSqlExecutionException exception)
|
||||
{
|
||||
setOperationMessageForThrowable(request, buildMessageCode(SqlDataSetSqlExecutionException.class), exception,
|
||||
false, exception.getMessage());
|
||||
false, exception.getMessage(), exception.getSql());
|
||||
|
||||
return getErrorView(request, response);
|
||||
}
|
||||
|
|
|
@ -2610,6 +2610,7 @@ table.dataTable tbody tr td select{
|
|||
box-sizing: border-box;
|
||||
-moz-box-sizing: border-box;
|
||||
-webkit-box-sizing: border-box;
|
||||
resize: none;
|
||||
}
|
||||
.page-form-dataSet .workspace .workspace-operation-wrapper .preview-result-table-wrapper .result-data-max-count{
|
||||
float: left;
|
||||
|
@ -2625,6 +2626,23 @@ table.dataTable tbody tr td select{
|
|||
width: 100%;
|
||||
font-size: 0.8em;
|
||||
}
|
||||
.page-form-dataSet .workspace .workspace-operation-wrapper .preview-result-table-wrapper .preview-error-info{
|
||||
position: absolute;
|
||||
left: 0;
|
||||
right: 0;
|
||||
top: 0;
|
||||
bottom: 0;
|
||||
display: none;
|
||||
}
|
||||
.page-form-dataSet .workspace .workspace-operation-wrapper .preview-result-table-wrapper .preview-error-info textarea{
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
margin: 0 0;
|
||||
box-sizing: border-box;
|
||||
-moz-box-sizing: border-box;
|
||||
-webkit-box-sizing: border-box;
|
||||
resize: none;
|
||||
}
|
||||
.page-form-dataSet .workspace .workspace-operation-wrapper .input-in-table{
|
||||
width: 90%!important;
|
||||
}
|
||||
|
|
|
@ -264,6 +264,11 @@ readonly 是否只读操作,允许为null
|
|||
if(!this.data.dataSet.uri)
|
||||
return false;
|
||||
};
|
||||
po.previewOptions.error = function(operationMessage)
|
||||
{
|
||||
if(operationMessage && operationMessage.data)
|
||||
return operationMessage.data[1];
|
||||
};
|
||||
|
||||
po.initPreviewOperations();
|
||||
|
||||
|
|
|
@ -37,6 +37,9 @@ DataSetEntity dataSet 允许为null
|
|||
<input type="text" class="resultFetchSizeInput ui-widget ui-widget-content ui-corner-all" />
|
||||
</div>
|
||||
</div>
|
||||
<div class="preview-error-info ui-state-error">
|
||||
<textarea class="ui-widget ui-widget-content"></textarea>
|
||||
</div>
|
||||
</div>
|
||||
<div id="${pageId}-dataSetParams" class="params-table-wrapper minor-dataTable">
|
||||
<div class="operation">
|
||||
|
|
|
@ -690,7 +690,13 @@ po.previewOptions.url = "...";
|
|||
return po.buildDataSetPropertiesColumns(previewResponse.properties);
|
||||
},
|
||||
//预览请求成功回调函数
|
||||
success: function(previewResponse){}
|
||||
success: function(previewResponse){},
|
||||
//预览出错回调函数,返回非空字符串表明将其显示在错误信息区内
|
||||
error: function(operationMessage, jqXHR)
|
||||
{
|
||||
if(operationMessage && operationMessage.data)
|
||||
return operationMessage.data[1];
|
||||
}
|
||||
};
|
||||
|
||||
po.resultFetchSizeVal = function(val)
|
||||
|
@ -845,6 +851,7 @@ po.previewOptions.url = "...";
|
|||
$(this).button("disable");
|
||||
});
|
||||
|
||||
po.element(".preview-error-info").hide();
|
||||
po.element(".preview-result-foot").hide();
|
||||
|
||||
var table = po.previewResultTableElement();
|
||||
|
@ -928,9 +935,17 @@ po.previewOptions.url = "...";
|
|||
|
||||
po.previewOptions.success(previewResponse);
|
||||
},
|
||||
error: function()
|
||||
error: function(jqXHR)
|
||||
{
|
||||
po.previewSuccess(false);
|
||||
|
||||
var errorInfo = po.previewOptions.error(jqXHR.responseJSON, jqXHR);
|
||||
|
||||
if(errorInfo)
|
||||
{
|
||||
po.element(".preview-error-info textarea").val(errorInfo);
|
||||
po.element(".preview-error-info").show();
|
||||
}
|
||||
},
|
||||
complete: function()
|
||||
{
|
||||
|
|
Loading…
Reference in New Issue