updated a bit

This commit is contained in:
Graham Steffaniak 2023-07-31 17:20:14 -05:00
parent a3652a772d
commit f39e561af7
4 changed files with 53 additions and 74 deletions

View File

@ -184,6 +184,7 @@ func containsSearchTerm(pathName string, searchTerm string, options searchOption
fileTypes := map[string]bool{}
fileSize := getFileSize(pathName)
matchesCondition := false
matchesAllConditions := true
extension := filepath.Ext(strings.ToLower(path))
mimetype := mime.TypeByExtension(extension)
fileTypes["audio"] = strings.HasPrefix(mimetype, "audio")
@ -192,7 +193,7 @@ func containsSearchTerm(pathName string, searchTerm string, options searchOption
fileTypes["doc"] = isDoc(extension)
fileTypes["archive"] = isArchive(extension)
fileTypes["dir"] = isDir
anyFilter := false
for t,v := range conditions {
switch t {
case "exact" : continue
@ -200,12 +201,12 @@ func containsSearchTerm(pathName string, searchTerm string, options searchOption
case "smaller" : matchesCondition = fileSize < int64(options.Size) * 1000000
default : matchesCondition = v == fileTypes[t]
}
anyFilter = true
if (!matchesCondition) {
matchesAllConditions = false
}
}
if !anyFilter {
matchesCondition = true
}
return matchesCondition, fileTypes
return matchesAllConditions, fileTypes
}
return false, map[string]bool{}
}

View File

@ -1,26 +1,12 @@
<template>
<div id="search" @click="open" v-bind:class="{ active, ongoing }">
<div id="input">
<button
v-if="active"
class="action"
@click="close"
:aria-label="$t('buttons.close')"
:title="$t('buttons.close')"
>
<button v-if="active" class="action" @click="close" :aria-label="$t('buttons.close')" :title="$t('buttons.close')">
<i class="material-icons">close</i>
</button>
<i v-else class="material-icons">search</i>
<input
type="text"
@keyup.exact="keyup"
@input="submit"
ref="input"
:autofocus="active"
v-model.trim="value"
:aria-label="$t('search.search')"
:placeholder="$t('search.search')"
/>
<input type="text" @keyup.exact="keyup" @input="submit" ref="input" :autofocus="active" v-model.trim="value"
:aria-label="$t('search.search')" :placeholder="$t('search.search')" />
</div>
<div v-if="isMobile && active" id="result" :class="{ hidden: !active }" ref="result">
<div id="result-list">
@ -28,12 +14,7 @@
Search Context: {{ getContext(this.$route.path) }}
</div>
<ul v-show="results.length > 0">
<li
v-for="(s, k) in results"
:key="k"
@click.stop.prevent="navigateTo(s.url)"
style="cursor: pointer"
>
<li v-for="(s, k) in results" :key="k" @click.stop.prevent="navigateTo(s.url)" style="cursor: pointer">
<router-link to="#" event="">
<i v-if="s.dir" class="material-icons folder-icons"> folder </i>
<i v-else-if="s.audio" class="material-icons audio-icons"> volume_up </i>
@ -47,20 +28,17 @@
</router-link>
</li>
</ul>
<p v-show="isEmpty && isRunning" id="renew">
<i class="material-icons spin">autorenew</i>
</p>
<p v-show="isEmpty && !isRunning">{{ text }}</p>
<template v-if="isEmpty">
<p >{{ text }}</p>
<template v-if="value.length === 0">
<div class="boxes">
<h3>{{ $t("search.types") }}</h3>
<div>
<div
tabindex="0"
v-for="(v, k) in boxes"
:key="k"
role="button"
@click="init('type:' + k)"
:aria-label="v.label"
>
<div tabindex="0" v-for="(v, k) in boxes" :key="k" role="button" @click="init('type:' + k)"
:aria-label="v.label">
<i class="material-icons">{{ v.icon }}</i>
<p>{{ v.label }}</p>
</div>
@ -76,12 +54,7 @@
Search Context: {{ getContext(this.$route.path) }}
</div>
<ul v-show="results.length > 0">
<li
v-for="(s, k) in results"
:key="k"
@click.stop.prevent="navigateTo(s.url)"
style="cursor: pointer"
>
<li v-for="(s, k) in results" :key="k" @click.stop.prevent="navigateTo(s.url)" style="cursor: pointer">
<router-link to="#" event="">
<i v-if="s.dir" class="material-icons folder-icons"> folder </i>
<i v-else-if="s.audio" class="material-icons audio-icons"> volume_up </i>
@ -95,25 +68,16 @@
</router-link>
</li>
</ul>
<template >
<p v-show="isEmpty" >{{ text }}</p>
<template >
<template>
<p v-show="isEmpty && isRunning" id="renew">
<i class="material-icons spin">autorenew</i>
</p>
<p v-show="isEmpty && !isRunning">{{ text }}</p>
<template>
<div v-show="results.length == 0" class="boxes">
<ButtonGroup
:buttons="folderSelect"
@button-clicked="init"
@remove-button-clicked="removeInit"
/>
<ButtonGroup
:buttons="typeSelect"
@button-clicked="init"
@remove-button-clicked="removeInit"
/>
<ButtonGroup
:buttons="sizeSelect"
@button-clicked="init"
@remove-button-clicked="removeInit"
/>
<ButtonGroup :buttons="folderSelect" @button-clicked="init" @remove-button-clicked="removeInit" />
<ButtonGroup :buttons="typeSelect" @button-clicked="init" @remove-button-clicked="removeInit" />
<ButtonGroup :buttons="sizeSelect" @button-clicked="init" @remove-button-clicked="removeInit" />
</div>
</template>
</template>
@ -151,10 +115,11 @@ export default {
{ label: "Only Files", value: "type:file" },
],
typeSelect: [
{ label: "Archives", value: "type:archive" },
{ label: "Audio Files", value: "type:audio" },
{ label: "Photos", value: "type:image" },
{ label: "Audio", value: "type:audio" },
{ label: "Videos", value: "type:video" },
{ label: "Documents", value: "type:docs" },
{ label: "Archives", value: "type:archive" },
],
sizeSelect: [
{ label: "Smaller than 100MB", value: "type:smaller=100" },
@ -215,6 +180,9 @@ export default {
isMobile() {
return this.width <= 800;
},
isRunning() {
return this.ongoing;
}
},
mounted() {
window.addEventListener("resize", this.handleResize);
@ -266,20 +234,20 @@ export default {
this.results.length === 0;
},
init(string) {
if (string == null || string == ""){
if (string == null || string == "") {
return false
}
this.value = `${string} ${this.value}`;
if (this.isMobile){
if (this.isMobile) {
this.$refs.input.focus();
}
},
removeInit(string) {
if (string == null || string == ""){
if (string == null || string == "") {
return false
}
this.value = this.value.replace(string+" ", "");
if (this.isMobile){
this.value = this.value.replace(string + " ", "");
if (this.isMobile) {
this.$refs.input.focus();
}
},
@ -301,7 +269,6 @@ export default {
} catch (error) {
this.$showError(error);
}
this.ongoing = false;
},
},

View File

@ -188,6 +188,7 @@ body.rtl .breadcrumbs a {
/* File Selection */
#file-selection {
box-shadow: rgba(0, 0, 0, 0.3) 0px 2em 50px 10px;
position: fixed;
bottom: 1em;
left: 50%;
@ -196,10 +197,8 @@ body.rtl .breadcrumbs a {
-ms-flex-align: center;
align-items: center;
background: #fff;
-webkit-box-shadow: rgba(0, 0, 0, 0.06) 0px 1px 3px, rgba(0, 0, 0, 0.12) 0px 1px 2px;
box-shadow: rgba(0, 0, 0, 0.06) 0px 1px 3px, rgba(0, 0, 0, 0.12) 0px 1px 2px;
width: 95%;
max-width: 25em;
max-width: 30em;
z-index: 1;
}

View File

@ -171,7 +171,7 @@ body.rtl #search #result ul>* {
width: 100%;
text-align: center;
display: none;
margin: 0;
margin: 1em;
max-width: none;
}
@ -179,6 +179,18 @@ body.rtl #search #result ul>* {
display: block;
}
#search #result-desktop #renew {
width: 100%;
text-align: center;
display: none;
margin: 1em;
max-width: none;
}
#search.ongoing #result-desktop #renew {
display: block;
}
/* Icon Colors */
.folder-icons {
color: var(--icon-blue);