File indexing completed on 2024-04-21 05:50:56
0001 /* 0002 * Copyright 2017 Marco Martin <mart@kde.org> 0003 * 0004 * This program is free software; you can redistribute it and/or modify 0005 * it under the terms of the GNU Library General Public License as 0006 * published by the Free Software Foundation; either version 2, or 0007 * (at your option) any later version. 0008 * 0009 * This program is distributed in the hope that it will be useful, 0010 * but WITHOUT ANY WARRANTY; without even the implied warranty of 0011 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 0012 * GNU Library General Public License for more details 0013 * 0014 * You should have received a copy of the GNU Library General Public 0015 * License along with this program; if not, write to the 0016 * Free Software Foundation, Inc., 0017 * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. 0018 */ 0019 0020 function formatYDS(decimalGrade) 0021 { 0022 var adjusted = decimalGrade/6.5; 0023 0024 print("Fallback to calculation, Raw YDS: " + adjusted); 0025 0026 var numberForLetter = adjusted - Math.floor(adjusted); 0027 var letter; 0028 if (numberForLetter >= 0.75) { 0029 letter = "d"; 0030 } else if (numberForLetter >= 0.5) { 0031 letter = "c"; 0032 } else if (numberForLetter >= 0.25) { 0033 letter = "b"; 0034 } else { 0035 letter = "a"; 0036 } 0037 return "5." + Math.floor(adjusted) + letter; 0038 } 0039 0040 function formatFrench(decimalGrade) 0041 { 0042 //completely aleatory but whatever 0043 //10.6 is 52/50: the ratio of number of lines in the table and the grade 10a 0044 var adjusted = decimalGrade/10.4; 0045 0046 print("Fallback to calculation, Raw french: " + adjusted); 0047 0048 var numberForLetter = adjusted - Math.floor(adjusted); 0049 var letter = ""; 0050 var plus = ""; 0051 if (numberForLetter >= 0.6) { 0052 letter = "c"; 0053 if (numberForLetter >= 0.75) { 0054 plus = "+"; 0055 } 0056 } else if (numberForLetter >= 0.3) { 0057 letter = "b"; 0058 if (numberForLetter >= 0.45) { 0059 plus = "+"; 0060 } 0061 } else { 0062 letter = "a"; 0063 if (numberForLetter >= 0.15) { 0064 plus = "+"; 0065 } 0066 } 0067 0068 return Math.floor(adjusted) + letter + plus; 0069 } 0070 0071 function convertToRoman(num) { 0072 0073 var decimalValue = [ 1000, 900, 500, 400, 100, 90, 50, 40, 10, 9, 5, 4, 1 ]; 0074 var romanNumeral = [ 'M', 'CM', 'D', 'CD', 'C', 'XC', 'L', 'XL', 'X', 'IX', 'V', 'IV', 'I' ]; 0075 0076 var romanized = ''; 0077 0078 for (var index = 0; index < decimalValue.length; index++) { 0079 while (decimalValue[index] <= num) { 0080 romanized += romanNumeral[index]; 0081 num -= decimalValue[index]; 0082 } 0083 } 0084 0085 return romanized; 0086 } 0087 0088 function formatUIAA(decimalGrade) 0089 { 0090 var adjusted = decimalGrade/3 - 22 + 1/3; 0091 0092 var numberForsign = adjusted - Math.floor(adjusted); 0093 var sign = ""; 0094 0095 if (numberForsign < 0.2 || numberForsign > 0.8) { 0096 sign = ""; 0097 } else if (numberForsign > 0.5) { 0098 sign = "-"; 0099 } else { 0100 sign = "+"; 0101 } 0102 return convertToRoman(Math.round(adjusted)) + sign; 0103 } 0104 0105 function formatFont(decimalGrade) 0106 { 0107 //completely aleatory similar to french 0108 var adjusted = decimalGrade/10.4; 0109 adjusted -= 0.6; 0110 0111 print("Fallback to calculation, Raw french: " + adjusted); 0112 0113 var numberForLetter = adjusted - Math.floor(adjusted); 0114 var letter = ""; 0115 var plus = ""; 0116 if (numberForLetter >= 0.6) { 0117 letter = "C"; 0118 if (numberForLetter >= 0.75) { 0119 plus = "+"; 0120 } 0121 } else if (numberForLetter >= 0.3) { 0122 letter = "B"; 0123 if (numberForLetter >= 0.45) { 0124 plus = "+"; 0125 } 0126 } else { 0127 letter = "A"; 0128 if (numberForLetter >= 0.15) { 0129 plus = "+"; 0130 } 0131 } 0132 0133 return Math.floor(adjusted) + letter + plus; 0134 } 0135 0136 function formatHueco(decimalGrade) 0137 { 0138 return "V" + (decimalGrade - 84); 0139 } 0140 0141 function formatBGrade(decimalGrade) 0142 { 0143 return "B" + (decimalGrade - 84); 0144 }