").html(n.find(".ui-tooltip-content").html())).removeAttr("name").find("[name]").removeAttr("name"),i.removeAttr("id").find("[id]").removeAttr("id"),i.appendTo(this.liveRegion),this.options.track&&t&&/^mouse/.test(t.type)?(this._on(this.document,{mousemove:r}),r(t)):n.position(V.extend({of:e},this.options.position)),n.hide(),this._show(n,this.options.show),this.options.track&&this.options.show&&this.options.show.delay&&(o=this.delayedShow=setInterval(function(){n.is(":visible")&&(r(a.of),clearInterval(o))},13)),this._trigger("open",t,{tooltip:n})))},_registerCloseHandlers:function(t,e){var i={keyup:function(t){t.keyCode===V.ui.keyCode.ESCAPE&&((t=V.Event(t)).currentTarget=e[0],this.close(t,!0))}};e[0]!==this.element[0]&&(i.remove=function(){var t=this._find(e);t&&this._removeTooltip(t.tooltip)}),t&&"mouseover"!==t.type||(i.mouseleave="close"),t&&"focusin"!==t.type||(i.focusout="close"),this._on(!0,e,i)},close:function(t){var e,i=this,s=V(t?t.currentTarget:this.element),n=this._find(s);n?(e=n.tooltip,n.closing||(clearInterval(this.delayedShow),s.data("ui-tooltip-title")&&!s.attr("title")&&s.attr("title",s.data("ui-tooltip-title")),this._removeDescribedBy(s),n.hiding=!0,e.stop(!0),this._hide(e,this.options.hide,function(){i._removeTooltip(V(this))}),s.removeData("ui-tooltip-open"),this._off(s,"mouseleave focusout keyup"),s[0]!==this.element[0]&&this._off(s,"remove"),this._off(this.document,"mousemove"),t&&"mouseleave"===t.type&&V.each(this.parents,function(t,e){V(e.element).attr("title",e.title),delete i.parents[t]}),n.closing=!0,this._trigger("close",t,{tooltip:e}),n.hiding||(n.closing=!1))):s.removeData("ui-tooltip-open")},_tooltip:function(t){var e=V("
").attr("role","tooltip"),i=V("
").appendTo(e),s=e.uniqueId().attr("id");return this._addClass(i,"ui-tooltip-content"),this._addClass(e,"ui-tooltip","ui-widget ui-widget-content"),e.appendTo(this._appendTo(t)),this.tooltips[s]={element:t,tooltip:e}},_find:function(t){t=t.data("ui-tooltip-id");return t?this.tooltips[t]:null},_removeTooltip:function(t){clearInterval(this.delayedShow),t.remove(),delete this.tooltips[t.attr("id")]},_appendTo:function(t){t=t.closest(".ui-front, dialog");return t=!t.length?this.document[0].body:t},_destroy:function(){var s=this;V.each(this.tooltips,function(t,e){var i=V.Event("blur"),e=e.element;i.target=i.currentTarget=e[0],s.close(i,!0),V("#"+t).remove(),e.data("ui-tooltip-title")&&(e.attr("title")||e.attr("title",e.data("ui-tooltip-title")),e.removeData("ui-tooltip-title"))}),this.liveRegion.remove()}}),!1!==V.uiBackCompat&&V.widget("ui.tooltip",V.ui.tooltip,{options:{tooltipClass:null},_tooltip:function(){var t=this._superApply(arguments);return this.options.tooltipClass&&t.tooltip.addClass(this.options.tooltipClass),t}});V.ui.tooltip});
\ No newline at end of file
diff --git a/pandora_console/include/javascript/pandora_dashboards.js b/pandora_console/include/javascript/pandora_dashboards.js
index 14704b3dca..79fde538b4 100644
--- a/pandora_console/include/javascript/pandora_dashboards.js
+++ b/pandora_console/include/javascript/pandora_dashboards.js
@@ -1613,3 +1613,12 @@ function type_change() {
break;
}
}
+
+// Show/Hide period for projection on agent module graph.
+function show_projection_period() {
+ if ($("#projection_switch").is(":checked")) {
+ $("#div_projection_period").show();
+ } else {
+ $("#div_projection_period").hide();
+ }
+}
diff --git a/pandora_console/include/lib/Dashboard/Widget.php b/pandora_console/include/lib/Dashboard/Widget.php
index b9364fcd31..9bedc71f50 100644
--- a/pandora_console/include/lib/Dashboard/Widget.php
+++ b/pandora_console/include/lib/Dashboard/Widget.php
@@ -416,6 +416,10 @@ class Widget
$className .= '\WuxWidget';
break;
+ case 'inventory':
+ $className .= '\InventoryWidget';
+ break;
+
case 'os_quick_report':
$className .= '\OsQuickReportWidget';
break;
diff --git a/pandora_console/include/lib/Dashboard/Widgets/inventory.php b/pandora_console/include/lib/Dashboard/Widgets/inventory.php
new file mode 100644
index 0000000000..67e527dcf0
--- /dev/null
+++ b/pandora_console/include/lib/Dashboard/Widgets/inventory.php
@@ -0,0 +1,1270 @@
+width = $width;
+
+ // Height.
+ $this->height = $height;
+
+ // Grid Width.
+ $this->gridWidth = $gridWidth;
+
+ // Cell Id.
+ $this->cellId = $cellId;
+
+ // Options.
+ $this->values = $this->decoders($this->getOptionsWidget());
+
+ // Positions.
+ $this->position = $this->getPositionWidget();
+
+ // Page.
+ $this->page = basename(__FILE__);
+
+ // ClassName.
+ $class = new \ReflectionClass($this);
+ $this->className = $class->getShortName();
+
+ // Title.
+ $this->title = __('Inventory');
+
+ // Name.
+ if (empty($this->name) === true) {
+ $this->name = 'inventory';
+ }
+
+ // Must be configured before using.
+ $this->configurationRequired = false;
+ }
+
+
+ /**
+ * Decoders hack for retrocompability.
+ *
+ * @param array $decoder Values.
+ *
+ * @return array Returns the values ​​with the correct key.
+ */
+ public function decoders(array $decoder): array
+ {
+ $values = [];
+ // Retrieve global - common inputs.
+ $values = parent::decoders($decoder);
+
+ if (isset($decoder['agentId']) === true) {
+ $values['agentId'] = $decoder['agentId'];
+ }
+
+ if (isset($decoder['agentAlias']) === true) {
+ $values['agentAlias'] = $decoder['agentAlias'];
+ }
+
+ if (isset($decoder['metaconsoleId']) === true) {
+ $values['metaconsoleId'] = $decoder['metaconsoleId'];
+ }
+
+ if (isset($decoder['inventoryModuleId']) === true) {
+ $values['inventoryModuleId'] = $decoder['inventoryModuleId'];
+ }
+
+ if (isset($decoder['freeSearch']) === true) {
+ $values['freeSearch'] = $decoder['freeSearch'];
+ }
+
+ if (isset($decoder['orderByAgent']) === true) {
+ $values['orderByAgent'] = $decoder['orderByAgent'];
+ }
+
+ if (isset($decoder['idGroup']) === true) {
+ $values['idGroup'] = $decoder['idGroup'];
+ }
+
+ if (isset($decoder['utimestamp']) === true) {
+ $values['utimestamp'] = $decoder['utimestamp'];
+ }
+
+ return $values;
+ }
+
+
+ /**
+ * Generates inputs for form (specific).
+ *
+ * @return array Of inputs.
+ *
+ * @throws Exception On error.
+ */
+ public function getFormInputs(): array
+ {
+ $values = $this->values;
+
+ // Retrieve global - common inputs.
+ $inputs = parent::getFormInputs();
+
+ // Format Data.
+ $inputs[] = [
+ 'label' => __('Order by agent'),
+ 'arguments' => [
+ 'name' => 'order_by_agent',
+ 'type' => 'switch',
+ 'value' => $values['orderByAgent'],
+ ],
+ ];
+
+ $inputs[] = [
+ 'label' => __('Free search'),
+ 'arguments' => [
+ 'name' => 'free_search',
+ 'type' => 'text',
+ 'class' => 'w100p',
+ 'input_class' => 'flex-row',
+ 'value' => $values['freeSearch'],
+ 'return' => true,
+ ],
+ ];
+
+ $inputs[] = [
+ 'label' => __('Group'),
+ 'arguments' => [
+ 'type' => 'select_groups',
+ 'privilege' => 'AR',
+ 'name' => 'id_group',
+ 'selected' => $values['idGroup'],
+ 'nothing_value' => __('All'),
+ 'return' => true,
+ 'multiple' => false,
+ ],
+ ];
+
+ $inputs[] = [
+ 'label' => __('Agent'),
+ 'arguments' => [
+ 'type' => 'autocomplete_agent',
+ 'name' => 'agentAlias',
+ 'id_agent_hidden' => $values['agentId'],
+ 'name_agent_hidden' => 'agentId',
+ 'server_id_hidden' => $values['metaconsoleId'],
+ 'name_server_hidden' => 'metaconsoleId',
+ 'return' => true,
+ 'module_input' => true,
+ 'module_name' => 'moduleId',
+ 'module_none' => false,
+ 'size' => 0,
+ ],
+ ];
+
+ $fields = [];
+
+ array_unshift($fields, __('All'));
+
+ $inputs[] = [
+ 'label' => __('Module'),
+ 'arguments' => [
+ 'name' => 'module_inventory',
+ 'id' => 'module_inventory',
+ 'input_class' => 'flex-row',
+ 'type' => 'select',
+ 'selected' => io_safe_output($values['inventoryModuleId']),
+ 'nothing' => __('Basic info'),
+ 'nothing_value' => 'basic',
+ 'fields' => $fields,
+ 'class' => '',
+ 'return' => true,
+ 'sort' => true,
+ ],
+ ];
+
+ // Agent select.
+ if ($is_metaconsole === false) {
+ $agents = [];
+ $sql = 'SELECT id_agente, nombre FROM tagente';
+ if ($inventory_id_group > 0) {
+ $sql .= ' WHERE id_grupo = '.$inventory_id_group;
+ } else {
+ $user_groups = implode(',', array_keys(users_get_groups($config['id_user'])));
+
+ // Avoid errors if there are no groups.
+ if (empty($user_groups) === true) {
+ $user_groups = '"0"';
+ }
+
+ $sql .= ' WHERE id_grupo IN ('.$user_groups.')';
+ }
+
+ $result = db_get_all_rows_sql($sql);
+ if ($result) {
+ foreach ($result as $row) {
+ $agents[$row['id_agente']] = $row['nombre'];
+ }
+ }
+ }
+
+ // Date filter.
+ if (is_metaconsole() === false) {
+ $inputs[] = [
+ 'label' => \__('Date'),
+ 'arguments' => [
+ 'type' => 'select',
+ 'fields' => [],
+ 'name' => 'utimestamp',
+ 'selected' => $values['utimestamp'],
+ 'return' => true,
+ 'nothing' => \__('Last'),
+ 'nothing_value' => 0,
+ 'class' => 'fullwidth',
+ ],
+ ];
+ }
+
+ return $inputs;
+ }
+
+
+ /**
+ * Get Post for widget.
+ *
+ * @return array
+ */
+ public function getPost():array
+ {
+ // Retrieve global - common inputs.
+ $values = parent::getPost();
+
+ $values['agentId'] = (int) \get_parameter('agentId', 0);
+ $values['metaconsoleId'] = (int) \get_parameter('metaconsoleId', 0);
+ $values['inventoryModuleId'] = io_safe_output(\get_parameter('module_inventory', 'basic'));
+ $values['agentAlias'] = \get_parameter('agentAlias', '');
+ $values['freeSearch'] = (string) \get_parameter('free_search', '');
+ $values['orderByAgent'] = \get_parameter('order_by_agent', 0);
+ $values['idGroup'] = \get_parameter('id_group', 0);
+ $values['utimestamp'] = (int) get_parameter('utimestamp');
+
+ return $values;
+ }
+
+
+ /**
+ * Draw widget.
+ *
+ * @return string;
+ */
+ public function load()
+ {
+ global $config;
+
+ $inventory_id_agent = $this->values['agentId'];
+ $inventory_agent = $this->values['agentAlias'];
+
+ if (strlen($inventory_agent) === 0) {
+ $inventory_id_agent = -1;
+ $inventory_agent = __('All');
+ } else if ($inventory_agent == __('All')) {
+ $inventory_id_agent = 0;
+ }
+
+ $inventory_module = io_safe_input($this->values['inventoryModuleId']);
+
+ $inventory_id_group = (int) $this->values['idGroup'];
+ $inventory_search_string = (string) $this->values['freeSearch'];
+ $order_by_agent = (bool) $this->values['orderByAgent'];
+ $utimestamp = (int) $this->values['utimestamp'];
+
+ $pagination_url_parameters = [
+ 'inventory_id_agent' => $inventory_id_agent,
+ 'inventory_agent' => $inventory_agent,
+ 'inventory_id_group' => $inventory_id_group,
+ ];
+
+ $noFilterSelected = false;
+
+ // Get variables.
+ if (is_metaconsole() === true) {
+ $nodes_connection = metaconsole_get_connections();
+ $id_server = (int) $this->values['metaconsoleId'];
+
+ $pagination_url_parameters['id_server'] = $id_server;
+
+ if ($inventory_id_agent > 0) {
+ $inventory_id_server = (int) get_parameter('id_server_agent', -1);
+ $pagination_url_parameters['inventory_id_server'] = $inventory_id_server;
+
+ if ($inventory_id_server !== -1) {
+ $id_server = $inventory_id_server;
+ $pagination_url_parameters['id_server'] = $id_server;
+ }
+ }
+
+ // No filter selected.
+ $noFilterSelected = $inventory_id_agent === -1 && $inventory_id_group === 0 && $id_server === 0;
+
+ $nodo_image_url = $config['homeurl'].'/images/node.png';
+ if ($id_server > 0) {
+ $connection = metaconsole_get_connection_by_id($id_server);
+ $agents_node = metaconsole_get_agents_servers($connection['server_name'], $inventory_id_group);
+ $node = metaconsole_get_servers($id_server);
+ $nodos = [];
+
+ if (metaconsole_connect($connection) !== NOERR) {
+ ui_print_error_message(
+ __('There was a problem connecting with the node')
+ );
+ }
+
+ $sql = 'SELECT DISTINCT name as indexname, name
+ FROM tmodule_inventory, tagent_module_inventory
+ WHERE tmodule_inventory.id_module_inventory = tagent_module_inventory.id_module_inventory';
+
+ if ($inventory_id_agent > 0) {
+ $sql .= ' AND id_agente = '.$inventory_id_agent;
+ $agents_node = [$inventory_id_agent => $inventory_id_agent];
+ }
+
+ $result_module = db_get_all_rows_sql($sql);
+ // Get the data.
+ $rows_meta = inventory_get_datatable(
+ array_keys($agents_node),
+ $inventory_module,
+ $utimestamp,
+ $inventory_search_string,
+ false,
+ false,
+ $order_by_agent,
+ $server,
+ $pagination_url_parameters
+ );
+
+ $data_tmp['server_name'] = $connection['server_name'];
+ $data_tmp['dbhost'] = $connection['dbhost'];
+ $data_tmp['server_uid'] = $connection['server_uid'];
+ $data_tmp['data'] = $rows_meta;
+
+ $nodos[$connection['id']] = $data_tmp;
+ if ($result_data !== ERR_NODATA) {
+ $inventory_data .= $result_data;
+ }
+
+ // Restore db connection.
+ metaconsole_restore_db();
+ } else {
+ $result_module = [];
+ $nodos = [];
+ foreach ($nodes_connection as $key => $server) {
+ $agents_node = metaconsole_get_agents_servers($server['server_name'], $inventory_id_group);
+ $connection = metaconsole_get_connection($server['server_name']);
+ if (metaconsole_connect($connection) !== NOERR) {
+ continue;
+ }
+
+ $sql = 'SELECT DISTINCT name as indexname, name
+ FROM tmodule_inventory, tagent_module_inventory
+ WHERE tmodule_inventory.id_module_inventory = tagent_module_inventory.id_module_inventory';
+ if ($inventory_id_agent > 0) {
+ $sql .= ' AND id_agente = '.$inventory_id_agent;
+ $agents_node = [$inventory_id_agent => $inventory_id_agent];
+ }
+
+ $result = db_get_all_rows_sql($sql);
+ if ($result !== false) {
+ $result_module = array_merge($result_module, $result);
+ // Get the data.
+ $rows_meta = inventory_get_datatable(
+ array_keys($agents_node),
+ $inventory_module,
+ $utimestamp,
+ $inventory_search_string,
+ false,
+ false,
+ $order_by_agent,
+ $server,
+ $pagination_url_parameters
+ );
+
+ $data_tmp['server_name'] = $server['server_name'];
+ $data_tmp['dbhost'] = $server['dbhost'];
+ $data_tmp['server_uid'] = $server['server_uid'];
+ $data_tmp['data'] = $rows_meta;
+ $nodos[$server['id']] = $data_tmp;
+ if ($result_data !== ERR_NODATA) {
+ $inventory_data .= $result_data;
+ }
+ }
+
+ // Restore db connection.
+ metaconsole_restore_db();
+ }
+ }
+
+ $fields = [];
+ foreach ($result_module as $row) {
+ $id = array_shift($row);
+ $value = array_shift($row);
+ $fields[$id] = $value;
+ }
+ }
+
+ // Agent select.
+ if (is_metaconsole() === false) {
+ $agents = [];
+ $sql = 'SELECT id_agente, nombre FROM tagente';
+ if ($inventory_id_group > 0) {
+ $sql .= ' WHERE id_grupo = '.$inventory_id_group;
+ } else {
+ $user_groups = implode(',', array_keys(users_get_groups($config['id_user'])));
+
+ // Avoid errors if there are no groups.
+ if (empty($user_groups) === true) {
+ $user_groups = '"0"';
+ }
+
+ $sql .= ' WHERE id_grupo IN ('.$user_groups.')';
+ }
+
+ $result = db_get_all_rows_sql($sql);
+ if ($result) {
+ foreach ($result as $row) {
+ $agents[$row['id_agente']] = $row['nombre'];
+ }
+ }
+ }
+
+ $filteringFunction = '';
+ if ($inventory_module !== 'basic') {
+ if (is_metaconsole() === true) {
+ if ($order_by_agent === true) {
+ $count_nodos_tmp = [];
+ foreach ($nodos as $count_value) {
+ array_push($count_nodos_tmp, $count_value['server_name']);
+ }
+
+ $count = array_count_values($count_nodos_tmp);
+
+ foreach ($nodos as $nodo) {
+ $agents = '';
+
+ foreach ($nodo['data'] as $agent_rows) {
+ $modules = '';
+
+ foreach ($agent_rows['row'] as $key => $row) {
+ $columns = explode(';', io_safe_output($row['data_format']));
+ array_push($columns, 'Timestamp');
+ $data = [];
+ $data_rows = explode(PHP_EOL, $row['data']);
+ foreach ($data_rows as $data_row) {
+ // Exclude results don't match filter.
+ if ($inventory_search_string && preg_match('/'.io_safe_output($inventory_search_string).'/', ($data_row)) == 0) {
+ continue;
+ }
+
+ $column_data = explode(';', io_safe_output($data_row));
+
+ if ($column_data[0] !== '') {
+ $row_tmp = [];
+ foreach ($column_data as $key => $value) {
+ $row_tmp[$columns[$key]] = $value;
+ }
+
+ $row_tmp['Timestamp'] = $row['timestamp'];
+ array_push($data, (object) $row_tmp);
+ }
+ }
+
+ $id_table = 'id_'.$row['id_module_inventory'].'_'.$nodo['server_uid'];
+ $table = ui_print_datatable(
+ [
+ 'id' => $id_table,
+ 'class' => 'info_table w100p',
+ 'style' => 'width: 100%',
+ 'columns' => $columns,
+ 'column_names' => $columns,
+ 'no_sortable_columns' => [],
+ 'data_element' => $data,
+ 'searching' => true,
+ 'dom_elements' => 'frtilp',
+ 'order' => [
+ 'field' => $columns[0],
+ 'direction' => 'asc',
+ ],
+ 'zeroRecords' => __('No inventory found'),
+ 'emptyTable' => __('No inventory found'),
+ 'return' => true,
+ 'no_sortable_columns' => [-1],
+ 'csv' => 0,
+ 'mini_pagination' => true,
+ 'mini_search' => true,
+ ]
+ );
+
+ $modules .= ui_toggle(
+ $table,
+ '
'.$row['name'].'',
+ '',
+ '',
+ true,
+ true,
+ '',
+ 'white-box-content w100p',
+ 'box-shadow white_table_graph w100p',
+ 'images/arrow_down_green.png',
+ 'images/arrow_right_green.png',
+ false,
+ false,
+ false,
+ '',
+ '',
+ null,
+ null,
+ false,
+ $id_table
+ );
+ }
+
+ $agents .= ui_toggle(
+ $modules,
+ $agent_rows['agent'],
+ '',
+ '',
+ true,
+ true,
+ '',
+ 'white-box-content w100p',
+ 'box-shadow white_table_graph w100p',
+ );
+ }
+
+ $node_name = $nodo['server_name'];
+ if ($count[$nodo['server_name']] > 1) {
+ $node_name .= ' ('.$nodo['dbhost'].')';
+ }
+
+ ui_toggle(
+ $agents,
+ '
'.$node_name.'',
+ '',
+ '',
+ false,
+ false
+ );
+ }
+ } else {
+ $count_nodos_tmp = [];
+ foreach ($nodos as $count_value) {
+ array_push($count_nodos_tmp, $count_value['server_name']);
+ }
+
+ $count = array_count_values($count_nodos_tmp);
+
+ foreach ($nodos as $nodo_key => $nodo) {
+ $agents = '';
+
+ foreach ($nodo['data'] as $module_key => $module_rows) {
+ $agent = '';
+ $data = [];
+ foreach ($module_rows as $row) {
+ $columns = explode(';', io_safe_output($row['data_format']));
+ array_push($columns, 'Timestamp');
+
+ $data_explode = explode(PHP_EOL, $row['data']);
+ foreach ($data_explode as $values) {
+ // Exclude results don't match filter.
+ if ($inventory_search_string && preg_match('/'.io_safe_output($inventory_search_string).'/', ($values)) == 0) {
+ continue;
+ }
+
+ $data_tmp = [];
+ if ($values !== '') {
+ $values_explode = explode(';', io_safe_output($values));
+
+ foreach ($values_explode as $key => $value) {
+ $data_tmp[$columns[$key]] = $value;
+ }
+
+ $data_tmp['Timestamp'] = $row['timestamp'];
+ array_push($data, $data_tmp);
+ }
+ }
+ }
+
+ $id_table = 'id_'.$row['id_module_inventory'].'_'.$nodo['server_uid'];
+
+ $table = ui_print_datatable(
+ [
+ 'id' => $id_table,
+ 'class' => 'info_table w100p',
+ 'style' => 'width: 100%',
+ 'columns' => $columns,
+ 'column_names' => $columns,
+ 'no_sortable_columns' => [],
+ 'data_element' => $data,
+ 'searching' => true,
+ 'dom_elements' => 'frtilp',
+ 'order' => [
+ 'field' => $columns[0],
+ 'direction' => 'asc',
+ ],
+ 'zeroRecords' => __('No inventory found'),
+ 'emptyTable' => __('No inventory found'),
+ 'return' => true,
+ 'no_sortable_columns' => [-1],
+ 'csv' => 0,
+ 'mini_pagination' => true,
+ 'mini_search' => true,
+ ]
+ );
+
+ $agent .= ui_toggle(
+ $table,
+ '
'.$row['name_agent'].'',
+ '',
+ '',
+ true,
+ true,
+ '',
+ 'white-box-content w100p',
+ 'box-shadow white_table_graph w100p',
+ 'images/arrow_down_green.png',
+ 'images/arrow_right_green.png',
+ false,
+ false,
+ false,
+ '',
+ '',
+ null,
+ null,
+ false,
+ $id_table
+ );
+
+ $agents .= ui_toggle(
+ $agent,
+ $module_key,
+ '',
+ '',
+ true,
+ true,
+ '',
+ 'white-box-content w100p',
+ 'box-shadow white_table_graph w100p',
+ );
+ }
+
+ $node_name = $nodo['server_name'];
+ if ($count[$nodo['server_name']] > 1) {
+ $node_name .= ' ('.$nodo['dbhost'].')';
+ }
+
+ ui_toggle(
+ $agents,
+ '
'.$node_name.'',
+ '',
+ '',
+ false,
+ false
+ );
+ }
+ }
+ } else {
+ // Single agent selected.
+ if ($inventory_id_agent > 0 && isset($agents[$inventory_id_agent]) === true) {
+ $agents = [$inventory_id_agent => $agents[$inventory_id_agent]];
+ }
+
+ $agents_ids = array_keys($agents);
+ if (count($agents_ids) > 0) {
+ $rows = inventory_get_datatable(
+ $agents_ids,
+ $inventory_module,
+ $utimestamp,
+ $inventory_search_string,
+ false,
+ false,
+ $order_by_agent
+ );
+ }
+
+ if (count($agents_ids) === 0 || (int) $rows === ERR_NODATA) {
+ ui_print_info_message(
+ [
+ 'no_close' => true,
+ 'message' => __('No data found.'),
+ ]
+ );
+
+ return;
+ }
+
+ echo "
".html_print_image('images/spinner.gif', true).'
';
+ ?>
+
+ $row) {
+ $data = [];
+ $columns = explode(';', io_safe_output($row['data_format']));
+ array_push($columns, 'Timestamp');
+
+ $data_rows = explode(PHP_EOL, $row['data']);
+ foreach ($data_rows as $data_row) {
+ // Exclude results don't match filter.
+ if ($inventory_search_string && preg_match('/'.io_safe_output($inventory_search_string).'/', ($data_row)) == 0) {
+ continue;
+ }
+
+ $column_data = explode(';', io_safe_output($data_row));
+
+ if ($column_data[0] !== '') {
+ $row_tmp = [];
+ foreach ($column_data as $key => $value) {
+ $row_tmp[$columns[$key]] = $value;
+ }
+
+ $row_tmp['Timestamp'] = $row['timestamp'];
+ array_push($data, (object) $row_tmp);
+ }
+ }
+
+ $id_table = 'id_'.$key_row.'_'.$row['id_module_inventory'].'_'.$row['id_agente'];
+
+ $table = ui_print_datatable(
+ [
+ 'id' => $id_table,
+ 'class' => 'info_table w100p',
+ 'style' => 'width: 100%',
+ 'columns' => $columns,
+ 'column_names' => $columns,
+ 'no_sortable_columns' => [],
+ 'data_element' => $data,
+ 'searching' => true,
+ 'dom_elements' => 'frtilp',
+ 'order' => [
+ 'field' => $columns[0],
+ 'direction' => 'asc',
+ ],
+ 'zeroRecords' => __('No inventory found'),
+ 'emptyTable' => __('No inventory found'),
+ 'return' => true,
+ 'no_sortable_columns' => [-1],
+ 'csv' => 0,
+ 'mini_pagination' => true,
+ 'mini_search' => true,
+ ]
+ );
+
+ $modules .= ui_toggle(
+ $table,
+ '
'.$row['name'].'',
+ '',
+ '',
+ true,
+ true,
+ '',
+ 'white-box-content w100p',
+ 'box-shadow white_table_graph w100p',
+ 'images/arrow_down_green.png',
+ 'images/arrow_right_green.png',
+ false,
+ false,
+ false,
+ '',
+ '',
+ null,
+ null,
+ false,
+ $id_table
+ );
+ }
+
+ ui_toggle(
+ $modules,
+ $agent_rows['agent'],
+ '',
+ '',
+ false,
+ false
+ );
+ }
+ } else {
+ $count_rows = count($rows);
+ foreach ($rows as $module_rows) {
+ $agent = '';
+ $data = [];
+
+ foreach ($module_rows as $row) {
+ $columns = explode(';', io_safe_output($row['data_format']));
+ array_push($columns, 'Timestamp');
+ array_push($columns, 'Agent');
+
+ // Exclude results don't match filter.
+ if ($inventory_search_string && preg_match('/'.io_safe_output($inventory_search_string).'/', ($row['data'])) == 0) {
+ continue;
+ }
+
+ $data_tmp = [];
+ if ($row['data'] !== '') {
+ $values_explode = explode(';', io_safe_output($row['data']));
+
+ foreach ($values_explode as $key => $value) {
+ $data_tmp[$columns[$key]] = $value;
+ }
+
+ $data_tmp['Timestamp'] = $row['timestamp'];
+ $data_tmp['Agent'] = $row['name_agent'];
+ array_push($data, $data_tmp);
+ }
+
+ $id_table = 'id_'.$row['id_module_inventory'];
+ }
+
+ if ($count_rows > 1) {
+ $table = ui_print_datatable(
+ [
+ 'id' => $id_table,
+ 'class' => 'info_table w100p',
+ 'style' => 'width: 100%',
+ 'columns' => $columns,
+ 'column_names' => $columns,
+ 'no_sortable_columns' => [],
+ 'data_element' => $data,
+ 'searching' => true,
+ 'dom_elements' => 'frtilp',
+ 'order' => [
+ 'field' => $columns[0],
+ 'direction' => 'asc',
+ ],
+ 'zeroRecords' => __('No inventory found'),
+ 'emptyTable' => __('No inventory found'),
+ 'return' => true,
+ 'no_sortable_columns' => [],
+ 'mini_search' => true,
+ 'mini_pagination' => true,
+ 'csv' => 0,
+ 'mini_pagination' => true,
+ 'mini_search' => true,
+ ]
+ );
+
+ ui_toggle(
+ $table,
+ array_shift($module_rows)['name'],
+ '',
+ '',
+ false,
+ false
+ );
+ } else {
+ $table = ui_print_datatable(
+ [
+ 'id' => $id_table,
+ 'class' => 'info_table w100p',
+ 'style' => 'width: 100%',
+ 'columns' => $columns,
+ 'column_names' => $columns,
+ 'no_sortable_columns' => [],
+ 'data_element' => $data,
+ 'searching' => true,
+ 'dom_elements' => 'frtilp',
+ 'order' => [
+ 'field' => $columns[0],
+ 'direction' => 'asc',
+ ],
+ 'zeroRecords' => __('No inventory found'),
+ 'emptyTable' => __('No inventory found'),
+ 'csv' => 0,
+ 'mini_pagination' => true,
+ 'mini_search' => true,
+ ]
+ );
+ }
+ }
+ }
+ }
+ } else {
+ $id_agente = $inventory_id_agent;
+ $agentes = [];
+ $data = [];
+ $class = 'info_table w100p';
+ $style = 'width: 100%; font-size: 100px !important;';
+ $ordering = true;
+ $searching = false;
+
+ $columns = [
+ 'alias',
+ 'ip',
+ 'secondoaryIp',
+ 'group',
+ 'secondaryGroups',
+ 'description',
+ 'os',
+ 'interval',
+ 'lastContact',
+ 'lastStatusChange',
+ 'customFields',
+ 'valuesCustomFields',
+ ];
+
+ $columns_names = [
+ __('Alias'),
+ __('IP'),
+ __('Secondary IP'),
+ __('Group'),
+ __('Secondary groups'),
+ __('Description'),
+ __('OS'),
+ __('Interval'),
+ __('Last contact'),
+ __('Last status change'),
+ __('Custom fields'),
+ __('Values Custom Fields'),
+ ];
+
+ ui_print_datatable(
+ [
+ 'id' => 'basic_info',
+ 'class' => $class,
+ 'style' => $style,
+ 'columns' => $columns,
+ 'column_names' => $columns_names,
+ 'ordering' => $ordering,
+ 'dom_elements' => 'frtilp',
+ 'searching' => $searching,
+ 'order' => [
+ 'field' => $columns[0],
+ 'direction' => 'asc',
+ ],
+ 'ajax_url' => 'operation/inventory/inventory',
+ 'ajax_data' => [
+ 'get_data_basic_info' => 1,
+ 'id_agent' => $id_agente,
+ 'id_group' => $inventory_id_group,
+ ],
+ 'zeroRecords' => __('Agent info not found'),
+ 'emptyTable' => __('Agent info not found'),
+ 'return' => false,
+ 'csv' => 0,
+ 'mini_pagination' => true,
+ 'mini_search' => true,
+ ]
+ );
+ echo '
';
+ }
+
+ ui_require_jquery_file('pandora.controls');
+ ui_require_jquery_file('ajaxqueue');
+ ui_require_jquery_file('bgiframe');
+ }
+
+
+ /**
+ * Aux javascript to be run after form load.
+ *
+ * @return string
+ */
+ public function getFormJS(): string
+ {
+ $javascript_ajax_page = ui_get_full_url('ajax.php', false, false, false);
+ $selectbox_id = 'module_inventory';
+
+ return '
+ $(document).ready(function() {
+ if ($("#hidden-agentId").val() < 1) {
+ $("#text-agentAlias").val("'.__('All').'");
+ }
+ getInventoryModules();
+
+ let clickedOnDynamicElement = false;
+
+ $("[id^=\'ui-id-\']").on("click", function() {
+ clickedOnDynamicElement = true;
+ getInventoryModules();
+ });
+
+ $("#text-agentAlias").on("keyup", function(event) {
+ if (!clickedOnDynamicElement || $("#text-agentAlias").val() === "") {
+ getInventoryModules();
+ } else {
+ clickedOnDynamicElement = false;
+ }
+ });
+
+ $("#text-agentAlias").focus(function() {
+ $("#hidden-agentId").val("0");
+ });
+ });
+
+ function getInventoryModules() {
+ const clickedId = $(this).attr(\'id\');
+
+ $("#'.$selectbox_id.'").empty();
+
+ if ($("#hidden-agentId").val() > 0 || $("#text-agentAlias").val() === "'.__('All').'") {
+ $("#module_inventory").enable();
+ var inputs = [];
+ var metaconsoleID = $("#hidden-metaconsoleId").val();
+ if (isNaN(metaconsoleID) === true) {
+ metaconsoleID = 0;
+ }
+ inputs.push("id_agent=" + $("#hidden-agentId").val());
+ inputs.push("get_agent_inventory_modules=1");
+ inputs.push("id_node=" + metaconsoleID);
+ inputs.push("page=operation/agentes/ver_agente");
+
+ jQuery.ajax({
+ data: inputs.join("&"),
+ type: "POST",
+ url: action="'.$javascript_ajax_page.'",
+ dataType: "json",
+ success: function (data) {
+ if (data) {
+ $("#'.$selectbox_id.'").append($("
"));
+ $("#'.$selectbox_id.'").append($("
"));
+ jQuery.each (data, function(id, value) {
+ $("#'.$selectbox_id.'").append($("
"));
+ });
+ $("#'.$selectbox_id.'").val("'.$this->values['inventoryModuleId'].'");
+
+ }
+ }
+ });
+ } else {
+ $("#module_inventory").disable();
+ }
+
+ return false;
+ }
+
+ $("#module_inventory").change(function() {
+ var inputs = [];
+
+ $("#utimestamp").empty();
+ $("#utimestamp").append($("
"));
+
+ inputs.push("module=" + $(this).val());
+ inputs.push("id_agent=" + $("#hidden-agentId").val());
+ inputs.push("id_group=" + $("#id_group").val());
+ inputs.push("get_agent_inventory_dates=1");
+ inputs.push("page=operation/agentes/ver_agente");
+
+ jQuery.ajax({
+ data: inputs.join("&"),
+ type: "POST",
+ url: action="'.$javascript_ajax_page.'",
+ dataType: "json",
+ success: function (data) {
+ if (data) {
+ jQuery.each (data, function(id, value) {
+ $("#utimestamp").append($("
"));
+ });
+ }
+ }
+ });
+ });
+ ';
+ }
+
+
+ /**
+ * Get description.
+ *
+ * @return string.
+ */
+ public static function getDescription()
+ {
+ return __('Inventory');
+ }
+
+
+ /**
+ * Get Name.
+ *
+ * @return string.
+ */
+ public static function getName()
+ {
+ return 'inventory';
+ }
+
+
+ /**
+ * Get size Modal Configuration.
+ *
+ * @return array
+ */
+ public function getSizeModalConfiguration(): array
+ {
+ $size = [
+ 'width' => 450,
+ 'height' => 330,
+ ];
+
+ return $size;
+ }
+
+
+}
diff --git a/pandora_console/include/lib/Dashboard/Widgets/single_graph.php b/pandora_console/include/lib/Dashboard/Widgets/single_graph.php
index 72ad55309b..957159824c 100644
--- a/pandora_console/include/lib/Dashboard/Widgets/single_graph.php
+++ b/pandora_console/include/lib/Dashboard/Widgets/single_graph.php
@@ -269,6 +269,14 @@ class SingleGraphWidget extends Widget
$values['showLegend'] = $decoder['showLegend'];
}
+ if (isset($decoder['projection_switch']) === true) {
+ $values['projection_switch'] = $decoder['projection_switch'];
+ }
+
+ if (isset($decoder['period_projection']) === true) {
+ $values['period_projection'] = $decoder['period_projection'];
+ }
+
return $values;
}
@@ -357,6 +365,33 @@ class SingleGraphWidget extends Widget
],
];
+ // Projection.
+ $inputs[] = [
+ 'label' => __('Projection Graph'),
+ 'arguments' => [
+ 'name' => 'projection_switch',
+ 'id' => 'projection_switch',
+ 'type' => 'switch',
+ 'value' => $values['projection_switch'],
+ 'onclick' => 'show_projection_period()',
+ ],
+ ];
+
+ // Period Projection.
+ $display_projection = ($values['projection_switch'] === true) ? '' : 'display:none';
+ $inputs[] = [
+ 'label' => __('Period Projection'),
+ 'id' => 'div_projection_period',
+ 'style' => $display_projection,
+ 'arguments' => [
+ 'name' => 'period_projection',
+ 'type' => 'interval',
+ 'value' => $values['period_projection'],
+ 'script' => 'check_period_warning(this, \''.__('Warning').'\', \''.__('Displaying items with extended historical data can have an impact on system performance. We do not recommend that you use intervals longer than 30 days, especially if you combine several of them in a report, dashboard or visual console.').'\')',
+ 'script_input' => 'check_period_warning_manual(\'period\', \''.__('Warning').'\', \''.__('Displaying items with extended historical data can have an impact on system performance. We do not recommend that you use intervals longer than 30 days, especially if you combine several of them in a report, dashboard or visual console.').'\')',
+ ],
+ ];
+
return $inputs;
}
@@ -376,6 +411,8 @@ class SingleGraphWidget extends Widget
$values['moduleId'] = \get_parameter('moduleId', 0);
$values['period'] = \get_parameter('period', 0);
$values['showLegend'] = \get_parameter_switch('showLegend');
+ $values['projection_switch'] = (boolean) get_parameter_switch('projection_switch');
+ $values['period_projection'] = \get_parameter('period_projection', 0);
return $values;
}
@@ -405,23 +442,46 @@ class SingleGraphWidget extends Widget
$trickHight = 40;
}
- $params = [
- 'agent_module_id' => $this->values['moduleId'],
- 'width' => '100%',
- 'height' => ((int) $size['height'] - $trickHight),
- 'period' => $this->values['period'],
- 'title' => $module_name,
- 'unit' => $units_name,
- 'homeurl' => $config['homeurl'],
- 'backgroundColor' => 'transparent',
- 'show_legend' => $this->values['showLegend'],
- 'show_title' => $module_name,
- 'menu' => false,
- 'dashboard' => true,
- ];
-
$output = '
';
- $output .= \grafico_modulo_sparse($params);
+ if ($this->values['projection_switch'] === true) {
+ $params_graphic = [
+ 'period' => $this->values['period'],
+ 'date' => strtotime(date('Y-m-d H:i:s')),
+ 'only_image' => false,
+ 'homeurl' => ui_get_full_url(false, false, false, false).'/',
+ 'height' => ((int) $size['height'] - $trickHight),
+ 'landscape' => $content['landscape'],
+ 'return_img_base_64' => true,
+ ];
+
+ $params_combined = [
+ 'projection' => $this->values['period_projection'],
+ ];
+
+ $return['chart'] = graphic_combined_module(
+ [$this->values['moduleId']],
+ $params_graphic,
+ $params_combined
+ );
+ $output .= $return['chart'];
+ } else {
+ $params = [
+ 'agent_module_id' => $this->values['moduleId'],
+ 'width' => '100%',
+ 'height' => ((int) $size['height'] - $trickHight),
+ 'period' => $this->values['period'],
+ 'title' => $module_name,
+ 'unit' => $units_name,
+ 'homeurl' => $config['homeurl'],
+ 'backgroundColor' => 'transparent',
+ 'show_legend' => $this->values['showLegend'],
+ 'show_title' => $module_name,
+ 'menu' => false,
+ 'dashboard' => true,
+ ];
+ $output .= \grafico_modulo_sparse($params);
+ }
+
$output .= '
';
return $output;
}
diff --git a/pandora_console/include/styles/js/jquery-ui.min.css b/pandora_console/include/styles/js/jquery-ui.min.css
index ab54bc6619..1f327c3c22 100644
--- a/pandora_console/include/styles/js/jquery-ui.min.css
+++ b/pandora_console/include/styles/js/jquery-ui.min.css
@@ -4,4 +4,4 @@
* To view and modify this theme, visit http://jqueryui.com/themeroller/?bgShadowXPos=&bgOverlayXPos=&bgErrorXPos=&bgHighlightXPos=&bgContentXPos=&bgHeaderXPos=&bgActiveXPos=&bgHoverXPos=&bgDefaultXPos=&bgShadowYPos=&bgOverlayYPos=&bgErrorYPos=&bgHighlightYPos=&bgContentYPos=&bgHeaderYPos=&bgActiveYPos=&bgHoverYPos=&bgDefaultYPos=&bgShadowRepeat=&bgOverlayRepeat=&bgErrorRepeat=&bgHighlightRepeat=&bgContentRepeat=&bgHeaderRepeat=&bgActiveRepeat=&bgHoverRepeat=&bgDefaultRepeat=&iconsHover=url(%22images%2Fui-icons_555555_256x240.png%22)&iconsHighlight=url(%22images%2Fui-icons_777620_256x240.png%22)&iconsHeader=url(%22images%2Fui-icons_444444_256x240.png%22)&iconsError=url(%22images%2Fui-icons_cc0000_256x240.png%22)&iconsDefault=url(%22images%2Fui-icons_777777_256x240.png%22)&iconsContent=url(%22images%2Fui-icons_444444_256x240.png%22)&iconsActive=url(%22images%2Fui-icons_ffffff_256x240.png%22)&bgImgUrlShadow=&bgImgUrlOverlay=&bgImgUrlHover=&bgImgUrlHighlight=&bgImgUrlHeader=&bgImgUrlError=&bgImgUrlDefault=&bgImgUrlContent=&bgImgUrlActive=&opacityFilterShadow=Alpha(Opacity%3D30)&opacityFilterOverlay=Alpha(Opacity%3D30)&opacityShadowPerc=30&opacityOverlayPerc=30&iconColorHover=%23555555&iconColorHighlight=%23777620&iconColorHeader=%23444444&iconColorError=%23cc0000&iconColorDefault=%23777777&iconColorContent=%23444444&iconColorActive=%23ffffff&bgImgOpacityShadow=0&bgImgOpacityOverlay=0&bgImgOpacityError=95&bgImgOpacityHighlight=55&bgImgOpacityContent=75&bgImgOpacityHeader=75&bgImgOpacityActive=65&bgImgOpacityHover=75&bgImgOpacityDefault=75&bgTextureShadow=flat&bgTextureOverlay=flat&bgTextureError=flat&bgTextureHighlight=flat&bgTextureContent=flat&bgTextureHeader=flat&bgTextureActive=flat&bgTextureHover=flat&bgTextureDefault=flat&cornerRadius=3px&fwDefault=normal&ffDefault=Arial%2CHelvetica%2Csans-serif&fsDefault=1em&cornerRadiusShadow=8px&thicknessShadow=5px&offsetLeftShadow=0px&offsetTopShadow=0px&opacityShadow=.3&bgColorShadow=%23666666&opacityOverlay=.3&bgColorOverlay=%23aaaaaa&fcError=%235f3f3f&borderColorError=%23f1a899&bgColorError=%23fddfdf&fcHighlight=%23777620&borderColorHighlight=%23dad55e&bgColorHighlight=%23fffa90&fcContent=%23333333&borderColorContent=%23dddddd&bgColorContent=%23ffffff&fcHeader=%23333333&borderColorHeader=%23dddddd&bgColorHeader=%23e9e9e9&fcActive=%23ffffff&borderColorActive=%23003eff&bgColorActive=%23007fff&fcHover=%232b2b2b&borderColorHover=%23cccccc&bgColorHover=%23ededed&fcDefault=%23454545&borderColorDefault=%23c5c5c5&bgColorDefault=%23f6f6f6
* Copyright jQuery Foundation and other contributors; Licensed MIT */
-.ui-helper-hidden{display:none}.ui-helper-hidden-accessible{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.ui-helper-reset{margin:0;padding:0;border:0;outline:0;line-height:1.3;text-decoration:none;font-size:100%;list-style:none}.ui-helper-clearfix:before,.ui-helper-clearfix:after{content:"";display:table;border-collapse:collapse}.ui-helper-clearfix:after{clear:both}.ui-helper-zfix{width:100%;height:100%;top:0;left:0;position:absolute;opacity:0;-ms-filter:"alpha(opacity=0)"}.ui-front{z-index:100}.ui-state-disabled{cursor:default!important;pointer-events:none}.ui-icon{display:inline-block;vertical-align:middle;margin-top:-.25em;position:relative;text-indent:-99999px;overflow:hidden;background-repeat:no-repeat}.ui-widget-icon-block{left:50%;margin-left:-8px;display:block}.ui-widget-overlay{position:fixed;top:0;left:0;width:100%;height:100%}.ui-accordion .ui-accordion-header{display:block;cursor:pointer;position:relative;margin:2px 0 0 0;padding:.5em .5em .5em .7em;font-size:100%}.ui-accordion .ui-accordion-content{padding:1em 2.2em;border-top:0;overflow:auto}.ui-autocomplete{position:absolute;top:0;left:0;cursor:default}.ui-menu{list-style:none;padding:0;margin:0;display:block;outline:0}.ui-menu .ui-menu{position:absolute}.ui-menu .ui-menu-item{margin:0;cursor:pointer;list-style-image:url("data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7")}.ui-menu .ui-menu-item-wrapper{position:relative;padding:3px 1em 3px .4em}.ui-menu .ui-menu-divider{margin:5px 0;height:0;font-size:0;line-height:0;border-width:1px 0 0 0}.ui-menu .ui-state-focus,.ui-menu .ui-state-active{margin:-1px}.ui-menu-icons{position:relative}.ui-menu-icons .ui-menu-item-wrapper{padding-left:2em}.ui-menu .ui-icon{position:absolute;top:0;bottom:0;left:.2em;margin:auto 0}.ui-menu .ui-menu-icon{left:auto;right:0}.ui-button{padding:.4em 1em;display:inline-block;position:relative;line-height:normal;margin-right:.1em;cursor:pointer;vertical-align:middle;text-align:center;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;overflow:visible}.ui-button,.ui-button:link,.ui-button:visited,.ui-button:hover,.ui-button:active{text-decoration:none}.ui-button-icon-only{width:2em;box-sizing:border-box;text-indent:-9999px;white-space:nowrap}input.ui-button.ui-button-icon-only{text-indent:0}.ui-button-icon-only .ui-icon{position:absolute;top:50%;left:50%;margin-top:-8px;margin-left:-8px}.ui-button.ui-icon-notext .ui-icon{padding:0;width:2.1em;height:2.1em;text-indent:-9999px;white-space:nowrap}input.ui-button.ui-icon-notext .ui-icon{width:auto;height:auto;text-indent:0;white-space:normal;padding:.4em 1em}input.ui-button::-moz-focus-inner,button.ui-button::-moz-focus-inner{border:0;padding:0}.ui-controlgroup{vertical-align:middle;display:inline-block}.ui-controlgroup > .ui-controlgroup-item{float:left;margin-left:0;margin-right:0}.ui-controlgroup > .ui-controlgroup-item:focus,.ui-controlgroup > .ui-controlgroup-item.ui-visual-focus{z-index:9999}.ui-controlgroup-vertical > .ui-controlgroup-item{display:block;float:none;width:100%;margin-top:0;margin-bottom:0;text-align:left}.ui-controlgroup-vertical .ui-controlgroup-item{box-sizing:border-box}.ui-controlgroup .ui-controlgroup-label{padding:.4em 1em}.ui-controlgroup .ui-controlgroup-label span{font-size:80%}.ui-controlgroup-horizontal .ui-controlgroup-label + .ui-controlgroup-item{border-left:none}.ui-controlgroup-vertical .ui-controlgroup-label + .ui-controlgroup-item{border-top:none}.ui-controlgroup-horizontal .ui-controlgroup-label.ui-widget-content{border-right:none}.ui-controlgroup-vertical .ui-controlgroup-label.ui-widget-content{border-bottom:none}.ui-controlgroup-vertical .ui-spinner-input{width:75%;width:calc( 100% - 2.4em )}.ui-controlgroup-vertical .ui-spinner .ui-spinner-up{border-top-style:solid}.ui-checkboxradio-label .ui-icon-background{box-shadow:inset 1px 1px 1px #ccc;border-radius:.12em;border:none}.ui-checkboxradio-radio-label .ui-icon-background{width:16px;height:16px;border-radius:1em;overflow:visible;border:none}.ui-checkboxradio-radio-label.ui-checkboxradio-checked .ui-icon,.ui-checkboxradio-radio-label.ui-checkboxradio-checked:hover .ui-icon{background-image:none;width:8px;height:8px;border-width:4px;border-style:solid}.ui-checkboxradio-disabled{pointer-events:none}.ui-datepicker{width:17em;padding:.2em .2em 0;display:none}.ui-datepicker .ui-datepicker-header{position:relative;padding:.2em 0}.ui-datepicker .ui-datepicker-prev,.ui-datepicker .ui-datepicker-next{position:absolute;top:2px;width:1.8em;height:1.8em}.ui-datepicker .ui-datepicker-prev-hover,.ui-datepicker .ui-datepicker-next-hover{top:1px}.ui-datepicker .ui-datepicker-prev{left:2px}.ui-datepicker .ui-datepicker-next{right:2px}.ui-datepicker .ui-datepicker-prev-hover{left:1px}.ui-datepicker .ui-datepicker-next-hover{right:1px}.ui-datepicker .ui-datepicker-prev span,.ui-datepicker .ui-datepicker-next span{display:block;position:absolute;left:50%;margin-left:-8px;top:50%;margin-top:-8px}.ui-datepicker .ui-datepicker-title{margin:0 2.3em;line-height:1.8em;text-align:center}.ui-datepicker .ui-datepicker-title select{font-size:1em;margin:1px 0}.ui-datepicker select.ui-datepicker-month,.ui-datepicker select.ui-datepicker-year{width:45%}.ui-datepicker table{width:100%;font-size:.9em;border-collapse:collapse;margin:0 0 .4em}.ui-datepicker th{padding:.7em .3em;text-align:center;font-weight:bold;border:0}.ui-datepicker td{border:0;padding:1px}.ui-datepicker td span,.ui-datepicker td a{display:block;padding:.2em;text-align:right;text-decoration:none}.ui-datepicker .ui-datepicker-buttonpane{background-image:none;margin:.7em 0 0 0;padding:0 .2em;border-left:0;border-right:0;border-bottom:0}.ui-datepicker .ui-datepicker-buttonpane button{float:right;margin:.5em .2em .4em;cursor:pointer;padding:.2em .6em .3em .6em;width:auto;overflow:visible}.ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current{float:left}.ui-datepicker.ui-datepicker-multi{width:auto}.ui-datepicker-multi .ui-datepicker-group{float:left}.ui-datepicker-multi .ui-datepicker-group table{width:95%;margin:0 auto .4em}.ui-datepicker-multi-2 .ui-datepicker-group{width:50%}.ui-datepicker-multi-3 .ui-datepicker-group{width:33.3%}.ui-datepicker-multi-4 .ui-datepicker-group{width:25%}.ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header,.ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header{border-left-width:0}.ui-datepicker-multi .ui-datepicker-buttonpane{clear:left}.ui-datepicker-row-break{clear:both;width:100%;font-size:0}.ui-datepicker-rtl{direction:rtl}.ui-datepicker-rtl .ui-datepicker-prev{right:2px;left:auto}.ui-datepicker-rtl .ui-datepicker-next{left:2px;right:auto}.ui-datepicker-rtl .ui-datepicker-prev:hover{right:1px;left:auto}.ui-datepicker-rtl .ui-datepicker-next:hover{left:1px;right:auto}.ui-datepicker-rtl .ui-datepicker-buttonpane{clear:right}.ui-datepicker-rtl .ui-datepicker-buttonpane button{float:left}.ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current,.ui-datepicker-rtl .ui-datepicker-group{float:right}.ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header,.ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header{border-right-width:0;border-left-width:1px}.ui-datepicker .ui-icon{display:block;text-indent:-99999px;overflow:hidden;background-repeat:no-repeat;left:.5em;top:.3em}.ui-dialog{position:absolute;top:0;left:0;padding:.2em;outline:0}.ui-dialog .ui-dialog-titlebar{padding:.4em 1em;position:relative}.ui-dialog .ui-dialog-title{float:left;margin:.1em 0;white-space:nowrap;width:90%;overflow:hidden;text-overflow:ellipsis}.ui-dialog .ui-dialog-titlebar-close{position:absolute;right:.3em;top:50%;width:20px;margin:-10px 0 0 0;padding:1px;height:20px}.ui-dialog .ui-dialog-content{position:relative;border:0;padding:.5em 1em;background:none;overflow:auto}.ui-dialog .ui-dialog-buttonpane{text-align:left;border-width:1px 0 0 0;background-image:none;margin-top:.5em;padding:.3em 1em .5em .4em}.ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset{float:right}.ui-dialog .ui-dialog-buttonpane button{margin:.5em .4em .5em 0;cursor:pointer}.ui-dialog .ui-resizable-n{height:2px;top:0}.ui-dialog .ui-resizable-e{width:2px;right:0}.ui-dialog .ui-resizable-s{height:2px;bottom:0}.ui-dialog .ui-resizable-w{width:2px;left:0}.ui-dialog .ui-resizable-se,.ui-dialog .ui-resizable-sw,.ui-dialog .ui-resizable-ne,.ui-dialog .ui-resizable-nw{width:7px;height:7px}.ui-dialog .ui-resizable-se{right:0;bottom:0}.ui-dialog .ui-resizable-sw{left:0;bottom:0}.ui-dialog .ui-resizable-ne{right:0;top:0}.ui-dialog .ui-resizable-nw{left:0;top:0}.ui-draggable .ui-dialog-titlebar{cursor:move}.ui-draggable-handle{-ms-touch-action:none;touch-action:none}.ui-resizable{position:relative}.ui-resizable-handle{position:absolute;font-size:0.1px;display:block;-ms-touch-action:none;touch-action:none}.ui-resizable-disabled .ui-resizable-handle,.ui-resizable-autohide .ui-resizable-handle{display:none}.ui-resizable-n{cursor:n-resize;height:7px;width:100%;top:-5px;left:0}.ui-resizable-s{cursor:s-resize;height:7px;width:100%;bottom:-5px;left:0}.ui-resizable-e{cursor:e-resize;width:7px;right:-5px;top:0;height:100%}.ui-resizable-w{cursor:w-resize;width:7px;left:-5px;top:0;height:100%}.ui-resizable-se{cursor:se-resize;width:12px;height:12px;right:1px;bottom:1px}.ui-resizable-sw{cursor:sw-resize;width:9px;height:9px;left:-5px;bottom:-5px}.ui-resizable-nw{cursor:nw-resize;width:9px;height:9px;left:-5px;top:-5px}.ui-resizable-ne{cursor:ne-resize;width:9px;height:9px;right:-5px;top:-5px}.ui-progressbar{height:2em;text-align:left;overflow:hidden}.ui-progressbar .ui-progressbar-value{margin:-1px;height:100%}.ui-progressbar .ui-progressbar-overlay{background:url("data:image/gif;base64,R0lGODlhKAAoAIABAAAAAP///yH/C05FVFNDQVBFMi4wAwEAAAAh+QQJAQABACwAAAAAKAAoAAACkYwNqXrdC52DS06a7MFZI+4FHBCKoDeWKXqymPqGqxvJrXZbMx7Ttc+w9XgU2FB3lOyQRWET2IFGiU9m1frDVpxZZc6bfHwv4c1YXP6k1Vdy292Fb6UkuvFtXpvWSzA+HycXJHUXiGYIiMg2R6W459gnWGfHNdjIqDWVqemH2ekpObkpOlppWUqZiqr6edqqWQAAIfkECQEAAQAsAAAAACgAKAAAApSMgZnGfaqcg1E2uuzDmmHUBR8Qil95hiPKqWn3aqtLsS18y7G1SzNeowWBENtQd+T1JktP05nzPTdJZlR6vUxNWWjV+vUWhWNkWFwxl9VpZRedYcflIOLafaa28XdsH/ynlcc1uPVDZxQIR0K25+cICCmoqCe5mGhZOfeYSUh5yJcJyrkZWWpaR8doJ2o4NYq62lAAACH5BAkBAAEALAAAAAAoACgAAAKVDI4Yy22ZnINRNqosw0Bv7i1gyHUkFj7oSaWlu3ovC8GxNso5fluz3qLVhBVeT/Lz7ZTHyxL5dDalQWPVOsQWtRnuwXaFTj9jVVh8pma9JjZ4zYSj5ZOyma7uuolffh+IR5aW97cHuBUXKGKXlKjn+DiHWMcYJah4N0lYCMlJOXipGRr5qdgoSTrqWSq6WFl2ypoaUAAAIfkECQEAAQAsAAAAACgAKAAAApaEb6HLgd/iO7FNWtcFWe+ufODGjRfoiJ2akShbueb0wtI50zm02pbvwfWEMWBQ1zKGlLIhskiEPm9R6vRXxV4ZzWT2yHOGpWMyorblKlNp8HmHEb/lCXjcW7bmtXP8Xt229OVWR1fod2eWqNfHuMjXCPkIGNileOiImVmCOEmoSfn3yXlJWmoHGhqp6ilYuWYpmTqKUgAAIfkECQEAAQAsAAAAACgAKAAAApiEH6kb58biQ3FNWtMFWW3eNVcojuFGfqnZqSebuS06w5V80/X02pKe8zFwP6EFWOT1lDFk8rGERh1TTNOocQ61Hm4Xm2VexUHpzjymViHrFbiELsefVrn6XKfnt2Q9G/+Xdie499XHd2g4h7ioOGhXGJboGAnXSBnoBwKYyfioubZJ2Hn0RuRZaflZOil56Zp6iioKSXpUAAAh+QQJAQABACwAAAAAKAAoAAACkoQRqRvnxuI7kU1a1UU5bd5tnSeOZXhmn5lWK3qNTWvRdQxP8qvaC+/yaYQzXO7BMvaUEmJRd3TsiMAgswmNYrSgZdYrTX6tSHGZO73ezuAw2uxuQ+BbeZfMxsexY35+/Qe4J1inV0g4x3WHuMhIl2jXOKT2Q+VU5fgoSUI52VfZyfkJGkha6jmY+aaYdirq+lQAACH5BAkBAAEALAAAAAAoACgAAAKWBIKpYe0L3YNKToqswUlvznigd4wiR4KhZrKt9Upqip61i9E3vMvxRdHlbEFiEXfk9YARYxOZZD6VQ2pUunBmtRXo1Lf8hMVVcNl8JafV38aM2/Fu5V16Bn63r6xt97j09+MXSFi4BniGFae3hzbH9+hYBzkpuUh5aZmHuanZOZgIuvbGiNeomCnaxxap2upaCZsq+1kAACH5BAkBAAEALAAAAAAoACgAAAKXjI8By5zf4kOxTVrXNVlv1X0d8IGZGKLnNpYtm8Lr9cqVeuOSvfOW79D9aDHizNhDJidFZhNydEahOaDH6nomtJjp1tutKoNWkvA6JqfRVLHU/QUfau9l2x7G54d1fl995xcIGAdXqMfBNadoYrhH+Mg2KBlpVpbluCiXmMnZ2Sh4GBqJ+ckIOqqJ6LmKSllZmsoq6wpQAAAh+QQJAQABACwAAAAAKAAoAAAClYx/oLvoxuJDkU1a1YUZbJ59nSd2ZXhWqbRa2/gF8Gu2DY3iqs7yrq+xBYEkYvFSM8aSSObE+ZgRl1BHFZNr7pRCavZ5BW2142hY3AN/zWtsmf12p9XxxFl2lpLn1rseztfXZjdIWIf2s5dItwjYKBgo9yg5pHgzJXTEeGlZuenpyPmpGQoKOWkYmSpaSnqKileI2FAAACH5BAkBAAEALAAAAAAoACgAAAKVjB+gu+jG4kORTVrVhRlsnn2dJ3ZleFaptFrb+CXmO9OozeL5VfP99HvAWhpiUdcwkpBH3825AwYdU8xTqlLGhtCosArKMpvfa1mMRae9VvWZfeB2XfPkeLmm18lUcBj+p5dnN8jXZ3YIGEhYuOUn45aoCDkp16hl5IjYJvjWKcnoGQpqyPlpOhr3aElaqrq56Bq7VAAAOw==");height:100%;-ms-filter:"alpha(opacity=25)";opacity:0.25}.ui-progressbar-indeterminate .ui-progressbar-value{background-image:none}.ui-selectable{-ms-touch-action:none;touch-action:none}.ui-selectable-helper{position:absolute;z-index:100;border:1px dotted black}.ui-selectmenu-menu{padding:0;margin:0;position:absolute;top:0;left:0;display:none}.ui-selectmenu-menu .ui-menu{overflow:auto;overflow-x:hidden;padding-bottom:1px}.ui-selectmenu-menu .ui-menu .ui-selectmenu-optgroup{font-size:1em;font-weight:bold;line-height:1.5;padding:2px 0.4em;margin:0.5em 0 0 0;height:auto;border:0}.ui-selectmenu-open{display:block}.ui-selectmenu-text{display:block;margin-right:20px;overflow:hidden;text-overflow:ellipsis}.ui-selectmenu-button.ui-button{text-align:left;white-space:nowrap;width:14em}.ui-selectmenu-icon.ui-icon{float:right;margin-top:0}.ui-slider{position:relative;text-align:left}.ui-slider .ui-slider-handle{position:absolute;z-index:2;width:1.2em;height:1.2em;cursor:pointer;-ms-touch-action:none;touch-action:none}.ui-slider .ui-slider-range{position:absolute;z-index:1;font-size:.7em;display:block;border:0;background-position:0 0}.ui-slider.ui-state-disabled .ui-slider-handle,.ui-slider.ui-state-disabled .ui-slider-range{filter:inherit}.ui-slider-horizontal{height:.8em}.ui-slider-horizontal .ui-slider-handle{top:-.3em;margin-left:-.6em}.ui-slider-horizontal .ui-slider-range{top:0;height:100%}.ui-slider-horizontal .ui-slider-range-min{left:0}.ui-slider-horizontal .ui-slider-range-max{right:0}.ui-slider-vertical{width:.8em;height:100px}.ui-slider-vertical .ui-slider-handle{left:-.3em;margin-left:0;margin-bottom:-.6em}.ui-slider-vertical .ui-slider-range{left:0;width:100%}.ui-slider-vertical .ui-slider-range-min{bottom:0}.ui-slider-vertical .ui-slider-range-max{top:0}.ui-sortable-handle{-ms-touch-action:none;touch-action:none}.ui-spinner{position:relative;display:inline-block;overflow:hidden;padding:0;vertical-align:middle}.ui-spinner-input{border:none;background:none;color:inherit;padding:.222em 0;margin:.2em 0;vertical-align:middle;margin-left:.4em;margin-right:2em}.ui-spinner-button{width:1.6em;height:50%;font-size:.5em;padding:0;margin:0;text-align:center;position:absolute;cursor:default;display:block;overflow:hidden;right:0}.ui-spinner a.ui-spinner-button{border-top-style:none;border-bottom-style:none;border-right-style:none}.ui-spinner-up{top:0}.ui-spinner-down{bottom:0}.ui-tabs{position:relative;padding:.2em}.ui-tabs .ui-tabs-nav{margin:0;padding:.2em .2em 0}.ui-tabs .ui-tabs-nav li{list-style:none;float:left;position:relative;top:0;margin:1px .2em 0 0;border-bottom-width:0;padding:0;white-space:nowrap}.ui-tabs .ui-tabs-nav .ui-tabs-anchor{float:left;padding:.5em 1em;text-decoration:none}.ui-tabs .ui-tabs-nav li.ui-tabs-active{margin-bottom:-1px;padding-bottom:1px}.ui-tabs .ui-tabs-nav li.ui-tabs-active .ui-tabs-anchor,.ui-tabs .ui-tabs-nav li.ui-state-disabled .ui-tabs-anchor,.ui-tabs .ui-tabs-nav li.ui-tabs-loading .ui-tabs-anchor{cursor:text}.ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-active .ui-tabs-anchor{cursor:pointer}.ui-tabs .ui-tabs-panel{display:block;border-width:0;padding:1em 1.4em;background:none}.ui-tooltip{padding:8px;position:absolute;z-index:9999;max-width:300px}body .ui-tooltip{border-width:2px}.ui-widget{font-family:Arial,Helvetica,sans-serif;font-size:1em}.ui-widget .ui-widget{font-size:1em}.ui-widget input,.ui-widget select,.ui-widget textarea,.ui-widget button{font-family:Arial,Helvetica,sans-serif;font-size:1em}.ui-widget.ui-widget-content{border:1px solid #c5c5c5}.ui-widget-content{border:1px solid #ddd;background:#fff;color:#333}.ui-widget-content a{color:#333}.ui-widget-header{border:1px solid #ddd;background:#e9e9e9;color:#333;font-weight:bold}.ui-widget-header a{color:#333}.ui-state-default,.ui-widget-content .ui-state-default,.ui-widget-header .ui-state-default,.ui-button,html .ui-button.ui-state-disabled:hover,html .ui-button.ui-state-disabled:active{border:1px solid #c5c5c5;background:#f6f6f6;font-weight:normal;color:#454545}.ui-state-default a,.ui-state-default a:link,.ui-state-default a:visited,a.ui-button,a:link.ui-button,a:visited.ui-button,.ui-button{color:#454545;text-decoration:none}.ui-state-hover,.ui-widget-content .ui-state-hover,.ui-widget-header .ui-state-hover,.ui-state-focus,.ui-widget-content .ui-state-focus,.ui-widget-header .ui-state-focus,.ui-button:hover,.ui-button:focus{border:1px solid #ccc;background:#ededed;font-weight:normal;color:#2b2b2b}.ui-state-hover a,.ui-state-hover a:hover,.ui-state-hover a:link,.ui-state-hover a:visited,.ui-state-focus a,.ui-state-focus a:hover,.ui-state-focus a:link,.ui-state-focus a:visited,a.ui-button:hover,a.ui-button:focus{color:#2b2b2b;text-decoration:none}.ui-visual-focus{box-shadow:0 0 3px 1px rgb(94,158,214)}.ui-state-active,.ui-widget-content .ui-state-active,.ui-widget-header .ui-state-active,a.ui-button:active,.ui-button:active,.ui-button.ui-state-active:hover{border:1px solid #003eff;background:#007fff;font-weight:normal;color:#fff}.ui-icon-background,.ui-state-active .ui-icon-background{border:#003eff;background-color:#fff}.ui-state-active a,.ui-state-active a:link,.ui-state-active a:visited{color:#fff;text-decoration:none}.ui-state-highlight,.ui-widget-content .ui-state-highlight,.ui-widget-header .ui-state-highlight{border:1px solid #dad55e;background:#fffa90;color:#777620}.ui-state-checked{border:1px solid #dad55e;background:#fffa90}.ui-state-highlight a,.ui-widget-content .ui-state-highlight a,.ui-widget-header .ui-state-highlight a{color:#777620}.ui-state-error,.ui-widget-content .ui-state-error,.ui-widget-header .ui-state-error{border:1px solid #f1a899;background:#fddfdf;color:#5f3f3f}.ui-state-error a,.ui-widget-content .ui-state-error a,.ui-widget-header .ui-state-error a{color:#5f3f3f}.ui-state-error-text,.ui-widget-content .ui-state-error-text,.ui-widget-header .ui-state-error-text{color:#5f3f3f}.ui-priority-primary,.ui-widget-content .ui-priority-primary,.ui-widget-header .ui-priority-primary{font-weight:bold}.ui-priority-secondary,.ui-widget-content .ui-priority-secondary,.ui-widget-header .ui-priority-secondary{opacity:.7;-ms-filter:"alpha(opacity=70)";font-weight:normal}.ui-state-disabled,.ui-widget-content .ui-state-disabled,.ui-widget-header .ui-state-disabled{opacity:.35;-ms-filter:"alpha(opacity=35)";background-image:none}.ui-state-disabled .ui-icon{-ms-filter:"alpha(opacity=35)"}.ui-icon{width:16px;height:16px}.ui-icon,.ui-widget-content .ui-icon{background-image:url("images/ui-icons_444444_256x240.png")}.ui-widget-header .ui-icon{background-image:url("images/ui-icons_444444_256x240.png")}.ui-state-hover .ui-icon,.ui-state-focus .ui-icon,.ui-button:hover .ui-icon,.ui-button:focus .ui-icon{background-image:url("images/ui-icons_555555_256x240.png")}.ui-state-active .ui-icon,.ui-button:active .ui-icon{background-image:url("images/ui-icons_ffffff_256x240.png")}.ui-state-highlight .ui-icon,.ui-button .ui-state-highlight.ui-icon{background-image:url("images/ui-icons_777620_256x240.png")}.ui-state-error .ui-icon,.ui-state-error-text .ui-icon{background-image:url("images/ui-icons_cc0000_256x240.png")}.ui-button .ui-icon{background-image:url("images/ui-icons_777777_256x240.png")}.ui-icon-blank.ui-icon-blank.ui-icon-blank{background-image:none}.ui-icon-caret-1-n{background-position:0 0}.ui-icon-caret-1-ne{background-position:-16px 0}.ui-icon-caret-1-e{background-position:-32px 0}.ui-icon-caret-1-se{background-position:-48px 0}.ui-icon-caret-1-s{background-position:-65px 0}.ui-icon-caret-1-sw{background-position:-80px 0}.ui-icon-caret-1-w{background-position:-96px 0}.ui-icon-caret-1-nw{background-position:-112px 0}.ui-icon-caret-2-n-s{background-position:-128px 0}.ui-icon-caret-2-e-w{background-position:-144px 0}.ui-icon-triangle-1-n{background-position:0 -16px}.ui-icon-triangle-1-ne{background-position:-16px -16px}.ui-icon-triangle-1-e{background-position:-32px -16px}.ui-icon-triangle-1-se{background-position:-48px -16px}.ui-icon-triangle-1-s{background-position:-65px -16px}.ui-icon-triangle-1-sw{background-position:-80px -16px}.ui-icon-triangle-1-w{background-position:-96px -16px}.ui-icon-triangle-1-nw{background-position:-112px -16px}.ui-icon-triangle-2-n-s{background-position:-128px -16px}.ui-icon-triangle-2-e-w{background-position:-144px -16px}.ui-icon-arrow-1-n{background-position:0 -32px}.ui-icon-arrow-1-ne{background-position:-16px -32px}.ui-icon-arrow-1-e{background-position:-32px -32px}.ui-icon-arrow-1-se{background-position:-48px -32px}.ui-icon-arrow-1-s{background-position:-65px -32px}.ui-icon-arrow-1-sw{background-position:-80px -32px}.ui-icon-arrow-1-w{background-position:-96px -32px}.ui-icon-arrow-1-nw{background-position:-112px -32px}.ui-icon-arrow-2-n-s{background-position:-128px -32px}.ui-icon-arrow-2-ne-sw{background-position:-144px -32px}.ui-icon-arrow-2-e-w{background-position:-160px -32px}.ui-icon-arrow-2-se-nw{background-position:-176px -32px}.ui-icon-arrowstop-1-n{background-position:-192px -32px}.ui-icon-arrowstop-1-e{background-position:-208px -32px}.ui-icon-arrowstop-1-s{background-position:-224px -32px}.ui-icon-arrowstop-1-w{background-position:-240px -32px}.ui-icon-arrowthick-1-n{background-position:1px -48px}.ui-icon-arrowthick-1-ne{background-position:-16px -48px}.ui-icon-arrowthick-1-e{background-position:-32px -48px}.ui-icon-arrowthick-1-se{background-position:-48px -48px}.ui-icon-arrowthick-1-s{background-position:-64px -48px}.ui-icon-arrowthick-1-sw{background-position:-80px -48px}.ui-icon-arrowthick-1-w{background-position:-96px -48px}.ui-icon-arrowthick-1-nw{background-position:-112px -48px}.ui-icon-arrowthick-2-n-s{background-position:-128px -48px}.ui-icon-arrowthick-2-ne-sw{background-position:-144px -48px}.ui-icon-arrowthick-2-e-w{background-position:-160px -48px}.ui-icon-arrowthick-2-se-nw{background-position:-176px -48px}.ui-icon-arrowthickstop-1-n{background-position:-192px -48px}.ui-icon-arrowthickstop-1-e{background-position:-208px -48px}.ui-icon-arrowthickstop-1-s{background-position:-224px -48px}.ui-icon-arrowthickstop-1-w{background-position:-240px -48px}.ui-icon-arrowreturnthick-1-w{background-position:0 -64px}.ui-icon-arrowreturnthick-1-n{background-position:-16px -64px}.ui-icon-arrowreturnthick-1-e{background-position:-32px -64px}.ui-icon-arrowreturnthick-1-s{background-position:-48px -64px}.ui-icon-arrowreturn-1-w{background-position:-64px -64px}.ui-icon-arrowreturn-1-n{background-position:-80px -64px}.ui-icon-arrowreturn-1-e{background-position:-96px -64px}.ui-icon-arrowreturn-1-s{background-position:-112px -64px}.ui-icon-arrowrefresh-1-w{background-position:-128px -64px}.ui-icon-arrowrefresh-1-n{background-position:-144px -64px}.ui-icon-arrowrefresh-1-e{background-position:-160px -64px}.ui-icon-arrowrefresh-1-s{background-position:-176px -64px}.ui-icon-arrow-4{background-position:0 -80px}.ui-icon-arrow-4-diag{background-position:-16px -80px}.ui-icon-extlink{background-position:-32px -80px}.ui-icon-newwin{background-position:-48px -80px}.ui-icon-refresh{background-position:-64px -80px}.ui-icon-shuffle{background-position:-80px -80px}.ui-icon-transfer-e-w{background-position:-96px -80px}.ui-icon-transferthick-e-w{background-position:-112px -80px}.ui-icon-folder-collapsed{background-position:0 -96px}.ui-icon-folder-open{background-position:-16px -96px}.ui-icon-document{background-position:-32px -96px}.ui-icon-document-b{background-position:-48px -96px}.ui-icon-note{background-position:-64px -96px}.ui-icon-mail-closed{background-position:-80px -96px}.ui-icon-mail-open{background-position:-96px -96px}.ui-icon-suitcase{background-position:-112px -96px}.ui-icon-comment{background-position:-128px -96px}.ui-icon-person{background-position:-144px -96px}.ui-icon-print{background-position:-160px -96px}.ui-icon-trash{background-position:-176px -96px}.ui-icon-locked{background-position:-192px -96px}.ui-icon-unlocked{background-position:-208px -96px}.ui-icon-bookmark{background-position:-224px -96px}.ui-icon-tag{background-position:-240px -96px}.ui-icon-home{background-position:0 -112px}.ui-icon-flag{background-position:-16px -112px}.ui-icon-calendar{background-position:-32px -112px}.ui-icon-cart{background-position:-48px -112px}.ui-icon-pencil{background-position:-64px -112px}.ui-icon-clock{background-position:-80px -112px}.ui-icon-disk{background-position:-96px -112px}.ui-icon-calculator{background-position:-112px -112px}.ui-icon-zoomin{background-position:-128px -112px}.ui-icon-zoomout{background-position:-144px -112px}.ui-icon-search{background-position:-160px -112px}.ui-icon-wrench{background-position:-176px -112px}.ui-icon-gear{background-position:-192px -112px}.ui-icon-heart{background-position:-208px -112px}.ui-icon-star{background-position:-224px -112px}.ui-icon-link{background-position:-240px -112px}.ui-icon-cancel{background-position:0 -128px}.ui-icon-plus{background-position:-16px -128px}.ui-icon-plusthick{background-position:-32px -128px}.ui-icon-minus{background-position:-48px -128px}.ui-icon-minusthick{background-position:-64px -128px}.ui-icon-close{background-position:-80px -128px}.ui-icon-closethick{background-position:-96px -128px}.ui-icon-key{background-position:-112px -128px}.ui-icon-lightbulb{background-position:-128px -128px}.ui-icon-scissors{background-position:-144px -128px}.ui-icon-clipboard{background-position:-160px -128px}.ui-icon-copy{background-position:-176px -128px}.ui-icon-contact{background-position:-192px -128px}.ui-icon-image{background-position:-208px -128px}.ui-icon-video{background-position:-224px -128px}.ui-icon-script{background-position:-240px -128px}.ui-icon-alert{background-position:0 -144px}.ui-icon-info{background-position:-16px -144px}.ui-icon-notice{background-position:-32px -144px}.ui-icon-help{background-position:-48px -144px}.ui-icon-check{background-position:-64px -144px}.ui-icon-bullet{background-position:-80px -144px}.ui-icon-radio-on{background-position:-96px -144px}.ui-icon-radio-off{background-position:-112px -144px}.ui-icon-pin-w{background-position:-128px -144px}.ui-icon-pin-s{background-position:-144px -144px}.ui-icon-play{background-position:0 -160px}.ui-icon-pause{background-position:-16px -160px}.ui-icon-seek-next{background-position:-32px -160px}.ui-icon-seek-prev{background-position:-48px -160px}.ui-icon-seek-end{background-position:-64px -160px}.ui-icon-seek-start{background-position:-80px -160px}.ui-icon-seek-first{background-position:-80px -160px}.ui-icon-stop{background-position:-96px -160px}.ui-icon-eject{background-position:-112px -160px}.ui-icon-volume-off{background-position:-128px -160px}.ui-icon-volume-on{background-position:-144px -160px}.ui-icon-power{background-position:0 -176px}.ui-icon-signal-diag{background-position:-16px -176px}.ui-icon-signal{background-position:-32px -176px}.ui-icon-battery-0{background-position:-48px -176px}.ui-icon-battery-1{background-position:-64px -176px}.ui-icon-battery-2{background-position:-80px -176px}.ui-icon-battery-3{background-position:-96px -176px}.ui-icon-circle-plus{background-position:0 -192px}.ui-icon-circle-minus{background-position:-16px -192px}.ui-icon-circle-close{background-position:-32px -192px}.ui-icon-circle-triangle-e{background-position:-48px -192px}.ui-icon-circle-triangle-s{background-position:-64px -192px}.ui-icon-circle-triangle-w{background-position:-80px -192px}.ui-icon-circle-triangle-n{background-position:-96px -192px}.ui-icon-circle-arrow-e{background-position:-112px -192px}.ui-icon-circle-arrow-s{background-position:-128px -192px}.ui-icon-circle-arrow-w{background-position:-144px -192px}.ui-icon-circle-arrow-n{background-position:-160px -192px}.ui-icon-circle-zoomin{background-position:-176px -192px}.ui-icon-circle-zoomout{background-position:-192px -192px}.ui-icon-circle-check{background-position:-208px -192px}.ui-icon-circlesmall-plus{background-position:0 -208px}.ui-icon-circlesmall-minus{background-position:-16px -208px}.ui-icon-circlesmall-close{background-position:-32px -208px}.ui-icon-squaresmall-plus{background-position:-48px -208px}.ui-icon-squaresmall-minus{background-position:-64px -208px}.ui-icon-squaresmall-close{background-position:-80px -208px}.ui-icon-grip-dotted-vertical{background-position:0 -224px}.ui-icon-grip-dotted-horizontal{background-position:-16px -224px}.ui-icon-grip-solid-vertical{background-position:-32px -224px}.ui-icon-grip-solid-horizontal{background-position:-48px -224px}.ui-icon-gripsmall-diagonal-se{background-position:-64px -224px}.ui-icon-grip-diagonal-se{background-position:-80px -224px}.ui-corner-all,.ui-corner-top,.ui-corner-left,.ui-corner-tl{border-top-left-radius:3px}.ui-corner-all,.ui-corner-top,.ui-corner-right,.ui-corner-tr{border-top-right-radius:3px}.ui-corner-all,.ui-corner-bottom,.ui-corner-left,.ui-corner-bl{border-bottom-left-radius:3px}.ui-corner-all,.ui-corner-bottom,.ui-corner-right,.ui-corner-br{border-bottom-right-radius:3px}.ui-widget-overlay{background:#aaa;opacity:.003;-ms-filter:Alpha(Opacity=.3)}.ui-widget-shadow{-webkit-box-shadow:0 0 5px #666;box-shadow:0 0 5px #666}
\ No newline at end of file
+.ui-helper-hidden{display:none}.ui-helper-hidden-accessible{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.ui-helper-reset{margin:0;padding:0;border:0;outline:0;line-height:1.3;text-decoration:none;font-size:100%;list-style:none}.ui-helper-clearfix:before,.ui-helper-clearfix:after{content:"";display:table;border-collapse:collapse}.ui-helper-clearfix:after{clear:both}.ui-helper-zfix{width:100%;height:100%;top:0;left:0;position:absolute;opacity:0;-ms-filter:"alpha(opacity=0)"}.ui-front{z-index:100}.ui-state-disabled{cursor:default!important;pointer-events:none}.ui-icon{display:inline-block;vertical-align:middle;margin-top:-.25em;position:relative;text-indent:-99999px;overflow:hidden;background-repeat:no-repeat}.ui-widget-icon-block{left:50%;margin-left:-8px;display:block}.ui-widget-overlay{position:fixed;top:0;left:0;width:100%;height:100%}.ui-accordion .ui-accordion-header{display:block;cursor:pointer;position:relative;margin:2px 0 0 0;padding:.5em .5em .5em .7em;font-size:100%}.ui-accordion .ui-accordion-content{padding:1em 2.2em;border-top:0;overflow:auto}.ui-autocomplete{position:absolute;top:0;left:0;cursor:default}.ui-menu{list-style:none;padding:0;margin:0;display:block;outline:0}.ui-menu .ui-menu{position:absolute}.ui-menu .ui-menu-item{margin:0;cursor:pointer;list-style-image:url("data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7")}.ui-menu .ui-menu-item-wrapper{position:relative;padding:3px 1em 3px .4em}.ui-menu .ui-menu-divider{margin:5px 0;height:0;font-size:0;line-height:0;border-width:1px 0 0 0}.ui-menu .ui-state-focus,.ui-menu .ui-state-active{margin:-1px}.ui-menu-icons{position:relative}.ui-menu-icons .ui-menu-item-wrapper{padding-left:2em}.ui-menu .ui-icon{position:absolute;top:0;bottom:0;left:.2em;margin:auto 0}.ui-menu .ui-menu-icon{left:auto;right:0}.ui-button{padding:.4em 1em;display:inline-block;position:relative;line-height:normal;margin-right:.1em;cursor:pointer;vertical-align:middle;text-align:center;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;overflow:visible}.ui-button,.ui-button:link,.ui-button:visited,.ui-button:hover,.ui-button:active{text-decoration:none}.ui-button-icon-only{width:2em;box-sizing:border-box;text-indent:-9999px;white-space:nowrap}input.ui-button.ui-button-icon-only{text-indent:0}.ui-button-icon-only .ui-icon{position:absolute;top:50%;left:50%;margin-top:-8px;margin-left:-8px}.ui-button.ui-icon-notext .ui-icon{padding:0;width:2.1em;height:2.1em;text-indent:-9999px;white-space:nowrap}input.ui-button.ui-icon-notext .ui-icon{width:auto;height:auto;text-indent:0;white-space:normal;padding:.4em 1em}input.ui-button::-moz-focus-inner,button.ui-button::-moz-focus-inner{border:0;padding:0}.ui-controlgroup{vertical-align:middle;display:inline-block}.ui-controlgroup > .ui-controlgroup-item{float:left;margin-left:0;margin-right:0}.ui-controlgroup > .ui-controlgroup-item:focus,.ui-controlgroup > .ui-controlgroup-item.ui-visual-focus{z-index:9999}.ui-controlgroup-vertical > .ui-controlgroup-item{display:block;float:none;width:100%;margin-top:0;margin-bottom:0;text-align:left}.ui-controlgroup-vertical .ui-controlgroup-item{box-sizing:border-box}.ui-controlgroup .ui-controlgroup-label{padding:.4em 1em}.ui-controlgroup .ui-controlgroup-label span{font-size:80%}.ui-controlgroup-horizontal .ui-controlgroup-label + .ui-controlgroup-item{border-left:none}.ui-controlgroup-vertical .ui-controlgroup-label + .ui-controlgroup-item{border-top:none}.ui-controlgroup-horizontal .ui-controlgroup-label.ui-widget-content{border-right:none}.ui-controlgroup-vertical .ui-controlgroup-label.ui-widget-content{border-bottom:none}.ui-controlgroup-vertical .ui-spinner-input{width:75%;width:calc( 100% - 2.4em )}.ui-controlgroup-vertical .ui-spinner .ui-spinner-up{border-top-style:solid}.ui-checkboxradio-label .ui-icon-background{box-shadow:inset 1px 1px 1px #ccc;border-radius:.12em;border:none}.ui-checkboxradio-radio-label .ui-icon-background{width:16px;height:16px;border-radius:1em;overflow:visible;border:none}.ui-checkboxradio-radio-label.ui-checkboxradio-checked .ui-icon,.ui-checkboxradio-radio-label.ui-checkboxradio-checked:hover .ui-icon{background-image:none;width:8px;height:8px;border-width:4px;border-style:solid}.ui-checkboxradio-disabled{pointer-events:none}.ui-datepicker{width:17em;padding:.2em .2em 0;display:none}.ui-datepicker .ui-datepicker-header{position:relative;padding:.2em 0}.ui-datepicker .ui-datepicker-prev,.ui-datepicker .ui-datepicker-next{position:absolute;top:2px;width:1.8em;height:1.8em}.ui-datepicker .ui-datepicker-prev-hover,.ui-datepicker .ui-datepicker-next-hover{top:1px}.ui-datepicker .ui-datepicker-prev{left:2px}.ui-datepicker .ui-datepicker-next{right:2px}.ui-datepicker .ui-datepicker-prev-hover{left:1px}.ui-datepicker .ui-datepicker-next-hover{right:1px}.ui-datepicker .ui-datepicker-prev span,.ui-datepicker .ui-datepicker-next span{display:block;position:absolute;left:50%;margin-left:-8px;top:50%;margin-top:-8px}.ui-datepicker .ui-datepicker-title{margin:0 2.3em;line-height:1.8em;text-align:center}.ui-datepicker .ui-datepicker-title select{font-size:1em;margin:1px 0}.ui-datepicker select.ui-datepicker-month,.ui-datepicker select.ui-datepicker-year{width:45%}.ui-datepicker table{width:100%;font-size:.9em;border-collapse:collapse;margin:0 0 .4em}.ui-datepicker th{padding:.7em .3em;text-align:center;font-weight:bold;border:0}.ui-datepicker td{border:0;padding:1px}.ui-datepicker td span,.ui-datepicker td a{display:block;padding:.2em;text-align:right;text-decoration:none}.ui-datepicker .ui-datepicker-buttonpane{background-image:none;margin:.7em 0 0 0;padding:0 .2em;border-left:0;border-right:0;border-bottom:0}.ui-datepicker .ui-datepicker-buttonpane button{float:right;margin:.5em .2em .4em;cursor:pointer;padding:.2em .6em .3em .6em;width:auto;overflow:visible}.ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current{float:left}.ui-datepicker.ui-datepicker-multi{width:auto}.ui-datepicker-multi .ui-datepicker-group{float:left}.ui-datepicker-multi .ui-datepicker-group table{width:95%;margin:0 auto .4em}.ui-datepicker-multi-2 .ui-datepicker-group{width:50%}.ui-datepicker-multi-3 .ui-datepicker-group{width:33.3%}.ui-datepicker-multi-4 .ui-datepicker-group{width:25%}.ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header,.ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header{border-left-width:0}.ui-datepicker-multi .ui-datepicker-buttonpane{clear:left}.ui-datepicker-row-break{clear:both;width:100%;font-size:0}.ui-datepicker-rtl{direction:rtl}.ui-datepicker-rtl .ui-datepicker-prev{right:2px;left:auto}.ui-datepicker-rtl .ui-datepicker-next{left:2px;right:auto}.ui-datepicker-rtl .ui-datepicker-prev:hover{right:1px;left:auto}.ui-datepicker-rtl .ui-datepicker-next:hover{left:1px;right:auto}.ui-datepicker-rtl .ui-datepicker-buttonpane{clear:right}.ui-datepicker-rtl .ui-datepicker-buttonpane button{float:left}.ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current,.ui-datepicker-rtl .ui-datepicker-group{float:right}.ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header,.ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header{border-right-width:0;border-left-width:1px}.ui-datepicker .ui-icon{display:block;text-indent:-99999px;overflow:hidden;background-repeat:no-repeat;left:.5em;top:.3em}.ui-dialog{position:absolute;top:0;left:0;padding:.2em;outline:0}.ui-dialog .ui-dialog-titlebar{padding:.4em 1em;position:relative}.ui-dialog .ui-dialog-title{float:left;margin:.1em 0;white-space:nowrap;width:90%;overflow:hidden;text-overflow:ellipsis}.ui-dialog .ui-dialog-titlebar-close{position:absolute;right:.3em;top:50%;width:20px;margin:-10px 0 0 0;padding:1px;height:20px}.ui-dialog .ui-dialog-content{position:relative;border:0;padding:.5em 1em;background:none;overflow:auto}.ui-dialog .ui-dialog-buttonpane{text-align:left;border-width:1px 0 0 0;background-image:none;margin-top:.5em;padding:.3em 1em .5em .4em}.ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset{float:right}.ui-dialog .ui-dialog-buttonpane button{margin:.5em .4em .5em 0;cursor:pointer}.ui-dialog .ui-resizable-n{height:2px;top:0}.ui-dialog .ui-resizable-e{width:2px;right:0}.ui-dialog .ui-resizable-s{height:2px;bottom:0}.ui-dialog .ui-resizable-w{width:2px;left:0}.ui-dialog .ui-resizable-se,.ui-dialog .ui-resizable-sw,.ui-dialog .ui-resizable-ne,.ui-dialog .ui-resizable-nw{width:7px;height:7px}.ui-dialog .ui-resizable-se{right:0;bottom:0}.ui-dialog .ui-resizable-sw{left:0;bottom:0}.ui-dialog .ui-resizable-ne{right:0;top:0}.ui-dialog .ui-resizable-nw{left:0;top:0}.ui-draggable .ui-dialog-titlebar{cursor:move}.ui-draggable-handle{-ms-touch-action:none;touch-action:none}.ui-resizable{position:relative}.ui-resizable-handle{position:absolute;font-size:0.1px;display:block;-ms-touch-action:none;touch-action:none}.ui-resizable-disabled .ui-resizable-handle,.ui-resizable-autohide .ui-resizable-handle{display:none}.ui-resizable-n{cursor:n-resize;height:7px;width:100%;top:-5px;left:0}.ui-resizable-s{cursor:s-resize;height:7px;width:100%;bottom:-5px;left:0}.ui-resizable-e{cursor:e-resize;width:7px;right:-5px;top:0;height:100%}.ui-resizable-w{cursor:w-resize;width:7px;left:-5px;top:0;height:100%}.ui-resizable-se{cursor:se-resize;width:12px;height:12px;right:1px;bottom:1px}.ui-resizable-sw{cursor:sw-resize;width:9px;height:9px;left:-5px;bottom:-5px}.ui-resizable-nw{cursor:nw-resize;width:9px;height:9px;left:-5px;top:-5px}.ui-resizable-ne{cursor:ne-resize;width:9px;height:9px;right:-5px;top:-5px}.ui-progressbar{height:2em;text-align:left;overflow:hidden}.ui-progressbar .ui-progressbar-value{margin:-1px;height:100%}.ui-progressbar .ui-progressbar-overlay{background:url("data:image/gif;base64,R0lGODlhKAAoAIABAAAAAP///yH/C05FVFNDQVBFMi4wAwEAAAAh+QQJAQABACwAAAAAKAAoAAACkYwNqXrdC52DS06a7MFZI+4FHBCKoDeWKXqymPqGqxvJrXZbMx7Ttc+w9XgU2FB3lOyQRWET2IFGiU9m1frDVpxZZc6bfHwv4c1YXP6k1Vdy292Fb6UkuvFtXpvWSzA+HycXJHUXiGYIiMg2R6W459gnWGfHNdjIqDWVqemH2ekpObkpOlppWUqZiqr6edqqWQAAIfkECQEAAQAsAAAAACgAKAAAApSMgZnGfaqcg1E2uuzDmmHUBR8Qil95hiPKqWn3aqtLsS18y7G1SzNeowWBENtQd+T1JktP05nzPTdJZlR6vUxNWWjV+vUWhWNkWFwxl9VpZRedYcflIOLafaa28XdsH/ynlcc1uPVDZxQIR0K25+cICCmoqCe5mGhZOfeYSUh5yJcJyrkZWWpaR8doJ2o4NYq62lAAACH5BAkBAAEALAAAAAAoACgAAAKVDI4Yy22ZnINRNqosw0Bv7i1gyHUkFj7oSaWlu3ovC8GxNso5fluz3qLVhBVeT/Lz7ZTHyxL5dDalQWPVOsQWtRnuwXaFTj9jVVh8pma9JjZ4zYSj5ZOyma7uuolffh+IR5aW97cHuBUXKGKXlKjn+DiHWMcYJah4N0lYCMlJOXipGRr5qdgoSTrqWSq6WFl2ypoaUAAAIfkECQEAAQAsAAAAACgAKAAAApaEb6HLgd/iO7FNWtcFWe+ufODGjRfoiJ2akShbueb0wtI50zm02pbvwfWEMWBQ1zKGlLIhskiEPm9R6vRXxV4ZzWT2yHOGpWMyorblKlNp8HmHEb/lCXjcW7bmtXP8Xt229OVWR1fod2eWqNfHuMjXCPkIGNileOiImVmCOEmoSfn3yXlJWmoHGhqp6ilYuWYpmTqKUgAAIfkECQEAAQAsAAAAACgAKAAAApiEH6kb58biQ3FNWtMFWW3eNVcojuFGfqnZqSebuS06w5V80/X02pKe8zFwP6EFWOT1lDFk8rGERh1TTNOocQ61Hm4Xm2VexUHpzjymViHrFbiELsefVrn6XKfnt2Q9G/+Xdie499XHd2g4h7ioOGhXGJboGAnXSBnoBwKYyfioubZJ2Hn0RuRZaflZOil56Zp6iioKSXpUAAAh+QQJAQABACwAAAAAKAAoAAACkoQRqRvnxuI7kU1a1UU5bd5tnSeOZXhmn5lWK3qNTWvRdQxP8qvaC+/yaYQzXO7BMvaUEmJRd3TsiMAgswmNYrSgZdYrTX6tSHGZO73ezuAw2uxuQ+BbeZfMxsexY35+/Qe4J1inV0g4x3WHuMhIl2jXOKT2Q+VU5fgoSUI52VfZyfkJGkha6jmY+aaYdirq+lQAACH5BAkBAAEALAAAAAAoACgAAAKWBIKpYe0L3YNKToqswUlvznigd4wiR4KhZrKt9Upqip61i9E3vMvxRdHlbEFiEXfk9YARYxOZZD6VQ2pUunBmtRXo1Lf8hMVVcNl8JafV38aM2/Fu5V16Bn63r6xt97j09+MXSFi4BniGFae3hzbH9+hYBzkpuUh5aZmHuanZOZgIuvbGiNeomCnaxxap2upaCZsq+1kAACH5BAkBAAEALAAAAAAoACgAAAKXjI8By5zf4kOxTVrXNVlv1X0d8IGZGKLnNpYtm8Lr9cqVeuOSvfOW79D9aDHizNhDJidFZhNydEahOaDH6nomtJjp1tutKoNWkvA6JqfRVLHU/QUfau9l2x7G54d1fl995xcIGAdXqMfBNadoYrhH+Mg2KBlpVpbluCiXmMnZ2Sh4GBqJ+ckIOqqJ6LmKSllZmsoq6wpQAAAh+QQJAQABACwAAAAAKAAoAAAClYx/oLvoxuJDkU1a1YUZbJ59nSd2ZXhWqbRa2/gF8Gu2DY3iqs7yrq+xBYEkYvFSM8aSSObE+ZgRl1BHFZNr7pRCavZ5BW2142hY3AN/zWtsmf12p9XxxFl2lpLn1rseztfXZjdIWIf2s5dItwjYKBgo9yg5pHgzJXTEeGlZuenpyPmpGQoKOWkYmSpaSnqKileI2FAAACH5BAkBAAEALAAAAAAoACgAAAKVjB+gu+jG4kORTVrVhRlsnn2dJ3ZleFaptFrb+CXmO9OozeL5VfP99HvAWhpiUdcwkpBH3825AwYdU8xTqlLGhtCosArKMpvfa1mMRae9VvWZfeB2XfPkeLmm18lUcBj+p5dnN8jXZ3YIGEhYuOUn45aoCDkp16hl5IjYJvjWKcnoGQpqyPlpOhr3aElaqrq56Bq7VAAAOw==");height:100%;-ms-filter:"alpha(opacity=25)";opacity:0.25}.ui-progressbar-indeterminate .ui-progressbar-value{background-image:none}.ui-selectable{-ms-touch-action:none;touch-action:none}.ui-selectable-helper{position:absolute;z-index:100;border:1px dotted black}.ui-selectmenu-menu{padding:0;margin:0;position:absolute;top:0;left:0;display:none}.ui-selectmenu-menu .ui-menu{overflow:auto;overflow-x:hidden;padding-bottom:1px}.ui-selectmenu-menu .ui-menu .ui-selectmenu-optgroup{font-size:1em;font-weight:bold;line-height:1.5;padding:2px 0.4em;margin:0.5em 0 0 0;height:auto;border:0}.ui-selectmenu-open{display:block}.ui-selectmenu-text{display:block;margin-right:20px;overflow:hidden;text-overflow:ellipsis}.ui-selectmenu-button.ui-button{text-align:left;white-space:nowrap;width:14em}.ui-selectmenu-icon.ui-icon{float:right;margin-top:0}.ui-slider{position:relative;text-align:left}.ui-slider .ui-slider-handle{position:absolute;z-index:2;width:1.2em;height:1.2em;cursor:pointer;-ms-touch-action:none;touch-action:none}.ui-slider .ui-slider-range{position:absolute;z-index:1;font-size:.7em;display:block;border:0;background-position:0 0}.ui-slider.ui-state-disabled .ui-slider-handle,.ui-slider.ui-state-disabled .ui-slider-range{filter:inherit}.ui-slider-horizontal{height:.8em}.ui-slider-horizontal .ui-slider-handle{top:-.3em;margin-left:-.6em}.ui-slider-horizontal .ui-slider-range{top:0;height:100%}.ui-slider-horizontal .ui-slider-range-min{left:0}.ui-slider-horizontal .ui-slider-range-max{right:0}.ui-slider-vertical{width:.8em;height:100px}.ui-slider-vertical .ui-slider-handle{left:-.3em;margin-left:0;margin-bottom:-.6em}.ui-slider-vertical .ui-slider-range{left:0;width:100%}.ui-slider-vertical .ui-slider-range-min{bottom:0}.ui-slider-vertical .ui-slider-range-max{top:0}.ui-sortable-handle{-ms-touch-action:none;touch-action:none}.ui-spinner{position:relative;display:inline-block;overflow:hidden;padding:0;vertical-align:middle}.ui-spinner-input{border:none;background:none;color:inherit;padding:.222em 0;margin:.2em 0;vertical-align:middle;margin-left:.4em;margin-right:2em}.ui-spinner-button{width:1.6em;height:50%;font-size:.5em;padding:0;margin:0;text-align:center;position:absolute;cursor:default;display:block;overflow:hidden;right:0}.ui-spinner a.ui-spinner-button{border-top-style:none;border-bottom-style:none;border-right-style:none}.ui-spinner-up{top:0}.ui-spinner-down{bottom:0}.ui-tabs{position:relative;padding:.2em}.ui-tabs .ui-tabs-nav{margin:0;padding:.2em .2em 0}.ui-tabs .ui-tabs-nav li{list-style:none;float:left;position:relative;top:0;margin:1px .2em 0 0;border-bottom-width:0;padding:0;white-space:nowrap}.ui-tabs .ui-tabs-nav .ui-tabs-anchor{float:left;padding:.5em 1em;text-decoration:none}.ui-tabs .ui-tabs-nav li.ui-tabs-active{margin-bottom:-1px;padding-bottom:1px}.ui-tabs .ui-tabs-nav li.ui-tabs-active .ui-tabs-anchor,.ui-tabs .ui-tabs-nav li.ui-state-disabled .ui-tabs-anchor,.ui-tabs .ui-tabs-nav li.ui-tabs-loading .ui-tabs-anchor{cursor:text}.ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-active .ui-tabs-anchor{cursor:pointer}.ui-tabs .ui-tabs-panel{display:block;border-width:0;padding:1em 1.4em;background:none}.ui-tooltip{padding:8px;position:absolute;z-index:9999;max-width:300px}body .ui-tooltip{border-width:2px}.ui-widget{font-family:Arial,Helvetica,sans-serif;font-size:1em}.ui-widget .ui-widget{font-size:1em}.ui-widget input,.ui-widget select,.ui-widget textarea,.ui-widget button{font-family:Arial,Helvetica,sans-serif;font-size:1em}.ui-widget.ui-widget-content{border:1px solid #c5c5c5}.ui-widget-content{border:1px solid #ddd;background:#fff;color:#333}.ui-widget-content a{color:#333}.ui-widget-header{border:1px solid #ddd;background:#e9e9e9;color:#333;font-weight:bold}.ui-widget-header a{color:#333}.ui-state-default,.ui-widget-content .ui-state-default,.ui-widget-header .ui-state-default,.ui-button,html .ui-button.ui-state-disabled:hover,html .ui-button.ui-state-disabled:active{border:1px solid #c5c5c5;background:#f6f6f6;font-weight:normal;color:#454545}.ui-state-default a,.ui-state-default a:link,.ui-state-default a:visited,a.ui-button,a:link.ui-button,a:visited.ui-button,.ui-button{color:#454545;text-decoration:none}.ui-state-hover,.ui-widget-content .ui-state-hover,.ui-widget-header .ui-state-hover,.ui-state-focus,.ui-widget-content .ui-state-focus,.ui-widget-header .ui-state-focus,.ui-button:hover,.ui-button:focus{border:1px solid #ccc;background:#ededed;font-weight:normal;color:#2b2b2b}.ui-state-hover a,.ui-state-hover a:hover,.ui-state-hover a:link,.ui-state-hover a:visited,.ui-state-focus a,.ui-state-focus a:hover,.ui-state-focus a:link,.ui-state-focus a:visited,a.ui-button:hover,a.ui-button:focus{color:#2b2b2b;text-decoration:none}.ui-visual-focus{box-shadow:0 0 3px 1px rgb(94,158,214)}.ui-state-active,.ui-widget-content .ui-state-active,.ui-widget-header .ui-state-active,a.ui-button:active,.ui-button:active,.ui-button.ui-state-active:hover{border:1px solid #003eff;background:#007fff;font-weight:normal;color:#fff}.ui-icon-background,.ui-state-active .ui-icon-background{border:#003eff;background-color:#fff}.ui-state-active a,.ui-state-active a:link,.ui-state-active a:visited{color:#fff;text-decoration:none}.ui-state-highlight,.ui-widget-content .ui-state-highlight,.ui-widget-header .ui-state-highlight{border:1px solid #dad55e;background:#fffa90;color:#777620}.ui-state-checked{border:1px solid #dad55e;background:#fffa90}.ui-state-highlight a,.ui-widget-content .ui-state-highlight a,.ui-widget-header .ui-state-highlight a{color:#777620}.ui-state-error,.ui-widget-content .ui-state-error,.ui-widget-header .ui-state-error{border:1px solid #f1a899;background:#fddfdf;color:#5f3f3f}.ui-state-error a,.ui-widget-content .ui-state-error a,.ui-widget-header .ui-state-error a{color:#5f3f3f}.ui-state-error-text,.ui-widget-content .ui-state-error-text,.ui-widget-header .ui-state-error-text{color:#5f3f3f}.ui-priority-primary,.ui-widget-content .ui-priority-primary,.ui-widget-header .ui-priority-primary{font-weight:bold}.ui-priority-secondary,.ui-widget-content .ui-priority-secondary,.ui-widget-header .ui-priority-secondary{opacity:.7;-ms-filter:"alpha(opacity=70)";font-weight:normal}.ui-state-disabled,.ui-widget-content .ui-state-disabled,.ui-widget-header .ui-state-disabled{opacity:.35;-ms-filter:"alpha(opacity=35)";background-image:none}.ui-state-disabled .ui-icon{-ms-filter:"alpha(opacity=35)"}.ui-icon{width:16px;height:16px}.ui-state-active .ui-icon,.ui-button:active .ui-icon{background-image:url("images/ui-icons_ffffff_256x240.png")}.ui-state-highlight .ui-icon,.ui-button .ui-state-highlight.ui-icon{background-image:url("images/ui-icons_777620_256x240.png")}.ui-state-error .ui-icon,.ui-state-error-text .ui-icon{background-image:url("images/ui-icons_cc0000_256x240.png")}.ui-button .ui-icon{background-image:url("images/ui-icons_777777_256x240.png")}.ui-icon-blank.ui-icon-blank.ui-icon-blank{background-image:none}.ui-icon-caret-1-n{background-position:0 0}.ui-icon-caret-1-ne{background-position:-16px 0}.ui-icon-caret-1-e{background-position:-32px 0}.ui-icon-caret-1-se{background-position:-48px 0}.ui-icon-caret-1-s{background-position:-65px 0}.ui-icon-caret-1-sw{background-position:-80px 0}.ui-icon-caret-1-w{background-position:-96px 0}.ui-icon-caret-1-nw{background-position:-112px 0}.ui-icon-caret-2-n-s{background-position:-128px 0}.ui-icon-caret-2-e-w{background-position:-144px 0}.ui-icon-triangle-1-n{background-position:0 -16px}.ui-icon-triangle-1-ne{background-position:-16px -16px}.ui-icon-triangle-1-e{background-position:-32px -16px}.ui-icon-triangle-1-se{background-position:-48px -16px}.ui-icon-triangle-1-s{background-position:-65px -16px}.ui-icon-triangle-1-sw{background-position:-80px -16px}.ui-icon-triangle-1-w{background-position:-96px -16px}.ui-icon-triangle-1-nw{background-position:-112px -16px}.ui-icon-triangle-2-n-s{background-position:-128px -16px}.ui-icon-triangle-2-e-w{background-position:-144px -16px}.ui-icon-arrow-1-n{background-position:0 -32px}.ui-icon-arrow-1-ne{background-position:-16px -32px}.ui-icon-arrow-1-e{background-position:-32px -32px}.ui-icon-arrow-1-se{background-position:-48px -32px}.ui-icon-arrow-1-s{background-position:-65px -32px}.ui-icon-arrow-1-sw{background-position:-80px -32px}.ui-icon-arrow-1-w{background-position:-96px -32px}.ui-icon-arrow-1-nw{background-position:-112px -32px}.ui-icon-arrow-2-n-s{background-position:-128px -32px}.ui-icon-arrow-2-ne-sw{background-position:-144px -32px}.ui-icon-arrow-2-e-w{background-position:-160px -32px}.ui-icon-arrow-2-se-nw{background-position:-176px -32px}.ui-icon-arrowstop-1-n{background-position:-192px -32px}.ui-icon-arrowstop-1-e{background-position:-208px -32px}.ui-icon-arrowstop-1-s{background-position:-224px -32px}.ui-icon-arrowstop-1-w{background-position:-240px -32px}.ui-icon-arrowthick-1-n{background-position:1px -48px}.ui-icon-arrowthick-1-ne{background-position:-16px -48px}.ui-icon-arrowthick-1-e{background-position:-32px -48px}.ui-icon-arrowthick-1-se{background-position:-48px -48px}.ui-icon-arrowthick-1-s{background-position:-64px -48px}.ui-icon-arrowthick-1-sw{background-position:-80px -48px}.ui-icon-arrowthick-1-w{background-position:-96px -48px}.ui-icon-arrowthick-1-nw{background-position:-112px -48px}.ui-icon-arrowthick-2-n-s{background-position:-128px -48px}.ui-icon-arrowthick-2-ne-sw{background-position:-144px -48px}.ui-icon-arrowthick-2-e-w{background-position:-160px -48px}.ui-icon-arrowthick-2-se-nw{background-position:-176px -48px}.ui-icon-arrowthickstop-1-n{background-position:-192px -48px}.ui-icon-arrowthickstop-1-e{background-position:-208px -48px}.ui-icon-arrowthickstop-1-s{background-position:-224px -48px}.ui-icon-arrowthickstop-1-w{background-position:-240px -48px}.ui-icon-arrowreturnthick-1-w{background-position:0 -64px}.ui-icon-arrowreturnthick-1-n{background-position:-16px -64px}.ui-icon-arrowreturnthick-1-e{background-position:-32px -64px}.ui-icon-arrowreturnthick-1-s{background-position:-48px -64px}.ui-icon-arrowreturn-1-w{background-position:-64px -64px}.ui-icon-arrowreturn-1-n{background-position:-80px -64px}.ui-icon-arrowreturn-1-e{background-position:-96px -64px}.ui-icon-arrowreturn-1-s{background-position:-112px -64px}.ui-icon-arrowrefresh-1-w{background-position:-128px -64px}.ui-icon-arrowrefresh-1-n{background-position:-144px -64px}.ui-icon-arrowrefresh-1-e{background-position:-160px -64px}.ui-icon-arrowrefresh-1-s{background-position:-176px -64px}.ui-icon-arrow-4{background-position:0 -80px}.ui-icon-arrow-4-diag{background-position:-16px -80px}.ui-icon-extlink{background-position:-32px -80px}.ui-icon-newwin{background-position:-48px -80px}.ui-icon-refresh{background-position:-64px -80px}.ui-icon-shuffle{background-position:-80px -80px}.ui-icon-transfer-e-w{background-position:-96px -80px}.ui-icon-transferthick-e-w{background-position:-112px -80px}.ui-icon-folder-collapsed{background-position:0 -96px}.ui-icon-folder-open{background-position:-16px -96px}.ui-icon-document{background-position:-32px -96px}.ui-icon-document-b{background-position:-48px -96px}.ui-icon-note{background-position:-64px -96px}.ui-icon-mail-closed{background-position:-80px -96px}.ui-icon-mail-open{background-position:-96px -96px}.ui-icon-suitcase{background-position:-112px -96px}.ui-icon-comment{background-position:-128px -96px}.ui-icon-person{background-position:-144px -96px}.ui-icon-print{background-position:-160px -96px}.ui-icon-trash{background-position:-176px -96px}.ui-icon-locked{background-position:-192px -96px}.ui-icon-unlocked{background-position:-208px -96px}.ui-icon-bookmark{background-position:-224px -96px}.ui-icon-tag{background-position:-240px -96px}.ui-icon-home{background-position:0 -112px}.ui-icon-flag{background-position:-16px -112px}.ui-icon-calendar{background-position:-32px -112px}.ui-icon-cart{background-position:-48px -112px}.ui-icon-pencil{background-position:-64px -112px}.ui-icon-clock{background-position:-80px -112px}.ui-icon-disk{background-position:-96px -112px}.ui-icon-calculator{background-position:-112px -112px}.ui-icon-zoomin{background-position:-128px -112px}.ui-icon-zoomout{background-position:-144px -112px}.ui-icon-search{background-position:-160px -112px}.ui-icon-wrench{background-position:-176px -112px}.ui-icon-gear{background-position:-192px -112px}.ui-icon-heart{background-position:-208px -112px}.ui-icon-star{background-position:-224px -112px}.ui-icon-link{background-position:-240px -112px}.ui-icon-cancel{background-position:0 -128px}.ui-icon-plus{background-position:-16px -128px}.ui-icon-plusthick{background-position:-32px -128px}.ui-icon-minus{background-position:-48px -128px}.ui-icon-minusthick{background-position:-64px -128px}.ui-icon-close{background-position:-80px -128px}.ui-icon-closethick{background-position:-96px -128px}.ui-icon-key{background-position:-112px -128px}.ui-icon-lightbulb{background-position:-128px -128px}.ui-icon-scissors{background-position:-144px -128px}.ui-icon-clipboard{background-position:-160px -128px}.ui-icon-copy{background-position:-176px -128px}.ui-icon-contact{background-position:-192px -128px}.ui-icon-image{background-position:-208px -128px}.ui-icon-video{background-position:-224px -128px}.ui-icon-script{background-position:-240px -128px}.ui-icon-alert{background-position:0 -144px}.ui-icon-info{background-position:-16px -144px}.ui-icon-notice{background-position:-32px -144px}.ui-icon-help{background-position:-48px -144px}.ui-icon-check{background-position:-64px -144px}.ui-icon-bullet{background-position:-80px -144px}.ui-icon-radio-on{background-position:-96px -144px}.ui-icon-radio-off{background-position:-112px -144px}.ui-icon-pin-w{background-position:-128px -144px}.ui-icon-pin-s{background-position:-144px -144px}.ui-icon-play{background-position:0 -160px}.ui-icon-pause{background-position:-16px -160px}.ui-icon-seek-next{background-position:-32px -160px}.ui-icon-seek-prev{background-position:-48px -160px}.ui-icon-seek-end{background-position:-64px -160px}.ui-icon-seek-start{background-position:-80px -160px}.ui-icon-seek-first{background-position:-80px -160px}.ui-icon-stop{background-position:-96px -160px}.ui-icon-eject{background-position:-112px -160px}.ui-icon-volume-off{background-position:-128px -160px}.ui-icon-volume-on{background-position:-144px -160px}.ui-icon-power{background-position:0 -176px}.ui-icon-signal-diag{background-position:-16px -176px}.ui-icon-signal{background-position:-32px -176px}.ui-icon-battery-0{background-position:-48px -176px}.ui-icon-battery-1{background-position:-64px -176px}.ui-icon-battery-2{background-position:-80px -176px}.ui-icon-battery-3{background-position:-96px -176px}.ui-icon-circle-plus{background-position:0 -192px}.ui-icon-circle-minus{background-position:-16px -192px}.ui-icon-circle-close{background-position:-32px -192px}.ui-icon-circle-triangle-e{background-position:-48px -192px}.ui-icon-circle-triangle-s{background-position:-64px -192px}.ui-icon-circle-triangle-w{background-position:-80px -192px}.ui-icon-circle-triangle-n{background-position:-96px -192px}.ui-icon-circle-arrow-e{background-position:-112px -192px}.ui-icon-circle-arrow-s{background-position:-128px -192px}.ui-icon-circle-arrow-w{background-position:-144px -192px}.ui-icon-circle-arrow-n{background-position:-160px -192px}.ui-icon-circle-zoomin{background-position:-176px -192px}.ui-icon-circle-zoomout{background-position:-192px -192px}.ui-icon-circle-check{background-position:-208px -192px}.ui-icon-circlesmall-plus{background-position:0 -208px}.ui-icon-circlesmall-minus{background-position:-16px -208px}.ui-icon-circlesmall-close{background-position:-32px -208px}.ui-icon-squaresmall-plus{background-position:-48px -208px}.ui-icon-squaresmall-minus{background-position:-64px -208px}.ui-icon-squaresmall-close{background-position:-80px -208px}.ui-icon-grip-dotted-vertical{background-position:0 -224px}.ui-icon-grip-dotted-horizontal{background-position:-16px -224px}.ui-icon-grip-solid-vertical{background-position:-32px -224px}.ui-icon-grip-solid-horizontal{background-position:-48px -224px}.ui-icon-gripsmall-diagonal-se{background-position:-64px -224px}.ui-icon-grip-diagonal-se{background-position:-80px -224px}.ui-corner-all,.ui-corner-top,.ui-corner-left,.ui-corner-tl{border-top-left-radius:3px}.ui-corner-all,.ui-corner-top,.ui-corner-right,.ui-corner-tr{border-top-right-radius:3px}.ui-corner-all,.ui-corner-bottom,.ui-corner-left,.ui-corner-bl{border-bottom-left-radius:3px}.ui-corner-all,.ui-corner-bottom,.ui-corner-right,.ui-corner-br{border-bottom-right-radius:3px}.ui-widget-overlay{background:#aaa;opacity:.003;-ms-filter:Alpha(Opacity=.3)}.ui-widget-shadow{-webkit-box-shadow:0 0 5px #666;box-shadow:0 0 5px #666}
\ No newline at end of file
diff --git a/pandora_console/include/styles/js/jquery-ui_custom.css b/pandora_console/include/styles/js/jquery-ui_custom.css
index c6fc0ae8f7..947c858025 100644
--- a/pandora_console/include/styles/js/jquery-ui_custom.css
+++ b/pandora_console/include/styles/js/jquery-ui_custom.css
@@ -107,24 +107,51 @@
height: 30px;
width: 90px;
}
-.ui-widget-header .ui-icon {
- background-image: url(../images/ui-icons_444444_256x240.png);
+
+.ui-datepicker-prev {
+ margin-top: 5px;
+ background: url(../../../images/arrow_left_green.png) no-repeat 0 0 !important;
}
-.ui-icon,
-.ui-widget-content .ui-icon {
- background-image: url(../images/ui-icons_444444_256x240.png);
+
+.ui-datepicker-next {
+ margin-top: 5px;
+ background: url(../../../images/arrow_right_green.png) no-repeat 0 0 !important;
}
+
.ui-widget-content {
background: #fff;
}
.ui-state-default,
.ui-widget-content .ui-state-default,
.ui-widget-header .ui-state-default {
- margin-top: 3px;
border-bottom: 0;
background: transparent;
font-weight: normal;
color: #555555;
+ border-radius: 50%;
+ text-align: center;
+ border: 2px solid #ccc;
+}
+.ui-datepicker td,
+a.ui-state-default,
+.ui-datepicker td a {
+ width: 30px !important;
+ height: 30px !important;
+}
+a.ui-state-default:hover {
+ background-color: #82b92e;
+}
+a.ui-state-default > span {
+ text-align: center;
+ margin-top: 2px;
+}
+a.ui-state-default > span:hover {
+ font-weight: bold !important;
+}
+.ui-datepicker-current-day > a {
+ background-color: #82b92e !important;
+ font-weight: bold !important;
+ border: 2px solid #000 !important;
}
.ui-corner-all,
.ui-corner-top,
@@ -153,13 +180,44 @@
#ui-datepicker-div {
border-color: #b1b1b1;
background: #ffffff;
+ border-radius: 15px;
+ overflow: hidden;
+ position: absolute;
+ width: 350px !important;
+ border: 2px solid var(--primary-color);
+}
+.ui-datepicker .ui-datepicker-header {
+ position: relative;
+ padding: 0.2em 0;
+ border-radius: 15px 15px 0px 0px;
+}
+.ui-datepicker-title,
+.ui-datepicker-month,
+.ui-datepicker-year {
+ height: 30px;
+}
+.ui-datepicker-month,
+.ui-datepicker-year {
+ width: 100px !important;
+}
+.ui-datepicker-month {
+ margin-left: -10px !important;
+ margin-right: 25px !important;
}
.ui-widget-header {
- background: #b1b1b1;
+ background: white;
color: #ffffff;
}
.ui-datepicker-calendar th {
- background-color: #3f3f3f;
+ background-color: #fff;
+ padding-left: 15px;
+ text-align: initial;
+}
+.ui-datepicker-calendar th span {
+ color: #000;
+}
+.ui-widget-header {
+ height: 20px !important;
}
.ui-dialog .ui-widget-header {
margin: 3px 3px 0px 3px;
@@ -175,7 +233,10 @@
margin: 0px 15px 0px 15px;
}
.ui-timepicker-div .ui-datepicker-title {
- color: white;
+ color: black;
+}
+.ui-timepicker-div dl {
+ margin-top: 0px !important;
}
.ui-datepicker-buttonpane button {
border-color: #b1b1b1;
@@ -200,7 +261,6 @@
border: 0px;
}
-.ui-state-hover .ui-icon,
.ui-state-focus .ui-icon,
.ui-button:hover .ui-icon,
.ui-button:focus .ui-icon {
@@ -233,35 +293,6 @@ a.ui-button:active,
border: none;
}
-.ui-state-hover:before,
-.ui-widget-content .ui-state-hover:before,
-.ui-widget-header .ui-state-hover:before {
- content: "";
- position: absolute;
- left: 25%;
- bottom: -10%;
- height: 1px;
- width: 50%;
- border-bottom: 4px solid #82b92e;
-}
-
-.ui-priority-secondary:hover {
- content: "";
- position: absolute;
- bottom: -5px;
- width: 100%;
- border-bottom: 5px solid #82b92e;
-}
-
-.ui-priority-primary:hover {
- content: "";
- position: absolute;
- right: 5px;
- bottom: -5px;
- width: 100%;
- border-bottom: 5px solid #82b92e;
-}
-
.ui-state-active,
.ui-widget-content .ui-state-active,
.ui-widget-header .ui-state-active {
@@ -314,3 +345,21 @@ input[type="submit"].ui-button-dialog {
height: 30px;
width: 90px;
}
+
+.ui-priority-primary,
+.ui-priority-secondary {
+ background-color: #fff !important;
+ color: var(--primary-color) !important;
+ border: 2px solid var(--primary-color) !important;
+ box-shadow: none !important;
+}
+
+.ui-timepicker-div > dl dt,
+.ui-timepicker-div > dl dd {
+ font-weight: bold !important;
+}
+
+.ui-timepicker-div > dl dt,
+.ui_tpicker_time {
+ margin-left: 10px !important;
+}
diff --git a/pandora_console/include/styles/pandora.css b/pandora_console/include/styles/pandora.css
index abbb50c927..d87d959ac5 100644
--- a/pandora_console/include/styles/pandora.css
+++ b/pandora_console/include/styles/pandora.css
@@ -12562,3 +12562,7 @@ tr[id^="network_component-plugin-snmp-fields-dynamicMacroRow-"] input {
flex-wrap: nowrap;
justify-content: flex-start !important;
}
+
+.ui-date-range-in > a {
+ background-color: #81b92e3b !important;
+}
diff --git a/pandora_console/install.php b/pandora_console/install.php
index 6b4b293a0c..f4b21d1ba4 100644
--- a/pandora_console/install.php
+++ b/pandora_console/install.php
@@ -131,7 +131,7 @@
data[6][3] = html_print_checkbox_switch(
- 'fullscale',
+ 'fullscalee',
1,
(bool) $fullscale,
true,
false
);
+
+ $table->data[7][0] = __('Projection graph');
+ $table->data[7][0] .= ui_print_help_tip(
+ __('Projection graph take as begin date the current time'),
+ true
+ );
+ $table->data[7][1] = html_print_checkbox_switch(
+ 'enable_projected_period',
+ 1,
+ (bool) $enable_projected_period,
+ true
+ );
+
+ $table->data[7][2] = __('Projection period');
+ $table->data[7][3] = '
'.html_print_extended_select_for_time(
+ 'period_projected',
+ $period_projected,
+ '',
+ '',
+ 0,
+ 7,
+ true
+ ).'
';
} else {
$table->data[0][0] = __('Begin date');
$table->data[0][1] = html_print_input_text(
@@ -514,27 +539,29 @@ ui_print_message_dialog(
);
$params = [
- 'agent_module_id' => $id,
- 'period' => $period,
- 'show_events' => $draw_events,
- 'title' => $label,
- 'unit_name' => $unit,
- 'show_alerts' => $draw_alerts,
- 'date' => $date,
- 'unit' => $unit,
- 'baseline' => $baseline,
- 'homeurl' => $urlImage,
- 'adapt_key' => 'adapter_'.$graph_type,
- 'compare' => $time_compare,
- 'show_unknown' => $unknown_graph,
- 'percentil' => (($show_percentil) ? $config['percentil'] : null),
- 'type_graph' => $config['type_module_charts'],
- 'fullscale' => $fullscale,
- 'zoom' => $zoom,
- 'height' => 300,
- 'type_mode_graph' => $type_mode_graph,
- 'histogram' => $histogram,
- 'begin_date' => strtotime($start_date.' '.$start_time),
+ 'agent_module_id' => $id,
+ 'period' => $period,
+ 'show_events' => $draw_events,
+ 'title' => $label,
+ 'unit_name' => $unit,
+ 'show_alerts' => $draw_alerts,
+ 'date' => $date,
+ 'unit' => $unit,
+ 'baseline' => $baseline,
+ 'homeurl' => $urlImage,
+ 'adapt_key' => 'adapter_'.$graph_type,
+ 'compare' => $time_compare,
+ 'show_unknown' => $unknown_graph,
+ 'percentil' => (($show_percentil) ? $config['percentil'] : null),
+ 'type_graph' => $config['type_module_charts'],
+ 'fullscale' => $fullscale,
+ 'zoom' => $zoom,
+ 'height' => 300,
+ 'type_mode_graph' => $type_mode_graph,
+ 'histogram' => $histogram,
+ 'begin_date' => strtotime($start_date.' '.$start_time),
+ 'enable_projected_period' => $enable_projected_period,
+ 'period_projected' => $period_projected,
];
// Graph.
diff --git a/pandora_console/operation/agentes/ver_agente.php b/pandora_console/operation/agentes/ver_agente.php
index 6f5154a42c..8d033185af 100644
--- a/pandora_console/operation/agentes/ver_agente.php
+++ b/pandora_console/operation/agentes/ver_agente.php
@@ -69,6 +69,8 @@ if (is_ajax()) {
$id_group = (int) get_parameter('id_group');
$pendingdelete = (bool) get_parameter('pendingdelete');
$get_node_agent = (bool) get_parameter('get_node_agent', false);
+ $get_agent_inventory_modules = (bool) get_parameter('get_agent_inventory_modules', false);
+ $get_agent_inventory_dates = (bool) get_parameter('get_agent_inventory_dates', false);
$refresh_contact = get_parameter('refresh_contact', 0);
@@ -1328,6 +1330,102 @@ if (is_ajax()) {
}
}
+ if ($get_agent_inventory_modules) {
+ $inventory_id_agent = get_parameter('id_agent');
+ $id_node = (int) get_parameter('id_node');
+
+ $sql = 'SELECT DISTINCT(`name`)
+ FROM tmodule_inventory, tagent_module_inventory
+ WHERE tmodule_inventory.id_module_inventory = tagent_module_inventory.id_module_inventory';
+
+ if ($inventory_id_agent > 0) {
+ $sql .= ' AND id_agente = '.$inventory_id_agent;
+ }
+
+ $fields = [];
+
+ // Get results from all nodes if id_node equals to 0.
+ if ($id_node === 0 && is_metaconsole() === true) {
+ $result = [];
+ $nodes_connection = metaconsole_get_connections();
+
+ foreach ($nodes_connection as $key => $server) {
+ $id_node = $server['id'];
+
+ try {
+ if (is_metaconsole() === true) {
+ $node = new Node($id_node);
+ $node->connect();
+ }
+
+ $node_result = db_get_all_rows_sql($sql);
+
+ if ($node_result === false) {
+ continue;
+ }
+
+ $result = array_merge(
+ $result,
+ $node_result
+ );
+
+ if (is_metaconsole() === true) {
+ $node->disconnect();
+ }
+ } catch (Exception $e) {
+ if ($node !== null) {
+ $node->disconnect();
+ }
+
+ return;
+ }
+ }
+ } else {
+ try {
+ if (is_metaconsole() === true) {
+ $node = new Node($id_node);
+ $node->connect();
+ }
+
+ $result = db_get_all_rows_sql($sql);
+
+ if (is_metaconsole() === true) {
+ $node->disconnect();
+ }
+ } catch (Exception $e) {
+ if ($node !== null) {
+ $node->disconnect();
+ }
+
+ return;
+ }
+ }
+
+ if ($result === false) {
+ $result = [];
+ }
+
+ echo json_encode($result);
+
+ return;
+ }
+
+ if ($get_agent_inventory_dates) {
+ $inventory_module = get_parameter('module', 0);
+ $inventory_id_agent = (int) get_parameter('id_agent', 0);
+ $inventory_id_group = (int) get_parameter('id_group', 0);
+
+ $dates = inventory_get_dates(
+ $inventory_module,
+ $inventory_id_agent,
+ $inventory_id_group
+ );
+
+ echo json_encode($dates);
+
+ return;
+ }
+
return;
}
diff --git a/pandora_console/operation/inventory/inventory.php b/pandora_console/operation/inventory/inventory.php
index 536f470fe6..c753bd599b 100755
--- a/pandora_console/operation/inventory/inventory.php
+++ b/pandora_console/operation/inventory/inventory.php
@@ -32,6 +32,55 @@ use PandoraFMS\Enterprise\Metaconsole\Node;
require_once $config['homedir'].'/include/functions_users.php';
require_once $config['homedir'].'/include/functions_inventory.php';
+// Get different date to search the report.
+$utimestamp = (int) get_parameter('date_end', 0);
+$datetime_end = strtotime($utimestamp.' '.$time_end);
+
+// Calculate new inteval for all reports.
+$custom_date = get_parameter('custom_date', 0);
+$date = get_parameter('date', SECONDS_1DAY);
+$date_text = get_parameter('date_text', SECONDS_1DAY);
+$date_init_less = (strtotime(date('Y-m-j')) - SECONDS_1DAY);
+$date_init = get_parameter('date_init', date(DATE_FORMAT, $date_init_less));
+$time_init = get_parameter('time_init', date(TIME_FORMAT, $date_init_less));
+if ($custom_date === '1') {
+ if ($datetime_init >= $datetime_end) {
+ $datetime_init = $date_init_less;
+ }
+
+ $period = ($datetime_end - $datetime_init);
+} else if ($custom_date === '2') {
+ $date_units = get_parameter('date_units');
+ $utimestamp = date('Y/m/d H:i:s');
+ $date_start = date('Y/m/d H:i:s', (strtotime($utimestamp) - ($date_text * $date_units)));
+ $period = (strtotime($utimestamp) - strtotime($date_start));
+} else if (in_array($date, ['this_week', 'this_month', 'past_week', 'past_month'])) {
+ if ($date === 'this_week') {
+ $monday = date('Y/m/d', strtotime('last monday'));
+
+ $sunday = date('Y/m/d', strtotime($monday.' +6 days'));
+ $period = (strtotime($sunday) - strtotime($monday));
+ $date_init = $monday;
+ $utimestamp = $sunday;
+ } else if ($date === 'this_month') {
+ $utimestamp = date('Y/m/d', strtotime('last day of this month'));
+ $first_of_month = date('Y/m/d', strtotime('first day of this month'));
+ $period = (strtotime($utimestamp) - strtotime($first_of_month));
+ } else if ($date === 'past_month') {
+ $utimestamp = date('Y/m/d', strtotime('last day of previous month'));
+ $first_of_month = date('Y/m/d', strtotime('first day of previous month'));
+ $period = (strtotime($utimestamp) - strtotime($first_of_month));
+ } else if ($date === 'past_week') {
+ $utimestamp = date('Y-m-d', strtotime('sunday', strtotime('last week')));
+ $first_of_week = date('Y-m-d', strtotime('monday', strtotime('last week')));
+ $period = (strtotime($utimestamp) - strtotime($first_of_week));
+ }
+} else {
+ $utimestamp = date('Y/m/d H:i:s');
+ $date_start = date('Y/m/d H:i:s', (strtotime($utimestamp) - $date));
+ $period = (strtotime($utimestamp) - strtotime($date_start));
+}
+
if (is_ajax() === true) {
$get_csv_url = (bool) get_parameter('get_csv_url');
$get_data_basic_info = (bool) get_parameter('get_data_basic_info');
@@ -43,7 +92,6 @@ if (is_ajax() === true) {
// 0 is All groups
$inventory_search_string = (string) get_parameter('search_string');
$export = (string) get_parameter('export');
- $utimestamp = (int) get_parameter('utimestamp', 0);
$inventory_agent = (string) get_parameter('agent', '');
$order_by_agent = (boolean) get_parameter('order_by_agent', 0);
@@ -98,6 +146,7 @@ if (is_ajax() === true) {
$agents_ids,
$inventory_module,
$utimestamp,
+ $period,
$inventory_search_string,
$export,
false,
@@ -122,12 +171,14 @@ if (is_ajax() === true) {
$id_group = (int) get_parameter('id_group', 0);
$params = [
- 'search' => $filter['value'],
- 'start' => $start,
- 'length' => $length,
- 'order' => $order,
- 'id_agent' => $id_agent,
- 'id_group' => $id_group,
+ 'search' => $filter['value'],
+ 'start' => $start,
+ 'length' => $length,
+ 'order' => $order,
+ 'id_agent' => $id_agent,
+ 'id_group' => $id_group,
+ 'utimestamp' => strtotime($utimestamp),
+ 'period' => $period,
];
$data = get_data_basic_info_sql($params);
@@ -677,26 +728,17 @@ $table->data[1][1] = html_print_label_input_block(
// Date filter. In Metaconsole has not reason for show.
if (is_metaconsole() === false) {
- $dates = inventory_get_dates(
- $inventory_module,
- $inventory_id_agent,
- $inventory_id_group
- );
- $table->data[1][2] = html_print_label_input_block(
- __('Date'),
- html_print_select(
- $dates,
+ $table->data[1][2] .= html_print_label_input_block(
+ __('Date').':
',
+ html_print_select_date_range(
'utimestamp',
- $utimestamp,
- '',
- __('Last'),
- 0,
true,
- false,
- false,
- '',
- false,
- 'width:100%;'
+ get_parameter('utimestamp', SECONDS_1DAY),
+ $date_init,
+ $time_init,
+ date('Y/m/d'),
+ date('H:i:s'),
+ $date_text
)
);
}
@@ -1303,6 +1345,9 @@ if ($inventory_module !== 'basic') {
ui_require_jquery_file('pandora.controls');
ui_require_jquery_file('ajaxqueue');
ui_require_jquery_file('bgiframe');
+/*
+ ui_include_time_picker();
+ui_require_jquery_file('ui.datepicker-'.get_user_language(), 'include/javascript/i18n/');*/
?>
diff --git a/pandora_console/operation/netflow/nf_live_view.php b/pandora_console/operation/netflow/nf_live_view.php
index 1b992c7e21..a60abc178a 100644
--- a/pandora_console/operation/netflow/nf_live_view.php
+++ b/pandora_console/operation/netflow/nf_live_view.php
@@ -109,20 +109,39 @@ $interval_length = get_parameter('interval_length', NETFLOW_RES_MEDD);
$address_resolution = (int) get_parameter('address_resolution', ($config['netflow_get_ip_hostname'] ?? ''));
$filter_selected = (int) get_parameter('filter_selected', 0);
-// Read time values.
-$date = get_parameter_post('date', date(DATE_FORMAT, get_system_time()));
-$time = get_parameter_post('time', date(TIME_FORMAT, get_system_time()));
-$end_date = strtotime($date.' '.$time);
-$is_period = (bool) get_parameter('is_period', false);
-$period = (int) get_parameter('period', SECONDS_1DAY);
-$time_lower = get_parameter('time_lower', date(TIME_FORMAT, ($end_date - $period)));
-$date_lower = get_parameter('date_lower', date(DATE_FORMAT, ($end_date - $period)));
-$start_date = ($is_period) ? ($end_date - $period) : strtotime($date_lower.' '.$time_lower);
-if (!$is_period) {
- $period = ($end_date - $start_date);
+// Calculate range dates.
+$custom_date = get_parameter('custom_date', '0');
+$date = get_parameter('date', SECONDS_1DAY);
+if ($custom_date === '1') {
+ $date_init = get_parameter('date_init');
+ $time_init = get_parameter('time_init');
+ $date_end = get_parameter('date_end');
+ $time_end = get_parameter('time_end');
+ $date_from = strtotime($date_init.' '.$time_init);
+ $date_to = strtotime($date_end.' '.$time_end);
+} else if ($custom_date === '2') {
+ $date_text = get_parameter('date_text');
+ $date_units = get_parameter('date_units');
+ $period = ($date_text * $date_units);
+ $date_to = strtotime(date('Y-m-d H:i:s'));
+ $date_from = (strtotime($date_to) - $period);
+} else if (in_array($date, ['this_week', 'this_month', 'past_week', 'past_month'])) {
+ if ($date === 'this_week') {
+ $date_from = strtotime('last monday');
+ $date_to = strtotime($date_from.' +6 days');
+ } else if ($date === 'this_month') {
+ $date_from = strtotime('first day of this month');
+ $date_to = strtotime('last day of this month');
+ } else if ($date === 'past_month') {
+ $date_from = strtotime('first day of previous month');
+ $date_to = strtotime('last day of previous month');
+ } else if ($date === 'past_week') {
+ $date_from = strtotime('monday', strtotime('last week'));
+ $date_to = strtotime('sunday', strtotime('last week'));
+ }
} else {
- $time_lower = date(TIME_FORMAT, $start_date);
- $date_lower = date(DATE_FORMAT, $start_date);
+ $date_to = strtotime(date('Y-m-d H:i:s'));
+ $date_from = ($date_to - $date);
}
// Read buttons.
@@ -459,82 +478,11 @@ if (empty($nodeListInput) === false) {
}
$filterTable->data[0][0] = html_print_label_input_block(
- __('Interval'),
- html_print_extended_select_for_time(
- 'period',
- $period,
- '',
- '',
- 0,
- false,
- true
- ),
- [ 'div_id' => 'period_container' ]
-);
-
-$filterTable->data[0][0] .= html_print_label_input_block(
- __('Start date'),
- html_print_div(
- [
- 'class' => '',
- 'content' => html_print_input_text(
- 'date_lower',
- $date_lower,
- false,
- 13,
- 10,
- true
- ).html_print_image(
- 'images/calendar_view_day.png',
- true,
- [
- 'alt' => 'calendar',
- 'class' => 'main_menu_icon invert_filter',
- ]
- ).html_print_input_text(
- 'time_lower',
- $time_lower,
- false,
- 10,
- 8,
- true
- ),
- ],
- true
- ),
- [ 'div_id' => 'end_date_container' ]
+ __('Date'),
+ html_print_select_date_range('date', true)
);
$filterTable->data[0][1] = html_print_label_input_block(
- __('End date'),
- html_print_div(
- [
- 'class' => '',
- 'content' => html_print_input_text(
- 'date',
- $date,
- false,
- 13,
- 10,
- true
- ).html_print_image(
- 'images/calendar_view_day.png',
- true,
- ['alt' => 'calendar']
- ).html_print_input_text(
- 'time',
- $time,
- false,
- 10,
- 8,
- true
- ),
- ],
- true
- )
-);
-
-$filterTable->data[0][2] = html_print_label_input_block(
__('Resolution'),
html_print_select(
netflow_resolution_select_params(),
@@ -552,15 +500,37 @@ $filterTable->data[0][2] = html_print_label_input_block(
)
);
-$filterTable->data[1][] = html_print_label_input_block(
- __('Defined period'),
- html_print_checkbox_switch(
- 'is_period',
- 1,
- ($is_period === true) ? 1 : 0,
- true,
- false,
- 'nf_view_click_period(event)'
+$filterTable->data[0][2] = html_print_label_input_block(
+ __('Max values'),
+ html_print_div(
+ [
+ 'class' => '',
+ 'content' => html_print_select(
+ $max_values,
+ 'max_aggregates',
+ $max_aggregates,
+ '',
+ '',
+ 0,
+ true
+ ).html_print_anchor(
+ [
+ 'id' => 'max_values',
+ 'href' => '#',
+ 'onClick' => 'edit_max_value()',
+ 'content' => html_print_image(
+ 'images/edit.svg',
+ true,
+ [
+ 'id' => 'pencil',
+ 'class' => 'main_menu_icon invert_filter',
+ ]
+ ),
+ ],
+ true
+ ),
+ ],
+ true
)
);
@@ -594,39 +564,7 @@ $filterTable->data[1][] = html_print_label_input_block(
)
);
-$filterTable->data[2][] = html_print_label_input_block(
- __('Max values'),
- html_print_div(
- [
- 'class' => '',
- 'content' => html_print_select(
- $max_values,
- 'max_aggregates',
- $max_aggregates,
- '',
- '',
- 0,
- true
- ).html_print_anchor(
- [
- 'id' => 'max_values',
- 'href' => '#',
- 'onClick' => 'edit_max_value()',
- 'content' => html_print_image(
- 'images/edit.svg',
- true,
- [
- 'id' => 'pencil',
- 'class' => 'main_menu_icon invert_filter',
- ]
- ),
- ],
- true
- ),
- ],
- true
- )
-);
+
$filterTable->colspan[3][0] = 3;
$filterTable->data[3][0] = html_print_label_input_block(
@@ -703,8 +641,8 @@ if (empty($draw) === false) {
[
'class' => $netflowContainerClass,
'content' => netflow_draw_item(
- $start_date,
- $end_date,
+ $date_from,
+ $date_to,
$interval_length,
$chart_type,
$filter,
diff --git a/pandora_console/operation/network/network_report.php b/pandora_console/operation/network/network_report.php
index 5d402a5793..980d50d405 100644
--- a/pandora_console/operation/network/network_report.php
+++ b/pandora_console/operation/network/network_report.php
@@ -57,20 +57,48 @@ if (is_ajax() === true) {
// Include JS timepicker.
ui_include_time_picker();
-// Query params and other initializations.
-$filter_id = (int) get_parameter('filter_id', 0);
-$time_greater = get_parameter('time_greater', date(TIME_FORMAT));
-$date_greater = get_parameter('date_greater', date(DATE_FORMAT));
-$utimestamp_greater = strtotime($date_greater.' '.$time_greater);
-$is_period = (bool) get_parameter('is_period', false);
-$period = (int) get_parameter('period', SECONDS_1HOUR);
-$time_lower = get_parameter('time_lower', date(TIME_FORMAT, ($utimestamp_greater - $period)));
-$date_lower = get_parameter('date_lower', date(DATE_FORMAT, ($utimestamp_greater - $period)));
-$utimestamp_lower = ($is_period) ? ($utimestamp_greater - $period) : strtotime($date_lower.' '.$time_lower);
-if (!$is_period) {
- $period = ($utimestamp_greater - $utimestamp_lower);
+
+// Calculate range dates.
+$custom_date = get_parameter('custom_date', '0');
+$date = get_parameter('date', SECONDS_1DAY);
+if ($custom_date === '1') {
+ $date_init = get_parameter('date_init');
+ $time_init = get_parameter('time_init');
+ $date_end = get_parameter('date_end');
+ $time_end = get_parameter('time_end');
+ $date_from = strtotime($date_init.' '.$time_init);
+ $date_to = strtotime($date_end.' '.$time_end);
+} else if ($custom_date === '2') {
+ $date_text = get_parameter('date_text');
+ $date_units = get_parameter('date_units');
+ $period = ($date_text * $date_units);
+ $date_to = strtotime(date('Y-m-d H:i:s'));
+ $date_from = (strtotime($date_to) - $period);
+} else if (in_array($date, ['this_week', 'this_month', 'past_week', 'past_month'])) {
+ if ($date === 'this_week') {
+ $date_from = strtotime('last monday');
+ $date_to = strtotime($date_from.' +6 days');
+ } else if ($date === 'this_month') {
+ $date_from = strtotime('first day of this month');
+ $date_to = strtotime('last day of this month');
+ } else if ($date === 'past_month') {
+ $date_from = strtotime('first day of previous month');
+ $date_to = strtotime('last day of previous month');
+ } else if ($date === 'past_week') {
+ $date_from = strtotime('monday', strtotime('last week'));
+ $date_to = strtotime('sunday', strtotime('last week'));
+ }
+} else {
+ $date_to = strtotime(date('Y-m-d H:i:s'));
+ $date_from = ($date_to - $date);
}
+$filter_id = (int) get_parameter('filter_id', 0);
+
+// Query params and other initializations.
+$utimestamp_greater = $date_to;
+$utimestamp_lower = $date_from;
+
$top = (int) get_parameter('top', 10);
$main_value = ((bool) get_parameter('remove_filter', 0)) ? '' : get_parameter('main_value', '');
if (is_numeric($main_value) && !in_array($action, ['udp', 'tcp'])) {
@@ -89,44 +117,6 @@ if (!in_array($order_by, ['bytes', 'pkts', 'flows'])) {
$order_by = 'bytes';
}
-$save = get_parameter('save_button', '');
-$update = get_parameter('update_button', '');
-
-// Save user defined filter.
-if ($save != '' && check_acl($config['id_user'], 0, 'AW')) {
- // Save filter args.
- $data['filter_name'] = get_parameter('filter_name');
- $data['top'] = $top;
- $data['action'] = $action;
- $data['advanced_filter'] = $advanced_filter;
-
-
- $filter_id = db_process_sql_insert('tnetwork_explorer_filter', $data);
- if ($filter_id === false) {
- $filter_id = 0;
- ui_print_error_message(__('Error creating filter'));
- } else {
- ui_print_success_message(__('Filter created successfully'));
- }
-} else if ($update != '' && check_acl($config['id_user'], 0, 'AW')) {
- // Update current filter.
- // Do not update the filter name and group.
- $data['top'] = $top;
- $data['action'] = $action;
- $data['advanced_filter'] = $advanced_filter;
-
- $result = db_process_sql_update(
- 'tnetwork_explorer_filter',
- $data,
- ['id' => $filter_id]
- );
- ui_print_result_message(
- $result,
- __('Filter updated successfully'),
- __('Error updating filter')
- );
-}
-
// Build the table.
$filterTable = new stdClass();
$filterTable->id = '';
@@ -136,95 +126,7 @@ $filterTable->size[0] = '33%';
$filterTable->size[1] = '33%';
$filterTable->size[2] = '33%';
$filterTable->data = [];
-
$filterTable->data[0][0] = html_print_label_input_block(
- __('Interval'),
- html_print_extended_select_for_time(
- 'period',
- $period,
- '',
- '',
- 0,
- false,
- true
- ),
- [ 'div_id' => 'period_container' ]
-);
-
-$filterTable->data[0][0] .= html_print_label_input_block(
- __('Start date'),
- html_print_div(
- [
- 'class' => '',
- 'content' => html_print_input_text(
- 'date_lower',
- $date_lower,
- false,
- 13,
- 10,
- true
- ).html_print_image(
- 'images/calendar_view_day.png',
- true,
- [
- 'alt' => 'calendar',
- 'class' => 'main_menu_icon invert_filter',
- ]
- ).html_print_input_text(
- 'time_lower',
- $time_lower,
- false,
- 10,
- 8,
- true
- ),
- ],
- true
- ),
- [ 'div_id' => 'end_date_container' ]
-);
-
-$filterTable->data[0][1] = html_print_label_input_block(
- __('End date'),
- html_print_div(
- [
- 'content' => html_print_input_text(
- 'date',
- $date_greater,
- false,
- 13,
- 10,
- true
- ).html_print_image(
- 'images/calendar_view_day.png',
- true,
- ['alt' => 'calendar']
- ).html_print_input_text(
- 'time',
- $time_greater,
- false,
- 10,
- 8,
- true
- ),
- ],
- true
- )
-);
-
-$filterTable->data[0][2] = html_print_label_input_block(
- __('Defined period'),
- html_print_checkbox_switch(
- 'is_period',
- 1,
- ($is_period === true) ? 1 : 0,
- true,
- false,
- 'nf_view_click_period()'
- )
-);
-
-$filterTable->data[1][] = html_print_label_input_block(
__('Results to show'),
html_print_select(
[
@@ -246,56 +148,9 @@ $filterTable->data[1][] = html_print_label_input_block(
)
);
-$filterTable->data[1][] = html_print_label_input_block(
- __('Data to show'),
- html_print_select(
- network_get_report_actions(),
- 'action',
- $action,
- '',
- '',
- 0,
- true
- )
-);
-
-$advanced_toggle = new stdClass();
-$advanced_toggle->class = 'filter-table-adv';
-$advanced_toggle->size = [];
-$advanced_toggle->size[0] = '50%';
-$advanced_toggle->size[1] = '50%';
-$advanced_toggle->width = '100%';
-$user_groups = users_get_groups($config['id_user'], 'AR', $own_info['is_admin'], true);
-$user_groups[0] = 0;
-// Add all groups.
-$sql = 'SELECT * FROM tnetwork_explorer_filter';
-$advanced_toggle->data[0][0] = html_print_label_input_block(
- __('Load Filter'),
- html_print_select_from_sql($sql, 'filter_id', $filter_id, '', __('Select a filter'), 0, true, false, true, false, 'width:100%;')
-);
-$advanced_toggle->data[0][1] = html_print_label_input_block(
- __('Filter name'),
- html_print_input_text('filter_name', '', false, 40, 45, true, false, false, '', 'w100p')
-);
-$advanced_toggle->colspan[1][0] = 2;
-$advanced_toggle->data[1][0] = html_print_label_input_block(
- __('Filter').ui_print_help_icon('pcap_filter', true),
- html_print_textarea('advanced_filter', 4, 10, $advanced_filter, 'style="width:100%"', true)
-);
-$filterTable->colspan[2][0] = 3;
-$filterTable->data[2][0] = html_print_label_input_block(
- '',
- ui_toggle(
- html_print_table($advanced_toggle, true),
- __('Advanced'),
- '',
- '',
- true,
- true,
- '',
- 'white-box-content',
- 'box-flat white_table_graph'
- )
+$filterTable->data[0][1] = html_print_label_input_block(
+ __('Start date'),
+ html_print_select_date_range('date', true)
);
$filterInputTable = '