Skip to content

Commit

Permalink
basic express server
Browse files Browse the repository at this point in the history
  • Loading branch information
karlpokus committed Jan 28, 2017
1 parent 73f996d commit ce728b4
Show file tree
Hide file tree
Showing 6 changed files with 113 additions and 70 deletions.
53 changes: 53 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
# Logs
logs
*.log
npm-debug.log*

# Runtime data
pids
*.pid
*.seed
*.pid.lock

# Directory for instrumented libs generated by jscoverage/JSCover
lib-cov

# Coverage directory used by tools like istanbul
coverage

# nyc test coverage
.nyc_output

# Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files)
.grunt

# Bower dependency directory (https://bower.io/)
bower_components

# node-waf configuration
.lock-wscript

# Compiled binary addons (http://nodejs.org/api/addons.html)
build/Release

# Dependency directories
node_modules
jspm_packages

# Optional npm cache directory
.npm

# Optional eslint cache
.eslintcache

# Optional REPL history
.node_repl_history

# Output of 'npm pack'
*.tgz

# Yarn Integrity file
.yarn-integrity

# dotenv environment variables file
.env
28 changes: 28 additions & 0 deletions package.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
{
"name": "tragenda",
"version": "1.1.0",
"description": "Simple agenda for Trello teams",
"main": "server.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"repository": {
"type": "git",
"url": "git+https://github.com/karlpokus/tragenda.git"
},
"keywords": [
"trello",
"agenda",
"teams",
"cards"
],
"author": "Karl Pokus <karl.pokus@gmail.com> (https://github.com/karlpokus)",
"license": "MIT",
"bugs": {
"url": "https://github.com/karlpokus/tragenda/issues"
},
"homepage": "https://github.com/karlpokus/tragenda#readme",
"dependencies": {
"express": "^4.14.0"
}
}
4 changes: 2 additions & 2 deletions index.html → public/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
<meta charset="UTF-8">
<title>Tragenda</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="stylesheet" href="css/style.css">
<link rel="stylesheet" href="style.css">
</head>
<body>
<!-- HEADER -->
Expand Down Expand Up @@ -44,6 +44,6 @@ <h1>Tragenda
<script src='http://cdnjs.cloudflare.com/ajax/libs/jqueryui/1.11.2/jquery-ui.min.js'></script>
<script src='https://api.trello.com/1/client.js?key=02dd7747bdc4f252e2a661dc0f5b036e'></script>
<script src='https://cdnjs.cloudflare.com/ajax/libs/jqueryui-touch-punch/0.2.3/jquery.ui.touch-punch.min.js'></script>
<script src="js/index.js"></script>
<script src="index.js"></script>
</body>
</html>
85 changes: 17 additions & 68 deletions js/index.js → public/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -3,47 +3,37 @@ var user = {
console.error('Authorization failed');
},
login: function() {
// authorize
Trello.authorize({
Trello.authorize({
interactive:true,
type: 'redirect', // 'popup'
type: 'redirect', // or 'popup'
success:user.display,
error: user.onAuthorizeError,
name:"Tragenda",
expiration:"1day"
});
},
logout: function() {
// empty results
$('.cards').empty();
// progressbar
progressBar.reboot().render();
// remove profile-imng
// update UI
$('.profile-img').fadeOut(400, function(){
// hide ui-div
$('.ui-div').slideToggle(400, function(){
// update login
$('.login-out-btn').text('Login');
});
});
// logout
});
Trello.deauthorize();
},
display: function() {
//
Trello.members.get("me", function(member){
// el
var $header = $('.header'),
$img = $('<img/>')
.attr('src', 'https://trello-avatars.s3.amazonaws.com/' + member.avatarHash + '/170.png')
.addClass('profile-img');
// dom
// update UI
$img.hide().appendTo($header).fadeIn(400, function(){
// show search
$('.ui-div').slideToggle(400, function(){
// update login
$('.login-out-btn').text('Logout');
});
});
});
});
}
Expand All @@ -56,7 +46,7 @@ var cards = {
var params = {
query: queryString,
//idOrganizations:
//modelTypes: 'all',
//modelTypes: 'all',
cards_limit: 100,
boards_limit: 100,
card_board: true,
Expand All @@ -66,7 +56,6 @@ var cards = {
board_fields: 'name',
member_fields: 'avatarHash'
};
// get cards and include board name
Trello.get('search', params, function(cardsAndBoards){
cards.render(cardsAndBoards.cards, tag);
});
Expand All @@ -78,24 +67,16 @@ var cards = {
return Math.round((f.getTime() - s.getTime())/(oneDay));
},
render: function(cardsAndBoards, tag) {
// vars
var $cards = $(this.el);
// check result and set label
if (cardsAndBoards.length === 0) {
// set label
loader.stop('No cards found by #' + tag);
// progressbar
progressBar.reboot().render();
// ignore the rest
return;
}
// results > 0 set label
// results > 0
loader.stop(cardsAndBoards.length + ' cards found by #' + tag);
// empty results
$cards.empty();
// loop
cardsAndBoards.forEach(function(card){
// el
$li = $('<li/>');
$a = $('<a/>')
.attr({href: card.url, target: "_blank"})
Expand All @@ -108,28 +89,25 @@ var cards = {
$span.html(" &middot; " + card.board.name + " &middot; Past due!");
} else {
$span.html(" &middot; " + card.board.name + " &middot; Due in " + diff + " days");
}
}
} else {
$span.html(" &middot; " + card.board.name);
}
// members
if (card.members.length > 0) {
$p = $('<p/>');
card.members.forEach(function(member){
// el
var $img = $('<img/>').attr('src', 'https://trello-avatars.s3.amazonaws.com/' + member.avatarHash + '/170.png');
// dom
$img.appendTo($p);
});
$a.append($span, $p);
} else {
$a.append($span, $p);
} else {
$a.append($span);
}
// mix and append
$a.appendTo($li);
$li.appendTo($cards);
}, this);
// progressbar
progressBar.calc().render();
// set all jQuery UI stuff
$(".cards").sortable({
Expand All @@ -151,23 +129,16 @@ var loader = {
start: function() {
var that = this,
i = 0;
// set timer
this.timer = setInterval(function(){
// reset if past array
if (i > 2) {
// reset
i = 0;
i = 0;
}
// dom
$(that.el).html(that.loaderStrings[i]);
// inc
i++;
}, 500);
}, 500);
},
stop: function(str) {
// kill timer
clearInterval(this.timer);
// set label
$(this.el).text(str);
}
};
Expand All @@ -178,78 +149,56 @@ var progressBar = {
stricken: 0,
progress: 0,
calc: function() {
// count rows
this.rows = $(this.el).length;
// check
if (this.rows > 0) {
// reset
this.stricken = 0;
// count isStricken
$(this.el).each(function(i){
if ($(this).hasClass('stricken')) {
progressBar.stricken++;
}
});
// calc progress
this.progress = Math.ceil(this.stricken / this.rows *100);
}
// for chaining
return this;
},
render: function() {
$('.progress-bar-inner').css('width', progressBar.progress + "%");
},
reboot: function() {
// reset
this.progress = 0;
// for chaining
return this;
}
};

// EVENTS

// toggle stricken on cards
// click card
$('.cards').on('click', 'li a', function(e){
// check class
var isStricken = $(this).parent().hasClass('stricken');
// toggle class
if (isStricken) {
// stop link
e.preventDefault();
}
// toggle class eitherway
$(this).parent().toggleClass('stricken');
// progressbar
progressBar.calc().render();
});

// Search
// do search
$('#search-form').on('submit', function(e){
// set loader
loader.start();
// clear
$('.cards').empty();
// get user input
var tag = $('.search-box').val().toLowerCase().trim();
// remove focus
$('.search-box').blur();
// search
cards.search(tag);
// fix
return false;
});

// login/logout
$('.login-out-btn').on('click', function(){
// set flag
var isLoggedIn = Trello.authorized();
// check
if (isLoggedIn) {
if (Trello.authorized()) {
user.logout();
} else {
user.login();
}
}
});

// prop interactive -> If false, don’t redirect or popup, only use the stored token
Expand Down
File renamed without changes.
13 changes: 13 additions & 0 deletions server.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
var express = require('express'),
port = process.env.PORT || 3000,
app = express(),
sendApp = function(req, res){
res.status(200).sendFile('index.html');
},
listening = function(){
console.log('Tragenda running..');
};

app.use(express.static('public'));
app.get('/', sendApp);
app.listen(port, listening);

0 comments on commit ce728b4

Please sign in to comment.