using pre-compiled handlebar templates

re-did static content from nancy
This commit is contained in:
kay.one 2013-03-29 16:00:38 -07:00
commit 375f887539
21 changed files with 367 additions and 124 deletions

View file

@ -61,7 +61,7 @@
<option passfail="false" />
<option white="false" />
<option maxerr="50" />
<option predef="NzbDrone, define, Backbone, _, window,Handlebars, console,require,$" />
<option predef="NzbDrone, define, Backbone, _, window,Handlebars, console,require,$,Marionette" />
</component>
</project>

View file

@ -9,32 +9,20 @@
<link rel="apple-touch-icon" sizes="144x144" href="Static/Content/Images/apple-touch-icon-144.png" />
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<link href='//fonts.googleapis.com/css?family=Open+Sans:300italic,400italic,600italic,400,600,300' rel='stylesheet' type='text/css'>
<link href="/static/content/bootstrap.css" rel='stylesheet' type='text/css' />
<link href="/static/content/bootstrap.slider.css" rel='stylesheet' type='text/css' />
<link href="/static/content/bootstrapSwitch.css" rel='stylesheet' type='text/css' />
<link href="/static/content/base.css" rel='stylesheet' type='text/css' />
<link href="/static/content/theme.css" rel='stylesheet' type='text/css'>
<link href="/static/content/toastr.css" rel='stylesheet' type='text/css'>
<link href="/static/content/fullcalendar.css" rel='stylesheet' type='text/css'>
<link href="/static/content/tablesorter.bootstrap.css" rel='stylesheet' type='text/css' />
<link href="/static/content/tablesorter.pager.css" rel='stylesheet' type='text/css' />
<link href="/static/AddSeries/addseries.css" rel='stylesheet' type='text/css' />
<link href="/static/content/menu.css" rel='stylesheet' type='text/css' />
<link href="/static/content/form.css" rel='stylesheet' type='text/css' />
<link href="/static/content/settings.quality.css" rel='stylesheet' type='text/css' />
<link href="/content/bootstrap.css" rel='stylesheet' type='text/css' />
<link href="/content/bootstrap.slider.css" rel='stylesheet' type='text/css' />
<link href="/content/bootstrapSwitch.css" rel='stylesheet' type='text/css' />
<link href="/content/base.css" rel='stylesheet' type='text/css' />
<link href="/content/theme.css" rel='stylesheet' type='text/css'>
<link href="/content/toastr.css" rel='stylesheet' type='text/css'>
<link href="/content/fullcalendar.css" rel='stylesheet' type='text/css'>
<link href="/content/tablesorter.bootstrap.css" rel='stylesheet' type='text/css' />
<link href="/content/tablesorter.pager.css" rel='stylesheet' type='text/css' />
<link href="/AddSeries/addseries.css" rel='stylesheet' type='text/css' />
<link href="/content/menu.css" rel='stylesheet' type='text/css' />
<link href="/content/form.css" rel='stylesheet' type='text/css' />
<link href="/content/settings.quality.css" rel='stylesheet' type='text/css' />
</head>
<script type="text/html" id="notification-template">
<div class="alert alert-{{level}}">
<button type="button" class="close x-close icon-remove-sign"></button>
<i class="{{iconClass}}" /><strong>{{title}}</strong>
{{#if isPreFormatted}}
<pre>{{{preFormattedMessage}}}</pre>
{{else}}
{{message}}
{{/if}}
</div>
</script>
<body>
<div id="in-nav">
<div class="container">
@ -100,27 +88,29 @@
</div>
</footer>
</body>
<script src="/static/JsLibraries/jquery.js"></script>
<script src="/static/JsLibraries/bootstrap.js"></script>
<script src="/static/JsLibraries/bootstrap.slider.js"></script>
<script src="/static/JsLibraries/bootstrapSwitch.js"></script>
<script src="/static/JsLibraries/underscore.js"></script>
<script src="/static/JsLibraries/handlebars.js"></script>
<script src="/static/JsLibraries/backbone.js"></script>
<script src="/static/JsLibraries/backbone.modelbinder.js"></script>
<script src="/static/JsLibraries/backbone.mutators.js"></script>
<script src="/static/JsLibraries/backbone.marionette.js"></script>
<script src="/static/JsLibraries/jquery.tablesorter.js"></script>
<script src="/static/JsLibraries/jquery.tablesorter.bootstrap.js"></script>
<script src="/static/JsLibraries/jquery.tablesorter.pager.js"></script>
<script src="/static/JsLibraries/sugar.js"></script>
<script src="/static/JsLibraries/fullcalendar.js"></script>
<script src="/JsLibraries/jquery.js"></script>
<script src="/JsLibraries/bootstrap.js"></script>
<script src="/JsLibraries/bootstrap.slider.js"></script>
<script src="/JsLibraries/bootstrapSwitch.js"></script>
<script src="/JsLibraries/underscore.js"></script>
<script src="/JsLibraries/handlebars.js"></script>
<script src="/JsLibraries/backbone.js"></script>
<script src="/JsLibraries/backbone.modelbinder.js"></script>
<script src="/JsLibraries/backbone.mutators.js"></script>
<script src="/JsLibraries/backbone.marionette.js"></script>
<script src="/JsLibraries/jquery.tablesorter.js"></script>
<script src="/JsLibraries/jquery.tablesorter.bootstrap.js"></script>
<script src="/JsLibraries/jquery.tablesorter.pager.js"></script>
<script src="/JsLibraries/sugar.js"></script>
<script src="/JsLibraries/fullcalendar.js"></script>
<script src="/static/Mixins/backbone.marionette.templates.js"></script>
<script src="/static/Mixins/backbone.ajax.js"></script>
<script src="/static/Mixins/tablesorter.extensions.js"></script>
<script src="/static/Mixins/spoon.js"></script>
<script src="/templates.js"></script>
<script data-main="/static/app" src="/static/JsLibraries/require.js"></script>
<script src="/static/Routing.js"></script>
<script src="/Mixins/backbone.marionette.templates.js"></script>
<script src="/Mixins/backbone.ajax.js"></script>
<script src="/Mixins/tablesorter.extensions.js"></script>
<script src="/Mixins/spoon.js"></script>
<script data-main="/app" src="/JsLibraries/require.js"></script>
<script src="/Routing.js"></script>
</html>

View file

@ -1,37 +1,23 @@
_.extend(Marionette.TemplateCache.prototype, {
"use strict";
loadTemplate:function (templateId) {
Marionette.TemplateCache.get = function (templateId) {
var templateFunction = window.Templates[templateId];
if (!templateFunction) {
console.error('couldn\'t find pre-compiled template ' + templateId);
}
var template;
var templateName = templateId;
console.log("Loading template '" + templateId + "'");
if (templateId.startsWith('#')) {
return $(templateId).html();
return function (data) {
try {
console.log('rendering template ' + templateName);
return templateFunction(data);
}
$.ajax({
url:'/static/' + templateId + '.html',
cache:false,
async:false
}).done(function (data) {
template = data;
}).fail(function (data) {
console.log("couldn't load template " + this.templateId + " Error: " + data.statusText);
template = "<div class='alert alert-error'>Couldn't load template '" + templateId + "'. Status: " + data.statusText + "</div>";
});
return template;
}
});
_.extend(Marionette.TemplateCache.prototype, {
compileTemplate:function (rawTemplate) {
return Handlebars.compile(rawTemplate);
}
});
catch (error) {
console.error('template render failed for ' + templateName + ' ' + error.message);
console.error(data);
}
};
};

View file

@ -1,22 +1,23 @@
require(['app','Controller'], function (app, controller) {
"use strict";
require(['app', 'Controller'], function (app, controller) {
NzbDrone.Router = Backbone.Marionette.AppRouter.extend({
controller: controller,
appRoutes: {
'': 'series',
'series': 'series',
'series/index': 'series',
'series/add': 'addSeries',
appRoutes : {
'' : 'series',
'series' : 'series',
'series/index' : 'series',
'series/add' : 'addSeries',
'series/add/:action(/:query)': 'addSeries',
'series/details/:query': 'seriesDetails',
'upcoming': 'upcoming',
'upcoming/index': 'upcoming',
'calendar': 'calendar',
'settings': 'settings',
'settings/:action(/:query)': 'settings',
'missing': 'missing',
':whatever': 'notFound'
'series/details/:query' : 'seriesDetails',
'upcoming' : 'upcoming',
'upcoming/index' : 'upcoming',
'calendar' : 'calendar',
'settings' : 'settings',
'settings/:action(/:query)' : 'settings',
'missing' : 'missing',
':whatever' : 'notFound'
}
});

View file

@ -1,6 +1,7 @@
define(['app'],function () {
"use strict";
define(['app'],function () {
NzbDrone.Shared.NotFoundView = Backbone.Marionette.ItemView.extend({
template: 'Shared/notfoundtemplate',
template: 'Shared/notfoundtemplate'
});
});

View file

@ -0,0 +1,10 @@
<div class="alert alert-{{level}}">
<button type="button" class="close x-close icon-remove-sign"></button>
<i class="{{iconClass}}" /><strong>{{title}}</strong>
{{#if isPreFormatted}}
<pre>{{{preFormattedMessage}}}</pre>
{{else}}
{{message}}
{{/if}}
</div>

View file

@ -1,7 +1,9 @@
define(['app', 'Shared/NotificationCollection'], function (app, notificationCollection) {
"use strict";
define(['app', 'Shared/NotificationCollection'], function (app, notificationCollection) {
var notificationItemView = Backbone.Marionette.ItemView.extend({
template: '#notification-template',
template: 'Shared/NotificationTemplate',
events: {
'click .x-close': 'kill'