Built files from Bizgaze WebServer
選択できるのは25トピックまでです。 トピックは、先頭が英数字で、英数字とダッシュ('-')を使用した35文字以内のものにしてください。

texteditor.component.js 12KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189
  1. var Unibase;
  2. (function (Unibase) {
  3. let Forms;
  4. (function (Forms) {
  5. let Controls;
  6. (function (Controls) {
  7. class TextEditor extends Unibase.Platform.Core.BaseComponent {
  8. init(formpropertyid, prop, callback) {
  9. var instance = new TextEditor();
  10. var container = "control-container-" + formpropertyid;
  11. instance.loadControlSettings(prop.ControlJsonText, prop.FormPropertyId);
  12. var summernoteid = $("#" + container).find(".txtSummernote_" + prop.DocPropertyName).attr('id');
  13. var data = null;
  14. if (prop.ControlJsonText != "") {
  15. data = JSON.parse(prop.ControlJsonText);
  16. }
  17. if (data != null) {
  18. Unibase.Platform.Analytics.Managers.ReportManager.Instance().getHeaderColumns(data.TokenReportId).then(function (response) {
  19. var Data = new Array();
  20. for (let i = 0; i < response.length; i++) {
  21. var result = response[i].title;
  22. Data.push(result);
  23. }
  24. var placeholder = $("#summernote_" + prop.FormPropertyId).data('placeholder');
  25. var _fileCacheHelper = instance.fileCacheHelper;
  26. _fileCacheHelper.loadJsFile("libs/summernote/summernote.min.js", function () {
  27. _fileCacheHelper.loadCssFile("libs/summernote/summernote.css", function () {
  28. instance.loadSummernote(prop.FormPropertyId, placeholder, Data);
  29. });
  30. });
  31. });
  32. }
  33. else {
  34. var placeholder = $("#summernote_" + prop.FormPropertyId).data('placeholder');
  35. var _fileCacheHelper = instance.fileCacheHelper;
  36. _fileCacheHelper.loadJsFile("libs/summernote/summernote.min.js", function () {
  37. _fileCacheHelper.loadCssFile("libs/summernote/summernote.css", function () {
  38. instance.loadSummernote(prop.FormPropertyId, placeholder, Unibase.Data);
  39. });
  40. });
  41. }
  42. $(".divCustomProperties_" + prop.DocPropertyName).find('.note-editor').find('.note-eventButton').addClass('hidden');
  43. $(".divCustomProperties_" + prop.DocPropertyName).find(".note-editable").attr("id", "note-editable" + prop.DocPropertyName);
  44. if (prop.ControlJsonText != "") {
  45. data = JSON.parse(prop.ControlJsonText);
  46. }
  47. if (data != "" && data != null) {
  48. if (data.tokenreportid != 0) {
  49. $(".divCustomProperties_" + prop.DocPropertyName).find('.note-editor').find('.note-eventButton').removeClass('hidden');
  50. $("#SummerNoteToken_" + prop.DocPropertyName).change(function () {
  51. var tokentext = $("#SummerNoteToken_" + prop.DocPropertyName + " option:selected").text();
  52. var tokenlisttext = "{{" + tokentext + "}}";
  53. $(".summernote_" + prop.DocPropertyName).summernote('editor.restoreRange');
  54. $(".summernote_" + prop.DocPropertyName).summernote('editor.focus');
  55. $(".summernote_" + prop.DocPropertyName).summernote('editor.insertText', tokenlisttext);
  56. $("#SummerNoteToken_" + prop.DocPropertyName).text("Tokens");
  57. });
  58. $("#SummerNoteToken_" + prop.DocPropertyName).css("height", "35").css("width", "102").css("padding-right", "0").css("padding-top", "1");
  59. $("#SummerNoteToken_" + prop.DocPropertyName).parent().css("height", "40").css("width", "200").css("padding-left", "-10px").css("padding-top", "-10px").css("margin-top", "-2px");
  60. $("#SummerNoteToken_" + prop.DocPropertyName).parent().parent().css("height", "35").css("padding", "0").css("background-color", "transparent");
  61. $('.select2-container--default').css('width', '100%');
  62. }
  63. else {
  64. $(".divCustomProperties_" + prop.DocPropertyName).find('.note-editor').find('.note-eventButton').addClass('hidden');
  65. }
  66. }
  67. else {
  68. $(".divCustomProperties_" + prop.DocPropertyName).find('.note-editor').find('.note-eventButton').addClass('hidden');
  69. }
  70. if (callback != null)
  71. callback();
  72. }
  73. loadSummernote(FormPropertyId, Placeholder, Data) {
  74. $(".summernote_" + FormPropertyId).summernote({
  75. height: 100,
  76. minHeight: null,
  77. maxHeight: null,
  78. placeholder: Placeholder,
  79. disableDragAndDrop: true,
  80. codemirror: {
  81. mode: 'text/html',
  82. lineNumbers: true
  83. },
  84. toolbar: [
  85. ['font', ['bold', 'italic', 'underline']],
  86. ['color', ['color']],
  87. ['view', ['fullscreen', 'codeview', 'help']],
  88. ['table', ['table']],
  89. ],
  90. hint: {
  91. match: /\B[@!](\w*)$/,
  92. search: function (keyword, callback) {
  93. callback($.grep(Data, function (i) {
  94. var user = i;
  95. return user.indexOf(keyword) === 0;
  96. }));
  97. },
  98. content: function (i) {
  99. var user = i;
  100. return $('<span>@' + user + '</span>')[0];
  101. }
  102. }
  103. });
  104. $(".note-editor").css("z-index", "0");
  105. }
  106. loadControl(containerid, prop) {
  107. var regExpr = "";
  108. var ErrMsg = "";
  109. var validationlist = prop.Validations;
  110. if (validationlist != null) {
  111. for (var i = 0; i < validationlist.length; i++) {
  112. regExpr += validationlist[i].RegularExp + '||';
  113. ErrMsg += validationlist[i].ErrorMessage + '||';
  114. }
  115. }
  116. var Isrequired = prop.IsRequired != true ? 'hidden' : '';
  117. var required = prop.IsRequired != true ? '' : 'required';
  118. var reqMark = prop.IsRequired != true ? '' : '*';
  119. var CurrentStageId = $("#hf_" + $("#hfLayout_InstalledPageId").val() + "_StageId").val();
  120. if (prop.StagesForRequired != null && prop.StagesForRequired != "") {
  121. var StagesForRequired = prop.StagesForRequired.split('|');
  122. Isrequired = StagesForRequired.find(x => x == CurrentStageId) ? '' : 'hidden';
  123. required = StagesForRequired.find(x => x == CurrentStageId) ? 'required' : '';
  124. reqMark = StagesForRequired.find(x => x == CurrentStageId) ? '*' : '';
  125. }
  126. var isCodeView = "false";
  127. var propSettings = prop.PropertySettings.find(x => x.ControlPropertyName == "IsCodeView");
  128. if (propSettings != null || propSettings != undefined) {
  129. if (propSettings.ControlPropertyValue == "true") {
  130. isCodeView = "true";
  131. }
  132. }
  133. const { helpTooltipHtml, helpTextHtml } = Unibase.Platform.Forms.Components.FormViewer.Instance().getControlHelpHtml(prop);
  134. var html = '<div id="div" class="TextEditor"><input type="hidden" id="txthdn_' + prop.FormPropertyId + '" data-event="Unibase.Forms.Controls.TextEditor.Instance().getobj(' + prop.FormPropertyId + ',\'' + isCodeView + '\');" class="TextEditor value-control" data-iscodeview="' + isCodeView + '">' +
  135. '<span class="text-danger ' + Isrequired + '" id = "spnIsRequired_' + prop.DocPropertyName + '" ></span >' +
  136. '<div class="type-control summernote_' + prop.DocPropertyName + ' summernote_' + prop.FormPropertyId + ' ' + required + '" style="display: block;" id="summernote_' + prop.FormPropertyId + '" data-propdoctypename="' + prop.DocPropertyName + '" data-required="' + prop.IsRequired + '" data-regularexp="" data-validatemsg="" placeholder = "' + prop.Placeholder + '" data-placeholder="' + prop.Placeholder + '" data-label="' + prop.LabelName + '" data-iscodeview="' + isCodeView + '"></div>' +
  137. '<label for="Validation" id="lblValidation"></label></div>' + helpTooltipHtml + helpTextHtml;
  138. if (isCodeView == "false") {
  139. html = '<div class=""><input type="hidden" id="txthdn_' + prop.FormPropertyId + '" class="TextEditor" data-iscodeview="' + isCodeView + '">' +
  140. '<div class="input-group">' +
  141. '<textarea id="textarea_' + prop.FormPropertyId + '" class="type-control value-control floating-label-control" rows="5" style="width:100%;" placeholder="' + prop.Placeholder + '" data-placeholder="' + prop.Placeholder + '" data-label="' + prop.Placeholder + '" data-regularexp="' + regExpr + '" data-validatemsg="' + ErrMsg + '" data-event="Unibase.Forms.Controls.TextEditor.Instance().getobj(' + prop.FormPropertyId + ',\'' + isCodeView + '\');" ></textarea>' +
  142. '</div></div>' + helpTooltipHtml + helpTextHtml;
  143. }
  144. $("#" + containerid).html(html);
  145. $("#summernote_" + prop.FormPropertyId).on("summernote.change", function (e) {
  146. var val = $("#control-container-" + prop.FormPropertyId).find('.note-editable').text();
  147. });
  148. }
  149. loadControlSettings(controlsettingjson, formpropertyid) {
  150. return null;
  151. }
  152. loadPropertySettings(propertysettings, formpropertyid) {
  153. return null;
  154. }
  155. bindEditFormDetails(formpropertyid, propval, DocPropertyName) {
  156. var iscodeview = $("#txthdn_" + formpropertyid).data("iscodeview");
  157. if (iscodeview == false) {
  158. $("#textarea_" + formpropertyid).val(unescape(propval));
  159. }
  160. else {
  161. var decodedData = unescape(propval);
  162. var decode = HtmlHelper.getHelper().decode(decodedData);
  163. $("#summernote_" + formpropertyid).summernote('code', decode);
  164. }
  165. }
  166. getobj(formPropertyId, isCodeView) {
  167. var finalval = "";
  168. if (isCodeView == "false") {
  169. finalval = $("#textarea_" + formPropertyId).val().toString();
  170. finalval = finalval.trim();
  171. }
  172. else {
  173. var code = $("#summernote_" + formPropertyId).summernote('code');
  174. finalval = HtmlHelper.getHelper().encode(code);
  175. finalval = finalval.trim();
  176. }
  177. return finalval;
  178. }
  179. static Instance() {
  180. if (this.instance === undefined) {
  181. this.instance = new TextEditor();
  182. }
  183. return this.instance;
  184. }
  185. }
  186. Controls.TextEditor = TextEditor;
  187. })(Controls = Forms.Controls || (Forms.Controls = {}));
  188. })(Forms = Unibase.Forms || (Unibase.Forms = {}));
  189. })(Unibase || (Unibase = {}));