From 2c98ee5628b03ba42ae38bff44a944aa0a085910 Mon Sep 17 00:00:00 2001 From: miguel angel rasteu Date: Mon, 18 Sep 2023 09:09:52 +0200 Subject: [PATCH] #12036 Fix duplicate widget --- .../include/javascript/pandora_dashboards.js | 25 ++++++-------- .../include/lib/Dashboard/Manager.php | 34 ++++++++++++++++--- pandora_console/views/dashboard/cell.php | 14 +++++--- 3 files changed, 50 insertions(+), 23 deletions(-) diff --git a/pandora_console/include/javascript/pandora_dashboards.js b/pandora_console/include/javascript/pandora_dashboards.js index 79fde538b4..471adc877a 100644 --- a/pandora_console/include/javascript/pandora_dashboards.js +++ b/pandora_console/include/javascript/pandora_dashboards.js @@ -310,8 +310,6 @@ function initialiceLayout(data) { } function duplicateWidget(original_cellId, original_widgetId) { - let duplicate_cellId = insertCellLayoutForDuplicate(); - $.ajax({ method: "post", url: data.url, @@ -320,16 +318,14 @@ function initialiceLayout(data) { method: "duplicateWidget", dashboardId: data.dashboardId, widgetId: original_widgetId, - cellId: original_cellId, - duplicateCellId: duplicate_cellId + cellId: original_cellId }, dataType: "json", - success: function(success) { - console.log(success); + success: function(data) { + addCell(data.cellId, 0, 0, 4, 4, true, 0, 2000, 0, 2000, 0, true); }, - error: function(error) { - console.log(error); - return []; + error: function(xhr, textStatus, errorMessage) { + console.log("ERROR" + errorMessage + textStatus + xhr); } }); } @@ -428,8 +424,8 @@ function initialiceLayout(data) { } }); } - - function insertCellLayoutForDuplicate() { + /* + function insertCellLayoutForDuplicate(original_cell_id) { let duplicateCellId = 0; $.ajax({ async: false, @@ -441,7 +437,8 @@ function initialiceLayout(data) { dashboardId: data.dashboardId, auth_class: data.auth.class, auth_hash: data.auth.hash, - id_user: data.auth.user + id_user: data.auth.user, + copy: original_cell_id }, dataType: "json", success: function(data) { @@ -449,7 +446,7 @@ function initialiceLayout(data) { // width and height = 4 // position auto = true. if (data.cellId !== 0) { - addCell(data.cellId, 0, 0, 4, 4, true, 0, 2000, 0, 2000, 0, true); + addCell(data.cellId, 0, 0, 4, 4, true, 0, 2000, 0, 2000, 0, true, original_cell_id); duplicateCellId = data.cellId; } }, @@ -458,7 +455,7 @@ function initialiceLayout(data) { } }); return duplicateCellId; - } + }*/ function configurationWidget(cellId, widgetId, size) { load_modal({ diff --git a/pandora_console/include/lib/Dashboard/Manager.php b/pandora_console/include/lib/Dashboard/Manager.php index 40b6d2d1a0..dfcdfe0238 100644 --- a/pandora_console/include/lib/Dashboard/Manager.php +++ b/pandora_console/include/lib/Dashboard/Manager.php @@ -609,10 +609,25 @@ class Manager implements PublicLogin /** * Duplicate widget. * - * @return integer + * @return void */ - public function duplicateWidget():int + public function duplicateWidget():void { + global $config; + + $return = false; + + $position = [ + 'x' => 0, + 'y' => 0, + 'width' => 4, + 'height' => 4, + ]; + + $cellClass = new Cell($position, $this->dashboardId); + $dataCell = $cellClass->get(); + + // $result = ['cellId' => $dataCell['id']]; $original_widget = []; $original_cellId = $this->cellId; @@ -632,12 +647,23 @@ class Manager implements PublicLogin 'options' => $options_json, 'id_widget' => $original_widget['id_widget'], ]; + $res = \db_process_sql_update( 'twidget_dashboard', $values, - ['id' => $this->duplicateCellId] + ['id' => $dataCell['id']] ); - return $res; + + if ($res === 1) { + $return = [ + 'cellId' => $dataCell['id'], + 'widgetId' => $original_widget['id_widget'], + ]; + + $json_return = json_encode($return); + } + + echo $json_return; } diff --git a/pandora_console/views/dashboard/cell.php b/pandora_console/views/dashboard/cell.php index 919ce9e07e..7816f79351 100644 --- a/pandora_console/views/dashboard/cell.php +++ b/pandora_console/views/dashboard/cell.php @@ -34,9 +34,8 @@ if ($redraw === false) { $output .= '
'; $output .= '
'; - -if ((int) $cellData['id_widget'] !== 0) { - $options = json_decode($cellData['options'], true); +$options = json_decode($cellData['options'], true); +if ($cellData['id_widget'] !== '0') { $output .= $options['title']; } else { $output .= __('New widget'); @@ -44,10 +43,15 @@ if ((int) $cellData['id_widget'] !== 0) { $output .= '
'; $output .= '