diff --git a/assets/scripts/app/adapters/application.coffee b/assets/scripts/app/adapters/application.coffee index 49bc671c..272c5885 100644 --- a/assets/scripts/app/adapters/application.coffee +++ b/assets/scripts/app/adapters/application.coffee @@ -1,4 +1,4 @@ -Travis.ApplicationAdapter = DS.ActiveModelAdapter.extend +Adapter = DS.ActiveModelAdapter.extend host: Travis.config.api_endpoint ajaxOptions: (url, type, options) -> hash = @_super(url, type, options) @@ -11,3 +11,6 @@ Travis.ApplicationAdapter = DS.ActiveModelAdapter.extend hash.headers['Authorization'] ||= "token #{token}" hash + + +Travis.ApplicationAdapter = Adapter diff --git a/assets/scripts/app/adapters/env-var.coffee b/assets/scripts/app/adapters/env-var.coffee index fc3e6058..172a76f1 100644 --- a/assets/scripts/app/adapters/env-var.coffee +++ b/assets/scripts/app/adapters/env-var.coffee @@ -1,12 +1,12 @@ -get = Ember.get +ApplicationAdapter = Travis.ApplicationAdapter -Travis.EnvVarAdapter = Travis.ApplicationAdapter.extend +Adapter = ApplicationAdapter.extend namespace: 'settings' buildURL: (type, id, record) -> url = @_super.apply this, arguments - if record && (repoId = get(record, 'repo.id')) + if record && (repoId = Ember.get(record, 'repo.id')) delimiter = if url.indexOf('?') != -1 then '&' else '?' url = "#{url}#{delimiter}repository_id=#{repoId}" @@ -21,3 +21,5 @@ Travis.EnvVarAdapter = Travis.ApplicationAdapter.extend id = Ember.get(record, 'id'); this.ajax(this.buildURL(type.typeKey, id, record), "PATCH", { data: data }) + +Travis.EnvVarAdapter = Adapter diff --git a/assets/scripts/app/adapters/ssh-key.coffee b/assets/scripts/app/adapters/ssh-key.coffee index 603c78c2..8450870a 100644 --- a/assets/scripts/app/adapters/ssh-key.coffee +++ b/assets/scripts/app/adapters/ssh-key.coffee @@ -1,6 +1,8 @@ get = Ember.get -Travis.SshKeyAdapter = Travis.ApplicationAdapter.extend +ApplicationAdapter = Travis.ApplicationAdapter + +Adapter = ApplicationAdapter.extend namespace: 'settings' createRecord: (store, type, record) -> @@ -9,3 +11,5 @@ Travis.SshKeyAdapter = Travis.ApplicationAdapter.extend serializer.serializeIntoHash(data, type, record, { includeId: true }); this.ajax(this.buildURL(type.typeKey, null, record), "POST", { data: data }) + +Travis.SshKeyAdapter = Adapter diff --git a/assets/scripts/app/auth.coffee b/assets/scripts/app/auth.coffee index 38af83d4..84666d1a 100644 --- a/assets/scripts/app/auth.coffee +++ b/assets/scripts/app/auth.coffee @@ -1,4 +1,4 @@ -window.Auth = Ember.Object.extend +Auth = Ember.Object.extend state: "signed-out" receivingEnd: "#{location.protocol}//#{location.host}" @@ -9,7 +9,7 @@ window.Auth = Ember.Object.extend Travis.sessionStorage.getItem('travis.token') endpoint: (-> - @container.lookup('application:main').config.api_endpoint + @config.api_endpoint ).property(), signOut: -> @@ -141,15 +141,4 @@ window.Auth = Ember.Object.extend "#{location.protocol}//www.gravatar.com/avatar/#{@get('currentUser.gravatarId')}?s=48&d=mm" ).property('currentUser.gravatarId') -Ember.onLoad 'Ember.Application', (Application) -> - Application.initializer - name: "auth", - - initialize: (container, application) -> - application.register 'auth:main', Auth - - application.inject('route', 'auth', 'auth:main') - application.inject('controller', 'auth', 'auth:main') - application.inject('application', 'auth', 'auth:main') - - application.inject('auth', 'store', 'store:main') +window.Auth = Auth diff --git a/assets/scripts/app/initializers/auth.coffee b/assets/scripts/app/initializers/auth.coffee new file mode 100644 index 00000000..6f0c8b77 --- /dev/null +++ b/assets/scripts/app/initializers/auth.coffee @@ -0,0 +1,17 @@ +initialize = (container, app) -> + app.register 'auth:main', Auth + + app.inject('route', 'auth', 'auth:main') + app.inject('controller', 'auth', 'auth:main') + app.inject('application', 'auth', 'auth:main') + + Auth.store = container.lookup('store:main') + Auth.config = container.lookup('config:main') + + +AuthInitializer = + name: 'auth' + initialize: initialize + +Ember.onLoad 'Ember.Application', (Application) -> + Application.initializer AuthInitializer diff --git a/assets/scripts/app/initializers/config.coffee b/assets/scripts/app/initializers/config.coffee new file mode 100644 index 00000000..c910d42a --- /dev/null +++ b/assets/scripts/app/initializers/config.coffee @@ -0,0 +1,13 @@ +initialize = (container, application) -> + application.register 'config:main', application.config, { instantiate: false } + + application.inject('controller', 'config', 'config:main') + application.inject('route', 'config', 'config:main') + application.inject('auth', 'config', 'config:main') + +ConfigInitializer = + name: 'pusher' + initialize: initialize + +Ember.onLoad 'Ember.Application', (Application) -> + Application.initializer ConfigInitializer diff --git a/assets/scripts/app/initializers/google-analytics.coffee b/assets/scripts/app/initializers/google-analytics.coffee new file mode 100644 index 00000000..ad8b6e6e --- /dev/null +++ b/assets/scripts/app/initializers/google-analytics.coffee @@ -0,0 +1,18 @@ +initialize = (container) -> + if Travis.config.ga_code + window._gaq = [] + _gaq.push(['_setAccount', Travis.config.ga_code]) + + ga = document.createElement('script') + ga.type = 'text/javascript' + ga.async = true + ga.src = 'https://ssl.google-analytics.com/ga.js' + s = document.getElementsByTagName('script')[0] + s.parentNode.insertBefore(ga, s) + +GAInitializer = + name: 'google-analytics' + initialize: initialize + +Ember.onLoad 'Ember.Application', (Application) -> + Application.initializer GAInitializer diff --git a/assets/scripts/app/initializers/pusher.coffee b/assets/scripts/app/initializers/pusher.coffee new file mode 100644 index 00000000..fbcab799 --- /dev/null +++ b/assets/scripts/app/initializers/pusher.coffee @@ -0,0 +1,14 @@ +initialize = (container, application) -> + application.register 'pusher:main', application.pusher, { instantiate: false } + + application.inject('route', 'pusher', 'pusher:main') + + application.pusher.store = container.lookup('store:main') + + +PusherInitializer = + name: 'pusher' + initialize: initialize + +Ember.onLoad 'Ember.Application', (Application) -> + Application.initializer PusherInitializer diff --git a/assets/scripts/app/initializers/storage.coffee b/assets/scripts/app/initializers/storage.coffee new file mode 100644 index 00000000..90e1237e --- /dev/null +++ b/assets/scripts/app/initializers/storage.coffee @@ -0,0 +1,55 @@ +Storage = Em.Object.extend + init: -> + @set('storage', {}) + key: (key) -> + "__#{key.replace('.', '__')}" + getItem: (k) -> + return @get("storage.#{@key(k)}") + setItem: (k,v) -> + @set("storage.#{@key(k)}", v) + removeItem: (k) -> + @setItem(k, null) + clear: -> + @set('storage', {}) + +sessionStorage = (-> + storage = null + try + # firefox will not throw error on access for sessionStorage var, + # you need to actually get something from session + sessionStorage.getItem('foo') + storage = sessionStorage + catch err + storage = Storage.create() + + storage +)() + +storage = (-> + storage = null + try + storage = window.localStorage || throw('no storage') + catch err + storage = Storage.create() + + storage +)() + +initialize = (container, application) -> + application.register 'storage:main', storage, { instantiate: false } + application.register 'sessionStorage:main', sessionStorage, { instantiate: false } + + application.inject('auth', 'storage', 'storage:main') + application.inject('auth', 'sessionStorage', 'sessionStorage:main') + + # I still use Travis.storage in some places which are not that easy to + # refactor + application.storage = storage + application.sessionStorage = sessionStorage + +StorageInitializer = + name: 'storage' + initialize: initialize + +Ember.onLoad 'Ember.Application', (Application) -> + Application.initializer StorageInitializer diff --git a/assets/scripts/app/initializers/stylesheets-manager.coffee b/assets/scripts/app/initializers/stylesheets-manager.coffee new file mode 100644 index 00000000..74dc10d5 --- /dev/null +++ b/assets/scripts/app/initializers/stylesheets-manager.coffee @@ -0,0 +1,15 @@ +stylesheetsManager = Ember.Object.create + enable: (id) -> + $("##{id}").removeAttr('disabled') + + disable: (id) -> + $("##{id}").attr('disabled', 'disabled') + +initialize = (container, application) -> + application.register 'stylesheetsManager:main', stylesheetsManager, { instantiate: false } + + application.inject('route', 'stylesheetsManager', 'stylesheetsManager:main') + +StylesheetsManagerInitializer = + name: 'inject-stylesheets-manager' + initialize: initialize diff --git a/assets/scripts/app/routes.coffee b/assets/scripts/app/router.coffee similarity index 94% rename from assets/scripts/app/routes.coffee rename to assets/scripts/app/router.coffee index 1d40f510..9a551816 100644 --- a/assets/scripts/app/routes.coffee +++ b/assets/scripts/app/router.coffee @@ -8,6 +8,11 @@ Ember.Router.reopen Travis.Router.reopen location: 'history' + didTransition: -> + @_super.apply @, arguments + + if Travis.config.ga_code + _gaq.push ['_trackPageview', location.pathname] Travis.Router.map -> @resource 'dashboard', -> diff --git a/assets/scripts/app/serializers/account.coffee b/assets/scripts/app/serializers/account.coffee index 307d01ea..0a02c113 100644 --- a/assets/scripts/app/serializers/account.coffee +++ b/assets/scripts/app/serializers/account.coffee @@ -1,2 +1,6 @@ -Travis.AccountSerializer = Travis.ApplicationSerializer.extend +ApplicationSerializer = Travis.ApplicationSerializer + +Serializer = ApplicationSerializer.extend primaryKey: 'login' + +Travis.AccountSerializer = Serializer diff --git a/assets/scripts/app/serializers/application.coffee b/assets/scripts/app/serializers/application.coffee index 3f66ffc7..cd97931c 100644 --- a/assets/scripts/app/serializers/application.coffee +++ b/assets/scripts/app/serializers/application.coffee @@ -1,13 +1,5 @@ -Travis.ApplicationSerializer = DS.ActiveModelSerializer.extend +Serializer = DS.ActiveModelSerializer.extend defaultSerializer: 'application' serializer: 'application' - extractSingle: (store, primaryType, rawPayload, recordId) -> - #newPayload = {} - - #if payload.build - - @_super.apply(this, arguments) - - extractArray: (store, type, payload) -> - @_super.apply(this, arguments) +Travis.ApplicationSerializer = Serializer diff --git a/assets/scripts/app/serializers/build.coffee b/assets/scripts/app/serializers/build.coffee index 001b6771..31c3d374 100644 --- a/assets/scripts/app/serializers/build.coffee +++ b/assets/scripts/app/serializers/build.coffee @@ -1,4 +1,6 @@ -Travis.BuildSerializer = Travis.ApplicationSerializer.extend +ApplicationSerializer = Travis.ApplicationSerializer + +Serializer = ApplicationSerializer.extend attrs: { repo: { key: 'repository_id' } _config: { key: 'config' } @@ -11,3 +13,5 @@ Travis.BuildSerializer = Travis.ApplicationSerializer.extend rawPayload.commits = [commit] @_super(store, primaryType, rawPayload, recordId) + +Travis.BuildSerializer = Serializer diff --git a/assets/scripts/app/serializers/env-var.coffee b/assets/scripts/app/serializers/env-var.coffee index 41e8eaaa..ccb4f446 100644 --- a/assets/scripts/app/serializers/env-var.coffee +++ b/assets/scripts/app/serializers/env-var.coffee @@ -1,4 +1,8 @@ -Travis.EnvVarSerializer = Travis.ApplicationSerializer.extend +ApplicationSerializer = Travis.ApplicationSerializer + +Serializer = ApplicationSerializer.extend attrs: { repo: { key: 'repository_id' } } + +Travis.EnvVarSerializer = Serializer diff --git a/assets/scripts/app/serializers/job.coffee b/assets/scripts/app/serializers/job.coffee index ce57c099..11a97079 100644 --- a/assets/scripts/app/serializers/job.coffee +++ b/assets/scripts/app/serializers/job.coffee @@ -1,4 +1,6 @@ -Travis.JobSerializer = Travis.ApplicationSerializer.extend +ApplicationSerializer = Travis.ApplicationSerializer + +Serializer = ApplicationSerializer.extend attrs: { repo: { key: 'repository_id' } _config: { key: 'config' } @@ -11,3 +13,5 @@ Travis.JobSerializer = Travis.ApplicationSerializer.extend rawPayload.commits = [commit] @_super(store, primaryType, rawPayload, recordId) + +Travis.JobSerializer = Serializer diff --git a/assets/scripts/app/serializers/repo.coffee b/assets/scripts/app/serializers/repo.coffee index feb53f76..3d18fe44 100644 --- a/assets/scripts/app/serializers/repo.coffee +++ b/assets/scripts/app/serializers/repo.coffee @@ -1,4 +1,8 @@ -Travis.RepoSerializer = Travis.ApplicationSerializer.extend +ApplicationSerializer = Travis.ApplicationSerializer + +Serializer = ApplicationSerializer.extend attrs: { _lastBuildDuration: { key: 'last_build_duration' } } + +Travis.RepoSerializer = Serializer diff --git a/assets/scripts/app/serializers/request.coffee b/assets/scripts/app/serializers/request.coffee index 65b39ae6..1346e244 100644 --- a/assets/scripts/app/serializers/request.coffee +++ b/assets/scripts/app/serializers/request.coffee @@ -1,6 +1,10 @@ -Travis.RequestSerializer = Travis.ApplicationSerializer.extend +ApplicationSerializer = Travis.ApplicationSerializer + +Serializer = ApplicationSerializer.extend attrs: { branchName: { key: 'branch' } tagName: { key: 'tag' } repo: { key: 'repository_id' } } + +Travis.RequestSerializer = Serializer diff --git a/assets/scripts/travis.coffee b/assets/scripts/travis.coffee index 6bf31cf0..78b8ea11 100644 --- a/assets/scripts/travis.coffee +++ b/assets/scripts/travis.coffee @@ -6,20 +6,6 @@ require 'app' window.ENV ||= {} window.ENV.RAISE_ON_DEPRECATION = true -Storage = Em.Object.extend - init: -> - @set('storage', {}) - key: (key) -> - "__#{key.replace('.', '__')}" - getItem: (k) -> - return @get("storage.#{@key(k)}") - setItem: (k,v) -> - @set("storage.#{@key(k)}", v) - removeItem: (k) -> - @setItem(k, null) - clear: -> - @set('storage', {}) - window.Travis = TravisApplication.create( LOG_ACTIVE_GENERATION: true, LOG_MODULE_RESOLVER: true, @@ -103,101 +89,6 @@ $.extend Travis, INTERVALS: { times: -1, updateTimes: 1000 } -sessionStorage = (-> - storage = null - try - # firefox will not throw error on access for sessionStorage var, - # you need to actually get something from session - sessionStorage.getItem('foo') - storage = sessionStorage - catch err - storage = Storage.create() - - storage -)() - -storage = (-> - storage = null - try - storage = window.localStorage || throw('no storage') - catch err - storage = Storage.create() - - storage -)() - -Travis.initializer - name: 'storage' - - initialize: (container, application) -> - application.register 'storage:main', storage, { instantiate: false } - application.register 'sessionStorage:main', sessionStorage, { instantiate: false } - - application.inject('auth', 'storage', 'storage:main') - application.inject('auth', 'sessionStorage', 'sessionStorage:main') - - # I still use Travis.storage in some places which are not that easy to - # refactor - application.storage = storage - application.sessionStorage = sessionStorage - -Travis.initializer - name: 'googleAnalytics' - - initialize: (container) -> - if Travis.config.ga_code - window._gaq = [] - _gaq.push(['_setAccount', Travis.config.ga_code]) - - ga = document.createElement('script') - ga.type = 'text/javascript' - ga.async = true - ga.src = 'https://ssl.google-analytics.com/ga.js' - s = document.getElementsByTagName('script')[0] - s.parentNode.insertBefore(ga, s) - -Travis.initializer - name: 'inject-config' - - initialize: (container, application) -> - application.register 'config:main', Travis.config, { instantiate: false } - - application.inject('controller', 'config', 'config:main') - application.inject('route', 'config', 'config:main') - application.inject('auth', 'config', 'config:main') - -Travis.initializer - name: 'inject-pusher' - - initialize: (container, application) -> - application.register 'pusher:main', Travis.pusher, { instantiate: false } - - application.inject('route', 'pusher', 'pusher:main') - - Travis.pusher.store = container.lookup('store:main') - -stylesheetsManager = Ember.Object.create - enable: (id) -> - $("##{id}").removeAttr('disabled') - - disable: (id) -> - $("##{id}").attr('disabled', 'disabled') - -Travis.initializer - name: 'inject-stylesheets-manager' - - initialize: (container, application) -> - application.register 'stylesheetsManager:main', stylesheetsManager, { instantiate: false } - - application.inject('route', 'stylesheetsManager', 'stylesheetsManager:main') - -Travis.Router.reopen - didTransition: -> - @_super.apply @, arguments - - if Travis.config.ga_code - _gaq.push ['_trackPageview', location.pathname] - Ember.LinkView.reopen loadingClass: 'loading_link'