Files
old-spike/client/config/design/templates.js

60 lines
1.3 KiB
JavaScript
Raw Normal View History

2016-02-22 20:02:45 -06:00
import rt from 'react-templates';
2016-02-23 00:52:24 -06:00
import React from 'react';
import _ from 'lodash';
2016-02-22 20:02:45 -06:00
import Energy from './../../dashboard/energy/energy';
import Power from './../../dashboard/power/power';
const TEMPLATE_ROUTES = Object.freeze({
2016-02-23 00:52:24 -06:00
energy: 'dashboard/energy/energy.rt',
layout: 'dashboard/layout/layout.rt',
power: 'dashboard/power/power.rt'
2016-02-22 20:02:45 -06:00
});
2016-02-23 00:52:24 -06:00
const COMPONENTS = {
Power: Power,
Energy: Energy
};
2016-02-22 20:02:45 -06:00
var TEMPLATES = {};
class Templates {
static sync(){
var all = [];
for (var view in TEMPLATE_ROUTES){
var done = new Promise((fnResolve, fnReject)=>{
2016-02-23 00:52:24 -06:00
Templates.evalTemplate(view, fnResolve);
2016-02-22 20:02:45 -06:00
});
all.push(done);
}
return Promise.all(all);
}
static forComponent(view){
return TEMPLATES[view];
}
2016-02-23 00:52:24 -06:00
static evalTemplate(view, fnResolve){
jQuery.ajax({
url: TEMPLATE_ROUTES[view]
}).done((template)=>{
var code = rt.convertTemplateToReact(template, {modules: 'none', name: view}),
context = {};
code = code.replace('var '+view+' = ', 'context.'+view+' = ');
new Function('with(this){ ' + code + ' } ').call({
Energy: Energy,
Power: Power,
context: context,
'_': _,
'React': React
});
TEMPLATES[view] = context[view];
fnResolve();
});
}
2016-02-22 20:02:45 -06:00
}
2016-02-23 00:52:24 -06:00
export default Templates;