Advertisement
bebo231312312321

Untitled

Feb 29th, 2024
825
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. const copyBtn = document.getElementById("copyButton");
  15.  
  16.  
  17. const insertLetterInput = document.getElementById("insertLetter");
  18. const generateWordsButton = document.getElementById("generateWords");
  19.  
  20.  
  21.  
  22. applyBgFilterButton.addEventListener("click", function() {
  23.     const bgNumber = parseInt(bgFilterNumberInput.value, 10);
  24.     displayBgFilteredResults(bgNumber);
  25. });
  26.  
  27.  
  28.  
  29. let allResults = [];
  30.  
  31. // Convert letters to numbers
  32. const lettersToNumbers = {
  33.     а: 1, й: 1,  т: 1,  ь: 1,  a: 1, á: 1, ã: 1, â: 1, j: 1, s: 1,
  34.     б: 2, к: 11, у: 2,  ю: 11,  b: 2,  k: 11, t: 2,
  35.     в: 3, л: 3,  ф: 3,  я: 3,  c: 3,  l: 3, u: 3, ú: 3,
  36.     г: 4, м: 4,  х: 22, d: 4,  m: 4, v: 22,
  37.     д: 5, н: 5,  ц: 5,  e: 5,  é: 5, ê: 5, n: 5, ñ: 5, w: 5,
  38.     е: 6, о: 6,  ч: 6,  f: 6,  o: 6, ó: 6, ô: 6, x: 6,
  39.     ж: 7, п: 7,  ш: 7,  g: 7,  p: 7, y: 7,
  40.     з: 8, р: 8,  щ: 8,  h: 8,  q: 8, z: 8,
  41.     и: 9, с: 9,  ъ: 9,  i: 9,  í: 9, r: 9
  42.  
  43. };
  44.  
  45. // Function for transliteration
  46. function transliterate(text) {
  47.     const transliterationMap = {
  48.          // lower case
  49.          'a' : 'а',
  50.          'b' : 'б',
  51.          'c' : 'к',
  52.          'd' : 'д',
  53.          'e' : 'е',
  54.          'f' : 'ф',
  55.          'g' : 'г',
  56.          'h' : 'х',
  57.          'i' : 'и',
  58.          'j' : 'дж',
  59.          'k' : 'к',
  60.          'l' : 'л',
  61.          'm' : 'м',
  62.          'n' : 'н',
  63.          'o' : 'о',
  64.          'p' : 'п',
  65.          'q' : 'к',
  66.          'r' : 'р',
  67.          's' : 'с',
  68.          't' : 'т',
  69.          'u': ['у', 'ю'],
  70.          'v' : 'в',
  71.          'w' : 'в',
  72.          'x' : 'екс',
  73.          'y' : 'и',
  74.          'z' : 'з',
  75.  
  76.          // upper case
  77.          'A' : 'А',
  78.          'B' : 'Б',
  79.          'C' : 'К',
  80.          'D' : 'Д',
  81.          'E' : 'Е',
  82.          'F' : 'Ф',
  83.          'G' : 'Г',
  84.          'H' : 'Х',
  85.          'I' : 'И',
  86.          'J' : 'ДЖ',
  87.          'K' : 'К',
  88.          'L' : 'Л',
  89.          'M' : 'М',
  90.          'N' : 'Н',
  91.          'O' : 'О',
  92.          'P' : 'П',
  93.          'Q' : 'К',
  94.          'R' : 'Р',
  95.          'S' : 'С',
  96.          'T' : 'Т',
  97.          'U': ['У', 'Ю'],
  98.          'V' : 'В',
  99.          'W' : 'В',
  100.          'X' : 'ЕКС',
  101.          'Y' : 'И',
  102.          'Z' : 'З',
  103.     };
  104.  
  105.     text = text.replace(/ия\b/g, "ia")
  106.     .replace(/Ия\b/g, "Ia")
  107.     .replace(/иЯ\b/g, "iA")
  108.     .replace(/ИЯ\b/g, "IA");
  109.     const transliteratedText = text.split('').map(letter => {
  110.         if (transliterationMap[letter]) {
  111.             if (Array.isArray(transliterationMap[letter])) {
  112.                 return transliterationMap[letter].join('/');
  113.             } else {
  114.                 return transliterationMap[letter];
  115.             }
  116.         } else {
  117.             return letter;
  118.         }
  119.     }).join('');
  120.  
  121.  
  122.     return transliteratedText.replace(/\//g, ' / ');
  123. }
  124.  
  125. // Event listeners
  126. buttonCalculate.onclick = (e) => {
  127.     e.preventDefault();
  128.     separateWords();
  129.     modal.style.display = "block";
  130.     modal.style.opacity = "1";
  131. };
  132.  
  133. buttonClean.onclick = (e) => {
  134.     e.preventDefault();
  135.     cleanAll();
  136. };
  137.  
  138. buttonFilter.onclick = (e) => {
  139.     e.preventDefault();
  140.     displayResults();
  141.    
  142. };
  143.  
  144. const cleanAll = () => {
  145.     result.innerHTML = "";
  146.     inputName.value = "";
  147.     errorDiv.innerText = "";
  148.     modal.style.display = "none";
  149.     filterNumberInput.value = "";
  150.     allResults = [];
  151. };
  152.  
  153. const separateWords = () => {
  154.     const words = inputName.value.toLowerCase().split(' ');
  155.     if (words.length === 0 || inputName.value === "") {
  156.         errorDiv.innerText = "Please, write your name.";
  157.         return;
  158.     }
  159.     allResults = [];
  160.     words.forEach(word => {
  161.         if (word !== "") {
  162.             calculateWordNumerology(word);
  163.         }
  164.     });
  165.     displayResults();
  166. };
  167.  
  168. const calculateWordNumerology = (word) => {
  169.     let sum = word.split('').map(letter => lettersToNumbers[letter] || 0).reduce((acc, curr) => acc + curr, 0);
  170.     let destinyNumber = reduceNumber(sum);
  171.     allResults.push({ word, destinyNumber });
  172. };
  173. const calculateNumerology = (word) => {
  174.     let sum = word.split('').map(letter => lettersToNumbers[letter.toLowerCase()] || 0).reduce((acc, curr) => acc + curr, 0);
  175.     return reduceNumber(sum);
  176. };
  177. const reduceNumber = (number) => {
  178.     while (number > 9) {
  179.         number = number.toString().split('').reduce((acc, digit) => acc + parseInt(digit, 10), 0);
  180.     }
  181.     return number;
  182. };
  183.  
  184. const displayResults = () => {
  185.     result.innerHTML = "";
  186.     bgFilterContainer.style.display = "block";
  187.     allResults.forEach(({ word, destinyNumber }) => {
  188.    
  189.         if (/^[a-zA-Z]+$/.test(word)) {
  190.             const transliteratedWord = transliterate(word);
  191.             const transliteratedNumber = calculateNumerology(transliteratedWord);
  192.  
  193.             const row = document.createElement("div");
  194.             row.classList.add('resultRow');
  195.  
  196.             const originalElement = document.createElement("div");
  197.             originalElement.classList.add('numerologyResult');
  198.             originalElement.innerText = `${word} - ${destinyNumber}`;
  199.             row.appendChild(originalElement);
  200.  
  201.             const transliteratedElement = document.createElement("div");
  202.             transliteratedElement.classList.add('numerologyResult');
  203.             transliteratedElement.innerText = `${transliteratedWord} - ${transliteratedNumber}`;
  204.             row.appendChild(transliteratedElement);
  205.  
  206.             result.appendChild(row);
  207.         }
  208.     });
  209. };
  210.  
  211. //
  212. function displayBgFilteredResults(bgNumber) {
  213.     const filteredResults = allResults.filter(({ word }) => {
  214.         const transliteratedWord = transliterate(word);
  215.         const transliteratedNumber = calculateNumerology(transliteratedWord);
  216.         return transliteratedNumber === bgNumber;
  217.     });
  218.     result.innerHTML = "";
  219.     bgFilterContainer.style.display = "none";
  220.  
  221.  
  222.     filteredResults.forEach(({ word, destinyNumber }) => {
  223.         const transliteratedWord = transliterate(word);
  224.         const transliteratedNumber = calculateNumerology(transliteratedWord);
  225.         const row = document.createElement("div");
  226.         row.classList.add("resultRow");
  227.         const originalElement = document.createElement("div");
  228.         originalElement.classList.add("numerologyResult");
  229.         originalElement.innerText = `${word} - ${destinyNumber}`;
  230.         const transliteratedElement = document.createElement("div");
  231.         transliteratedElement.classList.add("numerologyResult");
  232.         transliteratedElement.innerText = `${transliteratedWord} - ${transliteratedNumber}`;
  233.         row.appendChild(originalElement);
  234.         row.appendChild(transliteratedElement);
  235.         result.appendChild(row);
  236.     });
  237. }
  238.  
  239. let filteredWords = []; // Глобална променлива за съхранение на филтрирани думи
  240.  
  241. const displayEnglishResults = () => {
  242.     const filterVal = filterNumberInput.value ? parseInt(filterNumberInput.value, 10) : null;
  243.     result.innerHTML = "";
  244.     bgFilterContainer.style.display = "block";
  245.     filteredWords = [];
  246.     allResults.forEach(({ word, destinyNumber }) => {
  247.         if (/^[a-zA-Z]+$/.test(word)) {
  248.             const transliteratedWord = transliterate(word);
  249.             const transliteratedNumber = calculateNumerology(transliteratedWord);
  250.  
  251.             if (!filterVal || destinyNumber === filterVal) {
  252.                 filteredWords.push(word);
  253.  
  254.                 const row = document.createElement("div");
  255.                 row.classList.add('resultRow');
  256.  
  257.                 const originalElement = document.createElement("div");
  258.                 originalElement.classList.add('numerologyResult');
  259.                 originalElement.innerText = `${word} - ${destinyNumber}`;
  260.                 row.appendChild(originalElement);
  261.  
  262.                 if (transliteratedNumber === filterVal) {
  263.                     const transliteratedElement = document.createElement("div");
  264.                     transliteratedElement.classList.add('numerologyResult');
  265.                     transliteratedElement.innerText = `${transliteratedWord} - ${transliteratedNumber}`;
  266.                     // row.appendChild(transliteratedElement); // Ако искате да покажете и транслитерираните резултати
  267.                 }
  268.  
  269.                 result.appendChild(row);
  270.             }
  271.         }
  272.     });
  273. };
  274.  
  275.  
  276. // Event listener за филтър за английски думи
  277. buttonFilter.onclick = (e) => {
  278.     e.preventDefault();
  279.     displayEnglishResults();
  280. };
  281. generateWordsButton.addEventListener("click", function(e) {
  282.     e.preventDefault();
  283.     const letter = insertLetterInput.value.toUpperCase();
  284.     if(letter.length === 1 && /^[A-Z]$/.test(letter)) { // Проверка дали е въведена една буква от A до Z
  285.         generateNewWords(letter);
  286.     } else {
  287.         alert("Please enter a single letter from A to Z.");
  288.     }
  289. });
  290. function generateNewWords(insertedLetter) {
  291.     copyBtn.style.display = "block";
  292.     const newWordsSets = filteredWords.map(baseWord => {
  293.         const newWords = [];
  294.         for(let i = 0; i <= baseWord.length; i++) {
  295.             const newWord = [baseWord.slice(0, i), insertedLetter, baseWord.slice(i)].join('');
  296.             newWords.push(newWord);
  297.         }
  298.         return newWords;
  299.     });
  300.  
  301.     console.log(newWordsSets);
  302.     displayNewWords(newWordsSets);
  303. }
  304.  
  305. function displayNewWords(wordsGroups) {
  306.     result.innerHTML = ""; // Изчистване на предишни резултати
  307.  
  308.     wordsGroups.forEach((group, groupIndex) => {
  309.         const groupContainer = document.createElement("div");
  310.         group.forEach(word => {
  311.             const wordElement = document.createElement("h5");
  312.             wordElement.textContent = word;
  313.             groupContainer.appendChild(wordElement);
  314.         });
  315.  
  316.         result.appendChild(groupContainer);
  317.  
  318.    
  319.         if (groupIndex < wordsGroups.length - 1) {
  320.             const separator = document.createElement("div");
  321.             separator.style.padding = "10px 0";
  322.             separator.textContent = "------------";
  323.         }
  324.     });
  325. }
  326. function copyGeneratedWordsToClipboard() {
  327.  
  328.     const tempTextArea = document.createElement("textarea");
  329.     document.body.appendChild(tempTextArea);
  330.  
  331.  
  332.     const words = Array.from(document.querySelectorAll("#result h5")).map(el => el.textContent).join("\n");
  333.     tempTextArea.value = words;
  334.  
  335.  
  336.     tempTextArea.select();
  337.     document.execCommand("copy");
  338.  
  339.  
  340.     document.body.removeChild(tempTextArea);
  341.  
  342.    
  343.     alert("Generated words copied to clipboard!");
  344. }
  345.  
  346. const copyButton = document.getElementById("copyButton");
  347. copyButton.addEventListener("click", copyGeneratedWordsToClipboard);
  348.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement