Merge branch 'ent-4822-estado-de-consola-visual-mantenimiento' into 'develop'
add mode maintenance VC pandora_enterprise#4822 See merge request artica/pandorafms!5191
This commit is contained in:
commit
41946bfda7
|
@ -1,5 +1,7 @@
|
|||
START TRANSACTION;
|
||||
|
||||
ALTER TABLE `tlayout` ADD COLUMN `maintenance_mode` TEXT;
|
||||
|
||||
ALTER TABLE `tusuario` ADD COLUMN `auth_token_secret` VARCHAR(45) DEFAULT NULL;
|
||||
|
||||
ALTER TABLE `tmodule_inventory` ADD COLUMN `script_mode` INT NOT NULL DEFAULT 2;
|
||||
|
|
|
@ -37,6 +37,7 @@ $ajax = true;
|
|||
$render_map = (bool) get_parameter('render_map', false);
|
||||
$graph_javascript = (bool) get_parameter('graph_javascript', false);
|
||||
$force_remote_check = (bool) get_parameter('force_remote_check', false);
|
||||
$update_maintanance_mode = (bool) get_parameter('update_maintanance_mode', false);
|
||||
$load_css_cv = (bool) get_parameter('load_css_cv', false);
|
||||
|
||||
if ($render_map) {
|
||||
|
@ -99,3 +100,29 @@ if ($load_css_cv === true) {
|
|||
echo $output;
|
||||
return;
|
||||
}
|
||||
|
||||
if ($update_maintanance_mode === true) {
|
||||
$idVisualConsole = (int) get_parameter('idVisualConsole', 0);
|
||||
$mode = (bool) get_parameter('mode', false);
|
||||
|
||||
$values = [];
|
||||
if ($mode === true) {
|
||||
$values['maintenance_mode'] = json_encode(
|
||||
[
|
||||
'user' => $config['id_user'],
|
||||
'timestamp' => time(),
|
||||
]
|
||||
);
|
||||
} else {
|
||||
$values['maintenance_mode'] = null;
|
||||
}
|
||||
|
||||
$result = db_process_sql_update(
|
||||
'tlayout',
|
||||
$values,
|
||||
['id' => $idVisualConsole]
|
||||
);
|
||||
|
||||
echo json_encode(['result' => $result]);
|
||||
return;
|
||||
}
|
||||
|
|
|
@ -3708,6 +3708,8 @@ function visual_map_print_visual_map(
|
|||
|
||||
// End function
|
||||
// Start function
|
||||
|
||||
|
||||
/**
|
||||
* Get a list with the layouts for a user.
|
||||
*
|
||||
|
@ -3719,8 +3721,6 @@ function visual_map_print_visual_map(
|
|||
*
|
||||
* @return array A list of layouts the user can see.
|
||||
*/
|
||||
|
||||
|
||||
function visual_map_get_user_layouts(
|
||||
$id_user=0,
|
||||
$only_names=false,
|
||||
|
@ -3729,6 +3729,7 @@ function visual_map_get_user_layouts(
|
|||
$favourite=false,
|
||||
$check_user_groups=true
|
||||
) {
|
||||
$where = '';
|
||||
if (! is_array($filter)) {
|
||||
$filter = [];
|
||||
} else {
|
||||
|
@ -3819,17 +3820,19 @@ function visual_map_get_user_layouts(
|
|||
$retval[$layout['id']] = $layout;
|
||||
}
|
||||
|
||||
// add_perms
|
||||
if (isset($groups[$layout['id_group']]['vconsole_view'])) {
|
||||
$retval[$layout['id']]['vr'] = $groups[$layout['id_group']]['vconsole_view'];
|
||||
}
|
||||
if ($only_names === false) {
|
||||
// Aad_perms.
|
||||
if (isset($groups[$layout['id_group']]['vconsole_view'])) {
|
||||
$retval[$layout['id']]['vr'] = $groups[$layout['id_group']]['vconsole_view'];
|
||||
}
|
||||
|
||||
if (isset($groups[$layout['id_group']]['vconsole_edit'])) {
|
||||
$retval[$layout['id']]['vw'] = $groups[$layout['id_group']]['vconsole_edit'];
|
||||
}
|
||||
if (isset($groups[$layout['id_group']]['vconsole_edit'])) {
|
||||
$retval[$layout['id']]['vw'] = $groups[$layout['id_group']]['vconsole_edit'];
|
||||
}
|
||||
|
||||
if (isset($groups[$layout['id_group']]['vconsole_management'])) {
|
||||
$retval[$layout['id']]['vm'] = $groups[$layout['id_group']]['vconsole_management'];
|
||||
if (isset($groups[$layout['id_group']]['vconsole_management'])) {
|
||||
$retval[$layout['id']]['vm'] = $groups[$layout['id_group']]['vconsole_management'];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -1386,6 +1386,12 @@ function dashboardLoadVC(settings) {
|
|||
: "dashboard"
|
||||
);
|
||||
|
||||
if (settings.props.maintenanceMode != null) {
|
||||
if (settings.props.maintenanceMode.user !== settings.id_user) {
|
||||
visualConsoleManager.visualConsole.enableMaintenanceMode();
|
||||
}
|
||||
}
|
||||
|
||||
if (settings.mobile_view_orientation_vc === true) {
|
||||
$(window).on("orientationchange", function() {
|
||||
$(container).width($(window).height());
|
||||
|
|
|
@ -117,6 +117,15 @@ function createVisualConsole(
|
|||
visualConsole.updateElements(items);
|
||||
}
|
||||
|
||||
if (
|
||||
visualConsole.props.maintenanceMode != null &&
|
||||
visualConsole.props.maintenanceMode.user !== id_user
|
||||
) {
|
||||
visualConsole.enableMaintenanceMode();
|
||||
} else {
|
||||
visualConsole.disableMaintenanceMode();
|
||||
}
|
||||
|
||||
// Emit the VC update event.
|
||||
if (onUpdate) onUpdate(prevProps, visualConsole.props);
|
||||
} catch (ignored) {} // eslint-disable-line no-empty
|
||||
|
@ -159,6 +168,7 @@ function createVisualConsole(
|
|||
// Initialize the Visual Console.
|
||||
try {
|
||||
visualConsole = new VisualConsole(container, props, items);
|
||||
|
||||
// VC Item clicked.
|
||||
visualConsole.onItemClick(function(e) {
|
||||
var data = e.item.props || {};
|
||||
|
@ -357,7 +367,6 @@ function createVisualConsole(
|
|||
})
|
||||
.init();
|
||||
});
|
||||
|
||||
// VC Item resized.
|
||||
visualConsole.onItemResized(function(e) {
|
||||
var item = e.item;
|
||||
|
@ -473,6 +482,11 @@ function createVisualConsole(
|
|||
updateVisualConsole(visualConsole.props.id, interval, null, dimensions);
|
||||
}
|
||||
},
|
||||
forceUpdateVisualConsole: function() {
|
||||
asyncTaskManager.cancel("visual-console");
|
||||
asyncTaskManager.cancel("visual-console-start");
|
||||
updateVisualConsole(visualConsole.props.id);
|
||||
},
|
||||
createItem: function(typeString) {
|
||||
var type;
|
||||
switch (typeString) {
|
||||
|
|
|
@ -90,6 +90,7 @@ final class Container extends Model
|
|||
'backgroundURL' => static::extractBackgroundUrl($data),
|
||||
'relationLineWidth' => (int) $data['relationLineWidth'],
|
||||
'hash' => static::extractHash($data),
|
||||
'maintenanceMode' => static::extractMaintenanceMode($data),
|
||||
];
|
||||
}
|
||||
|
||||
|
@ -238,6 +239,45 @@ final class Container extends Model
|
|||
}
|
||||
|
||||
|
||||
/**
|
||||
* Extract a background color value.
|
||||
*
|
||||
* @param array $data Unknown input data structure.
|
||||
*
|
||||
* @return mixed String representing the color (not empty) or null.
|
||||
*/
|
||||
private static function extractMaintenanceMode(array $data)
|
||||
{
|
||||
global $config;
|
||||
$maintenance_mode = static::notEmptyStringOr(
|
||||
static::issetInArray(
|
||||
$data,
|
||||
[
|
||||
'maintenanceMode',
|
||||
'maintenance_mode',
|
||||
]
|
||||
),
|
||||
null
|
||||
);
|
||||
|
||||
$result = null;
|
||||
if ($maintenance_mode !== null) {
|
||||
$result = json_decode($maintenance_mode, true);
|
||||
|
||||
$result['date'] = date(
|
||||
$config['date_format'],
|
||||
$result['timestamp']
|
||||
);
|
||||
|
||||
$result['timestamp'] = human_time_description_raw(
|
||||
(time() - $result['timestamp'])
|
||||
);
|
||||
}
|
||||
|
||||
return $result;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Extract the "is favorite" switch value.
|
||||
*
|
||||
|
|
Binary file not shown.
After Width: | Height: | Size: 50 KiB |
|
@ -7,6 +7,14 @@
|
|||
margin-top: 5px;
|
||||
}
|
||||
|
||||
.is-maintenance {
|
||||
background-image: url(maintenanceMode.png) !important;
|
||||
}
|
||||
|
||||
.is-maintenance :nth-child(1) {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.visual-console-item {
|
||||
position: absolute;
|
||||
display: flex;
|
||||
|
|
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
@ -358,6 +358,7 @@ class Visualmap
|
|||
'uniq' => $uniq,
|
||||
'mobile' => true,
|
||||
'vcId' => $visualConsoleId,
|
||||
'id_user' => $config['id_user'],
|
||||
'mobile_view_orientation_vc' => (bool) !$config['mobile_view_orientation_vc'],
|
||||
]
|
||||
);
|
||||
|
|
|
@ -281,6 +281,12 @@ $visualConsoleItems = VisualConsole::getItemsFromDB(
|
|||
"<?php echo get_parameter('hash', ''); ?>"
|
||||
);
|
||||
|
||||
if(props.maintenanceMode != null) {
|
||||
if(props.maintenanceMode.user !== '<?php echo $config['id_user']; ?>') {
|
||||
visualConsoleManager.visualConsole.enableMaintenanceMode();
|
||||
}
|
||||
}
|
||||
|
||||
var controls = document.getElementById('vc-controls');
|
||||
autoHideElement(controls, 1000);
|
||||
|
||||
|
|
|
@ -33,7 +33,6 @@ global $config;
|
|||
check_login();
|
||||
|
||||
require_once $config['homedir'].'/vendor/autoload.php';
|
||||
// TODO: include file functions.
|
||||
require_once $config['homedir'].'/include/functions_visual_map.php';
|
||||
|
||||
|
||||
|
@ -103,6 +102,9 @@ $aclRead = (bool) check_acl_restricted_all($config['id_user'], $groupId, 'VR')
|
|||
$aclWrite = (bool) check_acl_restricted_all($config['id_user'], $groupId, 'VW');
|
||||
$aclManage = (bool) check_acl_restricted_all($config['id_user'], $groupId, 'VM');
|
||||
|
||||
// Maintenance Mode.
|
||||
$maintenanceMode = $visualConsoleData['maintenanceMode'];
|
||||
|
||||
if ($aclRead === false && $aclWrite === false && $aclManage === false) {
|
||||
db_pandora_audit(
|
||||
AUDIT_LOG_ACL_VIOLATION,
|
||||
|
@ -398,18 +400,54 @@ if ($pure === false) {
|
|||
echo '</div>';
|
||||
|
||||
if ($aclWrite === true || $aclManage === true) {
|
||||
if (!is_metaconsole()) {
|
||||
echo '<a id ="force_check" href="" style="margin-right: 25px;">'.html_print_image(
|
||||
echo '<div class="flex-row" style="width:220px;">';
|
||||
if (is_metaconsole() === false) {
|
||||
echo '<div id="force_check_control" class="flex-column">';
|
||||
echo html_print_label(__('Force'), 'force-mode', true);
|
||||
echo '<a id ="force_check" href="">';
|
||||
echo html_print_image(
|
||||
'images/target.png',
|
||||
true,
|
||||
[
|
||||
'title' => __('Force remote checks'),
|
||||
'class' => 'invert_filter',
|
||||
]
|
||||
).'</a>';
|
||||
);
|
||||
echo '</a>';
|
||||
echo '</div>';
|
||||
}
|
||||
|
||||
echo html_print_checkbox_switch('edit-mode', 1, false, true);
|
||||
$disabled_edit_mode = false;
|
||||
if ($aclManage === true) {
|
||||
$value_maintenance_mode = true;
|
||||
if ($maintenanceMode === null) {
|
||||
$value_maintenance_mode = false;
|
||||
} else {
|
||||
if ($maintenanceMode['user'] !== $config['id_user']) {
|
||||
$disabled_edit_mode = true;
|
||||
}
|
||||
}
|
||||
|
||||
echo '<div id="maintenance-mode-control" class="flex-column">';
|
||||
echo html_print_label(
|
||||
__('Maintenance'),
|
||||
'maintenance-mode',
|
||||
true
|
||||
);
|
||||
echo html_print_checkbox_switch(
|
||||
'maintenance-mode',
|
||||
1,
|
||||
$value_maintenance_mode,
|
||||
true
|
||||
);
|
||||
echo '</div>';
|
||||
}
|
||||
|
||||
echo '<div id="edit-mode-control" class="flex-column">';
|
||||
echo html_print_label(__('Edit'), 'edit-mode', true);
|
||||
echo html_print_checkbox_switch('edit-mode', 1, false, true, $disabled_edit_mode);
|
||||
echo '</div>';
|
||||
echo '</div>';
|
||||
}
|
||||
|
||||
echo '</div>';
|
||||
|
@ -661,6 +699,18 @@ ui_require_css_file('form');
|
|||
window.history.replaceState({}, document.title, href);
|
||||
}
|
||||
}
|
||||
|
||||
if(newProps.maintenanceMode != null) {
|
||||
$('input[name=maintenance-mode]').prop('checked', true);
|
||||
if(newProps.maintenanceMode.user !== '<?php echo $config['id_user']; ?>') {
|
||||
$('input[name=edit-mode]').prop('disabled', true);
|
||||
} else {
|
||||
$('input[name=edit-mode]').prop('disabled', false);
|
||||
}
|
||||
} else {
|
||||
$('input[name=maintenance-mode]').prop('checked', false);
|
||||
$('input[name=edit-mode]').prop('disabled', false);
|
||||
}
|
||||
}
|
||||
|
||||
// Add the datetime when the item was received.
|
||||
|
@ -676,26 +726,88 @@ ui_require_css_file('form');
|
|||
items,
|
||||
baseUrl,
|
||||
<?php echo ($refr * 1000); ?>,
|
||||
handleUpdate
|
||||
handleUpdate,
|
||||
false,
|
||||
undefined,
|
||||
'<?php echo $config['id_user']; ?>',
|
||||
);
|
||||
|
||||
if(props.maintenanceMode != null) {
|
||||
if(props.maintenanceMode.user !== '<?php echo $config['id_user']; ?>') {
|
||||
visualConsoleManager.visualConsole.enableMaintenanceMode();
|
||||
}
|
||||
}
|
||||
|
||||
<?php
|
||||
if ($edit_capable === true) {
|
||||
?>
|
||||
// Enable/disable the edition mode.
|
||||
$('input[name=edit-mode]').change(function(event) {
|
||||
var maintenanceMode = visualConsoleManager.visualConsole.props.maintenanceMode;
|
||||
if ($(this).prop('checked')) {
|
||||
visualConsoleManager.visualConsole.enableEditMode();
|
||||
visualConsoleManager.changeUpdateInterval(0);
|
||||
$('#force_check').hide();
|
||||
$('#edit-controls').css('visibility', '');
|
||||
} else {
|
||||
visualConsoleManager.visualConsole.disableEditMode();
|
||||
visualConsoleManager.visualConsole.unSelectItems();
|
||||
visualConsoleManager.changeUpdateInterval(<?php echo ($refr * 1000); ?>); // To ms.
|
||||
$('#edit-controls').css('visibility', 'hidden');
|
||||
$('#force_check').show();
|
||||
}
|
||||
|
||||
resetInterval();
|
||||
});
|
||||
|
||||
// Enable/disable the maintenance mode.
|
||||
$('input[name=maintenance-mode]').click(function(event) {
|
||||
event.preventDefault();
|
||||
const idVisualConsole = '<?php echo $visualConsoleId; ?>';
|
||||
const mode = ($(this).prop('checked') === true) ? 1 : 0;
|
||||
|
||||
var maintenanceMode = visualConsoleManager.visualConsole.props.maintenanceMode;
|
||||
var msg = '';
|
||||
if(maintenanceMode == null) {
|
||||
msg = '<?php echo __('Are you sure you wish to set the visual console in maintenance mode'); ?>';
|
||||
msg += '?';
|
||||
} else if (maintenanceMode.user === '<?php echo $config['id_user']; ?>') {
|
||||
msg += '<?php echo __('Are you sure you wish to disable maintenance mode'); ?>';
|
||||
msg += '?';
|
||||
} else {
|
||||
msg = '<?php echo __('The visual console was set to maintenance mode'); ?>';
|
||||
msg += ' ' + '<span title="'+maintenanceMode.date+'">' + maintenanceMode.timestamp + '</span>';
|
||||
msg += ' ' + '<?php echo __('ago by user'); ?>';
|
||||
msg += ' ' + maintenanceMode.user;
|
||||
msg += '. ' + '<?php echo __('Are you sure you wish to disable maintenance mode'); ?>';
|
||||
msg += '?';
|
||||
}
|
||||
|
||||
confirmDialog({
|
||||
title: '<?php echo __('Maintenance mode'); ?>',
|
||||
message: msg,
|
||||
onAccept: function() {
|
||||
$.ajax({
|
||||
type: "POST",
|
||||
url: "ajax.php",
|
||||
dataType: "json",
|
||||
data: {
|
||||
page: "include/ajax/visual_console.ajax",
|
||||
update_maintanance_mode: true,
|
||||
idVisualConsole: idVisualConsole,
|
||||
mode: mode
|
||||
},
|
||||
success: function (data) {
|
||||
if(data.result) {
|
||||
$('input[name=maintenance-mode]').prop('checked', mode);
|
||||
$('input[name=maintenance-mode]').trigger('change');
|
||||
resetInterval();
|
||||
}
|
||||
},
|
||||
error: function (err) {
|
||||
console.error(err);
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
});
|
||||
<?php
|
||||
}
|
||||
|
@ -797,6 +909,7 @@ if ($edit_capable === true) {
|
|||
|
||||
function resetInterval() {
|
||||
visualConsoleManager.changeUpdateInterval(<?php echo ($refr * 1000); ?>);
|
||||
visualConsoleManager.forceUpdateVisualConsole();
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -1678,6 +1678,7 @@ CREATE TABLE IF NOT EXISTS `tlayout` (
|
|||
`background_color` VARCHAR(50) NOT NULL DEFAULT '#FFF',
|
||||
`is_favourite` INT UNSIGNED NOT NULL DEFAULT 0,
|
||||
`auto_adjust` INT UNSIGNED NOT NULL DEFAULT 0,
|
||||
`maintenance_mode` TEXT,
|
||||
PRIMARY KEY(`id`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4;
|
||||
|
||||
|
|
|
@ -1335,18 +1335,18 @@ UPDATE `tnotification_source` SET `enabled`=1 WHERE `description` = 'System 
|
|||
--
|
||||
INSERT INTO `tlayout`
|
||||
VALUES
|
||||
(1, 'Demo visual console', 0, 'fondo.jpg', 1080, 1920, 'white', 0, 0),
|
||||
(2,'Demo visual console 2',0,'fondo-keep-alive.jpg',1080,1920,'#FFF',0, 0),
|
||||
(3,'Worldmap',0,'map_world.jpg',1080,1920,'white',0, 0),
|
||||
(4,'Europe',0,'map_europe_1.jpg',1080,1920,'white',0, 0),
|
||||
(5,'USA',0,'map_USA.jpg',1080,1920,'white',0, 0),
|
||||
(6,'Spain',0,'map_spain.jpg',1080,1920,'white',0, 0),
|
||||
(7,'Madrid',0,'map_madrid.jpg',1080,1920,'white',0, 0),
|
||||
(8,'Germany',0,'map_germany_1.jpg',1080,1920,'white',0, 0),
|
||||
(9,'France',0,'map_france.jpg',1080,1920,'white',0, 0),
|
||||
(10,'Catalonia',0,'map_catalonia.jpg',1080,1920,'white',0, 0),
|
||||
(11,'Basque Country',0,'map_basque-country.jpg',1080,1920,'white',0, 0),
|
||||
(12,'Andalusia',0,'map_andalusia.jpg',1080,1920,'white',0, 0)
|
||||
(1, 'Demo visual console', 0, 'fondo.jpg', 1080, 1920, 'white', 0, 0, null),
|
||||
(2,'Demo visual console 2',0,'fondo-keep-alive.jpg',1080,1920,'#FFF',0, 0, null),
|
||||
(3,'Worldmap',0,'map_world.jpg',1080,1920,'white',0, 0, null),
|
||||
(4,'Europe',0,'map_europe_1.jpg',1080,1920,'white',0, 0, null),
|
||||
(5,'USA',0,'map_USA.jpg',1080,1920,'white',0, 0, null),
|
||||
(6,'Spain',0,'map_spain.jpg',1080,1920,'white',0, 0, null),
|
||||
(7,'Madrid',0,'map_madrid.jpg',1080,1920,'white',0, 0, null),
|
||||
(8,'Germany',0,'map_germany_1.jpg',1080,1920,'white',0, 0, null),
|
||||
(9,'France',0,'map_france.jpg',1080,1920,'white',0, 0, null),
|
||||
(10,'Catalonia',0,'map_catalonia.jpg',1080,1920,'white',0, 0, null),
|
||||
(11,'Basque Country',0,'map_basque-country.jpg',1080,1920,'white',0, 0, null),
|
||||
(12,'Andalusia',0,'map_andalusia.jpg',1080,1920,'white',0, 0, null)
|
||||
;
|
||||
|
||||
--
|
||||
|
|
|
@ -591,6 +591,9 @@ abstract class VisualConsoleItem<Props extends ItemProps> {
|
|||
});
|
||||
|
||||
// Metadata state.
|
||||
if (this.meta.maintenanceMode) {
|
||||
box.classList.add("is-maintenance");
|
||||
}
|
||||
if (this.meta.editMode) {
|
||||
box.classList.add("is-editing");
|
||||
}
|
||||
|
@ -877,8 +880,12 @@ abstract class VisualConsoleItem<Props extends ItemProps> {
|
|||
}
|
||||
|
||||
// Change metadata related things.
|
||||
if (!prevMeta || prevMeta.editMode !== this.meta.editMode) {
|
||||
if (this.meta.editMode) {
|
||||
if (
|
||||
!prevMeta ||
|
||||
prevMeta.editMode !== this.meta.editMode ||
|
||||
prevMeta.maintenanceMode !== this.meta.maintenanceMode
|
||||
) {
|
||||
if (this.meta.editMode && this.meta.maintenanceMode === false) {
|
||||
this.elementRef.classList.add("is-editing");
|
||||
} else {
|
||||
this.elementRef.classList.remove("is-editing");
|
||||
|
|
|
@ -159,6 +159,12 @@ export interface VisualConsoleProps extends Size {
|
|||
backgroundColor: string | null;
|
||||
isFavorite: boolean;
|
||||
relationLineWidth: number;
|
||||
maintenanceMode: MaintenanceModeInterface | null;
|
||||
}
|
||||
|
||||
export interface MaintenanceModeInterface {
|
||||
user: string;
|
||||
timestamp: number;
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -181,7 +187,8 @@ export function visualConsolePropsDecoder(
|
|||
backgroundURL,
|
||||
backgroundColor,
|
||||
isFavorite,
|
||||
relationLineWidth
|
||||
relationLineWidth,
|
||||
maintenanceMode
|
||||
} = data;
|
||||
|
||||
if (id == null || isNaN(parseInt(id))) {
|
||||
|
@ -202,6 +209,7 @@ export function visualConsolePropsDecoder(
|
|||
backgroundColor: notEmptyStringOr(backgroundColor, null),
|
||||
isFavorite: parseBoolean(isFavorite),
|
||||
relationLineWidth: parseIntOr(relationLineWidth, 0),
|
||||
maintenanceMode: maintenanceMode,
|
||||
...sizePropsDecoder(data)
|
||||
};
|
||||
}
|
||||
|
@ -1222,6 +1230,28 @@ export default class VisualConsole {
|
|||
this.containerRef.classList.remove("is-editing");
|
||||
}
|
||||
|
||||
/**
|
||||
* Enable the maintenance mode.
|
||||
*/
|
||||
public enableMaintenanceMode(): void {
|
||||
this.elements.forEach(item => {
|
||||
item.meta = { ...item.meta, maintenanceMode: true };
|
||||
});
|
||||
this.containerRef.classList.add("is-maintenance");
|
||||
this.containerRef.classList.remove("is-editing");
|
||||
}
|
||||
|
||||
/**
|
||||
* Disable the maintenance mode.
|
||||
*/
|
||||
public disableMaintenanceMode(): void {
|
||||
this.elements.forEach(item => {
|
||||
item.meta = { ...item.meta, maintenanceMode: false };
|
||||
});
|
||||
this.containerRef.classList.remove("is-maintenance");
|
||||
this.containerRef.classList.add("is-editing");
|
||||
}
|
||||
|
||||
/**
|
||||
* Select an item.
|
||||
* @param itemId Item Id.
|
||||
|
|
|
@ -275,6 +275,7 @@ export function itemMetaDecoder(data: UnknownObject): ItemMeta | never {
|
|||
receivedAt,
|
||||
error,
|
||||
editMode: parseBoolean(data.editMode),
|
||||
maintenanceMode: parseBoolean(data.maintenanceMode),
|
||||
isFromCache: parseBoolean(data.isFromCache),
|
||||
isFetching: false,
|
||||
isUpdating: false,
|
||||
|
|
Binary file not shown.
After Width: | Height: | Size: 50 KiB |
|
@ -133,6 +133,7 @@ describe("itemMetaDecoder function", () => {
|
|||
isFetching: false,
|
||||
isUpdating: false,
|
||||
editMode: false,
|
||||
maintenanceMode: false,
|
||||
isBeingMoved: false,
|
||||
isBeingResized: false,
|
||||
isSelected: false,
|
||||
|
@ -154,6 +155,7 @@ describe("itemMetaDecoder function", () => {
|
|||
isFetching: false,
|
||||
isUpdating: false,
|
||||
editMode: true,
|
||||
maintenanceMode: false,
|
||||
isBeingMoved: false,
|
||||
isBeingResized: false,
|
||||
isSelected: false,
|
||||
|
|
|
@ -61,5 +61,6 @@ export interface ItemMeta {
|
|||
isBeingMoved: boolean;
|
||||
isBeingResized: boolean;
|
||||
editMode: boolean;
|
||||
maintenanceMode: boolean;
|
||||
lineMode: boolean;
|
||||
}
|
||||
|
|
|
@ -7,6 +7,14 @@
|
|||
margin-top: 5px;
|
||||
}
|
||||
|
||||
.is-maintenance {
|
||||
background-image: url(./lib/maintenanceMode.png) !important;
|
||||
}
|
||||
|
||||
.is-maintenance :nth-child(1) {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.visual-console-item {
|
||||
position: absolute;
|
||||
display: flex;
|
||||
|
|
Loading…
Reference in New Issue