").addClass("hs-dropdown-menu hidden opacity-0 hs-dropdown-open:opacity-100 transition-[opacity,margin] overflow-hidden z-10 w-fit max-w-64 border p-2 rounded-md bg-gray-200 dark:bg-neutral-700 border-gray-300 dark:border-neutral-600");
dropdown.append(dropdownBtn.text(`+${data.length}`));
data.forEach(channelId => {
channelName = "# " + channels.find(c => c.id === channelId).name;
dropdownMenu.append(tag.clone().text(channelName));
});
dropdown.append(dropdownMenu);
wrapper.append(dropdown);
return wrapper.get(0);
}
},
{
// Filters
target: 4,
data: "filters",
orderable: false,
searchable: false,
render: (data, type, row) => {
return `
`;
}
},
{
// Style
target: 5,
style: "style",
orderable: false,
searchable: false,
render: (data, type, row) => {
return `
`;
}
},
{
// Created At
target: 6,
data: "created_at",
orderable: true,
searchable: true,
render: data => {
return `
${formatTimestamp(data)}
|
`;
}
}
,
{
// Status
target: 7,
data: "active",
orderable: true,
searchable: true,
render: (data, type, row) => {
if (!row.active) {
return `
`;
}
return `
`;
}
}
]
})
table.dataTable
.on("select", onTableSelectChange)
.on("deselect", onTableSelectChange)
.on("draw", onTableSelectChange);
}
// Ensure the datatable recognises when all rows are selected, otherwise rows are only visually selected
$("#selectAllBox").on("change", function() {
this.checked ? table.dataTable.rows().select() : table.dataTable.rows().deselect();
});
const onTableSelectChange = () => {
const selectedRowCount = table.dataTable.rows({ selected: true }).count();
$("#deleteRowsBtn").prop("disabled", selectedRowCount === 0);
$(".rows-selected-count-js").text(selectedRowCount);
const $elem = $(".rows-selected-count-js.zero-empty-js");
selectedRowCount === 0 ? $elem.hide() : $elem.show();
}
$("#deleteRowsBtn").on("click", async () => {
const rowIds = table.dataTable.rows({ selected: true }).data().toArray().map(row => row.id);
console.log(JSON.stringify(rowIds))
await $.ajax({
url: `/guild/${guildId}/subscriptions/api`,
method: "delete",
dataType: "json",
data: { ids: rowIds },
success: () => {
table.dataTable.draw();
table.dataTable.rows().deselect();
},
error: error => {
alert(typeof error === "object" ? JSON.stringify(error, null, 4) : error);
}
});
});
$(window).ready(() => {
setTimeout(defineTable, 500);
});
$("input[name='filterActive']").on("change", () => {
table.dataTable.draw();
})
const openSubForm = () => {
$("#subForm").removeClass("submitted");
$("#formPublishedThreshold").val(new Date().toISOString().slice(0, 16));
$("#formActive").prop("checked", true);
HSOverlay.open($("#subModal").get(0))
}
const closeSubForm = () => {
$("#subForm").removeClass("submitted");
HSOverlay.close($("#subModal").get(0));
}
$(document).on("click", ".openSubModal-js", openSubForm);
const submitForm = async event => {
event.preventDefault();
const form = $("#subForm").get(0);
$(form).addClass("submitted");
if (!form.checkValidity()) { return; }
await $.ajax({
url: `/guild/${guildId}/subscriptions/api`,
method: "post",
dataType: "json",
data: $(event.target).serializeArray(),
success: () => {
table.dataTable.draw();
closeSubForm();
},
error: error => {
alert(error);
}
});
}
$("#subForm").on("submit", submitForm);