Source: products/argos-saleslogix/src/Views/OpportunityContact/Edit.js

import declare from 'dojo/_base/declare';
import lang from 'dojo/_base/lang';
import format from '../../Format';
import Edit from 'argos/Edit';
import getResource from 'argos/I18n';

const resource = getResource('opportunityContactEdit');

/**
 * @class crm.Views.OpportunityContact.Edit
 *
 * @extends argos.Edit
 *
 * @requires argos.Utility
 */
const __class = declare('crm.Views.OpportunityContact.Edit', [Edit], {
  // Localization
  titleText: resource.titleText,
  nameText: resource.nameText,
  accountNameText: resource.accountNameText,
  contactTitleText: resource.contactTitleText,
  salesRoleText: resource.salesRoleText,
  salesRoleTitleText: resource.salesRoleTitleText,
  personalBenefitsText: resource.personalBenefitsText,
  strategyText: resource.strategyText,
  issuesText: resource.issuesText,
  standingText: resource.standingText,
  standingTitleText: resource.standingTitleText,
  contactText: resource.contactText,
  competitorPrefText: resource.competitorPrefText,

  // View Properties
  entityName: 'OpportunityContact',
  id: 'opportunitycontact_edit',
  insertSecurity: 'Entities/Contact/Add',
  updateSecurity: 'Entities/Contact/Edit',
  querySelect: [
    'Contact/Account/AccountName',
    'Contact/NameLF',
    'Contact/Title',
  ],
  queryInclude: [
    '$permissions',
  ],
  resourceKind: 'opportunityContacts',

  createLayout: function createLayout() {
    return this.layout || (this.layout = [{
      title: this.contactText,
      name: 'ContactSection',
      children: [{
        formatValue: format.nameLF,
        label: this.nameText,
        name: 'ContactName',
        type: 'text',
        property: 'Contact.NameLF',
        readonly: true,
        exclude: true,
      }, {
        label: this.accountNameText,
        name: 'ContactAccountName',
        property: 'Contact.AccountName',
        type: 'text',
        readonly: true,
        exclude: true,
      }, {
        label: this.contactTitleText,
        name: 'ContactTitle',
        property: 'Contact.Title',
        type: 'text',
        readonly: true,
        exclude: true,
      }],
    }, {
      label: this.salesRoleText,
      name: 'SalesRole',
      property: 'SalesRole',
      type: 'picklist',
      title: this.salesRoleTitleText,
      picklist: 'Role',
    }, {
      label: this.standingText,
      name: 'Standing',
      property: 'Standing',
      type: 'picklist',
      title: this.standingTitleText,
      picklist: 'Standing',
    }, {
      label: this.personalBenefitsText,
      name: 'PersonalBenefits',
      property: 'PersonalBenefits',
      type: 'text',
    }, {
      label: this.competitorPrefText,
      name: 'Competitors',
      property: 'Competitors',
      textProperty: 'CompetitorName',
      view: 'competitor_related',
      type: 'lookup',
    }, {
      label: this.strategyText,
      name: 'Strategy',
      property: 'Strategy',
      type: 'textarea',
    }, {
      label: this.issuesText,
      name: 'Issues',
      property: 'Issues',
      type: 'textarea',
    }, {
      name: 'OpportunityKey',
      property: 'Opportunity.$key',
      type: 'hidden',
      include: true,
    }, {
      name: 'ContactKey',
      property: 'Contact.$key',
      type: 'hidden',
      include: true,
    }]);
  },
});

lang.setObject('Mobile.SalesLogix.Views.OpportunityContact.Edit', __class);
export default __class;