Фильтр JSON по DateRange и раскрывающимся значениям - PullRequest
0 голосов
/ 09 июля 2020

Я пытаюсь создать базовый c виджет «Подгонка детали», где он считывает список данных JSON детали и вычисляет код состояния:

  • Blue (haven ' t выбранный год или модель еще)
  • Зеленый (подходит)
  • Желтый (МОЖЕТ подойти)
  • Красный (НЕ подходит)

Здесь является примером JSON из массива частей:

{"Model":"318i","FromDate":"9/1/1989 0:00:00","ToDate":"8/31/1991 0:00:00","AppNote":"Your BMW Requires 5.3 Quarts/5 Liters"}

Как мне выполнить sh простой фильтр частей с двумя раскрывающимися списками: один для года и один для модели? Мне понадобится какой-то метод / фильтр «Диапазон дат», но я просто не уверен, как go лучше всего об этом

Любая помощь будет принята с благодарностью, и извините за начальную неопределенность.

HTML:

<div id="blue" class="alert alert-info" role="alert" v-if="filtered===false">
        <i class="fa fa-question-circle" aria-hidden="true"></i>
        <h4>Does This item fit your Car?</h4>
        <p class="choose">Choose your Car to verify fitment</p>
        <label class="filter select">
            <select v-model="selectedYear">
                <option value="">Choose Year</option>
                <option v-for="year in years" :value="year">{{ year }}</option>
            </select>
        </label>
        <label class="filter select">
            <select v-model="selectedModel">
                <option value="" selected>Model</option>
                <option value="">All</option>
            </select>
        </label>
    </div>

Vue:

    // TODO

    // 1. Get date from selected, format it to grab year from date string, determine "cut-off" year/month from string.
    // 2. Filter second dropdown "Models" based on Date range from first dropdown
    // 3. Determine cookie value to "Save Current Vehicle"
    // 4. Display conditional status when this is achieved
    // 5. Display AppNote if applicable

        var vm = new Vue({
            el:  "#parts",
            data: {
                sku: "36112229650",
                parts: [],
                selectedYear: "",
                selectedModel: ""
            },
            props: {
                filtered: {
                    type: Boolean,
                }
            },
            computed: {

                filteredParts: function() {
                    var vm = this;
                    var year = vm.selectedYear;
                    var model = vm.selectedModel;

                    if(year === "" && model === "") {
                        //save performance, just return the default array:
                        return vm.parts;
                    }
                    else {
                        return vm.parts.filter(function(part) {
                            vm.filtered=true;
                            //return the array after passing it through the filter function:
                            return  (year === '' || part.FrDate === year) && (model === ''  || part.Mdl === model);

                        });
                    }
                },
                years () {
                    const year = new Date().getFullYear()
                    return Array.from({length: year - 1900}, (value, index) => 1901 + index)
                }

            }
        });
    </script>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...