Advertisement
bebo231312312321

Untitled

Feb 28th, 2024
621
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. // Global variables
  2. const buttonCalculate = document.getElementById("calculate");
  3. const buttonClean = document.getElementById("clean");
  4. const buttonFilter = document.getElementById("applyFilter");
  5. const filterNumberInput = document.getElementById("filterNumber");
  6. const modal = document.getElementById("modal");
  7. const result = document.getElementById("result");
  8. const inputName = document.getElementById("name");
  9. const errorDiv = document.getElementById("error");
  10.  
  11. const bgFilterContainer = document.getElementById("bgFilterContainer");
  12. const bgFilterNumberInput = document.getElementById("bgFilterNumber");
  13. const applyBgFilterButton = document.getElementById("applyBgFilter");
  14.  
  15. applyBgFilterButton.addEventListener("click", function() {
  16.     const bgNumber = parseInt(bgFilterNumberInput.value, 10);
  17.     displayBgFilteredResults(bgNumber);
  18. });
  19.  
  20.  
  21.  
  22. let allResults = [];
  23.  
  24. // Convert letters to numbers
  25. const lettersToNumbers = {
  26.     а: 1, й: 1,  т: 1,  ь: 1,  a: 1, á: 1, ã: 1, â: 1, j: 1, s: 1,
  27.     б: 2, к: 11, у: 2,  ю: 11,  b: 2,  k: 11, t: 2,
  28.     в: 3, л: 3,  ф: 3,  я: 3,  c: 3,  l: 3, u: 3, ú: 3,
  29.     г: 4, м: 4,  х: 22, d: 4,  m: 4, v: 22,
  30.     д: 5, н: 5,  ц: 5,  e: 5,  é: 5, ê: 5, n: 5, ñ: 5, w: 5,
  31.     е: 6, о: 6,  ч: 6,  f: 6,  o: 6, ó: 6, ô: 6, x: 6,
  32.     ж: 7, п: 7,  ш: 7,  g: 7,  p: 7, y: 7,
  33.     з: 8, р: 8,  щ: 8,  h: 8,  q: 8, z: 8,
  34.     и: 9, с: 9,  ъ: 9,  i: 9,  í: 9, r: 9
  35.  
  36. };
  37.  
  38. // Function for transliteration
  39. function transliterate(text) {
  40.     const transliterationMap = {
  41.          // lower case
  42.          'a' : 'а',
  43.          'b' : 'б',
  44.          'c' : 'к',
  45.          'd' : 'д',
  46.          'e' : 'е',
  47.          'f' : 'ф',
  48.          'g' : 'г',
  49.          'h' : 'х',
  50.          'i' : 'и',
  51.          'j' : 'дж',
  52.          'k' : 'к',
  53.          'l' : 'л',
  54.          'm' : 'м',
  55.          'n' : 'н',
  56.          'o' : 'о',
  57.          'p' : 'п',
  58.          'q' : 'к',
  59.          'r' : 'р',
  60.          's' : 'с',
  61.          't' : 'т',
  62.          'u': ['у', 'ю'],
  63.          'v' : 'в',
  64.          'w' : 'в',
  65.          'x' : 'екс',
  66.          'y' : 'и',
  67.          'z' : 'з',
  68.  
  69.          // upper case
  70.          'A' : 'А',
  71.          'B' : 'Б',
  72.          'C' : 'К',
  73.          'D' : 'Д',
  74.          'E' : 'Е',
  75.          'F' : 'Ф',
  76.          'G' : 'Г',
  77.          'H' : 'Х',
  78.          'I' : 'И',
  79.          'J' : 'ДЖ',
  80.          'K' : 'К',
  81.          'L' : 'Л',
  82.          'M' : 'М',
  83.          'N' : 'Н',
  84.          'O' : 'О',
  85.          'P' : 'П',
  86.          'Q' : 'К',
  87.          'R' : 'Р',
  88.          'S' : 'С',
  89.          'T' : 'Т',
  90.          'U': ['У', 'Ю'],
  91.          'V' : 'В',
  92.          'W' : 'В',
  93.          'X' : 'ЕКС',
  94.          'Y' : 'И',
  95.          'Z' : 'З',
  96.     };
  97.  
  98.     text = text.replace(/ия\b/g, "ia")
  99.     .replace(/Ия\b/g, "Ia")
  100.     .replace(/иЯ\b/g, "iA")
  101.     .replace(/ИЯ\b/g, "IA");
  102.     const transliteratedText = text.split('').map(letter => {
  103.         if (transliterationMap[letter]) {
  104.             if (Array.isArray(transliterationMap[letter])) {
  105.                 return transliterationMap[letter].join('/');
  106.             } else {
  107.                 return transliterationMap[letter];
  108.             }
  109.         } else {
  110.             return letter;
  111.         }
  112.     }).join('');
  113.  
  114.  
  115.     return transliteratedText.replace(/\//g, ' / ');
  116. }
  117.  
  118. // Event listeners
  119. buttonCalculate.onclick = (e) => {
  120.     e.preventDefault();
  121.     separateWords();
  122.     modal.style.display = "block";
  123.     modal.style.opacity = "1";
  124. };
  125.  
  126. buttonClean.onclick = (e) => {
  127.     e.preventDefault();
  128.     cleanAll();
  129. };
  130.  
  131. buttonFilter.onclick = (e) => {
  132.     e.preventDefault();
  133.     displayResults();
  134.    
  135. };
  136.  
  137. const cleanAll = () => {
  138.     result.innerHTML = "";
  139.     inputName.value = "";
  140.     errorDiv.innerText = "";
  141.     modal.style.display = "none";
  142.     filterNumberInput.value = "";
  143.     allResults = [];
  144. };
  145.  
  146. const separateWords = () => {
  147.     const words = inputName.value.toLowerCase().split(' ');
  148.     if (words.length === 0 || inputName.value === "") {
  149.         errorDiv.innerText = "Please, write your name.";
  150.         return;
  151.     }
  152.     allResults = [];
  153.     words.forEach(word => {
  154.         if (word !== "") {
  155.             calculateWordNumerology(word);
  156.         }
  157.     });
  158.     displayResults();
  159. };
  160.  
  161. const calculateWordNumerology = (word) => {
  162.     let sum = word.split('').map(letter => lettersToNumbers[letter] || 0).reduce((acc, curr) => acc + curr, 0);
  163.     let destinyNumber = reduceNumber(sum);
  164.     allResults.push({ word, destinyNumber });
  165. };
  166. const calculateNumerology = (word) => {
  167.     let sum = word.split('').map(letter => lettersToNumbers[letter.toLowerCase()] || 0).reduce((acc, curr) => acc + curr, 0);
  168.     return reduceNumber(sum);
  169. };
  170. const reduceNumber = (number) => {
  171.     while (number > 9) {
  172.         number = number.toString().split('').reduce((acc, digit) => acc + parseInt(digit, 10), 0);
  173.     }
  174.     return number;
  175. };
  176.  
  177. const displayResults = () => {
  178.     result.innerHTML = "";
  179.     bgFilterContainer.style.display = "block";
  180.     allResults.forEach(({ word, destinyNumber }) => {
  181.    
  182.         if (/^[a-zA-Z]+$/.test(word)) {
  183.             const transliteratedWord = transliterate(word);
  184.             const transliteratedNumber = calculateNumerology(transliteratedWord);
  185.  
  186.             const row = document.createElement("div");
  187.             row.classList.add('resultRow');
  188.  
  189.             const originalElement = document.createElement("div");
  190.             originalElement.classList.add('numerologyResult');
  191.             originalElement.innerText = `${word} - ${destinyNumber}`;
  192.             row.appendChild(originalElement);
  193.  
  194.             const transliteratedElement = document.createElement("div");
  195.             transliteratedElement.classList.add('numerologyResult');
  196.             transliteratedElement.innerText = `${transliteratedWord} - ${transliteratedNumber}`;
  197.             row.appendChild(transliteratedElement);
  198.  
  199.             result.appendChild(row);
  200.         }
  201.     });
  202. };
  203.  
  204. //
  205. function displayBgFilteredResults(bgNumber) {
  206.     const filteredResults = allResults.filter(({ word }) => {
  207.         const transliteratedWord = transliterate(word);
  208.         const transliteratedNumber = calculateNumerology(transliteratedWord);
  209.         return transliteratedNumber === bgNumber;
  210.     });
  211.     result.innerHTML = "";
  212.     bgFilterContainer.style.display = "none";
  213.  
  214.  
  215.     filteredResults.forEach(({ word, destinyNumber }) => {
  216.         const transliteratedWord = transliterate(word);
  217.         const transliteratedNumber = calculateNumerology(transliteratedWord);
  218.         const row = document.createElement("div");
  219.         row.classList.add("resultRow");
  220.         const originalElement = document.createElement("div");
  221.         originalElement.classList.add("numerologyResult");
  222.         originalElement.innerText = `${word} - ${destinyNumber}`;
  223.         const transliteratedElement = document.createElement("div");
  224.         transliteratedElement.classList.add("numerologyResult");
  225.         transliteratedElement.innerText = `${transliteratedWord} - ${transliteratedNumber}`;
  226.         row.appendChild(originalElement);
  227.         row.appendChild(transliteratedElement);
  228.         result.appendChild(row);
  229.     });
  230. }
  231.  
  232. const displayEnglishResults = () => {
  233.     const filterVal = filterNumberInput.value ? parseInt(filterNumberInput.value, 10) : null;
  234.     result.innerHTML = "";
  235.     bgFilterContainer.style.display = "block";
  236.     allResults.forEach(({ word, destinyNumber }) => {
  237.      
  238.         if (/^[a-zA-Z]+$/.test(word)) {
  239.             const transliteratedWord = transliterate(word);
  240.             const transliteratedNumber = calculateNumerology(transliteratedWord);
  241.  
  242.             if (!filterVal || destinyNumber === filterVal) {
  243.                 const row = document.createElement("div");
  244.                 row.classList.add('resultRow');
  245.  
  246.                 const originalElement = document.createElement("div");
  247.                 originalElement.classList.add('numerologyResult');
  248.                 originalElement.innerText = `${word} - ${destinyNumber}`;
  249.                 row.appendChild(originalElement);
  250.  
  251.              
  252.                 if (transliteratedNumber === filterVal) {
  253.                     const transliteratedElement = document.createElement("div");
  254.                     transliteratedElement.classList.add('numerologyResult');
  255.                     transliteratedElement.innerText = `${transliteratedWord} - ${transliteratedNumber}`;
  256.                     // row.appendChild(transliteratedElement);
  257.                 }
  258.  
  259.                 result.appendChild(row);
  260.             }
  261.         }
  262.     });
  263. };
  264.  
  265.  
  266. // Event listener за филтър за английски думи
  267. buttonFilter.onclick = (e) => {
  268.     e.preventDefault();
  269.     displayEnglishResults();
  270. };
  271.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement