mirror of
https://github.com/getrebuild/rebuild.git
synced 2024-09-21 07:55:56 +08:00
opt/fix
This commit is contained in:
parent
2f168462b7
commit
983f1c4304
|
@ -352,7 +352,9 @@ public class UserStore {
|
|||
|
||||
} else {
|
||||
store(newDept);
|
||||
getDepartment(parent).addChild(newDept);
|
||||
if (parent != null) {
|
||||
getDepartment(parent).addChild(newDept);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -136,7 +136,7 @@ public class MetadataSorter {
|
|||
fields = (Field[]) ArrayUtils.addAll(simpleFields2, sysFields2);
|
||||
|
||||
// 返回全部类型
|
||||
if (allowed == null) {
|
||||
if (allowed == null || allowed.length == 0) {
|
||||
List<Field> list = new ArrayList<>();
|
||||
for (Field field : fields) {
|
||||
if (!MetadataHelper.isSystemField(field)) {
|
||||
|
|
|
@ -179,7 +179,7 @@ public class AttchementAwareObserver extends OperatingObserver {
|
|||
Record att = EntityHelper.forNew(EntityHelper.Attachment, context.getOperator());
|
||||
att.setInt("belongEntity", record.getEntity().getEntityCode());
|
||||
att.setString("belongField", field.getName());
|
||||
att.setString("relatedRecord", record.getPrimary().toLiteral());
|
||||
att.setID("relatedRecord", record.getPrimary());
|
||||
att.setString("filePath", filePath);
|
||||
String ext = FilenameUtils.getExtension(filePath);
|
||||
if (StringUtils.isNotBlank(ext)) {
|
||||
|
|
|
@ -128,11 +128,11 @@ public class ReferenceSearch extends BaseControll {
|
|||
nameField2 = "&" + nameField2;
|
||||
}
|
||||
|
||||
String sql = "select {0},{1} from {2} where ({1} like '%{3}%'";
|
||||
String sql = "select {0},{1} from {2} where ( {1} like ''%{3}%''";
|
||||
sql = MessageFormat.format(sql,
|
||||
metaFieldEntity.getPrimaryField().getName(), nameField2, metaFieldEntity.getName(), q);
|
||||
if (metaEntity.containsField(EntityHelper.QuickCode) && StringUtils.isAlphanumericSpace(q)) {
|
||||
sql += MessageFormat.format(" or quickCode like '{0}%' )", q);
|
||||
sql += MessageFormat.format(" or quickCode like ''{0}%'' )", q);
|
||||
} else {
|
||||
sql += " )";
|
||||
}
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<ehcache>
|
||||
<ehcache xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:noNamespaceSchemaLocation="ehcache.xsd">
|
||||
|
||||
<diskStore path="java.io.tmpdir" />
|
||||
|
||||
|
|
|
@ -1,8 +1,7 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE metadata-config PUBLIC "-//persist4j/Metadata 0.3"
|
||||
"https://raw.githubusercontent.com/devezhao/persist4j/master/src/main/resources/metadata.dtd">
|
||||
<metadata-config schema-name-optimize="true"
|
||||
default-parent="SystemCommon">
|
||||
<metadata-config schema-name-optimize="true" default-parent="SystemCommon">
|
||||
|
||||
<entity name="SystemCommon" type-code="000">
|
||||
<field name="createdBy" type="reference" ref-entity="User" nullable="false" creatable="false" updatable="false" description="创建人" />
|
||||
|
@ -43,9 +42,8 @@
|
|||
<field name="privilegesId" type="primary" />
|
||||
<field name="roleId" type="reference" ref-entity="Role" cascade="delete" nullable="false" updatable="false" />
|
||||
<field name="entity" type="int" default-value="0" nullable="false" updatable="false" description="哪个实体" />
|
||||
<field name="zeroKey" type="string" description="其他权限KEY" />
|
||||
<field name="zeroKey" type="string" max-length="50" description="其他权限KEY" />
|
||||
<field name="definition" type="string" max-length="100" description="权限定义" />
|
||||
<index field-list="roleId" />
|
||||
<index type="unique" field-list="roleId,entity,zeroKey" />
|
||||
</entity>
|
||||
|
||||
|
@ -86,7 +84,7 @@
|
|||
<field name="refEntity" type="string" max-length="100" />
|
||||
<field name="cascade" type="string" max-length="20" default-value="ignore" />
|
||||
<field name="comments" type="string" max-length="200" />
|
||||
<field name="extConfig" type="string" max-length="1000" description="更多扩展配置,JSON格式KV" />
|
||||
<field name="extConfig" type="string" max-length="600" description="更多扩展配置,JSON格式KV" />
|
||||
<index type="unique" field-list="belongEntity,fieldName" />
|
||||
<index type="unique" field-list="belongEntity,physicalName" />
|
||||
</entity>
|
||||
|
@ -106,7 +104,7 @@
|
|||
<field name="belongEntity" type="string" max-length="100" nullable="false" updatable="false" />
|
||||
<field name="type" type="string" max-length="20" nullable="false" updatable="false" description="FORM,DATALIST,NAVI" />
|
||||
<field name="config" type="text" description="JSON格式配置" nullable="false" />
|
||||
<field name="applyTo" type="string" default-value="SELF" description="应用到哪些人,可选值: ALL/SELF/$MemberID(U/D/R)" />
|
||||
<field name="applyTo" type="string" max-length="420" default-value="SELF" description="应用到哪些人,可选值: ALL/SELF/$MemberID(U/D/R)" />
|
||||
</entity>
|
||||
|
||||
<entity name="FilterConfig" type-code="014" description="过滤条件配置">
|
||||
|
@ -114,7 +112,7 @@
|
|||
<field name="filterName" type="string" max-length="100" nullable="false" />
|
||||
<field name="belongEntity" type="string" max-length="100" nullable="false" updatable="false" />
|
||||
<field name="config" type="text" description="JSON格式配置" nullable="false" />
|
||||
<field name="applyTo" type="string" default-value="SELF" description="应用到哪些人,可选值: ALL/SELF/$MemberID(U/D/R)" />
|
||||
<field name="applyTo" type="string" max-length="420" default-value="SELF" description="应用到哪些人,可选值: ALL/SELF/$MemberID(U/D/R)" />
|
||||
</entity>
|
||||
|
||||
<entity name="ViewAddonsConfig" type-code="015" description="视图页相关配置">
|
||||
|
@ -129,7 +127,7 @@
|
|||
<field name="dashboardId" type="primary" />
|
||||
<field name="title" type="string" max-length="100" nullable="false" />
|
||||
<field name="config" type="text" description="JSON格式配置" nullable="false" />
|
||||
<field name="shareTo" type="string" default-value="SELF" description="共享给哪些人,可选值: ALL/SELF/$MemberID(U/D/R)" />
|
||||
<field name="shareTo" type="string" max-length="420" default-value="SELF" description="共享给哪些人,可选值: ALL/SELF/$MemberID(U/D/R)" />
|
||||
</entity>
|
||||
|
||||
<entity name="ChartConfig" type-code="017" description="图表配置">
|
||||
|
@ -158,25 +156,26 @@
|
|||
|
||||
<entity name="Notification" type-code="022" description="通知消息">
|
||||
<field name="messageId" type="primary" />
|
||||
<field name="messageType" type="small-int" default-value="0" updatable="false" />
|
||||
<field name="fromUser" type="reference" ref-entity="User" nullable="false" updatable="false" />
|
||||
<field name="toUser" type="reference" ref-entity="User" nullable="false" updatable="false" />
|
||||
<field name="message" type="string" max-length="600" updatable="false" />
|
||||
<field name="messageRich" type="text" max-length="6000" updatable="false" />
|
||||
<field name="message" type="string" max-length="1000" updatable="false" />
|
||||
<field name="relatedRecord" type="any-reference" updatable="false" description="相关业务记录" />
|
||||
<field name="unread" type="bool" default-value="T" />
|
||||
<index field-list="toUser,unread" />
|
||||
<index field-list="toUser,unread,createdOn" />
|
||||
</entity>
|
||||
|
||||
<entity name="Attachment" type-code="023" description="附件">
|
||||
<field name="attachmentId" type="primary" />
|
||||
<field name="belongEntity" type="small-int" default-value="0" updatable="false" />
|
||||
<field name="belongField" type="string" max-length="" updatable="false" />
|
||||
<field name="relatedRecord" type="string" max-length="20" updatable="false" description="相关业务记录" />
|
||||
<field name="filePath" type="string" max-length="100" nullable="false" />
|
||||
<field name="belongField" type="string" max-length="100" updatable="false" />
|
||||
<field name="relatedRecord" type="any-reference" updatable="false" description="相关业务记录" />
|
||||
<field name="filePath" type="string" max-length="200" nullable="false" />
|
||||
<field name="fileType" type="string" max-length="20" />
|
||||
<field name="fileSize" type="int" default-value="0" description="in KB" />
|
||||
<field name="inFolder" type="reference" ref-entity="AttachmentFolder" cascade="remove-links" />
|
||||
<index field-list="belongEntity,belongField,filePath"/>
|
||||
<index field-list="relatedRecord"/>
|
||||
<index field-list="inFolder,createdOn"/>
|
||||
</entity>
|
||||
|
||||
<entity name="AttachmentFolder" type-code="024" description="附件目录">
|
||||
|
|
|
@ -15,7 +15,7 @@
|
|||
</listener>
|
||||
|
||||
<filter>
|
||||
<filter-name>characterEncodingFilter</filter-name>
|
||||
<filter-name>encodingFilter</filter-name>
|
||||
<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
|
||||
<init-param>
|
||||
<param-name>encoding</param-name>
|
||||
|
@ -27,10 +27,19 @@
|
|||
</init-param>
|
||||
</filter>
|
||||
<filter-mapping>
|
||||
<filter-name>characterEncodingFilter</filter-name>
|
||||
<filter-name>encodingFilter</filter-name>
|
||||
<url-pattern>/*</url-pattern>
|
||||
</filter-mapping>
|
||||
|
||||
<filter>
|
||||
<filter-name>etagFilter</filter-name>
|
||||
<filter-class>org.springframework.web.filter.ShallowEtagHeaderFilter</filter-class>
|
||||
</filter>
|
||||
<filter-mapping>
|
||||
<filter-name>etagFilter</filter-name>
|
||||
<url-pattern>/user/*</url-pattern>
|
||||
</filter-mapping>
|
||||
|
||||
<servlet>
|
||||
<servlet-name>DispatcherServlet</servlet-name>
|
||||
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
|
||||
|
|
|
@ -14,7 +14,7 @@
|
|||
<link rel="stylesheet" type="text/css" href="${baseUrl}/assets/css/rb-base.css">
|
||||
<link rel="stylesheet" type="text/css" href="${baseUrl}/assets/css/rb-page.css">
|
||||
<meta name="rb.env" content="<%=AppUtils.devMode() ? "dev" : "production"%>">
|
||||
<meta name="rb.baseUrl" content="${pageContext.request.contextPath}">
|
||||
<meta name="rb.baseUrl" content="${baseUrl}">
|
||||
<meta name="rb.storageUrl" content="<%=SystemConfiguration.getStorageUrl()%>">
|
||||
<%if (AppUtils.isAdminUser(request)){%>
|
||||
<meta name="rb.isAdminUser" content="true">
|
||||
|
|
|
@ -38,12 +38,12 @@ $(document).ready(function(){
|
|||
maximumSelectionLength: 1,
|
||||
allowClear: true,
|
||||
ajax: {
|
||||
url: rb.baseUrl + '/commons/search',
|
||||
url: rb.baseUrl + '/app/entity/search',
|
||||
delay: 300,
|
||||
data: function(params) {
|
||||
let query = {
|
||||
entity: 'Department',
|
||||
fields: 'name',
|
||||
qfields: 'name',
|
||||
q: params.term,
|
||||
}
|
||||
return query
|
||||
|
|
|
@ -38,12 +38,12 @@ $(document).ready(function(){
|
|||
maximumSelectionLength: 1,
|
||||
allowClear: true,
|
||||
ajax: {
|
||||
url: rb.baseUrl + '/commons/search',
|
||||
url: rb.baseUrl + '/app/entity/search',
|
||||
delay: 300,
|
||||
data: function(params) {
|
||||
let query = {
|
||||
entity: 'Role',
|
||||
fields: 'name',
|
||||
qfields: 'name',
|
||||
q: params.term,
|
||||
}
|
||||
return query
|
||||
|
|
|
@ -33,7 +33,7 @@ $(document).ready(function(){
|
|||
$('.J_dash-select').click( ()=>{ })
|
||||
$('.J_dash-new').click( ()=>{ renderRbcomp(<DlgDashAdd />) })
|
||||
$('.J_dash-edit').click(()=>{ renderRbcomp(<DlgDashSettings dashid={dashid} title={d[1]} shareToAll={d[4] == 'ALL'} />) })
|
||||
$('.J_chart-new').click(()=>{ renderRbcomp(<DlgAddChart dashid={dashid} />) })
|
||||
$('.J_chart-new').click(()=>{ add_chart() })
|
||||
$('.J_chart-select').click(()=>{ })
|
||||
}))
|
||||
})
|
||||
|
@ -45,6 +45,10 @@ $(window).resize(() => {
|
|||
}, 200, 'resize-charts')
|
||||
})
|
||||
|
||||
const add_chart = ()=>{
|
||||
renderRbcomp(<DlgAddChart dashid={dashid} />)
|
||||
}
|
||||
|
||||
let gridster = null
|
||||
let gridster_undata = true
|
||||
let render_dashboard = function(cfg){
|
||||
|
@ -116,7 +120,7 @@ class DlgAddChart extends RbFormHandler {
|
|||
super(props)
|
||||
}
|
||||
render() {
|
||||
return (<RbModal title="添加图表" ref="dlg" destroyOnHide={false}>
|
||||
return (<RbDialog title="添加图表" ref="dlg">
|
||||
<form>
|
||||
<div className="form-group row">
|
||||
<label className="col-sm-3 col-form-label text-sm-right">图表数据来源</label>
|
||||
|
@ -130,7 +134,7 @@ class DlgAddChart extends RbFormHandler {
|
|||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</RbModal>)
|
||||
</RbDialog>)
|
||||
}
|
||||
componentDidMount() {
|
||||
let that = this
|
||||
|
@ -139,15 +143,15 @@ class DlgAddChart extends RbFormHandler {
|
|||
$(res.data).each(function(){
|
||||
$('<option value="' + this.name + '">' + this.label + '</option>').appendTo(entity_el)
|
||||
})
|
||||
this.select2 = entity_el.select2({
|
||||
this.__select2 = entity_el.select2({
|
||||
language: 'zh-CN',
|
||||
placeholder: '选择数据源',
|
||||
placeholder: '选择数据来源',
|
||||
width: '100%'
|
||||
})
|
||||
})
|
||||
}
|
||||
next() {
|
||||
let e = this.select2.val()
|
||||
let e = this.__select2.val()
|
||||
if (!!!e) return
|
||||
location.href = rb.baseUrl + '/dashboard/chart-design?source=' + e + '&dashid=' + this.props.dashid
|
||||
}
|
||||
|
@ -158,7 +162,7 @@ class DlgDashSettings extends RbFormHandler {
|
|||
super(props)
|
||||
}
|
||||
render() {
|
||||
return (<RbModal title="仪表盘设置" ref="dlg" destroyOnHide={false}>
|
||||
return (<RbDialog title="仪表盘设置" ref="dlg">
|
||||
<form>
|
||||
<div className="form-group row">
|
||||
<label className="col-sm-3 col-form-label text-sm-right">名称</label>
|
||||
|
@ -181,7 +185,7 @@ class DlgDashSettings extends RbFormHandler {
|
|||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</RbModal>)
|
||||
</RbDialog>)
|
||||
}
|
||||
save() {
|
||||
let _data = { shareTo: this.state.shareToAll == true ? 'ALL' : 'SELF', title: this.state.title || '默认仪表盘' }
|
||||
|
@ -200,7 +204,7 @@ class DlgDashAdd extends RbFormHandler {
|
|||
super(props)
|
||||
}
|
||||
render() {
|
||||
return (<RbModal title="添加仪表盘" ref="dlg" destroyOnHide={true}>
|
||||
return (<RbDialog title="添加仪表盘" ref="dlg">
|
||||
<form>
|
||||
<div className="form-group row">
|
||||
<label className="col-sm-3 col-form-label text-sm-right">名称</label>
|
||||
|
@ -223,7 +227,7 @@ class DlgDashAdd extends RbFormHandler {
|
|||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</RbModal>)
|
||||
</RbDialog>)
|
||||
}
|
||||
save() {
|
||||
let _data = { title: this.state.title || '我的仪表盘' }
|
||||
|
|
|
@ -4,29 +4,27 @@
|
|||
(function($) {
|
||||
$.fn.extend({
|
||||
'button': function(state) {
|
||||
var el = $(this)
|
||||
if (el.prop('nodeName') != 'BUTTON') return this
|
||||
if (state == 'loading') {
|
||||
el.attr('disabled', true)
|
||||
var loadingText = el.data('loading-text')
|
||||
if (loadingText){
|
||||
var that = this
|
||||
this.__loadingTextTimer = setTimeout(function(){
|
||||
that.__textHold = el.html()
|
||||
el.text(loadingText)
|
||||
}, 200)
|
||||
}
|
||||
} else if (state == 'reset') {
|
||||
el.attr('disabled', false)
|
||||
if (this.__loadingTextTimer) {
|
||||
clearTimeout(this.__loadingTextTimer)
|
||||
this.__loadingTextTimer = null
|
||||
if (this.__textHold) {
|
||||
el.html(this.__textHold)
|
||||
return this.each(function(){
|
||||
var el = $(this)
|
||||
if (el.prop('nodeName') != 'BUTTON') return
|
||||
if (state == 'loading') {
|
||||
el.attr('disabled', true)
|
||||
var loadingText = el.data('loading-text')
|
||||
if (loadingText){
|
||||
this.__loadingTextTimer = setTimeout(()=>{
|
||||
this.__textHold = el.html()
|
||||
el.text(loadingText)
|
||||
}, 200)
|
||||
}
|
||||
} else if (state == 'reset') {
|
||||
el.attr('disabled', false)
|
||||
if (this.__loadingTextTimer) {
|
||||
clearTimeout(this.__loadingTextTimer)
|
||||
this.__loadingTextTimer = null
|
||||
if (this.__textHold) el.html(this.__textHold)
|
||||
}
|
||||
}
|
||||
}
|
||||
return this
|
||||
})
|
||||
}
|
||||
})
|
||||
|
||||
|
|
|
@ -6,7 +6,7 @@ class RbDialog extends React.Component {
|
|||
}
|
||||
render() {
|
||||
let inFrame = !!!this.props.children
|
||||
return (<div className="modal rbmodal colored-header colored-header-primary" ref="rbmodal">
|
||||
return (<div className="modal rbmodal colored-header colored-header-primary" tabIndex="-1" ref="rbmodal">
|
||||
<div className="modal-dialog" style={{ maxWidth:(this.props.width || 680) + 'px' }}>
|
||||
<div className="modal-content">
|
||||
<div className="modal-header modal-header-colored">
|
||||
|
|
|
@ -36,7 +36,7 @@
|
|||
<div class="tab-pane active" id="ENTITY">
|
||||
<select class="form-control form-control-sm J_menuEntity">
|
||||
<option value="">请选择关联项</option>
|
||||
<optgroup label="实体"></optgroup>
|
||||
<optgroup label="业务实体"></optgroup>
|
||||
</select>
|
||||
</div>
|
||||
<div class="tab-pane" id="URL">
|
||||
|
|
|
@ -22,8 +22,6 @@ import org.dom4j.Element;
|
|||
import org.springframework.context.ApplicationContext;
|
||||
import org.springframework.context.support.ClassPathXmlApplicationContext;
|
||||
|
||||
import com.rebuild.server.metadata.EntityHelper;
|
||||
|
||||
import cn.devezhao.persist4j.Entity;
|
||||
import cn.devezhao.persist4j.PersistManagerFactory;
|
||||
import cn.devezhao.persist4j.engine.PersistManagerFactoryImpl;
|
||||
|
@ -45,7 +43,7 @@ public class SchemaGen {
|
|||
CTX = new ClassPathXmlApplicationContext(new String[] { "application-ctx.xml", });
|
||||
PMF = CTX.getBean(PersistManagerFactoryImpl.class);
|
||||
|
||||
// genAll();
|
||||
genAll();
|
||||
// gen(EntityHelper.MetaEntity);
|
||||
// gen(EntityHelper.MetaField);
|
||||
// gen(EntityHelper.PickList);
|
||||
|
@ -54,9 +52,9 @@ public class SchemaGen {
|
|||
// gen(EntityHelper.ViewAddonsConfig);
|
||||
// gen(EntityHelper.LayoutConfig);
|
||||
// gen(EntityHelper.FilterConfig);
|
||||
gen(EntityHelper.ShareAccess);
|
||||
// gen(EntityHelper.ShareAccess);
|
||||
// gen(EntityHelper.SystemConfig);
|
||||
gen(EntityHelper.Notification);
|
||||
// gen(EntityHelper.Notification);
|
||||
// gen(EntityHelper.User);
|
||||
// gen(EntityHelper.DashboardConfig);
|
||||
// gen(EntityHelper.ChartConfig);
|
||||
|
|
Loading…
Reference in a new issue