Skip to content

Commit

Permalink
Merge pull request #85 from nus-mtp/admin-improvements
Browse files Browse the repository at this point in the history
Admin - Small Improvements
yj-soh committed Apr 20, 2016
2 parents ba3f453 + 160fd3d commit e19390a
Showing 7 changed files with 25 additions and 32 deletions.
2 changes: 1 addition & 1 deletion app_server/package.json
Original file line number Diff line number Diff line change
@@ -8,7 +8,7 @@
},
"scripts": {
"start": "node ./app/Router.js",
"test": "grunt test && ./node_modules/lab/bin/lab -c -r console -o stdout -r html -o report/coverage.html -r lcov -o report/coverage.info",
"test": "./node_modules/lab/bin/lab -c -r console -o stdout -r html -o report/coverage.html -r lcov -o report/coverage.info",
"linter": "./node_modules/.bin/eslint app/ test/ public/",
"doc": "jsdoc -r -c config/jsdoc_conf.json -R README.md -d doc"
},
1 change: 1 addition & 0 deletions app_server/public/src/css/partials/_nav.scss
Original file line number Diff line number Diff line change
@@ -15,6 +15,7 @@ $nav-secondary-bg-color: color("teal", "lighten-4");
max-height: 4.5rem - 0.5rem;
margin: (0.5rem / 2) auto;
filter: hue-rotate(-188deg) saturate(82%) brightness(122%);
cursor: pointer;
}

> ul {
13 changes: 3 additions & 10 deletions app_server/public/src/js/modules/app.js
Original file line number Diff line number Diff line change
@@ -14,7 +14,7 @@ const wrapView = function (wrapper, vElement) {
};
const navPage = function (page) {
let wrappedNav = wrapView((e) => m('div#nav', [
m('img', {src: '/admin/img/logo.png'}),
m('img', {src: '/admin/img/logo.png', onclick: App.goToHome}),
e
]), Nav);
let wrappedPage = wrapView((e) => m('div#content.row', e), page);
@@ -34,21 +34,14 @@ App.routes = {
'/login': wrapView(templatePage, require('./pages/login'))
},
app: {
'/metrics': {controller: () => m.route('/metrics/overview')},
'/metrics/overview': blank,
'/metrics/realtime': blank,
'/metrics/demographics': blank,

'/streams': {controller: () => m.route('/streams/live')},
'/streams/live': navPage(require('./pages/streams')),
'/streams/all': navPage(require('./pages/streams')),
'/streams/search': blank,
'/streams/view/:id': navPage(require('./pages/stream')),
'/streams/stop/:id': blank,
'/streams/stop/:id': require('./pages/streamstop'),

'/users': {controller: () => m.route('/users/all')},
'/users/all': navPage(require('./pages/users')),
'/users/search': blank,
'/users/view/:id': navPage(require('./pages/user')),

'/admins': {controller: () => m.route('/admins/all')},
@@ -57,7 +50,7 @@ App.routes = {
'/admins/view/:username': navPage(require('./pages/admin')),
'/admins/delete/:username': navPage(require('./pages/admin')),

'/settings': blank,
'/settings': {controller: () => m.route('/settings/logs')},
'/settings/logs': navPage(require('./pages/logs')),
'/settings/responses': navPage(require('./pages/logs')),

20 changes: 4 additions & 16 deletions app_server/public/src/js/modules/components/nav.js
Original file line number Diff line number Diff line change
@@ -12,32 +12,20 @@ Nav.updateVisibleItems = function () {

let contains = (str, sub) => str.indexOf(sub) > -1;

if (contains(scopes, 'metrics')) {
nav.push({
name: 'Metrics', href: '/metrics', icon: 'dashboard',
sub: [
{name: 'Overview', href: '/metrics/overview'},
{name: 'Real-Time', href: '/metrics/realtime'},
{name: 'Demographics', href: '/metrics/demographics'}
]
});
}
if (contains(scopes, 'streams')) {
nav.push({
name: 'Streams', href: '/streams', icon: 'videocam',
sub: [
{name: 'Live Streams', href: '/streams/live'},
{name: 'All Streams', href: '/streams/all'},
{name: 'Search', href: '/streams/search'}
{name: 'All Streams', href: '/streams/all'}
]
});
}
if (contains(scopes, 'users')) {
nav.push({
name: 'Users', href: '/users', icon: 'people',
sub: [
{name: 'All Users', href: '/users/all'},
{name: 'Search', href: '/users/search'}
{name: 'All Users', href: '/users/all'}
]
});
}
@@ -52,9 +40,9 @@ Nav.updateVisibleItems = function () {
}
if (contains(scopes, 'settings')) {
nav.push({
name: 'Settings', href: '/settings', icon: 'settings',
name: 'Logs', href: '/settings', icon: 'settings',
sub: [
{name: 'Logs', href: '/settings/logs'},
{name: 'General Logs', href: '/settings/logs'},
{name: 'Response Logs', href: '/settings/responses'}
]
});
3 changes: 1 addition & 2 deletions app_server/public/src/js/modules/pages/stream.js
Original file line number Diff line number Diff line change
@@ -110,8 +110,7 @@ Stream.view = function () {
m('div.col s6', 'Stickers: ' + stream.stickers())
]),
m('div.row', [
m('div.col s3', 'user-image-here'),
m('div.row col s9', [
m('div.row col s12', [
m('div.col s12', stream.user().alias()),
m('div.col s12', 'Start: ' + datetime.toShortDateTime(stream.startDateTime())),
stream.endDateTime() ?
8 changes: 5 additions & 3 deletions app_server/public/src/js/modules/pages/streams.js
Original file line number Diff line number Diff line change
@@ -23,6 +23,7 @@ Streams.init = function () {
const names = {
title: 'Title',
desc: 'Description',
live: 'Live',
stats: 'Statistics',
date: 'Start Date',
user: 'User',
@@ -35,22 +36,23 @@ const formatStats = (viewers, stickers) => [
m('span', stickers + 'S')
];

const getActions = (id) =>
const getActions = (id, live) =>
m('select', {onchange: m.withAttr('value', m.route)}, [
m('option', {disabled: true, selected: true}, 'Choose...'),
m('option', {value: '/streams/view/' + id}, 'View / Edit'),
m('option', {value: '/streams/stop/' + id}, 'Stop')
live ? m('option', {value: '/streams/stop/' + id}, 'Stop') : null
]);

const parse = (streams) => streams.map(
function (stream) {
return {
title: stream.title(),
desc: stream.description(),
live: stream.live() ? 'Yes' : 'No',
stats: formatStats(stream.viewers(), stream.stickers()),
date: datetime.toShortDateTime(stream.startDateTime()),
user: stream.user().alias(),
actions: getActions(stream.id())
actions: getActions(stream.id(), stream.live())
};
}
);
10 changes: 10 additions & 0 deletions app_server/public/src/js/modules/pages/streamstop.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
const m = require('mithril');
const StreamModel = require('../models/stream');

const Stream = module.exports = {};

Stream.controller = function () {
let id = m.route.param('id') || -1;
StreamModel.get(id).then(StreamModel.stop);
m.route('/streams');
};

0 comments on commit e19390a

Please sign in to comment.