Commit ceab6db2 authored by d11e9's avatar d11e9

Add optimize, version to query strings and refactor

Convert standard query strings to hash query strings preventing reload on change.
parent 1d1ddcf8
...@@ -2,6 +2,52 @@ ...@@ -2,6 +2,52 @@
$(document).ready(function() { $(document).ready(function() {
// ------------------ query params (hash) ----------------
function getQueryParams() {
var qs = window.location.hash.substr(1);
if (window.location.search.length > 0) {
// use legacy query params instead of hash
window.location.hash = window.location.search.substr(1);
window.location.search = "";
}
var params = {};
var parts = qs.split("&");
for (var x in parts) {
var keyValue = parts[x].split("=");
if (keyValue[0] !== "") params[keyValue[0]] = keyValue[1];
}
return params;
}
function updateQueryParams(params) {
var currentParams = getQueryParams();
var keys = Object.keys(params);
for (var x in keys) {
currentParams[keys[x]] = params[keys[x]];
}
var queryString = "#";
var updatedKeys = Object.keys(currentParams);
for( var y in updatedKeys) {
queryString += updatedKeys[y] + "=" + currentParams[updatedKeys[y]] + "&";
}
window.location.hash = queryString.slice(0, -1);
}
function syncQueryParams() {
$('#optimize').attr( 'checked', (getQueryParams().optimize == "true") );
}
window.onhashchange = syncQueryParams;
syncQueryParams();
// ------------------ gist load ---------------- // ------------------ gist load ----------------
function getGistId(str) { function getGistId(str) {
...@@ -9,21 +55,19 @@ ...@@ -9,21 +55,19 @@
var match = idr.exec(str)[0]; var match = idr.exec(str)[0];
return match; return match;
} }
var location_query_params = window.location.search.substr(1).split("="); var queryParams = getQueryParams();
var loadingFromGist = false; var loadingFromGist = false;
if (location_query_params.indexOf('gist') !== -1 && location_query_params.length >= 2) { if (queryParams['gist']) {
var index = location_query_params.indexOf('gist');
var gistId; var gistId;
var key = location_query_params[index+1]; if (queryParams['gist'] === '') {
if (key === '') {
var str = prompt("Enter the URL or ID of the Gist you would like to load."); var str = prompt("Enter the URL or ID of the Gist you would like to load.");
if (str !== '') { if (str !== '') {
gistId = getGistId( str ); gistId = getGistId( str );
loadingFromGist = !!gistId; loadingFromGist = !!gistId;
} }
} else { } else {
gistId = getGistId( key ); gistId = queryParams['gist'];
loadingFromGist = !!gistId; loadingFromGist = !!gistId;
} }
$.ajax({ $.ajax({
...@@ -43,8 +87,12 @@ ...@@ -43,8 +87,12 @@
} }
window.localStorage[key] = content; window.localStorage[key] = content;
} }
SOL_CACHE_FILE = fileKey(Object.keys(response.data.files)[0]); if (!response.data.files) {
updateFiles(); alert( "Gist load error: " + response.data.message )
} else {
SOL_CACHE_FILE = fileKey(Object.keys(response.data.files)[0]);
updateFiles();
}
} }
} }
}); });
...@@ -198,13 +246,13 @@ ...@@ -198,13 +246,13 @@
$('#gist').click(function(){ $('#gist').click(function(){
if (confirm("Are you sure you want to publish all your files anonymously as a public gist on github.com?")) { if (confirm("Are you sure you want to publish all your files anonymously as a public gist on github.com?")) {
var files = {}; var files = {};
var filesArr = getFiles(); var filesArr = getFiles();
var description = "Created using soleditor: Realtime Ethereum Contract Compiler and Runtime. Load this file by pasting this gists URL or ID at https://chriseth.github.io/browser-solidity/?gist="; var description = "Created using soleditor: Realtime Ethereum Contract Compiler and Runtime. Load this file by pasting this gists URL or ID at https://chriseth.github.io/browser-solidity/#gist=";
for(var f in filesArr) { for(var f in filesArr) {
files[fileNameFromKey(filesArr[f])] = { files[fileNameFromKey(filesArr[f])] = {
content: localStorage[filesArr[f]] content: localStorage[filesArr[f]]
}; };
} }
...@@ -424,6 +472,7 @@ ...@@ -424,6 +472,7 @@
} }
}); });
$('#versionSelector').change(function() { $('#versionSelector').change(function() {
updateQueryParams({version: $('#versionSelector').val() });
loadVersion($('#versionSelector').val()); loadVersion($('#versionSelector').val());
}); });
...@@ -533,7 +582,7 @@ ...@@ -533,7 +582,7 @@
if (input === null) { if (input === null) {
renderError(error); renderError(error);
} else { } else {
var optimize = document.querySelector('#optimize').checked; var optimize = getQueryParams().optimize;
compileJSON(input, optimize ? 1 : 0); compileJSON(input, optimize ? 1 : 0);
} }
}); });
...@@ -703,20 +752,24 @@ ...@@ -703,20 +752,24 @@
if (!Module) return; if (!Module) return;
window.clearInterval(check); window.clearInterval(check);
onCompilerLoaded(); onCompilerLoaded();
}, 200); }, 200);
} }
}; };
loadVersion('soljson-latest.js');
loadVersion( getQueryParams().version || 'soljson-latest.js');
editor.getSession().on('change', onChange);
editor.on('changeSession', function(){ editor.getSession().on('change', onChange);
editor.getSession().on('change', onChange); editor.on('changeSession', function(){
}) editor.getSession().on('change', onChange);
})
document.querySelector('#optimize').addEventListener('change', compile);
document.querySelector('#optimize').addEventListener('change', function(){
// ----------------- compiler output renderer ---------------------- updateQueryParams({optimize: document.querySelector('#optimize').checked });
var detailsOpen = {}; compile();
});
// ----------------- compiler output renderer ----------------------
var detailsOpen = {};
function errortype(message) { function errortype(message) {
return message.match(/^.*:[0-9]*:[0-9]* Warning: /) ? 'warning' : 'error'; return message.match(/^.*:[0-9]*:[0-9]* Warning: /) ? 'warning' : 'error';
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment