66 <!-- class="col-auto" -->
77 <!-- -->
88 <!-- <div class="scroll-wrapper col"> -->
9- <div >
10- <q-input rounded outlined v-model =" searchText" label =" Suche:" > </q-input >
9+ <div class =" row wrap justify-start items-stretch content-start" >
10+ <q-input class =" col-grow" rounded outlined v-model =" searchText" label =" Suche:" >
11+ </q-input >
12+ <q-btn-toggle
13+ rounded
14+ outlined
15+ v-model =" filter_by_type"
16+ clearable
17+ :options =" [
18+ { label: 'Controller', value: 'controller' },
19+ { label: 'input', value: 'input' },
20+ { label: 'output', value: 'output' },
21+ { label: 'shield', value: 'shield' },
22+ ]"
23+ />
1124 </div >
12- <ul class =" card-wrapper row items-stretch " >
25+ <ul class =" card-wrapper row" >
1326 <li
1427 v-for =" (mks_item, mks_item_name) in mks_items_filtered"
1528 :key =" mks_item_name"
@@ -44,96 +57,25 @@ import PartOverview from 'src/components/PartOverview.vue'
4457
4558import { useMDContentStore } from ' src/stores/mdContent'
4659
47-
4860const mdContent = useMDContentStore ()
4961console .log (' mdContent' , mdContent)
5062const mks_welcome = mdContent .mks .welcome
5163const mks_parts = shallowRef (mdContent .mks .parts )
5264const mks_parts_sorted = shallowRef (mdContent .mks .parts_sorted )
5365console .log (' mks_parts_sorted' , mks_parts_sorted)
5466
55-
56- // const mks_items_sorted = computed(() => {
57- // // const checkKey = (key) => key.includes('ino') || key.includes('main')
58- // console.log(mks_parts.value);
59- // // const entries = Object.entries(mks_parts.value)
60- // // // console.log('entries', entries)
61- // // // const firstEntries = entries.filter(([key]) => checkKey(key))
62- // // // // console.log('firstEntries', firstEntries)
63- // // // const otherEntries = entries.filter(([key]) => !checkKey(key))
64- // // // console.log('otherEntries', otherEntries)
65- // // otherEntries.sort(([a], [b]) => a.localeCompare(b))
66- // // const sortedEntries = [...firstEntries, ...otherEntries]
67- // // // console.log('sortedEntries', sortedEntries)
68- // // files.value = Object.fromEntries(sortedEntries)
69-
70- // const result = {
71- // ...getObjItemsWithSearchTextInReadme(mks_parts.value),
72- // // ...mks_parts.value
73- // }
74- // return result
75- // })
76-
77- // const check_searchTextInReadme = (readme, item_name) => {
78- // return (
79- // item_name?.toLowerCase().includes(searchText.value.toLowerCase()) ||
80- // readme.content.toLowerCase().includes(searchText.value.toLowerCase()) ||
81- // readme.data?.tags?.join(", ").toLowerCase().includes(searchText.value.toLowerCase())
82- // );
83- // };
84- const check_searchTextInReadme = (readme , item_name ) => {
85- return (
86- item_name? .toLowerCase ().includes (searchText .value .toLowerCase ()) ||
87- readme .content_text .toLowerCase ().includes (searchText .value .toLowerCase ()) ||
88- // TODO: find a better way to search for text in rendered output..
89- readme .data ? .tags ? .join (' , ' ).toLowerCase ().includes (searchText .value .toLowerCase ())
90- )
91- }
92-
93- const getObjItemsWithSearchTextInReadme = (obj ) => {
94- const result = {}
95- for (const [item_name , item ] of Object .entries (obj)) {
96- // console.log(`item_name`, item_name, `item`, item)
97- if (check_searchTextInReadme (item, item_name)) {
98- result[item_name] = item
99- }
100- }
101- return result
102- }
67+ const filter_by_type = ref (' ' )
68+ const searchText = ref (' ' )
69+ const search_in_content = ref (false )
10370
10471const mks_items_filtered = computed (() => {
105- // const result = {};
106- // for (const [mks_item_name, mks_item] of Object.entries(mks_tags.value)) {
107- // console.log(`mks_item_name`, mks_item_name, `mks_item`, fn_item);
108- // // only include in result if search text is somewhere in the content..
109- // // check bauteile
110- // // const bauteile_includes = getObjItemsWithSearchTextInReadme(mks_parts.);
111- // // // console.log("bauteile_includes", bauteile_includes);
112- // // console.log("Object.keys(bauteile_includes)", Object.keys(bauteile_includes));
113-
114- // // if (
115- // // check_searchTextInReadme(fn_item.readme, fn_name) ||
116- // // Object.keys(bauteile_includes).length > 0
117- // // ) {
118- // if (
119- // check_searchTextInReadme(fn_item.readme, fn_name)
120- // ) {
121- // result[fn_name] = fn_item;
122- // }
123- // }
124-
125- const result = {
126- // ...getObjItemsWithSearchTextInReadme(mks_tags.value),
127- // ...getObjItemsWithSearchTextInReadme(mks_parts.value),
128- ... getObjItemsWithSearchTextInReadme (mks_parts_sorted .value ),
129- // ...mks_parts_sorted,
130- }
131- // console.log('mks_items_filtered', result)
132- return result
72+ return mdContent .parts_filtered ({
73+ by_searchText: searchText .value ,
74+ by_material_type: filter_by_type .value ,
75+ in_content: search_in_content .value ,
76+ })
13377})
13478
135- const searchText = ref (' ' )
136-
13779// $q.notify('Message')
13880
13981// const $q = useQuasar();
@@ -160,7 +102,7 @@ const searchText = ref('')
160102 flex-direction : row ;
161103 flex-wrap : wrap ;
162104 justify-content : flex-start ;
163- align- content: stretch ;
105+ align-content : flex-start ;
164106 align-items : stretch ;
165107 li
166108 margin : 0
0 commit comments