Merge branch 'ent-12687-sistema-import-export-prd' into 'develop'

Ent 12687 sistema import export prd

See merge request artica/pandorafms!6874
This commit is contained in:
Enrique Martin 2024-02-14 12:11:16 +00:00
commit cb63c27d2a
14 changed files with 4404 additions and 1682 deletions

View File

@ -1,497 +0,0 @@
<?php
/**
* Resources exportation view.
*
* @category Extensions.
* @package Pandora FMS
* @subpackage Community
* @version 1.0.0
* @license See below
*
* ______ ___ _______ _______ ________
* | __ \.-----.--.--.--| |.-----.----.-----. | ___| | | __|
* | __/| _ | | _ || _ | _| _ | | ___| |__ |
* |___| |___._|__|__|_____||_____|__| |___._| |___| |__|_|__|_______|
*
* ============================================================================
* Copyright (c) 2005-2023 Pandora FMS
* Please see https://pandorafms.com/community/ for full contribution list
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation for version 2.
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
* ============================================================================
*/
// Load global vars.
if (isset($_GET['get_ptr'])) {
if ($_GET['get_ptr'] == 1) {
$ownDir = dirname(__FILE__).'/';
$ownDir = str_replace('\\', '/', $ownDir);
// Don't start a session before this import.
// The session is configured and started inside the config process.
include_once $ownDir.'../include/config.php';
// Login check
if (!isset($_SESSION['id_usuario'])) {
$config['id_user'] = null;
} else {
$config['id_user'] = $_SESSION['id_usuario'];
}
if (! check_acl($config['id_user'], 0, 'PM') && ! is_user_admin($config['id_user'])) {
db_pandora_audit(
AUDIT_LOG_ACL_VIOLATION,
'Trying to access Setup Management'
);
include 'general/noaccess.php';
return;
}
$hook_enterprise = enterprise_include('extensions/resource_exportation/functions.php');
header('Content-type: binary');
header('Content-Disposition: attachment; filename="'.get_name_xml_resource($hook_enterprise)).'"';
header('Pragma: no-cache');
header('Expires: 0');
output_xml_resource($hook_enterprise);
}
} else {
extensions_add_godmode_menu_option(__('Resource exportation'), 'PM', 'gagente', '', 'v1r1');
extensions_add_godmode_function('resource_exportation_extension_main');
}
function output_xml_resource($hook_enterprise)
{
global $config;
$type = get_parameter('type');
$id = (int) get_parameter('id');
switch ($type) {
case 'report':
output_xml_report($id);
break;
case 'visual_console':
output_xml_visual_console($id);
break;
default:
if ($hook_enterprise === true) {
$include_agents = get_parameter('include_agents', 0);
return enterprise_output_xml_resource($type, $id, $include_agents);
}
break;
}
}
function output_xml_report($id)
{
global $config;
include_once $config['homedir'].'/include/functions_agents.php';
$report = db_get_row('treport', 'id_report', $id);
echo '<?xml version="1.0" encoding="UTF-8" ?>'."\n";
echo "<report>\n";
echo '<name><![CDATA['.io_safe_output($report['name'])."]]></name>\n";
if (isset($report['description'])) {
echo '<description><![CDATA['.io_safe_output($report['description'])."]]></description>\n";
}
$group = db_get_value('nombre', 'tgrupo', 'id_grupo', $report['id_group']);
echo '<group><![CDATA['.io_safe_output($group)."]]></group>\n";
$items = db_get_all_rows_field_filter(
'treport_content',
'id_report',
$report['id_report']
);
foreach ($items as $item) {
echo "<item>\n";
echo '<type>'.io_safe_output($item['type'])."</type>\n";
echo '<description>'.io_safe_output($item['description'])."</description>\n";
echo '<period>'.io_safe_output($item['period'])."</period>\n";
if ($item['id_agent'] != 0) {
$agent = db_get_value('alias', 'tagente', 'id_agente', $item['id_agent']);
}
if ($item['id_agent_module'] != 0) {
$module = db_get_value('nombre', 'tagente_modulo', 'id_agente_modulo', $item['id_agent_module']);
$id_agent = db_get_value('id_agente', 'tagente_modulo', 'id_agente_modulo', $item['id_agent_module']);
$agent = db_get_value('alias', 'tagente', 'id_agente', $item['id_agent']);
echo '<module><![CDATA['.io_safe_output($module)."]]></module>\n";
}
if (isset($agent)) {
echo '<agent><![CDATA['.$agent."]]></agent>\n";
}
$agent = null;
switch (io_safe_output($item['type'])) {
case 2:
case 'custom_graph':
case 'automatic_custom_graph':
$graph = db_get_value('name', 'tgraph', 'id_graph', $item['id_gs']);
echo '<graph><![CDATA['.io_safe_output($graph)."]]></graph>\n";
break;
case 3:
case 'SLA':
echo '<only_display_wrong>'.$item['only_display_wrong']."</only_display_wrong>\n";
echo '<monday>'.$item['monday']."</monday>\n";
echo '<tuesday>'.$item['tuesday']."</tuesday>\n";
echo '<wednesday>'.$item['wednesday']."</wednesday>\n";
echo '<thursday>'.$item['thursday']."</thursday>\n";
echo '<friday>'.$item['friday']."</friday>\n";
echo '<saturday>'.$item['saturday']."</saturday>\n";
echo '<sunday>'.$item['sunday']."</sunday>\n";
echo '<time_from>'.$item['time_from']."</time_from>\n";
echo '<time_to>'.$item['time_to']."</time_to>\n";
$slas = db_get_all_rows_field_filter('treport_content_sla_combined', 'id_report_content', $item['id_rc']);
if ($slas === false) {
$slas = [];
}
foreach ($slas as $sla) {
$module = db_get_value('nombre', 'tagente_modulo', 'id_agente_modulo', $sla['id_agent_module']);
$id_agent = db_get_value('id_agente', 'tagente_modulo', 'id_agente_modulo', $sla['id_agent_module']);
$agent = db_get_value('alias', 'tagente', 'id_agente', $item['id_agent']);
echo '<sla>';
echo '<agent><![CDATA['.$agent."]]></agent>\n";
echo '<module><![CDATA['.io_safe_output($module)."]]></module>\n";
echo '<sla_max>'.$sla['sla_max']."</sla_max>\n";
echo '<sla_min>'.$sla['sla_min']."</sla_min>\n";
echo '<sla_limit>'.$sla['sla_limit']."</sla_limit>\n";
echo '</sla>';
}
break;
case 'text':
echo '<text><![CDATA['.io_safe_output($item['text'])."]]></text>\n";
break;
case 'sql':
echo '<header_definition><![CDATA['.io_safe_output($item['header_definition'])."]]></header_definition>\n";
if (!empty($item['external_source'])) {
echo '<sql><![CDATA['.io_safe_output($item['external_source'])."]]></sql>\n";
} else {
$sql = db_get_value('sql', 'treport_custom_sql', 'id', $item['treport_custom_sql_id']);
echo '<sql>'.io_safe_output($sql)."</sql>\n";
}
break;
case 'sql_graph_pie':
case 'sql_graph_vbar':
case 'sql_graph_hbar':
echo '<header_definition>'.io_safe_output($item['header_definition'])."</header_definition>\n";
if (!empty($item['external_source'])) {
echo '<sql>'.io_safe_output($item['external_source'])."</sql>\n";
} else {
$sql = db_get_value('sql', 'treport_custom_sql', 'id', $item['treport_custom_sql_id']);
echo '<sql>'.io_safe_output($sql)."</sql>\n";
}
break;
case 'event_report_group':
$group = db_get_value('nombre', 'tgrupo', 'id_grupo', $item['id_agent']);
echo '<group><![CDATA['.io_safe_output($group)."]]></group>\n";
break;
case 'url':
echo '<url><![CDATA['.io_safe_output($values['external_source']).']]></url>';
break;
case 'database_serialized':
echo '<header_definition><![CDATA['.io_safe_output($item['header_definition']).']]></header_definition>';
echo '<line_separator><![CDATA['.io_safe_output($item['line_separator']).']]></line_separator>';
echo '<column_separator><![CDATA['.io_safe_output($item['header_definition']).']]></column_separator>';
break;
case 1:
case 'simple_graph':
case 'simple_baseline_graph':
case 6:
case 'monitor_report':
case 7:
case 'avg_value':
case 8:
case 'max_value':
case 9:
case 'min_value':
case 10:
case 'sumatory':
case 'agent_detailed_event':
case 'event_report_agent':
case 'event_report_module':
case 'alert_report_module':
case 'alert_report_agent':
case 'alert_report_group':
default:
// Do nothing.
break;
}
echo "</item>\n";
}
echo "</report>\n";
}
function output_xml_visual_console($id)
{
$visual_map = db_get_row('tlayout', 'id', $id);
echo '<?xml version="1.0" encoding="UTF-8" ?>'."\n";
echo "<visual_map>\n";
echo '<name><![CDATA['.io_safe_output($visual_map['name'])."]]></name>\n";
if ($visual_map['id_group'] != 0) {
$group = db_get_value('nombre', 'tgrupo', 'id_grupo', $visual_map['id_group']);
echo '<group><![CDATA['.io_safe_output($group)."]]></group>\n";
}
echo '<background><![CDATA['.io_safe_output($visual_map['background'])."]]></background>\n";
echo '<height>'.io_safe_output($visual_map['height'])."</height>\n";
echo '<width>'.io_safe_output($visual_map['width'])."</width>\n";
$items = db_get_all_rows_field_filter('tlayout_data', 'id_layout', $visual_map['id']);
if ($items === false) {
$items = [];
}
foreach ($items as $item) {
echo "<item>\n";
echo '<other_id>'.$item['id']."</other_id>\n";
// OLD ID USE FOR parent item
$agent = '';
if ($item['id_agent'] != 0) {
$agent = db_get_value('nombre', 'tagente', 'id_agente', $item['id_agent']);
}
if (!empty($item['label'])) {
echo '<label><![CDATA['.io_safe_output($item['label'])."]]></label>\n";
}
echo '<x>'.$item['pos_x']."</x>\n";
echo '<y>'.$item['pos_y']."</y>\n";
echo '<type>'.$item['type']."</type>\n";
if ($item['width'] != 0) {
echo '<width>'.$item['width']."</width>\n";
}
if ($item['height'] != 0) {
echo '<height>'.$item['height']."</height>\n";
}
if (!empty($item['image'])) {
echo '<image>'.$item['image']."</image>\n";
}
if ($item['period'] != 0) {
echo '<period>'.$item['period']."</period>\n";
}
if (isset($item['id_agente_modulo'])) {
if ($item['id_agente_modulo'] != 0) {
$module = db_get_value('nombre', 'tagente_modulo', 'id_agente_modulo', $item['id_agente_modulo']);
$id_agent = db_get_value('id_agente', 'tagente_modulo', 'id_agente_modulo', $item['id_agente_modulo']);
$agent = db_get_value('nombre', 'tagente', 'id_agente', $id_agent);
echo '<module><![CDATA['.io_safe_output($module)."]]></module>\n";
}
}
if (!empty($agent)) {
echo '<agent><![CDATA['.$agent."]]></agent>\n";
}
if ($item['id_layout_linked'] != 0) {
echo '<id_layout_linked>'.$item['id_layout_linked']."</id_layout_linked>\n";
}
if ($item['parent_item'] != 0) {
echo '<parent_item>'.$item['parent_item']."</parent_item>\n";
}
if (!empty($item['clock_animation'])) {
echo '<clock_animation>'.$item['clock_animation']."</clock_animation>\n";
}
if (!empty($item['fill_color'])) {
echo '<fill_color>'.$item['fill_color']."</fill_color>\n";
}
if (!empty($item['type_graph'])) {
echo '<type_graph>'.$item['type_graph']."</type_graph>\n";
}
if (!empty($item['time_format'])) {
echo '<time_format>'.$item['time_format']."</time_format>\n";
}
if (!empty($item['timezone'])) {
echo '<timezone>'.$item['timezone']."</timezone>\n";
}
if (!empty($item['border_width'])) {
echo '<border_width>'.$item['border_width']."</border_width>\n";
}
if (!empty($item['border_color'])) {
echo '<border_color>'.$item['border_color']."</border_color>\n";
}
echo "</item>\n";
}
echo "</visual_map>\n";
}
function get_name_xml_resource($hook_enterprise)
{
global $config;
$type = get_parameter('type');
$id = (int) get_parameter('id');
switch ($type) {
case 'report':
$name = db_get_value('name', 'treport', 'id_report', $id);
break;
case 'visual_console':
$name = db_get_value('name', 'tlayout', 'id', $id);
break;
default:
if ($hook_enterprise === true) {
return enterprise_get_name_xml_resource($type, $id);
}
break;
}
$file = io_safe_output($name).'.ptr';
return $file;
}
function get_xml_resource()
{
global $config;
$hook_enterprise = enterprise_include('extensions/resource_exportation/functions.php');
}
function resource_exportation_extension_main()
{
global $config;
check_login();
if (! check_acl($config['id_user'], 0, 'PM') && ! is_user_admin($config['id_user'])) {
db_pandora_audit(
AUDIT_LOG_ACL_VIOLATION,
'Trying to access Setup Management'
);
include 'general/noaccess.php';
return;
}
$hook_enterprise = enterprise_include('extensions/resource_exportation/functions.php');
ui_print_standard_header(
__('Resource exportation'),
'images/extensions.png',
false,
'',
true,
[],
[
[
'link' => '',
'label' => __('Resources'),
],
[
'link' => '',
'label' => __('Resource exporting'),
],
]
);
ui_print_warning_message(
__('This extension makes exportation of resource template more easy.').'<br>'.__('You can export resource templates in .ptr format.')
);
$table = new stdClass();
$table->class = 'databox filter-table-adv';
$table->id = 'resource_exportation_table';
$table->style = [];
$table->style[0] = 'width: 30%';
$table->style[1] = 'vertical-align: bottom;';
$table->data = [];
$table->data[0][] = html_print_label_input_block(
__('Report'),
html_print_div(
[
'class' => 'flex-content-left',
'content' => html_print_select_from_sql('SELECT id_report, name FROM treport', 'report', '', '', '', 0, true),
],
true
)
);
$table->data[0][] = html_print_button(__('Export'), '', false, 'export_to_ptr("report");', '', true);
$table->data[1][] = html_print_label_input_block(
__('Visual console'),
html_print_div(
[
'class' => 'flex-content-left',
'content' => html_print_select_from_sql('SELECT id, name FROM tlayout', 'visual_console', '', '', '', 0, true),
],
true
)
);
$table->data[1][] = html_print_button(__('Export'), '', false, 'export_to_ptr("visual_console");', '', true);
if ($hook_enterprise === true) {
add_rows_for_enterprise($table->data);
}
html_print_table($table);
?>
<script type="text/javascript">
function export_to_ptr(type) {
id = $("select#" + type + " option:selected").val();
url = location.href.split('index');
if (type == "policy") {
var include_agents = $("#checkbox-export_agents").prop("checked")
url = url[0] + 'extensions/resource_exportation.php?get_ptr=1&type=' + type
+ '&id=' + id + '&include_agents=' + include_agents;
}
else {
url = url[0] + 'extensions/resource_exportation.php?get_ptr=1&type=' + type
+ '&id=' + id;
}
location.href=url;
}
</script>
<?php
}

File diff suppressed because it is too large Load Diff

View File

@ -1736,3 +1736,5 @@ extensions/files_repo/sql/files_repo.oracle.sql
extensions/files_repo/sql/files_repo.postgreSQL.sql
extensions/files_repo/sql/files_repo.sql
extensions/files_repo
extensions/resource_exportation.php
extensions/resource_registration.php

View File

@ -208,6 +208,9 @@ if ($access_console_node === true) {
$sub['godmode/setup/os']['text'] = __('Operating systems');
$sub['godmode/setup/os']['id'] = 'edit_OS';
$sub['godmode/resources/resources_export_import']['text'] = __('Resources export/import');
$sub['godmode/resources/resources_export_import']['id'] = 'resources_export_import';
}
if ((bool) check_acl($config['id_user'], 0, 'AW') === true) {

View File

@ -0,0 +1,404 @@
<?php
/**
* Server list view.
*
* @category Server
* @package Pandora FMS
* @subpackage Community
* @version 1.0.0
* @license See below
*
* ______ ___ _______ _______ ________
* | __ \.-----.--.--.--| |.-----.----.-----. | ___| | | __|
* | __/| _ | | _ || _ | _| _ | | ___| |__ |
* |___| |___._|__|__|_____||_____|__| |___._| |___| |__|_|__|_______|
*
* ============================================================================
* Copyright (c) 2005-2024 Pandora FMS
* Please see https://pandorafms.com/community/ for full contribution list
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation for version 2.
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
* ============================================================================
*/
// Load global vars.
global $config;
check_login();
if (check_acl($config['id_user'], 0, 'PM') === false) {
db_pandora_audit(
AUDIT_LOG_ACL_VIOLATION,
'Trying to access resources exportation and importation'
);
include 'general/noaccess.php';
exit;
}
require_once $config['homedir'].'/include/class/Prd.class.php';
// Instance of the prd class.
$prd = new Prd();
$msg = '';
if (isset($_FILES['resource_import']) === true) {
if (empty($_FILES['resource_import']['tmp_name']) === false) {
$data = parse_ini_file($_FILES['resource_import']['tmp_name'], true);
if ($data !== false) {
if (isset($data['prd_data']['name']) === true
&& isset($data['prd_data']['type']) === true
) {
$name = $data['prd_data']['name'];
$type = $data['prd_data']['type'];
}
$msg = $prd->importPrd($data);
} else {
$msg = [
'status' => false,
'items' => [],
'errors' => ['Unexpected error: Unable to parse PRD file.'],
];
}
} else {
$msg = [
'status' => false,
'items' => [],
'errors' => ['No files have selected'],
];
}
}
$msg = json_encode($msg);
echo '<div class="div-import-export">';
// Import section.
$label_import = html_print_label(
__('Import resources to').' '.get_product_name(),
'label_import',
true,
['style' => 'font-size: 13px; line-height: 16px'],
);
$div_label_import = html_print_div(
[
'style' => 'padding-bottom: 20px;',
'content' => $label_import,
],
true
);
$input_file = '<input class="input-file-style" style="padding-top: 1px; width: 100%;" type="file" value name="resource_import" id="file-resource_import" >';
$div_input_file = html_print_div(
[
'style' => 'padding-top: 20px;display: flex; justify-content: left;width:100%; height: 60px;',
'content' => $input_file,
],
true
);
$button_import = html_print_submit_button(
__('Import'),
'upload',
false,
[
'icon' => 'import',
'class' => 'disabled',
'disabled' => '',
],
true
);
$div_button_import = html_print_div(
[
'style' => 'padding-bottom: 20px',
'content' => $button_import,
],
true
);
$div_import = html_print_div(
[
'style' => 'width: 80%',
'content' => $div_label_import.$div_input_file.$div_button_import,
],
true
);
$img_import = html_print_image(
'images/import_to.svg',
true,
[
'border' => '0',
'width' => '100%',
]
);
$div_img_import = html_print_div(
[
'style' => 'margin-left: 40px; margin-right: 20px',
'content' => $img_import,
],
true
);
echo '<form class="form-import" name="submit_import" method="POST" enctype="multipart/form-data">';
echo html_print_div(
[
'class' => 'div-import',
'content' => $div_import.$div_img_import,
],
true
);
echo '</form>';
// Export section.
$label_export = html_print_label(
__('Export resources from').' '.get_product_name(),
'label_export',
true,
['style' => 'font-size: 13px; line-height: 16px'],
);
$div_label_export = html_print_div(
[
'style' => 'padding-bottom: 20px',
'content' => $label_export,
],
true
);
$export_type = $prd->getTypesPrd();
$select_export_type = html_print_label_input_block(
__('Export type'),
html_print_select(
$export_type,
'export_type',
'',
'',
__('None'),
0,
true,
false,
true,
'w90p'
),
['div_style' => 'display: flex; flex-direction: column; width: 50%'],
);
$div_select_export = html_print_div(
[
'id' => 'div_select_export',
'style' => 'padding-bottom: 20px;display: flex; flex-direction: row; height: 60px',
'content' => $select_export_type,
],
true
);
$button_export = html_print_button(
__('Export'),
'export_button',
false,
'',
[
'class' => 'flex_justify disabled',
'icon' => 'export',
'disabled' => '',
],
true
);
$div_button_export = html_print_div(
[
'style' => '',
'content' => $button_export,
],
true
);
$div_export = html_print_div(
[
'style' => 'padding-bottom: 20px; width: 80%',
'content' => $div_label_export.$div_select_export.$div_button_export,
],
true
);
$img_export = html_print_image(
'images/export_to.svg',
true,
[
'border' => '0',
'width' => '100%',
]
);
$div_img_export = html_print_div(
[
'style' => 'margin-left: 40px; margin-right: 20px',
'content' => $img_export,
],
true
);
echo html_print_div(
[
'class' => 'div-export',
'content' => $div_export.$div_img_export,
],
true
);
echo '</div>';
?>
<script type="text/javascript">
let msg = <?php echo $msg; ?>;
if (typeof msg === 'object' && Object.keys(msg).length > 0) {
let title = "";
let message = "";
if (msg.status === true) {
title = "<?php echo __('Importation successfully completed'); ?>";
message = "<?php echo __('PRD import successfull:'); ?>";
const name = "<?php echo $name; ?>";
const type = "<?php echo $type; ?>";
message += ` ${type} - ${name}`;
} else {
title = "<?php echo __('Import failure'); ?>";
Object.entries(msg.errors).forEach(([key, value]) => {
message += value + "<br>";
});
}
if (typeof msg.info === 'object' && Object.keys(msg.info).length > 0) {
message += "<br><br>";
Object.entries(msg.info).forEach(([key, value]) => {
message += value + "<br>";
});
}
confirmDialog({
title: title,
message: message,
hideCancelButton: true
},
"ResultDialog"
);
}
$('input[type="file"]').change(function() {
console.log($(this).val());
if ($(this).val() === '') {
$("#button-upload").addClass("disabled");
$('#button-upload').prop('disabled', true);
} else {
$("#button-upload").removeClass("disabled");
$('#button-upload').prop('disabled', false);
}
});
$("#export_type").change(function(e) {
if ($(this).val() === '0') {
$("#resource_type").remove();
$("#button-export_button").addClass("disabled");
$('#button-export_button').prop('disabled', true);
} else {
$.ajax({
type: "GET",
url: "ajax.php",
dataType: "html",
data: {
page: 'include/ajax/resources.ajax',
getResource: 1,
type: $(this).val(),
},
success: function(data) {
$("#resource_type").remove();
$("#div_select_export").append(`${data}`);
$('#select_value').select2();
$("#button-export_button").removeClass("disabled");
$('#button-export_button').prop('disabled', false);
},
error: function(data) {
console.error("Fatal error in AJAX call to interpreter order", data)
}
});
}
});
$("#button-export_button").click(function(e) {
const value = $("#select_value").val();
if (value !== '0') {
//Show dialog.
confirmDialog({
title: "<?php echo __('Exporting resource'); ?>",
message: "<?php echo __('Exporting resource and downloading, please wait'); ?>",
hideCancelButton: true
},
"downloadDialog"
);
const filename = '<?php echo uniqid().'.prd'; ?>';
$.ajax({
type: "GET",
url: "ajax.php",
dataType: 'json',
data: {
page: 'include/ajax/resources.ajax',
exportPrd: 1,
type: $("#export_type").val(),
value: value,
name: $("#select_value option:selected").text(),
filename: filename
},
success: function(data) {
if (data.error === -1 || data.error === -2) {
console.error("Failed to create file");
$("#confirm_downloadDialog").dialog("close");
} else {
let a = document.createElement('a');
const url = '<?php echo $config['homeurl'].'/attachment/'; ?>' + filename;
a.href = url;
a.download = data.name_download;
a.click();
setTimeout(() => {
$.ajax({
type: "DELETE",
url: "ajax.php",
data: {
page: 'include/ajax/resources.ajax',
deleteFile: 1,
filename: filename,
},
});
$("#confirm_downloadDialog").dialog("close");
}, 3000);
}
},
error: function(data) {
console.error("Fatal error in AJAX call to interpreter order", data);
$.ajax({
type: "DELETE",
url: "ajax.php",
data: {
page: 'include/ajax/resources.ajax',
deleteFile: 1,
filename: filename,
},
});
$("#confirm_downloadDialog").dialog("close");
}
});
}
});
</script>

View File

@ -0,0 +1,18 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg width="14px" height="14px" viewBox="0 0 14 14" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<title>E1DA0B54-BDFA-427E-9BFB-1315DFA5936F</title>
<g id="Import-/-Export" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
<g id="Mockup---Import-&amp;-Export-expandido-1300" transform="translate(-406, -540)" fill="#FFFFFF" fill-rule="nonzero">
<g id="Right" transform="translate(310, 380)">
<g id="Group" transform="translate(20, 63)">
<g id="Acciones" transform="translate(0, 83)">
<g id="Export-Copy" transform="translate(76, 13.999)">
<path d="M13,7.00200086 C13.5522847,7.00200086 14,7.44971619 14,8.00200086 L14,13.0020009 C14,13.5542875 13.5522847,14.0020009 13,14.0020009 L1,14.0020009 C0.44771525,14.0020009 0,13.5542875 0,13.0020009 L0,8.00201259 C0,7.44972773 0.44771525,7.00200086 1,7.00200086 C1.55228475,7.00200086 2,7.44973046 2,8.00201532 L2,12.0020009 L12,12.0020009 L12,8.00200086 C12,7.48917088 12.3860402,7.06649675 12.8833789,7.00873163 L13,7.00200086 Z" id="Path-2"></path>
<path d="M7.42761656,0.098000218 L7.4722276,0.120228468 C7.48541492,0.127297151 7.4984771,0.134682814 7.51140295,0.142385459 C7.6034078,0.196864662 7.68458638,0.263207322 7.75402558,0.34146022 L8.64094412,1.22873471 C8.69800231,1.28579287 8.75962403,1.34741457 8.82669975,1.41449025 L10.1954614,2.78325124 C10.4003199,2.98810964 10.6267161,3.21450572 10.8776552,3.46544474 L11.4849524,4.07274159 L11.7071068,4.29489588 C12.0976311,4.68541998 12.0976311,5.31858465 11.7071068,5.70910875 C11.3165825,6.09963285 10.6834175,6.09963285 10.2928932,5.70910875 L10.1805423,5.59675789 L9.46344168,4.87965762 C9.21250254,4.62871859 8.98610634,4.40232251 8.78124784,4.19746411 L8,3.416 L8,10.0020035 C8,10.5542882 7.55228475,11.0020034 7,11.0020034 C6.44771525,11.0020034 6,10.5542882 6,10.0020035 L6,3.41600434 L3.70710678,5.70911084 C3.34662282,6.06959476 2.77939176,6.09732429 2.38710056,5.79229943 L2.29289322,5.70911084 C1.90236893,5.31858659 1.90236893,4.68542169 2.29289322,4.29489745 L6.29289322,0.294897937 C6.54710458,0.0406866046 6.87413362,-0.0382890141 7.1738163,0.0164817894 C7.17680504,0.0176633808 7.18016721,0.0182701476 7.18352681,0.0188942086 C7.21466801,0.0243205099 7.24513844,0.0316757505 7.2751983,0.0403969286 C7.28707112,0.0438108231 7.29913038,0.0474948538 7.31113021,0.0514117815 C7.32967787,0.0576595805 7.3480221,0.0642976796 7.3661634,0.0714484962 C7.37897252,0.0762161528 7.39150205,0.0814382808 7.40394259,0.0869264154 L7.42761656,0.098000218 Z" id="Path-4-Copy" transform="translate(7, 5.501) scale(1, -1) translate(-7, -5.501)"></path>
</g>
</g>
</g>
</g>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 2.9 KiB

View File

@ -0,0 +1,25 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg width="111px" height="111px" viewBox="0 0 111 111" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<title>868E520D-AB8E-4FB9-B511-A43C58B7C144</title>
<g id="Import-/-Export" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
<g id="Mockup---Import-&amp;-Export-expandido-1300" transform="translate(-1140, -400)">
<g id="Right" transform="translate(310, 380)">
<g id="Export-to-PFMS" transform="translate(830, 21)">
<g id="Carpeta" transform="translate(50, 0)" fill="#FFFFFF" stroke="#C1CCDC" stroke-linejoin="round">
<path d="M30.24,10.8 C30.24,13.5952941 27.9846,15.8823529 25.2,15.8823529 L12.6,15.8823529 L5.04,15.8823529 C2.256408,15.8823529 0,18.1694118 0,20.9647059 L0,41.2941176 L0,48.9176471 C0,51.7129412 2.2564836,54 5.04,54 L55.44,54 C58.2246,54 60.48,51.7129412 60.48,48.9176471 L60.48,41.2941176 L60.48,15.8823529 C60.48,13.0870588 58.2246,10.8 55.44,10.8 L30.24,10.8 Z" id="Path"></path>
<path d="M5.04,0 C2.256408,0 0,2.28327 0,5.1 L0,17.85 L25.2,17.85 L25.2,20.4 L60.48,20.4 L60.48,7.65 C60.48,4.83327 58.2246,2.55 55.44,2.55 L29.53188,2.55 C28.65996,1.027905 27.0648,0 25.2,0 L5.04,0 Z" id="Path"></path>
<path d="M30.2012804,7.8 C30.2012804,10.4702795 27.9487682,12.6550537 25.1677337,12.6550537 L12.5838668,12.6550537 L5.03354673,12.6550537 C2.25351887,12.6550537 0,14.8398278 0,17.5101073 L0,36.9303219 L0,45.5682628 C0,48.2385423 2.33103356,50.4 5.11098592,50.4 L55.4464533,50.4 C58.2274878,50.4 60.48,48.2152259 60.48,45.5449463 L60.4025608,36.9303219 L60.4025608,12.6550537 C60.4025608,9.98477414 58.1500487,7.8 55.3690141,7.8 L30.2012804,7.8 Z" id="Path"></path>
</g>
<circle id="Oval" fill="#FFFFFF" cx="35" cy="74" r="32"></circle>
<path d="M54.3088808,87.6772425 C52.1910624,89.4538282 49.4009606,90.9797575 46.396587,91.7689771 C43.0303728,92.6582798 39.2495496,92.9008577 35.650332,92.4338784 C28.8630793,91.5566934 22.7682123,87.3527581 18.6666667,83.4113724 C19.1347294,82.3207818 19.2699628,81.9265086 19.7510463,80.8496064 C20.5585631,81.6760766 21.9897067,82.7738481 22.625669,83.2060452 C27.0292053,86.2139212 32.7855321,88.809123 40.4090843,88.3753552 C44.2696313,88.1675595 47.8530869,86.8543627 50.393738,84.850234 C52.8530663,82.9143234 54.9142328,80.131522 54.8683175,76.2630667 C54.8198893,72.1672929 52.7706013,68.8241613 50.5442764,66.5873284 C49.7769642,65.8178561 48.9509442,64.9958739 48.116929,64.389317 C46.7936066,63.4302255 45.3272841,62.687457 43.8481692,61.9841831 C42.3478099,61.2611618 40.8054186,60.5323062 39.0151756,60.1555363 C41.9656386,58.3102838 49.8973493,56.0487668 50.8341601,56.578354 C51.4180393,56.9050824 52.052631,57.4290596 52.5433088,57.8181716 C54.161312,59.093669 55.5481392,60.8882068 56.7296036,62.5510209 C58.4280159,64.9498716 59.8616722,67.7277362 60.3861584,70.8529741 C61.6553417,78.5710349 58.4405798,84.2228078 54.3088808,87.6772425 M7,75.782883 L7,75.7734567 C10.537516,70.0360569 14.6286486,64.8419341 19.4789374,60.4347927 C22.8258824,57.3887174 26.7653177,54.6679645 31.1310245,52.6946485 C31.8627009,52.3539221 32.5749405,51.9357161 33.365151,51.6710899 C34.1446378,51.4069235 34.9625515,51.1418375 35.8012426,50.8588185 C38.9895647,49.7768629 43.3820809,49.228298 46.9044049,49.6333991 C49.5377698,49.9403288 52.1590705,50.7197231 53.9097321,52.1203337 C54.5006586,52.5884301 55.2108874,53.1004393 55.5942636,53.6611894 C55.8138782,53.9853622 56.1228579,54.7344085 55.9490429,55.1808933 C55.7312155,55.7193421 54.9289407,55.7726812 54.2656285,55.7563576 C52.0051392,55.7126748 49.9296356,55.4641422 47.7422023,55.7393443 C44.6354259,56.1313406 42.0677443,57.0238505 39.8503736,57.9830343 C35.16474,59.9869283 31.143759,63.2941812 27.9737568,66.629713 C24.7778387,69.9861665 21.8236532,74.214668 19.4755862,78.5558254 C16.8565196,83.3878402 14.8822219,88.484941 13.2481818,93.8333333 C9.50624318,88.8098036 7.19012417,82.5918924 7,75.782883 M34.9998875,39 C15.6689898,39 0,54.666808 0,73.9997751 C0,93.3298184 15.6689898,109 34.9998875,109 C54.3319099,109 70,93.3298184 70,73.9997751 C70,54.666808 54.3319099,39 34.9998875,39" id="Fill-694" fill="#82B92E"></path>
<g id="Group-2" transform="translate(11, 8.5)" stroke="#C1CCDC" stroke-linecap="round" stroke-linejoin="round" stroke-width="2">
<g id="Group-4">
<polygon id="Triangle" fill="#C1CCDC" transform="translate(31, 5) rotate(90) translate(-31, -5)" points="31 2.5 36 7.5 26 7.5"></polygon>
<path d="M0,39.5 C0,36.5833333 0,33.6666667 0,30.75 C-1.75851975e-15,16.3905965 11.6405965,4.75 26,4.75 L26,4.75 L26,4.75" id="Path-3" stroke-dasharray="2,4"></path>
</g>
</g>
</g>
</g>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 4.9 KiB

View File

@ -0,0 +1,18 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg width="14px" height="14px" viewBox="0 0 14 14" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<title>6AE8E7E7-D5F8-4670-BCBD-08A30E381B8F</title>
<g id="Import-/-Export" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
<g id="Mockup---Import-&amp;-Export-expandido-1300" transform="translate(-408, -309)" fill="#FFFFFF" fill-rule="nonzero">
<g id="Left" transform="translate(310, 150)">
<g id="Group" transform="translate(20, 63)">
<g id="Acciones" transform="translate(0, 83)">
<g id="Import" transform="translate(78, 12.998)">
<path d="M13,7.00200171 C13.5522847,7.00200171 14,7.4497171 14,8.00200171 L14,13.0020017 C14,13.5542892 13.5522847,14.0020017 13,14.0020017 L1,14.0020017 C0.44771525,14.0020017 0,13.5542892 0,13.0020017 L0,8.00201357 C0,7.44972864 0.44771525,7.00200171 1,7.00200171 C1.55228475,7.00200171 2,7.44973137 2,8.00201629 L2,12.0020017 L12,12.0020017 L12,8.00200171 C12,7.4891718 12.3860402,7.06649761 12.8833789,7.00873249 L13,7.00200171 Z" id="Path-2"></path>
<path d="M7.42761656,0.09800023 L7.4722276,0.120228483 C7.48541492,0.127297166 7.4984771,0.134682831 7.51140295,0.142385477 C7.6034078,0.196864686 7.68458638,0.263207354 7.75402558,0.341460261 L8.64094412,1.22873487 C8.69800231,1.28579303 8.75962403,1.34741473 8.82669975,1.41449043 L10.1954614,2.78325158 C10.4003199,2.98811 10.6267161,3.21450611 10.8776552,3.46544517 L11.4849524,4.07274209 L11.7071068,4.2948964 C12.0976311,4.68542055 12.0976311,5.3185853 11.7071068,5.70910945 C11.3165825,6.0996336 10.6834175,6.0996336 10.2928932,5.70910945 L10.1805423,5.59675858 L9.46344168,4.87965821 C9.21250254,4.62871916 8.98610634,4.40232305 8.78124784,4.19746462 L8,3.416 L8,10.0020048 C8,10.5542895 7.55228475,11.0020048 7,11.0020048 C6.44771525,11.0020048 6,10.5542895 6,10.0020048 L6,3.41600475 L3.70710678,5.70911154 C3.34662282,6.0695955 2.77939176,6.09732503 2.38710056,5.79230014 L2.29289322,5.70911154 C1.90236893,5.31858724 1.90236893,4.68542227 2.29289322,4.29489797 L6.29289322,0.294897973 C6.54710458,0.0406866095 6.87413362,-0.0382890188 7.1738163,0.0164817914 C7.17680504,0.017663383 7.18016721,0.0182701498 7.18352681,0.0188942109 C7.21466801,0.0243205129 7.24513844,0.0316757544 7.2751983,0.0403969336 C7.28707112,0.0438108284 7.29913038,0.0474948597 7.31113021,0.0514117877 C7.32967787,0.0576595875 7.3480221,0.0642976875 7.3661634,0.0714485049 C7.37897252,0.0762161621 7.39150205,0.0814382908 7.40394259,0.086926426 L7.42761656,0.09800023 Z" id="Path-4-Copy"></path>
</g>
</g>
</g>
</g>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 2.8 KiB

View File

@ -0,0 +1,24 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg width="111px" height="110px" viewBox="0 0 111 110" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<title>A981FD90-8ED5-4170-8C6A-8F4DFD0DCCD4</title>
<g id="Import-/-Export" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
<g id="Mockup---Import-&amp;-Export-expandido-1300" transform="translate(-1139, -171)">
<g id="Left" transform="translate(310, 150)">
<g id="Import-to-PFMS" transform="translate(830, 21)">
<path d="M96.5504693,41.7233507 C94.7351964,43.2461384 92.3436805,44.5540779 89.7685032,45.2305518 C86.8831767,45.9928112 83.6424711,46.2007351 80.5574274,45.8004672 C74.7397823,45.0485944 69.5156105,41.4452213 66,38.0668907 C66.4011967,37.1320987 66.517111,36.7941502 66.9294683,35.8710912 C67.6216255,36.5794943 68.84832,37.5204413 69.3934306,37.8908959 C73.1678902,40.4690753 78.1018846,42.693534 84.636358,42.321733 C87.9453982,42.1436224 91.0169316,41.0180252 93.1946325,39.3002006 C95.3026282,37.6408486 97.0693424,35.2555903 97.0299864,31.9397715 C96.9884765,28.4291082 95.231944,25.5635668 93.3236655,23.6462815 C92.6659693,22.9867338 91.9579522,22.2821776 91.243082,21.7622717 C90.1088057,20.9401933 88.8519578,20.3035345 87.584145,19.7007283 C86.2981227,19.0809959 84.9760731,18.4562624 83.4415791,18.1333168 C85.9705473,16.5516718 92.7691565,14.6132287 93.5721372,15.0671606 C94.0726051,15.3472135 94.6165408,15.7963368 95.0371218,16.1298614 C96.4239817,17.2231448 97.6126908,18.7613201 98.6253745,20.1865894 C100.081156,22.2427471 101.310005,24.6237739 101.759564,27.3025492 C102.847436,33.9180299 100.091926,38.7624067 96.5504693,41.7233507 M56,31.5281854 L56,31.5201057 C59.0321566,26.6023345 62.5388416,22.1502293 66.696232,18.3726794 C69.565042,15.7617578 72.9417009,13.4296839 76.6837353,11.7382701 C77.3108865,11.446219 77.9213775,11.0877567 78.5987009,10.8609342 C79.2668324,10.6345059 79.9679013,10.4072893 80.6867794,10.1647016 C83.4196269,9.23731103 87.1846408,8.76711259 90.2037756,9.11434212 C92.4609456,9.37742465 94.7077748,10.0454769 96.2083418,11.2460003 C96.7148502,11.6472258 97.3236178,12.0860908 97.6522259,12.5667338 C97.840467,12.8445962 98.1053068,13.4866358 97.9563224,13.8693371 C97.7696133,14.3308647 97.0819491,14.3765839 96.5133958,14.3625923 C94.5758336,14.3251498 92.7968305,14.1121219 90.9218877,14.3480094 C88.2589365,14.6840062 86.0580665,15.4490147 84.1574631,16.2711723 C80.1412057,17.9887957 76.6946506,20.8235839 73.9775058,23.6826111 C71.2381475,26.5595713 68.7059884,30.1840012 66.6933596,33.9049932 C64.4484454,38.0467202 62.7561902,42.4156638 61.3555844,47 C58.1482084,42.6941174 56.1629636,37.3644792 56,31.5281854 M79.9999036,0 C63.4305627,0 50,13.4286926 50,29.9998072 C50,46.5684158 63.4305627,60 79.9999036,60 C96.5702085,60 110,46.5684158 110,29.9998072 C110,13.4286926 96.5702085,0 79.9999036,0" id="Fill-694" fill="#82B92E"></path>
<g id="Carpeta" transform="translate(0, 39)" fill="#FFFFFF" stroke="#C1CCDC" stroke-linejoin="round">
<path d="M39,14 C39,17.6235294 36.09125,20.5882353 32.5,20.5882353 L16.25,20.5882353 L6.5,20.5882353 C2.91005,20.5882353 0,23.5529412 0,27.1764706 L0,53.5294118 L0,63.4117647 C0,67.0352941 2.9101475,70 6.5,70 L71.5,70 C75.09125,70 78,67.0352941 78,63.4117647 L78,53.5294118 L78,20.5882353 C78,16.9647059 75.09125,14 71.5,14 L39,14 Z" id="Path"></path>
<path d="M6.5,0 C2.91005,0 0,2.95979444 0,6.61111111 L0,23.1388889 L32.5,23.1388889 L32.5,26.4444444 L78,26.4444444 L78,9.91666667 C78,6.26535 75.09125,3.30555556 71.5,3.30555556 L38.08675,3.30555556 C36.96225,1.33246944 34.905,0 32.5,0 L6.5,0 Z" id="Path"></path>
<path d="M38.950064,10.1111111 C38.950064,13.5725845 36.0450384,16.4046992 32.4583867,16.4046992 L16.2291933,16.4046992 L6.49167734,16.4046992 C2.90632394,16.4046992 0,19.2368138 0,22.6982872 L0,47.8726395 L0,59.0699703 C0,62.5314438 3.00629328,65.3333333 6.5915493,65.3333333 L71.5083227,65.3333333 C75.0949744,65.3333333 78,62.5012187 78,59.0397453 L77.900128,47.8726395 L77.900128,16.4046992 C77.900128,12.9432257 74.9951024,10.1111111 71.4084507,10.1111111 L38.950064,10.1111111 Z" id="Path"></path>
</g>
<g id="Group-2" transform="translate(11, 8.5)" stroke="#C1CCDC" stroke-linecap="round" stroke-linejoin="round" stroke-width="2">
<g id="Group-4">
<polygon id="Triangle" fill="#C1CCDC" transform="translate(31, 5) rotate(90) translate(-31, -5)" points="31 2.5 36 7.5 26 7.5"></polygon>
<path d="M0,39.5 C0,36.5833333 0,33.6666667 0,30.75 C-1.75851975e-15,16.3905965 11.6405965,4.75 26,4.75 L26,4.75 L26,4.75" id="Path-3" stroke-dasharray="2,4"></path>
</g>
</g>
</g>
</g>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 4.9 KiB

View File

@ -0,0 +1,115 @@
<?php
/**
* Pandora FMS- https://pandorafms.com.
* ==================================================
* Copyright (c) 2005-2023 Pandora FMS
* Please see https://pandorafms.com/community/ for full contribution list
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public License
* as published by the Free Software Foundation; version 2
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*/
global $config;
if ((bool) is_ajax() === true) {
include_once $config['homedir'].'/include/class/Prd.class.php';
$getResource = (bool) get_parameter('getResource', false);
$exportPrd = (bool) get_parameter('exportPrd', false);
$deleteFile = (bool) get_parameter('deleteFile', false);
$prd = new Prd();
if ($getResource === true) {
$type = (string) get_parameter('type', '');
$result = false;
$data = $prd->getOnePrdData($type);
if (empty($data) === false) {
$sql = sprintf(
'SELECT %s FROM %s',
reset($data['items']['value']).', '.reset($data['items']['show']),
$data['items']['table']
);
$result = html_print_label_input_block(
$data['label'],
io_safe_output(
html_print_select_from_sql(
$sql,
'select_value',
'',
'',
'',
0,
true,
false,
true,
false,
false,
false,
GENERIC_SIZE_TEXT,
'w90p',
),
),
[
'div_style' => 'display: flex; flex-direction: column; width: 50%',
'div_id' => 'resource_type',
],
);
}
echo $result;
return;
}
if ($exportPrd === true) {
$type = (string) get_parameter('type', '');
$value = (int) get_parameter('value', 0);
$name = (string) get_parameter('name', '');
$filename = (string) get_parameter('filename', '');
try {
$data = $prd->exportPrd($type, $value, $name);
} catch (\Exception $e) {
$data = '';
}
$return = [];
if (empty($data) === false) {
$filename_download = date('YmdHis').'-'.$type.'-'.$name.'.prd';
$file = $config['attachment_store'].'/'.$filename;
$file_pointer = fopen($file, 'a');
if ($file_pointer !== false) {
$write = fwrite($file_pointer, $data);
if ($write === false) {
$return['error'] = -2;
unlink($config['attachment_store'].'/'.$filename);
} else {
$return['name'] = $filename;
$return['name_download'] = $filename_download;
}
fclose($file_pointer);
} else {
$return['error'] = -1;
}
}
echo json_encode($return);
return;
}
if ($deleteFile === true) {
$filename = (string) get_parameter('filename', '');
unlink($config['attachment_store'].'/'.$filename);
}
}

File diff suppressed because it is too large Load Diff

View File

@ -907,3 +907,6 @@ define('DEMO_SERVICE', 6);
define('DEMO_DASHBOARD', 7);
define('DEMO_VISUAL_CONSOLE', 8);
define('DEMO_PLUGIN', 9);
// Export resources.
define('LINE_BREAK', "\n");

View File

@ -1266,7 +1266,7 @@ class Manager implements PublicLogin
}
if (empty($cells) === false) {
$result = array_reduce(
$result = array_values(array_reduce(
$cells,
function ($carry, $item) {
$carry[$item['order']]['id'] = $item['id'];
@ -1276,7 +1276,7 @@ class Manager implements PublicLogin
return $carry;
},
[]
);
));
}
echo json_encode($result);

View File

@ -10954,6 +10954,18 @@ div.status_dot {
-webkit-mask: url(../../images/status_dot.svg) no-repeat center / contain;
}
button div.import {
mask: url(../../images/import.svg) no-repeat center / contain;
-webkit-mask: url(../../images/import.svg) no-repeat center / contain;
height: 1.5rem;
}
button div.export {
mask: url(../../images/export.svg) no-repeat center / contain;
-webkit-mask: url(../../images/export.svg) no-repeat center / contain;
height: 1.5rem;
}
.status_dot.ok {
background-color: #82b92e;
}
@ -13504,3 +13516,71 @@ tr.shown td.details-control {
mask: url(../../images/minimizar.svg) no-repeat right / contain;
-webkit-mask: url(../../images/minimizar.svg) no-repeat right / contain;
}
/* Import/export */
.div-import-export {
display: flex;
flex-direction: row;
}
.form-import {
width: 48%;
height: auto;
margin-right: 40px;
}
.div-import {
background-color: #ffffff;
border: 1px solid #e5e9ed;
border-radius: 8px;
width: 100%;
height: 180px;
display: flex;
flex-direction: row;
align-items: normal;
padding-top: 20px;
padding-left: 20px;
margin-bottom: 20px;
}
.div-export {
background-color: #ffffff;
border: 1px solid #e5e9ed;
border-radius: 8px;
width: 48%;
height: 180px;
display: flex;
flex-direction: row;
align-items: normal;
padding-top: 20px;
padding-left: 20px;
margin-bottom: 20px;
}
@media (max-width: 1300px) {
.div-import-export {
display: flex;
flex-direction: column;
}
.div-export {
width: calc(100% - 20px);
}
.form-import {
width: calc(100% - 20px);
}
}
.input-file-style::file-selector-button {
background-color: #ffffff;
border: 1px solid #979797;
border-radius: 4px;
width: 120px;
height: 32px;
}
button.disabled {
background: #c0ccdc !important;
border: 0px;
}