@@ -178,7 +178,9 @@ require({
178
178
var searchTerm = '' ;
179
179
var searchRegExp ;
180
180
var hintTimer ;
181
- var currentTab = '' ;
181
+ var defaultDemo = 'Hello World' ;
182
+ var defaultLabel = 'Showcases' ;
183
+ var currentTab = defaultLabel ;
182
184
var newDemo ;
183
185
var demoHtml = '' ;
184
186
var demoCode = '' ;
@@ -700,10 +702,10 @@ require({
700
702
queryObject = ioQuery . queryToObject ( window . location . search . substring ( 1 ) ) ;
701
703
}
702
704
if ( ! defined ( queryObject . src ) ) {
703
- queryObject . src = 'Hello World .html';
705
+ queryObject . src = defaultDemo + ' .html';
704
706
}
705
707
if ( ! defined ( queryObject . label ) ) {
706
- queryObject . label = 'Showcases' ;
708
+ queryObject . label = defaultLabel ;
707
709
}
708
710
709
711
function loadFromGallery ( demo ) {
@@ -956,6 +958,18 @@ require({
956
958
window . location . href = getBaseUrl ( ) + '?gist=' + gistId ;
957
959
} ) ;
958
960
961
+ function getPushStateUrl ( demo ) {
962
+ var obj = { } ;
963
+ if ( demo . name !== defaultDemo ) {
964
+ obj . src = demo . name + '.html' ;
965
+ }
966
+ if ( currentTab !== defaultLabel ) {
967
+ obj . label = currentTab ;
968
+ }
969
+ var query = ioQuery . objectToQuery ( obj ) ;
970
+ return query === '' ? query : '?' + query ;
971
+ }
972
+
959
973
registry . byId ( 'buttonNew' ) . on ( 'click' , function ( ) {
960
974
var htmlText = ( htmlEditor . getValue ( ) ) . replace ( / \s / g, '' ) ;
961
975
var jsText = ( jsEditor . getValue ( ) ) . replace ( / \s / g, '' ) ;
@@ -965,16 +979,7 @@ require({
965
979
}
966
980
if ( confirmChange ) {
967
981
loadFromGallery ( newDemo ) . then ( function ( ) {
968
- var demoSrc = newDemo . name + '.html' ;
969
- var queries = window . location . search . substring ( 1 ) . split ( '&' ) ;
970
- for ( var i = 0 ; i < queries . length ; i ++ ) {
971
- var key = queries [ i ] . split ( '=' ) [ 0 ] ;
972
- if ( key === "src" ) {
973
- if ( demoSrc !== queries [ i ] . split ( '=' ) [ 1 ] . replace ( '%20' , ' ' ) ) {
974
- window . history . pushState ( newDemo , newDemo . name , '?src=' + demoSrc + '&label=' + currentTab ) ;
975
- }
976
- }
977
- }
982
+ window . history . pushState ( newDemo , newDemo . name , getPushStateUrl ( newDemo ) ) ;
978
983
document . title = newDemo . name + ' - Cesium Sandcastle' ;
979
984
} ) ;
980
985
}
@@ -1068,13 +1073,12 @@ require({
1068
1073
1069
1074
function requestDemo ( name ) {
1070
1075
return xhr . get ( {
1071
- url : 'gallery/' + name + '.html' ,
1072
- handleAs : 'text' ,
1073
- error : function ( error ) {
1074
- loadFromGallery ( gallery_demos [ hello_world_index ] )
1075
- . then ( function ( ) {
1076
- deferredLoadError = true ;
1077
- } ) ;
1076
+ url : 'gallery/' + name + '.html' ,
1077
+ handleAs : 'text' ,
1078
+ error : function ( error ) {
1079
+ loadFromGallery ( gallery_demos [ hello_world_index ] ) . then ( function ( ) {
1080
+ deferredLoadError = true ;
1081
+ } ) ;
1078
1082
}
1079
1083
} ) ;
1080
1084
}
@@ -1107,6 +1111,8 @@ require({
1107
1111
if ( defined ( queryObject . src ) ) {
1108
1112
if ( demo . name === queryObject . src . replace ( '.html' , '' ) ) {
1109
1113
loadFromGallery ( demo ) . then ( function ( ) {
1114
+ window . history . replaceState ( demo , demo . name , getPushStateUrl ( demo ) ) ;
1115
+
1110
1116
if ( defined ( queryObject . gist ) ) {
1111
1117
document . title = 'Gist Import - Cesium Sandcastle' ;
1112
1118
} else {
@@ -1207,12 +1213,11 @@ require({
1207
1213
if ( confirmChange ) {
1208
1214
delete queryObject . gist ;
1209
1215
delete queryObject . code ;
1210
- history . replaceState ( null , document . title , window . location . pathname + window . location . search ) ;
1211
1216
1212
1217
loadFromGallery ( demo ) . then ( function ( ) {
1213
1218
var demoSrc = demo . name + '.html' ;
1214
1219
if ( demoSrc !== window . location . search . substring ( 1 ) ) {
1215
- window . history . pushState ( demo , demo . name , '?src=' + demoSrc + '&label=' + currentTab ) ;
1220
+ window . history . pushState ( demo , demo . name , getPushStateUrl ( demo ) ) ;
1216
1221
}
1217
1222
document . title = demo . name + ' - Cesium Sandcastle' ;
1218
1223
} ) ;
0 commit comments