[Toaster] [[PATCH v2]] toaster: projectconf Add feature for free form IMAGE_FSTYPES
Michael Wood
michael.g.wood at intel.com
Thu Nov 26 08:05:33 PST 2015
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'.
>
> 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