PMC-155
This commit is contained in:
@@ -462,30 +462,56 @@ function setCasesListFields($arrayCasesListField, $arrayField)
|
||||
return $arrayFieldResult;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the Custom Case List configuration data.
|
||||
*
|
||||
* @global string $action
|
||||
* @global array $confCasesList
|
||||
* @global string $tabUid
|
||||
*/
|
||||
function fieldSet()
|
||||
{
|
||||
global $conf;
|
||||
global $confCasesList;
|
||||
global $action;
|
||||
global $confCasesList;
|
||||
global $tabUid;
|
||||
|
||||
if (is_array($confCasesList)) {
|
||||
$validConfig = isset($confCasesList["first"]) && isset($confCasesList["second"]);
|
||||
$confCasesList = (array) $confCasesList;
|
||||
|
||||
$result = [];
|
||||
$sw1 = !empty($confCasesList);
|
||||
$sw2 = $tabUid === "" || (!empty($tabUid) && !empty($confCasesList['PMTable']) && $confCasesList['PMTable'] === $tabUid);
|
||||
|
||||
if ($sw1 && $sw2) {
|
||||
$result = $confCasesList;
|
||||
//remove used elements
|
||||
$data = $result['second']['data'];
|
||||
$fields = getFieldsByTabUid($result['PMTable']);
|
||||
foreach ($data as $value1) {
|
||||
foreach ($fields as $key => $value2) {
|
||||
$swName = $value1['name'] === $value2['name'];
|
||||
$swFieldType = $value1['fieldType'] === $value2['fieldType'];
|
||||
if ($swName && $swFieldType) {
|
||||
unset($fields[$key]);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
$result['first']['data'] = array_values($fields);
|
||||
} else {
|
||||
$validConfig = false;
|
||||
}
|
||||
|
||||
if (!$validConfig) {
|
||||
$arrayField = getDefaultFields($action, 0);
|
||||
$fields = getFieldsByTabUid($tabUid);
|
||||
$arrayField = getDefaultFields($action, 0);
|
||||
$arrayConfig = getDefaultConfig($action, 0);
|
||||
|
||||
$result = genericJsonResponse("", array(), $arrayField, $arrayConfig["rowsperpage"], $arrayConfig["dateformat"]);
|
||||
|
||||
$conf->saveObject($result, "casesList", $action, "", "", "");
|
||||
|
||||
echo G::json_encode($result);
|
||||
} else {
|
||||
echo G::json_encode($confCasesList);
|
||||
$generic = genericJsonResponse($tabUid, [], $arrayField, $arrayConfig["rowsperpage"], $arrayConfig["dateformat"]);
|
||||
$result = $generic;
|
||||
$result['first']['data'] = $fields;
|
||||
}
|
||||
|
||||
if (is_array($result) && isset($result['second']['data'])) {
|
||||
foreach ($result['second']['data'] as $key => $value) {
|
||||
$result['second']['data'][$key]['align_label'] = $result['second']['data'][$key]['align'];
|
||||
}
|
||||
}
|
||||
echo G::json_encode($result);
|
||||
}
|
||||
|
||||
function fieldReset($translation)
|
||||
@@ -690,11 +716,6 @@ try {
|
||||
|
||||
switch ($xaction) {
|
||||
case "FIELD_SET":
|
||||
if (is_array($confCasesList) && isset($confCasesList['second']['data'])) {
|
||||
foreach ($confCasesList['second']['data'] as $key => $value) {
|
||||
$confCasesList['second']['data'][$key]['align_label'] = $confCasesList['second']['data'][$key]['align'];
|
||||
}
|
||||
}
|
||||
fieldSet();
|
||||
break;
|
||||
case "FIELD_RESET":
|
||||
@@ -744,44 +765,53 @@ function genericJsonResponse($pmtable, $first, $second, $rowsperpage, $dateForma
|
||||
return $result;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get row from PM Table.
|
||||
*
|
||||
* @param string $tabUid
|
||||
*/
|
||||
function xgetFieldsFromPMTable($tabUid)
|
||||
{
|
||||
$rows = array();
|
||||
$result = array();
|
||||
// $rows[] = array ( 'name' => 'val 1', 'gridIndex' => '21', 'fieldType' => 'PM Table' );
|
||||
// $rows[] = array ( 'name' => 'val 2', 'gridIndex' => '22', 'fieldType' => 'PM Table' );
|
||||
// $rows[] = array ( 'name' => 'val 3', 'gridIndex' => '23', 'fieldType' => 'PM Table' );
|
||||
//$result['success'] = true;
|
||||
//$result['totalCount'] = count($rows);
|
||||
$oCriteria = new Criteria('workflow');
|
||||
$oCriteria->clearSelectColumns ( );
|
||||
$oCriteria->setDistinct();
|
||||
$oCriteria->addSelectColumn ( FieldsPeer::FLD_NAME );
|
||||
$oCriteria->addSelectColumn ( FieldsPeer::FLD_UID );
|
||||
$oCriteria->addSelectColumn ( FieldsPeer::FLD_INDEX );
|
||||
$oCriteria->add (FieldsPeer::ADD_TAB_UID, $tabUid , CRITERIA::EQUAL );
|
||||
$oCriteria->add (FieldsPeer::FLD_NAME, 'APP_UID' , CRITERIA::NOT_EQUAL );
|
||||
$oCriteria->addAnd (FieldsPeer::FLD_NAME, 'APP_NUMBER' , CRITERIA::NOT_EQUAL );
|
||||
$oCriteria->addDescendingOrderByColumn('FLD_INDEX');
|
||||
$oDataset = FieldsPeer::doSelectRS($oCriteria);
|
||||
$oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC);
|
||||
$oDataset->next();
|
||||
$index = count($rows);
|
||||
|
||||
while ($aRow = $oDataset->getRow()) {
|
||||
$aRow['index'] = ++$index;
|
||||
$aTempRow['name'] = $aRow['FLD_NAME'];
|
||||
$aTempRow['gridIndex'] = $aRow['index'];
|
||||
$aTempRow['fieldType'] = 'PM Table';
|
||||
$rows[] = $aTempRow;
|
||||
$oDataset->next();
|
||||
}
|
||||
|
||||
$result['data'] = $rows;
|
||||
print G::json_encode( $result ) ;
|
||||
$result = [];
|
||||
$result['data'] = getFieldsByTabUid($tabUid);
|
||||
print G::json_encode($result);
|
||||
}
|
||||
|
||||
/**
|
||||
/**
|
||||
* Get rows from Fields table.
|
||||
*
|
||||
* @param string $tabUid
|
||||
* @return array
|
||||
*/
|
||||
function getFieldsByTabUid($tabUid)
|
||||
{
|
||||
$rows = [];
|
||||
$criteria = new Criteria('workflow');
|
||||
$criteria->clearSelectColumns();
|
||||
$criteria->setDistinct();
|
||||
$criteria->addSelectColumn(FieldsPeer::FLD_NAME);
|
||||
$criteria->addSelectColumn(FieldsPeer::FLD_UID);
|
||||
$criteria->addSelectColumn(FieldsPeer::FLD_INDEX);
|
||||
$criteria->add(FieldsPeer::ADD_TAB_UID, $tabUid, CRITERIA::EQUAL);
|
||||
$criteria->add(FieldsPeer::FLD_NAME, 'APP_UID', CRITERIA::NOT_EQUAL);
|
||||
$criteria->addAnd(FieldsPeer::FLD_NAME, 'APP_NUMBER', CRITERIA::NOT_EQUAL);
|
||||
$criteria->addDescendingOrderByColumn('FLD_INDEX');
|
||||
$dataSet = FieldsPeer::doSelectRS($criteria);
|
||||
$dataSet->setFetchmode(ResultSet::FETCHMODE_ASSOC);
|
||||
$dataSet->next();
|
||||
$index = 0;
|
||||
while ($row = $dataSet->getRow()) {
|
||||
$row['index'] = ++$index;
|
||||
$tempRow['name'] = $row['FLD_NAME'];
|
||||
$tempRow['gridIndex'] = $row['index'];
|
||||
$tempRow['fieldType'] = 'PM Table';
|
||||
$rows[] = $tempRow;
|
||||
$dataSet->next();
|
||||
}
|
||||
return $rows;
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* @param Array $fields
|
||||
* @return Array
|
||||
|
||||
@@ -4,6 +4,7 @@ namespace ProcessMaker\BusinessModel;
|
||||
|
||||
use AdditionalTables;
|
||||
use AdditionalTablesPeer;
|
||||
use Configurations;
|
||||
use G;
|
||||
use Exception;
|
||||
|
||||
@@ -578,11 +579,60 @@ class ReportTable
|
||||
|
||||
$result->trace = $e->getTraceAsString();
|
||||
}
|
||||
|
||||
$this->updateCaseListFieldsConfiguration($columns);
|
||||
//Return
|
||||
return $result;
|
||||
}
|
||||
|
||||
/**
|
||||
* Update the Custom Case List fields configuration.
|
||||
*
|
||||
* @param array $columns
|
||||
*/
|
||||
public function updateCaseListFieldsConfiguration($columns)
|
||||
{
|
||||
$actions = [
|
||||
"todo", "draft", "sent", "unassigned", "paused", "completed", "cancelled"
|
||||
];
|
||||
$conf = new Configurations();
|
||||
foreach ($actions as $action) {
|
||||
$confCasesList = $conf->loadObject("casesList", $action, "", "", "");
|
||||
if (is_array($confCasesList) && !empty($confCasesList)) {
|
||||
$this->removeNonExistentElementsCustomCaseList($confCasesList['first']['data'], $columns);
|
||||
$this->removeNonExistentElementsCustomCaseList($confCasesList['second']['data'], $columns);
|
||||
$conf->saveObject($confCasesList, "casesList", $action);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Remove non existent elements in Custom Case List.
|
||||
*
|
||||
* @param array $data
|
||||
* @param array $columns
|
||||
*/
|
||||
public function removeNonExistentElementsCustomCaseList(&$data, $columns)
|
||||
{
|
||||
$n = count($data);
|
||||
for ($key = 0; $key < $n; $key++) {
|
||||
if ($data[$key]['fieldType'] === 'PM Table') {
|
||||
$remove = true;
|
||||
foreach ($columns as $column) {
|
||||
if ($data[$key]['name'] === $column->field_name) {
|
||||
$remove = false;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if ($remove === true) {
|
||||
unset($data[$key]);
|
||||
$data = array_values($data);
|
||||
$key = 0;
|
||||
$n = count($data);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Create the structure of tables
|
||||
*
|
||||
|
||||
@@ -64,7 +64,7 @@ Ext.onReady(function () {
|
||||
|
||||
success: function (response, opts)
|
||||
{
|
||||
var dataResponse = eval("(" + response.responseText + ")"); //json
|
||||
var dataResponse = Ext.util.JSON.decode(response.responseText);
|
||||
|
||||
switch (option) {
|
||||
case "FIELD_SET":
|
||||
@@ -85,8 +85,11 @@ Ext.onReady(function () {
|
||||
break;
|
||||
case "FIELD_SAVE":
|
||||
configDefaultResponseText = response.responseText;
|
||||
Ext.Msg.alert(_("ID_INFO"), _("ID_SAVED"));
|
||||
location.reload(true);
|
||||
var windowAlert = Ext.Msg.alert(_("ID_INFO"), _("ID_SAVED"));
|
||||
fieldSet(dataResponse);
|
||||
setTimeout(function () {
|
||||
windowAlert.getDialog().close();
|
||||
}, 500);
|
||||
break;
|
||||
}
|
||||
},
|
||||
@@ -166,59 +169,34 @@ Ext.onReady(function () {
|
||||
}}
|
||||
});
|
||||
|
||||
// create the Data Store to list PMTables in the dropdown
|
||||
var pmTablesDropdown = new Ext.form.ComboBox ({
|
||||
width : '180',
|
||||
xtype : 'combo',
|
||||
emptyText: _("ID_EMPTY_PMTABLE"),
|
||||
displayField : 'ADD_TAB_NAME',
|
||||
valueField : 'ADD_TAB_UID',
|
||||
triggerAction: 'all',
|
||||
store : PmTableStore,
|
||||
listeners: {
|
||||
'select': function() {
|
||||
var tableUid = this.value;
|
||||
Ext.Ajax.request({
|
||||
url: 'proxyPMTablesFieldList',
|
||||
success: function(response) {
|
||||
var dataResponse = Ext.util.JSON.decode(response.responseText);
|
||||
var rec = Ext.data.Record.create(pmFields);
|
||||
//alert(firstGrid.store);
|
||||
var index;
|
||||
var record;
|
||||
var count = firstGrid.store.getTotalCount();
|
||||
|
||||
// removing all the PM Table fields from the first grid
|
||||
do {
|
||||
index = firstGrid.store.find('fieldType','PM Table');
|
||||
record = firstGrid.store.getAt(index);
|
||||
if (index>=0) {
|
||||
firstGrid.store.remove(record);
|
||||
}
|
||||
} while (index>=0);
|
||||
|
||||
// removing all the PM Table fields from the second grid
|
||||
do {
|
||||
index = secondGrid.store.find('fieldType','PM Table');
|
||||
record = secondGrid.store.getAt(index);
|
||||
if (index>=0) {
|
||||
secondGrid.store.remove(record);
|
||||
}
|
||||
} while (index>=0);
|
||||
|
||||
for (var i = 0; i <= dataResponse.data.length-1; i++) {
|
||||
var d = new rec( dataResponse.data[i] );
|
||||
firstGrid.store.add(d);
|
||||
// create the Data Store to list PMTables in the dropdown
|
||||
var pmTablesDropdown = new Ext.form.ComboBox({
|
||||
width: '180',
|
||||
xtype: 'combo',
|
||||
emptyText: _("ID_EMPTY_PMTABLE"),
|
||||
displayField: 'ADD_TAB_NAME',
|
||||
valueField: 'ADD_TAB_UID',
|
||||
triggerAction: 'all',
|
||||
store: PmTableStore,
|
||||
listeners: {
|
||||
'select': function () {
|
||||
var tableUid = this.value;
|
||||
Ext.Ajax.request({
|
||||
url: 'proxyPMTablesFieldList',
|
||||
params: {
|
||||
xaction: 'FIELD_SET',
|
||||
action: currentAction,
|
||||
table: tableUid
|
||||
},
|
||||
success: function (response) {
|
||||
var dataResponse = Ext.util.JSON.decode(response.responseText);
|
||||
fieldSet(dataResponse);
|
||||
},
|
||||
failure: function () {}
|
||||
});
|
||||
}
|
||||
firstGrid.store.commitChanges();
|
||||
},
|
||||
failure: function(){},
|
||||
params: {xaction: 'getFieldsFromPMTable', table: tableUid }
|
||||
});
|
||||
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
// COMPONENT DEPRECATED remove it in the next revision of the enterprise plugin
|
||||
// create the Dropdown for rows per page
|
||||
@@ -573,7 +551,7 @@ Ext.onReady(function () {
|
||||
text: _("ID_RESET"),
|
||||
handler: function ()
|
||||
{
|
||||
var dataResponse = eval("(" + configDefaultResponseText + ")"); //json
|
||||
var dataResponse = Ext.util.JSON.decode(configDefaultResponseText);
|
||||
|
||||
fieldSet(dataResponse);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user