task-01.js 5.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117
  1. // switch: sizes
  2. // Сделайте задание Comparison: sizes из предыдущего ДЗ используя switch
  3. const f1 = (rootId) => {
  4. let fromCountry;
  5. let toCountry;
  6. const sizesLength = 8;
  7. // Ранее у меня список начальных значений размеров находился в объекте
  8. // coatSizes = { Russian: 40, German: 34, France: 36, Italy: 38, "Great Britain": 8, USA: 6 };
  9. // теперь он находится в функции chooseCountrySize(country) со switch,
  10. // которая используется 2 раза:
  11. // - для выбора начального размера страны, с которой конвертируем
  12. // - для выбора начального размера страны, в которую конвертируем
  13. function chooseCountrySize(country) {
  14. let initialSize;
  15. switch (country) {
  16. case 'Russian':
  17. initialSize = 40;
  18. break;
  19. case 'German':
  20. initialSize = 34;
  21. break;
  22. case 'France':
  23. initialSize = 36;
  24. break;
  25. case 'Italy':
  26. initialSize = 38;
  27. break;
  28. case 'Great Britain':
  29. initialSize = 8;
  30. break;
  31. case 'USA':
  32. initialSize = 6;
  33. break;
  34. }
  35. return initialSize;
  36. }
  37. //Подставляет размерную сетку той страны, с которой конвертируем
  38. const substituteFnc = () => {
  39. fromCountry = fromCountryId.value;
  40. const sizesArray = [];
  41. sizesArray[0] = chooseCountrySize(fromCountry);
  42. for (let i = 1; i < sizesLength; i++) { sizesArray[i] = sizesArray[0] + i * 2 };
  43. const sizesStr = sizesArray.map(item => "<option value=" + item + ">" + item + "</option>");
  44. fromSizeId.innerHTML = sizesStr;
  45. convertedSizeId.innerHTML = "---";
  46. };
  47. //Вычисляет размер той страны, в которую конвертируем
  48. function countSizeFnc() {
  49. toCountry = convertedCountryId.value;
  50. const fromSize = fromSizeId.value;
  51. convertedSizeId.innerHTML = chooseCountrySize(toCountry) + (fromSize - chooseCountrySize(fromCountry));
  52. };
  53. //Блок создания формы
  54. const task01block = document.createElement('div');
  55. task01block.style = "display:inline-block";
  56. const task01title = document.createElement('h2');
  57. task01title.innerText = 'Task-01 Comparison: sizes';
  58. //Блок создания формы
  59. const countries = document.createElement('div');
  60. const sizes = document.createElement('div');
  61. const from = document.createElement('span');
  62. const fromCountryId = document.createElement('select');
  63. const to = document.createElement('span');
  64. const convertedCountryId = document.createElement('select');
  65. const fromSizeId = document.createElement('select');
  66. const convertedSizeId = document.createElement('output');
  67. const sizeBtn = document.createElement('button');
  68. sizes.style = "margin-top:20px";
  69. from.innerText = 'From';
  70. fromCountryId.innerHTML = "<option value='hide'> -- Enter initial country --</option><option value='Russian'>Russian</option><option value='German'>German</option><option value='France'>France</option><option value='Italy'>Italy</option><option value='Great Britain'>Great Britain</option><option value='USA'>USA</option>";
  71. fromCountryId.style = "margin-left:10px; margin-right:10px";
  72. to.innerText = 'to';
  73. convertedCountryId.style = "margin-left:10px";
  74. convertedCountryId.innerHTML = "<option value='hide'> -- Enter converted country --</option><option value='Russian'>Russian</option><option value='German'>German</option><option value='France'>France</option><option value='Italy'>Italy</option><option value='Great Britain'>Great Britain</option><option value='USA'>USA</option>";
  75. fromSizeId.style = "display:inline-block; width:150px; margin-left:40px"
  76. fromSizeId.innerHTML = "<option value='hide'> -- Enter size --</option>";
  77. convertedSizeId.innerHTML = "---";
  78. convertedSizeId.style = "display:inline-block; text-align:center; width:150px; border: 1px solid green; border-radius:3px; margin-left:30px;"
  79. convertedSizeId.name = "result";
  80. convertedSizeId.for = "sizeBtn";
  81. sizeBtn.innerText = "Convert";
  82. sizeBtn.style = "display:block; margin-left:auto; margin-right:auto; margin-top:20px";
  83. sizeBtn.type = "button";
  84. // guessYearBtn.innerText = "Run Vanga";
  85. // guessYearBtn.style = 'margin-bottom:20px';
  86. rootId.appendChild(task01block);
  87. task01block.appendChild(task01title);
  88. task01block.appendChild(countries);
  89. task01block.appendChild(sizes);
  90. countries.appendChild(from);
  91. countries.appendChild(fromCountryId);
  92. countries.appendChild(to);
  93. countries.appendChild(convertedCountryId);
  94. sizes.appendChild(fromSizeId);
  95. sizes.appendChild(convertedSizeId);
  96. task01block.appendChild(sizeBtn);
  97. sizeBtn.onclick = countSizeFnc;
  98. fromCountryId.onchange = substituteFnc;
  99. //Сброс результата при изменении одного из полей
  100. fromSizeId.onchange = () => { convertedSizeId.innerHTML = "---"; };
  101. convertedCountryId.onchange = () => { convertedSizeId.innerHTML = "---"; };
  102. }
  103. f1(root);
  104. export default f1;