diff --git a/src/main/webapp/assets/js/assign-share.jsx b/src/main/webapp/assets/js/assign-share.jsx
index 17dbb60a3..58de7e57c 100644
--- a/src/main/webapp/assets/js/assign-share.jsx
+++ b/src/main/webapp/assets/js/assign-share.jsx
@@ -1,5 +1,5 @@
// ~~ 分派
-class DlgAssign extends RbDialogHandler {
+class DlgAssign extends RbModalHandler {
constructor(props) {
super(props)
this.onView = !!window.RbViewPage
@@ -7,7 +7,7 @@ class DlgAssign extends RbDialogHandler {
this.typeName = '分派'
}
render() {
- return (
+ return (
- )
+ )
}
componentDidMount() {
$(this.refs['toUser']).select2({
@@ -127,13 +127,13 @@ class DlgShare extends DlgAssign {
}
// ~~ 管理共享
-class DlgUnShare extends RbDialogHandler {
+class DlgUnShare extends RbModalHandler {
constructor(props) {
super(props)
this.state.selectAccess = []
}
render(){
- return (
+ return (
{(this.state.sharingList ||[]).map((item)=>{
@@ -150,7 +150,7 @@ class DlgUnShare extends RbDialogHandler {
- )
+ )
}
componentDidMount() {
$.get(`${rb.baseUrl}/app/entity/sharing-list?id=${this.props.id}`, (res)=>{
diff --git a/src/main/webapp/assets/js/bizuser/user-view.jsx b/src/main/webapp/assets/js/bizuser/user-view.jsx
index 432e7d919..85f108ead 100644
--- a/src/main/webapp/assets/js/bizuser/user-view.jsx
+++ b/src/main/webapp/assets/js/bizuser/user-view.jsx
@@ -46,14 +46,14 @@ const toggleDisabled = function(disabled){
}
// 变更部门
-class DlgChangeDept extends RbDialogHandler {
+class DlgChangeDept extends RbModalHandler {
constructor(props) {
super(props)
this.type = 'Department'
this.typeName = '部门'
}
render(){
- return (
+ return (
- )
+ )
}
componentDidMount() {
let that = this
diff --git a/src/main/webapp/assets/js/charts/chart-design.jsx b/src/main/webapp/assets/js/charts/chart-design.jsx
index 9508160ba..53c2d2de4 100644
--- a/src/main/webapp/assets/js/charts/chart-design.jsx
+++ b/src/main/webapp/assets/js/charts/chart-design.jsx
@@ -38,15 +38,12 @@ $(document).ready(() => {
}
}).disableSelection()
- let dlg_filter
let saveFilter = function(filter){
- dlg_filter.hide()
esourceFilter = filter
render_preview()
}
$('.J_filter').click(()=>{
- if (dlg_filter) dlg_filter.show()
- else dlg_filter = renderRbcomp()
+ renderRbcomp()
})
let cts = $('.chart-type > a').click(function(){
@@ -93,7 +90,7 @@ $(window).resize(() => {
})
const CTs = { SUM:'求和', AVG:'平均值', MAX:'最大值', MIN:'最小值', COUNT:'计数', Y:'按年', Q:'按季', M:'按月', D:'按日', H:'按时' }
-let axis_props = null
+let dlgAxisProps
let add_axis = ((target, axis) => {
let el = $($('#axis-ietm').html()).appendTo($(target))
let fName = null
@@ -149,9 +146,13 @@ let add_axis = ((target, axis) => {
_this.addClass('text-primary')
render_preview()
} else {
- let state = { axisEl: el, isNumAxis: isNumAxis, label: el.attr('data-label'), scale: el.attr('data-scale') }
- if (axis_props) axis_props.show(state)
- else axis_props = renderRbcomp()
+ let state = { isNumAxis: isNumAxis, label: el.attr('data-label'), scale: el.attr('data-scale') }
+ state.callback = (s)=>{
+ el.attr({ 'data-label': s.label, 'data-scale': s.scale })
+ render_preview()
+ }
+ if (dlgAxisProps) dlgAxisProps.show(state)
+ else dlgAxisProps = renderRbcomp()
}
})
if (!!calc) el.find('.dropdown-menu li[data-calc="' + calc + '"]').addClass('text-primary')
@@ -246,26 +247,24 @@ let __build_axisItem = ((item, isNum) => {
return x
})
-class DlgAxisProps extends React.Component {
+class DlgAxisProps extends RbFormHandler {
constructor(props) {
super(props)
- this.state = { ...props }
- this.changeVal = this.changeVal.bind(this)
}
render() {
- return (
- )
}
save() {
let _data = { title: this.state.title || '我的仪表盘' }
diff --git a/src/main/webapp/assets/js/rb-advfilter.jsx b/src/main/webapp/assets/js/rb-advfilter.jsx
index ed03dc0cb..03d4f4129 100644
--- a/src/main/webapp/assets/js/rb-advfilter.jsx
+++ b/src/main/webapp/assets/js/rb-advfilter.jsx
@@ -15,10 +15,10 @@ class AdvFilter extends React.Component {
this.childrenRef = []
}
render() {
- let needSave = this.props.needSave == true
+ let showSave = this.props.showSave == true
let operBtns = (
-
-
+
+
)
@@ -49,7 +49,7 @@ class AdvFilter extends React.Component {
}
- {needSave ?
+ {showSave ?
{rb.isAdminUser !== true ? null :
@@ -68,8 +68,7 @@ class AdvFilter extends React.Component {
)
-
- if (this.props.inModal) return ({advFilter})
+ if (this.props.inModal) return {advFilter}
else return advFilter
}
componentDidMount() {
@@ -178,22 +177,22 @@ class AdvFilter extends React.Component {
confirm() {
let adv = this.toFilterJson()
if (!!!adv) return
- if (this.props.confirm) this.props.confirm(adv, this.state.filterName, this.state.applyToAll)
+ else if (this.props.confirm) this.props.confirm(adv, this.state.filterName, this.state.applyToAll)
else{
$.post(rb.baseUrl + '/app/entity/advfilter/test-parse', JSON.stringify(adv), function(res){
if (res.error_code == 0) console.log(JSON.stringify(adv) + '\n>> ' + res.data)
else rb.notice(res.error_msg, 'danger')
})
}
+ if (this.props.inModal) this.refs['dlg'].hide()
}
show(state) {
if (this.props.inModal) this.refs['dlg'].show(state)
}
- hide(callCancel) {
+ hide() {
if (this.props.inModal) this.refs['dlg'].hide()
- // callback
- if (callCancel == true && this.props.cancel) this.props.cancel()
+ if (this.props.cancel) this.props.cancel()
}
}
diff --git a/src/main/webapp/assets/js/rb-components.jsx b/src/main/webapp/assets/js/rb-components.jsx
index 31af17194..2400cb66f 100644
--- a/src/main/webapp/assets/js/rb-components.jsx
+++ b/src/main/webapp/assets/js/rb-components.jsx
@@ -1,5 +1,5 @@
-// ~~ Dialog 兼容子元素和 iFrame
-class RbDialog extends React.Component {
+// ~~ Modal 兼容子元素和 iFrame
+class RbModal extends React.Component {
constructor(props) {
super(props)
this.state = { ...props }
@@ -51,12 +51,12 @@ class RbDialog extends React.Component {
else height += 45; // .main-content's padding
root.find('.modal-body').height(height)
that.setState({ frameLoad: false })
- }, 100, 'RbDialog-resize')
+ }, 100, 'RbModal-resize')
}
}
-//~~ Dialog 处理器
-class RbDialogHandler extends React.Component {
+//~~ Modal 处理器
+class RbModalHandler extends React.Component {
constructor(props) {
super(props)
this.state = { ...props }
@@ -77,7 +77,7 @@ class RbDialogHandler extends React.Component {
}
// ~~ Form 处理器
-class RbFormHandler extends RbDialogHandler {
+class RbFormHandler extends RbModalHandler {
constructor(props) {
super(props)
this.handleChange = this.handleChange.bind(this)
@@ -92,73 +92,6 @@ class RbFormHandler extends RbDialogHandler {
}
}
-// ~~ 弹出窗口
-class RbModal extends React.Component {
- constructor(props) {
- super(props)
- this.state = { ...props, inLoad: true, isDestroy: false }
- }
- render() {
- return (this.state.isDestroy == true ? null :
-
-
-
-
-
{this.state.title || 'RbModal'}
-
-
-
- {this.props.children || }
-
-
-
-
-
- )
- }
- componentDidMount() {
- if (this.props.children) this.setState({ inLoad: false })
- this.show(this.props.onShow)
- }
- resize() {
- if (!!!this.state.url) return // 非 iframe 无需 resize
-
- let root = $(this.refs['rbmodal'])
- let that = this
- $setTimeout(function(){
- let iframe = root.find('iframe')
- let height = iframe.contents().find('.main-content').height()
- if (height == 0) height = iframe.contents().find('body').height()
- else height += 45; // .main-content's padding
- root.find('.modal-body').height(height)
- that.setState({ inLoad: false })
- }, 100, 'RbModal-resize')
- }
- show(callback) {
- let that = this
- this.setState({ isDestroy: false }, function(){
- $(that.refs['rbmodal']).modal({ show: true, backdrop: 'static' })
- typeof callback == 'function' && callback(that)
- })
- }
- hide(){
- let root = $(this.refs['rbmodal'])
- let warp = root.parent()
- root.modal('hide')
- let destroy = true
- if (this.props.destroyOnHide == false) destroy = false
- else root.modal('dispose')
- this.setState({ isDestroy: destroy, inLoad: destroy }, ()=>{
- if (destroy == true) {
- setTimeout(() => { warp.remove() }, 200)
- }
-
- // 如果还有其他 modal 处于 open 态, 则保持 modal-open,否则主窗口滚动条会消失
- if ($('.rbmodal.show').length > 0) $(document.body).addClass('modal-open')
- })
- }
-}
-
// ~~ 提示框
class RbAlert extends React.Component {
constructor(props) {
@@ -267,23 +200,27 @@ let rb = rb || {}
rb.__currentModal
rb.__currentModalCache = {}
+// @url - URL in iframe
+// @title
+// @ext - more props
rb.modal = function(url, title, ext) {
ext = ext || {}
- if (ext.destroyOnHide !== true) ext.destroyOnHide = false // default false
- if (ext.destroyOnHide === false && !!rb.__currentModalCache[url]) {
+ ext.disposeOnHide = ext.disposeOnHide === true // default false
+ if (ext.disposeOnHide === false && !!rb.__currentModalCache[url]) {
rb.__currentModal = rb.__currentModalCache[url]
rb.__currentModal.show()
- return rb.__currentModal
} else {
- rb.__currentModal = renderRbcomp()
- if (ext.destroyOnHide === false) rb.__currentModalCache[url] = rb.__currentModal
- return rb.__currentModal
+ rb.__currentModal = renderRbcomp()
+ if (ext.disposeOnHide == false){ // No cache
+ rb.__currentModalCache[url] = rb.__currentModal
+ }
}
+ return rb.__currentModal
}
rb.modalHide = function(url){
if (url){
- let m = rb.__currentModalCache[url]
- if (m) m.hide()
+ let c = rb.__currentModalCache[url]
+ if (c) c.hide()
else console.warn('No Modal found by url-key : ' + url)
} else if (rb.__currentModal) {
rb.__currentModal.hide()
@@ -291,25 +228,31 @@ rb.modalHide = function(url){
}
rb.modalResize = function(url){
if (url){
- let m = rb.__currentModalCache[url]
- if (m) m.resize()
+ let c = rb.__currentModalCache[url]
+ if (c) m.resize()
else console.warn('No Modal found by url-key : ' + url)
} else if (rb.__currentModal){
rb.__currentModal.resize()
}
}
-rb.alert = function(message, title_ext, ext){
- let title = title_ext
- if ($.type(title_ext) == 'object'){
+// @message
+// @titleExt - title or ext
+// @ext - more props
+rb.alert = function(message, titleExt, ext){
+ let title = titleExt
+ if ($.type(titleExt) == 'object'){
title = null
- ext = title_ext
+ ext = titleExt
}
ext = ext || {}
if (ext.html == true) return renderRbcomp()
else return renderRbcomp()
}
+//@message
+//@type - danger, warning or null
+//@ext - more props
rb.notice = function(message, type, ext){
if (top != self && parent.rb && parent.rb.notice){
parent.rb.notice(message, type, ext)
diff --git a/src/main/webapp/assets/js/rb-forms.jsx b/src/main/webapp/assets/js/rb-forms.jsx
index 36a424336..4d3d62362 100644
--- a/src/main/webapp/assets/js/rb-forms.jsx
+++ b/src/main/webapp/assets/js/rb-forms.jsx
@@ -848,7 +848,7 @@ class RbViewModal extends React.Component {
// 如果还有其他 rbview 处于 open 态, 则保持 modal-open
if ($('.rbview.show').length > 0) $(document.body).addClass('modal-open').css({ 'padding-right': 17 })
// subView always dispose
- if (that.state.destroyOnHide == true) {
+ if (that.state.disposeOnHide == true) {
root.modal('dispose')
let warp = root.parent().parent()
that.setState({ isDestroy: true }, function(){
@@ -909,7 +909,7 @@ rb.RbViewModal = function(props, subView) {
let viewUrl = `${rb.baseUrl}/app/${props.entity}/view/${props.id}`
if (subView == true){
rb.RbViewModalHide(props.id)
- let m = renderRbcomp()
+ let m = renderRbcomp()
rb.__currentRbFormModalCache[props.id] = m
return m
}
diff --git a/src/main/webapp/assets/js/rb-list.jsx b/src/main/webapp/assets/js/rb-list.jsx
index ecadf1db8..d40b6421d 100644
--- a/src/main/webapp/assets/js/rb-list.jsx
+++ b/src/main/webapp/assets/js/rb-list.jsx
@@ -568,7 +568,6 @@ const AdvFilters = {
$.post(url, JSON.stringify(filter), function(res){
if (res.error_code == 0){
rb.notice('过滤项已保存', 'success')
- that.__modal.hide()
that.loadFilters()
} else rb.notice(res.error_msg, 'danger')
})
@@ -576,14 +575,14 @@ const AdvFilters = {
showAdvFilter(id) {
this.__cfgid = id
- let props = { entity: this.__entity, inModal: true, needSave: true, confirm: this.saveFilter, destroyOnHide: true }
+ let props = { entity: this.__entity, inModal: true, showSave: true, confirm: this.saveFilter }
if (!!!id){
- this.__modal = renderRbcomp()
+ renderRbcomp()
}else{
let that = this
$.get(rb.baseUrl + '/app/entity/advfilter/get?id=' + id, function(res){
let _data = res.data
- that.__modal = renderRbcomp()
+ renderRbcomp()
})
}
}
diff --git a/src/main/webapp/assets/js/user-settings.jsx b/src/main/webapp/assets/js/user-settings.jsx
index 5f930a004..bf730e002 100644
--- a/src/main/webapp/assets/js/user-settings.jsx
+++ b/src/main/webapp/assets/js/user-settings.jsx
@@ -43,7 +43,7 @@ class DlgChangePasswd extends RbFormHandler {
super(props)
}
render(){
- return (
+ return (
- )
+ )
}
post() {
let s = this.state
@@ -94,7 +94,7 @@ class DlgChangeEmail extends RbFormHandler {
this.state = { ...this.state, vcodeDisabled: false, vcodeCountdown: '获取验证码' }
}
render(){
- return (
+ return (
- )
+ )
}
sendVCode() {
let s = this.state