Blame view

bower_components/blueimp-tmpl/js/demo.js 1.53 KB
f6e211e4   Administrator   finish work part 1
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
  /*
   * JavaScript Templates Demo
   * https://github.com/blueimp/JavaScript-Templates
   *
   * Copyright 2013, Sebastian Tschan
   * https://blueimp.net
   *
   * Licensed under the MIT license:
   * http://www.opensource.org/licenses/MIT
   */
  
  /* global document, tmpl */
  
  ;(function () {
    'use strict'
  
    var templateInput = document.getElementById('template')
    var dataInput = document.getElementById('data')
    var resultNode = document.getElementById('result')
    var templateDemoNode = document.getElementById('tmpl-demo')
    var templateDataNode = document.getElementById('tmpl-data')
  
    function renderError (title, error) {
      resultNode.innerHTML = tmpl(
        'tmpl-error',
        {title: title, error: error}
      )
    }
  
    function render (event) {
      event.preventDefault()
      var data
      try {
        data = JSON.parse(dataInput.value)
      } catch (e) {
        renderError('JSON parsing failed', e)
        return
      }
      try {
        resultNode.innerHTML = tmpl(
          templateInput.value,
          data
        )
      } catch (e) {
        renderError('Template rendering failed', e)
      }
    }
  
    function empty (node) {
      while (node.lastChild) {
        node.removeChild(node.lastChild)
      }
    }
  
    function init (event) {
      if (event) {
        event.preventDefault()
      }
      templateInput.value = templateDemoNode.innerHTML.trim()
      dataInput.value = templateDataNode.innerHTML.trim()
      empty(resultNode)
    }
  
    document.getElementById('render').addEventListener('click', render)
    document.getElementById('reset').addEventListener('click', init)
  
    init()
  }())