(function ($) {
"use strict";
$(document).on("init.editor", function (event) {
var target = event.target;
var editor;
CKEDITOR.replace(target.id, {
contentsCss: ["../reference/bootstrap-3.4.1/css/bootstrap.min.css", "./css/ckeditor.css"],
extraPlugins: ["drawio", "requirement", "linkeddoc", "accordion", "fixed"],
allowedContent: true,
removePlugins: ["resize", "image"],
autoGrow_minHeight: 650,
autoGrow_bottomSpace: 50,
autoGrow_onStartup: true,
clipboard_handleImages: false,
image2_alignClasses: ["image-left", "image-center", "image-right"],
image2_captionedClass: "image-captioned",
uploadUrl: "/auth-user/api/arms/wiki/imageUpload.do",
readOnly: true,
on: {
instanceReady: function (event) {
editor = event.editor;
var docHead = editor.document.getHead();
function loadScript(src, callback) {
var script = new CKEDITOR.dom.element("script");
script.setAttribute("type", "text/javascript");
script.setAttribute("src", src);
if (callback) {
script.on("load", callback);
}
docHead.append(script);
}
loadScript("../reference/lightblue4/docs/lib/jquery/dist/jquery.min.js", function () {
loadScript("../reference/bootstrap-3.4.1/js/bootstrap.min.js");
});
},
dataReady: function (event) {
var iframeWindow = event.editor.document.getWindow().$;
var $ = iframeWindow.jQuery;
if ($) {
var $body = $(event.editor.document.getBody().$);
$body.on("click.bs.collapse.data-api", '[data-toggle="collapse"]', function (e) {
var $this = $(this);
if (!$this.attr("data-target")) e.preventDefault();
var href;
var $target = $(
$this.attr("data-target") || ((href = $this.attr("href")) && href.replace(/.*(?=#[^\s]+$)/, ""))
);
var data = $target.data("bs.collapse");
var option = data ? "toggle" : $this.data();
if (!$target.hasClass("in")) {
$.ajax({
type: "GET",
url: "/auth-user/api/arms/wiki/" + $target.attr("id") + "/getWiki.do",
contentType: "application/json;charset=UTF-8",
dataType: "json",
success: function (data) {
$target.find(".panel-body").html(data.contents);
}
});
}
$.fn.collapse.call($target, option);
});
}
buildTableOfContents(event.editor);
},
fileUploadResponse: function (event) {
event.stop();
var xhr = event.data.fileLoader.xhr;
var response = JSON.parse(xhr.responseText);
if (Array.isArray(response)) {
response = response[0];
}
if (response.url) {
event.data.url = response.url;
event.data.alt = response.fileName || "";
} else {
event.data.message = response.error || "업로드 실패";
event.cancel();
}
},
saveDiagram: function (diagram) {
var base64ToBlob = function (base64) {
var parts = base64.split(";base64,");
var contentType = parts[0].split(":")[1];
var raw = window.atob(parts[1]);
var rawLength = raw.length;
var uInt8Array = new Uint8Array(rawLength);
for (var i = 0; i < rawLength; i++) {
uInt8Array[i] = raw.charCodeAt(i);
}
return new Blob([uInt8Array], { type: contentType });
};
var imageBlob = base64ToBlob(diagram.data.img);
var formData = new FormData();
formData.append("file", imageBlob, getWikiId() + "_" + "diagram.png");
$.ajax({
url: "/auth-user/api/arms/wiki/imageUpload.do",
type: "POST",
data: formData,
processData: false,
contentType: false,
success: function (data) {
var image = '';
editor.insertHtml(image);
editor.widgets.checkWidgets();
}
});
},
editDiagram: function (imgSrc) {
$.ajax({
url: imgSrc.data,
type: "GET",
xhrFields: {
responseType: "blob"
},
success: function (data) {
var reader = new FileReader();
reader.onloadend = function () {
var base64data = reader.result;
editor.execCommand("drawio", { src: base64data });
};
reader.readAsDataURL(data);
}
});
},
createRequirement: function (requirement) {
var requirementModal = $("#requirement_modal");
requirementModal.modal("show");
requirementModal.on("shown.bs.modal", function () {
var selectedPdServiceText = $("#selected_pdService").select2("data")[0].text;
var datepickerOption = {
theme: "dark",
lang: "kr",
format: "Y/m/d",
formatDate: "Y/m/d",
value: null,
scrollInput: false
};
$("#addview_req_pdservice_name").val(selectedPdServiceText);
$("#add_multi_version").multipleSelect("uncheckAll");
$("#addview_req_title").val(requirement.data.reqTitle);
$("#addview_req_writer").val("[" + userName + "]" + " - " + userID);
$("#addview_req_reviewers").val(null).trigger("change");
$("#addview_req_start_date").val(null);
$("#addview_req_end_date").val(null);
$("#addview_req_start_date").datetimepicker(datepickerOption);
$("#addview_req_end_date").datetimepicker(datepickerOption);
$("#addview_req_priority").children(".btn.active").removeClass("active");
$("#addview_req_urgency").children(".btn.active").removeClass("active");
$("#addview_req_importance").children(".btn.active").removeClass("active");
$("#addview_req_difficulty").children(".btn.active").removeClass("active");
$("#addview_req_state").children(".btn.active").removeClass("active");
// ------------------------- drawio start --------------------------------//
var selectedProductServiceId = $("#selected_pdService").val();
if (
localStorage.getItem("req-create-drawio-" + selectedProductServiceId) &&
localStorage.getItem("req-create-drawio-time-" + selectedProductServiceId)
) {
changeBtnText("#btn_modal_req_add_drawio", "drawio 등록 완료");
changeBtnText(
"#modal_req_add_drawio_time",
localStorage.getItem("req-create-drawio-time-" + selectedProductServiceId)
);
}
if (localStorage.getItem("req-create-drawio-image-raw-" + selectedProductServiceId)) {
setDrawioImage(
"req-create-drawio-image-raw-" + selectedProductServiceId,
localStorage.getItem("req-create-drawio-image-raw-" + selectedProductServiceId),
"create"
);
}
// ------------------------- drawio end --------------------------------//
// ------------------------- drawdb start --------------------------------//
selectByIndexedDB("create-reqadd-" + selectedProductServiceId)
.then((result) => {
if (result) {
var armsThumbnail = result.armsThumbnail;
var lastModified = result.lastModified;
var seoulTime = convertToSeoulTimeWithMeridiem(lastModified);
setDrawdbImage("create-reqadd-" + selectedProductServiceId, armsThumbnail, "create");
changeBtnText("#btn_modal_req_add_drawdb", "drawdb 등록 완료");
changeBtnText("#modal_req_add_drawdb_time", seoulTime);
}
})
.catch((e) => {
console.log("REQADD :: create :: selectByIndexedDB :: 조회 실패", e);
});
// ------------------------- drawdb end --------------------------------//
CKEDITOR.instances.add_tabmodal_editor.setData($("