diff --git a/ui/ui.js b/ui/ui.js
index 94503f6d..902fbe3d 100755
--- a/ui/ui.js
+++ b/ui/ui.js
@@ -446,33 +446,39 @@ var FIELD_TYPES = {
type: 'text',
text: null,
default: '',
- html: '
'+
+ html: '
'+
''+
''+
'
',
- setter: function(field){
+ test: function(val){
+ return typeof(val) == typeof('abc')
+ },
+ set: function(field){
$(field).find('.value').attr('value', this.default)
},
- getter: function(field){
+ get: function(field){
return $(field).find('.value').attr('value')
},
},
bool: {
- type: 'text',
+ type: 'bool',
text: null,
default: false,
- html: '
'+
+ html: '
'+
''+
''+
'
',
- setter: function(field){
- if(this.default){
+ test: function(val){
+ return val === true || val === false
+ },
+ set: function(field, value){
+ if(value){
$(field).find('.value').attr('checked', '')
} else {
$(field).find('.value').removeAttr('checked')
}
},
- getter: function(field){
+ get: function(field){
return $(field).find('.value').attr('value')
},
},
@@ -512,6 +518,62 @@ var FIELD_TYPES = {
//
// XXX find a better name...
function promptPlus(message, config, btn){
+ var form = $('
')
+ var data = {}
+ var res = $.Deferred()
+
+ // XXX handle message and btn...
+ // XXX
+
+ // build the form...
+ for(var t in config){
+ var did_handling = false
+ for(var f in FIELD_TYPES){
+ if(FIELD_TYPES[f].test(config[t])){
+ var field = FIELD_TYPES[f]
+ var html = $(field.html)
+
+ html.find('.text').text(t)
+ field.set(html, config[t])
+
+ html.on('resolve', function(){
+ data[t] = field.get(html)
+ })
+
+ form.append(html)
+
+ did_handling = true
+ continue
+ }
+ }
+
+ // handle unresolved fields...
+ if(!did_handling){
+ // XXX skipping field...
+ // XXX
+ }
+ }
+
+ var root = $('.viewer')
+
+ showInOverlay(root, form)
+ .addClass('prompt dialog')
+ .on('accept', function(){
+ form.find('.field').each(function(_, e){
+ $(e).trigger('resolve')
+ })
+
+ // XXX test if all required stuff is filled...
+ res.resolve(data)
+
+ hideOverlay(root)
+ })
+ .on('close', function(){
+ res.reject()
+ hideOverlay(root)
+ })
+
+ return res
}