templating.js 1001 B

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. function fillTemplate(name, data) {
  2. var n = $('.prototypes proto[name="'+name+'"]').clone();
  3. if(!n) {
  4. console.log("tried cloning non-existent template: ", name);
  5. return null;
  6. }
  7. for(var k in data) {
  8. n.find('[field="'+k+'"]').html(data[k]);
  9. }
  10. return n;
  11. }
  12. function grabData(parent) {
  13. var data = {};
  14. function asFloat(x) {
  15. var y = parseFloat(x);
  16. return isFinite(y) ? y : 0;
  17. }
  18. var formatters = {
  19. string: function(x) { return x },
  20. pct: function(x) { return asFloat(x) * .01 },
  21. amort: function(x) { return asFloat(x) / 12 },
  22. num: asFloat,
  23. time: asFloat,
  24. dollars: asFloat,
  25. percent: function(x) { return asFloat(x) * .01 },
  26. };
  27. // parent.find('[data-json]').each(function() {
  28. parent.find('[cname]').each(function() {
  29. var n = $(this);
  30. var name = n.attr('cname');
  31. var val = n.val();
  32. var fmt = n.attr('fmt') || n.attr('internal') || 'num';
  33. console.log(name, val);
  34. data[name] = formatters[fmt](val);
  35. });
  36. return data;
  37. };