Default external off and filter channels/backlink queries
Some checks failed
docker-build / build (push) Has been cancelled
Some checks failed
docker-build / build (push) Has been cancelled
This commit is contained in:
parent
4c20329f36
commit
c6b46edacc
@ -746,6 +746,8 @@ def create_app(config: AppConfig = CONFIG) -> Flask:
|
|||||||
|
|
||||||
@app.route("/api/channels")
|
@app.route("/api/channels")
|
||||||
def 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 = {
|
base_channels_body = {
|
||||||
"size": 0,
|
"size": 0,
|
||||||
"aggs": {
|
"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):
|
def run_channels_request(field_name: str):
|
||||||
body = json.loads(json.dumps(base_channels_body)) # deep copy
|
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_fuzzy = parse_flag("fuzzy", True)
|
||||||
use_phrase = parse_flag("phrase", True)
|
use_phrase = parse_flag("phrase", True)
|
||||||
use_query_string = parse_flag("query_string", False)
|
use_query_string = parse_flag("query_string", False)
|
||||||
include_external = parse_flag("external", True)
|
include_external = parse_flag("external", False)
|
||||||
if use_query_string:
|
if use_query_string:
|
||||||
use_exact = use_fuzzy = use_phrase = False
|
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_exact = parse_flag("exact", True)
|
||||||
use_fuzzy = parse_flag("fuzzy", True)
|
use_fuzzy = parse_flag("fuzzy", True)
|
||||||
use_phrase = parse_flag("phrase", True)
|
use_phrase = parse_flag("phrase", True)
|
||||||
include_external = parse_flag("external", True)
|
include_external = parse_flag("external", False)
|
||||||
if use_query_string:
|
if use_query_string:
|
||||||
use_exact = use_fuzzy = use_phrase = False
|
use_exact = use_fuzzy = use_phrase = False
|
||||||
|
|
||||||
|
|||||||
@ -141,7 +141,7 @@
|
|||||||
fuzzyToggle.checked = parseBoolParam("fuzzy", true);
|
fuzzyToggle.checked = parseBoolParam("fuzzy", true);
|
||||||
phraseToggle.checked = parseBoolParam("phrase", true);
|
phraseToggle.checked = parseBoolParam("phrase", true);
|
||||||
if (externalToggle) {
|
if (externalToggle) {
|
||||||
externalToggle.checked = parseBoolParam("external", true);
|
externalToggle.checked = parseBoolParam("external", false);
|
||||||
}
|
}
|
||||||
queryToggle.checked = parseBoolParam("query_string", false);
|
queryToggle.checked = parseBoolParam("query_string", false);
|
||||||
applyQueryMode();
|
applyQueryMode();
|
||||||
@ -281,7 +281,11 @@
|
|||||||
});
|
});
|
||||||
if (!collected.length) return null;
|
if (!collected.length) return null;
|
||||||
const escaped = collected.map((id) => `"${escapeQueryValue(id)}"`);
|
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() {
|
async function loadChannels() {
|
||||||
@ -290,7 +294,8 @@
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
try {
|
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();
|
const data = await res.json();
|
||||||
channelMap.clear();
|
channelMap.clear();
|
||||||
channelSelect.innerHTML = '<option value="">All Channels</option>';
|
channelSelect.innerHTML = '<option value="">All Channels</option>';
|
||||||
@ -1198,7 +1203,7 @@ async function updateFrequencyChart(term, channels, year, queryMode, toggles = {
|
|||||||
if (queryMode) {
|
if (queryMode) {
|
||||||
params.set("query_string", "1");
|
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("exact", exact ? "1" : "0");
|
||||||
params.set("fuzzy", fuzzy ? "1" : "0");
|
params.set("fuzzy", fuzzy ? "1" : "0");
|
||||||
params.set("phrase", phrase ? "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 exact = !!exactToggle.checked;
|
||||||
let fuzzy = !!fuzzyToggle.checked;
|
let fuzzy = !!fuzzyToggle.checked;
|
||||||
let phrase = !!phraseToggle.checked;
|
let phrase = !!phraseToggle.checked;
|
||||||
const includeExternal = externalToggle ? externalToggle.checked : true;
|
const includeExternal = externalToggle ? externalToggle.checked : false;
|
||||||
if (queryMode) {
|
if (queryMode) {
|
||||||
exact = false;
|
exact = false;
|
||||||
fuzzy = false;
|
fuzzy = false;
|
||||||
@ -1608,7 +1613,10 @@ async function updateFrequencyChart(term, channels, year, queryMode, toggles = {
|
|||||||
fuzzyToggle.addEventListener("change", () => { rememberToggleState(); runSearch(0); });
|
fuzzyToggle.addEventListener("change", () => { rememberToggleState(); runSearch(0); });
|
||||||
phraseToggle.addEventListener("change", () => { rememberToggleState(); runSearch(0); });
|
phraseToggle.addEventListener("change", () => { rememberToggleState(); runSearch(0); });
|
||||||
if (externalToggle) {
|
if (externalToggle) {
|
||||||
externalToggle.addEventListener("change", () => runSearch(0));
|
externalToggle.addEventListener("change", () => {
|
||||||
|
pendingChannelSelection = "";
|
||||||
|
loadChannels().then(() => runSearch(0));
|
||||||
|
});
|
||||||
}
|
}
|
||||||
if (queryToggle) {
|
if (queryToggle) {
|
||||||
queryToggle.addEventListener("change", () => { applyQueryMode(); runSearch(0); });
|
queryToggle.addEventListener("change", () => { applyQueryMode(); runSearch(0); });
|
||||||
|
|||||||
@ -82,7 +82,7 @@
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="toggle-item">
|
<div class="toggle-item">
|
||||||
<input type="checkbox" id="externalToggle" checked />
|
<input type="checkbox" id="externalToggle" />
|
||||||
<label for="externalToggle">External</label>
|
<label for="externalToggle">External</label>
|
||||||
<span class="toggle-help">Include externally referenced items.</span>
|
<span class="toggle-help">Include externally referenced items.</span>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user