UNPKG

sccoreui

Version:

ui-sccore

96 lines (95 loc) 4.29 kB
"use strict"; 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;