forked from p85126437/datagear
完善主页设置数据分析项目时数据集、图表、看板查询页联动功能
This commit is contained in:
parent
a369a0d5fd
commit
6d499065f2
|
@ -602,3 +602,18 @@ ALTER TABLE DATAGEAR_DATA_SET ADD COLUMN DS_AP_ID VARCHAR(50);
|
|||
ALTER TABLE DATAGEAR_HTML_CHART_WIDGET ADD COLUMN HCW_AP_ID VARCHAR(50);
|
||||
|
||||
ALTER TABLE DATAGEAR_HTML_DASHBOARD ADD COLUMN HD_AP_ID VARCHAR(50);
|
||||
|
||||
--2020-09-25
|
||||
--添加外键
|
||||
ALTER TABLE DATAGEAR_DATA_SET ADD FOREIGN KEY (DS_AP_ID) REFERENCES DATAGEAR_ANALYSIS_PROJECT (AP_ID);
|
||||
|
||||
ALTER TABLE DATAGEAR_HTML_CHART_WIDGET ADD FOREIGN KEY (HCW_AP_ID) REFERENCES DATAGEAR_ANALYSIS_PROJECT (AP_ID);
|
||||
|
||||
ALTER TABLE DATAGEAR_HTML_DASHBOARD ADD FOREIGN KEY (HD_AP_ID) REFERENCES DATAGEAR_ANALYSIS_PROJECT (AP_ID);
|
||||
|
||||
--添加索引
|
||||
CREATE INDEX DATAGEAR_DATA_SET_CREATE_USER_ID ON DATAGEAR_DATA_SET(DS_CREATE_USER_ID);
|
||||
|
||||
CREATE INDEX DATAGEAR_HTML_CHART_WIDGET_CREATE_USER_ID ON DATAGEAR_HTML_CHART_WIDGET(HCW_CREATE_USER_ID);
|
||||
|
||||
CREATE INDEX DATAGEAR_HTML_DASHBOARD_CREATE_USER_ID ON DATAGEAR_HTML_DASHBOARD(HD_CREATE_USER_ID);
|
||||
|
|
|
@ -148,21 +148,19 @@
|
|||
<include refid="common.queryCondition" />
|
||||
</sql>
|
||||
|
||||
<!-- 用于外部Mapper引用的公用SQL,下面的include必须采用全名,不然会出现死循环 -->
|
||||
<!--
|
||||
用于外部Mapper引用的公用SQL,下面的include必须采用全名,不然会出现死循环。
|
||||
注意:
|
||||
为了提高查询效率,这里仅查询必要的列
|
||||
-->
|
||||
<sql id="queryViewForAnalysisProjectAwareEntity">
|
||||
SELECT
|
||||
T.${_iq_}id${_iq_} AS ${_iq_}analysisProject.id${_iq_},
|
||||
T.${_iq_}name${_iq_} AS ${_iq_}analysisProject.name${_iq_},
|
||||
T.${_iq_}desc${_iq_} AS ${_iq_}analysisProject.desc${_iq_},
|
||||
T.${_iq_}createTime${_iq_} AS ${_iq_}analysisProject.createTime${_iq_},
|
||||
T.${_iq_}createUser.id${_iq_} AS ${_iq_}analysisProject.createUser.id${_iq_},
|
||||
T.${_iq_}createUser.name${_iq_} AS ${_iq_}analysisProject.createUser.name${_iq_},
|
||||
T.${_iq_}createUser.realName${_iq_} AS ${_iq_}analysisProject.createUser.realName${_iq_},
|
||||
T.${_iq_}createUser.admin${_iq_} AS ${_iq_}analysisProject.createUser.admin${_iq_},
|
||||
T.${_iq_}createUser.anonymous${_iq_} AS ${_iq_}analysisProject.createUser.anonymous${_iq_},
|
||||
T.${_iq_}createUser.createTime${_iq_} AS ${_iq_}analysisProject.createUser.createTime${_iq_}
|
||||
A.AP_ID AS ${_iq_}analysisProject.id${_iq_},
|
||||
A.AP_NAME AS ${_iq_}analysisProject.name${_iq_},
|
||||
A.AP_CREATE_TIME AS ${_iq_}analysisProject.createTime${_iq_},
|
||||
A.AP_CREATE_USER_ID AS ${_iq_}analysisProject.createUser.id${_iq_}
|
||||
FROM
|
||||
(<include refid="org.datagear.management.domain.AnalysisProject.queryView" />) T
|
||||
DATAGEAR_ANALYSIS_PROJECT A
|
||||
</sql>
|
||||
|
||||
<!--
|
||||
|
|
|
@ -135,17 +135,22 @@ public class AnalysisProjectController extends AbstractController
|
|||
return "/analysis/analysisProject/analysisProject_form";
|
||||
}
|
||||
|
||||
@RequestMapping(value = "/getById", produces = CONTENT_TYPE_JSON)
|
||||
@RequestMapping(value = "/getByIdSilently", produces = CONTENT_TYPE_JSON)
|
||||
@ResponseBody
|
||||
public AnalysisProject getById(HttpServletRequest request, HttpServletResponse response,
|
||||
public AnalysisProject getByIdSilently(HttpServletRequest request, HttpServletResponse response,
|
||||
org.springframework.ui.Model model, @RequestParam("id") String id)
|
||||
{
|
||||
User user = WebUtils.getUser(request, response);
|
||||
|
||||
AnalysisProject analysisProject = this.analysisProjectService.getById(user, id);
|
||||
AnalysisProject analysisProject = null;
|
||||
|
||||
if (analysisProject == null)
|
||||
throw new RecordNotFoundException();
|
||||
try
|
||||
{
|
||||
analysisProject = this.analysisProjectService.getById(user, id);
|
||||
}
|
||||
catch (Throwable t)
|
||||
{
|
||||
}
|
||||
|
||||
return analysisProject;
|
||||
}
|
||||
|
|
|
@ -1471,21 +1471,24 @@
|
|||
}
|
||||
},
|
||||
|
||||
isResizeDataTableWhenShow : function($tabsPanel)
|
||||
isResizeDataTableWhenShow : function($panel)
|
||||
{
|
||||
return ($tabsPanel.attr("resize-table-when-show") == "1");
|
||||
return ($panel.attr("resize-table-when-show") == "1");
|
||||
},
|
||||
|
||||
setResizeDataTableWhenShow : function($tabsPanel)
|
||||
setResizeDataTableWhenShow : function($panel)
|
||||
{
|
||||
$tabsPanel.attr("resize-table-when-show", "1");
|
||||
$panel.attr("resize-table-when-show", "1");
|
||||
},
|
||||
|
||||
clearResizeDataTableWhenShow : function($tabsPanel)
|
||||
clearResizeDataTableWhenShow : function($panel)
|
||||
{
|
||||
$tabsPanel.removeAttr("resize-table-when-show");
|
||||
$panel.removeAttr("resize-table-when-show");
|
||||
},
|
||||
|
||||
/**可显示、隐藏的包含DataTable的面板样式标识*/
|
||||
TOGGLABLE_TABLE_PANEL_CLASS_NAME : "togglable-table-panel",
|
||||
|
||||
/**
|
||||
* 为DataTable绑定window重设大小事件。
|
||||
*/
|
||||
|
@ -1498,10 +1501,10 @@
|
|||
//忽略隐藏选项卡中的表格调整,仅在选项卡显示时才调整,
|
||||
//一是DataTables对隐藏表格的宽度计算有问题,另外,绑定太多处理函数会影响jquery.resizeable组件的效率
|
||||
|
||||
var tabsPanel = $dataTable0.closest(".ui-tabs-panel");
|
||||
if(tabsPanel.is(":hidden"))
|
||||
var toggablePanel = $dataTable0.closest(".ui-tabs-panel, ." + $.TOGGLABLE_TABLE_PANEL_CLASS_NAME);
|
||||
if(toggablePanel.is(":hidden"))
|
||||
{
|
||||
$.setResizeDataTableWhenShow(tabsPanel);
|
||||
$.setResizeDataTableWhenShow(toggablePanel);
|
||||
return;
|
||||
}
|
||||
|
||||
|
@ -1524,18 +1527,18 @@
|
|||
$(window).bind('resize', resizeHandler);
|
||||
|
||||
//如果表格处于选项卡页中,则在选项卡显示时,调整表格大小
|
||||
var tabsPanel = $(dataTableElements[0]).closest(".ui-tabs-panel");
|
||||
if(tabsPanel.length > 0)
|
||||
var toggablePanel = $(dataTableElements[0]).closest(".ui-tabs-panel, ." + $.TOGGLABLE_TABLE_PANEL_CLASS_NAME);
|
||||
if(toggablePanel.length > 0)
|
||||
{
|
||||
tabsPanel.data("showCallback", function($tabsPanel)
|
||||
$.bindPanelShowCallback(toggablePanel, function($panel)
|
||||
{
|
||||
if(!$.isResizeDataTableWhenShow(tabsPanel))
|
||||
if(!$.isResizeDataTableWhenShow($panel))
|
||||
return;
|
||||
|
||||
var changedHeight = calChangedDataTableHeightFunc();
|
||||
$.updateDataTableHeight(dataTableElements, changedHeight, true);
|
||||
|
||||
$.clearResizeDataTableWhenShow(tabsPanel);
|
||||
$.clearResizeDataTableWhenShow($panel);
|
||||
});
|
||||
}
|
||||
|
||||
|
@ -1547,13 +1550,34 @@
|
|||
return $table.hasClass("dataTable");
|
||||
},
|
||||
|
||||
callTabsPanelShowCallback : function($tabsPanel)
|
||||
/**
|
||||
* 为指定面板元素绑定显示时回调函数。
|
||||
*/
|
||||
bindPanelShowCallback: function($panel, callback)
|
||||
{
|
||||
var panelShowCallback = $tabsPanel.data("showCallback");
|
||||
if(panelShowCallback)
|
||||
panelShowCallback($tabsPanel);
|
||||
var callbacks = $panel.data("_SHOW_CALLBACK");
|
||||
if(callbacks == null)
|
||||
{
|
||||
callbacks = [];
|
||||
$panel.data("_SHOW_CALLBACK", callbacks);
|
||||
}
|
||||
|
||||
var subTabs = $tabsPanel.find(".ui-tabs");
|
||||
callbacks.push(callback);
|
||||
},
|
||||
|
||||
/**
|
||||
* 调用面板元素绑定的显示时回调函数。
|
||||
*/
|
||||
callPanelShowCallback : function($panel)
|
||||
{
|
||||
var callbacks = $panel.data("_SHOW_CALLBACK");
|
||||
if(callbacks)
|
||||
{
|
||||
for(var i=0; i<callbacks.length; i++)
|
||||
callbacks[i]($panel);
|
||||
}
|
||||
|
||||
var subTabs = $panel.find(".ui-tabs");
|
||||
if(subTabs.length > 0)
|
||||
{
|
||||
subTabs.each(function()
|
||||
|
@ -1569,7 +1593,7 @@
|
|||
|
||||
var subTabPanel = $("> #"+subTabId, $this);
|
||||
|
||||
$.callTabsPanelShowCallback(subTabPanel);
|
||||
$.callPanelShowCallback(subTabPanel);
|
||||
});
|
||||
}
|
||||
},
|
||||
|
|
|
@ -8,7 +8,6 @@ page_obj_searchform_js.ftl 或者 page_obj_searchform_data_filter.ftl
|
|||
(function(po)
|
||||
{
|
||||
po.getSearchParamSuper = po.getSearchParam;
|
||||
|
||||
po.getSearchParam = function()
|
||||
{
|
||||
var param = po.getSearchParamSuper();
|
||||
|
@ -22,17 +21,55 @@ page_obj_searchform_js.ftl 或者 page_obj_searchform_data_filter.ftl
|
|||
{
|
||||
var id = null;
|
||||
|
||||
//页面处于主页选项卡内
|
||||
if($.analysisProjectContext)
|
||||
{
|
||||
var analysisProject = $.analysisProjectContext.value();
|
||||
id = (analysisProject == null ? null : analysisProject.id);
|
||||
id = $.analysisProjectContext.valueId();
|
||||
}
|
||||
//当页面在新窗口打开时
|
||||
//页面处于新打开窗口内
|
||||
else
|
||||
id = $.cookie("${statics['org.datagear.web.controller.AbstractController'].KEY_ANALYSIS_PROJECT_ID}");
|
||||
{
|
||||
//新窗口打开时不应使用cookie中的当前值,因为不符合直观感受,页面中并无相关展示信息
|
||||
//id = $.cookie("${statics['org.datagear.web.controller.AbstractController'].KEY_ANALYSIS_PROJECT_ID}");
|
||||
id = null;
|
||||
}
|
||||
|
||||
return id;
|
||||
};
|
||||
|
||||
//页面处于主页选项卡内
|
||||
if($.analysisProjectContext)
|
||||
{
|
||||
po.currentAnalysisProject = $.analysisProjectContext.value();
|
||||
|
||||
$.analysisProjectContext.addListener(function(analysisProject)
|
||||
{
|
||||
var refresh = true;
|
||||
|
||||
var myTabsPanel = po.element().closest(".ui-tabs-panel");
|
||||
|
||||
//所在选项卡隐藏时先不刷新,待显示时再刷新
|
||||
if(myTabsPanel.length > 0 && myTabsPanel.is(":hidden"))
|
||||
refresh = false;
|
||||
|
||||
if(refresh)
|
||||
{
|
||||
po.searchForm().submit();
|
||||
po.currentAnalysisProject = analysisProject;
|
||||
}
|
||||
});
|
||||
|
||||
//选项卡显示时刷新
|
||||
var myTabsPanel = po.element().closest(".ui-tabs-panel");
|
||||
$.bindPanelShowCallback(myTabsPanel, function()
|
||||
{
|
||||
if(!$.analysisProjectContext.isValue(po.currentAnalysisProject))
|
||||
{
|
||||
po.searchForm().submit();
|
||||
po.currentAnalysisProject = $.analysisProjectContext.value();
|
||||
}
|
||||
});
|
||||
}
|
||||
})
|
||||
(${pageId});
|
||||
</script>
|
|
@ -512,9 +512,11 @@ ${detectNewVersionScript}
|
|||
|
||||
$.ajax(
|
||||
{
|
||||
url: "${contextPath}/analysis/project/getById?id=" + cookieId,
|
||||
url: "${contextPath}/analysis/project/getByIdSilently?id=" + cookieId,
|
||||
success: function(analysisProject)
|
||||
{
|
||||
analysisProject = (!analysisProject ? null : analysisProject);
|
||||
|
||||
_this.value(analysisProject);
|
||||
callback(analysisProject);
|
||||
},
|
||||
|
@ -551,10 +553,26 @@ ${detectNewVersionScript}
|
|||
if(notify)
|
||||
{
|
||||
for(var i=0; i<this._listeners.length; i++)
|
||||
this._listeners[i].update(this._value, previousValue);
|
||||
this._listeners[i](this._value, previousValue);
|
||||
}
|
||||
},
|
||||
|
||||
//获取当前值的ID。
|
||||
valueId: function()
|
||||
{
|
||||
var value = this.value();
|
||||
return (value == null ? null : value.id);
|
||||
},
|
||||
|
||||
//当前值是否是指定的值。
|
||||
isValue: function(analysisProject)
|
||||
{
|
||||
var id = this.valueId();
|
||||
var pid = (analysisProject == null ? null : analysisProject.id);
|
||||
|
||||
return (id == pid);
|
||||
},
|
||||
|
||||
/**
|
||||
* 添加监听器。
|
||||
*
|
||||
|
@ -577,6 +595,8 @@ ${detectNewVersionScript}
|
|||
|
||||
po.element(".analysis-project-operation-group", dap).controlgroup();
|
||||
|
||||
po.element(".analysis-project-list-panel", dap).addClass($.TOGGLABLE_TABLE_PANEL_CLASS_NAME);
|
||||
|
||||
po.element(".analysis-project-current-value", dap).click(function()
|
||||
{
|
||||
var panel = po.element(".analysis-project-list-panel", dap);
|
||||
|
@ -587,6 +607,7 @@ ${detectNewVersionScript}
|
|||
var _thisValue = this;
|
||||
|
||||
panel.show();
|
||||
$.callPanelShowCallback(panel);
|
||||
|
||||
var loaded = panelContent.hasClass("analysis-project-loaded");
|
||||
|
||||
|
@ -1324,7 +1345,7 @@ ${detectNewVersionScript}
|
|||
if(newSchemaId)
|
||||
$(".category-bar.category-bar-"+newSchemaId, tabsNav).addClass("ui-state-active");
|
||||
|
||||
$.callTabsPanelShowCallback(newPanel);
|
||||
$.callPanelShowCallback(newPanel);
|
||||
}
|
||||
});
|
||||
|
||||
|
|
|
@ -1425,7 +1425,7 @@ Schema schema 数据库,不允许为null
|
|||
$(".result-message-buttons", resultOperations).show();
|
||||
}
|
||||
|
||||
$.callTabsPanelShowCallback(newPanel);
|
||||
$.callPanelShowCallback(newPanel);
|
||||
}
|
||||
});
|
||||
|
||||
|
|
Loading…
Reference in New Issue