On 23/11/2015 11:41, "[email protected] on behalf of Michael Wood" <[email protected] on behalf of [email protected]> 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. >From my perspective, this is good to go. Thanks! Belén > >Signed-off-by: Michael Wood <[email protected]> >--- > .../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 >[email protected] >https://lists.yoctoproject.org/listinfo/toaster -- _______________________________________________ toaster mailing list [email protected] https://lists.yoctoproject.org/listinfo/toaster
