From 8d9b36c0a6fda248d6833b3d002621dcbcb6019e Mon Sep 17 00:00:00 2001 From: Piotr Sarnacki Date: Wed, 6 Mar 2013 14:43:13 +0100 Subject: [PATCH 1/5] Remove Date hack, which was used for timeago --- assets/scripts/app/helpers/helpers.coffee | 2 +- assets/scripts/spec/spec_helper.coffee | 8 ++++---- assets/scripts/travis.coffee | 3 +++ assets/scripts/vendor/jquery.timeago.js | 5 +++-- 4 files changed, 11 insertions(+), 7 deletions(-) diff --git a/assets/scripts/app/helpers/helpers.coffee b/assets/scripts/app/helpers/helpers.coffee index f3decb63..a0f28ec5 100644 --- a/assets/scripts/app/helpers/helpers.coffee +++ b/assets/scripts/app/helpers/helpers.coffee @@ -73,7 +73,7 @@ require 'config/emoij' string _nowUtc: -> - @_toUtc new Date() + @_toUtc Travis.currentDate() _toUtc: (date) -> Date.UTC date.getFullYear(), date.getMonth(), date.getDate(), date.getHours(), date.getMinutes(), date.getSeconds(), date.getMilliseconds() diff --git a/assets/scripts/spec/spec_helper.coffee b/assets/scripts/spec/spec_helper.coffee index 03ed3945..de1a3688 100644 --- a/assets/scripts/spec/spec_helper.coffee +++ b/assets/scripts/spec/spec_helper.coffee @@ -10,10 +10,10 @@ minispade.require 'app' url = "/#{url}" unless url.match /^\// Travis.__container__.lookup('router:main').handleURL(url) -_Date = Date -@Date = (date) -> - new _Date(date || '2012-07-02T00:03:00Z') -@Date.UTC = _Date.UTC + +now = -> new Date('2012-07-02T00:03:00Z') +$.timeago.settings.nowFunction = -> now().getTime() +Travis.currentDate = now # hacks for missing features in webkit unless Function::bind diff --git a/assets/scripts/travis.coffee b/assets/scripts/travis.coffee index 21253131..5d43dac5 100644 --- a/assets/scripts/travis.coffee +++ b/assets/scripts/travis.coffee @@ -77,6 +77,9 @@ window.Travis = Em.Application.extend(Ember.Evented, location.href = location.href.replace('#!/', '') if location.hash.slice(0, 2) == '#!' I18n.fallbacks = true @setLocale 'locale', @get('defaultLocale') + + currentDate: -> + new Date() ).create() Travis.deferReadiness() diff --git a/assets/scripts/vendor/jquery.timeago.js b/assets/scripts/vendor/jquery.timeago.js index 9b7c93a5..22c06133 100644 --- a/assets/scripts/vendor/jquery.timeago.js +++ b/assets/scripts/vendor/jquery.timeago.js @@ -41,7 +41,8 @@ months: '%d months', year: 'about a year', years: '%d years', - numbers: [] + numbers: [], + nowFunction: function() { return new Date().getTime(); } } }, distanceInWords: function(date) { @@ -95,7 +96,7 @@ return (this.now() - date.getTime()); }, now: function() { - return new Date().getTime(); + return this.settings.nowFunction.call(this); }, parse: function(iso8601) { var s = $.trim(iso8601); From b57596c4477a6a04af361cf3348d200d233e1b1e Mon Sep 17 00:00:00 2001 From: Piotr Sarnacki Date: Wed, 6 Mar 2013 14:51:05 +0100 Subject: [PATCH 2/5] Data can be null in ajax request --- assets/scripts/lib/travis/ajax.coffee | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/assets/scripts/lib/travis/ajax.coffee b/assets/scripts/lib/travis/ajax.coffee index 40939951..0a694674 100644 --- a/assets/scripts/lib/travis/ajax.coffee +++ b/assets/scripts/lib/travis/ajax.coffee @@ -33,13 +33,13 @@ Travis.ajax = Em.Object.create success = options.success || (->) options.success = (data) => - Travis.lookup('controller:flash').loadFlashes(data.flash) if data.flash + Travis.lookup('controller:flash').loadFlashes(data.flash) if data?.flash delete data.flash if data? success.apply(this, arguments) error = options.error || (->) options.error = (data) => - Travis.lookup('controller:flash').pushObject(data.flash) if data.flash + Travis.lookup('controller:flash').pushObject(data.flash) if data?.flash delete data.flash if data? error.apply(this, arguments) From 7c1a64ccb6ba2a089fb5dae3198c82a6f8c86aee Mon Sep 17 00:00:00 2001 From: Piotr Sarnacki Date: Wed, 6 Mar 2013 14:51:50 +0100 Subject: [PATCH 3/5] Move nowFunction in timeago to proper place --- assets/scripts/vendor/jquery.timeago.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/assets/scripts/vendor/jquery.timeago.js b/assets/scripts/vendor/jquery.timeago.js index 22c06133..87076349 100644 --- a/assets/scripts/vendor/jquery.timeago.js +++ b/assets/scripts/vendor/jquery.timeago.js @@ -42,8 +42,8 @@ year: 'about a year', years: '%d years', numbers: [], - nowFunction: function() { return new Date().getTime(); } - } + }, + nowFunction: function() { return new Date().getTime(); } }, distanceInWords: function(date) { if(!date) { From 71f488547280e1e42800c9267562ff55f4c0b2bf Mon Sep 17 00:00:00 2001 From: Piotr Sarnacki Date: Wed, 6 Mar 2013 14:59:34 +0100 Subject: [PATCH 4/5] turn on ENV.RAISE_ON_DEPRECATION --- assets/scripts/travis.coffee | 3 +++ 1 file changed, 3 insertions(+) diff --git a/assets/scripts/travis.coffee b/assets/scripts/travis.coffee index 5d43dac5..d2b6ea6e 100644 --- a/assets/scripts/travis.coffee +++ b/assets/scripts/travis.coffee @@ -1,6 +1,9 @@ require 'ext/jquery' require 'ext/ember/namespace' +window.ENV ||= {} +window.ENV.RAISE_ON_DEPRECATION = true + # TODO: how can I put it in Travis namespace and use immediately? Storage = Em.Object.extend init: -> From 1e6672eb9f6db9eab14a8f2d9a35e4ad82bd7e67 Mon Sep 17 00:00:00 2001 From: Piotr Sarnacki Date: Wed, 6 Mar 2013 15:18:57 +0100 Subject: [PATCH 5/5] Fix toggle button on hooks list in profile --- assets/scripts/app/controllers/account_index.coffee | 3 +++ assets/scripts/app/controllers/profile.coffee | 3 +++ assets/scripts/app/store/rest_adapter.coffee | 12 ++++++++++++ assets/scripts/app/templates/profile/tabs/hooks.hbs | 2 +- 4 files changed, 19 insertions(+), 1 deletion(-) diff --git a/assets/scripts/app/controllers/account_index.coffee b/assets/scripts/app/controllers/account_index.coffee index 825d8586..b5dda57a 100644 --- a/assets/scripts/app/controllers/account_index.coffee +++ b/assets/scripts/app/controllers/account_index.coffee @@ -5,3 +5,6 @@ Travis.AccountIndexController = Em.Controller.extend sync: -> @get('user').sync() + + toggle: (hook) -> + hook.toggle() diff --git a/assets/scripts/app/controllers/profile.coffee b/assets/scripts/app/controllers/profile.coffee index d121107b..fbac998a 100644 --- a/assets/scripts/app/controllers/profile.coffee +++ b/assets/scripts/app/controllers/profile.coffee @@ -23,6 +23,9 @@ Travis.ProfileController = Travis.Controller.extend sync: -> @get('user').sync() + toggle: (hook) -> + hook.toggle() + activate: (action, params) -> @setParams(params || @get('params')) this["view#{$.camelize(action)}"]() diff --git a/assets/scripts/app/store/rest_adapter.coffee b/assets/scripts/app/store/rest_adapter.coffee index d8a402f4..6b2ac960 100644 --- a/assets/scripts/app/store/rest_adapter.coffee +++ b/assets/scripts/app/store/rest_adapter.coffee @@ -102,6 +102,18 @@ Travis.RestAdapter = DS.RESTAdapter.extend merge: (store, record, serialized) -> @get('serializer').merge(record, serialized) + didSaveRecord: (store, type, record, payload) -> + # API sometimes return { result: true } response + # which does not play nice with ember-data. For now + # let's just change payload to have serialized record + # included, but ideally it should be fixed in the API + # to be consistent across all the endpoints. + if payload?.result == true + payload = {} + payload[type.singularName()] = record.serialize() + + @_super(store, type, record, payload) + Travis.RestAdapter.map 'Travis.Commit', {} Travis.RestAdapter.map 'Travis.Build', { diff --git a/assets/scripts/app/templates/profile/tabs/hooks.hbs b/assets/scripts/app/templates/profile/tabs/hooks.hbs index 05f2e84b..4f41fde5 100644 --- a/assets/scripts/app/templates/profile/tabs/hooks.hbs +++ b/assets/scripts/app/templates/profile/tabs/hooks.hbs @@ -24,7 +24,7 @@