PageRenderTime 59ms CodeModel.GetById 19ms RepoModel.GetById 1ms app.codeStats 0ms

/www/js/company/user.modal.js

https://gitlab.com/melentev-av/spassibo.dev
JavaScript | 384 lines | 346 code | 19 blank | 19 comment | 66 complexity | f4f3ee7f2025580354820508da30d615 MD5 | raw file
  1. $("#addBonusesBtn").click(function(){
  2. addBonuses();
  3. });
  4. $("#incBonuses").click(function(){
  5. $count = parseInt($('#countBonuses').val());
  6. $count += 100;
  7. if ($count > 0)
  8. $count = '+' + $count;
  9. $('#countBonuses').val($count);
  10. });
  11. $("#decBonuses").click(function(){
  12. $count = parseInt($('#countBonuses').val());
  13. $count -= 100;
  14. if ($count > 0)
  15. $count = '+' + $count;
  16. $('#countBonuses').val($count);
  17. });
  18. $("#userCardGroupSelect").change(function(){
  19. $id = $('#userId').val();
  20. $val = $("#userCardGroupSelect").val();
  21. $.ajax({
  22. url: '/client/edit/'+$id,
  23. type: 'post',
  24. data: {
  25. id:$id,
  26. name: 'cardGroup',
  27. value: $val,
  28. },
  29. dataType: 'json',
  30. success: function($data)
  31. {
  32. if ($data && $data.success)
  33. {
  34. addNotification({title: spsLang['gritter.success.title'], message: $data.message}, 'success');
  35. }
  36. else if ($data && $data.error)
  37. {
  38. $.gritter.add({
  39. title: $data.title,
  40. text: $data.message,
  41. image: $button.closest(".purchase").find(".panel .panel-body img").attr("src"),
  42. sticky: false,
  43. time: '10000',
  44. class_name: ''
  45. });
  46. }
  47. },
  48. error: function($response){
  49. parseErrorResponse($response);
  50. }
  51. });
  52. });
  53. function showProfile($id)
  54. {
  55. $dialog = $("#clientProfileDialog");
  56. $url = $("#userLogotype").data('default-url');
  57. $body = $("body");
  58. $body.addClass("loading");
  59. $("#userCardGroupSelect").val(0);
  60. $.ajax({
  61. url: '/client/get',
  62. type: 'post',
  63. data: {id:$id},
  64. dataType: 'json',
  65. success: function($data)
  66. {
  67. $body.removeClass("loading");
  68. $dialog.modal('show');
  69. if ($data && $data.success)
  70. {
  71. $("#userLogotype, #userFirstName, #userLastName, #userGender, #userBirthday, #userCountry, #userCity, #userDescription").editable('option', 'url', $url+'/'+$id);
  72. $('#userId').val($data.user.id);
  73. $('#userBonuses').html($data.user.bonuses);
  74. $('#userUsername').html($data.user.username);
  75. $('#userLogotype img').attr('src', $data.user.oLogotype.url?$data.user.oLogotype.url:"/img/avatar.png");
  76. $('#userFirstName').editable('setValue', $data.user.firstName, true);
  77. $('#userLastName').editable('setValue', $data.user.lastName, true);
  78. $('#userGender').editable('setValue', $data.user.gender);
  79. $('#userBirthday').editable('setValue', $data.user.birthday);
  80. $('#userCountry').editable('setValue', $data.user.country);
  81. $('#userCity').editable('setValue', $data.user.city);
  82. $('#userDescription').editable('setValue', $data.user.description);
  83. $("#userCardGroupSelect").val($data.user.cardGroup);
  84. //initModalProfile();
  85. }
  86. else if ($data && $data.error)
  87. {
  88. $.gritter.add({
  89. title: $data.title,
  90. text: $data.message,
  91. image: $button.closest(".purchase").find(".panel .panel-body img").attr("src"),
  92. sticky: false,
  93. time: '10000',
  94. class_name: ''
  95. });
  96. }
  97. },
  98. error: function(){
  99. }
  100. });
  101. }
  102. function addBonuses()
  103. {
  104. $id = $('#userId').val();
  105. $count = parseInt($('#countBonuses').val());
  106. if ($count < 0)
  107. $action = 'minus';
  108. else
  109. $action = 'plus';
  110. $count = Math.abs($count);
  111. if ($count <= 0){
  112. $("#clientProfileDialog").modal("hide");
  113. return;
  114. }
  115. var $giftSmsTable = $("#giftSmsTable").DataTable();
  116. if($count == '' || $count == '0') {
  117. alert("Пожалуйста укажите количество бонусов");
  118. $('#countBonuses').focus();
  119. return;
  120. }
  121. $.ajax({
  122. url: '/client/addBonuses',
  123. type: 'post',
  124. data: {
  125. id:$id,
  126. action:$action,
  127. count:$count
  128. },
  129. dataType: 'json',
  130. success: function($data)
  131. {
  132. if ($data && $data.success)
  133. {
  134. addNotification({title: spsLang['gritter.success.title'], message: $data.message}, 'success');
  135. $("#clientProfileDialog").modal("hide");
  136. if($("#giftSmsTable").length > 0) {
  137. var $giftSmsTable = $("#giftSmsTable").DataTable();
  138. $giftSmsTable.ajax.reload();
  139. }
  140. if($("#clientsTable").length > 0) {
  141. var $clientsTable = $("#clientsTable").DataTable();
  142. $clientsTable.ajax.reload();
  143. }
  144. }
  145. else if ($data && $data.error)
  146. {
  147. $.gritter.add({
  148. title: $data.title,
  149. text: $data.message,
  150. image: $button.closest(".purchase").find(".panel .panel-body img").attr("src"),
  151. sticky: false,
  152. time: '10000',
  153. class_name: ''
  154. });
  155. }
  156. },
  157. error: function($response){
  158. parseErrorResponse($response);
  159. }
  160. });
  161. //*/
  162. }
  163. initModalProfile();
  164. jqXHR = new Array();
  165. $cropData = {};
  166. function initModalProfile()
  167. {
  168. jqXHR = new Array();
  169. $cropData = {};
  170. $(function () {
  171. $.fn.editable.defaults.mode = 'inline';
  172. $.fn.editable.defaults.emptytext = spsLang['editable.empty'];
  173. $.fn.editable.defaults.value = '';
  174. $.fn.editableform.loading = "<div class='editableform-loading'><i class='ace-icon fa fa-spinner fa-spin fa-2x light-blue'></i></div>";
  175. $.fn.editableform.buttons = '<button type="submit" class="btn btn-info editable-submit"><i class="ace-icon fa fa-check"></i></button>'+
  176. '<button type="button" class="btn editable-cancel"><i class="ace-icon fa fa-times"></i></button>';
  177. $('#userFirstName').editable({
  178. type: 'text',
  179. name: 'firstName',
  180. emptyclass: '',
  181. //send: true,
  182. pk: 'firstName',
  183. inputclass: 'editable_modal',
  184. validate: function(value) {
  185. if($.trim(value) == '') {
  186. return 'Укажите Имя';
  187. }
  188. },
  189. success: function(response, newValue) {
  190. if(typeof(response) == 'object'){
  191. var success = response.success;
  192. if(success == true){
  193. $(".profile"+response.id).html(response.name);
  194. return {newValue: response.value}
  195. }
  196. }
  197. }
  198. });
  199. $('#userLastName').editable({
  200. type: 'text',
  201. name: 'lastName',
  202. emptyclass: '',
  203. //send: true,
  204. pk: 'lastName',
  205. inputclass: 'editable_modal',
  206. validate: function(value) {
  207. if($.trim(value) == '') {
  208. return 'Укажите Фамилию';
  209. }
  210. },
  211. success: function(response, newValue) {
  212. if(typeof(response) == 'object'){
  213. var success = response.success;
  214. if(success == true){
  215. $(".profile"+response.id).html(response.name);
  216. return {newValue: response.value}
  217. }
  218. }
  219. }
  220. });
  221. $('#userDescription').editable({
  222. type: 'textarea',
  223. name: 'description',
  224. rows: 3,
  225. emptyclass: '',
  226. pk: 'description',
  227. inputclass: 'editable_modal',
  228. success: function(response, newValue) {
  229. if(typeof(response) == 'object'){
  230. var success = response.success;
  231. if(success == true){
  232. $(".profile"+response.id).html(response.name);
  233. return {newValue: response.value}
  234. }
  235. }
  236. }
  237. });
  238. $("#userCountry").editable({
  239. type: 'select2',
  240. name: 'country',
  241. emptyclass: '',
  242. pk: 'country',
  243. source: $countries,
  244. select2: {
  245. placeholder: 'Выберите страну',
  246. width: 180
  247. //minimumInputLength: 1
  248. },
  249. inputclass: 'editable_modal',
  250. success: function(response, newValue) {
  251. if(typeof(data) == 'object'){
  252. var success = response.success;
  253. if(success == true){
  254. return {newValue: response.value}
  255. }
  256. }
  257. }
  258. });
  259. $('#userCity').editable({
  260. type: 'text',
  261. name: 'city',
  262. emptyclass: '',
  263. pk: 'city',
  264. validate: function(value) {
  265. if($.trim(value) == '') {
  266. return 'Укажите город';
  267. }
  268. },
  269. inputclass: 'editable_modal',
  270. success: function(response, newValue) {
  271. if(typeof(response) == 'object'){
  272. var success = response.success;
  273. if(success == true){
  274. return {newValue: response.value}
  275. }
  276. }
  277. }
  278. });
  279. $("#userGender").editable({
  280. type: 'select',
  281. name: 'gender',
  282. emptyclass: '',
  283. inputclass: 'form-control',
  284. pk: 'gender',
  285. source: $gender,
  286. inputclass: 'editable_modal',
  287. success: function(response, newValue) {
  288. if(typeof(data) == 'object'){
  289. var success = response.success;
  290. if(success == true){
  291. return {newValue: response.value}
  292. }
  293. }
  294. }
  295. });
  296. $('#userBirthday').editable({
  297. type: 'spsdatefield',
  298. name: 'birthday',
  299. emptyclass: '',
  300. pk: 'birthday',
  301. mode: 'inline',
  302. tpl: '<div class="input-group input-group-compact"><input type="text" class="input-medium date" /><span class="input-group-addon"><i class="fa fa-calendar"></i></span></div>',
  303. //viewformat: 'dd.mm.yyyy',
  304. datepicker: {
  305. //pickTime: false,
  306. //endDate: moment().add(-16, 'years'),
  307. defaultDate: $('#userBirthday').data('value') ? moment($('#userBirthday').data('value'), 'DD.MM.YYYY') : moment().add(-16, 'years'),
  308. //useCurrent: false,
  309. //language: 'ru',
  310. locale: 'ru',
  311. //weekStart: 1,
  312. format: 'DD.MM.YYYY',
  313. //minDate: '01.01.1900',
  314. //maxDate: 'today'
  315. },
  316. inputclass: 'editable_modal',
  317. success: function(response, newValue) {
  318. if(typeof(response) == 'object'){
  319. var success = response.success;
  320. if(success == true){
  321. return {newValue: response.value}
  322. }
  323. }
  324. }
  325. });
  326. $('#userLogotype').editable({
  327. type: 'image',
  328. name: 'logotype',
  329. pk: 'logotype',
  330. value: null,
  331. onblur: 'ignore',
  332. emptytext: '<img src="/img/avatar.png" class="editable img-responsive" />',
  333. //emptytext: '<div class="ace-file-input ace-file-multiple"><span class="ace-file-container" data-title="Загрузить логотип"><span class="ace-file-name"><i class="ace-icon fa fa-picture-o"></i></span></span></div>',
  334. //inputclass: 'editable-image',
  335. image: {
  336. //specify ace file input plugin's options here
  337. url: $('#userLogotype').data('avatar-url'),
  338. crop_url: $('#userLogotype').data('crop-url')
  339. },
  340. tpl: '<div class="editable-image ace-file-input ace-file-multiple">' +
  341. '<a href="javascript:void(0)" title="'+ spsLang['avatar.upload.title'] + '" class="upload-link fileinput-button">' +
  342. '<input type="file" name="image" id="logotype-upload" />' +
  343. '<span data-title="' + spsLang['avatar.upload.container.title'] +'" class="ace-file-container"><span class="ace-file-name"><i class="ace-icon fa fa-picture-o"></i></span></span>' +
  344. '</a><input type="hidden" name="image_key" /><input type="hidden" name="image_url" />' +
  345. '</div>',
  346. success: function(response, newValue) {
  347. if(typeof(response) == 'object'){
  348. var success = response.success;
  349. if(success == true){
  350. return {newValue: response.value}
  351. }
  352. }
  353. }
  354. }).on('shown', function (e, editable) {
  355. var $editableButtons = editable.input.$input.closest('.control-group').find('.editable-buttons');
  356. if (!editable.input.$input.val())
  357. return;
  358. if ($editableButtons.find(".btn-clear").length == 0)
  359. $editableButtons.append('<button class="btn btn-purple btn-clear"><i class="fa fa-refresh"></i></button>');
  360. });
  361. //$('body').on('click', '.editable-buttons > .btn-clear', function (e) {
  362. //$(this).closest('.control-group').find('.editable-input .editable-image > input').val('random');
  363. //});
  364. });
  365. }