Refactored utils into coffeescript requirejs module

This commit is contained in:
Fergal Moran
2013-06-17 19:10:25 +01:00
parent 97f02e144b
commit 24f2dab9a7
7 changed files with 182 additions and 24 deletions

31
index.html Normal file
View File

@@ -0,0 +1,31 @@
if (!com) var com = {};
if (!com.podnoms) com.podnoms = {};
com.podnoms.settings = {
CHAT_HOST: 'www.deepsouthsounds.com:8081',
REALTIME_HOST: 'www.deepsouthsounds.com:8081',
REALTIME_PORT: 'www.deepsouthsounds.com:8081',
urlRoot: '/api/v1/',
liveStreamRoot: 'http://radio.deepsouthsounds.com:8000/mp3',
streamInfoUrl: 'http://radio.deepsouthsounds.com:8000/mp3',
volume: '50',
smDebugMode: false,
isDebug: false,
drawTimelineOnMix: false,
staticUrl: 'http://static.podnoms.com/',
urlArgs: false ? "" : "bust="+ (new Date()).getTime(),
currentUser: -1,
/** simple helper to take an api JSON object and initialise a player item */
setupPlayerWrapper: function (id, stream_url, el) {
com.podnoms.player.setupPlayer({
id: id,
boundingEl: $('#mix-container-' + id, el),
waveFormEl: $('#waveform-' + id, el),
playHeadEl: $('#playhead-player-' + id, el),
loadingEl: $('#progress-player-' + id, el),
seekHeadEl: $('#player-seekhead', el),
playButtonEl: $('#play-pause-button-small-' + id, el),
url: stream_url || ""
});
}
};

0
manage.py Normal file → Executable file
View File

View File

@@ -1,7 +1,4 @@
define ['jquery', 'bootstrap']
($, bootstrap) ->
class Utils
define ['jquery', 'bootstrap'], ($, bootstrap) ->
modal: (url) ->
if url.indexOf("#") is 0
$(url).modal "open"
@@ -20,5 +17,3 @@ define ['jquery', 'bootstrap']
com.podnoms.utils.modal "tpl/PlayCountLoginAlert" if (data.play_count isnt 0) and (data.play_count % 1) is 0
true
Utils

View File

@@ -0,0 +1,33 @@
// Generated by CoffeeScript 1.3.3
(function() {
define(['jquery', 'bootstrap'], function($, bootstrap) {
return {
modal: function(url) {
if (url.indexOf("#") === 0) {
$(url).modal("open");
} else {
$.get(url, function(data) {
return $("<div class=\"modal hide fade\">" + data + "</div>").modal().on("hidden", function() {
return $(this).remove();
});
}).success(function() {
return $("input:text:visible:first").focus();
});
}
return true;
},
checkPlayCount: function() {
if (document.cookie.indexOf("sessionId")) {
$.getJSON("/ajax/session_play_count", function(data) {
if ((data.play_count !== 0) && (data.play_count % 1) === 0) {
return com.podnoms.utils.modal("tpl/PlayCountLoginAlert");
}
});
}
return true;
}
};
});
}).call(this);

View File

@@ -0,0 +1,103 @@
// Generated by CoffeeScript 1.3.3
/*
@license
----------------------------------------------
Copyright (c) 2012, Fergal Moran. All rights reserved.
Code provided under the BSD License:
*/
(function() {
var __hasProp = {}.hasOwnProperty,
__extends = function(child, parent) { for (var key in parent) { if (__hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; };
define(["underscore", "backbone", "vent", "utils", "text!/tpl/HeaderView"], function(_, Backbone, vent, utils, Template) {
var HeaderView;
HeaderView = (function(_super) {
__extends(HeaderView, _super);
function HeaderView() {
return HeaderView.__super__.constructor.apply(this, arguments);
}
HeaderView.prototype.template = _.template(Template);
HeaderView.prototype.events = {
"click #header-play-pause-button": "togglePlayState",
"click #header-login-button": "login",
"click #header-live-button": "playLive"
};
HeaderView.prototype.initialize = function() {
this.render();
this.listenTo(vent, "mix:play", this.trackPlaying);
return this.listenTo(vent, "mix:pause", this.trackPaused);
};
HeaderView.prototype.login = function() {
return utils.modal("tpl/LoginView");
};
HeaderView.prototype.logout = function() {
return utils.showAlert("Success", "You are now logged out");
};
HeaderView.prototype.trackChanged = function(data) {
$(this.el).find("#track-description").text(data.title);
return $(this.el).find("#track-description").attr("href", "#" + data.item_url);
};
HeaderView.prototype.trackPlaying = function(data) {
$(this.el).find("#header-play-button-icon").removeClass("icon-play");
return $(this.el).find("#header-play-button-icon").addClass("icon-pause");
};
HeaderView.prototype.trackPaused = function(data) {
$(this.el).find("#header-play-button-icon").removeClass("icon-pause");
return $(this.el).find("#header-play-button-icon").addClass("icon-play");
};
HeaderView.prototype.render = function() {
$(this.el).html(this.template());
return this;
};
HeaderView.prototype.playLive = function() {
var button, ref;
ref = this;
dssSoundHandler.playLive();
_eventAggregator.trigger("track_playing");
button = $(this.el).find("#header-play-pause-button");
button.data("mode", "pause");
return $.getJSON("ajax/live_now_playing/", function(data) {
alert(data.title);
return $(ref.el).find("#live-now-playing").text(data.title);
});
};
HeaderView.prototype.togglePlayState = function() {
var button, mode;
button = $(this.el).find("#header-play-pause-button");
mode = button.data("mode");
if (mode === "play") {
dssSoundHandler.resumeSound();
_eventAggregator.trigger("track_playing");
return button.data("mode", "pause");
} else {
dssSoundHandler.pauseSound();
_eventAggregator.trigger("track_paused");
return button.data("mode", "play");
}
};
return HeaderView;
})(Backbone.View);
return HeaderView;
});
}).call(this);

View File

@@ -1,22 +1,26 @@
// Generated by CoffeeScript 1.6.2
// Generated by CoffeeScript 1.3.3
(function() {
var __bind = function(fn, me){ return function(){ return fn.apply(me, arguments); }; },
__hasProp = {}.hasOwnProperty,
__extends = function(child, parent) { for (var key in parent) { if (__hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; };
define(['moment', 'app', 'vent', 'marionette', 'models/comment/commentCollection', 'views/comment/commentListView', 'text!/tpl/MixListItemView'], function(moment, App, vent, Marionette, CommentsCollection, CommentsListView, Template) {
var MixItemView, _ref;
var MixItemView;
MixItemView = (function(_super) {
__extends(MixItemView, _super);
function MixItemView() {
this.doStart = __bind(this.doStart, this);
this.renderComments = __bind(this.renderComments, this);
this.renderGenres = __bind(this.renderGenres, this);
this.onRender = __bind(this.onRender, this);
this.initialize = __bind(this.initialize, this); _ref = MixItemView.__super__.constructor.apply(this, arguments);
return _ref;
this.initialize = __bind(this.initialize, this);
return MixItemView.__super__.constructor.apply(this, arguments);
}
MixItemView.prototype.template = _.template(Template);
@@ -50,7 +54,6 @@
MixItemView.prototype.onRender = function() {
var id, totalDuration, totalDurationText;
id = this.model.get('id');
if (this.model.get('duration')) {
totalDuration = moment.duration(this.model.get('duration'), "seconds");
@@ -70,7 +73,6 @@
MixItemView.prototype.renderGenres = function() {
var el;
el = this.el;
$.each(this.model.get("genre-list"), function(data) {
$("#genre-list", el).append('<a href="/mixes/' + this.slug + '" class="dss-tag-button">' + this.text + '</a>');
@@ -81,7 +83,6 @@
MixItemView.prototype.renderComments = function() {
var comments;
comments = new CommentsCollection();
comments.url = this.model.get("resource_uri") + "comments/";
comments.mix_id = this.model.id;
@@ -89,7 +90,6 @@
comments.fetch({
success: function(data) {
var content;
console.log(data);
content = new CommentsListView({
collection: comments
@@ -133,7 +133,6 @@
MixItemView.prototype.mixFavourite = function() {
var app;
console.log("MixItemView: favouriteMix");
app = require('app');
app.vent.trigger("mix:favourite", this.model);
@@ -142,7 +141,6 @@
MixItemView.prototype.mixLike = function() {
var app;
console.log("MixItemView: likeMix");
app = require('app');
app.vent.trigger("mix:like", this.model);
@@ -151,7 +149,6 @@
MixItemView.prototype.mixShare = function(e) {
var app, mode;
console.log("MixItemView: shareMix");
mode = $(e.currentTarget).data("mode");
console.log("MixItemView: " + mode);

View File

@@ -1,18 +1,18 @@
// Generated by CoffeeScript 1.6.2
// Generated by CoffeeScript 1.3.3
(function() {
var __bind = function(fn, me){ return function(){ return fn.apply(me, arguments); }; },
__hasProp = {}.hasOwnProperty,
__extends = function(child, parent) { for (var key in parent) { if (__hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; };
define(['jquery', 'marionette', 'models/user/userCollection', 'views/user/userItemView', 'text!/tpl/UserListView', 'libs/bootstrap/bootpag'], function($, Marionette, UserCollection, UserItemView, Template) {
var UserListView, _ref;
var UserListView;
UserListView = (function(_super) {
__extends(UserListView, _super);
function UserListView() {
this.initialize = __bind(this.initialize, this); _ref = UserListView.__super__.constructor.apply(this, arguments);
return _ref;
this.initialize = __bind(this.initialize, this);
return UserListView.__super__.constructor.apply(this, arguments);
}
UserListView.prototype.template = _.template(Template);
@@ -23,7 +23,6 @@
UserListView.prototype.initialize = function() {
var _this = this;
console.log("UserListView: initialize");
this.collection = new UserCollection();
this.collection.fetch({