Save and load the additional fields for the dashlets

This commit is contained in:
Julio Cesar Laura
2011-11-10 16:39:14 -04:00
parent 4cc0f6c137
commit f0f3a69af1
7 changed files with 152 additions and 125 deletions

View File

@@ -5,40 +5,10 @@ require_once 'interfaces/dashletInterface.php';
class dashletOpenVSCompleted implements DashletInterface {
function setup($config) {
/*
Array
(
[DAS_UID] => 00000000000000000000000000000001
[DAS_CLASS] => dashletOpenVSCompleted
[DAS_TITLE] => Open Cases VS Complete Cases
[DAS_DESCRIPTION] => Open Cases VS Complete Cases
[DAS_VERSION] => 1.0
[DAS_CREATE_DATE] => 2011-10-28 00:00:00
[DAS_UPDATE_DATE] => 2011-10-28 00:00:00
[DAS_STATUS] => 1
[DAS_INS_UID] => 00000000000000000000000000000001
[DAS_INS_TYPE] => OPEN_CASES
[DAS_INS_CONTEXT_TIME] => MONTH
[DAS_INS_START_DATE] =>
[DAS_INS_END_DATE] =>
[DAS_INS_OWNER_TYPE] => DEPARTMENT
[DAS_INS_OWNER_UID] => 2502663244e6f5e1e3c2254024148892
[DAS_INS_PROCESSES] =>
[DAS_INS_TASKS] =>
[DAS_INS_ADDITIONAL_PROPERTIES] =>
[DAS_INS_CREATE_DATE] => 2011-10-28 00:00:00
[DAS_INS_UPDATE_DATE] => 2011-10-28 00:00:00
[DAS_INS_STATUS] => 1
)
*/
//$this->w = $config['w'];
//loadData
$thisYear = date('Y');
$lastYear = $thisYear -1;
$thisMonth = date('M');
$lastMonth = date('M', strtotime( "31 days ago") );
//print "$thisMonth $lastMonth"; die;
$todayIni = date('Y-m-d H:i:s', strtotime( "today 00:00:00"));
$todayEnd = date('Y-m-d H:i:s', strtotime( "today 23:59:59"));
@@ -115,18 +85,52 @@ Array
return true;
}
function getAdditionalFields() {
$additionalFields = array();
$greenFrom = new stdclass();
$greenFrom->xtype = 'textfield';
$greenFrom->name = 'DAS_RED_FROM';
$greenFrom->fieldLabel = 'Red Starts In';
$greenFrom->width = 50;
$additionalFields[] = $greenFrom;
$greenFrom = new stdclass();
$greenFrom->xtype = 'textfield';
$greenFrom->name = 'DAS_RED_TO';
$greenFrom->fieldLabel = 'Red Ends In';
$greenFrom->width = 50;
$additionalFields[] = $greenFrom;
$greenFrom = new stdclass();
$greenFrom->xtype = 'textfield';
$greenFrom->name = 'DAS_YELLOW_FROM';
$greenFrom->fieldLabel = 'Yellow Starts In';
$greenFrom->width = 50;
$additionalFields[] = $greenFrom;
$greenFrom = new stdclass();
$greenFrom->xtype = 'textfield';
$greenFrom->name = 'DAS_YELLOW_TO';
$greenFrom->fieldLabel = 'Yellow Ends In';
$greenFrom->width = 50;
$additionalFields[] = $greenFrom;
$greenFrom = new stdclass();
$greenFrom->xtype = 'textfield';
$greenFrom->name = 'DAS_GREEN_FROM';
$greenFrom->fieldLabel = 'Green Starts In';
$greenFrom->width = 50;
$additionalFields[] = $greenFrom;
$greenFrom = new stdclass();
$greenFrom->xtype = 'textfield';
$greenFrom->name = 'DAS_GREEN_TO';
$greenFrom->fieldLabel = 'Green Ends In';
$greenFrom->width = 50;
$additionalFields[] = $greenFrom;
return $additionalFields;
}
function render ($width = 300) {
G::LoadClass('pmGauge');
$g = new pmGauge();
$g->w = $width;
$g->value = $this->value;
$g->maxValue = 100;
$g->greenFrom = 90;
$g->greenTo = 100;
$g->yellowFrom = 70;
$g->yellowTo = 90;
$g->redFrom = 100;
$g->redTo = 100;
$g->greenFrom = 50;
$g->greenTo = 100;

View File

@@ -7,16 +7,17 @@ require_once 'model/DashletInstance.php';
class PMDashlet extends DashletInstance implements DashletInterface {
// Own properties
private $dashletInstance;
private $dashletObject;
// Interface functions
public function setup($dasInsUid) {
try {
$dashletInstance = $this->getDashletInstance($dasInsUid);
G::LoadClass($dashletInstance['DAS_CLASS']);
$this->dashletObject = new $dashletInstance['DAS_CLASS']();
$this->dashletObject->setup($dashletInstance);
$this->dashletInstance = $this->loadDashletInstance($dasInsUid);
G::LoadClass($this->dashletInstance['DAS_CLASS']);
$this->dashletObject = new $this->dashletInstance['DAS_CLASS']();
$this->dashletObject->setup($this->dashletInstance);
}
catch (Exception $error) {
throw $error;
@@ -35,6 +36,27 @@ class PMDashlet extends DashletInstance implements DashletInterface {
}
}
public function getAdditionalFields() {
try {
//Change this in the next release
G::LoadClass('dashletOpenVSCompleted');
return dashletOpenVSCompleted::getAdditionalFields();
}
catch (Exception $error) {
throw $error;
}
}
// Getter and Setters
public function getDashletInstance() {
return $this->dashletInstance;
}
public function getDashletObject() {
return $this->dashletObject;
}
// Own functions
public function getDashletsInstances($start = null, $limit = null) {
@@ -99,9 +121,10 @@ class PMDashlet extends DashletInstance implements DashletInterface {
}
}
public function getDashletInstance($dasInsUid) {
public function loadDashletInstance($dasInsUid) {
try {
$dashletInstance = $this->load($dasInsUid);
//Load data from the serialized field
$dashlet = new Dashlet();
$dashletFields = $dashlet->load($dashletInstance['DAS_UID']);
return array_merge($dashletFields, $dashletInstance);

View File

@@ -4,5 +4,6 @@ interface DashletInterface {
public function setup($dasInsUid);
public function render();
public function getAdditionalFields();
}

View File

@@ -16,6 +16,10 @@ require_once 'classes/model/om/BaseDashletInstance.php';
*/
class DashletInstance extends BaseDashletInstance {
private $validFields = array('DAS_INS_UID', 'DAS_UID', 'DAS_INS_TYPE', 'DAS_INS_CONTEXT_TIME', 'DAS_INS_START_DATE', 'DAS_INS_END_DATE', 'DAS_INS_OWNER_TYPE',
'DAS_INS_OWNER_UID', 'DAS_INS_PROCESSES', 'DAS_INS_TASKS', ' DAS_INS_CREATE_DATE', 'DAS_INS_UPDATE_DATE', 'DAS_INS_STATUS',
'pmos_generik', 'ys-admin-tabpanel', 'PHPSESSID');
public function load($dasInsUid) {
try {
$dashletInstance = DashletInstancePeer::retrieveByPK($dasInsUid);
@@ -31,6 +35,19 @@ class DashletInstance extends BaseDashletInstance {
}
public function createOrUpdate($data) {
$additionalFields = array();
foreach ($data as $field => $value) {
if (!in_array($field, $this->validFields)) {
$additionalFields[$field] = $value;
unset($data[$field]);
}
}
if (!empty($additionalFields)) {
$data['DAS_INS_ADDITIONAL_PROPERTIES'] = serialize($additionalFields);
}
else {
$data['DAS_INS_ADDITIONAL_PROPERTIES'] = '';
}
$connection = Propel::getConnection(DashletInstancePeer::DATABASE_NAME);
try {
if (!isset($data['DAS_INS_UID'])) {

View File

@@ -928,7 +928,7 @@ abstract class BaseDashletInstance extends BaseObject implements Persistent {
*/
public function getByName($name, $type = BasePeer::TYPE_PHPNAME)
{
$pos = DashletInstancePeer::translateFieldName($name, $type, BasePeer::TYPE_NUM);
$pos = DashletInstancePeer::translateFieldName($name, $type, BasePeer::TYPE_NUM);var_dump($name,$pos);die();
return $this->getByPosition($pos);
}

View File

@@ -109,10 +109,13 @@ class Dashboard extends Controller {
$data->DAS_INS_UID = '';
}
if ($data->DAS_INS_UID != '') {
$this->setJSVar('dashletInstance', $this->pmDashlet->getDashletInstance($data->DAS_INS_UID));
$this->pmDashlet->setup($data->DAS_INS_UID);
$this->setJSVar('dashletInstance', $this->pmDashlet->getDashletInstance());
$this->setJSVar('additionaFields', $this->pmDashlet->getAdditionalFields());
}
else {
$this->setJSVar('dashletInstance', new stdclass());
$this->setJSVar('additionaFields', $this->pmDashlet->getAdditionalFields());
}
G::RenderPage('publish', 'extJs');
return null;

View File

@@ -9,18 +9,7 @@ dashletInstance.form = {
Ext.Ajax.request({
url: "saveDashletInstance",
method: "POST",
params:{"DAS_INS_UID": hiddenDasInsUID.getValue(),
"DAS_UID": cboDasUID.getValue(),
"DAS_INS_TYPE": cboDasInsType.getValue(),
"DAS_INS_CONTEXT_TIME": cboDasInsContextTime.getValue(),
//"DAS_INS_START_DATE": txtDasInsStartDate.getValue().format(txtDasInsStartDate.format),
//"DAS_INS_END_DATE": txtDasInsEndDate.getValue().format(txtDasInsEndDate.format),
"DAS_INS_OWNER_TYPE": cboDasInsOwnerType.getValue(),
"DAS_INS_OWNER_UID": cboDasInsOwnerUID.getValue()
//,
//"DAS_INS_PROCESSES": cboProcess.getValue(),
//"DAS_INS_TASKS": cboTask.getValue()
},
params: dashletInstanceFrm.getForm().getFieldValues(),
success:function (result, request) {
myMask.hide();
@@ -42,18 +31,6 @@ dashletInstance.form = {
});
}
dashletInstanceFrmLoad = function () {
if (dashletInstance.DAS_INS_UID) {
hiddenDasInsUID.setValue(dashletInstance.DAS_INS_UID)
cboDasUID.setValue(dashletInstance.DAS_UID);
cboDasInsType.setValue(dashletInstance.DAS_INS_TYPE);
cboDasInsContextTime.setValue(dashletInstance.DAS_INS_CONTEXT_TIME);
cboDasInsOwnerType.setValue(dashletInstance.DAS_INS_OWNER_TYPE);
//cboDasInsOwnerUID.setValue(dashletInstance.DAS_INS_OWNER_UID);
}
}
//------------------------------------------------------------------------------------------------------------------
var storeDasUID = new Ext.data.Store({
proxy: new Ext.data.HttpProxy({
@@ -321,6 +298,19 @@ dashletInstance.form = {
fieldLabel: "Task"
});
var formFields = [hiddenDasInsUID,
cboDasUID,
cboDasInsType,
cboDasInsContextTime,
//txtDasInsStartDate,
//txtDasInsEndDate,
cboDasInsOwnerType,
cboDasInsOwnerUID
//cboProcess,
//cboTask
];
formFields = formFields.concat(additionaFields);
//------------------------------------------------------------------------------------------------------------------
var dashletInstanceFrm = new Ext.form.FormPanel({
id: "dashletInstanceFrm",
@@ -336,18 +326,7 @@ dashletInstance.form = {
title: "New Dashboard Instance",
items: [hiddenDasInsUID,
cboDasUID,
cboDasInsType,
cboDasInsContextTime,
//txtDasInsStartDate,
//txtDasInsEndDate,
cboDasInsOwnerType,
cboDasInsOwnerUID
//,
//cboProcess,
//cboTask
],
items: formFields,
buttonAlign: "right",
buttons: [new Ext.Action({
@@ -381,7 +360,7 @@ dashletInstance.form = {
});
//------------------------------------------------------------------------------------------------------------------
dashletInstanceFrmLoad();
dashletInstanceFrm.getForm().setValues(dashletInstance);
//------------------------------------------------------------------------------------------------------------------
var pnlMain = new Ext.Panel({