arcabouco 0.2.0 → 0.2.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/lib/arcabouco/base.rb +1 -1
- data/lib/arcabouco/version.rb +1 -1
- data/lib/assets/css/app.vendor.css +8 -0
- data/lib/assets/js/app.js +3 -2
- data/lib/assets/js/app.vendor.js +2 -0
- data/lib/assets/js/core/boot.js.coffee +31 -0
- data/lib/assets/js/core/capabilities.js +1 -83
- data/lib/assets/js/core/debug.js.coffee +3 -2
- data/lib/assets/js/core/environment.js.coffee +4 -1
- data/lib/assets/js/core/extends.coffee +6 -0
- data/lib/assets/js/core/helpers.js.coffee +16 -0
- data/lib/assets/js/vendor.js +0 -7
- data/lib/templates/bootstrap_code.js +15 -4
- data/lib/templates/manifest.erb +3 -1
- metadata +5 -6
- data/lib/assets/js/core/sound.coffee +0 -67
- data/lib/assets/js/vendor/backbone.js +0 -1608
- data/lib/assets/js/vendor/handlebars.js +0 -2746
- data/lib/assets/js/vendor/jquery.js +0 -9267
- data/lib/assets/js/vendor/underscore.js +0 -1343
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 80cb888b4be443d4b22f15fbb3dbbe5e0107e734
|
4
|
+
data.tar.gz: f0e8eeddc1979d7c8a5d5d3011ef5c3501e10d21
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 7a819d4822c785ded6d14ee9fb6db51fdcaf07e64e8b258478da3d28bf357fa47f0700c5caa721a8790bd127a4a3e9f114d5495401cc949f23289abca2026472
|
7
|
+
data.tar.gz: d1587804498b4faab776e23541ef0a26722576d499729b1c3e027e4add87840438b1205a7541a780f4ced3adb5b26a58bad62da93263ec524cad4bd4b08c1afe
|
data/lib/arcabouco/base.rb
CHANGED
@@ -40,7 +40,7 @@ module Arcabouco
|
|
40
40
|
mattr_accessor :asset_list
|
41
41
|
mattr_accessor :application_name
|
42
42
|
|
43
|
-
self.asset_list = %w(app.css app.js vendor.js vendor.css *.png *.jpg *.gif *.mp3 *.wav)
|
43
|
+
self.asset_list = %w(app.css app.js app.vendor.js app.vendor.css *.png *.jpg *.gif *.mp3 *.wav)
|
44
44
|
self.application_name = "Arcabouco Application"
|
45
45
|
|
46
46
|
def self.setup
|
data/lib/arcabouco/version.rb
CHANGED
@@ -0,0 +1,8 @@
|
|
1
|
+
/*
|
2
|
+
* Adding a UTF-8 Character to Fix áé
|
3
|
+
* This is a manifest file that'll automatically include all the stylesheets available in this directory
|
4
|
+
* and any sub-directories. You're free to add application-wide styles to this file and they'll appear at
|
5
|
+
* the top of the compiled file, but it's generally better to create a new file per style scope.
|
6
|
+
*= require vendor
|
7
|
+
*/
|
8
|
+
|
data/lib/assets/js/app.js
CHANGED
@@ -1,7 +1,8 @@
|
|
1
|
+
//= require './core/debug'
|
2
|
+
//= require './core/helpers'
|
1
3
|
//= require './core/capabilities'
|
4
|
+
//= require './core/extends'
|
2
5
|
//= require './core/environment'
|
3
|
-
//= require './core/debug'
|
4
|
-
//= require './core/sound'
|
5
6
|
//= require 'config'
|
6
7
|
//= require './core/boot'
|
7
8
|
//= require 'main'
|
@@ -1,2 +1,33 @@
|
|
1
1
|
app.debug "Starting WebApp Framework"
|
2
2
|
|
3
|
+
app.module_load = (name) ->
|
4
|
+
app._bootstrap_list[name] = false
|
5
|
+
|
6
|
+
app.module_ready = (name) ->
|
7
|
+
app._bootstrap_list[name] = true
|
8
|
+
|
9
|
+
app.load_modules = ->
|
10
|
+
for module,status of app._bootstrap_list
|
11
|
+
return if status == 1
|
12
|
+
|
13
|
+
app.debug 'Loaded modules: '
|
14
|
+
for name of app._bootstrap_list
|
15
|
+
app.debug ' - ' + name
|
16
|
+
|
17
|
+
clearInterval app._bootstrap_list_loader
|
18
|
+
delete app._bootstrap_list
|
19
|
+
delete app._bootstrap_list_loader
|
20
|
+
|
21
|
+
if app.main
|
22
|
+
app.main()
|
23
|
+
|
24
|
+
app.boot = ->
|
25
|
+
app.debug "Booting started..."
|
26
|
+
app.debug 'Detected capabilities: ' + document.documentElement.className + ' ' + navigator.oscpu + ' ' + navigator.platform + navigator.userAgent
|
27
|
+
app.debug 'Detected language: ' + detectLanguage()
|
28
|
+
|
29
|
+
if app.document_domain
|
30
|
+
document.domain = app.document_domain
|
31
|
+
|
32
|
+
app._bootstrap_list_loader = setInterval( @load_modules, 250 )
|
33
|
+
app.load_modules()
|
@@ -126,86 +126,4 @@ var BrowserDetect = {
|
|
126
126
|
};
|
127
127
|
BrowserDetect.init();
|
128
128
|
|
129
|
-
|
130
|
-
|
131
|
-
window.IS_MOBILE = false;
|
132
|
-
window.IS_DESKTOP = false;
|
133
|
-
window.IS_IOS = false;
|
134
|
-
window.IS_ANDROID = false;
|
135
|
-
window.IS_DEPRECATED_ANDROID = false;
|
136
|
-
|
137
|
-
$("html").removeClass("no-js").addClass("js");
|
138
|
-
$("html").removeClass("not-ready").addClass("ready");
|
139
|
-
if (navigator.userAgent.match(/Android/i)) { $("html").addClass("android mobile"); window.IS_MOBILE=true; window.IS_ANDROID=true; }
|
140
|
-
else if (navigator.userAgent.match(/iPhone/i) || navigator.userAgent.match(/iPad/i) || navigator.userAgent.match(/iPod/i)) { $("html").addClass("ios mobile"); window.IS_MOBILE=true; window.IS_IOS=true }
|
141
|
-
else { $("html").addClass("desktop"); window.IS_DESKTOP=true }
|
142
|
-
|
143
|
-
$("html").addClass( BrowserDetect.browser.toLowerCase() )
|
144
|
-
$("html").addClass( BrowserDetect.browser.toLowerCase() + '_' + BrowserDetect.version )
|
145
|
-
$("html").addClass( 'os_' + BrowserDetect.OS.toLowerCase() )
|
146
|
-
|
147
|
-
var ua = navigator.userAgent;
|
148
|
-
if( ua.indexOf("Android") >= 0 )
|
149
|
-
{
|
150
|
-
var androidversion = parseFloat(ua.slice(ua.indexOf("Android")+8));
|
151
|
-
if (androidversion < 3)
|
152
|
-
{
|
153
|
-
$("html").addClass( 'deprecated_android' );
|
154
|
-
window.IS_DEPRECATED_ANDROID = true;
|
155
|
-
}
|
156
|
-
}
|
157
|
-
|
158
|
-
window.TOUCH_SUPPORT = jQuery.support.touch;
|
159
|
-
|
160
|
-
window.matchMedia = window.matchMedia || (function(doc, undefined){
|
161
|
-
|
162
|
-
var bool,
|
163
|
-
docElem = doc.documentElement,
|
164
|
-
refNode = docElem.firstElementChild || docElem.firstChild,
|
165
|
-
// fakeBody required for <FF4 when executed in <head>
|
166
|
-
fakeBody = doc.createElement('body'),
|
167
|
-
div = doc.createElement('div');
|
168
|
-
|
169
|
-
div.id = 'mq-test-1';
|
170
|
-
div.style.cssText = "position:absolute;top:-100em";
|
171
|
-
fakeBody.style.background = "none";
|
172
|
-
fakeBody.appendChild(div);
|
173
|
-
|
174
|
-
return function(q){
|
175
|
-
|
176
|
-
div.innerHTML = '­<style media="'+q+'"> #mq-test-1 { width: 42px; }</style>';
|
177
|
-
|
178
|
-
docElem.insertBefore(fakeBody, refNode);
|
179
|
-
bool = div.offsetWidth == 42;
|
180
|
-
docElem.removeChild(fakeBody);
|
181
|
-
|
182
|
-
return { matches: bool, media: q };
|
183
|
-
};
|
184
|
-
|
185
|
-
})(document);
|
186
|
-
|
187
|
-
window.HAS_MEDIAQUERY = window.matchMedia && window.matchMedia( "only all" ).matches;
|
188
|
-
|
189
|
-
function configureMediaQuery() {
|
190
|
-
$("body").removeClass("mq-mp"); // Mobile Portrait
|
191
|
-
$("body").removeClass("mq-ml"); // Mobile Landscape
|
192
|
-
$("body").removeClass("mq-tb"); // For Tablets
|
193
|
-
$("body").removeClass("mq-ls"); // For Large Screens
|
194
|
-
$("body").removeClass("mq-sm"); // For Small Screens
|
195
|
-
var queryWidth = $(window).width();
|
196
|
-
if (queryWidth < 480) $("body").addClass("mq-mp");
|
197
|
-
else if (queryWidth < 768 && queryWidth > 479) $("body").addClass("mq-mp");
|
198
|
-
else if (queryWidth < 1023 && queryWidth > 767) $("body").addClass("mq-tb");
|
199
|
-
else if (queryWidth > 768) $("body").addClass("mq-ls");
|
200
|
-
else if (queryWidth < 769) $("body").addClass("mq-sm");
|
201
|
-
}
|
202
|
-
|
203
|
-
if (window.HAS_MEDIAQUERY) {
|
204
|
-
$("html").addClass("mediaquery");
|
205
|
-
} else {
|
206
|
-
configureMediaQuery();
|
207
|
-
$(window).resize(configureMediaQuery);
|
208
|
-
}
|
209
|
-
|
210
|
-
});
|
211
|
-
|
129
|
+
// TODO - Convert detect capabilities
|
@@ -0,0 +1,16 @@
|
|
1
|
+
@getMousePos = ( event ) ->
|
2
|
+
if TOUCH_SUPPORT
|
3
|
+
touch = event.originalEvent.touches[0] || event.originalEvent.changedTouches[0]
|
4
|
+
cur_x = touch.pageX
|
5
|
+
cur_y = touch.pageY
|
6
|
+
else
|
7
|
+
cur_x = event.clientX
|
8
|
+
cur_y = event.clientY
|
9
|
+
return { x: cur_x, y: cur_y }
|
10
|
+
|
11
|
+
@distanceFrom = ( x, y, x0, y0 ) ->
|
12
|
+
Math.sqrt((x -= x0) * x + (y -= y0) * y)
|
13
|
+
|
14
|
+
@detectLanguage = ->
|
15
|
+
language = window.navigator.userLanguage || window.navigator.language
|
16
|
+
language = language.toLowerCase().replace('-','').replace('_','')
|
data/lib/assets/js/vendor.js
CHANGED
@@ -1,3 +1,5 @@
|
|
1
|
+
app._lastUpdate = (new Date()).getTime();
|
2
|
+
|
1
3
|
function _getJSON(url,callback) {
|
2
4
|
var xobj = new XMLHttpRequest();
|
3
5
|
xobj.overrideMimeType("application/json");
|
@@ -27,14 +29,16 @@ function _loadCSS(src)
|
|
27
29
|
function bootstrapApplication()
|
28
30
|
{
|
29
31
|
if (app.bootstraped) return;
|
30
|
-
app.bootstraped = true;
|
31
32
|
if (app.enable_debug) console.log("DEBUG: Bootstrap Application. Manifest (" + app.assets_manifest + ")");
|
32
33
|
_getJSON( app.assets_manifest, function(data) {
|
33
|
-
_loadCSS( data.assets['vendor.css'] );
|
34
|
+
_loadCSS( data.assets['app.vendor.css'] );
|
34
35
|
_loadCSS( data.assets['app.css'] );
|
35
|
-
_loadJS( data.assets['vendor.js'], function() {
|
36
|
+
_loadJS( data.assets['app.vendor.js'], function() {
|
36
37
|
_loadJS( data.assets['app.js'], function() {
|
37
|
-
|
38
|
+
app.boot();
|
39
|
+
app.bootstraped = true;
|
40
|
+
var el = document.getElementById('application_preload_layer');
|
41
|
+
el.parentNode.removeChild(el);
|
38
42
|
});
|
39
43
|
});
|
40
44
|
});
|
@@ -48,6 +52,13 @@ function updateApplicationDownloadProgress(progress)
|
|
48
52
|
|
49
53
|
function refreshApplicationFiles()
|
50
54
|
{
|
55
|
+
// Fix to browser finding new content
|
56
|
+
_lastUpdate = Math.ceil( app._lastUpdate/1000 );
|
57
|
+
_currentUpdate = Math.ceil( (new Date()).getTime()/1000 );
|
58
|
+
if (app.enable_debug) console.log("DEBUG: Last Update: " + _lastUpdate);
|
59
|
+
if (_lastUpdate+5 < _currentUpdate) return;
|
60
|
+
app._lastUpdate = _currentUpdate;
|
61
|
+
|
51
62
|
app.applicationCache.swapCache();
|
52
63
|
if (app.bootstraped == false) {
|
53
64
|
bootstrapApplication();
|
data/lib/templates/manifest.erb
CHANGED
@@ -6,7 +6,9 @@ CACHE:
|
|
6
6
|
|
7
7
|
<% if assets['app.js'] %>/app.assets/<%= assets['app.js'].digest_path %><% end %>
|
8
8
|
|
9
|
-
<% if assets['vendor.
|
9
|
+
<% if assets['app.vendor.css'] %>/app.assets/<%= assets['app.vendor.css'].digest_path %><% end %>
|
10
|
+
|
11
|
+
<% if assets['app.vendor.js'] %>/app.assets/<%= assets['app.vendor.js'].digest_path %><% end %>
|
10
12
|
|
11
13
|
NETWORK:
|
12
14
|
*
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: arcabouco
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
4
|
+
version: 0.2.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Patrick Negri
|
@@ -296,6 +296,7 @@ files:
|
|
296
296
|
- lib/arcabouco/version.rb
|
297
297
|
- lib/assets/css/adaptative-mixins.sass
|
298
298
|
- lib/assets/css/app.css
|
299
|
+
- lib/assets/css/app.vendor.css
|
299
300
|
- lib/assets/css/arcabouco-entry.sass
|
300
301
|
- lib/assets/css/base.css
|
301
302
|
- lib/assets/css/core.sass
|
@@ -304,20 +305,18 @@ files:
|
|
304
305
|
- lib/assets/css/reset.sass
|
305
306
|
- lib/assets/css/vendor.css
|
306
307
|
- lib/assets/js/app.js
|
308
|
+
- lib/assets/js/app.vendor.js
|
307
309
|
- lib/assets/js/config.js.coffee
|
308
310
|
- lib/assets/js/core/boot.js.coffee
|
309
311
|
- lib/assets/js/core/capabilities.js
|
310
312
|
- lib/assets/js/core/debug.js.coffee
|
311
313
|
- lib/assets/js/core/environment.js.coffee
|
312
|
-
- lib/assets/js/core/
|
314
|
+
- lib/assets/js/core/extends.coffee
|
315
|
+
- lib/assets/js/core/helpers.js.coffee
|
313
316
|
- lib/assets/js/main.js
|
314
317
|
- lib/assets/js/vendor.js
|
315
318
|
- lib/assets/js/vendor/async.js
|
316
|
-
- lib/assets/js/vendor/backbone.js
|
317
|
-
- lib/assets/js/vendor/handlebars.js
|
318
|
-
- lib/assets/js/vendor/jquery.js
|
319
319
|
- lib/assets/js/vendor/tasks.js.coffee
|
320
|
-
- lib/assets/js/vendor/underscore.js
|
321
320
|
- lib/templates/bootstrap_code.js
|
322
321
|
- lib/templates/index.html.erb
|
323
322
|
- lib/templates/manifest.erb
|
@@ -1,67 +0,0 @@
|
|
1
|
-
class _Sound
|
2
|
-
format: if $.browser.webkit then ".mp3" else ".wav"
|
3
|
-
soundPath: "/app.assets/"
|
4
|
-
sound: []
|
5
|
-
environmentSound: null
|
6
|
-
maxChannels: 8
|
7
|
-
|
8
|
-
constructor: () ->
|
9
|
-
@sound.size = 8
|
10
|
-
for i in [0..7]
|
11
|
-
@sound[i] = null
|
12
|
-
|
13
|
-
loadSoundChannel: (name) ->
|
14
|
-
snd = new Audio( @soundPath + name + @format )
|
15
|
-
snd.preload = false
|
16
|
-
snd.load()
|
17
|
-
snd
|
18
|
-
|
19
|
-
enableDesktopLoop: ( env ) ->
|
20
|
-
if typeof env.loop == 'boolean'
|
21
|
-
env.loop = true
|
22
|
-
else
|
23
|
-
env.addEventListener( 'ended',
|
24
|
-
() ->
|
25
|
-
this.currentTime = 0
|
26
|
-
this.play()
|
27
|
-
false
|
28
|
-
)
|
29
|
-
|
30
|
-
playDesktop: (name, options = {}) ->
|
31
|
-
if options.environmentSound
|
32
|
-
@environmentSound.stop() if @environmentSound
|
33
|
-
@environmentSound = @loadSoundChannel( name )
|
34
|
-
@enableDesktopLoop( @environmentSound ) if options.environmentSound
|
35
|
-
@environmentSound.play()
|
36
|
-
return
|
37
|
-
|
38
|
-
aChannel = false
|
39
|
-
for i in [0..8]
|
40
|
-
if @sound[i] == null
|
41
|
-
aChannel = i
|
42
|
-
break
|
43
|
-
else if @sound[i] and (@sound[i].currentTime == @sound[i].duration || @sound[i].currentTime == 0)
|
44
|
-
aChannel = i
|
45
|
-
break
|
46
|
-
|
47
|
-
@sound[ aChannel ] = @loadSoundChannel( name )
|
48
|
-
@enableDesktopLoop( @sound[ aChannel ] ) if options.environmentSound
|
49
|
-
@sound[ aChannel ].play()
|
50
|
-
|
51
|
-
stopDesktop: (channel) ->
|
52
|
-
@sound[channel].stop() if @sound[channel] and (@sound[channel].currentTime == @sound[channel].duration || @sound[channel].currentTime == 0)
|
53
|
-
|
54
|
-
stopEnvironmentDesktop: ->
|
55
|
-
@environmentSound.stop() if @environmentSound
|
56
|
-
|
57
|
-
# SUPPORT CORDOVA
|
58
|
-
play: (name, options = {}) ->
|
59
|
-
@playDesktop name, options unless IS_MOBILE
|
60
|
-
|
61
|
-
stop: (channel) ->
|
62
|
-
@stopDesktop channel unless IS_MOBILE
|
63
|
-
|
64
|
-
stopEnvironment: ->
|
65
|
-
@stopEnvironmentDesktop() unless IS_MOBILE
|
66
|
-
|
67
|
-
window.Sound = new _Sound()
|