From b9ad279ad2d8d93dd501115a028783cf8fe7fcbd Mon Sep 17 00:00:00 2001 From: Adam Young Date: Wed, 19 Jan 2011 12:26:14 -0500 Subject: rename static to ui Directory rename --- install/ui/widget.js | 1319 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 1319 insertions(+) create mode 100644 install/ui/widget.js (limited to 'install/ui/widget.js') diff --git a/install/ui/widget.js b/install/ui/widget.js new file mode 100644 index 00000000..576eef77 --- /dev/null +++ b/install/ui/widget.js @@ -0,0 +1,1319 @@ +/*jsl:import ipa.js */ +/* Authors: + * Endi Sukma Dewata + * + * Copyright (C) 2010 Red Hat + * see file 'COPYING' for use and warranty information + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +/* REQUIRES: ipa.js */ + +IPA.widget = function(spec) { + + spec = spec || {}; + + var that = {}; + + that.id = spec.id; + that.name = spec.name; + that.label = spec.label; + that.tooltip = spec.tooltip; + that.read_only = spec.read_only; + that._entity_name = spec.entity_name; + + that.width = spec.width; + that.height = spec.height; + + that.undo = typeof spec.undo == 'undefined' ? true : spec.undo; + + that.init = spec.init || init; + that.create = spec.create || create; + that.setup = spec.setup || setup; + that.load = spec.load || load; + that.save = spec.save || save; + that.update = spec.update || update; + that.validate_input = spec.validate_input || validate_input; + that.param_info = spec.param_info; + + that.__defineGetter__("entity_name", function(){ + return that._entity_name; + }); + + that.__defineSetter__("entity_name", function(entity_name){ + that._entity_name = entity_name; + }); + + /*returns true and clears the error message if the field value passes + the validation pattern. If the field value does not pass validation, + displays the error message and returns false. */ + function validate_input(text) { + if (!(that.param_info && that.param_info.pattern)) { + return true; + } + var error_link = that.get_error_link(); + if (!error_link) { + return true; + } + var regex = new RegExp( that.param_info.pattern ); + //If the field is empty, don't validate + if ( !text || text.match(regex) ) { + error_link.css('display', 'none'); + return true; + }else{ + error_link.css('display', 'block'); + if (that.param_info.pattern_errmsg) { + error_link.html(that.param_info.pattern_errmsg); + } + return false; + } + } + + function init() { + if (that.entity_name) { + that.param_info = IPA.get_param_info(that.entity_name, that.name); + + if (that.param_info) { + + if (that.label === undefined) { + that.label = that.param_info.label; + } + + if (that.tooltip === undefined) { + that.tooltip = that.param_info.doc; + } + } + } + } + + function create(container) { + } + + function setup(container) { + that.container = container; + } + + function load(record) { + that.record = record; + that.reset(); + } + + that.reset = function() { + that.hide_undo(); + that.update(); + }; + + function update() { + } + + function save() { + return []; + } + + that.is_dirty = function() { + + var values = that.save(); + if (!values && !that.values) return false; + if (!values || !that.values) return true; + + if (values.length != that.values.length) return true; + for (var i=0; i', { + type: 'text', + name: that.name, + size: that.size, + title: that.tooltip + }).appendTo(container); + + $('', { + 'name': 'undo', + 'style': 'display: none;', + 'html': 'undo' + }).appendTo(container); + + $("",{ + name:'error_link', + html:"Text does not match field pattern", + "class":"ui-state-error ui-corner-all", + style:"display:none" + }).appendTo(container); + }; + + that.setup = function(container) { + + this.widget_setup(container); + + var input = $('input[name="'+that.name+'"]', that.container); + input.keyup(function() { + if(that.undo){ + that.show_undo(); + } + var value = $('input[name="'+that.name+'"]', that.container).val(); + that.validate_input(value); + }); + + var undo = that.get_undo(); + undo.click(function() { + that.reset(); + }); + }; + + that.load = function(record) { + + that.values = record[that.name] || ['']; + + if (that.read_only) { + var input = $('input[name="'+that.name+'"]', that.container); + var label = $('