[Toaster] [PATCH] toaster: projectconf Add feature for free form IMAGE_FSTYPES
Michael Wood
michael.g.wood at intel.com
Thu Nov 19 10:38:24 PST 2015
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]
Signed-off-by: Michael Wood <michael.g.wood at intel.com>
---
.../toaster/toastergui/templates/projectconf.html | 95 +++++++++++++++++-----
1 file changed, 75 insertions(+), 20 deletions(-)
diff --git a/bitbake/lib/toaster/toastergui/templates/projectconf.html b/bitbake/lib/toaster/toastergui/templates/projectconf.html
index 30fd03e..13dde78 100644
--- a/bitbake/lib/toaster/toastergui/templates/projectconf.html
+++ b/bitbake/lib/toaster/toastergui/templates/projectconf.html
@@ -36,18 +36,35 @@
<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#var-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 image types" class="span4">
+ <div id="all-image_fstypes" class="scrolling">
+ </div>
+ <div class="input-append">
+ <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" placeholder="Add an image type">
</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 class="error" stype="display:none" id="fstypes-error-message">
+ You must select at least one image type
+ </p>
+ <p class="error" style="display:none" id="invalid-chars-in-fstype-msg">
+ A valid image type cannot include underscores.
+ </p>
+ <p class="error" style="display:none" id="exists-fstype-msg">
+ This image type already exists: select it from the list above.
+ </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 %}
@@ -597,17 +614,52 @@
}
});
- $('#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();
+ var fsTypesInput = $("#new-image-fstype-input");
+ var fsTypesApplyBtn = $('#apply-change-image_fstypes');
+ var invalidCharsMsg = $("#invalid-chars-in-fstype-msg");
+
+ fsTypesInput.on('input', function(){
+ if ($(this).val()) {
+ fsTypesApplyBtn.removeAttr('disabled');
+ $("#fstypes-error-message").hide();
+ }
+ invalidCharsMsg.hide();
+ });
+
+ 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 (fsTypesInput.val().length !== 0) {
+ var existsMsg = $("#exists-fstype-msg");
+
+ /* No whitespace or underscores allowed */
+ if (fsTypesInput.val().match(/\_/)) {
+ invalidCharsMsg.show();
+ return;
+ } else {
+ invalidCharsMsg.hide();
+ }
+
+ if (fstypes_array.indexOf(fsTypesInput.val()) !== -1){
+ existsMsg.show();
+ return;
+ } else {
+ existsMsg.hide();
+ }
+
+ fstypes += fsTypesInput.val()+' ';
+ }
// 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 +672,9 @@
$("#change-image_fstypes-form").slideUp(function() {
$('#image_fstypes, #change-image_fstypes-icon').show();
});
+
+
+ fsTypesInput.val("");
});
{% endif %}
--
2.1.4
More information about the toaster
mailing list