mirror of
https://github.com/fergalmoran/dss.git
synced 2026-01-04 16:04:35 +00:00
137 lines
4.2 KiB
JavaScript
137 lines
4.2 KiB
JavaScript
/** @license
|
|
|
|
----------------------------------------------
|
|
|
|
Copyright (c) 2012, Fergal Moran. All rights reserved.
|
|
Code provided under the BSD License:
|
|
|
|
*/
|
|
var ReleaseListItemView = Backbone.View.extend({
|
|
tagName:"tr",
|
|
initialize:function () {
|
|
$(this.el).addClass("rowlink");
|
|
$(this.el).data("id", this.model.get("id"));
|
|
this.render();
|
|
},
|
|
render:function () {
|
|
$(this.el).html(this.template({"item":this.model.toJSON()}));
|
|
return this;
|
|
}
|
|
});
|
|
var ReleaseListView = Backbone.View.extend({
|
|
events:{
|
|
"click tr":"showDetails"
|
|
},
|
|
initialize:function () {
|
|
this.render();
|
|
},
|
|
render:function () {
|
|
$(this.el).html(this.template());
|
|
var el = this.el;
|
|
this.collection.each(function (item) {
|
|
$('#release-list-container', el).append(new ReleaseListItemView({model:item}).render().el);
|
|
});
|
|
$("#release-table", this.el).tablesorter({
|
|
sortList:[
|
|
[1, 1],
|
|
[0, 0]
|
|
],
|
|
headers:{
|
|
1:{
|
|
sorter:'humanDates'
|
|
}
|
|
}
|
|
});
|
|
// <editor-fold desc="Custom sorter">
|
|
$.tablesorter.addParser({
|
|
id:'humanDates',
|
|
is:function (s) {
|
|
return false;
|
|
},
|
|
format:function (s) {
|
|
var date = s.match(/^(\w{3})[ ](\d{1,2}),[ ](\d{4})$/);
|
|
var m = monthNames[date[1]];
|
|
var d = String(date[2]);
|
|
if (d.length == 1) {d = "0" + d;}
|
|
var y = date[3];
|
|
return '' + y + m + d;
|
|
},
|
|
type:'Numeric'
|
|
});
|
|
var monthNames = {};
|
|
monthNames["Jan"] = "01";
|
|
monthNames["Feb"] = "02";
|
|
monthNames["Mar"] = "03";
|
|
monthNames["Apr"] = "04";
|
|
monthNames["May"] = "05";
|
|
monthNames["Jun"] = "06";
|
|
monthNames["Jul"] = "07";
|
|
monthNames["Aug"] = "08";
|
|
monthNames["Sep"] = "09";
|
|
monthNames["Oct"] = "10";
|
|
monthNames["Nov"] = "11";
|
|
monthNames["Dec"] = "12";
|
|
// </editor-fold>
|
|
|
|
$('tr.rowlink', this.el).rowlink();
|
|
$('#tablesorter-fix', this.el).hide();
|
|
return this;
|
|
},
|
|
showDetails:function (row) {
|
|
Backbone.history.navigate('/release/' + $(row.currentTarget).data("id"), {trigger:true});
|
|
}
|
|
});
|
|
var ReleaseItemView = Backbone.View.extend({
|
|
tagName:"li",
|
|
initialize:function () {
|
|
this.render();
|
|
},
|
|
render:function () {
|
|
$(this.el).html(this.template({"item":this.model.toJSON()}));
|
|
return this;
|
|
}
|
|
});
|
|
var ReleaseView = Backbone.View.extend({
|
|
initialize:function () {
|
|
this.render();
|
|
},
|
|
render:function () {
|
|
$(this.el).html(this.template());
|
|
var item = new ReleaseItemView({model:this.model}).render();
|
|
$('.release-listing', this.el).append(item.el);
|
|
$('#release-description', this.el).html(this.model.get("description"));
|
|
return this;
|
|
}
|
|
});
|
|
var ReleaseCreateView = DSSEditableView.extend({
|
|
events:{
|
|
"click #save-changes":"saveChanges",
|
|
"change input":"changed",
|
|
"change textarea":"changed",
|
|
"change select":"changeSelect"
|
|
},
|
|
initialize:function () {
|
|
this.render();
|
|
},
|
|
render:function () {
|
|
$(this.el).html(this.template({"item":this.model.toJSON()}));
|
|
this._bakeForm(this.el, 'label');
|
|
},
|
|
saveChanges:function () {
|
|
var model = this.model;
|
|
var el = this.el;
|
|
var parent = this;
|
|
|
|
this.model.set('release_description', $('#release-description', this.el).html());
|
|
this.model.set('release_date', $('#release_date', this.el).val());
|
|
this.model.set('embed_code', $('#embed_code', this.el).val());
|
|
|
|
this._saveChanges({
|
|
success:function () {
|
|
com.podnoms.utils.showAlert("Success", "Release successfully added", "alert-info", true);
|
|
Backbone.history.navigate('/release/' + model.get('id'), {trigger:true});
|
|
}
|
|
});
|
|
return false;
|
|
}
|
|
}); |