From a64f6f4a8502131a5da5bc2c286d7bcc916eb2b0 Mon Sep 17 00:00:00 2001 From: Brandon Thomas Date: Wed, 5 Jan 2022 03:34:02 -0500 Subject: [PATCH] close to remove category select work (hopefully no regression) --- .../tts_model_list/MultiDropdownSearch.tsx | 88 +++++++++++++++---- 1 file changed, 70 insertions(+), 18 deletions(-) diff --git a/fakeyou/src/v2/view/tts/tts_model_list/MultiDropdownSearch.tsx b/fakeyou/src/v2/view/tts/tts_model_list/MultiDropdownSearch.tsx index 4c68e64ed5..efdc5d39a5 100644 --- a/fakeyou/src/v2/view/tts/tts_model_list/MultiDropdownSearch.tsx +++ b/fakeyou/src/v2/view/tts/tts_model_list/MultiDropdownSearch.tsx @@ -1,4 +1,4 @@ -import { faHeadphonesAlt, faTags, faTimes, faTimesCircle } from '@fortawesome/free-solid-svg-icons'; +import { faHeadphonesAlt, faTags, faTimes } from '@fortawesome/free-solid-svg-icons'; import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; import React, { useEffect, useState } from 'react'; import { TtsCategory } from '../../../api/category/ListTtsCategories'; @@ -101,14 +101,7 @@ export function MultiDropdownSearch(props: Props) { // default if we prepopulate the list. // - const handleChangeCategory = (ev: React.FormEvent, level: number) => { - console.log('======= handleChangeCategory =======') - - const maybeToken = (ev.target as HTMLSelectElement).value; - if (!maybeToken) { - return true; - } - + const doChangeCategory = (level: number, maybeToken: string) => { // Slice off all the irrelevant child category choices, then append new choice. let newCategorySelections = selectedCategories.slice(0, level); @@ -120,32 +113,91 @@ export function MultiDropdownSearch(props: Props) { newCategorySelections.push(category); } - console.log('newCategorySelections', newCategorySelections); + //console.log('newCategorySelections', newCategorySelections); setSelectedCategories(newCategorySelections); const newSubcategories = allTtsCategories.filter(category => { return category.maybe_super_category_token === maybeToken; }); + //console.log('new subcategories', newSubcategories.length); + + newDropdownCategories.push(newSubcategories); + + setDropdownCategories(newDropdownCategories); + } + + const handleChangeCategory = (ev: React.FormEvent, level: number) => { + //console.log('======= handleChangeCategory =======') + + const maybeToken = (ev.target as HTMLSelectElement).value; + if (!maybeToken) { + return true; + } + + const maybeName: string | undefined = allCategoriesByTokenMap.get(maybeToken)?.name_for_dropdown; // TODO DEBUG ONLY + + console.log('[+] handleChangeCategory', level, maybeToken, maybeName) + + doChangeCategory(level, maybeToken); + + + return true; + }; + + const handleRemoveCategory = (level: number) => { + const parentLevel = Math.max(level - 1, 0); + + let maybeToken : string | undefined = selectedCategories[parentLevel]?.category_token; + let maybeName: string | undefined = selectedCategories[parentLevel]?.name_for_dropdown; // TODO DEBUG ONLY + + level = Math.max(level - 1, 0); + maybeToken = '*'; + maybeName = '*'; + + console.log('[-] handleRemoveCategory', level, maybeToken, maybeName) + + doChangeCategory(level, maybeToken); + + /*// drop0 = { foo, [bar] } + // drop1 = { [aaa], bbb } + // drop2 = { AAA, BBB } + + // level = 2 clicked, + + // + + + // Slice off all the irrelevant child category choices, then append new choice. + let newCategorySelections = selectedCategories.slice(0, parentLevel + 1); + setSelectedCategories(newCategorySelections); + + const maybeToken : string | undefined = newCategorySelections[newCategorySelections.length -1]?.category_token; + + // And the dropdowns themselves + let newDropdownCategories = dropdownCategories.slice(0, parentLevel); + + const newSubcategories = allTtsCategories.filter(category => { + return category.maybe_super_category_token === maybeToken; + }); + console.log('new subcategories', newSubcategories.length); newDropdownCategories.push(newSubcategories); - setDropdownCategories(newDropdownCategories); - - return true; - }; + setDropdownCategories(newDropdownCategories);*/ + } let categoryDropdowns = []; - console.log('-------render-------'); + //console.log('-------render-------'); for (let i = 0; i < dropdownCategories.length; i++) { const currentDropdownCategories = dropdownCategories[i]; let maybeSelectedToken = (!!selectedCategories[i])? selectedCategories[i].category_token : undefined; - console.log('maybeSelectedToken', i, maybeSelectedToken, selectedCategories.map(c => c.category_token)); + //console.log('maybeSelectedToken', i, maybeSelectedToken, selectedCategories.map(c => c.category_token)); let defaultName = (i === 0) ? 'All Voices' : 'Select...'; @@ -192,10 +244,10 @@ export function MultiDropdownSearch(props: Props) {