Built files from Bizgaze WebServer
Nevar pievienot vairāk kā 25 tēmas Tēmai ir jāsākas ar burtu vai ciparu, tā var saturēt domu zīmes ('-') un var būt līdz 35 simboliem gara.

index.appbuilder.js 65KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884
  1. var Unibase;
  2. (function (Unibase) {
  3. let Platform;
  4. (function (Platform) {
  5. let Apps;
  6. (function (Apps) {
  7. let Components;
  8. (function (Components) {
  9. class AppBuilder extends Platform.Core.BaseComponent {
  10. constructor() {
  11. super();
  12. this.installedappid = 0;
  13. this.parameters = "";
  14. this.recordid = 0;
  15. this.appmanager = Apps.Managers.AppManager.Instance();
  16. this.reportmanager = Unibase.Platform.Analytics.Managers.ReportManager.Instance();
  17. this.permissionmanager = Unibase.Platform.Permissions.Managers.PermissionManager.Instance();
  18. }
  19. cssFiles() {
  20. return [];
  21. }
  22. init(containerid) {
  23. this.Dependentapp(containerid);
  24. }
  25. jsFiles() {
  26. return ["platform/bundle/index.appbuilder.js"];
  27. }
  28. html(id, containerid) {
  29. return `<form id="frmUnibase_CreateApp" data-validate="parsley" data-isdynamic="false"><div class="card bg-light"><div class="b-b bg-white card-header header"><strong class="text-dark title" id="lbl_title">Create App</strong></div>
  30. <div data-simplebar class="card-body simple-scroll-bar scrollable" id="divCreateApp"><div id="div_appmessage"></div><div class="bg-white card"><div id="unibase_ValidationSummary" class="clear"></div><div class="card-body">
  31. <div class="row"><div class="col-sm-6"><div class="floating-label-form-group"><label for="txt_FriendlyName" class="font-bold">App Title<span class="text-danger"> *</span></label><input type="text" id="txt_FriendlyName" class="form-control floating-label-control required" data-isdynamic="false" placeholder="App Title *" data-placeholder="Enter App Title" data-label="App Title *" autocomplete="off"/></div></div>
  32. <div class="col-sm-6"><div class="floating-label-form-group div_IconGroupName" id="div_IconMargin"><label for="txt_IconName" class="font-bold">Icon Name<span class="text-danger"> *</span></label><input type="text" id="txt_IconName" class="form-control floating-label-control required tokenable" data-isdynamic="false" placeholder="Icon Name *" data-placeholder="Enter Icon Name" data-label="Icon Name *" autocomplete="off"><input type='hidden' id='txtfafaIcon'/><div class='div_GroupIcon'></div></div></div></div>
  33. <div class='col-sm-12 hidden div_Icons' id='icons'><div id='appicons' class='panel panel-default'>
  34. <ul class='list-group no-radius m-b-none list-group-item no-border icon-list'></ul></div></div>
  35. <div class="row"><div class="col-sm-6"><div class="input-group"><label for="companyname" class="font-bold">Company Name<span class="text-danger">*</span></label><select id="txtAutoComplete_Company" class="form-control text-control required" style="width:100%;" placeholder = "Company Name" data-placeholder="Company Name" data-label="" data-istagselect="true" onchange="Unibase.Platform.Apps.Components.AppBuilder.Instance().Company();" ></select>
  36. <input type="hidden" id="hfAutoComplete_Company" class="hfAutoCompleteId_Company' form-control value-control" data-isdynamic="true"/>
  37. </div></div>
  38. <div class="col-sm-6"><div class="input-group"><label for="" class="font-bold">Module Type <span class="text-danger">*</span></label><select id="txtAutoComplete_ModuleType" class="form-control text-control required" style="width:100%;" placeholder = "Module Type" data-placeholder="Module Type" data-label="" data-istagselect="true" disabled="true" onchange="Unibase.Platform.Apps.Components.AppBuilder.Instance().ModuleType();"></select>
  39. <input type="hidden" id="hfAutoComplete_ModuleType" class="hfAutoComplete_ModuleType' form-control value-control" data-isdynamic="true"/>
  40. </div></div>
  41. </div>
  42. <div class="row">
  43. <div class="col-sm-6"><div class="input-group"><label for="" class="font-bold">Module <span class="text-danger">*</span></label><select id="txtAutoComplete_Module" class="form-control text-control required" style="width:100%;" placeholder = "Module" data-placeholder="Module" data-label="" data-istagselect="true" disabled="true" onchange="Unibase.Platform.Apps.Components.AppBuilder.Instance().Module();"></select>
  44. <input type="hidden" id="hfAutoComplete_Module" class="hfAutoComplete_Module' form-control value-control" data-isdynamic="true"/></div></div>
  45. <div class="col-sm-6 div_Enabledefault" style="margin-top:50px"><strong>Enable Defaults</strong><label class="switch pull-right"><input id="chkEnableDefaults" data-group="" style="margin-top:50px" type="checkbox" checked><span></span> </label>
  46. </div>
  47. </div>
  48. <div class="row div_table">
  49. <div class="col-sm-6"><div class="floating-label-form-group"><label for="txt_TableName" class="font-bold">Table Name<span class="text-danger"> *</span></label>
  50. <input type="text" id="txt_TableName" class="form-control floating-label-control required" data-isdynamic="false" placeholder="TableName *" data-placeholder="Enter TableName" data-label="TableName *" autocomplete="off"/></div></div>
  51. <div class="col-sm-6"><div class="floating-label-form-group" ><label for="" class="font-bold">Primary Key<span class="text-danger"> *</span>
  52. </label><input type="text" id="txt_PrimaryKey" class="form-control floating-label-control required" data-isdynamic="false" placeholder="Primary Key *" data-placeholder="Enter Primary Key" data-label="Primary Key *" autocomplete="off">
  53. </div></div>
  54. </div>
  55. <div class="row">
  56. <div class="col-sm-6"><div class="floating-label-form-group"><label for="" class="font-bold">App Color<span class="text-danger"> *</span>
  57. </label><input type="text" id="txt_AppColor" class="form-control floating-label-control required" data-isdynamic="false" placeholder="App Color *" data-placeholder="Enter App Color" data-label="App Color *" autocomplete="off">
  58. </div></div>
  59. <div class="col-sm-6 div_appdoctypes hidden"><div class="input-group"><label for="lblType" class="font-bold">Default DocType </label> <select id="Autocomplete_AppDocTypes" class="form-control value-control" style="width:100%;" placeholder = "App DocTypes" data-placeholder="App DocTypes" data-label="" data-istagselect="true"></select>
  60. <input type="hidden" id="hfAutoComplete_appdoctypes" class="hfAutoComplete_appdoctypes' form-control value-control" data-isdynamic="true"/>
  61. </div></div>
  62. <div class="col-sm-4 div_appimage"><div class="floating-label-form-group"><label for="lblType" class="font-bold">App Image </label>
  63. <input type="file" id="txt_AppImage" class="form-control" data-isdynamic="false" placeholder="App Image" data-placeholder="Choose Image" data-label="App Image" autocomplete="off" onchange = "Unibase.Platform.Apps.Components.AppBuilder.Instance().loadImage(event)">
  64. </div></div>
  65. <div class="div_image col-sm-2"></div></div>
  66. <div class="card-body"><div class="row"><div class="col-sm-12"><div class="floating-label-form-group divSvgimage">
  67. <label for="" class="font-bold">Svg Image<span class="text-danger"></span>
  68. </label><input type="text" id="txt_SvgImage" class="form-control floating-label-control " data-isdynamic="false" placeholder="Svg Img" data-placeholder="Svg Image " data-label=" Svg Image" autocomplete="off">
  69. </div></div></div></div>
  70. <div class="row hidden div_dispname_revname " >
  71. <div class="col-sm-6 "><div class="floating-label-form-group"><label for="" class="font-bold">Display Name<span class="text-danger"></span>
  72. </label><input type="text" id="txt_DisplayName" class="form-control floating-label-control " data-isdynamic="false" placeholder="Display Name" data-placeholder="Enter Display Name" data-label=" Display Name" autocomplete="off">
  73. </div></div>
  74. <div class="col-sm-6 "><div class="floating-label-form-group"><label for="" class="font-bold">Reverse Name<span class="text-danger"></span>
  75. </label><input type="text" id="txt_ReverseName" class="form-control floating-label-control " data-isdynamic="false" placeholder="Reverse Name" data-placeholder="Enter Reverse Name" data-label=" Reverse Name" autocomplete="off">
  76. </div></div>
  77. </div>
  78. <div class="row hidden div_roles"><div class="col-sm-6"><div class="input-group"><label for="lblRoles"
  79. class="font-bold">Roles</label> <select id="Select2_Roles" class="form-control value-control" style="width:100%;
  80. " placeholder = "Roles" data-placeholder="Roles" data-label="" data-istagselect="true" multiple="multiple"/></select>
  81. <input type="hidden" id="hfSelect2_Roles" class="hfSelect2_Roles' form-control value-control" data-isdynamic="true"/>
  82. </div></div></div>
  83. <div class="row">
  84. <div class="col-sm-6 div_stages" style="margin-top:50px"><strong>Enable Stage</strong><label class="switch pull-right"><input id="chkStageEnable" data-group="" style="margin-top:50px" type="checkbox"><span></span> </label></div>
  85. <div class="col-sm-6 div_isSyncEnabled d-none" style="margin-top:50px"><strong>Enable Sync</strong><label class="switch pull-right"><input id="chkSyncEnabled" data-group="" style="margin-top:50px" type="checkbox"><span></span> </label></div>
  86. <div class="col-sm-6 div_issystemlock d-none" style="margin-top:50px"><strong>Enable System Lock</strong><label class="switch pull-right"><input id="chkSystemlock" data-group="" style="margin-top:50px" type="checkbox"><span></span> </label></div>
  87. <div class="col-sm-6 hidden" id="div_LockAppliedOn"><div class="input-group"><label for="lblLockappliedon" class="font-bold">LockAppiedOn</label> <select id="Autocomplete_LockAppliedOn" class="form-control value-control" style="width:100%;" placeholder = "LockAppliedOn" data-placeholder="LockAppliedOn" data-istagselect="true" onchange=""/></select>
  88. <input type="hidden" id="hfAutoComplete_LockAppliedOn" class="hfAutoComplete_LockAppliedOn' form-control value-control" data-isdynamic="true"/>
  89. </div></div>
  90. <div class="col-sm-6 div_isSeriesExport d-none" style="margin-top:50px"><strong>Enable Series Export</strong><label class="switch pull-right"><input id="chkSeriesExport" data-group="" style="margin-top:50px" type="checkbox"><span></span> </label></div>
  91. <div class="col-sm-6 div_isPermissionsExport d-none" style="margin-top:50px"><strong>Enable Permissions Export</strong><label class="switch pull-right"><input id="chkPermissionsExport" data-group="" style="margin-top:50px" type="checkbox"><span></span> </label></div>
  92. </div>
  93. <div class="row">
  94. <div class="col-sm-12" style="margin-top:50px"><a href="javascript:;" id="link_MoreOptions" class="pull-right">More Options</a><a href="javascript:;" id="link_LessOptions" class="pull-right hidden">Less Options</a></div></div>
  95. <div class="row hidden div_moreoptions"><div class="col-sm-6"><div class="input-group"><label for="lblAppproviderType" class="font-bold">AppProvider Type </label> <select id="Autocomplete_AppproviderType" class="form-control value-control" style="width:100%;" placeholder = "AppProvider Type" data-placeholder="AppProvider Type" data-label="" data-istagselect="true" onchange="Unibase.Platform.Apps.Components.AppBuilder.Instance().AppProviderType();"/></select>
  96. <input type="hidden" id="hfAutoComplete_Appprovidertype" class="hfAutoComplete_Appprovidertype' form-control value-control" data-isdynamic="true"/>
  97. </div></div>
  98. <div class="col-sm-6"><div class="input-group"><label for="lblParentApp" class="font-bold">ParentApp </label> <select id="Autocomplete_ParentApp" class="form-control value-control" style="width:100%;" placeholder = "ParentApp" data-placeholder="ParentApp" data-istagselect="true" onchange=""/></select>
  99. <input type="hidden" id="hfAutoComplete_ParentApp" class="hfAutoComplete_ParentApp' form-control value-control" data-isdynamic="true"/>
  100. </div></div>
  101. <div class="col-sm-6 mt-3"><div class="input-group"><label for="lblAppType" class="font-bold">AppType
  102. </label> <select id="Autocomplete_AppType" class="form-control value-control" style="width:100%;" placeholder = "AppType" data-placeholder="AppType" data-istagselect="true" onchange=""/></select>
  103. <input type="hidden" id="hfAutoComplete_AppType" class="hfAutoComplete_AppType' form-control value-control" data-isdynamic="true"/>
  104. </div></div>
  105. </div>
  106. <div class="row hidden div_dependentapps"><div class="col-sm-6"><div class="input-group"><label for="lblAppproviderType" class="font-bold">Dependent Apps </label> <select id="Select2_DependentApps" class="form-control value-control" style="width:100%;" placeholder = "Dependent App" data-placeholder="Dependent Apps" data-label="" data-istagselect="true" multiple="multiple"/></select>
  107. <input type="hidden" id="hfSelect2_Dependentapps" class="hfSelect2_Dependentapps' form-control value-control" data-isdynamic="true"/>
  108. </div></div></div>
  109. </div></div>
  110. <div class="bg-white card div_moreoptions1 hidden" id=" div_moreoptions1"><div class="card-header">
  111. <div class="row col-sm-12 mt-2">
  112. <div class="TemplateText_Section card"><div class="card-header"> Template Text </div><div class="card-body"><div id="div_TemplateText" class="">
  113. <textarea class="" id="txt_DefaultWidgetTemplateText" placeholder="Template Text" rows="3" cols="112"></textarea>
  114. </div></div></div>
  115. </div>
  116. <div class="row">
  117. <div class="col-sm-6"><div class="input-group"><label for="lblReports" class="font-bold">Reports </label> <select id="Autocomplete_Report" class="form-control value-control" style="width:100%;" placeholder = "Reports" data-placeholder="Reports" data-istagselect="true" onchange=""/></select>
  118. <input type="hidden" id="hfAutoComplete_Report" class="hfAutoComplete_Report' form-control value-control" data-isdynamic="true"/>
  119. </div></div>
  120. <div class="col-sm-6"><div class="input-group" ><label for="lblParameter" class="font-bold">DefaultWidget Parameter</label> <select id="Sel_Dwparameter" class="form-control value-control" style="width:100%;" placeholder = "DefaultWidget Parameter data-placeholder="DefaultWidget Parameter" data-istagselect="true" data-isdynamic="true" disabled="true"></select>
  121. <input type="hidden" id="hfAutoComplete_Dwparam" class="hfAutoComplete_Dwparam' form-control value-control" data-isdynamic="true"/>
  122. </div></div>
  123. </div><br>
  124. <div class="row">
  125. <div class="col-sm-4"><div class="input-group" ><label for="lblReport" class="font-bold">Report Column1<span class="text-danger"> </span></label> <select id="Sel_Column1" class="form-control value-control" style="width:100%;" placeholder = "Reports Column1" data-placeholder="Reports Column1" data-istagselect="true" data-isdynamic="true"></select>
  126. <input type="hidden" id="hfAutoComplete_ReportColumn1" class="hfAutoComplete_ReportColumn1' form-control value-control" data-isdynamic="true"/>
  127. </div></div>
  128. <div class="col-sm-4"><div class="input-group" ><label for="lblReport" class="font-bold">Report Column2<span class="text-danger"> </span></label> <select id="Sel_Column2" class="form-control value-control" data-isdynamic="true" style="width:100%;" placeholder = "Reports Column2" data-placeholder="Reports Column2" data-istagselect="true" disabled="true"></select>
  129. <input type="hidden" id="hfAutoComplete_ReportColumn2" class="hfAutoComplete_ReportColumn2' form-control value-control" data-isdynamic="true"/>
  130. </div></div>
  131. <div class="col-sm-4"><div class="input-group" ><label for="lblReport" class="font-bold">Report Column3<span class="text-danger"> </span></label> <select id="Sel_Column3" class="form-control value-control" data-isdynamic="true" style="width:100%;" placeholder = "Reports Column3" data-placeholder="Reports Column3" data-istagselect="true" disabled="true"></select>
  132. <input type="hidden" id="hfAutoComplete_ReportColumn3" class="hfAutoComplete_ReportColumn3' form-control value-control" data-isdynamic="true"/>
  133. </div></div>
  134. </div>
  135. </div></div>
  136. <div class="bg-white card"><div class="card-header">Unique Key</div><div class="card-body"><div class="row"><div class="col-sm-11"><div class="alert alert-primary" id="txt_UniqueId"></div></div><div class="col-sm-1"><button id="Edit_UniqueKey" class="btn btn-secondary btn-sm mr-auto hidden">Edit</button>
  137. </div></div></div></div>
  138. <div class="bg-white card"><div class="card-header">Description</div><div class="card-body"><div class="row"><div class="col-sm-12"><div class="floating-label-form-group divDiscription"><textarea class="summernote form-control value-control floating-label-control required" id="txt_Description" name="" rows=""></textarea></div></div>
  139. </div></div></div></div>
  140. <div class="bg-white card-footer footer" id="CreateAppFooter"><button id="btn_CloseApp" class="btn btn-secondary btn-sm mr-auto">Close</button><button id="btn_SaveApp" class="btn btn-primary btn-sm pull-right">Save</button></div></div></form>`;
  141. }
  142. load(id, containerid, callback) {
  143. Unibase.Platform.Helpers.FileCacheHelper.Instance().addCacheFiles([
  144. "platform/apps/components/appbuilder.js", "platform/apps/enums/dependenttype.js", "platform/datasources/managers/doctypemanager.js", "platform/datasources/managers/interfaces/idoctypemanager.js", "platform/apps/enums/apptype.js"
  145. ]);
  146. var instance = this;
  147. instance.recordid = id;
  148. $("#btn_CloseApp").click(function () {
  149. $('#' + containerid).modal('hide');
  150. $('#' + containerid).remove();
  151. });
  152. $("#txt_FriendlyName").keyup(function () {
  153. if (id == 0) {
  154. AppBuilder.Instance().AppTitle(id);
  155. }
  156. });
  157. $("#btn_SaveApp").click(function () {
  158. let appcontrolid = "frmUnibase_CreateApp";
  159. let result = Unibase.Platform.Forms.Components.FormViewer.Instance().requiredFieldValidation(appcontrolid);
  160. if (result == false) {
  161. if ($($(".summernote").summernote("code")).text() == "") {
  162. $('.divDiscription').css('border-color', 'red');
  163. MessageHelper.Instance().showError("Mandatory Fields are missing", "div_appmessage");
  164. return false;
  165. }
  166. else {
  167. $('.divDiscription').css('border-color', '');
  168. return false;
  169. }
  170. }
  171. else {
  172. AppBuilder.Instance().SaveApp(id, containerid);
  173. }
  174. });
  175. $("#chkEnableDefaults").on("change", function () {
  176. if (!($("#chkEnableDefaults").prop('checked'))) {
  177. $(".div_table").addClass('hidden');
  178. $("#txt_PrimaryKey").removeClass('required');
  179. $("#txt_TableName").removeClass('required');
  180. $(".div_stages").addClass('hidden');
  181. }
  182. else {
  183. $(".div_table").removeClass('hidden');
  184. $(".div_stages").removeClass('hidden');
  185. }
  186. });
  187. $("#txt_IconName").focus(function () {
  188. $(".div_Icons").fadeIn();
  189. $("#icons").toggleClass("hidden");
  190. $(".div_Icons").removeClass('hidden');
  191. });
  192. $("#txt_IconName").focusout(function () {
  193. $(".div_Icons").fadeOut();
  194. });
  195. $('.summernote').summernote({
  196. toolbar: [],
  197. placeholder: "Enter Description *"
  198. });
  199. $('.summernote1').summernote({
  200. toolbar: [],
  201. placeholder: "Svg Image "
  202. });
  203. $(".divDiscription").keypress(function () {
  204. $('.divDiscription').css('border-color', '');
  205. });
  206. $(".divDiscription").keydown(function () {
  207. var contents = $('.summernote').summernote('code');
  208. var plainText = $("<p>" + contents + "</p>").text();
  209. if (plainText != "" && plainText.length == 1) {
  210. $('.divDiscription').css('border-color', 'red');
  211. }
  212. });
  213. $("#chkStageEnable").on("change", function () {
  214. if ($("#chkStageEnable").prop('checked')) {
  215. if (id != 0) {
  216. $("#Autocomplete_AppDocTypes").addClass('required');
  217. }
  218. }
  219. else {
  220. $("#Autocomplete_AppDocTypes").removeClass('required');
  221. }
  222. });
  223. instance.appdata(id);
  224. instance.loadIcons();
  225. $("#chkSystemlock").change(function () {
  226. if ($("#chkSystemlock").prop("checked"))
  227. $("#div_LockAppliedOn").removeClass("hidden");
  228. else
  229. $("#div_LockAppliedOn").addClass("hidden");
  230. });
  231. }
  232. loadImage(event) {
  233. Unibase.Platform.Helpers.FileHelper.Instance().getBase64(event).then(function (response) {
  234. Unibase.Platform.Apps.Components.AppBuilder.FileInfo = response;
  235. });
  236. $(".div_image").empty();
  237. var url = URL.createObjectURL(event.target.files[0]);
  238. var imagetag = '<img class="img-fluid" src = "' + url + '"width="60" height="50" style="margin-top:10px" ></img>';
  239. $(".div_image").append(imagetag);
  240. }
  241. loadForm(FormId, Pk_Value, AppConfigurationId, Callback, ElementId) {
  242. this.addprovider(Pk_Value);
  243. }
  244. addprovider(Pk_Value) {
  245. this.navigationHelper.popup(Pk_Value, '', Unibase.Platform.Apps.Components.AppBuilder.Instance(), null, Platform.Helpers.Size.Large);
  246. }
  247. loadAppForm(iscreate) {
  248. var Pk_Value = 0;
  249. if (!iscreate)
  250. Pk_Value = Unibase.Themes.Providers.DetailHelper.recordId;
  251. this.navigationHelper.popup(Pk_Value, '', Unibase.Platform.Apps.Components.AppBuilder.Instance(), null, Platform.Helpers.Size.Large);
  252. }
  253. appdata(Pk_Value) {
  254. if (Pk_Value != 0) {
  255. var instance = this;
  256. var defaultdoctypeid = 0;
  257. this.appmanager.getInstallApp(Pk_Value).then(function (response) {
  258. if (response.result.ReportId != 0) {
  259. instance.getreportcolumns(response.result.ReportId);
  260. }
  261. instance.appmanager.getdependentApps(Pk_Value).then(function (response) {
  262. if (response.result.length > 0) {
  263. var ids = [];
  264. var options = "";
  265. for (var i = 0; i < response.result.length; i++) {
  266. ids.push(response.result[i].DependentId);
  267. options += '<option value="' + response.result[i].DependentId + '">' + response.result[i].AppTitle + '</option>';
  268. }
  269. $("#Select2_DependentApps").append(options).val(ids).trigger("change");
  270. }
  271. });
  272. $("#lbl_title").text("Edit App");
  273. $(".div_Enabledefault").remove();
  274. $(".div_dispname_revname").removeClass('hidden');
  275. $(".div_isSeriesExport").removeClass('d-none');
  276. $(".div_isPermissionsExport").removeClass('d-none');
  277. $(".div_issystemlock").removeClass('d-none');
  278. $(".div_isSyncEnabled").removeClass('d-none');
  279. $("#txt_DisplayName,#txt_ReverseName").keypress(function () {
  280. $(".div_roles").removeClass('hidden');
  281. });
  282. if (response.result.EnableStage) {
  283. $("#chkStageEnable").prop('checked', true);
  284. $("#chkStageEnable").attr('disabled', 'true');
  285. $("#Autocomplete_AppDocTypes").attr('required', 'true');
  286. }
  287. if (response.result.IsSystemLock) {
  288. $("#chkSystemlock").prop('checked', true).trigger("change");
  289. $("#chkSystemlock").attr('disabled', 'true');
  290. $("#Autocomplete_AppDocTypes").attr('required', 'true');
  291. }
  292. if (response.result.EnableSeriesExport) {
  293. $("#chkSeriesExport").prop('checked', true);
  294. }
  295. if (response.result.EnablePermissionsExport) {
  296. $("#chkPermissionsExport").prop('checked', true);
  297. }
  298. $("#chkSyncEnabled").prop('checked', response.result.IsSyncEnabled).trigger("change");
  299. if (response.result.ImageUrl != "") {
  300. var imagetag = '<img class="rounded-circle img-fluid" src = "' + response.result.ImageUrl + '" width="60" height="50" style="margin-top:10px" ></img>';
  301. $(".div_image").append(imagetag);
  302. }
  303. if (response.result.DefaultDocTypeId != 0) {
  304. var appdoctypeoptions = new Option(response.result.DocTypeTableName, response.result.DefaultDocTypeId.toString(), true);
  305. $("#Autocomplete_AppDocTypes").append(appdoctypeoptions);
  306. $("#Autocomplete_AppDocTypes").attr("disabled", "true");
  307. defaultdoctypeid = response.result.DefaultDocTypeId;
  308. var defaultdoctypeid = defaultdoctypeid;
  309. var url = _appsettings.server_url() + '/apis/v4/unibase/platform/doctypes/docpropertiesautocomplete/doctypeid/' + defaultdoctypeid;
  310. AutoCompleteHelper.getHelper().Create("#Autocomplete_LockAppliedOn", "#hfAutoComplete_LockAppliedOn", url, function (response) {
  311. });
  312. if (response.result.LockAppliedOnName != null) {
  313. var lockappliedoptions = new Option(response.result.LockAppliedOnName, response.result.LockAppliedOn.toString(), true);
  314. $("#Autocomplete_LockAppliedOn").append(lockappliedoptions);
  315. $("#Autocomplete_LockAppliedOn").attr("disabled", "true");
  316. }
  317. }
  318. $(".div_appdoctypes").removeClass('hidden');
  319. $(".div_table").remove();
  320. $("#txt_FriendlyName").val(response.result.AppTitle);
  321. $("#txt_FriendlyName").attr("disabled", "true");
  322. $("#txt_IconName").val(response.result.IconName);
  323. $("#txt_DisplayName").val(response.result.DisplayText);
  324. $("#txt_ReverseName").val(response.result.ReverseText);
  325. $("#txt_AppColor").val(response.result.AppColor);
  326. $("#txt_SvgImage").val(response.result.SvgIconUrl);
  327. $('.summernote').summernote("code", response.result.Description);
  328. var appprovidertypeoption = new Option(Apps.Enums.AppProviderType[Number(response.result.AppProviderTypeId)], response.result.AppProviderTypeId.toString(), true);
  329. $("#Autocomplete_AppproviderType").append(appprovidertypeoption);
  330. var apptypeoption = new Option(Apps.Enums.AppType[Number(response.result.AppTypeId)], response.result.AppTypeId.toString(), true);
  331. $("#Autocomplete_AppType").append(apptypeoption);
  332. $("#txt_UniqueId").text(response.result.UniqueId);
  333. $("#txt_DefaultWidgetTemplateText").val(response.result.DefaultWidgetTemplateText);
  334. if (response.result.ReportId == 0) {
  335. $("#chkEnableDefaults").prop("checked", false);
  336. }
  337. if (response.result.RoleIds != "" && response.result.RoleIds != null) {
  338. $(".div_roles").removeClass('hidden');
  339. var roleids = response.result.RoleIds.split('|');
  340. var ids = [];
  341. for (var i = 0; i < roleids.length; i++) {
  342. let roleid = Number(roleids[i]);
  343. ids.push(roleid);
  344. if (roleid == 0) {
  345. $("#Select2_Roles").append(`<option value="${roleid}">All</option>`).val(ids).trigger('change');
  346. continue;
  347. }
  348. instance.permissionmanager.getRole(roleid).then(function (roleresponse) {
  349. var options = `<option value="${roleid}">${roleresponse.result.RoleName}</option>`;
  350. $("#Select2_Roles").append(options).val(ids).trigger('change');
  351. });
  352. }
  353. }
  354. var option1 = new Option(response.result.DevOrgName, response.result.DevOrgId.toString(), true);
  355. $("#txtAutoComplete_Company").append(option1);
  356. $("#txtAutoComplete_Company").attr("disabled", "true");
  357. var option2 = new Option(response.result.ModuleTypeName, response.result.ModuleTypeId.toString(), true);
  358. $("#txtAutoComplete_ModuleType").append(option2);
  359. var option3 = new Option(response.result.ModuleName, response.result.ModuleId.toString(), true);
  360. $("#txtAutoComplete_Module").append(option3);
  361. if (response.result.ParentAppId != 0) {
  362. instance.appmanager.getInstallApp(Number(response.result.ParentAppId)).then(function (parentappresponse) {
  363. var parentappoption = new Option(parentappresponse.result.AppTitle, parentappresponse.result.InstalledAppId.toString(), true);
  364. $("#Autocomplete_ParentApp").append(parentappoption);
  365. });
  366. }
  367. if (response.result.ReportId != 0) {
  368. instance.reportmanager.getReportById(Number(response.result.ReportId)).then(function (reportresponse) {
  369. var reportoption = new Option(reportresponse.result.ReportName, reportresponse.result.ReportId.toString(), true);
  370. $("#Autocomplete_Report").append(reportoption);
  371. });
  372. }
  373. $("#Autocomplete_Report").on("change", function () {
  374. $("#Sel_Column1").removeAttr("disabled");
  375. $("#Sel_Column2").attr("disabled", "true");
  376. $("#Sel_Column3").attr("disabled", "true");
  377. var repportvalue = Number($("#Autocomplete_Report").val());
  378. var reporttext = $("#Autocomplete_Report").text();
  379. if (repportvalue != 0) {
  380. instance.getreportcolumns(repportvalue);
  381. }
  382. });
  383. $("#Sel_Column1").on("change", function () {
  384. var value = $("#Sel_Column1").val();
  385. var text = $("#Sel_Column1 option:selected").text();
  386. if (text != "") {
  387. $("#Sel_Column2").removeAttr("disabled");
  388. $("#Sel_Column1").attr("disabled", "true");
  389. var htmlString = $($("#txt_DefaultWidgetTemplateText").val());
  390. var htmltext = htmlString;
  391. htmltext.find("#Column1").text("{{" + text + "}}");
  392. var template = htmltext.html().toString();
  393. $("#txt_DefaultWidgetTemplateText").val("<div class='app_defaultwidget'>" + template + "</div>");
  394. }
  395. });
  396. $("#Sel_Column2").on("change", function () {
  397. var value = $("#Sel_Column2").val();
  398. var text = $("#Sel_Column2 option:selected").text();
  399. if (text != "") {
  400. $("#Sel_Column3").removeAttr("disabled");
  401. $("#Sel_Column2").attr("disabled", "true");
  402. var html2 = $($("#txt_DefaultWidgetTemplateText").val());
  403. var htmltext2 = html2;
  404. htmltext2.find("#Column2").text("{{" + text + "}}");
  405. var template2 = htmltext2.html().toString();
  406. $("#txt_DefaultWidgetTemplateText").val("<div class='app_defaultwidget'>" + template2 + "</div>");
  407. }
  408. else {
  409. }
  410. });
  411. $("#Sel_Column3").on("change", function () {
  412. var text = $("#Sel_Column3 option:selected").text();
  413. if (text != "") {
  414. $("#Sel_Column3").attr("disabled", "true");
  415. var templte3 = $("#txt_DefaultWidgetTemplateText").val();
  416. var htmlObject3 = $($("#txt_DefaultWidgetTemplateText").val());
  417. var temp3 = htmlObject3.find("#Column3").text();
  418. if (temp3 == "") {
  419. MessageHelper.Instance().showError("Please add third column in templatetext", "div_appmessage");
  420. return false;
  421. }
  422. else {
  423. var html3 = $($("#txt_DefaultWidgetTemplateText").val());
  424. var htmltext3 = html3;
  425. htmltext3.find("#Column3").text("{{" + text + "}}");
  426. var template3 = htmltext3.html().toString();
  427. $("#txt_DefaultWidgetTemplateText").val("<div class='app_defaultwidget'>" + template3 + "</div>");
  428. }
  429. }
  430. });
  431. });
  432. }
  433. $("#link_MoreOptions").click(function () {
  434. $(".div_moreoptions").removeClass('hidden');
  435. $("#link_MoreOptions").addClass('hidden');
  436. $("#link_LessOptions").removeClass('hidden');
  437. if (Pk_Value != 0) {
  438. $(".div_moreoptions1").removeClass('hidden');
  439. if (Number($("#Autocomplete_AppproviderType").val()) == Apps.Enums.AppProviderType.Dependent) {
  440. $(".div_dependentapps").removeClass('hidden');
  441. }
  442. }
  443. });
  444. $("#link_LessOptions").click(function () {
  445. $(".div_moreoptions").addClass('hidden');
  446. $("#link_MoreOptions").removeClass('hidden');
  447. $("#link_LessOptions").addClass('hidden');
  448. $(".div_dependentapps").addClass('hidden');
  449. if (Pk_Value != 0) {
  450. $(".div_moreoptions1").addClass('hidden');
  451. $(".div_dependentapps").addClass('hidden');
  452. }
  453. });
  454. var url = _appsettings.server_url() + '/apis/v4/unibase/platform/apps/getcompanynames';
  455. AutoCompleteHelper.getHelper().Create("#txtAutoComplete_Company", "#hfAutoCompleteId_Company", url, function (response) {
  456. });
  457. var url = _appsettings.server_url() + '/apis/v4/unibase/platform/apps/getappprovidertype';
  458. AutoCompleteHelper.getHelper().Create("#Autocomplete_AppproviderType", "#hfAutoComplete_Appprovidertype", url, function (response) {
  459. });
  460. var url = _appsettings.server_url() + '/apis/v4/unibase/platform/apps/getmoduletypes';
  461. AutoCompleteHelper.getHelper().Create("#txtAutoComplete_ModuleType", "#hfAutoComplete_ModuleType", url, function (response) {
  462. });
  463. var url = _appsettings.server_url() + '/apis/v4/unibase/platform/apps/getmodulenames/devorgid/0/moduletypeid/0';
  464. AutoCompleteHelper.getHelper().Create("#txtAutoComplete_Module", "#hfAutoComplete_Module", url, function (response) {
  465. });
  466. var url = _appsettings.server_url() + '/apis/v4/unibase/platform/apps/getdependentapps';
  467. AutoCompleteHelper.getHelper().Create("#Select2_DependentApps", "#hfSelect2_Dependentapps", url, function (response) {
  468. });
  469. var url = _appsettings.server_url() + '/apis/v4/unibase/platform/apps/parentapps';
  470. AutoCompleteHelper.getHelper().Create("#Autocomplete_ParentApp", "#hfAutoComplete_ParentApp", url, function (response) {
  471. });
  472. var url = _appsettings.server_url() + '/apis/v4/unibase/platform/analytics/reports';
  473. AutoCompleteHelper.getHelper().Create("#Autocomplete_Report", "#hfAutoComplete_Report", url, function (response) {
  474. });
  475. var url = _appsettings.server_url() + '/apis/v4/unibase/platform/doctypes/appdoctypesautocomplete/installedappid/' + Pk_Value;
  476. AutoCompleteHelper.getHelper().Create("#Autocomplete_AppDocTypes", "#hfAutoComplete_appdoctypes", url, function (response) {
  477. });
  478. var url = _appsettings.server_url() + '/apis/v4/unibase/platform/roles/getroles';
  479. AutoCompleteHelper.getHelper().Create("#Select2_Roles", "#hfSelect2_Roles", url, function (response) {
  480. });
  481. var url = _appsettings.server_url() + '/apis/v4/unibase/platform/apps/getapptype';
  482. AutoCompleteHelper.getHelper().Create("#Autocomplete_AppType", "#hfAutoComplete_AppType", url, function (response) {
  483. });
  484. if (Pk_Value == 0) {
  485. var appTypeoption = new Option(Apps.Enums.AppType[Apps.Enums.AppType.App], Apps.Enums.AppType.App.toString(), true);
  486. $("#Autocomplete_AppType").append(appTypeoption);
  487. }
  488. }
  489. getreportcolumns(ReportId) {
  490. $("#Sel_Column1 option").remove();
  491. $("#Sel_Column2 option").remove();
  492. $("#Sel_Column3 option").remove();
  493. $("#Sel_Dwparameter option").remove();
  494. var primarykey = 0;
  495. var primarykeyname = "";
  496. var options;
  497. if (ReportId != 0) {
  498. this.reportmanager.getColumns(ReportId).then(function (response) {
  499. var Data = [];
  500. Data.push({ id: 0, text: "select" });
  501. for (let i = 0; i < response.result.length; i++) {
  502. var columns = response.result[i];
  503. if (columns.IsPrimaryKey) {
  504. primarykey = columns.ReportColumnId;
  505. primarykeyname = columns.ReportColumnName;
  506. options = new Option(primarykeyname, primarykey.toString());
  507. $("#Sel_Dwparameter").append(options);
  508. }
  509. Data.push({ id: columns.ReportColumnId, text: columns.ReportColumnName });
  510. }
  511. $('#Sel_Dwparameter,#Sel_Column1,#Sel_Column2,#Sel_Column3').select2({
  512. placeholder: 'Select Column',
  513. data: Data,
  514. });
  515. });
  516. }
  517. }
  518. loadIcons() {
  519. var html = "";
  520. var Icons = [
  521. { Name: 'APP Store', Icon: ' fa fa-flask' },
  522. { Name: 'List', Icon: 'fa fa-list' },
  523. { Name: 'Arrow', Icon: 'fa fa-arrow-right' },
  524. { Name: 'Bank', Icon: 'fa fa-bank' },
  525. { Name: 'Invoice', Icon: 'fa fa-files-o' },
  526. { Name: 'CRM', Icon: 'fa fa-users' },
  527. { Name: 'Shopping', Icon: 'fa fa-shopping-cart' },
  528. { Name: 'Overflow', Icon: 'fa fa-stack-overflow' },
  529. { Name: 'Money', Icon: 'fa fa-money' },
  530. { Name: 'Car', Icon: 'fa fa-car' },
  531. { Name: 'Building', Icon: 'fa fa-building' },
  532. { Name: 'Chart', Icon: 'fa fa-bar-chart' },
  533. { Name: 'Image', Icon: 'fa fa-image' },
  534. { Name: 'Settings', Icon: 'fa fa-cog' },
  535. ];
  536. $(".icon-list").html('<li class="icon-item hidden"></li>');
  537. html += '<li class="list-group-item icon-item"><div class="row"><div class="col-sm-12">';
  538. for (var i = 0; i < Icons.length; i++) {
  539. html += ' <span class="fa-stack fa-2-5x m-t-sm">' +
  540. '<a href="javascript:;" class="list-group-anchor" onclick="Unibase.Platform.Apps.Components.AppBuilder.Instance().AssginIcon(\'' + Icons[i].Name + '\',\'' + Icons[i].Icon + '\');">' +
  541. '<i class="fa fa-circle fa-stack-2x text-success dker"></i>' +
  542. '<i class="' + Icons[i].Icon + ' fa-stack-1x text-white"></i></a></span>';
  543. }
  544. html += '</div></div></li>';
  545. $(".icon-item:last").after(html);
  546. }
  547. AssginIcon(Name, Icon) {
  548. $(".div_GroupIcon").html('');
  549. $("#txtfafaIcon").val(Icon);
  550. $("#txt_IconName").val(Icon);
  551. var html = '<span class="fa-stack fa-2-5x m-t-sm"><i class="fa fa-circle fa-stack-2x text-success dker"></i><i class=" fa ' + Icon + ' fa-stack-1x text-white"></i></span><a class="pull-right" onclick="Unibase.Platform.Apps.Components.AppBuilder.Instance().RemoveImage();"><i class="m-r fa fa-close text-danger fa-lg" id="close" onclick=""></i></a>';
  552. $(".iconname").addClass('hidden');
  553. $(".div_GroupIcon").append(html);
  554. $("#icons").toggleClass("hidden");
  555. if ($("#txtfafaIcon").val() != "") {
  556. $(".tokenable").addClass('hidden');
  557. $('.div_IconGroupName').addClass('floating-label-form-group-with-value');
  558. }
  559. else {
  560. $('.div_IconGroupName').removeClass('floating-label-form-group-with-value');
  561. }
  562. }
  563. RemoveImage() {
  564. $(".div_GroupIcon").html('');
  565. $(".iconname").removeClass('hidden');
  566. $(".tokenable").removeClass('hidden');
  567. $("#txt_IconName").val('');
  568. $('.div_IconGroupName').removeClass('floating-label-form-group-with-value');
  569. $('#div_IconMargin').css('margin-top', '0px');
  570. }
  571. AppTitle(id) {
  572. let apptitle = $("#txt_FriendlyName").val().toString().replace(/ /g, '');
  573. var uniqueid = $("#txt_UniqueId").text();
  574. var companynametext = $("#txtAutoComplete_Company option:selected").text();
  575. var ModuleText = $("#txtAutoComplete_ModuleType option:selected").text();
  576. var Module = $("#txtAutoComplete_Module option:selected").text();
  577. if ((companynametext != "" && companynametext != "null") && (ModuleText != "" && ModuleText != "null") && (Module != "" && Module != "null")) {
  578. $("#txt_UniqueId").text(companynametext + "_" + ModuleText + "_" + Module + "_" + apptitle + "_App_" + apptitle);
  579. }
  580. else {
  581. if (id != 0) {
  582. MessageHelper.Instance().showError("Please Arrange CompanyName,ModuleType and Module", "div_appmessage");
  583. return false;
  584. }
  585. }
  586. }
  587. Company() {
  588. var companyname = Number($("#txtAutoComplete_Company").val());
  589. var companynametext = $("#txtAutoComplete_Company option:selected").text();
  590. $("#txtAutoComplete_ModuleType").val(0);
  591. $("#txtAutoComplete_Module").val(0);
  592. $("#txt_UniqueId").text('');
  593. if (companyname != 0) {
  594. $("#txtAutoComplete_ModuleType").removeAttr("disabled");
  595. $("#txt_UniqueId").text(companynametext + "_");
  596. }
  597. $("#txt_UniqueId").attr('readonly', 'readonly');
  598. }
  599. ModuleType() {
  600. var companyname = Number($("#txtAutoComplete_Company").val());
  601. var Module = Number($("#txtAutoComplete_ModuleType").val());
  602. var ModuleText = $("#txtAutoComplete_ModuleType option:selected").text();
  603. var uniqueid = $("#txt_UniqueId").text();
  604. if (Module != 0) {
  605. $("#txtAutoComplete_Module").removeAttr("disabled");
  606. $("#txt_UniqueId").text(uniqueid + ModuleText + "_");
  607. }
  608. $("#txtAutoComplete_ModuleType").attr("disabled", "true");
  609. var url = _appsettings.server_url() + '/apis/v4/unibase/platform/apps/getmodulenames/devorgid/' + companyname + '/moduletypeid/' + Module;
  610. AutoCompleteHelper.getHelper().Create("#txtAutoComplete_Module", "#hfAutoComplete_Module", url, function (response) {
  611. });
  612. }
  613. Module() {
  614. var Module = $("#txtAutoComplete_Module option:selected").text();
  615. var Modulevalue = Number($("#txtAutoComplete_Module option:selected").val());
  616. var uniqueid = $("#txt_UniqueId").text();
  617. if (Modulevalue != 0) {
  618. if ($("#txt_FriendlyName").val() != "") {
  619. var apptitle = $("#txt_FriendlyName").val().toString().replace(/ /g, '');
  620. $("#txt_UniqueId").text(uniqueid + Module + "_" + apptitle + "_App_" + apptitle);
  621. }
  622. else {
  623. MessageHelper.Instance().showError("Please Enter AppTitle", "div_appmessage");
  624. $("#txtAutoComplete_Company").empty();
  625. $("#txt_UniqueId").text('');
  626. $("#txtAutoComplete_ModuleType").empty();
  627. $("#txtAutoComplete_Module").empty();
  628. }
  629. }
  630. $("#txtAutoComplete_Module").attr("disabled", "true");
  631. }
  632. AppProviderType() {
  633. var providertype = $("#Autocomplete_AppproviderType option:selected").text();
  634. var providertypevalue = $("#Autocomplete_AppproviderType option:selected").val();
  635. if (providertype == "Dependent") {
  636. $(".div_dependentapps").removeClass('hidden');
  637. }
  638. else {
  639. $(".div_dependentapps").addClass('hidden');
  640. }
  641. }
  642. Dependentapp(containerid) {
  643. var instance = this;
  644. if (Unibase.Themes.Providers.DetailHelper.recordId != 0) {
  645. instance.appmanager.getAllApps(Unibase.Themes.Providers.DetailHelper.recordId).then(function (response) {
  646. $("." + containerid).empty();
  647. var html = '<ul class="list-group gutter list-group list-group-sp sortable ul_dependentapps">';
  648. for (let i = 0; i < response.result.length; i++) {
  649. var data = response.result[i];
  650. html += '<li class="list-group-item box-shadow status-item group-item li_' + data.InstalledAppId + '">' +
  651. '<input type="hidden" id="hfAppdependentid" value=' + data.InstalledAppId + '>' +
  652. '<span class="pull-left media-xs mr-30"><i class="fa fa-sort text-muted fa mr-10"></i>' + data.AppIndex + '</span>' +
  653. '<div class="clear">' +
  654. '<div class="header">' +
  655. ' <label class="">' + data.AppTitle + '</label>' +
  656. '</div></div>' +
  657. '</div></li>';
  658. }
  659. html += '</ul>';
  660. $("." + containerid).append(html);
  661. if ($.fn.sortable) {
  662. $('.sortable').sortable();
  663. $('.sortable').on("sortupdate", function (event, ui) {
  664. instance.UpdateAppIndex(containerid);
  665. });
  666. }
  667. });
  668. }
  669. }
  670. UpdateAppIndex(containerid) {
  671. var instance = this;
  672. var ids = "";
  673. $("." + containerid).find(".list-group-item").each(function () {
  674. var id = $(this).find("#hfAppdependentid").val();
  675. if (id != 0) {
  676. ids += id + ",";
  677. }
  678. });
  679. if (ids != "") {
  680. var postData = {
  681. id: ids
  682. };
  683. instance.appmanager.updateAppIndex(postData).then(function (response) {
  684. if (response.status != Unibase.Data.Status.Error) {
  685. instance.Dependentapp(containerid);
  686. MessageHelper.Instance().showSuccess(response.message, "div_message");
  687. }
  688. });
  689. }
  690. }
  691. fileEvent($event) {
  692. const fileSelected = $event.target.files[0];
  693. Unibase.Platform.Apps.Components.AppBuilder.fileData = new FormData();
  694. Unibase.Platform.Apps.Components.AppBuilder.fileData.append(fileSelected.name, fileSelected);
  695. }
  696. exportApp() {
  697. var instance = this;
  698. var recordid = Unibase.Themes.Providers.DetailHelper.recordId;
  699. instance.navigationHelper.showLoading();
  700. instance.appmanager.getInstallApp(recordid).then(function (appresponse) {
  701. instance.appmanager.exportApp(recordid).then(function (response) {
  702. if (response.status == Unibase.Data.Status.Error) {
  703. instance.navigationHelper.hideLoading();
  704. MessageHelper.Instance().showError(response.message, "div_message");
  705. return false;
  706. }
  707. var filename = appresponse.result.AppTitle + ".xml";
  708. var xmltext = response.result;
  709. var pom = document.createElement('a');
  710. var bb = new Blob([xmltext], { type: 'text/plain' });
  711. pom.setAttribute('href', window.URL.createObjectURL(bb));
  712. pom.setAttribute('download', filename);
  713. pom.dataset.downloadurl = ['text/plain', pom.download, pom.href].join(':');
  714. pom.draggable = true;
  715. pom.classList.add('dragout');
  716. pom.click();
  717. instance.navigationHelper.hideLoading();
  718. });
  719. });
  720. }
  721. SaveApp(Pk_Value, containerid) {
  722. var instance = this;
  723. var appdependentlist = [];
  724. var dependentid = $("#Select2_DependentApps").val() != null ? $("#Select2_DependentApps").val().toString().replace(/,/g, '|') : "0";
  725. let dependenttype;
  726. if (dependentid != "") {
  727. dependenttype = Unibase.Platform.Apps.Enums.DependentType.Apps;
  728. var apparray = [];
  729. apparray = dependentid.split("|");
  730. $.each(apparray, function (index, value) {
  731. var appdependentObj = {
  732. AppDependentId: 0,
  733. InstalledAppId: Pk_Value,
  734. DependentId: Number(value),
  735. DependentType: Number(dependenttype)
  736. };
  737. appdependentlist.push(appdependentObj);
  738. });
  739. }
  740. var defaultwidgetparameter = "";
  741. var imagepath = $("#txt_AppImage").val();
  742. var svgiconpath = $("#txt_SvgImage").val();
  743. var imageurl = imagepath.split(/(\\|\/)/g).pop();
  744. var svgicon = svgiconpath.split(/(\\|\/)/g).pop();
  745. if (Pk_Value != 0) {
  746. if (Number($("#Sel_Dwparameter option:selected").val()) == 0) {
  747. MessageHelper.Instance().showError("Please Select Defaultwidget parameter", "div_appmessage");
  748. return false;
  749. }
  750. if (Number($("#hfAutoComplete_Report").val()) == 0) {
  751. MessageHelper.Instance().showError("Please Select report", "div_appmessage");
  752. return false;
  753. }
  754. if (Number($("#Sel_Dwparameter option:selected").val()) != 0) {
  755. defaultwidgetparameter = $("#Sel_Dwparameter option:selected").text() + ":=:recordid";
  756. }
  757. }
  758. var roleids = "";
  759. if ($("#Select2_Roles").val() != null && ($("#Select2_Roles").val() != "")) {
  760. var roleids = $("#Select2_Roles").val().toString();
  761. roleids = roleids.replace(/\,/g, '|');
  762. }
  763. var contents = $('.summernote').summernote('code');
  764. var plainText = $("<p>" + contents + "</p>").text();
  765. var content = $('.summernote1').summernote('code');
  766. var plaintext = $("<p>" + content + "</p>").text();
  767. let postData = {
  768. InstalledAppId: Pk_Value,
  769. AppTitle: $("#txt_FriendlyName").val(),
  770. IconName: $("#txt_IconName").val(),
  771. AppImage: $("#txt_ImageFile").val(),
  772. AppColor: $("#txt_AppColor").val(),
  773. Description: plainText,
  774. UniqueId: $("#txt_UniqueId").text(),
  775. DevOrgId: Number($("#txtAutoComplete_Company").val()),
  776. DevOrgName: $("#txtAutoComplete_Company option:selected").text(),
  777. ModuleTypeName: $("#txtAutoComplete_ModuleType option:selected").text(),
  778. ModuleTypeId: Number($("#txtAutoComplete_ModuleType").val()),
  779. ModuleName: $("#txtAutoComplete_Module option:selected").text(),
  780. ModuleId: Number($("#txtAutoComplete_Module").val()),
  781. AppProviderTypeId: Number($("#Autocomplete_AppproviderType").val()),
  782. ParentAppId: Number($("#Autocomplete_ParentApp").val()),
  783. ReportId: Number($("#Autocomplete_Report").val()),
  784. AppKeyId: 0,
  785. SvgIconUrl: $("#txt_SvgImage").val(),
  786. DefaultWidgetTemplateText: $("#txt_DefaultWidgetTemplateText").val(),
  787. DefaultWidgetParameters: defaultwidgetparameter,
  788. EnableStage: $("#chkStageEnable").prop('checked'),
  789. AppDependent: appdependentlist,
  790. EnableDefaults: $("#chkEnableDefaults").prop('checked'),
  791. TableName: $("#txt_TableName").val(),
  792. PrimaryKeyName: $("#txt_PrimaryKey").val(),
  793. IsDynamic: true,
  794. DefaultDocTypeId: Pk_Value != 0 ? Number($("#Autocomplete_AppDocTypes").val()) : 0,
  795. ImageUrl: imageurl,
  796. DisplayText: $("#txt_DisplayName").val(),
  797. ReverseText: $("#txt_ReverseName").val(),
  798. RoleIds: roleids,
  799. FileData: Unibase.Platform.Apps.Components.AppBuilder.FileInfo,
  800. IsSystemLock: $("#chkSystemlock").prop('checked'),
  801. IsSyncEnabled: $("#chkSyncEnabled").prop('checked'),
  802. LockAppliedOn: Number($("#Autocomplete_LockAppliedOn").val()),
  803. EnableSeriesExport: $("#chkSeriesExport").prop('checked'),
  804. EnablePermissionsExport: $("#chkPermissionsExport").prop('checked'),
  805. AppTypeId: Number($("#Autocomplete_AppType").val()),
  806. };
  807. var nav = Unibase.Platform.Helpers.NavigationHelper.Instance();
  808. if (Pk_Value != 0) {
  809. instance.navigationHelper.showLoading();
  810. instance.appmanager.updateDynamicApp(postData).then(function (response) {
  811. if (response.status == Unibase.Data.Status.Error) {
  812. MessageHelper.Instance().showError(response.message, "div_appmessage");
  813. }
  814. else {
  815. MessageHelper.Instance().showSuccess(response.message, "div_appmessage");
  816. instance.appmanager.getMyApps();
  817. $('#' + containerid).modal('hide');
  818. $('#' + containerid).remove();
  819. }
  820. instance.navigationHelper.hideLoading();
  821. });
  822. }
  823. else {
  824. instance.navigationHelper.showLoading();
  825. instance.appmanager.saveDynamicApp(postData).then(function (response) {
  826. if (response.status == Unibase.Data.Status.Error) {
  827. MessageHelper.Instance().showError(response.message, "div_appmessage");
  828. }
  829. else {
  830. MessageHelper.Instance().showSuccess(response.message, "div_appmessage");
  831. instance.appmanager.getMyApps();
  832. $('#' + containerid).modal('hide');
  833. $('#' + containerid).remove();
  834. }
  835. instance.navigationHelper.hideLoading();
  836. });
  837. }
  838. }
  839. static Instance() {
  840. if (this.instance === undefined) {
  841. this.instance = new AppBuilder();
  842. }
  843. return this.instance;
  844. }
  845. }
  846. AppBuilder.fileData = new FormData();
  847. Components.AppBuilder = AppBuilder;
  848. })(Components = Apps.Components || (Apps.Components = {}));
  849. })(Apps = Platform.Apps || (Platform.Apps = {}));
  850. })(Platform = Unibase.Platform || (Unibase.Platform = {}));
  851. })(Unibase || (Unibase = {}));
  852. var Unibase;
  853. (function (Unibase) {
  854. let Platform;
  855. (function (Platform) {
  856. let Apps;
  857. (function (Apps) {
  858. let Enums;
  859. (function (Enums) {
  860. let DependentType;
  861. (function (DependentType) {
  862. DependentType[DependentType["Apps"] = 1] = "Apps";
  863. DependentType[DependentType["Reports"] = 2] = "Reports";
  864. })(DependentType = Enums.DependentType || (Enums.DependentType = {}));
  865. })(Enums = Apps.Enums || (Apps.Enums = {}));
  866. })(Apps = Platform.Apps || (Platform.Apps = {}));
  867. })(Platform = Unibase.Platform || (Unibase.Platform = {}));
  868. })(Unibase || (Unibase = {}));