{"id":21320452,"url":"https://github.com/eclass/grade-scales","last_synced_at":"2025-07-12T04:32:53.571Z","repository":{"id":36276121,"uuid":"222790160","full_name":"eclass/grade-scales","owner":"eclass","description":"Herramienta para calcular puntaje y notas según una escala. Se considera el % de exigencia. Además se puede transformar una nota a otra escala.","archived":false,"fork":false,"pushed_at":"2024-11-18T19:58:30.000Z","size":506,"stargazers_count":1,"open_issues_count":12,"forks_count":0,"subscribers_count":13,"default_branch":"master","last_synced_at":"2024-11-18T20:55:45.778Z","etag":null,"topics":["calcula-notas","grade-scales","typescript"],"latest_commit_sha":null,"homepage":"https://eclass.io","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/eclass.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2019-11-19T21:09:08.000Z","updated_at":"2024-08-19T21:24:46.000Z","dependencies_parsed_at":"2023-09-26T01:23:18.370Z","dependency_job_id":"639a030a-c056-465e-9c36-e54a208984b9","html_url":"https://github.com/eclass/grade-scales","commit_stats":{"total_commits":200,"total_committers":6,"mean_commits":"33.333333333333336","dds":"0.41500000000000004","last_synced_commit":"086f43e6e5546302960ec4929f7a035c86ab06e5"},"previous_names":[],"tags_count":23,"template":false,"template_full_name":"eclass/ts-template-npm-libs","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/eclass%2Fgrade-scales","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/eclass%2Fgrade-scales/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/eclass%2Fgrade-scales/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/eclass%2Fgrade-scales/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/eclass","download_url":"https://codeload.github.com/eclass/grade-scales/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":225795392,"owners_count":17525316,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["calcula-notas","grade-scales","typescript"],"created_at":"2024-11-21T19:47:54.932Z","updated_at":"2024-11-21T19:47:55.438Z","avatar_url":"https://github.com/eclass.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# @eclass/grade-scales\n\n[![npm](https://img.shields.io/npm/v/@eclass/grade-scales.svg)](https://www.npmjs.com/package/@eclass/grade-scales)\n[![Build Status](https://travis-ci.org/eclass/grade-scales.svg?branch=master)](https://travis-ci.org/eclass/grade-scales)\n[![downloads](https://img.shields.io/npm/dt/@eclass/grade-scales.svg)](https://www.npmjs.com/package/@eclass/grade-scales)\n[![dependencies](https://img.shields.io/david/eclass/grade-scales.svg)](https://david-dm.org/eclass/grade-scales)\n[![devDependency Status](https://img.shields.io/david/dev/eclass/grade-scales.svg)](https://david-dm.org/eclass/grade-scales#info=devDependencies)\n\n## Instalación\n```\n  npm i @eclass/grade-scales\n```\n\nEste módulo permite calcular notas en base a una escala de notas.\nLa escala debe tener algunos valores que se listan a continuación:\n\n## Formato Escala de notas\n```js\nconst scale = {\n  name: \"Chile 50% (1-7, aprobación 50%, nota 4)\",\n  keyname: \"Chile50\",\n  min: 1,\n  max: 7,\n  passingGrade: 4,\n  passingPercentage: 50,\n  roundType: \"round\",\n  prepend: \"\",\n  append: \"\",\n  decimals: 1,\n  decimalSeparator: \",\"\n}\n```\n\n# eClass - Grade Scales\nLas funciones principales nos permiten calcular las notas y formatearlas.\n\n## getGrade() : number\nEn base a una escala se calcula la nota según los puntos totales y los obtenidos.\n```js\n  const grade = getGrade(scale, 10, 6)\n  // output: console.log({ grade })\n  { grade: 4.6 }\n```\n\n## getGradeFormatted(): Object\nDevuelve la nota formateada con el estado si está \"Aprobada\" o \"Reprobada\"\n```js \n  const grade = getGradeQualification(scale, 10, 6)\n  // output: console.log({ grade })\n  {\n    value: 4.6,\n    valueFormatted: '4,6',\n    status: {\n      id: 1,\n      name: 'Aprobado',\n      detail: 'La nota está aprobada',\n      style: 'approved',\n      enabled: true\n    }\n  }\n```\n## getQualification(): Object\nSi tenemos la nota ya calculada podemos darle formato con la función\n```js \n  const qualification = getQualification(scale, 5.6)\n  // output: console.log({ qualification })\n  {\n    value: 5.6,\n    valueFormatted: '5,6',\n    status: {\n      id: 1,\n      name: 'Aprobado',\n      detail: 'La nota está aprobada',\n      style: 'approved',\n      enabled: true\n    }\n  }\n```\n\n## getAverage() : number\nSegún la escala calcula el promedio en base a un set de notas.\n```js\n  const average = getAverage(scale, { grades: [3, 4, 6] })\n  // output: console.log({ average })\n  {\n    average: {\n      value: 4.7,\n      valueFormatted: '4,7',\n      status: {\n        id: 1,\n        name: 'Aprobado',\n        detail: 'La nota está aprobada',\n        style: 'approved',\n        enabled: true\n      }\n    }\n  }\n```\nAdemás puede recibir un arreglo de valores con las ponderaciones para calcular el promedio de notas.\n```js\n  const average = getAverage(scale, { \n    grades: [3, 4, 7],\n    weights: [20, 30, 50]\n  })\n  // output\n  {: console.log({ // })\n    average: {\n      value: 5.3,\n      valueFormatted: '5,3',\n      status: {\n        id: 1,\n        name: 'Aprobado',\n        detail: 'La nota está aprobada',\n        style: 'approved',\n        enabled: true\n      }\n    }\n  }\n```\n\n## convertToScale() : number\nTransforma una nota de una escala a otra.\n```js\n  const newScale = {\n    name: 'Porcentaje (1-100%, aprobación 60%, nota 70)',\n    keyname: 'Porcentaje_1-100_60',\n    min: 1,\n    max: 100,\n    passingGrade: 70,\n    passingPercentage: 60,\n    roundType: 'round',\n    prepend: '',\n    append: '%',\n    decimals: 0,\n    decimalSeparator: ','\n  }\n\n  const converted = convertToScale({ scale, grade: 4.8 }, newScale)\n  // output: console.log({ converted })\n  { converted: 64 }\n```\n\n## getGrades() : Array\u003cGradeList\u003e\nCalcula todas las notas de una escala según el puntaje máximo\n```js\n  const grades = getGrades(scale, 1, 0)\n  // output: console.log({ grades })\n  [\n    {\n      points: { obtained: 0, total: 1 },\n      grade: 1,\n      qualification: { value: 1, valueFormatted: '1', status: [Object] },\n      isApproved: false,\n      formatted: '1'\n    },\n    {\n      points: { obtained: 1, total: 1 },\n      grade: 7,\n      qualification: { value: 7, valueFormatted: '7', status: [Object] },\n      isApproved: true,\n      formatted: '7'\n    }\n  ]\n```\n\n# Otras funciones\n\n## gradeFormat(): string\nFormatea una nota según el estilo de la escala.\n```js\n  const format = gradeFormat(scale, 2.5)\n  // output: console.log({ format })\n  { format: '2,5' }\n```\n\n## gradeIsApproved() : boolean\nCalcula la nota si está aprobada o reprobada\n```js\n  const isApproved = gradeIsApproved(scale, 5)\n  // output: console.log({ isApproved })\n  { isApproved: true }\n```\n\n## gradeRound() : number\nCalcula la nota si está aprobada o reprobada\n```js\n  const rounded = gradeRound(scale, 5.3551)\n  // output: console.log({ rounded })\n  { rounded: 5.4 }\n```\n\n## gradeStatus(): QualificationType\n\nCalcula la nota si está aprobada o reprobada con formato\n```js\n  const status = gradeStatus(scale, 4.3)\n  // output: console.log({ status })\n  {\n    status: {\n      id: 1,\n      name: 'Aprobado',\n      detail: 'La nota está aprobada',\n      style: 'approved',\n      enabled: true\n    }\n  }\n```\n\n## License\n\n[MIT](https://tldrlegal.com/license/mit-license)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Feclass%2Fgrade-scales","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Feclass%2Fgrade-scales","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Feclass%2Fgrade-scales/lists"}