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.

appconfiguration.js 53KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719
  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 AppConfigurations extends Platform.Core.BaseComponent {
  10. constructor() {
  11. super();
  12. this.formproperties = [];
  13. this.deletedconfigurationids = "";
  14. this.appManager = new Apps.Managers.AppManager();
  15. this.formManager = new Platform.Forms.Managers.FormManager();
  16. this.permissionManager = new Platform.Permissions.Managers.PermissionManager();
  17. }
  18. jsFiles() {
  19. return ["platform/apps/managers/appmanager.js", "/platform/forms/managers/interfaces/iformmanager.js", "/platform/forms/managers/formmanager.js", "platform/forms/components/formviewer/formviewer.js", 'libs/parsley/parsley.min.js', 'platform/permission/managers/interfaces/ipermissionmanager.js', 'platform/permission/managers/permissionmanager.js', 'platform/core/infos/status.js', '/platform/permission/enums/permission.js'];
  20. }
  21. cssFiles() {
  22. return [];
  23. }
  24. html(id, containerid) {
  25. return `<form id="form_AppConfiguration" data-validate="parsley" data-isdynamic="false">
  26. <div class="card bg-light mb-0">
  27. <div class="b-b bg-white card-header">
  28. <strong class="text-dark title" id="">Add AppConfiguration</strong>
  29. </div>
  30. <div class="card-body scrollable" id="divAddAppConfiguration"style="overflow-y: auto;" >
  31. <div id="div_Validation" class="clear"></div>
  32. <div class="bg-white card">
  33. <input type="hidden" id="hf_StatusId" value="">
  34. <div class="card-body"><div class="row"><div class="col-sm-6"><div class="floating-label-form-group" ><label for="txt_SettingName" id="lblSettingName" class="font-bold">Setting Name<span class="text-danger">*</span></label>
  35. <input type="text" id="txt_SettingName" class="form-control floating-label-control required SettingName" data-isdynamic="false" placeholder="Setting Name " data-placeholder="Enter Setting Name" data-label="Setting Name " autocomplete="off"></div></div>
  36. <div class="col-sm-6 div_SettingURL "><div class="floating-label-form-group" id="div_WidgetAppConfigSettingURL"><label for="txt_SettingURL" id="lblSettingURL" class="font-bold ">Setting URL</label>
  37. <input type="text" class="form-control floating-label-control SettingURL" id="txt_SettingURL" data-isdynamic="false" placeholder="Setting URL" data-placeholder="Enter Setting URL" data-label="Setting URL"></div></div></div>
  38. <div class="row">
  39. <div class="col-sm-4"><label for="lblInstalledApp" class="font-bold">Apps</label>
  40. <select id="autocomplete_InstalledApps" class="form-control text-control" style="width:100%;" placeholder = "InstalledApp" data-placeholder="InstalledApp" onchange="Unibase.Platform.Apps.Components.AppConfigurations.Instance().InstalledApps();"></select>
  41. <input type="hidden" id="hfAutoComplete_InstalledApps" class="hfAutoComplete_InstalledApps' form-control value-control" data-isdynamic="true"/></div>
  42. <div class="col-sm-4"><label for="lblRolesetting" class="font-bold" id="lblWidth">Role Setting <span class="text-danger">*</span></label>
  43. <select id="autocomplete_RoleSetting" class="form-control text-control required" style="width:100%;" placeholder = "RoleSetting" data-placeholder="RoleSetting"></select>
  44. <input type="hidden" id="hfAutoComplete_RoleSetting" class="hfAutoComplete_Rolesetting' form-control value-control" data-isdynamic="true"/></div>
  45. <div class="col-sm-4"><label for="lblPermissions" class="font-bold" id="lblWidth">Permissions <span class="text-danger">*</span></label>
  46. <select id="autocomplete_Permission" class="form-control text-control required" style="width:100%;" placeholder = "Permission" data-placeholder="Permission"></select>
  47. <input type="hidden" id="hfAutoComplete_Permission" class="hfAutoComplete_Permission' form-control value-control" data-isdynamic="true"/></div>
  48. </div>
  49. <div class="row">
  50. <div class="col-sm-4"><label for="lblAppConfigType" class="font-bold" id="lblWidth">AppConfig Type <span class="text-danger">*</span></label>
  51. <select id="autocomplete_Appconfigtype" class="form-control text-control required" style="width:100%;" placeholder = "AppConfig Type" data-placeholder="AppConfig Type"></select>
  52. <input type="hidden" id="hfAutoComplete_Appconfigtype" class="hfAutoComplete_AppConfigType' form-control value-control" data-isdynamic="true"/>
  53. </div>
  54. <div class="col-sm-4">
  55. <label for="sel_IconName" class="font-bold">Icon Name</label>
  56. <select id="autocomplete_Icon" class="form-control text-control" style="width:100%;" placeholder = "Icon" data-placeholder="Icon"></select>
  57. <input type="hidden" id="hfAutoComplete_Icon" class="hfAutoComplete_Icon' form-control value-control" data-isdynamic="true"/>
  58. </div>
  59. <div class="col-sm-4"><label for="lblSettingUrlType" class="font-bold" id="lblWidth">Select Setting Url Type <span class="text-danger">*</span></label>
  60. <select id="autocomplete_Settingurl" class="form-control text-control required" style="width:100%;" placeholder = "Setting Url" data-placeholder="Setting Url"></select>
  61. <input type="hidden" id="hfAutoComplete_Settingurl" class="hfAutoComplete_Settingurl' form-control value-control" data-isdynamic="true"/>
  62. </div>
  63. </div>
  64. <div class="row">
  65. <div class="col-sm-4" style="margin-top:40px"><strong>Ungrouped</strong><label class="switch pull-right"><input id="chk_Ungrouped" data-group="" style="margin-top:40px" type="checkbox"><span></span> </label></div>
  66. <div class="col-sm-4" style="margin-top:40px"><strong>Exclude From Lock</strong><label class="switch pull-right"><input id="chk_ExcludeFromLock" data-group="" style="margin-top:40px" type="checkbox"><span></span> </label></div>
  67. <div class="col-sm-8 div_onclick hidden"><div class="floating-label-form-group"><label for="txt_Onclick" id="lblOnclick" class="font-bold">Onclick<span class="text-danger"> </span></label><input type="text" id="txt_Onclick" class="form-control floating-label-control SettingName" data-isdynamic="false" placeholder="Onclick " data-placeholder="Enter Onclick" data-label="Onclick" autocomplete="off"></div></div>
  68. <div class="col-sm-8 div_procedure hidden"><div class="floating-label-form-group"><label for="txt_Onclick" id="lblProcName" class="font-bold">Procedure Name<span class="text-danger"> </span></label><input type="text" id="txt_ProcName" class="form-control floating-label-control SettingName" data-isdynamic="false" placeholder="Procedure Name " data-placeholder="Enter Procedure Name" data-label="Procedure Name" autocomplete="off"></div></div>
  69. <div class="col-sm-4 div_linkedapps hidden"><label for="lbl_LinkedApps" class="font-bold">Select LinkedApp <span class="text-danger">*</span></label>
  70. <select id="autocomplete_LinkedApp" class="form-control text-control" style="width:100%;" placeholder = "LinkedApp" data-placeholder="LinkedApp"></select>
  71. <input type="hidden" id="hfAutoComplete_LinkedApp" class="hfAutoComplete_LinkedApp' form-control value-control" data-isdynamic="true"/>
  72. </div>
  73. <div class="col-sm-4 div_formsize hidden" ><label for="lblFormSize" class="font-bold" id="lblWidth">Form Size</label><select id="autocomplete_FormSize" class="form-control text-control" style="width:100%" placeholder = "Form" data-placeholder="Select Form Size">
  74. <option value=0>Select Form size</option>
  75. <option value=1>Mini</option>
  76. <option value=2>Medium</option>
  77. <option value=3>Large</option>
  78. <option value=4>ExtraLarge</option>
  79. <option value=5>Auto</option>
  80. <option value=6>DockRight</option>
  81. <option value=7 selected>DockLeft</option>
  82. </select><input type = "hidden" id = "hfAutocomplete_FormSize" class="hfAutocomplete_FormSize form-control value-control" data - isdynamic="true" /> </div>
  83. </div></div></div>
  84. <div class="card bg-white">
  85. <div class="card-header"><p>Unique Key</p></div>
  86. <div class="card-body">
  87. <div class="row">
  88. <div class="col-sm-11"><div class="alert alert-primary" id="txt_UniqueId"></div></div>
  89. <div class="col-sm-1"><button id="Edit_UniqueKey" class="btn btn-secondary btn-sm mr-auto hidden">Edit</button></div></div></div></div>
  90. <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"><label for="txtDescription" class="font-bold">Description <span class="text-danger"> *</span></label><input type="text" id="txt_ConfigDescription" class="form-control value-control floating-label-control" placeholder="Description" data-placeholder="Enter Description" data-label="Description" autocomplete="off"/></div></div>
  91. </div></div></div>
  92. <div class="bg-white hidden card div_total"><div class="card-header">Form Roles</div><div class="card-body div_formroles">
  93. <div class="row"><div class="col-sm-5 font-bold"><select id="autocomplete_Form" class="form-control text-control" style="width:100%;" placeholder = "Form" data-placeholder="Form"></select><input type = "hidden" id = "hfAutocomplete_Form" class="hfAutocomplete_Form form-control value-control" data - isdynamic="true" /> </div>
  94. <div class="col-sm-5 font-bold"><select id = "autocomplete_role" class="form-control text-control" style = "width:100%;" placeholder = "Roles" data - placeholder="Roles" ><option value=-1>Select Role</option>
  95. </select><input type = "hidden" id = "hf_autocomplete_role" class="hf_autocomplete_role form-control value-control" data - isdynamic="true"/> </div>
  96. <div class="col-sm-1"><a href="javascript:;" class="Addformrole" onclick=""><i class="fa fa-plus text-primary"></i></a></div>
  97. </div><br/><div id="ul_errmsg"></div><div class="div_formrole"></div>
  98. </div></div></div>
  99. </div>
  100. </div>
  101. </div>
  102. <div class="bg-white card-footer" id="sectionFooter">
  103. <button id="btnCloseAppConfiguration" class="btn btn-secondary btn-sm mr-auto">Close</button>
  104. <button id="btnSaveAppConfiguration" class="btn btn-primary btn-sm pull-right">Save</button>
  105. </div>
  106. </div>
  107. </form>`;
  108. }
  109. load(id, containerid, callback) {
  110. var instance = this;
  111. var recordid = Unibase.Themes.Providers.DetailHelper.recordId;
  112. instance.deletedconfigurationids = "";
  113. $("#txt_IconName").focus(function () {
  114. $(".div_Icons").fadeIn();
  115. $("#icons").toggleClass("hidden");
  116. $(".div_Icons").removeClass('hidden');
  117. });
  118. $("#txt_IconName").focusout(function () {
  119. $(".div_Icons").fadeOut();
  120. });
  121. $("#autocomplete_Settingurl").on("change", function () {
  122. if (Number($("#autocomplete_Settingurl").val()) == Apps.Enums.SettingUrlType.Form) {
  123. $(".div_total").removeClass("hidden");
  124. $(".div_formsize").removeClass("hidden");
  125. $(".div_onclick").removeClass("hidden");
  126. $("#hfAutocomplete_Form").addClass("required");
  127. $("#hf_autocomplete_role").addClass("required");
  128. $("#txt_Onclick").removeClass("required");
  129. $("#txt_SettingURL").removeClass("required");
  130. $(".div_procedure").addClass("hidden");
  131. $("#txt_ProcName").removeClass("required");
  132. }
  133. else if (Number($("#autocomplete_Settingurl").val()) != Apps.Enums.SettingUrlType.Form) {
  134. $(".div_formsize").addClass("hidden");
  135. $(".div_total").addClass("hidden");
  136. $(".div_procedure").addClass("hidden");
  137. $("#txt_ProcName").removeClass("required");
  138. if (Number($("#autocomplete_Settingurl").val()) == Apps.Enums.SettingUrlType.JsFunction || Number($("#autocomplete_Settingurl").val()) == Apps.Enums.SettingUrlType.Component) {
  139. $(".div_onclick").removeClass("hidden");
  140. $(".div_formsize").addClass("hidden");
  141. $(".div_total").addClass("hidden");
  142. $("#txt_SettingURL").addClass("required");
  143. $("#txt_Onclick").addClass("required");
  144. $(".div_procedure").addClass("hidden");
  145. $("#txt_ProcName").removeClass("required");
  146. }
  147. else if ((Number($("#autocomplete_Settingurl").val()) == Apps.Enums.SettingUrlType.Procedure)) {
  148. $(".div_procedure").removeClass("hidden");
  149. $("#txt_ProcName").addClass("required");
  150. $(".div_formsize").addClass("hidden");
  151. $(".div_total").addClass("hidden");
  152. $("#txt_SettingURL").removeClass("required");
  153. $(".div_onclick").addClass("hidden");
  154. $("#txt_Onclick").removeClass("required");
  155. }
  156. else {
  157. $(".div_onclick").addClass("hidden");
  158. $(".div_formsize").addClass("hidden");
  159. $(".div_total").addClass("hidden");
  160. $("#txt_SettingURL").removeClass("required");
  161. $("#txt_Onclick").removeClass("required");
  162. $("#txt_ProcName").removeClass("required");
  163. }
  164. }
  165. });
  166. $("#autocomplete_Appconfigtype").on("change", function () {
  167. if (Number($("#autocomplete_Settingurl").val()) == Apps.Enums.SettingUrlType.Form) {
  168. $("#hfAutocomplete_Form").addClass("required");
  169. $("#hf_autocomplete_role").addClass("required");
  170. if (Number($("#autocomplete_Appconfigtype").val()) == Apps.Enums.AppConfigeType.DetailSetting) {
  171. $(".div_onclick").removeClass("hidden");
  172. }
  173. else {
  174. $(".div_onclick").addClass("hidden");
  175. }
  176. }
  177. else if (Number($("#autocomplete_Settingurl").val()) == Apps.Enums.SettingUrlType.Component && Number($("#autocomplete_Appconfigtype").val()) == Apps.Enums.AppConfigeType.List) {
  178. $(".div_onclick").removeClass("hidden");
  179. $(".div_formsize").addClass("hidden");
  180. $(".div_total").addClass("hidden");
  181. $("#txt_SettingURL").addClass("required");
  182. $("#txt_Onclick").addClass("required");
  183. }
  184. else if (Number($("#autocomplete_Settingurl").val()) == Apps.Enums.SettingUrlType.Procedure) {
  185. $(".div_procedure").removeClass("hidden");
  186. $(".div_formsize").addClass("hidden");
  187. $(".div_total").addClass("hidden");
  188. $("#txt_SettingURL").removeClass("required");
  189. }
  190. else if (Number($("#autocomplete_Settingurl").val()) == Apps.Enums.SettingUrlType.JsFunction && (Number($("#autocomplete_Appconfigtype").val()) == Apps.Enums.AppConfigeType.List || Number($("#autocomplete_Appconfigtype").val()) == Apps.Enums.AppConfigeType.Details || Number($("#autocomplete_Appconfigtype").val()) == Apps.Enums.AppConfigeType.DetailSetting || Number($("#autocomplete_Appconfigtype").val()) == Apps.Enums.AppConfigeType.Print || Number($("#autocomplete_Appconfigtype").val()) == Apps.Enums.AppConfigeType.Status)) {
  191. $(".div_onclick").removeClass("hidden");
  192. $(".div_formsize").addClass("hidden");
  193. $(".div_total").addClass("hidden");
  194. $("#txt_SettingURL").addClass("required");
  195. $("#txt_Onclick").addClass("required");
  196. }
  197. else {
  198. $(".div_onclick").addClass("hidden");
  199. $("#txt_Onclick").removeClass("required");
  200. }
  201. if (Number($("#autocomplete_Appconfigtype").val()) == Apps.Enums.AppConfigeType.Settings) {
  202. $("#autocomplete_Settingurl").empty();
  203. $(".div_onclick").addClass("hidden");
  204. $(".div_linkedapps").removeClass("hidden");
  205. $("#autocomplete_LinkedApp").addClass("required");
  206. var linkappoption = new Option(Unibase.Platform.Apps.Enums.SettingUrlType[9], Unibase.Platform.Apps.Enums.SettingUrlType.App.toString(), true);
  207. $("#autocomplete_Settingurl").append(linkappoption);
  208. $("#autocomplete_Settingurl").attr('disabled', 'true');
  209. }
  210. else {
  211. $(".div_linkedapps").addClass("hidden");
  212. $("#autocomplete_Settingurl").removeAttr('disabled');
  213. $("#autocomplete_Settingurl").empty();
  214. $(".div_formsize").addClass("hidden");
  215. $(".div_total").addClass("hidden");
  216. }
  217. });
  218. this.loaddata(id);
  219. var UniqueId = '';
  220. var apptitle = '';
  221. if (recordid != 0) {
  222. Unibase.Platform.Apps.Managers.AppManager.Instance().getAllAppConfigurations(recordid).then(function (response) {
  223. Unibase.Platform.Apps.Managers.AppManager.Instance().getInstallApp(recordid).then(function (appresponse) {
  224. if (response.result.length > 0) {
  225. if (appresponse.result != null) {
  226. apptitle = appresponse.result.AppTitle.replace(/ /g, '');
  227. UniqueId = response.result[0].UniqueId.substring(0, response.result[0].UniqueId.indexOf("_AppConfiguration_"));
  228. UniqueId = UniqueId.replace(/ /g, '');
  229. if (id == 0) {
  230. $("#txt_UniqueId").text(UniqueId);
  231. }
  232. }
  233. }
  234. else {
  235. if (appresponse.result != null) {
  236. apptitle = appresponse.result.AppTitle.replace(/ /g, '');
  237. UniqueId = appresponse.result.DevOrgName + "_" + appresponse.result.ModuleTypeName + "_" + appresponse.result.ModuleName + "_" + apptitle;
  238. UniqueId = UniqueId.replace(/ /g, '');
  239. if (id == 0) {
  240. $("#txt_UniqueId").text(UniqueId);
  241. }
  242. }
  243. }
  244. });
  245. });
  246. }
  247. $("#txt_SettingName").keyup(function () {
  248. if (id == 0) {
  249. let settingname = $("#txt_SettingName").val().toString().replace(/ /g, '');
  250. $("#txt_UniqueId").text(UniqueId + "_AppConfiguration_" + settingname.toString().replace(/ /g, '') + apptitle);
  251. }
  252. });
  253. $("#btnSaveAppConfiguration").click(function () {
  254. let controlid = "form_AppConfiguration";
  255. let result = Unibase.Platform.Forms.Components.FormViewer.Instance().requiredFieldValidation(controlid);
  256. if (result == false) {
  257. MessageHelper.Instance().showError("Mandatory Fields are missing", "div_Validation");
  258. return false;
  259. }
  260. AppConfigurations.Instance().SaveConfiguration(containerid, id);
  261. });
  262. $("#btnCloseAppConfiguration").click(function () {
  263. $('#' + containerid).modal('hide');
  264. $('#' + containerid).remove();
  265. });
  266. $(".Addformrole").on("click", function () {
  267. var formid = Number($("#autocomplete_Form").val());
  268. var roleid = Number($("#autocomplete_role").val());
  269. var formname = $("#autocomplete_Form option:selected").text();
  270. var rolename = $("#autocomplete_role option:selected").text();
  271. if (formid != 0) {
  272. if (roleid != -1) {
  273. instance.formroledesign(formid, formname, roleid, rolename, 0);
  274. instance.javaScript(formid, roleid);
  275. }
  276. else {
  277. MessageHelper.Instance().showError("Please select role", "ul_errmsg");
  278. return false;
  279. }
  280. }
  281. else {
  282. MessageHelper.Instance().showError("Please select form and role", "ul_errmsg");
  283. return false;
  284. }
  285. });
  286. }
  287. loadForm(FormId, Pk_Value, AppConfigurationId, Callback, ElementId) {
  288. AppConfigurations.formroles = [];
  289. this.addConfiguration(Pk_Value);
  290. }
  291. addConfiguration(Pk_Value) {
  292. AppConfigurations.formroles = [];
  293. this.navigationHelper.popup(Pk_Value, '', Unibase.Platform.Apps.Components.AppConfigurations.Instance(), null, Platform.Helpers.Size.Large);
  294. }
  295. loaddata(Id) {
  296. var installedappid = Unibase.Themes.Providers.DetailHelper.recordId;
  297. var instance = this;
  298. var url = _appsettings.server_url() + '/apis/v4/unibase/platform/apps/getapppermissiontypes/installedappid/' + installedappid;
  299. AutoCompleteHelper.getHelper().Create("#autocomplete_RoleSetting", "#hfAutoComplete_RoleSetting", url, function (response) {
  300. });
  301. var url = _appsettings.server_url() + '/apis/v4/unibase/platform/apps/getpermissions';
  302. AutoCompleteHelper.getHelper().Create("#autocomplete_Permission", "#hfAutoComplete_Permission", url, function (response) {
  303. });
  304. var url = _appsettings.server_url() + '/apis/v4/unibase/platform/apps/getappconfigtypes';
  305. AutoCompleteHelper.getHelper().Create("#autocomplete_Appconfigtype", "#hfAutoComplete_Appconfigtype", url, function (response) {
  306. });
  307. var url = _appsettings.server_url() + '/apis/v4/unibase/platform/forms/getforms/installedappid/' + installedappid + '/appid/' + 0;
  308. AutoCompleteHelper.getHelper().Create("#autocomplete_Form", "#hfAutocomplete_Form", url, function (response) {
  309. });
  310. var url = _appsettings.server_url() + '/apis/v4/unibase/platform/apps/icons';
  311. AutoCompleteHelper.getHelper().Create("#autocomplete_Icon", "#hfAutocomplete_Icon", url, function (response) {
  312. }, true);
  313. var url = _appsettings.server_url() + '/apis/v4/unibase/platform/apps/getsettingurl';
  314. AutoCompleteHelper.getHelper().Create("#autocomplete_Settingurl", "#hfAutoComplete_Settingurl", url, function (response) {
  315. });
  316. var url = _appsettings.server_url() + '/apis/v4/unibase/platform/roles/getroles';
  317. AutoCompleteHelper.getHelper().Create("#autocomplete_role", "#hf_autocomplete_role", url, function (response) {
  318. });
  319. var url = _appsettings.server_url() + '/apis/v4/unibase/platform/apps/installedappautocomplete';
  320. AutoCompleteHelper.getHelper().Create("#autocomplete_InstalledApps", "#hfAutoComplete_InstalledApps", url, function (response) {
  321. });
  322. var url = _appsettings.server_url() + '/apis/v4/unibase/platform/apps/installedappautocomplete';
  323. AutoCompleteHelper.getHelper().Create("#autocomplete_LinkedApp", "#hfAutoComplete_LinkedApp", url, function (response) {
  324. });
  325. if (Id != 0) {
  326. var instance = this;
  327. AppConfigurations.formroles.length = 0;
  328. $(".title").text('Edit AppConfiguration');
  329. this.appManager.getAppConfiguration(Id).then(function (response) {
  330. var data = response;
  331. var settingurlType = data.result.SettingUrlType;
  332. $("#autocomplete_Settingurl").on("change", function () {
  333. if (($("#autocomplete_Settingurl").val()) != (Unibase.Platform.Apps.Enums.SettingUrlType.JsFunction && Unibase.Platform.Apps.Enums.SettingUrlType.Component)) {
  334. $("#txt_SettingURL").val('');
  335. $("#txt_Onclick").val('');
  336. }
  337. });
  338. if (Number(settingurlType) == Unibase.Platform.Apps.Enums.SettingUrlType.Form) {
  339. $(".div_total").removeClass("hidden");
  340. $(".div_formsize").removeClass("hidden");
  341. $(".div_onclick").removeClass('hidden');
  342. }
  343. $("#hf_StatusId").val(data.result.ConfigStatusId);
  344. if (Number(data.result.AppConfigType) == Unibase.Platform.Apps.Enums.AppConfigeType.Settings) {
  345. if (Number(data.result.LinkAppId != 0)) {
  346. var linkedappoption = new Option(response.result.LinkAppTitle, response.result.LinkAppId.toString(), true);
  347. $("#autocomplete_LinkedApp").append(linkedappoption);
  348. }
  349. $(".div_linkedapps").removeClass('hidden');
  350. }
  351. if (Number(settingurlType) == Unibase.Platform.Apps.Enums.SettingUrlType.JsFunction || Number(settingurlType) == Unibase.Platform.Apps.Enums.SettingUrlType.Component) {
  352. $(".div_onclick").removeClass("hidden");
  353. }
  354. if (Number(settingurlType) == Unibase.Platform.Apps.Enums.SettingUrlType.Procedure) {
  355. $(".div_procedure").removeClass("hidden");
  356. }
  357. $("#txt_SettingName").val(data.result.SettingName);
  358. $("#txt_SettingURL").val(data.result.SettingUrl);
  359. $("#txt_Onclick").val(data.result.JsFunction);
  360. $("#txt_ProcName").val(data.result.LinkProcName);
  361. var settingurloption = new Option(Unibase.Platform.Apps.Enums.SettingUrlType[response.result.SettingUrlType], response.result.SettingUrlType.toString(), true);
  362. $("#autocomplete_Settingurl").append(settingurloption);
  363. $('#autocomplete_FormSize option:nth(' + response.result.FormSize + ')').prop("selected", "selected");
  364. var iconoption = new Option(response.result.Icon, response.result.Icon, true);
  365. $("#autocomplete_Icon").append(iconoption);
  366. var appconfigoption = new Option(Unibase.Platform.Apps.Enums.AppConfigeType[response.result.AppConfigType], response.result.AppConfigType.toString(), true);
  367. $("#autocomplete_Appconfigtype").append(appconfigoption);
  368. var permissionoption = new Option(Unibase.Platform.Permissions.Enums.PermissionLevel[response.result.Permission], response.result.Permission.toString(), true);
  369. $("#autocomplete_Permission").append(permissionoption);
  370. var installedappoption = new Option(response.result.RoleSettingAppTitle, response.result.RoleSettingAppId.toString(), true);
  371. $("#autocomplete_InstalledApps").append(installedappoption);
  372. if (data.result.AppPermissionId != 0) {
  373. instance.appManager.getAppPermission(data.result.AppPermissionId).then(function (apppermissionres) {
  374. $("#autocomplete_RoleSetting").append('<option value="' + apppermissionres.result.AppPermissionId + '">' + apppermissionres.result.SettingName + '</option>');
  375. });
  376. }
  377. if (response.result.Ungrouped == true) {
  378. $("#chk_Ungrouped").prop("checked", true);
  379. }
  380. else {
  381. $("#chk_Ungrouped").prop("checked", false);
  382. }
  383. if (response.result.ExcludeFromLock == true) {
  384. $("#chk_ExcludeFromLock").prop("checked", true);
  385. }
  386. else {
  387. $("#chk_ExcludeFromLock").prop("checked", false);
  388. }
  389. $("#txt_ConfigDescription").val(data.result.Description);
  390. var formname = "";
  391. instance.formManager.getFormRoles(response.result.AppConfigurationId).then(function (formresp) {
  392. if (formresp.result.length > 0) {
  393. formname = formresp.result[0].FormName;
  394. var formoption = new Option(formname, (formresp.result[0].FormId).toString(), true);
  395. $("#autocomplete_Form").append(formoption);
  396. if (formresp.result[0].RoleId == 0) {
  397. $("#autocomplete_role").empty();
  398. var roleoption = new Option("All", (formresp.result[0].RoleId).toString(), true);
  399. $("#autocomplete_role").append(roleoption);
  400. }
  401. else {
  402. }
  403. for (let formrole of formresp.result) {
  404. var rolename = "";
  405. if (formrole.RoleId == 0) {
  406. rolename = "All";
  407. instance.formroledesign(formrole.FormId, formrole.FormName, formrole.RoleId, rolename, formrole.FormRoleId);
  408. instance.javaScript(formrole.FormId, formrole.RoleId);
  409. $("#autocomplete_role").empty();
  410. var roleoption = new Option(rolename, (formresp.result[0].RoleId).toString(), true);
  411. $("#autocomplete_role").append(roleoption);
  412. }
  413. else {
  414. instance.permissionManager.getRole(formrole.RoleId).then(function (response) {
  415. rolename = response.result.RoleName;
  416. }).then(function () {
  417. instance.formroledesign(formrole.FormId, formrole.FormName, formrole.RoleId, rolename, formrole.FormRoleId);
  418. instance.javaScript(formrole.FormId, formrole.RoleId);
  419. $("#autocomplete_role").empty();
  420. var roleoption = new Option(rolename, (formresp.result[0].RoleId).toString(), true);
  421. $("#autocomplete_role").append(roleoption);
  422. });
  423. }
  424. }
  425. }
  426. });
  427. $("#txt_UniqueId").text(data.result.UniqueId.replace(/ /g, ''));
  428. });
  429. }
  430. }
  431. InstalledApps() {
  432. var installedappid = Unibase.Themes.Providers.DetailHelper.recordId;
  433. var appid = Number($("#autocomplete_InstalledApps").val());
  434. $("#autocomplete_RoleSetting").empty();
  435. var url = _appsettings.server_url() + '/apis/v4/unibase/platform/apps/getapppermissiontypes/installedappid/' + appid;
  436. AutoCompleteHelper.getHelper().Create("#autocomplete_RoleSetting", "#hfAutoComplete_RoleSetting", url, function (response) {
  437. });
  438. var url = _appsettings.server_url() + '/apis/v4/unibase/platform/forms/getforms/installedappid/' + installedappid + '/appid/' + appid;
  439. AutoCompleteHelper.getHelper().Create("#autocomplete_Form", "#hfAutocomplete_Form", url, function (response) {
  440. });
  441. }
  442. formroledesign(formid, formname, roleid, rolename, FormRoleId) {
  443. if ($("#spform_" + formid).text() == formname && $("#sprole_" + roleid).text() == rolename || ($("#spform_" + formid).text() != formname && $("#sprole_" + roleid).text() == rolename)) {
  444. MessageHelper.Instance().showError("aleady existed", "ul_errmsg");
  445. return false;
  446. }
  447. var lihtml = `<div class="formroles" id="li_` + formid + `_` + roleid + `"><div class="card"><div class="card-body"><div class="row">
  448. <div class="col-sm-6"><h6>FormRoles</h6></div>
  449. <div class="col-sm-6 div_delete"><a class="ml-auto btn-xs btn pull-right" onclick="Unibase.Platform.Apps.Components.AppConfigurations.Instance().deleterow(` + formid + `,` + roleid + `);" title="Remove row"><i class="fa fa-times remove-icon_1"></i></a></div>
  450. </div><br>
  451. <div class="row">
  452. <div class="col-sm-4"><span id="spform_` + formid + `" class="sp_form" data-text=` + formid + `>` + formname + `</span></div>
  453. <div class="col-sm-4"><span id="sprole_` + roleid + `" class="sp_role" data-text=` + roleid + `>` + rolename + `</span></div>
  454. <input type="hidden" class="form-control floating-label-control txtformrole" data-isdynamic="false" value="` + FormRoleId + `">
  455. </div><br>
  456. <div class="row"><div class="col-sm-12"><div class="value-control" style="display: block;" id="appconfiguration_javascript_` + formid + `_` + roleid + `"></div></div></div>
  457. </div>
  458. </div></div>`;
  459. $(".div_formrole").append(lihtml);
  460. AppConfigurations.formroles.push({ formid: formid, roleid: roleid, formroleid: FormRoleId });
  461. }
  462. deleteAppConfiguration(AppConfigurationId) {
  463. var instance = this;
  464. bootbox.confirm({
  465. message: "Are you sure you want to Delete",
  466. closeButton: false,
  467. buttons: {
  468. confirm: {
  469. label: 'Yes',
  470. className: 'btn-success'
  471. },
  472. cancel: {
  473. label: 'No',
  474. className: 'btn-defualt'
  475. }
  476. },
  477. callback: function (result) {
  478. if (result) {
  479. if (result == true) {
  480. instance.appManager.deleteAppConfiguration(AppConfigurationId).then(function (response) {
  481. if (response.status == Unibase.Data.Status.Error) {
  482. MessageHelper.Instance().showError(response.message, "div_message");
  483. }
  484. else {
  485. MessageHelper.Instance().showSuccess(response.message, "div_message");
  486. var obj = Unibase.Themes.Compact.Components.Details.Instance();
  487. obj._recordId = Unibase.Themes.Providers.DetailHelper.recordId;
  488. obj._installedAppId = Unibase.Themes.Providers.DetailHelper.installedAppId;
  489. Unibase.Themes.Compact.Components.Details.Instance().loadPortlets(obj);
  490. }
  491. });
  492. }
  493. }
  494. }
  495. });
  496. }
  497. deleterow(formid, roleid) {
  498. var instance = this;
  499. for (let obj of AppConfigurations.formroles) {
  500. if (obj.formid == formid && obj.roleid == roleid) {
  501. if (obj.formroleid != 0) {
  502. instance.deletedconfigurationids += obj.formroleid + "|";
  503. }
  504. var index = AppConfigurations.formroles.indexOf(obj);
  505. AppConfigurations.formroles.splice(index, 1);
  506. $(".div_formrole").find('#li_' + formid + '_' + roleid).remove();
  507. }
  508. }
  509. }
  510. javaScript(formid, roleid) {
  511. var instance = this;
  512. instance.formproperties = [];
  513. instance.formManager.getFormProperties(formid).then(function (response) {
  514. for (let i = 0; i < response.result.length; i++) {
  515. instance.formproperties.push(response.result[i].FormPropertyName + "-PropertyName");
  516. }
  517. });
  518. instance.formManager.getSections(formid).then(function (response) {
  519. for (let j = 0; j < response.result.length; j++) {
  520. instance.formproperties.push(response.result[j].SectionName + "-SectionName");
  521. }
  522. });
  523. var detailsdata = Unibase.Themes.Providers.Detail_Settings.Instance().InputParameters;
  524. if (detailsdata.length > 0) {
  525. for (let k = 0; k < detailsdata.length; k++) {
  526. let split = detailsdata[k].Key.split('_');
  527. instance.formproperties.push(split[2] + "-HiddenFieldName");
  528. }
  529. }
  530. $("#appconfiguration_javascript_" + formid + "_" + roleid).summernote({
  531. height: 200,
  532. placeholder: "text",
  533. disableDragAndDrop: true,
  534. codemirror: {
  535. mode: 'text/html',
  536. lineNumbers: true,
  537. },
  538. toolbar: [
  539. ['view', ['help']],
  540. ],
  541. hint: {
  542. match: /\B[@!](\w*)$/,
  543. search: function (keyword, callback) {
  544. callback($.grep(instance.formproperties, function (i) {
  545. var user = i;
  546. return user.indexOf(keyword) === 0;
  547. }));
  548. },
  549. content: function (i) {
  550. var user = i;
  551. return $('<span>@' + user + '</span>')[0];
  552. }
  553. }
  554. });
  555. }
  556. SaveConfiguration(containerid, AppConfigurationId) {
  557. AppConfigurations.formroles = [];
  558. var instance = this;
  559. var ungrouped = false;
  560. var excludeFromLock = false;
  561. var statusId = 1;
  562. var StettingUrlType = $("#autocomplete_Settingurl").val();
  563. var Form = $("#hfAutocomplete_Form").val();
  564. var Role = $("#hf_autocomplete_role").val();
  565. if (AppConfigurationId != 0) {
  566. statusId = Number($("#hf_StatusId").val());
  567. }
  568. if ($("#chk_Ungrouped").prop('checked')) {
  569. ungrouped = true;
  570. }
  571. if ($("#chk_ExcludeFromLock").prop('checked')) {
  572. excludeFromLock = true;
  573. }
  574. if (StettingUrlType == (Apps.Enums.SettingUrlType.Component || Apps.Enums.SettingUrlType.JsFunction)) {
  575. if ($("#txt_SettingURL").val() == '') {
  576. MessageHelper.Instance().showError("Please Enter SettingUrl", "div_Validation");
  577. return false;
  578. }
  579. if ($("#txt_Onclick").val() == '') {
  580. MessageHelper.Instance().showError("Please Enter Onclick", "div_Validation");
  581. return false;
  582. }
  583. }
  584. if (StettingUrlType == Apps.Enums.SettingUrlType.Form) {
  585. if (Form == '0') {
  586. MessageHelper.Instance().showError("Please Select Form Role", "div_Validation");
  587. return false;
  588. }
  589. if (Form != '0') {
  590. if (Role == '-1') {
  591. MessageHelper.Instance().showError("Please Select Role ", "div_Validation");
  592. return false;
  593. }
  594. if (Role != '-1') {
  595. if ($(".div_formrole").children(".formroles").length == 0) {
  596. MessageHelper.Instance().showError("Please Add Form Role ", "div_Validation");
  597. return false;
  598. }
  599. }
  600. }
  601. }
  602. $(".formroles").each(function () {
  603. var formid = Number($(this).find(".sp_form").attr("data-text"));
  604. var roleid = Number($(this).find(".sp_role").attr("data-text"));
  605. var jstext = $(this).find(".note-editable").text();
  606. var formroleid = Number($(this).find(".txtformrole").val());
  607. AppConfigurations.formroles.push({ formid: formid, roleid: roleid, formroleid: formroleid, jstext: jstext });
  608. });
  609. var formSize = JSON.parse($("#autocomplete_FormSize").val().toString());
  610. var settingUrlType = JSON.parse($("#autocomplete_Settingurl").val().toString());
  611. if (settingUrlType != Apps.Enums.SettingUrlType.Form) {
  612. formSize = Unibase.Platform.Helpers.Size.None;
  613. }
  614. let postData = {
  615. AppConfigurationId: AppConfigurationId,
  616. SettingName: $("#txt_SettingName").val(),
  617. SettingUrl: $("#txt_SettingURL").val(),
  618. SettingUrlType: settingUrlType,
  619. Permission: JSON.parse($("#hfAutoComplete_Permission").val().toString()),
  620. AppConfigType: JSON.parse($("#hfAutoComplete_Appconfigtype").val().toString()),
  621. Icon: $("#autocomplete_Icon").val(),
  622. UniqueId: $("#txt_UniqueId").text(),
  623. InstalledAppId: Unibase.Themes.Providers.DetailHelper.recordId,
  624. JsFunction: $("#txt_Onclick").val(),
  625. Ungrouped: ungrouped,
  626. FormRoles: AppConfigurations.formroles,
  627. DeleteConfigurationIds: instance.deletedconfigurationids,
  628. Description: $("#txt_ConfigDescription").val(),
  629. AppPermissionId: Number($("#autocomplete_RoleSetting").val()),
  630. LinkAppId: Number($("#autocomplete_LinkedApp").val()),
  631. FormSize: formSize,
  632. ExcludeFromLock: excludeFromLock,
  633. StatusId: statusId,
  634. LinkProcName: $("#txt_ProcName").val()
  635. };
  636. instance.navigationHelper.showLoading();
  637. instance.appManager.saveAppConfiguration(postData).then(function (response) {
  638. $('#' + containerid).modal('hide');
  639. $('#' + containerid).remove();
  640. if (response.status == Unibase.Data.Status.Error) {
  641. MessageHelper.Instance().showError(response.message, "div_Validation");
  642. }
  643. else {
  644. MessageHelper.Instance().showSuccess(response.message, "div_Validation");
  645. $('#' + containerid).modal('hide');
  646. $('#' + containerid).remove();
  647. var obj = Unibase.Themes.Compact.Components.Details.Instance();
  648. obj._recordId = Unibase.Themes.Providers.DetailHelper.recordId;
  649. obj._installedAppId = Unibase.Themes.Providers.DetailHelper.installedAppId;
  650. Unibase.Themes.Compact.Components.Details.Instance().loadPortlets(obj);
  651. }
  652. instance.navigationHelper.hideLoading();
  653. });
  654. }
  655. UpdateConfigStatus(statusId, appConfigurationId) {
  656. var instance = this;
  657. if (statusId == 1) {
  658. var msg = "Are you sure you want to De-Activate ?";
  659. statusId = 2;
  660. }
  661. else {
  662. var msg = "Are you sure you want to Activate ?";
  663. statusId = 1;
  664. }
  665. bootbox.confirm({
  666. message: msg,
  667. closeButton: false,
  668. buttons: {
  669. confirm: {
  670. label: 'Yes',
  671. className: 'btn-success'
  672. },
  673. cancel: {
  674. label: 'No',
  675. className: 'btn-defualt'
  676. }
  677. },
  678. callback: function (result) {
  679. if (result) {
  680. instance.appManager.updateConfigurationStatus(appConfigurationId, statusId).then(function (response) {
  681. if (response.status == Unibase.Data.Status.Error) {
  682. MessageHelper.Instance().showError(response.message, "div_message");
  683. }
  684. else {
  685. MessageHelper.Instance().showSuccess(response.message, "div_message");
  686. var obj = Unibase.Themes.Compact.Components.Details.Instance();
  687. obj._recordId = Unibase.Themes.Providers.DetailHelper.recordId;
  688. obj._installedAppId = Unibase.Themes.Providers.DetailHelper.installedAppId;
  689. Unibase.Themes.Compact.Components.Details.Instance().loadPortlets(obj);
  690. }
  691. });
  692. }
  693. }
  694. });
  695. }
  696. static Instance() {
  697. if (this.instance === undefined) {
  698. this.instance = new AppConfigurations();
  699. }
  700. return this.instance;
  701. }
  702. }
  703. AppConfigurations.formroles = [];
  704. AppConfigurations.saveformroles = [];
  705. Components.AppConfigurations = AppConfigurations;
  706. })(Components = Apps.Components || (Apps.Components = {}));
  707. })(Apps = Platform.Apps || (Platform.Apps = {}));
  708. })(Platform = Unibase.Platform || (Unibase.Platform = {}));
  709. })(Unibase || (Unibase = {}));