Projet

Général

Profil

Development #27296 » phonecalls.html

Frédéric Péters, 21 janvier 2019 16:17

 
1
{% load combo %}
2
<h2>Appels{% if callee %} (ligne {{callee}}){% endif %}</h2>
3

    
4
<div id="calls" data-calls="{{ json|as_json }}">
5
{% if json %}  {# callee has been set #}
6
{% for call in json.data.current %}
7
{% if forloop.first %}<strong>Appel en cours</strong>{% endif %}
8
<div>
9
  {{call.start|parse_datetime|date:"H:i"}} :
10
  {{ call.caller }}
11
</div>
12
{% endfor %}
13
{% for call in json.data.past|slice:":5" %}
14
{% if forloop.first %}<strong>Appels passés</strong>{% endif %}
15
<div>
16
  {{call.start|parse_datetime|date:"H:i"}} :
17
  {{ call.caller }}
18
</div>
19
{% endfor %}
20
{% endif %}
21
</div>
22

    
23
<div>
24
<form>
25
{% if not callee %}
26
<div class="infonotice">
27
  Il est nécessaire de renseigner un numéro de ligne
28
  pour le service téléphonique.
29
</div>
30
{% endif %}
31
<input {% if callee %}type="hidden"{% else %}type="text"{% endif %} name="callee" value="{{ callee }}">
32
{% if not callee %}<button></button>{% endif %}
33
</form>
34
{% if callee %}<button class="release-line">Libérer la ligne</button>{% endif %}
35
</div>
36

    
37
<script>
38
$(function() {
39
  var $cell = $('.configjsoncell.phonecalls');
40
  {% if not callee %}
41
  var callee = window.localStorage.publik_phone_callee;
42
  if (callee) {
43
    window.history.replaceState({}, "", "?callee=" + callee);
44
    combo_load_cell($cell);
45
  }
46
  {% else %}
47
  window.localStorage.publik_phone_callee = "{{ callee }}";
48
  if (window.location.search != "?callee={{ callee }}") {
49
    window.history.replaceState({}, "", "?callee={{ callee }}");
50
  }
51
  var current_calls = $cell.find('#calls').data('calls');
52
  function get_caller(calls) {
53
    if (calls && calls.data && calls.data.current && calls.data.current.length) return calls.data.current[0].caller;
54
    return null;
55
  }
56
  function refresh_calls() {
57
    $.ajax({url: $cell.data('ajax-cell-url') + '?callee={{ callee }}',
58
            type: 'POST',
59
            data: {'action': 'refresh'},
60
            success: function(data) {
61
              new_content = $('<div>' + data + '</div>');
62
              var new_calls = $(new_content).find('#calls').data('calls');
63
              var new_caller = get_caller(new_calls);
64
              if (get_caller(current_calls) != new_caller) {
65
                current_calls = new_calls;
66
                $('#calls').replaceWith($(new_content).find('#calls'));
67
                if (new_caller) {
68
                  var $search = $('.combo-search-input');
69
                  if ($search.val() == '' && ! $search.is(':focus')) {
70
                    $search.val(new_caller).trigger('change');
71
                  }
72
                }
73
              }
74
            }
75
     });
76
  }
77
  setInterval(refresh_calls, 2500);
78
  $('button.release-line').on('click', function() {
79
    window.localStorage.publik_phone_callee = "";
80
    window.history.replaceState({}, "", "?");
81
    combo_load_cell($cell);
82
    return false;
83
  });
84
  {% endif %}
85
});
86
</script>