From a8676e257be26c98d4e2187382240a2a6ff3475a Mon Sep 17 00:00:00 2001
From: zhaowei8188127 <18810460332@163.com>
Date: Tue, 7 Jan 2014 21:11:35 +0800
Subject: [PATCH] remember the portlet position on float pane and delete
portlet function.
---
src/main/webapp/script/haflow.main.js | 4 +
src/main/webapp/script/haflow.report.js | 120 +++++++++++++++----
src/main/webapp/script/haflow.report_list.js | 2 +-
3 files changed, 102 insertions(+), 24 deletions(-)
diff --git a/src/main/webapp/script/haflow.main.js b/src/main/webapp/script/haflow.main.js
index 1410c5a..1f62819 100644
--- a/src/main/webapp/script/haflow.main.js
+++ b/src/main/webapp/script/haflow.main.js
@@ -129,12 +129,15 @@ HAFlow.Main.prototype.initFlowContainer = function() {
if(targetContainerPaneId.substring(0, reportContainerPaneString.length)
=== reportContainerPaneString){//report opened
+
_currentInstance.afterFlowUnSelected();
_currentInstance.afterReportSelected();
var reportId = targetContainerPaneId.replace(reportContainerPaneString, "");
_currentInstance.currentReportId = reportId;
_currentInstance.setupReportDroppable(reportId);
+
+// _currentInstance.paintReports(reportId);
}else if(targetContainerPaneId.substring(0, flowContainerPaneString.length)
=== flowContainerPaneString){ //flow opened
@@ -274,6 +277,7 @@ HAFlow.Main.prototype.paintModuleList = function() {
};
HAFlow.Main.prototype.addToConsole = function(message, isError) {
+ var _currentInstance = this;
var consoleContainer = dijit.registry
.byId(_currentInstance.consoleContainerId);
diff --git a/src/main/webapp/script/haflow.report.js b/src/main/webapp/script/haflow.report.js
index b4bed57..d9dd2d8 100644
--- a/src/main/webapp/script/haflow.report.js
+++ b/src/main/webapp/script/haflow.report.js
@@ -29,6 +29,7 @@ dojo.require("dojo.dnd.Moveable");
dojo.require("dojo.dom");
dojo.require("dojo.on");
dojo.require("dojox.layout.ResizeHandle");
+dojo.require("dojo.dnd.Mover");
HAFlow.Main.prototype.newReport = function(parentId) {
var _currentInstance = this;
@@ -125,10 +126,11 @@ HAFlow.Main.prototype.addGridPanel = function(reportId, reportContainerDivId, cu
HAFlow.Main.prototype.addFloatPanel = function(reportId, reportContainerDivId) {
// var reportContainer = dijit.byId("reportContainer_" + reportId);
+// dojo.create("div", {innerHTML: "
"});
var innerContentPane = new dijit.layout.ContentPane({
id : "reportContainer_" + reportId,
class : "reportcontainer",
- style : ' width:100%; height:100%; background-color: blue;',//
+ style : ' width:98%; height:98%; background-color: blue;',//
}, reportContainerDivId);
};
@@ -150,23 +152,24 @@ HAFlow.Main.prototype.openReport = function(reportId){
});
contentPane.startup();
this.ui.centerContainer.addChild(contentPane);
- this.ui.centerContainer.selectChild(contentPane); //todo
+ this.ui.centerContainer.selectChild(contentPane);
- //todtooo
var panelType = this.reports[reportId].panelType;
if( panelType == "grid"){
this.addGridPanel(reportId, reportContainerDivId, currentReport);
}else if( panelType == "float" ){
this.addFloatPanel(reportId, reportContainerDivId);
}
-
- this.paintReports(reportId);
+ this.paintReports(reportId);
+ //this.ui.centerContainer.selectChild(contentPane); //todo
}else{
- //dijit.byId("reportContainer_" + reportId).resize();//important!!
this.ui.centerContainer.selectChild(contentPane); //todo
+ if( this.reports[reportId].panelType == "float"){
+ this.paintReports(reportId);
+ }
}
-// var tt = dijit.byId("reportContainer_" + reportId);
-// tt.resize();//important!!
+ //dijit.byId("reportContainer_" + reportId).resize();//important!!
+
this.setupReportDroppable(reportId);
};
@@ -365,6 +368,9 @@ HAFlow.Main.prototype.onReportPortletClicked = function(portletId, chart, portle
text += "" +
"" +
" |
";
+ text += "" +
+ "" +
+ " |
";
text += "";
$("#" + instance.informationContainerId).html(text);
@@ -414,19 +420,47 @@ HAFlow.Main.prototype.onReportPortletClicked = function(portletId, chart, portle
columnIndexTextBox.startup();
}
- var button = new dijit.form.Button({
+ var saveButton = new dijit.form.Button({
label : "Save",
onClick : function() {
instance.savePortletConfiguration(portletId, chart);
}
});
- button.placeAt(dojo.byId("save_portlet_configurations_button_pane"));
- button.startup();
+ saveButton.placeAt(dojo.byId("save_portlet_configurations_button_pane"));
+ saveButton.startup();
+
+ var deleteButton = new dijit.form.Button({
+ label: "Delete",
+ onClick: function(){
+ instance.deletePortlet(portletId);
+ }
+ });
+ deleteButton.placeAt(dojo.byId("delete_portlet_configurations_button_pane"));
+ deleteButton.startup();
var informationPane = dijit.byId(instance.informationContainerId);
_currentInstance.ui.bottomContainer.selectChild(informationPane);
};
+HAFlow.Main.prototype.deletePortlet = function(portletId){//TODO
+ var _currentInstance = this;
+ var reportInfo = this.reports[this.currentReportId];
+ var portlets = reportInfo.portlets;
+ var i;
+ for( i = 0; i < portlets.length; i++ ){
+ if( portlets[i].id == portletId){
+ break;
+ }
+ }
+ portlets.splice(i, 1);
+ var reportContainer = dijit.byId("reportContainer_" + this.currentReportId);
+ if( dijit.byId("portlet_" + portletId) != null){
+ reportContainer.removeChild(dijit.byId("portlet_" + portletId));
+ dijit.registry.remove("portlet_" + portletId);
+ }
+ this.saveReport(this.currentReportId);
+};
+
HAFlow.Main.prototype.savePortletConfiguration = function(portletId, chart){
var _currentInstance = this;
var reportInfo = this.reports[this.currentReportId];
@@ -639,6 +673,19 @@ HAFlow.Main.prototype.onReportModuleAdded = function(currentInstance, reportId,
break;
}
}
+ var floatLeft = ui.position.left;
+ if( floatLeft < 0){
+ floatLeft = 0;
+ }else if( floatLeft > 900){
+ floatLeft = 800;
+ }
+ var floatTop = ui.position.top;
+ if( floatTop < 0){
+ floatTop = 0;
+ }else if( floatTop > 978 ){
+ floatTop = 878;
+ }
+
var currentPortlet = {
id: newPortletId,
title: reportModuleId,
@@ -650,8 +697,8 @@ HAFlow.Main.prototype.onReportModuleAdded = function(currentInstance, reportId,
//for float pane
height: 200,//TODO
width: 200,//TODO
- left: 10,
- top: 10,
+ left: floatLeft,
+ top: floatTop,
//for grid pane
column: column,
@@ -679,7 +726,8 @@ HAFlow.Main.prototype.addReport = function(reportId, currentPortlet){
id : "portlet_" + currentPortlet.id,
closable: false,
dndType: 'Portlet',
- style: (this.reports[reportId].panelType == "grid" ? '' : "width:" + currentPortlet.width + "px;"),//TODO
+ style: (this.reports[reportId].panelType == "grid" ? '' : "width:" + currentPortlet.width + "px;"
+ + " position:absolute; left:" + currentPortlet.left + "px; top:" + currentPortlet.top + "px;") ,//TODO
});
if (currentPortlet.type == "text") {
@@ -730,6 +778,7 @@ HAFlow.Main.prototype.addReport = function(reportId, currentPortlet){
};
HAFlow.Main.prototype.addPortletToReportContainer = function(reportId, portlet, currentPortlet, reportContainer){
+ var _currentInstance = this;
//TODO
// different panel type.
//column zone vs left top
@@ -741,27 +790,38 @@ HAFlow.Main.prototype.addPortletToReportContainer = function(reportId, portlet,
reportContainer.addChild(portlet, currentPortlet.column);//
}
}else if( panelType == "float"){
-// portlet.resize()
reportContainer.addChild(portlet);
var portletId = "portlet_" + currentPortlet.id;
+
var dnd = new dojo.dnd.Moveable(dojo.byId(portletId));//dnd
+ dojo.connect( dnd, "onMoveStop", function(mover){
+ var currentPortlet = dojo.byId(portletId);
+ var newLeft = currentPortlet.offsetLeft;
+ var newTop = currentPortlet.offsetTop;
+ _currentInstance.updatePortletPositionOnFloatPane(reportId, portletId, newLeft, newTop);
+ });
+
var handle = new dojox.layout.ResizeHandle({
targetId : portletId,
+// resizeAxis : "x",
}).placeAt(portletId);
- handle.startup();
- dojo.subscribe("/dojo/resize/stop", function(inst) {
- var newHeight = inst.targetDomNode.offsetHeight;
- var newWidth = inst.targetDomNode.offsetWidth;
-// chart.resize(newWidth * 0.9, newHeight * 0.9 - 10);
- _currentInstance.addToConsole("123456~~" + inst.targetDomNode.id, false);
- var chartId = inst.targetDomNode.id.replace("portlet_", "");
+ handle.startup();
+
+ dojo.connect(handle, "onResize", function(e, t) {
+ var h = handle;
+ var newHeight = h.targetDomNode.offsetHeight;
+ var newWidth = h.targetDomNode.offsetWidth;
+ _currentInstance.addToConsole("123456~~" + h.targetId, false);
+ var chartId = h.targetId.replace("portlet_", "");
var chart = _currentInstance.chartMap[chartId];
currentPortlet.width = newWidth;
currentPortlet.height = newHeight;
- chart.resize(newWidth * 0.9, newHeight * 0.9 - 40);
+ if( chart != null){
+ chart.resize(newWidth * 0.9, newHeight * 0.9 - 40);
+ }
_currentInstance.addToConsole("newWidth:" + newWidth
+ " newHeight:" + newHeight, false);// the original size
});
@@ -863,6 +923,20 @@ HAFlow.Main.prototype.initChart = function(chart, currentPortlet, legendDivId){
chart.render();
};
+HAFlow.Main.prototype.updatePortletPositionOnFloatPane = function(reportId, portletId, newLeft, newTop){
+ portletId = portletId.replace("portlet_", "");
+ var portlets = this.reports[reportId].portlets;
+ for( var y = 0; y < portlets.length; y++ ){
+ var tmp_portlet = portlets[y];
+ if( tmp_portlet.id == portletId){
+ tmp_portlet.left = newLeft;
+ tmp_portlet.top = newTop;
+ this.addToConsole("new portlet position - left:" + newLeft + " top:" + newTop + ";");
+ break;
+ }
+ }
+};
+
HAFlow.Main.prototype.updatePosition = function(reportId){
var reportContainer = dijit.byId("reportContainer_" + reportId);
if( reportContainer == null) return;
diff --git a/src/main/webapp/script/haflow.report_list.js b/src/main/webapp/script/haflow.report_list.js
index 31d5a9e..0570452 100644
--- a/src/main/webapp/script/haflow.report_list.js
+++ b/src/main/webapp/script/haflow.report_list.js
@@ -77,7 +77,7 @@ HAFlow.Main.prototype.fillReportsData = function(data) {
width: portlets[j].width,
height: portlets[j].height,
left: portlets[j].left,
- right: portlets[j].right,
+ top: portlets[j].top,
};
var configurations = portlets[j].configurations;
for( var x = 0; x < configurations.length; x++){