index.html 5.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138
  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="utf-8" />
  5. <meta name="viewport" content="width=device-width, user-scalable=no, minimum-scale=1.0, maximum-scale=1.0">
  6. <title>Mol* Plugin Wrapper</title>
  7. <style>
  8. * {
  9. margin: 0;
  10. padding: 0;
  11. box-sizing: border-box;
  12. }
  13. #app {
  14. position: absolute;
  15. left: 160px;
  16. top: 100px;
  17. width: 600px;
  18. height: 600px;
  19. border: 1px solid #ccc;
  20. }
  21. #controls {
  22. position: absolute;
  23. width: 130px;
  24. top: 10px;
  25. left: 10px;
  26. }
  27. #controls > button {
  28. display: block;
  29. width: 100%;
  30. text-align: left;
  31. }
  32. #controls > hr {
  33. margin: 5px 0;
  34. }
  35. #controls > input, #controls > select {
  36. width: 100%;
  37. display: block;
  38. }
  39. </style>
  40. <link rel="stylesheet" type="text/css" href="molstar.css" />
  41. <script type="text/javascript" src="./index.js"></script>
  42. </head>
  43. <body>
  44. <div id='controls'>
  45. <h3>Source</h3>
  46. <input type='text' id='url' placeholder='url' />
  47. <input type='text' id='assemblyId' placeholder='assembly id' />
  48. <select id='format'>
  49. <option value='mmcif' selected>mmCIF</option>
  50. <option value='pdb'>PDB</option>
  51. </select>
  52. </div>
  53. <div id="app"></div>
  54. <script>
  55. function $(id) { return document.getElementById(id); }
  56. var pdbId = '1grm', assemblyId= '1';
  57. var url = 'https://www.ebi.ac.uk/pdbe/static/entry/' + pdbId + '_updated.cif';
  58. var format = 'mmcif';
  59. $('url').value = url;
  60. $('url').onchange = function (e) { url = e.target.value; }
  61. $('assemblyId').value = assemblyId;
  62. $('assemblyId').onchange = function (e) { assemblyId = e.target.value; }
  63. $('format').value = format;
  64. $('format').onchange = function (e) { format = e.target.value; }
  65. BasicMolStarWrapper.init('app' /** or document.getElementById('app') */).then(() => {
  66. BasicMolStarWrapper.setBackground(0xffffff);
  67. });
  68. addControl('Load Asym Unit', () => BasicMolStarWrapper.load({ url: url, format: format }));
  69. addControl('Load Assembly', () => BasicMolStarWrapper.load({ url: url, format: format, assemblyId: assemblyId }));
  70. addSeparator();
  71. addHeader('Camera');
  72. addControl('Toggle Spin', () => BasicMolStarWrapper.toggleSpin());
  73. addSeparator();
  74. addHeader('Animation');
  75. // adjust this number to make the animation faster or slower
  76. // requires to "restart" the animation if changed
  77. BasicMolStarWrapper.animate.modelIndex.targetFps = 30;
  78. addControl('Play To End', () => BasicMolStarWrapper.animate.modelIndex.onceForward());
  79. addControl('Play To Start', () => BasicMolStarWrapper.animate.modelIndex.onceBackward());
  80. addControl('Play Palindrome', () => BasicMolStarWrapper.animate.modelIndex.palindrome());
  81. addControl('Play Loop', () => BasicMolStarWrapper.animate.modelIndex.loop());
  82. addControl('Stop', () => BasicMolStarWrapper.animate.modelIndex.stop());
  83. addHeader('Misc');
  84. addControl('Apply Stripes', () => BasicMolStarWrapper.coloring.applyStripes());
  85. addControl('Apply Custom Theme', () => BasicMolStarWrapper.coloring.applyCustomTheme());
  86. addControl('Default Coloring', () => BasicMolStarWrapper.coloring.applyDefault());
  87. addHeader('Interactivity');
  88. addControl('Highlight seq_id=7', () => BasicMolStarWrapper.interactivity.highlightOn());
  89. addControl('Clear Highlight', () => BasicMolStarWrapper.interactivity.clearHighlight());
  90. addHeader('Tests');
  91. addControl('Static Superposition', () => BasicMolStarWrapper.tests.staticSuperposition());
  92. addControl('Dynamic Superposition', () => BasicMolStarWrapper.tests.dynamicSuperposition());
  93. addControl('Validation Tooltip', () => BasicMolStarWrapper.tests.toggleValidationTooltip());
  94. addControl('Show Toasts', () => BasicMolStarWrapper.tests.showToasts());
  95. addControl('Hide Toasts', () => BasicMolStarWrapper.tests.hideToasts());
  96. ////////////////////////////////////////////////////////
  97. function addControl(label, action) {
  98. var btn = document.createElement('button');
  99. btn.onclick = action;
  100. btn.innerText = label;
  101. $('controls').appendChild(btn);
  102. }
  103. function addSeparator() {
  104. var hr = document.createElement('hr');
  105. $('controls').appendChild(hr);
  106. }
  107. function addHeader(header) {
  108. var h = document.createElement('h3');
  109. h.innerText = header;
  110. $('controls').appendChild(h);
  111. }
  112. </script>
  113. </body>
  114. </html>