mirror of
				https://github.com/pierre42100/ComunicWeb
				synced 2025-11-03 19:54:14 +00:00 
			
		
		
		
	Progress on login page
This commit is contained in:
		@@ -115,9 +115,19 @@ var ComunicWeb = {
 | 
			
		||||
            prepareLoadTemplate: function(){},
 | 
			
		||||
 | 
			
		||||
            /**
 | 
			
		||||
             * Load, parse and show a template
 | 
			
		||||
             * Load, parse and show an HTML template
 | 
			
		||||
             */
 | 
			
		||||
            getAndShowTemplate: function(targetElem, dataTemplate, templateURI, nextAction, cleanContener){},
 | 
			
		||||
 | 
			
		||||
            /**
 | 
			
		||||
             * Convert a JSON object into html elements
 | 
			
		||||
             */
 | 
			
		||||
            convertJSONobjectTOhtmlElement: function(parentNodeChilds, values){},
 | 
			
		||||
 | 
			
		||||
            /**
 | 
			
		||||
             * Get and show a JSON template
 | 
			
		||||
             */
 | 
			
		||||
            getAndShowJSONtemplate: function(targetElem, templateURI, additionalData, afterParsingJSONtemplate, cleanContener){},
 | 
			
		||||
        },
 | 
			
		||||
 | 
			
		||||
        /**
 | 
			
		||||
 
 | 
			
		||||
@@ -5,7 +5,7 @@
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
ComunicWeb.network = {
 | 
			
		||||
ComunicWeb.common.network = {
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * @var {object} Cache contener
 | 
			
		||||
@@ -16,13 +16,13 @@ ComunicWeb.network = {
 | 
			
		||||
     * Make a GET request
 | 
			
		||||
     * 
 | 
			
		||||
     * @param {String} url Destination URL
 | 
			
		||||
     * @param {Boolean} cache Specify if data can be cached or not (optimize network)
 | 
			
		||||
     * @param {Boolean} cacheResponse Specify if data can be cached or not (optimize network)
 | 
			
		||||
     * @param {function} GETnextAction What to do next
 | 
			
		||||
     * @return {Boolean} False if it fails
 | 
			
		||||
     */
 | 
			
		||||
    getRequest: function(url, cache, GETnextAction){
 | 
			
		||||
    getRequest: function(url, cacheResponse, GETnextAction){
 | 
			
		||||
        //First, check if it is required to cache the request
 | 
			
		||||
        if(cache){
 | 
			
		||||
        if(cacheResponse){
 | 
			
		||||
            //Prepare cache entry name
 | 
			
		||||
            var cacheEntryName = encodeURIComponent(url);
 | 
			
		||||
 | 
			
		||||
@@ -50,10 +50,12 @@ ComunicWeb.network = {
 | 
			
		||||
                }
 | 
			
		||||
                
 | 
			
		||||
                //Check if it is required to cache result
 | 
			
		||||
                if(cache){
 | 
			
		||||
                    ComunicWeb.network.cache[cacheEntryName] = xhrRequest.responseText;
 | 
			
		||||
                if(cacheResponse){
 | 
			
		||||
                    ComunicWeb.common.network.cache[cacheEntryName] = xhrRequest.responseText;
 | 
			
		||||
                }
 | 
			
		||||
 | 
			
		||||
                ComunicWeb.debug.logMessage("GET request: " + url + " Success (" + xhrRequest.status + ")");
 | 
			
		||||
 | 
			
		||||
                //Call next action
 | 
			
		||||
                GETnextAction(xhrRequest.responseText);
 | 
			
		||||
            }
 | 
			
		||||
 
 | 
			
		||||
@@ -127,16 +127,16 @@ ComunicWeb.common.page = {
 | 
			
		||||
    },
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Load, parse and show a template
 | 
			
		||||
     * Load, parse and show an HTML template
 | 
			
		||||
     * 
 | 
			
		||||
     * @param {Object} targetElem The target element where the template will be applied
 | 
			
		||||
     * @param {Object} dataTemplate Datas to pass to the template (to parse it)
 | 
			
		||||
     * @param {String} templateURI URI pointing on the template
 | 
			
		||||
     * @param {function} nextAction What to do once the template is loaded
 | 
			
		||||
     * @param {function} afterParsingHTMLtemplate What to do once the template is loaded
 | 
			
		||||
     * @param {Boolean} cleanContener Specify if contener has to be cleaned or not
 | 
			
		||||
     * @return {Boolean} False if it fails
 | 
			
		||||
     */
 | 
			
		||||
    getAndShowTemplate: function(targetElem, dataTemplate, templateURI, nextAction, cleanContener){
 | 
			
		||||
    getAndShowTemplate: function(targetElem, dataTemplate, templateURI, afterParsingHTMLtemplate, cleanContener){
 | 
			
		||||
 | 
			
		||||
        //First, get the template URL
 | 
			
		||||
        templateURL = ComunicWeb.__config.templatesURL + templateURI;
 | 
			
		||||
@@ -144,6 +144,11 @@ ComunicWeb.common.page = {
 | 
			
		||||
        //Define how to apply the template
 | 
			
		||||
        var afterDownloadTemplateContent = function(templateContent){
 | 
			
		||||
 | 
			
		||||
            //If required, clean the contener
 | 
			
		||||
            if(cleanContener){
 | 
			
		||||
                targetElem.innerHTML = "";
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            //Apply data templates
 | 
			
		||||
            for(elemName in dataTemplate){
 | 
			
		||||
                //We change the template content while it still exists
 | 
			
		||||
@@ -154,11 +159,130 @@ ComunicWeb.common.page = {
 | 
			
		||||
 | 
			
		||||
            //Apply template source
 | 
			
		||||
            targetElem.innerHTML = templateContent;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
            //Perform next action (if there is)
 | 
			
		||||
            if(afterParsingHTMLtemplate)
 | 
			
		||||
                afterParsingHTMLtemplate();
 | 
			
		||||
 | 
			
		||||
        };
 | 
			
		||||
 | 
			
		||||
        //Perform request
 | 
			
		||||
        if(!ComunicWeb.network.getRequest(templateURL, true, afterDownloadTemplateContent))
 | 
			
		||||
        if(!ComunicWeb.common.network.getRequest(templateURL, true, afterDownloadTemplateContent))
 | 
			
		||||
            //An error occured
 | 
			
		||||
            return false;
 | 
			
		||||
    },
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Convert a JSON object into html elements
 | 
			
		||||
     * 
 | 
			
		||||
     * @param {Object} parentNodeChilds The parent which contains the childs to convert (an object)
 | 
			
		||||
     * @param {Object} values Optionnal, fill the template with predefined values
 | 
			
		||||
     * @returns {HTMLObject} The processed JSON code
 | 
			
		||||
     */
 | 
			
		||||
    convertJSONobjectTOhtmlElement: function(parentNodeChilds, values){
 | 
			
		||||
        //Create variable
 | 
			
		||||
        var resultElements = {};
 | 
			
		||||
 | 
			
		||||
        //Process each element of the array
 | 
			
		||||
        for(elemID in parentNodeChilds){
 | 
			
		||||
 | 
			
		||||
            //Determine object type
 | 
			
		||||
            var objType = (parentNodeChilds[elemID].nodeType ? parentNodeChilds[elemID].nodeType : elemID);
 | 
			
		||||
            
 | 
			
		||||
            //Create object
 | 
			
		||||
            var element = document.createElement(objType);
 | 
			
		||||
            element.elemID = elemID;
 | 
			
		||||
 | 
			
		||||
            //Populate it with its informations
 | 
			
		||||
            for(fieldName in parentNodeChilds[elemID]){
 | 
			
		||||
                if(fieldName == "nodeType"){
 | 
			
		||||
                    //Do nothing
 | 
			
		||||
                }
 | 
			
		||||
 | 
			
		||||
                //We perform children generation if required
 | 
			
		||||
                else if(fieldName == "children"){
 | 
			
		||||
                    //Call the function to get the element's childs and apply them
 | 
			
		||||
                    var elemChilds = this.convertJSONobjectTOhtmlElement(parentNodeChilds[elemID][fieldName], values);
 | 
			
		||||
                    for(childID in elemChilds){
 | 
			
		||||
                        element.appendChild(elemChilds[childID]);
 | 
			
		||||
                    }
 | 
			
		||||
                }
 | 
			
		||||
 | 
			
		||||
                //We check if it is innerHTML filling
 | 
			
		||||
                else if(fieldName == "innerHTML"){
 | 
			
		||||
                    element.innerHTML = parentNodeChilds[elemID][fieldName];
 | 
			
		||||
                }
 | 
			
		||||
                
 | 
			
		||||
                //We check if it is auto filling system which is called
 | 
			
		||||
                else if (fieldName == "autofill"){
 | 
			
		||||
                    //Check if required value exists in the data
 | 
			
		||||
                    if(values){
 | 
			
		||||
                        if(values[parentNodeChilds[elemID][fieldName]]){
 | 
			
		||||
                            //Then fill field with the value
 | 
			
		||||
                            element.innerHTML = values[parentNodeChilds[elemID][fieldName]];
 | 
			
		||||
                        }
 | 
			
		||||
                    }
 | 
			
		||||
                }
 | 
			
		||||
 | 
			
		||||
                //For other input, we use "setAttribute"
 | 
			
		||||
                else{
 | 
			
		||||
                    element.setAttribute(fieldName, parentNodeChilds[elemID][fieldName]);
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            //Save element
 | 
			
		||||
            resultElements[element.elemID] = element;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        //Return result
 | 
			
		||||
        return resultElements;
 | 
			
		||||
    },
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Get and show a JSON template
 | 
			
		||||
     * 
 | 
			
		||||
     * @param {Object} targetElem The target element where the template will be applied
 | 
			
		||||
     * @param {String} templateURI URI pointing on the template
 | 
			
		||||
     * @param {Object} additionalData Additionnal to pass to the template
 | 
			
		||||
     * @param {function} afterParsingJSONtemplate What to do once JSON template is loaded
 | 
			
		||||
     * @param {Boolean} cleanContener Specify wether the template contener has to be cleaned or not
 | 
			
		||||
     * @return {Boolean} Flase if it fails
 | 
			
		||||
     */
 | 
			
		||||
    getAndShowJSONtemplate: function(targetElem, templateURI, additionalData, afterParsingJSONtemplate, cleanContener){
 | 
			
		||||
        //Define template URL
 | 
			
		||||
        var templateURL = ComunicWeb.__config.templatesURL + templateURI;
 | 
			
		||||
 | 
			
		||||
        //Define how to apply the template
 | 
			
		||||
        var afterTemplateDownload = function(templateContent){
 | 
			
		||||
            //Decode JSON content
 | 
			
		||||
            var JSONobject = JSON.parse(templateContent);
 | 
			
		||||
            
 | 
			
		||||
            //Check if parsing failed
 | 
			
		||||
            if(!JSONobject){
 | 
			
		||||
                ComunicWeb.debug.logMessage("Parsing JSON failed with this file: " + templateURL);
 | 
			
		||||
                return false;
 | 
			
		||||
            }
 | 
			
		||||
            
 | 
			
		||||
            //Parse JSON object
 | 
			
		||||
            var result = ComunicWeb.common.page.convertJSONobjectTOhtmlElement(JSONobject, additionalData);
 | 
			
		||||
 | 
			
		||||
            //Apply each result element
 | 
			
		||||
            for(elem in result){
 | 
			
		||||
                targetElem.appendChild(result[elem]);
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            //Perform next action if required
 | 
			
		||||
            if(afterParsingJSONtemplate){
 | 
			
		||||
                afterParsingJSONtemplate();
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            //Everything OK
 | 
			
		||||
            return true;
 | 
			
		||||
        };
 | 
			
		||||
 | 
			
		||||
        //Perform request
 | 
			
		||||
        if(!ComunicWeb.common.network.getRequest(templateURL, true, afterTemplateDownload))
 | 
			
		||||
            //An error occured
 | 
			
		||||
            return false;
 | 
			
		||||
    }
 | 
			
		||||
};
 | 
			
		||||
		Reference in New Issue
	
	Block a user