//////////////////////////////////////////////////////////////////////////////////////// //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/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" ], [ "../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/jquery-match-height-0.7.2/dist/jquery.matchHeight-min.js", "../arms/js/common/table_new.js" ] // 추가적인 플러그인 그룹들을 이곳에 추가하면 됩니다. ]; loadPluginGroupsParallelAndSequential(pluginGroups) .then(function () { console.log("모든 플러그인 로드 완료"); // 사이드 메뉴 색상 설정 $(".widget").widgster(); setSideMenu("sidebar_menu_security", "sidebar_menu_security_permission"); var equals = function (obj1, obj2) { var obj1Sort = Object.keys(obj1) .sort() .reduce(function (obj, key) { return (obj[key] = obj1[key]), obj; }, {}); var obj2Sort = Object.keys(obj2) .sort() .reduce(function (obj, key) { return (obj[key] = obj2[key]), obj; }, {}); return Object.entries(obj1Sort).toString() === Object.entries(obj2Sort).toString(); }; var render = function (data) { return ![null, undefined, ""].includes(data) ? "" + data + "" : "N/A"; }; var $targets = [ { table: $("#role_table"), cancelBtn: $("#role_btn_cancel"), submitBtn: $("#role_btn_submit"), nameColumn: { name: "name", title: "Role Name", data: "name", render: render }, key: "name", getUrl: "/auth-admin/realms/master/roles", updateUrl: "/auth-admin/realms/master/role/" }, { table: $("#user_table"), cancelBtn: $("#user_btn_cancel"), submitBtn: $("#user_btn_submit"), nameColumn: { name: "username", title: "User Name", data: "username", render: render }, key: "id", getUrl: "/auth-admin/realms/master/access-control/users", updateUrl: "/auth-admin/realms/master/user/" }, { table: $("#group_table"), cancelBtn: $("#group_btn_cancel"), submitBtn: $("#group_btn_submit"), nameColumn: { name: "path", title: "Group Name", data: "path", render: render }, key: "id", getUrl: "/auth-admin/realms/master/access-control/groups", updateUrl: "/auth-admin/realms/master/groups/" } ]; $targets.forEach(function ($target) { var $table = $target.table; var $cancelBtn = $target.cancelBtn; var $submitBtn = $target.submitBtn; $table .trigger( $.Event("init.access_control_list", { ajax: { url: $target.getUrl, dataSrc: function (datas) { var attributes = {}; var result = datas.map(function (data) { attributes[data.id] = $.extend({}, data.attributes); if (!data.attributes) { data.attributes = {}; } return data; }); $table.data("attributes", attributes); return result; } }, nameColumn: $target.nameColumn }) ) .on("click", "label.btn", function (event) { var $btn = $(event.target).closest(".btn"); var $row = $btn.closest("tr"); var key = $btn.find("input[type='checkbox']").attr("name"); var data = $table.table().getData($row); if (data.attributes.hasOwnProperty(key)) { delete data.attributes[key]; } else { data.attributes[key] = ["on"]; } }); $cancelBtn.on("click", function () { $table.table().table.ajax.reload(); }); $submitBtn.on("click", function () { var attributes = $table.data("attributes"); $table .table() .getDatas() .forEach(function (data) { if (!equals(attributes[data.id], data.attributes)) { $.ajax({ url: $target.updateUrl + data[$target.key], type: "PUT", contentType: "application/json", data: JSON.stringify(data) }); attributes[data.id] = $.extend({}, $target.attributes); $table.data("attributes", attributes); } }); }); }); }) .catch(function (e) { console.error("플러그인 로드 중 오류 발생"); console.error(e); }); } +(function ($) { "use strict"; var render = function (data, name, text) { return $("
", { class: "btn-group", "data-toggle": "buttons", role: "group" }) .append( $("