From 9f6b79f0bde6f3bfc704079d332f1f314a05fcb9 Mon Sep 17 00:00:00 2001 From: Ihor Balakhmei Date: Sun, 7 Jun 2026 21:47:29 +0200 Subject: [PATCH 1/2] add task solution --- .github/workflows/test.yml-template | 29 ++++++++++++++++++++++++ README.md | 6 ++--- package-lock.json | 9 ++++---- package.json | 2 +- src/scripts/main.js | 34 ++++++++++++++++++++++++++++- 5 files changed, 71 insertions(+), 9 deletions(-) create mode 100644 .github/workflows/test.yml-template diff --git a/.github/workflows/test.yml-template b/.github/workflows/test.yml-template new file mode 100644 index 000000000..44ac4e963 --- /dev/null +++ b/.github/workflows/test.yml-template @@ -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 diff --git a/README.md b/README.md index 294f077fb..f1c7acc67 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,5 @@ 1. Replace `` with your Github username in the link - - [DEMO LINK](https://.github.io/js_task_parse_list_DOM/) + - [DEMO LINK](https://github.com/balakhmei/js_task_parse_list_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; @@ -10,14 +10,14 @@ Hey there! Can you parse data from the list and sort it based on data attributes? Your task: Sort list by salary in descending order. -Get an array of employees. Write two functions: +Get an array of employees. Write two functions: - first, which sorts the list by salary from data attributes - second, which returns an array of objects, where objects are employees. The schema for the employee: ``` { - name, + name, position, salary, age diff --git a/package-lock.json b/package-lock.json index c3a278e3e..afdd680c2 100644 --- a/package-lock.json +++ b/package-lock.json @@ -13,7 +13,7 @@ "@linthtml/linthtml": "^0.9.6", "@mate-academy/eslint-config": "latest", "@mate-academy/linthtml-config": "latest", - "@mate-academy/scripts": "^1.8.5", + "@mate-academy/scripts": "^2.1.3", "@mate-academy/stylelint-config": "latest", "@parcel/transformer-sass": "^2.12.0", "cypress": "^13.13.0", @@ -1497,10 +1497,11 @@ "dev": true }, "node_modules/@mate-academy/scripts": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/@mate-academy/scripts/-/scripts-1.8.5.tgz", - "integrity": "sha512-mHRY2FkuoYCf5U0ahIukkaRo5LSZsxrTSgMJheFoyf3VXsTvfM9OfWcZIDIDB521kdPrScHHnRp+JRNjCfUO5A==", + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/@mate-academy/scripts/-/scripts-2.1.3.tgz", + "integrity": "sha512-a07wHTj/1QUK2Aac5zHad+sGw4rIvcNl5lJmJpAD7OxeSbnCdyI6RXUHwXhjF5MaVo9YHrJ0xVahyERS2IIyBQ==", "dev": true, + "license": "MIT", "dependencies": { "@octokit/rest": "^17.11.2", "@types/get-port": "^4.2.0", diff --git a/package.json b/package.json index 8e38597e8..a43a43f70 100644 --- a/package.json +++ b/package.json @@ -22,7 +22,7 @@ "@linthtml/linthtml": "^0.9.6", "@mate-academy/eslint-config": "latest", "@mate-academy/linthtml-config": "latest", - "@mate-academy/scripts": "^1.8.5", + "@mate-academy/scripts": "^2.1.3", "@mate-academy/stylelint-config": "latest", "@parcel/transformer-sass": "^2.12.0", "cypress": "^13.13.0", diff --git a/src/scripts/main.js b/src/scripts/main.js index a765fdb1d..de6911716 100644 --- a/src/scripts/main.js +++ b/src/scripts/main.js @@ -1,3 +1,35 @@ 'use strict'; -// write code here +function sortList(listElement) { + const items = Array.from(list.querySelectorAll('li')); + + function convertSalary(salaryString) { + return Number(salaryString.replace('$', '').replace(',', '')); + } + + const sortSalary = items.sort( + (a, b) => convertSalary(b.dataset.salary) - convertSalary(a.dataset.salary), + ); + + return list.append(...sortSalary); +} + +function getEmployees(listElement) { + const items = Array.from(list.querySelectorAll('li')); + + const employee = items.map((li) => { + return { + name: li.dataset.name, + position: li.dataset.position, + salary: Number(li.dataset.salary), + age: li.dataset.age, + }; + }); + + return employee; +} + +const list = document.querySelector('ul'); + +sortList(list); +getEmployees(list); From be9a48f8fe2b196249f4c2dbd20dcb11360f1d94 Mon Sep 17 00:00:00 2001 From: Ihor Balakhmei Date: Sun, 7 Jun 2026 22:04:22 +0200 Subject: [PATCH 2/2] add task second solution --- src/scripts/main.js | 19 +++++++++---------- 1 file changed, 9 insertions(+), 10 deletions(-) diff --git a/src/scripts/main.js b/src/scripts/main.js index de6911716..9e06659c4 100644 --- a/src/scripts/main.js +++ b/src/scripts/main.js @@ -1,34 +1,33 @@ 'use strict'; function sortList(listElement) { - const items = Array.from(list.querySelectorAll('li')); - - function convertSalary(salaryString) { - return Number(salaryString.replace('$', '').replace(',', '')); - } - + const items = Array.from(listElement.querySelectorAll('li')); const sortSalary = items.sort( (a, b) => convertSalary(b.dataset.salary) - convertSalary(a.dataset.salary), ); - return list.append(...sortSalary); + return listElement.append(...sortSalary); } function getEmployees(listElement) { - const items = Array.from(list.querySelectorAll('li')); + const items = Array.from(listElement.querySelectorAll('li')); const employee = items.map((li) => { return { name: li.dataset.name, position: li.dataset.position, - salary: Number(li.dataset.salary), - age: li.dataset.age, + salary: convertSalary(li.dataset.salary), + age: Number(li.dataset.age), }; }); return employee; } +function convertSalary(salaryString) { + return Number(salaryString.replace('$', '').replace(',', '')); +} + const list = document.querySelector('ul'); sortList(list);