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

import declare from 'dojo/_base/declare';
import lang from 'dojo/_base/lang';
import string from 'dojo/string';
import Detail from 'argos/Detail';
// import _LegacySDataDetailMixin from 'argos/_LegacySDataDetailMixin';
import getResource from 'argos/I18n';
import format from 'crm/Format';
import MODEL_NAMES from '../../Models/Names';

const resource = getResource('opportunityContactDetail');

/**
 * @class crm.Views.OpportunityContact.Detail
 *
 * @extends argos.Detail
 * @mixins argos._LegacySDataDetailMixin
 */
const __class = declare('crm.Views.OpportunityContact.Detail', [Detail/* , _LegacySDataDetailMixin */], {
  // Localization
  titleText: resource.titleText,
  accountText: resource.accountText,
  contactTitleText: resource.contactTitleText,
  nameText: resource.nameText,
  salesRoleText: resource.salesRoleText,
  strategyText: resource.strategyText,
  personalBenefitsText: resource.personalBenefitsText,
  standingText: resource.standingText,
  issuesText: resource.issuesText,
  competitorNameText: resource.competitorNameText,
  removeContactTitleText: resource.removeContactTitleText,
  confirmDeleteText: resource.confirmDeleteText,
  contactText: resource.contactText,
  entityText: resource.entityText,

  // View Properties
  id: 'opportunitycontact_detail',
  editView: 'opportunitycontact_edit',
  security: 'Entities/Contact/View',
  querySelect: [],
  resourceKind: 'opportunityContacts',
  modelName: MODEL_NAMES.OPPORTUNITYCONTACT,

  removeContact: function removeContact() {
    const confirmMessage = string.substitute(this.confirmDeleteText, [this.entry.Contact.NameLF]);
    if (!confirm(confirmMessage)) { // eslint-disable-line
      return;
    }
    this.removeEntry();
  },
  formatPicklist: function formatPicklist(property) {
    return format.picklist(this.app.picklistService, this._model, property);
  },
  createToolLayout: function createToolLayout() {
    return this.tools || (this.tools = {
      tbar: [{
        id: 'edit',
        action: 'navigateToEditView',
        svg: 'edit',
        security: App.getViewSecurity(this.editView, 'update'),
      }, {
        id: 'removeContact',
        svg: 'close',
        action: 'removeContact',
        title: this.removeContactTitleText,
      }],
    });
  },
  createLayout: function createLayout() {
    return this.layout || (this.layout = [{
      title: this.contactText,
      name: 'DetailsSection',
      children: [{
        name: 'NameLF',
        property: 'Contact.NameLF',
        label: this.nameText,
        view: 'contact_detail',
        key: 'Contact.$key',
        descriptor: 'Contact.NameLF',
      }, {
        name: 'AccountName',
        property: 'Contact.AccountName',
        descriptor: 'AccountName',
        label: this.accountText,
        view: 'account_detail',
        key: 'Contact.Account.$key',
      }, {
        name: 'Title',
        property: 'Contact.Title',
        label: this.contactTitleText,
      }, {
        name: 'SalesRole',
        property: 'SalesRole',
        label: this.salesRoleText,
        renderer: this.formatPicklist('SalesRole'),
      }, {
        name: 'Standing',
        property: 'Standing',
        label: this.standingText,
        renderer: this.formatPicklist('Standing'),
      }, {
        name: 'PersonalBenefits',
        property: 'PersonalBenefits',
        label: this.personalBenefitsText,
      }, {
        name: 'CompetitorName',
        property: 'Competitors.CompetitorName',
        label: this.competitorNameText,
      }, {
        name: 'Strategy',
        property: 'Strategy',
        label: this.strategyText,
      }, {
        name: 'Issues',
        property: 'Issues',
        label: this.issuesText,
      }],
    }]);
  },
});

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