burnchart/public/js/app.js

173 lines
9.5 KiB
JavaScript
Raw Normal View History

2014-08-29 02:55:45 +00:00
// Concat modules and export them as an app.
(function(root) {
// All our modules will use global require.
(function() {
// app.coffee
root.require.register('burnchart/src/app.js', function(exports, require, module) {
2014-08-31 19:51:57 +00:00
var App, header;
2014-08-30 20:13:11 +00:00
header = require('./components/header');
2014-08-29 02:55:45 +00:00
2014-08-29 04:25:38 +00:00
document.title = 'BurnChart: GitHub Burndown Chart as a Service';
2014-08-29 03:52:45 +00:00
App = Ractive.extend({
template: require('./templates/layout'),
2014-08-30 20:13:11 +00:00
'components': {
'Header': header
2014-08-30 17:17:46 +00:00
}
2014-08-29 03:52:45 +00:00
});
module.exports = new App();
});
2014-08-30 20:13:11 +00:00
// header.coffee
root.require.register('burnchart/src/components/header.js', function(exports, require, module) {
2014-08-31 19:51:57 +00:00
var firebase, user;
2014-08-30 20:13:11 +00:00
firebase = require('../modules/firebase');
2014-08-31 19:51:57 +00:00
user = require('../modules/user');
2014-08-30 20:13:11 +00:00
module.exports = Ractive.extend({
'template': require('../templates/header'),
2014-08-31 19:51:57 +00:00
init: function() {
console.log(this.get('user.uid'));
return this.on('login', function() {
return firebase.login(function(err) {
if (err) {
throw err;
}
});
});
},
'data': {
user: user
},
'adapt': [Ractive.adaptors.Ractive]
2014-08-30 20:13:11 +00:00
});
});
2014-08-30 17:17:46 +00:00
// config.json
root.require.register('burnchart/src/models/config.js', function(exports, require, module) {
module.exports = {
"firebase": "burnchart",
"provider": "github"
};
});
2014-08-30 16:00:11 +00:00
// firebase.coffee
2014-08-30 17:17:46 +00:00
root.require.register('burnchart/src/modules/firebase.js', function(exports, require, module) {
2014-08-30 16:00:11 +00:00
2014-08-30 17:17:46 +00:00
var FB, authCb, config, user;
2014-08-30 16:00:11 +00:00
2014-08-30 17:17:46 +00:00
config = require('../models/config');
2014-08-30 16:00:11 +00:00
2014-08-30 17:17:46 +00:00
user = require('./user');
2014-08-30 16:00:11 +00:00
authCb = function() {};
2014-08-30 17:17:46 +00:00
FB = (function() {
function FB() {
console.log('Init Firebase');
this.client = new Firebase("https://" + config.firebase + ".firebaseio.com");
this.auth = new FirebaseSimpleLogin(this.client, function(err, obj) {
2014-08-30 16:00:11 +00:00
if (err || !obj) {
return authCb(err);
}
2014-08-30 17:17:46 +00:00
user.set(obj);
return console.log("" + obj.displayName + " is logged in");
});
}
FB.prototype.login = function(cb) {
2014-08-30 16:00:11 +00:00
if (!this.client) {
return cb('Client is not setup');
}
authCb = cb;
2014-08-30 17:17:46 +00:00
console.log('Connecting GitHub account');
return this.auth.login(config.provider, {
2014-08-30 16:00:11 +00:00
'rememberMe': true,
'scope': 'public_repo'
});
2014-08-30 17:17:46 +00:00
};
FB.prototype.logout = function() {
2014-08-30 16:00:11 +00:00
var _ref;
if ((_ref = this.auth) != null) {
2014-08-30 17:17:46 +00:00
_ref.logout;
2014-08-30 16:00:11 +00:00
}
2014-08-30 17:17:46 +00:00
user.reset();
return console.log('You have logged out');
};
return FB;
})();
module.exports = new FB();
});
// user.coffee
root.require.register('burnchart/src/modules/user.js', function(exports, require, module) {
var user;
module.exports = user = new Ractive();
2014-08-31 19:51:57 +00:00
user.observe('uid', function() {
2014-08-30 17:17:46 +00:00
return console.log('User', arguments);
2014-08-30 16:00:11 +00:00
});
});
2014-08-30 20:13:11 +00:00
// header.mustache
root.require.register('burnchart/src/templates/header.js', function(exports, require, module) {
2014-08-31 19:51:57 +00:00
module.exports = ["<div id=\"head\">"," <div class=\"right\">",""," </div>",""," <h1><span class=\"icon fire-station\"></span></h1>",""," <div class=\"q\">"," <span class=\"icon search\"></span>"," <span class=\"icon down-open\"></span>"," <input type=\"text\" placeholder=\"Jump to...\">"," </div>",""," <ul>"," <li><a href=\"#\" class=\"add\"><span class=\"icon plus-circled\"></span> Add a Project</a></li>"," <li><a href=\"#\" class=\"faq\">FAQ</a></li>"," </ul>","</div>"].join("\n");
2014-08-30 20:13:11 +00:00
});
2014-08-29 03:52:45 +00:00
// layout.mustache
root.require.register('burnchart/src/templates/layout.js', function(exports, require, module) {
2014-08-30 20:13:11 +00:00
module.exports = ["<Header/>","","<div id=\"title\">"," <div class=\"wrap\">"," <h2>Disposable Project</h2>"," <span class=\"milestone\">Milestone 1.0</span>"," <p class=\"description\">The one where we deliver all that we promised.</p>"," </div>","</div>","","<div id=\"content\" class=\"wrap\">"," <div id=\"hero\">"," <div class=\"content\">"," <span class=\"icon address\"></span>"," <h2>See your project progress</h2>"," <p>Not sure where to start? Just add a demo repo to see a chart. There are many variations of passages of Lorem Ipsum available, but the majority have suffered alteration in some form, by injected humour, or randomised words which don't look even slightly believable.</p>"," <div class=\"cta\">"," <a href=\"#\" class=\"primary\"><span class=\"icon plus-circled\"></span> Add your project</a>"," <a href=\"#\" class=\"secondary\">Read the Guide</a>"," </div>"," </div>"," </div>",""," <div id=\"repos\">"," <div class=\"header\">"," <a href=\"#\" class=\"sort\"><span class=\"icon sort-alphabet\"></span> Sorted by priority</a>"," <h2>Projects</h2>"," </div>",""," <table>"," <tr>"," <td><a class=\"repo\" href=\"#\">radekstepan/disposable</a></td>"," <td><span class=\"milestone\">Milestone 1.0 <span class=\"icon down-open\"></span></a></td>"," <td>"," <div class=\"progress\">"," <span class=\"percent\">40%</span>"," <span class=\"due\">due on Friday</span>"," <div class=\"outer bar\">"," <div class=\"inner bar red\" style=\"width:40%\"></div>"," </div>"," </div>"," </td>"," </tr>"," <tr class=\"done\">"," <td><a class=\"repo\" href=\"#\">radekstepan/burnchart</a></td>"," <td><span class=\"milestone\">Beta Milestone <span class=\"icon down-open\"></span></a></td>"," <td>"," <div class=\"progress\">"," <span class=\"percent\">100%</span>"," <span class=\"due\">due tomorrow</span>"," <div class=\"outer bar\">"," <div class=\"inner bar green\" style=\"width:100%\"></div>"," </div>"," </div>"," </td>"," </tr>"," <tr>"," <td><a class=\"repo\" href=\"#\">intermine/intermine</a></td>"," <td><span class=\"milestone\">Emma Release 96 <span class=\"icon down-open\"></span></a></td>"," <td>"," <div class=\"progress\">"," <span class=\"percent\">27%</span>"," <span class=\"due\">due in 2 weeks</span>"," <div class=\"outer bar\">"," <div class=\"inner bar red\" style=\"width:27%\"></div>"," </div>"," </div>"," </td>"," </tr>"," <tr>"," <td><a class=\"repo\" href=\"#\">microsoft/windows</a></td>"," <td><span class=\"milestone\">RC 9 <span class=\"icon down-open\"></span></a></td>"," <td>"," <div class=\"progress\">"," <span class=\"percent\">90%</span>"," <span class=\"due red\">overdue by a month</span>"," <div class=\"outer bar\">"," <div class=\"inner bar red\" style=\"width:90%\"></div>"," </div>"," </div>"," </td>"," </tr>"," </table>",""," <div class=\"footer\">"," <a href=\"#\"><span class=\"icon cog\"></span> Edit</a>"," </div>"," </div>",""," <div id=\"add\">","
2014-08-29 02:55:45 +00:00
});
})();
// Return the main app.
var main = root.require("burnchart/src/app.js");
// AMD/RequireJS.
if (typeof define !== 'undefined' && define.amd) {
define("burnchart", [ /* load deps ahead of time */ ], function () {
return main;
});
}
// CommonJS.
else if (typeof module !== 'undefined' && module.exports) {
module.exports = main;
}
// Globally exported.
else {
root["burnchart"] = main;
}
// Alias our app.
root.require.alias("burnchart/src/app.js", "burnchart/index.js");
})(this);