ui5_easy_use
Version:
CLI tool for SAP ui5 and SAPUI5 projects to initialize apps, generate pages, insert form and table components, manage routing, and automate i18n bindings
197 lines (158 loc) • 6.32 kB
JavaScript
sap.ui.define([], function () {
"use strict";
return class Formaters {
constructor(controller) {
this._controllerJS = controller;
}
convertODataDate(odataDateString) {
if (!odataDateString) {
return new Date("2000/1/1");
}
const timestampMatch = String(odataDateString).match(/\d+/);
const timestamp = timestampMatch ? parseInt(timestampMatch[0], 10) : 0;
return new Date(timestamp).toDateString();
}
replaceOrgWithExt(fields) {
return this._replaceFieldSuffix(fields, "Org", "Ext");
}
replaceExtWithOrg(fields) {
return this._replaceFieldSuffix(fields, "Ext", "Org");
}
convertValuesToStrings(obj) {
return Object.keys(obj || {}).reduce(function (result, key) {
result[key] = String(obj[key]);
return result;
}, {});
}
convertToJson(value) {
if (typeof value === "string") {
return JSON.parse(value.replace(/"({[^}]*})"/g, function (match) {
return match.replace(/"/g, '\\"');
}));
}
return Object.keys(value || {}).reduce(function (result, key) {
result[key] = typeof value[key] === "string" ? JSON.parse(value[key]) : value[key];
return result;
}, {});
}
filterObjectByKeys(obj, keysArray) {
return Object.keys(obj || {})
.filter(function (key) {
return Array.isArray(keysArray) && keysArray.includes(key);
})
.reduce(function (result, key) {
result[key] = obj[key];
return result;
}, {});
}
transformObject(inputObj) {
const transformedObj = {};
for (const [key, value] of Object.entries(inputObj || {})) {
transformedObj[key.replace("Ans9", "Ans1")] = JSON.stringify(Object.assign({}, value));
}
return transformedObj;
}
transformAnsObject(inputObj) {
const transformedObj = {};
for (const [key, value] of Object.entries(inputObj || {})) {
transformedObj[key] = JSON.stringify(value);
}
return transformedObj;
}
transStrDataToJson(data) {
return (data || []).map(function (item) {
return Object.keys(item).reduce(function (acc, key) {
acc[key] = key.match(/^Ans(\d+)$/) ? JSON.parse(item[key]) : item[key];
return acc;
}, {});
});
}
async enrichUsersWithInfo(array, getUserInfoCallback) {
for (const item of array || []) {
const userInfo = await getUserInfoCallback.bind(this._controllerJS)(item.UserID);
Object.assign(item, userInfo);
}
return array;
}
getYearsList(startYear) {
const currentYear = new Date().getFullYear();
const years = [];
for (let year = startYear; year <= currentYear; year++) {
years.push(year);
}
return years;
}
transformFields(selectedSecondformData) {
return Object.entries(selectedSecondformData || {}).reduce(function (acc, [key, value]) {
const match = key.match(/(Q\d+)(Org|Ext(\d+))Field(\d+)/);
if (!match) {
return acc;
}
const [, qNumber, type, extNum, fieldNum] = match;
const ansNumber = qNumber.replace("Q", "Ans");
const typeGroup = type === "Org" ? "Org" : `Ext${extNum}`;
acc[ansNumber] = acc[ansNumber] || {};
acc[ansNumber][typeGroup] = acc[ansNumber][typeGroup] || {};
acc[ansNumber][typeGroup][`Q${fieldNum}`] = value;
return acc;
}, {});
}
getQuestionData(obj) {
const result = {
Q1: 0,
Q2: 0,
Q3: 0,
Q4: 0,
Q5: 0,
Q6: 0,
Q7: 0,
Q8: 0,
Q9: 0
};
for (let index = 1; index <= 9; index++) {
const ansValue = (obj || {})[`Ans${index}`];
if (ansValue !== null && ansValue !== undefined) {
result[`Q${index}`] = 1;
}
}
return result;
}
getAnsKeys(obj) {
return Object.keys(obj || {}).filter(function (key) {
return /^Ans\d+$/.test(key);
});
}
groupByYearAndMonth(obj) {
const result = {};
Object.keys(obj || {}).forEach(function (key) {
const item = obj[key];
const createdAt = new Date(item.createdAt);
const year = createdAt.getFullYear();
const month = createdAt.toLocaleString("default", { month: "long" });
result[year] = result[year] || [];
const existingMonth = result[year].find(function (monthObj) {
return monthObj.Month === month;
});
if (existingMonth) {
existingMonth.numberSubmitted += 1;
return;
}
result[year].push({ Month: month, numberSubmitted: 1 });
});
return result;
}
formatValue(q4Value, localData) {
const jobNatureEntry = ((localData && localData.JobNature) || []).find(function (entry) {
return entry.key === q4Value;
});
return jobNatureEntry ? jobNatureEntry.text : q4Value;
}
_replaceFieldSuffix(fields, fromValue, toValue) {
return (fields || []).map(function (field) {
return Object.assign({}, field, {
fieldName: String(field.fieldName || "").replace(fromValue, toValue)
});
});
}
};
});