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.

details.js 176KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866186718681869187018711872187318741875187618771878187918801881188218831884188518861887188818891890189118921893189418951896189718981899190019011902190319041905190619071908190919101911191219131914191519161917191819191920192119221923192419251926192719281929193019311932193319341935193619371938193919401941194219431944194519461947194819491950195119521953195419551956195719581959196019611962196319641965196619671968196919701971197219731974197519761977197819791980198119821983198419851986198719881989199019911992199319941995199619971998199920002001200220032004200520062007200820092010201120122013201420152016201720182019202020212022202320242025202620272028202920302031203220332034
  1. var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
  2. function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
  3. return new (P || (P = Promise))(function (resolve, reject) {
  4. function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
  5. function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
  6. function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
  7. step((generator = generator.apply(thisArg, _arguments || [])).next());
  8. });
  9. };
  10. var Unibase;
  11. (function (Unibase) {
  12. let Themes;
  13. (function (Themes) {
  14. let Compact;
  15. (function (Compact) {
  16. let Components;
  17. (function (Components) {
  18. class Details extends Unibase.Platform.Core.BaseComponent {
  19. constructor() {
  20. super();
  21. this.model = [];
  22. this.jsindex = 0;
  23. this.htmlindex = 0;
  24. this.evalExecuted = 0;
  25. this._recordId = 0;
  26. this._installedAppId = 0;
  27. this.changestagedata = "";
  28. this.unibase_core_activeportletid = 0;
  29. this.unibase_ActiveInstalledAppId = 0;
  30. this.layoutIndex = Unibase.Themes.Compact.Components.Index.Instance().layoutIndex;
  31. this.detailsViewIndex = Unibase.Themes.Compact.Components.Index.Instance().detailsViewIndex;
  32. this.IsCustomDetailHeader = false;
  33. this.desktopMode = Unibase.Themes.Compact.Components.Index.Instance().desktopMode;
  34. this.mobileLMode = Unibase.Themes.Compact.Components.Index.Instance().mobileLMode;
  35. this.isSystemLock = false;
  36. this.isPortletModified = false;
  37. this.isDetailsUpdated = false;
  38. this.isPortletEdit = false;
  39. this.isDashboardWidgetDetail = false;
  40. var instance = this;
  41. var jsfiles = ["platform/portlets/managers/portletmanager.js", "platform/widgets/managers/widgetmanager.js", "/platform/apps/managers/stagemanager.js", "platform/apps/managers/appmanager.js"];
  42. }
  43. jsFiles() {
  44. return ["platform/bundle/index.details.min.js"];
  45. }
  46. cssFiles() {
  47. return [];
  48. }
  49. init() {
  50. }
  51. html(id, containerid) {
  52. var instance = this;
  53. this._containerId = containerid;
  54. var margin_padding = 20, hidden = 'd-flex';
  55. if (instance.IsCustomDetailHeader == true) {
  56. hidden = "d-none";
  57. }
  58. var html = `<div class="profile-cover-wrap overlay-wrap h-100 px-0 d-flex flex-column invisible" id="div_detail_profile">
  59. <div class="d-flex align-items-center p-relative mx-sm-20 mx-2 pa-0 h-80p flex-shrink-0 portlet-header-wrapper">
  60. <div id="div_message" class="details-err-msg"></div>
  61. <div class="portlet-detail-header d-flex justify-content-between align-items-center w-100 z-index-1" id="portletDetailHeader_${containerid}">
  62. <div class="d-flex check-mobile-mode align-items-center"><a href="javascript:void(0);" id="detail-close" class="detail-close d-none btn btn-icon btn-flush-biz-theme btn-rounded flush-soft-hover w-30p h-30p mr-10 text-dark" data-tooltip="true" title="Close"><span class="btn-icon-wrap"><i data-icon="l"></i></span></a>
  63. <div class="Mobile-mode">
  64. <div class="clear" id="div_App_DefaultWidget"></div>
  65. <div class="heading-display-name d-none"></div>
  66. <div class="div_details_stages d-sm-none mt-1 ml-35">
  67. <div class="d-flex">
  68. <select class="border pa-5 rounded-5 btn-outline-light font-weight-500 font-11 stage-change-select text-dark ${hidden} mw-150p text-truncate" id="stageChangeSelect_${containerid}" onchange="Unibase.Themes.Compact.Components.Details.Instance().mobileStageChange('${containerid}');"></select>
  69. <div class="div_details_lock d-none"><span data-toggle="tooltip" title="Locked"><i class="fa fa-lock text-danger"></i></span></div></div>
  70. </div>
  71. </div>
  72. </div>
  73. <div class="d-flex block-on-mobile"><div class="d-sm-block d-none"><div class="div_details_lock d-none"><span data-toggle="tooltip" title="Locked"><i class="fa fa-lock text-danger"></i></span></div></div><div class="div_details_stages d-none d-sm-block">
  74. <button class="border btn btn-outline-light font-weight-500 no-caret font-14 btn btnChangeStage mr-10 text-dark h-100 ${hidden} align-items-center mw-250p justify-content-center" data-toggle="dropdown"></button>
  75. <div class="layout-details-stages dropdown-menu dropdown-menu-right">
  76. </div></div>
  77. <div class="detail-config-place"></div>
  78. <div class="edit-screen-place">
  79. <div id="ModelPager" class="pagination custom-pagination pagination-rounded pull-left"></div></div>
  80. <div class="${hidden} Detail_Configurations_${containerid} pull-right">
  81. <div class="select div_configurationsetting"><a class="btn btn-outline-light border d-flex align-items-center biz-highlight-bg-color" data-toggle="dropdown">
  82. <span class="mr-1 d-none d-sm-block font-14">More</span><span class="fa fa-angle-down font-20"></a>
  83. <div id="DetailsProperties_${containerid}" class="dropdown-menu dropdown-menu-right shadow"></div>
  84. </div>
  85. </div>
  86. </div>
  87. </div>
  88. <div class="details-edit-header justify-content-between align-items-center w-100 d-none z-index-1" id="details-edit-header">
  89. <div class="d-flex details-edit-left">
  90. <a class="btn btn-outline-primary bg-white mr-10 create-btn btn_addportlt" id="AddPortlets" href="javascript:;" onclick="Unibase.Platform.Widgets.Components.Widget.Instance().renderAddPortletText(false,'${instance._installedAppId}');" data-isClicked="false">Create Tab</a><div class="d-none d-xl-block"><a class="btn btn-outline-primary bg-white create-btn mr-10 dashboardcreatewidgetbtn" href="javascript:;" id="AddWidget_btnCreateWidget" onclick="Unibase.Platform.Widgets.Components.Widget.Instance().createWidget('${instance._installedAppId}')">Create Widget</a></div>
  91. <div class="dropdown">
  92. <button aria-expanded="false" data-toggle="dropdown" class="btn btn-outline-primary bg-white mr-10 manage-portlet-btn dropdown-toggle" id="managePortletBtn" type="button">Manage <span class="portlet-title-span"><span class="caret"></span></button>
  93. <div role="menu" class="dropdown-menu">
  94. <a class="dropdown-item btnEdit_portlet" href="javascript:;" onclick="Unibase.Platform.Widgets.Components.Widget.Instance().renderAddPortletText(true,'${instance._installedAppId}');">Edit</a>
  95. <a class="dropdown-item btn_dltportlet" href="javascript:;" onclick="Unibase.Platform.Widgets.Components.Widget.Instance().DeletePortlet('${instance._installedAppId}');" >Delete</a>
  96. <a class="dropdown-item manage_pPermissions" href="javascript:;" onclick="Unibase.Platform.Widgets.Components.Widget.Instance().ShowPortletPermissions();">Permissions</a>
  97. <a class="dropdown-item btnExport_portlet" href="javascript:;" onclick="Unibase.Platform.Portlets.Components.Portlet.Instance().exportPortlet(${instance._installedAppId});" >Export</a>
  98. </div>
  99. <a class="btn btn-outline-primary bg-white mr-10 import-btn btn_importportlt" id="importPortlets" href="javascript:;" onclick="Unibase.Platform.Dashboards.Components.ManageDashboard.Instance().ImportDashBoard(0,'${containerid}');">Import</a>
  100. </div>
  101. </div>
  102. <div class="d-flex details-edit-right">
  103. <a class="btn btn-outline-danger detail-edit-close" href="javascript:;" onclick="Unibase.Platform.Widgets.Components.Widget.Instance().loadportlet();" id="detail-edit-close">Close</a>
  104. <a class="btn btn-primary ml-10" href="javascript:;" data-toggle="modal" data-target="#SaveEditDetailScreen" onclick="Unibase.Platform.Widgets.Components.Widget.Instance().confirmSave();" id="AddWidget_btnSelectWidget">Save</a>
  105. </div>
  106. </div>
  107. </div>
  108. <div class="bg-white rounded-4 mx-sm-20 mx-2" id="layout-detail-tabs-container"><div class="container-fluid">
  109. <ul class="nav nav-light nav-tabs nav-line layout-detail-tabs" role="tablist" id="layout-detail-tabs">
  110. <li class="nav-item tab-item detail-tab exclude-tab" style="display:none;"><a href="javascript:;" class="d-flex h-40p align-items-center nav-link">Hidden</a></li> <li class="nav-item tab-item hidden more-tab exclude-tab" id="layout-detail-lastTab"> <a class="d-flex h-40p align-items-center dropdown-toggle no-caret text-dark font-weight-600 font-16" data-toggle="dropdown" href="javascript:;">More<i class="ml-5 fa fa-angle-down"></i></a> <ul class="dropdown-menu pa-10 bg-white" data-toggle="dropdown" id="collapsed"></ul></li></ul></div></div><div class="add-widget-container mb-1 mt-25 mx-sm-20 mx-2 structureContent hidden" id="addWidgetContainer"><a href="javascript:void(0)" title="Click here to add widget" class="w-100 p-2 my-auto d-flex justify-content-center" data-toggle="modal" data-target="#dashboardWidgetModal" onclick=" Unibase.Platform.Widgets.Components._Widget.Instance().widgetsModal(${instance._installedAppId}, this);"><span><i class="la la-plus mr-2"></i>Add Widget</span></a></div><div class="detail-container-content-outer overflow-auto flex-grow-1 flex-basis-0 pt-sm-20 pt-2"><div data-simplebar class="simple-scroll-bar scrollable tab-content biz-detail-page-view mt-0 pa-0 pb-sm-15"> <div class="detail-container-content mx-sm-20 mx-2"><div class="tab-pane show active"></div><div class="row mx-0 rounded bg-white mb-20 d-none" id="detailActionsWidget_${containerid}"><div id="div_App_DefaultWidgetSettings" class="col-sm-12 pr-0"> <ul class='px-15 align-items-center row div_detailconfigurations justify-content-between py-10 pl-3'><li class='biz-highlight-bg-color font-weight-500 cursor-pointer' id='div_App_DefaultWidgetSettings_toggle' onclick='Unibase.Themes.Compact.Components.Details.Instance().div_App_DefaultWidgetSettings_toggle(event)'><span class='align-items-center d-flex'><i class='fa fa-angle-down div_App_DefaultWidgetSettings_toggle_down' id="div_App_DefaultWidgetSettings_angledown"></i><span class='pl-1 biz-highlight-bg-color'>Actions</li><li><ul class='pl-20 pr-2 div_detailconfigurations_headerbtns d-flex flex-wrap align-items-center'></ul></li></ul></div> <div class="ApprovalTasks col-sm-12 pr-0" id="div_detail_notifications"></div></div><div class="row tab-container" id="tab-container" style="min-height:120px;"></div> </div></div></div><div class="bg-white EditPortlets d-none modal-footer pa-10"><a href="javascript:void(0);" id="detail-close" class="btn detail-close d-none btn-outline-danger btn-sm">Close</a><div class="mr-auto" id="div_Model_pagination"></div></div></div>`;
  111. return html;
  112. }
  113. load(id, containerid, callback) {
  114. var instance = this;
  115. Unibase.Platform.Helpers.FileCacheHelper.Instance().addCacheFiles(["platform/apps/managers/stagemanager.js", "platform/datasources/managers/doctypemanager.js", "tenants/themes/compact/components/notifications/TaskParams.js", "platform/communications/managers/tasks/taskmanager.js", "platform/apps/components/stages/stagereason.js", "platform/apps/managers/interfaces/iappmanager.js", "platform/forms/managers/interfaces/iformmanager.js", "platform/permission/managers/interfaces/ipermissionmanager.js", "platform/dashboards/components/managedashboards.js", "platform/dashboards/components/import.js"]);
  116. Unibase.Themes.Providers.DetailHelper.isListStages = false;
  117. Unibase.Themes.Providers.Detail_Settings.Instance().isListStages = false;
  118. instance.lastContinerId = "";
  119. instance.lastReportInstance = null;
  120. instance.isDetailsUpdated = false;
  121. Compact.CollapsedTabs.Instance().autoCollapse($("#" + containerid).find("#layout-detail-tabs"));
  122. instance.portletmanager = Unibase.Platform.Portlets.Managers.PortletManager.Instance();
  123. instance.widgetmanager = Unibase.Platform.Widgets.Managers.WidgetManager.Instance();
  124. instance.stagemanager = Unibase.Platform.Apps.Managers.StageManager.Instance();
  125. instance.appmanager = Unibase.Platform.Apps.Managers.AppManager.Instance();
  126. instance.doctypemanager = Unibase.Platform.DataSources.Managers.DocTypeManager.Instance();
  127. $("#" + containerid).find(".detail-close").click(function () {
  128. window.parent.postMessage('clickToBack', '*');
  129. $('.txt_global_search').show();
  130. $('.search_icon').removeClass("hidden");
  131. $(this).removeClass("hidden");
  132. Unibase.Themes.Providers.DetailHelper.installedAppId = 0;
  133. Unibase.Themes.Providers.DetailHelper.recordId = 0;
  134. Unibase.Themes.Providers.Detail_Settings.Instance().InputParameters = [];
  135. Unibase.Themes.Providers.Detail_Settings.Instance().RecordId = 0;
  136. var ModalContainers = Unibase.Platform.Helpers.NavigationHelper.ModalContainerIds;
  137. let rv_instance = Unibase.Platform.Helpers.NavigationHelper.reportViewerInstance;
  138. for (var i = 0; i < rv_instance.length; i++) {
  139. if (rv_instance[i].parentcontainerid == ModalContainers[$.inArray(containerid, ModalContainers)]) {
  140. rv_instance.splice(i, 1);
  141. i--;
  142. }
  143. }
  144. ModalContainers.splice($.inArray(containerid, ModalContainers), 1);
  145. var ContainerId = ModalContainers[ModalContainers.length - 1];
  146. instance.lastContinerId = ContainerId;
  147. var DetailContainer = $("#" + ContainerId).find("#div_detail_profile");
  148. var FormContainer = $("#" + ContainerId).attr("class") == undefined ? "" : $("#" + ContainerId).attr("class");
  149. var IsListRefresh = Unibase.Platform.Helpers.NavigationHelper.IsListRefresh;
  150. IsListRefresh = instance.evaluateDefaultWidgetCallback("#" + containerid, true, IsListRefresh);
  151. if (DetailContainer.length != 0) {
  152. var installedappid = Unibase.Themes.Providers.Detail_Settings.Instance().DetailParameters["#" + ContainerId].InstalledAppId;
  153. Unibase.Themes.Providers.Detail_Settings.Instance().InputParameters = Unibase.Themes.Providers.Detail_Settings.Instance().DetailParameters["#" + ContainerId].InputParameters;
  154. instance._installedAppId = installedappid;
  155. Unibase.Themes.Providers.DetailHelper.installedAppId = installedappid;
  156. instance.unibase_ActiveInstalledAppId = installedappid;
  157. var recordid = Number(Unibase.Themes.Providers.Detail_Settings.Instance().InputParameters.find(x => x.Key == "hf_" + installedappid + "_recordid").Value);
  158. instance._recordId = recordid;
  159. Unibase.Themes.Providers.DetailHelper.recordId = recordid;
  160. instance._containerId = ContainerId;
  161. var portletid = Number(Unibase.Themes.Providers.Detail_Settings.Instance().DetailParameters["#" + ContainerId].ActivePortletId);
  162. if (isNaN(portletid)) {
  163. portletid = 0;
  164. }
  165. instance.unibase_core_activeportletid = portletid;
  166. if (IsListRefresh) {
  167. var detailInstance = Unibase.Themes.Compact.Components.Details.Instance();
  168. var panel = "#" + ContainerId;
  169. var obj = Themes.Compact.Components.Details.Instance();
  170. obj._recordId = recordid;
  171. obj._installedAppId = installedappid;
  172. Unibase.Themes.Providers.DetailHelper.recordId = recordid;
  173. detailInstance.loadAppDefaultWidget(obj, panel, ContainerId, function () {
  174. Unibase.Themes.Compact.Components.Details.Instance().loadWidgets(installedappid, portletid, panel);
  175. });
  176. }
  177. else {
  178. $("#" + ContainerId).find(".tabid-" + portletid).find(".nav-link").addClass("active");
  179. }
  180. }
  181. else if (FormContainer.includes("_bizgaze_popup_container")) {
  182. $("#" + ContainerId).modal("show");
  183. }
  184. else {
  185. Unibase.Platform.Helpers.NavigationHelper.IsListRefresh = false;
  186. var installedappid = Unibase.Themes.Providers.Detail_Settings.Instance().DetailParameters["#" + containerid].InstalledAppId;
  187. $("#" + ContainerId).find('.txt_global_search').show();
  188. if (IsListRefresh) {
  189. Unibase.Themes.Compact.Components.List.Instance().isListRefresh = IsListRefresh;
  190. if (!instance.isDashboardWidgetDetail) {
  191. instance.navigationHelper.loadList(installedappid, null);
  192. }
  193. else {
  194. const portletid = +$("#hf_DashboardPortletId").val();
  195. Unibase.Themes.Compact.Components.Nav.Instance().loadDashboard(portletid, '');
  196. }
  197. }
  198. }
  199. instance.isDashboardWidgetDetail = false;
  200. var containerClass = $("#" + containerid).attr("class") == undefined ? "" : $("#" + containerid).attr("class");
  201. if (containerClass.includes("_bizgaze_popup_container")) {
  202. $("#" + containerid).modal("hide");
  203. $('#' + containerid).remove();
  204. }
  205. else {
  206. Unibase.Platform.Helpers.NavigationHelper.Instance().close(containerid, null);
  207. }
  208. });
  209. $('.db-setting-dp-item').addClass('d-none');
  210. if (isMobileApp()) {
  211. eval(`jquerySwipeHandler.handleSwipe(".detail-container-content-outer", [jquerySwipeHandler.SWIPE_LEFT, jquerySwipeHandler.SWIPE_RIGHT], function (direction) { console.log("swipe Diredction: ", direction);
  212. if(direction == 'SWIPE_LEFT' || direction == 'SWIPE_RIGHT'){
  213. Unibase.Themes.Compact.Components.Details.Instance().swipe(direction);
  214. }
  215. });`);
  216. }
  217. }
  218. resize1(containerid) {
  219. var panel = containerid;
  220. if (panel === "" || panel === undefined)
  221. panel = '_modal_bizgaze_edit_' + moment().unix();
  222. var deductHeight = 202;
  223. if ($(document).outerWidth() < 1200) {
  224. deductHeight = 266;
  225. $("#" + panel).find(".modal-body").addClass("px-0").removeClass("pa-15");
  226. }
  227. if (this.desktopMode && this.detailsViewIndex != 2 && (this.layoutIndex == 2 || this.layoutIndex == 3)) {
  228. deductHeight = 256;
  229. }
  230. $("#" + panel).find(".modal-body").height($(window).outerHeight() - deductHeight);
  231. }
  232. loadPortlets(obj) {
  233. var instance = this;
  234. let skelhtml = '<div class="skelton_loader biz-secondary-color px-20 position-absolute w-100 z-index-10">';
  235. skelhtml += Unibase.Themes.Compact.Components.Nav_Template.Instance().skelTonDetailsHDRPage();
  236. skelhtml += Unibase.Themes.Compact.Components.Nav_Template.Instance().skelTonDetailsbBDYPage();
  237. skelhtml += '</div>';
  238. $('#' + obj._containerId).find('#div_detail_profile').addClass('invisible').before(skelhtml);
  239. if (this.unibase_ActiveInstalledAppId != obj._installedAppId) {
  240. this.unibase_core_activeportletid = 0;
  241. this.unibase_ActiveInstalledAppId = obj._installedAppId;
  242. }
  243. var panel;
  244. if (Unibase.Platform.Helpers.NavigationHelper.Instance().getLastContainerId().includes('_viewall')) {
  245. panel = Unibase.Platform.Helpers.NavigationHelper.ModalContainerIds[Unibase.Platform.Helpers.NavigationHelper.ModalContainerIds.length - 2];
  246. }
  247. else {
  248. panel = "#" + instance._containerId;
  249. }
  250. var image_src = $("#hf_AppImage").val();
  251. if (image_src == '') {
  252. image_src = 'tenants/themes/compact/images/avatar_default.jpg';
  253. }
  254. $(panel).find("#bizgaze_AppImage").attr("src", 'image_src');
  255. var id1 = $("#hf_AppTitle").val();
  256. $(panel).find("#bizgaze_AppTitle").text('id1');
  257. var hiddenhtml = "<input type='hidden' id='hf_" + obj._installedAppId + "' value='" + obj._recordId + "'>";
  258. $(panel).find("#div_detail_notifications").attr("id", "div_detail_notifications_" + obj._recordId);
  259. instance.loadAppDefaultWidget(obj, panel, instance._containerId, function () {
  260. return __awaiter(this, void 0, void 0, function* () {
  261. if (instance.IsCustomDetailHeader != true) {
  262. instance.getPortlets(obj._installedAppId, panel);
  263. }
  264. yield instance.loadDefaultWidgets(obj._installedAppId, panel);
  265. yield instance.LoadApprovals(obj._recordId, obj._installedAppId);
  266. });
  267. });
  268. $(panel).find(".tab-addeditem").remove();
  269. }
  270. getPortlets(installedappid, panel) {
  271. var instance = this;
  272. var currentstageid = 0;
  273. var userinfo = Unibase.Platform.Membership.Infos.Identity.getCurrentUser();
  274. if (installedappid != null && installedappid != 0 && installedappid != undefined) {
  275. if (!userinfo.isAdmin && Unibase.Themes.Providers.Detail_Settings.Instance().InputParameters.
  276. find(x => x.Key == "hf_" + installedappid + "_stageid") != undefined) {
  277. currentstageid = Number(Unibase.Themes.Providers.Detail_Settings.Instance().InputParameters.
  278. find(x => x.Key == "hf_" + installedappid + "_stageid").Value);
  279. }
  280. instance.portletmanager.getPortletsByInstalledApp(installedappid, currentstageid).then(function (response) {
  281. var data = response.result;
  282. var html = "";
  283. var firstportletid = 0;
  284. var activePortletIndex = Unibase.Themes.Providers.Detail_Settings.Instance().ActivePortlets.findIndex(x => x.InstalledAppId == installedappid);
  285. if (activePortletIndex != -1) {
  286. firstportletid = Unibase.Themes.Providers.Detail_Settings.Instance().ActivePortlets[activePortletIndex].ActivePortletId;
  287. }
  288. if (data.length > 0) {
  289. for (var i = 0; i < data.length; i++) {
  290. var portletName = data[i].PortletName;
  291. var portletId = data[i].PortletId;
  292. if (firstportletid == 0) {
  293. firstportletid = portletId;
  294. }
  295. Details.Instance().unibase_core_activeportletid = firstportletid;
  296. html += '<li class="nav-item tab-item tab-pane tab-addeditem tabid-' + portletId + '" id="portletTab_' + portletId + '" value=' + portletId + '><a href="javascript:;" class="h-40p nav-link px-2 px-md-3 findportlets_' + portletId + '" onclick="Unibase.Themes.Compact.Components.Details.Instance().loadWidgets(' + installedappid + ',' + portletId + ',\'' + panel + '\')" data_isappstructenable="' + data[i].IsStructureEnabled + '">' +
  297. '<input type="hidden" id="hf_PortletId" data-portletId=' + portletId + ' value=' + portletId + '>' +
  298. '<span class="portletName text-dark font-weight-600 font-16" id="portletName_' + portletId + '">' + portletName + '</span>' +
  299. '</a></li>';
  300. }
  301. $(panel).find("#layout-detail-tabs").find('.detail-tab:first').prevAll().remove();
  302. $(panel).find("#layout-detail-tabs").find('.detail-tab:first').before(html);
  303. $(panel).find(".tab-addeditem").removeClass("active");
  304. $(panel).find(".tabid-" + firstportletid).find(".nav-link").addClass("active");
  305. $("#managePortletBtn .portlet-title-span").text($(`#portletName_${firstportletid}`).text());
  306. if (Unibase.Themes.Providers.Detail_Settings.Instance().DetailParameters["" + panel] == undefined) {
  307. Unibase.Themes.Providers.Detail_Settings.Instance().DetailParameters["" + panel] = [];
  308. }
  309. Unibase.Themes.Providers.Detail_Settings.Instance().DetailParameters[panel]["ActivePortletId"] = firstportletid;
  310. Unibase.Themes.Providers.Detail_Settings.Instance().DetailParameters.length++;
  311. if ($(window).width() > 768) {
  312. Unibase.Themes.Compact.CollapsedTabs.Instance().autoCollapse($(panel).find("#layout-detail-tabs"));
  313. }
  314. else {
  315. let activePortletEl = $(panel).find(`.tabid-${firstportletid} .nav-link.active`);
  316. activePortletEl.parents('#layout-detail-tabs').scrollLeft(activePortletEl.parent().position().left - 30);
  317. }
  318. $(panel).find(".tabid-" + firstportletid).find(".collapsedPortlet").addClass("nav-link active");
  319. }
  320. else {
  321. $(panel).find('#divAddWidgetAndPortletMenu').css('display', 'none');
  322. $(panel).find('#divMsgAddWidgetAndPortletMenu').css('display', 'block');
  323. }
  324. }, null);
  325. }
  326. }
  327. loadAppDefaultWidget(obj, panel, containerId, callback) {
  328. var instance = this;
  329. var configurations = [];
  330. var detailsettingjs = [];
  331. var settingurl = [];
  332. instance.fileCacheHelper.loadJsFile("platform/core/helpers/token/tokenhelper.js", null);
  333. let lastContainerId = instance.navigationHelper.getLastContainerId();
  334. $('.div_detailconfigurations_headerbtns').last().html('');
  335. var userinfo = Unibase.Platform.Membership.Infos.Identity.getCurrentUser();
  336. var fromDate = "";
  337. var toDate = "";
  338. var cf_fromDate = Unibase.Platform.Helpers.NavigationHelper.commonFilter_FromDate;
  339. var cf_toDate = Unibase.Platform.Helpers.NavigationHelper.commonFilter_ToDate;
  340. if (cf_fromDate != null && cf_toDate != null) {
  341. fromDate = cf_fromDate.toString();
  342. toDate = cf_toDate.toString();
  343. }
  344. else {
  345. fromDate = Unibase.Platform.Helpers.DateTimeHelper.Instance().formatLocalDateformat(new Date(Unibase.Platform.Helpers.DateTimeHelper.Instance().currentDate()), "YYYY/MM/DD");
  346. toDate = Unibase.Platform.Helpers.DateTimeHelper.Instance().formatLocalDateformat(new Date(Unibase.Platform.Helpers.DateTimeHelper.Instance().currentDate()), "YYYY/MM/DD");
  347. }
  348. var expObj = {
  349. InstalledAppId: obj._installedAppId,
  350. RecordId: obj._recordId,
  351. FromDate: fromDate,
  352. ToDate: toDate
  353. };
  354. Unibase.Platform.Widgets.Managers.WidgetManager.Instance().getDefaultWidget(expObj).then(function (response) {
  355. if (response.status != Unibase.Data.Status.Error) {
  356. if (response.result != null) {
  357. var data = response.result.Data;
  358. instance.isSystemLock = response.result._IsSystemLock;
  359. var templatetext = response.result.TemplateText;
  360. var stages = response.result.Stages;
  361. var installedappinfo = response.result.InstalledApp;
  362. var statusinfo = response.result.Status;
  363. var permission = response.result.EditScreenPermission;
  364. if (data != null && data != "") {
  365. var model = "";
  366. if (data != null) {
  367. model = JSON.parse(data);
  368. }
  369. var info = Object.keys(model[0]).map(function (key) {
  370. return [key, model[0][key]];
  371. });
  372. Unibase.Themes.Providers.Detail_Settings.Instance().InputParameters = [];
  373. for (var i = 0; i < info.length; i++) {
  374. Unibase.Themes.Providers.Detail_Settings.Instance().InputParameters.push({
  375. Key: "hf_" + obj._installedAppId + "_" + info[i][0].toLowerCase(),
  376. Value: info[i][1],
  377. DataType: typeof (info[i][1])
  378. });
  379. }
  380. Unibase.Themes.Providers.Detail_Settings.Instance().InputParameters.push({
  381. Key: "hf_" + obj._installedAppId + "_" + "recordid",
  382. Value: obj._recordId.toString(),
  383. DataType: typeof (obj._recordId)
  384. });
  385. if (Unibase.Themes.Providers.Detail_Settings.Instance().DetailParameters["" + panel] == undefined) {
  386. Unibase.Themes.Providers.Detail_Settings.Instance().DetailParameters["" + panel] = [];
  387. Unibase.Themes.Providers.Detail_Settings.Instance().DetailParameters.length++;
  388. }
  389. Unibase.Themes.Providers.Detail_Settings.Instance().DetailParameters[panel]["InputParameters"] = Unibase.Themes.Providers.Detail_Settings.Instance().InputParameters;
  390. Unibase.Themes.Providers.Detail_Settings.Instance().DetailParameters[panel]["InstalledAppId"] = obj._installedAppId;
  391. if (templatetext != null) {
  392. var html = Unibase.Core.Helpers.TokenHelper.Instance().replace(response.result.TemplateText, model[0]);
  393. var icon = '';
  394. if (response.result.AppConfigurations.length > 0) {
  395. var confightml = "";
  396. var appconfigurations = response.result.AppConfigurations;
  397. for (var i = 0; i < appconfigurations.length; i++) {
  398. if (appconfigurations[i].AppConfigType == Unibase.Platform.Apps.Enums.AppConfigeType.DetailSetting) {
  399. var onclickurl = "";
  400. var settingname = appconfigurations[i].SettingName;
  401. var description = appconfigurations[i].Description;
  402. var sname = settingname.replace(/ /g, '');
  403. if (description != null && description != "" && description != undefined) {
  404. description = appconfigurations[i].Description;
  405. }
  406. else {
  407. description = appconfigurations[i].SettingName;
  408. }
  409. if (appconfigurations[i].JsFunction != null && appconfigurations[i].JsFunction != "") {
  410. detailsettingjs.push(appconfigurations[i].JsFunction);
  411. }
  412. ;
  413. if (appconfigurations[i].SettingUrl != null && appconfigurations[i].SettingUrl != "") {
  414. settingurl.push(appconfigurations[i].SettingUrl);
  415. }
  416. icon = appconfigurations[i].Icon;
  417. if (appconfigurations[i].SettingUrlType == Unibase.Platform.Apps.Enums.SettingUrlType.Form && appconfigurations[i].AppConfigType == Unibase.Platform.Apps.Enums.AppConfigeType.DetailSetting) {
  418. onclickurl = "onclick='Unibase.Platform.Helpers.NavigationHelper.Instance().loadDetailSettingForm(" + appconfigurations[i].FormId + ", " + obj._recordId + ", " + appconfigurations[i].AppConfigurationId + ")'";
  419. }
  420. if (appconfigurations[i].SettingUrlType == Unibase.Platform.Apps.Enums.SettingUrlType.JsFunction) {
  421. onclickurl = "";
  422. }
  423. if (appconfigurations[i].Icon != null && appconfigurations[i].Icon != "null" && appconfigurations[i].Icon != "") {
  424. confightml += '<li class="mt-5 mb-5 mr-2 detail-setting-item li_DetailSetting_' + obj._installedAppId + '_' + sname + '" id="li_DetailSetting_' + obj._installedAppId + '_' + sname + '"><a href="javascript:;" class="font-12 font-md-14 btn btn-sm detail-setting-btn';
  425. confightml += ' btn-outline-primary ';
  426. confightml += ' DetailSetting_' + obj._installedAppId + '_' + sname + '" id="DetailSetting_' + obj._installedAppId + '_' + sname + '" ' + onclickurl + '">' + '<span class="' + appconfigurations[i].Icon + ' line-height-0" > </span> ' + settingname + '</a></li>';
  427. }
  428. else {
  429. confightml += '<li class="mt-5 mb-5 mr-2 detail-setting-item li_DetailSetting_' + obj._installedAppId + '_' + sname + '" id="li_DetailSetting_' + obj._installedAppId + '_' + sname + '"><a href="javascript:;" class="font-12 font-md-14 btn btn-sm detail-setting-btn';
  430. confightml += ' btn-outline-primary ';
  431. confightml += ' DetailSetting_' + obj._installedAppId + '_' + sname + '" id="DetailSetting_' + obj._installedAppId + '_' + sname + '" ' + onclickurl + '">' + settingname + '</a></li>';
  432. }
  433. }
  434. else {
  435. if (!Unibase.Platform.Membership.Infos.Identity.getCurrentUser().isAdmin) {
  436. appconfigurations[i].IsOwner = response.result.IsOwner;
  437. appconfigurations[i].IsManager = response.result.IsManager;
  438. }
  439. configurations.push(appconfigurations[i]);
  440. }
  441. }
  442. }
  443. $(`#${lastContainerId}`).find('.div_detailconfigurations_headerbtns').html('').append(confightml);
  444. if ($(`#${lastContainerId}`).find('.div_detailconfigurations_headerbtns li').length > 0 || $(`#${lastContainerId}`).find('#div_detail_notification_list .task').length > 0) {
  445. $(`#detailActionsWidget_${lastContainerId}`).removeClass('d-none');
  446. }
  447. else {
  448. $(`#detailActionsWidget_${lastContainerId}`).addClass('d-none');
  449. }
  450. $('.detail-close').removeClass('d-none');
  451. if (obj._detailsHeader != true) {
  452. $(panel).find("#div_App_DefaultWidget").html(html);
  453. }
  454. else {
  455. $(panel).find(".app_defaultwidget").addClass("hidden");
  456. $(panel).find("#div_App_DefaultWidget").html(html);
  457. instance.evaluateDefaultWidgetCallback(panel, false, false);
  458. }
  459. instance.loadHeaderAvatar(panel);
  460. instance.toggleAppDefaultWidget(panel);
  461. }
  462. }
  463. }
  464. if (settingurl.length > 0 && detailsettingjs.length > 0) {
  465. instance.fileCacheHelper.loadJsFiles(settingurl, function (resp) {
  466. for (var i = 0; i < detailsettingjs.length; i++) {
  467. eval(detailsettingjs[i]);
  468. }
  469. });
  470. }
  471. if (callback != null)
  472. callback();
  473. if (configurations.length > 0) {
  474. instance.loadAppConfigurations(configurations, containerId);
  475. }
  476. else {
  477. let checkEditsScreen = $("#DetailsProperties_" + containerId).find(".editscreen_view").length;
  478. if (checkEditsScreen == 0) {
  479. $("#DetailsProperties_" + containerId).append('<a href="javascript::" id="editscreen" class="dropdown-item editscreen_view" onclick="Unibase.Themes.Compact.Components.Details.Instance().addWidget();">Edit Screen</a>');
  480. }
  481. if (!userinfo.isAdmin) {
  482. $("#DetailsProperties_" + containerId).find("#editscreen").addClass('hidden');
  483. $(".div_configurationsetting").addClass('hidden');
  484. }
  485. }
  486. let isStageOrStatusPresent = false;
  487. if (stages != null && stages.length > 0) {
  488. $(".div_details_stages").removeClass('hidden');
  489. instance.loadStages(stages, obj._installedAppId, panel);
  490. isStageOrStatusPresent = true;
  491. instance.toggleStagesOnMobileScroll(panel);
  492. }
  493. if (statusinfo != null || statusinfo != undefined) {
  494. statusinfo = Object.keys(statusinfo).map(function (key) {
  495. return [key, statusinfo[key]];
  496. });
  497. if (statusinfo.length > 0) {
  498. instance.loadRowStatusList(panel, statusinfo);
  499. isStageOrStatusPresent = true;
  500. instance.toggleStagesOnMobileScroll(panel);
  501. }
  502. if (($(".btnChangeStage").contents().length) == 0) {
  503. $(".div_details_stages").removeClass('d-none d-sm-block');
  504. $(".div_details_stages").addClass('hidden');
  505. $(".btnstagemobileview").addClass('hidden').removeClass("d-flex");
  506. }
  507. }
  508. if (!installedappinfo.IsDynamic) {
  509. $(".div_details_stages").removeClass('d-none d-sm-block');
  510. }
  511. if (instance.isSystemLock) {
  512. $(".div_details_lock").removeClass("d-none");
  513. }
  514. }
  515. else {
  516. let VisibleContainerId = instance.navigationHelper.getLastContainerId();
  517. $('#' + VisibleContainerId).find('#div_message').addClass('w-95 ml-35 mt-2');
  518. $('#' + VisibleContainerId).find('#detail-close').removeClass('d-none');
  519. $('#' + VisibleContainerId).find('.block-on-mobile').removeClass('d-flex').addClass('d-none');
  520. instance.navigationHelper.hideLoading();
  521. MessageHelper.Instance().showError(response.message, 'div_message', VisibleContainerId);
  522. $('#' + VisibleContainerId).find('#detail-close').off('click').on('click', function () {
  523. if ($(`#${VisibleContainerId}`).hasClass('_bizgaze_popup_container')) {
  524. instance.navigationHelper.closePopUp();
  525. }
  526. else {
  527. Unibase.Platform.Helpers.NavigationHelper.Instance().close(VisibleContainerId, null);
  528. }
  529. });
  530. }
  531. });
  532. }
  533. div_App_DefaultWidgetSettings_toggle(e) {
  534. if ($(e.currentTarget).find('#div_App_DefaultWidgetSettings_angledown').hasClass('div_App_DefaultWidgetSettings_toggle_down')) {
  535. $(e.currentTarget).find('#div_App_DefaultWidgetSettings_angledown').removeClass('div_App_DefaultWidgetSettings_toggle_down').addClass('div_App_DefaultWidgetSettings_toggle_right');
  536. }
  537. else {
  538. $(e.currentTarget).find('#div_App_DefaultWidgetSettings_angledown').removeClass('div_App_DefaultWidgetSettings_toggle_right').addClass('div_App_DefaultWidgetSettings_toggle_down');
  539. }
  540. $(e.currentTarget).parents('.detail-container-content').find('.ApprovalTasks').toggleClass('hidden');
  541. $('.ActionsApprovalError').toggleClass('hidden');
  542. }
  543. updateToOldStageIdInMobileMode(installedappid, inputParam) {
  544. const instance = this;
  545. if (!instance.mobileLMode) {
  546. const oldId = Number(Unibase.Themes.Providers.Detail_Settings.Instance().InputParameters.find(x => x.Key == `hf_${installedappid}_${inputParam}`).Value);
  547. const containerId = instance.navigationHelper.getLastContainerId();
  548. $(`#${containerId}`).find('.stage-change-select').val(oldId);
  549. }
  550. }
  551. loadAppConfigurations(Configurations, containerid) {
  552. var instance = this;
  553. var filecachehelper = this.fileCacheHelper;
  554. var html = "";
  555. var updatehtml = "";
  556. var recordid = Unibase.Themes.Providers.DetailHelper.recordId;
  557. var installedappid = Unibase.Themes.Providers.DetailHelper.installedAppId;
  558. var userinfo = Unibase.Platform.Membership.Infos.Identity.getCurrentUser();
  559. var detailConfigjs = [];
  560. var detailSettingUrl = [];
  561. let VisibleContainerId = Unibase.Platform.Helpers.NavigationHelper.ModalContainerIds[Unibase.Platform.Helpers.NavigationHelper.ModalContainerIds.length - 1];
  562. $("#DetailsProperties_" + containerid).empty();
  563. if ($(".Detail_Configurations_" + containerid).find(".update").length > 0) {
  564. $(".Detail_Configurations_" + containerid).find(".update").empty();
  565. }
  566. let checkEditsScreen = $("#DetailsProperties_" + containerid).find(".editscreen_view").length;
  567. if (checkEditsScreen == 0) {
  568. $("#DetailsProperties_" + containerid).append('<a href="javascript::" id="editscreen" class="dropdown-item editscreen_view" onclick="Unibase.Themes.Compact.Components.Details.Instance().addWidget();">Edit Screen</a>');
  569. }
  570. Unibase.Platform.Apps.Managers.AppManager.Instance().getInstallApp(recordid).then(function (appResponse) {
  571. for (let i = 0; i < Configurations.length; i++) {
  572. var response = Configurations[i];
  573. if (!userinfo.isAdmin) {
  574. var createdbyid = Number(Unibase.Themes.Providers.Detail_Settings.Instance().InputParameters.find(x => x.Key == "hf_" + installedappid + "_createdby").Value);
  575. if (createdbyid == userinfo.userId) {
  576. response.IsOwner = true;
  577. }
  578. }
  579. if (instance.isSystemLock == false) {
  580. if (Number(response.SettingUrlType) == Unibase.Platform.Apps.Enums.SettingUrlType.Form && Number(response.AppConfigType) == Unibase.Platform.Apps.Enums.AppConfigeType.Details && response.Ungrouped == true) {
  581. var onclickhtml = "Unibase.Platform.Helpers.NavigationHelper.Instance().loadForm(" + response.FormId + ", " + recordid + ", " + response.AppConfigurationId + ")";
  582. if (userinfo.isAdmin || response.PermissionName == "Admin" || response.PermissionName == "Allow") {
  583. updatehtml += '<a class="btn btn-outline-light border d-flex align-items-center mr-10 biz-highlight-bg-color font-14" href = "javascript:;" onclick="' + onclickhtml + '" id = "btn_' + response.SettingName + '" > <span class="' + response.Icon + ' line-height-0"></span><span class="ml-1 d-none d-sm-block">Edit</span></a>';
  584. }
  585. else if (response.PermissionName == "Owner") {
  586. if (response.IsOwner) {
  587. updatehtml += '<a class="btn btn-outline-light border d-flex align-items-center mr-10 biz-highlight-bg-color font-14" href = "javascript:;" onclick="' + onclickhtml + '" id = "btn_' + response.SettingName + '" ><span class="' + response.Icon + ' line-height-0"></span><span class="ml-1 d-none d-sm-block">Edit</span> </a>';
  588. }
  589. }
  590. else if (response.PermissionName == "Manager") {
  591. if (response.IsManager || response.IsOwner) {
  592. updatehtml += '<a class="btn btn-outline-light border d-flex align-items-center mr-10 biz-highlight-bg-color font-14" href = "javascript:;" onclick="' + onclickhtml + '" id = "btn_' + response.SettingName + '" > <span class="' + response.Icon + ' line-height-0"></span><span class="ml-1 d-none d-sm-block">Edit</span></a>';
  593. }
  594. }
  595. if (response.JsFunction != "" && response.JsFunction != null) {
  596. detailConfigjs.push(response.JsFunction);
  597. }
  598. if (response.SettingUrl != "" && response.SettingUrl != null) {
  599. detailSettingUrl.push(response.SettingUrl);
  600. }
  601. }
  602. if (Number(response.SettingUrlType) == Unibase.Platform.Apps.Enums.SettingUrlType.JsFunction && Number(response.AppConfigType) == Unibase.Platform.Apps.Enums.AppConfigeType.Details && response.Ungrouped == true) {
  603. var jsfunction = response.JsFunction;
  604. filecachehelper.loadJsFile(response.SettingUrl == null ? "" : response.SettingUrl, function () { });
  605. if (userinfo.isAdmin || response.PermissionName == "Admin") {
  606. updatehtml += '<a class="btn btn-sm btn-outline-light border mr-2 ml-2 d-flex align-items-center" href = "javascript:;" onclick="' + jsfunction + '" id = "btn_' + response.SettingName + '" > <span class="' + response.Icon + ' font-10" > </span></a>';
  607. }
  608. else if (response.PermissionName == "Owner") {
  609. if (response.IsOwner) {
  610. updatehtml += '<a class="btn btn-sm btn-outline-light border mr-2 ml-2 d-flex align-items-center" href = "javascript:;" onclick="' + jsfunction + '" id = "btn_' + response.SettingName + '" > <span class="' + response.Icon + ' font-10" > </span></a>';
  611. }
  612. }
  613. else if (response.PermissionName == "Manager") {
  614. if (response.IsManager || response.IsOwner) {
  615. updatehtml += '<a class="btn btn-sm btn-outline-light border mr-2 ml-2 d-flex align-items-center" href = "javascript:;" onclick="' + jsfunction + '" id = "btn_' + response.SettingName + '" > <span class="' + response.Icon + ' font-10" > </span></a>';
  616. }
  617. }
  618. }
  619. if (Number(response.SettingUrlType) == Unibase.Platform.Apps.Enums.SettingUrlType.JsFunction && Number(response.AppConfigType) == Unibase.Platform.Apps.Enums.AppConfigeType.Details && response.Ungrouped == false) {
  620. var jsfunction = response.JsFunction;
  621. filecachehelper.loadJsFile(response.SettingUrl == null ? "" : response.SettingUrl, function () { });
  622. if (userinfo.isAdmin || response.PermissionName == "Admin") {
  623. html += "<a href='javascript:;' id='Setting_" + response.AppConfigurationId + "_" + response.SettingName + "' class='dropdown-item' onclick='" + jsfunction + "'>" + response.SettingName + "</a>";
  624. }
  625. else if (response.PermissionName == "Owner") {
  626. if (response.IsOwner) {
  627. html += "<a href='javascript:;' id='Setting_" + response.AppConfigurationId + "_" + response.SettingName + "' class='dropdown-item' onclick='" + jsfunction + "'>" + response.SettingName + "</a>";
  628. }
  629. }
  630. else if (response.PermissionName == "Manager") {
  631. if (response.IsManager || response.IsOwner) {
  632. html += "<a href='javascript:;' id='Setting_" + response.AppConfigurationId + "_" + response.SettingName + "' class='dropdown-item' onclick='" + jsfunction + "'>" + response.SettingName + "</a>";
  633. }
  634. }
  635. }
  636. if (Number(response.SettingUrlType) == Unibase.Platform.Apps.Enums.SettingUrlType.Form && Number(response.AppConfigType) == Unibase.Platform.Apps.Enums.AppConfigeType.Details && response.Ungrouped == false) {
  637. var onclickhtml = "Unibase.Platform.Helpers.NavigationHelper.Instance().loadForm(" + response.FormId + ", " + recordid + ", " + response.AppConfigurationId + ")";
  638. if (userinfo.isAdmin || response.PermissionName == "Admin" || response.PermissionName == "Allow") {
  639. html += "<a href='javascript:;' id='Setting_" + response.AppConfigurationId + "_" + response.SettingName + "' class='dropdown-item' onclick='" + onclickhtml + "'>" + response.SettingName + "</a>";
  640. }
  641. else if (response.PermissionName == "Owner") {
  642. if (response.IsOwner) {
  643. html += "<a href='javascript:;' id='Setting_" + response.AppConfigurationId + "_" + response.SettingName + "' class='dropdown-item' onclick='" + onclickhtml + "'>" + response.SettingName + "</a>";
  644. }
  645. }
  646. else if (response.PermissionName == "Manager") {
  647. if (response.IsManager || response.IsOwner) {
  648. html += "<a href='javascript:;' id='Setting_" + response.AppConfigurationId + "_" + response.SettingName + "' class='dropdown-item' onclick='" + onclickhtml + "'>" + response.SettingName + "</a>";
  649. }
  650. }
  651. }
  652. if (Number(response.SettingUrlType) == Unibase.Platform.Apps.Enums.SettingUrlType.Status && Number(response.AppConfigType) == Unibase.Platform.Apps.Enums.AppConfigeType.Details) {
  653. var jsfunction = response.JsFunction;
  654. filecachehelper.loadJsFile(response.SettingUrl == null ? "" : response.SettingUrl, function () { });
  655. var statusid = Number(Unibase.Themes.Providers.Detail_Settings.Instance().InputParameters.find(x => x.Key == "hf_" + installedappid + "_statusid").Value);
  656. if (userinfo.isAdmin || response.PermissionName == "Admin") {
  657. if (statusid != undefined) {
  658. if (statusid != 0 && statusid != 1) {
  659. var onclickurl = 'Unibase.Themes.Compact.Components.Details.Instance().changeStatus(1,' + recordid + ')';
  660. html += "<a href='javascript:;' id='Setting_'" + response.AppConfigurationId + "_Activate' class='dropdown-item' onclick='" + onclickurl + "'>Activate</a>";
  661. }
  662. else {
  663. var onclickurl = 'Unibase.Themes.Compact.Components.Details.Instance().changeStatus(2,' + recordid + ')';
  664. html += "<a href='javascript:;' id='Setting_" + response.AppConfigurationId + "_" + response.SettingName + "' class='dropdown-item' onclick='" + onclickurl + "'>" + response.SettingName + "</a>";
  665. }
  666. }
  667. else {
  668. MessageHelper.Instance().showError("Please select statusid column in report", "div_message", VisibleContainerId);
  669. }
  670. }
  671. else if (response.PermissionName == "Owner") {
  672. if (response.IsOwner) {
  673. if (statusid != 0 && statusid != 1) {
  674. var onclickurl = 'Unibase.Themes.Compact.Components.Details.Instance().changeStatus(1,' + recordid + ')';
  675. html += "<a href='javascript:;' id='Setting_'" + response.AppConfigurationId + "_Activate' class='dropdown-item' onclick='" + onclickurl + "'>Activate</a>";
  676. }
  677. else {
  678. var onclickurl = 'Unibase.Themes.Compact.Components.Details.Instance().changeStatus(2,' + recordid + ')';
  679. html += "<a href='javascript:;' id='Setting_" + response.AppConfigurationId + "_" + response.SettingName + "' class='dropdown-item' onclick='" + onclickurl + "'>" + response.SettingName + "</a>";
  680. }
  681. }
  682. }
  683. else if (response.PermissionName == "Manager") {
  684. if (response.IsManager || response.IsOwner) {
  685. if (statusid != 0 && statusid != 1) {
  686. var onclickurl = 'Unibase.Themes.Compact.Components.Details.Instance().changeStatus(1,' + recordid + ')';
  687. html += "<a href='javascript:;' id='Setting_'" + response.AppConfigurationId + "_Activate' class='dropdown-item' onclick='" + onclickurl + "'>Activate</a>";
  688. }
  689. else {
  690. var onclickurl = 'Unibase.Themes.Compact.Components.Details.Instance().changeStatus(2,' + recordid + ')';
  691. html += "<a href='javascript:;' id='Setting_" + response.AppConfigurationId + "_" + response.SettingName + "' class='dropdown-item' onclick='" + onclickurl + "'>" + response.SettingName + "</a>";
  692. }
  693. }
  694. }
  695. }
  696. if (Number(response.SettingUrlType) == Unibase.Platform.Apps.Enums.SettingUrlType.JsFunction && Number(response.AppConfigType) == Unibase.Platform.Apps.Enums.AppConfigeType.Status) {
  697. var jsfunction = response.JsFunction;
  698. filecachehelper.loadJsFile(response.SettingUrl == null ? "" : response.SettingUrl, function () { });
  699. if (appResponse.result.StatusId == 1) {
  700. html += "<a href='javascript:;' id='Setting_" + response.AppConfigurationId + "_Uninstall' class='dropdown-item setting_status' onclick='" + jsfunction + "'>Uninstall</a>";
  701. }
  702. else {
  703. html += "<a href='javascript:;' id='Setting_" + response.AppConfigurationId + "_Install' class='dropdown-item setting_status' onclick='" + jsfunction + "'>Install</a>";
  704. }
  705. }
  706. }
  707. }
  708. if (html != "") {
  709. $("#DetailsProperties_" + containerid).find("#editscreen").before(html);
  710. }
  711. $(".Detail_Configurations_" + containerid).contents().not(".div_configurationsetting").remove();
  712. $(".Detail_Configurations_" + containerid).find(".div_configurationsetting").before(updatehtml);
  713. if (detailSettingUrl.length > 0) {
  714. instance.fileCacheHelper.loadJsFiles(detailSettingUrl, function (resp) {
  715. for (var i = 0; i < detailConfigjs.length; i++) {
  716. eval(detailConfigjs[i]);
  717. }
  718. });
  719. }
  720. if ($(window).width() < 576) {
  721. $("#DetailsProperties_" + containerid).find("#editscreen").remove();
  722. if ($('.div_configurationsetting').find("#DetailsProperties_" + containerid).children().length == 0) {
  723. $('.div_configurationsetting').addClass("d-none");
  724. }
  725. }
  726. if (!userinfo.isAdmin) {
  727. let detailsPropContainer = $("#DetailsProperties_" + containerid);
  728. detailsPropContainer.find("#editscreen").addClass('hidden');
  729. if (detailsPropContainer.children().length == 1) {
  730. if (!($(window).width() < 576)) {
  731. detailsPropContainer.parent().addClass('d-none');
  732. }
  733. if (detailsPropContainer.children().length == 0) {
  734. detailsPropContainer.closest('.div_configurationsetting').addClass('hidden');
  735. }
  736. }
  737. }
  738. });
  739. }
  740. loadRowStatusList(panel, statuslist) {
  741. const instance = this;
  742. var recordid = Unibase.Themes.Providers.DetailHelper.recordId;
  743. var installedappid = Unibase.Themes.Providers.DetailHelper.installedAppId;
  744. $(panel).find(".layout-details-stages,.stage-change-select").empty();
  745. if (statuslist != null && statuslist.length > 0) {
  746. var currentstatusid = Number(Unibase.Themes.Providers.Detail_Settings.Instance().InputParameters.find(x => x.Key == "hf_" + installedappid + "_statusid").Value);
  747. $(".div_details_stages").removeClass('hidden');
  748. $(panel).find(".stage-change-select").addClass('row-status-select');
  749. for (var i = 0; i < statuslist.length; i++) {
  750. var statusid = statuslist[i][1];
  751. var statusname = statuslist[i][0];
  752. var color;
  753. if (statusname == "Active") {
  754. color = "green";
  755. }
  756. else if (statusname == "InActive") {
  757. color = "orange";
  758. }
  759. else {
  760. color = "red";
  761. }
  762. let html = '';
  763. if (instance.mobileLMode) {
  764. html = '<a href="javascript:;" class="dropdown-item clear status-list-addedItem" id="StatusId_' + statusid + '" onclick="Unibase.Themes.Compact.Components.Details.Instance().changeStatus(' + statusid + ',' + recordid + ')"><i class="badge badge-' + color + ' badge-indicator mr-10"></i> ' + statusname + '</a>';
  765. $(panel).find(".layout-details-stages").append(html);
  766. }
  767. else {
  768. html = `<option value="${statusid}" data-recordid="${recordid}">${statusname}</option>`;
  769. $(panel).find(".stage-change-select").append(html);
  770. if ($(panel).find(".stage-change-select option").length == 0) {
  771. $(panel).find(".stage-change-select").addClass("d-none").removeClass("d-flex");
  772. }
  773. }
  774. if (statusid == currentstatusid) {
  775. $(panel).find(".btnChangeStage").html('<i class="fa fa-check-circle-o statuscircle pull-left mt-1"></i><span>' + statusname + '</span><i class="fa fa-angle-down pull-right mt-1 font-18"></i>');
  776. $('.btnChangeStage').removeAttr("style");
  777. $('.btnChangeStage').attr("style", "border:solid 1px " + color + "");
  778. $("#StatusId_" + statusid + "").addClass('disabled');
  779. $("#StatusId_" + statusid + "").removeAttr('onclick');
  780. $(panel).find(".stage-change-select").val(statusid);
  781. }
  782. }
  783. }
  784. }
  785. changeStatus(statusid, recordid) {
  786. var instance = this;
  787. var installedAppId = Unibase.Themes.Providers.DetailHelper.installedAppId;
  788. let VisibleContainerId = Unibase.Platform.Helpers.NavigationHelper.ModalContainerIds[Unibase.Platform.Helpers.NavigationHelper.ModalContainerIds.length - 1];
  789. var versionGuid = "";
  790. var index = Unibase.Themes.Providers.Detail_Settings.Instance().InputParameters.findIndex(x => x.Key == "hf_" + installedAppId + "_versionguid");
  791. if (index > 0) {
  792. versionGuid = Unibase.Themes.Providers.Detail_Settings.Instance().InputParameters.find(x => x.Key == "hf_" + installedAppId + "_versionguid").Value;
  793. }
  794. else {
  795. MessageHelper.Instance().showError("Need to add versionguid column to your report", 'div_message', VisibleContainerId);
  796. return false;
  797. }
  798. if (statusid == 2)
  799. var msg = "Are you sure you want to De-Activate ?";
  800. else if (statusid == 1)
  801. var msg = "Are you sure you want to Activate ?";
  802. else
  803. var msg = "Are you sure you want to Delete ?";
  804. bootbox.confirm({
  805. message: msg,
  806. closeButton: false,
  807. buttons: {
  808. confirm: {
  809. label: 'Yes',
  810. className: 'btn-success'
  811. },
  812. cancel: {
  813. label: 'No',
  814. className: 'btn-defualt'
  815. }
  816. },
  817. callback: function (result) {
  818. if (result) {
  819. instance.appmanager.getInstallApp(installedAppId).then(function (appresponse) {
  820. if (appresponse.result != null) {
  821. var doctypeid = appresponse.result.DefaultDocTypeId;
  822. if (doctypeid != 0 && doctypeid != undefined) {
  823. instance.appmanager.saveStatus(statusid, doctypeid, recordid, versionGuid).then(function (statusresponse) {
  824. Unibase.Platform.Helpers.NavigationHelper.IsListRefresh = true;
  825. if (statusresponse.status == Unibase.Data.Status.Error) {
  826. MessageHelper.Instance().showError(appresponse.result.AppTitle + " " + statusresponse.message, "div_message", VisibleContainerId);
  827. instance.updateToOldStageIdInMobileMode(installedAppId, 'statusid');
  828. }
  829. else {
  830. MessageHelper.Instance().showSuccess(appresponse.result.AppTitle + " " + statusresponse.message, "div_message");
  831. var obj = Unibase.Themes.Compact.Components.Details.Instance();
  832. obj._recordId = Unibase.Themes.Compact.Components.Details.Instance()._recordId;
  833. obj._installedAppId = Unibase.Themes.Compact.Components.Details.Instance()._installedAppId;
  834. instance.loadPortlets(obj);
  835. Unibase.Platform.Helpers.NavigationHelper.IsListRefresh = true;
  836. instance.isDetailsUpdated = true;
  837. }
  838. });
  839. }
  840. else {
  841. MessageHelper.Instance().showError("Please Select Doctype", "div_message", VisibleContainerId);
  842. }
  843. }
  844. });
  845. }
  846. else {
  847. instance.updateToOldStageIdInMobileMode(installedAppId, 'statusid');
  848. }
  849. }
  850. });
  851. }
  852. loadStages(response, InstalledAppId, panel) {
  853. var instance = this;
  854. Details.Instance().changestagedata = "";
  855. var html = "";
  856. let shortcodes = [];
  857. var userinfo = Unibase.Platform.Membership.Infos.Identity.getCurrentUser();
  858. $(panel).find(".layout-details-stages,.stage-change-select").empty();
  859. if (response != null && response.length > 0) {
  860. $(panel).find(".layout-details-stages").find(".content").html(html);
  861. $(panel).find(".list-group-stages").html('');
  862. var currentstageid = Number(Unibase.Themes.Providers.Detail_Settings.Instance().InputParameters.find(x => x.Key == "hf_" + InstalledAppId + "_stageid").Value);
  863. let currentstageindex = 0;
  864. let disableStages = "";
  865. for (var i = 0; i < response.length; i++) {
  866. shortcodes.push(response[i].ShortCode);
  867. if (response[i].StageId == currentstageid) {
  868. $(panel).find(".btnChangeStage").html('<i class="fa fa-check-circle-o statuscircle pull-left "></i> <span class="text-truncate">' + response[i].StageName + '</span><i class="fa fa-angle-down pull-right font-16"></i>');
  869. $(panel).find(".btnChangeStageshort").html('<i class="fa fa-check-circle-o statuscircle pull-left pt-1"></i><span class="text-truncate">' + response[i].ShortCode + '</span><i class="fa fa-angle-down pull-right pt-1"></i>');
  870. $(panel).find('.btnChangeStage').removeAttr("style");
  871. $(panel).find('.btnChangeStage .statuscircle').css({ "color": "" + response[i].ColorCode + "" });
  872. $(panel).find('.btnChangeStage').css({ "padding": "0px 15px" });
  873. $(panel).find('.btnChangeStageshort').removeAttr("style");
  874. $(panel).find('.btnChangeStageshort').css({ "border": "solid 1px #000000" });
  875. $(panel).find('.btnChangeStageshort .statuscircle').css({
  876. "color": "" + response[i].ColorCode + ""
  877. });
  878. }
  879. if (userinfo.isAdmin == true) {
  880. instance.loadstagedesign(panel, response[i], InstalledAppId);
  881. }
  882. else {
  883. if (response[i].ChangeAll && response[i].StageRoles == null) {
  884. instance.loadstagedesign(panel, response[i], InstalledAppId);
  885. }
  886. if (response[i].StageRoles != null && response[i].StageRoles.length != 0) {
  887. for (var j = 0; j < response[i].StageRoles.length; j++) {
  888. if (response[i].ChangeAll && (!response[i].StageRoles[j].ExcludeChangeRole)) {
  889. instance.loadstagedesign(panel, response[j], InstalledAppId);
  890. }
  891. }
  892. }
  893. if (response[i].ChangeAll == false && response[i].StageRoles != null && response[i].StageRoles.length > 0) {
  894. instance.loadstagedesign(panel, response[i], InstalledAppId);
  895. }
  896. }
  897. if (response[i].StageId == currentstageid) {
  898. $(panel).find(".layout-details-stages").find("#StageId_" + response[i].StageId).addClass("disabled");
  899. $(panel).find(".layout-details-stages").find("#StageId_" + response[i].StageId).removeAttr("onclick");
  900. let containerId = Unibase.Platform.Helpers.NavigationHelper.ModalContainerIds[Unibase.Platform.Helpers.NavigationHelper.ModalContainerIds.length - 1];
  901. const stageSelectEl = $(panel).find(".stage-change-select");
  902. const selectEl = $(`#stageChangeSelect_${containerId}`).find('option').length;
  903. if ($(".stage-change-select option[value='" + currentstageid + "']").length == 0) {
  904. stageSelectEl.append(`<option value="${response[i].StageId}" selected>${response[i].StageName}</option>`);
  905. }
  906. if (selectEl == 1) {
  907. $(`#stageChangeSelect_${containerId}`).attr('style', '-webkit-appearance: none;-moz-appearance: none;');
  908. }
  909. stageSelectEl.val(response[i].StageId);
  910. }
  911. }
  912. }
  913. if (($(".layout-details-stages").contents().length) == 0) {
  914. $(".layout-details-stages").addClass('d-none').siblings('.btnChangeStage').find('.fa-angle-down').addClass('d-none');
  915. }
  916. }
  917. loadstagedesign(panel, response, installedappid) {
  918. const instance = this;
  919. var currentstagename = "";
  920. if (response.IsDefault) {
  921. currentstagename = response.StageName;
  922. }
  923. var html = '';
  924. if (instance.mobileLMode) {
  925. html = '<a href="javascript:;" class="dropdown-item clear stages-list-addedItem" value=' + response.StageId + ' id="StageId_' + response.StageId + '" onclick="Unibase.Themes.Compact.Components.Details.Instance().change(' + response.StageId + ',' + installedappid + ');"><i class="badge badge-' + response.ColorCode + ' badge-indicator mr-10"></i> ' + response.StageName + '</a>';
  926. $(panel).find(".layout-details-stages").append(html);
  927. }
  928. else {
  929. html = `<option value="${response.StageId}" data-installedappid="${installedappid}">${response.StageName}</option>`;
  930. $(panel).find(".stage-change-select").append(html);
  931. if ($(panel).find(".stage-change-select option").length == 0) {
  932. $(panel).find(".stage-change-select").addClass("d-none").removeClass("d-flex");
  933. }
  934. }
  935. }
  936. change(StageId, InstalledAppId, id) {
  937. var instance = this;
  938. var stagemanager = Unibase.Platform.Apps.Managers.StageManager.Instance();
  939. var oldstageid;
  940. if (Unibase.Themes.Providers.Detail_Settings.Instance().InputParameters.length > 0) {
  941. oldstageid = Number(Unibase.Themes.Providers.Detail_Settings.Instance().InputParameters.find(x => x.Key == "hf_" + InstalledAppId + "_stageid").Value);
  942. }
  943. else {
  944. let stagename;
  945. oldstageid = Number($('#' + id).attr('data-oldstageid'));
  946. if ($('#' + id + '[data-kanban2view="stagechange"][data-stagechange="true"]').length > 0) {
  947. stagename = $('#' + id + '[data-kanban2view="stagechange"][data-stagechange="true"]').attr('data-stagename');
  948. oldstageid = Number(StageId);
  949. StageId = Number($('#' + id + '[data-kanban2view="stagechange"][data-stagechange="true"]').parent().siblings().find('[data-kanban2view="stagechange"]').attr('data-oldstageid'));
  950. }
  951. else {
  952. stagename = $('#' + id).text();
  953. oldstageid = Number($('#' + id).attr('data-oldstageid'));
  954. }
  955. }
  956. stagemanager.getStage(oldstageid).then(function (oldstageresp) {
  957. stagemanager.getStage(StageId).then(function (stageresp) {
  958. if (stageresp.result.ReasonMandatory == 1) {
  959. var reasons = false;
  960. stagemanager.getStageReasons(StageId).then(function (response) {
  961. if (response.result.length > 0) {
  962. reasons = true;
  963. }
  964. if (stageresp.result.IsForward == true && stageresp.result.IsBackward == false && (stageresp.result.StageIndex > oldstageresp.result.StageIndex)) {
  965. Unibase.Platform.Apps.Components.StageReason.Instance().loaddesign(0, StageId, InstalledAppId, reasons, "Forward");
  966. }
  967. else if (stageresp.result.IsForward == false && stageresp.result.IsBackward == true && (oldstageresp.result.StageIndex > stageresp.result.StageIndex)) {
  968. Unibase.Platform.Apps.Components.StageReason.Instance().loaddesign(0, StageId, InstalledAppId, reasons, "Backward");
  969. }
  970. else if (stageresp.result.IsForward == true && stageresp.result.IsBackward == true) {
  971. Unibase.Platform.Apps.Components.StageReason.Instance().loaddesign(0, StageId, InstalledAppId, reasons, "Both");
  972. }
  973. else {
  974. Details.Instance().changeStage(StageId, InstalledAppId, 0, '', 0, id);
  975. }
  976. });
  977. }
  978. else {
  979. Details.Instance().changeStage(StageId, InstalledAppId, 0, '', 0, id);
  980. }
  981. });
  982. });
  983. }
  984. changeStage(StageId, InstalledAppId, reasonid = 0, reason = '', refstatusid = 0, id) {
  985. var instance = this, oldstageid, VersionGuid, recordid;
  986. let VisibleContainerId = Unibase.Platform.Helpers.NavigationHelper.ModalContainerIds[Unibase.Platform.Helpers.NavigationHelper.ModalContainerIds.length - 1];
  987. var userinfo = Unibase.Platform.Membership.Infos.Identity.getCurrentUser();
  988. if (Unibase.Themes.Providers.Detail_Settings.Instance().InputParameters.length > 0) {
  989. VersionGuid = Unibase.Themes.Providers.Detail_Settings.Instance().InputParameters.find(x => x.Key == "hf_" + InstalledAppId + "_versionguid").Value;
  990. oldstageid = Number(Unibase.Themes.Providers.Detail_Settings.Instance().InputParameters.find(x => x.Key == "hf_" + InstalledAppId + "_stageid").Value);
  991. recordid = Number(Unibase.Themes.Providers.Detail_Settings.Instance().InputParameters.find(x => x.Key == "hf_" + InstalledAppId + "_recordid").Value);
  992. }
  993. else {
  994. if (id == undefined || id == null) {
  995. id = $('[data-stage2event="true"][data-click2event="active"]').attr('id');
  996. }
  997. VersionGuid = $('#' + id).attr('data-versionguid');
  998. oldstageid = Number($('#' + id).attr('data-oldstageid'));
  999. recordid = Number($('#' + id).attr('data-record2id'));
  1000. }
  1001. if (oldstageid != 0 && recordid != 0 && InstalledAppId != 0) {
  1002. if (StageId != 0 || refstatusid != 0) {
  1003. Unibase.Themes.Providers.Detail_Settings.Instance().InputParameters.push({
  1004. Key: "hf_" + InstalledAppId + "_" + "newstageid",
  1005. Value: StageId.toString(),
  1006. DataType: typeof (StageId)
  1007. });
  1008. let postData = {
  1009. VersionGuid: VersionGuid,
  1010. StageId: Number(StageId),
  1011. InstalledAppId: Number(InstalledAppId),
  1012. OldStageId: Number(oldstageid),
  1013. RefStatusId: refstatusid
  1014. };
  1015. if (reasonid != 0 && reasonid != undefined) {
  1016. postData.StageReasonId = reasonid;
  1017. }
  1018. if (reason != null && reason != undefined && reason != "") {
  1019. postData.Description = reason;
  1020. }
  1021. Unibase.Themes.Compact.Components.Details.Instance().PostData = postData;
  1022. var FormId = 0;
  1023. if (StageId != 0) {
  1024. Unibase.Platform.Apps.Managers.StageManager.Instance().getStage(StageId).then(function (response) {
  1025. FormId = response.result.FormId;
  1026. if (FormId != 0) {
  1027. Unibase.Platform.Helpers.NavigationHelper.Instance().loadForm(FormId, recordid, 0, 0, function () {
  1028. Unibase.Themes.Compact.Components.Details.Instance().StageChange(Unibase.Themes.Compact.Components.Details.Instance().PostData, Unibase.Themes.Providers.DetailHelper.installedAppId);
  1029. });
  1030. }
  1031. else {
  1032. Unibase.Themes.Compact.Components.Details.Instance().StageChange(postData, InstalledAppId);
  1033. }
  1034. });
  1035. }
  1036. else {
  1037. Unibase.Themes.Compact.Components.Details.Instance().StageChange(postData, InstalledAppId);
  1038. }
  1039. }
  1040. else {
  1041. MessageHelper.Instance().showError("Newstageid or refstatusid should not be 0", "div_message", VisibleContainerId);
  1042. }
  1043. }
  1044. else {
  1045. MessageHelper.Instance().showError("Installedappid,Recordid,Oldstageid,Newstageid should not be 0", "div_message", VisibleContainerId);
  1046. }
  1047. }
  1048. StageChange(postData, InstalledAppId) {
  1049. var instance = this;
  1050. let VisibleContainerId = Unibase.Platform.Helpers.NavigationHelper.ModalContainerIds[Unibase.Platform.Helpers.NavigationHelper.ModalContainerIds.length - 1];
  1051. var stagemanager = Unibase.Platform.Apps.Managers.StageManager.Instance();
  1052. instance.navigationHelper.showLoading();
  1053. stagemanager.changeStage(postData).then(function (response) {
  1054. return __awaiter(this, void 0, void 0, function* () {
  1055. if (response.status == Unibase.Data.Status.Error) {
  1056. if ($('#' + VisibleContainerId).find('#div_message').length != 0) {
  1057. MessageHelper.Instance().showError(response.message, 'div_message', VisibleContainerId);
  1058. }
  1059. if (($('#' + VisibleContainerId).find('.portletwidget-item #div_ErrorMessage').length == 0) && ($('#' + VisibleContainerId).find('#div_ErrorMessage').length != 0)) {
  1060. MessageHelper.Instance().showError(response.message, 'div_ErrorMessage', VisibleContainerId);
  1061. }
  1062. instance.updateToOldStageIdInMobileMode(InstalledAppId, 'stageid');
  1063. }
  1064. else {
  1065. MessageHelper.Instance().showSuccess(response.message, '');
  1066. var newstageid = response.result.StageId.toString();
  1067. if (Unibase.Themes.Providers.DetailHelper.installedAppId != 0) {
  1068. Unibase.Themes.Providers.Detail_Settings.Instance().InputParameters.find(x => x.Key == 'hf_' + InstalledAppId + '_stageid').Value = newstageid;
  1069. var obj = Unibase.Themes.Compact.Components.Details.Instance();
  1070. obj._recordId = Unibase.Themes.Compact.Components.Details.Instance()._recordId;
  1071. obj._installedAppId = Unibase.Themes.Compact.Components.Details.Instance()._installedAppId;
  1072. instance.loadPortlets(obj);
  1073. Unibase.Platform.Helpers.NavigationHelper.IsListRefresh = true;
  1074. instance.isDetailsUpdated = true;
  1075. }
  1076. else {
  1077. Unibase.Themes.Providers.Detail_Settings.Instance().InputParameters.pop();
  1078. let fitername = $(`#filters-list${VisibleContainerId} .filter-item.active`).attr('data-filtername');
  1079. $(`#filters-list${VisibleContainerId} .filter-item[data-filtername="${fitername}"] a`).click();
  1080. }
  1081. }
  1082. instance.navigationHelper.hideLoading();
  1083. });
  1084. });
  1085. }
  1086. mobileStageChange(containerId) {
  1087. const instance = this;
  1088. const selectEl = $(`#stageChangeSelect_${containerId}`);
  1089. if (selectEl.hasClass('row-status-select')) {
  1090. const statusId = +selectEl.val();
  1091. const recordId = +selectEl.find('option:selected').attr('data-recordid');
  1092. instance.changeStatus(statusId, recordId);
  1093. }
  1094. else {
  1095. const stageId = +selectEl.val();
  1096. const installedAppId = +selectEl.find('option:selected').attr('data-installedappid');
  1097. instance.change(stageId, installedAppId);
  1098. }
  1099. }
  1100. loadDefaultWidgets(InstalledAppId, panel) {
  1101. return __awaiter(this, void 0, void 0, function* () {
  1102. var instance = this;
  1103. var currentstageid = 0;
  1104. var userinfo = Unibase.Platform.Membership.Infos.Identity.getCurrentUser();
  1105. var detailSettingInstance = Unibase.Themes.Providers.Detail_Settings.Instance();
  1106. if (!userinfo.isAdmin && detailSettingInstance.InputParameters.
  1107. find(x => x.Key == "hf_" + InstalledAppId + "_stageid") != undefined) {
  1108. currentstageid = Number(detailSettingInstance.InputParameters.
  1109. find(x => x.Key == "hf_" + InstalledAppId + "_stageid").Value);
  1110. }
  1111. var activeportletid;
  1112. let ActivePortletIndex = detailSettingInstance.ActivePortlets.findIndex(x => x.InstalledAppId == InstalledAppId);
  1113. if (ActivePortletIndex != -1) {
  1114. activeportletid = detailSettingInstance.ActivePortlets[ActivePortletIndex].ActivePortletId;
  1115. }
  1116. else {
  1117. activeportletid = 0;
  1118. }
  1119. yield this.getportletlayout(InstalledAppId, activeportletid, panel);
  1120. if ($(panel).find('#tab-container').hasClass('ui-sortable') && (Unibase.Themes.Compact.Components.Index.Instance().isAppStructureEnable)) {
  1121. Unibase.Platform.Widgets.Components.Widget.Instance().EditScreen(InstalledAppId);
  1122. }
  1123. });
  1124. }
  1125. loadWidgets(installedappid, portletid, panel) {
  1126. if ($(panel).find('#details-edit-header').not('.d-none').length != 0) {
  1127. $(panel).find('#details-edit-header').find('.portlet-title-span').text($(panel).find('#portletName_' + portletid).text());
  1128. }
  1129. var instance = this;
  1130. let isAppStructure = Unibase.Themes.Compact.Components.Index.Instance().isAppStructureEnable;
  1131. if (instance.isPortletModified) {
  1132. if ((isAppStructure == true && instance.isAppStructEnable == true)) {
  1133. instance.savedChanges(installedappid, portletid, panel);
  1134. }
  1135. else {
  1136. instance.confirmPortletChangesModal(installedappid, portletid, panel);
  1137. }
  1138. }
  1139. else {
  1140. $(panel).find('.tab-container').empty();
  1141. this.unibase_core_activeportletid = portletid;
  1142. var currentstageid = 0;
  1143. var userinfo = Unibase.Platform.Membership.Infos.Identity.getCurrentUser();
  1144. if (!userinfo.isAdmin && Unibase.Themes.Providers.Detail_Settings.Instance().InputParameters.
  1145. find(x => x.Key == "hf_" + installedappid + "_stageid") != undefined) {
  1146. currentstageid = Number(Unibase.Themes.Providers.Detail_Settings.Instance().InputParameters.
  1147. find(x => x.Key == "hf_" + installedappid + "_stageid").Value);
  1148. }
  1149. if (portletid != 0) {
  1150. this.unibase_core_activeportletid = portletid;
  1151. this.reloadWidgetReport(panel);
  1152. let containerId = Unibase.Platform.Helpers.NavigationHelper.Instance().getLastContainerId();
  1153. try {
  1154. Unibase.Themes.Providers.Detail_Settings.Instance().DetailParameters[panel]["ActivePortletId"] = portletid;
  1155. }
  1156. catch (_a) {
  1157. if (containerId.includes('_viewall')) {
  1158. containerId = Unibase.Platform.Helpers.NavigationHelper.ModalContainerIds[Unibase.Platform.Helpers.NavigationHelper.ModalContainerIds.length - 2];
  1159. if (Unibase.Themes.Providers.Detail_Settings.Instance().DetailParameters[containerId] != undefined) {
  1160. Unibase.Themes.Providers.Detail_Settings.Instance().DetailParameters[containerId]["ActivePortletId"] = portletid;
  1161. }
  1162. }
  1163. }
  1164. var activePortletIndex = Unibase.Themes.Providers.Detail_Settings.Instance().ActivePortlets.findIndex(x => x.InstalledAppId == installedappid);
  1165. if (activePortletIndex != -1) {
  1166. Unibase.Themes.Providers.Detail_Settings.Instance().ActivePortlets[activePortletIndex].ActivePortletId = portletid;
  1167. }
  1168. else {
  1169. Unibase.Themes.Providers.Detail_Settings.Instance().ActivePortlets.push({
  1170. InstalledAppId: Number(installedappid),
  1171. ActivePortletId: Number(portletid)
  1172. });
  1173. }
  1174. $("#managePortletBtn .portlet-title-span").text($(`#portletName_${portletid}`).text());
  1175. this.portletmanager.getPortletWidgets(portletid, currentstageid).then(function (response) {
  1176. return __awaiter(this, void 0, void 0, function* () {
  1177. var data = response.result;
  1178. if ($("#" + Unibase.Platform.Helpers.NavigationHelper.Instance().getLastContainerId()).find('#portletTab_' + portletid + ' .findportlets_' + portletid).attr('data_isappstructenable') == 'true') {
  1179. instance.isAppStructEnable = true;
  1180. }
  1181. else {
  1182. instance.isAppStructEnable = false;
  1183. }
  1184. if ((isAppStructure == true && instance.isAppStructEnable == true)) {
  1185. if ($("#" + Unibase.Platform.Helpers.NavigationHelper.Instance().getLastContainerId()).find("#tab-container").hasClass('ui-sortable')) {
  1186. $("#bizgaze_body").addClass("edit-dashboard-mode");
  1187. $("#" + Unibase.Platform.Helpers.NavigationHelper.Instance().getLastContainerId()).find("#addWidgetContainer").addClass('hidden');
  1188. instance.savedChanges(installedappid, portletid, panel);
  1189. }
  1190. else {
  1191. yield instance.btnchange(installedappid, portletid, panel);
  1192. yield instance.getportletlayout(installedappid, portletid, panel);
  1193. }
  1194. }
  1195. else {
  1196. $("#bizgaze_body").removeClass("edit-dashboard-mode");
  1197. yield instance.btnchange(installedappid, portletid, panel);
  1198. yield instance.getportletlayout(installedappid, portletid, panel);
  1199. }
  1200. });
  1201. });
  1202. }
  1203. }
  1204. }
  1205. savedChanges(installedappid, portletid, panel) {
  1206. return __awaiter(this, void 0, void 0, function* () {
  1207. let instance = this;
  1208. var msg = 'Are You Want Save Layout ?';
  1209. if ($("#tab-container").hasClass('ui-sortable') && instance.isPortletModified) {
  1210. bootbox.confirm({
  1211. message: msg,
  1212. closeButton: false,
  1213. buttons: {
  1214. confirm: {
  1215. label: 'OK',
  1216. className: 'btn-success'
  1217. },
  1218. cancel: {
  1219. label: 'Cancel',
  1220. className: 'btn-danger'
  1221. }
  1222. },
  1223. callback: function (result) {
  1224. return __awaiter(this, void 0, void 0, function* () {
  1225. if (result) {
  1226. yield Unibase.Platform.Widgets.Components.Widget.Instance().parentStructures('tab-container', 'portletwidget-item');
  1227. yield Unibase.Platform.Widgets.Components.Widget.Instance().SaveStructureLayout();
  1228. yield instance.btnchange(installedappid, portletid, panel);
  1229. $(panel).find('.tab-container').empty();
  1230. yield instance.getportletlayout(installedappid, portletid, panel);
  1231. yield Unibase.Themes.Compact.Components.Details.Instance().addWidget();
  1232. }
  1233. else {
  1234. yield instance.btnchange(installedappid, portletid, panel);
  1235. yield instance.getportletlayout(installedappid, portletid, panel);
  1236. yield Unibase.Themes.Compact.Components.Details.Instance().addWidget();
  1237. }
  1238. });
  1239. }
  1240. });
  1241. }
  1242. else {
  1243. yield instance.btnchange(installedappid, portletid, panel);
  1244. yield instance.getportletlayout(installedappid, portletid, panel);
  1245. yield Unibase.Themes.Compact.Components.Details.Instance().addWidget();
  1246. }
  1247. instance.isPortletModified = false;
  1248. });
  1249. }
  1250. btnchange(installedappid, portletid, panel) {
  1251. $(".nav-link").removeClass("active");
  1252. $(".collapsedPortlet").removeClass("nav-link active");
  1253. $(".tabid-" + portletid).find(".nav-link").addClass("active");
  1254. $(".tabid-" + portletid).find(".collapsedPortlet").addClass("nav-link active");
  1255. }
  1256. reloadWidgetReport(panel) {
  1257. if (panel.includes('_viewall')) {
  1258. const containerId = panel.replace('#', '');
  1259. const reportInstance = Unibase.Platform.Analytics.Components.ReportViewer.Instance();
  1260. const rv_instance = reportInstance.getReportViewerInstance(containerId);
  1261. Unibase.Platform.Analytics.Components.ReportViewer.Instance().getReportData(rv_instance.ReportId, containerId, rv_instance.reportWidgetData, null);
  1262. return;
  1263. }
  1264. }
  1265. getportletlayout(InstalledAppId, activeportletid, panel) {
  1266. return __awaiter(this, void 0, void 0, function* () {
  1267. let instance = this;
  1268. var currentstageid = 0;
  1269. let VisibleContainerId = Unibase.Platform.Helpers.NavigationHelper.Instance().getLastContainerId();
  1270. if (VisibleContainerId.includes('_viewall')) {
  1271. let wdgtContainerId = VisibleContainerId.replace("_viewall", "");
  1272. let rprtId = Number($(`[class^="${wdgtContainerId}"]`).parent().siblings('#hf_ReportId').val());
  1273. Unibase.Platform.Analytics.Components.ReportViewer.Instance().refreshReportData(rprtId, VisibleContainerId, null);
  1274. VisibleContainerId = Unibase.Platform.Helpers.NavigationHelper.ModalContainerIds[Unibase.Platform.Helpers.NavigationHelper.ModalContainerIds.length - 2];
  1275. }
  1276. var userinfo = Unibase.Platform.Membership.Infos.Identity.getCurrentUser();
  1277. var detailSettingInstance = Unibase.Themes.Providers.Detail_Settings.Instance();
  1278. if (!userinfo.isAdmin && detailSettingInstance.InputParameters.
  1279. find(x => x.Key == "hf_" + InstalledAppId + "_stageid") != undefined) {
  1280. currentstageid = Number(detailSettingInstance.InputParameters.
  1281. find(x => x.Key == "hf_" + InstalledAppId + "_stageid").Value);
  1282. }
  1283. if (Unibase.Themes.Compact.Components.Index.Instance().isAppStructureEnable) {
  1284. yield instance.portletmanager.getdefaultAppsPortletWidgetStruct(InstalledAppId, currentstageid, activeportletid).then(function (response) {
  1285. return __awaiter(this, void 0, void 0, function* () {
  1286. let data = response.result;
  1287. instance.isAppStructEnable = data.isAppStructEnable;
  1288. if (data.isAppStructEnable) {
  1289. let isStructure = true;
  1290. let divStructure = 'divStructure_' + Math.floor(Math.random() * Date.now());
  1291. let boxId = 'structureId_' + Math.floor(Math.random() * Date.now());
  1292. if ((data.portletstructure != null) && (data.portletstructure != undefined)) {
  1293. if (data.portletstructure.length > 0) {
  1294. yield $(panel).find(".tab-container").empty();
  1295. $(panel).find(".tab-container").removeClass('row');
  1296. yield Unibase.Themes.Compact.Components.Dashboard.Instance().filterStructures(data.portletstructure, "tab-container");
  1297. $('#' + VisibleContainerId).find('.structureDiv[data-parentindex="0"]').each(function () {
  1298. $(this).find('.droppablePlaceCol[data-parentindex="0"]:first').removeClass('px-lg-10 px-md-10').addClass('pl-lg-0');
  1299. });
  1300. }
  1301. else {
  1302. if (data.portletwidget != null) {
  1303. if (data.portletwidget.length) {
  1304. isStructure = false;
  1305. let html = `<div class="d-flex flex-wrap structureToDelete w-100 structureDiv" data-divstructureid="default-structure" data-clone="clonestruct" data-parent="tab-container" id="${divStructure}" data-isedit="true" data-strctwidgetindex="0" data-parentindex="0"> <div class="col-lg-12 droppablePlaceCol ui-sortable-handle px-md-0 px-0" data-isblock="1" data-structureindex="0" data-parent="${divStructure}" id="${boxId}" data-mobile_settingwidth="" data-tab_settingwidth="" data-parentindex="0"> <div class="blocks-droppable-items-place ui-sortable-handle widgetplace ui-sortable d-flex flex-wrap" id="12"></div></div></div>`;
  1306. $('#' + VisibleContainerId).find('#tab-container').html(html);
  1307. }
  1308. }
  1309. }
  1310. }
  1311. if (data.portletwidget != null && data.portletwidget != undefined && data.portletwidget.length > 0) {
  1312. yield instance.loadWidgetData(InstalledAppId, data.portletwidget, panel, isStructure, boxId);
  1313. }
  1314. else {
  1315. instance.navigationHelper.hideLoading();
  1316. }
  1317. }
  1318. else {
  1319. yield instance.portletmanager.getDefaultWidgets(InstalledAppId, currentstageid, activeportletid).then(function (response) {
  1320. instance.loadWidgetData(InstalledAppId, response.result, panel, false);
  1321. });
  1322. }
  1323. });
  1324. });
  1325. }
  1326. else {
  1327. yield instance.portletmanager.getDefaultWidgets(InstalledAppId, currentstageid, activeportletid).then(function (response) {
  1328. instance.loadWidgetData(InstalledAppId, response.result, panel, false);
  1329. });
  1330. }
  1331. });
  1332. }
  1333. loadWidgetData(installedappid, widgetdata, panel, isStructure, boxId) {
  1334. var instance = this;
  1335. let data;
  1336. if (widgetdata != "" && widgetdata != null && widgetdata.length > 0) {
  1337. if (Unibase.Themes.Compact.Components.Index.Instance().isAppStructureEnable) {
  1338. data = widgetdata.sort(Unibase.Themes.Compact.Components.Dashboard.Instance().sortStructureWidgets);
  1339. instance.reloadWidgetReport(panel);
  1340. }
  1341. else {
  1342. data = widgetdata;
  1343. }
  1344. if (data.length != 0) {
  1345. let skelhtml = '<div class="skelton_loader biz-secondary-color position-absolute pr-20 w-100 z-index-10">';
  1346. skelhtml += Unibase.Themes.Compact.Components.Nav_Template.Instance().skelTonDetailsbBDYPage();
  1347. skelhtml += '</div>';
  1348. $('.detail-container-content').before(skelhtml);
  1349. let sorting = 'widgetdataHere', plus = '';
  1350. if (!Unibase.Themes.Compact.Components.Index.Instance().isAppStructureEnable) {
  1351. sorting = '', plus = "+";
  1352. $(panel).find("#tab-container").empty();
  1353. }
  1354. $(panel).find('.detail-container-content').addClass('invisible');
  1355. var html = "";
  1356. for (var i = 0; i < data.length; i++) {
  1357. var model = data[i];
  1358. let elem;
  1359. try {
  1360. elem = $(panel).find('#portletTab_' + model.PortletId + ' .findportlets_' + model.PortletId).attr('data_isappstructenable').toString();
  1361. }
  1362. catch (_a) {
  1363. elem = '';
  1364. }
  1365. if (elem != undefined && elem != null && elem != '') {
  1366. if (elem == 'true') {
  1367. instance.isAppStructEnable = true;
  1368. $(panel).find('.tab-container').removeClass('row');
  1369. }
  1370. else {
  1371. instance.isAppStructEnable = false;
  1372. $(panel).find('.tab-container').addClass('row');
  1373. }
  1374. }
  1375. else {
  1376. if (isStructure) {
  1377. instance.isAppStructEnable = true;
  1378. $(panel).find('.tab-container').removeClass('row');
  1379. }
  1380. else {
  1381. instance.isAppStructEnable = false;
  1382. $(panel).find('.tab-container').addClass('row');
  1383. }
  1384. }
  1385. var widgetUrl = model.WidgetUrl;
  1386. var WidgetName = "";
  1387. if (model.DisplayText == null || model.DisplayText == "") {
  1388. WidgetName = model.WidgetName;
  1389. }
  1390. else {
  1391. WidgetName = model.DisplayText;
  1392. }
  1393. var IsFiltarable = model.IsFilterable;
  1394. var filterhtml = "";
  1395. if (IsFiltarable == null || IsFiltarable == false || IsFiltarable == "") {
  1396. filterhtml = "hidden";
  1397. }
  1398. var Width = '';
  1399. if (isStructure == false) {
  1400. if (model.WidgetLayoutName == "List") {
  1401. Width = 'mb-2 col-lg-' + 12;
  1402. }
  1403. else {
  1404. if (model.PortletWidgetCss != null && model.PortletWidgetCss != undefined && model.CssProperty != null && model.CssProperty != undefined && model.CssProperty != '' && model.PortletWidgetCss != '') {
  1405. if (JSON.parse(model.PortletWidgetCss)[0].Width != null && JSON.parse(model.PortletWidgetCss)[0].Width != undefined) {
  1406. Width = 'mb-2 col-lg-' + Number(JSON.parse(model.PortletWidgetCss)[0].Width);
  1407. }
  1408. else if (JSON.parse(model.CssProperty)[0].Width != null && JSON.parse(model.CssProperty)[0].Width != undefined) {
  1409. Width = 'mb-2 col-lg-' + Number(JSON.parse(model.CssProperty)[0].Width);
  1410. }
  1411. else {
  1412. Width = 'mb-2 col-lg-' + model.Width;
  1413. }
  1414. }
  1415. else {
  1416. Width = 'mb-2 col-lg-' + model.Width;
  1417. }
  1418. }
  1419. }
  1420. let hidden = '';
  1421. if (instance.IsCustomDetailHeader == true) {
  1422. hidden = 'hidden';
  1423. }
  1424. if (Unibase.Themes.Compact.Components.Index.Instance().isAppStructureEnable == true && instance.isAppStructEnable == true) {
  1425. html = '<div class="portletwidget-item mb-sm-20 px-0 mb-2 ' + Width + ' ' + sorting + ' portletwidget-addeditem ' + hidden + ' portletwidget-' + model.PortletWidgetId + ' widgetItem-' + model.PortletWidgetId + ' widgetid-' + model.WidgetId + '" id="' + model.WidgetId + '" data-portletwidgetid="" data-widgetid="' + model.WidgetId + '" data-strctwidgetindex="' + model.StrctWidgetIndex + '" data-boxid="' + model.StructureDesignId + '" data-portletid="' + model.PortletId + '" data-widgetname="' + model.WidgetName + '"><div class="Border"><div class="Border1 hidden"><div class="dragWidget dargwidget-' + model.WidgetId + ' pull-left" id="dragWidget"><a class="btn btn-icon btn-rounded btn-flush-primary flush-soft-hover"><span class="btn-icon-wrap"><i class="ti-fullscreen"></i></span></a></div><div class="card-action-wrap editwidget editwidget-' + model.WidgetId + ' pull-right m-t-sm m-r-lg" id="editwidget"><a href="javascript:;" class="inline-block btn btn-icon btn-rounded btn-flush-primary flush-soft-hover" title="Edit Widget" onclick="Unibase.Platform.Helpers.FileCacheHelper.Instance().loadJsFile(\'platform/widgets/components/widget.js\',function () {Unibase.Platform.Widgets.Components.Widget.Instance().loadWidgetData(' + model.WidgetId + ',' + installedappid + ', true,' + model.PortletWidgetId + ');});"><span class="btn-icon-wrap"><i class="ti-pencil" id = "EditWidget-' + model.PortletWidgetId + '"></i></span></a><a href = "javascript:;" class="btn btn-icon btn-rounded btn-flush-primary flush-soft-hover" title="Permissions" onclick = "Unibase.Themes.Compact.Components.Details.Instance().ShowWidgetPermissions(' + model.PortletWidgetId + ')";><span class="btn-icon-wrap"><i class="ti-key"></i></span></a><a href="javascript:;" class="btn btn-icon btn-rounded btn-flush-primary flush-soft-hover" title="delete widget" onclick="Unibase.Platform.Widgets.Components.Widget.Instance().deletePortletWidgets(' + model.PortletWidgetId + ')"><span class="btn-icon-wrap"><i class="ti-trash"></i></span></a><a href="javascript:;" title = "Export Widget" onclick = "Unibase.Platform.Widgets.Components.Widget.Instance().exportWidgetByWidgetId(' + model.WidgetId + ')" > <i class="fa fa-download text-info mr-2" id = "ExportWidget-' + model.PortletWidgetId + '" > </i></a ></div></div><input type="hidden" id="hf_PortletWidgetId" value="' + model.PortletWidgetId + '" /><input type="hidden" id="hf_widgetId" value="' + model.WidgetId + '" /><input type="hidden" id="hf_ReportId" value="' + model.ReportId + '" /><input type = "hidden" id = "hf_widgetName_' + model.PortletWidgetId + '" value = "' + WidgetName + '" /><div class="" id="editWidgetData-' + model.PortletWidgetId + '" /></div><div class="cardbody rounded-4">';
  1426. }
  1427. else {
  1428. html += '<div class="portletwidget-item mb-sm-20 ' + Width + ' ' + sorting + ' portletwidget-addeditem ' + hidden + ' portletwidget-' + model.PortletWidgetId + ' widgetItem-' + model.PortletWidgetId + ' widgetid-' + model.WidgetId + '" id="' + model.WidgetId + '" data-portletwidgetid="" data-widgetid="' + model.WidgetId + '" data-strctwidgetindex="' + model.StrctWidgetIndex + '" data-portletid="' + model.PortletId + '" data-widgetname="' + model.WidgetName + '"><div class="Border"><div class="Border1 hidden"><div class="dragWidget dargwidget-' + model.WidgetId + ' pull-left" id="dragWidget"><a class="btn btn-icon btn-rounded btn-flush-primary flush-soft-hover"><span class="btn-icon-wrap"><i class="ti-fullscreen"></i></span></a></div><div class="card-action-wrap editwidget editwidget-' + model.WidgetId + ' pull-right m-t-sm m-r-lg" id="editwidget"><a href="javascript:;" class="inline-block btn btn-icon btn-rounded btn-flush-primary flush-soft-hover" title="Edit Widget" onclick="Unibase.Platform.Helpers.FileCacheHelper.Instance().loadJsFile(\'platform/widgets/components/widget.js\',function () {Unibase.Platform.Widgets.Components.Widget.Instance().loadWidgetData(' + model.WidgetId + ',' + installedappid + ', true,' + model.PortletWidgetId + ');});"><span class="btn-icon-wrap"><i class="ti-pencil" id = "EditWidget-' + model.PortletWidgetId + '"></i></span></a><a href = "javascript:;" class="btn btn-icon btn-rounded btn-flush-primary flush-soft-hover" title="Permissions" onclick = "Unibase.Themes.Compact.Components.Details.Instance().ShowWidgetPermissions(' + model.PortletWidgetId + ')";><span class="btn-icon-wrap"><i class="ti-key"></i></span></a><a href="javascript:;" class="btn btn-icon btn-rounded btn-flush-primary flush-soft-hover" title="delete widget" onclick="Unibase.Platform.Widgets.Components.Widget.Instance().deletePortletWidgets(' + model.PortletWidgetId + ')"><span class="btn-icon-wrap"><i class="ti-trash"></i></span></a><a href="javascript:;" title = "Export Widget" onclick = "Unibase.Platform.Widgets.Components.Widget.Instance().exportWidgetByWidgetId(' + model.WidgetId + ')" > <i class="fa fa-download text-info mr-2" id = "ExportWidget-' + model.PortletWidgetId + '" > </i></a ></div></div><input type="hidden" id="hf_PortletWidgetId" value="' + model.PortletWidgetId + '" /><input type="hidden" id="hf_widgetId" value="' + model.WidgetId + '" /><input type="hidden" id="hf_ReportId" value="' + model.ReportId + '" /><input type = "hidden" id = "hf_widgetName_' + model.PortletWidgetId + '" value = "' + WidgetName + '" /><div class="" id="editWidgetData-' + model.PortletWidgetId + '" /></div><div class="cardbody rounded-4">';
  1429. }
  1430. if (model.WidgetLayoutName == 'KPI' || model.WidgetLayoutName == 'Detail') {
  1431. html += '<div class="bg-white d-block h-90p line-loader position-relative"></div><div class="hidden div_portletwidget_' + model.PortletWidgetId + "_" + panel.replace("#", "") + '" id="div_portletwidget_' + model.PortletWidgetId + "_" + panel.replace("#", "") + '" data-widgetid="' + model.WidgetId + '"></div></div></div></div>';
  1432. }
  1433. else {
  1434. html += '<div class="div_portletwidget_' + model.PortletWidgetId + "_" + panel.replace("#", "") + '" id="div_portletwidget_' + model.PortletWidgetId + "_" + panel.replace("#", "") + '" data-widgetid="' + model.WidgetId + '"></div></div></div></div>';
  1435. }
  1436. if (Unibase.Themes.Compact.Components.Index.Instance().isAppStructureEnable == true && instance.isAppStructEnable == true) {
  1437. let afterchild, beforechild;
  1438. if (model.StrctWidgetIndex == 1 || model.StrctWidgetIndex == 0) {
  1439. if (isStructure != false) {
  1440. $(panel).find('#structureId_' + model.StructureDesignId).find('.widgetplace').first().prepend(html);
  1441. }
  1442. else {
  1443. $(panel).find('#' + boxId + ' .widgetplace').append(html);
  1444. }
  1445. }
  1446. else {
  1447. if (isStructure != false) {
  1448. afterchild = model.StrctWidgetIndex - 1;
  1449. beforechild = model.StrctWidgetIndex + 1;
  1450. if (($(panel).find('#structureId_' + model.StructureDesignId + ' .widgetplace').find('[data-strctwidgetindex="' + afterchild + '"][data-boxid="' + model.StructureDesignId + '"]').length) > 0) {
  1451. $(panel).find('#structureId_' + model.StructureDesignId + ' .widgetplace').find('[data-strctwidgetindex="' + afterchild + '"][data-boxid="' + model.StructureDesignId + '"]').after(html);
  1452. }
  1453. else if (($(panel).find('#structureId_' + model.StructureDesignId + ' .widgetplace').find('[data-strctwidgetindex="' + beforechild + '"][data-boxid="' + model.StructureDesignId + '"]').length) > 0) {
  1454. $(panel).find('#structureId_' + model.StructureDesignId + ' .widgetplace').find('[data-strctwidgetindex="' + beforechild + '"][data-boxid="' + model.StructureDesignId + '"]').before(html);
  1455. }
  1456. else if (model.StrctWidgetIndex < Number($(panel).find('#structureId_' + model.StructureDesignId + ' [data-boxid="' + model.StructureDesignId + '"]').attr('data-strctwidgetindex'))) {
  1457. $(panel).find('#structureId_' + model.StructureDesignId + ' [data-boxid="' + model.StructureDesignId + '"]').before(html);
  1458. }
  1459. else if (model.StrctWidgetIndex > Number($(panel).find('#structureId_' + model.StructureDesignId + ' [data-boxid="' + model.StructureDesignId + '"]').attr('data-strctwidgetindex'))) {
  1460. $(panel).find('#structureId_' + model.StructureDesignId + ' [data-boxid="' + model.StructureDesignId + '"]').after(html);
  1461. }
  1462. else {
  1463. $(panel).find('#structureId_' + model.StructureDesignId + ' .widgetplace').append(html);
  1464. }
  1465. }
  1466. else {
  1467. $(panel).find('#' + boxId + ' .widgetplace').append(html);
  1468. }
  1469. }
  1470. }
  1471. var StrWidgetID = '.widgetdataHere.widgetid-' + model.WidgetId + '';
  1472. var FindStrutreLength = $(StrWidgetID).length;
  1473. if (FindStrutreLength >= 2) {
  1474. $(panel).find('#tab-container .widgetdataHere.widgetid-' + model.WidgetId + '').not(':last').remove();
  1475. }
  1476. }
  1477. if ($("body").hasClass('background-image')) {
  1478. $(panel).find(".simple-scroll-bar.scrollable").css("background", "rgb(255,255,255,0.8)");
  1479. $(panel).find(".simple-scroll-bar.tab-content").css({ "background": "rgb(255,255,255,0)", "height": "calc(100% - 100px) !important" });
  1480. }
  1481. if (instance.isAppStructEnable == false || Unibase.Themes.Compact.Components.Index.Instance().isAppStructureEnable == false) {
  1482. $(panel).find("#tab-container").html(html);
  1483. }
  1484. else {
  1485. $(panel).find('#addWidgetContainer').addClass('hidden');
  1486. }
  1487. instance.navigationHelper.hideLoading();
  1488. if ($(panel).find('#addWidgetContainer').is(':visible') || instance.isPortletEdit == true) {
  1489. if (!instance.isAppStructEnable) {
  1490. $(panel).find('#addWidgetContainer').removeClass('hidden');
  1491. }
  1492. $(panel).find(".Border").addClass('card');
  1493. $(panel).find(".Border1").addClass('card-header').removeClass('hidden');
  1494. }
  1495. var checklistcount = $(".portletwidget-item").find(".list-group-item").length;
  1496. if (checklistcount >= 2) {
  1497. $(".portletwidget-item").find(".list-group-item:not(:last)").css({ "border-bottom": "solid 1px rgb(204,204,204,0.6) !important;" });
  1498. }
  1499. if ($(window).width() <= 1198) {
  1500. let VisibleContainerId = Unibase.Platform.Helpers.NavigationHelper.ModalContainerIds[Unibase.Platform.Helpers.NavigationHelper.ModalContainerIds.length - 1];
  1501. $("#" + VisibleContainerId).find('.app_defaultwidget').on('click', function () {
  1502. let modalimgUrl, modalsubtext, modalmaintext, modalHtml, modalavatar = '';
  1503. modalavatar = $("#" + VisibleContainerId).find(this).find('.biz-detail-avatar').find('.biz-primary-text-color').html();
  1504. modalimgUrl = $("#" + VisibleContainerId).find(this).find('.avatar-img').attr('src');
  1505. modalsubtext = $("#" + VisibleContainerId).find(this).find('.biz-header-sub-text').text();
  1506. modalmaintext = $("#" + VisibleContainerId).find(this).find('.biz-header-main-text').text();
  1507. if (modalimgUrl != null) {
  1508. modalHtml = `<div class=detailHeader-modal-container><div class="fade modal"role=dialog aria-hidden=true data-backdrop=static data-keyboard=false id=detailHeaderModal tabindex=-1><div class="modal-dialog "role=document><div class="modal-content rounded-10"><div class="modal-body dropdown-menu-scrollbar p-0" style="overflow:auto;"> <div class="card p-0 mb-0"><span class="headerbtn-close p-absolute l-5 text-dark"> <i class="fa fa-arrow-left" aria-hidden="true"></i> </span> <img src="${modalimgUrl}" data-dynamic="1" onerror="ReloadImage(event)" class="avatar-img img-fluid card-img-top h-250p" alt="img" > <div class="card-body px-2 text-center"> <p class="card-text mb-0">${modalmaintext}</p><p class="card-text mb-0">${modalsubtext}</p></div></div></div></div></div></div></div>`;
  1509. }
  1510. else {
  1511. modalHtml = `<div class=detailHeader-modal-container><div class="fade modal"role=dialog aria-hidden=true data-backdrop=static data-keyboard=false id=detailHeaderModal tabindex=-1><div class="modal-dialog "role=document><div class="modal-content rounded-10"><div class="modal-body dropdown-menu-scrollbar p-0" style="overflow:auto;"><div class="card p-0 mb-0"><span class="headerbtn-close p-absolute l-5 text-dark"> <i class="fa fa-arrow-left" aria-hidden="true"></i> </span> <div class="biz-detail-avatar flex-shrink-0 header-avatar modalheader-main mx-auto"> <div class="biz-primary-text-color font-weight-bold">${modalavatar}</div> </div><div class="card-body px-2 text-center"> <p class="card-text mb-0 ">${modalmaintext}</p><p class="card-text mb-0 ">${modalsubtext}</p></div></div></div></div></div></div></div>`;
  1512. }
  1513. $("#_bizgaze_modal").html(modalHtml);
  1514. $('#detailHeaderModal').modal();
  1515. $('#bizgaze_body').click(function () {
  1516. $('#detailHeaderModal').modal('hide');
  1517. });
  1518. });
  1519. $(`${panel} .portlet-detail-header`).find(".biz-header-main-text,.biz-header-sub-text").addClass("text-truncate w-170p");
  1520. }
  1521. else {
  1522. $(`${panel} .portlet-detail-header`).find(".biz-header-main-text,.biz-header-sub-text").removeClass("text-truncate w-170p");
  1523. }
  1524. $(".heading-display-name").click(function () { $(".dropdown-menu-name").removeClass("show"); $(".heading-display-name").addClass("d-none"); });
  1525. var instance = this;
  1526. instance.model = data;
  1527. instance.jsindex = 0;
  1528. instance.htmlindex = 0;
  1529. instance.evalExecuted = 0;
  1530. instance.evaluateJs(data, panel);
  1531. $(".portletwidget-item").find(".card-header-right").find(".my-auto").find(".nav-link").removeClass("d-none");
  1532. }
  1533. else {
  1534. if (!Unibase.Themes.Compact.Components.Index.Instance().isAppStructureEnable) {
  1535. $(panel).find("#tab-container").empty();
  1536. }
  1537. instance.navigationHelper.hideLoading();
  1538. }
  1539. }
  1540. else
  1541. instance.navigationHelper.hideLoading();
  1542. }
  1543. toggleStagesOnMobileScroll(panel) {
  1544. if ($(window).width() <= 576 && $(panel).find('.Mobile-mode .div_details_stages option').length > 0) {
  1545. $(panel).find('.portlet-header-wrapper').addClass("h-80p").removeClass('h-55p');
  1546. $(panel).find('.portlet-header-wrapper').removeClass("align-items-center");
  1547. let scrollEl = $(panel).find('.biz-detail-page-view');
  1548. eval(`const simpleBar = new SimpleBar($(panel).find('.biz-detail-page-view')[0]);
  1549. const wrapperEl = $(simpleBar.el).find('.simplebar-content-wrapper');
  1550. if (wrapperEl.length) { scrollEl = wrapperEl; }`);
  1551. scrollEl.off('scroll').on('scroll', function () {
  1552. var st = $(this).scrollTop();
  1553. var lastScrollTop = 0;
  1554. if (st > lastScrollTop) {
  1555. $(panel).find(".Mobile-mode .div_details_stages").addClass('d-none').removeClass("d-block d-sm-none");
  1556. $(panel).find(".sales_invoice_column_three").addClass('d-none').removeClass("d-block d-sm-none");
  1557. $(panel).find('.portlet-header-wrapper').removeClass('h-80p').addClass("h-55p");
  1558. }
  1559. else {
  1560. $(panel).find(".Mobile-mode .div_details_stages").removeClass('d-none').addClass("d-block d-sm-none");
  1561. $(panel).find(".sales_invoice_column_three").removeClass('d-none').addClass("d-block d-sm-none");
  1562. $(panel).find('.portlet-header-wrapper').addClass('h-80p').removeClass("h-55p");
  1563. }
  1564. lastScrollTop = st;
  1565. });
  1566. }
  1567. }
  1568. loadWidgetEditData(installedappid, data, panel) {
  1569. let instance = this;
  1570. if (data != null) {
  1571. $(panel).find('.detail-container-content').addClass('invisible');
  1572. instance.navigationHelper.showLoading();
  1573. var DeletedWidgets = [];
  1574. for (var i = 0; i < data.length; i++) {
  1575. DeletedWidgets = Unibase.Platform.Widgets.WidgetHiddenFields.Instance().NewWidgets;
  1576. for (var j = 0; j < DeletedWidgets.length; j++) {
  1577. var _isDeleted = DeletedWidgets.find(x => x.PortletWidgetId == data[i].PortletWidgetId) ? true : false;
  1578. if (_isDeleted) {
  1579. data.splice(i, 1);
  1580. }
  1581. }
  1582. }
  1583. $(panel).find("#tab-container").empty();
  1584. var html = "";
  1585. var cWidth = 0;
  1586. var cHeight = 0;
  1587. for (var i = 0; i < data.length; i++) {
  1588. var model = data[i];
  1589. var widgetUrl = model.WidgetUrl;
  1590. var WidgetName = "";
  1591. if (model.DisplayText == null || model.DisplayText == "") {
  1592. WidgetName = model.WidgetName;
  1593. }
  1594. else {
  1595. WidgetName = model.DisplayText;
  1596. }
  1597. var IsFiltarable = model.IsFilterable;
  1598. var filterhtml = "";
  1599. if (IsFiltarable == null || IsFiltarable == false || IsFiltarable == "") {
  1600. filterhtml = "hidden";
  1601. }
  1602. var Width = 0;
  1603. if (model.WidgetLayoutName == "List") {
  1604. Width = 12;
  1605. }
  1606. else {
  1607. Width = model.Width;
  1608. }
  1609. let hidden = '';
  1610. if (instance.IsCustomDetailHeader == true) {
  1611. hidden = 'hidden';
  1612. }
  1613. html += '<div class="widgetdataHere portletwidget-item mb-sm-20 ' + hidden + ' mb-2 portletwidget-addeditem portletwidget-' + model.PortletWidgetId + ' widgetItem-' + model.PortletWidgetId + ' widgetid-' + model.WidgetId + ' col-lg-' + Width + '" data-portletwidgetid="" data-widgetid="' + model.WidgetId + '" data-portletid="' + model.PortletId + '" data-widgetname="' + model.WidgetName + '">' +
  1614. '<div class="Border card">' +
  1615. '<div class="Border1 card-header">' +
  1616. '<div class="card-action-wrap editwidget editwidget-' + model.WidgetId + ' pull-right m-t-sm m-r-lg" id="editwidget">' +
  1617. '<a href="javascript:;" class="inline-block btn btn-icon btn-rounded btn-flush-primary flush-soft-hover" title="Edit Widget" onclick="Unibase.Platform.Helpers.FileCacheHelper.Instance().loadJsFile(\'platform/widgets/components/widget.js\',function () {Unibase.Platform.Widgets.Components.Widget.Instance().loadWidgetData(' + model.WidgetId + ',' + installedappid + ',true,' + model.PortletWidgetId + ');});"><span class="btn-icon-wrap"><i class="ti-pencil" id = "EditWidget-' + model.PortletWidgetId + '"></i></span></a>' +
  1618. '<a href = "javascript:;" class="btn btn-icon btn-rounded btn-flush-primary flush-soft-hover" title="Permissions" onclick = "Unibase.Themes.Compact.Components.Details.Instance().ShowWidgetPermissions(' + model.PortletWidgetId + ')";><span class="btn-icon-wrap"><i class="ti-key"></i></span></a>' +
  1619. '<a href="javascript:;" class="btn btn-icon btn-rounded btn-flush-primary flush-soft-hover" title="delete widget" onclick="Unibase.Platform.Widgets.Components.Widget.Instance().deletePortletWidgets(' + model.PortletWidgetId + ')"><span class="btn-icon-wrap"><i class="ti-trash"></i></span></a>' +
  1620. '</div>' +
  1621. '<div class="dragWidget dargwidget-' + model.WidgetId + ' pull-left" id="dragWidget">' +
  1622. '<a class="pull-left btn btn-sm">' +
  1623. '<i class="ti-fullscreen"></i>' +
  1624. '</a>' +
  1625. '</div>' +
  1626. '</div>' +
  1627. '<input type="hidden" id="hf_PortletWidgetId" value="' + model.PortletWidgetId + '" />' +
  1628. '<input type="hidden" id="hf_widgetId" value="' + model.WidgetId + '" />' +
  1629. '<input type="hidden" id="hf_ReportId" value="' + model.ReportId + '" />' +
  1630. '<input type = "hidden" id = "hf_widgetName_' + model.PortletWidgetId + '" value = "' + WidgetName + '" />' +
  1631. ' <div class="" id="editWidgetData-' + model.PortletWidgetId + '" /></div>' +
  1632. '<div class="cardbody rounded-4"><div class="div_portletwidget_' + model.PortletWidgetId + "_" + panel.replace("#", "") + '" id="div_portletwidget_' + model.PortletWidgetId + "_" + panel.replace("#", "") + '" data-widgetid="' + model.WidgetId + '"></div>' +
  1633. '</div></div></div>';
  1634. }
  1635. $(panel).find("#tab-container").html(html);
  1636. instance.navigationHelper.hideLoading();
  1637. instance.model = data;
  1638. instance.jsindex = 0;
  1639. instance.htmlindex = 0;
  1640. instance.evalExecuted = 0;
  1641. instance.evaluateJs(data, panel);
  1642. }
  1643. else {
  1644. $(panel).find("#tab-container").empty();
  1645. }
  1646. if (Unibase.Platform.Widgets.WidgetHiddenFields.Instance().NewWidgets.length != 0) {
  1647. var html = "";
  1648. for (let i = 0; i < Unibase.Platform.Widgets.WidgetHiddenFields.Instance().NewWidgets.length; i++) {
  1649. if (Unibase.Platform.Widgets.WidgetHiddenFields.Instance().NewWidgets[i].PortletId == $("#hf_PortletId").val()) {
  1650. var html1 = '<div class="card-header"><div class="WidgetName pull-left" id="WidgetName"><a class="pull-left btn btn-sm"><strong>' + Unibase.Platform.Widgets.WidgetHiddenFields.Instance().NewWidgets[i].WidgetName + '</strong></a></div><div class="card-action-wrap editwidget editwidget-' + $(this).find("#hf_ListwidgetId").val() + ' pull-right" id="editwidget">' +
  1651. ' <a href="javascript:;" onclick="Unibase.Platform.Widgets.Components.Widget.Instance().deletePortletWidgets()" ;="" title="Click here to Remove Widget"> <i class="ti-trash"></i></a></div></div>';
  1652. html += '<div class="portletwidget-item portletwidget-addeditem widgetItem-' + Unibase.Platform.Widgets.WidgetHiddenFields.Instance().NewWidgets[i].WidgetId + ' widgetid-' + Unibase.Platform.Widgets.WidgetHiddenFields.Instance().NewWidgets[i].WidgetId + ' col-sm-12">' +
  1653. '<div class="b-a card"><input type = "hidden" value = ' + Unibase.Platform.Widgets.WidgetHiddenFields.Instance().NewWidgets[i].WidgetId + ' id = "hf_widgetId" />' +
  1654. '<input type = "hidden" value = ' + Unibase.Platform.Widgets.WidgetHiddenFields.Instance().NewWidgets[i].WidgetUniqueId + ' id = "hf_widgetId_uniq" />' +
  1655. '' + html1 + '<img src="tenants/themes/compact/imgs/imgpopover.png" style="width:100%" class="img-responsive"></div></div>';
  1656. }
  1657. }
  1658. $(panel).find("#tab-container .portletwidget-addeditem:last").after(html);
  1659. }
  1660. }
  1661. evaluateJs(data, panel) {
  1662. var currentinstance = this, url = [];
  1663. var staticfileaarry = [];
  1664. currentinstance.evalExecuted = 1;
  1665. var staticwidetfiles = data.filter(function (o) { return o.WidgetUrl !== '' && o.WidgetUrl !== null; });
  1666. if (staticwidetfiles != null && staticwidetfiles != '') {
  1667. for (var i = 0; i < staticwidetfiles.length; i++) {
  1668. var staticjs = staticwidetfiles[i].WidgetUrl.split(',');
  1669. staticfileaarry.push(staticjs[0]);
  1670. }
  1671. currentinstance.fileCacheHelper.loadJsFiles(staticfileaarry, function () {
  1672. for (var i = 0; i < staticwidetfiles.length; i++) {
  1673. var model = staticwidetfiles[i];
  1674. if (model.WidgetUrl != null && model.WidgetUrl != '') {
  1675. let containerid = "div_portletwidget_" + model.PortletWidgetId + "_" + panel.replace("#", "");
  1676. var loadcurentjs = staticwidetfiles[i].WidgetUrl.split(',');
  1677. eval(loadcurentjs[1] + '.init("' + containerid + '")');
  1678. }
  1679. }
  1680. });
  1681. }
  1682. for (var i = 0; i < data.length; i++) {
  1683. var model = data[i];
  1684. var wclist = [];
  1685. let containerid = "div_portletwidget_" + model.PortletWidgetId + "_" + panel.replace("#", "");
  1686. if (model.WidgetUrl == null || model.WidgetUrl == '') {
  1687. if (model != null) {
  1688. if (model.StaticJsPath != null) {
  1689. var instance1 = eval(model.StaticJsPath);
  1690. }
  1691. if (model.Js != null) {
  1692. Unibase.Platform.Helpers.FileCacheHelper.Instance().addCacheFiles([model.JsPath]);
  1693. let instance = eval(model.Js);
  1694. var widgetsettingcomponent = instance;
  1695. let containerid = "div_portletwidget_" + model.PortletWidgetId + "_" + panel.replace("#", "");
  1696. wclist.push({ PortletWidgetId: model.PortletWidgetId, WidgetId: model.WidgetId, WidgetParameters: model.Parameter, WidgetName: model.WidgetName, InstalledAppId: currentinstance._installedAppId, DetailContainerId: panel, StaticJsPath: model.StaticJsPath, ReportId: model.ReportId, CustomHtml: model.CustomHtml });
  1697. currentinstance.navigationHelper.loadSection(wclist, containerid, instance, null, null);
  1698. }
  1699. }
  1700. }
  1701. }
  1702. $('.portletwidget-item').on('touchstart', function () {
  1703. $('.portletwidget-item').attr('data-mobileSwipe', 'false');
  1704. });
  1705. }
  1706. ShowWidgetPermissions(PortletWidgetId) {
  1707. this.navigationHelper.popup(0, "", Unibase.Platform.Widgets.Components.WidgetPermission.Instance(), function () {
  1708. $(".toplayout-structures-panel").css({ "z-index": "1040" });
  1709. $(".biz-layout-3-left-nav").css({ "z-index": "1040" });
  1710. $(".biz-submenu").css({ "z-index": "1040" });
  1711. Unibase.Platform.Widgets.Components.WidgetPermission.Instance().showPermissions(PortletWidgetId, 'widget', 0);
  1712. }, Unibase.Platform.Helpers.Size.Medium);
  1713. }
  1714. addWidget() {
  1715. var instance = this;
  1716. this.fileCacheHelper.loadJsFile("platform/widgets/components/widget.js", function () {
  1717. Unibase.Platform.Widgets.Components.Widget.Instance().EditScreen(instance._installedAppId);
  1718. });
  1719. }
  1720. LoadApprovals(id, InstalledAppId) {
  1721. const instance = this;
  1722. var notificationdiv = $("#div_detail_notifications_" + id);
  1723. var approvalhtml = '<div>' +
  1724. '<div class="card-body pb-2 pt-0 px-20">' +
  1725. '<ul id="div_detail_notification_list"><li class="list-group-item hidden" id="div_detail_notification_list_item"></li></ul>' +
  1726. '</div>' +
  1727. '</div>';
  1728. var VersionGuid = "";
  1729. for (let obj of Unibase.Themes.Providers.Detail_Settings.Instance().InputParameters) {
  1730. if (obj.Key === "hf_" + InstalledAppId + "_versionguid") {
  1731. VersionGuid = obj.Value.toString();
  1732. }
  1733. }
  1734. Unibase.Platform.Communications.Managers.TaskManager.Instance().getTasksByRefId(VersionGuid).then(function (response) {
  1735. var data = response.result;
  1736. if (data != null && data.length != 0) {
  1737. let lastContainerId = instance.navigationHelper.getLastContainerId();
  1738. $(`#${lastContainerId}`).find("#div_detail_notifications_" + id).html(approvalhtml);
  1739. notificationdiv.find("#div_detail_notification_footer").show();
  1740. var html = '';
  1741. var confirmtext = "";
  1742. var rejecttext = "";
  1743. var rejectonclick = "";
  1744. for (var i = 0; i < data.length; i++) {
  1745. var j = i + 1;
  1746. confirmtext = "Confirm";
  1747. rejecttext = "Reject";
  1748. rejectonclick = 'Unibase.Themes.Compact.Components.Details.Instance().SaveTaskReason(' + data[i].TaskId + ',\'Reject\')';
  1749. if (data[i].ConfirmKeyText != null && data[i].ConfirmKeyText != undefined && data[i].ConfirmKeyText != "") {
  1750. confirmtext = data[i].ConfirmKeyText;
  1751. }
  1752. if (data[i].RejectKeyText != null && data[i].RejectKeyText != undefined && data[i].RejectKeyText != "") {
  1753. rejecttext = data[i].RejectKeyText;
  1754. }
  1755. if (Number(data[i].RejectFormId) != 0) {
  1756. rejectonclick = 'Unibase.Themes.Compact.Components.Details.Instance().ChangeApprovalStatus(' + data[i].TaskId + ', \'Reject\',' + data[i].RejectFormId + ',' + data[i].RejectFormPkId + ')';
  1757. }
  1758. html += '<li class="task rounded mb-2 font-14 pb-10" data-refid="' + data[i].RefGuid + '" id="notification_list_' + data[i].TaskId + '"style="background-color:rgb(252 250 247);border-left: 3px solid #ff6060;padding:0.5rem 1rem 1rem;">' +
  1759. '<div class="d-flex flex-column"><div class="d-flex justify-content-between"><span class="mb-1 list-item-main-title">' + data[i].Subject + '</span>' +
  1760. '</div><p class="font-14 mb-2 text-dark">' + data[i].Body + '</p><span><a id="btn_Approve_' + data[i].TaskId + '" class="font-12 px-3 btn btn-outline-success btn-sm mr-10" href="javascript:;" onclick="Unibase.Themes.Compact.Components.Details.Instance().ChangeApprovalStatus(' + data[i].TaskId + ',\'Accept\',' + data[i].ApprovalFormId + ',' + data[i].ApprovalFormPkId + ')">' + confirmtext + '</a>' +
  1761. '<a id="btn_Reject_' + data[i].TaskId + '" class="font-12 px-3 btn btn-outline-danger btn-sm mr-2" href="javascript:;" onclick="Unibase.Themes.Compact.Components.Details.Instance().ChangeRejectStatus(' + data[i].TaskId + ')">' + rejecttext + '</a><a id="btn_close_' + data[i].TaskId + '" class="font-12 px-3 btn btn-outline-primary btn-sm mr-2" style="position:absolute;right:50px" href="javascript:;" onclick="Unibase.Themes.Compact.Components.Details.Instance().confirmclosetask(' + data[i].TaskId + ')">Close</a>' +
  1762. '<span></div><div id="Reason_' + data[i].TaskId + '" class="d-none align-items-center"><div class="w-75 mr-3"><div class="input-group"><textarea id="textarea_Reason_' + data[i].TaskId + '" class="type-control form-control value-control floating-label-control" placeholder="Reason" data-placeholder="Enter Reason" data-label="Reason"></textarea></div></div>' +
  1763. '<div><button id="btnSaveReason" class="btn btn-primary btn-sm pull-right" onclick="' + rejectonclick + '">Save</button></div></div></li>';
  1764. }
  1765. $(`#${lastContainerId}`).find("#div_detail_notification_list_item:last").after(html);
  1766. $(".span_notification_count").text(data.length);
  1767. if ($(`#${lastContainerId}`).find('#div_detail_notification_list').find('li.task').length > 0) {
  1768. $(`#${lastContainerId}`).find('#div_detail_notification_list').parents('.ApprovalTasks').parent().addClass('bg-white mb-20').removeClass('d-none');
  1769. }
  1770. }
  1771. else {
  1772. notificationdiv.find(".fa-angle-down,.fa-angle-right,.card-body,#div_detail_notification_footer").toggleClass("hidden");
  1773. }
  1774. });
  1775. }
  1776. CloseApprovals(taskid) {
  1777. var instance = this;
  1778. $("#notification_list_" + taskid).remove();
  1779. var tasks = $(".task").each(function () { });
  1780. if (tasks.length == 0) {
  1781. $(".ApprovalTasks").remove();
  1782. }
  1783. if (instance = null)
  1784. Unibase.Platform.Helpers.NavigationHelper.Instance().loadDetail(instance._recordId, instance._installedAppId, null);
  1785. }
  1786. confirmclosetask(taskid) {
  1787. bootbox.confirm({
  1788. title: "<span class='dstry' style='color:red'>Close Task?</span>",
  1789. message: "Are you sure? If you are deleting this task.Then work flow will override",
  1790. buttons: {
  1791. cancel: {
  1792. label: '<i class="fa fa-times"></i> Cancel'
  1793. },
  1794. confirm: {
  1795. label: '<i class="fa fa-check"></i> Confirm'
  1796. }
  1797. },
  1798. callback: function (result) {
  1799. if (result) {
  1800. Unibase.Themes.Compact.Components.Details.Instance().CloseTask(taskid, "Completed");
  1801. }
  1802. else {
  1803. return;
  1804. }
  1805. }
  1806. });
  1807. }
  1808. CloseTask(taskid, status) {
  1809. var username = Unibase.Platform.Membership.Infos.Identity.currentUser.name;
  1810. let reason = "Task is Closed by " + username;
  1811. var obj = { TaskId: taskid, Status: status, Reason: reason };
  1812. Unibase.Platform.Communications.Managers.TaskManager.Instance().changeApprovalStatus(obj).then(function (response) {
  1813. Unibase.Themes.Compact.Components.Notification.Instance().removetask(taskid);
  1814. });
  1815. }
  1816. ToggleApprovals(id) {
  1817. $("#div_detail_notifications_" + id).find(".fa-angle-down").toggleClass("hidden");
  1818. $("#div_detail_notifications_" + id).find(".fa-angle-right").toggleClass("hidden");
  1819. $("#div_detail_notifications_" + id).find(".card-body").toggleClass("hidden");
  1820. $("#div_detail_notifications_" + id).find(".card-footer").toggleClass("hidden");
  1821. }
  1822. ChangeApprovalStatus(taskid, status, formid, formpkid) {
  1823. var reason = status == "Reject" ? $("#textarea_Reason_" + taskid).val().toString() : "Accepted";
  1824. let lastContainerId = this.navigationHelper.getLastContainerId();
  1825. if (formid != 0) {
  1826. Unibase.Themes.Compact.Components.TaskParms.Instance().SaveTaskParameters({
  1827. TaskId: taskid, Reason: reason, Status: status,
  1828. ActivePortletId: Unibase.Themes.Compact.Components.Details.Instance().unibase_core_activeportletid,
  1829. FormId: formid,
  1830. });
  1831. Unibase.Platform.Helpers.NavigationHelper.Instance().loadForm(formid, formpkid, 0, 0, function (response) {
  1832. var taskparameters = Unibase.Themes.Compact.Components.TaskParms.Instance().GetTaskParameters(taskid);
  1833. Unibase.Themes.Compact.Components.TaskParms.Instance().RemoveTaskParameters(taskparameters.TaskId);
  1834. if (response != null) {
  1835. var obj = { TaskId: taskparameters.TaskId, Status: taskparameters.Status, Reason: taskparameters.Reason };
  1836. Unibase.Platform.Communications.Managers.TaskManager.Instance().changeApprovalStatus(obj).then(function (response) {
  1837. if (response.status == Unibase.Data.Status.Success) {
  1838. var refid = $('#notification_list_' + taskid).attr('data-refid');
  1839. Unibase.Themes.Compact.Components.Notification.Instance().reloadPage(refid);
  1840. Unibase.Themes.Compact.Components.Notification.Instance().removetask(taskid);
  1841. }
  1842. });
  1843. }
  1844. });
  1845. }
  1846. else {
  1847. var reqobj = { TaskId: taskid, Status: status, Reason: reason };
  1848. Unibase.Platform.Communications.Managers.TaskManager.Instance().changeApprovalStatus(reqobj).then(function (response) {
  1849. if (response.status == Unibase.Data.Status.Success) {
  1850. var refid = $('#notification_list_' + taskid).attr('data-refid');
  1851. Unibase.Themes.Compact.Components.Notification.Instance().reloadPage(refid);
  1852. Unibase.Themes.Compact.Components.Notification.Instance().removetask(taskid);
  1853. if ($(`#${lastContainerId}`).find('#div_detail_notification_list').find('li.task').length == 0) {
  1854. $(`#detailActionsWidget_${lastContainerId}`).addClass('d-none');
  1855. }
  1856. }
  1857. });
  1858. }
  1859. }
  1860. SaveTaskReason(taskid, status) {
  1861. let reason = $("#textarea_Reason_" + taskid).val().toString();
  1862. let lastContainerId = this.navigationHelper.getLastContainerId();
  1863. var obj = { TaskId: taskid, Status: status, Reason: reason };
  1864. Unibase.Platform.Communications.Managers.TaskManager.Instance().changeApprovalStatus(obj).then(function (response) {
  1865. var refid = $('#notification_list_' + taskid).attr('data-refid');
  1866. Unibase.Themes.Compact.Components.Notification.Instance().reloadPage(refid);
  1867. Unibase.Themes.Compact.Components.Notification.Instance().removetask(taskid);
  1868. if ($(`#${lastContainerId}`).find('#div_detail_notification_list').find('li.task').length == 0) {
  1869. $(`#detailActionsWidget_${lastContainerId}`).addClass('d-none');
  1870. }
  1871. });
  1872. }
  1873. ChangeRejectStatus(taskid) {
  1874. $("#Reason_" + taskid).removeClass("d-none").addClass('d-flex');
  1875. $("#btn_Approve_" + taskid).addClass("hidden");
  1876. $("#btn_Reject_" + taskid).addClass("hidden");
  1877. $("#btn_close_" + taskid).addClass("hidden");
  1878. }
  1879. loadHeaderAvatar(panel) {
  1880. let avatarElement = $(panel).find('.app_defaultwidget .biz-detail-avatar');
  1881. if (avatarElement.length > 0) {
  1882. let dataSrc = avatarElement.attr('data-src');
  1883. if (dataSrc == '' || dataSrc == 'NA' || dataSrc == undefined) {
  1884. let dataIconName = avatarElement.attr('data-icon-name');
  1885. if (dataIconName == '' || dataIconName == 'NA' || dataIconName == undefined) {
  1886. let avatarTxt = "";
  1887. let headingTxt = $(panel).find('.app_defaultwidget #Column1').text();
  1888. let matches = headingTxt.match(/\b(\w)/g);
  1889. if (matches.length == 1) {
  1890. avatarTxt = $.trim(headingTxt).substr(0, 1).toUpperCase() + $.trim(headingTxt).substr(1, 1);
  1891. }
  1892. else {
  1893. avatarTxt = matches.join('').slice(0, 2).toUpperCase();
  1894. }
  1895. avatarElement.html(`<h5 class="biz-primary-text-color text-uppercase">${avatarTxt}</h5>`);
  1896. }
  1897. else {
  1898. avatarElement.html(`<i class="${dataIconName} biz-primary-text-color font-20"></i>`);
  1899. }
  1900. }
  1901. else {
  1902. if (dataSrc && dataSrc.includes("~")) {
  1903. dataSrc = dataSrc.slice(2);
  1904. }
  1905. avatarElement.html(`<img src="${_appsettings.asset_url() + dataSrc}" data-dynamic="1" onerror="ReloadImage(event)" class="avatar-img img-fluid rounded-circle" alt="img">`);
  1906. }
  1907. avatarElement.addClass('flex-shrink-0');
  1908. }
  1909. else {
  1910. $(panel).find(".div_details_stages.d-sm-none").removeClass("ml-35");
  1911. }
  1912. }
  1913. confirmPortletChangesModal(installedappid, portletid, panel) {
  1914. var instance = this;
  1915. $('#confirmPortletChangesModal').remove();
  1916. $('body').append(`<div class="modal bootbox fade" id="confirmPortletChangesModal" tabindex="-1" role="dialog" style="display: none;" aria-hidden="true" data-backdrop="false"><div class="modal-dialog" role="document"><div class="modal-content"><div class="modal-header d-none"><h5 class="modal-title">Screen</h5></div><div class="modal-body h-100"><p>Do you want to Save Changes?</p></div><div class="modal-footer d-flex justify-content-between"><button type="button" class="btn btn-secondary" data-dismiss="modal" id="discardChangesBtn">Discard Changes</button><button type="button" class="btn btn-primary" onclick="Unibase.Platform.Widgets.Components.Widget.Instance().SaveScreen();">Save changes</button></div></div></div></div>`);
  1917. $("#confirmPortletChangesModal").modal({
  1918. keyboard: false,
  1919. backdrop: 'static',
  1920. show: true
  1921. });
  1922. $('#confirmPortletChangesModal').attr('data-portletid', portletid);
  1923. $("#discardChangesBtn").click(function (e) {
  1924. instance.isPortletModified = false;
  1925. instance.loadWidgets(installedappid, portletid, panel);
  1926. });
  1927. $('#confirmPortletChangesModal').on('hide.bs.modal', function () {
  1928. $('#confirmPortletChangesModal').remove();
  1929. });
  1930. }
  1931. evaluateDefaultWidgetCallback(panel, IsDetailClose, IsListRefresh) {
  1932. let closeCallbackfn = $(panel).find("#div_App_DefaultWidget").find("#defaultwidgetclosecallbackfn");
  1933. let Callbackfn = $(panel).find("#div_App_DefaultWidget").find("#defaultwidgetcallbackfn");
  1934. let callbck;
  1935. let defaultcallbackfn = $(panel).find("#div_App_DefaultWidget").find("#defaultwidgetclosecallbackfn");
  1936. if (defaultcallbackfn.length > 0) {
  1937. IsListRefresh = false;
  1938. if (!IsDetailClose) {
  1939. $(panel).find(".app_defaultwidget").html('').removeClass("hidden");
  1940. }
  1941. }
  1942. if (closeCallbackfn.length > 0 && IsDetailClose) {
  1943. callbck = closeCallbackfn.val();
  1944. }
  1945. if (Callbackfn.length > 0 && !IsDetailClose) {
  1946. callbck = Callbackfn.val();
  1947. }
  1948. if (callbck != null) {
  1949. eval(callbck);
  1950. }
  1951. return IsListRefresh;
  1952. }
  1953. swipe(direction) {
  1954. if ($('.portletwidget-item[data-mobileswipe="true"]').length == 0) {
  1955. let VisibleContainerId = Unibase.Platform.Helpers.NavigationHelper.ModalContainerIds[Unibase.Platform.Helpers.NavigationHelper.ModalContainerIds.length - 1], instance = this, _installedAppId = Unibase.Themes.Providers.DetailHelper.installedAppId;
  1956. let id = $('#' + VisibleContainerId).find("#div_detail_profile").attr('id');
  1957. if (_installedAppId != 0 && id == 'div_detail_profile') {
  1958. let totalLength = $('#' + VisibleContainerId + ' .layout-detail-tabs .tab-item').not('.exclude-tab').find('a').length;
  1959. let activeIndex = $('#' + VisibleContainerId + ' .layout-detail-tabs .tab-item').not('.exclude-tab').find('a.active').parent().index(), isClickEvent = direction, _activeIndex = activeIndex + 1, leftscrolling = _activeIndex - 1, rightscrolling = _activeIndex + 1;
  1960. if (isClickEvent == 'SWIPE_RIGHT' && leftscrolling != 0) {
  1961. $('#' + VisibleContainerId + ' .layout-detail-tabs .tab-item:nth-child(' + leftscrolling + ') a').not('.exclude-tab').click();
  1962. instance.scrollEvent(isClickEvent);
  1963. }
  1964. if ((isClickEvent == 'SWIPE_LEFT')) {
  1965. $('#' + VisibleContainerId + ' .layout-detail-tabs .tab-item:nth-child(' + rightscrolling + ') a').not('.exclude-tab').click();
  1966. instance.scrollEvent(isClickEvent);
  1967. }
  1968. }
  1969. }
  1970. }
  1971. scrollEvent(scroll) {
  1972. let VisibleContainerId = Unibase.Platform.Helpers.NavigationHelper.ModalContainerIds[Unibase.Platform.Helpers.NavigationHelper.ModalContainerIds.length - 1];
  1973. let ActivePortletElement = $('#' + VisibleContainerId + ' .layout-detail-tabs .tab-item').not('.exclude-tab').find('a.active');
  1974. let IndividualWidth = [], index = ActivePortletElement.parent().index() + 1;
  1975. for (let i = 1; i <= index; i++) {
  1976. IndividualWidth.push($('#' + VisibleContainerId).find('.layout-detail-tabs .tab-item:nth-child(' + i + ') a').not('.exclude-tab').outerWidth());
  1977. }
  1978. var sumWidth = IndividualWidth.reduce(function (a, b) { return a + b; }, 0);
  1979. ActivePortletElement.parents('#layout-detail-tabs').scrollLeft(sumWidth - ActivePortletElement.parent().outerWidth());
  1980. }
  1981. toggleAppDefaultWidget(panel) {
  1982. const configHeaderBtnEl = $(panel).find('.div_detailconfigurations_headerbtns');
  1983. const containerId = panel.replace('#', '');
  1984. if (configHeaderBtnEl[0] !== undefined) {
  1985. const observer = new window.MutationObserver(function (mutations) {
  1986. let findableEl;
  1987. if ($(mutations[0].target).hasClass('detail-setting-item')) {
  1988. findableEl = '.detail-setting-item';
  1989. }
  1990. else if ($(mutations[0].target).hasClass('detail-setting-btn')) {
  1991. findableEl = '.detail-setting-btn';
  1992. }
  1993. if (configHeaderBtnEl.find(findableEl).not('.hidden').length) {
  1994. $(`#detailActionsWidget_${containerId}`).removeClass('d-none');
  1995. }
  1996. else {
  1997. $(`#detailActionsWidget_${containerId}`).addClass('d-none');
  1998. }
  1999. });
  2000. observer.observe(configHeaderBtnEl[0], {
  2001. subtree: true,
  2002. attributes: true
  2003. });
  2004. }
  2005. }
  2006. reloadActivePortlet() {
  2007. var installedAppId = Unibase.Themes.Providers.DetailHelper.installedAppId;
  2008. var containerId = "#" + Unibase.Platform.Helpers.NavigationHelper.Instance().getLastContainerId();
  2009. var portletId = 0;
  2010. var activePortletsList = Unibase.Themes.Providers.Detail_Settings.Instance().ActivePortlets;
  2011. if (activePortletsList.length > 0) {
  2012. var activePortletIndex = activePortletsList.findIndex(x => x.InstalledAppId == installedAppId);
  2013. if (activePortletIndex > -1) {
  2014. portletId = activePortletsList[activePortletIndex].ActivePortletId;
  2015. }
  2016. }
  2017. if (portletId == 0) {
  2018. portletId = Number($("#hf_PortletId").val());
  2019. }
  2020. Unibase.Themes.Compact.Components.Details.Instance().loadWidgets(installedAppId, portletId, containerId);
  2021. }
  2022. static Instance() {
  2023. if (this.instance === undefined) {
  2024. this.instance = new Details();
  2025. }
  2026. return this.instance;
  2027. }
  2028. }
  2029. Details.inputparameters = [];
  2030. Components.Details = Details;
  2031. })(Components = Compact.Components || (Compact.Components = {}));
  2032. })(Compact = Themes.Compact || (Themes.Compact = {}));
  2033. })(Themes = Unibase.Themes || (Unibase.Themes = {}));
  2034. })(Unibase || (Unibase = {}));