Added support for tags

This commit is contained in:
Dobie Wollert
2013-06-26 03:54:22 -07:00
parent b92068b6b2
commit 4ca472f2cb
9 changed files with 225 additions and 6 deletions

View File

@ -5,6 +5,6 @@ module.exports = function(piler) {
js: piler.js.renderTags(),
css: piler.css.renderTags()
});
}
},
};
};

50
app/controllers/tags.js Normal file
View File

@ -0,0 +1,50 @@
var mongoose = require('mongoose'),
Tag = mongoose.model('Tag');
module.exports = function(piler) {
return {
index: function(req, res, next) {
host = String(req.headers.host);
host = host.split(':')[0];
if (host != 'n.atlb.co') {
return next();
}
if (!req.user) {
req.session.redirectUrl = req.url
}
var path = req.path.slice(1);
Tag.findById(path)
.populate('client', 'name identifier address')
.exec(function(err, result) {
var payload = {
user: req.user,
id: path,
tag: result || undefined,
};
res.render('tag.jade', {
css: piler.css.renderTags(),
payload: payload
});
})
},
post: function(req, res) {
var tag_id = req.body.tag_id;
delete req.body.tag_id;
Tag.findByIdAndUpdate(tag_id, req.body, { upsert: true }, function(err, result) {
if (err) {
res.json(500, err);
} else {
res.json(result);
}
});
}
}
}

11
app/model/tag.js Normal file
View File

@ -0,0 +1,11 @@
var mongoose = require('mongoose'),
Schema = mongoose.Schema,
ObjectId = Schema.ObjectId;
var tagSchema = new Schema({
_id: String,
client: { type: ObjectId, ref: 'Client' },
data: {}
}, { versionKey: false })
var Tag = module.exports = mongoose.model('Tag', tagSchema);

105
app/views/tag.jade Normal file
View File

@ -0,0 +1,105 @@
doctype 5
html(lang="en", ng-app="tags", ng-controller="tags.PageCtrl")
head
title Atlantic Biomedical
!{css}
script(type='text/javascript')
window.payload = !{JSON.stringify(payload)};
body
script(type='text/javascript', src='//ajax.googleapis.com/ajax/libs/angularjs/1.1.4/angular.js')
script(type='text/javascript', src='//ajax.googleapis.com/ajax/libs/angularjs/1.1.4/angular-resource.js')
script(type='text/javascript', src='//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js')
script(type='text/javascript', src='/js/lib/select2.js')
script(type='text/javascript', src='/js/lib/bootstrap-datepicker.js')
script(type='text/javascript', src='/js/lib/moment.js')
script(type='text/javascript', src='/js/directives.js')
script(type='text/javascript', src='/tags/app.js')
error-panel
.navbar
.navbar-inner
a.brand(href='/', target='_self') Atlantic Biomedical
progress-panel
ul.nav.pull-right(ng-show='user')
li(ng-show='user.name')
a(href='#')
i.icon-user
| {{user.name.first}} {{user.name.last}}
li.photo(ng-show='user.picture', ns-show='user.picture')
img(ng-src='{{user.picture}}?sz=50')
.navbar.navbar-secondary
.navbar-inner
ul.nav
li
a(href='http://www.atlanticbiomedical.com')
i.icon-wrench
| Contact Us
.container-fluid
h1(ng-show='tag') Device Tag
h1(ng-hide='tag') Create Tag
div(ng-hide='user')
dl.dl-horizontal(ng-show='tag')
dt Client
dd  {{payload.tag.client.name}} ({{payload.tag.client.identifier}})
dt Device
dd  {{tag.device}}
dt Make
dd  {{tag.make}}
dt Model
dd  {{tag.model}}
dt Serial Number
dd  {{tag.serialNumber}}
dt Purchase Date
dd  {{tag.purchaseDate}}
dt Test
dd  {{tag.test}}
dt Room #
dd  {{tag.roomNumber}}
a.btn.btn-primary(href='/auth', ng-show='tag')
| Edit Tag
a.btn.btn-primary(href='/auth', ng-hide='tag')
| Create Tag
div(ng-show='user')
form.form-horizontal
.control-group
label.control-label Client
.controls
select(ng-model='client', required='required', ng-options='client._id as client.name + " (" + client.identifier + ")" for client in clients')
</select>
.control-group
label.control-label Device
.controls
input.text(ng-model='tag.device')
.control-group
label.control-label Make
.controls
input.text(ng-model='tag.make')
.control-group
label.control-label Model
.controls
input.text(ng-model='tag.model')
.control-group
label.control-label Serial Number
.controls
input.text(ng-model='tag.serialNumber')
.control-group
label.control-label Purchase Date
.controls
input.text(type='date', ng-model='tag.purchaseDate')
.control-group
label.control-label Test
.controls
input.text(ng-model='tag.test')
.control-group
label.control-label Room #
.controls
input.text(ng-model='tag.roomNumber')
.control-group
button.btn.btn-primary(ng-click='save()') Save