Refactor TableManager to improve data transformation logic for indexed and direct formats
This commit is contained in:
parent
d110a106ad
commit
897eb490f9
1 changed files with 24 additions and 24 deletions
48
dist/js/app.js
vendored
48
dist/js/app.js
vendored
|
|
@ -167,43 +167,42 @@ class TableManager {
|
||||||
|
|
||||||
// New method to transform indexed data to regular format
|
// New method to transform indexed data to regular format
|
||||||
_transformIndexedData(indexedData) {
|
_transformIndexedData(indexedData) {
|
||||||
// Check if data is in the new direct format (host -> service -> ✅/❌)
|
// Check if data is in indexed format (has services and supported properties)
|
||||||
const firstHost = Object.values(indexedData)[0];
|
if (indexedData.services && indexedData.supported) {
|
||||||
if (firstHost && typeof firstHost === 'object' && !firstHost.hasOwnProperty('services') && !firstHost.hasOwnProperty('supported')) {
|
// Handle indexed format
|
||||||
// Data is already in the new direct format
|
const { services, supported } = indexedData;
|
||||||
|
const transformed = {};
|
||||||
|
|
||||||
|
for (const [host, supportedIndices] of Object.entries(supported)) {
|
||||||
|
transformed[host] = {};
|
||||||
|
services.forEach((service, index) => {
|
||||||
|
transformed[host][service] = supportedIndices.includes(index) ? "✅" : "❌";
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
// Store services for later use
|
||||||
|
this.state.services = services;
|
||||||
|
this.state.isIndexedFormat = true;
|
||||||
|
|
||||||
|
return transformed;
|
||||||
|
} else {
|
||||||
|
// Data is already in the direct format (host -> service -> ✅/❌)
|
||||||
this.state.isIndexedFormat = false;
|
this.state.isIndexedFormat = false;
|
||||||
return indexedData;
|
return indexedData;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Handle indexed format
|
|
||||||
const { services, supported } = indexedData;
|
|
||||||
const transformed = {};
|
|
||||||
|
|
||||||
for (const [host, supportedIndices] of Object.entries(supported)) {
|
|
||||||
transformed[host] = {};
|
|
||||||
services.forEach((service, index) => {
|
|
||||||
transformed[host][service] = supportedIndices.includes(index) ? "✅" : "❌";
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
// Store services for later use
|
|
||||||
this.state.services = services;
|
|
||||||
this.state.isIndexedFormat = true;
|
|
||||||
|
|
||||||
return transformed;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Modified method to handle both formats
|
// Modified method to handle both formats
|
||||||
generateTable(data = {}) {
|
generateTable(data = {}) {
|
||||||
if (!this.elements.container) return;
|
if (!this.elements.container) return;
|
||||||
|
|
||||||
// Handle both old and new indexed formats
|
// Handle both indexed and direct formats
|
||||||
let processedData;
|
let processedData;
|
||||||
if (data.services && data.supported) {
|
if (data.services && data.supported) {
|
||||||
// New indexed format
|
// Indexed format
|
||||||
processedData = this._transformIndexedData(data);
|
processedData = this._transformIndexedData(data);
|
||||||
} else {
|
} else {
|
||||||
// Old format
|
// Direct format
|
||||||
processedData = data;
|
processedData = data;
|
||||||
this.state.isIndexedFormat = false;
|
this.state.isIndexedFormat = false;
|
||||||
// Try to extract services from first entry
|
// Try to extract services from first entry
|
||||||
|
|
@ -1010,6 +1009,7 @@ document.addEventListener('DOMContentLoaded', async () => {
|
||||||
|
|
||||||
results.forEach((result, index) => {
|
results.forEach((result, index) => {
|
||||||
const containers = ['#file-hosts-table-container', '#adult-hosts-table-container'];
|
const containers = ['#file-hosts-table-container', '#adult-hosts-table-container'];
|
||||||
|
|
||||||
loadingManager.hide(containers[index], loaders[index]);
|
loadingManager.hide(containers[index], loaders[index]);
|
||||||
|
|
||||||
if (result.status === 'fulfilled') {
|
if (result.status === 'fulfilled') {
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue