Size: a a a

JavaScript.Ninja

2021 April 18

M

Michael in JavaScript.Ninja
Почему? У нас приблизительно так же
источник

M

Michael in JavaScript.Ninja
Правда, сначал код ревью, потом мердж, потом тестеры тестят
источник

DZ

D Z in JavaScript.Ninja
Мне не нравится момент с автоматической раскаткой при мерже
источник

M

Michael in JavaScript.Ninja
Что ты имеешь ввиду?
источник

AV

A V in JavaScript.Ninja
добрый день!

есть такой код

const breakpointPreMd = window.matchMedia('(max-width: 767px)') /* pre-md breakpoint */

;(function (breakpoint) {
 try {
   const $indexEducationProgramms = document.querySelector('.index-education-programms')
   const $indexEducationProgrammsGrid = $indexEducationProgramms.querySelector('.index-education-programms__grid')
   const $indexEducationProgrammsMore = $indexEducationProgramms.querySelector('.index-education-programms__more')
   const $indexEducationProgrammsCards = $indexEducationProgrammsGrid.children
   const countOfCards = $indexEducationProgrammsCards.length
   const heightOfCard = $indexEducationProgrammsCards[0].getBoundingClientRect().height
   const heightOfGap = parseInt(window.getComputedStyle($indexEducationProgrammsGrid).getPropertyValue('row-gap'))

   function clickMoreHandler(event) {
     event.target.classList.toggle('active')
     setTimeout(() => {
       if (event.target.classList.contains('active')) {
         $indexEducationProgrammsGrid.style.height = `${
           heightOfCard * countOfCards + heightOfGap * (countOfCards - 1)
         }px`
         event.target.textContent = 'Свернуть'
       } else {
         $indexEducationProgrammsGrid.style.height = `${heightOfCard * 4 + heightOfGap * 3}px`
         event.target.textContent = 'Показать еще'
       }
     }, 0)
   }

   function breakpointChecker() {
     if (breakpoint.matches) {
       $indexEducationProgrammsGrid.style.height = `${heightOfCard * 4 + heightOfGap * 3}px`
       $indexEducationProgrammsGrid.style.transition = 'height 0.3s'
       $indexEducationProgrammsGrid.style.overflowY = 'hidden'

       $indexEducationProgrammsMore.addEventListener('click', clickMoreHandler)
     } else {
       $indexEducationProgrammsMore.textContent = 'Показать еще'
       $indexEducationProgrammsGrid.style.removeProperty('height')
       $indexEducationProgrammsGrid.style.removeProperty('overflow-y')
       setTimeout(function () {
         $indexEducationProgrammsGrid.style.removeProperty('transition')
       }, 300)
       $indexEducationProgrammsMore.removeEventListener('click', clickMoreHandler)
     }
   }

   window.addEventListener('resize', function () {
     breakpointChecker()
   })
   breakpointChecker()
 } catch (error) {
   console.log(error)
 }
})(breakpointPreMd)


heightOfCard и heightOfGap получаются совершенно произвольных значений, высота скачет от 0 до 300+ (в реальности 277), отступ иногда встает на значение normal. Элементы, относительно которых производятся вычисления, вставлены в HTML, их размеры прямо указаны в стилях (размеры детей, вложенных в них, увеличение или уменьшение размеров не предусматривается).

в чем может быть дело?
источник

Е

Евгений in JavaScript.Ninja
В мастер улетает уже апрувнутое, менеджером в плане функционала, тимлидом в плане кода)
источник

Е

Евгений in JavaScript.Ninja
Кодревью выглядит как открываются изменения в MR и с тимлидом смотрим код) отвечаю на вопросы, если где-то перемудрил или не учел что-то (типа мало ли, не придет id с бэка) - доделываю) у меня тут таск был - чтобы реализовать его - пришлось сделать 5 миграций,  написать пару фитч (типа выбор расцветки нужен, а сущности самой расцветки даже в помине не было) и в итоге изменено или написано 45 файлов (я и бэк и фронт и искать изменения для кодревью по всему проекту - такое)
Без МР было бы сложнее)
источник

DZ

D Z in JavaScript.Ninja
В моем видение тогда лучше разбивать задачу на много маленьких частей, постепенно выливая готовые правки в мастер, чтобы в любой момент можно было отгрузить его, даже не закончив задачу. Но отгрузка обязательно должна быть manual, а не автоматическая при мерже в мастер.
источник

DZ

D Z in JavaScript.Ninja
В моем случае это важно, тк перед отгрузкой нужно пройти полные цепочки + используется сервис воркер, что вызовет неудобства, если накатывать правки каждый день
источник

M

Michael in JavaScript.Ninja
Так выкат идёт на сиай
источник

M

Michael in JavaScript.Ninja
В этом и определение сиайа
источник

DZ

D Z in JavaScript.Ninja
Теперь я не понял)
источник

M

Michael in JavaScript.Ninja
Ну делаешь ветку от мастера. Пиляешь фичу, делаешь пул ревест в мастер. Коллеги одобряют - мерджаешь. И этот коммит в мастере тригерит пайплайн и обновляет сиайку
источник

DZ

D Z in JavaScript.Ninja
Что вы имеете ввиду под ci?
источник

M

Michael in JavaScript.Ninja
Задумался)) хз как описать
источник

M

Michael in JavaScript.Ninja
Ну есть mysite.com, а есть devci.mysite.com
источник

M

Michael in JavaScript.Ninja
Энвайронмент
источник

DZ

D Z in JavaScript.Ninja
Тестовый стенд?
источник

M

Michael in JavaScript.Ninja
Стенд?
источник

VK

Vladimir Klimov in JavaScript.Ninja
Ci - это не то совсем
CI - это вообще подход
источник