HTMLify

script.js
Views: 64 | Author: cody
const teamMembers = [
    {
        src: 'assets/profile.jpg',
        name: 'James Alexander',
        alias: '@james',
        email: 'james@example.com',
        status: 'active',
        tags: ['dev', 'QA']
    },
    {
        src: 'assets/liliya.jpg',
        name: 'Lilia Taylor',
        alias: '@lilia',
        email: 'lilia.taylor@example.com',
        status: 'active',
        tags: ['design', 'marketing']
    },
    {
        src: 'assets/drew.jpg',
        name: 'Drew Cano',
        email: 'drew.crano@example.com',
        alias: '@drew',
        status: 'inactive',
        tags: ['design', 'marketing']
    },

    {
        src: 'assets/nate.jpg',
        name: 'Nate Conor',
        email: 'nate@example.com',
        alias: '@nate',
        status: 'offline',
        tags: ['dev']
    },
    {
        name: 'Melissa Brantley',
        src: 'assets/melissa.jpg',
        email: 'melissa@example.com',
        alias: '@melissa',
        status: 'active',
        tags: ['marketing']
    },
    {
        name: 'Anna Smith',
        src: 'assets/anna.jpg',
        email: 'anna.smith@example.com',
        alias: '@anna',
        status: 'active',
        tags: ['marketing', 'design']
    },
    {
        src: 'assets/natalia.jpg',
        name: 'Natalia Alexandra',
        email: 'natalia@example.com',
        alias: '@natalia',
        status: 'inactive',
        tags: ['dev', 'marketing']
    },
];


let tableRowCount = document.getElementsByClassName('table-row-count');
tableRowCount[0].innerHTML = `(${teamMembers.length}) Members`;
console.log(tableRowCount)

let tableBody = document.getElementById('team-member-rows');

const itemsOnPage = 5;

const numberOfPages = Math.ceil(teamMembers.length / itemsOnPage);

const start = (new URLSearchParams(window.location.search)).get('page') || 1;

const mappedRecords = teamMembers
.filter((teamMember, i) => (((start - 1) * itemsOnPage) < i + 1) && (i+1 <= start * itemsOnPage))
.map(
  (teamMember) => {
    return `<tr>
        <td class="team-member-profile">
            <img src="${teamMember.src}" alt="${teamMember.name}">
            <span class="profile-info">
                <span class="profile-info__name">
                    ${teamMember.name}
                </span>
                <span class=profile-info__alias>
                    ${teamMember.alias}
                </span>
            </span>
        </td>
        <td>
            <span class="status status--${teamMember.status}">
                ${teamMember.status}
            </span>
        </td>
        <td>${teamMember.email}</td>
        <td>
            <span class="tags">
                ${teamMember.tags.map((tag) => `<span class="tag tag--${tag}">${tag}</span>`).join('')}
            </span>        
        </td>
    </tr>`;
});

tableBody.innerHTML = mappedRecords.join('');

const pagination = document.querySelector('.pagination');

const linkList = [];

for (let i = 0; i < numberOfPages; i++) {
    const pageNumber = i + 1;
    
    console.log(pageNumber, start)

    linkList.push(`<li><a href="?page=${pageNumber}" ${pageNumber == start ? 'class="active"' : ''} title="page ${pageNumber}">${pageNumber}</a></li>`);
}

pagination.innerHTML = linkList.join('');

Comments