Built files from Bizgaze WebServer
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

templateviewer.settings.js 26KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345
  1. var Unibase;
  2. (function (Unibase) {
  3. let Platform;
  4. (function (Platform) {
  5. let Analytics;
  6. (function (Analytics) {
  7. let Components;
  8. (function (Components) {
  9. class TemplateViewerSettings extends Platform.Core.BaseComponent {
  10. constructor() {
  11. super();
  12. this.subTemplateCount = 1;
  13. this.Templates = [];
  14. this.TemplateNames = [];
  15. this.viewerManager = Analytics.Managers.ViewerManager.Instance();
  16. this.reportViewer = Components.ReportViewer.Instance();
  17. this.ReportId = 0;
  18. }
  19. jsFiles() {
  20. return ["platform/analytics/providers/iviewersettings.js",
  21. "platform/analytics/managers/interfaces/iviewermanager.js"];
  22. }
  23. cssFiles() {
  24. return [];
  25. }
  26. html(id, containerid) {
  27. var html = `<div class="b-b bg-white header pa-10"><strong class="text-dark">Template</strong>
  28. </div>
  29. <div data-simplebar class="simple-scroll-bar scrollable" id="TemplateViewer_modal">
  30. <div id="divTemplateView_ErrorMessage"></div>
  31. <div class="Template_Section card">
  32. <div class="card-body">
  33. <div class="row">
  34. <div class="col-sm-5">
  35. <div id="div_TemplateName" class="floating-label-form-group floating-label-form-group-with-value">
  36. <label for="templatename" id="lbl_TemplateName">Template Name</label>
  37. <input type="text" id="Txt_Template_Name" class="form-control value-control floating-label-control" placeholder="Template Name" data-placeholder="Template Name" data-label="Template Name">
  38. </div>
  39. </div>
  40. <div class="col-sm-4">
  41. <div id="div_DisplayName" class="floating-label-form-group floating-label-form-group-with-value">
  42. <label for="displayname" id="lbl_DisplayName">Display Name</label>
  43. <input type="text" id="Txt_Display_Name" class="form-control value-control floating-label-control" placeholder="Display Name" data-placeholder="Display Name" data-label="Display Name">
  44. </div>
  45. </div>
  46. <div class="col-sm-3">
  47. <div id="div_TemplatePageSize" class="floating-label-form-group floating-label-form-group-with-value">
  48. <label for="TemplatePageSize" id="lbl_TemplatePageSize"> Page Size </label>
  49. <input type="text" id="Txt_TemplatePageSize" class="form-control value-control floating-label-control" placeholder="Template PageSize" data-placeholder="Template PageSize" data-label="Template PageSize">
  50. </div>
  51. </div>
  52. <div class="col-sm-4">
  53. <div class="form-group mt-40"><label for="frmchkIsEnableCardMode" style=""><b> Enable Card Mode </b></label><label id="lblIsEnableCardMode" class="switch m-t form-inline pull-right" style=""><input id="chkIsEnableCardMode" data-group="chkIsEnableCardMode" type="checkbox" data-isdynamic="false"><span></span></label></div>
  54. </div>
  55. <div class="col-sm-5">
  56. <div class="form-group mt-40"><label for="frmchkIsEnableSubTemplatesMode" style=""><b> Enable Sub Templates Mode </b></label><label id="lblIsEnableSubTemplatesMode" class="switch m-t form-inline pull-right" style=""><input id="chkIsEnableSubTemplatesMode" data-group="chkIsEnableSubTemplatesMode" type="checkbox" data-isdynamic="false"><span></span></label></div>
  57. </div>
  58. <div class="col-sm-3">
  59. <div class="form-group mt-40"><label for="frmchkIsCarousel" style=""><b> Is Carousel </b></label><label id="lblIsCarousel" class="switch m-t form-inline pull-right" style=""><input id="chkIsCarousel" data-group="chkIsCarousel" type="checkbox" data-isdynamic="false"><span></span></label></div>
  60. </div>
  61. <div class="col-sm-4">
  62. <div class="form-group d-flex align-items-center mt-15"><label class="font-weight-bold mr-10" for="desktopRadio">Is Desktop</label><input type="radio" id="desktopRadio" name="layoutRadio" checked value="1"></div>
  63. </div>
  64. <div class="col-sm-5">
  65. <div class="form-group d-flex align-items-center mt-15"><label class="font-weight-bold mr-10" for="mobileRadio">Is Mobile</label><input type="radio" id="mobileRadio" name="layoutRadio" value="2"></div>
  66. </div>
  67. <div class="col-sm-3">
  68. <div class="form-group d-flex align-items-center mt-15"><label class="font-weight-bold mr-10" for="bothLayoutRadio">Both</label><input type="radio" id="bothLayoutRadio" name="layoutRadio" value="3"></div>
  69. </div>
  70. <div class="col-sm-4">
  71. <div class="form-group mt-15"><label for="chkOverrideWidgetPageSize" class="font-weight-bold">Override Widget Page Size</label><label class="switch pull-right"><input id="chkOverrideWidgetPageSize" type="checkbox"><span></span></label>
  72. </div>
  73. </div>
  74. </div>
  75. </div>
  76. </div>
  77. <div class="TemplateHeader_Section card">
  78. <div class="card-header"> Template Header </div>
  79. <div class="card-body">
  80. <div id="div_TemplateHeader" class="">
  81. <textarea id="input_templateheader" placeholder="Template Header" rows="6" class="w-100"></textarea>
  82. </div>
  83. </div>
  84. </div>
  85. <div class="TemplateText_Section card">
  86. <div class="card-header"> Template Text </div>
  87. <div class="card-body">
  88. <div id="div_TemplateText" class="">
  89. <textarea id="input_TemplateText" placeholder="Template Text" rows="6" class="w-100"></textarea>
  90. </div>
  91. </div>
  92. </div>
  93. <div class="TemplateFooter_Section card">
  94. <div class="card-header"> Template Footer </div>
  95. <div class="card-body">
  96. <div id="div_TemplateFooter" class="">
  97. <textarea id="input_TemplateFooter" placeholder="Template Footer" rows="6" class="w-100"></textarea>
  98. </div>
  99. </div>
  100. </div>
  101. <div class="Js_Section card">
  102. <div class="card-header"> Js </div>
  103. <div class="card-body">
  104. <div id="div_Js" class="">
  105. <textarea id="input_Js" placeholder="Js" rows="6" class="w-100"></textarea>
  106. </div>
  107. </div>
  108. </div>
  109. <div class="printheadertext_Section card">
  110. <div class="card-header"> Print Header Text </div>
  111. <div class="card-body">
  112. <div id="div_printheadertext " class="">
  113. <textarea id="input_printheadertext" placeholder="Print Header Text" rows="6" class="w-100"></textarea>
  114. </div>
  115. </div>
  116. </div>
  117. <div class="printtemplatetext_Section card">
  118. <div class="card-header"> Print Template Text </div>
  119. <div class="card-body">
  120. <div id="div_printtemplatetext" class="">
  121. <textarea id="input_printtemplatetext" placeholder="Print Template Text" rows="6" class="w-100"></textarea>
  122. </div>
  123. </div>
  124. </div>
  125. <div class="printfootertext_Section card">
  126. <div class="card-header"> Print Footer Text </div>
  127. <div class="card-body">
  128. <div id="div_printfootertext" class="">
  129. <textarea id="input_printfootertext" placeholder="Print Footer Text" rows="6" class="w-100"></textarea>
  130. </div>
  131. </div>
  132. </div>
  133. <div class="SubTemplates_Section card">
  134. <div class="card-header"> Sub Templates <a class="pull-right btn btn-icon py-0 hidden" id="subtmp_plus" aria-hidden="true"><i class="fa fa-plus"></i></a></div>
  135. <div class="card-body">
  136. <div id="subtmp_div" class="mt-10">
  137. <div class="row" id="divsubtmp_1">
  138. <div class="col-11 floating-label-form-group-with-value">
  139. <select class="select_templates form-control" id="cmdsub_1" onclick="Unibase.Platform.Analytics.Components.TemplateViewerSettings.Instance().selectedSubTemplate(1)" multiple="multiple"><option value="0">Select Sub Template</option></select>
  140. </div>
  141. <a class="col-1 btn btn-icon subtmp_delete hidden" id="subtmp_delete_1" onclick="Unibase.Platform.Analytics.Components.TemplateViewerSettings.Instance().removeSubTemplate(1)"><i class="fa fa-times"></i></a>
  142. </div>
  143. </div>
  144. </div>
  145. </div>
  146. </div>
  147. </div>
  148. <div class="bg-white footer">
  149. <a class="btn btn-light btn-sm btn-center mr-auto btn-close" id="btnClose">Close</a>
  150. <a class="btn btn-primary btn-center btn-sm text-white" id="btnSave">Save</a>
  151. </div>`;
  152. return html;
  153. }
  154. load(id, containerid, callback) {
  155. var instance = this;
  156. instance.TemplateNames = [];
  157. instance.templateResponse = null;
  158. $("#Txt_TemplatePageSize").val(20);
  159. $("#chkIsEnableCardMode").change(function () {
  160. var IsEnableCardMode = $("#chkIsEnableCardMode").prop("checked");
  161. $("#input_templateheader").val("");
  162. $(".TemplateHeader_Section").removeClass("hidden");
  163. });
  164. $("#subtmp_plus").click(function () {
  165. instance.subTemplateCount++;
  166. let html = `<div class="row mt-10" id="divsubtmp_` + instance.subTemplateCount + `">
  167. <div class="col-11 floating-label-form-group-with-value">
  168. <select class="select_templates form-control" id="cmdsub_` + instance.subTemplateCount + `" onclick="Unibase.Platform.Analytics.Components.TemplateViewerSettings.Instance().selectedSubTemplate(` + instance.subTemplateCount + `)" multiple="multiple"><option value="0">Select Sub Template</option></select>
  169. </div>
  170. <a class="col-1 btn btn-icon subtmp_delete" id="subtmp_delete_` + instance.subTemplateCount + `" onclick="Unibase.Platform.Analytics.Components.TemplateViewerSettings.Instance().removeSubTemplate(` + instance.subTemplateCount + `)"><i class="fa fa-times"></i></a>
  171. </div>`;
  172. $("#subtmp_div").append(html);
  173. for (var i = 0; i < instance.Templates.length; i++) {
  174. $(".select_templates").append(`<option value="` + instance.Templates[i].TemplateName.trim() + `">` + instance.Templates[i].TemplateName.trim() + `</option>`);
  175. }
  176. });
  177. var url = _appsettings.server_url() + '/apis/v4/unibase/platform/analytics/templates';
  178. AutoCompleteHelper.getHelper().Create("#cmdsub_1", "hfReportAutoComplete", url, null);
  179. if (id != 0) {
  180. instance.getTemplateById(id);
  181. }
  182. jQuery("#btnSave").click(function () {
  183. instance.saveTemplate(id, Number(instance.ReportId), containerid, null);
  184. });
  185. $("#layoutRadio").click(function () { });
  186. }
  187. removeSubTemplate(SubTmpCount) {
  188. let instance = this;
  189. $("#divsubtmp_" + SubTmpCount).remove();
  190. instance.TemplateNames.splice(SubTmpCount, 1);
  191. }
  192. selectedSubTemplate(SubTmpCount) {
  193. let instance = this;
  194. let SubTemplateVal = $("#cmdsub_" + SubTmpCount + " option:selected").text();
  195. instance.TemplateNames[SubTmpCount] = SubTemplateVal;
  196. }
  197. getTemplateById(id) {
  198. var instance = this;
  199. instance.subTemplateCount = 1;
  200. instance.viewerManager.getTemplateView(id).then(function (response) {
  201. var resp = response.result;
  202. instance.templateResponse = response.result;
  203. $("#Txt_Template_Name").val(resp.TemplateName.trim()).attr("readonly", 'true').css("cursor", "not-allowed");
  204. if (resp.DisplayName != null) {
  205. $("#Txt_Display_Name").val(resp.DisplayName.trim());
  206. }
  207. $("#input_templateheader").val(HtmlHelper.getHelper().decode(resp.HeaderText.trim()));
  208. $("#input_TemplateText").val(HtmlHelper.getHelper().decode(resp.TemplateText.trim()));
  209. $("#input_TemplateFooter").val(HtmlHelper.getHelper().decode(resp.FooterText.trim()));
  210. if (resp.Js != null) {
  211. $("#input_Js").val(resp.Js.trim());
  212. }
  213. $("#chkIsEnableCardMode").prop("checked", resp.EnableCardMode);
  214. $("#chkIsCarousel").prop("checked", resp.IsCarousel);
  215. $("input[name=layoutRadio][value=" + resp.DisplayModeTypeId + "]").prop('checked', 'checked');
  216. $("#chkIsEnableSubTemplatesMode").prop("checked", resp.EnableSubTemplatesMode);
  217. if (resp.PageSize != 0) {
  218. $("#Txt_TemplatePageSize").val(resp.PageSize);
  219. }
  220. resp.PrintTemplateText && ($("#input_printtemplatetext").val(HtmlHelper.getHelper().decode(resp.PrintTemplateText.trim())));
  221. resp.PrintHeaderText && ($("#input_printheadertext").val(HtmlHelper.getHelper().decode(resp.PrintHeaderText.trim())));
  222. resp.PrintFooterText && ($("#input_printfootertext").val(HtmlHelper.getHelper().decode(resp.PrintFooterText.trim())));
  223. if (resp.SubTemplates != "" && resp.SubTemplates != null) {
  224. instance.viewerManager.getTemplates(resp.SubTemplates).then((response) => {
  225. if (response.status == Unibase.Data.Status.Success) {
  226. var templates = response.result;
  227. for (var i = 0; i < templates.length; i++) {
  228. $("#cmdsub_1").append(new Option(templates[i].TemplateName, templates[i].TemplateViewId.toString(), true, true));
  229. }
  230. }
  231. });
  232. }
  233. });
  234. }
  235. saveTemplate(id, reportid, containerid, obj) {
  236. var instance = this;
  237. var PostData = obj;
  238. let SubTemplateTexts = "";
  239. let subTempaltes = $("#cmdsub_1").select2("data");
  240. SubTemplateTexts = subTempaltes.map(x => x.text).join("|");
  241. if (obj == null) {
  242. PostData = {
  243. HeaderText: HtmlHelper.getHelper().encode($("#input_templateheader").val()),
  244. TemplateText: HtmlHelper.getHelper().encode($("#input_TemplateText").val()),
  245. FooterText: HtmlHelper.getHelper().encode($("#input_TemplateFooter").val()),
  246. Js: $("#input_Js").val(),
  247. TemplateName: $("#Txt_Template_Name").val().toString().trim(),
  248. DisplayName: $("#Txt_Display_Name").val().toString().trim(),
  249. ReportId: Number(reportid),
  250. TemplateViewId: Number(id),
  251. EnableCardMode: $("#chkIsEnableCardMode").prop("checked"),
  252. EnableSubTemplatesMode: $("#chkIsEnableSubTemplatesMode").prop("checked"),
  253. IsCarousel: $("#chkIsCarousel").prop("checked"),
  254. PageSize: Number($("#Txt_TemplatePageSize").val()),
  255. SubTemplates: SubTemplateTexts,
  256. DisplayModeTypeId: Number($('input[name="layoutRadio"]:checked').val()),
  257. PrintTemplateText: HtmlHelper.getHelper().encode($("#input_printtemplatetext").val() || ""),
  258. PrintHeaderText: HtmlHelper.getHelper().encode($("#input_printheadertext").val() || ""),
  259. PrintFooterText: HtmlHelper.getHelper().encode($("#input_printfootertext").val() || ""),
  260. ViewAll: instance.templateResponse ? instance.templateResponse.ViewAll : true,
  261. IsFromUI: Number(id) == 0 ? true : false,
  262. };
  263. }
  264. instance.viewerManager.saveTemplateView(PostData).then(function (response) {
  265. if (response.status == Unibase.Data.Status.Error) {
  266. MessageHelper.Instance().showError(response.message, 'divTemplateView_ErrorMessage');
  267. }
  268. else {
  269. MessageHelper.Instance().showSuccess(response.message, '');
  270. $('#' + containerid).modal('hide');
  271. $('#' + containerid).remove();
  272. }
  273. });
  274. }
  275. deleteTemplate(id, containerid, ev) {
  276. if (ev != undefined)
  277. ev.stopPropagation();
  278. var instance = this;
  279. bootbox.confirm("Do you want to Delete the Template ?", function (result) {
  280. if (result) {
  281. instance.viewerManager.deleteTemplate(id, instance.ReportId).then(function (delresponse) {
  282. if (delresponse.status == Unibase.Data.Status.Success) {
  283. MessageHelper.Instance().showSuccess(delresponse.message, '');
  284. $(`#deleteTemplateIcon_${id}`).parents('.biz-views-dropdown').siblings('.views-dropdown-toggle').dropdown('toggle');
  285. }
  286. else {
  287. let errMsgEl = $(`#deleteTemplateIcon_${id}`).parents('.biz-views-dropdown').find('#dpErrMessage_' + containerid).attr('id');
  288. MessageHelper.Instance().showError(delresponse.message, errMsgEl);
  289. }
  290. }, null);
  291. }
  292. });
  293. }
  294. updateViewerStatus(viewerId, viewerTypeId) {
  295. var instance = this;
  296. instance.viewerManager.updateViewerStatus(viewerId, viewerTypeId).then(function (viewerres) {
  297. if (viewerres.status == Unibase.Data.Status.Success) {
  298. if (Number(viewerres.result) == Unibase.Platform.Core.Enums.RowStatus.Active) {
  299. $(".tempStatus_" + viewerId).text("Active").addClass("btn-success").removeClass("btn-red");
  300. }
  301. else {
  302. $(".tempStatus_" + viewerId).text("InActive").addClass("btn-red").removeClass("btn-success");
  303. }
  304. }
  305. });
  306. }
  307. deleteViewer(id, viewerTypeId, containerid, ev) {
  308. if (ev != undefined)
  309. ev.stopPropagation();
  310. var instance = this;
  311. bootbox.confirm("Do you want to Delete the Template ?", function (result) {
  312. if (result) {
  313. var rv = instance.reportViewer.getReportViewerInstance(containerid);
  314. if (rv.reportResponse && rv.reportResponse.result && rv.reportResponse.result.ReportInfo && rv.reportResponse.result.ReportInfo.ReportId)
  315. instance.ReportId = rv.reportResponse.result.ReportInfo.ReportId;
  316. instance.viewerManager.deleteViewer(instance.ReportId, id, viewerTypeId).then(function (delresponse) {
  317. if (delresponse.status == Unibase.Data.Status.Success) {
  318. MessageHelper.Instance().showSuccess(delresponse.message, '');
  319. $(`#deleteTemplateIcon_${id}`).parents('.biz-views-dropdown').siblings('.views-dropdown-toggle').dropdown('toggle');
  320. }
  321. else {
  322. let errMsgEl = $(`#deleteTemplateIcon_${id}`).parents('.biz-views-dropdown').find('#dpErrMessage_' + containerid).attr('id');
  323. MessageHelper.Instance().showError(delresponse.message, errMsgEl);
  324. }
  325. }, null);
  326. }
  327. });
  328. }
  329. loadViewers() {
  330. var url = _appsettings.server_url() + '/apis/v4/unibase/platform/analytics/viewers';
  331. AutoCompleteHelper.getHelper().Create("#cmdsub_1", "hfReportAutoComplete", url, null);
  332. }
  333. static Instance() {
  334. if (this._instance === undefined)
  335. this._instance = new Unibase.Platform.Analytics.Components.TemplateViewerSettings();
  336. return this._instance;
  337. }
  338. }
  339. Components.TemplateViewerSettings = TemplateViewerSettings;
  340. })(Components = Analytics.Components || (Analytics.Components = {}));
  341. })(Analytics = Platform.Analytics || (Platform.Analytics = {}));
  342. })(Platform = Unibase.Platform || (Unibase.Platform = {}));
  343. })(Unibase || (Unibase = {}));