Dynamics CRM Common Framework

I was asked to develop a framework that consist of common used java-script in dynamics CRM. I ll be sharing my findings in the code mentioned below

/**
Test Functions -- Start
**/

/***
// Method Name: testFunction
// Method Description:
// Created: Sept 04, 2015 04:09PM
// Author: Sabih Ahmed Khan
// param: testParam Desc: description of individual param goes here
// return bool Desc: Success or Failure
// Revisions: Example:Sue (2/19/2009) - Method Name - Changes done --REF:SUE_1
***/
function testFunction(testparam) {
    var testVar = testparam;

    //start:SUE_1
    testVar = false;
    //end:SUE_1

    return testVar;
}

/***
// Method Name: testFunctionAlert
// Method Description:
// Created: Sept 04, 2015 04:09PM
// Author: Sabih Ahmed Khan
// param: testParam Desc: sending param from the Entity
// return bool Desc: Success or Failure
// Revisions: 
***/
function testFunctionAlert(testparam) {
    alert(testparam);
    return true;
}

/**
Test Functions -- End
**/



/**
Conversion Functions -- Start
**/

/***
// Method Name: toUpperCaseAlpha
// Method Description: Convert the Alpha Text in to UpperCase in the Attribute
// Created: Sept 04, 2015 04:09PM
// Author: Sabih Ahmed Khan
// param: srcTxtAttribObj Desc: Attribute Object Pass
// return undefined Desc: N/A
// Revisions: 
***/
function toUpperCaseAlpha(srcTxtAttribObj) {
    //need to discuss with kashif in order to do upper case do we need to confirm the field type
    var attributeVal = srcTxtAttribObj.getValue();
    if (IsAlpha(attributeVal)) {
        if (attributeVal) {
            srcTxtAttribObj.setValue(attributeVal.toUpperCase());
        }
    }
    else {
        //need to discuss with kashif if any other than alphabetic case happens
        srcTxtAttribObj.setValue("");
    }
}


/***
// Method Name: toTitleCaseAlpha
// Method Description: Convert the Alpha Text in to Title Case in the Attribute
// Created: Sept 07, 2015 04:09PM
// Author: Sabih Ahmed Khan
// param: srcTxtAttribObj Desc: Attribute Object Pass
// return undefined Desc: N/A
// Revisions: 
***/
function toTitleCaseAlpha(srcTxtAttribObj) {
    var attributeVal = srcTxtAttribObj.getValue();
    if (IsAlpha(attributeVal)) {
        if (attributeVal) {
            srcTxtAttribObj.setValue(attributeVal.replace(/\w+/g, function (txt) {
                return txt.charAt(0).toUpperCase() + txt.substr(1).toLowerCase();
            }
                                                                )
                                                                );
        }
    }
    else {
        //need to discuss with kashif if any other than alphabetic case happens
        srcTxtAttribObj.setValue("");
    }
}


/***
// Method Name: toDateFormat_DDMMYYY
// Method Description: Convert the date in to DD MM YYYY
// Created: Sept 07, 2015 04:09PM
// Author: Sabih Ahmed Khan
// param: srcDateAttribObj Desc: Attribute Object Pass
// return undefined Desc: N/A
// Revisions: 
***/
function toDateFormat_DDMMYYY(srcDateAttribObj) {
    var dateAttributeVal = srcDateAttribObj.getValue();
    if (dateAttributeVal) {
        var tempDateObj = new Date(dateAttributeVal || Date.now()),
            month = '' + (tempDateObj.getMonth() + 1),
            day = '' + tempDateObj.getDate(),
            year = tempDateObj.getFullYear();

        //not required
        /*if (month.length < 2) month = '0' + month;
        if (day.length < 2) day = '0' + day;*/
        dateString = [day, month, year].join('/');
        tempDateObj = new Date(dateString);
        srcDateAttribObj.setValue(tempDateObj);
    }
}


/**
Conversion Functions -- End
**/


/**
Validation Functions -- Start
**/


/***
// Method Name: IsAlpha
// Method Description: Tests if the value entered is Alphabetic either with space or not
// Created: Sept 04, 2015 04:09PM
// Author: Sabih Ahmed Khan
// param: srcTxtObj Desc: pass text obj
// return bool  Desc: true if matches the criteria
// Revisions: 
***/
function IsAlpha(srcTxtObjVal) {

    var AplhaRegEx = /^[a-zA-Z ]+$/; //regular expression for Alphabet Or Space Character

    if (AplhaRegEx.test(srcTxtObjVal)) {
        return true;
    }
    return false;
}

/***
// Method Name: IsAlphaNumeric
// Method Description: Tests if the value entered is Alphabetic or Numeric either with space or not
// Created: Sept 04, 2015 04:09PM
// Author: Sabih Ahmed Khan
// param: srcTxtObj Desc: pass text obj
// return bool  Desc: true if matches the criteria
// Revisions: 
***/
function IsAlphaNumeric(srcTxtObjVal) {

    var AplhaNumRegEx = /^[a-zA-Z][a-zA-Z0-9_\s]*$/; //regular expression for Alphabet Or Space Or Numeric Character

    if (AplhaNumRegEx.test(srcTxtObjVal)) {
        return true;
    }
    return false;
}


/***
// Method Name: IsNumeric
// Method Description: Tests if the value entered is Alphabetic or Numeric either with space or not
// Created: Sept 04, 2015 04:09PM
// Author: Sabih Ahmed Khan
// param: srcTxtObj Desc: pass text obj
// return bool  Desc: true if matches the criteria
// Revisions: 
***/
function IsNumeric(srcTxtObjVal) {

    var AplhaNumRegEx = /^[0-9]+$/; //regular expression for Numeric Character

    if (AplhaNumRegEx.test(srcTxtObjVal)) {
        return true;
    }
    return false;
}






/***
// Method Name: IsFieldExistsOnForm
// Method Description: Confirms if the field exists on form
// Created: Sept 07, 2015 04:09PM
// Author: Sabih Ahmed Khan
// param: fieldName Desc: pass field name
// return bool  Desc: true if Field Exists
// Revisions: 
***/
function IsFieldExistsOnForm(fieldName) {
    var fieldAttribute = Xrm.Page.getAttribute(fieldName);
    return fieldAttribute != null;
}

/***
// Method Name: IsSectionExistsOnForm
// Method Description: Confirms if the section exists on form
// Created: Sept 07, 2015 04:09PM
// Author: Sabih Ahmed Khan
// param: tabName, sectionName Desc: pass tab and section name
// return bool  Desc: true if Field Exists
// Revisions: 
***/
function IsSectionExistsOnForm(tabName, sectionName) {
    var section = Xrm.Page.ui.tabs.get(tabName).sections.get(sectionName);
    return section != null;
}

/***
// Method Name: IsTabExistsOnForm
// Method Description: Confirms if the section exists on form
// Created: Sept 07, 2015 04:09PM
// Author: Sabih Ahmed Khan
// param: tabName Desc: pass tab name
// return bool  Desc: true if Field Exists
// Revisions: 
***/
function IsTabExistsOnForm(tabName) {
    var tab = Xrm.Page.ui.tabs.get(tabName);
    return tab != null;
}


/**
Validation Functions -- end
**/




/**Utility Functions -- start
**/


/***
// Method Name: GetOptionSetText
// Method Description: Gets the option set Text
// Created: Sept 07, 2015 04:09PM
// Author: Sabih Ahmed Khan
// param: fieldName Desc: pass the field name
// return string  Desc: returns the option set Text Name
// Revisions: 
***/
function GetOptionSetText(fieldName) {
    if (IsFieldExistsOnForm(fieldName)) {
        var text = '';
        if (Xrm.Page.getAttribute(fieldName).getValue() != null) {
            text = Xrm.Page.getAttribute(fieldName).getSelectedOption().text;
        }
        return text;
    }
}

/***
// Method Name: GetLookupValueID
// Method Description: Gets the Look up Value ID
// Created: Sept 07, 2015 04:09PM
// Author: Sabih Ahmed Khan
// param: lookUpName Desc: pass the Look up Field Name
// return string  Desc: returns the lookupid
// Revisions: 
***/
function GetLookupValueID(lookUpName) {
    var name = '';
    var lookupid;
    var lookupObject = Xrm.Page.getAttribute(lookUpName);

    if (lookupObject != null) {
        var lookUpObjectValue = lookupObject.getValue();
        if ((lookUpObjectValue != null)) {
            name = lookUpObjectValue[0].name;
            lookupid = lookUpObjectValue[0].id;
        }
    }

    return lookupid;
}

/***
// Method Name: SetLookupValue
// Method Description: Sets the Look up Value for a particular Entity
// Created: Sept 07, 2015 04:09PM
// Author: Sabih Ahmed Khan
// param: lookUpName Desc: pass the Look up Field Name
// return string  Desc: returns the lookupid
// Revisions: 
***/
function SetLookupValue(lookup, name, id, entityType) {
    if (IsFieldExistsOnForm(lookup)) {
        var lookupid = null;
        var lookupObject = Xrm.Page.getAttribute(lookup);
        var value = new Array();
        value[0] = new Object();
        value[0].id = id;
        value[0].name = name;
        value[0].entityType = entityType;

        Xrm.Page.getAttribute(lookup).setValue(value);
    }
}

/***
// Method Name: GetFormType
// Method Description: get form type
// Created: Sept 07, 2015 04:09PM
// Author: Sabih Ahmed Khan
// param: N\A Desc: N\A
// return string  Desc: returns the form type
// Revisions: 
***/
function GetFormType() {
    var FormType = Xrm.Page.ui.getFormType();
    if (FormType != null) {
        switch (FormType) {
            case 1:
                return "create";
                break;
            case 2:
                return "update";
                break;
            case 3:
                return "readonly";
                break;
            case 4:
                return "disabled";
                break;
            case 6:
                return "bulkedit";
                break;
            default:
                return null;
        }
    }
}

/***
// Method Name: HideField
// Method Description: hides the field
// Created: Sept 07, 2015 04:09PM
// Author: Sabih Ahmed Khan
// param: fieldName Desc: field name that needs to be hidden
// return N/A  Desc: N/A
// Revisions: 
***/
function HideField(fieldName) {
    if (IsFieldExistsOnForm(fieldName)) {
        var fieldControl = Xrm.Page.ui.controls.get(fieldName);
        fieldControl.setVisible(false);
    }
}

/***
// Method Name: showField
// Method Description: shows the field
// Created: Sept 07, 2015 04:09PM
// Author: Sabih Ahmed Khan
// param: fieldName Desc: field name that needs to be hidden
// return N/A  Desc: N/A
// Revisions: 
***/
function showField(fieldName) {
    if (IsFieldExistsOnForm(fieldName)) {
        var fieldControl = Xrm.Page.ui.controls.get(fieldName);
        fieldControl.setVisible(true);
    }
}

/***
// Method Name: EnableField
// Method Description: Enable the field on the form
// Created: Sept 07, 2015 04:09PM
// Author: Sabih Ahmed Khan
// param: fieldName Desc: field name that needs to be enabled
// return N/A  Desc: N/A
// Revisions: 
***/
function EnableField(fieldName) {
    if (IsFieldExistsOnForm(fieldName)) {
        var fieldControl = Xrm.Page.ui.controls.get(fieldName);
        fieldControl.setDisabled(true);
    }
}


/***
// Method Name: DisableField
// Method Description: Disable the field on the form
// Created: Sept 07, 2015 04:09PM
// Author: Sabih Ahmed Khan
// param: fieldName Desc: field name that needs to be enabled
// return N/A  Desc: N/A
// Revisions: 
***/
function DisableField(fieldName) {
    if (IsFieldExistsOnForm(fieldName)) {
        var fieldControl = Xrm.Page.ui.controls.get(fieldName);
        fieldControl.setDisabled(false);
    }
}

/***
// Method Name: SetFocusField
// Method Description: Focus on the Field
// Created: Sept 07, 2015 04:09PM
// Author: Sabih Ahmed Khan
// param: fieldName Desc: field name that needs to be focused
// return N/A  Desc: N/A
// Revisions: 
***/
function SetFocusField(fieldName) {
    if (IsFieldExistsOnForm(fieldName)) {
        var fieldControl = Xrm.Page.ui.controls.get(fieldName);
        fieldControl.setFocus();
    }
}

/***
// Method Name: ShowTab
// Method Description: show the tab
// Created: Sept 07, 2015 04:09PM
// Author: Sabih Ahmed Khan
// param: tabName Desc: tab name that needs to be shown
// return N/A  Desc: N/A
// Revisions: 
***/
function ShowTab(tabName) {
    if (IsTabExistsOnForm(tabName)) {
        Xrm.Page.ui.tabs.get(tabName).setVisible(true);
    }
}

/***
// Method Name: HideTab
// Method Description: Hide the Tab
// Created: Sept 07, 2015 04:09PM
// Author: Sabih Ahmed Khan
// param: tabName Desc: tab name that needs to be hidden
// return N/A  Desc: N/A
// Revisions: 
***/
function HideTab(tabName) {
    if (IsTabExistsOnForm(tabName)) {
        Xrm.Page.ui.tabs.get(tabName).setVisible(false);
    }
}


/***
// Method Name: ShowSection
// Method Description: Show the section
// Created: Sept 07, 2015 04:09PM
// Author: Sabih Ahmed Khan
// param: tabName,sectionName Desc: tabName which contains the Section
// return N/A  Desc: N/A
// Revisions: 
***/
function ShowSection(tabName, sectionName) {
    if (IsSectionExistsOnForm(tabName, sectionName)) {
        Xrm.Page.ui.tabs.get(tabName).sections.get(sectionName).setVisible(true);
    }
}

/***
// Method Name: HideSection
// Method Description: Show the section
// Created: Sept 07, 2015 04:09PM
// Author: Sabih Ahmed Khan
// param: tabName,sectionName Desc: tabName which contains the Section
// return N/A  Desc: N/A
// Revisions: 
***/
function HideSection(tabName, sectionName) {
    if (IsSectionExistsOnForm(tabName, sectionName)) {
        Xrm.Page.ui.tabs.get(tabName).sections.get(sectionName).setVisible(false);
    }
}


/***
// Method Name: sectiondisable
// Method Description: Disable the Section
// Created: Sept 07, 2015 04:09PM
// Author: N/A
// param: tabName,sectionName Desc: tabName which contains the Section
// return N/A  Desc: N/A
// Revisions: 
***/
function sectiondisable(sectionname, disablestatus) {
    var ctrlName = Xrm.Page.ui.controls.get();
    for (var i in ctrlName) {
        var ctrl = ctrlName[i];
        var ctrlSection = ctrl.getParent().getName();
        if (ctrlSection == sectionname) {
            ctrl.setDisabled(disablestatus);
        }
    }
}

/***
// Method Name: setTodayDate
// Method Description: Function Moved Sets the Today Date
// Created: Sept 07, 2015 04:09PM
// Author: N/A
// param: dateFieldAttrib Desc: date field attribute to be passed in
// return N/A  Desc: N/A
// Revisions: 
***/
function setTodayDate(dateFieldAttrib) {
    var currentDate = new Date();
    dateFieldAttrib.setValue(currentDate);
}
/**Utility Functions -- end
**/

        
Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s