Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
29 changes: 29 additions & 0 deletions .github/workflows/test.yml-template
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
name: Test

on:
pull_request:
branches: [ master ]

jobs:
build:

runs-on: ubuntu-latest

strategy:
matrix:
node-version: [20.x]

steps:
- uses: actions/checkout@v2
- name: Use Node.js ${{ matrix.node-version }}
uses: actions/setup-node@v1
with:
node-version: ${{ matrix.node-version }}
- run: npm install
- run: npm start & sleep 5 && npm test
- name: Upload tests report(cypress mochaawesome merged HTML report)
if: ${{ always() }}
uses: actions/upload-artifact@v2
with:
name: report
path: reports
25 changes: 14 additions & 11 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,32 +1,35 @@
1. Replace `<your_account>` with your Github username in the link
- [DEMO LINK](https://<your_account>.github.io/js_task_generate_table_DOM/)
- [DEMO LINK](https://github.com/annbisha.github.io/js_task_generate_table_DOM/)
2. Follow [this instructions](https://mate-academy.github.io/layout_task-guideline/)
- Run `npm run test` command to test your code;
- Run `npm run test:only -- -n` to run fast test ignoring linter;
- Run `npm run test:only -- -l` to run fast test with additional info in console ignoring linter.
- Run `npm run test` command to test your code;
- Run `npm run test:only -- -n` to run fast test ignoring linter;
- Run `npm run test:only -- -l` to run fast test with additional info in console ignoring linter.

### Task: Generate dashboard from JSON

This task requires knowledge of how HTML table works. You can learn it here:
- [MDN HTML table basics](https://developer.mozilla.org/en-US/docs/Learn/HTML/Tables/Basics)

- [MDN HTML table basics](https://developer.mozilla.org/en-US/docs/Learn/HTML/Tables/Basics)

Okay, now we know what is a table, and can do some magic.
In `main.js`, you already have imported file `people.json`. Variable `people` contains an array of people, you can check it by using `console.log`.
Your task today is to convert this array to table rows.

Your layout for start:
Your layout for start:

![Preview](./src/images/preview.png)

From the preview, you can see that table has 6 headers, but our data does not contain age and century. Yes, you need to calculate them by yourself.

##### Steps to do this challenge:
1) For each person from `people` array create table row with 6 table cells (name, gender, born, died, age, century)
2) Find a table with class `dashboard` in the document.
3) Append created row to table.
4) Done.

1. For each person from `people` array create table row with 6 table cells (name, gender, born, died, age, century)
2. Find a table with class `dashboard` in the document.
3. Append created row to table.
4. Done.

Hints:

- Age is `person.died - person.born`
- Century:divide year of person's death by 100 `Math.ceil(person.died / 100)`

Expand Down
33 changes: 33 additions & 0 deletions src/scripts/main.js
Original file line number Diff line number Diff line change
Expand Up @@ -358,3 +358,36 @@ const people = [
console.log(people); // you can remove it
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Remove this debugging console.log(people) per checklist (medium): it should not remain in the final submission.

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

There is a leftover debug statement console.log(people); which the checklist explicitly asks to remove. Delete this line.


// write your code here
const table = document.querySelector('.dashboard');

people.forEach((person) => {
const row = document.createElement('tr');

const nameCell = document.createElement('td');

nameCell.textContent = person.name;

const genderCell = document.createElement('td');

genderCell.textContent = person.sex === 'm' ? 'Male' : 'Female';
Comment on lines +370 to +372
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ensure you are not shadowing or redefining people elsewhere. The gender cell creation is correct (maps 'm' -> 'Male' and otherwise 'Female') so keep that logic, but only after switching to the imported people data.


const bornCell = document.createElement('td');

bornCell.textContent = person.born;

const diedCell = document.createElement('td');

diedCell.textContent = person.died;

const ageCell = document.createElement('td');

ageCell.textContent = person.died - person.born;

const centuryCell = document.createElement('td');

centuryCell.textContent = Math.ceil(person.died / 100);

row.append(nameCell, genderCell, bornCell, diedCell, ageCell, centuryCell);

table.appendChild(row);
});
Loading