Question

Hai, How to make a field visible in Contact Communication Option Detail in Contact section.

For contact communication detail in Contact section, we are trying to make a field visible when we select any one of the social options or phone options. We have created a replacing object of contact communication option and added the text column. and i was created replacing schema with  ContactCommunicationDetailV2 with title Contact communication options.Here i need text filed will be  15 characters only.

Here the code : I was Added note in attributes. inside methods i was written this.show() previously  but its not applying  can you please crack this code how to get the text field. 

define("ContactCommunicationDetailV2", ["ContactCommunicationDetailV2Resources", "terrasoft", "ViewUtilities",

    "ConfigurationConstants", "ModalBox",

    "LookupUtilities", "BaseCommunicationViewModel", "ConfigurationItemGenerator", "BaseDetailV2"],

    function(resources, Terrasoft, ViewUtilities, ConfigurationConstants, ModalBox) {

        return {

            entitySchemaName: "ContactCommunication",

            attributes: {

                

                 "UsrNote": {

                   dataValueType: Terrasoft.DataValueType.TEXT,

               /**

                 * ######### ######### #### ###### "########"

                 */

                ToolsMenuItems: {dataValueType: Terrasoft.DataValueType.COLLECTION},

                /**

                 * ######### ######### #### ###### "########"

                 */

                PhonesMenuItems: {dataValueType: Terrasoft.DataValueType.COLLECTION},

                /**

                 * ######### ###. ##### #### ###### "########"

                 */

                SocialNetworksMenuItems: {dataValueType: Terrasoft.DataValueType.COLLECTION},

                /**

                 * ######### ##### ####### #####

                 */

                MenuItems: {dataValueType: Terrasoft.DataValueType.COLLECTION},

                /**

                 * ####### "###### #########"

                 */

                IsDataLoaded: {dataValueType: Terrasoft.DataValueType.BOOLEAN},

                /**

                 * ######### ####### ##### ## ########

                 */

                DeletedItems: {dataValueType: Terrasoft.DataValueType.COLLECTION},

                /**

                 * ######### ######### #### "###### ## #############"

                 */

                RestrictionsMenuItems: {dataValueType: Terrasoft.DataValueType.COLLECTION},

                /**

                 * ######### ######## ## #############

                 */

                RestrictionsCollection: {dataValueType: Terrasoft.DataValueType.COLLECTION},

                /**

                 * ######## ##### ####### #####

                 */

                "CommunicationTypes" : {

                    type: Terrasoft.ViewModelColumnType.VIRTUAL_COLUMN,

                    dataValueType: Terrasoft.DataValueType.COLLECTION

                }

            },

            messages: {

                /**

                 * @message ResultSelectedRows

                 * ### ###### LookupUtilities

                 */

                "ResultSelectedRows": {

                    mode: Terrasoft.MessageMode.PTP,

                    direction: Terrasoft.MessageDirectionType.SUBSCRIBE

                },

                /**

                 *

                 */

                "UpdateCardProperty": {

                    mode: Terrasoft.MessageMode.PTP,

                    direction: Terrasoft.MessageDirectionType.PUBLISH

                },

                "ValidateDetail": {

                    mode: Terrasoft.MessageMode.PTP,

                    direction: Terrasoft.MessageDirectionType.SUBSCRIBE

                },

                "DetailValidated": {

                    mode: Terrasoft.MessageMode.PTP,

                    direction: Terrasoft.MessageDirectionType.PUBLISH

                },

                "SaveDetail": {

                    mode: Terrasoft.MessageMode.PTP,

                    direction: Terrasoft.MessageDirectionType.SUBSCRIBE

                },

                "DetailSaved": {

                    mode: Terrasoft.MessageMode.PTP,

                    direction: Terrasoft.MessageDirectionType.PUBLISH

                }

            },

            methods: {

                //TODO delete

                getDataGridName: function() {

                    return "";

                },

                /**

                 * #########, ######## ## ### ######## ##### ##### ## ##### ###. #####.

                 * @private

                 * @param {String} communicationType ######## #### ########.

                 * @return {Boolean} ######## ## ### ######## ##### ##### ## ##### ###. #####.

                 */

                isSocialNetworkType: function(communicationType) {

                    communicationType = communicationType.value || communicationType;

                    return ConfigurationConstants.SocialNetworksCommunicationTypes.indexOf(communicationType) !== -1;

                },

                isPhoneType: function(communicationType) {

                    communicationType = communicationType.value || communicationType;

                    return ConfigurationConstants.PhonesCommunicationTypes.indexOf(communicationType) !== -1;

                },

                /**

                 * ######### ######### ####.

                 * @param {String} moduleName ######## ######.

                 * @private

                 */

                closeModalBox: function(moduleName) {

                    var modalBoxContainer = this.get("ModalBoxContainer");

                    if (modalBoxContainer) {

                        ModalBox.close();

                    }

                    this.sandbox.unloadModule(this.sandbox.id + "_" + moduleName);

                },

                /**

                 * ############ ######## ###### ###### # ########## #####.

                 * @private

                 */

                onLookUpClick: function() {

                    var modalBoxSize = {

                        minHeight : "1",

                        minWidth : "1",

                        maxHeight : "100",

                        maxWidth : "100"

                    };

                    var modalBoxContainer = ModalBox.show(modalBoxSize);

                    this.set("ModalBoxContainer", modalBoxContainer);

                    ModalBox.setSize(820, 600);

                    this.sandbox.loadModule("FindContactsInSocialNetworksModule", {

                        renderTo: modalBoxContainer

                    });

                    this.sandbox.subscribe("ResultSelectedRows", function() {

                        this.closeModalBox("FindContactsInSocialNetworksModule");

                    }, this, [this.sandbox.id + "_FindContactsInSocialNetworksModule"]);

                },

                /**

                 * ############## ######### ######### ####.

                 * @private

                 */

                getToolsMenuItems: function() {

                    var menuItems = this.Ext.create("Terrasoft.BaseViewModelCollection");

                    var communicationTypes = this.get("CommunicationTypes");

                    var phonesMenuItems = Ext.create("Terrasoft.BaseViewModelCollection");

                    var socialNetworksMenuItems = Ext.create("Terrasoft.BaseViewModelCollection");

                    var phonesMenuItem = Ext.create("Terrasoft.BaseViewModel", {

                        values: {

                            Caption: this.get("Resources.Strings.PhoneMenuItem"),

                            Id: Terrasoft.utils.generateGUID(),

                            Items: phonesMenuItems

                        }

                    });

                    var socialNetworksMenuItem = Ext.create("Terrasoft.BaseViewModel", {

                        values: {

                            Caption: this.get("Resources.Strings.SocialNetworksMenuItem"),

                            Id: Terrasoft.utils.generateGUID(),

                            Items: socialNetworksMenuItems

                        }

                    });

                    communicationTypes.each(function(item) {

                        var menuItem = this.getButtonMenuItem(item);

                        var typeId = item.get("Id");

                        if (this.isPhoneType(typeId)) {

                            phonesMenuItems.addItem(menuItem);

                            return;

                        }

                        if (this.isSocialNetworkType(typeId)) {

                            socialNetworksMenuItems.addItem(menuItem);

                            return;

                        }

                        menuItems.addItem(menuItem);

                    }, this);

                    menuItems.addItem(phonesMenuItem);

                    menuItems.addItem(socialNetworksMenuItem);

                    var restrictionsItem = this.getRestrictionsMenuItem();

                    menuItems.addItem(restrictionsItem);

                    return menuItems;

                },

                /**

                 * ########## ##### #### #### "###### ## #########".

                 * @protected

                 * @return {Terrasoft.BaseViewModel} ###### ############# ###### ####.

                 */

                getRestrictionsMenuItem: function() {

                    var restrictionsMenuItems = Ext.create("Terrasoft.BaseViewModelCollection");

                    var restrictionsItem = Ext.create("Terrasoft.BaseViewModel", {

                        values: {

                            Caption: this.get("Resources.Strings.DoNotUseCommunicationCaption"),

                            Id: Terrasoft.utils.generateGUID(),

                            Items: restrictionsMenuItems

                        }

                    });

                    var restrictions = this.getRestrictions();

                    Terrasoft.each(restrictions, function(restrictionConfig, restrictionName) {

                        var restrictionMenuItem = this.Ext.create("Terrasoft.BaseViewModel", {

                            values: {

                                Id: Terrasoft.utils.generateGUID(),

                                Caption: restrictionConfig.Caption,

                                Tag: restrictionName,

                                Click: { bindTo: "doNotUseCommunication" }

                            }

                        });

                        restrictionsMenuItems.addItem(restrictionMenuItem);

                    }, this);

                    return restrictionsItem;

                },

                /**

                 * ########## ####### ## #############.

                 * @protected

                 * @return {Object} ######, ####### ######## ######## ######## ## #############.

                 */

                getRestrictions: function() {

                    return {

                        "DoNotUseEmail": {

                            "RestrictCaption": this.get("Resources.Strings.DoNotUseEmail"),

                            "Caption": this.get("Resources.Strings.DoNotUseEmailCaption")

                        },

                        "DoNotUseCall": {

                            "RestrictCaption": this.get("Resources.Strings.DoNotUseCall"),

                            "Caption": this.get("Resources.Strings.DoNotUseCallCaption")

                        },

                        "DoNotUseSms": {

                            "RestrictCaption": this.get("Resources.Strings.DoNotUseSms"),

                            "Caption": this.get("Resources.Strings.DoNotUseSmsCaption")

                        },

                        "DoNotUseFax": {

                            "RestrictCaption": this.get("Resources.Strings.DoNotUseFax"),

                            "Caption": this.get("Resources.Strings.DoNotUseFaxCaption")

                        },

                        "DoNotUseMail": {

                            "RestrictCaption": this.get("Resources.Strings.DoNotUseMail"),

                            "Caption": this.get("Resources.Strings.DoNotUseMailCaption")

                        }

                    };

                },

                getButtonMenuItem: function(item) {

                    var name = item.get("Name");

                    var value = item.get("Id");

                    return Ext.create("Terrasoft.BaseViewModel", {

                        values: {

                            Id: value,

                            Caption: name,

                            Tag: value,

                            Click: { bindTo: "addItem" }

                        }

                    });

                },

                /**

                 * ########## ####### ####### #### ######## ## ############# ####### #####.

                 * @param {String} tag ##### ###### ####.

                 */

                doNotUseCommunication: function(tag) {

                    if (this.get("IsDetailCollapsed")) {

                        return;

                    }

                    var restrictions = this.getRestrictions();

                    var collection = this.get("RestrictionsCollection");

                    if (!collection.contains(tag)) {

                        collection.add(tag, this.getRestrictionsCollectionItem(tag, restrictions[tag].RestrictCaption));

                        this.changeCardPageButtonsVisibility(true);

                    }

                },

                /**

                 * ########## ##### ######### CheckBox-#.

                 */

                onCheckChange: function() {

                    this.setSaveDiscardButtonsVisible(true);

                },

                /**

                 * ########## ############ ######## "###### ## #############".

                 * @param {Object} itemConfig ###### ## ############ ######## # ContainerList.

                 * @param {Terrasoft.BaseViewModel} item #######, ### ######## ###### ########## ########## view.

                 */

                getRestrictionsItemConfig: function(itemConfig, item) {

                    //todo: lazy init

                    var config = ViewUtilities.getContainerConfig(

                            "restrictions-container", ["restrictions-container-class", "control-width-15"]);

                    itemConfig.config = config;

                    var checkBoxLabelConfig = {

                        className: "Terrasoft.Label",

                        caption: {bindTo: "Name"},

                        classes: {labelClass: ["detail-label-user-class"]},

                        inputId: item.get("Id") + "-el"

                    };

                    var checkBoxEditConfig = {

                        className: "Terrasoft.CheckBoxEdit",

                        id: item.get("Id"),

                        checked: {bindTo: "Value"},

                        checkedchanged: {bindTo: "onCheckChange"}

                    };

                    config.items.push(checkBoxLabelConfig, checkBoxEditConfig);

                },

                /**

                 * ########## ############ ######## ######## #####.

                 * @param {Object} itemConfig ###### ## ############ ######## # ContainerList.

                 * @private

                 */

                getItemViewConfig: function(itemConfig) {

                    var itemViewConfig = this.get("itemViewConfig");

                    if (itemViewConfig) {

                        itemConfig.config = itemViewConfig;

                        return;

                    }

                    var config = ViewUtilities.getContainerConfig("item-view",

                        ["detail-edit-container-user-class", "control-width-15"]);

                    var typeMenuItems = [];

                    var communicationTypes = this.get("CommunicationTypes");

                    communicationTypes.each(function(item) {

                        var name = item.get("Name");

                        var value = item.get("Id");

                        typeMenuItems.push({

                            id: value,

                            caption: name,

                            tag: value,

                            click: { bindTo: "typeChanged" }

                        });

                    }, this);

                    var typeButtonConfig = {

                        id: "type",

                        className: "Terrasoft.Button",

                        classes: {

                            wrapperClass: ["label-wrap", "detail-type-btn-user-class"],

                            textClass: ["detail-type-btn-inner-user-class"]

                        },

                        style: Terrasoft.controls.ButtonEnums.style.TRANSPARENT,

                        selectors: {wrapEl: "#type"},

                        caption: {

                            bindTo: "CommunicationType",

                            bindConfig: { converter: "typedStringValueConverter" }

                        },

                        menu: { items: typeMenuItems }

                    };

                    var deleteButtonConfig = {

                        id: "delete",

                        className: "Terrasoft.Button",

                        classes: {

                            wrapperClass: "detail-delete-btn-user-class",

                            imageClass: ["detail-delete-btn-image-user-class", "close-button-background-no-repeat"]

                        },

                        imageConfig: resources.localizableImages.DeleteIcon,

                        style: Terrasoft.controls.ButtonEnums.style.TRANSPARENT,

                        selectors: {wrapEl: "#delete"},

                        click: {bindTo: "deleteItem"}

                    };

                    var editConfig = {

                        id: "edit",

                        className: "Terrasoft.TextEdit",

                        classes: {wrapClass: ["communication-lookup-img-user-class", "detail-edit-user-class"]},

                        rightIconClasses: ["lookup-edit-right-icon"],

                        value: { bindTo: "Number" },

                        readonly: {

                            bindTo: "CommunicationType",

                            bindConfig: { converter: "isSocialNetworkType" }

                        },

                        enableRightIcon: {

                            bindTo: "CommunicationType",

                            bindConfig: { converter: "isSocialNetworkType" }

                        },

                        rightIconClick: { bindTo: "onLookUpClick" }

                    };

                    config.items.push(typeButtonConfig, editConfig, deleteButtonConfig);

                    itemConfig.config = config;

                    this.set("itemViewConfig", config);

                },

                /**

                 * ####### ####### ######### "###### ## #############".

                 * @param {String} id ############# ####### ## #############.

                 * @param {String} name ### ####### ## #############.

                 * @return {Terrasoft.BaseViewModel} ###### ############# ########## ########.

                 */

                getRestrictionsCollectionItem: function(id, name) {

                    var collectionItem = Ext.create("Terrasoft.BaseViewModel", {

                        values: {

                            Name: name,

                            Id: id,

                            Value: true

                        }

                    });

                    collectionItem.sandbox = this.sandbox;

                    collectionItem.onCheckChange = this.onCheckChange;

                    collectionItem.setSaveDiscardButtonsVisible = this.setSaveDiscardButtonsVisible;

                    return collectionItem;

                },

                /**

                 * ######### ######### "###### ## #############".

                 */

                getEntityRestrictions: function() {

                    var restrictions = ["DoNotUseEmail", "DoNotUseCall", "DoNotUseSms", "DoNotUseFax", "DoNotUseMail"];

                    var select = this.Ext.create("Terrasoft.EntitySchemaQuery", {rootSchemaName: "Contact"});

                    Terrasoft.each(restrictions, function(item) {

                        select.addColumn(item);

                    }, this);

                    select.getEntity(this.get("MasterRecordId"), function(response) {

                        if (!response.success) {

                            return;

                        }

                        var entity = response.entity;

                        var collection = this.get("RestrictionsCollection");

                        collection.clear();

                        Terrasoft.each(restrictions, function(restrictionName) {

                            if (entity.get(restrictionName)) {

                                var restrictionCaption = this.get("Resources.Strings." + restrictionName);

                                var restrictionsCollectionItem =

                                    this.getRestrictionsCollectionItem(restrictionName, restrictionCaption);

                                collection.add(restrictionName, restrictionsCollectionItem);

                            }

                        }, this);

                    }, this);

                },

                /**

                 * ######### ######## #####.

                 * @private

                 * @param {Function} callback ####### ######### ######.

                 * @param {Terrasoft.BaseSchemaViewModel} scope ######## ########## ####### ######### ######.

                 */

                loadContainerListData: function(callback, scope) {

                    if (this.get("IsDetailCollapsed")) {

                        callback.call(scope);

                        return;

                    }

                    var collection = this.get("Collection");

                    collection.clear();

                    var select = this.Ext.create("Terrasoft.EntitySchemaQuery", {

                        rootSchema: this.entitySchema,

                        rowViewModelClassName: "Terrasoft.BaseCommunicationViewModel"

                    });

                    select.addColumn(this.primaryDisplayColumnName);

                    var createdOnColumn = select.addColumn("CreatedOn");

                    createdOnColumn.orderDirection = Terrasoft.OrderDirection.ASC;

                    select.addColumn("Id");

                    select.addColumn("CommunicationType");

                    select.addColumn("Position");

                    select.addColumn("SocialMediaId");

                    select.addColumn("SearchNumber");

                    select.addColumn("Contact");

                    select.filters.addItem(Terrasoft.createColumnFilterWithParameter(Terrasoft.ComparisonType.EQUAL,

                        "[CommunicationType:Id:CommunicationType].UseforContacts", true));

                    select.filters.addItem(this.get("Filter"));

                    select.getEntityCollection(function(response) {

                        if (response.success) {

                            var entityCollection = response.collection;

                            var communicationTypes = this.get("CommunicationTypes");

                            entityCollection.each(function(item) {

                                item.columns = this.columns;

                                item.sandbox = this.sandbox; // todo: ### ### ContainerList

                                item.set("CommunicationTypes", communicationTypes);

                            }, this);

                            collection.loadAll(entityCollection);

                            this.set("IsDataLoaded", true);

                        }

                        callback.call(scope);

                    }, this);

                    this.getEntityRestrictions();

                },

                /**

                 * ########## ###### "#########" # "######" ########, ## ####### ######### ######.

                 * @param {Boolean} isVisible #### ######, ## ###### "#########" # "######" ######## ############.

                 */

                setSaveDiscardButtonsVisible: function(isVisible) {

                    var options = ["ShowSaveButton", "ShowDiscardButton"];

                    Terrasoft.each(options, function(option) {

                        this.sandbox.publish("UpdateCardProperty", {

                            key: option,

                            value: isVisible

                        }, [this.sandbox.id]);

                    }, this);

                },

                /**

                 * ########## ###### "#########" # "######" ########, ## ####### ######### ######.

                 * @param {Boolean} isVisible #### ######, ## ###### "#########" # "######" ######## ############.

                 */

                changeCardPageButtonsVisibility: function(isVisible) {

                    this.setSaveDiscardButtonsVisible(isVisible);

                },

                /**

                 * ########## ######### ######## #####.

                 * @param {Terrasoft.BaseViewModel} item ########## #######.

                 * @param {Object} config ######## ######## ######### ########.

                 */

                onItemChanged: function(item, config) {

                    if (config && config.OperationType === "Delete") {

                        this.deleteItem(item);

                    }

                    this.changeCardPageButtonsVisibility(true);

                },

                /**

                 * ####### ######## ##### # ######.

                 * @param {Terrasoft.BaseViewModel} item ######## #####.

                 */

                deleteItem: function(item) {

                    var deletedItems = this.get("DeletedItems");

                    var collection = this.get("Collection");

                    collection.removeByKey(item.get("Id"));

                    deletedItems.addItem(item);

                },

                /**

                 * ######### ######## ##### ## ######.

                 * @private

                 * @param {String} tag ############# ######## #####.

                 * return {Terrasoft.BaseCommunicationViewModel} ######## #####.

                 */

                addItem: function(tag) {

                    if (this.get("IsDetailCollapsed")) {

                        return;

                    }

                    var communicationTypes = this.get("CommunicationTypes");

                    var communicationType = communicationTypes.get(tag);

                    var newItem = this.Ext.create("Terrasoft.BaseCommunicationViewModel", {

                        entitySchema: this.entitySchema,

                        columns: this.columns

                    });

                    newItem.set("CommunicationTypes", communicationTypes);

                    newItem.sandbox = this.sandbox;

                    newItem.setDefaultValues(function() {

                        newItem.set("CommunicationType", {

                            value: communicationType.get("Id"),

                            displayValue: communicationType.get("Name")

                        });

                        newItem.set("Contact", {

                            value: this.get("MasterRecordId")

                        });

                        var itemKey = newItem.get("Id");

                        var collection = this.get("Collection");

                        collection.add(itemKey, newItem);

                        this.changeCardPageButtonsVisibility(true);

                    }, this);

                    return newItem;

                },

                /**

                 * ######### ######## ###### ######.

                 * @private

                 */

                loadData: function(callback, scope) {

                    this.initCommunicationTypes(function() {

                        var toolsMenuItems = this.getToolsMenuItems();

                        var menuItems = this.get("ToolsMenuItems");

                        menuItems.clear();

                        menuItems.loadAll(toolsMenuItems);

                        this.loadContainerListData(callback, scope);

                    }, this);

                },

                /**

                 * ############## #########.

                 */

                initCollections: function() {

                    var collection = this.get("Collection");

                    collection.on("itemChanged", this.onItemChanged, this);

                    this.set("ToolsMenuItems", this.Ext.create("Terrasoft.BaseViewModelCollection"));

                    this.set("RestrictionsCollection", Ext.create("Terrasoft.BaseViewModelCollection"));

                    this.set("DeletedItems",

                        this.Ext.create("Terrasoft.BaseViewModelCollection", { entitySchema: this.entitySchema }));

                },

                initCommunicationTypes: function(callback, scope) {

                    var select = this.Ext.create("Terrasoft.EntitySchemaQuery", {rootSchemaName: "CommunicationType"});

                    select.addColumn("Id");

                    select.addColumn("Name");

                    select.filters.addItem(Terrasoft.createColumnFilterWithParameter(Terrasoft.ComparisonType.EQUAL,

                        "UseforContacts", true));

                    select.getEntityCollection(function(response) {

                        if (response.success) {

                            var entityCollection = response.collection;

                            this.set("CommunicationTypes", entityCollection);

                        }

                        callback.call(scope);

                    }, this);

                },

                subscribeSandboxEvents: function() {

                    this.callParent(arguments);

                    this.sandbox.subscribe("ResultSelectedRows", this.save, this, [this.sandbox.id]);

                    this.sandbox.subscribe("ValidateDetail", this.validateDetail, this, [this.sandbox.id]);

                    this.sandbox.subscribe("SaveDetail", this.save, this, [this.sandbox.id]);

                },

                validateDetail: function() {

                    var resultObject = {

                        success: this.validateItems()

                    };

                    if (!resultObject.success) {

                        resultObject.message = this.getValidationMessage();

                    }

                    this.sandbox.publish("DetailValidated", resultObject, [this.sandbox.id]);

                    return true;

                },

                getValidationMessage: function(message) {

                    var messageTemplate = this.get("Resources.Strings.ValidationErrorTemplate");

                    return this.Ext.String.format(messageTemplate,

                        this.get("Resources.Strings.DetailCaption") + (message ? ":" + message : ""));

                },

                /**

                 * ############## ######.

                 * @private

                 */

                init: function(callback, scope) {

                    this.callParent([function() {

                        this.initCollections();

                        this.loadData(callback, scope);

                    }, this]);

                },

                /**

                 * ########## ############# # ########### ######.

                 * @param {Boolean} isCollapsed ######### ## ######.

                 * @private

                 */

                onDetailCollapsedChanged: function(isCollapsed) {

                    this.callParent(arguments);

                    this.set("IsDetailCollapsed", isCollapsed);

                    if (!isCollapsed && !this.get("IsDataLoaded")) {

                        this.loadContainerListData(Terrasoft.emptyFn);

                    }

                },

                /**

                 * ######### ######.

                 * @private

                 */

                updateDetail: function() {

                    this.callParent(arguments);

                    var detailInfo = this.sandbox.publish("GetDetailInfo", null, [this.sandbox.id]) || {};

                    this.set("MasterRecordId", detailInfo.masterRecordId);

                    this.set("DetailColumnName", detailInfo.detailColumnName);

                    this.set("Filter", detailInfo.filter);

                    this.set("CardPageName", detailInfo.cardPageName);

                    this.set("SchemaName", detailInfo.schemaName);

                    this.set("DefaultValues", detailInfo.defaultValues);

                    this.set("IsDataLoaded", false);

                    this.loadContainerListData(Terrasoft.emptyFn);

                    var deletedItems = this.get("DeletedItems");

                    deletedItems.clear();

                },

                /**

                 * ######### ######### ### ######## ## ############# ####### #####.

                 */

                getSaveRestrictionsQuery: function() {

                    var collection = this.get("RestrictionsCollection");

                    if (collection.isEmpty()) {

                        return null;

                    }

                    var update = Ext.create("Terrasoft.UpdateQuery", { rootSchemaName: "Contact" });

                    update.enablePrimaryColumnFilter(this.get("MasterRecordId"));

                    collection.each(function(item) {

                        update.setParameterValue(item.get("Id"), item.get("Value"), Terrasoft.DataValueType.BOOLEAN);

                    }, this);

                    return update;

                },

                /**

                 * ####### ######## #####.

                 */

                getDeleteItemsQueries: function() {

                    var deletedItems = this.get("DeletedItems");

                    var deleteQueries = [];

                    deletedItems.each(function(item) {

                        var primaryColumnValue = item.get(item.primaryColumnName);

                        var deleteQuery = item.getDeleteQuery();

                        deleteQuery.enablePrimaryColumnFilter(primaryColumnValue);

                        deleteQueries.push(deleteQuery);

                    }, this);

                    return deleteQueries;

                },

                /**

                 * ######### ########## # ##### ######## #####.

                 */

                getSaveItemsQueries: function() {

                    var collection = this.get("Collection");

                    var saveQueries = [];

                    collection.each(function(item) {

                        if (item.isChanged() && item.validate()) {

                            saveQueries.push(item.getSaveQuery());

                        }

                    }, this);

                    return saveQueries;

                },

                validateItems: function() {

                    var collection = this.get("Collection");

                    var result = true;

                    collection.each(function(item) {

                        return (result = !item.isChanged() || item.validate());

                    }, this);

                    return result;

                },

                /**

                 * ######### ######### ######. ########### ### ####### ## ###### ######### ########, ####### ########

                 * ######.

                 */

                save: function() {

                    var restrictionsQuery = this.getSaveRestrictionsQuery();

                    var queries = restrictionsQuery ? [restrictionsQuery] : [];

                    var saveQueries = this.getSaveItemsQueries();

                    queries = queries.concat(saveQueries);

                    var deleteQueries = this.getDeleteItemsQueries();

                    queries = queries.concat(deleteQueries);

                    if (Ext.isEmpty(queries)) {

                        this.publishSaveResponse({

                            success: true

                        });

                        return true;

                    }

                    var batchQuery = Ext.create("Terrasoft.BatchQuery");

                    Terrasoft.each(queries, function(query) {

                        batchQuery.add(query);

                    }, this);

                    batchQuery.execute(this.onSaved, this);

                    return true;

                },

                onSaved: function(response) {

                    var message = response.ResponseStatus && response.ResponseStatus.Message;

                    if (response.success && !message) {

                        var deletedItems = this.get("DeletedItems");

                        var collection = this.get("Collection");

                        collection.each(function(item) {

                            item.isNew = false;

                            item.changedValues = null;

                        }, this);

                        deletedItems.clear();

                        this.publishSaveResponse(response);

                    } else {

                        this.publishSaveResponse({

                            success: false,

                            message: this.getValidationMessage(message)

                        });

                    }

                },

                publishSaveResponse: function(config) {

                    this.sandbox.publish("DetailSaved", config, [this.sandbox.id]);

                }

            },

            diff: /**SCHEMA_DIFF*/[

                {

                    "operation": "merge",

                    "name": "Detail",

                    "values": {

                        caption: {bindTo: "Resources.Strings.DetailCaption"}

                    }

                },

                {

                    "operation": "insert",

                    "name": "CommunicationsContainer",

                    "parentName": "Detail",

                    "propertyName": "items",

                    "values":

                    {

                        generator: "ConfigurationItemGenerator.generateContainerList",

                        idProperty: "Id",

                        collection: "Collection",

                        observableRowNumber: 10,

                        onGetItemConfig: "getItemViewConfig"

                    }

                },

                {

                    "operation": "insert",

                    "name": "RestrictionsContainer",

                    "parentName": "Detail",

                    "propertyName": "items",

                    "values":

                    {

                        generator: "ConfigurationItemGenerator.generateContainerList",

                        idProperty: "Id",

                        collection: "RestrictionsCollection",

                        observableRowNumber: 10,

                        onGetItemConfig: "getRestrictionsItemConfig"

                    }

                },

                {

                    "operation": "insert",

                    "name": "AddButton",

                    "parentName": "Detail",

                    "propertyName": "tools",

                    "values": {

                        visible: {bindTo: "getToolsVisible"},

                        itemType: Terrasoft.ViewItemType.BUTTON,

                        "caption": {"bindTo": "Resources.Strings.AddButtonCaption"},

                        controlConfig: {

                            menu: {

                                items: {bindTo: "ToolsMenuItems"}

                            }

                        }

                    }

                }

            ]/**SCHEMA_DIFF*/

        };

    });

 

Kindly help us resolve this as early as possible.

Thanks in advance

Like 0

Like

1 comments

Hello pravveen!



Unfortunately it`s hard to tell why exactly your code is not applying. Basically, to add some custom fields you should check how other field, base fields, are added to the page and do it in the similar way.



Also, if you will have any further questions specify more accurately what exactly you are trying to achieve.



Best regards,

Alex

Show all comments