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.

85 lines
3.0 KiB

  1. /* class2context.js
  2. creator: Arnau
  3. July 2016
  4. version: v0.1
  5. usage:
  6. class2context(
  7. 'className',
  8. "title",
  9. [["option1", "functionoption1()"], ["option 2","functionoption2()"]]
  10. );
  11. */
  12. //creates the div where the context menus will place
  13. document.body.innerHTML+="<div id='contextMenus'></div>";
  14. //
  15. function class2context(classgiv, title, options){
  16. classgiv=JSON.parse(JSON.stringify(classgiv));
  17. if(document.getElementById("context"+classgiv))
  18. {
  19. //toastr.success("alreadyExist");
  20. }else{
  21. var aux="";
  22. aux+="<div id='context"+classgiv+"' class='contextMenu'>";
  23. aux+=" <ul class='c2c-dropdown c2c-border' style='display:block;position:static;margin-bottom:5px;'>";
  24. aux+="<div class='contextTitle'>" + title + "</div>";
  25. for(var i=0; i<options.length; i++)
  26. {
  27. //aux+=" <a onmousedown='"+options[i][1]+";' href='javascript:void(0);'>"+options[i][0]+"</a>";
  28. aux+=" <a onmousedown='"+options[i][1]+"; ContextMenus();' href='javascript:void(0);'>"+options[i][0]+"</a>";
  29. }
  30. aux+=" </ul>";
  31. aux+="</div>";
  32. document.getElementById('contextMenus').innerHTML+=aux; //adds the div context menu into the context menus div place
  33. }
  34. for(var i=0; i<document.getElementsByClassName(classgiv).length; i++)
  35. {
  36. classgiv=JSON.parse(JSON.stringify(classgiv));
  37. //toastr.info(document.getElementsByClassName(classgiv)[i].oncontextmenu);
  38. document.getElementsByClassName(classgiv)[i].addEventListener("contextmenu", function(e){
  39. // Avoid the real one
  40. e.preventDefault();
  41. e.stopPropagation();
  42. setTimeout(function(){
  43. //classaux=this.className.split(" ")[0];
  44. document.getElementById('context'+classgiv).style.display='block';
  45. document.getElementById('context'+classgiv).style.left=e.pageX + "px";
  46. document.getElementById('context'+classgiv).style.top=e.pageY + "px";
  47. }, 150);
  48. });
  49. /*document.getElementsByClassName(classgiv)[i].oncontextmenu+= function(e){
  50. // Avoid the real one
  51. e.preventDefault();
  52. setTimeout(function(){
  53. //classaux=this.className.split(" ")[0];
  54. document.getElementById('context'+classgiv).style.display='block';
  55. document.getElementById('context'+classgiv).style.left=e.pageX + "px";
  56. document.getElementById('context'+classgiv).style.top=e.pageY + "px";
  57. }, 150);
  58. };*/
  59. }
  60. document.body.addEventListener("mousedown", function(e){
  61. // Avoid the real one
  62. //e.preventDefault();
  63. if(document.getElementById('context'+classgiv))
  64. {
  65. setTimeout(function(){
  66. document.getElementById('context'+classgiv).style.display='none';
  67. }, 70);
  68. //ContextMenus();
  69. }
  70. return false;
  71. }, false);
  72. }