[Toaster] [[PATCH v2]] toaster: projectconf Add feature for free form IMAGE_FSTYPES

Barros Pena, Belen belen.barros.pena at intel.com
Thu Nov 26 08:18:11 PST 2015



On 26/11/2015 16:05, "Michael Wood" <michael.g.wood at intel.com> wrote:

>On 26/11/15 14:28, Smith, Elliot wrote:
>> On 24 November 2015 at 13:26, Barros Pena, Belen
>> <belen.barros.pena at intel.com <mailto:belen.barros.pena at intel.com>>
>>wrote:
>>
>>     On 23/11/2015 11:41, "toaster-bounces at yoctoproject.org
>>     <mailto:toaster-bounces at yoctoproject.org> on behalf of
>>     Michael Wood" <toaster-bounces at yoctoproject.org
>>     <mailto:toaster-bounces at yoctoproject.org> on behalf of
>>     michael.g.wood at intel.com <mailto:michael.g.wood at intel.com>> wrote:
>>
>>     >Add feature to the projectconf page to allow free form input of
>>     >IMAGE_FSTYPES. Sometimes a recipe can provide an IMAGE_FSTYPE that
>>     >isn't in the normal image_types class. So would need to be
>>specified
>>     >manually.
>>     >
>>     >[YOCTO #7828]
>>
>>     This seems to address all the issues from v1. Getting rid the
>>'already
>>     selected' error message by not duplicating any values works well.
>>
>>
>> It works correctly, but there is one issue: if you enter an invalid
>> string as the image type (e.g. btrfss) and want to correct it, there's
>> no way to delete it from the list.
>
>To remove custom added values, you just have to click edit and then
>press 'Save'.

The fact that Elliot couldn't work it out I think tells us something. We
shouldn't leave it that way :/

>
>>
>> Perhaps a button to set the list back to the defaults, or to remove
>> any invalid types ("cleanup")?
>>
>> Alternatively, add the user's custom image type to the checkbox list;
>> if they uncheck it, is disappears from the list.
>>
>> Elliot
>>
>>
>>     From my perspective, this is good to go.
>>
>>     Thanks!
>>
>>     Belén
>>
>>     >
>>     >Signed-off-by: Michael Wood <michael.g.wood at intel.com
>>     <mailto:michael.g.wood at intel.com>>
>>     >---
>>     > .../toaster/toastergui/templates/projectconf.html  | 128
>>     >+++++++++++++++------
>>     > 1 file changed, 95 insertions(+), 33 deletions(-)
>>     >
>>     >diff --git
>>     a/bitbake/lib/toaster/toastergui/templates/projectconf.html
>>     >b/bitbake/lib/toaster/toastergui/templates/projectconf.html
>>     >index 30fd03e..13f9c66 100644
>>     >--- a/bitbake/lib/toaster/toastergui/templates/projectconf.html
>>     >+++ b/bitbake/lib/toaster/toastergui/templates/projectconf.html
>>     >@@ -36,18 +36,36 @@
>>     >                 <span class="js-config-var-name
>>     >js-config-var-managed-name">IMAGE_FSTYPES</span>
>>     >                 <i class="icon-question-sign get-help"
>>     title="Formats of
>>     >root file system images that you want to have created <br /><a
>>     
>>>href='http://www.yoctoproject.org/docs/1.6.1/ref-manual/ref-manual.html#
>>>va
>>     >r-IMAGE_FSTYPES' target='_blank'>Read more in the manual</a>"></i>
>>     >             </dt>
>>     >-            <dd class="lead">
>>     >-                <span id="image_fstypes">{{fstypes}}</span>
>>     >-                <i class="icon-pencil"
>>     >id="change-image_fstypes-icon"></i>
>>     >-                <form id="change-image_fstypes-form"
>>     >style="display:none;">
>>     >-                    <input id="filter-image_fstypes" type="text"
>>     >placeholder="Search image types" class="span4">
>>     >-                    <div id="all-image_fstypes" class="scrolling">
>>     >+            <dd style="margin-bottom: 20px">
>>     >+              <span id="image_fstypes"
>>     class="lead">{{fstypes}}</span>
>>     >+              <i class="icon-pencil"
>>     id="change-image_fstypes-icon"></i>
>>     >+              <form id="change-image_fstypes-form"
>>     style="display:none;">
>>     >+                <label>Choose from known image types</label>
>>     >+                <input id="filter-image_fstypes" type="text"
>>     >placeholder="Search known image types" class="span4">
>>     >+                  <div id="all-image_fstypes" class="scrolling">
>>     >+                  </div>
>>     >+                  <div class="input-append">
>>     >+                    <span class="control-group"
>>     >id="fstypes-control-validation">
>>     >+                      <label>Enter your own image types
>>     >+                        <i data-original-title="You can enter
>>     more than
>>     >one image type, separated by a space" class="icon-question-sign
>>     get-help"
>>     >title=""></i>
>>     >+                      </label>
>>     >+                      <input type="text"
>>     id="new-image-fstype-input">
>>     >+
>>     >+                      </span>
>>     >                     </div>
>>     >-                    <span class="help-block"
>>     >id="fstypes-error-message">You must select at least one image
>>     type</span>
>>     >-                    <button id="apply-change-image_fstypes"
>>     >type="button" class="btn">Save</button>
>>     >-                    <button id="cancel-change-image_fstypes"
>>     >type="button" class="btn btn-link">Cancel</button>
>>     >-                </form>
>>     >-            </dd>
>>     >+                    <p style="display:none" class="error"
>>     >id="fstypes-error-message">
>>     >+                      You must select at least one image type.
>>     <br />
>>     >+                      Choose from the list of known ones or type
>>     your
>>     >own.
>>     >+                    </p>
>>     >+                    <p style="display:none" class="error"
>>     >id="invalid-chars-in-fstype-msg">
>>     >+                      A valid image type cannot include
>>underscores.
>>     >+                    </p>
>>     >+                    <div>
>>     >+                      <button id="apply-change-image_fstypes"
>>     >type="button" class="btn">Save</button>
>>     >+                      <button id="cancel-change-image_fstypes"
>>     >type="button" class="btn btn-link">Cancel</button>
>>     >+                    </div>
>>     >+                  </form>
>>     >+                </dd>
>>     >             {% endif %}
>>     >
>>     >             {% if image_install_append_defined %}
>>     >@@ -305,20 +323,41 @@
>>     >             return true;
>>     >         }
>>     >
>>     >-        // Test to insure at least one FS Type is checked
>>     >+        var fsTypesInput = $("#new-image-fstype-input");
>>     >+        var invalidCharsMsg = $("#invalid-chars-in-fstype-msg");
>>     >+        var fsTypesControl = $("#fstypes-control-validation");
>>     >+        var noFsType = $('#fstypes-error-message');
>>     >+        var fsTypesApplyBtn = $("#apply-change-image_fstypes");
>>     >+
>>     >+        /* Validation of fstypes */
>>     >         function enableFsTypesSave() {
>>     >-            var any_checked = 0;
>>     >- $(".fs-checkbox-fstypes:checked").each(function(){
>>     >-                any_checked = 1;
>>     >-            });
>>     >-            if ( 0 == any_checked ) {
>>     >-
>>     >$("#apply-change-image_fstypes").attr("disabled","disabled");
>>     >- $('#fstypes-error-message').show();
>>     >-            }
>>     >-            else {
>>     >- $("#apply-change-image_fstypes").removeAttr("disabled");
>>     >- $('#fstypes-error-message').hide();
>>     >-            }
>>     >+          var valid_input = false;
>>     >+          var valid_checkboxes = false;
>>     >+          var anyChecked =
>>$(".fs-checkbox-fstypes:checked").length;
>>     >+
>>     >+          /* No underscores allowed */
>>     >+          if (fsTypesInput.val().match(/\_/)) {
>>     >+            invalidCharsMsg.show();
>>     >+            fsTypesControl.addClass("error");
>>     >+            valid_input = false;
>>     >+          } else {
>>     >+            fsTypesControl.removeClass("error");
>>     >+            invalidCharsMsg.hide();
>>     >+            valid_input = true;
>>     >+          }
>>     >+
>>     >+          if (!anyChecked && !fsTypesInput.val()){
>>     >+            noFsType.show();
>>     >+            valid_checkboxes = false;
>>     >+          } else {
>>     >+            noFsType.hide();
>>     >+            valid_checkboxes = true;
>>     >+          }
>>     >+
>>     >+          if (valid_checkboxes == false || valid_input == false)
>>     >+ fsTypesApplyBtn.attr("disabled","disabled");
>>     >+          else
>>     >+ fsTypesApplyBtn.removeAttr("disabled");
>>     >         }
>>     >
>>     >         // Preset or reset the Package Class checkbox labels
>>     >@@ -597,17 +636,37 @@
>>     >                 }
>>     >             });
>>     >
>>     >- $('#apply-change-image_fstypes').click(function(){
>>     >-                // extract the selected fstypes and sort them
>>     >-                var fstypes_array = [];
>>     >-                var checkboxes =
>>     >document.getElementsByClassName('fs-checkbox-fstypes');
>>     >- $(".fs-checkbox-fstypes:checked").each(function(){
>>     >-  fstypes_array.push($(this).val());
>>     >-                });
>>     >-                fstypes_array.sort();
>>     >+            fsTypesInput.on('input', function(){
>>     >+              enableFsTypesSave();
>>     >+            });
>>     >+
>>     >+            fsTypesApplyBtn.click(function(e){
>>     >+              e.preventDefault();
>>     >+
>>     >+              var fstypes = '';
>>     >+              // extract the selected fstypes and sort them
>>     >+              var fstypes_array = [];
>>     >+              var checkboxes =
>>     >document.getElementsByClassName('fs-checkbox-fstypes');
>>     >+ $(".fs-checkbox-fstypes:checked").each(function(){
>>     >+ fstypes_array.push($(this).val());
>>     >+              });
>>     >+              fstypes_array.sort();
>>     >+
>>     >+              /* If we have a value in our enter own image type
>>     input
>>     >and it
>>     >+               * isn't already selected add it to the fstypes
>>value
>>     >+               */
>>     >+               if (fsTypesInput.val()){
>>     >+                 var inputFsTypes = fsTypesInput.val().split(" ");
>>     >+
>>     >+                 for (var type in inputFsTypes){
>>     >+                   if
>>     (fstypes_array.indexOf(inputFsTypes[type].trim())
>>     >=== -1)
>>     >+                   {
>>     >+                     fstypes += inputFsTypes[type]+' ';
>>     >+                   }
>>     >+                 }
>>     >+               }
>>     >
>>     >                 // now make a string of them
>>     >-                var fstypes = '';
>>     >                 for (var i = 0, length = fstypes_array.length; i <
>>     >length; i++) {
>>     >                     fstypes += fstypes_array[i] + ' ';
>>     >                 }
>>     >@@ -620,6 +679,9 @@
>>     >  $("#change-image_fstypes-form").slideUp(function() {
>>     >                     $('#image_fstypes,
>>     >#change-image_fstypes-icon').show();
>>     >                 });
>>     >+
>>     >+
>>     >+              fsTypesInput.val("");
>>     >             });
>>     >             {% endif %}
>>     >
>>     >--
>>     >2.5.0
>>     >
>>     >--
>>     >_______________________________________________
>>     >toaster mailing list
>>     >toaster at yoctoproject.org <mailto:toaster at yoctoproject.org>
>>     >https://lists.yoctoproject.org/listinfo/toaster
>>
>>     --
>>     _______________________________________________
>>     toaster mailing list
>>     toaster at yoctoproject.org <mailto:toaster at yoctoproject.org>
>>     https://lists.yoctoproject.org/listinfo/toaster
>>
>>
>>
>>
>> -- 
>> Elliot Smith
>> Software Engineer
>> Intel Open Source Technology Centre
>>
>> ---------------------------------------------------------------------
>> Intel Corporation (UK) Limited
>> Registered No. 1134945 (England)
>> Registered Office: Pipers Way, Swindon SN3 1RJ
>> VAT No: 860 2173 47
>>
>> This e-mail and any attachments may contain confidential material for
>> the sole use of the intended recipient(s). Any review or distribution
>> by others is strictly prohibited. If you are not the intended
>> recipient, please contact the sender and delete all copies.
>>
>



More information about the toaster mailing list