<div x-data="baike_catalog" x-init="fetchSomething">
<!-- 查询器 四角弧形的矩形容器 -->
<div class="flex rounded-lg bg-white shadow-lg p-4 space-x-4">
    <!-- 横向排列的四个元素 -->
    <div class="relative flex w-full max-w-xs flex-col gap-1 text-neutral-600 dark:text-zinc-200">
        <input x-model="demo" type="search" class="w-full rounded border border-zinc-300 bg-zinc-100 py-2 pl-10 pr-2 text-sm focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-sky-700 disabled:cursor-not-allowed disabled:opacity-75 dark:border-zinc-700 dark:bg-zinc-800/50 dark:focus-visible:outline-sky-600" name="search" placeholder="Search" aria-label="search"/>
        <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" aria-hidden="true" class="absolute left-2.5 top-1/2 size-5 -translate-y-1/2 text-neutral-600/50 dark:text-zinc-200/50"> 
            <path stroke-linecap="round" stroke-linejoin="round" d="m21 21-5.197-5.197m0 0A7.5 7.5 0 1 0 5.196 5.196a7.5 7.5 0 0 0 10.607 10.607Z" />
        </svg>
    </div>
    <button @click="fetchSomething" type="button" class="cursor-pointer whitespace-nowrap rounded bg-sky-700 px-4 py-2 text-sm font-medium tracking-wide text-white transition hover:opacity-75 text-center focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-sky-700 active:opacity-100 active:outline-offset-0 disabled:opacity-75 disabled:cursor-not-allowed dark:bg-sky-600 dark:text-white dark:focus-visible:outline-sky-600">查询</button>
    <button @click="open_aieditor(0)" type="button" class="cursor-pointer inline-flex justify-center items-center gap-2 whitespace-nowrap rounded bg-blue-700 px-4 py-2 text-sm font-medium tracking-wide text-white transition hover:opacity-75 text-center focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-sky-700 active:opacity-100 active:outline-offset-0 disabled:opacity-75 disabled:cursor-not-allowed dark:bg-sky-600 dark:text-white dark:focus-visible:outline-sky-600">
        <svg aria-hidden="true" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" class="size-5 fill-white dark:fill-white" fill="currentColor">
            <path fill-rule="evenodd" d="M12 3.75a.75.75 0 01.75.75v6.75h6.75a.75.75 0 010 1.5h-6.75v6.75a.75.75 0 01-1.5 0v-6.75H4.5a.75.75 0 010-1.5h6.75V4.5a.75.75 0 01.75-.75z" clip-rule="evenodd" />
        </svg>
        新建
    </button>
</div>
<!-- 结果表格-->
<div  class="mt-4 overflow-hidden w-full overflow-x-auto rounded border border-zinc-300 dark:border-zinc-700">
    <table class="w-full text-left text-sm text-neutral-600 dark:text-zinc-200">
        <thead class="border-b border-zinc-300 bg-zinc-100 text-sm text-neutral-900 dark:border-zinc-700 dark:bg-zinc-800 dark:text-zinc-50">
            <tr>
                <th scope="col" class="p-4">
                    <label for="checkAll" class="flex items-center cursor-pointer text-neutral-600 dark:text-zinc-200 ">
                        <div class="relative flex items-center">
                            <input type="checkbox" x-model="checkAll" id="checkAll" class="before:content[''] peer relative size-4 cursor-pointer appearance-none overflow-hidden rounded border border-zinc-300 bg-zinc-50 before:absolute before:inset-0 checked:border-sky-700 checked:before:bg-sky-700 focus:outline focus:outline-2 focus:outline-offset-2 focus:outline-zinc-500 checked:focus:outline-sky-700 active:outline-offset-0 dark:border-zinc-700 dark:bg-zinc-800 dark:checked:border-sky-600 dark:checked:before:bg-sky-600 dark:focus:outline-zinc-500 dark:checked:focus:outline-sky-600" />
                            <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" aria-hidden="true" stroke="currentColor" fill="none" stroke-width="4" class="pointer-events-none invisible absolute left-1/2 top-1/2 size-3 -translate-x-1/2 -translate-y-1/2 text-white peer-checked:visible dark:text-white">
                                <path stroke-linecap="round" stroke-linejoin="round" d="M4.5 12.75l6 6 9-13.5"/>
                            </svg>
                        </div>
                    </label>
                </th>
                <th scope="col" class="p-4">分类</th>
                <th scope="col" class="p-4">描述</th>
                <th scope="col" class="p-4">创建日期</th>
                <th scope="col" class="p-4">百科条数</th>
                <th scope="col" class="p-4">操作</th>
            </tr>
        </thead>
        <tbody class="divide-y divide-zinc-300 dark:divide-zinc-700">
            <template x-for="(item,index) in Items" :key="item.id">
            <tr>
                <td class="p-2 px-4">
                    <label for="user2338" class="flex items-center cursor-pointer text-neutral-600 dark:text-zinc-200 ">
                        <div class="relative flex items-center">
                            <input type="checkbox" id="user2338" class="before:content[''] peer relative size-4 cursor-pointer appearance-none overflow-hidden rounded border border-zinc-300 bg-zinc-50 before:absolute before:inset-0 checked:border-sky-700 checked:before:bg-sky-700 focus:outline focus:outline-2 focus:outline-offset-2 focus:outline-zinc-500 checked:focus:outline-sky-700 active:outline-offset-0 dark:border-zinc-700 dark:bg-zinc-800 dark:checked:border-sky-600 dark:checked:before:bg-sky-600 dark:focus:outline-zinc-500 dark:checked:focus:outline-sky-600" :checked="checkAll" />
                            <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" aria-hidden="true" stroke="currentColor" fill="none" stroke-width="4" class="pointer-events-none invisible absolute left-1/2 top-1/2 size-3 -translate-x-1/2 -translate-y-1/2 text-white peer-checked:visible dark:text-white">
                                <path stroke-linecap="round" stroke-linejoin="round" d="M4.5 12.75l6 6 9-13.5"/>
                            </svg>
                        </div>
                    </label>
                </td>
                
                <td class="p-2" x-text="item.catalog">词条</td>
                <td class="p-2" x-text="item.demo">描述</td>
                <td class="p-2">
                    <div class="relative">
                        <button  x-text="item.c_time.slice(0,10)" type="button" class="peer cursor-pointer rounded bg-zinc-100 px-4 py-2 font-medium tracking-wide text-neutral-600 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-sky-700 dark:bg-zinc-800 dark:text-zinc-200 dark:focus-visible:outline-sky-600" aria-describedby="tooltipExample">Hover Me</button>
                        <div x-text="item.c_time" id="tooltipExample" class="absolute -top-9 left-1/2 -translate-x-1/2 z-10 whitespace-nowrap rounded bg-zinc-900 px-2 py-1 text-center text-sm text-zinc-50 opacity-0 transition-all ease-out peer-hover:opacity-100 peer-focus:opacity-100 dark:bg-zinc-50 dark:text-neutral-900" role="tooltip">Tooltip top</div>
                    </div>
                </td>
                <td class="p-2 text-center">

                    <button x-text="item.doc_count" @click="search_baike(item.catalog)" type="button" class="cursor-pointer whitespace-nowrap rounded bg-transparent p-0.5 font-semibold text-sky-700 outline-sky-700 hover:opacity-75 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 active:opacity-100 active:outline-offset-0 dark:text-sky-600 dark:outline-sky-600">数量</button>
                
                </td>
                <td class="p-2">
                    <!--
                    <button @click="open_aieditor(item.id)" type="button" class="cursor-pointer whitespace-nowrap rounded bg-transparent p-0.5 font-semibold text-sky-700 outline-sky-700 hover:opacity-75 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 active:opacity-100 active:outline-offset-0 dark:text-sky-600 dark:outline-sky-600">编辑</button>
                    -->
                    <button x-show="$store.nav.is_admin" @click="del_baike(item.id)" type="button" class="cursor-pointer whitespace-nowrap rounded bg-transparent p-0.5 font-semibold text-sky-700 outline-sky-700 hover:opacity-75 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 active:opacity-100 active:outline-offset-0 dark:text-sky-600 dark:outline-sky-600">删除</button>
                
                </td>
            </tr>
        </template>
        </tbody>
    </table>
    
</div>
<!-- 翻页-->
<nav aria-label="pagination">
    <ul class="flex flex-shrink-0 items-center gap-2 text-sm font-medium">
        <li> 共<span x-text="count" class="font-bold">200</span>条/显示前<span x-text="view_count" class="font-bold"></span>条</li>
        <li>
            <a href="#" @click="curPage===1 ? pageSlie(1): pageSlie(curPage-1) " class="flex items-center rounded p-1 text-neutral-600 hover:text-sky-700 dark:text-zinc-200 dark:hover:text-sky-600" aria-label="previous page">
                <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20" fill="currentColor" aria-hidden="true" class="size-6">
                    <path fill-rule="evenodd" d="M11.78 5.22a.75.75 0 0 1 0 1.06L8.06 10l3.72 3.72a.75.75 0 1 1-1.06 1.06l-4.25-4.25a.75.75 0 0 1 0-1.06l4.25-4.25a.75.75 0 0 1 1.06 0Z" clip-rule="evenodd" />
                </svg>
                上一页
            </a>
        </li>
        <li x-show="count/pageSize+1 >=ps+1"><a href="#" x-text="ps+1" @click="pageSlie(ps+1)" :class="curPage===ps+1 ? 'bg-sky-700 text-white font-bold ' :''" class="flex size-6 items-center justify-center rounded p-1 text-neutral-600 hover:text-sky-700 dark:text-zinc-200 dark:hover:text-sky-600" aria-label="page 1">1</a></li>
        <li x-show="count/pageSize+1 >=ps+2"><a href="#" x-text="ps+2" @click="pageSlie(ps+2)" :class="curPage===ps+2 ? 'bg-sky-700 text-white font-bold ' :''"  class="flex size-6 items-center justify-center rounded p-1 text-neutral-600 hover:text-sky-700 dark:bg-sky-600 dark:text-white" aria-label="page 2">2</a></li>
        <li x-show="count/pageSize+1 >=ps+3"><a href="#" x-text="ps+3" @click="pageSlie(ps+3)" :class="curPage===ps+3 ? 'bg-sky-700 text-white font-bold ' :''" class="flex size-6 items-center justify-center rounded p-1 text-neutral-600 hover:text-sky-700 dark:text-zinc-200 dark:hover:text-sky-600" aria-label="page 3">3</a></li>
        <li x-show="count/pageSize+1 >=ps+4"><a href="#" x-text="ps+4" @click="pageSlie(ps+4)" :class="curPage===ps+4 ? 'bg-sky-700 text-white font-bold ' :''" class="flex size-6 items-center justify-center rounded p-1 text-neutral-600 hover:text-sky-700 dark:text-zinc-200 dark:hover:text-sky-600" aria-label="page 4">4</a></li>
        <li x-show="count/pageSize+1 >=ps+5"><a href="#" x-text="ps+5" @click="pageSlie(ps+5)" :class="curPage===ps+5 ? 'bg-sky-700 text-white font-bold ' :''" class="flex size-6 items-center justify-center rounded p-1 text-neutral-600 hover:text-sky-700 dark:text-zinc-200 dark:hover:text-sky-600" aria-label="page 5">5</a></li>
        <li x-show="count/pageSize+1 >=ps+6"><a href="#" x-text="ps+6" @click="pageSlie(ps+6)" :class="curPage===ps+6 ? 'bg-sky-700 text-white font-bold ' :''" class="flex size-6 items-center justify-center rounded p-1 text-neutral-600 hover:text-sky-700 dark:text-zinc-200 dark:hover:text-sky-600" aria-label="page 1">6</a></li>
        <li x-show="count/pageSize+1 >=ps+7"><a href="#" x-text="ps+7" @click="pageSlie(ps+7)" :class="curPage===ps+7 ? 'bg-sky-700 text-white font-bold ' :''"  class="flex size-6 items-center justify-center rounded p-1 text-neutral-600 hover:text-sky-700 dark:bg-sky-600 dark:text-white"  aria-label="page 2">7</a></li>
        <li x-show="count/pageSize+1 >=ps+8"><a href="#" x-text="ps+8" @click="pageSlie(ps+8)" :class="curPage===ps+8 ? 'bg-sky-700 text-white font-bold ' :''" class="flex size-6 items-center justify-center rounded p-1 text-neutral-600 hover:text-sky-700 dark:text-zinc-200 dark:hover:text-sky-600" aria-label="page 3">8</a></li>
        <li x-show="count/pageSize+1 >=ps+9"><a href="#" x-text="ps+9" @click="pageSlie(ps+9)" :class="curPage===ps+9 ? 'bg-sky-700 text-white font-bold ' :''" class="flex size-6 items-center justify-center rounded p-1 text-neutral-600 hover:text-sky-700 dark:text-zinc-200 dark:hover:text-sky-600" aria-label="page 4">9</a></li>
        <li x-show="count/pageSize+1 >=ps+10"><a href="#" x-text="ps+10" @click="pageSlie(ps+10)" :class="curPage===ps+10 ? 'bg-sky-700 text-white font-bold ' :''" class="flex size-6 items-center justify-center rounded p-1 text-neutral-600 hover:text-sky-700 dark:text-zinc-200 dark:hover:text-sky-600" aria-label="page 5">10</a></li>
      
        <li>
            <a href="#" @click="curPage=== parseInt(count/pageSize)+1 ?  pageSlie(parseInt(count/pageSize)+1): pageSlie(curPage+1) " class="flex items-center rounded p-1 text-neutral-600 hover:text-sky-700 dark:text-zinc-200 dark:hover:text-sky-600" aria-label="next page">
                下一页
                <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20" fill="currentColor" aria-hidden="true" class="size-6">
                    <path fill-rule="evenodd" d="M8.22 5.22a.75.75 0 0 1 1.06 0l4.25 4.25a.75.75 0 0 1 0 1.06l-4.25 4.25a.75.75 0 0 1-1.06-1.06L11.94 10 8.22 6.28a.75.75 0 0 1 0-1.06Z" clip-rule="evenodd" />
                </svg>
            </a>
        </li>
    </ul>
</nav>

<!-- AI 编辑器 Info Modal -->
<div>
    <div x-cloak x-show="AIEditorOpen" x-transition.opacity.duration.200ms x-trap.inert.noscroll="AIEditorOpen" @keydown.esc.window="close_aieditor"  class="fixed inset-0 z-30 flex items-end justify-center bg-black/20 px-4 py-2 backdrop-blur-md sm:items-center lg:p-8" role="dialog" aria-modal="true" aria-labelledby="infoModalTitle">
        <!-- Modal Dialog -->
        <div x-show="AIEditorOpen" x-transition:enter="transition ease-out duration-200 delay-100 motion-reduce:transition-opacity" x-transition:enter-start="opacity-0 scale-50" x-transition:enter-end="opacity-100 scale-100" class="w-full max-w-2xl flex flex-col gap-1 overflow-hidden rounded border border-zinc-300 bg-zinc-50 text-neutral-600 dark:border-zinc-700 dark:bg-zinc-800 dark:text-zinc-200">
            <!-- Dialog Header -->
            <div class="flex items-center justify-between border-b border-zinc-300 bg-zinc-100/60 px-4 py-2 dark:border-zinc-700 dark:bg-zinc-900/20">
                <div class="flex items-center justify-center rounded-full bg-sky-700/20 text-sky-700 p-1">
                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20" fill="currentColor" class="size-6" aria-hidden="true">
                        <path fill-rule="evenodd" d="M18 10a8 8 0 1 1-16 0 8 8 0 0 1 16 0Zm-7-4a1 1 0 1 1-2 0 1 1 0 0 1 2 0ZM9 9a.75.75 0 0 0 0 1.5h.253a.25.25 0 0 1 .244.304l-.459 2.066A1.75 1.75 0 0 0 10.747 15H11a.75.75 0 0 0 0-1.5h-.253a.25.25 0 0 1-.244-.304l.459-2.066A1.75 1.75 0 0 0 9.253 9H9Z" clip-rule="evenodd" />
                    </svg>
                    分类管理
                </div>
                <button @click="close_aieditor" aria-label="close modal">
                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" aria-hidden="true" stroke="currentColor" fill="none" stroke-width="1.4" class="w-5 h-5">
                        <path stroke-linecap="round" stroke-linejoin="round" d="M6 18L18 6M6 6l12 12"/>
                    </svg>
                </button>
            </div>
            <!-- Dialog Body -->
            <div class="p-6  space-y-2 h-full"> 
                <div class="space-y-1"><label class="text-sm font-bold font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70">分类(可以多级: 如一级/二级/三级)</label>
                    <input type="text" x-model="new_catalog"  class="flex w-full h-10 px-3 py-2 text-sm bg-white border rounded-md peer border-neutral-300 ring-offset-background placeholder:text-neutral-400 focus:border-neutral-300 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-neutral-400 disabled:cursor-not-allowed disabled:opacity-50" /></div>
                <div class="space-y-1"><label class="text-sm font-bold font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70">描述</label>
                    <input type="text" x-model="new_demo" class="flex w-full h-10 px-3 py-2 text-sm bg-white border rounded-md peer border-neutral-300 ring-offset-background placeholder:text-neutral-400 focus:border-neutral-300 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-neutral-400 disabled:cursor-not-allowed disabled:opacity-50" /></div>
               
            </div>
            <!-- Dialog Footer -->
            <div class="flex items-center border-t border-zinc-300 bg-zinc-100/60 p-4 dark:border-zinc-700 dark:bg-zinc-900/20 sm:flex-row sm:items-center md:justify-end">
                <button @click="create" type="button" class="mx-auto cursor-pointer whitespace-nowrap rounded bg-sky-700 px-4 py-2 text-center text-sm font-medium tracking-wide text-white transition hover:opacity-75 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-sky-700 active:opacity-100 active:outline-offset-0 dark:bg-sky-600 dark:text-white dark:focus-visible:outline-sky-600">保存</button>
            </div>

        </div>
    </div>
</div>
</div>

<script>
    function baike_catalog(){
        return {
            checkAll: false,
            AIEditorOpen: false,
            demo: '',
            new_catalog: '',
            new_demo: '',
            count: 10,
            view_count:10,
            pageSize:10,
            curPage: 1,
            ps:0,
            aItems:[],
            Items:[],

            open_aieditor(doc_id){
                this.AIEditorOpen=true;
            },
            close_aieditor(){
                this.AIEditorOpen=false;
                this.fetchSomething();
            },
            fetchSomething() {
                axios.get('/api/catalog?demo='+this.demo).then(response => {
                    //console.log('Data:', response.data);
                    this.aItems = response.data.data;
                    this.view_count = this.aItems.length;
                    this.Items = this.aItems.slice(0,this.pageSize);
                    this.curPage = 1;
                    this.count=response.data.count;
                }).catch(error => {
                    console.error('Error fetching data:', error);
                    throw error; // 重新抛出错误以便调用者可以处理
                }); 
            },
            search_baike(select_catalog){
                this.selectedTab = 'baike';
                this.$store.nav.selected_baike_catalog = select_catalog;
                this.$dispatch('refetch-data');
            },
            pageSlie(page){
                this.ps = Math.floor((page-1)/10)*10;
                this.curPage = page;
                this.Items = this.aItems.slice(this.pageSize*(this.curPage-1),this.pageSize*this.curPage);
            },
            del_baike(baike_id){
                axios.get('/api/catalog_del/'+baike_id).then(response => {
                
                    this.fetchSomething();
                }).catch(error => {
                    console.error('Error fetching data:', error);
                    throw error; // 重新抛出错误以便调用者可以处理
                }); 
                
            },
            create(){

                const newItem = {
                    catalog: this.new_catalog,
                    demo: this.new_demo,
                };
              
                // 使用 axios 发送 POST 请求
                axios.post('/api/catalog', newItem)
                .then(response =>{
                    console.info(response.data.code);
                    this.AIEditorOpen = false;
                    this.fetchSomething();
                })
                .catch(error => {
                    alert(error);
                    console.error('Error post data:', error);
                    throw error; // 重新抛出错误以便调用者可以处理
                });
            }
        }
    }

    
</script>

