sccoreui
Version:
ui-sccore
96 lines (95 loc) • 4.29 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.FakeServer = void 0;
function FakeServer(allData, groupFields) {
// allData.splice(10,8000)
// Get unique data according to first group
const getUnique = (allData, groupField) => {
let filterField = {};
const withFilter = allData === null || allData === void 0 ? void 0 : allData.filter((data, idx) => {
if (!(filterField === null || filterField === void 0 ? void 0 : filterField.hasOwnProperty(data[groupField]))) {
filterField[data[groupField]] = idx;
return data;
}
});
return withFilter;
};
// const uniqueData = groupFields.reduce((data, field) => getUnique(data, field), allData);
const uniqueData = getUnique(allData, groupFields[0]);
// Returns the data to grid
return {
getData: function (request) {
var results = executeQuery(request);
const output = {
success: true,
rows: results,
lastRow: getLastRowIndex(request)
};
return output;
}
};
function executeQuery(request) {
console.log(request, groupFields, 'request in execute query');
let filteredData = applyFilters(request, allData);
console.log(filteredData, 'filtered data in execute query');
// return filteredData
// var sortedData = applySorting(request, filteredData);
if (allData.length <= 10)
return filteredData;
// Only used when no api is called trimming data from front end (ex:group-grid:route)
let paginatedData = applyPagination(request, filteredData);
// console.log(paginatedData,'paginated data ')
return paginatedData;
}
function applyFilters(request, data) {
var _a;
let filteredData = uniqueData;
const currentGroup = request === null || request === void 0 ? void 0 : request.groupKeys;
const groupedCols = request === null || request === void 0 ? void 0 : request.rowGroupCols;
let groupFilteredData = [];
let hash = {};
if (currentGroup && currentGroup.length > 0) {
const nextSingleField = (_a = groupedCols[currentGroup.length]) === null || _a === void 0 ? void 0 : _a.field;
data.filter((item, idx) => {
// Check all conditions
let matchesAllConditions = true;
for (let i = 0; i < currentGroup.length; i++) {
const field = groupedCols[i].field;
const value = currentGroup[i];
if (item[field] !== value) {
matchesAllConditions = false;
break;
}
}
if (matchesAllConditions) {
if (nextSingleField) {
if (!hash.hasOwnProperty(item[nextSingleField])) {
console.log(item, 'item sending in group filtered data');
groupFilteredData.push(item);
}
hash[item[nextSingleField]] = idx;
}
else {
groupFilteredData.push(item);
}
}
});
}
else {
groupFilteredData = filteredData;
}
return groupFilteredData;
}
function applyPagination(request, data) {
if (request.endRow === undefined || request.startRow === undefined) {
return data;
}
var blockSize = (request === null || request === void 0 ? void 0 : request.endRow) - (request === null || request === void 0 ? void 0 : request.startRow);
var startIndex = request === null || request === void 0 ? void 0 : request.startRow;
return data.slice(startIndex, startIndex + blockSize);
}
function getLastRowIndex(request) {
return executeQuery(Object.assign(Object.assign({}, request), { startRow: undefined, endRow: undefined })).length;
}
}
exports.FakeServer = FakeServer;