新增CSV文本、CSV文件数据集功能

This commit is contained in:
datagear 2020-08-31 14:47:16 +08:00
parent c0a9e08e35
commit 7af35f459e
24 changed files with 1145 additions and 79 deletions

View File

@ -48,6 +48,9 @@ import org.slf4j.LoggerFactory;
* <p>
* 通过{@linkplain #setNameRow(int)}可设置名称行
* </p>
* <p>
* 注意此类不支持<code>Freemarker</code>模板语言
* </p>
*
* @author datagear@163.com
*
@ -105,7 +108,8 @@ public abstract class AbstractExcelDataSet extends AbstractFmkTemplateDataSet im
/**
* 设置此数据集所处的sheet号
*
* @param sheetIndex sheet号{@code 1}计数
* @param sheetIndex
* sheet号{@code 1}计数
*/
public void setSheetIndex(int sheetIndex)
{
@ -286,11 +290,11 @@ public abstract class AbstractExcelDataSet extends AbstractFmkTemplateDataSet im
return resolveResultForSheet(paramValues, sheet, properties);
}
catch(DataSetException e)
catch (DataSetException e)
{
throw e;
}
catch(Throwable t)
catch (Throwable t)
{
throw new DataSetSourceParseException(t);
}
@ -326,11 +330,11 @@ public abstract class AbstractExcelDataSet extends AbstractFmkTemplateDataSet im
return resolveResultForSheet(paramValues, sheet, properties);
}
catch(DataSetException e)
catch (DataSetException e)
{
throw e;
}
catch(Throwable t)
catch (Throwable t)
{
throw new DataSetSourceParseException(t);
}

View File

@ -17,6 +17,9 @@ import org.datagear.util.FileUtil;
/**
* 目录内CSV文件{@linkplain DataSet}
* <p>
* 注意此类不支持<code>Freemarker</code>模板语言
* </p>
*
* @author datagear@163.com
*

View File

@ -18,6 +18,9 @@ import org.datagear.util.FileUtil;
/**
* 目录内Excel文件{@linkplain DataSet}
* <p>
* 注意此类不支持<code>Freemarker</code>模板语言
* </p>
*
* @author datagear@163.com
*

View File

@ -18,6 +18,9 @@ import org.datagear.util.FileUtil;
/**
* 目录内JSON文件{@linkplain DataSet}
* <p>
* 注意此类不支持<code>Freemarker</code>模板语言
* </p>
*
* @author datagear@163.com
*

View File

@ -12,6 +12,9 @@ import org.datagear.analysis.DataSetProperty;
/**
* 简单CSV文件数据集
* <p>
* 注意此类不支持<code>Freemarker</code>模板语言
* </p>
*
* @author datagear@163.com
*

View File

@ -15,6 +15,11 @@ import org.datagear.analysis.DataSetException;
import org.datagear.analysis.DataSetProperty;
/**
* 简单Excel数据集
* <p>
* 注意此类不支持<code>Freemarker</code>模板语言
* </p>
*
* @author datagear@163.com
*
*/

View File

@ -13,6 +13,9 @@ import org.datagear.analysis.DataSetProperty;
/**
* 简单JSON文件数据集
* <p>
* 注意此类不支持<code>Freemarker</code>模板语言
* </p>
*
* @author datagear@163.com
*

View File

@ -0,0 +1,114 @@
/*
* Copyright (c) 2018 datagear.tech. All Rights Reserved.
*/
/**
*
*/
package org.datagear.management.domain;
import java.io.File;
import java.util.Date;
import java.util.List;
import org.datagear.analysis.DataSetProperty;
import org.datagear.analysis.support.CsvDirectoryFileDataSet;
/**
* {@linkplain CsvDirectoryFileDataSet}实体
*
* @author datagear@163.com
*
*/
public class CsvFileDataSetEntity extends CsvDirectoryFileDataSet implements DirectoryFileDataSetEntity
{
private static final long serialVersionUID = 1L;
/** 展示名 */
private String displayName;
/** 创建用户 */
private User createUser;
/** 创建时间 */
private Date createTime;
/** 权限 */
private int dataPermission = PERMISSION_NOT_LOADED;
public CsvFileDataSetEntity()
{
super();
this.createTime = new Date();
}
public CsvFileDataSetEntity(String id, String name, List<DataSetProperty> properties, File directory,
String fileName, String displayName, User createUser)
{
super(id, name, properties, directory, fileName);
this.displayName = displayName;
this.createTime = new Date();
this.createUser = createUser;
}
@Override
public String getDisplayName()
{
return displayName;
}
@Override
public void setDisplayName(String displayName)
{
this.displayName = displayName;
}
@Override
public String getDataSetType()
{
return DataSetEntity.DATA_SET_TYPE_CsvFile;
}
@Override
public void setDataSetType(String dataSetType)
{
// XXX 什么也不做不采用抛出异常的方式便于统一底层SQL查询语句
// throw new UnsupportedOperationException();
}
@Override
public User getCreateUser()
{
return createUser;
}
@Override
public void setCreateUser(User createUser)
{
this.createUser = createUser;
}
@Override
public Date getCreateTime()
{
return createTime;
}
@Override
public void setCreateTime(Date createTime)
{
this.createTime = createTime;
}
@Override
public int getDataPermission()
{
return dataPermission;
}
@Override
public void setDataPermission(int dataPermission)
{
this.dataPermission = dataPermission;
}
}

View File

@ -0,0 +1,97 @@
/*
* Copyright (c) 2018 datagear.tech. All Rights Reserved.
*/
/**
*
*/
package org.datagear.management.domain;
import java.util.Date;
import java.util.List;
import org.datagear.analysis.DataSetProperty;
import org.datagear.analysis.support.CsvValueDataSet;
/**
* {@linkplain CsvValueDataSet}实体
*
* @author datagear@163.com
*
*/
public class CsvValueDataSetEntity extends CsvValueDataSet implements DataSetEntity
{
private static final long serialVersionUID = 1L;
/** 创建用户 */
private User createUser;
/** 创建时间 */
private Date createTime;
/** 权限 */
private int dataPermission = PERMISSION_NOT_LOADED;
public CsvValueDataSetEntity()
{
super();
this.createTime = new Date();
}
public CsvValueDataSetEntity(String id, String name, List<DataSetProperty> properties, String value,
User createUser)
{
super(id, name, properties, value);
this.createTime = new Date();
this.createUser = createUser;
}
@Override
public String getDataSetType()
{
return DataSetEntity.DATA_SET_TYPE_CsvValue;
}
@Override
public void setDataSetType(String dataSetType)
{
// XXX 什么也不做不采用抛出异常的方式便于统一底层SQL查询语句
// throw new UnsupportedOperationException();
}
@Override
public User getCreateUser()
{
return createUser;
}
@Override
public void setCreateUser(User createUser)
{
this.createUser = createUser;
}
@Override
public Date getCreateTime()
{
return createTime;
}
@Override
public void setCreateTime(Date createTime)
{
this.createTime = createTime;
}
@Override
public int getDataPermission()
{
return dataPermission;
}
@Override
public void setDataPermission(int dataPermission)
{
this.dataPermission = dataPermission;
}
}

View File

@ -34,8 +34,8 @@ public interface DataSetEntity extends DataSet, CreateUserEntity<String>, DataPe
/** 数据集类型Excel */
String DATA_SET_TYPE_Excel = "Excel";
/** 数据集类型CSV */
String DATA_SET_TYPE_Csv = "Csv";
/** 数据集类型CSV */
String DATA_SET_TYPE_CsvValue = "CsvValue";
/** 数据集类型CSV文件 */
String DATA_SET_TYPE_CsvFile = "CsvFile";

View File

@ -42,8 +42,8 @@ public class ExcelDataSetEntity extends ExcelDirectoryFileDataSet implements Dir
this.createTime = new Date();
}
public ExcelDataSetEntity(String id, String name, List<DataSetProperty> properties, File directory,
String fileName, String displayName, User createUser)
public ExcelDataSetEntity(String id, String name, List<DataSetProperty> properties, File directory, String fileName,
String displayName, User createUser)
{
super(id, name, properties, directory, fileName);
this.displayName = displayName;

View File

@ -17,6 +17,8 @@ import org.datagear.analysis.DataSet;
import org.datagear.analysis.DataSetParam;
import org.datagear.analysis.DataSetProperty;
import org.datagear.connection.ConnectionSource;
import org.datagear.management.domain.CsvFileDataSetEntity;
import org.datagear.management.domain.CsvValueDataSetEntity;
import org.datagear.management.domain.DataSetEntity;
import org.datagear.management.domain.ExcelDataSetEntity;
import org.datagear.management.domain.JsonFileDataSetEntity;
@ -170,6 +172,10 @@ public class DataSetEntityServiceImpl extends AbstractMybatisDataPermissionEntit
success = addJsonFileDataSetEntity((JsonFileDataSetEntity) entity);
else if (entity instanceof ExcelDataSetEntity)
success = addExcelDataSetEntity((ExcelDataSetEntity) entity);
else if (entity instanceof CsvValueDataSetEntity)
success = addCsvValueDataSetEntity((CsvValueDataSetEntity) entity);
else if (entity instanceof CsvFileDataSetEntity)
success = addCsvFileDataSetEntity((CsvFileDataSetEntity) entity);
}
if (success)
@ -210,6 +216,22 @@ public class DataSetEntityServiceImpl extends AbstractMybatisDataPermissionEntit
return (updateMybatis("insertExcelDataSetEntity", params) > 0);
}
protected boolean addCsvValueDataSetEntity(CsvValueDataSetEntity entity)
{
Map<String, Object> params = buildParamMapWithIdentifierQuoteParameter();
params.put("entity", entity);
return (updateMybatis("insertCsvValueDataSetEntity", params) > 0);
}
protected boolean addCsvFileDataSetEntity(CsvFileDataSetEntity entity)
{
Map<String, Object> params = buildParamMapWithIdentifierQuoteParameter();
params.put("entity", entity);
return (updateMybatis("insertCsvFileDataSetEntity", params) > 0);
}
@Override
protected boolean update(DataSetEntity entity, Map<String, Object> params)
{
@ -228,6 +250,10 @@ public class DataSetEntityServiceImpl extends AbstractMybatisDataPermissionEntit
success = updateJsonFileDataSetEntity((JsonFileDataSetEntity) entity);
else if (entity instanceof ExcelDataSetEntity)
success = updateExcelDataSetEntity((ExcelDataSetEntity) entity);
else if (entity instanceof CsvValueDataSetEntity)
success = updateCsvValueDataSetEntity((CsvValueDataSetEntity) entity);
else if (entity instanceof CsvFileDataSetEntity)
success = updateCsvFileDataSetEntity((CsvFileDataSetEntity) entity);
}
if (success)
@ -268,6 +294,22 @@ public class DataSetEntityServiceImpl extends AbstractMybatisDataPermissionEntit
return (updateMybatis("updateExcelDataSetEntity", params) > 0);
}
protected boolean updateCsvValueDataSetEntity(CsvValueDataSetEntity entity)
{
Map<String, Object> params = buildParamMapWithIdentifierQuoteParameter();
params.put("entity", entity);
return (updateMybatis("updateCsvValueDataSetEntity", params) > 0);
}
protected boolean updateCsvFileDataSetEntity(CsvFileDataSetEntity entity)
{
Map<String, Object> params = buildParamMapWithIdentifierQuoteParameter();
params.put("entity", entity);
return (updateMybatis("updateCsvFileDataSetEntity", params) > 0);
}
@Override
public String getResourceType()
{
@ -314,6 +356,10 @@ public class DataSetEntityServiceImpl extends AbstractMybatisDataPermissionEntit
obj = getJsonFileDataSetEntityById(obj.getId());
else if (DataSetEntity.DATA_SET_TYPE_Excel.equals(obj.getDataSetType()))
obj = getExcelDataSetEntityById(obj.getId());
else if (DataSetEntity.DATA_SET_TYPE_CsvValue.equals(obj.getDataSetType()))
obj = getCsvValueDataSetEntityById(obj.getId());
else if (DataSetEntity.DATA_SET_TYPE_CsvFile.equals(obj.getDataSetType()))
obj = getCsvFileDataSetEntityById(obj.getId());
if (obj == null)
return null;
@ -378,6 +424,29 @@ public class DataSetEntityServiceImpl extends AbstractMybatisDataPermissionEntit
return entity;
}
protected CsvValueDataSetEntity getCsvValueDataSetEntityById(String id)
{
Map<String, Object> params = buildParamMapWithIdentifierQuoteParameter();
params.put("id", id);
CsvValueDataSetEntity entity = selectOneMybatis("getCsvValueDataSetEntityById", params);
return entity;
}
protected CsvFileDataSetEntity getCsvFileDataSetEntityById(String id)
{
Map<String, Object> params = buildParamMapWithIdentifierQuoteParameter();
params.put("id", id);
CsvFileDataSetEntity entity = selectOneMybatis("getCsvFileDataSetEntityById", params);
if (entity != null)
entity.setDirectory(getDataSetDirectory(id));
return entity;
}
@Override
protected void addDataPermissionParameters(Map<String, Object> params, User user)
{

View File

@ -532,3 +532,28 @@ CREATE TABLE DATAGEAR_DATA_SET_EXCEL
ALTER TABLE DATAGEAR_DATA_SET_EXCEL ADD FOREIGN KEY (DS_ID) REFERENCES DATAGEAR_DATA_SET (DS_ID) ON DELETE CASCADE;
--2020-08-31
--CSV值数据集
CREATE TABLE DATAGEAR_DATA_SET_CSV_VALUE
(
DS_ID VARCHAR(50) NOT NULL,
DS_VALUE VARCHAR(10000) NOT NULL,
DS_NAME_ROW INTEGER,
PRIMARY KEY (DS_ID)
);
ALTER TABLE DATAGEAR_DATA_SET_CSV_VALUE ADD FOREIGN KEY (DS_ID) REFERENCES DATAGEAR_DATA_SET (DS_ID) ON DELETE CASCADE;
--2020-08-31
--CSV文件数据集
CREATE TABLE DATAGEAR_DATA_SET_CSV_FILE
(
DS_ID VARCHAR(50) NOT NULL,
DS_FILE_NAME VARCHAR(100) NOT NULL,
DS_DISPLAY_NAME VARCHAR(100) NOT NULL,
DS_FILE_ENCODING VARCHAR(50),
DS_NAME_ROW INTEGER,
PRIMARY KEY (DS_ID)
);
ALTER TABLE DATAGEAR_DATA_SET_CSV_FILE ADD FOREIGN KEY (DS_ID) REFERENCES DATAGEAR_DATA_SET (DS_ID) ON DELETE CASCADE;

View File

@ -60,6 +60,28 @@
)
</insert>
<insert id="insertCsvValueDataSetEntity">
INSERT INTO DATAGEAR_DATA_SET_CSV_VALUE
(
DS_ID, DS_VALUE, DS_NAME_ROW
)
VALUES
(
#{entity.id}, #{entity.value}, #{entity.nameRow}
)
</insert>
<insert id="insertCsvFileDataSetEntity">
INSERT INTO DATAGEAR_DATA_SET_CSV_FILE
(
DS_ID, DS_FILE_NAME, DS_FILE_ENCODING, DS_DISPLAY_NAME, DS_NAME_ROW
)
VALUES
(
#{entity.id}, #{entity.fileName}, #{entity.encoding}, #{entity.displayName}, #{entity.nameRow}
)
</insert>
<insert id="insertPropertyPO">
INSERT INTO DATAGEAR_DATA_SET_PROP
(
@ -135,6 +157,24 @@
DS_ID = #{entity.id}
</update>
<update id="updateCsvValueDataSetEntity">
UPDATE DATAGEAR_DATA_SET_CSV_VALUE SET
DS_VALUE = #{entity.value},
DS_NAME_ROW = #{entity.nameRow}
WHERE
DS_ID = #{entity.id}
</update>
<update id="updateCsvFileDataSetEntity">
UPDATE DATAGEAR_DATA_SET_CSV_FILE SET
DS_FILE_NAME = #{entity.fileName},
DS_FILE_ENCODING = #{entity.encoding},
DS_DISPLAY_NAME = #{entity.displayName},
DS_NAME_ROW = #{entity.nameRow}
WHERE
DS_ID = #{entity.id}
</update>
<delete id="deleteById">
DELETE FROM DATAGEAR_DATA_SET
WHERE
@ -225,6 +265,34 @@
T1.${_iq_}id${_iq_} = T2.DS_ID
</select>
<select id="getCsvValueDataSetEntityById" resultType="org.datagear.management.domain.CsvValueDataSetEntity">
SELECT
T1.*,
T2.DS_VALUE AS ${_iq_}value${_iq_},
T2.DS_NAME_ROW AS ${_iq_}nameRow${_iq_}
FROM
(SELECT * FROM (<include refid="queryView" />) T0 WHERE T0.${_iq_}id${_iq_} = #{id}) T1
INNER JOIN
DATAGEAR_DATA_SET_CSV_VALUE T2
ON
T1.${_iq_}id${_iq_} = T2.DS_ID
</select>
<select id="getCsvFileDataSetEntityById" resultType="org.datagear.management.domain.CsvFileDataSetEntity">
SELECT
T1.*,
T2.DS_FILE_NAME AS ${_iq_}fileName${_iq_},
T2.DS_FILE_ENCODING AS ${_iq_}encoding${_iq_},
T2.DS_DISPLAY_NAME AS ${_iq_}displayName${_iq_},
T2.DS_NAME_ROW AS ${_iq_}nameRow${_iq_}
FROM
(SELECT * FROM (<include refid="queryView" />) T0 WHERE T0.${_iq_}id${_iq_} = #{id}) T1
INNER JOIN
DATAGEAR_DATA_SET_CSV_FILE T2
ON
T1.${_iq_}id${_iq_} = T2.DS_ID
</select>
<select id="getPropertyPOs" resultType="org.datagear.management.service.impl.DataSetEntityServiceImpl$DataSetPropertyPO">
SELECT
PROP_DS_ID AS ${_iq_}dataSetId${_iq_},

View File

@ -21,12 +21,15 @@ import org.datagear.analysis.DataSet;
import org.datagear.analysis.DataSetParam;
import org.datagear.analysis.ResolvedDataSetResult;
import org.datagear.analysis.support.AbstractFmkTemplateDataSet;
import org.datagear.analysis.support.CsvValueDataSet;
import org.datagear.analysis.support.DataSetFmkTemplateResolver;
import org.datagear.analysis.support.DataSetParamValueConverter;
import org.datagear.analysis.support.JsonValueDataSet;
import org.datagear.analysis.support.SqlDataSet;
import org.datagear.analysis.support.TemplateContext;
import org.datagear.analysis.support.TemplateResolvedDataSetResult;
import org.datagear.management.domain.CsvFileDataSetEntity;
import org.datagear.management.domain.CsvValueDataSetEntity;
import org.datagear.management.domain.DataSetEntity;
import org.datagear.management.domain.DirectoryFileDataSetEntity;
import org.datagear.management.domain.ExcelDataSetEntity;
@ -231,6 +234,68 @@ public class DataSetController extends AbstractSchemaConnController
return buildOperationMessageSaveSuccessResponseEntity(request, dataSet);
}
@RequestMapping("/addForCsvValue")
public String addForCsvValue(HttpServletRequest request, org.springframework.ui.Model model)
{
CsvValueDataSetEntity dataSet = new CsvValueDataSetEntity();
dataSet.setNameRow(1);
model.addAttribute("dataSet", dataSet);
model.addAttribute(KEY_TITLE_MESSAGE_KEY, "dataSet.addDataSet");
model.addAttribute(KEY_FORM_ACTION, "saveAddForCsvValue");
return buildFormView(dataSet.getDataSetType());
}
@RequestMapping(value = "/saveAddForCsvValue", produces = CONTENT_TYPE_JSON)
@ResponseBody
public ResponseEntity<OperationMessage> saveAddForCsvValue(HttpServletRequest request, HttpServletResponse response,
@RequestBody CsvValueDataSetEntity dataSet)
{
User user = WebUtils.getUser(request, response);
dataSet.setId(IDUtil.randomIdOnTime20());
dataSet.setCreateUser(User.copyWithoutPassword(user));
checkSaveCsvValueDataSetEntity(dataSet);
this.dataSetEntityService.add(user, dataSet);
return buildOperationMessageSaveSuccessResponseEntity(request, dataSet);
}
@RequestMapping("/addForCsvFile")
public String addForCsvFile(HttpServletRequest request, org.springframework.ui.Model model)
{
CsvFileDataSetEntity dataSet = new CsvFileDataSetEntity();
dataSet.setNameRow(1);
model.addAttribute("dataSet", dataSet);
model.addAttribute("availableCharsetNames", getAvailableCharsetNames());
model.addAttribute(KEY_TITLE_MESSAGE_KEY, "dataSet.addDataSet");
model.addAttribute(KEY_FORM_ACTION, "saveAddForCsvFile");
return buildFormView(dataSet.getDataSetType());
}
@RequestMapping(value = "/saveAddForCsvFile", produces = CONTENT_TYPE_JSON)
@ResponseBody
public ResponseEntity<OperationMessage> saveAddForCsvFile(HttpServletRequest request, HttpServletResponse response,
@RequestBody CsvFileDataSetEntity dataSet) throws Throwable
{
User user = WebUtils.getUser(request, response);
dataSet.setId(IDUtil.randomIdOnTime20());
dataSet.setCreateUser(User.copyWithoutPassword(user));
checkSaveCsvFileDataSetEntity(dataSet);
this.dataSetEntityService.add(user, dataSet);
copyToDirectoryFileDataSetEntityDirectoryIf(dataSet, "");
return buildOperationMessageSaveSuccessResponseEntity(request, dataSet);
}
@RequestMapping("/edit")
public String edit(HttpServletRequest request, HttpServletResponse response, org.springframework.ui.Model model,
@RequestParam("id") String id)
@ -248,7 +313,8 @@ public class DataSetController extends AbstractSchemaConnController
model.addAttribute(KEY_TITLE_MESSAGE_KEY, "dataSet.editDataSet");
model.addAttribute(KEY_FORM_ACTION, "saveEditFor" + dataSet.getDataSetType());
if (DataSetEntity.DATA_SET_TYPE_JsonFile.equals(dataSet.getDataSetType()))
if (DataSetEntity.DATA_SET_TYPE_JsonFile.equals(dataSet.getDataSetType())
|| DataSetEntity.DATA_SET_TYPE_CsvFile.equals(dataSet.getDataSetType()))
model.addAttribute("availableCharsetNames", getAvailableCharsetNames());
return buildFormView(dataSet.getDataSetType());
@ -300,9 +366,9 @@ public class DataSetController extends AbstractSchemaConnController
@RequestMapping(value = "/saveEditFor" + DataSetEntity.DATA_SET_TYPE_Excel, produces = CONTENT_TYPE_JSON)
@ResponseBody
public ResponseEntity<OperationMessage> saveEditForExcel(HttpServletRequest request,
HttpServletResponse response, @RequestBody ExcelDataSetEntity dataSet,
@RequestParam("originalFileName") String originalFileName) throws Throwable
public ResponseEntity<OperationMessage> saveEditForExcel(HttpServletRequest request, HttpServletResponse response,
@RequestBody ExcelDataSetEntity dataSet, @RequestParam("originalFileName") String originalFileName)
throws Throwable
{
User user = WebUtils.getUser(request, response);
@ -314,6 +380,36 @@ public class DataSetController extends AbstractSchemaConnController
return buildOperationMessageSaveSuccessResponseEntity(request, dataSet);
}
@RequestMapping(value = "/saveEditFor" + DataSetEntity.DATA_SET_TYPE_CsvValue, produces = CONTENT_TYPE_JSON)
@ResponseBody
public ResponseEntity<OperationMessage> saveEditForCsvValue(HttpServletRequest request,
HttpServletResponse response, @RequestBody CsvValueDataSetEntity dataSet)
{
User user = WebUtils.getUser(request, response);
checkSaveCsvValueDataSetEntity(dataSet);
this.dataSetEntityService.update(user, dataSet);
return buildOperationMessageSaveSuccessResponseEntity(request, dataSet);
}
@RequestMapping(value = "/saveEditFor" + DataSetEntity.DATA_SET_TYPE_CsvFile, produces = CONTENT_TYPE_JSON)
@ResponseBody
public ResponseEntity<OperationMessage> saveEditForCsvFile(HttpServletRequest request, HttpServletResponse response,
@RequestBody CsvFileDataSetEntity dataSet, @RequestParam("originalFileName") String originalFileName)
throws Throwable
{
User user = WebUtils.getUser(request, response);
checkSaveCsvFileDataSetEntity(dataSet);
this.dataSetEntityService.update(user, dataSet);
copyToDirectoryFileDataSetEntityDirectoryIf(dataSet, originalFileName);
return buildOperationMessageSaveSuccessResponseEntity(request, dataSet);
}
@RequestMapping(value = "/uploadFile", produces = CONTENT_TYPE_JSON)
@ResponseBody
public Map<String, Object> uploadFile(HttpServletRequest request, HttpServletResponse response,
@ -359,7 +455,8 @@ public class DataSetController extends AbstractSchemaConnController
model.addAttribute(KEY_TITLE_MESSAGE_KEY, "dataSet.viewDataSet");
model.addAttribute(KEY_READONLY, true);
if (DataSetEntity.DATA_SET_TYPE_JsonFile.equals(dataSet.getDataSetType()))
if (DataSetEntity.DATA_SET_TYPE_JsonFile.equals(dataSet.getDataSetType())
|| DataSetEntity.DATA_SET_TYPE_CsvFile.equals(dataSet.getDataSetType()))
model.addAttribute("availableCharsetNames", getAvailableCharsetNames());
return buildFormView(dataSet.getDataSetType());
@ -511,8 +608,8 @@ public class DataSetController extends AbstractSchemaConnController
{
JsonValueDataSet dataSet = preview.getDataSet();
Map<String, Object> convertedParamValues = getDataSetParamValueConverter()
.convert(preview.getParamValues(), dataSet.getParams());
Map<String, Object> convertedParamValues = getDataSetParamValueConverter().convert(preview.getParamValues(),
dataSet.getParams());
TemplateResolvedDataSetResult result = dataSet.resolve(convertedParamValues);
@ -528,8 +625,8 @@ public class DataSetController extends AbstractSchemaConnController
JsonFileDataSetEntity dataSet = preview.getDataSet();
setDirectoryFileDataSetDirectory(dataSet, preview.getOriginalFileName());
Map<String, Object> convertedParamValues = getDataSetParamValueConverter()
.convert(preview.getParamValues(), dataSet.getParams());
Map<String, Object> convertedParamValues = getDataSetParamValueConverter().convert(preview.getParamValues(),
dataSet.getParams());
ResolvedDataSetResult result = dataSet.resolve(convertedParamValues);
@ -539,14 +636,44 @@ public class DataSetController extends AbstractSchemaConnController
@RequestMapping(value = "/previewExcel", produces = CONTENT_TYPE_JSON)
@ResponseBody
public ResolvedDataSetResult previewExcel(HttpServletRequest request, HttpServletResponse response,
org.springframework.ui.Model springModel, @RequestBody ExcelDataSetEntityPreview preview)
throws Throwable
org.springframework.ui.Model springModel, @RequestBody ExcelDataSetEntityPreview preview) throws Throwable
{
ExcelDataSetEntity dataSet = preview.getDataSet();
setDirectoryFileDataSetDirectory(dataSet, preview.getOriginalFileName());
Map<String, Object> convertedParamValues = getDataSetParamValueConverter()
.convert(preview.getParamValues(), dataSet.getParams());
Map<String, Object> convertedParamValues = getDataSetParamValueConverter().convert(preview.getParamValues(),
dataSet.getParams());
ResolvedDataSetResult result = dataSet.resolve(convertedParamValues);
return result;
}
@RequestMapping(value = "/previewCsvValue", produces = CONTENT_TYPE_JSON)
@ResponseBody
public TemplateResolvedDataSetResult previewCsvValue(HttpServletRequest request, HttpServletResponse response,
org.springframework.ui.Model springModel, @RequestBody CsvValueDataSetPreview preview) throws Throwable
{
CsvValueDataSet dataSet = preview.getDataSet();
Map<String, Object> convertedParamValues = getDataSetParamValueConverter().convert(preview.getParamValues(),
dataSet.getParams());
TemplateResolvedDataSetResult result = dataSet.resolve(convertedParamValues);
return result;
}
@RequestMapping(value = "/previewCsvFile", produces = CONTENT_TYPE_JSON)
@ResponseBody
public ResolvedDataSetResult previewCsvFile(HttpServletRequest request, HttpServletResponse response,
org.springframework.ui.Model springModel, @RequestBody CsvFileDataSetEntityPreview preview) throws Throwable
{
CsvFileDataSetEntity dataSet = preview.getDataSet();
setDirectoryFileDataSetDirectory(dataSet, preview.getOriginalFileName());
Map<String, Object> convertedParamValues = getDataSetParamValueConverter().convert(preview.getParamValues(),
dataSet.getParams());
ResolvedDataSetResult result = dataSet.resolve(convertedParamValues);
@ -554,8 +681,7 @@ public class DataSetController extends AbstractSchemaConnController
}
protected boolean copyToDirectoryFileDataSetEntityDirectoryIf(DirectoryFileDataSetEntity entity,
String originalFileName)
throws IOException
String originalFileName) throws IOException
{
String fileName = entity.getFileName();
@ -663,6 +789,25 @@ public class DataSetController extends AbstractSchemaConnController
throw new IllegalInputException();
}
protected void checkSaveCsvValueDataSetEntity(CsvValueDataSetEntity dataSet)
{
checkSaveEntity(dataSet);
if (isEmpty(dataSet.getValue()))
throw new IllegalInputException();
}
protected void checkSaveCsvFileDataSetEntity(CsvFileDataSetEntity dataSet)
{
checkSaveEntity(dataSet);
if (isEmpty(dataSet.getFileName()))
throw new IllegalInputException();
if (isEmpty(dataSet.getDisplayName()))
throw new IllegalInputException();
}
public static class AbstractDataSetPreview<T extends DataSet>
{
private T dataSet;
@ -782,6 +927,52 @@ public class DataSetController extends AbstractSchemaConnController
}
}
public static class CsvValueDataSetPreview extends AbstractDataSetPreview<CsvValueDataSet>
{
private String value;
public CsvValueDataSetPreview()
{
super();
}
public CsvValueDataSetPreview(String value)
{
super();
this.value = value;
}
public String getValue()
{
return value;
}
public void setValue(String value)
{
this.value = value;
}
}
public static class CsvFileDataSetEntityPreview extends AbstractDataSetPreview<CsvFileDataSetEntity>
{
private String originalFileName;
public CsvFileDataSetEntityPreview()
{
super();
}
public String getOriginalFileName()
{
return originalFileName;
}
public void setOriginalFileName(String originalFileName)
{
this.originalFileName = originalFileName;
}
}
public static class ResolveSqlParam
{
private String sql;

View File

@ -605,7 +605,7 @@ dataSet.name=\u540D\u79F0
dataSet.dataSetType=\u7C7B\u578B
dataSet.dataSetType.SQL=SQL
dataSet.dataSetType.Excel=Excel
dataSet.dataSetType.Csv=CSV
dataSet.dataSetType.CsvValue=CSV
dataSet.dataSetType.CsvFile=CSV\u6587\u4EF6
dataSet.dataSetType.JsonValue=JSON
dataSet.dataSetType.JsonFile=JSON\u6587\u4EF6
@ -616,6 +616,9 @@ dataSet.json=JSON\u6587\u672C
dataSet.jsonFile=JSON\u6587\u4EF6
dataSet.jsonFileEncoding=JSON\u6587\u4EF6\u7F16\u7801
dataSet.excelFile=Excel\u6587\u4EF6
dataSet.csv=CSV\u6587\u672C
dataSet.csvFile=CSV\u6587\u4EF6
dataSet.csvFileEncoding=CSV\u6587\u4EF6\u7F16\u7801
dataSet.excel.sheetIndex=\u6570\u636ESheet\u53F7
dataSet.excel.sheetIndex.desc=\u6570\u636E\u6240\u5728\u7684Sheet\u53F7\uFF0C\u7B2C\u4E00\u4E2A\u4E3A1\uFF0C\u4F9D\u6B21\u7C7B\u63A8
dataSet.excel.nameRow=\u6807\u9898\u884C\u53F7
@ -627,6 +630,10 @@ dataSet.excel.dataRowExp.desc=\u6570\u636E\u884C\u8303\u56F4\uFF08\u9664\u540D\u
dataSet.excel.dataColumnExp=\u6570\u636E\u5217\u8303\u56F4
dataSet.excel.dataColumnExp.desc=\u6570\u636E\u5217\u8303\u56F4\uFF0C\u4F8B\u5982\uFF1A&quot;A, B-D, E-&quot;\u8868\u793A\u7B2CA\u5217\u3001B\u81F3D\u5217\u3001\u5927\u4E8E\u7B49\u4E8EE\u5217\uFF0C\u4E0D\u586B\u8868\u793A\u4E0D\u9650
dataSet.excel.forceXls=\u5F3A\u5236\u4E3Axls\u683C\u5F0F
dataSet.csv.nameRow=\u6807\u9898\u884C\u53F7
dataSet.csv.nameRow.desc=\u6807\u9898\u884C\u7684\u884C\u53F7\uFF0C\u5C06\u88AB\u89E3\u6790\u4E3A\u6570\u636E\u96C6\u5C5E\u6027\u800C\u975E\u6570\u636E
dataSet.csv.nameRow.none=\u65E0
dataSet.csv.nameRow.assign=\u6307\u5B9A
dataSet.createUser=\u521B\u5EFA\u7528\u6237
dataSet.createTime=\u521B\u5EFA\u65F6\u95F4
dataSet.param=\u53C2\u6570

View File

@ -2235,7 +2235,7 @@ table.dataTable tbody tr td select{
.page-form-dataSet .form-foot-placeholder{
height: 2.5em;
}
.page-form-dataSet-jsonFile .encoding-selectmenu-menu .ui-menu{
.page-form-dataSet .encoding-selectmenu-menu .ui-menu{
height: 10em;
}

View File

@ -0,0 +1,233 @@
<#include "../../include/import_global.ftl">
<#include "../../include/html_doctype.ftl">
<#--
titleMessageKey 标题标签I18N关键字不允许null
formAction 表单提交action允许为null
readonly 是否只读操作允许为null
-->
<#assign formAction=(formAction!'#')>
<#assign readonly=(readonly!false)>
<#assign isAdd=(formAction == 'saveAdd')>
<html>
<head>
<#include "../../include/html_head.ftl">
<title><#include "../../include/html_title_app_name.ftl">
<@spring.message code='${titleMessageKey}' /> - <@spring.message code='dataSet.dataSetType.CsvFile' />
</title>
</head>
<body>
<div id="${pageId}" class="page-form page-form-dataSet page-form-dataSet-CsvFile">
<form id="${pageId}-form" action="#" method="POST">
<div class="form-head"></div>
<div class="form-content">
<#include "include/dataSet_form_html_name.ftl">
<div class="workspace">
<div class="form-item">
<div class="form-item-label">
<label><@spring.message code='dataSet.csvFile' /></label>
</div>
<div class="form-item-value">
<input type="hidden" id="${pageId}-originalFileName" value="${(dataSet.fileName)!''?html}" />
<input type="hidden" name="fileName" value="${(dataSet.fileName)!''?html}" />
<input type="text" name="displayName" value="${(dataSet.displayName)!''?html}" class="file-display-name ui-widget ui-widget-content" readonly="readonly" />
<#if !readonly>
<div class="fileinput-wrapper">
<div class="ui-widget ui-corner-all ui-button fileinput-button"><@spring.message code='upload' /><input type="file"></div>
<div class="upload-file-info"></div>
</div>
</#if>
</div>
</div>
<div class="form-item form-item-encoding">
<div class="form-item-label">
<label><@spring.message code='dataSet.csvFileEncoding' /></label>
</div>
<div class="form-item-value">
<select name="encoding">
<#list availableCharsetNames as item>
<option value="${item}" <#if item == dataSet.encoding>selected="selected"</#if>>${item}</option>
</#list>
</select>
</div>
</div>
<div class="form-item">
<div class="form-item-label">
<label title="<@spring.message code='dataSet.csv.nameRow.desc' />">
<@spring.message code='dataSet.csv.nameRow' />
</label>
</div>
<div class="form-item-value">
<input type="hidden" name="nameRow" value="${(dataSet.nameRow)!''?html}" class="ui-widget ui-widget-content" />
<span class="nameRow-radios">
<label for="${pageId}-nameRow_0">
<@spring.message code='dataSet.csv.nameRow.none' />
</label>
<input type="radio" id="${pageId}-nameRow_0" name="nameRowRadio" value="0" />
<label for="${pageId}-nameRow_1">
<@spring.message code='dataSet.csv.nameRow.assign' />
</label>
<input type="radio" id="${pageId}-nameRow_1" name="nameRowRadio" value="1" />
</span>
&nbsp;
<input type="text" name="nameRowText" value="${(dataSet.nameRow)!''?html}" class="ui-widget ui-widget-content" style="width:4.1em;" />
</div>
</div>
<#include "include/dataSet_form_html_wow.ftl" >
</div>
</div>
<div class="form-foot" style="text-align:center;">
<#if !readonly>
<input type="submit" value="<@spring.message code='save' />" class="recommended" />
&nbsp;&nbsp;
<input type="reset" value="<@spring.message code='reset' />" />
<#else>
<div class="form-foot-placeholder">&nbsp;</div>
</#if>
</div>
</form>
<#include "include/dataSet_form_html_preview_pvp.ftl" >
</div>
<#include "../../include/page_js_obj.ftl" >
<#include "../../include/page_obj_form.ftl">
<#include "include/dataSet_form_js.ftl">
<#include "include/dataSet_form_js_nameRow.ftl">
<script type="text/javascript">
(function(po)
{
po.dataSetProperties = <@writeJson var=dataSetProperties />;
po.dataSetParams = <@writeJson var=dataSetParams />;
$.initButtons(po.element());
po.element("select[name='encoding']").selectmenu({ appendTo : po.element(), classes : { "ui-selectmenu-menu" : "encoding-selectmenu-menu" } });
po.element(".nameRow-radios").controlgroup();
po.initWorkspaceHeight();
po.initWorkspaceTabs(true);
po.initDataSetPropertiesTable(po.dataSetProperties);
po.initDataSetParamsTable(po.dataSetParams);
po.initPreviewParamValuePanel();
po.initNameRowOperation(${(dataSet.nameRow)!"1"});
po.updatePreviewOptionsData = function()
{
var dataSet = po.previewOptions.data.dataSet;
dataSet.fileName = po.element("input[name='fileName']").val();
dataSet.encoding = po.element("select[name='encoding']").val();
dataSet.nameRow = po.nameRowValue();
po.previewOptions.data.originalFileName = po.element("#${pageId}-originalFileName").val();
};
<#if formAction != 'saveAddForCsvFile'>
//编辑、查看操作应初始化为已完成预览的状态
po.updatePreviewOptionsData();
po.previewSuccess(true);
</#if>
po.isPreviewValueModified = function()
{
var fileName = po.element("input[name='fileName']").val();
var encoding = po.element("select[name='encoding']").val();
var nameRow = po.nameRowValue();
var pd = po.previewOptions.data.dataSet;
return (pd.fileName != fileName) || (pd.encoding != encoding)
|| (pd.nameRow != nameRow) ;
};
po.previewOptions.url = po.url("previewCsvFile");
po.previewOptions.beforePreview = function()
{
po.updatePreviewOptionsData();
if(!this.data.dataSet.fileName)
return false;
};
po.previewOptions.beforeRefresh = function()
{
if(!this.data.dataSet.fileName)
return false;
};
po.initPreviewOperations();
po.fileUploadInfo = function(){ return this.element(".upload-file-info"); };
po.element(".fileinput-button").fileupload(
{
url : po.url("uploadFile"),
paramName : "file",
success : function(uploadResult, textStatus, jqXHR)
{
$.fileuploadsuccessHandlerForUploadInfo(po.fileUploadInfo(), false);
po.element("input[name='fileName']").val(uploadResult.fileName);
po.element("input[name='displayName']").val(uploadResult.displayName);
}
})
.bind('fileuploadadd', function (e, data)
{
po.element("input[name='displayName']").val("");
$.fileuploadaddHandlerForUploadInfo(e, data, po.fileUploadInfo());
})
.bind('fileuploadprogressall', function (e, data)
{
$.fileuploadprogressallHandlerForUploadInfo(e, data, po.fileUploadInfo());
});
$.validator.addMethod("dataSetCsvFilePreviewRequired", function(value, element)
{
return !po.isPreviewValueModified() && po.previewSuccess();
});
po.form().validate(
{
ignore : "",
rules :
{
"name" : "required",
"displayName" : {"required": true, "dataSetCsvFilePreviewRequired": true, "dataSetPropertiesRequired": true},
"nameRowText": {"integer": true, "min": 1},
},
messages :
{
"name" : "<@spring.message code='validation.required' />",
"displayName" :
{
"required": "<@spring.message code='validation.required' />",
"dataSetCsvFilePreviewRequired": "<@spring.message code='dataSet.validation.previewRequired' />",
"dataSetPropertiesRequired": "<@spring.message code='dataSet.validation.propertiesRequired' />"
},
"nameRowText":
{
"integer": "<@spring.message code='validation.integer' />",
"min": "<@spring.message code='validation.min' />"
}
},
submitHandler : function(form)
{
var formData = $.formToJson(form);
formData["properties"] = po.getFormDataSetProperties();
formData["params"] = po.getFormDataSetParams();
formData["nameRow"] = po.nameRowValue();
formData["nameRowRadio"] = undefined;
formData["nameRowText"] = undefined;
var originalFileName = po.element("#${pageId}-originalFileName").val();
$.postJson("${contextPath}/analysis/dataSet/${formAction}?originalFileName="+originalFileName, formData,
function(response)
{
po.pageParamCallAfterSave(true, response.data);
});
},
errorPlacement : function(error, element)
{
error.appendTo(element.closest(".form-item-value"));
}
});
})
(${pageId});
</script>
</body>
</html>

View File

@ -0,0 +1,204 @@
<#include "../../include/import_global.ftl">
<#include "../../include/html_doctype.ftl">
<#--
titleMessageKey 标题标签I18N关键字不允许null
formAction 表单提交action允许为null
readonly 是否只读操作允许为null
-->
<#assign formAction=(formAction!'#')>
<#assign readonly=(readonly!false)>
<#assign isAdd=(formAction == 'saveAdd')>
<html>
<head>
<#include "../../include/html_head.ftl">
<title><#include "../../include/html_title_app_name.ftl">
<@spring.message code='${titleMessageKey}' /> - <@spring.message code='dataSet.dataSetType.CsvValue' />
</title>
</head>
<body>
<div id="${pageId}" class="page-form page-form-dataSet">
<form id="${pageId}-form" action="#" method="POST">
<div class="form-head"></div>
<div class="form-content">
<#include "include/dataSet_form_html_name.ftl">
<div class="workspace">
<div class="form-item">
<div class="form-item-label">
<label><@spring.message code='dataSet.csv' /></label>
</div>
<div class="form-item-value">
<textarea name="value" class="ui-widget ui-widget-content" style="display:none;">${(dataSet.value)!''?html}</textarea>
<div class="workspace-editor-wrapper ui-widget ui-widget-content">
<div id="${pageId}-workspaceEditor" class="workspace-editor"></div>
</div>
</div>
</div>
<#include "include/dataSet_form_html_wow.ftl" >
</div>
<div class="form-item">
<div class="form-item-label">
<label title="<@spring.message code='dataSet.csv.nameRow.desc' />">
<@spring.message code='dataSet.csv.nameRow' />
</label>
</div>
<div class="form-item-value">
<input type="hidden" name="nameRow" value="${(dataSet.nameRow)!''?html}" class="ui-widget ui-widget-content" />
<span class="nameRow-radios">
<label for="${pageId}-nameRow_0">
<@spring.message code='dataSet.csv.nameRow.none' />
</label>
<input type="radio" id="${pageId}-nameRow_0" name="nameRowRadio" value="0" />
<label for="${pageId}-nameRow_1">
<@spring.message code='dataSet.csv.nameRow.assign' />
</label>
<input type="radio" id="${pageId}-nameRow_1" name="nameRowRadio" value="1" />
</span>
&nbsp;
<input type="text" name="nameRowText" value="${(dataSet.nameRow)!''?html}" class="ui-widget ui-widget-content" style="width:4.1em;" />
</div>
</div>
</div>
<div class="form-foot" style="text-align:center;">
<#if !readonly>
<input type="submit" value="<@spring.message code='save' />" class="recommended" />
&nbsp;&nbsp;
<input type="reset" value="<@spring.message code='reset' />" />
<#else>
<div class="form-foot-placeholder">&nbsp;</div>
</#if>
</div>
</form>
<#include "include/dataSet_form_html_preview_pvp.ftl" >
</div>
<#include "../../include/page_js_obj.ftl" >
<#include "../../include/page_obj_form.ftl">
<#include "include/dataSet_form_js.ftl">
<#include "include/dataSet_form_js_nameRow.ftl">
<script type="text/javascript">
(function(po)
{
po.dataSetProperties = <@writeJson var=dataSetProperties />;
po.dataSetParams = <@writeJson var=dataSetParams />;
$.initButtons(po.element());
po.element(".nameRow-radios").controlgroup();
po.initWorkspaceHeight();
po.csvEditor = ace.edit("${pageId}-workspaceEditor");
po.csvEditor.setShowPrintMargin(false);
po.initWorkspaceEditor(po.csvEditor, po.element("textarea[name='value']").val());
po.initWorkspaceTabs();
po.getAddPropertyName = function()
{
var selectionRange = po.csvEditor.getSelectionRange();
return (po.csvEditor.session.getTextRange(selectionRange) || "");
};
po.initDataSetPropertiesTable(po.dataSetProperties);
po.initDataSetParamsTable(po.dataSetParams);
po.initPreviewParamValuePanel();
po.initNameRowOperation(${(dataSet.nameRow)!"1"});
po.updatePreviewOptionsData = function()
{
var value = po.csvEditor.getValue();
var dataSet = po.previewOptions.data.dataSet;
dataSet.value = value;
dataSet.nameRow = po.nameRowValue();
};
<#if formAction != 'saveAddForCsvValue'>
//编辑、查看操作应初始化为已完成预览的状态
po.updatePreviewOptionsData();
po.previewSuccess(true);
</#if>
po.isPreviewValueModified = function()
{
var value = po.csvEditor.getValue();
var nameRow = po.nameRowValue();
var pd = po.previewOptions.data.dataSet;
return (pd.value != value) || (pd.nameRow != nameRow);
};
po.previewOptions.url = po.url("previewCsvValue");
po.previewOptions.beforePreview = function()
{
po.updatePreviewOptionsData();
if(!this.data.dataSet.value)
return false;
};
po.previewOptions.beforeRefresh = function()
{
if(!this.data.dataSet.value)
return false;
};
po.initPreviewOperations();
$.validator.addMethod("dataSetCsvValueRequired", function(value, element)
{
var value = po.csvEditor.getValue();
return value.length > 0;
});
$.validator.addMethod("dataSetCsvValuePreviewRequired", function(value, element)
{
return !po.isPreviewValueModified() && po.previewSuccess();
});
po.form().validate(
{
ignore : "",
rules :
{
"name" : "required",
"value" : {"dataSetCsvValueRequired": true, "dataSetCsvValuePreviewRequired": true, "dataSetPropertiesRequired": true},
"nameRowText": {"integer": true, "min": 1},
},
messages :
{
"name" : "<@spring.message code='validation.required' />",
"value" :
{
"dataSetCsvValueRequired": "<@spring.message code='validation.required' />",
"dataSetCsvValuePreviewRequired": "<@spring.message code='dataSet.validation.previewRequired' />",
"dataSetPropertiesRequired": "<@spring.message code='dataSet.validation.propertiesRequired' />"
},
"nameRowText":
{
"integer": "<@spring.message code='validation.integer' />",
"min": "<@spring.message code='validation.min' />"
}
},
submitHandler : function(form)
{
var formData = $.formToJson(form);
formData["properties"] = po.getFormDataSetProperties();
formData["params"] = po.getFormDataSetParams();
formData["value"] = po.csvEditor.getValue();
formData["nameRow"] = po.nameRowValue();
formData["nameRowRadio"] = undefined;
formData["nameRowText"] = undefined;
$.postJson("${contextPath}/analysis/dataSet/${formAction}", formData,
function(response)
{
po.pageParamCallAfterSave(true, response.data);
});
},
errorPlacement : function(error, element)
{
error.appendTo(element.closest(".form-item-value"));
}
});
})
(${pageId});
</script>
</body>
</html>

View File

@ -121,6 +121,7 @@ readonly 是否只读操作允许为null
<#include "../../include/page_js_obj.ftl" >
<#include "../../include/page_obj_form.ftl">
<#include "include/dataSet_form_js.ftl">
<#include "include/dataSet_form_js_nameRow.ftl">
<script type="text/javascript">
(function(po)
{
@ -132,56 +133,11 @@ readonly 是否只读操作允许为null
po.element("#${pageId}-forceXls").buttonset();
po.element("#${pageId}-forceXls-${((dataSet.forceXls)!true)?string('true', 'false')}").click();
po.initWorkspaceHeight();
po.initWorkspaceTabs();
po.initWorkspaceTabs(true);
po.initDataSetPropertiesTable(po.dataSetProperties);
po.initDataSetParamsTable(po.dataSetParams);
po.initPreviewParamValuePanel();
po.element("input[name='nameRowRadio']").on("change", function()
{
var radioVal = $(this).val();
var $nameRow = po.element("input[name='nameRow']");
var $nameRowText = po.element("input[name='nameRowText']");
if(radioVal == "0")
{
$nameRow.val("0");
$nameRowText.hide();
}
else
{
var myVal = parseInt($nameRowText.val());
if(!myVal || myVal < 1)
$nameRowText.val("1");
$nameRowText.show();
}
});
po.nameRowValue = function(value)
{
var $nameRow = po.element("input[name='nameRow']");
var $nameRowText = po.element("input[name='nameRowText']");
if(value === undefined)
{
var radioVal = po.element("input[name='nameRowRadio']:checked").val();
if(radioVal == "0")
return $nameRow.val();
else
return $nameRowText.val();
}
else
{
$nameRow.val(value);
$nameRowText.val(value);
po.element("input[name='nameRowRadio'][value='"+(value >= 1 ? 1 : 0)+"']").attr("checked", "checked").change();
}
};
po.nameRowValue(${(dataSet.nameRow)!"1"});
po.initNameRowOperation(${(dataSet.nameRow)!"1"});
po.updatePreviewOptionsData = function()
{

View File

@ -77,7 +77,7 @@ readonly 是否只读操作允许为null
$.initButtons(po.element());
po.element("select[name='encoding']").selectmenu({ appendTo : po.element(), classes : { "ui-selectmenu-menu" : "encoding-selectmenu-menu" } });
po.initWorkspaceHeight();
po.initWorkspaceTabs();
po.initWorkspaceTabs(true);
po.initDataSetPropertiesTable(po.dataSetProperties);
po.initDataSetParamsTable(po.dataSetParams);
po.initPreviewParamValuePanel();

View File

@ -40,7 +40,7 @@ boolean readonly 是否只读操作默认为false
<ul class="add-button-list">
<li addURL="addForSql"><div><@spring.message code='dataSet.dataSetType.SQL' /></div></li>
<li addURL="addForExcel"><div><@spring.message code='dataSet.dataSetType.Excel' /></div></li>
<li addURL="addForCsv"><div><@spring.message code='dataSet.dataSetType.Csv' /></div></li>
<li addURL="addForCsvValue"><div><@spring.message code='dataSet.dataSetType.CsvValue' /></div></li>
<li addURL="addForCsvFile"><div><@spring.message code='dataSet.dataSetType.CsvFile' /></div></li>
<li addURL="addForJsonValue"><div><@spring.message code='dataSet.dataSetType.JsonValue' /></div></li>
<li addURL="addForJsonFile"><div><@spring.message code='dataSet.dataSetType.JsonFile' /></div></li>
@ -195,8 +195,8 @@ boolean readonly 是否只读操作默认为false
return "<@spring.message code='dataSet.dataSetType.SQL' />";
else if("${DataSetEntity.DATA_SET_TYPE_Excel}" == data)
return "<@spring.message code='dataSet.dataSetType.Excel' />";
else if("${DataSetEntity.DATA_SET_TYPE_Csv}" == data)
return "<@spring.message code='dataSet.dataSetType.Csv' />";
else if("${DataSetEntity.DATA_SET_TYPE_CsvValue}" == data)
return "<@spring.message code='dataSet.dataSetType.CsvValue' />";
else if("${DataSetEntity.DATA_SET_TYPE_CsvFile}" == data)
return "<@spring.message code='dataSet.dataSetType.CsvFile' />";
else if("${DataSetEntity.DATA_SET_TYPE_JsonValue}" == data)

View File

@ -106,8 +106,10 @@ po.previewOptions.url = "...";
</#if>
};
po.initWorkspaceTabs = function()
po.initWorkspaceTabs = function(disableParams)
{
disableParams = (disableParams == true ? true : false);
po.element(".workspace-operation-wrapper").tabs(
{
activate: function(event, ui)
@ -132,8 +134,14 @@ po.previewOptions.url = "...";
}
}
});
if(disableParams)
{
var paramsIndex = $(".workspace-operation-nav .operation-params", po.element(".workspace-operation-wrapper")).index();
po.element(".workspace-operation-wrapper").tabs("disable", paramsIndex);
}
};
//获取用于添加数据集属性的名
po.getAddPropertyName = function()
{

View File

@ -0,0 +1,70 @@
<#--
数据集表单页标题行操作JS片段
依赖:
page_js_obj.ftl
变量:
-->
<script type="text/javascript">
(function(po)
{
po.initNameRowOperation = function(initValue, noneValue, minAssignValue)
{
if(initValue == null)
initValue = 1;
if(noneValue == null)
noneValue = 0;
if(minAssignValue == null)
minAssignValue = 1;
po.element("input[name='nameRowRadio']").on("change", function()
{
var radioVal = $(this).val();
var $nameRow = po.element("input[name='nameRow']");
var $nameRowText = po.element("input[name='nameRowText']");
if(radioVal == (noneValue+""))
{
$nameRow.val(noneValue+"");
$nameRowText.hide();
}
else
{
var myVal = parseInt($nameRowText.val());
if(!myVal || myVal < minAssignValue)
$nameRowText.val(minAssignValue+"");
$nameRowText.show();
}
});
po.nameRowValue = function(value)
{
var $nameRow = po.element("input[name='nameRow']");
var $nameRowText = po.element("input[name='nameRowText']");
if(value === undefined)
{
var radioVal = po.element("input[name='nameRowRadio']:checked").val();
if(radioVal == (noneValue+""))
return $nameRow.val();
else
return $nameRowText.val();
}
else
{
$nameRow.val(value);
$nameRowText.val(value);
po.element("input[name='nameRowRadio'][value='"+(value >= minAssignValue ? minAssignValue : noneValue)+"']")
.attr("checked", "checked").change();
}
};
po.nameRowValue(initValue);
};
})
(${pageId});
</script>