component.js 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168
  1. function init_components_part(input){
  2. if(input.is(":visible")) {
  3. var partPicker = input.clone();
  4. input.before(partPicker);
  5. if(input.parent().hasClass("input-group")){
  6. input.parent().after(input.detach());
  7. input.before('<div id="part-anchor" class="dropdown-anchor"></div>');
  8. }
  9. input.hide();
  10. partPicker.addClass('data-type-part').removeAttr("data-type").removeAttr('name').removeAttr('id').removeAttr('onchange');
  11. partPicker.attr('data-source',input.attr('id'));
  12. }else{
  13. partPicker = $('[data-source="'+input.attr('id')+'"]');
  14. }
  15. input.change(function(){
  16. partPicker.prop('disabled',true).val('Chargement...');
  17. $.action({
  18. action : 'get_part_by_id',
  19. id : input.val(),
  20. before : input.attr('data-before'),
  21. },function(r){
  22. partPicker.prop('disabled',input.prop('disabled'));
  23. if(r.part && r.part.label){
  24. partPicker.val(r.part.label);
  25. }else{
  26. partPicker.val('');
  27. }
  28. });
  29. });
  30. if(input.val() !=''){
  31. partPicker.prop('disabled',true).val('Chargement...');
  32. $.action({
  33. action : 'get_part_by_id',
  34. id : input.val(),
  35. before : input.attr('data-before'),
  36. },function(r){
  37. partPicker.prop('disabled',input.prop('disabled'));
  38. if(r.part && r.part.label){
  39. partPicker.val(r.part.label);
  40. }else{
  41. partPicker.val('');
  42. }
  43. });
  44. }
  45. partPicker.keyup(function(){
  46. input.val('');
  47. });
  48. var parent = input.attr('data-parent');
  49. partPicker.autocomplete({
  50. action : 'autocomplete_part',
  51. data : {
  52. before : input.attr('data-before'),
  53. parent:function(){ return $(parent).val(); }
  54. },
  55. skin : function(item){
  56. var html = '';
  57. name = item.name;
  58. /*var re = new RegExp(partPicker.val(),"gi");
  59. name = item.name.replace(re, function (x) {
  60. return '<strong>'+x+'</strong>';
  61. });*/
  62. html += '<div class="part-logo d-inline mr-2"><img src="data:'+item.picture+'" class="avatar-mini avatar-rounded"></div>';
  63. html += '<div class="user-infos d-inline"><span>'+name+'</span>';
  64. html += '<div class="clear"></div>';
  65. return html;
  66. },
  67. highlight : function(item){
  68. return item;
  69. },
  70. onClick : function(selected,element){
  71. console.log(selected,element);
  72. var li = $(element).closest('li');
  73. li.attr('data-part',selected.id);
  74. li.find('.price input').val(selected.price);
  75. li.find('.brand input').val(selected.brand);
  76. li.find('.part-image').css('background','url(data:'+selected.picture+') 0% 0% / cover');
  77. li.find('.part-image').attr('data-stream','data:'+selected.picture);
  78. input.val(selected.id);
  79. input.trigger('change');
  80. },
  81. onBlur : function(selected,element){
  82. if(input.attr('data-force')!='false' && input.val()=='') partPicker.val('');
  83. if(partPicker.val()=='') {
  84. input.val('');
  85. }
  86. input.trigger('blur');
  87. }
  88. });
  89. }
  90. function init_components_dropimage(input){
  91. if(input.data('picker')){
  92. var picker = input.data('picker')
  93. }else{
  94. var picker = $('<input class="hidden" type="file">');
  95. input.after(picker);
  96. input.data('picker',picker);
  97. input.css('cursor','pointer');
  98. }
  99. input.click(function(e){
  100. e.preventDefault();
  101. e.stopPropagation();
  102. picker.trigger('click');
  103. picker.change(function(){
  104. preloader(true);
  105. var file = picker.get(0).files[0];
  106. var reader = new FileReader();
  107. reader.addEventListener("load", function () {
  108. input.attr('src',reader.result);
  109. if(input.attr('data-callback')!=""){
  110. var callback = input.attr('data-callback');
  111. window[callback](input,reader.result);
  112. preloader(false);
  113. }
  114. }, false);
  115. reader.readAsDataURL(file);
  116. });
  117. });
  118. input.on('drag dragstart dragend dragover dragenter dragleave drop', function (e) {
  119. e.preventDefault();
  120. e.stopPropagation();
  121. })
  122. input.on('drop', function (e) {
  123. preloader(true);
  124. var droppedFiles = e.originalEvent.dataTransfer.files;
  125. var reader = new FileReader();
  126. reader.readAsDataURL(droppedFiles[0]);
  127. reader.onload = function () {
  128. input.attr('src',reader.result);
  129. if(input.attr('data-callback')!=""){
  130. var callback = input.attr('data-callback');
  131. window[callback](input,reader.result);
  132. preloader(false);
  133. }
  134. };
  135. reader.onerror = function (error) {
  136. console.log('Error: ', error);
  137. preloader(false);
  138. };
  139. });
  140. }