1. JavaScript / Говнокод #25100

    +1

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    23. 23
    24. 24
    25. 25
    26. 26
    export function doFilters(global, value) {
      let filterListGeo, filterListStatus
      const timeLife = global.selectedFilters.ttl // Функция настройки параметров фильтра. По каждому полю проходит проверка: либо фильтр отсутсвует, либо его настройки соовтетсвуют пользовательским.
      const timeStart = global.selectedFilters.tts
      const rate = global.selectedFilters.startRate
      const shippingDate = new Date(formatDate(value.dateFrom, 'MM.DD.YYYY'))
      const unloadDate = new Date(formatDate(value.dateTo, 'MM.DD.YYYY'))
      const shippingDateFrom = new Date(global.dateFromInterval[0])
      const shippingDateTo = new Date(global.dateFromInterval[1])
      const unloadDateFrom = new Date(global.dateToInterval[0])
      const unloadDateTo = new Date(global.dateToInterval[1])
    
      if (global.strainer) {
        filterListGeo = global.strainer.geozoneFrom
        filterListStatus = global.strainer.status
      }
    
      return ((!global.selectedFilters) || (!timeLife) || (!timeLife.from && !timeLife.to) || (value.ttl >= timeLife.from && value.ttl < timeLife.to) || (!timeLife.to && value.ttl > timeLife.from)) &&
      ((!global.selectedFilters) || (!timeStart) || (!timeStart.from && !timeStart.to) || (value.ttl >= timeStart.from && value.ttl < timeStart.to) || (!timeStart.to && value.ttl > timeStart.from)) &&
      ((!global.orderId) || (!global.orderId.length || String(value.orderId).substr(0, global.orderId.length) === global.orderId)) &&
      ((!rate.from && !rate.to) || (value.startRate >= rate.from && value.startRate <= rate.to)) &&
      ((!filterListGeo) || (filterListGeo.every(item => !item.checked)) || (filterListGeo.find(item => item.name === value.geozoneFrom).checked)) &&
      ((!filterListStatus) || (filterListStatus.every(item => !item.checked)) || (filterListStatus.find(item => item.name === value.status).checked)) &&
      ((!global.dateFromInterval.length) || (shippingDate >= shippingDateFrom && shippingDate <= shippingDateTo)) &&
      ((!global.dateToInterval.length) || (unloadDate >= unloadDateFrom && unloadDate <= unloadDateTo))
    }

    Функция настройки параметров фильтра. По каждому полю проходит проверка: либо фильтр отсутсвует, либо его настройки соовтетсвуют пользовательским.

    Запостил: DKVitol, 20 Ноября 2018

    Комментарии (4) RSS

    • Скажите пожалуйста, это код на «Angular», «React», «Redux», «VueJS», «Dojo», «Ember.js», «Aurelia», «Hyperapp», «SvelteJS», «Backbone.js», «Spine.js», «YUI», «Knockout.js» или «Knockback.js»?
      Ответить

    Добавить комментарий