main.js 6.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269
  1. //CHARGEMENT DE LA PAGE
  2. function init_plugin_part(){
  3. switch($.urlParam('page')){
  4. default:
  5. break;
  6. }
  7. $('#parts').sortable_table({
  8. onSort : part_part_search
  9. });
  10. }
  11. //Enregistrement des configurations
  12. function part_setting_save(){
  13. $.action({
  14. action : 'part_setting_save',
  15. fields : $('#part-setting-form').toJson()
  16. },function(){ $.message('info','Configuration enregistrée'); });
  17. }
  18. /** PART **/
  19. //Récuperation d'une liste de part dans le tableau #parts
  20. function part_resource_part_search(callback){
  21. $('#parts').fill({
  22. action:'part_resource_part_search',
  23. resource : $('#sketch-editor').attr('data-id'),
  24. showing : function(li,i){
  25. li.css('transform','scale(0)').removeClass('hidden');
  26. setTimeout(function(){
  27. li.css('transform','scale(1)');
  28. },i*200);
  29. }
  30. },function(){
  31. $('#parts li:not(:eq(0))').each(function(i,li){
  32. part_resource_part_upload(li);
  33. var div = $('[data-stream]',li);
  34. if($(div).attr('data-stream') =='') return;
  35. $(div).css('background','url(data:'+$(div).attr('data-stream')+')')
  36. .css('background-size','cover');
  37. });
  38. if(callback!=null) callback();
  39. });
  40. }
  41. //Récuperation d'une liste de part dans le tableau #parts
  42. function part_part_search(callback){
  43. $('#parts').fill({
  44. action:'part_part_search',
  45. resource : $('#sketch-editor').attr('data-id'),
  46. },function(){
  47. $('#parts li:not(:eq(0))').each(function(i,li){
  48. part_resource_part_upload(li);
  49. var div = $('[data-stream]',li);
  50. if($(div).attr('data-stream') =='') return;
  51. $(div).css('background','url(data:'+$(div).attr('data-stream')+')')
  52. .css('background-size','cover');
  53. });
  54. $('#parts li:not(:eq(0))').css('transform','scale(0)').removeClass('hidden')
  55. $('#parts li:not(:eq(0))').each(function(i,li){
  56. var li = $(li);
  57. setTimeout(function(){
  58. li.css('transform','scale(1)');
  59. },i*200);
  60. });
  61. if(callback!=null) callback();
  62. });
  63. }
  64. //Ajout ou modification d'élément part
  65. function part_part_save(element){
  66. if(element){
  67. var li = $(element).closest('li');
  68. var data = {
  69. resource : $('#sketch-editor').attr('data-id'),
  70. part : li.attr('data-part'),
  71. id : li.attr('data-id'),
  72. label : li.find('.label').val(),
  73. brand : li.find('.brand input').val(),
  74. price : li.find('.price input').val(),
  75. url : li.find('.url').val(),
  76. picture : li.find('.part-image').attr('data-stream')
  77. }
  78. }else{
  79. var data = $('#part-form').toJson();
  80. }
  81. data.action = 'part_part_save';
  82. $.action(data,function(r){
  83. if(element){
  84. li.removeClass('edition');
  85. li.attr('data-part',r.part);
  86. li.attr('data-id',r.id)
  87. }
  88. $.message('success','Enregistré');
  89. });
  90. }
  91. function part_part_find(element){
  92. var li = $(element).closest('li');
  93. var label = li.find('.label').val();
  94. var brand = li.find('.brand input').val();
  95. var url = "https://www.ebay.fr/sch/i.html?_from=R40&_sacat=0&LH_BIN=1&LH_PrefLoc=2&_sop=15";
  96. if(null!=brand && brand !='') label = brand+'+'+label;
  97. url += "&_nkw="+label;
  98. window.open(url);
  99. }
  100. function part_part_add(){
  101. var tpl = $('#parts li:eq(0)').get(0).outerHTML;
  102. var data = {
  103. price : 1,
  104. url : 'http://ebay.com'
  105. }
  106. var item = $(Mustache.render(tpl,data));
  107. item.removeClass('hidden').addClass('edition');
  108. item.css({
  109. transform : 'scale(0)',
  110. opacity : 0,
  111. });
  112. $('#parts li:eq(0)').after(item);
  113. item.css({
  114. transform : 'scale(1) rotate(0deg)',
  115. opacity : 1,
  116. });
  117. init_components(item);
  118. part_resource_part_upload(item);
  119. }
  120. function part_resource_part_upload(item){
  121. var item = $(item);
  122. var image = item.find('.part-image');
  123. image.click(function(e){
  124. e.preventDefault();
  125. e.stopPropagation();
  126. var picker = image.next('input[type="file"]');
  127. picker.trigger('click');
  128. picker.change(function(){
  129. var file = picker.get(0).files[0];
  130. var reader = new FileReader();
  131. reader.addEventListener("load", function () {
  132. image.css('background','url('+reader.result+')')
  133. .attr('data-stream',reader.result)
  134. .css('background-size','cover');
  135. }, false);
  136. reader.readAsDataURL(file);
  137. });
  138. });
  139. image.on('drag dragstart dragend dragover dragenter dragleave drop', function (e) {
  140. e.preventDefault();
  141. e.stopPropagation();
  142. })
  143. image.on('drop', function (e) {
  144. var droppedFiles = e.originalEvent.dataTransfer.files;
  145. var reader = new FileReader();
  146. reader.readAsDataURL(droppedFiles[0]);
  147. reader.onload = function () {
  148. image.css('background','url('+reader.result+')')
  149. .attr('data-stream',reader.result)
  150. .css('background-size','cover');
  151. };
  152. reader.onerror = function (error) {
  153. console.log('Error: ', error);
  154. };
  155. });
  156. /*
  157. var preload = $('<div class="preload progress-bar progress-bar-striped progress-bar-animated"></div>');
  158. item.find('.part-image').append(preload);
  159. item.find('.part-image').attr('id','part-image-'+$('#parts li').length());
  160. item.find('.part-image').upload({
  161. allowed : 'jpg,png,jpeg,bmp,svg',
  162. size : 0,
  163. action : 'part_part_image_upload',
  164. readonly: false,
  165. start: function(){
  166. preload.show();
  167. },
  168. success: function(response){
  169. if(response.previews.length && response.previews[0].name) {
  170. }
  171. console.log(response);
  172. preload.fadeOut();
  173. },
  174. complete: function(){
  175. preload.fadeOut();
  176. }
  177. });*/
  178. }
  179. //Suppression d'élement part
  180. function part_resource_part_delete(element){
  181. if(!confirm('Êtes vous sûr de vouloir supprimer cet item ?')) return;
  182. var line = $(element).closest('li');
  183. if(line.attr('data-id')==''){
  184. line.css('transform','scale(0)');
  185. setTimeout(function(){
  186. line.remove()
  187. },210);
  188. return;
  189. }
  190. $.action({
  191. action : 'part_resource_part_delete',
  192. id : line.attr('data-id')
  193. },function(r){
  194. line.css('transform','scale(0)');
  195. setTimeout(function(){
  196. line.remove()
  197. },210);
  198. });
  199. }
  200. //Suppression d'élement part
  201. function part_part_delete(element){
  202. if(!confirm('Êtes vous sûr de vouloir supprimer cet item ?')) return;
  203. var line = $(element).closest('li');
  204. if(line.attr('data-id')==''){
  205. line.css('transform','scale(0)');
  206. setTimeout(function(){
  207. line.remove()
  208. },210);
  209. return;
  210. }
  211. $.action({
  212. action : 'part_part_delete',
  213. id : line.attr('data-id')
  214. },function(r){
  215. line.css('transform','scale(0)');
  216. setTimeout(function(){
  217. line.remove()
  218. },210);
  219. });
  220. }