# inputEx-library

### inputEx 0.5.1

inputEx-library > inputEx > smdTester.js (source view)
Search:
Filters Show Private Show Protected Show Deprecated

    /**
     * Creates a form to test various SMD files
     * @class inputEx.RPC.SMDTester
     */
    inputEx.RPC.SMDTester = function(parentEl, smdList) {

    	this.el = YAHOO.util.Dom.get(parentEl);

    	var selectStr = 'select smd';
    	inputEx({
    		type: 'select',
    		label: "SMD",
    		parentEl: this.el,
    		choices: [{ value: selectStr }].concat((function() {
    			var arr = [], i, length;
    			for (i = 0, length = smdList.length; i < length; i += 1) {
    				arr.push({ value: smdList[i] });
    			}
    			return arr;
    		}())),
    		description: "Select the Service Mapping Description file"
    	}).updatedEvt.subscribe(function(e, params) {
    			var smdFile = params[0];
    			if(smdFile != selectStr) {
    				this.loadSMD(smdFile);
    			}
    			/*else {
    				// TODO: clear the form ?
    			}*/
    	}, this, true);

    	this.smdDescriptionEl = inputEx.cn('p');
    	this.el.appendChild( this.smdDescriptionEl );

    	this.serviceMethodEl = inputEx.cn('div');
    	this.el.appendChild( this.serviceMethodEl );

    	this.methodDescriptionEl = inputEx.cn('p');
    	this.el.appendChild( this.methodDescriptionEl );

    	this.formContainerEl = inputEx.cn('div');
    	this.el.appendChild( this.formContainerEl );

    	this.treeContainerEl = inputEx.cn('div');
    	this.treeContainerEl.appendChild( inputEx.cn('p', null, null, 'Results :') );
    	this.el.appendChild( this.treeContainerEl );
    };

    inputEx.RPC.SMDTester.prototype = {

    	/**
    	 * When the user select a SMD in the select
    	 */
    	loadSMD: function(smdFile) {

    	  	this.serviceMethodEl.innerHTML = "";
    		this.formContainerEl.innerHTML = "";

    		this.service = new inputEx.RPC.Service(smdFile,{ success: this.onServiceLoaded,	scope: this});
    	},

    	/**
    	 * When the SMD has been loaded
    	 */
    	onServiceLoaded: function() {

    		// Set SMD Description :
    		this.smdDescriptionEl.innerHTML = (YAHOO.lang.isString(this.service._smd.description)) ? this.service._smd.description : "";

    		// Method Select
    		var selectStr = 'select a method';
    		var genMethods = [selectStr];
    		for(var key in this.service) {
    			if(this.service.hasOwnProperty(key) && YAHOO.lang.isFunction(this.service[key])) {
    				genMethods.push({ value: key });
    			}
    		}
    		var select = inputEx({
    				type: 'select',
    				parentEl: this.serviceMethodEl,
    				choices: genMethods,
    				label: 'Method',
    				description: "Select the method"
    		});

    		select.updatedEvt.subscribe(function(e, params) {
    			var methodName = params[0];
    			if(methodName != selectStr) this.onServiceMethod(methodName);
    		}, this, true);

    		if(genMethods.length == 2) {
    			select.setValue(genMethods[1]);
    		}

    	},

    	/**
    	 * When a method has been selected :
    	 */
    	onServiceMethod: function(methodName) {

    		// Set Method Description :
    		this.methodDescriptionEl.innerHTML = (YAHOO.lang.isString(this.service[methodName].description)) ? this.service[methodName].description : "";

    		// generate the form for the given method
    		this.formContainerEl.innerHTML = "";
    		inputEx.RPC.generateServiceForm(this.service[methodName], { parentEl: this.formContainerEl }, {
    			success: function(results) {
    					this.treeContainerEl.innerHTML = "";
    					new inputEx.widget.JsonTreeInspector(this.treeContainerEl, results);
    			},
    			scope: this
    		});
    	}

    };

Copyright © 2010 Eric Abouaf All rights reserved.