import declare from 'dojo/_base/declare';
import lang from 'dojo/_base/lang';
import format from '../../Format';
import validator from '../../Validator';
import Edit from 'argos/Edit';
import getResource from 'argos/I18n';
const resource = getResource('leadEdit');
/**
* @class crm.Views.Lead.Edit
*
* @extends argos.Edit
*
* @requires crm.Format
* @requires crm.Validator
*/
const __class = declare('crm.Views.Lead.Edit', [Edit], {
// Localization
accountText: resource.accountText,
addressText: resource.addressText,
businessText: resource.businessTitleText,
businessTitleText: resource.businessTitleText,
companyText: resource.companyText,
contactTitleText: resource.contactTitleText,
emailText: resource.emailText,
faxText: resource.faxText,
importSourceText: resource.importSourceText,
industryText: resource.industryText,
industryTitleText: resource.industryTitleText,
interestsText: resource.interestsText,
leadNameLastFirstText: resource.leadNameLastFirstText,
leadOwnerText: resource.leadOwnerText,
nameText: resource.nameText,
notesText: resource.notesText,
notesTitleText: resource.notesTitleText,
sicCodeText: resource.sicCodeText,
titleText: resource.titleText,
titleTitleText: resource.titleTitleText,
tollFreeText: resource.tollFreeText,
webText: resource.webText,
workText: resource.workText,
mobileText: resource.mobileText,
// View Properties
entityName: 'Lead',
id: 'lead_edit',
insertSecurity: 'Entities/Lead/Add',
updateSecurity: 'Entities/Lead/Edit',
querySelect: [
'BusinessDescription',
'Company',
'Email',
'FirstName',
'FullAddress',
'Industry',
'Interests',
'LastName',
'LeadNameLastFirst',
'LeadSource/Description',
'MiddleName',
'Mobile',
'Notes',
'Prefix',
'SICCode',
'Suffix',
'Title',
'TollFree',
'WebAddress',
'WorkPhone',
],
queryInclude: [
'$permissions',
],
resourceKind: 'leads',
createLayout: function createLayout() {
return this.layout || (this.layout = [{
applyTo: '',
formatValue: format.nameLF,
label: this.leadNameLastFirstText,
name: 'LeadNameLastFirst',
property: 'LeadNameLastFirst',
type: 'name',
validator: validator.name,
view: 'name_edit',
}, {
label: this.companyText,
name: 'Company',
property: 'Company',
type: 'text',
maxTextLength: 128,
validator: [validator.exceedsMaxTextLength, validator.exists],
}, {
label: this.webText,
name: 'WebAddress',
property: 'WebAddress',
type: 'text',
inputType: 'url',
maxTextLength: 128,
validator: validator.exceedsMaxTextLength,
}, {
label: this.workText,
name: 'WorkPhone',
property: 'WorkPhone',
type: 'phone',
maxTextLength: 32,
validator: validator.exceedsMaxTextLength,
}, {
label: this.mobileText,
name: 'Mobile',
property: 'Mobile',
type: 'phone',
maxTextLength: 32,
validator: validator.exceedsMaxTextLength,
}, {
label: this.tollFreeText,
name: 'TollFree',
property: 'TollFree',
type: 'phone',
maxTextLength: 32,
validator: validator.exceedsMaxTextLength,
}, {
label: this.emailText,
name: 'Email',
property: 'Email',
type: 'text',
inputType: 'email',
}, {
label: this.contactTitleText,
name: 'Title',
property: 'Title',
picklist: 'Title',
title: this.titleTitleText,
type: 'picklist',
orderBy: 'text asc',
maxTextLength: 64,
validator: validator.exceedsMaxTextLength,
}, {
emptyText: '',
formatValue: format.address.bindDelegate(this, true),
label: this.addressText,
name: 'Address',
property: 'Address',
type: 'address',
view: 'address_edit',
}, {
label: this.importSourceText,
name: 'LeadSource',
property: 'LeadSource',
view: 'leadsource_list',
textProperty: 'Description',
type: 'lookup',
validator: validator.exists,
}, {
label: this.interestsText,
name: 'Interests',
property: 'Interests',
type: 'text',
maxTextLength: 128,
validator: validator.exceedsMaxTextLength,
}, {
label: this.industryText,
name: 'Industry',
property: 'Industry',
picklist: 'Industry',
title: this.industryTitleText,
type: 'picklist',
maxTextLength: 64,
validator: validator.exceedsMaxTextLength,
}, {
label: this.sicCodeText,
name: 'SICCode',
property: 'SICCode',
type: 'text',
maxTextLength: 64,
validator: validator.exceedsMaxTextLength,
}, {
label: this.businessText,
name: 'BusinessDescription',
property: 'BusinessDescription',
noteProperty: false,
title: this.businessTitleText,
type: 'note',
view: 'text_edit',
}, {
label: this.notesText,
name: 'Notes',
property: 'Notes',
noteProperty: false,
title: this.notesTitleText,
type: 'note',
view: 'text_edit',
}, {
label: this.leadOwnerText,
name: 'Owner',
property: 'Owner',
textProperty: 'OwnerDescription',
type: 'lookup',
view: 'owner_list',
}]);
},
});
lang.setObject('Mobile.SalesLogix.Views.Lead.Edit', __class);
export default __class;