//////////////////////////////////////////////////////////////////////////////////////// //Document Ready //////////////////////////////////////////////////////////////////////////////////////// function execDocReady() { var pluginGroups = [ [ "../reference/lightblue4/docs/lib/widgster/widgster.js", "../reference/lightblue4/docs/lib/slimScroll/jquery.slimscroll.min.js", "../reference/light-blue/lib/vendor/jquery.ui.widget.js" ], [ "../reference/jquery-plugins/select2-4.0.2/dist/css/select2_lightblue4.css", "../reference/jquery-plugins/select2-4.0.2/dist/js/select2.min.js" ], [ "../reference/jquery-plugins/dataTables-1.10.16/media/css/jquery.dataTables_lightblue4.css", "../reference/jquery-plugins/dataTables-1.10.16/extensions/Responsive/css/responsive.dataTables_lightblue4.css", "../reference/jquery-plugins/dataTables-1.10.16/extensions/Select/css/select.dataTables_lightblue4.css", "../reference/jquery-plugins/dataTables-1.10.16/media/js/jquery.dataTables.min.js", "../reference/jquery-plugins/dataTables-1.10.16/extensions/Responsive/js/dataTables.responsive.min.js", "../reference/jquery-plugins/dataTables-1.10.16/extensions/Select/js/dataTables.select.min.js", "../reference/jquery-plugins/dataTables-1.10.16/extensions/RowGroup/js/dataTables.rowsGroup.min.js", "../reference/jquery-plugins/dataTables-1.10.16/extensions/Buttons/js/dataTables.buttons.min.js", "../reference/jquery-plugins/dataTables-1.10.16/extensions/Buttons/js/buttons.html5.js", "../reference/jquery-plugins/dataTables-1.10.16/extensions/Buttons/js/buttons.print.js", "../reference/jquery-plugins/dataTables-1.10.16/extensions/Buttons/js/jszip.min.js", "../reference/jquery-plugins/dataTables-1.10.16/extensions/Buttons/js/pdfmake.min.js", "../reference/jquery-plugins/dataTables-1.10.16/extensions/Buttons/js/vfs_fonts.js" ], ["../arms/js/common/table_new.js"] // 추가적인 플러그인 그룹들을 이곳에 추가하면 됩니다. ]; loadPluginGroupsParallelAndSequential(pluginGroups) .then(function () { console.log("모든 플러그인 로드 완료"); // 사이드 메뉴 색상 설정 $(".widget").widgster(); setSideMenu("sidebar_menu_security", "sidebar_menu_security_role"); var resetRoleForm = function () { $("#role_form").trigger("reset"); $("#btn_submit").removeClass("btn-success").addClass("btn-primary").text("Role 생성"); $("#btn_delete").addClass("hidden"); $("#users_in_role_table").table().reDraw([]); }; $("#role_table") .trigger($.Event("init.role_list")) .on("select.table", function (event, selectedData) { $("#btn_submit").removeClass("btn-primary").addClass("btn-success").text("Role 수정"); $("#btn_delete").removeClass("hidden"); $.ajax({ url: "/auth-admin/realms/master/role/" + selectedData.name + "/users", success: function (data) { var usersInRole = data.reduce(function (users, user) { return users.concat( $.extend(user, { createdTimestamp: new Date(user.createdTimestamp).toLocaleString() }) ); }, []); $("#users_in_role_table").table().reDraw(usersInRole); } }); var roleForm = $("#role_form"); var roleRepresentation = new FormData(roleForm[0]); roleRepresentation.keys().forEach(function (key) { roleForm.find("[name=" + key + "]").val(selectedData[key]); }); }) .on("deselect.table", function () { resetRoleForm(); }); $("#role_form").on("submit", function (event) { event.preventDefault(); var roleRepresentation = Object.fromEntries(new FormData(event.target)); var url = "/auth-admin/realms/master/role"; var type = "POST"; var selectedData = $("#role_table").table().getSelectedData(); if (selectedData) { url += "/" + selectedData.name; type = "PUT"; } $.ajax({ url: url, withCredentials: true, type: type, contentType: "application/json;charset=utf-8", data: JSON.stringify(roleRepresentation), success: function () { resetRoleForm(); $("#role_table").table().table.ajax.reload(); } }); return false; }); $("#btn_delete").on("click", function () { var selectedData = $("#role_table").table().getSelectedData(); if (selectedData) { $.ajax({ url: "/auth-admin/realms/master/role/" + selectedData.name, method: "DELETE", success: function () { resetRoleForm(); $("#role_table").table().table.ajax.reload(); } }); } }); $("#btn_cancel").on("click", function () { var selectedData = $("#role_table").table().getSelectedData(); if (selectedData) { var roleForm = $("#role_form"); var roleRepresentation = new FormData(roleForm[0]); roleRepresentation.keys().forEach(function (key) { roleForm.find("[name=" + key + "]").val(selectedData[key]); }); return; } $("#role_form").trigger("reset"); }); $("#users_in_role_table").trigger($.Event("init.user_list")); }) .catch(function () { console.error("플러그인 로드 중 오류 발생"); }); } +(function ($) { "use strict"; var columnList = [ { name: "name", title: "Role Name", data: "name", render: function (data) { return ![null, undefined, ""].includes(data) ? "" + data + "" : "N/A"; } }, { name: "description", title: "Description", data: "description", render: function (data) { return ![null, undefined, ""].includes(data) ? "" + data + "" : "N/A"; } } ]; $(document).on("init.role_list", function (event) { $(event.target).table({ columns: columnList, dom: "Blfrtip", buttons: [ { extend: "excel", charset: "UTF-8", bom: true, className: "btn btn-default btn-sm margin-bottom" } ], ajax: { url: "/auth-admin/realms/master/roles", dataSrc: function (json) { return json; } } }); }); })(jQuery); +(function ($) { "use strict"; var columnList = [ { name: "firstName", title: "성명", data: "firstName", render: function (data) { return ![null, undefined, ""].includes(data) ? "" + data + "" : "N/A"; } }, { name: "username", title: "ID", data: "username", render: function (data) { return ![null, undefined, ""].includes(data) ? "" + data + "" : "N/A"; } }, { name: "email", title: "Email", data: "email", render: function (data) { return ![null, undefined, ""].includes(data) ? "" + data + "" : "N/A"; } }, { name: "createdTimestamp", title: "Created Date", data: "createdTimestamp", render: function (data) { return ![null, undefined, ""].includes(data) ? "" + data + "" : "N/A"; } } ]; $(document).on("init.user_list", function (event) { $(event.target).table({ data: [], columns: columnList, dom: "Blfrtip", buttons: [ { extend: "excel", charset: "UTF-8", bom: true, className: "btn btn-default btn-sm margin-bottom" } ] }); }); })(jQuery);