main.js 9.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379
  1. $(document).ready(function(){
  2. if($.hashData('embeded') =="1"){
  3. $('.navbar,.resources-options,#sketch').hide();
  4. $('.container-fluid,.col-md-9,.col-md-3').css('padding','0');
  5. $('.list-group-item,#resource').css('padding','3px').css('border-radius','0px');
  6. $('.jumbotron').css('border-radius','0');
  7. $('.row').css('margin','0');
  8. $('#resources').before('<div style="width:100%;border-radius:0px;" onclick="'+$('#download').attr('onclick')+'" class="btn btn-success" ><i class="fa fa-arrow-circle-o-down"></i> Télécharger</div>');
  9. $('.col-md-3,.col-md-9').attr('style','width:20%;float:left;padding:0;');
  10. $('.col-md-9').attr('style','width:70%;float:left;padding:0;');
  11. }
  12. var init = 'init_'+$.page();
  13. if(window[init]!=null) window[init]();
  14. if($.page()=='' ) init_index();
  15. Dropzone.autoDiscover = false;
  16. });
  17. function init_index(){
  18. search_sketch();
  19. $('#label').enter(function(){
  20. create_sketch();
  21. });
  22. $('#importJsonSketch').dropzone({
  23. url : 'action.php?action=import_sketch',
  24. complete : function(useless,server){
  25. if (this.getUploadingFiles().length === 0 && this.getQueuedFiles().length === 0) {
  26. search_sketch();
  27. }
  28. },
  29. sending : function(file, xhr, formData){
  30. formData.append('from','file');
  31. }
  32. });
  33. }
  34. //COMPONENT
  35. function init_component(){
  36. search_component();
  37. $('#imageUpload').dropzone({
  38. url : 'action.php?action=upload_component_image',
  39. success : function(useless,server){
  40. $('#imageUpload').attr('src',server);
  41. },
  42. sending : function(file, xhr, formData){
  43. //formData.append('id', $('#sketch').attr('data-id'));
  44. }
  45. });
  46. $('#label').autocomplete({
  47. source : 'http://hack.idleman.fr/action.php?action=find_component',
  48. minLength: 4,
  49. select: function( event, ui ) {
  50. $.setForm('#editComponent',ui.item.value);
  51. $('#imageUpload').attr('src',ui.item.value.image);
  52. return false;
  53. }
  54. }).data("uiAutocomplete")._renderItem = function (ul, item) {
  55. return $("<li />")
  56. .data("item.autocomplete", item)
  57. .append("<a><img style='height:50px;width:auto;' src='" + item.value.image + "' /> " + item.label + "</a>")
  58. .appendTo(ul);
  59. };
  60. };
  61. function save_component(){
  62. var data = $.getForm('#editComponent');
  63. if($('#imageUpload').attr('src').substring(0,10)=='data:image')
  64. data.image = $('#imageUpload').attr('src');
  65. $.action(data,function(r){
  66. search_component();
  67. });
  68. }
  69. function search_component(){
  70. $('#components').fill({action:'search_component'});
  71. }
  72. function edit_component(element){
  73. var data = {action : 'edit_component'};
  74. $('#editComponent input').val('');
  75. $('#imageUpload').attr('src','img/default_image.png');
  76. if(element!=null){
  77. var line = $(element).closest('tr');
  78. data.id = line.attr('data-id');
  79. }
  80. $.action(data,function(r){
  81. $('#editComponent').modal('show');
  82. $.setForm('#editComponent',r);
  83. $('#imageUpload').attr('src',r.image);
  84. $('#editComponent').attr('data-id',r.id);
  85. });
  86. }
  87. function delete_component(element){
  88. if(!confirm('Êtes vous sûr de vouloir supprimer ça?')) return;
  89. var line = $(element).closest('tr');
  90. $.action({action : 'delete_component',id : line.attr('data-id')},function(r){
  91. line.remove();
  92. });
  93. }
  94. //SKETCH
  95. function init_sketch(){
  96. search_resources(function(){
  97. var resource = $.hashData('resource');
  98. resource = resource == '' ? $('#resources a:visible():eq(1)').attr('data-id') : resource;
  99. select_resource(resource);
  100. });
  101. $('#importResource i').dropzone({
  102. url : 'action.php?action=import_resource',
  103. complete : function(useless,server){
  104. if (this.getUploadingFiles().length === 0 && this.getQueuedFiles().length === 0) {
  105. search_resources();
  106. }
  107. },
  108. sending : function(file, xhr, formData){
  109. formData.append('id', $('#sketch').attr('data-id'));
  110. }
  111. });
  112. }
  113. function search_sketch(){
  114. $('#sketchs').fill({action:'search_sketch'});
  115. }
  116. function create_sketch(){
  117. $.action($.getForm('#editSketch'),function(r){
  118. window.location = 'sketch.php?id='+r.id;
  119. });
  120. }
  121. function import_sketch(){
  122. var data = $.getForm('#importSketch');
  123. data.from = 'url';
  124. $.action(data,function(){
  125. search_sketch();
  126. });
  127. }
  128. function delete_sketch(element){
  129. if(!confirm('Êtes vous sûr de vouloir supprimer ça?')) return;
  130. var line = $(element).closest('tr');
  131. $.action({action : 'delete_sketch',id : line.attr('data-id')},function(r){
  132. line.remove();
  133. });
  134. }
  135. function save_sketch_title(element){
  136. $.action({action : 'save_sketch_title',label : $(element).val(),id:$('#sketch').attr('data-id')});
  137. }
  138. function toggle_share_sketch(element){
  139. var button = $(element).find('i');
  140. var nextState = !button.hasClass('fa-eye');
  141. $.action({action:'toggle_share_sketch',state:(nextState?1:0),id:$('#sketch').attr('data-id')},function(){
  142. button.removeClass('fa-eye').removeClass('fa-eye-slash');
  143. button.addClass((nextState?'fa-eye':'fa-eye-slash'));
  144. $(element).attr('title','Rendre '+(nextState?'Privé':'Public'));
  145. });
  146. }
  147. function toggle_embed_sketch(){
  148. $('#embedModal').modal('show');
  149. $('#embedModal textarea').val('<a href="'+window.location+'"><small>Voir en taille réelle<small></a><br/><iframe frameborder="0" width="100%" align="center" height="400px" src="'+window.location+'&embeded=1"></iframe>');
  150. $("#embedModal textarea").focus(function() {
  151. var $this = $(this);
  152. $this.select();
  153. $this.mouseup(function() {
  154. $this.unbind("mouseup");
  155. return false;
  156. });
  157. });
  158. }
  159. //RESOURCE
  160. function add_resource(selected){
  161. $('#resources a').removeClass('active');
  162. $('#editResourceMeta').modal('show');
  163. if(selected!=null) $('#editResourceMeta select').val(selected);
  164. $('#label').val('').focus();
  165. $('#resource').attr('data-id','');
  166. }
  167. function save_resource(){
  168. var data = $.getForm('#editResourceMeta');
  169. data.sketch = $('#sketch').attr('data-id');
  170. $.action(data,function(r){
  171. $('#editResourceMeta input').val('');
  172. $('#editResourceMeta').attr('data-id','');
  173. search_resources(select_resource(r.id));
  174. });
  175. }
  176. function search_resources(callback){
  177. var id = $('#sketch').attr('data-id');
  178. $('#resources').fill({id:id,action:'search_resources'},function(){
  179. if(callback!=null) callback();
  180. });
  181. }
  182. function edit_resource(element,event){
  183. event.stopPropagation();
  184. var line = $(element).closest('a');
  185. $.action({action:'edit_resource',id:line.attr('data-id')},function(r){
  186. $('#editResourceMeta').modal('show');
  187. $.setForm('#editResourceMeta',r);
  188. $('#editResourceMeta').attr('data-id',r.id);
  189. });
  190. }
  191. function delete_resource(element,event){
  192. event.stopPropagation();
  193. if(!confirm('Êtes vous sûr de vouloir supprimer ça?')) return;
  194. var line = $(element).closest('a');
  195. $.action({action : 'delete_resource',id : line.attr('data-id')},function(r){
  196. line.remove();
  197. });
  198. }
  199. function select_resource(id){
  200. $.hashData({resource:id});
  201. load_resource();
  202. }
  203. function load_resource(){
  204. var id = $.hashData('resource');
  205. var line = $('[data-id="'+id+'"]');
  206. if(line.attr('data-id')==null) return;
  207. $('.preloader').show();
  208. $('#resource p').html('');
  209. $.action({action:'edit_resource',id:line.attr('data-id')},function(r){
  210. $('.preloader').hide();
  211. $('#resources a').removeClass('active');
  212. line.addClass('active');
  213. $('#resource').attr('data-id',r.id);
  214. $('#resource h2').html(r.label);
  215. $('#resource p').html(r.content);
  216. $('#resource textarea:eq(0)').focus();
  217. if(r.upload !=null){
  218. var data = {};
  219. data.url = 'action.php?action=upload_resource';
  220. data.success = function(useless,r){
  221. if(r.errors.length!=0){
  222. alert('Erreur : '+r.errors.join(','));
  223. }else{
  224. $('#resource img:eq(0)').attr('src',r.url);
  225. }
  226. }
  227. data.sending = function(file, xhr, formData){
  228. formData.append('id', $('#resource').attr('data-id'));
  229. }
  230. data.createImageThumbnails = false;
  231. $('#resource p img:eq(0)').dropzone(data);
  232. }
  233. if(r.code != null){
  234. var editor = CodeMirror.fromTextArea($('#resource p textarea').get(0),r.code);
  235. editor.on("change", function() {
  236. var data ={height:800};
  237. var wrap = editor.getWrapperElement();
  238. var approp = editor.getScrollInfo().height > data.height ? data.height+"px" : "auto";
  239. if (wrap.style.height != approp) {
  240. wrap.style.height = approp;
  241. editor.refresh();
  242. }
  243. });
  244. editor.on("blur", function(cm,obj){
  245. var data = {};
  246. data.content = cm.getValue();
  247. data.action='save_resource_content';
  248. data.id = $('#resource').attr('data-id');
  249. $.action(data,function(r){
  250. });
  251. });
  252. }
  253. if(r.callback !=null){
  254. eval(r.callback);
  255. }
  256. });
  257. }
  258. function init_part(){
  259. $('#label').autocomplete({
  260. source : 'action.php?action=autocomplete_part',
  261. minLength: 2,
  262. select: function( event, ui ) {
  263. save_part(ui.item.value);
  264. return false;
  265. }
  266. }).data("uiAutocomplete")._renderItem = function (ul, item) {
  267. return $("<li />")
  268. .data("item.autocomplete", item)
  269. .append("<a><img style='height:50px;width:auto; float:left;' src='" + item.value.image + "' /> " + item.label + " <br/></a><small>"+item.value.brand+"</small>")
  270. .appendTo(ul);
  271. };
  272. search_part();
  273. };
  274. function search_part(){
  275. $('#parts').fill({action:'search_part',id:$('#resource').attr('data-id')});
  276. }
  277. function save_part(model){
  278. var data = $.getForm('#partForm');
  279. if (model!=null) data.model = model.id;
  280. data.resource = $('#resource').attr('data-id');
  281. $.action(data,function(r){
  282. search_part();
  283. clear_part();
  284. });
  285. }
  286. function clear_part(){
  287. $('#partForm input').val('');
  288. $('#partForm').attr('data-id','');
  289. }
  290. /*
  291. function edit_part(element){
  292. var line = $(element).closest('tr');
  293. $.action({action:'edit_part',id:line.attr('data-id')},function(r){
  294. $.setForm('#partForm',r);
  295. $('#partForm').attr('data-id',r.id);
  296. });
  297. }
  298. */
  299. function delete_part(element){
  300. if(!confirm('Êtes vous sûr de vouloir supprimer ça?')) return;
  301. var line = $(element).closest('tr');
  302. $.action({action : 'delete_part',id : line.attr('data-id')},function(r){
  303. line.remove();
  304. });
  305. }