441 lines
17 KiB
HTML
441 lines
17 KiB
HTML
<div class="profile clearfix">
|
|
<div loading-spinner if="state.dataIsLoading" centered="true" overlay="true"></div>
|
|
|
|
<div class="create-form-wrapper smart-recorder__create-form-wrapper">
|
|
<div class="clearfix">
|
|
<form name="createCustomerForm" novalidate>
|
|
<div class="create-ticket__header">
|
|
<!-- isContactCreateAction will be populated only from person-name widget, in modal.open scope param-->
|
|
<h3 class="create-ticket__header-title">{{ (isContactCreateAction ? 'create.contact.header' : 'create.customer.header') | i18n }}</h3>
|
|
<span>{{ 'create.customer.sub.header' | i18n }}</span>
|
|
</div>
|
|
|
|
<div class="create-ticket__full-width-section smart-recorder__create-customer-outer">
|
|
<div class="row">
|
|
<div class="col-sm-6 create-ticket__section">
|
|
<!--First Name-->
|
|
<div class="col-sm-8 smart-recorder__create-customer-col8">
|
|
<div class="person-profile-form-item">
|
|
<label class="label_control-wrap">
|
|
<span class="label__text_required"
|
|
potentially-required-field
|
|
field-name="firstName"
|
|
entity="person">
|
|
{{'person.details.firstName' | i18n}}
|
|
</span>
|
|
<div class="create-ticket__item">
|
|
<input name="firstName"
|
|
class="form-control"
|
|
type="text"
|
|
ng-model="person.firstName"
|
|
potentially-required-field
|
|
field-name="firstName"
|
|
entity="person"
|
|
maxlength="30"
|
|
auto-focus required>
|
|
</div>
|
|
</label>
|
|
</div>
|
|
</div>
|
|
<!--Middle Name-->
|
|
<div class="col-sm-4 smart-recorder__create-customer-col4">
|
|
<div class="person-profile-form-item">
|
|
<label class="label_control-wrap">
|
|
<span class="label__text">
|
|
{{'person.details.middleName' | i18n}}
|
|
</span>
|
|
<input name="middleName"
|
|
class="form-control"
|
|
type="text"
|
|
ng-model="person.middleName"
|
|
maxlength="30">
|
|
</label>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="col-sm-6 create-ticket__section">
|
|
<!--Last Name-->
|
|
<div class="person-profile-form-item">
|
|
<label class="label_control-wrap">
|
|
<span class="label__text_required"
|
|
potentially-required-field
|
|
field-name="lastName"
|
|
entity="person"
|
|
name="lastName">
|
|
{{'person.details.lastName' | i18n}}
|
|
</span>
|
|
<input name="lastName"
|
|
class="form-control"
|
|
type="text"
|
|
ng-model="person.lastName"
|
|
potentially-required-field
|
|
field-name="lastName"
|
|
entity="person"
|
|
maxlength="30"
|
|
required>
|
|
</label>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="row">
|
|
<div class="col-sm-6 create-ticket__section">
|
|
<!--Company-->
|
|
<div class="person-profile-form-item clearfix">
|
|
<label class="label_control-wrap">
|
|
<span class="label__text_required" potentially-required-field field-name="company.name" entity="person">
|
|
{{'common.label.company' | i18n}}
|
|
</span>
|
|
<selection selection-items="selections.companies"
|
|
selected-item="person.company"
|
|
selection-callback="updateCompany(item)"
|
|
title-text="{{'common.label.company' | i18n}}"
|
|
label="name"
|
|
value="name"
|
|
update-selected-item="true"
|
|
selection-filter="true"
|
|
selection-filter-placeholder-text="assignBlade.searchCompany"
|
|
typeahead-mode="state.tooManyCompanies"
|
|
typeahead-details="company as company.name for company in getList($viewValue)"
|
|
typeahead-get-list="getCompaniesByName(name)"
|
|
potentially-required-field
|
|
entity="person"
|
|
aria-required="true"
|
|
show-clear=true>
|
|
</selection>
|
|
</label>
|
|
</div>
|
|
</div>
|
|
<div class="col-sm-6 create-ticket__section">
|
|
<!--Client Type-->
|
|
<div class="person-profile-form-item clearfix">
|
|
<label class="label_control-wrap">
|
|
<span class="label__text required__label" data-required="{{'common.label.required.bracketed' | i18n}}">
|
|
{{ 'personInfoCard.label.clientType' | i18n }}
|
|
</span>
|
|
|
|
<div class="create-ticket__item">
|
|
<selection selection-items="person.clientTypes"
|
|
selected-item="person.clientType"
|
|
title-text="{{'personInfoCard.label.clientType' | i18n}}"
|
|
label="label"
|
|
value="label"
|
|
aria-required="true"
|
|
potentially-required-field
|
|
update-selected-item="true">
|
|
</selection>
|
|
</div>
|
|
</label>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="row">
|
|
<div class="col-sm-6 create-ticket__section">
|
|
<!--Job Title-->
|
|
<div class="person-profile-form-item">
|
|
<label class="label_control-wrap">
|
|
<span class="label__text">
|
|
{{'person.details.jobTitle' | i18n}}
|
|
</span>
|
|
<input name="jobTitle"
|
|
class="form-control"
|
|
type="text"
|
|
ng-model="person.jobTitle"
|
|
maxlength="50">
|
|
</label>
|
|
</div>
|
|
</div>
|
|
<div class="col-sm-6 create-ticket__section">
|
|
<!--VIP-->
|
|
<div class="person-profile-form-item clearfix">
|
|
<label class="label_control-wrap">
|
|
<span class="label__text">
|
|
{{ 'personInfoCard.label.vip' | i18n }}
|
|
</span>
|
|
|
|
<div class="create-ticket__item">
|
|
<selection selection-items="person.vip"
|
|
selected-item="person.isVIP"
|
|
title-text="{{'personInfoCard.label.vip' | i18n}}"
|
|
label="label"
|
|
value="label"
|
|
update-selected-item="true">
|
|
</selection>
|
|
</div>
|
|
</label>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="row">
|
|
<div class="col-sm-6 create-ticket__section">
|
|
<!--Primary Phone-->
|
|
<div class="person-profile-form-item">
|
|
<label class="label_control-wrap">
|
|
<span class="label__text">
|
|
{{'personInfoCard.label.direct' | i18n}}
|
|
</span>
|
|
<input name="phone"
|
|
class="form-control"
|
|
type="text"
|
|
ng-model="person.phone"
|
|
maxlength="50">
|
|
</label>
|
|
</div>
|
|
</div>
|
|
<div class="col-sm-6 create-ticket__section">
|
|
<!--Client Sensitivity-->
|
|
<div class="person-profile-form-item clearfix">
|
|
<label class="label_control-wrap">
|
|
<span class="label__text">
|
|
{{ 'personInfoCard.label.clientSensitivity' | i18n }}
|
|
</span>
|
|
|
|
<div class="create-ticket__item">
|
|
<selection selection-items="person.clientSensitivities"
|
|
selected-item="person.clientSensitivity"
|
|
title-text="{{'personInfoCard.label.clientSensitivity' | i18n}}"
|
|
label="label"
|
|
value="label"
|
|
update-selected-item="true">
|
|
</selection>
|
|
</div>
|
|
</label>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="row">
|
|
<div class="col-sm-6 create-ticket__section">
|
|
<!--Cell-->
|
|
<div class="person-profile-form-item">
|
|
<label class="label_control-wrap">
|
|
<span class="label__text">
|
|
{{'personInfoCard.label.cellphone' | i18n}}
|
|
</span>
|
|
<input name="cell"
|
|
class="form-control"
|
|
type="text"
|
|
ng-model="person.cell"
|
|
maxlength="50">
|
|
</label>
|
|
</div>
|
|
</div>
|
|
<div class="col-sm-6 create-ticket__section">
|
|
<!--Organization-->
|
|
<div class="person-profile-form-item clearfix">
|
|
|
|
<label class="label_control-wrap">
|
|
<span class="label__text" field-name="organization">
|
|
{{'common.label.organization' | i18n}}
|
|
</span>
|
|
|
|
<div class="dropdown-input full-width" dropdown>
|
|
<button type="button" aria-label="{{'common.label.organization' | i18n}}" class="dropdown-input__button dropdown-toggle" ng-click="getOrganizationsAndUpdate(person.company)" ng-enter="getOrganizationsAndUpdate(person.company)">
|
|
<span loading-spinner if="organizationsLoading" inline="true"></span>
|
|
<span>{{person.organization}}</span>
|
|
</button>
|
|
<input type="hidden" ng-model="person.organization" field-name="organization">
|
|
<ul ng-if="!organizationsLoading" class="dropdown-menu full-width">
|
|
<li ng-if="organizations.length<1">
|
|
<div class="{{(organization.name == person.organization) ? 'dropdown-item_selected' : 'dropdown-item'}}" tabindex="0" role="menuitem">
|
|
{{'common.label.noOrganizations' | i18n}}
|
|
</div>
|
|
</li>
|
|
<li ng-repeat="organization in organizations">
|
|
<a class="{{(organization.name == person.organization) ? 'dropdown-item_selected' : 'dropdown-item'}}" tabindex="0" role="menuitem"
|
|
ng-click="$event.preventDefault(); person.organization = organization.name;" href="javascript:void(0)">
|
|
{{organization.name}}
|
|
</a>
|
|
</li>
|
|
</ul>
|
|
</div>
|
|
</label>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="row">
|
|
<div class="col-sm-6 create-ticket__section">
|
|
<!--Fax-->
|
|
<div class="person-profile-form-item">
|
|
<label class="label_control-wrap">
|
|
<span class="label__text">
|
|
{{'personInfoCard.label.fax' | i18n}}
|
|
</span>
|
|
<input name="fax"
|
|
class="form-control"
|
|
type="text"
|
|
ng-model="person.fax"
|
|
maxlength="50">
|
|
</label>
|
|
</div>
|
|
</div>
|
|
<div class="col-sm-6 create-ticket__section">
|
|
<!--Department-->
|
|
<div class="person-profile-form-item clearfix">
|
|
<label class="label_control-wrap">
|
|
<span class="label__text" field-name="department">
|
|
{{'common.label.department' | i18n}}
|
|
</span>
|
|
|
|
<div ng-disabled="!person.organization" class="dropdown-input full-width" dropdown>
|
|
<button type="button" aria-label="{{'common.label.department' | i18n}}" class="dropdown-input__button dropdown-toggle" ng-click="!person.organization || getDepartmentsAndUpdate(person.organization, person.company)" ng-enter="!person.organization || getDepartmentsAndUpdate(person.organization,person.company)">
|
|
<span loading-spinner if="departmentsLoading" inline="true"></span>
|
|
<span>{{person.department}}</span>
|
|
</button>
|
|
<input type="hidden" ng-model="person.department" field-name="department">
|
|
<ul ng-if="!departmentsLoading" ng-hide="!person.organization" class="dropdown-menu full-width">
|
|
<li ng-if="departments.length<1">
|
|
<div class="{{(department.name == person.department) ? 'dropdown-item_selected' : 'dropdown-item'}}" tabindex="0" role="menuitem">
|
|
{{'common.label.noDepartments' | i18n}}
|
|
</div>
|
|
</li>
|
|
<li ng-repeat="department in departments">
|
|
<a class="{{(department.name == person.department) ? 'dropdown-item_selected' : 'dropdown-item'}}" tabindex="0" role="menuitem"
|
|
ng-click="$event.preventDefault(); person.department = department.name;" href="javascript:void(0)">
|
|
{{department.name}}
|
|
</a>
|
|
</li>
|
|
</ul>
|
|
</div>
|
|
</label>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="row">
|
|
<div class="col-sm-6 create-ticket__section">
|
|
<!--Email-->
|
|
<div class="person-profile-form-item">
|
|
<label class="label_control-wrap">
|
|
<span class="label__text">
|
|
{{'personInfoCard.label.email' | i18n}}
|
|
</span>
|
|
<input name="email"
|
|
class="form-control"
|
|
type="text"
|
|
ng-model="person.email"
|
|
maxlength="255">
|
|
</label>
|
|
</div>
|
|
</div>
|
|
<div class="col-sm-6 create-ticket__section">
|
|
<!--Site-->
|
|
<div class="person-profile-form-item clearfix">
|
|
|
|
<label class="label_control-wrap">
|
|
<span class="label__text_required"
|
|
potentially-required-field
|
|
entity="person"
|
|
field-name="site.name">
|
|
{{'common.label.site' | i18n}}
|
|
</span>
|
|
|
|
<div class="dropdown-input full-width" dropdown>
|
|
<button type="button" aria-label="{{'common.label.site' | i18n}}"
|
|
class="dropdown-input__button dropdown-toggle"
|
|
ng-click="getSitesAndUpdate(person.company)"
|
|
ng-enter="getSitesAndUpdate(person.company)"
|
|
ng-class="{'ng-invalid-required' : !person.site.name}"
|
|
aria-required="true">
|
|
<span loading-spinner if="sitesLoading" inline="true"></span>
|
|
<span>{{person.site.name}}</span>
|
|
</button>
|
|
<input type="hidden"
|
|
ng-model="person.site.name"
|
|
field-name="site.name"
|
|
name="site"
|
|
ng-required="true"
|
|
aria-required="true">
|
|
<ul ng-if="!sitesLoading" vertical-screen-fit="personProfileSiteMenu" class="dropdown-menu full-width">
|
|
<li ng-if="sites.length<1">
|
|
<div class="{{(site.name == person.site.name) ? 'dropdown-item_selected' : 'dropdown-item'}}" tabindex="0" role="menuitem">
|
|
{{'common.label.noSites' | i18n}}
|
|
</div>
|
|
</li>
|
|
<li ng-repeat="site in sites">
|
|
<a class="{{(site.name == person.site.name) ? 'dropdown-item_selected' : 'dropdown-item'}}" tabindex="0" role="menuitem"
|
|
ng-click="$event.preventDefault(); person.site = site;" href="javascript:void(0)">
|
|
{{site.name}}
|
|
</a>
|
|
</li>
|
|
</ul>
|
|
</div>
|
|
</label>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="row">
|
|
<div class="col-sm-6 create-ticket__section">
|
|
<!--Contact Type-->
|
|
<div class="person-profile-form-item clearfix">
|
|
<label class="label_control-wrap">
|
|
<span class="label__text">
|
|
{{ 'personInfoCard.label.contactType' | i18n }}
|
|
</span>
|
|
|
|
<div class="create-ticket__item">
|
|
<selection selection-items="person.contactTypes"
|
|
selected-item="person.contactType"
|
|
title-text="{{'personInfoCard.label.contactType' | i18n}}"
|
|
label="label"
|
|
value="label"
|
|
update-selected-item="true">
|
|
</selection>
|
|
</div>
|
|
</label>
|
|
</div>
|
|
</div>
|
|
<div class="col-sm-6 create-ticket__section">
|
|
<!--Corporate ID-->
|
|
<div class="person-profile-form-item">
|
|
<label class="label_control-wrap">
|
|
<span class="label__text">
|
|
{{'personInfoCard.label.corporateId' | i18n}}
|
|
</span>
|
|
<input aria-label="{{'personInfoCard.label.corporateId' | i18n}}"
|
|
class="form-control"
|
|
type="text"
|
|
ng-model="person.corporateId">
|
|
</label>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="row">
|
|
<div class="col-sm-6 create-ticket__section smart-recorder__create-customer-last-item">
|
|
<!--Login ID-->
|
|
<div class="person-profile-form-item">
|
|
<label class="label_control-wrap">
|
|
<span class="label__text">
|
|
{{'personInfoCard.label.loginId' | i18n}}
|
|
</span>
|
|
<input aria-label="{{'personInfoCard.label.loginId' | i18n}}"
|
|
class="form-control"
|
|
type="text" ng-model="person.loginId"
|
|
maxlength="254">
|
|
</label>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</form>
|
|
</div>
|
|
</div>
|
|
<div class="create-ticket__action-panel">
|
|
<span class="create-ticket__form_invalid" ng-if="createCustomerForm.$invalid">
|
|
<i class="icon-exclamation_triangle"></i>
|
|
<span ng-if="createCustomerForm.$error.required.length">{{createCustomerForm.$error.required.length}} {{ 'create.ticket.more.required.fields' | i18n }}</span>
|
|
<span ng-if="formContainsInvalidFields(createCustomerForm)">{{ 'create.ticket.invalid.fields' | i18n }}</span>
|
|
</span>
|
|
<span class="font-size-m" ng-if="createCustomerForm.$valid">
|
|
<i class="icon-check"></i>
|
|
{{ 'create.ticket.all.required.fields.complete' | i18n }}
|
|
</span>
|
|
|
|
<div class="pull-right">
|
|
<button type="submit" class="btn_primary create-ticket__action-btn" ng-disabled="createCustomerForm.$invalid || state.dataIsLoading" ng-click="createPerson()">
|
|
{{ 'common.button.save' | i18n }}
|
|
</button>
|
|
<button type="button" class="btn_secondary action-panel__cancel-btn" ng-disabled="state.dataIsLoading" ng-click="cancel()">
|
|
{{ 'common.button.cancel' | i18n }}
|
|
</button>
|
|
</div>
|
|
</div>
|
|
</div>
|