From ea726c9369c696c4aa80cb8bff517dc1b302688a Mon Sep 17 00:00:00 2001 From: Your Name Date: Sun, 30 Aug 2026 12:57:07 +0300 Subject: [PATCH 1/3] Solution --- .github/workflows/test.yml-template | 29 +++++++++++++++++++++++++++++ README.md | 6 +++--- package-lock.json | 9 +++++---- package.json | 2 +- src/scripts/main.js | 18 +++++++++++++++++- 5 files changed, 55 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..f0e931211 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://MkxxiM.github.io/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..55c1f30d7 100644 --- a/src/scripts/main.js +++ b/src/scripts/main.js @@ -1,3 +1,19 @@ 'use strict'; -// write code here +const List = document.querySelector('ul'); +const list = Array.from(document.querySelectorAll('li')); +const salariesMap = new Map(); + +list.forEach((item) => { + const value = +item.getAttribute('data-salary').replace(/[$,]/g, ''); + + salariesMap.set(item, value); +}); + +const sortedSalaries = Array.from(salariesMap.entries()); + +sortedSalaries.sort((a, b) => b[1] - a[1]); + +for (let i = 0; i < sortedSalaries.length; i++) { + List.appendChild(sortedSalaries[i][0]); +} From b159e710cdba6ad3ee2ddfd214046100a8ccf338 Mon Sep 17 00:00:00 2001 From: Your Name Date: Sun, 30 Aug 2026 13:37:10 +0300 Subject: [PATCH 2/3] Sloution_v.2 --- src/scripts/main.js | 25 ++++++++++++++++--------- 1 file changed, 16 insertions(+), 9 deletions(-) diff --git a/src/scripts/main.js b/src/scripts/main.js index 55c1f30d7..319a25f57 100644 --- a/src/scripts/main.js +++ b/src/scripts/main.js @@ -1,19 +1,26 @@ 'use strict'; const List = document.querySelector('ul'); -const list = Array.from(document.querySelectorAll('li')); +const list = document.querySelectorAll('li'); const salariesMap = new Map(); -list.forEach((item) => { - const value = +item.getAttribute('data-salary').replace(/[$,]/g, ''); +function sortingList(nodelist) { + nodelist.forEach((item) => { + function converter(val) { + const value = +val.dataset.salary.replace(/[$,]/g, ''); - salariesMap.set(item, value); -}); + return value; + } + salariesMap.set(item, converter(item)); + }); -const sortedSalaries = Array.from(salariesMap.entries()); + const sortedList = Array.from(salariesMap.entries()); -sortedSalaries.sort((a, b) => b[1] - a[1]); + sortedList.sort((a, b) => b[1] - a[1]); -for (let i = 0; i < sortedSalaries.length; i++) { - List.appendChild(sortedSalaries[i][0]); + return sortedList; +} + +for (let i = 0; i < sortingList(list).length; i++) { + List.appendChild(sortingList(list)[i][0]); } From 8c09670459c8c1f62d4437b141a8dde6c2729c78 Mon Sep 17 00:00:00 2001 From: Your Name Date: Sun, 30 Aug 2026 14:02:59 +0300 Subject: [PATCH 3/3] Solution_v2.1 --- src/scripts/main.js | 25 ++++++++++++++----------- 1 file changed, 14 insertions(+), 11 deletions(-) diff --git a/src/scripts/main.js b/src/scripts/main.js index 319a25f57..dc5e78668 100644 --- a/src/scripts/main.js +++ b/src/scripts/main.js @@ -4,23 +4,26 @@ const List = document.querySelector('ul'); const list = document.querySelectorAll('li'); const salariesMap = new Map(); -function sortingList(nodelist) { - nodelist.forEach((item) => { - function converter(val) { - const value = +val.dataset.salary.replace(/[$,]/g, ''); +function converter(item) { + const value = +item.dataset.salary.replace(/[$,]/g, ''); + + return value; +} - return value; - } +function sortList(nodelist) { + nodelist.forEach((item) => { salariesMap.set(item, converter(item)); }); - const sortedList = Array.from(salariesMap.entries()); + const sortedArr = Array.from(salariesMap.entries()); - sortedList.sort((a, b) => b[1] - a[1]); + sortedArr.sort((a, b) => b[1] - a[1]); - return sortedList; + return sortedArr; } -for (let i = 0; i < sortingList(list).length; i++) { - List.appendChild(sortingList(list)[i][0]); +const sortedList = sortList(list); + +for (let i = 0; i < sortedList.length; i++) { + List.appendChild(sortedList[i][0]); }