diff --git a/pandora_console/include/javascript/pandora_visual_console.js b/pandora_console/include/javascript/pandora_visual_console.js index ca1fed6e79..6958fdae7f 100755 --- a/pandora_console/include/javascript/pandora_visual_console.js +++ b/pandora_console/include/javascript/pandora_visual_console.js @@ -144,7 +144,8 @@ function createVisualConsole( var id = e.item.props.id; var data = { x: e.newPosition.x, - y: e.newPosition.y + y: e.newPosition.y, + type: e.item.props.type }; var taskId = "visual-console-item-move-" + id; diff --git a/pandora_console/include/rest-api/index.php b/pandora_console/include/rest-api/index.php index 10f87488c7..a49667670b 100644 --- a/pandora_console/include/rest-api/index.php +++ b/pandora_console/include/rest-api/index.php @@ -13,6 +13,7 @@ use Models\VisualConsole\Container as VisualConsole; $visualConsoleId = (int) get_parameter('visualConsoleId'); $getVisualConsole = (bool) get_parameter('getVisualConsole'); $getVisualConsoleItems = (bool) get_parameter('getVisualConsoleItems'); +$updateVisualConsoleItem = (bool) get_parameter('updateVisualConsoleItem'); // Check groups can access user. $aclUserGroups = []; @@ -44,6 +45,21 @@ if ($getVisualConsole === true) { } else if ($getVisualConsoleItems === true) { $vcItems = VisualConsole::getItemsFromDB($visualConsoleId, $aclUserGroups); echo '['.implode($vcItems, ',').']'; +} else if ($updateVisualConsoleItem === true) { + $visualConsoleId = (integer) get_parameter('visualConsoleId'); + $visualConsoleItemId = (integer) get_parameter('visualConsoleItemId'); + $data = get_parameter('data'); + + $class = VisualConsole::getItemClass($data['type']); + + $item_data = []; + $item_data['id'] = $visualConsoleItemId; + $item_data['id_layout'] = $visualConsoleId; + $item_data['type'] = $data['type']; + + $item = $class::fromDB($item_data); + + $item->save($item->toArray(), $data); } exit; diff --git a/pandora_console/include/rest-api/models/Model.php b/pandora_console/include/rest-api/models/Model.php index 44e4f8b3e8..1cc8564603 100644 --- a/pandora_console/include/rest-api/models/Model.php +++ b/pandora_console/include/rest-api/models/Model.php @@ -68,7 +68,7 @@ abstract class Model * * @abstract */ - abstract public function save(array $data=[]): bool; + abstract public function save(array $data=[], array $newdata=[]); /** @@ -93,7 +93,7 @@ abstract class Model * * @return self Instance of the model. */ - public static function fromArray(array $data) + public static function fromArray(array $data): self { // The reserved word static refers to the invoked class at runtime. return new static($data); diff --git a/pandora_console/include/rest-api/models/VisualConsole/Container.php b/pandora_console/include/rest-api/models/VisualConsole/Container.php index 653b33d5c4..1f013cc28f 100644 --- a/pandora_console/include/rest-api/models/VisualConsole/Container.php +++ b/pandora_console/include/rest-api/models/VisualConsole/Container.php @@ -117,7 +117,7 @@ final class Container extends Model * * @overrides Model::save. */ - public function save(array $data=[]): bool + public function save(array $data=[], array $newdata=[]): bool { return true; } @@ -396,7 +396,6 @@ final class Container extends Model try { array_push($items, $class::fromDB($data)); - hd($class::save($data), true); } catch (\Throwable $e) { // TODO: Log this? } diff --git a/pandora_console/include/rest-api/models/VisualConsole/Item.php b/pandora_console/include/rest-api/models/VisualConsole/Item.php index c368e855cb..56b349db54 100644 --- a/pandora_console/include/rest-api/models/VisualConsole/Item.php +++ b/pandora_console/include/rest-api/models/VisualConsole/Item.php @@ -1627,24 +1627,33 @@ class Item extends CachedModel * * @overrides Model::save. */ - public function save(array $data=[]): bool + public function save(array $data=[], array $newdata=[]) { - $save = static::encode($data); + $save = self::encode($data); + $newSave = self::encode($newdata); - if (empty($save['id'])) { - // Insert. - $result = \db_process_sql_insert('tlayout_data', $save); - // static = static::fromDB(['id' => $result]); - } else { - // Update. - $result = \db_process_sql_update('tlayout_data', $save, ['id' => $save['id']]); - // static = static::fromDB(['id' => $save['id']]); + $save = \array_merge($save, $newSave); + + if (!empty($save)) { + if (empty($save['id'])) { + // Insert. + $result = \db_process_sql_insert('tlayout_data', $save); + } else { + // Update. + $result = \db_process_sql_update('tlayout_data', $save, ['id' => $save['id']]); + } } + // Update the model. if ($result) { + if (empty($save['id'])) { + $item = static::fromDB(['id' => $result]); + } else { + $item = static::fromDB(['id' => $save['id']]); + } } - return $result; + return $item; } 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 73887827d5..465a264459 100644 --- a/pandora_console/include/rest-api/models/VisualConsole/Items/Line.php +++ b/pandora_console/include/rest-api/models/VisualConsole/Items/Line.php @@ -231,7 +231,7 @@ final class Line extends Model * * @overrides Model::save. */ - public function save(array $data=[]): bool + public function save(array $data=[], array $newdata=[]): bool { return true; }