var coursesList = { props: ['courses', 'selected_d', 'selected_c', 'find_name'], data: function () { return { selectedTime: [], selectedId: [], foundedCourses: [] } }, methods: { 'getTime': function (timeString) { let num; const timeRegex = new RegExp(/^\d[\da-z]*[a-z]$/); return timeRegex.test(timeString) ? [...timeString].reduce((res, c) => { if (Number.isInteger(+c)) { num = c; return res; } else { return [...res, num + c]; } }, []) : []; }, 'isOK': function (course) { var time = this.getTime(course.time) // console.log(course.name, " ", time) const isConflict = time.some((t) => this.selectedTime.includes(t)) const isSelected = this.selectedId.includes((course.number+course.class)) return !isConflict && !isSelected }, 'log': function (name, data) { console.log(name, data) } }, watch: { 'selected_c': function () { var timeTemp = [] var idTemp = [] for (var c of this.selected_c) { if (c.temp == false) { timeTemp.push(c.time) idTemp.push(c.number+c.class) } } this.selectedTime = timeTemp this.selectedId = idTemp }, 'find_name': function () { const target = this.find_name.toLowerCase(); this.foundedCourses = this.courses.filter((c) => c.name.toLowerCase().includes(target)); } }, template: `
` }