Compare commits

...

5 Commits

8 changed files with 82 additions and 57 deletions

File diff suppressed because one or more lines are too long

View File

@ -69,7 +69,7 @@ interface SortMode {
class Sist2Query { class Sist2Query {
searchQuery(): any { searchQuery(blankSearch: boolean = false): any {
const getters = store.getters; const getters = store.getters;
@ -93,22 +93,6 @@ class Sist2Query {
{terms: {index: selectedIndexIds}} {terms: {index: selectedIndexIds}}
] as any[]; ] as any[];
if (sizeMin && sizeMax) {
filters.push({range: {size: {gte: sizeMin, lte: sizeMax}}})
} else if (sizeMin) {
filters.push({range: {size: {gte: sizeMin}}})
} else if (sizeMax) {
filters.push({range: {size: {lte: sizeMax}}})
}
if (dateMin && dateMax) {
filters.push({range: {mtime: {gte: dateMin, lte: dateMax}}})
} else if (dateMin) {
filters.push({range: {mtime: {gte: dateMin}}})
} else if (dateMax) {
filters.push({range: {mtime: {lte: dateMax}}})
}
const fields = [ const fields = [
"name^8", "name^8",
"content^3", "content^3",
@ -128,7 +112,25 @@ class Sist2Query {
fields.push("name.nGram^3"); fields.push("name.nGram^3");
} }
if (!blankSearch) {
if (sizeMin && sizeMax) {
filters.push({range: {size: {gte: sizeMin, lte: sizeMax}}})
} else if (sizeMin) {
filters.push({range: {size: {gte: sizeMin}}})
} else if (sizeMax) {
filters.push({range: {size: {lte: sizeMax}}})
}
if (dateMin && dateMax) {
filters.push({range: {mtime: {gte: dateMin, lte: dateMax}}})
} else if (dateMin) {
filters.push({range: {mtime: {gte: dateMin}}})
} else if (dateMax) {
filters.push({range: {mtime: {lte: dateMax}}})
}
const path = pathText.replace(/\/$/, "").toLowerCase(); //remove trailing slashes const path = pathText.replace(/\/$/, "").toLowerCase(); //remove trailing slashes
if (path !== "") { if (path !== "") {
filters.push({term: {path: path}}) filters.push({term: {path: path}})
} }
@ -144,6 +146,7 @@ class Sist2Query {
selectedTags.forEach((tag: string) => filters.push({term: {"tag": tag}})); selectedTags.forEach((tag: string) => filters.push({term: {"tag": tag}}));
} }
} }
}
let query; let query;
if (getters.optQueryMode === "simple") { if (getters.optQueryMode === "simple") {
@ -182,7 +185,7 @@ class Sist2Query {
size: size, size: size,
} as any; } as any;
if (!empty) { if (!empty && !blankSearch) {
q.query.bool.must = query; q.query.bool.must = query;
} }
@ -237,7 +240,7 @@ class Sist2Query {
} }
} }
if (!empty) { if (!empty && !blankSearch) {
q.query.function_score.query.bool.must.push(query); q.query.function_score.query.bool.must.push(query);
} }
} }

View File

@ -89,7 +89,6 @@ export default {
switch (e.key) { switch (e.key) {
case " ": { case " ": {
console.log("SPACE")
e.preventDefault(); e.preventDefault();
e.stopPropagation(); e.stopPropagation();
e.stopImmediatePropagation(); e.stopImmediatePropagation();
@ -98,16 +97,12 @@ export default {
[...document.getElementsByClassName("fslightbox-absoluted")].forEach(elem => { [...document.getElementsByClassName("fslightbox-absoluted")].forEach(elem => {
if (elem.style.transform === "translate(0px)" || elem.style.transform === "translate(0px, 0px)") { if (elem.style.transform === "translate(0px)" || elem.style.transform === "translate(0px, 0px)") {
const vid = elem.getElementsByTagName("video")[0]; const vid = elem.getElementsByTagName("video")[0];
console.log(elem)
console.log(vid)
if (vid) { if (vid) {
if (vid.paused) { if (vid.paused) {
vid.play(); vid.play();
console.log("PLAY")
} else { } else {
vid.pause() vid.pause()
console.log("PAUSE")
} }
} }
} }
@ -119,24 +114,28 @@ export default {
} }
case "ArrowUp": case "ArrowUp":
case "k": { case "k": {
if (!lightboxStore.data.isThumbing) { if (!lightboxStore.data.isThumbing && lightboxStore.core.thumbsToggler) {
lightboxStore.core.thumbsToggler.toggleThumbs(); lightboxStore.core.thumbsToggler.toggleThumbs();
} }
return false; return false;
} }
case "ArrowDown": case "ArrowDown":
case "j": { case "j": {
if (lightboxStore.data.isThumbing) { if (lightboxStore.data.isThumbing && lightboxStore.core.thumbsToggler) {
lightboxStore.core.thumbsToggler.toggleThumbs(); lightboxStore.core.thumbsToggler.toggleThumbs();
} }
return false; return false;
} }
case "h": { case "h": {
if (lightboxStore.core.stageManager.getPreviousSlideIndex) {
lightboxStore.core.slideIndexChanger.jumpTo(lightboxStore.core.stageManager.getPreviousSlideIndex()); lightboxStore.core.slideIndexChanger.jumpTo(lightboxStore.core.stageManager.getPreviousSlideIndex());
break; }
return false;
} }
case "l": { case "l": {
if (lightboxStore.core.stageManager.getNextSlideIndex) {
lightboxStore.core.slideIndexChanger.jumpTo(lightboxStore.core.stageManager.getNextSlideIndex()); lightboxStore.core.slideIndexChanger.jumpTo(lightboxStore.core.stageManager.getNextSlideIndex());
}
return false; return false;
} }
} }

View File

@ -241,6 +241,11 @@ export default new Vuex.Store({
} }
}, },
async updateArgs({state}, router: VueRouter) { async updateArgs({state}, router: VueRouter) {
if (router.currentRoute.path !== "/") {
return;
}
await router.push({ await router.push({
query: { query: {
q: state.searchText.trim() ? state.searchText.trim().replace(/\s+/g, " ") : undefined, q: state.searchText.trim() ? state.searchText.trim().replace(/\s+/g, " ") : undefined,

View File

@ -139,7 +139,9 @@ export default Vue.extend({
this.setSist2Info(data); this.setSist2Info(data);
this.setIndices(data.indices); this.setIndices(data.indices);
Sist2Api.getMimeTypes(Sist2Query.searchQuery()).then(({mimeMap}) => { const doBlankSearch = !this.$store.state.optUpdateMimeMap;
Sist2Api.getMimeTypes(Sist2Query.searchQuery(doBlankSearch)).then(({mimeMap}) => {
this.$store.commit("setUiMimeMap", mimeMap); this.$store.commit("setUiMimeMap", mimeMap);
this.uiLoading = false; this.uiLoading = false;
this.search(true); this.search(true);

View File

@ -214,7 +214,13 @@ void print_errors(response_t *r) {
*(tmp + r->size) = '\0'; *(tmp + r->size) = '\0';
cJSON *ret_json = cJSON_Parse(tmp); cJSON *ret_json = cJSON_Parse(tmp);
if (cJSON_GetObjectItem(ret_json, "errors")->valueint != 0) { cJSON *errors = cJSON_GetObjectItem(ret_json, "errors");
if (errors == NULL) {
char *str = cJSON_Print(ret_json);
LOG_ERRORF("elastic.c", "%s\n", str);
cJSON_free(str);
} else if (errors->valueint != 0) {
cJSON *err; cJSON *err;
cJSON_ArrayForEach(err, cJSON_GetObjectItem(ret_json, "items")) { cJSON_ArrayForEach(err, cJSON_GetObjectItem(ret_json, "items")) {
if (cJSON_GetObjectItem(cJSON_GetObjectItem(err, "index"), "status")->valueint != 201) { if (cJSON_GetObjectItem(cJSON_GetObjectItem(err, "index"), "status")->valueint != 201) {

File diff suppressed because one or more lines are too long

View File

@ -4,7 +4,12 @@
#define MIN_SIZE 32 #define MIN_SIZE 32
#define AVIO_BUF_SIZE 8192 #define AVIO_BUF_SIZE 8192
#define IS_VIDEO(fmt) ((fmt)->iformat->name && strcmp((fmt)->iformat->name, "image2") != 0) #define IS_VIDEO(fmt) ( \
(fmt)->iformat->name && strcmp((fmt)->iformat->name, "image2") != 0 \
&& strcmp((fmt)->iformat->name, "jpeg_pipe") != 0 \
&& strcmp((fmt)->iformat->name, "webp_pipe") != 0 \
&& strcmp((fmt)->iformat->name, "png_pipe") != 0 \
)
#define STORE_AS_IS ((void*)-1) #define STORE_AS_IS ((void*)-1)
@ -279,6 +284,7 @@ static void
append_video_meta(scan_media_ctx_t *ctx, AVFormatContext *pFormatCtx, AVFrame *frame, document_t *doc, int is_video) { append_video_meta(scan_media_ctx_t *ctx, AVFormatContext *pFormatCtx, AVFrame *frame, document_t *doc, int is_video) {
if (is_video) { if (is_video) {
if (pFormatCtx->duration / AV_TIME_BASE != 0) {
meta_line_t *meta_duration = malloc(sizeof(meta_line_t)); meta_line_t *meta_duration = malloc(sizeof(meta_line_t));
meta_duration->key = MetaMediaDuration; meta_duration->key = MetaMediaDuration;
meta_duration->long_val = pFormatCtx->duration / AV_TIME_BASE; meta_duration->long_val = pFormatCtx->duration / AV_TIME_BASE;
@ -286,12 +292,15 @@ append_video_meta(scan_media_ctx_t *ctx, AVFormatContext *pFormatCtx, AVFrame *f
meta_duration->long_val = 0; meta_duration->long_val = 0;
} }
APPEND_META(doc, meta_duration) APPEND_META(doc, meta_duration)
}
if (pFormatCtx->bit_rate != 0) {
meta_line_t *meta_bitrate = malloc(sizeof(meta_line_t)); meta_line_t *meta_bitrate = malloc(sizeof(meta_line_t));
meta_bitrate->key = MetaMediaBitrate; meta_bitrate->key = MetaMediaBitrate;
meta_bitrate->long_val = pFormatCtx->bit_rate; meta_bitrate->long_val = pFormatCtx->bit_rate;
APPEND_META(doc, meta_bitrate) APPEND_META(doc, meta_bitrate)
} }
}
AVDictionaryEntry *tag = NULL; AVDictionaryEntry *tag = NULL;
if (is_video) { if (is_video) {
@ -577,7 +586,8 @@ void parse_media_format_ctx(scan_media_ctx_t *ctx, AVFormatContext *pFormatCtx,
int video_duration_in_seconds = (int) (pFormatCtx->duration / AV_TIME_BASE); int video_duration_in_seconds = (int) (pFormatCtx->duration / AV_TIME_BASE);
int thumbnails_to_generate = (IS_VIDEO(pFormatCtx) && stream->codecpar->codec_id != AV_CODEC_ID_GIF && video_duration_in_seconds >= 15) int thumbnails_to_generate = (IS_VIDEO(pFormatCtx) && stream->codecpar->codec_id != AV_CODEC_ID_GIF &&
video_duration_in_seconds >= 15)
// Limit to ~1 thumbnail every 7s // Limit to ~1 thumbnail every 7s
? MAX(MIN(ctx->tn_count, video_duration_in_seconds / 7 + 1), 1) + 1 ? MAX(MIN(ctx->tn_count, video_duration_in_seconds / 7 + 1), 1) + 1
: 1; : 1;