function displayCv(inputCvId, inputAccessKey) {
fetch(`check_auth.php?cvId=${inputCvId}`)
.then(response => response.json())
.then(data => {
if (data){
const visible = data.visible;
const accessKey = data.accessKey;
if (visible === 0) {
document.getElementById('tableSections').innerText = 'This cv is in private session.';
}
else if (visible === 1) {
displaySection(inputCvId);
}
else if (visible === 2) {
if (accessKey === inputAccessKey) {
displaySection(inputCvId);
}
else {
document.getElementById('tableSections').innerText = 'Missing accessKey.';
}
}
else {
document.getElementById('tableSections').innerText = 'Invalid cvId.';
}
}
else {
document.getElementById('tableSections').innerText = 'Invalid cvId.';
}
})
.catch(error => {
console.error('Error checking profile permission:', error);
});
}
function displaySection(cvId) {
const sections = ['profile', 'education', 'publication', 'project', 'other', 'volunteer', 'awards', 'skills'];
sections.forEach(tableName => {
const titleId = tableName + 'Title';
const displayId = tableName + 'Data';
const sectionHTML = `
`;
document.getElementById('tableSections').innerHTML += sectionHTML;
fetchTitle(cvId, tableName, titleId);
fetchConfig(cvId, tableName, displayId, titleId);
});
}
function fetchTitle(cvId, tableName, titleId) {
fetch(`fetch_title.php?cvId=${cvId}&tableName=${tableName}`)
.then(response => response.json())
.then(fetchedTitleName => {
const title = document.getElementById(titleId);
title.innerHTML = fetchedTitleName;
})
.catch(error => {
console.error('Error fetching title name:', error);
});
}
function fetchConfig(cvId, tableName, displayId, titleId) {
const configMapping = {
"defaultProfileLayout": defaultProfileLayout,
"defaultContentLayout": defaultContentLayout,
};
fetch(`fetch_config.php?cvId=${cvId}&tableName=${tableName}`)
.then(response => response.json())
.then(fetchedConfigName => {
// Look up the corresponding configuration object
const config = configMapping[fetchedConfigName];
if (config) {
applyConfig(config, displayId);
}
displayBlockData(cvId, tableName, displayId, titleId, config);
})
.catch(error => console.error('Error fetching config name:', error));
}
function applyConfig(config, displayId) {
const sectionElement = document.getElementById(displayId);
if (sectionElement && config) {
for (const tableStyleKey in config.additionalBlockStyles) {
if (config.additionalBlockStyles.hasOwnProperty(tableStyleKey)) {
sectionElement.style[tableStyleKey] = config.additionalBlockStyles[tableStyleKey];
}
}
const h2Element = sectionElement.querySelector('h2');
if (h2Element) {
for (const titleStyleKey in config.titleStyles) {
if (config.titleStyles.hasOwnProperty(titleStyleKey)) {
h2Element.style[titleStyleKey] = config.titleStyles[titleStyleKey];
}
}
}
}
else {
console.error(`Section element with ID ${displayId} not found.`);
}
}
function displayBlockData(cvId, tableName, displayId, titleId, sectionConfigs) {
// Additional hidden columns
let hiddenColumns = ['id', 'cid', 'uid', 'owner', 'visible', 'passwd', 'sequence', 'accessKey'];
// Fetch column names from the specified table
fetch(`fetch_block.php?cvId=${cvId}&tableName=${tableName}`)
.then(response => response.json())
.then(data => {
const tableData = document.getElementById(displayId);
const title = document.getElementById(titleId);
if (data.length === 0) {
tableData.style.display = 'none'; // Hide the display area if no data is retrieved
title.style.display = 'none'; // Hide the title if no data is retrieved
return;
}
tableData.innerHTML = ""; // Clear existing list
const config = sectionConfigs && sectionConfigs[tableName] ? sectionConfigs[tableName] : {};
let isFirstRow = true;
data.forEach(row => {
const tableRow = document.createElement('tr');
const lineBreak = document.createElement("br");
let cellData = "";
// Populate the table row with table information based on configuration
for (const key in row) {
if (row.hasOwnProperty(key) && !hiddenColumns.includes(key) && row[key] !== null && row[key] !== '') {
const tableCell = document.createElement('td');
// Retrieve configuration for the current key
const configKey = config[key];
const prefixStyle = configKey && configKey.prefixStyle ? `style='${configKey.prefixStyle}'` : '';
const dataStyle = configKey && configKey.dataStyle ? `style='${configKey.dataStyle}'` : '';
const dataSameLine = configKey && configKey.dataSameLine;
const dataTableStyle = configKey && configKey.dataTableStyle ? configKey.dataTableStyle : '';
// Display data without column name
if (config.invisiblePrefixes && config.invisiblePrefixes.includes(key)) {
cellData += `${row[key]}`;
}
else {
// Display data with column name
const prefixTag = prefixStyle ? `${key}:` : `${key}:`;
cellData += `${prefixTag} ${row[key]}`;
}
if (!dataSameLine){
tableCell.innerHTML = cellData; // Set the innerHTML of the table cell
tableRow.appendChild(tableCell); // Append the table cell to the table row
cellData = ""; // CLear cell data
}
// Apply dataTableStyle to the table cell
tableCell.setAttribute('style', dataTableStyle);
}
}
// Apply any additional styles to the table row
for (const styleKey in blockStyles) {
if (blockStyles.hasOwnProperty(styleKey)) {
tableRow.style[styleKey] = blockStyles[styleKey];
}
}
// Append the table row to the tableData element
if (!isFirstRow) {
tableData.appendChild(lineBreak);
}
else {
isFirstRow = false;
}
tableData.appendChild(tableRow);
});
})
.catch(error => console.error('Error fetching table information:', error));
}