xref: /OK3568_Linux_fs/yocto/bitbake/lib/toaster/toastergui/templates/editcustomimage_modal.html (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593Smuzhiyun<!--
2*4882a593Smuzhiyunmodal dialog shown on the build dashboard, for editing an existing custom image;
3*4882a593Smuzhiyunonly shown if more than one custom image was built, so the user needs to
4*4882a593Smuzhiyunchoose which one to edit
5*4882a593Smuzhiyun
6*4882a593Smuzhiyunrequired context:
7*4882a593Smuzhiyun  build - a Build object
8*4882a593Smuzhiyun-->
9*4882a593Smuzhiyun<div class="modal fade" aria-hidden="false" id="edit-custom-image-modal">
10*4882a593Smuzhiyun  <div class="modal-dialog">
11*4882a593Smuzhiyun    <div class="modal-content">
12*4882a593Smuzhiyun      <div class="modal-header">
13*4882a593Smuzhiyun        <button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
14*4882a593Smuzhiyun        <h3>Which image do you want to edit?</h3>
15*4882a593Smuzhiyun      </div>
16*4882a593Smuzhiyun
17*4882a593Smuzhiyun      <div class="modal-body">
18*4882a593Smuzhiyun        {% for recipe in build.get_custom_image_recipes %}
19*4882a593Smuzhiyun        <div class="radio">
20*4882a593Smuzhiyun          <label>
21*4882a593Smuzhiyun            <input type="radio" name="select-custom-image"
22*4882a593Smuzhiyun                                data-url="{% url 'customrecipe' build.project.id recipe.id %}">
23*4882a593Smuzhiyun            {{recipe.name}}
24*4882a593Smuzhiyun          </label>
25*4882a593Smuzhiyun        </div>
26*4882a593Smuzhiyun        {% endfor %}
27*4882a593Smuzhiyun        <span class="help-block text-danger" id="invalid-custom-image-help" style="display:none">
28*4882a593Smuzhiyun          Please select a custom image to edit.
29*4882a593Smuzhiyun        </span>
30*4882a593Smuzhiyun      </div>
31*4882a593Smuzhiyun
32*4882a593Smuzhiyun      <div class="modal-footer">
33*4882a593Smuzhiyun        <button class="btn btn-primary btn-lg" data-url="#"
34*4882a593Smuzhiyun                                               data-action="edit-custom-image" disabled>
35*4882a593Smuzhiyun          Edit custom image
36*4882a593Smuzhiyun        </button>
37*4882a593Smuzhiyun      </div>
38*4882a593Smuzhiyun    </div>
39*4882a593Smuzhiyun  </div>
40*4882a593Smuzhiyun</div>
41*4882a593Smuzhiyun
42*4882a593Smuzhiyun<script>
43*4882a593Smuzhiyun$(document).ready(function () {
44*4882a593Smuzhiyun  var editCustomImageButton = $('[data-action="edit-custom-image"]');
45*4882a593Smuzhiyun  var error = $('#invalid-custom-image-help');
46*4882a593Smuzhiyun  var radios = $('[name="select-custom-image"]');
47*4882a593Smuzhiyun
48*4882a593Smuzhiyun  // return custom image radio buttons which are selected
49*4882a593Smuzhiyun  var getSelectedRadios = function () {
50*4882a593Smuzhiyun    return $('[name="select-custom-image"]:checked');
51*4882a593Smuzhiyun  };
52*4882a593Smuzhiyun
53*4882a593Smuzhiyun  function enableSubmit() {
54*4882a593Smuzhiyun    if (getSelectedRadios().length === 1) {
55*4882a593Smuzhiyun      editCustomImageButton.removeAttr('disabled');
56*4882a593Smuzhiyun      error.hide();
57*4882a593Smuzhiyun    }
58*4882a593Smuzhiyun    else {
59*4882a593Smuzhiyun      editCustomImageButton.attr('disabled', 'disabled');
60*4882a593Smuzhiyun      error.show();
61*4882a593Smuzhiyun    }
62*4882a593Smuzhiyun  };
63*4882a593Smuzhiyun
64*4882a593Smuzhiyun  $("#edit-custom-image-modal").on("shown.bs.modal", function() {
65*4882a593Smuzhiyun    enableSubmit();
66*4882a593Smuzhiyun  });
67*4882a593Smuzhiyun
68*4882a593Smuzhiyun  radios.change(function () {
69*4882a593Smuzhiyun    enableSubmit();
70*4882a593Smuzhiyun  });
71*4882a593Smuzhiyun
72*4882a593Smuzhiyun  editCustomImageButton.click(function () {
73*4882a593Smuzhiyun    var selectedRadios = getSelectedRadios();
74*4882a593Smuzhiyun
75*4882a593Smuzhiyun    if (selectedRadios.length === 1) {
76*4882a593Smuzhiyun      document.location.href = selectedRadios.first().attr('data-url');
77*4882a593Smuzhiyun    }
78*4882a593Smuzhiyun    else {
79*4882a593Smuzhiyun      error.show();
80*4882a593Smuzhiyun    }
81*4882a593Smuzhiyun  });
82*4882a593Smuzhiyun
83*4882a593Smuzhiyun  // Select the first custom image listed. Radio button groups
84*4882a593Smuzhiyun  // should always have an option selected by default
85*4882a593Smuzhiyun  $("input:radio:first").attr("checked", "checked");
86*4882a593Smuzhiyun
87*4882a593Smuzhiyun});
88*4882a593Smuzhiyun</script>
89