WEB APP: реализована вспомогательная функция xml2JSON, применена в панели "Производственная программа"
This commit is contained in:
parent
a90071afe8
commit
106388d4c8
@ -7,7 +7,7 @@
|
||||
//Подключение библиотек
|
||||
//---------------------
|
||||
|
||||
import { XMLBuilder } from "fast-xml-parser"; //Конвертация XML в JSON и JSON в XML
|
||||
import { XMLParser, XMLBuilder } from "fast-xml-parser"; //Конвертация XML в JSON и JSON в XML
|
||||
import dayjs from "dayjs"; //Работа с датами
|
||||
|
||||
//---------
|
||||
@ -56,6 +56,26 @@ const object2Base64XML = (obj, builderOptions) => {
|
||||
return btoa(unescape(encodeURIComponent(builder.build(obj))));
|
||||
};
|
||||
|
||||
//Конвертация XML в JSON
|
||||
const xml2JSON = ({ xmlDoc, attributeValueProcessor, isArray }) => {
|
||||
return new Promise((resolve, reject) => {
|
||||
try {
|
||||
let opts = {
|
||||
ignoreDeclaration: true,
|
||||
ignoreAttributes: false,
|
||||
parseAttributeValue: true,
|
||||
attributeNamePrefix: ""
|
||||
};
|
||||
if (attributeValueProcessor) opts.attributeValueProcessor = attributeValueProcessor;
|
||||
if (isArray) opts.isArray = isArray;
|
||||
const parser = new XMLParser(opts);
|
||||
resolve(parser.parse(xmlDoc));
|
||||
} catch (e) {
|
||||
reject(e);
|
||||
}
|
||||
});
|
||||
};
|
||||
|
||||
//Форматирование даты в формат РФ
|
||||
const formatDateRF = value => (value ? dayjs(value).format("DD.MM.YYYY") : null);
|
||||
|
||||
@ -75,4 +95,14 @@ const genGUID = () =>
|
||||
//Интерфейс модуля
|
||||
//----------------
|
||||
|
||||
export { hasValue, getDisplaySize, deepCopyObject, object2Base64XML, formatDateRF, formatDateJSONDateOnly, formatNumberRFCurrency, genGUID };
|
||||
export {
|
||||
hasValue,
|
||||
getDisplaySize,
|
||||
deepCopyObject,
|
||||
object2Base64XML,
|
||||
xml2JSON,
|
||||
formatDateRF,
|
||||
formatDateJSONDateOnly,
|
||||
formatNumberRFCurrency,
|
||||
genGUID
|
||||
};
|
||||
|
@ -15,9 +15,8 @@ import { MessagingСtx } from "../../context/messaging"; //Контекст со
|
||||
import { ApplicationСtx } from "../../context/application"; //Контекст приложения
|
||||
import { P8P_GANTT_CONFIG_PROPS } from "../../config_wrapper"; //Подключение компонентов к настройкам приложения
|
||||
import { P8PGantt } from "../../components/p8p_gantt"; //Диаграмма Ганта
|
||||
import { formatDateJSONDateOnly } from "../../core/utils"; //Вспомогательные функции
|
||||
import { xml2JSON, formatDateJSONDateOnly } from "../../core/utils"; //Вспомогательные функции
|
||||
import { useFilteredPlans } from "./hooks"; //Вспомогательные хуки
|
||||
import { XMLParser } from "fast-xml-parser";
|
||||
|
||||
//---------
|
||||
//Константы
|
||||
@ -49,23 +48,12 @@ const STYLES = {
|
||||
//------------------------------------
|
||||
|
||||
//Разбор XML с данными спецификации производственной программы
|
||||
const parseProdPlanSpXML = xmlDoc => {
|
||||
return new Promise((resolve, reject) => {
|
||||
try {
|
||||
const parser = new XMLParser({
|
||||
ignoreDeclaration: true,
|
||||
ignoreAttributes: false,
|
||||
parseAttributeValue: true,
|
||||
attributeNamePrefix: "",
|
||||
attributeValueProcessor: (name, val) =>
|
||||
name == "numb" ? undefined : ["start", "end"].includes(name) ? formatDateJSONDateOnly(val) : val
|
||||
});
|
||||
const data = parser.parse(xmlDoc);
|
||||
resolve(data.XDATA);
|
||||
} catch (e) {
|
||||
reject(e);
|
||||
}
|
||||
const parseProdPlanSpXML = async xmlDoc => {
|
||||
const data = await xml2JSON({
|
||||
xmlDoc,
|
||||
attributeValueProcessor: (name, val) => (name == "numb" ? undefined : ["start", "end"].includes(name) ? formatDateJSONDateOnly(val) : val)
|
||||
});
|
||||
return data.XDATA;
|
||||
};
|
||||
|
||||
//Список планов
|
||||
|
Loading…
x
Reference in New Issue
Block a user