From d97cdfbc7a886a8431d2c0d026839a03f7e40b94 Mon Sep 17 00:00:00 2001 From: Daniel Barbero Martin Date: Wed, 8 Jan 2020 17:28:03 +0100 Subject: [PATCH] fix element line --- .../javascript/pandora_visual_console.js | 6 +- pandora_console/include/rest-api/index.php | 2 +- .../models/VisualConsole/Items/Group.php | 2 +- .../models/VisualConsole/Items/Line.php | 105 +++++++++++------- .../rest-api/models/VisualConsole/View.php | 13 ++- visual_console_client/src/VisualConsole.ts | 3 + visual_console_client/src/items/Line.ts | 12 +- visual_console_client/src/lib/index.ts | 3 +- visual_console_client/src/lib/spec.ts | 6 +- visual_console_client/src/lib/types.ts | 1 + 10 files changed, 103 insertions(+), 50 deletions(-) diff --git a/pandora_console/include/javascript/pandora_visual_console.js b/pandora_console/include/javascript/pandora_visual_console.js index 1163a2ccb2..4407a75bb0 100755 --- a/pandora_console/include/javascript/pandora_visual_console.js +++ b/pandora_console/include/javascript/pandora_visual_console.js @@ -162,7 +162,7 @@ function createVisualConsole( var item = e.item || {}; var meta = item.meta || {}; - if (meta.editMode && !meta.isUpdating) { + if ((meta.editMode || meta.lineMode) && !meta.isUpdating) { createOrUpdateVisualConsoleItem( visualConsole, asyncTaskManager, @@ -1344,7 +1344,7 @@ function cleanupDOM() { $("#modalVCItemForm").empty(); } /* Defined in operations/visual_console/view.php */ -/* global handleFormResponse,$,load_modal */ +/* global $, load_modal */ function createOrUpdateVisualConsoleItem( visualConsole, asyncTaskManager, @@ -1373,7 +1373,7 @@ function createOrUpdateVisualConsoleItem( form: ["itemForm-label", "itemForm-general", "itemForm-specific"], url: baseUrl + "ajax.php", ajax_callback: function(response) { - var data = JSON.parse(response); //handleFormResponse(response); + var data = JSON.parse(response); if (data == false) { // Error. diff --git a/pandora_console/include/rest-api/index.php b/pandora_console/include/rest-api/index.php index 230b4dd7a2..b053b3f164 100644 --- a/pandora_console/include/rest-api/index.php +++ b/pandora_console/include/rest-api/index.php @@ -17,7 +17,7 @@ $method = get_parameter('method'); if ($method) { $viewer = new Viewer(); try { - if (method_exists($viewer, $method)) { + if (method_exists($viewer, $method) === true) { echo $viewer->{$method}(); } } catch (Exception $e) { diff --git a/pandora_console/include/rest-api/models/VisualConsole/Items/Group.php b/pandora_console/include/rest-api/models/VisualConsole/Items/Group.php index 7883a9ee42..70c5b9a4d4 100644 --- a/pandora_console/include/rest-api/models/VisualConsole/Items/Group.php +++ b/pandora_console/include/rest-api/models/VisualConsole/Items/Group.php @@ -209,7 +209,7 @@ final class Group extends Item $agentsOk = \agents_get_agents( [ 'id_grupo' => $groupId, - 'status' => AGENT_STATUS_OK, + 'status' => AGENT_STATUS_NORMAL, ], ['COUNT(*) AS total'], 'AR', diff --git a/pandora_console/include/rest-api/models/VisualConsole/Items/Line.php b/pandora_console/include/rest-api/models/VisualConsole/Items/Line.php index 76841db53b..0a644bfd9a 100644 --- a/pandora_console/include/rest-api/models/VisualConsole/Items/Line.php +++ b/pandora_console/include/rest-api/models/VisualConsole/Items/Line.php @@ -373,41 +373,45 @@ final class Line extends Model * * @param array $data Unknown input data structure. * - * @return boolean The modeled element data structure stored into the DB. + * @return integer The modeled element data structure stored into the DB. * * @overrides Model::save. */ - public function save(array $data=[]): bool + public function save(array $data=[]): int { - $data_model = $this->encode($this->toArray()); - $newData = $this->encode($data); - - $save = \array_merge($data_model, $newData); - - if (!empty($save)) { - if (empty($save['id'])) { + if (empty($data) === false) { + if (empty($data['id']) === true) { // Insert. + $save = static::encode($data); $result = \db_process_sql_insert('tlayout_data', $save); + if ($result !== false) { + $item = static::fromDB(['id' => $result]); + $item->setData($item->toArray()); + } } else { // Update. - $result = \db_process_sql_update('tlayout_data', $save, ['id' => $save['id']]); + $dataModelEncode = $this->encode($this->toArray()); + $dataEncode = $this->encode($data); + + $save = array_merge($dataModelEncode, $dataEncode); + + $result = \db_process_sql_update( + 'tlayout_data', + $save, + ['id' => $save['id']] + ); + // Invalidate the item's cache. + if ($result !== false && $result > 0) { + $item = static::fromDB(['id' => $save['id']]); + // Update the model. + if (empty($item) === false) { + $this->setData($item->toArray()); + } + } } } - // Update the model. - if ($result) { - if (empty($save['id'])) { - $item = static::fromDB(['id' => $result]); - } else { - $item = static::fromDB(['id' => $save['id']]); - } - - if (!empty($item)) { - $this->setData($item->toArray()); - } - } - - return (bool) $result; + return $result; } @@ -442,22 +446,43 @@ final class Line extends Model { $inputs = []; - switch ($values['tabSelected']) { - // Position. - case 'label': - // Label. - // TODO tinyMCE. - $inputs[] = [ - 'label' => __('Label'), - 'id' => 'div-label', - 'arguments' => [ - 'name' => 'label', - 'type' => 'text', - 'value' => $values['label'], - 'return' => true, - ], - ]; - break; + if ($values['tabSelected'] === 'specific') { + // Width. + if ($values['borderWidth'] < 1) { + $values['borderWidth'] = 1; + } + + $inputs[] = [ + 'label' => __('Width'), + 'arguments' => [ + 'name' => 'borderWidth', + 'type' => 'number', + 'value' => $values['borderWidth'], + 'return' => true, + ], + ]; + + // Color. + $inputs[] = [ + 'label' => __('Color'), + 'arguments' => [ + 'name' => 'borderColor', + 'type' => 'color', + 'value' => $values['borderColor'], + 'return' => true, + ], + ]; + + // Show on top. + $inputs[] = [ + 'label' => __('Show on top'), + 'arguments' => [ + 'name' => 'isOnTop', + 'id' => 'isOnTop', + 'type' => 'switch', + 'value' => $values['isOnTop'], + ], + ]; } return $inputs; diff --git a/pandora_console/include/rest-api/models/VisualConsole/View.php b/pandora_console/include/rest-api/models/VisualConsole/View.php index 84859cb786..02d4d06606 100644 --- a/pandora_console/include/rest-api/models/VisualConsole/View.php +++ b/pandora_console/include/rest-api/models/VisualConsole/View.php @@ -92,6 +92,15 @@ class View extends \HTML 'img' => 'pencil.png', ], ]; + } else if ($type === LINE_ITEM) { + $tabs = [ + [ + 'name' => __('Specific settings'), + 'id' => 'tab-specific', + 'href' => $url.'&tabSelected=specific', + 'img' => 'event_responses_col.png', + ], + ]; } $result = html_print_tabs($tabs); @@ -333,7 +342,9 @@ class View extends \HTML break; case LINE_ITEM: - // Nothing. no specific items. + $data['borderColor'] = \get_parameter('borderColor'); + $data['borderWidth'] = \get_parameter('borderWidth'); + $data['isOnTop'] = \get_parameter_switch('isOnTop'); break; case AUTO_SLA_GRAPH: diff --git a/visual_console_client/src/VisualConsole.ts b/visual_console_client/src/VisualConsole.ts index 2d4c0f1dad..4f0bfe9c52 100644 --- a/visual_console_client/src/VisualConsole.ts +++ b/visual_console_client/src/VisualConsole.ts @@ -422,6 +422,9 @@ export default class VisualConsole { itemInstance.onLineMovementFinished( context.handleLineElementMovementFinished ); + // TODO:Continue + //itemInstance.onClick(context.handleElementClick); + itemInstance.onDblClick(context.handleElementDblClick); } else { itemInstance.onClick(context.handleElementClick); itemInstance.onDblClick(context.handleElementDblClick); diff --git a/visual_console_client/src/items/Line.ts b/visual_console_client/src/items/Line.ts index 68339a4935..986d69b324 100644 --- a/visual_console_client/src/items/Line.ts +++ b/visual_console_client/src/items/Line.ts @@ -260,7 +260,8 @@ export default class Line extends Item { this.moveMode = newMetadata.editMode; super.setMeta({ ...newMetadata, - editMode: false + editMode: false, + lineMode: true }); } @@ -409,6 +410,15 @@ export default class Line extends Item { : `-${this.circleRadius}px`; if (!this.isMoving) { + // Remove circles. + const circles = element.getElementsByClassName( + "visual-console-item-line-circle" + ); + while (circles.length > 0) { + const circle = circles.item(0); + if (circle) circle.remove(); + } + element.appendChild(startCircle); element.appendChild(endCircle); diff --git a/visual_console_client/src/lib/index.ts b/visual_console_client/src/lib/index.ts index 50d2997a32..c287347696 100644 --- a/visual_console_client/src/lib/index.ts +++ b/visual_console_client/src/lib/index.ts @@ -278,7 +278,8 @@ export function itemMetaDecoder(data: UnknownObject): ItemMeta | never { isUpdating: false, isBeingMoved: false, isBeingResized: false, - isSelected: false + isSelected: false, + lineMode: false }; } diff --git a/visual_console_client/src/lib/spec.ts b/visual_console_client/src/lib/spec.ts index e4042bc018..7d052ceb1f 100644 --- a/visual_console_client/src/lib/spec.ts +++ b/visual_console_client/src/lib/spec.ts @@ -135,7 +135,8 @@ describe("itemMetaDecoder function", () => { editMode: false, isBeingMoved: false, isBeingResized: false, - isSelected: false + isSelected: false, + lineMode: false }); }); @@ -155,7 +156,8 @@ describe("itemMetaDecoder function", () => { editMode: true, isBeingMoved: false, isBeingResized: false, - isSelected: false + isSelected: false, + lineMode: false }); }); diff --git a/visual_console_client/src/lib/types.ts b/visual_console_client/src/lib/types.ts index 6f287a462e..a14472f258 100644 --- a/visual_console_client/src/lib/types.ts +++ b/visual_console_client/src/lib/types.ts @@ -59,4 +59,5 @@ export interface ItemMeta { isBeingMoved: boolean; isBeingResized: boolean; editMode: boolean; + lineMode: boolean; }