forked from CITKParus/P8-Panels
WEBAPP+БД: Новый компонент - P8PIndicator
This commit is contained in:
parent
fbbbd7c247
commit
416eae7d88
186
app/components/p8p_indicator.js
Normal file
186
app/components/p8p_indicator.js
Normal file
@ -0,0 +1,186 @@
|
|||||||
|
/*
|
||||||
|
Парус 8 - Панели мониторинга
|
||||||
|
Компонент: Индикатор
|
||||||
|
*/
|
||||||
|
|
||||||
|
//---------------------
|
||||||
|
//Подключение библиотек
|
||||||
|
//---------------------
|
||||||
|
|
||||||
|
import React, { useState } from "react"; //Классы React
|
||||||
|
import PropTypes from "prop-types"; //Контроль свойств компонента
|
||||||
|
import { IconButton, Icon, Typography, Paper, Stack } from "@mui/material"; //Интерфейсные компоненты MUI
|
||||||
|
import { P8PHintDialog } from "./p8p_app_message"; //Диалог подсказки
|
||||||
|
import { TEXTS, STATE } from "../../app.text"; //Типовые текстовые ресурсы и константы
|
||||||
|
import { APP_COLORS } from "../../app.styles"; //Типовые стили
|
||||||
|
|
||||||
|
//---------
|
||||||
|
//Константы
|
||||||
|
//---------
|
||||||
|
|
||||||
|
//Варианты исполнения
|
||||||
|
|
||||||
|
const P8P_INDICATOR_VARIANT = {
|
||||||
|
ELEVATION: "elevation",
|
||||||
|
OUTLINED: "outlined"
|
||||||
|
};
|
||||||
|
|
||||||
|
//Состояния
|
||||||
|
const P8P_INDICATOR_STATE = {
|
||||||
|
UNDEFINED: STATE.UNDEFINED,
|
||||||
|
OK: STATE.OK,
|
||||||
|
WARN: STATE.WARN,
|
||||||
|
ERR: STATE.ERR
|
||||||
|
};
|
||||||
|
//Цвета заливки
|
||||||
|
const BG_COLOR = {
|
||||||
|
[STATE.OK]: APP_COLORS[STATE.OK].color,
|
||||||
|
[STATE.ERR]: APP_COLORS[STATE.ERR].color,
|
||||||
|
[STATE.WARN]: APP_COLORS[STATE.WARN].color
|
||||||
|
};
|
||||||
|
|
||||||
|
//Цвета текста и иконок
|
||||||
|
const COLOR = {
|
||||||
|
[STATE.OK]: APP_COLORS[STATE.OK].contrColor,
|
||||||
|
[STATE.ERR]: APP_COLORS[STATE.ERR].contrColor,
|
||||||
|
[STATE.WARN]: APP_COLORS[STATE.WARN].contrColor
|
||||||
|
};
|
||||||
|
|
||||||
|
//Стили
|
||||||
|
const STYLES = {
|
||||||
|
CONTAINER: (state, clickable, userColor, userBackgroundColor) => ({
|
||||||
|
padding: "10px",
|
||||||
|
width: "100%",
|
||||||
|
height: "100%",
|
||||||
|
overflow: "hidden",
|
||||||
|
...getBackgroundColor(state, userBackgroundColor),
|
||||||
|
...getColor(state, userColor),
|
||||||
|
display: "flex",
|
||||||
|
flexDirection: "column",
|
||||||
|
justifyContent: "center",
|
||||||
|
...(clickable
|
||||||
|
? {
|
||||||
|
cursor: "pointer",
|
||||||
|
"&:hover": { backgroundColor: APP_COLORS.HOVER.color },
|
||||||
|
"&:active": { backgroundColor: APP_COLORS.ACTIVE.color }
|
||||||
|
}
|
||||||
|
: {})
|
||||||
|
}),
|
||||||
|
ICON: (state, userColor) => ({ fontSize: "50px", ...getColor(state, userColor) }),
|
||||||
|
HINT_ICON: (state, userColor) => ({ fontSize: "1rem", ...getColor(state, userColor) }),
|
||||||
|
VALUE_CAPTION_STACK: { containerType: "inline-size", width: "100%", overflow: "hidden" },
|
||||||
|
CAPTION_TYPOGRAPHY: { width: "99cqw" }
|
||||||
|
};
|
||||||
|
|
||||||
|
//-----------------------
|
||||||
|
//Вспомогательные функции
|
||||||
|
//-----------------------
|
||||||
|
|
||||||
|
//Подбор цвета заливки
|
||||||
|
const getBackgroundColor = (state, userColor) =>
|
||||||
|
userColor ? { backgroundColor: userColor } : BG_COLOR[state] ? { backgroundColor: BG_COLOR[state] } : {};
|
||||||
|
|
||||||
|
//Подбор цвета текста
|
||||||
|
const getColor = (state, userColor) => (userColor ? { color: userColor } : COLOR[state] ? { color: COLOR[state] } : {});
|
||||||
|
|
||||||
|
//-----------
|
||||||
|
//Тело модуля
|
||||||
|
//-----------
|
||||||
|
|
||||||
|
//Индикатор
|
||||||
|
const P8PIndicator = ({
|
||||||
|
caption,
|
||||||
|
value,
|
||||||
|
icon = null,
|
||||||
|
state = STATE.UNDEFINED,
|
||||||
|
square = false,
|
||||||
|
elevation = 3,
|
||||||
|
variant = P8P_INDICATOR_VARIANT.ELEVATION,
|
||||||
|
hint = null,
|
||||||
|
onClick = null,
|
||||||
|
backgroundColor = null,
|
||||||
|
color = null
|
||||||
|
} = {}) => {
|
||||||
|
//Собственное состояние - отображение окна подсказки
|
||||||
|
const [showHint, setShowHint] = useState(false);
|
||||||
|
|
||||||
|
//При нажатии на индикатор
|
||||||
|
const handleClick = () => (onClick && !showHint ? onClick() : null);
|
||||||
|
|
||||||
|
//При нажатии на кнопку получения подсказки
|
||||||
|
const handleHintClick = e => {
|
||||||
|
setShowHint(true);
|
||||||
|
e.stopPropagation();
|
||||||
|
};
|
||||||
|
|
||||||
|
//При нажатии на кнопку закрытия подсказки
|
||||||
|
const handleHintClose = () => setShowHint(false);
|
||||||
|
|
||||||
|
//Представление текста значения индикатора
|
||||||
|
const valueTextView = <Typography variant={"h4"}>{[undefined, null, ""].includes(value) ? TEXTS.NO_DATA_FOUND_SHORT : value}</Typography>;
|
||||||
|
|
||||||
|
//Представление текста подписи индикатора
|
||||||
|
const captionView = (
|
||||||
|
<Typography align={"left"} noWrap={true} sx={STYLES.CAPTION_TYPOGRAPHY} title={caption}>
|
||||||
|
{caption}
|
||||||
|
</Typography>
|
||||||
|
);
|
||||||
|
|
||||||
|
//Представление подписи индикатора
|
||||||
|
const valueView = hint ? (
|
||||||
|
<>
|
||||||
|
{showHint && <P8PHintDialog title={caption} hint={hint} onOk={handleHintClose} />}
|
||||||
|
<Stack direction={"row"} alignItems={"start"}>
|
||||||
|
{valueTextView}
|
||||||
|
<IconButton onClick={handleHintClick}>
|
||||||
|
<Icon sx={STYLES.HINT_ICON(state, color)}>help_outline</Icon>
|
||||||
|
</IconButton>
|
||||||
|
</Stack>
|
||||||
|
</>
|
||||||
|
) : (
|
||||||
|
valueTextView
|
||||||
|
);
|
||||||
|
|
||||||
|
//Флаг активности индикатора
|
||||||
|
const clickable = onClick ? true : false;
|
||||||
|
|
||||||
|
//Представление
|
||||||
|
return (
|
||||||
|
<Paper
|
||||||
|
elevation={variant === P8P_INDICATOR_VARIANT.ELEVATION ? elevation : 0}
|
||||||
|
sx={STYLES.CONTAINER(state, clickable, color, backgroundColor)}
|
||||||
|
square={square}
|
||||||
|
variant={variant}
|
||||||
|
onClick={handleClick}
|
||||||
|
>
|
||||||
|
<Stack direction={"row"} alignItems={"center"} justifyContent={"space-between"}>
|
||||||
|
<Stack direction={"column"} alignItems={"start"} pr={2} sx={STYLES.VALUE_CAPTION_STACK}>
|
||||||
|
{valueView}
|
||||||
|
{captionView}
|
||||||
|
</Stack>
|
||||||
|
{icon ? <Icon sx={STYLES.ICON(state, color)}>{icon}</Icon> : null}
|
||||||
|
</Stack>
|
||||||
|
</Paper>
|
||||||
|
);
|
||||||
|
};
|
||||||
|
|
||||||
|
//Контроль свойств - Индикатор
|
||||||
|
P8PIndicator.propTypes = {
|
||||||
|
caption: PropTypes.string.isRequired,
|
||||||
|
value: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),
|
||||||
|
icon: PropTypes.string,
|
||||||
|
state: PropTypes.oneOf(Object.values(P8P_INDICATOR_STATE)),
|
||||||
|
square: PropTypes.bool,
|
||||||
|
elevation: PropTypes.number,
|
||||||
|
variant: PropTypes.oneOf(Object.values(P8P_INDICATOR_VARIANT)),
|
||||||
|
hint: PropTypes.string,
|
||||||
|
onClick: PropTypes.func,
|
||||||
|
backgroundColor: PropTypes.string,
|
||||||
|
color: PropTypes.string
|
||||||
|
};
|
||||||
|
|
||||||
|
//----------------
|
||||||
|
//Интерфейс модуля
|
||||||
|
//----------------
|
||||||
|
|
||||||
|
export { P8P_INDICATOR_VARIANT, P8P_INDICATOR_STATE, P8PIndicator };
|
@ -1,46 +1,56 @@
|
|||||||
create or replace package PKG_P8PANELS_VISUAL as
|
create or replace package PKG_P8PANELS_VISUAL as
|
||||||
|
|
||||||
/* Константы - типы данных */
|
/* Константы - типы данных */
|
||||||
SDATA_TYPE_STR constant PKG_STD.TSTRING := 'STR'; -- Тип данных "строка"
|
SDATA_TYPE_STR constant PKG_STD.TSTRING := 'STR'; -- Тип данных "строка"
|
||||||
SDATA_TYPE_NUMB constant PKG_STD.TSTRING := 'NUMB'; -- Тип данных "число"
|
SDATA_TYPE_NUMB constant PKG_STD.TSTRING := 'NUMB'; -- Тип данных "число"
|
||||||
SDATA_TYPE_DATE constant PKG_STD.TSTRING := 'DATE'; -- Тип данных "дата"
|
SDATA_TYPE_DATE constant PKG_STD.TSTRING := 'DATE'; -- Тип данных "дата"
|
||||||
|
|
||||||
/* Константы - направление сортировки */
|
/* Константы - направление сортировки */
|
||||||
SORDER_DIRECTION_ASC constant PKG_STD.TSTRING := 'ASC'; -- По возрастанию
|
SORDER_DIRECTION_ASC constant PKG_STD.TSTRING := 'ASC'; -- По возрастанию
|
||||||
SORDER_DIRECTION_DESC constant PKG_STD.TSTRING := 'DESC'; -- По убыванию
|
SORDER_DIRECTION_DESC constant PKG_STD.TSTRING := 'DESC'; -- По убыванию
|
||||||
|
|
||||||
/* Константы - масштаб диаграммы Ганта */
|
/* Константы - диаграмма Ганта - масштаб */
|
||||||
NGANTT_ZOOM_QUARTER_DAY constant PKG_STD.TNUMBER := 0; -- Четверть дня
|
NGANTT_ZOOM_QUARTER_DAY constant PKG_STD.TNUMBER := 0; -- Четверть дня
|
||||||
NGANTT_ZOOM_HALF_DAY constant PKG_STD.TNUMBER := 1; -- Пол дня
|
NGANTT_ZOOM_HALF_DAY constant PKG_STD.TNUMBER := 1; -- Пол дня
|
||||||
NGANTT_ZOOM_DAY constant PKG_STD.TNUMBER := 2; -- День
|
NGANTT_ZOOM_DAY constant PKG_STD.TNUMBER := 2; -- День
|
||||||
NGANTT_ZOOM_WEEK constant PKG_STD.TNUMBER := 3; -- Неделя
|
NGANTT_ZOOM_WEEK constant PKG_STD.TNUMBER := 3; -- Неделя
|
||||||
NGANTT_ZOOM_MONTH constant PKG_STD.TNUMBER := 4; -- Месяц
|
NGANTT_ZOOM_MONTH constant PKG_STD.TNUMBER := 4; -- Месяц
|
||||||
|
|
||||||
/* Константы - масштаб циклограммы */
|
/* Константы - график - тип */
|
||||||
NCYCLOGRAM_ZOOM_MIN constant PKG_STD.TLNUMBER := 0.2; -- Минимальный (0.2 от исходного)
|
SCHART_TYPE_BAR constant PKG_STD.TSTRING := 'bar'; -- Столбчатая
|
||||||
NCYCLOGRAM_ZOOM_TINY constant PKG_STD.TLNUMBER := 0.4; -- Мелкий (0.4 от исходного)
|
SCHART_TYPE_LINE constant PKG_STD.TSTRING := 'line'; -- Линейная
|
||||||
NCYCLOGRAM_ZOOM_SMALL constant PKG_STD.TLNUMBER := 0.7; -- Уменьшенный (0.7 от исходного)
|
SCHART_TYPE_PIE constant PKG_STD.TSTRING := 'pie'; -- Круговая
|
||||||
NCYCLOGRAM_ZOOM_DEFAULT constant PKG_STD.TLNUMBER := 1; -- Исходный
|
SCHART_TYPE_DOUGHNUT constant PKG_STD.TSTRING := 'doughnut'; -- Кольцевая
|
||||||
NCYCLOGRAM_ZOOM_LARGE constant PKG_STD.TLNUMBER := 1.5; -- Увеличенный (1.5 от исходного)
|
|
||||||
NCYCLOGRAM_ZOOM_HUGE constant PKG_STD.TLNUMBER := 2; -- Большой (2 от исходного)
|
|
||||||
NCYCLOGRAM_ZOOM_MAX constant PKG_STD.TLNUMBER := 2.5; -- Максимальный (2.5 от исходного)
|
|
||||||
|
|
||||||
/* Константы - тип графика */
|
/* Константы - график - расположение легенды */
|
||||||
SCHART_TYPE_BAR constant PKG_STD.TSTRING := 'bar'; -- Столбчатая
|
SCHART_LGND_POS_LEFT constant PKG_STD.TSTRING := 'left'; -- Слева
|
||||||
SCHART_TYPE_LINE constant PKG_STD.TSTRING := 'line'; -- Линейная
|
SCHART_LGND_POS_RIGHT constant PKG_STD.TSTRING := 'right'; -- Справа
|
||||||
SCHART_TYPE_PIE constant PKG_STD.TSTRING := 'pie'; -- Круговая
|
SCHART_LGND_POS_TOP constant PKG_STD.TSTRING := 'top'; -- Наверху
|
||||||
SCHART_TYPE_DOUGHNUT constant PKG_STD.TSTRING := 'doughnut'; -- Кольцевая
|
SCHART_LGND_POS_BOTTOM constant PKG_STD.TSTRING := 'bottom'; -- Внизу
|
||||||
|
|
||||||
/* Константы - расположение легенды графика */
|
/* Константы - циклограмма - масштаб */
|
||||||
SCHART_LGND_POS_LEFT constant PKG_STD.TSTRING := 'left'; -- Слева
|
NCYCLOGRAM_ZOOM_MIN constant PKG_STD.TLNUMBER := 0.2; -- Минимальный (0.2 от исходного)
|
||||||
SCHART_LGND_POS_RIGHT constant PKG_STD.TSTRING := 'right'; -- Справа
|
NCYCLOGRAM_ZOOM_TINY constant PKG_STD.TLNUMBER := 0.4; -- Мелкий (0.4 от исходного)
|
||||||
SCHART_LGND_POS_TOP constant PKG_STD.TSTRING := 'top'; -- Наверху
|
NCYCLOGRAM_ZOOM_SMALL constant PKG_STD.TLNUMBER := 0.7; -- Уменьшенный (0.7 от исходного)
|
||||||
SCHART_LGND_POS_BOTTOM constant PKG_STD.TSTRING := 'bottom'; -- Внизу
|
NCYCLOGRAM_ZOOM_DEFAULT constant PKG_STD.TLNUMBER := 1; -- Исходный
|
||||||
|
NCYCLOGRAM_ZOOM_LARGE constant PKG_STD.TLNUMBER := 1.5; -- Увеличенный (1.5 от исходного)
|
||||||
|
NCYCLOGRAM_ZOOM_HUGE constant PKG_STD.TLNUMBER := 2; -- Большой (2 от исходного)
|
||||||
|
NCYCLOGRAM_ZOOM_MAX constant PKG_STD.TLNUMBER := 2.5; -- Максимальный (2.5 от исходного)
|
||||||
|
|
||||||
/* Константы - циклограмма */
|
/* Константы - циклограмма - оформление */
|
||||||
NCYCLOGRAM_GROUP_DEF_WIDTH constant PKG_STD.TNUMBER := 100; -- Высота заголовка группы (по умолчанию)
|
NCYCLOGRAM_GROUP_DEF_WIDTH constant PKG_STD.TNUMBER := 100; -- Высота заголовка группы (по умолчанию)
|
||||||
NCYCLOGRAM_GROUP_DEF_HEIGHT constant PKG_STD.TNUMBER := 42; -- Ширина заголовка группы (по умолчанию)
|
NCYCLOGRAM_GROUP_DEF_HEIGHT constant PKG_STD.TNUMBER := 42; -- Ширина заголовка группы (по умолчанию)
|
||||||
NCYCLOGRAM_LINE_HEIGHT constant PKG_STD.TNUMBER := 20; -- Высота строк циклограммы
|
NCYCLOGRAM_LINE_HEIGHT constant PKG_STD.TNUMBER := 20; -- Высота строк циклограммы
|
||||||
|
|
||||||
|
/* Константы - индикатор - состояния */
|
||||||
|
SINDICATOR_STATE_UNDEFINED constant PKG_STD.TSTRING := 'UNDEFINED'; -- Неопределено
|
||||||
|
SINDICATOR_STATE_OK constant PKG_STD.TSTRING := 'OK'; -- Позитивное
|
||||||
|
SINDICATOR_STATE_ERR constant PKG_STD.TSTRING := 'ERR'; -- Негативное
|
||||||
|
SINDICATOR_STATE_WARN constant PKG_STD.TSTRING := 'WARN'; -- Пограничное
|
||||||
|
|
||||||
|
/* Константы - индикатор - варианты исполнения */
|
||||||
|
SINDICATOR_VARIANT_ELEVATION constant PKG_STD.TSTRING := 'elevation'; -- Парящий
|
||||||
|
SINDICATOR_VARIANT_OUTLINED constant PKG_STD.TSTRING := 'outlined'; -- Плоский с рамкой
|
||||||
|
|
||||||
/* Типы данных - значение колонки таблицы данных */
|
/* Типы данных - значение колонки таблицы данных */
|
||||||
type TDG_COL_VAL is record
|
type TDG_COL_VAL is record
|
||||||
@ -333,6 +343,21 @@ create or replace package PKG_P8PANELS_VISUAL as
|
|||||||
RTASK_ATTRS TCYCLOGRAM_TASK_ATTRS -- Описание атрибутов карточки задачи
|
RTASK_ATTRS TCYCLOGRAM_TASK_ATTRS -- Описание атрибутов карточки задачи
|
||||||
);
|
);
|
||||||
|
|
||||||
|
/* Типы данных - индикатор */
|
||||||
|
type TINDICATOR is record
|
||||||
|
(
|
||||||
|
SCAPTION PKG_STD.TSTRING, -- Подпись
|
||||||
|
SVALUE PKG_STD.TSTRING, -- Значение
|
||||||
|
SICON PKG_STD.TSTRING := null, -- Иконка (код шрифта "Google Material Icons" - https://fonts.google.com/icons?icon.set=Material+Icons)
|
||||||
|
SSTATE PKG_STD.TSTRING := SINDICATOR_STATE_UNDEFINED, -- Состояние (см. константы SINDICATOR_STATE_*)
|
||||||
|
BSQUARE boolean := false, -- Скруглять углы
|
||||||
|
NELEVATION PKG_STD.TNUMBER := 3, -- Высота парения (от 0 до 24, игнорируется для SINDICATOR_VARIANT_OUTLINED)
|
||||||
|
SVARIANT PKG_STD.TSTRING := SINDICATOR_VARIANT_ELEVATION, -- Вариант исполнения (см. константы SINDICATOR_VARIANT_*)
|
||||||
|
SHINT PKG_STD.TSTRING := null, -- Подсказка
|
||||||
|
SBACKGROUND_COLOR PKG_STD.TSTRING := null, -- Цвет заливки (HTML-код, null - использовать цвет по умолчанию для состояния)
|
||||||
|
SCOLOR PKG_STD.TSTRING := null -- Цвет шрифта и иконки (HTML-код, null - использовать цвет по умолчанию для состояния)
|
||||||
|
);
|
||||||
|
|
||||||
/* Расчет диапаона выдаваемых записей */
|
/* Расчет диапаона выдаваемых записей */
|
||||||
procedure UTL_ROWS_LIMITS_CALC
|
procedure UTL_ROWS_LIMITS_CALC
|
||||||
(
|
(
|
||||||
@ -750,62 +775,92 @@ create or replace package PKG_P8PANELS_VISUAL as
|
|||||||
NINCLUDE_DEF in number := 1 -- Включить описание колонок (0 - нет, 1 - да)
|
NINCLUDE_DEF in number := 1 -- Включить описание колонок (0 - нет, 1 - да)
|
||||||
) return clob; -- XML-описание
|
) return clob; -- XML-описание
|
||||||
|
|
||||||
|
/* Формирование индикатора */
|
||||||
|
function TINDICATOR_MAKE
|
||||||
|
(
|
||||||
|
SCAPTION in varchar2, -- Подпись
|
||||||
|
SVALUE in varchar2, -- Значение
|
||||||
|
SICON in varchar2 := null, -- Иконка (код шрифта "Google Material Icons" - https://fonts.google.com/icons?icon.set=Material+Icons)
|
||||||
|
SSTATE in varchar2 := SINDICATOR_STATE_UNDEFINED, -- Состояние (см. константы SINDICATOR_STATE_*)
|
||||||
|
BSQUARE in boolean := false, -- Скруглять углы
|
||||||
|
NELEVATION in number := 3, -- Высота парения (от 0 до 24, игнорируется для SINDICATOR_VARIANT_OUTLINED)
|
||||||
|
SVARIANT in varchar2 := SINDICATOR_VARIANT_ELEVATION, -- Вариант исполнения (см. константы SINDICATOR_VARIANT_*)
|
||||||
|
SHINT in varchar2 := null, -- Подсказка
|
||||||
|
SBACKGROUND_COLOR in varchar2 := null, -- Цвет заливки (HTML-код, null - использовать цвет по умолчанию для состояния)
|
||||||
|
SCOLOR in varchar2 := null -- Цвет шрифта и иконки (HTML-код, null - использовать цвет по умолчанию для состояния)
|
||||||
|
) return TINDICATOR; -- Результат работы
|
||||||
|
|
||||||
|
/* Сериализация индикатора */
|
||||||
|
function TINDICATOR_TO_XML
|
||||||
|
(
|
||||||
|
RINDICATOR in TINDICATOR -- Описание индикатора
|
||||||
|
) return clob; -- XML-описание
|
||||||
|
|
||||||
end PKG_P8PANELS_VISUAL;
|
end PKG_P8PANELS_VISUAL;
|
||||||
/
|
/
|
||||||
create or replace package body PKG_P8PANELS_VISUAL as
|
create or replace package body PKG_P8PANELS_VISUAL as
|
||||||
|
|
||||||
/* Константы - тэги запросов */
|
/* Константы - тэги запросов */
|
||||||
SRQ_TAG_XROOT constant PKG_STD.TSTRING := 'XROOT'; -- Тэг для корня данных запроса
|
SRQ_TAG_XROOT constant PKG_STD.TSTRING := 'XROOT'; -- Тэг для корня данных запроса
|
||||||
SRQ_TAG_XFILTERS constant PKG_STD.TSTRING := 'filters'; -- Тэг для строк данных
|
SRQ_TAG_XFILTERS constant PKG_STD.TSTRING := 'filters'; -- Тэг для строк данных
|
||||||
SRQ_TAG_XORDERS constant PKG_STD.TSTRING := 'orders'; -- Тэг для описания колонок
|
SRQ_TAG_XORDERS constant PKG_STD.TSTRING := 'orders'; -- Тэг для описания колонок
|
||||||
SRQ_TAG_SNAME constant PKG_STD.TSTRING := 'name'; -- Тэг для наименования
|
SRQ_TAG_SNAME constant PKG_STD.TSTRING := 'name'; -- Тэг для наименования
|
||||||
SRQ_TAG_SDIRECTION constant PKG_STD.TSTRING := 'direction'; -- Тэг для направления
|
SRQ_TAG_SDIRECTION constant PKG_STD.TSTRING := 'direction'; -- Тэг для направления
|
||||||
SRQ_TAG_SFROM constant PKG_STD.TSTRING := 'from'; -- Тэг для значения "с"
|
SRQ_TAG_SFROM constant PKG_STD.TSTRING := 'from'; -- Тэг для значения "с"
|
||||||
SRQ_TAG_STO constant PKG_STD.TSTRING := 'to'; -- Тэг для значения "по"
|
SRQ_TAG_STO constant PKG_STD.TSTRING := 'to'; -- Тэг для значения "по"
|
||||||
|
|
||||||
/* Константы - тэги ответов */
|
/* Константы - тэги ответов */
|
||||||
SRESP_TAG_XDATA constant PKG_STD.TSTRING := 'XDATA'; -- Тэг для корня описания данных
|
SRESP_TAG_XDATA constant PKG_STD.TSTRING := 'XDATA'; -- Тэг для корня описания данных
|
||||||
SRESP_TAG_XCHART constant PKG_STD.TSTRING := 'XCHART'; -- Тэг для описания графика
|
SRESP_TAG_XCHART constant PKG_STD.TSTRING := 'XCHART'; -- Тэг для описания графика
|
||||||
SRESP_TAG_XDATA_GRID constant PKG_STD.TSTRING := 'XDATA_GRID'; -- Тэг для описания таблицы данных
|
SRESP_TAG_XDATA_GRID constant PKG_STD.TSTRING := 'XDATA_GRID'; -- Тэг для описания таблицы данных
|
||||||
SRESP_TAG_XCYCLOGRAM constant PKG_STD.TSTRING := 'XCYCLOGRAM'; -- Тэг для описания циклограммы
|
SRESP_TAG_XCYCLOGRAM constant PKG_STD.TSTRING := 'XCYCLOGRAM'; -- Тэг для описания циклограммы
|
||||||
SRESP_TAG_XGANTT constant PKG_STD.TSTRING := 'XGANTT'; -- Тэг для описания диаграммы Ганта
|
SRESP_TAG_XGANTT constant PKG_STD.TSTRING := 'XGANTT'; -- Тэг для описания диаграммы Ганта
|
||||||
|
SRESP_TAG_XINDICATOR constant PKG_STD.TSTRING := 'XINDICATOR'; -- Тэг для описания индикатора
|
||||||
|
|
||||||
/* Константы - атрибуты ответов (универсальные) */
|
/* Константы - атрибуты ответов (универсальные) */
|
||||||
SRESP_ATTR_NAME constant PKG_STD.TSTRING := 'name'; -- Атрибут для наименования
|
SRESP_ATTR_NAME constant PKG_STD.TSTRING := 'name'; -- Атрибут для наименования
|
||||||
SRESP_ATTR_CAPTION constant PKG_STD.TSTRING := 'caption'; -- Атрибут для подписи
|
SRESP_ATTR_CAPTION constant PKG_STD.TSTRING := 'caption'; -- Атрибут для подписи
|
||||||
SRESP_ATTR_DATA_TYPE constant PKG_STD.TSTRING := 'dataType'; -- Атрибут для типа данных
|
SRESP_ATTR_DATA_TYPE constant PKG_STD.TSTRING := 'dataType'; -- Атрибут для типа данных
|
||||||
SRESP_ATTR_VISIBLE constant PKG_STD.TSTRING := 'visible'; -- Атрибут для флага видимости
|
SRESP_ATTR_VISIBLE constant PKG_STD.TSTRING := 'visible'; -- Атрибут для флага видимости
|
||||||
SRESP_ATTR_TITLE constant PKG_STD.TSTRING := 'title'; -- Атрибут для заголовка
|
SRESP_ATTR_TITLE constant PKG_STD.TSTRING := 'title'; -- Атрибут для заголовка
|
||||||
SRESP_ATTR_ZOOM constant PKG_STD.TSTRING := 'zoom'; -- Атрибут для масштаба
|
SRESP_ATTR_ZOOM constant PKG_STD.TSTRING := 'zoom'; -- Атрибут для масштаба
|
||||||
SRESP_ATTR_ID constant PKG_STD.TSTRING := 'id'; -- Атрибут для идентификатора
|
SRESP_ATTR_ID constant PKG_STD.TSTRING := 'id'; -- Атрибут для идентификатора
|
||||||
SRESP_ATTR_START constant PKG_STD.TSTRING := 'start'; -- Атрибут для даты начала
|
SRESP_ATTR_START constant PKG_STD.TSTRING := 'start'; -- Атрибут для даты начала
|
||||||
SRESP_ATTR_END constant PKG_STD.TSTRING := 'end'; -- Атрибут для даты окончания
|
SRESP_ATTR_END constant PKG_STD.TSTRING := 'end'; -- Атрибут для даты окончания
|
||||||
SRESP_ATTR_RN constant PKG_STD.TSTRING := 'rn'; -- Атрибут для рег. номера
|
SRESP_ATTR_RN constant PKG_STD.TSTRING := 'rn'; -- Атрибут для рег. номера
|
||||||
SRESP_ATTR_NUMB constant PKG_STD.TSTRING := 'numb'; -- Атрибут для номера
|
SRESP_ATTR_NUMB constant PKG_STD.TSTRING := 'numb'; -- Атрибут для номера
|
||||||
SRESP_ATTR_FULL_NAME constant PKG_STD.TSTRING := 'fullName'; -- Атрибут для полного наименования
|
SRESP_ATTR_FULL_NAME constant PKG_STD.TSTRING := 'fullName'; -- Атрибут для полного наименования
|
||||||
SRESP_ATTR_DESC constant PKG_STD.TSTRING := 'desc'; -- Атрибут для описания
|
SRESP_ATTR_DESC constant PKG_STD.TSTRING := 'desc'; -- Атрибут для описания
|
||||||
SRESP_ATTR_TYPE constant PKG_STD.TSTRING := 'type'; -- Атрибут для типа
|
SRESP_ATTR_TYPE constant PKG_STD.TSTRING := 'type'; -- Атрибут для типа
|
||||||
SRESP_ATTR_HINT constant PKG_STD.TSTRING := 'hint'; -- Атрибут для подсказки
|
SRESP_ATTR_HINT constant PKG_STD.TSTRING := 'hint'; -- Атрибут для подсказки
|
||||||
SRESP_ATTR_GROUP_NAME constant PKG_STD.TSTRING := 'groupName'; -- Атрибут для наименования группы
|
SRESP_ATTR_GROUP_NAME constant PKG_STD.TSTRING := 'groupName'; -- Атрибут для наименования группы
|
||||||
SRESP_ATTR_PARENT constant PKG_STD.TSTRING := 'parent'; -- Атрибут для ссылки на родителя
|
SRESP_ATTR_PARENT constant PKG_STD.TSTRING := 'parent'; -- Атрибут для ссылки на родителя
|
||||||
SRESP_ATTR_EXPANDABLE constant PKG_STD.TSTRING := 'expandable'; -- Атрибут для доступности действия сокрытия/отображения
|
SRESP_ATTR_EXPANDABLE constant PKG_STD.TSTRING := 'expandable'; -- Атрибут для доступности действия сокрытия/отображения
|
||||||
SRESP_ATTR_EXPANDED constant PKG_STD.TSTRING := 'expanded'; -- Атрибут для флага сокрытия/отображения
|
SRESP_ATTR_EXPANDED constant PKG_STD.TSTRING := 'expanded'; -- Атрибут для флага сокрытия/отображения
|
||||||
SRESP_ATTR_FIXED_HEADER constant PKG_STD.TSTRING := 'fixedHeader'; -- Атрибут для флага фиксации заголовка
|
SRESP_ATTR_FIXED_HEADER constant PKG_STD.TSTRING := 'fixedHeader'; -- Атрибут для флага фиксации заголовка
|
||||||
SRESP_ATTR_FIXED_COLUMNS constant PKG_STD.TSTRING := 'fixedColumns'; -- Атрибут для количества фиксированных колонок
|
SRESP_ATTR_FIXED_COLUMNS constant PKG_STD.TSTRING := 'fixedColumns'; -- Атрибут для количества фиксированных колонок
|
||||||
SRESP_ATTR_WIDTH constant PKG_STD.TSTRING := 'width'; -- Атрибут для ширины
|
SRESP_ATTR_WIDTH constant PKG_STD.TSTRING := 'width'; -- Атрибут для ширины
|
||||||
SRESP_ATTR_HEIGHT constant PKG_STD.TSTRING := 'height'; -- Атрибут для высоты
|
SRESP_ATTR_HEIGHT constant PKG_STD.TSTRING := 'height'; -- Атрибут для высоты
|
||||||
SRESP_ATTR_COLUMNS constant PKG_STD.TSTRING := 'columns'; -- Атрибут для колонок
|
SRESP_ATTR_COLUMNS constant PKG_STD.TSTRING := 'columns'; -- Атрибут для колонок
|
||||||
SRESP_ATTR_TASKS constant PKG_STD.TSTRING := 'tasks'; -- Атрибут для задач
|
SRESP_ATTR_TASKS constant PKG_STD.TSTRING := 'tasks'; -- Атрибут для задач
|
||||||
SRESP_ATTR_HL_COLOR constant PKG_STD.TSTRING := 'highlightColor'; -- Атрибут для цвета подсветки
|
SRESP_ATTR_HL_COLOR constant PKG_STD.TSTRING := 'highlightColor'; -- Атрибут для цвета подсветки
|
||||||
SRESP_ATTR_ZOOM_BAR constant PKG_STD.TSTRING := 'zoomBar'; -- Атрибут для флага отображения панели масштаба
|
SRESP_ATTR_ZOOM_BAR constant PKG_STD.TSTRING := 'zoomBar'; -- Атрибут для флага отображения панели масштаба
|
||||||
SRESP_ATTR_ROWS constant PKG_STD.TSTRING := 'rows'; -- Атрибут для строк данных
|
SRESP_ATTR_ROWS constant PKG_STD.TSTRING := 'rows'; -- Атрибут для строк данных
|
||||||
SRESP_ATTR_COLUMNS_DEF constant PKG_STD.TSTRING := 'columnsDef'; -- Атрибут для описания колонок
|
SRESP_ATTR_COLUMNS_DEF constant PKG_STD.TSTRING := 'columnsDef'; -- Атрибут для описания колонок
|
||||||
SRESP_ATTR_GROUPS constant PKG_STD.TSTRING := 'groups'; -- Атрибут для описания групп
|
SRESP_ATTR_GROUPS constant PKG_STD.TSTRING := 'groups'; -- Атрибут для описания групп
|
||||||
|
SRESP_ATTR_VALUE constant PKG_STD.TSTRING := 'value'; -- Атрибут для значения
|
||||||
|
SRESP_ATTR_ICON constant PKG_STD.TSTRING := 'icon'; -- Атрибут для иконки
|
||||||
|
SRESP_ATTR_STATE constant PKG_STD.TSTRING := 'state'; -- Атрибут для состояния
|
||||||
|
SRESP_ATTR_SQUARE constant PKG_STD.TSTRING := 'square'; -- Атрибут для флага скругления
|
||||||
|
SRESP_ATTR_ELEVATION constant PKG_STD.TSTRING := 'elevation'; -- Атрибут для высоты парения
|
||||||
|
SRESP_ATTR_VARIANT constant PKG_STD.TSTRING := 'variant'; -- Атрибут для варианта исполнения
|
||||||
|
SRESP_ATTR_BG_COLOR constant PKG_STD.TSTRING := 'backgroundColor'; -- Атрибут для цвета заливки
|
||||||
|
SRESP_ATTR_COLOR constant PKG_STD.TSTRING := 'color'; -- Атрибут для цвета
|
||||||
|
|
||||||
/* Константы - атрибуты ответов (таблица данных) */
|
/* Константы - атрибуты ответов (таблица данных) */
|
||||||
SRESP_ATTR_DT_ORDER constant PKG_STD.TSTRING := 'order'; -- Атрибут для флага сортировки
|
SRESP_ATTR_DT_ORDER constant PKG_STD.TSTRING := 'order'; -- Атрибут для флага сортировки
|
||||||
SRESP_ATTR_DT_FILTER constant PKG_STD.TSTRING := 'filter'; -- Атрибут для флага отбора
|
SRESP_ATTR_DT_FILTER constant PKG_STD.TSTRING := 'filter'; -- Атрибут для флага отбора
|
||||||
SRESP_ATTR_DT_COLUMN_VALUES constant PKG_STD.TSTRING := 'values'; -- Атрибут для предопределённых значений
|
SRESP_ATTR_DT_COLUMN_VALUES constant PKG_STD.TSTRING := 'values'; -- Атрибут для предопределённых значений
|
||||||
|
|
||||||
/* Константы - атрибуты ответов (диаграмма Ганта) */
|
/* Константы - атрибуты ответов (диаграмма Ганта) */
|
||||||
SRESP_ATTR_TASK_PROGRESS constant PKG_STD.TSTRING := 'progress'; -- Атрибут для прогресса задачи
|
SRESP_ATTR_TASK_PROGRESS constant PKG_STD.TSTRING := 'progress'; -- Атрибут для прогресса задачи
|
||||||
@ -820,23 +875,23 @@ create or replace package body PKG_P8PANELS_VISUAL as
|
|||||||
SRESP_ATTR_TASK_COLORS constant PKG_STD.TSTRING := 'taskColors'; -- Атрибут для коллекции цветов задачи
|
SRESP_ATTR_TASK_COLORS constant PKG_STD.TSTRING := 'taskColors'; -- Атрибут для коллекции цветов задачи
|
||||||
|
|
||||||
/* Константы - атрибуты ответов (графики) */
|
/* Константы - атрибуты ответов (графики) */
|
||||||
SRESP_ATTR_CHART_LGND_POS constant PKG_STD.TSTRING := 'legendPosition'; -- Атрибут для места размешения легенды графика
|
SRESP_ATTR_CHART_LGND_POS constant PKG_STD.TSTRING := 'legendPosition'; -- Атрибут для места размешения легенды графика
|
||||||
SRESP_ATTR_CHART_LABELS constant PKG_STD.TSTRING := 'labels'; -- Атрибут для меток графика
|
SRESP_ATTR_CHART_LABELS constant PKG_STD.TSTRING := 'labels'; -- Атрибут для меток графика
|
||||||
SRESP_ATTR_CHART_DATASETS constant PKG_STD.TSTRING := 'datasets'; -- Атрибут для наборов данных графика
|
SRESP_ATTR_CHART_DATASETS constant PKG_STD.TSTRING := 'datasets'; -- Атрибут для наборов данных графика
|
||||||
SRESP_ATTR_CHART_DS_LABEL constant PKG_STD.TSTRING := 'label'; -- Атрибут для метки набора данных графика
|
SRESP_ATTR_CHART_DS_LABEL constant PKG_STD.TSTRING := 'label'; -- Атрибут для метки набора данных графика
|
||||||
SRESP_ATTR_CHART_DS_BR_CLR constant PKG_STD.TSTRING := 'borderColor'; -- Атрибут для цвета границы элемента набора данных графика
|
SRESP_ATTR_CHART_DS_BR_CLR constant PKG_STD.TSTRING := 'borderColor'; -- Атрибут для цвета границы элемента набора данных графика
|
||||||
SRESP_ATTR_CHART_DS_BG_CLR constant PKG_STD.TSTRING := 'backgroundColor'; -- Атрибут для цвета заливки элемента набора данных графика
|
SRESP_ATTR_CHART_DS_BG_CLR constant PKG_STD.TSTRING := 'backgroundColor'; -- Атрибут для цвета заливки элемента набора данных графика
|
||||||
SRESP_ATTR_CHART_DS_DATA constant PKG_STD.TSTRING := 'data'; -- Атрибут для коллекции значений элементов набора данных
|
SRESP_ATTR_CHART_DS_DATA constant PKG_STD.TSTRING := 'data'; -- Атрибут для коллекции значений элементов набора данных
|
||||||
SRESP_ATTR_CHART_DS_ITEMS constant PKG_STD.TSTRING := 'items'; -- Атрибут для коллекции элементов набора данных
|
SRESP_ATTR_CHART_DS_ITEMS constant PKG_STD.TSTRING := 'items'; -- Атрибут для коллекции элементов набора данных
|
||||||
SRESP_ATTR_CHART_DS_I_VAL constant PKG_STD.TSTRING := 'value'; -- Атрибут для значения элемента набора данных
|
SRESP_ATTR_CHART_DS_I_VAL constant PKG_STD.TSTRING := 'value'; -- Атрибут для значения элемента набора данных
|
||||||
|
|
||||||
/* Константы - атрибуты ответов (циклограмма) */
|
/* Константы - атрибуты ответов (циклограмма) */
|
||||||
SRESP_ATTR_CG_TASK_LINE constant PKG_STD.TSTRING := 'lineNumb'; -- Атрибут для номера строки (по оси Y)
|
SRESP_ATTR_CG_TASK_LINE constant PKG_STD.TSTRING := 'lineNumb'; -- Атрибут для номера строки (по оси Y)
|
||||||
SRESP_ATTR_CG_LINE_HEIGHT constant PKG_STD.TSTRING := 'lineHeight'; -- Атрибут для высоты строк
|
SRESP_ATTR_CG_LINE_HEIGHT constant PKG_STD.TSTRING := 'lineHeight'; -- Атрибут для высоты строк
|
||||||
|
|
||||||
/* Константы - параметры условий отбора */
|
/* Константы - параметры условий отбора */
|
||||||
SCOND_FROM_POSTFIX constant PKG_STD.TSTRING := 'From'; -- Постфикс наименования нижней границы условия отбора
|
SCOND_FROM_POSTFIX constant PKG_STD.TSTRING := 'From'; -- Постфикс наименования нижней границы условия отбора
|
||||||
SCOND_TO_POSTFIX constant PKG_STD.TSTRING := 'To'; -- Постфикс наименования верхней границы условия отбора
|
SCOND_TO_POSTFIX constant PKG_STD.TSTRING := 'To'; -- Постфикс наименования верхней границы условия отбора
|
||||||
|
|
||||||
/* Расчет диапаона выдаваемых записей */
|
/* Расчет диапаона выдаваемых записей */
|
||||||
procedure UTL_ROWS_LIMITS_CALC
|
procedure UTL_ROWS_LIMITS_CALC
|
||||||
@ -3069,5 +3124,93 @@ create or replace package body PKG_P8PANELS_VISUAL as
|
|||||||
P_EXCEPTION(0, PKG_STATE.SQL_ERRM());
|
P_EXCEPTION(0, PKG_STATE.SQL_ERRM());
|
||||||
end TCYCLOGRAM_TO_XML;
|
end TCYCLOGRAM_TO_XML;
|
||||||
|
|
||||||
|
/* Формирование индикатора */
|
||||||
|
function TINDICATOR_MAKE
|
||||||
|
(
|
||||||
|
SCAPTION in varchar2, -- Подпись
|
||||||
|
SVALUE in varchar2, -- Значение
|
||||||
|
SICON in varchar2 := null, -- Иконка (код шрифта "Google Material Icons" - https://fonts.google.com/icons?icon.set=Material+Icons)
|
||||||
|
SSTATE in varchar2 := SINDICATOR_STATE_UNDEFINED, -- Состояние (см. константы SINDICATOR_STATE_*)
|
||||||
|
BSQUARE in boolean := false, -- Скруглять углы
|
||||||
|
NELEVATION in number := 3, -- Высота парения (от 0 до 24, игнорируется для SINDICATOR_VARIANT_OUTLINED)
|
||||||
|
SVARIANT in varchar2 := SINDICATOR_VARIANT_ELEVATION, -- Вариант исполнения (см. константы SINDICATOR_VARIANT_*)
|
||||||
|
SHINT in varchar2 := null, -- Подсказка
|
||||||
|
SBACKGROUND_COLOR in varchar2 := null, -- Цвет заливки (HTML-код, null - использовать цвет по умолчанию для состояния)
|
||||||
|
SCOLOR in varchar2 := null -- Цвет шрифта и иконки (HTML-код, null - использовать цвет по умолчанию для состояния)
|
||||||
|
) return TINDICATOR -- Результат работы
|
||||||
|
is
|
||||||
|
RRES TINDICATOR; -- Буфер для результата
|
||||||
|
begin
|
||||||
|
/* Проверим параметры */
|
||||||
|
if ((SSTATE is not null) and
|
||||||
|
(SSTATE not in (SINDICATOR_STATE_UNDEFINED, SINDICATOR_STATE_OK, SINDICATOR_STATE_ERR, SINDICATOR_STATE_WARN))) then
|
||||||
|
P_EXCEPTION(0, 'Некорректно указано значение "Состояние".');
|
||||||
|
end if;
|
||||||
|
if ((NELEVATION is not null) and ((NELEVATION <> TRUNC(NELEVATION)) or (NELEVATION < 0) or (NELEVATION > 24))) then
|
||||||
|
P_EXCEPTION(0,
|
||||||
|
'Некорректно указано значение "Высота парения" (ожидается целое число от 0 до 24).');
|
||||||
|
end if;
|
||||||
|
if ((SVARIANT is not null) and (SVARIANT not in (SINDICATOR_VARIANT_ELEVATION, SINDICATOR_VARIANT_OUTLINED))) then
|
||||||
|
P_EXCEPTION(0, 'Некорректно указано значение "Вариант исполнения".');
|
||||||
|
end if;
|
||||||
|
/* Формируем объект */
|
||||||
|
RRES.SCAPTION := SCAPTION;
|
||||||
|
RRES.SVALUE := SVALUE;
|
||||||
|
RRES.SICON := SICON;
|
||||||
|
RRES.SSTATE := COALESCE(SSTATE, SINDICATOR_STATE_UNDEFINED);
|
||||||
|
RRES.BSQUARE := BSQUARE;
|
||||||
|
RRES.NELEVATION := COALESCE(NELEVATION, 3);
|
||||||
|
RRES.SVARIANT := COALESCE(SVARIANT, SINDICATOR_VARIANT_ELEVATION);
|
||||||
|
RRES.SHINT := SHINT;
|
||||||
|
RRES.SBACKGROUND_COLOR := SBACKGROUND_COLOR;
|
||||||
|
RRES.SCOLOR := SCOLOR;
|
||||||
|
/* Возвращаем результат */
|
||||||
|
return RRES;
|
||||||
|
end TINDICATOR_MAKE;
|
||||||
|
|
||||||
|
/* Сериализация индикатора */
|
||||||
|
function TINDICATOR_TO_XML
|
||||||
|
(
|
||||||
|
RINDICATOR in TINDICATOR -- Описание индикатора
|
||||||
|
) return clob -- XML-описание
|
||||||
|
is
|
||||||
|
CRES clob; -- Буфер для результата
|
||||||
|
begin
|
||||||
|
/* Начинаем формирование XML */
|
||||||
|
PKG_XFAST.PROLOGUE(ITYPE => PKG_XFAST.CONTENT_);
|
||||||
|
/* Открываем корень */
|
||||||
|
PKG_XFAST.DOWN_NODE(SNAME => SRESP_TAG_XDATA);
|
||||||
|
/* Открываем индикатор */
|
||||||
|
PKG_XFAST.DOWN_NODE(SNAME => SRESP_TAG_XINDICATOR);
|
||||||
|
/* Формируем атрибуты */
|
||||||
|
PKG_XFAST.ATTR(SNAME => SRESP_ATTR_CAPTION, SVALUE => RINDICATOR.SCAPTION);
|
||||||
|
PKG_XFAST.ATTR(SNAME => SRESP_ATTR_VALUE, SVALUE => RINDICATOR.SVALUE);
|
||||||
|
PKG_XFAST.ATTR(SNAME => SRESP_ATTR_ICON, SVALUE => RINDICATOR.SICON);
|
||||||
|
PKG_XFAST.ATTR(SNAME => SRESP_ATTR_STATE, SVALUE => RINDICATOR.SSTATE);
|
||||||
|
PKG_XFAST.ATTR(SNAME => SRESP_ATTR_SQUARE, BVALUE => RINDICATOR.BSQUARE);
|
||||||
|
PKG_XFAST.ATTR(SNAME => SRESP_ATTR_ELEVATION, NVALUE => RINDICATOR.NELEVATION);
|
||||||
|
PKG_XFAST.ATTR(SNAME => SRESP_ATTR_VARIANT, SVALUE => RINDICATOR.SVARIANT);
|
||||||
|
PKG_XFAST.ATTR(SNAME => SRESP_ATTR_HINT, SVALUE => RINDICATOR.SHINT);
|
||||||
|
PKG_XFAST.ATTR(SNAME => SRESP_ATTR_BG_COLOR, SVALUE => RINDICATOR.SBACKGROUND_COLOR);
|
||||||
|
PKG_XFAST.ATTR(SNAME => SRESP_ATTR_COLOR, SVALUE => RINDICATOR.SCOLOR);
|
||||||
|
/* Закрываем индикатор */
|
||||||
|
PKG_XFAST.UP();
|
||||||
|
/* Закрываем корень */
|
||||||
|
PKG_XFAST.UP();
|
||||||
|
/* Сериализуем */
|
||||||
|
CRES := PKG_XFAST.SERIALIZE_TO_CLOB();
|
||||||
|
/* Завершаем формирование XML */
|
||||||
|
PKG_XFAST.EPILOGUE();
|
||||||
|
/* Возвращаем полученное */
|
||||||
|
return CRES;
|
||||||
|
exception
|
||||||
|
when others then
|
||||||
|
/* Завершаем формирование XML */
|
||||||
|
PKG_XFAST.EPILOGUE();
|
||||||
|
/* Вернем ошибку */
|
||||||
|
PKG_STATE.DIAGNOSTICS_STACKED();
|
||||||
|
P_EXCEPTION(0, PKG_STATE.SQL_ERRM());
|
||||||
|
end TINDICATOR_TO_XML;
|
||||||
|
|
||||||
end PKG_P8PANELS_VISUAL;
|
end PKG_P8PANELS_VISUAL;
|
||||||
/
|
/
|
||||||
|
Loading…
x
Reference in New Issue
Block a user