|
45 | 45 | <div style="display:block;align-items:center;padding:20px;">
|
46 | 46 | <textarea id="prompt"
|
47 | 47 | style="width:100%;height:60px;font-family:inherit;font-size:inherit;padding:10px;box-sizing:border-box;resize:vertical;"
|
48 |
| - placeholder="Diagram description, eg. five tier sequence diagram on how to order fast food online" |
| 48 | + placeholder="Diagram description, eg. five tier sequence diagram on how to order fast food online eg. graph TD; A-->B; A-->C; B-->D; C-->D;" |
49 | 49 | spellcheck="false" autocomplete="off" autocorrect="off" autocapitalize="off"></textarea>
|
50 | 50 | <div style="position:relative;display:flex;align-items:center;justify-items:stretch;padding-top:10px;">
|
| 51 | + <button style="position:relative;background:rgb(56, 56, 56);color:gray;" id="create" onclick="replaceEscapes();return false;"> |
| 52 | + Unescape |
| 53 | + </button> |
51 | 54 | <div style="margin-left:auto;opacity:0.5;">
|
52 | 55 | Engine:
|
53 |
| - <select style="padding:4px;border-radius:4px;" id="engine"> |
| 56 | + <select style="padding:2px 6px;border-radius:4px;" id="engine"> |
54 | 57 | <option value="gemini">Gemini</option>
|
55 | 58 | <option value="chatgpt">ChatGPT</option>
|
| 59 | + <option value="mermaidjs">MermaidJS</option> |
56 | 60 | </select>
|
57 | 61 | </div>
|
58 | 62 | <div style="opacity:0.5;margin-left:20px;border-radius:4px;">
|
59 |
| - Key: <input style="padding:4px;" id="apikey"> |
| 63 | + Key: <input style="padding:2px 6px;" id="apikey"> |
60 | 64 | </div>
|
61 | 65 | <button style="position:relative;margin-left:20px;" id="generate" onclick="generate();return false;">
|
62 |
| - Generate Diagram |
| 66 | + Preview Diagram |
63 | 67 | </button>
|
64 | 68 | </div>
|
65 | 69 | </div>
|
|
78 | 82 | <script type="text/javascript">
|
79 | 83 | //<![CDATA[
|
80 | 84 | var spin = 'url(data:image/svg+xml;base64,77u/PHN2ZyB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnIHZpZXdCb3g9JzAgMCAyMDAgMjAwJz48Y2lyY2xlIGZpbGw9JyM4MDgwODAnIHN0cm9rZT0nIzgwODA4MCcgc3Ryb2tlLXdpZHRoPScxNScgcj0nMTUnIGN4PSczNScgY3k9JzEwMCcgZGF0YS1kYXJrcmVhZGVyLWlubGluZS1maWxsPScnIGRhdGEtZGFya3JlYWRlci1pbmxpbmUtc3Ryb2tlPScnIHN0eWxlPSctLWRhcmtyZWFkZXItaW5saW5lLWZpbGw6ICNmZjZkZmY7IC0tZGFya3JlYWRlci1pbmxpbmUtc3Ryb2tlOiAjZmY2ZGZmOyc+PGFuaW1hdGUgYXR0cmlidXRlTmFtZT0nY3gnIGNhbGNNb2RlPSdzcGxpbmUnIGR1cj0nNC4yJyB2YWx1ZXM9JzM1OzE2NTsxNjU7MzU7MzUnIGtleVNwbGluZXM9JzAgLjEgLjUgMTswIC4xIC41IDE7MCAuMSAuNSAxOzAgLjEgLjUgMScgcmVwZWF0Q291bnQ9J2luZGVmaW5pdGUnIGJlZ2luPScwJz48L2FuaW1hdGU+PC9jaXJjbGU+PGNpcmNsZSBmaWxsPScjODA4MDgwJyBzdHJva2U9JyM4MDgwODAnIHN0cm9rZS13aWR0aD0nMTUnIG9wYWNpdHk9Jy44JyByPScxNScgY3g9JzM1JyBjeT0nMTAwJyBkYXRhLWRhcmtyZWFkZXItaW5saW5lLWZpbGw9JycgZGF0YS1kYXJrcmVhZGVyLWlubGluZS1zdHJva2U9Jycgc3R5bGU9Jy0tZGFya3JlYWRlci1pbmxpbmUtZmlsbDogI2ZmNmRmZjsgLS1kYXJrcmVhZGVyLWlubGluZS1zdHJva2U6ICNmZjZkZmY7Jz48YW5pbWF0ZSBhdHRyaWJ1dGVOYW1lPSdjeCcgY2FsY01vZGU9J3NwbGluZScgZHVyPSc0LjInIHZhbHVlcz0nMzU7MTY1OzE2NTszNTszNScga2V5U3BsaW5lcz0nMCAuMSAuNSAxOzAgLjEgLjUgMTswIC4xIC41IDE7MCAuMSAuNSAxJyByZXBlYXRDb3VudD0naW5kZWZpbml0ZScgYmVnaW49JzAuMDUnPjwvYW5pbWF0ZT48L2NpcmNsZT48Y2lyY2xlIGZpbGw9JyM4MDgwODAnIHN0cm9rZT0nIzgwODA4MCcgc3Ryb2tlLXdpZHRoPScxNScgb3BhY2l0eT0nLjYnIHI9JzE1JyBjeD0nMzUnIGN5PScxMDAnIGRhdGEtZGFya3JlYWRlci1pbmxpbmUtZmlsbD0nJyBkYXRhLWRhcmtyZWFkZXItaW5saW5lLXN0cm9rZT0nJyBzdHlsZT0nLS1kYXJrcmVhZGVyLWlubGluZS1maWxsOiAjZmY2ZGZmOyAtLWRhcmtyZWFkZXItaW5saW5lLXN0cm9rZTogI2ZmNmRmZjsnPjxhbmltYXRlIGF0dHJpYnV0ZU5hbWU9J2N4JyBjYWxjTW9kZT0nc3BsaW5lJyBkdXI9JzQuMicgdmFsdWVzPSczNTsxNjU7MTY1OzM1OzM1JyBrZXlTcGxpbmVzPScwIC4xIC41IDE7MCAuMSAuNSAxOzAgLjEgLjUgMTswIC4xIC41IDEnIHJlcGVhdENvdW50PSdpbmRlZmluaXRlJyBiZWdpbj0nLjEnPjwvYW5pbWF0ZT48L2NpcmNsZT48Y2lyY2xlIGZpbGw9JyM4MDgwODAnIHN0cm9rZT0nIzgwODA4MCcgc3Ryb2tlLXdpZHRoPScxNScgb3BhY2l0eT0nLjQnIHI9JzE1JyBjeD0nMzUnIGN5PScxMDAnIGRhdGEtZGFya3JlYWRlci1pbmxpbmUtZmlsbD0nJyBkYXRhLWRhcmtyZWFkZXItaW5saW5lLXN0cm9rZT0nJyBzdHlsZT0nLS1kYXJrcmVhZGVyLWlubGluZS1maWxsOiAjZmY2ZGZmOyAtLWRhcmtyZWFkZXItaW5saW5lLXN0cm9rZTogI2ZmNmRmZjsnPjxhbmltYXRlIGF0dHJpYnV0ZU5hbWU9J2N4JyBjYWxjTW9kZT0nc3BsaW5lJyBkdXI9JzQuMicgdmFsdWVzPSczNTsxNjU7MTY1OzM1OzM1JyBrZXlTcGxpbmVzPScwIC4xIC41IDE7MCAuMSAuNSAxOzAgLjEgLjUgMTswIC4xIC41IDEnIHJlcGVhdENvdW50PSdpbmRlZmluaXRlJyBiZWdpbj0nLjE1Jz48L2FuaW1hdGU+PC9jaXJjbGU+PGNpcmNsZSBmaWxsPScjODA4MDgwJyBzdHJva2U9JyM4MDgwODAnIHN0cm9rZS13aWR0aD0nMTUnIG9wYWNpdHk9Jy4yJyByPScxNScgY3g9JzM1JyBjeT0nMTAwJyBkYXRhLWRhcmtyZWFkZXItaW5saW5lLWZpbGw9JycgZGF0YS1kYXJrcmVhZGVyLWlubGluZS1zdHJva2U9Jycgc3R5bGU9Jy0tZGFya3JlYWRlci1pbmxpbmUtZmlsbDogI2ZmNmRmZjsgLS1kYXJrcmVhZGVyLWlubGluZS1zdHJva2U6ICNmZjZkZmY7Jz48YW5pbWF0ZSBhdHRyaWJ1dGVOYW1lPSdjeCcgY2FsY01vZGU9J3NwbGluZScgZHVyPSc0LjInIHZhbHVlcz0nMzU7MTY1OzE2NTszNTszNScga2V5U3BsaW5lcz0nMCAuMSAuNSAxOzAgLjEgLjUgMTswIC4xIC41IDE7MCAuMSAuNSAxJyByZXBlYXRDb3VudD0naW5kZWZpbml0ZScgYmVnaW49Jy4yJz48L2FuaW1hdGU+PC9jaXJjbGU+PC9zdmc+)';
|
| 85 | + |
| 86 | + function replaceEscapes() { |
| 87 | + var input = document.getElementById('prompt').value; |
| 88 | + // Replace Unicode escape sequences |
| 89 | + input = input.replace(/\\u([0-9A-Fa-f]{4})/g, (match, group) => |
| 90 | + String.fromCharCode(parseInt(group, 16)) |
| 91 | + ); |
| 92 | + // Replace newline escape sequences |
| 93 | + document.getElementById('prompt').value = input.replace(/\\n/g, '\n'); |
| 94 | + }; |
81 | 95 |
|
82 | 96 | function generate() {
|
83 | 97 | var engine = document.getElementById('engine').value;
|
|
108 | 122 | body: JSON.stringify(data)
|
109 | 123 | });
|
110 | 124 |
|
111 |
| - document.getElementById('generate').disabled = false; |
112 |
| - |
113 | 125 | if (!response.ok) {
|
114 | 126 | throw new Error(`HTTP error! Status: ${response.status}`);
|
115 | 127 | }
|
|
156 | 168 | preview(extractMermaid(response.choices[0].message.content));
|
157 | 169 | });
|
158 | 170 | }
|
| 171 | + else if (engine == 'mermaidjs') { |
| 172 | + preview(prompt); |
| 173 | + } |
| 174 | + else |
| 175 | + { |
| 176 | + document.getElementById('generate').disabled = false; |
| 177 | + document.getElementById('preview').parentNode.style.backgroundImage = 'none'; |
| 178 | + alert('Invalid engine'); |
| 179 | + } |
159 | 180 | };
|
160 | 181 |
|
161 | 182 | function extractMermaid(input) {
|
|
172 | 193 | prefix = (urlParams['dev'] == '1') ? 'https://test.draw.io/?dev=1&' : 'https://www.draw.io/?';
|
173 | 194 | link = prefix + 'create=' + encodeURIComponent(JSON.stringify({ type: 'mermaid', data: value }));
|
174 | 195 | document.getElementById('edit').disabled = false;
|
| 196 | + document.getElementById('generate').disabled = false; |
175 | 197 | document.getElementById('edit').onclick = function () { window.open(link); };
|
176 | 198 | };
|
177 | 199 |
|
|
237 | 259 | }
|
238 | 260 |
|
239 | 261 | if (urlParams['prompt'] != null) {
|
240 |
| - document.getElementById('prompt').value = urlParams['prompt']; |
| 262 | + document.getElementById('prompt').value = decodeURIComponent(urlParams['prompt']); |
241 | 263 | generate();
|
242 | 264 | }
|
243 | 265 | }
|
|
0 commit comments