[Toaster] [[PATCH v2]] toaster: projectconf Add feature for free form IMAGE_FSTYPES
Barros Pena, Belen
belen.barros.pena at intel.com
Tue Nov 24 05:26:34 PST 2015
On 23/11/2015 11:41, "toaster-bounces at yoctoproject.org on behalf of
Michael Wood" <toaster-bounces at yoctoproject.org on behalf of
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.
>From my perspective, this is good to go.
Thanks!
Belén
>
>Signed-off-by: Michael Wood <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
>https://lists.yoctoproject.org/listinfo/toaster
More information about the toaster
mailing list