configuretemplate.js 4.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167
  1. var AIRTIME = (function(AIRTIME) {
  2. var mod;
  3. var $templateDiv;
  4. var $templateList;
  5. var $fileMDList;
  6. if (AIRTIME.itemTemplate === undefined) {
  7. AIRTIME.itemTemplate = {};
  8. }
  9. mod = AIRTIME.itemTemplate;
  10. //config: name, type, filemd, required
  11. function createTemplateLi(config) {
  12. var templateRequired =
  13. "<li " +
  14. "data-name='<%= name %>' " +
  15. "data-type='<%= type %>' " +
  16. "data-filemd='<%= filemd %>'" +
  17. "data-label='<%= label %>'" +
  18. "class='<%= (filemd) ? 'field_filemd' : 'field_other' %>'" +
  19. ">" +
  20. "<span><%= label %></span>" +
  21. "<span><%= type %></span>" +
  22. "</li>";
  23. var templateOptional =
  24. "<li " +
  25. "data-name='<%= name %>' " +
  26. "data-type='<%= type %>' " +
  27. "data-filemd='<%= filemd %>'" +
  28. "data-label='<%= label %>'" +
  29. "class='<%= (filemd) ? 'field_filemd' : 'field_other' %>'" +
  30. ">" +
  31. "<span><%= label %></span>" +
  32. "<span><%= type %></span>" +
  33. "<span class='template_item_remove'><i class='icon icon-trash'></i></span>" +
  34. "</li>";
  35. var template = (config.required) === true ? templateRequired : templateOptional;
  36. template = _.template(template);
  37. var $li = $(template(config));
  38. return $li;
  39. }
  40. //taken from
  41. //http://stackoverflow.com/questions/1349404/generate-a-string-of-5-random-characters-in-javascript
  42. function randomString(len, charSet) {
  43. //can only use small letters to avoid DB query problems.
  44. charSet = charSet || 'abcdefghijklmnopqrstuvwxyz';
  45. var randomString = '';
  46. for (var i = 0; i < len; i++) {
  47. var randomPoz = Math.floor(Math.random() * charSet.length);
  48. randomString += charSet.substring(randomPoz,randomPoz+1);
  49. }
  50. return randomString;
  51. }
  52. function addField(config) {
  53. $templateList.append(createTemplateLi(config));
  54. }
  55. function getFieldData($el) {
  56. return {
  57. name: $el.data("name"),
  58. type: $el.data("type"),
  59. label: $el.data("label"),
  60. isFileMd: $el.data("filemd")
  61. };
  62. }
  63. mod.onReady = function() {
  64. $templateDiv = $("#configure_item_template");
  65. $templateList = $(".template_item_list");
  66. $fileMDList = $(".template_file_md");
  67. $fileMDList.on("click", "i.icon-plus", function(){
  68. var $li = $(this).parents("li");
  69. var config = {
  70. name: $li.data("name"),
  71. type: $li.data("type"),
  72. label: $li.data("label"),
  73. filemd: true,
  74. required: false
  75. };
  76. addField(config);
  77. $li.remove();
  78. });
  79. $templateList.sortable();
  80. $templateDiv.on("click", ".template_item_remove", function() {
  81. $(this).parents("li").remove();
  82. });
  83. $templateDiv.on("click", ".template_item_add button", function() {
  84. var $div = $(this).parents("div.template_item_add"),
  85. $input = $div.find("input"),
  86. label = $input.val(),
  87. name;
  88. $input.val("");
  89. //create a string name that will work for all languages.
  90. name = randomString(10);
  91. var config = {
  92. name: name,
  93. label: label,
  94. type: $div.find("select").val(),
  95. filemd: false,
  96. required: false
  97. };
  98. addField(config);
  99. });
  100. function updateTemplate(template_id, isDefault) {
  101. var url = baseUrl+"Playouthistorytemplate/update-template/format/json";
  102. var data = {};
  103. var $lis, $li;
  104. var i, len;
  105. var templateName;
  106. templateName = $("#template_name").val();
  107. $lis = $templateList.children();
  108. for (i = 0, len = $lis.length; i < len; i++) {
  109. $li = $($lis[i]);
  110. data[i] = getFieldData($li);
  111. }
  112. $.post(url, {'id': template_id, 'name': templateName, 'fields': data, 'setDefault': isDefault}, function(json) {
  113. var x;
  114. });
  115. }
  116. $templateDiv.on("click", "#template_item_save", function(){
  117. var template_id = $(this).data("template");
  118. updateTemplate(template_id, false);
  119. });
  120. $templateDiv.on("click", "#template_set_default", function() {
  121. var $btn = $(this),
  122. template_id = $btn.data("template"),
  123. url = baseUrl+"Playouthistorytemplate/set-template-default/format/json";
  124. $btn.remove();
  125. $.post(url, {id: template_id});
  126. });
  127. };
  128. return AIRTIME;
  129. }(AIRTIME || {}));
  130. $(document).ready(AIRTIME.itemTemplate.onReady);