PMC-155
This commit is contained in:
@@ -462,30 +462,56 @@ function setCasesListFields($arrayCasesListField, $arrayField)
|
|||||||
return $arrayFieldResult;
|
return $arrayFieldResult;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the Custom Case List configuration data.
|
||||||
|
*
|
||||||
|
* @global string $action
|
||||||
|
* @global array $confCasesList
|
||||||
|
* @global string $tabUid
|
||||||
|
*/
|
||||||
function fieldSet()
|
function fieldSet()
|
||||||
{
|
{
|
||||||
global $conf;
|
|
||||||
global $confCasesList;
|
|
||||||
global $action;
|
global $action;
|
||||||
|
global $confCasesList;
|
||||||
|
global $tabUid;
|
||||||
|
|
||||||
if (is_array($confCasesList)) {
|
$confCasesList = (array) $confCasesList;
|
||||||
$validConfig = isset($confCasesList["first"]) && isset($confCasesList["second"]);
|
|
||||||
|
$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 {
|
} else {
|
||||||
$validConfig = false;
|
$fields = getFieldsByTabUid($tabUid);
|
||||||
}
|
$arrayField = getDefaultFields($action, 0);
|
||||||
|
|
||||||
if (!$validConfig) {
|
|
||||||
$arrayField = getDefaultFields($action, 0);
|
|
||||||
$arrayConfig = getDefaultConfig($action, 0);
|
$arrayConfig = getDefaultConfig($action, 0);
|
||||||
|
$generic = genericJsonResponse($tabUid, [], $arrayField, $arrayConfig["rowsperpage"], $arrayConfig["dateformat"]);
|
||||||
$result = genericJsonResponse("", array(), $arrayField, $arrayConfig["rowsperpage"], $arrayConfig["dateformat"]);
|
$result = $generic;
|
||||||
|
$result['first']['data'] = $fields;
|
||||||
$conf->saveObject($result, "casesList", $action, "", "", "");
|
|
||||||
|
|
||||||
echo G::json_encode($result);
|
|
||||||
} else {
|
|
||||||
echo G::json_encode($confCasesList);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
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)
|
function fieldReset($translation)
|
||||||
@@ -690,11 +716,6 @@ try {
|
|||||||
|
|
||||||
switch ($xaction) {
|
switch ($xaction) {
|
||||||
case "FIELD_SET":
|
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();
|
fieldSet();
|
||||||
break;
|
break;
|
||||||
case "FIELD_RESET":
|
case "FIELD_RESET":
|
||||||
@@ -744,44 +765,53 @@ function genericJsonResponse($pmtable, $first, $second, $rowsperpage, $dateForma
|
|||||||
return $result;
|
return $result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get row from PM Table.
|
||||||
|
*
|
||||||
|
* @param string $tabUid
|
||||||
|
*/
|
||||||
function xgetFieldsFromPMTable($tabUid)
|
function xgetFieldsFromPMTable($tabUid)
|
||||||
{
|
{
|
||||||
$rows = array();
|
$result = [];
|
||||||
$result = array();
|
$result['data'] = getFieldsByTabUid($tabUid);
|
||||||
// $rows[] = array ( 'name' => 'val 1', 'gridIndex' => '21', 'fieldType' => 'PM Table' );
|
print G::json_encode($result);
|
||||||
// $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 ) ;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
* 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
|
* @param Array $fields
|
||||||
* @return Array
|
* @return Array
|
||||||
|
|||||||
@@ -4,6 +4,7 @@ namespace ProcessMaker\BusinessModel;
|
|||||||
|
|
||||||
use AdditionalTables;
|
use AdditionalTables;
|
||||||
use AdditionalTablesPeer;
|
use AdditionalTablesPeer;
|
||||||
|
use Configurations;
|
||||||
use G;
|
use G;
|
||||||
use Exception;
|
use Exception;
|
||||||
|
|
||||||
@@ -578,11 +579,60 @@ class ReportTable
|
|||||||
|
|
||||||
$result->trace = $e->getTraceAsString();
|
$result->trace = $e->getTraceAsString();
|
||||||
}
|
}
|
||||||
|
$this->updateCaseListFieldsConfiguration($columns);
|
||||||
//Return
|
//Return
|
||||||
return $result;
|
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
|
* Create the structure of tables
|
||||||
*
|
*
|
||||||
|
|||||||
@@ -64,7 +64,7 @@ Ext.onReady(function () {
|
|||||||
|
|
||||||
success: function (response, opts)
|
success: function (response, opts)
|
||||||
{
|
{
|
||||||
var dataResponse = eval("(" + response.responseText + ")"); //json
|
var dataResponse = Ext.util.JSON.decode(response.responseText);
|
||||||
|
|
||||||
switch (option) {
|
switch (option) {
|
||||||
case "FIELD_SET":
|
case "FIELD_SET":
|
||||||
@@ -85,8 +85,11 @@ Ext.onReady(function () {
|
|||||||
break;
|
break;
|
||||||
case "FIELD_SAVE":
|
case "FIELD_SAVE":
|
||||||
configDefaultResponseText = response.responseText;
|
configDefaultResponseText = response.responseText;
|
||||||
Ext.Msg.alert(_("ID_INFO"), _("ID_SAVED"));
|
var windowAlert = Ext.Msg.alert(_("ID_INFO"), _("ID_SAVED"));
|
||||||
location.reload(true);
|
fieldSet(dataResponse);
|
||||||
|
setTimeout(function () {
|
||||||
|
windowAlert.getDialog().close();
|
||||||
|
}, 500);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
@@ -166,59 +169,34 @@ Ext.onReady(function () {
|
|||||||
}}
|
}}
|
||||||
});
|
});
|
||||||
|
|
||||||
// create the Data Store to list PMTables in the dropdown
|
// create the Data Store to list PMTables in the dropdown
|
||||||
var pmTablesDropdown = new Ext.form.ComboBox ({
|
var pmTablesDropdown = new Ext.form.ComboBox({
|
||||||
width : '180',
|
width: '180',
|
||||||
xtype : 'combo',
|
xtype: 'combo',
|
||||||
emptyText: _("ID_EMPTY_PMTABLE"),
|
emptyText: _("ID_EMPTY_PMTABLE"),
|
||||||
displayField : 'ADD_TAB_NAME',
|
displayField: 'ADD_TAB_NAME',
|
||||||
valueField : 'ADD_TAB_UID',
|
valueField: 'ADD_TAB_UID',
|
||||||
triggerAction: 'all',
|
triggerAction: 'all',
|
||||||
store : PmTableStore,
|
store: PmTableStore,
|
||||||
listeners: {
|
listeners: {
|
||||||
'select': function() {
|
'select': function () {
|
||||||
var tableUid = this.value;
|
var tableUid = this.value;
|
||||||
Ext.Ajax.request({
|
Ext.Ajax.request({
|
||||||
url: 'proxyPMTablesFieldList',
|
url: 'proxyPMTablesFieldList',
|
||||||
success: function(response) {
|
params: {
|
||||||
var dataResponse = Ext.util.JSON.decode(response.responseText);
|
xaction: 'FIELD_SET',
|
||||||
var rec = Ext.data.Record.create(pmFields);
|
action: currentAction,
|
||||||
//alert(firstGrid.store);
|
table: tableUid
|
||||||
var index;
|
},
|
||||||
var record;
|
success: function (response) {
|
||||||
var count = firstGrid.store.getTotalCount();
|
var dataResponse = Ext.util.JSON.decode(response.responseText);
|
||||||
|
fieldSet(dataResponse);
|
||||||
// removing all the PM Table fields from the first grid
|
},
|
||||||
do {
|
failure: function () {}
|
||||||
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);
|
|
||||||
}
|
}
|
||||||
firstGrid.store.commitChanges();
|
}
|
||||||
},
|
});
|
||||||
failure: function(){},
|
|
||||||
params: {xaction: 'getFieldsFromPMTable', table: tableUid }
|
|
||||||
});
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
// COMPONENT DEPRECATED remove it in the next revision of the enterprise plugin
|
// COMPONENT DEPRECATED remove it in the next revision of the enterprise plugin
|
||||||
// create the Dropdown for rows per page
|
// create the Dropdown for rows per page
|
||||||
@@ -573,7 +551,7 @@ Ext.onReady(function () {
|
|||||||
text: _("ID_RESET"),
|
text: _("ID_RESET"),
|
||||||
handler: function ()
|
handler: function ()
|
||||||
{
|
{
|
||||||
var dataResponse = eval("(" + configDefaultResponseText + ")"); //json
|
var dataResponse = Ext.util.JSON.decode(configDefaultResponseText);
|
||||||
|
|
||||||
fieldSet(dataResponse);
|
fieldSet(dataResponse);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user