Default external off and filter channels/backlink queries
Some checks failed
docker-build / build (push) Has been cancelled

This commit is contained in:
knight 2025-11-18 23:42:49 -05:00
parent 4c20329f36
commit c6b46edacc
3 changed files with 23 additions and 9 deletions

View File

@ -746,6 +746,8 @@ def create_app(config: AppConfig = CONFIG) -> Flask:
@app.route("/api/channels")
def channels():
include_external = request.args.get("external", default="0", type=str)
include_external = include_external.lower() not in {"0", "false", "no"}
base_channels_body = {
"size": 0,
"aggs": {
@ -762,6 +764,10 @@ def create_app(config: AppConfig = CONFIG) -> Flask:
}
},
}
if not include_external:
base_channels_body["query"] = {
"bool": {"must_not": [{"term": {"external_reference": True}}]}
}
def run_channels_request(field_name: str):
body = json.loads(json.dumps(base_channels_body)) # deep copy
@ -920,7 +926,7 @@ def create_app(config: AppConfig = CONFIG) -> Flask:
use_fuzzy = parse_flag("fuzzy", True)
use_phrase = parse_flag("phrase", True)
use_query_string = parse_flag("query_string", False)
include_external = parse_flag("external", True)
include_external = parse_flag("external", False)
if use_query_string:
use_exact = use_fuzzy = use_phrase = False
@ -1075,7 +1081,7 @@ def create_app(config: AppConfig = CONFIG) -> Flask:
use_exact = parse_flag("exact", True)
use_fuzzy = parse_flag("fuzzy", True)
use_phrase = parse_flag("phrase", True)
include_external = parse_flag("external", True)
include_external = parse_flag("external", False)
if use_query_string:
use_exact = use_fuzzy = use_phrase = False

View File

@ -141,7 +141,7 @@
fuzzyToggle.checked = parseBoolParam("fuzzy", true);
phraseToggle.checked = parseBoolParam("phrase", true);
if (externalToggle) {
externalToggle.checked = parseBoolParam("external", true);
externalToggle.checked = parseBoolParam("external", false);
}
queryToggle.checked = parseBoolParam("query_string", false);
applyQueryMode();
@ -281,7 +281,11 @@
});
if (!collected.length) return null;
const escaped = collected.map((id) => `"${escapeQueryValue(id)}"`);
return `${field}:(${escaped.join(" OR ")})`;
const variants = field.endsWith(".keyword")
? [field]
: [`${field}.keyword`, field];
const clauses = variants.map((fname) => `${fname}:(${escaped.join(" OR ")})`);
return clauses.length > 1 ? `(${clauses.join(" OR ")})` : clauses[0];
}
async function loadChannels() {
@ -290,7 +294,8 @@
return;
}
try {
const res = await fetch("/api/channels");
const includeExternal = externalToggle ? externalToggle.checked : false;
const res = await fetch(`/api/channels?external=${includeExternal ? "1" : "0"}`);
const data = await res.json();
channelMap.clear();
channelSelect.innerHTML = '<option value="">All Channels</option>';
@ -1198,7 +1203,7 @@ async function updateFrequencyChart(term, channels, year, queryMode, toggles = {
if (queryMode) {
params.set("query_string", "1");
}
const { exact = true, fuzzy = true, phrase = true, external = true } = toggles || {};
const { exact = true, fuzzy = true, phrase = true, external = false } = toggles || {};
params.set("exact", exact ? "1" : "0");
params.set("fuzzy", fuzzy ? "1" : "0");
params.set("phrase", phrase ? "1" : "0");
@ -1529,7 +1534,7 @@ async function updateFrequencyChart(term, channels, year, queryMode, toggles = {
let exact = !!exactToggle.checked;
let fuzzy = !!fuzzyToggle.checked;
let phrase = !!phraseToggle.checked;
const includeExternal = externalToggle ? externalToggle.checked : true;
const includeExternal = externalToggle ? externalToggle.checked : false;
if (queryMode) {
exact = false;
fuzzy = false;
@ -1608,7 +1613,10 @@ async function updateFrequencyChart(term, channels, year, queryMode, toggles = {
fuzzyToggle.addEventListener("change", () => { rememberToggleState(); runSearch(0); });
phraseToggle.addEventListener("change", () => { rememberToggleState(); runSearch(0); });
if (externalToggle) {
externalToggle.addEventListener("change", () => runSearch(0));
externalToggle.addEventListener("change", () => {
pendingChannelSelection = "";
loadChannels().then(() => runSearch(0));
});
}
if (queryToggle) {
queryToggle.addEventListener("change", () => { applyQueryMode(); runSearch(0); });

View File

@ -82,7 +82,7 @@
</div>
<div class="toggle-item">
<input type="checkbox" id="externalToggle" checked />
<input type="checkbox" id="externalToggle" />
<label for="externalToggle">External</label>
<span class="toggle-help">Include externally referenced items.</span>
</div>