More work on the new people search
This commit is contained in:
parent
9cd17bd8e6
commit
9a41a5f8aa
6 changed files with 337 additions and 121 deletions
105
static/search.js
105
static/search.js
|
|
@ -5,13 +5,13 @@ $(document).ready(function() {
|
|||
|
||||
$("#advanced").on("click", function() {
|
||||
if ($(this).data("state") === "true") {
|
||||
$(this).find("i").removeClass("bi-chevron-double-up");
|
||||
$(this).find("i").addClass("bi-chevron-double-down");
|
||||
$(this).find("i").removeClass("bi-arrow-up");
|
||||
$(this).find("i").addClass("bi-arrow-down");
|
||||
$("#advanced-section").addClass("d-none");
|
||||
$(this).data("state", "false");
|
||||
} else {
|
||||
$(this).find("i").removeClass("bi-chevron-double-down");
|
||||
$(this).find("i").addClass("bi-chevron-double-up");
|
||||
$(this).find("i").removeClass("bi-arrow-down");
|
||||
$(this).find("i").addClass("bi-arrow-up");
|
||||
$("#advanced-section").removeClass("d-none");
|
||||
$(this).data("state", "true");
|
||||
}
|
||||
|
|
@ -22,10 +22,7 @@ $(document).ready(function() {
|
|||
var searchData = JSON.parse(json);
|
||||
for (const [key, value] of Object.entries(searchData)) {
|
||||
if (key === "advanced") {
|
||||
if (value) {
|
||||
$("#advanced").trigger("click");
|
||||
}
|
||||
|
||||
if (value) $("#advanced").trigger("click");
|
||||
continue;
|
||||
}
|
||||
|
||||
|
|
@ -34,16 +31,90 @@ $(document).ready(function() {
|
|||
continue
|
||||
}
|
||||
|
||||
if (typeof value === "boolean" && value) {
|
||||
console.log(key, value, typeof(value));
|
||||
$("[data-search-field=" + key + "]").prop("checked", true);
|
||||
if (typeof value === "boolean") {
|
||||
$("[data-search-field=" + key + "]").prop("checked", value);
|
||||
} else {
|
||||
$("[data-search-field=" + key + "]").val(value);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
createFieldSelection();
|
||||
$("body").on("change", ".search-fields-count .field-select", function() {
|
||||
var lastfield = $(this).attr("data-last-field");
|
||||
var field = $(this).val();
|
||||
if (field == "") {
|
||||
$(this).parents(".row").remove();
|
||||
return;
|
||||
}
|
||||
|
||||
if (lastfield.length === 0) {
|
||||
createFieldSelection();
|
||||
}
|
||||
$(this).attr("data-last-field", field);
|
||||
|
||||
$(this).parents(".row").find(".end-col").find("input").remove();
|
||||
$(this).parents(".row").find(".end-col").find("select").remove();
|
||||
|
||||
$(elem).parents(".row").find(".end-col").append($("<input>", {
|
||||
class: "form-control",
|
||||
type: "text",
|
||||
disabled: true,
|
||||
}));
|
||||
|
||||
var elem = $(this);
|
||||
$.getJSON("/fields/" + field, function(data) {
|
||||
$(this).parents(".row").find(".end-col").find("input").remove();
|
||||
|
||||
if (data.FieldType === "list") {
|
||||
var select = $("<select>", {
|
||||
class: "form-select",
|
||||
"data-optional-field": field
|
||||
});
|
||||
$(elem).parents(".row").find(".end-col").append(select);
|
||||
|
||||
for (const [_, value] of Object.entries(data.List.ListItems)) {
|
||||
$(select).append($("<option>", {
|
||||
value: value.ID,
|
||||
text: value.Value
|
||||
}));
|
||||
}
|
||||
} else if (data.FieldType === "number") {
|
||||
$(elem).parents(".row").find(".end-col").append($("<input>", {
|
||||
class: "form-control",
|
||||
type: "number",
|
||||
"data-optional-field": field
|
||||
}));
|
||||
} else if (data.FieldType === "date") {
|
||||
$(elem).parents(".row").find(".end-col").append($("<input>", {
|
||||
class: "form-control",
|
||||
type: "date",
|
||||
"data-optional-field": field
|
||||
}));
|
||||
} else {
|
||||
$(elem).parents(".row").find(".end-col").append($("<input>", {
|
||||
class: "form-control",
|
||||
type: "text",
|
||||
"data-optional-field": field
|
||||
}));
|
||||
}
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
function createFieldSelection() {
|
||||
const uuid = crypto.randomUUID();
|
||||
|
||||
var elem = $("#search-fields-model").clone().appendTo("#search-fields");
|
||||
$(elem).attr("id", "search-field-" + uuid);
|
||||
//$(elem).find(".start-col").find("label").attr("for", "search-field-field-" + uuid);
|
||||
//$(elem).find(".start-col").find("select").attr("id", "search-field-field-" + uuid);
|
||||
//$(elem).find(".end-col").find("label").attr("for", "search-field-value-" + uuid);
|
||||
//$(elem).find(".end-col").find("input").attr("id", "search-field-value-" + uuid);
|
||||
$(elem).removeClass("d-none");
|
||||
$(elem).addClass("search-fields-count");
|
||||
}
|
||||
|
||||
function search() {
|
||||
var advancedSearch = ($("#advanced").data("state") === "true");
|
||||
var searchData = {
|
||||
|
|
@ -66,7 +137,17 @@ function search() {
|
|||
searchData[index] = value;
|
||||
});
|
||||
|
||||
fields = {}
|
||||
$("[data-optional-field]:not(:disabled)").each(function() {
|
||||
var index = $(this).attr("data-optional-field");
|
||||
var value = $(this).val();
|
||||
|
||||
fields[index] = value;
|
||||
});
|
||||
searchData["fields"] = fields;
|
||||
|
||||
var json = JSON.stringify(searchData);
|
||||
$("#search-json").val(json);
|
||||
$("#search-form").submit();
|
||||
console.log(searchData);
|
||||
//$("#search-form").submit();
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue