disable search if no selected tags
parent
71d32b16ca
commit
035b2228bd
|
|
@ -3,3 +3,5 @@ BaiduPCS-Go*
|
|||
__pycache__
|
||||
iib.db
|
||||
tags-translate.csv
|
||||
launch.sh
|
||||
conf.json
|
||||
|
|
|
|||
|
|
@ -8,8 +8,8 @@
|
|||
<link rel="icon" href="/favicon.ico" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
<title>Vite App</title>
|
||||
<script type="module" crossorigin src="/infinite_image_browsing/fe-static/assets/index-2373fa97.js"></script>
|
||||
<link rel="stylesheet" href="/infinite_image_browsing/fe-static/assets/index-7059ac8b.css">
|
||||
<script type="module" crossorigin src="/infinite_image_browsing/fe-static/assets/index-b71d8817.js"></script>
|
||||
<link rel="stylesheet" href="/infinite_image_browsing/fe-static/assets/index-257c23ed.css">
|
||||
</head>
|
||||
|
||||
<body>
|
||||
|
|
|
|||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
|
@ -1 +0,0 @@
|
|||
import{d as D,r as k,aW as F,a$ as G,n as N,K as U,L as V,c as n,N as o,O as s,Q as w,T as x,U as y,Y as $,aR as B,a6 as R,a8 as E}from"./index-2373fa97.js";import{u as O,b as Q,f as q,d as j,h as H,j as K,k as L,t as W,M as Y,S as J}from"./FileItem-0caab9f3.js";import{g as P}from"./db-965dc734.js";import"./index-b8c8219f.js";import"./button-bc78e5bf.js";const X={class:"hint"},Z=D({__name:"MatchedImageGrid",props:{tabIdx:null,paneIdx:null,selectedTagIds:null,id:null},setup(h){const u=h,d=k(),p=F(new G);N(()=>u.selectedTagIds,async()=>{var e;const{res:i}=p.pushAction(()=>P(u.selectedTagIds));d.value=(await i).sort((a,l)=>Date.parse(l.date)-Date.parse(a.date)),(e=m.value)==null||e.scrollToItem(0)},{immediate:!0});const m=k(),f={tabIdx:-1,target:"local",paneIdx:-1},{stackViewEl:b,multiSelectedIdxs:v}=O().toRefs(),{itemSize:g,gridItems:M}=Q(f),{showMenuIdx:c}=q(),{showGenInfo:r,imageGenInfo:I,q:C,onContextMenuClick:S}=j(f,{openNext:B}),T=async(i,e,a)=>{if(await S(i,e,a),i.key==="deleteFiles"){const l=v.value.includes(a)?v.value:[a];d.value=d.value.filter((_,t)=>!l.includes(t))}};return(i,e)=>{const a=R,l=Y,_=J;return U(),V("div",{class:"container",ref_key:"stackViewEl",ref:b},[n(_,{size:"large",spinning:!p.isIdle},{default:o(()=>[n(l,{visible:s(r),"onUpdate:visible":e[1]||(e[1]=t=>w(r)?r.value=t:null),width:"70vw","mask-closable":"",onOk:e[2]||(e[2]=t=>r.value=!1)},{cancelText:o(()=>[]),default:o(()=>[n(a,{active:"",loading:!s(C).isIdle},{default:o(()=>[x("div",{style:{width:"100%","word-break":"break-all","white-space":"pre-line","max-height":"70vh",overflow:"auto"},onDblclick:e[0]||(e[0]=t=>s(H)(s(I),"copied"))},[x("div",X,y(i.$t("doubleClickToCopy")),1),$(" "+y(s(I)),1)],32)]),_:1},8,["loading"])]),_:1},8,["visible"]),n(s(K),{ref_key:"scroller",ref:m,class:"file-list",items:d.value||[],"item-size":s(g).first,"key-field":"fullpath","item-secondary-size":s(g).second,gridItems:s(M)},{default:o(({item:t,index:z})=>[n(L,{idx:z,file:t,"show-menu-idx":s(c),"onUpdate:showMenuIdx":e[3]||(e[3]=A=>w(c)?c.value=A:null),"full-screen-preview-image-url":s(W)(t),onContextMenuClick:T},null,8,["idx","file","show-menu-idx","full-screen-preview-image-url"])]),_:1},8,["items","item-size","item-secondary-size","gridItems"])]),_:1},8,["spinning"])],512)}}});const le=E(Z,[["__scopeId","data-v-177376f3"]]);export{le as default};
|
||||
|
|
@ -0,0 +1 @@
|
|||
import{d as D,r as k,aW as F,a$ as G,n as N,K as U,L as V,c as n,N as o,O as s,Q as w,T as x,U as h,Y as $,aR as B,a6 as R,a8 as E}from"./index-b71d8817.js";import{u as O,b as Q,f as q,d as j,h as H,j as K,k as L,t as W,M as Y,S as J}from"./FileItem-19f2123f.js";import{g as P}from"./db-a83020c3.js";import"./index-120d88ab.js";import"./button-71eab3c7.js";const X={class:"hint"},Z=D({__name:"MatchedImageGrid",props:{tabIdx:null,paneIdx:null,selectedTagIds:null,id:null},setup(y){const u=y,d=k(),p=F(new G(-1,0,-1,"throw"));N(()=>u.selectedTagIds,async()=>{var e;const{res:i}=p.pushAction(()=>P(u.selectedTagIds));d.value=(await i).sort((a,l)=>Date.parse(l.date)-Date.parse(a.date)),(e=m.value)==null||e.scrollToItem(0)},{immediate:!0});const m=k(),f={tabIdx:-1,target:"local",paneIdx:-1},{stackViewEl:b,multiSelectedIdxs:v}=O().toRefs(),{itemSize:g,gridItems:M}=Q(f),{showMenuIdx:r}=q(),{showGenInfo:c,imageGenInfo:I,q:C,onContextMenuClick:S}=j(f,{openNext:B}),T=async(i,e,a)=>{if(await S(i,e,a),i.key==="deleteFiles"){const l=v.value.includes(a)?v.value:[a];d.value=d.value.filter((_,t)=>!l.includes(t))}};return(i,e)=>{const a=R,l=Y,_=J;return U(),V("div",{class:"container",ref_key:"stackViewEl",ref:b},[n(_,{size:"large",spinning:!p.isIdle},{default:o(()=>[n(l,{visible:s(c),"onUpdate:visible":e[1]||(e[1]=t=>w(c)?c.value=t:null),width:"70vw","mask-closable":"",onOk:e[2]||(e[2]=t=>c.value=!1)},{cancelText:o(()=>[]),default:o(()=>[n(a,{active:"",loading:!s(C).isIdle},{default:o(()=>[x("div",{style:{width:"100%","word-break":"break-all","white-space":"pre-line","max-height":"70vh",overflow:"auto"},onDblclick:e[0]||(e[0]=t=>s(H)(s(I),"copied"))},[x("div",X,h(i.$t("doubleClickToCopy")),1),$(" "+h(s(I)),1)],32)]),_:1},8,["loading"])]),_:1},8,["visible"]),n(s(K),{ref_key:"scroller",ref:m,class:"file-list",items:d.value||[],"item-size":s(g).first,"key-field":"fullpath","item-secondary-size":s(g).second,gridItems:s(M)},{default:o(({item:t,index:z})=>[n(L,{idx:z,file:t,"show-menu-idx":s(r),"onUpdate:showMenuIdx":e[3]||(e[3]=A=>w(r)?r.value=A:null),"full-screen-preview-image-url":s(W)(t),onContextMenuClick:T},null,8,["idx","file","show-menu-idx","full-screen-preview-image-url"])]),_:1},8,["items","item-size","item-secondary-size","gridItems"])]),_:1},8,["spinning"])],512)}}});const le=E(Z,[["__scopeId","data-v-0becfdc7"]]);export{le as default};
|
||||
|
|
@ -1 +0,0 @@
|
|||
.container[data-v-177376f3]{background:var(--zp-secondary-background)}.container .file-list[data-v-177376f3]{list-style:none;padding:8px;height:100%;overflow:auto;height:var(--pane-max-height);width:100%}
|
||||
|
|
@ -0,0 +1 @@
|
|||
.container[data-v-0becfdc7]{background:var(--zp-secondary-background)}.container .file-list[data-v-0becfdc7]{list-style:none;padding:8px;height:100%;overflow:auto;height:var(--pane-max-height);width:100%}
|
||||
|
|
@ -1 +0,0 @@
|
|||
.container[data-v-214b03ea]{height:var(--pane-max-height);overflow:auto;display:flex;flex-direction:column;align-items:stretch}.container .select[data-v-214b03ea]{padding:8px}.container .search-bar[data-v-214b03ea]{padding:8px;display:flex}.container .tag-list[data-v-214b03ea]{list-style:none;padding:0;overflow:scroll}.container .tag-list .tag[data-v-214b03ea]{border:2px solid var(--zp-secondary);color:var(--zp-primary);border-radius:999px;padding:4px 16px;margin:4px;display:inline-block;cursor:pointer}.container .tag-list .tag.selected[data-v-214b03ea]{color:var(--primary-color);border:2px solid var(--primary-color)}
|
||||
|
|
@ -0,0 +1 @@
|
|||
import{d as B,V as T,aW as N,a$ as A,r as y,A as V,aa as $,p as D,K as o,L as l,$ as d,x as g,T as r,c as U,O as i,a2 as q,W as u,N as f,Y as p,U as x,Z as G,a4 as z,cj as F,a8 as L}from"./index-b71d8817.js";/* empty css */import{a as k,u as M}from"./db-a83020c3.js";import{B as O}from"./button-71eab3c7.js";const W={class:"container"},j={class:"search-bar"},E={class:"tag-list"},K=["onClick"],Q=B({__name:"TagSearch",props:{tabIdx:null,paneIdx:null},setup(I){const S=I,b=T(),c=N(new A(-1,0,-1,"throw")),a=y(),t=y(new Set),m=V(()=>a.value?a.value.tags.slice().sort((s,n)=>n.count-s.count):[]),C=$();D(async()=>{a.value=await k(),a.value.img_count&&a.value.expired&&_()});const _=async()=>{c.pushAction(async()=>{await M(),a.value=await k()})},w=()=>{b.openTagSearchMatchedImageGridInRight(S.tabIdx,C,Array.from(t.value))},v=s=>s.display_name?`${s.display_name} : ${s.name}`:s.name;return(s,n)=>{const h=O;return o(),l("div",W,[d("",!0),a.value?(o(),l(g,{key:1},[r("div",null,[r("div",j,[U(i(q),{conv:{value:e=>e.id,text:v},mode:"multiple",style:{width:"100%"},options:i(m),value:Array.from(t.value),placeholder:"Select tags to match images","onUpdate:value":n[0]||(n[0]=e=>t.value=new Set(e))},null,8,["conv","options","value"]),a.value.expired||!a.value.img_count?(o(),u(h,{key:0,onClick:_,loading:!c.isIdle,type:"primary"},{default:f(()=>[p(x(a.value.img_count===0?"Generate index for search image":"Update index"),1)]),_:1},8,["loading"])):(o(),u(h,{key:1,type:"primary",onClick:w,loading:!c.isIdle,disabled:!t.value.size},{default:f(()=>[p("Search ")]),_:1},8,["loading","disabled"]))])]),r("ul",E,[(o(!0),l(g,null,G(i(m),e=>(o(),l("li",{key:e.id,class:z(["tag",{selected:t.value.has(e.id)}]),onClick:R=>t.value.has(e.id)?t.value.delete(e.id):t.value.add(e.id)},[t.value.has(e.id)?(o(),u(i(F),{key:0})):d("",!0),p(" "+x(v(e)),1)],10,K))),128))])],64)):d("",!0)])}}});const P=L(Q,[["__scopeId","data-v-5ba545ae"]]);export{P as default};
|
||||
|
|
@ -0,0 +1 @@
|
|||
.container[data-v-5ba545ae]{height:var(--pane-max-height);overflow:auto;display:flex;flex-direction:column;align-items:stretch}.container .select[data-v-5ba545ae]{padding:8px}.container .search-bar[data-v-5ba545ae]{padding:8px;display:flex}.container .tag-list[data-v-5ba545ae]{list-style:none;padding:0;overflow:scroll}.container .tag-list .tag[data-v-5ba545ae]{border:2px solid var(--zp-secondary);color:var(--zp-primary);border-radius:999px;padding:4px 16px;margin:4px;display:inline-block;cursor:pointer}.container .tag-list .tag.selected[data-v-5ba545ae]{color:var(--primary-color);border:2px solid var(--primary-color)}
|
||||
|
|
@ -1 +0,0 @@
|
|||
import{d as w,V as T,aW as N,a$ as A,r as y,A as V,aa as $,p as D,K as o,L as l,$ as r,x as g,T as u,c as U,O as c,a2 as q,W as d,N as f,Y as p,U as x,Z as G,a4 as F,cj as L,a8 as M}from"./index-2373fa97.js";/* empty css */import{a as k,u as O}from"./db-965dc734.js";import{B as W}from"./button-bc78e5bf.js";const j={class:"container"},z={class:"search-bar"},E={class:"tag-list"},K=["onClick"],Q=w({__name:"TagSearch",props:{tabIdx:null,paneIdx:null},setup(I){const S=I,C=T(),i=N(new A),a=y(),t=y(new Set),m=V(()=>a.value?a.value.tags.slice().sort((s,n)=>n.count-s.count):[]),B=$();D(async()=>{a.value=await k(),a.value.img_count&&a.value.expired&&_()});const _=async()=>{i.pushAction(async()=>{await O(),a.value=await k()})},b=()=>{C.openTagSearchMatchedImageGridInRight(S.tabIdx,B,Array.from(t.value))},v=s=>s.display_name?`${s.display_name} : ${s.name}`:s.name;return(s,n)=>{const h=W;return o(),l("div",j,[r("",!0),a.value?(o(),l(g,{key:1},[u("div",null,[u("div",z,[U(c(q),{conv:{value:e=>e.id,text:v},mode:"multiple",style:{width:"100%"},options:c(m),value:Array.from(t.value),placeholder:"Select tags to match images","onUpdate:value":n[0]||(n[0]=e=>t.value=new Set(e))},null,8,["conv","options","value"]),a.value.expired||!a.value.img_count?(o(),d(h,{key:0,onClick:_,loading:!i.isIdle,type:"primary"},{default:f(()=>[p(x(a.value.img_count===0?"Generate index for search image":"Update index"),1)]),_:1},8,["loading"])):(o(),d(h,{key:1,type:"primary",onClick:b,loading:!i.isIdle},{default:f(()=>[p("Search")]),_:1},8,["loading"]))])]),u("ul",E,[(o(!0),l(g,null,G(c(m),e=>(o(),l("li",{key:e.id,class:F(["tag",{selected:t.value.has(e.id)}]),onClick:R=>t.value.has(e.id)?t.value.delete(e.id):t.value.add(e.id)},[t.value.has(e.id)?(o(),d(c(L),{key:0})):r("",!0),p(" "+x(v(e)),1)],10,K))),128))])],64)):r("",!0)])}}});const P=M(Q,[["__scopeId","data-v-214b03ea"]]);export{P as default};
|
||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
|
@ -1 +1 @@
|
|||
import{bC as a}from"./index-2373fa97.js";const n=async()=>(await a.get("/db/basic_info")).data,i=async()=>{await a.post("/db/update_image_data",{},{timeout:1/0})},o=async t=>(await a.get("/db/match_images_by_tags",{params:{tag_ids:t.join()}})).data;export{n as a,o as g,i as u};
|
||||
import{bC as a}from"./index-b71d8817.js";const n=async()=>(await a.get("/db/basic_info")).data,i=async()=>{await a.post("/db/update_image_data",{},{timeout:1/0})},o=async t=>(await a.get("/db/match_images_by_tags",{params:{tag_ids:t.join()}})).data;export{n as a,o as g,i as u};
|
||||
File diff suppressed because one or more lines are too long
|
|
@ -1 +0,0 @@
|
|||
.container[data-v-7ecbd424]{padding:20px;background-color:var(--zp-secondary-background);height:100%;overflow:auto}.header[data-v-7ecbd424]{display:flex;justify-content:space-between;align-items:center;margin-bottom:20px}.header h1[data-v-7ecbd424]{font-size:28px;font-weight:700;color:var(--zp-primary)}.last-record[data-v-7ecbd424]{margin-left:8px;font-size:14px;color:var(--zp-tertiary)}.last-record a[data-v-7ecbd424]{text-decoration:none;color:var(--zp-tertiary)}.last-record a[data-v-7ecbd424]:hover{color:var(--zp-primary)}.content[data-v-7ecbd424]{display:grid;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));grid-gap:20px}.quick-start[data-v-7ecbd424]{background-color:var(--zp-primary-background);border-radius:8px;box-shadow:0 1px 2px #0000001a;padding:20px}.quick-start ul[data-v-7ecbd424]{list-style:none;padding:4px}.quick-start h2[data-v-7ecbd424]{margin-top:0;margin-bottom:20px;font-size:20px;font-weight:700;color:var(--zp-primary)}.quick-start__item[data-v-7ecbd424]{margin-bottom:10px;padding:4px 8px;display:flex;align-items:center}.quick-start__item[data-v-7ecbd424]:hover{background:var(--zp-secondary-background);border-radius:4px;color:var(--primary-color);cursor:pointer}.quick-start__text[data-v-7ecbd424]{flex:1;font-size:16px}.quick-start__icon[data-v-7ecbd424]{margin-right:8px}
|
||||
|
|
@ -0,0 +1 @@
|
|||
.container[data-v-e26d5f9e]{padding:20px;background-color:var(--zp-secondary-background);height:100%;overflow:auto}.header[data-v-e26d5f9e]{display:flex;justify-content:space-between;align-items:center;margin-bottom:20px}.header h1[data-v-e26d5f9e]{font-size:28px;font-weight:700;color:var(--zp-primary)}.last-record[data-v-e26d5f9e]{margin-left:8px;font-size:14px;color:var(--zp-tertiary)}.last-record a[data-v-e26d5f9e]{text-decoration:none;color:var(--zp-tertiary)}.last-record a[data-v-e26d5f9e]:hover{color:var(--zp-primary)}.content[data-v-e26d5f9e]{display:grid;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));grid-gap:20px}.quick-start[data-v-e26d5f9e]{background-color:var(--zp-primary-background);border-radius:8px;box-shadow:0 1px 2px #0000001a;padding:20px}.quick-start ul[data-v-e26d5f9e]{list-style:none;padding:4px}.quick-start h2[data-v-e26d5f9e]{margin-top:0;margin-bottom:20px;font-size:20px;font-weight:700;color:var(--zp-primary)}.quick-start__item[data-v-e26d5f9e]{margin-bottom:10px;padding:4px 8px;display:flex;align-items:center}.quick-start__item[data-v-e26d5f9e]:hover{background:var(--zp-secondary-background);border-radius:4px;color:var(--primary-color);cursor:pointer}.quick-start__text[data-v-e26d5f9e]{flex:1;font-size:16px}.quick-start__icon[data-v-e26d5f9e]{margin-right:8px}
|
||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
|
@ -7,8 +7,8 @@
|
|||
<link rel="icon" href="/favicon.ico" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
<title>Vite App</title>
|
||||
<script type="module" crossorigin src="/infinite_image_browsing/fe-static/assets/index-2373fa97.js"></script>
|
||||
<link rel="stylesheet" href="/infinite_image_browsing/fe-static/assets/index-7059ac8b.css">
|
||||
<script type="module" crossorigin src="/infinite_image_browsing/fe-static/assets/index-b71d8817.js"></script>
|
||||
<link rel="stylesheet" href="/infinite_image_browsing/fe-static/assets/index-257c23ed.css">
|
||||
</head>
|
||||
|
||||
<body>
|
||||
|
|
|
|||
|
|
@ -16,7 +16,7 @@ import { watch } from 'vue'
|
|||
|
||||
const images = ref<FileNodeInfo[]>()
|
||||
|
||||
const queue = reactive(new FetchQueue())
|
||||
const queue = reactive(new FetchQueue(-1, 0, -1, 'throw'))
|
||||
|
||||
const props = defineProps<{ tabIdx: number, paneIdx: number, selectedTagIds: number[], id: string }>()
|
||||
|
||||
|
|
@ -81,4 +81,4 @@ const onContextMenuClickU: typeof onContextMenuClick = async (e, file, idx) => {
|
|||
width: 100%;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
</style>
|
||||
|
|
|
|||
|
|
@ -8,7 +8,7 @@ import { uniqueId } from 'lodash-es'
|
|||
|
||||
const props = defineProps<{ tabIdx: number, paneIdx: number }>()
|
||||
const global = useGlobalStore()
|
||||
const queue = reactive(new FetchQueue())
|
||||
const queue = reactive(new FetchQueue(-1, 0, -1, 'throw'))
|
||||
const info = ref<DataBaseBasicInfo>()
|
||||
const selectedId = ref(new Set<number>())
|
||||
const tags = computed(() => info.value ? info.value.tags.slice().sort((a, b) => b.count - a.count) : [])
|
||||
|
|
@ -42,13 +42,14 @@ const toTagDisplayName = (v: Tag) => v.display_name ? `${v.display_name} : ${v.n
|
|||
<div>
|
||||
<div class="search-bar">
|
||||
<SearchSelect :conv="{ value: v => v.id, text: toTagDisplayName, }" mode="multiple" style="width: 100%;"
|
||||
:options="tags" :value="Array.from(selectedId)" placeholder="Select tags to match images"
|
||||
@update:value="v => selectedId = new Set(v)" />
|
||||
:options="tags" :value="Array.from(selectedId)" placeholder="Select tags to match images"
|
||||
@update:value="v => selectedId = new Set(v)" />
|
||||
<AButton @click="onUpdateBtnClick" :loading="!queue.isIdle" type="primary"
|
||||
v-if="info.expired || !info.img_count">
|
||||
{{
|
||||
info.img_count === 0 ? 'Generate index for search image' : 'Update index' }}</AButton>
|
||||
<AButton v-else type="primary" @click="query" :loading="!queue.isIdle">Search</AButton>
|
||||
<AButton v-else type="primary" @click="query" :loading="!queue.isIdle" :disabled="!selectedId.size">Search
|
||||
</AButton>
|
||||
</div>
|
||||
</div>
|
||||
<ul class="tag-list">
|
||||
|
|
@ -101,4 +102,4 @@ const toTagDisplayName = (v: Tag) => v.display_name ? `${v.display_name} : ${v.n
|
|||
}
|
||||
|
||||
}
|
||||
</style>
|
||||
</style>
|
||||
|
|
|
|||
Loading…
Reference in New Issue