Skip to content
GitLab
Menu
Projects
Groups
Snippets
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Menu
Open sidebar
metexplore
MetExploreViz
Commits
6b57f948
Commit
6b57f948
authored
Jan 30, 2020
by
maxchaza
Browse files
Merge branch 'hotfix/cache'
parents
0e3d2000
0d0e63e2
Changes
4
Hide whitespace changes
Inline
Side-by-side
app.json
View file @
6b57f948
...
...
@@ -7,7 +7,7 @@
/**
*
The
version
of
the
application.
*/
"version"
:
"3.0.
4
"
,
"version"
:
"3.0.
5
"
,
/**
*
The
relative
path
to
the
application's
markup
file
(html
,
jsp
,
asp
,
etc.).
...
...
build.xml
View file @
6b57f948
...
...
@@ -6,11 +6,6 @@
limit your changes to this file.
-->
<import
file=
"${basedir}/.sencha/app/build-impl.xml"
/>
<target
name=
"-after-build"
>
<replace
file=
"${build.out.page.path}"
token=
"#disableAppJsonCacheScript"
value=
"${workspace.disableAppJsonCacheScript}"
/>
</target>
<!--
The following targets can be provided to inject logic before and/or after key steps
of the build process:
...
...
index.html
View file @
6b57f948
...
...
@@ -6,8 +6,6 @@
<meta
name=
"viewport"
content=
"width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no"
/>
<link
href=
"resources/icons/favicon.ico"
type=
"image/x-icon"
rel=
"shortcut icon"
/>
#disableAppJsonCacheScript
<!-- <script id="microloader" type="text/javascript" data-app="c2a09d62-4072-4cd8-93fd-00718ff8a8f2" src="bootstrap.js"></script> -->
<script
id=
"microloader"
type=
"text/javascript"
src=
"bootstrap.js"
></script>
...
...
@@ -34,9 +32,7 @@
document
.
getElementById
(
"
visualisation
"
).
style
.
height
=
dimensionIFrameMetExploreViz
.
height
+
"
px
"
;
}
// Launch metExploreViz after microloader loading
Ext
.
Microloader
.
onCachedAssetsReady
=
function
(){
window
.
location
.
reload
();
};
//
// Ext.Microloader.onAllUpdatedAssetsReady = function(){
// Ext.onReady(function() {
...
...
sass/example/bootstrap.js
deleted
100644 → 0
View file @
0e3d2000
// @tag core
// @define Ext.Boot
var
Ext
=
Ext
||
{};
//<editor-fold desc="Boot">
/**
* @class Ext.Boot
* @singleton
* @private
*/
Ext
.
Boot
=
Ext
.
Boot
||
(
function
(
emptyFn
)
{
var
doc
=
document
,
_emptyArray
=
[],
_config
=
{
/**
* @cfg {Boolean} [disableCaching=true]
* If `true` current timestamp is added to script URL's to prevent caching.
* In debug builds, adding a "cache" or "disableCacheBuster" query parameter
* to the page's URL will set this to `false`.
*/
disableCaching
:
(
/
[
?&
](?:
cache|disableCacheBuster
)\b
/i
.
test
(
location
.
search
)
||
!
(
/http
[
s
]?\:
/i
.
test
(
location
.
href
))
||
/
(
^|
[
;
])
ext-cache=1/
.
test
(
doc
.
cookie
))
?
false
:
true
,
/**
* @cfg {String} [disableCachingParam="_dc"]
* The query parameter name for the cache buster's timestamp.
*/
disableCachingParam
:
'
_dc
'
,
/**
* @cfg {Boolean} loadDelay
* Millisecond delay between asynchronous script injection (prevents stack
* overflow on some user agents) 'false' disables delay but potentially
* increases stack load.
*/
loadDelay
:
false
,
/**
* @cfg {Boolean} preserveScripts
* `false` to remove asynchronously loaded scripts, `true` to retain script
* element for browser debugger compatibility and improved load performance.
*/
preserveScripts
:
true
,
/**
* @cfg {String} [charset=UTF-8]
* Optional charset to specify encoding of dynamic content.
*/
charset
:
'
UTF-8
'
},
_assetConfig
=
{},
cssRe
=
/
\.
css
(?:\?
|$
)
/i
,
resolverEl
=
doc
.
createElement
(
'
a
'
),
isBrowser
=
typeof
window
!==
'
undefined
'
,
_environment
=
{
browser
:
isBrowser
,
node
:
!
isBrowser
&&
(
typeof
require
===
'
function
'
),
phantom
:
(
window
&&
(
window
.
_phantom
||
window
.
callPhantom
))
||
/PhantomJS/
.
test
(
window
.
navigator
.
userAgent
)
},
_tags
=
(
Ext
.
platformTags
=
{}),
_apply
=
function
(
object
,
config
,
defaults
)
{
if
(
defaults
)
{
_apply
(
object
,
defaults
);
}
if
(
object
&&
config
&&
typeof
config
===
'
object
'
)
{
for
(
var
i
in
config
)
{
object
[
i
]
=
config
[
i
];
}
}
return
object
;
},
_merge
=
function
()
{
var
lowerCase
=
false
,
obj
=
Array
.
prototype
.
shift
.
call
(
arguments
),
index
,
i
,
len
,
value
;
if
(
typeof
arguments
[
arguments
.
length
-
1
]
===
'
boolean
'
)
{
lowerCase
=
Array
.
prototype
.
pop
.
call
(
arguments
);
}
len
=
arguments
.
length
;
for
(
index
=
0
;
index
<
len
;
index
++
)
{
value
=
arguments
[
index
];
if
(
typeof
value
===
'
object
'
)
{
for
(
i
in
value
)
{
obj
[
lowerCase
?
i
.
toLowerCase
()
:
i
]
=
value
[
i
];
}
}
}
return
obj
;
},
_getKeys
=
(
typeof
Object
.
keys
==
'
function
'
)
?
function
(
object
){
if
(
!
object
)
{
return
[];
}
return
Object
.
keys
(
object
);
}
:
function
(
object
)
{
var
keys
=
[],
property
;
for
(
property
in
object
)
{
if
(
object
.
hasOwnProperty
(
property
))
{
keys
.
push
(
property
);
}
}
return
keys
;
},
/*
* The Boot loader class manages Request objects that contain one or
* more individual urls that need to be loaded. Requests can be performed
* synchronously or asynchronously, but will always evaluate urls in the
* order specified on the request object.
*/
Boot
=
{
loading
:
0
,
loaded
:
0
,
apply
:
_apply
,
env
:
_environment
,
config
:
_config
,
/**
* @cfg {Object} assetConfig
* A map (url->assetConfig) that contains information about assets loaded by the Microlaoder.
*/
assetConfig
:
_assetConfig
,
// Keyed by absolute URL this object holds "true" if that URL is already loaded
// or an array of callbacks to call once it loads.
scripts
:
{
/*
Entry objects
'http://foo.com/bar/baz/Thing.js': {
done: true,
el: scriptEl || linkEl,
preserve: true,
requests: [ request1, ... ]
}
*/
},
/**
* contains the current script name being loaded
* (loadSync or sequential load only)
*/
currentFile
:
null
,
suspendedQueue
:
[],
currentRequest
:
null
,
// when loadSync is called, need to cause subsequent load requests to also be loadSync,
// eg, when Ext.require(...) is called
syncMode
:
false
,
/*
* simple helper method for debugging
*/
/**
* enables / disables loading scripts via script / link elements rather
* than using ajax / eval
*/
useElements
:
true
,
listeners
:
[],
Request
:
Request
,
Entry
:
Entry
,
allowMultipleBrowsers
:
false
,
browserNames
:
{
ie
:
'
IE
'
,
firefox
:
'
Firefox
'
,
safari
:
'
Safari
'
,
chrome
:
'
Chrome
'
,
opera
:
'
Opera
'
,
dolfin
:
'
Dolfin
'
,
edge
:
'
Edge
'
,
webosbrowser
:
'
webOSBrowser
'
,
chromeMobile
:
'
ChromeMobile
'
,
chromeiOS
:
'
ChromeiOS
'
,
silk
:
'
Silk
'
,
other
:
'
Other
'
},
osNames
:
{
ios
:
'
iOS
'
,
android
:
'
Android
'
,
windowsPhone
:
'
WindowsPhone
'
,
webos
:
'
webOS
'
,
blackberry
:
'
BlackBerry
'
,
rimTablet
:
'
RIMTablet
'
,
mac
:
'
MacOS
'
,
win
:
'
Windows
'
,
tizen
:
'
Tizen
'
,
linux
:
'
Linux
'
,
bada
:
'
Bada
'
,
chromeOS
:
'
ChromeOS
'
,
other
:
'
Other
'
},
browserPrefixes
:
{
ie
:
'
MSIE
'
,
edge
:
'
Edge/
'
,
firefox
:
'
Firefox/
'
,
chrome
:
'
Chrome/
'
,
safari
:
'
Version/
'
,
opera
:
'
OPR/
'
,
dolfin
:
'
Dolfin/
'
,
webosbrowser
:
'
wOSBrowser/
'
,
chromeMobile
:
'
CrMo/
'
,
chromeiOS
:
'
CriOS/
'
,
silk
:
'
Silk/
'
},
// When a UA reports multiple browsers this list is used to prioritize the 'real' browser
// lower index number will win
browserPriority
:
[
'
edge
'
,
'
opera
'
,
'
dolfin
'
,
'
webosbrowser
'
,
'
silk
'
,
'
chromeiOS
'
,
'
chromeMobile
'
,
'
ie
'
,
'
firefox
'
,
'
safari
'
,
'
chrome
'
],
osPrefixes
:
{
tizen
:
'
(Tizen )
'
,
ios
:
'
i(?:Pad|Phone|Pod)(?:.*)CPU(?: iPhone)? OS
'
,
android
:
'
(Android |HTC_|Silk/)
'
,
// Some HTC devices ship with an OSX userAgent by default,
// so we need to add a direct check for HTC_
windowsPhone
:
'
Windows Phone
'
,
blackberry
:
'
(?:BlackBerry|BB)(?:.*)Version
\
/
'
,
rimTablet
:
'
RIM Tablet OS
'
,
webos
:
'
(?:webOS|hpwOS)
\
/
'
,
bada
:
'
Bada
\
/
'
,
chromeOS
:
'
CrOS
'
},
fallbackOSPrefixes
:
{
windows
:
'
win
'
,
mac
:
'
mac
'
,
linux
:
'
linux
'
},
devicePrefixes
:
{
iPhone
:
'
iPhone
'
,
iPod
:
'
iPod
'
,
iPad
:
'
iPad
'
},
maxIEVersion
:
12
,
/**
* The default function that detects various platforms and sets tags
* in the platform map accordingly. Examples are iOS, android, tablet, etc.
* @param tags the set of tags to populate
*/
detectPlatformTags
:
function
()
{
var
me
=
this
,
ua
=
navigator
.
userAgent
,
isMobile
=
/Mobile
(\/
|
\s)
/
.
test
(
ua
),
element
=
document
.
createElement
(
'
div
'
),
isEventSupported
=
function
(
name
,
tag
)
{
if
(
tag
===
undefined
)
{
tag
=
window
;
}
var
eventName
=
'
on
'
+
name
.
toLowerCase
(),
isSupported
=
(
eventName
in
element
);
if
(
!
isSupported
)
{
if
(
element
.
setAttribute
&&
element
.
removeAttribute
)
{
element
.
setAttribute
(
eventName
,
''
);
isSupported
=
typeof
element
[
eventName
]
===
'
function
'
;
if
(
typeof
element
[
eventName
]
!==
'
undefined
'
)
{
element
[
eventName
]
=
undefined
;
}
element
.
removeAttribute
(
eventName
);
}
}
return
isSupported
;
},
// Browser Detection
getBrowsers
=
function
()
{
var
browsers
=
{},
maxIEVersion
,
prefix
,
value
,
key
,
index
,
len
,
match
,
version
,
matched
;
// MS Edge browser (and possibly others) can report multiple browsers in the UserAgent
// "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/42.0.2311.135 Safari/537.36 Edge/12.10240"
// we use this to prioritize the actual browser in this situation
len
=
me
.
browserPriority
.
length
;
for
(
index
=
0
;
index
<
len
;
index
++
)
{
key
=
me
.
browserPriority
[
index
];
if
(
!
matched
)
{
value
=
me
.
browserPrefixes
[
key
];
match
=
ua
.
match
(
new
RegExp
(
'
(
'
+
value
+
'
)([
\\
w
\\
._]+)
'
));
version
=
match
&&
match
.
length
>
1
?
parseInt
(
match
[
2
])
:
0
;
if
(
version
)
{
matched
=
true
;
}
}
else
{
version
=
0
;
}
browsers
[
key
]
=
version
;
}
//Deal with IE document mode
if
(
browsers
.
ie
)
{
var
mode
=
document
.
documentMode
;
if
(
mode
>=
8
)
{
browsers
.
ie
=
mode
;
}
}
// Fancy IE greater than and less then quick tags
version
=
browsers
.
ie
||
false
;
maxIEVersion
=
Math
.
max
(
version
,
me
.
maxIEVersion
);
for
(
index
=
8
;
index
<=
maxIEVersion
;
++
index
)
{
prefix
=
'
ie
'
+
index
;
browsers
[
prefix
+
'
m
'
]
=
version
?
version
<=
index
:
0
;
browsers
[
prefix
]
=
version
?
version
===
index
:
0
;
browsers
[
prefix
+
'
p
'
]
=
version
?
version
>=
index
:
0
;
}
return
browsers
;
},
//OS Detection
getOperatingSystems
=
function
()
{
var
systems
=
{},
value
,
key
,
keys
,
index
,
len
,
match
,
matched
,
version
,
activeCount
;
keys
=
_getKeys
(
me
.
osPrefixes
);
len
=
keys
.
length
;
for
(
index
=
0
,
activeCount
=
0
;
index
<
len
;
index
++
)
{
key
=
keys
[
index
];
value
=
me
.
osPrefixes
[
key
];
match
=
ua
.
match
(
new
RegExp
(
'
(
'
+
value
+
'
)([^
\\
s;]+)
'
));
matched
=
match
?
match
[
1
]
:
null
;
// This is here because some HTC android devices show an OSX Snow Leopard userAgent by default.
// And the Kindle Fire doesn't have any indicator of Android as the OS in its User Agent
if
(
matched
&&
(
matched
===
'
HTC_
'
||
matched
===
'
Silk/
'
))
{
version
=
2.3
;
}
else
{
version
=
match
&&
match
.
length
>
1
?
parseFloat
(
match
[
match
.
length
-
1
])
:
0
;
}
if
(
version
)
{
activeCount
++
;
}
systems
[
key
]
=
version
;
}
keys
=
_getKeys
(
me
.
fallbackOSPrefixes
);
// If no OS could be found we resort to the fallbacks, otherwise we just
// falsify the fallbacks
len
=
keys
.
length
;
for
(
index
=
0
;
index
<
len
;
index
++
)
{
key
=
keys
[
index
];
// No OS was detected from osPrefixes
if
(
activeCount
===
0
)
{
value
=
me
.
fallbackOSPrefixes
[
key
];
match
=
ua
.
toLowerCase
().
match
(
new
RegExp
(
value
));
systems
[
key
]
=
match
?
true
:
0
;
}
else
{
systems
[
key
]
=
0
;
}
}
return
systems
;
},
// Device Detection
getDevices
=
function
()
{
var
devices
=
{},
value
,
key
,
keys
,
index
,
len
,
match
;
keys
=
_getKeys
(
me
.
devicePrefixes
);
len
=
keys
.
length
;
for
(
index
=
0
;
index
<
len
;
index
++
)
{
key
=
keys
[
index
];
value
=
me
.
devicePrefixes
[
key
];
match
=
ua
.
match
(
new
RegExp
(
value
));
devices
[
key
]
=
match
?
true
:
0
;
}
return
devices
;
},
browsers
=
getBrowsers
(),
systems
=
getOperatingSystems
(),
devices
=
getDevices
(),
platformParams
=
Boot
.
loadPlatformsParam
();
// We apply platformParams from the query here first to allow for forced user valued
// to be used in calculation of generated tags
_merge
(
_tags
,
browsers
,
systems
,
devices
,
platformParams
,
true
);
_tags
.
phone
=
!!
((
_tags
.
iphone
||
_tags
.
ipod
)
||
(
!
_tags
.
silk
&&
(
_tags
.
android
&&
(
_tags
.
android
<
3
||
isMobile
)))
||
(
_tags
.
blackberry
&&
isMobile
)
||
(
_tags
.
windowsphone
));
_tags
.
tablet
=
!!
(
!
_tags
.
phone
&&
(
_tags
.
ipad
||
_tags
.
android
||
_tags
.
silk
||
_tags
.
rimtablet
||
(
_tags
.
ie10
&&
/; Touch/
.
test
(
ua
))
));
_tags
.
touch
=
// if the browser has touch events we can be reasonably sure the device has
// a touch screen
isEventSupported
(
'
touchend
'
)
||
// browsers that use pointer event have maxTouchPoints > 0 if the
// device supports touch input
// http://www.w3.org/TR/pointerevents/#widl-Navigator-maxTouchPoints
navigator
.
maxTouchPoints
||
// IE10 uses a vendor-prefixed maxTouchPoints property
navigator
.
msMaxTouchPoints
;
_tags
.
desktop
=
!
_tags
.
phone
&&
!
_tags
.
tablet
;
_tags
.
cordova
=
_tags
.
phonegap
=
!!
(
window
.
PhoneGap
||
window
.
Cordova
||
window
.
cordova
);
_tags
.
webview
=
/
(
iPhone|iPod|iPad
)
.*AppleWebKit
(?!
.*Safari
)(?!
.*FBAN
)
/i
.
test
(
ua
);
_tags
.
androidstock
=
(
_tags
.
android
<=
4.3
)
&&
(
_tags
.
safari
||
_tags
.
silk
);
// Re-apply any query params here to allow for user override of generated tags (desktop, touch, tablet, etc)
_merge
(
_tags
,
platformParams
,
true
);
},
/**
* Extracts user supplied platform tags from the "platformTags" query parameter
* of the form:
*
* ?platformTags=name:state,name:state,...
*
* (each tag defaults to true when state is unspecified)
*
* Example:
*
* ?platformTags=isTablet,isPhone:false,isDesktop:0,iOS:1,Safari:true, ...
*
* @returns {Object} the platform tags supplied by the query string
*/
loadPlatformsParam
:
function
()
{
// Check if the ?platform parameter is set in the URL
var
paramsString
=
window
.
location
.
search
.
substr
(
1
),
paramsArray
=
paramsString
.
split
(
"
&
"
),
params
=
{},
i
,
platforms
=
{},
tmpArray
,
tmplen
,
platform
,
name
,
enabled
;
for
(
i
=
0
;
i
<
paramsArray
.
length
;
i
++
)
{
tmpArray
=
paramsArray
[
i
].
split
(
"
=
"
);
params
[
tmpArray
[
0
]]
=
tmpArray
[
1
];
}
if
(
params
.
platformTags
)
{
tmpArray
=
params
.
platformTags
.
split
(
"
,
"
);
for
(
tmplen
=
tmpArray
.
length
,
i
=
0
;
i
<
tmplen
;
i
++
)
{
platform
=
tmpArray
[
i
].
split
(
"
:
"
);
name
=
platform
[
0
];
enabled
=
true
;
if
(
platform
.
length
>
1
)
{
enabled
=
platform
[
1
];
if
(
enabled
===
'
false
'
||
enabled
===
'
0
'
)
{
enabled
=
false
;
}
}
platforms
[
name
]
=
enabled
;
}
}
return
platforms
;
},
filterPlatform
:
function
(
platform
,
excludes
)
{
platform
=
_emptyArray
.
concat
(
platform
||
_emptyArray
);
excludes
=
_emptyArray
.
concat
(
excludes
||
_emptyArray
);
var
plen
=
platform
.
length
,
elen
=
excludes
.
length
,
include
=
(
!
plen
&&
elen
),
// default true if only excludes specified
i
,
tag
;
for
(
i
=
0
;
i
<
plen
&&
!
include
;
i
++
)
{
tag
=
platform
[
i
];
include
=
!!
_tags
[
tag
];
}
for
(
i
=
0
;
i
<
elen
&&
include
;
i
++
)
{
tag
=
excludes
[
i
];
include
=
!
_tags
[
tag
];
}
return
include
;
},
init
:
function
()
{
var
scriptEls
=
doc
.
getElementsByTagName
(
'
script
'
),
script
=
scriptEls
[
0
],
len
=
scriptEls
.
length
,
re
=
/
\/
ext
(\-[
a-z
\-]
+
)?\.
js$/
,
entry
,
src
,
state
,
baseUrl
,
key
,
n
,
origin
;
// No check for script definedness because there always should be at least one
Boot
.
hasReadyState
=
(
"
readyState
"
in
script
);
Boot
.
hasAsync
=
(
"
async
"
in
script
);
Boot
.
hasDefer
=
(
"
defer
"
in
script
);
Boot
.
hasOnLoad
=
(
"
onload
"
in
script
);
// Feature detecting IE
Boot
.
isIE8
=
Boot
.
hasReadyState
&&
!
Boot
.
hasAsync
&&
Boot
.
hasDefer
&&
!
Boot
.
hasOnLoad
;
Boot
.
isIE9
=
Boot
.
hasReadyState
&&
!
Boot
.
hasAsync
&&
Boot
.
hasDefer
&&
Boot
.
hasOnLoad
;
Boot
.
isIE10p
=
Boot
.
hasReadyState
&&
Boot
.
hasAsync
&&
Boot
.
hasDefer
&&
Boot
.
hasOnLoad
;
Boot
.
isIE10
=
(
new
Function
(
'
/*@cc_on return @_jscript_version @*/
'
)())
===
10
;
Boot
.
isIE10m
=
Boot
.
isIE10
||
Boot
.
isIE9
||
Boot
.
isIE8
;
// IE11 does not support conditional compilation so we detect it by exclusion
Boot
.
isIE11
=
Boot
.
isIE10p
&&
!
Boot
.
isIE10
;
// Since we are loading after other scripts, and we needed to gather them
// anyway, we track them in _scripts so we don't have to ask for them all
// repeatedly.
for
(
n
=
0
;
n
<
len
;
n
++
)
{
src
=
(
script
=
scriptEls
[
n
]).
src
;
if
(
!
src
)
{
continue
;
}
state
=
script
.
readyState
||
null
;
// If we find a script file called "ext-*.js", then the base path is that file's base path.
if
(
!
baseUrl
&&
re
.
test
(
src
))
{
baseUrl
=
src
;
}