mirror of
https://github.com/getrebuild/rebuild.git
synced 2024-09-21 15:56:53 +08:00
meta opt
This commit is contained in:
parent
266c24b3d0
commit
b116f7d8e6
|
@ -170,7 +170,26 @@ public class EasyMeta implements BaseMeta {
|
|||
* @return
|
||||
*/
|
||||
public boolean isBuiltin() {
|
||||
return isBuiltin(baseMeta);
|
||||
if (this.getMetaId() == null) {
|
||||
return true;
|
||||
}
|
||||
|
||||
if (isField()) {
|
||||
DisplayType dt = getDisplayType();
|
||||
if (dt == DisplayType.ID || BUILTIN_FIELD.contains(getName())) {
|
||||
return true;
|
||||
} else if (dt == DisplayType.REFERENCE) {
|
||||
Field field = (Field) this.baseMeta;
|
||||
// 明细引用
|
||||
if (field.getOwnEntity().getMasterEntity() != null
|
||||
&& field.getOwnEntity().getMasterEntity().equals(field.getReferenceEntities()[0] )) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
} else {
|
||||
return BUILTIN_ENTITY.contains(getName());
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -303,22 +322,6 @@ public class EasyMeta implements BaseMeta {
|
|||
return meta.getDescription();
|
||||
}
|
||||
|
||||
/**
|
||||
* @param meta
|
||||
* @return
|
||||
*/
|
||||
public static boolean isBuiltin(BaseMeta meta) {
|
||||
String metaName = meta.getName();
|
||||
if (meta instanceof Entity) {
|
||||
return BUILTIN_ENTITY.contains(metaName);
|
||||
}
|
||||
|
||||
if (((Field) meta).getType() == FieldType.PRIMARY) {
|
||||
return true;
|
||||
}
|
||||
return BUILTIN_FIELD.contains(metaName);
|
||||
}
|
||||
|
||||
/**
|
||||
* @return [Name, Label, Icon]
|
||||
*/
|
||||
|
|
|
@ -65,7 +65,7 @@ public class MetadataSorter {
|
|||
List<Entity> list = new ArrayList<>();
|
||||
for (Entity entity : entities) {
|
||||
int ec = entity.getEntityCode();
|
||||
if (EasyMeta.isBuiltin(entity) || (!containsBizz && isBizzFilter(ec))) {
|
||||
if (EasyMeta.valueOf(ec).isBuiltin() || (!containsBizz && isBizzFilter(ec))) {
|
||||
} else {
|
||||
list.add(entity);
|
||||
}
|
||||
|
|
|
@ -65,19 +65,21 @@ public class MetaEntityControll extends BaseControll {
|
|||
@RequestMapping("entity/{entity}/base")
|
||||
public ModelAndView pageEntityBase(@PathVariable String entity, HttpServletRequest request) throws IOException {
|
||||
ModelAndView mv = createModelAndView("/admin/entity/entity-edit.jsp");
|
||||
setEntityBase(mv, entity);
|
||||
EasyMeta entityMeta = setEntityBase(mv, entity);
|
||||
Entity entity2 = (Entity) entityMeta.getBaseMeta();
|
||||
|
||||
Entity entityMeta = MetadataHelper.getEntity(entity);
|
||||
if (entityMeta.getMasterEntity() != null) {
|
||||
mv.getModel().put("masterEntity", entityMeta.getMasterEntity().getName());
|
||||
mv.getModel().put("masterEntityLabel", EasyMeta.getLabel(entityMeta.getMasterEntity()));
|
||||
mv.getModel().put("nameField", entity2.getNameField().getName());
|
||||
|
||||
if (entity2.getMasterEntity() != null) {
|
||||
mv.getModel().put("masterEntity", entity2.getMasterEntity().getName());
|
||||
mv.getModel().put("masterEntityLabel", EasyMeta.getLabel(entity2.getMasterEntity()));
|
||||
}
|
||||
|
||||
return mv;
|
||||
}
|
||||
@RequestMapping("entity/{entity}/danger")
|
||||
@RequestMapping("entity/{entity}/advanced")
|
||||
public ModelAndView pageEntityDanger(@PathVariable String entity, HttpServletRequest request) throws IOException {
|
||||
ModelAndView mv = createModelAndView("/admin/entity/entity-danger.jsp");
|
||||
ModelAndView mv = createModelAndView("/admin/entity/entity-advanced.jsp");
|
||||
setEntityBase(mv, entity);
|
||||
return mv;
|
||||
}
|
||||
|
@ -161,14 +163,12 @@ public class MetaEntityControll extends BaseControll {
|
|||
* @return
|
||||
*/
|
||||
protected static EasyMeta setEntityBase(ModelAndView mv, String entity) {
|
||||
Entity e = MetadataHelper.getEntity(entity);
|
||||
EasyMeta entityMeta = new EasyMeta(e);
|
||||
EasyMeta entityMeta = EasyMeta.valueOf(entity);
|
||||
mv.getModel().put("entityMetaId", entityMeta.getMetaId());
|
||||
mv.getModel().put("entityName", entityMeta.getName());
|
||||
mv.getModel().put("entityLabel", entityMeta.getLabel());
|
||||
mv.getModel().put("icon", entityMeta.getIcon());
|
||||
mv.getModel().put("comments", entityMeta.getComments());
|
||||
mv.getModel().put("nameField", e.getNameField().getName());
|
||||
return entityMeta;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -104,7 +104,7 @@ public class MetaFieldControll extends BaseControll {
|
|||
Field fieldMeta = ((Entity) easyMeta.getBaseMeta()).getField(field);
|
||||
EasyMeta fieldEasyMeta = new EasyMeta(fieldMeta);
|
||||
|
||||
mv.getModel().put("fieldMetaId", fieldEasyMeta.isBuiltin() ? null : fieldEasyMeta.getMetaId());
|
||||
mv.getModel().put("fieldMetaId", fieldEasyMeta.getMetaId());
|
||||
mv.getModel().put("fieldName", fieldEasyMeta.getName());
|
||||
mv.getModel().put("fieldLabel", fieldEasyMeta.getLabel());
|
||||
mv.getModel().put("fieldComments", fieldEasyMeta.getComments());
|
||||
|
@ -121,6 +121,7 @@ public class MetaFieldControll extends BaseControll {
|
|||
} else {
|
||||
mv.getModel().put("fieldExtConfig", fieldEasyMeta.getFieldExtConfig());
|
||||
}
|
||||
mv.getModel().put("isBuiltin", fieldEasyMeta.isBuiltin());
|
||||
|
||||
return mv;
|
||||
}
|
||||
|
|
|
@ -34,7 +34,7 @@ a#entityIcon:hover{opacity:0.8}
|
|||
<li><a href="base">基本信息</a></li>
|
||||
<li><a href="fields">管理字段</a></li>
|
||||
<li><a href="form-design">设计布局</a></li>
|
||||
<li class="active"><a href="danger">高级配置</a></li>
|
||||
<li class="active"><a href="advanced">高级配置</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
|
@ -54,7 +54,7 @@ a#entityIcon:hover{opacity:0.8}
|
|||
</label>
|
||||
</div>
|
||||
<div>
|
||||
<button type="button" class="btn btn-danger J_drop-confirm" disabled="disabled" data-loading-text="删除中">确认删除</button>
|
||||
<button type="button" class="btn btn-danger J_drop-confirm" disabled="disabled" data-loading-text="删除中"><i class="zmdi zmdi-delete icon"></i> 确认删除</button>
|
||||
<div class="alert alert-warning alert-icon hide col-sm-6">
|
||||
<div class="icon"><span class="zmdi zmdi-alert-triangle"></span></div>
|
||||
<div class="message">系统内建实体,不允许删除</div>
|
|
@ -34,7 +34,7 @@ a#entityIcon:hover{opacity:0.8}
|
|||
<li class="active"><a href="base">基本信息</a></li>
|
||||
<li><a href="fields">管理字段</a></li>
|
||||
<li><a href="form-design">设计布局</a></li>
|
||||
<li><a href="danger">高级配置</a></li>
|
||||
<li><a href="advanced">高级配置</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
|
@ -87,8 +87,10 @@ a#entityIcon:hover{opacity:0.8}
|
|||
</div>
|
||||
<div class="form-group row footer">
|
||||
<div class="col-lg-5 col-sm-10 offset-sm-2">
|
||||
<button class="btn btn-primary J_save" type="button" data-loading-text="请稍后">保存</button>
|
||||
<div class="alert alert-warning alert-icon hide">
|
||||
<div class="J_action hide">
|
||||
<button class="btn btn-primary J_save" type="button" data-loading-text="请稍后">保存</button>
|
||||
</div>
|
||||
<div class="alert alert-warning alert-icon mb-0 hide">
|
||||
<div class="icon"><span class="zmdi zmdi-alert-triangle"></span></div>
|
||||
<div class="message">系统内建实体,不允许修改</div>
|
||||
</div>
|
||||
|
@ -102,16 +104,14 @@ a#entityIcon:hover{opacity:0.8}
|
|||
</div>
|
||||
<%@ include file="/_include/Foot.jsp"%>
|
||||
<script type="text/babel">
|
||||
clickIcon = function(icon){
|
||||
let clickIcon = function(icon){
|
||||
$('#entityIcon').attr('value', icon).find('i').attr('class', 'icon zmdi zmdi-' + icon)
|
||||
rb.modalHide()
|
||||
};
|
||||
}
|
||||
$(document).ready(function(){
|
||||
const metaId = '${entityMetaId}'
|
||||
if (!!!metaId){
|
||||
$('.J_save').next().removeClass('hide')
|
||||
$('.J_save').remove()
|
||||
}
|
||||
if (!!!metaId) $('.footer .alert').removeClass('hide')
|
||||
else $('.footer .J_action').removeClass('hide')
|
||||
if (!!'${masterEntity}') $('.J_masterEntity').removeClass('hide')
|
||||
|
||||
let _btn = $('.J_save').click(function(){
|
||||
|
|
|
@ -38,7 +38,7 @@
|
|||
<li><a href="../base">基本信息</a></li>
|
||||
<li class="active"><a href="../fields">管理字段</a></li>
|
||||
<li><a href="../form-design">设计布局</a></li>
|
||||
<li><a href="../danger">高级配置</a></li>
|
||||
<li><a href="../advanced">高级配置</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
|
@ -145,8 +145,11 @@
|
|||
</div>
|
||||
<div class="form-group row footer">
|
||||
<div class="col-lg-5 col-sm-10 offset-sm-2">
|
||||
<button class="btn btn-primary J_save" type="button" data-loading-text="请稍后">保存</button>
|
||||
<div class="alert alert-warning alert-icon hide">
|
||||
<div class="J_action hide">
|
||||
<button class="btn btn-primary btn-space J_save" type="button" data-loading-text="请稍后">保存</button>
|
||||
<button class="btn btn-danger bordered btn-space J_del" type="button" data-loading-text="请稍后"><i class="zmdi zmdi-delete icon"></i> 删除</button>
|
||||
</div>
|
||||
<div class="alert alert-warning alert-icon hide mb-0">
|
||||
<div class="icon"><span class="zmdi zmdi-alert-triangle"></span></div>
|
||||
<div class="message">系统内建字段,不允许修改</div>
|
||||
</div>
|
||||
|
@ -165,73 +168,67 @@
|
|||
<div class="dd3-action"><a href="javascript:;" class="J_default" title="设为默认">[默认]</a></div>
|
||||
</li>
|
||||
</script>
|
||||
|
||||
<%@ include file="/_include/Foot.jsp"%>
|
||||
<script src="${baseUrl}/assets/lib/widget/bootstrap-slider.min.js"></script>
|
||||
<script type="text/babel">
|
||||
$(document).ready(function(){
|
||||
const metaId = '${fieldMetaId}';
|
||||
let dt = '${fieldType}';
|
||||
if (dt.indexOf('(') > -1) dt = dt.match('\\((.+?)\\)')[1];
|
||||
const extConfigOld = JSON.parse('${fieldExtConfig}' || '{}');
|
||||
const metaId = '${fieldMetaId}'
|
||||
let dt = '${fieldType}'
|
||||
if (dt.indexOf('(') > -1) dt = dt.match('\\((.+?)\\)')[1]
|
||||
const extConfigOld = JSON.parse('${fieldExtConfig}' || '{}')
|
||||
|
||||
const btn = $('.J_save').click(function(){
|
||||
if (!!!metaId) return;
|
||||
if (!!!metaId) return
|
||||
let label = $val('#fieldLabel'),
|
||||
comments = $val('#comments'),
|
||||
nullable = $val('#fieldNullable'),
|
||||
updatable = $val('#fieldUpdatable');
|
||||
let _data = { fieldLabel:label, comments:comments, nullable:nullable, updatable:updatable };
|
||||
updatable = $val('#fieldUpdatable')
|
||||
let _data = { fieldLabel:label, comments:comments, nullable:nullable, updatable:updatable }
|
||||
_data = $cleanMap(_data)
|
||||
|
||||
let extConfig = {};
|
||||
let extConfig = {}
|
||||
$('.J_for-' + dt + ' .form-control').each(function(){
|
||||
let k = $(this).attr('id');
|
||||
let v = $val(this);
|
||||
if (extConfigOld[k] != v) extConfig[k] = v;
|
||||
});
|
||||
let k = $(this).attr('id')
|
||||
let v = $val(this)
|
||||
if (extConfigOld[k] != v) extConfig[k] = v
|
||||
})
|
||||
|
||||
if (Object.keys(extConfig).length > 0){
|
||||
_data['extConfig'] = JSON.stringify(extConfig);
|
||||
_data['extConfig'] = JSON.stringify(extConfig)
|
||||
}
|
||||
|
||||
_data = $cleanMap(_data)
|
||||
if (Object.keys(_data).length == 0){
|
||||
location.href = '../fields';
|
||||
return;
|
||||
location.href = '../fields'
|
||||
return
|
||||
}
|
||||
|
||||
_data.metadata = { entity:'MetaField', id:metaId||null };
|
||||
_data = JSON.stringify(_data);
|
||||
console.log(_data);
|
||||
btn.button('loading');
|
||||
_data.metadata = { entity:'MetaField', id:metaId||null }
|
||||
_data = JSON.stringify(_data)
|
||||
btn.button('loading')
|
||||
$.post(rb.baseUrl + '/admin/entity/field-update', _data, function(res){
|
||||
if (res.error_code == 0) location.href = '../fields';
|
||||
if (res.error_code == 0) location.href = '../fields'
|
||||
else rb.notice(res.error_msg, 'danger')
|
||||
});
|
||||
});
|
||||
if (!!!metaId){
|
||||
btn.next().removeClass('hide');
|
||||
btn.remove();
|
||||
}
|
||||
})
|
||||
})
|
||||
|
||||
$('#fieldNullable').attr('checked', $('#fieldNullable').data('o') == true)
|
||||
$('#fieldUpdatable').attr('checked', $('#fieldUpdatable').data('o') == true)
|
||||
|
||||
$('.J_for-' + dt).removeClass('hide');
|
||||
$('.J_for-' + dt).removeClass('hide')
|
||||
|
||||
let uploadNumber = [1, 5];
|
||||
let uploadNumber = [1, 5]
|
||||
for (let k in extConfigOld) {
|
||||
if (k == 'uploadNumber'){
|
||||
uploadNumber = extConfigOld[k].split(',');
|
||||
uploadNumber[0] = ~~uploadNumber[0];
|
||||
uploadNumber[1] = ~~uploadNumber[1];
|
||||
uploadNumber = extConfigOld[k].split(',')
|
||||
uploadNumber[0] = ~~uploadNumber[0]
|
||||
uploadNumber[1] = ~~uploadNumber[1]
|
||||
$('.J_minmax b').eq(0).text(uploadNumber[0])
|
||||
$('.J_minmax b').eq(1).text(uploadNumber[1])
|
||||
} else $('#' + k).val(extConfigOld[k]);
|
||||
} else $('#' + k).val(extConfigOld[k])
|
||||
}
|
||||
$('input.bslider').slider({ value:uploadNumber }).on('change', function(e){
|
||||
let v = e.value.newValue;
|
||||
let v = e.value.newValue
|
||||
$('.J_minmax b').eq(0).text(v[0])
|
||||
$('.J_minmax b').eq(1).text(v[1])
|
||||
})
|
||||
|
@ -239,26 +236,33 @@ $(document).ready(function(){
|
|||
if (dt == 'PICKLIST'){
|
||||
$.get(rb.baseUrl + '/admin/field/picklist-gets?entity=${entityName}&field=${fieldName}&isAll=false', function(res){
|
||||
if (res.data.length == 0){
|
||||
$('#picklist-items li').text('请添加选项'); return;
|
||||
$('#picklist-items li').text('请添加选项'); return
|
||||
}
|
||||
$('#picklist-items').empty();
|
||||
$('#picklist-items').empty()
|
||||
$(res.data).each(function(){
|
||||
picklistItemRender(this)
|
||||
});
|
||||
})
|
||||
if (res.data.length > 5) $('#picklist-items').parent().removeClass('autoh')
|
||||
});
|
||||
})
|
||||
|
||||
picklistModal = null;
|
||||
picklistModal = null
|
||||
$('.J_picklist-edit').click(function(){
|
||||
if (picklistModal) picklistModal.show()
|
||||
else picklistModal = rb.modal(rb.baseUrl + '/admin/page/entity/picklist-config?entity=${entityName}&field=${fieldName}', '配置列表选项')
|
||||
})
|
||||
}
|
||||
});
|
||||
|
||||
if ('${isBuiltin}' == 'true') $('.footer .alert').removeClass('hide')
|
||||
else $('.footer .J_action').removeClass('hide')
|
||||
|
||||
$('.J_del').click(function(){
|
||||
rb.notice('暂不支持删除')
|
||||
})
|
||||
})
|
||||
const picklistItemRender = function(data){
|
||||
let item = $('<li class="dd-item" data-key="' + data.id + '"><div class="dd-handle">' + data.text + '</div></li>').appendTo('#picklist-items')
|
||||
if (data['default'] == true) item.addClass('default').attr('title', '默认项')
|
||||
};
|
||||
}
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
|
|
|
@ -29,7 +29,7 @@
|
|||
<li><a href="base">基本信息</a></li>
|
||||
<li class="active"><a href="fields">管理字段</a></li>
|
||||
<li><a href="form-design">设计布局</a></li>
|
||||
<li><a href="danger">高级配置</a></li>
|
||||
<li><a href="advanced">高级配置</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
|
@ -64,7 +64,7 @@
|
|||
<th width="16%" data-field="fieldName">内部标识</th>
|
||||
<th width="16%" data-field="displayType">类型</th>
|
||||
<th data-field="comments">备注</th>
|
||||
<th width="100"></th>
|
||||
<th width="50"></th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody></tbody>
|
||||
|
@ -131,11 +131,7 @@ const render_list = function(q){
|
|||
$('<td><div class="text-muted">' + item.fieldName + '</div></td>').appendTo(tr)
|
||||
$('<td>' + item.displayType + '</td>').appendTo(tr)
|
||||
$('<td><div>' + (item.comments || '') + '</div></td>').appendTo(tr)
|
||||
let acts = $('<td class="actions"><a class="icon J_edit" href="field/' + item.fieldName + '"><i class="zmdi zmdi-settings"></i></a><a class="icon J_del"><i class="zmdi zmdi-delete"></i></a></td>').appendTo(tr)
|
||||
acts.find('.J_del').click(function(){
|
||||
if (item.builtin == true){ rb.notice('系统内建字段,不允许删除'); return }
|
||||
rb.notice('字段暂不支持删除')
|
||||
})
|
||||
$('<td class="actions"><a class="icon J_edit" href="field/' + item.fieldName + '"><i class="zmdi zmdi-settings"></i></a></td>').appendTo(tr)
|
||||
size++
|
||||
});
|
||||
|
||||
|
|
|
@ -30,7 +30,7 @@
|
|||
<li><a href="base">基本信息</a></li>
|
||||
<li><a href="fields">管理字段</a></li>
|
||||
<li class="active"><a href="form-design">设计布局</a></li>
|
||||
<li><a href="danger">高级配置</a></li>
|
||||
<li><a href="advanced">高级配置</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
@ -767,7 +767,11 @@ i.split.ui-draggable-dragging {
|
|||
background-color: #fff;
|
||||
color: #4c8bf5;
|
||||
}
|
||||
.btn-primary.bordered:hover {
|
||||
.btn-danger.bordered {
|
||||
background-color: #fff;
|
||||
color: #ea4335;
|
||||
}
|
||||
.btn-primary.bordered:hover, .btn-danger.bordered:hover {
|
||||
box-shadow: 0 1px 0 rgba(0, 0, 0, .1);
|
||||
}
|
||||
.dept-tree {
|
||||
|
|
Loading…
Reference in a new issue